适配为文章模版

This commit is contained in:
2023-11-10 13:31:46 +08:00
parent db71ec6afa
commit 4c17581235
68 changed files with 15984 additions and 296 deletions
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>
+240
View File
@@ -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}
+426
View File
@@ -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}
+239
View File
@@ -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
+432
View File
@@ -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}
+181
View File
@@ -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.
+6
View File
@@ -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: © 20172021 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,
},
}
+9
View File
@@ -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
View File
@@ -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
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
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>
File diff suppressed because it is too large Load Diff
+166
View File
@@ -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}
+66
View File
@@ -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}}
+1
View File
@@ -0,0 +1 @@
\setlength{\parindent}{6pt}
@@ -0,0 +1 @@
/*-- scss:defaults --*/