适配为文章模版
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 81 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 222 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 250 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 150 KiB |
@@ -0,0 +1,280 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only" page-range-format="expanded" default-locale="en-US">
|
||||
<info>
|
||||
<title>American Chemical Society</title>
|
||||
<title-short>ACS</title-short>
|
||||
<id>http://www.zotero.org/styles/american-chemical-society</id>
|
||||
<link href="http://www.zotero.org/styles/american-chemical-society" rel="self"/>
|
||||
<link href="https://pubs.acs.org/doi/full/10.1021/acsguide.40303" rel="documentation"/>
|
||||
<link href="https://pubs.acs.org/doi/book/10.1021/acsguide" rel="documentation"/>
|
||||
<author>
|
||||
<name>Julian Onions</name>
|
||||
<email>julian.onions@gmail.com</email>
|
||||
</author>
|
||||
<contributor>
|
||||
<name>Ivan Bushmarinov</name>
|
||||
<email>ib@ineos.ac.ru</email>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Sebastian Karcher</name>
|
||||
</contributor>
|
||||
<category citation-format="numeric"/>
|
||||
<category field="chemistry"/>
|
||||
<summary>The American Chemical Society style</summary>
|
||||
<updated>2021-06-04T03:27:50+00:00</updated>
|
||||
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
|
||||
</info>
|
||||
<locale xml:lang="en">
|
||||
<terms>
|
||||
<term name="editortranslator" form="short">
|
||||
<single>ed. and translator</single>
|
||||
<multiple>eds. and translators</multiple>
|
||||
</term>
|
||||
<term name="translator" form="short">
|
||||
<single>translator</single>
|
||||
<multiple>translators</multiple>
|
||||
</term>
|
||||
<term name="collection-editor" form="short">
|
||||
<single>series ed.</single>
|
||||
<multiple>series eds.</multiple>
|
||||
</term>
|
||||
</terms>
|
||||
</locale>
|
||||
<macro name="editor">
|
||||
<group delimiter="; ">
|
||||
<names variable="editor translator" delimiter="; ">
|
||||
<name sort-separator=", " initialize-with=". " name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/>
|
||||
<label form="short" prefix=", " text-case="title"/>
|
||||
</names>
|
||||
<names variable="collection-editor">
|
||||
<name sort-separator=", " initialize-with=". " name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/>
|
||||
<label form="short" prefix=", " text-case="title"/>
|
||||
</names>
|
||||
</group>
|
||||
</macro>
|
||||
<macro name="author">
|
||||
<names variable="author" suffix=".">
|
||||
<name sort-separator=", " initialize-with=". " name-as-sort-order="all" delimiter="; " delimiter-precedes-last="always"/>
|
||||
<label form="short" prefix=", " text-case="capitalize-first"/>
|
||||
</names>
|
||||
</macro>
|
||||
<macro name="publisher">
|
||||
<choose>
|
||||
<if type="thesis" match="any">
|
||||
<group delimiter=", ">
|
||||
<text variable="publisher"/>
|
||||
<text variable="publisher-place"/>
|
||||
</group>
|
||||
</if>
|
||||
<else>
|
||||
<group delimiter=": ">
|
||||
<text variable="publisher"/>
|
||||
<text variable="publisher-place"/>
|
||||
</group>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="title">
|
||||
<choose>
|
||||
<if type="bill book graphic legal_case legislation motion_picture report song" match="any">
|
||||
<text variable="title" text-case="title" font-style="italic"/>
|
||||
</if>
|
||||
<else>
|
||||
<text variable="title" text-case="title"/>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="volume">
|
||||
<group delimiter=" ">
|
||||
<text term="volume" form="short" text-case="capitalize-first"/>
|
||||
<text variable="volume"/>
|
||||
</group>
|
||||
</macro>
|
||||
<macro name="series">
|
||||
<text variable="collection-title"/>
|
||||
</macro>
|
||||
<macro name="pages">
|
||||
<label variable="page" form="short" suffix=" " strip-periods="true"/>
|
||||
<text variable="page"/>
|
||||
</macro>
|
||||
<macro name="book-container">
|
||||
<group delimiter=". ">
|
||||
<text macro="title"/>
|
||||
<choose>
|
||||
<if type="entry-dictionary entry-encyclopedia" match="none">
|
||||
<group delimiter=" ">
|
||||
<text term="in" text-case="capitalize-first"/>
|
||||
<text variable="container-title" font-style="italic"/>
|
||||
</group>
|
||||
</if>
|
||||
<else>
|
||||
<text variable="container-title" font-style="italic"/>
|
||||
</else>
|
||||
</choose>
|
||||
</group>
|
||||
</macro>
|
||||
<macro name="issued">
|
||||
<date variable="issued" delimiter=" ">
|
||||
<date-part name="year"/>
|
||||
</date>
|
||||
</macro>
|
||||
<macro name="full-issued">
|
||||
<date variable="issued" delimiter=" ">
|
||||
<date-part name="month" form="long" suffix=" "/>
|
||||
<date-part name="day" suffix=", "/>
|
||||
<date-part name="year"/>
|
||||
</date>
|
||||
</macro>
|
||||
<macro name="edition">
|
||||
<choose>
|
||||
<if is-numeric="edition">
|
||||
<group delimiter=" ">
|
||||
<number variable="edition" form="ordinal"/>
|
||||
<text term="edition" form="short"/>
|
||||
</group>
|
||||
</if>
|
||||
<else>
|
||||
<text variable="edition" suffix="."/>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<citation collapse="citation-number">
|
||||
<sort>
|
||||
<key variable="citation-number"/>
|
||||
</sort>
|
||||
<layout delimiter="," vertical-align="sup">
|
||||
<text variable="citation-number"/>
|
||||
</layout>
|
||||
</citation>
|
||||
<bibliography second-field-align="flush" entry-spacing="0">
|
||||
<layout suffix=".">
|
||||
<text variable="citation-number" prefix="(" suffix=") "/>
|
||||
<text macro="author" suffix=" "/>
|
||||
<choose>
|
||||
<if type="article-journal review" match="any">
|
||||
<group delimiter=" ">
|
||||
<text macro="title" suffix="."/>
|
||||
<text variable="container-title" font-style="italic" form="short"/>
|
||||
<group delimiter=", ">
|
||||
<text macro="issued" font-weight="bold"/>
|
||||
<choose>
|
||||
<if variable="volume">
|
||||
<group delimiter=" ">
|
||||
<text variable="volume" font-style="italic"/>
|
||||
<text variable="issue" prefix="(" suffix=")"/>
|
||||
</group>
|
||||
</if>
|
||||
<else>
|
||||
<group delimiter=" ">
|
||||
<text term="issue" form="short" text-case="capitalize-first"/>
|
||||
<text variable="issue"/>
|
||||
</group>
|
||||
</else>
|
||||
</choose>
|
||||
<text variable="page"/>
|
||||
</group>
|
||||
</group>
|
||||
</if>
|
||||
<else-if type="article-magazine article-newspaper article" match="any">
|
||||
<group delimiter=" ">
|
||||
<text macro="title" suffix="."/>
|
||||
<text variable="container-title" font-style="italic" suffix="."/>
|
||||
<text macro="edition"/>
|
||||
<text macro="publisher"/>
|
||||
<group delimiter=", ">
|
||||
<text macro="full-issued"/>
|
||||
<text macro="pages"/>
|
||||
</group>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="thesis">
|
||||
<group delimiter=", ">
|
||||
<group delimiter=". ">
|
||||
<text macro="title"/>
|
||||
<text variable="genre"/>
|
||||
</group>
|
||||
<text macro="publisher"/>
|
||||
<text macro="issued"/>
|
||||
<text macro="volume"/>
|
||||
<text macro="pages"/>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="bill book graphic legal_case legislation motion_picture report song" match="any">
|
||||
<group delimiter="; ">
|
||||
<group delimiter=", ">
|
||||
<text macro="title"/>
|
||||
<text macro="edition"/>
|
||||
</group>
|
||||
<text macro="editor" prefix=" "/>
|
||||
<text macro="series"/>
|
||||
<choose>
|
||||
<if type="report">
|
||||
<group delimiter=" ">
|
||||
<text variable="genre"/>
|
||||
<text variable="number"/>
|
||||
</group>
|
||||
</if>
|
||||
</choose>
|
||||
<group delimiter=", ">
|
||||
<text macro="publisher"/>
|
||||
<text macro="issued"/>
|
||||
</group>
|
||||
<group delimiter=", ">
|
||||
<text macro="volume"/>
|
||||
<text macro="pages"/>
|
||||
</group>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="patent">
|
||||
<group delimiter=", ">
|
||||
<group delimiter=". ">
|
||||
<text macro="title"/>
|
||||
<text variable="number"/>
|
||||
</group>
|
||||
<date variable="issued" form="text"/>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="chapter paper-conference entry-dictionary entry-encyclopedia" match="any">
|
||||
<group delimiter="; ">
|
||||
<text macro="book-container"/>
|
||||
<text macro="editor"/>
|
||||
<text macro="series"/>
|
||||
<group delimiter=", ">
|
||||
<text macro="publisher"/>
|
||||
<text macro="issued"/>
|
||||
</group>
|
||||
<group delimiter=", ">
|
||||
<text macro="volume"/>
|
||||
<text macro="pages"/>
|
||||
</group>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="webpage">
|
||||
<group delimiter=" ">
|
||||
<text variable="title"/>
|
||||
<text variable="URL"/>
|
||||
<date variable="accessed" prefix="(accessed " suffix=")" delimiter=" ">
|
||||
<date-part name="year"/>
|
||||
<date-part name="month" prefix="-" form="numeric-leading-zeros"/>
|
||||
<date-part name="day" prefix="-" form="numeric-leading-zeros"/>
|
||||
</date>
|
||||
</group>
|
||||
</else-if>
|
||||
<else>
|
||||
<group delimiter=", ">
|
||||
<group delimiter=". ">
|
||||
<text macro="title"/>
|
||||
<text variable="container-title" font-style="italic"/>
|
||||
</group>
|
||||
<group delimiter=", ">
|
||||
<text macro="issued"/>
|
||||
<text variable="volume" font-style="italic"/>
|
||||
<text variable="page"/>
|
||||
</group>
|
||||
</group>
|
||||
</else>
|
||||
</choose>
|
||||
<text variable="DOI" prefix=". https://doi.org/"/>
|
||||
</layout>
|
||||
</bibliography>
|
||||
</style>
|
||||
@@ -0,0 +1,240 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Academic Letter LaTeX and RMarkdown Structure %
|
||||
% Author: Pedro Henrique Pereira Braga %
|
||||
% %
|
||||
% License: %
|
||||
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/) %
|
||||
% %
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
% Set the font size (11pt, for now) and paper size (e.g. letterpaper, a4paper)
|
||||
\documentclass[11pt, letterpaper]{letter}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
|
||||
%----------------------------------------------------------------------
|
||||
|
||||
\usepackage{graphicx} % Required for including pictures
|
||||
\usepackage{fancyhdr} % Allows the use of fancy headers and footers
|
||||
|
||||
\usepackage{microtype} % For typography improvement
|
||||
|
||||
\usepackage{url} % Allows the use of hyperlinks
|
||||
\urlstyle{same} % Allows hyperlink fonts to be the same as the mainfont
|
||||
\usepackage[hidelinks]{hyperref} % Allows the use of hyperlinks and
|
||||
% removes the blue boxes around the link
|
||||
|
||||
\pagestyle{empty} % Removes headers and footers
|
||||
|
||||
\usepackage{setspace} % Allows the use of double spacing in the letter body
|
||||
|
||||
\setlength\parindent{1cm} % Paragraph indentation
|
||||
|
||||
% Create a new command for the horizontal rule in the document which allows
|
||||
% thickness specification
|
||||
\makeatletter
|
||||
\def\@texttop{} % force the address to start above
|
||||
\renewcommand*{\opening}[1]{\ifx\@empty\fromaddress
|
||||
\thispagestyle{firstpage}%
|
||||
{\raggedleft\@date\par}%
|
||||
\else % home address
|
||||
\thispagestyle{empty}%
|
||||
{\raggedleft\begin{tabular}{l@{}}\ignorespaces
|
||||
\fromaddress \\*[2\parskip]%
|
||||
\@date \end{tabular}\par}%
|
||||
\fi
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
%{\raggedright \toname \\ \toaddress \par}% <-- Removed
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
#1\par\nobreak}
|
||||
\let\ps@empty\ps@plain
|
||||
\let\ps@firstpage\ps@plain
|
||||
\makeatother
|
||||
|
||||
%--------------------------------------------------------------------------
|
||||
% FONTS
|
||||
%--------------------------------------------------------------------------
|
||||
|
||||
\usepackage[T1]{fontenc} % Output font encoding for international characters
|
||||
% \usepackage[utf8]{inputenc} % Required for inputting international characters
|
||||
\usepackage[quiet]{fontspec} % Allows the use of fontspec
|
||||
\setmainfont{Calibri}
|
||||
% \usepackage{txfonts} % Allows the use of Lato fonts
|
||||
|
||||
|
||||
%----------------------------------------------------------------------------
|
||||
% DOCUMENT MARGINS
|
||||
%----------------------------------------------------------------------------
|
||||
|
||||
\usepackage{geometry} % Required for adjusting page dimensions
|
||||
|
||||
\geometry{
|
||||
headheight = 0.7in, % Header height
|
||||
top=1.5in, % Top margin
|
||||
bottom=1.5cm, % Bottom margin
|
||||
left=3cm, % Left margin
|
||||
right=3cm, % Right margin
|
||||
% showframe, % Uncomment to show how the type block is set on the page
|
||||
}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% AUTHOR AND RECIPIENTS NEW COMMANDS AND DETAILS STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\newcommand{\authordetails}[1]{\renewcommand{\authordetails}{#1}}
|
||||
\newcommand{\recipientdetails}[1]{\renewcommand{\recipientdetails}{#1}}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% HEADER STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\address{
|
||||
% Include the author's details on the right side of the page under the line
|
||||
\raggedleft{
|
||||
\footnotesize{ % Use a smaller font size
|
||||
$author$\\ % Author name
|
||||
\authordetails\\
|
||||
\hspace{1mm}
|
||||
}
|
||||
}
|
||||
\vspace{-0.05\textheight} % Move the date and letter content up
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% COMPOSE THE ENTIRE HEADER
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\renewcommand{\opening}[1]{
|
||||
{\fromaddress
|
||||
\vspace{0.05\textheight}\\ % Print the sender's address here and add some whitespace to allow the printing of the date
|
||||
\raggedleft{$date$} % Include the date, aligned to the right
|
||||
\par % par
|
||||
}
|
||||
{\raggedright
|
||||
\toname\\
|
||||
\toaddress
|
||||
\par} % Print the recipient's name and adress
|
||||
\vspace{0.25cm} % White vertical space after recipient's address
|
||||
\noindent #1 % Following this, insert the opening info
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% SIGNATURE STRUCTURE
|
||||
%------------------------------------------------------------------------------
|
||||
% The signature is a combination of the author's name, title and institution
|
||||
\signature{$author$, on behalf of all authors\\
|
||||
Email: $from_email$}
|
||||
|
||||
% I will later combine the option of inserting a signature within it
|
||||
|
||||
\renewcommand{\closing}[1]{
|
||||
\vspace{2.5mm} % Some whitespace after the letter content and before the signature
|
||||
\noindent % Stop paragraph indentation
|
||||
% \hspace*{\longindentation} % Move the signature right to the value of \longindentation
|
||||
\parbox{\indentedwidth}{
|
||||
\raggedright
|
||||
#1 % Print the signature text
|
||||
% \vskip 1.65cm % Whitespace between the closing text and author's name for a physical signature
|
||||
\\\includegraphics[height=0.6in, keepaspectratio=true]{$from_sign$}\\
|
||||
\fromsig % Prints the value of \signature{}, i.e. author name and title
|
||||
}
|
||||
}
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% AUTHOR'S INFORMATION
|
||||
%-------------------------------------------------------------------------------
|
||||
|
||||
\authordetails{
|
||||
$from_position$\\
|
||||
$from_department$\\ % Sender's department/institution
|
||||
$from_institution$\\
|
||||
$from_address$ % Sender's address
|
||||
% $from_city$, $from_state_province$\\ % Sender's city, state or province,
|
||||
% $from_postalcode$\\ % postal code
|
||||
% $from_country$
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% RECIPIENT'S INFORMATION
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\recipientdetails{
|
||||
$to_professional_title$ $to_name$\\
|
||||
$if(to_journal)$
|
||||
\textit{$to_journal$}
|
||||
$endif$
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% HEADER CONTENTS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\fancypagestyle{firstpage}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{empty}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
\pagestyle{plain}
|
||||
|
||||
\begin{document}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% TO ADDRESS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\begin{letter}{\recipientdetails}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% LETTER CONTENT
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\opening{$opening_greeting$}
|
||||
% \begin{doublespacing}
|
||||
|
||||
$body$
|
||||
|
||||
% \end{doublespacing}
|
||||
\closing{$closing_greeting$}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\end{letter}
|
||||
\end{document}
|
||||
@@ -0,0 +1,426 @@
|
||||
$-- Keeping in template layout for backward compatibility
|
||||
\documentclass[$if(layout)$$layout$$else$$for(classoption)$$classoption$$sep$,$endfor$$endif$]{elsarticle} %review=doublespace preprint=single 5p=2 column
|
||||
%%% Begin My package additions %%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[hyphens]{url}
|
||||
$if(journal)$
|
||||
\journal{$journal$} % Sets Journal name
|
||||
$endif$
|
||||
\usepackage{lineno} % add
|
||||
$if(linenumbers)$
|
||||
\linenumbers % turns line numbering on
|
||||
$endif$
|
||||
\usepackage{graphicx}
|
||||
\usepackage{xstring}
|
||||
\usepackage[table]{xcolor}
|
||||
%%%%%%%%%%%%%%%% end my additions to header
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{lmodern}
|
||||
\usepackage{amssymb,amsmath}
|
||||
\usepackage{ifxetex,ifluatex}
|
||||
\usepackage{fixltx2e} % provides \textsubscript
|
||||
% use upquote if available, for straight quotes in verbatim environments
|
||||
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
||||
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
|
||||
\usepackage[utf8]{inputenc}
|
||||
$if(euro)$
|
||||
\usepackage{eurosym}
|
||||
$endif$
|
||||
\else % if luatex or xelatex
|
||||
\usepackage{fontspec}
|
||||
\ifxetex
|
||||
\usepackage{xltxtra,xunicode}
|
||||
\fi
|
||||
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
|
||||
\newcommand{\euro}{€}
|
||||
$if(mainfont)$
|
||||
\setmainfont{$mainfont$}
|
||||
$endif$
|
||||
$if(sansfont)$
|
||||
\setsansfont{$sansfont$}
|
||||
$endif$
|
||||
$if(monofont)$
|
||||
\setmonofont{$monofont$}
|
||||
$endif$
|
||||
$if(mathfont)$
|
||||
\setmathfont{$mathfont$}
|
||||
$endif$
|
||||
\fi
|
||||
% use microtype if available
|
||||
\IfFileExists{microtype.sty}{\usepackage{microtype}}{}
|
||||
$if(geometry)$
|
||||
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
|
||||
$endif$
|
||||
$if(natbib)$
|
||||
\usepackage{natbib}
|
||||
\setcitestyle{$natbiboptions$}
|
||||
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
|
||||
$endif$
|
||||
$if(listings)$
|
||||
\usepackage{listings}
|
||||
$endif$
|
||||
$if(lhs)$
|
||||
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
|
||||
$endif$
|
||||
$if(verbatim-in-note)$
|
||||
\usepackage{fancyvrb}
|
||||
$endif$
|
||||
$if(graphics)$
|
||||
\usepackage{graphicx}
|
||||
$endif$
|
||||
\ifxetex
|
||||
\usepackage[setpagesize=false, % page size defined by xetex
|
||||
unicode=false, % unicode breaks when used with xetex
|
||||
xetex]{hyperref}
|
||||
\else
|
||||
\usepackage[unicode=true]{hyperref}
|
||||
\fi
|
||||
\hypersetup{breaklinks=true,
|
||||
bookmarks=true,
|
||||
pdfauthor={$author-meta$},
|
||||
pdftitle={$title-meta$},
|
||||
colorlinks=$if(colorlinks)$true$else$false$endif$,
|
||||
urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$,
|
||||
linkcolor=$if(linkcolor)$$linkcolor$$else$magenta$endif$,
|
||||
pdfborder={0 0 0}}
|
||||
\urlstyle{same} % don't use monospace font for urls
|
||||
$if(links-as-notes)$
|
||||
% Make links footnotes instead of hotlinks:
|
||||
\renewcommand{\href}[2]{#2\footnote{\url{#1}}}
|
||||
$endif$
|
||||
$if(strikeout)$
|
||||
\usepackage[normalem]{ulem}
|
||||
% avoid problems with \sout in headers with hyperref:
|
||||
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
|
||||
$endif$
|
||||
$if(numbersections)$
|
||||
\setcounter{secnumdepth}{5}
|
||||
$else$
|
||||
\setcounter{secnumdepth}{0}
|
||||
$endif$
|
||||
$if(verbatim-in-note)$
|
||||
\VerbatimFootnotes % allows verbatim text in footnotes
|
||||
$endif$
|
||||
$if(lang)$
|
||||
\ifxetex
|
||||
\usepackage{polyglossia}
|
||||
\setmainlanguage{$mainlang$}
|
||||
\else
|
||||
\usepackage[$lang$]{babel}
|
||||
\fi
|
||||
$endif$
|
||||
% Pandoc toggle for numbering sections (defaults to be off)
|
||||
$if(numbersections)$
|
||||
$else$
|
||||
\setcounter{secnumdepth}{0}
|
||||
$endif$
|
||||
$if(highlighting-macros)$
|
||||
% Pandoc syntax highlighting
|
||||
$highlighting-macros$
|
||||
$endif$
|
||||
% tightlist command for lists without linebreak
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
$if(tables)$
|
||||
% From pandoc table feature
|
||||
\usepackage{longtable,booktabs,array}
|
||||
$if(multirow)$
|
||||
\usepackage{multirow}
|
||||
$endif$
|
||||
\usepackage{calc} % for calculating minipage widths
|
||||
% Correct order of tables after \paragraph or \subparagraph
|
||||
\usepackage{etoolbox}
|
||||
\makeatletter
|
||||
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
|
||||
\makeatother
|
||||
% Allow footnotes in longtable head/foot
|
||||
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
|
||||
\makesavenoteenv{longtable}
|
||||
$endif$
|
||||
$if(csl-refs)$
|
||||
% Pandoc citation processing
|
||||
\newlength{\cslhangindent}
|
||||
\setlength{\cslhangindent}{1.5em}
|
||||
\newlength{\csllabelwidth}
|
||||
\setlength{\csllabelwidth}{3em}
|
||||
\newlength{\cslentryspacingunit} % times entry-spacing
|
||||
\setlength{\cslentryspacingunit}{\parskip}
|
||||
% for Pandoc 2.8 to 2.10.1
|
||||
\newenvironment{cslreferences}%
|
||||
{$if(csl-hanging-indent)$\setlength{\parindent}{0pt}%
|
||||
\everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces$endif$}%
|
||||
{\par}
|
||||
% For Pandoc 2.11+
|
||||
\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing
|
||||
{% don't indent paragraphs
|
||||
\setlength{\parindent}{0pt}
|
||||
% turn on hanging indent if param 1 is 1
|
||||
\ifodd #1
|
||||
\let\oldpar\par
|
||||
\def\par{\hangindent=\cslhangindent\oldpar}
|
||||
\fi
|
||||
% set entry spacing
|
||||
\setlength{\parskip}{#2\cslentryspacingunit}
|
||||
}%
|
||||
{}
|
||||
\usepackage{calc}
|
||||
\newcommand{\CSLBlock}[1]{#1\hfill\break}
|
||||
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}}
|
||||
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break}
|
||||
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
|
||||
$endif$
|
||||
$for(header-includes)$
|
||||
$header-includes$
|
||||
$endfor$
|
||||
|
||||
\usepackage{xifthen}
|
||||
% set special color for EST
|
||||
\ifthenelse{\equal{$journal$}{Environmental Science \& Technology}}
|
||||
{\definecolor{seccol}{RGB}{56, 95, 66}}
|
||||
{\definecolor{seccol}{RGB}{0, 0, 0}}
|
||||
|
||||
$if(uppersections)$
|
||||
\usepackage{titlesec}
|
||||
\titleformat{\section}
|
||||
{\color{seccol}\large\bfseries\MakeUppercase}{\thesection}{1em}{}
|
||||
$endif$
|
||||
$if(sectiononnewpage)$
|
||||
\AddToHook{cmd/section/before}{\clearpage}
|
||||
$endif$
|
||||
|
||||
\usepackage{enumitem}
|
||||
\usepackage{fontspec}
|
||||
\usepackage{float}
|
||||
\setmainfont{Helvetica}
|
||||
\usepackage[normalem]{ulem}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{nameref} %needed by zref-xr
|
||||
\usepackage{zref-xr,zref-hyperref,zref-user}
|
||||
\usepackage{xr-hyper}
|
||||
|
||||
% force to use \zref
|
||||
$if(msname)$
|
||||
\def\msname{$msname$}
|
||||
\zexternaldocument*{\msname}
|
||||
\renewcommand{\ref}{\zref}
|
||||
$endif$
|
||||
$if(smname)$
|
||||
\def\smname{$smname$}
|
||||
\zexternaldocument*{\smname}
|
||||
$endif$
|
||||
|
||||
\zxrsetup{toltxlabel=true}
|
||||
{\catcode`\#=12 \gdef\hashchar{#1}}
|
||||
\makeatletter
|
||||
\newcommand\hzref[1]{\edef\next{%
|
||||
\noexpand\href{%
|
||||
\zref@extractdefault{#1}{url}{}%
|
||||
\zref@ifrefcontainsprop{#1}{anchor}{%
|
||||
\hashchar\zref@extract{#1}{anchor}}{}}%
|
||||
{\noexpand\zref{#1}}}\next}
|
||||
\makeatother
|
||||
|
||||
|
||||
|
||||
$if(revision)$
|
||||
% \usepackage{xcolor}
|
||||
\usepackage{adjustbox}
|
||||
\usepackage{mdframed}
|
||||
\newmdenv[topline=false,
|
||||
leftline=true,
|
||||
bottomline=false,
|
||||
rightline=false,
|
||||
linewidth=3pt,
|
||||
%backgroundcolor=lightgray,
|
||||
linecolor=gray!30,
|
||||
backgroundcolor=gray!5,
|
||||
skipabove=\topsep,
|
||||
skipbelow=\topsep,
|
||||
leftmargin=0pt,
|
||||
rightmargin=0pt,
|
||||
innertopmargin=0pt,
|
||||
innerbottommargin=0pt
|
||||
]{refquote}
|
||||
\newmdenv[topline=false,
|
||||
leftline=true,
|
||||
bottomline=false,
|
||||
rightline=false,
|
||||
linewidth=3pt,
|
||||
%backgroundcolor=lightgray,
|
||||
backgroundcolor=red!3!white,
|
||||
linecolor=red!30!white,
|
||||
skipabove=\topsep,
|
||||
skipbelow=\topsep,
|
||||
leftmargin=0pt,
|
||||
rightmargin=0pt,
|
||||
innertopmargin=10pt,
|
||||
innerbottommargin=10pt
|
||||
]{question}
|
||||
\setenumerate{labelsep=*, leftmargin=1.0pc}
|
||||
% setup hyperlink for page and line number
|
||||
\def\msname{$if(msname)$$msname$$else$MS$endif$}
|
||||
\def\smname{$if(smname)$$smname$$else$SM$endif$}
|
||||
\setenumerate{labelsep=*, leftmargin=1.0pc}
|
||||
%\zexternaldocument*{ManuscriptNew\veraa}
|
||||
\zexternaldocument*{\msname}
|
||||
\zexternaldocument*{\smname}
|
||||
\newcommand{\hlabel}[1]{\label{#1}\hypertarget{#1}{
|
||||
\linelabel{line:#1}}}
|
||||
%\externaldocument[si-]{\smname\veraa}[\smname\veraa.pdf]
|
||||
\makeatletter
|
||||
\newcommand{\clab}[2]{%
|
||||
\protected@write\@auxout{\let\clab\@secondoftwo}{
|
||||
\string\newlabel{r:#1}{{#2}{}}}%
|
||||
\hlabel{#1}#2\hlabel{#1end}}
|
||||
\makeatother
|
||||
\newcommand{\zhypera}[1]{\href[pdfnewwindow]{\msname.pdf\##1}{\\[1ex]\textbf{Page \zpageref{#1}, Line
|
||||
\zref{line:#1}--\zref{line:#1end}:}\\}}
|
||||
\newcommand{\cref}[1]{\begin{refquote}\zhypera{#1}{\zref{r:#1}}\\[-0.5ex]\end{refquote}}
|
||||
% \newenvironment{ra}[1][\unskip]{\par \noindent \\[-1ex] \textbf{Response/Action:}\par\bf}{\ \\}
|
||||
\renewenvironment{quote}{\begin{question}}{\end{question}}
|
||||
% \renewenvironment{verbatim}{\begin{ra}}{\end{ra}}
|
||||
$endif$
|
||||
|
||||
% def default corresponding authors and equal contributing authors variables
|
||||
\def\hascorr{0}
|
||||
\def\haseqc{0}
|
||||
% check if corresponding author(s) and equal contributing authors are available
|
||||
$for(author)$$if(author.correspondence)$\def\hascorr{1}$endif$$if(author.equalcontribution)$\def\haseqc{1}$endif$ $endfor$
|
||||
|
||||
\newcommand{\getcorrauthinfo}{
|
||||
\subsection{Corresponding Author(s)}
|
||||
\def\a{} \def\b{} \def\c{}
|
||||
\hspace{-2.2em}
|
||||
$for(author)$
|
||||
$if(author.correspondence)$
|
||||
\textbf{$author.name$:}
|
||||
\vspace{-1em}
|
||||
\begin{enumerate}[labelindent=-12pt,label=\arabic*.,itemindent=0em,leftmargin=!, itemsep = -10pt]
|
||||
$for(author.institute)$ \def\a{$author.institute$}
|
||||
$for(institute)$ \def\b{$institute.id$} \def\c{$institute.name$}
|
||||
\ifx \a\b \item \c; \fi
|
||||
$endfor$
|
||||
$endfor$
|
||||
$if(author.email)$\item email: $author.email$;$endif$
|
||||
$if(author.orcid)$\item orcid: $author.orcid$;$endif$
|
||||
$if(author.tel)$\item Tel: $author.tel$;$endif$
|
||||
$if(author.fax)$\item Fax: $author.fax$$endif$
|
||||
\end{enumerate}
|
||||
$endif$
|
||||
$endfor$
|
||||
}
|
||||
|
||||
\newcommand{\getotherauthinfo}{
|
||||
\subsection{Author(s)}
|
||||
\def\a{} \def\b{} \def\c{}
|
||||
\hspace{-2.2em}
|
||||
$for(author)$
|
||||
$if(author.correspondence)$
|
||||
$else$
|
||||
\textbf{$author.name$:}
|
||||
\vspace{-1em}
|
||||
\begin{enumerate}[labelindent=-12pt,label=\arabic*.,itemindent=0em,leftmargin=!, itemsep = -10pt]
|
||||
$for(author.institute)$ \def\a{$author.institute$} $for(institute)$ \def\b{$institute.id$} \def\c{$institute.name$}
|
||||
\ifx \a\b \item \c; \fi
|
||||
$endfor$
|
||||
$endfor$
|
||||
$if(author.email)$\item email: $author.email$;$endif$
|
||||
$if(author.orcid)$\item orcid: $author.orcid$;$endif$
|
||||
$if(author.tel)$\item Tel: $author.tel$;$endif$
|
||||
$if(author.fax)$\item Fax: $author.fax$$endif$
|
||||
\end{enumerate}
|
||||
$endif$
|
||||
$endfor$
|
||||
}
|
||||
|
||||
$preamble$
|
||||
|
||||
% remove the two line around Abstract
|
||||
$if(abstract)$
|
||||
$else$
|
||||
\makeatletter
|
||||
\renewcommand{\MaketitleBox}{%
|
||||
\resetTitleCounters
|
||||
\def\baselinestretch{1}%
|
||||
\begin{center}
|
||||
\def\baselinestretch{1}%
|
||||
\large \@title \par
|
||||
\vskip 18pt
|
||||
\normalsize\elsauthors \par
|
||||
\vskip 30pt
|
||||
\footnotesize \itshape \elsaddress \par
|
||||
\end{center}
|
||||
\vskip 12pt
|
||||
}
|
||||
\makeatother
|
||||
$endif$
|
||||
|
||||
\begin{document}
|
||||
$for(include-before)$
|
||||
$include-before$
|
||||
$endfor$
|
||||
\begin{frontmatter}
|
||||
|
||||
\title{$title$$if(subtitle)$\\\Large{$subtitle$}$endif$}
|
||||
$for(author)$\author$if(authorwithinstitute)$[$for(author.institute)$$author.institute$$sep$,$endfor$]$endif${$author.name$$if(author.correspondence)$\corref{corrauth}$endif$$if(author.equalcontribution)$\corref{eqcon}$endif$ $if(author.footnote)$\fnref{$author.footnote$}$endif$}$if(author.email)$\ead{$author.email$}$endif$$endfor$
|
||||
$if(authorwithinstitute)$ $for(institute)$ \address[$institute.id$]{$institute.name$} $endfor$ $endif$
|
||||
% generate corresponding authors.
|
||||
% \StrBehind is from xstring package
|
||||
\ifnum \hascorr=1
|
||||
\def\corrauths{
|
||||
$for(author)$$if(author.correspondence)$and $author.name$ ($author.email$) $endif$$endfor$}
|
||||
\cortext[corrauth]{Corresponding to \StrBehind*{\corrauths}{and }.}
|
||||
\fi
|
||||
|
||||
% generate equal contributing authors.
|
||||
\ifnum \haseqc=1
|
||||
\def\eqa{$for(author)$$if(author.equalcontribution)$and $author.name$ $endif$$endfor$}
|
||||
\cortext[eqcon]{\StrBehind*{\eqa}{and } are equally contributed to this work.}
|
||||
\fi
|
||||
|
||||
$for(footnote)$
|
||||
\fntext[$footnote.id$]{$footnote.text$}
|
||||
$endfor$
|
||||
|
||||
$if(abstract)$
|
||||
\begin{abstract}
|
||||
$abstract$
|
||||
\end{abstract}
|
||||
$if(keywords)$
|
||||
\begin{keyword}
|
||||
$for(keywords/allbutlast)$$keywords$ \sep $endfor$
|
||||
$for(keywords/last)$$keywords$$endfor$
|
||||
\end{keyword}
|
||||
$endif$
|
||||
$endif$
|
||||
\end{frontmatter}
|
||||
|
||||
$body$
|
||||
|
||||
$if(authorwithinstitute)$
|
||||
$else$
|
||||
\section{Author Information}
|
||||
|
||||
\getcorrauthinfo{}
|
||||
|
||||
\getotherauthinfo{}
|
||||
|
||||
$endif$
|
||||
|
||||
|
||||
$if(natbib)$
|
||||
$if(bibliography)$
|
||||
$if(biblio-title)$
|
||||
$if(book-class)$
|
||||
\renewcommand\bibname{$biblio-title$}
|
||||
$else$
|
||||
\renewcommand\refname{$biblio-title$}
|
||||
$endif$
|
||||
$endif$
|
||||
\bibliography{$bibliography$}
|
||||
$endif$
|
||||
$endif$
|
||||
|
||||
$for(include-after)$
|
||||
$include-after$
|
||||
$endfor$
|
||||
\end{document}
|
||||
@@ -0,0 +1,239 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="never" default-locale="en-US">
|
||||
<info>
|
||||
<title>Elsevier - Harvard (with titles)</title>
|
||||
<id>http://www.zotero.org/styles/elsevier-harvard</id>
|
||||
<link href="http://www.zotero.org/styles/elsevier-harvard" rel="self"/>
|
||||
<link href="http://www.zotero.org/styles/ecology-letters" rel="template"/>
|
||||
<link href="http://www.elsevier.com/journals/biological-conservation/0006-3207/guide-for-authors#68000" rel="documentation"/>
|
||||
<author>
|
||||
<name>David Kaplan</name>
|
||||
<email>david.kaplan@ird.fr</email>
|
||||
</author>
|
||||
<contributor>
|
||||
<name>Simon Kornblith</name>
|
||||
<email>simon@simonster.com</email>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Bruce D'Arcus</name>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Curtis M. Humphrey</name>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Richard Karnesky</name>
|
||||
<email>karnesky+zotero@gmail.com</email>
|
||||
<uri>http://arc.nucapt.northwestern.edu/Richard_Karnesky</uri>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Sebastian Karcher</name>
|
||||
</contributor>
|
||||
<category citation-format="author-date"/>
|
||||
<category field="biology"/>
|
||||
<category field="generic-base"/>
|
||||
<updated>2014-03-04T00:09:00+00:00</updated>
|
||||
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
|
||||
</info>
|
||||
<macro name="container">
|
||||
<choose>
|
||||
<if type="chapter paper-conference" match="any">
|
||||
<text term="in" prefix=", " suffix=": "/>
|
||||
<names variable="editor translator" delimiter=", " suffix=", ">
|
||||
<name name-as-sort-order="all" sort-separator=", " initialize-with="." delimiter=", " delimiter-precedes-last="always"/>
|
||||
<label form="short" text-case="capitalize-first" prefix=" (" suffix=")"/>
|
||||
</names>
|
||||
<group delimiter=", ">
|
||||
<text variable="container-title" text-case="title"/>
|
||||
<text variable="collection-title" text-case="title"/>
|
||||
</group>
|
||||
</if>
|
||||
<else-if type="bill book graphic legal_case legislation motion_picture report song" match="any">
|
||||
<group prefix=", " delimiter=", ">
|
||||
<text variable="container-title"/>
|
||||
<text variable="collection-title"/>
|
||||
</group>
|
||||
</else-if>
|
||||
<else>
|
||||
<group prefix=". " delimiter=", ">
|
||||
<text variable="container-title" form="short"/>
|
||||
<text variable="collection-title"/>
|
||||
</group>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="author">
|
||||
<names variable="author">
|
||||
<name name-as-sort-order="all" sort-separator=", " initialize-with="." delimiter=", " delimiter-precedes-last="always"/>
|
||||
<label form="short" prefix=" (" suffix=")" text-case="capitalize-first"/>
|
||||
<substitute>
|
||||
<names variable="editor"/>
|
||||
<names variable="translator"/>
|
||||
<text macro="title"/>
|
||||
</substitute>
|
||||
</names>
|
||||
</macro>
|
||||
<macro name="author-short">
|
||||
<names variable="author">
|
||||
<name form="short" and="text" delimiter=", " initialize-with=". "/>
|
||||
<substitute>
|
||||
<names variable="editor"/>
|
||||
<names variable="translator"/>
|
||||
<choose>
|
||||
<if type="bill book graphic legal_case legislation motion_picture report song" match="any">
|
||||
<text variable="title" form="short" font-style="italic"/>
|
||||
</if>
|
||||
<else>
|
||||
<text variable="title" form="short" quotes="true"/>
|
||||
</else>
|
||||
</choose>
|
||||
</substitute>
|
||||
</names>
|
||||
</macro>
|
||||
<macro name="access">
|
||||
<choose>
|
||||
<if variable="DOI">
|
||||
<text variable="DOI" prefix="https://doi.org/"/>
|
||||
</if>
|
||||
<else-if type="webpage post-weblog" match="any">
|
||||
<group delimiter=" ">
|
||||
<text value="URL"/>
|
||||
<text variable="URL"/>
|
||||
<group prefix="(" suffix=").">
|
||||
<text term="accessed" suffix=" "/>
|
||||
<date variable="accessed">
|
||||
<date-part name="month" form="numeric" suffix="."/>
|
||||
<date-part name="day" suffix="."/>
|
||||
<date-part name="year" form="short"/>
|
||||
</date>
|
||||
</group>
|
||||
</group>
|
||||
</else-if>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="title">
|
||||
<choose>
|
||||
<if type="report thesis" match="any">
|
||||
<text variable="title"/>
|
||||
<group prefix=" (" suffix=")" delimiter=" ">
|
||||
<text variable="genre"/>
|
||||
<text variable="number" prefix="No. "/>
|
||||
</group>
|
||||
</if>
|
||||
<else-if type="bill book graphic legal_case legislation motion_picture report song speech" match="any">
|
||||
<text variable="title"/>
|
||||
<text macro="edition" prefix=", "/>
|
||||
</else-if>
|
||||
<else-if type="webpage">
|
||||
<text variable="title"/>
|
||||
<text value="WWW Document" prefix=" [" suffix="]"/>
|
||||
</else-if>
|
||||
<else>
|
||||
<text variable="title"/>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="publisher">
|
||||
<group delimiter=", ">
|
||||
<text variable="publisher"/>
|
||||
<text variable="publisher-place"/>
|
||||
</group>
|
||||
</macro>
|
||||
<macro name="event">
|
||||
<choose>
|
||||
<if variable="event">
|
||||
<text term="presented at" text-case="capitalize-first" suffix=" "/>
|
||||
<text variable="event"/>
|
||||
</if>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="issued">
|
||||
<choose>
|
||||
<if variable="issued">
|
||||
<date variable="issued">
|
||||
<date-part name="year"/>
|
||||
</date>
|
||||
</if>
|
||||
<else>
|
||||
<text term="no date" form="short"/>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="edition">
|
||||
<group delimiter=" ">
|
||||
<choose>
|
||||
<if is-numeric="edition">
|
||||
<number variable="edition" form="ordinal"/>
|
||||
</if>
|
||||
<else>
|
||||
<text variable="edition" suffix="."/>
|
||||
</else>
|
||||
</choose>
|
||||
<text value="ed"/>
|
||||
</group>
|
||||
</macro>
|
||||
<macro name="locators">
|
||||
<choose>
|
||||
<if type="article-journal article-magazine article-newspaper" match="any">
|
||||
<group prefix=" " delimiter=", ">
|
||||
<group>
|
||||
<text variable="volume"/>
|
||||
</group>
|
||||
<text variable="page"/>
|
||||
</group>
|
||||
</if>
|
||||
<else-if type="bill book graphic legal_case legislation motion_picture report song thesis" match="any">
|
||||
<group delimiter=", " prefix=". ">
|
||||
<text macro="event"/>
|
||||
<text macro="publisher"/>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="chapter paper-conference" match="any">
|
||||
<group delimiter=", " prefix=". ">
|
||||
<text macro="event"/>
|
||||
<text macro="publisher"/>
|
||||
<group>
|
||||
<label variable="page" form="short" suffix=" "/>
|
||||
<text variable="page"/>
|
||||
</group>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="patent">
|
||||
<text variable="number" prefix=". "/>
|
||||
</else-if>
|
||||
</choose>
|
||||
</macro>
|
||||
<citation et-al-min="3" et-al-use-first="1" disambiguate-add-givenname="true" disambiguate-add-year-suffix="true" collapse="year" cite-group-delimiter=", ">
|
||||
<sort>
|
||||
<key macro="author"/>
|
||||
<key macro="issued" sort="descending"/>
|
||||
</sort>
|
||||
<layout prefix="(" suffix=")" delimiter="; ">
|
||||
<group delimiter=", ">
|
||||
<text macro="author-short"/>
|
||||
<text macro="issued"/>
|
||||
<group delimiter=" ">
|
||||
<label variable="locator" form="short"/>
|
||||
<text variable="locator"/>
|
||||
</group>
|
||||
</group>
|
||||
</layout>
|
||||
</citation>
|
||||
<bibliography hanging-indent="true" entry-spacing="0" line-spacing="1">
|
||||
<sort>
|
||||
<key macro="author"/>
|
||||
<key macro="issued" sort="descending"/>
|
||||
</sort>
|
||||
<layout>
|
||||
<group suffix=".">
|
||||
<text macro="author" suffix=","/>
|
||||
<text macro="issued" prefix=" "/>
|
||||
<group prefix=". ">
|
||||
<text macro="title"/>
|
||||
<text macro="container"/>
|
||||
<text macro="locators"/>
|
||||
</group>
|
||||
</group>
|
||||
<text macro="access" prefix=". "/>
|
||||
</layout>
|
||||
</bibliography>
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,432 @@
|
||||
$-- Keeping in template layout for backward compatibility
|
||||
\documentclass[$if(layout)$$layout$$else$$for(classoption)$$classoption$$sep$,$endfor$$endif$]{_extensions/inst/tex/supp} %review=doublespace preprint=single 5p=2 column
|
||||
%%% Begin My package additions %%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[hyphens]{url}
|
||||
$if(journal)$
|
||||
\journal{$journal$} % Sets Journal name
|
||||
$endif$
|
||||
\usepackage{lineno} % add
|
||||
$if(linenumbers)$
|
||||
\linenumbers % turns line numbering on
|
||||
$endif$
|
||||
\usepackage{graphicx}
|
||||
\usepackage{xstring}
|
||||
\usepackage{xcolor}
|
||||
%%%%%%%%%%%%%%%% end my additions to header
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{lmodern}
|
||||
\usepackage{amssymb,amsmath}
|
||||
\usepackage{ifxetex,ifluatex}
|
||||
\usepackage{fixltx2e} % provides \textsubscript
|
||||
% use upquote if available, for straight quotes in verbatim environments
|
||||
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
||||
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
|
||||
\usepackage[utf8]{inputenc}
|
||||
$if(euro)$
|
||||
\usepackage{eurosym}
|
||||
$endif$
|
||||
\else % if luatex or xelatex
|
||||
\usepackage{fontspec}
|
||||
\ifxetex
|
||||
\usepackage{xltxtra,xunicode}
|
||||
\fi
|
||||
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
|
||||
\newcommand{\euro}{€}
|
||||
$if(mainfont)$
|
||||
\setmainfont{$mainfont$}
|
||||
$endif$
|
||||
$if(sansfont)$
|
||||
\setsansfont{$sansfont$}
|
||||
$endif$
|
||||
$if(monofont)$
|
||||
\setmonofont{$monofont$}
|
||||
$endif$
|
||||
$if(mathfont)$
|
||||
\setmathfont{$mathfont$}
|
||||
$endif$
|
||||
\fi
|
||||
% use microtype if available
|
||||
\IfFileExists{microtype.sty}{\usepackage{microtype}}{}
|
||||
$if(geometry)$
|
||||
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
|
||||
$endif$
|
||||
$if(natbib)$
|
||||
\usepackage{natbib}
|
||||
\setcitestyle{$natbiboptions$}
|
||||
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
|
||||
$endif$
|
||||
$if(listings)$
|
||||
\usepackage{listings}
|
||||
$endif$
|
||||
$if(lhs)$
|
||||
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
|
||||
$endif$
|
||||
$if(verbatim-in-note)$
|
||||
\usepackage{fancyvrb}
|
||||
$endif$
|
||||
$if(graphics)$
|
||||
\usepackage{graphicx}
|
||||
$endif$
|
||||
\ifxetex
|
||||
\usepackage[setpagesize=false, % page size defined by xetex
|
||||
unicode=false, % unicode breaks when used with xetex
|
||||
xetex]{hyperref}
|
||||
\else
|
||||
\usepackage[unicode=true]{hyperref}
|
||||
\fi
|
||||
\hypersetup{breaklinks=true,
|
||||
bookmarks=true,
|
||||
pdfauthor={$author-meta$},
|
||||
pdftitle={$title-meta$},
|
||||
colorlinks=$if(colorlinks)$true$else$false$endif$,
|
||||
urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$,
|
||||
linkcolor=$if(linkcolor)$$linkcolor$$else$magenta$endif$,
|
||||
pdfborder={0 0 0}}
|
||||
\urlstyle{same} % don't use monospace font for urls
|
||||
$if(links-as-notes)$
|
||||
% Make links footnotes instead of hotlinks:
|
||||
\renewcommand{\href}[2]{#2\footnote{\url{#1}}}
|
||||
$endif$
|
||||
$if(strikeout)$
|
||||
\usepackage[normalem]{ulem}
|
||||
% avoid problems with \sout in headers with hyperref:
|
||||
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
|
||||
$endif$
|
||||
$if(numbersections)$
|
||||
\setcounter{secnumdepth}{5}
|
||||
$else$
|
||||
\setcounter{secnumdepth}{0}
|
||||
$endif$
|
||||
$if(verbatim-in-note)$
|
||||
\VerbatimFootnotes % allows verbatim text in footnotes
|
||||
$endif$
|
||||
$if(lang)$
|
||||
\ifxetex
|
||||
\usepackage{polyglossia}
|
||||
\setmainlanguage{$mainlang$}
|
||||
\else
|
||||
\usepackage[$lang$]{babel}
|
||||
\fi
|
||||
$endif$
|
||||
% Pandoc toggle for numbering sections (defaults to be off)
|
||||
$if(numbersections)$
|
||||
$else$
|
||||
\setcounter{secnumdepth}{0}
|
||||
$endif$
|
||||
$if(highlighting-macros)$
|
||||
% Pandoc syntax highlighting
|
||||
$highlighting-macros$
|
||||
$endif$
|
||||
% tightlist command for lists without linebreak
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
$if(tables)$
|
||||
% From pandoc table feature
|
||||
\usepackage{longtable,booktabs,array}
|
||||
$if(multirow)$
|
||||
\usepackage{multirow}
|
||||
$endif$
|
||||
\usepackage{calc} % for calculating minipage widths
|
||||
% Correct order of tables after \paragraph or \subparagraph
|
||||
\usepackage{etoolbox}
|
||||
\makeatletter
|
||||
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
|
||||
\makeatother
|
||||
% Allow footnotes in longtable head/foot
|
||||
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
|
||||
\makesavenoteenv{longtable}
|
||||
$endif$
|
||||
$if(csl-refs)$
|
||||
% Pandoc citation processing
|
||||
\newlength{\cslhangindent}
|
||||
\setlength{\cslhangindent}{1.5em}
|
||||
\newlength{\csllabelwidth}
|
||||
\setlength{\csllabelwidth}{3em}
|
||||
\newlength{\cslentryspacingunit} % times entry-spacing
|
||||
\setlength{\cslentryspacingunit}{\parskip}
|
||||
% for Pandoc 2.8 to 2.10.1
|
||||
\newenvironment{cslreferences}%
|
||||
{$if(csl-hanging-indent)$\setlength{\parindent}{0pt}%
|
||||
\everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces$endif$}%
|
||||
{\par}
|
||||
% For Pandoc 2.11+
|
||||
\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing
|
||||
{% don't indent paragraphs
|
||||
\setlength{\parindent}{0pt}
|
||||
% turn on hanging indent if param 1 is 1
|
||||
\ifodd #1
|
||||
\let\oldpar\par
|
||||
\def\par{\hangindent=\cslhangindent\oldpar}
|
||||
\fi
|
||||
% set entry spacing
|
||||
\setlength{\parskip}{#2\cslentryspacingunit}
|
||||
}%
|
||||
{}
|
||||
\usepackage{calc}
|
||||
\newcommand{\CSLBlock}[1]{#1\hfill\break}
|
||||
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}}
|
||||
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break}
|
||||
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
|
||||
$endif$
|
||||
$for(header-includes)$
|
||||
$header-includes$
|
||||
$endfor$
|
||||
|
||||
|
||||
\usepackage{xifthen}
|
||||
% set special color for EST
|
||||
\ifthenelse{\equal{$journal$}{Environmental Science \& Technology}}
|
||||
{\definecolor{seccol}{RGB}{56, 95, 66}}
|
||||
{\definecolor{seccol}{RGB}{0, 0, 0}}
|
||||
|
||||
$if(uppersections)$
|
||||
\usepackage{titlesec}
|
||||
\titleformat{\section}
|
||||
{\color{seccol}\large\bfseries\MakeUppercase}{\thesection}{1em}{}
|
||||
$endif$
|
||||
$if(sectiononnewpage)$
|
||||
\AddToHook{cmd/section/before}{\clearpage}
|
||||
$endif$
|
||||
|
||||
\usepackage{enumitem}
|
||||
\usepackage{fontspec}
|
||||
\usepackage{float}
|
||||
\setmainfont{Helvetica}
|
||||
\usepackage[normalem]{ulem}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{nameref} %needed by zref-xr
|
||||
\usepackage{zref-xr,zref-hyperref,zref-user}
|
||||
\usepackage{xr-hyper}
|
||||
|
||||
% force to use \zref
|
||||
$if(msname)$
|
||||
\def\msname{$msname$}
|
||||
\zexternaldocument*{\msname}
|
||||
\renewcommand{\ref}{\zref}
|
||||
$endif$
|
||||
$if(smname)$
|
||||
\def\smname{$smname$}
|
||||
\zexternaldocument*{\smname}
|
||||
$endif$
|
||||
|
||||
\zxrsetup{toltxlabel=true}
|
||||
{\catcode`\#=12 \gdef\hashchar{#1}}
|
||||
\makeatletter
|
||||
\newcommand\hzref[1]{\edef\next{%
|
||||
\noexpand\href{%
|
||||
\zref@extractdefault{#1}{url}{}%
|
||||
\zref@ifrefcontainsprop{#1}{anchor}{%
|
||||
\hashchar\zref@extract{#1}{anchor}}{}}%
|
||||
{\noexpand\zref{#1}}}\next}
|
||||
\makeatother
|
||||
|
||||
|
||||
|
||||
$if(revision)$
|
||||
% \usepackage{xcolor}
|
||||
\usepackage{adjustbox}
|
||||
\usepackage{mdframed}
|
||||
\newmdenv[topline=false,
|
||||
leftline=true,
|
||||
bottomline=false,
|
||||
rightline=false,
|
||||
linewidth=3pt,
|
||||
%backgroundcolor=lightgray,
|
||||
linecolor=gray!30,
|
||||
backgroundcolor=gray!5,
|
||||
skipabove=\topsep,
|
||||
skipbelow=\topsep,
|
||||
leftmargin=0pt,
|
||||
rightmargin=0pt,
|
||||
innertopmargin=0pt,
|
||||
innerbottommargin=0pt
|
||||
]{refquote}
|
||||
\newmdenv[topline=false,
|
||||
leftline=true,
|
||||
bottomline=false,
|
||||
rightline=false,
|
||||
linewidth=3pt,
|
||||
%backgroundcolor=lightgray,
|
||||
backgroundcolor=red!3!white,
|
||||
linecolor=red!30!white,
|
||||
skipabove=\topsep,
|
||||
skipbelow=\topsep,
|
||||
leftmargin=0pt,
|
||||
rightmargin=0pt,
|
||||
innertopmargin=10pt,
|
||||
innerbottommargin=10pt
|
||||
]{question}
|
||||
\setenumerate{labelsep=*, leftmargin=1.0pc}
|
||||
% setup hyperlink for page and line number
|
||||
\def\msname{$if(msname)$$msname$$else$MS$endif$}
|
||||
\def\smname{$if(smname)$$smname$$else$SM$endif$}
|
||||
\setenumerate{labelsep=*, leftmargin=1.0pc}
|
||||
%\zexternaldocument*{ManuscriptNew\veraa}
|
||||
\zexternaldocument*{\msname}
|
||||
\zexternaldocument*{\smname}
|
||||
\newcommand{\hlabel}[1]{\label{#1}\hypertarget{#1}{
|
||||
\linelabel{line:#1}}}
|
||||
%\externaldocument[si-]{\smname\veraa}[\smname\veraa.pdf]
|
||||
\makeatletter
|
||||
\newcommand{\clab}[2]{%
|
||||
\protected@write\@auxout{\let\clab\@secondoftwo}{
|
||||
\string\newlabel{r:#1}{{#2}{}}}%
|
||||
\hlabel{#1}#2\hlabel{#1end}}
|
||||
\makeatother
|
||||
\newcommand{\zhypera}[1]{\href[pdfnewwindow]{\msname.pdf\##1}{\\[1ex]\textbf{Page \zpageref{#1}, Line
|
||||
\zref{line:#1}--\zref{line:#1end}:}\\}}
|
||||
\newcommand{\cref}[1]{\begin{refquote}\zhypera{#1}{\zref{r:#1}}\\[-0.5ex]\end{refquote}}
|
||||
% \newenvironment{ra}[1][\unskip]{\par \noindent \\[-1ex] \textbf{Response/Action:}\par\bf}{\ \\}
|
||||
\renewenvironment{quote}{\begin{question}}{\end{question}}
|
||||
% \renewenvironment{verbatim}{\begin{ra}}{\end{ra}}
|
||||
$endif$
|
||||
|
||||
|
||||
% def default corresponding authors and equal contributing authors variables
|
||||
\def\hascorr{0}
|
||||
\def\haseqc{0}
|
||||
% check if corresponding author(s) and equal contributing authors are available
|
||||
$for(author)$$if(author.correspondence)$\def\hascorr{1}$endif$$if(author.equalcontribution)$\def\haseqc{1}$endif$ $endfor$
|
||||
|
||||
\newcommand{\getcorrauthinfo}{
|
||||
\subsection{Corresponding Author(s)}
|
||||
\def\a{} \def\b{} \def\c{}
|
||||
\hspace{-2.2em}
|
||||
$for(author)$
|
||||
$if(author.correspondence)$
|
||||
\textbf{$author.name$:}
|
||||
\vspace{-1em}
|
||||
\begin{enumerate}[labelindent=-12pt,label=\arabic*.,itemindent=0em,leftmargin=!, itemsep = -10pt]
|
||||
$for(author.institute)$ \def\a{$author.institute$}
|
||||
$for(institute)$ \def\b{$institute.id$} \def\c{$institute.name$}
|
||||
\ifx \a\b \item \c; \fi
|
||||
$endfor$
|
||||
$endfor$
|
||||
$if(author.email)$\item email: $author.email$;$endif$
|
||||
$if(author.orcid)$\item orcid: $author.orcid$;$endif$
|
||||
$if(author.tel)$\item Tel: $author.tel$;$endif$
|
||||
$if(author.fax)$\item Fax: $author.fax$$endif$
|
||||
\end{enumerate}
|
||||
$endif$
|
||||
$endfor$
|
||||
}
|
||||
|
||||
\newcommand{\getotherauthinfo}{
|
||||
\subsection{Author(s)}
|
||||
\def\a{} \def\b{} \def\c{}
|
||||
\hspace{-2.2em}
|
||||
$for(author)$
|
||||
$if(author.correspondence)$
|
||||
$else$
|
||||
\textbf{$author.name$:}
|
||||
\vspace{-1em}
|
||||
\begin{enumerate}[labelindent=-12pt,label=\arabic*.,itemindent=0em,leftmargin=!, itemsep = -10pt]
|
||||
$for(author.institute)$ \def\a{$author.institute$} $for(institute)$ \def\b{$institute.id$} \def\c{$institute.name$}
|
||||
\ifx \a\b \item \c; \fi
|
||||
$endfor$
|
||||
$endfor$
|
||||
$if(author.email)$\item email: $author.email$;$endif$
|
||||
$if(author.orcid)$\item orcid: $author.orcid$;$endif$
|
||||
$if(author.tel)$\item Tel: $author.tel$;$endif$
|
||||
$if(author.fax)$\item Fax: $author.fax$$endif$
|
||||
\end{enumerate}
|
||||
$endif$
|
||||
$endfor$
|
||||
}
|
||||
|
||||
$preamble$
|
||||
|
||||
% remove the two line around Abstract
|
||||
$if(abstract)$
|
||||
$else$
|
||||
\makeatletter
|
||||
\renewcommand{\MaketitleBox}{%
|
||||
\resetTitleCounters
|
||||
\def\baselinestretch{1}%
|
||||
\begin{center}
|
||||
\def\baselinestretch{1}%
|
||||
\large \@title \par
|
||||
\vskip 18pt
|
||||
\normalsize\elsauthors \par
|
||||
\vskip 30pt
|
||||
\footnotesize \itshape \elsaddress \par
|
||||
\end{center}
|
||||
\vskip 12pt
|
||||
}
|
||||
\makeatother
|
||||
$endif$
|
||||
|
||||
\begin{document}
|
||||
$for(include-before)$
|
||||
$include-before$
|
||||
$endfor$
|
||||
\begin{frontmatter}
|
||||
|
||||
\title{$title$$if(subtitle)$\\\Large{$subtitle$}$endif$}
|
||||
$for(author)$\author$if(authorwithinstitute)$[$for(author.institute)$$author.institute$$sep$,$endfor$]$endif${$author.name$$if(author.correspondence)$\corref{corrauth}$endif$$if(author.equalcontribution)$\corref{eqcon}$endif$ $if(author.footnote)$\fnref{$author.footnote$}$endif$}$if(author.email)$\ead{$author.email$}$endif$$endfor$
|
||||
$if(authorwithinstitute)$ $for(institute)$ \address[$institute.id$]{$institute.name$} $endfor$ $endif$
|
||||
% generate corresponding authors.
|
||||
% \StrBehind is from xstring package
|
||||
\ifnum \hascorr=1
|
||||
\def\corrauths{
|
||||
$for(author)$$if(author.correspondence)$and $author.name$ ($author.email$) $endif$$endfor$}
|
||||
\cortext[corrauth]{Corresponding to \StrBehind*{\corrauths}{and }.}
|
||||
\fi
|
||||
|
||||
% generate equal contributing authors.
|
||||
\ifnum \haseqc=1
|
||||
\def\eqa{$for(author)$$if(author.equalcontribution)$and $author.name$ $endif$$endfor$}
|
||||
\cortext[eqcon]{\StrBehind*{\eqa}{and } are equally contributed to this work.}
|
||||
\fi
|
||||
|
||||
$for(footnote)$
|
||||
\fntext[$footnote.id$]{$footnote.text$}
|
||||
$endfor$
|
||||
|
||||
$if(abstract)$
|
||||
\begin{abstract}
|
||||
$abstract$
|
||||
\end{abstract}
|
||||
$if(keywords)$
|
||||
\begin{keyword}
|
||||
$for(keywords/allbutlast)$$keywords$ \sep $endfor$
|
||||
$for(keywords/last)$$keywords$$endfor$
|
||||
\end{keyword}
|
||||
$endif$
|
||||
$endif$
|
||||
\end{frontmatter}
|
||||
|
||||
$body$
|
||||
|
||||
$if(authorwithinstitute)$
|
||||
$else$
|
||||
\section{Author Information}
|
||||
|
||||
\getcorrauthinfo{}
|
||||
|
||||
\getotherauthinfo{}
|
||||
|
||||
\section{Notes}
|
||||
|
||||
The authors declare no competing financial interest.
|
||||
|
||||
$endif$
|
||||
|
||||
|
||||
$if(natbib)$
|
||||
$if(bibliography)$
|
||||
$if(biblio-title)$
|
||||
$if(book-class)$
|
||||
\renewcommand\bibname{$biblio-title$}
|
||||
$else$
|
||||
\renewcommand\refname{$biblio-title$}
|
||||
$endif$
|
||||
$endif$
|
||||
\bibliography{$bibliography$}
|
||||
$endif$
|
||||
$endif$
|
||||
|
||||
$for(include-after)$
|
||||
$include-after$
|
||||
$endfor$
|
||||
\end{document}
|
||||
@@ -0,0 +1,181 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only" default-locale="en-GB">
|
||||
<info>
|
||||
<title>The ISME Journal</title>
|
||||
<id>http://www.zotero.org/styles/the-isme-journal</id>
|
||||
<link href="http://www.zotero.org/styles/the-isme-journal" rel="self"/>
|
||||
<link href="http://www.zotero.org/styles/journal-of-frailty-and-aging" rel="template"/>
|
||||
<link href="http://www.nature.com/ismej/ismej_new_gta.pdf" rel="documentation"/>
|
||||
<author>
|
||||
<name>Patrick O'Brien</name>
|
||||
<email>obrienpat86@gmail.com</email>
|
||||
</author>
|
||||
<category citation-format="numeric"/>
|
||||
<category field="biology"/>
|
||||
<issn>1751-7362</issn>
|
||||
<eissn>1751-7370</eissn>
|
||||
<summary>The ISME Journal style, which is not the same as for Nature</summary>
|
||||
<updated>2018-03-19T15:30:26+00:00</updated>
|
||||
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
|
||||
</info>
|
||||
<macro name="author">
|
||||
<names variable="author">
|
||||
<name sort-separator=" " initialize-with="" name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/>
|
||||
<label form="short" strip-periods="true" prefix=" (" suffix=")"/>
|
||||
<substitute>
|
||||
<names variable="editor"/>
|
||||
<names variable="translator"/>
|
||||
</substitute>
|
||||
</names>
|
||||
</macro>
|
||||
<macro name="editor">
|
||||
<text term="in" text-case="capitalize-first" suffix=": "/>
|
||||
<names variable="editor">
|
||||
<name sort-separator=" " initialize-with="" name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/>
|
||||
<label form="short" strip-periods="true" prefix=" (" suffix=")."/>
|
||||
</names>
|
||||
</macro>
|
||||
<macro name="edition">
|
||||
<choose>
|
||||
<if is-numeric="edition">
|
||||
<group delimiter=" ">
|
||||
<number variable="edition" form="ordinal"/>
|
||||
<text term="edition" form="short" strip-periods="true"/>
|
||||
</group>
|
||||
</if>
|
||||
<else>
|
||||
<text variable="edition"/>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="title">
|
||||
<choose>
|
||||
<if type="book">
|
||||
<group delimiter=", " suffix=". ">
|
||||
<text variable="title"/>
|
||||
<text macro="edition"/>
|
||||
</group>
|
||||
</if>
|
||||
<else>
|
||||
<text variable="title" suffix=". "/>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="publisher">
|
||||
<group delimiter=", ">
|
||||
<text variable="publisher"/>
|
||||
<text variable="publisher-place"/>
|
||||
</group>
|
||||
</macro>
|
||||
<macro name="year-date">
|
||||
<date variable="issued">
|
||||
<date-part name="year"/>
|
||||
</date>
|
||||
</macro>
|
||||
<citation collapse="citation-number">
|
||||
<sort>
|
||||
<key variable="citation-number"/>
|
||||
</sort>
|
||||
<layout prefix="[" suffix="]" delimiter=", ">
|
||||
<text variable="citation-number"/>
|
||||
</layout>
|
||||
</citation>
|
||||
<bibliography et-al-min="7" et-al-use-first="6" second-field-align="flush" line-spacing="2" entry-spacing="0">
|
||||
<layout>
|
||||
<text variable="citation-number" suffix=". "/>
|
||||
<group delimiter=". ">
|
||||
<text macro="author"/>
|
||||
<text macro="title"/>
|
||||
</group>
|
||||
<choose>
|
||||
<if type="chapter">
|
||||
<text macro="editor"/>
|
||||
<group delimiter=". " suffix=". ">
|
||||
<group prefix=" " delimiter=", ">
|
||||
<text variable="container-title" font-style="italic"/>
|
||||
<text macro="edition"/>
|
||||
</group>
|
||||
<text macro="year-date"/>
|
||||
<group delimiter=", ">
|
||||
<text macro="publisher"/>
|
||||
<group delimiter=" ">
|
||||
<label variable="page" form="short" strip-periods="true"/>
|
||||
<text variable="page"/>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
</if>
|
||||
<else-if type="paper-conference">
|
||||
<text macro="editor"/>
|
||||
<group delimiter=". " suffix=". ">
|
||||
<group prefix=" " delimiter=", ">
|
||||
<text variable="container-title" form="short" font-style="italic"/>
|
||||
<text macro="edition"/>
|
||||
</group>
|
||||
<text macro="year-date"/>
|
||||
<group delimiter=", ">
|
||||
<text macro="publisher"/>
|
||||
<group delimiter=" ">
|
||||
<label variable="page" form="short" strip-periods="true"/>
|
||||
<text variable="page"/>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="article-journal">
|
||||
<group delimiter="; " suffix=". ">
|
||||
<group delimiter=" ">
|
||||
<text variable="container-title" suffix=" " form="short" strip-periods="true" font-style="italic"/>
|
||||
<text macro="year-date"/>
|
||||
</group>
|
||||
<group delimiter=": ">
|
||||
<text variable="volume" font-weight="bold"/>
|
||||
<text variable="page"/>
|
||||
</group>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="bill book graphic legal_case legislation motion_picture report song" match="any">
|
||||
<group delimiter=". " suffix=". ">
|
||||
<text variable="container-title" suffix=" " font-style="italic"/>
|
||||
<text macro="year-date"/>
|
||||
<text macro="publisher"/>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="webpage">
|
||||
<group suffix=". ">
|
||||
<text variable="container-title" suffix=". " font-style="italic"/>
|
||||
<text variable="URL" suffix=". "/>
|
||||
<date variable="accessed">
|
||||
<date-part prefix="Accessed " name="day" suffix=" "/>
|
||||
<date-part name="month" form="short" suffix=" " strip-periods="true"/>
|
||||
<date-part name="year"/>
|
||||
</date>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="thesis">
|
||||
<group delimiter=". " suffix=". ">
|
||||
<text variable="container-title" suffix=" " font-style="italic"/>
|
||||
<text macro="year-date"/>
|
||||
<group delimiter=", ">
|
||||
<text variable="genre"/>
|
||||
<text variable="publisher"/>
|
||||
</group>
|
||||
</group>
|
||||
</else-if>
|
||||
<else>
|
||||
<group>
|
||||
<group delimiter=". " suffix=". ">
|
||||
<text variable="container-title" form="short" suffix=" " strip-periods="true" font-style="italic"/>
|
||||
<text macro="year-date"/>
|
||||
<text macro="publisher"/>
|
||||
</group>
|
||||
<group prefix=", " delimiter=": ">
|
||||
<text variable="volume" font-weight="bold"/>
|
||||
<text variable="page"/>
|
||||
</group>
|
||||
</group>
|
||||
</else>
|
||||
</choose>
|
||||
</layout>
|
||||
</bibliography>
|
||||
</style>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
name: abstract-section
|
||||
author: Albert Krewinkel
|
||||
version: 1.0.0
|
||||
contributes:
|
||||
filters:
|
||||
- abstract-section.lua
|
||||
@@ -0,0 +1,59 @@
|
||||
--[[
|
||||
abstract-to-meta – move an "abstract" section into document metadata
|
||||
|
||||
Copyright: © 2017–2021 Albert Krewinkel
|
||||
License: MIT – see LICENSE file for details
|
||||
]]
|
||||
local abstract = {}
|
||||
|
||||
--- Extract abstract from a list of blocks.
|
||||
function abstract_from_blocklist (blocks)
|
||||
local body_blocks = {}
|
||||
local looking_at_abstract = false
|
||||
|
||||
for _, block in ipairs(blocks) do
|
||||
if block.t == 'Header' and block.level == 1 then
|
||||
if block.identifier == 'abstract' then
|
||||
looking_at_abstract = true
|
||||
else
|
||||
looking_at_abstract = false
|
||||
body_blocks[#body_blocks + 1] = block
|
||||
end
|
||||
elseif looking_at_abstract then
|
||||
if block.t == 'HorizontalRule' then
|
||||
looking_at_abstract = false
|
||||
else
|
||||
abstract[#abstract + 1] = block
|
||||
end
|
||||
else
|
||||
body_blocks[#body_blocks + 1] = block
|
||||
end
|
||||
end
|
||||
|
||||
return body_blocks
|
||||
end
|
||||
|
||||
if PANDOC_VERSION >= {2,9,2} then
|
||||
-- Check all block lists with pandoc 2.9.2 or later
|
||||
return {{
|
||||
Blocks = abstract_from_blocklist,
|
||||
Meta = function (meta)
|
||||
if not meta.abstract and #abstract > 0 then
|
||||
meta.abstract = pandoc.MetaBlocks(abstract)
|
||||
end
|
||||
return meta
|
||||
end
|
||||
}}
|
||||
else
|
||||
-- otherwise, just check the top-level block-list
|
||||
return {{
|
||||
Pandoc = function (doc)
|
||||
local meta = doc.meta
|
||||
local other_blocks = abstract_from_blocklist(doc.blocks)
|
||||
if not meta.abstract and #abstract > 0 then
|
||||
meta.abstract = pandoc.MetaBlocks(abstract)
|
||||
end
|
||||
return pandoc.Pandoc(other_blocks, meta)
|
||||
end,
|
||||
}}
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
name: author-info-blocks
|
||||
author: Albert Krewinkel
|
||||
version: 1.0.0
|
||||
contributes:
|
||||
filters:
|
||||
- author-info-blocks.lua
|
||||
@@ -0,0 +1,179 @@
|
||||
local List = require("pandoc.List")
|
||||
local utils = require("pandoc.utils")
|
||||
local stringify = utils.stringify
|
||||
local byAuthor
|
||||
local byAffiliation
|
||||
local Authors = {}
|
||||
local Affiliations = {}
|
||||
|
||||
local authorHoriz
|
||||
|
||||
local Corresponding = nil
|
||||
local function make_correspondance(name, email)
|
||||
correspondance = List:new({
|
||||
pandoc.Str("* Corresponding Author: "),
|
||||
pandoc.Str(name),
|
||||
pandoc.Str(" ("),
|
||||
pandoc.Link(email, "mailto:" .. email),
|
||||
pandoc.Str(")"),
|
||||
})
|
||||
Corresponding = List:new({ pandoc.Para(correspondance) })
|
||||
end
|
||||
|
||||
local equalCont
|
||||
local function make_equal_contributor()
|
||||
eq_statement = pandoc.Str("† These authors contributed equally to this work.")
|
||||
equalCont = List:new({ pandoc.Para(eq_statement) })
|
||||
end
|
||||
|
||||
local function create_author_list(byAuthor)
|
||||
local authors = {}
|
||||
for i, author in ipairs(byAuthor) do
|
||||
local sups = {}
|
||||
|
||||
for j, aff in ipairs(author.affiliations) do
|
||||
table.insert(sups, aff.number)
|
||||
end
|
||||
sups_str = table.concat(sups, ",")
|
||||
|
||||
local name = stringify(author.name.literal)
|
||||
|
||||
if author.attributes ~= nil then
|
||||
if author.attributes["equal-contributor"] ~= nil and author.attributes["equal-contributor"] then
|
||||
sups_str = sups_str .. ",†"
|
||||
make_equal_contributor()
|
||||
end
|
||||
if author.attributes.corresponding ~= nil and author.attributes.corresponding then
|
||||
local email = stringify(author.email)
|
||||
sups_str = sups_str .. ",*"
|
||||
make_correspondance(name, email)
|
||||
end
|
||||
end
|
||||
|
||||
local authorEntry = List:new({
|
||||
pandoc.Str(name),
|
||||
pandoc.Superscript(pandoc.Str(sups_str)),
|
||||
})
|
||||
|
||||
if authorHoriz and i < #byAuthor then
|
||||
authorEntry:extend({ pandoc.Str(", ") })
|
||||
end
|
||||
|
||||
table.insert(authors, pandoc.Span(authorEntry))
|
||||
end
|
||||
|
||||
if authorHoriz then
|
||||
Authors = { pandoc.Para(authors) }
|
||||
else
|
||||
Authors = authors
|
||||
end
|
||||
end
|
||||
|
||||
local function create_affiliation_list(byAffiliation)
|
||||
for i, aff in ipairs(byAffiliation) do
|
||||
local full_aff = pandoc.List({})
|
||||
if aff.name then
|
||||
full_aff:insert(stringify(aff.name))
|
||||
end
|
||||
|
||||
if aff.address then
|
||||
full_aff:insert(stringify(aff.address))
|
||||
end
|
||||
|
||||
if aff.city then
|
||||
full_aff:insert(stringify(aff.city))
|
||||
end
|
||||
|
||||
if aff["postal-code"] then
|
||||
full_aff:insert(stringify(aff["postal-code"]))
|
||||
end
|
||||
|
||||
if aff.region then
|
||||
full_aff:insert(stringify(aff.region))
|
||||
end
|
||||
|
||||
if aff.country then
|
||||
full_aff:insert(stringify(aff.country))
|
||||
end
|
||||
|
||||
local entry = table.concat(full_aff, ", ")
|
||||
entry = aff.number .. ". " .. entry .. "."
|
||||
table.insert(Affiliations, pandoc.Para(pandoc.Str(entry)))
|
||||
end
|
||||
end
|
||||
|
||||
local Abstract = nil
|
||||
local function create_abstract(ab)
|
||||
Abstract = {}
|
||||
table.insert(Abstract, pandoc.Header(1, "Abstract"))
|
||||
table.insert(Abstract, pandoc.Para(ab))
|
||||
end
|
||||
|
||||
local Keywords = nil
|
||||
local function create_keyword_list(kw)
|
||||
Keywords = {}
|
||||
-- quarto.log.output(kw)
|
||||
local kws = pandoc.List({})
|
||||
for i, keyword in ipairs(kw) do
|
||||
kws:insert(stringify(keyword))
|
||||
end
|
||||
local kwentry = table.concat(kws, "; ")
|
||||
kwentry = "Keywords: " .. kwentry .. "."
|
||||
table.insert(Keywords, pandoc.Para(pandoc.Str(kwentry)))
|
||||
end
|
||||
|
||||
local function remove_author_meta(meta)
|
||||
meta.author = nil
|
||||
meta.authors = nil
|
||||
meta.affiliations = nil
|
||||
meta["by-author"] = nil
|
||||
meta["by-affiliation"] = nil
|
||||
meta["abstract"] = nil
|
||||
return meta
|
||||
end
|
||||
|
||||
return {
|
||||
{
|
||||
Meta = function(meta)
|
||||
byAuthor = meta["by-author"]
|
||||
byAffiliation = meta["by-affiliation"]
|
||||
if meta["author-horizontal"] ~= nil then
|
||||
authorHoriz = meta["author-horizontal"]
|
||||
else
|
||||
authorHoriz = true
|
||||
end
|
||||
create_author_list(byAuthor)
|
||||
create_affiliation_list(byAffiliation)
|
||||
if meta["abstract"] ~= nil then
|
||||
create_abstract(meta["abstract"])
|
||||
end
|
||||
if meta["keywords"] ~= nil then
|
||||
create_keyword_list(meta["keywords"])
|
||||
end
|
||||
return meta
|
||||
end,
|
||||
},
|
||||
{
|
||||
Pandoc = function(doc)
|
||||
local meta = doc.meta
|
||||
local body = List:new({})
|
||||
body:extend(Authors)
|
||||
body:extend(Affiliations)
|
||||
if equalCont ~= nil then
|
||||
body:extend(equalCont)
|
||||
end
|
||||
if Corresponding ~= nil then
|
||||
body:extend(Corresponding)
|
||||
end
|
||||
if Abstract then
|
||||
body:extend(Abstract)
|
||||
end
|
||||
if Keywords then
|
||||
body:extend(Keywords)
|
||||
end
|
||||
body:extend(doc.blocks)
|
||||
meta = remove_author_meta(meta)
|
||||
return pandoc.Pandoc(body, meta)
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
name: scholarly-metadata
|
||||
author: Albert Krewinkel
|
||||
version: 1.0.0
|
||||
contributes:
|
||||
filters:
|
||||
- scholarly-metadata.lua
|
||||
@@ -0,0 +1,197 @@
|
||||
--[[
|
||||
ScholarlyMeta – normalize author/affiliation meta variables
|
||||
|
||||
Copyright (c) 2017-2021 Albert Krewinkel, Robert Winkler
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any purpose
|
||||
with or without fee is hereby granted, provided that the above copyright notice
|
||||
and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
||||
THIS SOFTWARE.
|
||||
]]
|
||||
local List = require("pandoc.List")
|
||||
|
||||
--- Returns the type of a metadata value.
|
||||
--
|
||||
-- @param v a metadata value
|
||||
-- @treturn string one of `Blocks`, `Inlines`, `List`, `Map`, `string`, `boolean`
|
||||
local function metatype(v)
|
||||
if PANDOC_VERSION <= "2.16.2" then
|
||||
local metatag = type(v) == "table" and v.t and v.t:gsub("^Meta", "")
|
||||
return metatag and metatag ~= "Map" and metatag or type(v)
|
||||
end
|
||||
return pandoc.utils.type(v)
|
||||
end
|
||||
|
||||
local type = pandoc.utils.type or metatype
|
||||
|
||||
-- Split a string at commas.
|
||||
local function comma_separated_values(str)
|
||||
local acc = List:new({})
|
||||
for substr in str:gmatch("([^,]*)") do
|
||||
acc[#acc + 1] = substr:gsub("^%s*", ""):gsub("%s*$", "") -- trim
|
||||
end
|
||||
return acc
|
||||
end
|
||||
|
||||
--- Ensure the return value is a list.
|
||||
local function ensure_list(val)
|
||||
if type(val) == "List" then
|
||||
return val
|
||||
elseif type(val) == "Inlines" then
|
||||
-- check if this is really a comma-separated list
|
||||
local csv = comma_separated_values(pandoc.utils.stringify(val))
|
||||
if #csv >= 2 then
|
||||
return csv
|
||||
end
|
||||
return List:new({ val })
|
||||
elseif type(val) == "table" and #val > 0 then
|
||||
return List:new(val)
|
||||
else
|
||||
-- Anything else, use as a singleton (or empty list if val == nil).
|
||||
return List:new({ val })
|
||||
end
|
||||
end
|
||||
|
||||
--- Returns a function which checks whether an object has the given ID.
|
||||
local function has_id(id)
|
||||
return function(x)
|
||||
return x.id == id
|
||||
end
|
||||
end
|
||||
|
||||
--- Copy all key-value pairs of the first table into the second iff there is no
|
||||
-- such key yet in the second table.
|
||||
-- @returns the second argument
|
||||
function add_missing_entries(a, b)
|
||||
for k, v in pairs(a) do
|
||||
b[k] = b[k] or v
|
||||
end
|
||||
return b
|
||||
end
|
||||
|
||||
--- Create an object with a name. The name is either taken directly from the
|
||||
-- `name` field, or from the *only* field name (i.e., key) if the object is a
|
||||
-- dictionary with just one entry. If neither exists, the name is left unset
|
||||
-- (`nil`).
|
||||
function to_named_object(obj)
|
||||
local named = {}
|
||||
if type(obj) == "Inlines" then
|
||||
-- Treat inlines as the name
|
||||
named.name = obj
|
||||
named.id = pandoc.utils.stringify(obj)
|
||||
elseif type(obj) ~= "table" then
|
||||
-- if the object isn't a table, just use its value as a name.
|
||||
named.name = pandoc.MetaInlines({ pandoc.Str(tostring(obj)) })
|
||||
named.id = tostring(obj)
|
||||
elseif obj.name ~= nil then
|
||||
-- object has name attribute → just create a copy of the object
|
||||
add_missing_entries(obj, named)
|
||||
named.id = pandoc.utils.stringify(named.id or named.name)
|
||||
elseif next(obj) and next(obj, next(obj)) == nil then
|
||||
-- Single-entry table. The entry's key is taken as the name, the value
|
||||
-- contains the attributes.
|
||||
key, attribs = next(obj)
|
||||
if type(attribs) == "string" or type(attribs) == "Inlines" then
|
||||
named.name = attribs
|
||||
else
|
||||
add_missing_entries(attribs, named)
|
||||
named.name = named.name or pandoc.MetaInlines({ pandoc.Str(tostring(key)) })
|
||||
end
|
||||
named.id = named.id and pandoc.utils.stringify(named.id) or key
|
||||
else
|
||||
-- this is not a named object adhering to the usual conventions.
|
||||
error("not a named object: " .. tostring(obj))
|
||||
end
|
||||
return named
|
||||
end
|
||||
|
||||
--- Resolve affiliations placeholders to full named objects
|
||||
local function resolve_affiliations(affiliations, known_affiliations)
|
||||
local unresolved_affiliations
|
||||
if affiliations == nil then
|
||||
unresolved_affiliations = {}
|
||||
elseif type(affiliations) == "string" or type(affiliations) == "number" then
|
||||
unresolved_affiliations = { affiliations }
|
||||
else
|
||||
unresolved_affiliations = affiliations
|
||||
end
|
||||
|
||||
local result = List:new({})
|
||||
for i, inst in ipairs(unresolved_affiliations) do
|
||||
result[i] = known_affiliations[tonumber(inst)]
|
||||
or known_affiliations:find_if(has_id(pandoc.utils.stringify(inst)))
|
||||
or to_named_object(inst)
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
--- Insert a named object into a list; if an object of the same name exists
|
||||
-- already, add all properties only present in the new object to the existing
|
||||
-- item.
|
||||
function merge_on_id(list, namedObj)
|
||||
local elem, idx = list:find_if(has_id(namedObj.id))
|
||||
local res = elem and add_missing_entries(namedObj, elem) or namedObj
|
||||
local obj_idx = idx or (#list + 1)
|
||||
-- return res, obj_idx
|
||||
list[obj_idx] = res
|
||||
return res, #list
|
||||
end
|
||||
|
||||
--- Flatten a list of lists.
|
||||
local function flatten(lists)
|
||||
local result = List:new({})
|
||||
for _, lst in ipairs(lists) do
|
||||
result:extend(lst)
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
--- Canonicalize authors and affiliations
|
||||
local function canonicalize(raw_author, raw_affiliations)
|
||||
local affiliations = ensure_list(raw_affiliations):map(to_named_object)
|
||||
local authors = ensure_list(raw_author):map(to_named_object)
|
||||
|
||||
for _, author in ipairs(authors) do
|
||||
author.affiliations = resolve_affiliations(ensure_list(author.affiliations), affiliations)
|
||||
end
|
||||
|
||||
-- Merge affiliations defined in author objects with those defined in the
|
||||
-- top-level list.
|
||||
local author_insts = flatten(authors:map(function(x)
|
||||
return x.affiliations
|
||||
end))
|
||||
for _, inst in ipairs(author_insts) do
|
||||
merge_on_id(affiliations, inst)
|
||||
end
|
||||
|
||||
-- Add list indices to affiliations for numbering and reference purposes
|
||||
for idx, inst in ipairs(affiliations) do
|
||||
inst.index = pandoc.MetaInlines({ pandoc.Str(tostring(idx)) })
|
||||
end
|
||||
|
||||
-- replace affiliations with their indices
|
||||
local to_index = function(inst)
|
||||
return tostring(select(2, affiliations:find_if(has_id(inst.id))))
|
||||
end
|
||||
for _, author in ipairs(authors) do
|
||||
author.affiliations = pandoc.MetaList(author.affiliations:map(to_index))
|
||||
end
|
||||
|
||||
return authors, affiliations
|
||||
end
|
||||
|
||||
return {
|
||||
{
|
||||
Meta = function(meta)
|
||||
meta.author, meta.affiliations = canonicalize(meta.author, meta.affiliations)
|
||||
return meta
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
title: LaTeX Environment
|
||||
author: RStudio, PBC
|
||||
version: 1.1.0
|
||||
quarto-required: ">=1.2.198"
|
||||
contributes:
|
||||
filters:
|
||||
- latex-environment.lua
|
||||
format:
|
||||
pdf: default
|
||||
@@ -0,0 +1,133 @@
|
||||
-- environment.lua
|
||||
-- Copyright (C) 2020 by RStudio, PBC
|
||||
|
||||
local classEnvironments = pandoc.MetaMap({})
|
||||
local classCommands = pandoc.MetaMap({})
|
||||
|
||||
-- helper that identifies arrays
|
||||
local function tisarray(t)
|
||||
local i = 0
|
||||
for _ in pairs(t) do
|
||||
i = i + 1
|
||||
if t[i] == nil then return false end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
-- reads the environments
|
||||
local function readEnvironments(meta)
|
||||
local env = meta['environments']
|
||||
if env ~= nil then
|
||||
if tisarray(env) then
|
||||
-- read an array of strings
|
||||
for i, v in ipairs(env) do
|
||||
local value = pandoc.utils.stringify(v)
|
||||
classEnvironments[value] = value
|
||||
end
|
||||
else
|
||||
-- read key value pairs
|
||||
for k, v in pairs(env) do
|
||||
local key = pandoc.utils.stringify(k)
|
||||
local value = pandoc.utils.stringify(v)
|
||||
classEnvironments[key] = value
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function readCommands(meta)
|
||||
local env = meta['commands']
|
||||
if env ~= nil then
|
||||
if tisarray(env) then
|
||||
-- read an array of strings
|
||||
for i, v in ipairs(env) do
|
||||
local value = pandoc.utils.stringify(v)
|
||||
classCommands[value] = value
|
||||
end
|
||||
else
|
||||
-- read key value pairs
|
||||
for k, v in pairs(env) do
|
||||
local key = pandoc.utils.stringify(k)
|
||||
local value = pandoc.utils.stringify(v)
|
||||
classCommands[key] = value
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function readEnvsAndCommands(meta)
|
||||
readEnvironments(meta)
|
||||
readCommands(meta)
|
||||
end
|
||||
|
||||
-- use the environments from metadata to
|
||||
-- emit a custom environment for latex
|
||||
local function writeEnvironments(divEl)
|
||||
if quarto.doc.is_format("latex") then
|
||||
for k, v in pairs(classEnvironments) do
|
||||
if divEl.attr.classes:includes(k) then
|
||||
-- process this into a latex environment
|
||||
local beginEnv = '\\begin' .. '{' .. v .. '}'
|
||||
local endEnv = '\n\\end{' .. v .. '}'
|
||||
|
||||
-- check if custom options or arguments are present
|
||||
-- and add them to the environment accordingly
|
||||
local opts = divEl.attr.attributes['options']
|
||||
if opts then
|
||||
beginEnv = beginEnv .. '[' .. opts .. ']'
|
||||
end
|
||||
|
||||
local args = divEl.attr.attributes['arguments']
|
||||
if args then
|
||||
beginEnv = beginEnv .. '{' .. args .. '}'
|
||||
end
|
||||
|
||||
-- if the first and last div blocks are paragraphs then we can
|
||||
-- bring the environment begin/end closer to the content
|
||||
if divEl.content[1].t == "Para" and divEl.content[#divEl.content].t == "Para" then
|
||||
table.insert(divEl.content[1].content, 1, pandoc.RawInline('tex', beginEnv .. "\n"))
|
||||
table.insert(divEl.content[#divEl.content].content, pandoc.RawInline('tex', "\n" .. endEnv))
|
||||
else
|
||||
table.insert(divEl.content, 1, pandoc.RawBlock('tex', beginEnv))
|
||||
table.insert(divEl.content, pandoc.RawBlock('tex', endEnv))
|
||||
end
|
||||
return divEl
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- use the environments from metadata to
|
||||
-- emit a custom environment for latex
|
||||
local function writeCommands(spanEl)
|
||||
if quarto.doc.is_format("latex") then
|
||||
for k, v in pairs(classCommands) do
|
||||
if spanEl.attr.classes:includes(k) then
|
||||
|
||||
-- resolve the begin command
|
||||
local beginCommand = pandoc.RawInline('latex', '\\' .. pandoc.utils.stringify(v) .. '{')
|
||||
local opts = spanEl.attr.attributes['options']
|
||||
if opts then
|
||||
beginCommand = pandoc.RawInline('latex', '\\' .. pandoc.utils.stringify(v) .. '[' .. opts .. ']{')
|
||||
end
|
||||
|
||||
-- the end command
|
||||
local endCommand = pandoc.RawInline('latex', '}')
|
||||
|
||||
-- attach the raw inlines to the span contents
|
||||
local result = spanEl.content
|
||||
table.insert(result, 1, beginCommand)
|
||||
table.insert(result, endCommand)
|
||||
|
||||
return result
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Run in two passes so we process metadata
|
||||
-- and then process the divs
|
||||
return {
|
||||
{ Meta = readEnvsAndCommands },
|
||||
{ Div = writeEnvironments, Span = writeCommands }
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
title: Elsevier Journal Format
|
||||
author: Charles Teague
|
||||
version: 0.2.0
|
||||
quarto-required: ">=1.2.198"
|
||||
contributes:
|
||||
formats:
|
||||
common:
|
||||
date-format: full
|
||||
filters:
|
||||
- elsevier.lua
|
||||
pdf:
|
||||
documentclass: elsarticle
|
||||
template-partials: ["partials/before-body.tex", "partials/title.tex"]
|
||||
format-resources:
|
||||
- elsarticle.cls
|
||||
cite-method: natbib
|
||||
number-sections: true
|
||||
html:
|
||||
theme: styles/elsevier.scss
|
||||
+1598
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1509
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,239 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="never" default-locale="en-US">
|
||||
<info>
|
||||
<title>Elsevier - Harvard (with titles)</title>
|
||||
<id>http://www.zotero.org/styles/elsevier-harvard</id>
|
||||
<link href="http://www.zotero.org/styles/elsevier-harvard" rel="self"/>
|
||||
<link href="http://www.zotero.org/styles/ecology-letters" rel="template"/>
|
||||
<link href="http://www.elsevier.com/journals/biological-conservation/0006-3207/guide-for-authors#68000" rel="documentation"/>
|
||||
<author>
|
||||
<name>David Kaplan</name>
|
||||
<email>david.kaplan@ird.fr</email>
|
||||
</author>
|
||||
<contributor>
|
||||
<name>Simon Kornblith</name>
|
||||
<email>simon@simonster.com</email>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Bruce D'Arcus</name>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Curtis M. Humphrey</name>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Richard Karnesky</name>
|
||||
<email>karnesky+zotero@gmail.com</email>
|
||||
<uri>http://arc.nucapt.northwestern.edu/Richard_Karnesky</uri>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Sebastian Karcher</name>
|
||||
</contributor>
|
||||
<category citation-format="author-date"/>
|
||||
<category field="biology"/>
|
||||
<category field="generic-base"/>
|
||||
<updated>2019-01-22T15:57:12+00:00</updated>
|
||||
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
|
||||
</info>
|
||||
<macro name="container">
|
||||
<choose>
|
||||
<if type="chapter paper-conference" match="any">
|
||||
<text term="in" prefix=", " suffix=": "/>
|
||||
<names variable="editor translator" delimiter=", " suffix=", ">
|
||||
<name name-as-sort-order="all" sort-separator=", " initialize-with="." delimiter=", " delimiter-precedes-last="always"/>
|
||||
<label form="short" text-case="capitalize-first" prefix=" (" suffix=")"/>
|
||||
</names>
|
||||
<group delimiter=", ">
|
||||
<text variable="container-title" text-case="title"/>
|
||||
<text variable="collection-title" text-case="title"/>
|
||||
</group>
|
||||
</if>
|
||||
<else-if type="bill book graphic legal_case legislation motion_picture report song" match="any">
|
||||
<group prefix=", " delimiter=", ">
|
||||
<text variable="container-title"/>
|
||||
<text variable="collection-title"/>
|
||||
</group>
|
||||
</else-if>
|
||||
<else>
|
||||
<group prefix=". " delimiter=", ">
|
||||
<text variable="container-title" form="short"/>
|
||||
<text variable="collection-title"/>
|
||||
</group>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="author">
|
||||
<names variable="author">
|
||||
<name name-as-sort-order="all" sort-separator=", " initialize-with="." delimiter=", " delimiter-precedes-last="always"/>
|
||||
<label form="short" prefix=" (" suffix=")" text-case="capitalize-first"/>
|
||||
<substitute>
|
||||
<names variable="editor"/>
|
||||
<names variable="translator"/>
|
||||
<text macro="title"/>
|
||||
</substitute>
|
||||
</names>
|
||||
</macro>
|
||||
<macro name="author-short">
|
||||
<names variable="author">
|
||||
<name form="short" and="text" delimiter=", " initialize-with=". "/>
|
||||
<substitute>
|
||||
<names variable="editor"/>
|
||||
<names variable="translator"/>
|
||||
<choose>
|
||||
<if type="bill book graphic legal_case legislation motion_picture report song" match="any">
|
||||
<text variable="title" form="short" font-style="italic"/>
|
||||
</if>
|
||||
<else>
|
||||
<text variable="title" form="short" quotes="true"/>
|
||||
</else>
|
||||
</choose>
|
||||
</substitute>
|
||||
</names>
|
||||
</macro>
|
||||
<macro name="access">
|
||||
<choose>
|
||||
<if variable="DOI">
|
||||
<text variable="DOI" prefix="https://doi.org/"/>
|
||||
</if>
|
||||
<else-if type="webpage post-weblog" match="any">
|
||||
<group delimiter=" ">
|
||||
<text value="URL"/>
|
||||
<text variable="URL"/>
|
||||
<group prefix="(" suffix=").">
|
||||
<text term="accessed" suffix=" "/>
|
||||
<date variable="accessed">
|
||||
<date-part name="month" form="numeric" suffix="."/>
|
||||
<date-part name="day" suffix="."/>
|
||||
<date-part name="year" form="short"/>
|
||||
</date>
|
||||
</group>
|
||||
</group>
|
||||
</else-if>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="title">
|
||||
<choose>
|
||||
<if type="report thesis" match="any">
|
||||
<text variable="title"/>
|
||||
<group prefix=" (" suffix=")" delimiter=" ">
|
||||
<text variable="genre"/>
|
||||
<text variable="number" prefix="No. "/>
|
||||
</group>
|
||||
</if>
|
||||
<else-if type="bill book graphic legal_case legislation motion_picture report song speech" match="any">
|
||||
<text variable="title"/>
|
||||
<text macro="edition" prefix=", "/>
|
||||
</else-if>
|
||||
<else-if type="webpage">
|
||||
<text variable="title"/>
|
||||
<text value="WWW Document" prefix=" [" suffix="]"/>
|
||||
</else-if>
|
||||
<else>
|
||||
<text variable="title"/>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="publisher">
|
||||
<group delimiter=", ">
|
||||
<text variable="publisher"/>
|
||||
<text variable="publisher-place"/>
|
||||
</group>
|
||||
</macro>
|
||||
<macro name="event">
|
||||
<choose>
|
||||
<if variable="event">
|
||||
<text term="presented at" text-case="capitalize-first" suffix=" "/>
|
||||
<text variable="event"/>
|
||||
</if>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="issued">
|
||||
<choose>
|
||||
<if variable="issued">
|
||||
<date variable="issued">
|
||||
<date-part name="year"/>
|
||||
</date>
|
||||
</if>
|
||||
<else>
|
||||
<text term="no date" form="short"/>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="edition">
|
||||
<group delimiter=" ">
|
||||
<choose>
|
||||
<if is-numeric="edition">
|
||||
<number variable="edition" form="ordinal"/>
|
||||
</if>
|
||||
<else>
|
||||
<text variable="edition" suffix="."/>
|
||||
</else>
|
||||
</choose>
|
||||
<text value="ed"/>
|
||||
</group>
|
||||
</macro>
|
||||
<macro name="locators">
|
||||
<choose>
|
||||
<if type="article-journal article-magazine article-newspaper" match="any">
|
||||
<group prefix=" " delimiter=", ">
|
||||
<group>
|
||||
<text variable="volume"/>
|
||||
</group>
|
||||
<text variable="page"/>
|
||||
</group>
|
||||
</if>
|
||||
<else-if type="bill book graphic legal_case legislation motion_picture report song thesis" match="any">
|
||||
<group delimiter=", " prefix=". ">
|
||||
<text macro="event"/>
|
||||
<text macro="publisher"/>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="chapter paper-conference" match="any">
|
||||
<group delimiter=", " prefix=". ">
|
||||
<text macro="event"/>
|
||||
<text macro="publisher"/>
|
||||
<group>
|
||||
<label variable="page" form="short" suffix=" "/>
|
||||
<text variable="page"/>
|
||||
</group>
|
||||
</group>
|
||||
</else-if>
|
||||
<else-if type="patent">
|
||||
<text variable="number" prefix=". "/>
|
||||
</else-if>
|
||||
</choose>
|
||||
</macro>
|
||||
<citation et-al-min="3" et-al-use-first="1" disambiguate-add-givenname="true" disambiguate-add-year-suffix="true" collapse="year" cite-group-delimiter=", ">
|
||||
<sort>
|
||||
<key macro="author"/>
|
||||
<key macro="issued" sort="descending"/>
|
||||
</sort>
|
||||
<layout prefix="(" suffix=")" delimiter="; ">
|
||||
<group delimiter=", ">
|
||||
<text macro="author-short"/>
|
||||
<text macro="issued"/>
|
||||
<group delimiter=" ">
|
||||
<label variable="locator" form="short"/>
|
||||
<text variable="locator"/>
|
||||
</group>
|
||||
</group>
|
||||
</layout>
|
||||
</citation>
|
||||
<bibliography hanging-indent="true" entry-spacing="0" line-spacing="1">
|
||||
<sort>
|
||||
<key macro="author"/>
|
||||
<key macro="issued" sort="descending"/>
|
||||
</sort>
|
||||
<layout>
|
||||
<group suffix=".">
|
||||
<text macro="author" suffix=","/>
|
||||
<text macro="issued" prefix=" "/>
|
||||
<group prefix=". ">
|
||||
<text macro="title"/>
|
||||
<text macro="container"/>
|
||||
<text macro="locators"/>
|
||||
</group>
|
||||
</group>
|
||||
<text macro="access" prefix=". "/>
|
||||
</layout>
|
||||
</bibliography>
|
||||
</style>
|
||||
+1382
File diff suppressed because it is too large
Load Diff
+166
@@ -0,0 +1,166 @@
|
||||
-- cite style constants
|
||||
local kBibStyleDefault = 'number'
|
||||
local kBibStyles = { 'number', 'numbername', 'authoryear' }
|
||||
local kBibStyleAuthYr = 'elsarticle-harv'
|
||||
local kBibStyleNumber = 'elsarticle-num'
|
||||
local kBibStyleNumberName = 'elsarticle-num-names'
|
||||
local kBibStyleUnknown = kBibStyleNumberName
|
||||
|
||||
-- layout and style
|
||||
local kFormatting = pandoc.List({ 'preprint', 'review', 'doubleblind' })
|
||||
local kModels = pandoc.List({ '1p', '3p', '5p' })
|
||||
local kLayouts = pandoc.List({ 'onecolumn', 'twocolumn' })
|
||||
|
||||
|
||||
local function setBibStyle(meta, style)
|
||||
meta['biblio-style'] = style
|
||||
quarto.doc.add_format_resource('bib/' .. style .. '.bst')
|
||||
end
|
||||
|
||||
local function hasClassOption(meta, option)
|
||||
if meta['classoption'] == nil then
|
||||
return false
|
||||
end
|
||||
|
||||
for i, v in ipairs(meta['classoption']) do
|
||||
if v[1].text == option then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function addClassOption(meta, option)
|
||||
if meta['classoption'] == nil then
|
||||
meta['classoption'] = pandoc.List({})
|
||||
end
|
||||
|
||||
if not hasClassOption(meta, option) then
|
||||
meta['classoption']:insert({ pandoc.Str(option) })
|
||||
end
|
||||
end
|
||||
|
||||
local function printList(list)
|
||||
local result = ''
|
||||
local sep = ''
|
||||
for i, v in ipairs(list) do
|
||||
result = result .. sep .. v
|
||||
sep = ', '
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
local bibstyle = kBibStyleDefault
|
||||
|
||||
return {
|
||||
{
|
||||
Meta = function(meta)
|
||||
-- If citeproc is being used, switch to the proper
|
||||
-- CSL file
|
||||
if quarto.doc.cite_method() == 'citeproc' and meta['csl'] == nil then
|
||||
meta['csl'] = quarto.utils.resolve_path('bib/elsevier-harvard.csl')
|
||||
end
|
||||
|
||||
if quarto.doc.is_format("pdf") then
|
||||
|
||||
-- read the journal settings
|
||||
local journal = meta['journal']
|
||||
local citestyle = nil
|
||||
local formatting = nil
|
||||
local model = nil
|
||||
local layout = nil
|
||||
local name = nil
|
||||
|
||||
if journal ~= nil then
|
||||
citestyle = journal['cite-style']
|
||||
formatting = journal['formatting']
|
||||
model = journal['model']
|
||||
layout = journal['layout']
|
||||
name = journal['name']
|
||||
end
|
||||
|
||||
-- process the site style
|
||||
if citestyle ~= nil then
|
||||
citestyle = pandoc.utils.stringify(citestyle)
|
||||
else
|
||||
citestyle = kBibStyleDefault
|
||||
end
|
||||
|
||||
-- capture the bibstyle
|
||||
bibstyle = citestyle
|
||||
if citestyle == 'numbername' then
|
||||
setBibStyle(meta, kBibStyleNumberName)
|
||||
addClassOption(meta, 'number')
|
||||
elseif citestyle == 'authoryear' then
|
||||
setBibStyle(meta, kBibStyleAuthYr)
|
||||
addClassOption(meta, 'authoryear')
|
||||
elseif citestyle == 'number' then
|
||||
setBibStyle(meta, kBibStyleNumber)
|
||||
addClassOption(meta, 'number')
|
||||
else
|
||||
error("Unknown journal cite-style " .. citestyle .. "\nPlease use one of " .. printList(kBibStyles))
|
||||
setBibStyle(meta, kBibStyleUnknown)
|
||||
end
|
||||
|
||||
-- process the layout
|
||||
if formatting ~= nil then
|
||||
formatting = pandoc.utils.stringify(formatting)
|
||||
if kFormatting:includes(formatting) then
|
||||
addClassOption(meta, formatting)
|
||||
else
|
||||
error("Unknown journal formatting " .. formatting .. "\nPlease use one of " .. printList(kFormatting))
|
||||
end
|
||||
end
|
||||
|
||||
-- process the type
|
||||
if model ~= nil then
|
||||
model = pandoc.utils.stringify(model)
|
||||
if kModels:includes(model) then
|
||||
addClassOption(meta, model)
|
||||
else
|
||||
error("Unknown journal model " .. model .. "\nPlease use one of " .. printList(kModels))
|
||||
end
|
||||
end
|
||||
|
||||
-- 5p models should be two column always
|
||||
if model == '5p' and layout == nil then
|
||||
layout = 'twocolumn'
|
||||
end
|
||||
|
||||
-- process the type
|
||||
if layout ~= nil then
|
||||
layout = pandoc.utils.stringify(layout)
|
||||
if kLayouts:includes(layout) then
|
||||
addClassOption(meta, layout)
|
||||
if layout == 'twocolumn' then
|
||||
quarto.doc.include_file('in-header', 'partials/_two-column-longtable.tex')
|
||||
end
|
||||
else
|
||||
error("Unknown journal layout " .. layout .. "\nPlease use one of " .. printList(kLayouts))
|
||||
end
|
||||
end
|
||||
|
||||
-- process the name
|
||||
if name ~= nil then
|
||||
name = pandoc.utils.stringify(name)
|
||||
quarto.doc.include_text('in-header', '\\journal{' .. name .. '}')
|
||||
end
|
||||
end
|
||||
|
||||
return meta
|
||||
end
|
||||
},
|
||||
{
|
||||
Cite = function(cite)
|
||||
if bibstyle == 'number' then
|
||||
-- If we are numbered, force citations into normal mode
|
||||
-- as the author styles don't make sense
|
||||
for i, v in ipairs(cite.citations) do
|
||||
v.mode = 'NormalCitation'
|
||||
end
|
||||
return cite
|
||||
end
|
||||
end,
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
\usepackage{float}
|
||||
\makeatletter
|
||||
\let\oldlt\longtable
|
||||
\let\endoldlt\endlongtable
|
||||
\def\longtable{\@ifnextchar[\longtable@i \longtable@ii}
|
||||
\def\longtable@i[#1]{\begin{figure}[H]
|
||||
\onecolumn
|
||||
\begin{minipage}{0.5\textwidth}
|
||||
\oldlt[#1]
|
||||
}
|
||||
\def\longtable@ii{\begin{figure}[H]
|
||||
\onecolumn
|
||||
\begin{minipage}{0.5\textwidth}
|
||||
\oldlt
|
||||
}
|
||||
\def\endlongtable{\endoldlt
|
||||
\end{minipage}
|
||||
\twocolumn
|
||||
\end{figure}}
|
||||
\makeatother
|
||||
@@ -0,0 +1,41 @@
|
||||
\begin{frontmatter}
|
||||
\title{$title$ $if(subtitle)$ \\\large{$subtitle$} $endif$ }
|
||||
|
||||
$for(by-author)$\author[$for(by-author.affiliations)$$it.number$$sep$,$endfor$]{$by-author.name.literal$%
|
||||
$if(by-author.attributes.corresponding)$\corref{cor1}$endif$%
|
||||
$if(by-author.note.text)$\fnref{fn$by-author.note.number$}$endif$}
|
||||
$if(by-author.email)$ \ead{$by-author.email$} $endif$
|
||||
$endfor$
|
||||
$for(by-affiliation)$
|
||||
\affiliation[$it.number$]{organization={$it.name$},$if(it.address)$addressline={$it.address$}$endif$$if(it.city)$$if(it.address)$,$endif$city={$it.city$}$endif$$if(it.country)$$if(it.city)$,$elseif(it.address)$,$endif$country={$it.country$}$endif$$if(it.postal-code)$$if(it.country)$,$elseif(it.city)$,$elseif(it.address)$,$endif$postcode={$it.postal-code$}$endif$}
|
||||
$endfor$
|
||||
|
||||
\cortext[cor1]{Corresponding author}
|
||||
$for(by-author)$
|
||||
$if(by-author.note.text)$\fntext[fn$by-author.note.number$]{$by-author.note.text$}$endif$
|
||||
$endfor$
|
||||
|
||||
$if(abstract)$
|
||||
\begin{abstract}
|
||||
$abstract$
|
||||
\end{abstract}
|
||||
$endif$
|
||||
|
||||
$if(journal.graphical-abstract)$\begin{graphicalabstract}
|
||||
$journal.graphical-abstract$
|
||||
\end{graphicalabstract}
|
||||
$endif$
|
||||
|
||||
$if(journal.highlights)$\begin{highlights}
|
||||
$for(journal.highlights)$\item $it$$endfor$
|
||||
\end{highlights}
|
||||
$endif$
|
||||
|
||||
$if(keywords)$
|
||||
\begin{keyword}
|
||||
$for(keywords/allbutlast)$$keywords$ \sep $endfor$
|
||||
$for(keywords/last)$$keywords$$endfor$
|
||||
\end{keyword}
|
||||
$endif$
|
||||
\end{frontmatter}
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
\usepackage{enumitem}
|
||||
\usepackage{fontspec}
|
||||
\usepackage{float}
|
||||
\usepackage[normalem]{ulem}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{nameref} %needed by zref-xr
|
||||
\usepackage{zref-xr,zref-hyperref,zref-user}
|
||||
\usepackage{xr-hyper}
|
||||
|
||||
|
||||
\usepackage{adjustbox}
|
||||
% \usepackage{xcolor}
|
||||
\usepackage{mdframed}
|
||||
\newmdenv[topline=false,
|
||||
leftline=true,
|
||||
bottomline=false,
|
||||
rightline=false,
|
||||
linewidth=3pt,
|
||||
%backgroundcolor=lightgray,
|
||||
linecolor=gray!30,
|
||||
backgroundcolor=gray!5,
|
||||
skipabove=\topsep,
|
||||
skipbelow=\topsep,
|
||||
leftmargin=0pt,
|
||||
rightmargin=0pt,
|
||||
innertopmargin=0pt,
|
||||
innerbottommargin=0pt
|
||||
]{refquote}
|
||||
\newmdenv[topline=false,
|
||||
leftline=true,
|
||||
bottomline=false,
|
||||
rightline=false,
|
||||
linewidth=3pt,
|
||||
%backgroundcolor=lightgray,
|
||||
backgroundcolor=red!3!white,
|
||||
linecolor=red!30!white,
|
||||
skipabove=\topsep,
|
||||
skipbelow=\topsep,
|
||||
leftmargin=0pt,
|
||||
rightmargin=0pt,
|
||||
innertopmargin=10pt,
|
||||
innerbottommargin=10pt
|
||||
]{question}
|
||||
% setup hyperlink for page and line number
|
||||
\def\msname{MS}
|
||||
\def\smname{SM}
|
||||
\setenumerate{labelsep=*, leftmargin=1.0pc}
|
||||
%\zexternaldocument*{ManuscriptNew\veraa}
|
||||
\zexternaldocument*{\msname}
|
||||
\zexternaldocument*{\smname}
|
||||
\newcommand{\hlabel}[1]{\label{#1}\hypertarget{#1}{
|
||||
\linelabel{line:#1}}}
|
||||
%\externaldocument[si-]{\smname\veraa}[\smname\veraa.pdf]
|
||||
\makeatletter
|
||||
\newcommand{\clab}[2][]{
|
||||
\protected@write\@auxout{\let\clab\@secondoftwo}{
|
||||
\string\newlabel{r:#1}{{#2}{}}}%
|
||||
\hlabel{#1}#2\hlabel{#1end}}
|
||||
\makeatother
|
||||
\newcommand{\zhypera}[1]{\href[pdfnewwindow]{\msname.pdf\##1}{\\[1ex]\textbf{Page \zpageref{#1}, Line
|
||||
\zref{line:#1}--\zref{line:#1end}:}\\}}
|
||||
\newcommand{\cref}[1]{\begin{refquote}\zhypera{#1}{\zref{r:#1}}\\[-0.5ex]\end{refquote}}
|
||||
% \newenvironment{ra}[1][\unskip]{\par \noindent \\[-1ex] \textbf{Response/Action:}\par\bf}{\ \\}
|
||||
\renewenvironment{quote}{\begin{question}}{\end{question}}
|
||||
% \renewenvironment{verbatim}{\begin{ra}}{\end{ra}}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
\setlength{\parindent}{6pt}
|
||||
@@ -0,0 +1 @@
|
||||
/*-- scss:defaults --*/
|
||||
Reference in New Issue
Block a user