% % \iffalse % % The first part is a comment to the reader(s) of `achemso.dtx'. % % achemso.dtx Version 1.0, June 1, 1998 % (c) 1996-98 by Mats Dahlgren (matsd@sssk.se) % % Please see the information in file `achemso.ins' on how you % may use and (re-)distribute this file. Run LaTeX on the file % `achemso.ins' to get a .sty file, .bst files, and a % template list file. % % This file may NOT be distributed if not accompanied by 'achemso.ins'. %<*driver> \documentclass[a4paper]{ltxdoc} \textwidth=150mm \textheight=210mm \topmargin=0mm \oddsidemargin=5mm \evensidemargin=5mm \begin{document} \DocInput{achemso.dtx} \end{document} % % \fi % % \CheckSum{142} % % \def\filename{achemso.dtx} % \def\fileversion{1.0} % \def\filedate{1998/06/01}\def\docdate{\filedate} % \def\BibTeX{\textrm{B\kern-.05em\textsc{i\kern-.025em b}\kern-.08em % T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} % \MakeShortVerb{\|} % \date{\docdate} % \title{\textsf{achemso}\\ % -- A \BibTeX{} style for Chemistry Publications\thanks{This % document describes \textsf{achemso} v.\fileversion{} and was last % updated on \docdate .}} % \author{Mats Dahlgren\footnote{Email:\ \texttt{matsd@sssk.se}\ \ \ % Web:\ \texttt{http://www.homenet.se/matsd/}}} % \maketitle % \begin{abstract} % The \textsf{achemso} package provides a \BibTeX{} style in % accordance with % the requirements of the journals of The American Chemical Society. % It consists of both a \BibTeX{} style file and a \LaTeX{} % package file. Also provided, is a \BibTeX{} style file to % be used for bibliography data base listings via an option to % the \LaTeX{} package \textsf{achemso}. % \\ This file and the package: Copyright \copyright\ 1995-1998 by Mats % Dahlgren. All rights reserved. % \end{abstract} % % \section{Introduction} % % Since the journals of The American Chemical Society (ACS) do no accept % manuscripts which are using the standard \BibTeX{} formats, the need % for such a style package has been around for a while. I do % sincerely hope that what I have accomplished with this package is % $(i)$~that using \LaTeX{} and \BibTeX{} should be as easy as any % other manuscript preparation system when preparing manuscripts for % an ACS journal; $(ii)$~that the package is doing this correctly. % The reference handeling in the refernece list and in the text is % aimed to be in accordance with the requirements of \textit{Accounts % of Chemical Research, Chemical Reviwes, Inorganic Chemistry, Journal % of the American Chemical Society, Journal of Chemical Information % and Computer Sciences, Journal of Medicinal Chemistry, Journal of % Organic Chemistry, The Journal of Physical Chemistry A \&\ B, Langmuir, % Macromolecules,} and \textit{Organometallics}. (All these journals % use the same reference format.) % % The package consists of two files, |achemso.dtx| and |achemso.ins|. % After running |achemso.ins| trough \LaTeX , you should also have the % files |achemso.bst|, |achemsol.bst|, |achemso.sty|, and |acslist.tex|. % The latter is a \LaTeX{} input file (template file) to provide % listing of a \BibTeX{} data base. The \BibTeX{} style files are % the two |.bst| files. This very documentation was % obtained by running \LaTeX{} on |achemso.dtx|. % % However, there is already a \LaTeX{} 2.09 and % \BibTeX{} style package called \textsf{acsarticle} and % |acs.bst|, which are not ``ACS'' as in `American Chemical % Society' (rather, this package is % formatting the output according to the instructions of % \textit{Advances in Control Systems}). Hence, \textit{this} % new package had to be given another name. The name of choice % was then \textsf{achemso}, which is made from the words % ``\textit{A}merican \textit{Chem}ical \textit{So}ciety''. % % The \textsf{achemso} package has been tested with \LaTeXe{} of % 1997/12/01 patch level 1 running \TeX{} 3.14159 using MiK\TeX % 1.09 containing \BibTeX{} version 0.99c, all under Win95. % Please send bug reports % (see below), corrections, additions, suggestions, % \textit{etc.}\ to me at \texttt{matsd@sssk.se}. % % The present version of the package is~\fileversion{}, of % \filedate . It differs from previous versions in a change of % the handeling of |phdthesis|, |mastersthesis|, and |book|. % Version~0.1 produced an error for these entry types if the % optional field |institution| was empty. This bug has been % removed.\footnote{Thanks to Johan Fr\"oberg % (\texttt{emgion@physchem.kth.se}) for bringing my attention % to the problem.} In the |book| entry type, there was a % comma which should be a semicolon. With version~0.3, Donald % Arsenau's package \textsf{overcite} is loaded, making % collapsing and sorting of references automatic. Version~0.4 % was modified to work better with the December 1995 release of % \LaTeXe{}; it also has the |.bst| files incorporated in % |achemso.dtx|. Version~1.0 was issued due to some new pre-defined % journal named and enhanced documentation. % % This userguide is also available in \texttt{.pdf}-format % on the internet. It is found from my \LaTeX\ web page: % \texttt{http://www.homenet.se/matsd/latex/} % % \subsection{Note} % This is not an official American Chemical Society package. % Therefore, some items % in the reference list may not come out perfectly according to the % ACS style. There is no guarantee that the predefined journal % abbreviations are correct. % % \section{The \LaTeX{} Package} % % To work properly, a call to the \textsf{achemso} package must be % done in a |\usepackge| command in the \LaTeX{} input file. % The \textsf{achemso} package can take three options, namely |note|, % |list|, and |number|. The |\bibliographystyle| command % required for a document with a bibliography is included in % the \LaTeX{} package file. The package options can be used % together in any combination. Also, the \textsf{overcite} package % must be installed on the system for \textsf{achemso} to work % properly. % % The \textsf{achemso} package redefines the |bibliography| % environment to start a new page. If the |note| option is % used, the heading of the reference list will read % ``References and Notes'' instead of ``References'', which % is the default. (If used together with the \textsf{babel} % package, there may be strange results. This is a minor % problem since the ACS only accepts manuscripts in English.) % % In the text, references are printed as superscripts with % numbers. If there are more than two consecutive numbers % at one occurence, the numbers will appear ``collapsed'', % that is like this$^{11-14}$ rather than.$^{11,12,13,14}$ % The citations can be given in any order, thanks to the % sorting done by the \textsf{overcite} package, which is % loaded by the \textsf{achemso} package. % If only the reference % number is desired, such as in ``\ldots{} see reference % 13.'', the command |\citenum{|\textit{key}|}| can be used. % |\citenum| emits only the numeral of the reference without % any formatting. % % \subsection{The \texttt{note} option}\label{noteoption} % \DescribeMacro{note} % The option |note| is to be used when there are notes (of % footnote-type) in the text. The text of these notes have % to be placed in a \BibTeX{} entry of the kind % |remark|\footnote{The term ``\texttt{note}'' is already % used for an entry field in \BibTeX .} (see also below). I % recommend a seperate |.bib|-file for the notes, which is % then called for in the |\bibliography|-command. In this % way, the notes will be sorted in automatically in the % proper place in the reference list, while they still are % easily kept out of the listings of the entire \BibTeX{} % data base. Also, the heading of the bibliography will % read ``References and Notes'' and not only ``References''. % % \subsection{The \texttt{list} option} % \DescribeMacro{list} % To produce a listing of the entire \BibTeX{} data base, use % the |list| option for the \textsf{achemso} package. It makes % use of another |.bst|-file, called |achemsol.bst|, which % is also included in the \textsf{achemso} package. % It only differs from |achemso.bst| in % that it adds the information of the field |annotate| to % every item in the list when present. |annotate| is an % optional field for all entry types. % % When usnig the |list| option, the \BibTeX{} keys will be % typesetted in a framed box in the left margin. This feature % is adapted from |showtags.sty| by Nelson H.\ F.\ Beebe % (\texttt{beebe@math.utah.edu}).\footnote{Many thanks to Nelson % H.\ F.\ Beebe for letting me incorporate his code into % \textsf{achemso}.} % % \DescribeMacro{\refin} % For use in the |annotate| field is a \LaTeX{} macro % |\refin| defined by |achemso.bst| and |achemsol.bst|. % This command takes one argument (normally text) which is % preceeded by the text ``\textbf{Referenced in: }''. % |\refin| is meant to facilitate in keeping track of in % which publication(s) the bibliography item has been cited. % Personally, I keep information in my data-base on in % which of my own publications I have cited the article (or % whatever) in question. It is for this purpouse the % |\refin| command exsists. % % \subsection{The \texttt{number} option} % \DescribeMacro{number} % If a section number is desired for the bibliography in a % document, the |number| option should be used with the % \textsf{achemso} package. The only difference with respect to % the default version is the adding of a section number to % the heading. (It makes use of |\section| rather than % |\section*| as the default.) % % \section{The \BibTeX{} listing file} % % To obtain a listing of a \BibTeX{} data base in an easy way, % only very minor changes are needed to the file % |acslist.tex|.\footnote{You must specify the name(s) of your % |.bib|-file(s).} When running \LaTeX{} on this file, you will % be provided with a complete listing of the data base as the % output, with the labels used in framed boxes to the left of % the data base entries. |acslist.tex| uses the |list| option % of the package file (surprise!). To get rid of the % sectioning heading in the data base listing, you can include % the following line in |acslist.tex|:\\ % | \renewcommand{\refname}{ }|\\ % % \section{The \BibTeX{} style} % % The |.bst|-files in the \textsf{achemso} package are based on the % standard \BibTeX{} style |unsrt.bst|. % % \subsection{Extra Entry Types} % \DescribeMacro{inpress}\DescribeMacro{submitted}\DescribeMacro{remark} % The \BibTeX{} style |achemso| defines three non-standard entry types, % |inpress|, |submitted|, and |remark|. The |inpress| and |submitted| % entries are intended for journal articles % which have not yet been published, but are ``in press'' or % ``submitted'', respectively. The |remark| entry type is to be % used to obtain notes intermixed in the reference list % (see also section~\ref{noteoption} above). % \par\clearpage % % \subsection{The Data Base Entries} % % This section explains which data base entry types are recognized by % |achemso| and which fields are required, optional, and ignored for % the different entries. Note that |achemso| is not as robust as many % other \BibTeX{} styles, and may in some cases not warn that a % required field is missing. The only way to detect this is to look % in the final bibliography listing, which for the incomplete entries % is likely to look strange. The following entries are % recognized:\\[\baselineskip] % \DeleteShortVerb{\|} % \hfill\begin{tabular}{|ll|} \hline % \MakeShortVerb{\|} % \textbf{Entry type} & \textbf{Entry fields} \\ \hline % |article| & \textsf{R:}~|author|, |journal|, |year|, % |volume|, |pages| \\ % & \textsf{O:}~|note| \\ \hline % |book| & \textsf{R:}~|author| or |editor|, |title| or % |booktitle|, |publisher|, |address|, |year| \\ % & \textsf{O:}~|volume|, |series|, |edition|, |note| \\ \hline % |booklet| & \textsf{R:}~|author|, |title|, |year| \\ % & \textsf{O:}~|howpublished|, |address|, |note| \\ \hline % |conference| & \textsf{R:}~|author|, |title|, |booktitle|, % |editor|, |publisher|, |address|, |year| \\ % & \textsf{O:}~|volume|, |edition|, |type|, |chapter|, |pages|, % |note| \\ \hline % |inbook| & \textsf{R:}~|author|, |title|, |booktitle|, |editor|, % |publisher|, |address|, |year| \\ % & \textsf{O:}~|volume|, |edition|, |type|, |chapter|, |pages|, % |note| \\ \hline % |incollection| & \textsf{R:}~|author|, |title|, |booktitle|, % |editor|, |publisher|, |address|, |year| \\ % & \textsf{O:}~|volume|, |edition|, |note| \\ \hline % |inpress| & \textsf{R:}~|author|, |journal| \\ % & \textsf{O:}~|note| \\ \hline % |inproceedings| & \textsf{R:}~|author|, |title|, |booktitle|, % |editor|, |publisher|, |address|, |year| \\ % & \textsf{O:}~|volume|, |edition|, |type|, |chapter|, |pages|, % |note| \\ \hline % |manual| & \textsf{R:}~|title| \\ % & \textsf{O:}~|author|, |organization|, |address|, |edition|, % |year|, |note| \\ \hline % |mastersthesis| & \textsf{R:}~|author|, |title|, |school|, |year| \\ % & \textsf{O:}~|institution|, % |note| \\ \hline % |misc| & \textsf{R:}~none \\ % & \textsf{O:}~|author|, |title|, |howpublished|, |year|, % |note| \\ \hline % |phdthesis| & \textsf{R:}~|author|, |title|, |school|, |year| \\ % & \textsf{O:}~|type|, % |institution|, |note| \\ \hline % |proceedings| & \textsf{R:}~|editor| or |organization|, |title| % or |booktitle|, |year| \\ % & \textsf{O:}~|volume|, |edition|, |publisher|, |address|, % |note| \\ \hline % |remark| & \textsf{R:}~|note| \\ % & \textsf{O:}~none \\ \hline % |submitted| & \textsf{R:}~|author|, |journal| \\ % & \textsf{O:}~|note| \\ \hline % |techreport| & \textsf{R:}~|author|, |title|, |institution| \\ % & \textsf{O:}~|type|, |number|, % |address|, |note| \\ \hline % |unpublished| & \textsf{R:}~|author | \\ % & \textsf{O:}~|year|, |note| \\ \hline % \end{tabular}\hfill\\ % \textsf{R:}~denotes required fields; \textsf{O:}~denotes optional % filelds.\\[\baselineskip] % The following fields are avaliable: |address|, |author|, |booktitle|, % |chapter|, |edition|, |editor|, |howpublished|, |institution|, % |journal|, |key|, |month|, |note|, |number|, |organization|, |pages|, % |publisher|, |school|, |series|, |title|, |type|, |volume|, |year|, % and |annotate|. All the fields have their general meanings. % All fields not specified above are ignored for that entry % type. % \par\clearpage % % \subsection{Predefined Journal Abbriviations} % % In the \textsf{achemso} package, some journal names are defined. % These journals are the journals of ACS, some other % frequently cited in Physical Chemsitry, and the ten % most cited according to \textit{Chemical Abstracs}. The predefined % ACS journal names are:\\[\baselineskip] % \DeleteShortVerb{\|} % \begin{tabular}{|lll|} \hline % \MakeShortVerb{\|} % Abbreviation & Appearance in list & Full journal name \\ \hline % |acchemr| & \textit{Acc.\ Chem.\ Res.} % & Accounts of Chemical Research\\ % |aacsa| & \textit{Adv.\ {ACS} Abstr.} & Advance ACS Abstracts \\ % |anchem| & \textit{Anal.\ Chem.} & Analytical Chemistry \\ % |bioch| & \textit{Biochemistry} & Biochemistry \\ % |bicoc| & \textit{Bioconj.\ Chem.} & (?) Bioconjugate Chemistry \\ % |bitech| & \textit{Biotechnol.\ Progr.} & (?) % Biotechnology Progress \\ % |chemeng| & \textit{Chem.\ Eng.\ News} & Chemical \&{} % Engineering News \\ % |chs| & \textit{Chem.\ Health Safety} & (?) Chemical % Health \&{} Safety \\ % |crt| & \textit{Chem.\ Res.\ Tox.} & (?) Chemical % Research in toxicology \\ % |chemrev| & \textit{Chem.\ Rev.} & Chemical Reviews \\ % |cmat| & \textit{Chem.\ Mater.} & Chemistry of Materials \\ % |chemtech| & \textit{{CHEMTECH}} & CHEMTECH \\ % |enfu| & \textit{Energy \&{} Fuels} & (?) Energy \&{} Fuels \\ % |envst| & \textit{Environ.\ Sci.\ Technol.} & % Environmental Science and Technology \\ % |iecf| & \textit{Ind.\ Eng.\ Chem.\ Fundam.} & % Industrial \&{} Engineering Chemistry \\ & & \hfill Fundamentals \\ % |iecpdd| & \textit{Ind.\ Eng.\ Chem.\ Proc.} & % Industrial \&{} Engineering Chemistry \\ & \hfill\textit{Des.\ Dev.} % & \hfill Process Design and Development \\ % |iecprd| & \textit{Ind.\ Eng.\ Chem.\ Prod.} & % Industrial \&{} Engineering Chemistry \\ &\hfill\textit{Res.\ Dev.} % & \hfill Product Research and Development \\ % |iecr| & \textit{Ind.\ Eng.\ Chem.\ Res.} & % Industrial \&{} Engineering Chemistry \\ & & \hfill Research \\ % |inor| & \textit{Inorg.\ Chem.} & Inorganic Chemistry \\ % |jafc| & \textit{J.~Agric.\ Food Chem.} & Journal of % Agricultural and Food Chemistry \\ % |jacs| & \textit{J.~Am.\ Chem.\ Soc.} & Journal of the % American Chemical Society \\ % |jced| & \textit{J.~Chem.\ Eng.\ Data} & Journal of Chemical % and Engineering Data \\ % |jcics| & \textit{J.~Chem.\ Inf.\ Comput.\ Sci.} & Journal of % Chemical Information and \\ & & \hfill Computer Sciences \\ % |jmc| & \textit{J.~Med.\ Chem.} & Journal of Medicinal Chemistry \\ % |joc| & \textit{J.~Org.\ Chem.} & Journal of Organic Chemistry \\ % |jps| & \textit{J.~Pharm.\ Sci.} & Journal of Pharmaceutical % Sciences \\ % |jpcrd| & \textit{J.~Phys.\ Chem.\ Ref.\ Data} & Journal % of Physical and Chemical \\ & & \hfill Reference Data \\ % |jpc| & \textit{J.~Phys.\ Chem.} & The Journal of Physical Chemistry \\ % |jpca| & \textit{J.~Phys.\ Chem.~A} & The Journal of Physical Chemistry A\\ % |jpcb| & \textit{J.~Phys.\ Chem.~B} & The Journal of Physical Chemistry B\\ % |lang| & \textit{Langmuir} & Langmuir \\ % |macro| & \textit{Macromolecules} & Macromolecules \\ % |orgmet| & \textit{Organometallics} & Organometallics \\ \hline % \end{tabular} % \par\clearpage % % \noindent Other predefined journal names are:\\[\baselineskip] % \DeleteShortVerb{\|} % \begin{tabular}{|lll|} \hline % \MakeShortVerb{\|} % Abbreviation & Appearance in list & Full journal name \\ \hline % |jft| & \textit{J.~Chem.\ Soc., Faraday Trans.} & Journal % of the Chemical Society, \\ & & \hfill Faraday Transactions \\ % |jft1| & \textit{J.~Chem.\ Soc., Faraday Trans. 1} & Journal % of the Chemical Society, \\ & & \hfill Faraday Transactions 1 \\ % |jft2| & \textit{J.~Chem.\ Soc., Faraday Trans. 2} & Journal % of the Chemical Society, \\ & & \hfill Faraday Transactions 2 \\ % |tfs| & \textit{Trans.\ Faraday Soc.} & Transactions of % the Faraday Society \\ % |jcis| & \textit{J.~Colloid Interface Sci.} & Journal of Colloid % and Interface Science \\ % |acis| & \textit{Adv.~Colloid Interface Sci.} & Advances in % Colloid and Interface Science \\ % |cs| & \textit{Colloids Surf.} & Colloid and Surfaces \\ % |csa| & \textit{Colloids Surf.\ A:\ Physiochem.} & % Colloid and Surfaces A:\ Physiochemical \\ % & \hfill\textit{Eng.\ Aspects} & and Engineering Aspects \\ % |csb| & \textit{Colloids Surf.\ B:\ Biointerfaces} & Colloid and % Surfaces B:\ Biointerfaces\\ % |pcps| & \textit{Progr.\ Colloid Polym.\ Sci.} & Progress in % Colloid and Polymer Science \\ % |jmr| & \textit{J.~Magn.\ Reson.} & Journal of Magnetic Resonance \\ % |jmra| & \textit{J.~Magn.\ Reson.\ A} & Journal of Magnetic % Resonance, Series A \\ % |jmrb| & \textit{J.~Magn.\ Reson.\ B} & Journal of Magnetic % Resonance, Series B \\ % |sci| & \textit{Science} & Science \\ % |nat| & \textit{Nature (London)} & Nature \\ % |jcch| & \textit{J.~Comput.\ Chem.} & Journal of Computational % Chemistry \\ % |cca| & \textit{Croat.\ Chem.\ Acta} & Croatica Chemica Acta \\ % |poly| & \textit{Polymer} & Polymer \\ % |ajp| & \textit{Am.\ J.\ Phys.} & American Journal of Physics \\ % |rsi| & \textit{Rev.\ Sci.\ Instrum.} & Review of % Scientific Instruments \\ % |jcp| & \textit{J.~Chem.\ Phys.} & Journal of Chemical Physics \\ % |cpl| & \textit{Chem.\ Phys.\ Lett.} & Chemical Physics Letters \\ % |molph| & \textit{Mol.\ Phys.} & Molecular Physics \\ % |pac| & \textit{Pure Appl.\ Chem.} & Pure and Applied Chemistry \\ % |jbc| & \textit{J.~Biol.\ Chem.} & Journal of Biological Chemistry \\ % |tl| & \textit{Tetrahedron Lett.} & Tetrahedron Letters \\ % |psisoe| & \textit{Proc.\ SPIE-Int.\ Soc.\ Opt.\ Eng.} & (?) \\ % |prb| & \textit{Phys.\ Rev.\ B:\ Condens.\ Matter} & Physics Review % B:\ Condensed Matter \\ % |jap| & \textit{J.~Appl.\ Phys.} & Journal of Applied Physics \\ % |pnac| & \textit{Proc.\ Natl.\ Acad.\ Sci.\ U.~S.~A.} & Proceedings % of the National Academy \\ & & \hfill of Sciences of the U.~S.~A. \\ % |bba| & \textit{Biochim.\ Biophys.\ Acta} & Biochimica % et Boiphysica Acta \\ % |nar| & \textit{Nucleic Acid Res.} & Nucleic Acid Research (?) \\ \hline % \end{tabular} % \newpage % % \section{Known Problems and Limitations} % % At the present (\docdate), the following problems are known: % \begin{itemize} % \item When printing a data base listing using the |list| % option (such as when type-setting |acslist.tex|), there may % on rare occations occur a page-break between the framed box % of the label and the \BibTeX{} entry itself. % \item Some of the pre-defined journal abbreviations may not % be entirely correct, I have not been able to check some of % them (since those journals are not avaliable at our library). % If someone finds an error in the journal names, I'll be most % grateful to be informed on how the correct abbreviation is. % \item Compatibility with other \LaTeX{} packages, both % standard and non-standard, may be poor. % \end{itemize} % % \section{Bugs and Suggestions for Improvements} % % Bug reports and suggestions for improvements are most % welcome. Especially corrections of (possible) errors in the % journal abbreviations are wanted -- please e-mail me! % If you find any other % error (an error in the \LaTeX{} or \BibTeX{} code) please % report them too! % Before filing a (code) bug report, please % take the following actions: % \begin{enumerate} % \item Ensure your problem is not due to your inputfile; % \item Ensure your problem is not due to % your own package(s) or class(es); % \item Ensure your problem is not covered in the section % ''Known Problems'' above; % \item Try to locate the problem by writing a minimal % \LaTeX{} input file which reproduces the problem. % Include the command\\ % | \setcounter{errorcontextlines}{999}|\\ % in your input; % \item Run your file through \LaTeX ; % \item Send a description of your problem, the input file % and the log file via e-mail to:\\ \hspace*{5mm} % \texttt{matsd@sssk.se}. % \end{enumerate} % \bigskip % % {\itshape Enjoy your \LaTeX!\raisebox{-\baselineskip}{mats d.}} % % \StopEventually{\par\vfill\hfill{\scriptsize Copyright % \copyright{} 1994-98 by Mats Dahlgren.}} % \newpage % % \iffalse %<*paketkod> % \fi % \section{The Package Code} % % The package code is not very complicated. For the % interested reader(s), it is presented here. % % First, the file is to identify itself and set the flags used % for options handeling to |F|: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{achemso}[1998/06/01 version 1.0.] \def\achemsover{\texttt{achemso} version 1.0 (1998/06/01)} \newif \ifsctnnmbr \sctnnmbrfalse \newif \iflst \lstfalse % \end{macrocode} % Then, the options are processed, and the support package % \textsf{overcite} by Donald Arsenau is loaded: % \begin{macrocode} \DeclareOption{note}{\renewcommand{\refname}{References and Notes}} \DeclareOption{number}{\global\sctnnmbrtrue} \DeclareOption{list}{\global\lsttrue} \DeclareOption*{\OptionNotUsed} \ProcessOptions \RequirePackage[nospace]{overcite} % \end{macrocode} % % If we are to print a complete listing, the file % |achemsol.bst| is to be used, and the code to produce the % framed labels read. Otherwise, the file |achemso.bst| % should be called for in |\bibliographystyle|. % \begin{macrocode} \iflst \bibliographystyle{achemsol} \if@twocolumn \else \reversemarginpar \fi \def\@bibitem#1{\item\if@filesw \immediate\write\@auxout {\string\bibcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces \@showtag{#1}} \def\@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]\if@filesw {\let\protect\noexpand \immediate \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces \@showtag{#2}} \newcommand{\thecitetag}[1]{\fbox{\texttt{#1}}} \def\@showtag#1{\@tempdima=\baselineskip \addtolength{\@tempdima}{0.5ex} \marginpar{\hfill\raisebox{-\@tempdima}[0pt][0pt]{\thecitetag{#1}}}} \else \bibliographystyle{achemso} \fi % \end{macrocode} % % Here is the part which redefines the |thebibliography| % environment and make it start a new page. If we are % printing a list, no new page should be started, since this % list is likely to be just about everything in that document. % At the end, a redefinition of |\@biblabel| is included to % get rid of the brackets in the reference list. % \begin{macrocode} \renewenvironment{thebibliography}[1] {\iflst \else \par\clearpage \fi \ifsctnnmbr \section{\refname \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% \else \section*{\refname \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% \fi \list{\@biblabel{\@arabic\c@enumiv}}% {\settowidth\labelwidth{\@biblabel{#1}}% \leftmargin\labelwidth \advance\leftmargin\labelsep \@openbib@code \usecounter{enumiv}% \let\p@enumiv\@empty \renewcommand\theenumiv{\@arabic\c@enumiv}}% \sloppy\clubpenalty4000\widowpenalty4000% \sfcode`\.\@m} {\def\@noitemerr {\@latex@warning{Empty `thebibliography' environment}}% \endlist} \def\@biblabel#1{#1.} % \end{macrocode} % \iffalse % % \fi % % \iffalse %<*listkod> % \fi % \subsection{List template file} % % This is the template file for listing the \BibTeX{} data % base, |acslist.tex|: % \begin{macrocode} \documentclass[11pt]{article} \usepackage[list]{achemso} \begin{document} \cite{*} \bibliography{refer} %%%% Change `refer' to the name(s) \end{document} %%%% of your BibTeX data base(s). % \end{macrocode} % \iffalse % %<*huvudkod> ENTRY { address author booktitle chapter edition editor howpublished institution journal key month note number organization pages publisher school series title type volume year annotate } {} { label } INTEGERS { output.state before.all mid.sentence after.sentence after.block } FUNCTION {init.state.consts} { #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := } STRINGS { s t } FUNCTION {output.nonnull} { 's := output.state mid.sentence = { " " * write$ } { output.state after.block = { ", " * write$ newline$ "\newblock " write$ } { output.state before.all = 'write$ { add.period$ " " * write$ } if$ } if$ mid.sentence 'output.state := } if$ s } FUNCTION {output} { duplicate$ empty$ 'pop$ 'output.nonnull if$ } FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } FUNCTION {output.bibitem} { newline$ "\bibitem{" write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := } FUNCTION {fin.entry} { add.period$ write$ newline$ } FUNCTION {new.block} { output.state before.all = 'skip$ { after.block 'output.state := } if$ } FUNCTION {new.sentence} { skip$ } FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } FUNCTION {new.block.checka} { empty$ 'skip$ 'new.block if$ } FUNCTION {new.block.checkb} { empty$ swap$ empty$ and 'skip$ 'new.block if$ } FUNCTION {field.or.null} { duplicate$ empty$ { pop$ "" } 'skip$ if$ } FUNCTION {emphasize} { duplicate$ empty$ { pop$ "" } { "\textit{" swap$ * "}" * } if$ } FUNCTION {emphasizec} { duplicate$ empty$ { pop$ "" } { "\textit{" swap$ * ",}" * } if$ } FUNCTION {emphasizesc} { duplicate$ empty$ { pop$ "" } { "\textit{" swap$ * ";}" * } if$ } FUNCTION {slantc} { duplicate$ empty$ { pop$ "" } { "\textsl{" swap$ * ",}" * } if$ } FUNCTION {emboldenc} { duplicate$ empty$ { pop$ "" } { "\textbf{" swap$ * ",}" * } if$ } INTEGERS { nameptr namesleft numnames } INTEGERS { etal } FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := numnames #15 > s numnames "{ll}" format.name$ "others" = numnames #1 > and or 'etal := etal { #1 #1 + 'namesleft := } { numnames 'namesleft := } if$ { namesleft #0 > } { s nameptr "{vv~}{ll,}{~jj,}{~f.}" format.name$ 't := nameptr #1 > { namesleft #1 > { ";\ \ " * t * } { nameptr #2 > { "" * } 'skip$ if$ t "others" = etal or { " \textit{et al.}\ " * } { ";\ \ " * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {format.authors} { author empty$ { "" } { author format.names } if$ } FUNCTION {format.editors} { editor empty$ { "" } { editor format.names editor num.names$ #1 > { ",\ \ Eds.; " * } { ",\ \ Ed.; " * } if$ } if$ } FUNCTION {n.dashify} { 't := "" { t empty$ not } { t #1 #1 substring$ "-" = { t #1 #2 substring$ "--" = not { "--" * t #2 global.max$ substring$ 't := } { { t #1 #1 substring$ "-" = } { "-" * t #2 global.max$ substring$ 't := } while$ } if$ } { t #1 #1 substring$ * t #2 global.max$ substring$ 't := } if$ } while$ } FUNCTION {format.date} { year empty$ { "" } 'year if$ } FUNCTION {tie.or.space.connect} { duplicate$ text.length$ #3 < { "~" } { " " } if$ swap$ * * } FUNCTION {either.or.check} { empty$ 'pop$ { "can't use both " swap$ * " fields in " * cite$ * warning$ } if$ } FUNCTION {format.bvolume} { volume empty$ { "" } { "volume" volume tie.or.space.connect series empty$ 'skip$ { " of " * series emphasize * } if$ "volume and number" number either.or.check } if$ } FUNCTION {format.number.series} { volume empty$ { number empty$ { series field.or.null } { series empty$ { "there's a number but no series in " cite$ * warning$ } { series " " * number * "; " * } if$ } if$ } { "" } if$ } FUNCTION {format.edition} { edition empty$ { "" } { edition " ed.;" * } if$ } INTEGERS { multiresult } FUNCTION {multi.page.check} { 't := #0 'multiresult := { multiresult not t empty$ not and } { t #1 #1 substring$ duplicate$ "-" = swap$ duplicate$ "," = swap$ "+" = or or { #1 'multiresult := } { t #2 global.max$ substring$ 't := } if$ } while$ multiresult } FUNCTION {format.pages} { pages empty$ { "" } { pages multi.page.check { "pages" pages n.dashify tie.or.space.connect } { "page" pages tie.or.space.connect } if$ } if$ } FUNCTION {format.pages.a} { pages empty$ { "" } { "page" pages tie.or.space.connect } if$ } FUNCTION {format.yr.vol.pages} { year field.or.null emboldenc " " swap$ * * volume field.or.null slantc " " swap$ * * pages empty$ 'skip$ { duplicate$ empty$ { pop$ format.pages.a } { " " * pages * } if$ } if$ } FUNCTION {format.chapter.pages} { chapter empty$ 'format.pages { type empty$ { "Chapter" } { type "l" change.case$ } if$ chapter tie.or.space.connect pages empty$ 'skip$ { ", " * format.pages * } if$ } if$ } FUNCTION {empty.misc.check} { author empty$ title empty$ howpublished empty$ month empty$ year empty$ note empty$ and and and and and { "all relevant fields are empty in " cite$ * warning$ } 'skip$ if$ } FUNCTION {format.thesis} { type empty$ {"Thesis,"} {type " thesis," * } if$ } FUNCTION {format.article.crossref} { key empty$ { journal empty$ { "need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } { "In " journal * } if$ } { "In " key * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.crossref.editor} { editor #1 "{vv~}{ll}" format.name$ editor num.names$ duplicate$ #2 > { pop$ " et~al." * } { #2 < 'skip$ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { " et~al." * } { " and " * editor #2 "{vv~}{ll}" format.name$ * } if$ } if$ } if$ } FUNCTION {format.book.crossref} { volume empty$ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ "In " } { "Volume" volume tie.or.space.connect " of " * } if$ editor empty$ editor field.or.null author field.or.null = or { key empty$ { series empty$ { "need editor, key, or series for " cite$ * " to crossref " * crossref * warning$ "" * } { "\textit{" * series * "}" * } if$ } { key * } if$ } { format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} { editor empty$ editor field.or.null author field.or.null = or { key empty$ { booktitle empty$ { "need editor, key, or booktitle for " cite$ * " to crossref " * crossref * warning$ "" } { "In \textit{" booktitle * ",}" * } if$ } { "In " key * } if$ } { "In " format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {in.book} { "In " output booktitle emphasize volume empty$ {skip$} {", Vol.~" * volume *} if$ edition empty$ {";" * output} {"," * output edition " ed.;\" * output} if$ editor missing$ { skip$ } { format.editors output } if$ format.number.series output new.sentence publisher ":" * "publisher" output.check address "," * "address" output.check } FUNCTION {book.vol.ed} { "" volume empty$ {skip$} {" Vol.~" * volume *} if$ edition empty$ {";" * output} {"," * output edition " ed.;\" * output} if$ } FUNCTION {thesis.affilation} { school "," * "school" output.check institution empty$ 'skip$ {institution "," * output} if$ } FUNCTION {article} { output.bibitem format.authors "author" output.check crossref missing$ { journal field.or.null emphasize format.yr.vol.pages output } { format.article.crossref output.nonnull format.pages output } if$ note output fin.entry } FUNCTION {submitted} { output.bibitem format.authors "author" output.check new.block "submitted for publication in" output note empty$ { journal emphasize "journal" output.check } { journal emphasizec "journal" output.check note output } if$ fin.entry } FUNCTION {inpress} { output.bibitem format.authors "author" output.check journal emphasizec "journal" output.check "in press" output note output fin.entry } FUNCTION {book} { output.bibitem author empty$ { format.editors "author and editor" output.check } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ booktitle empty$ { title emphasizesc output } { booktitle emphasizesc output } if$ crossref missing$ { format.bvolume output format.number.series output new.sentence publisher ":" * "publisher" output.check address "," * "address" output.check } { format.book.crossref output.nonnull } if$ format.edition output format.date "year" output.check note output fin.entry } FUNCTION {booklet} { output.bibitem format.authors "author" output.check " ``" title * "'', " * "title" output.check howpublished empty$ { skip$ } { howpublished "," * output} if$ address empty$ { skip$ } { address "," * output} if$ format.date "year" output.check note output fin.entry } FUNCTION {inbook} { output.bibitem format.authors "author" output.check " " title * ". " * "title" output.check in.book chapter empty$ {format.date "year" output.check} {year empty$ { "empty year field in " * cite$ * warning$ } { year "; " * output format.chapter.pages output } if$ } if$ note output fin.entry } FUNCTION {incollection} { output.bibitem format.authors "author" output.check " " title * ". " * "title" output.check in.book format.date "year" output.check note output fin.entry } FUNCTION {inproceedings} { inbook } FUNCTION {conference} { inbook } FUNCTION {manual} { output.bibitem author empty$ { organization empty$ 'skip$ { organization ", " * address * output } if$ } { format.authors output.nonnull } if$ "``" title * "'', " * "title" output.check author empty$ { organization empty$ { address empty$ 'skip$ { address "," * output } if$ } 'skip$ if$ } { organization empty$ 'skip$ { organization "," * output address empty$ 'skip$ { address "," * output } if$ } if$ } if$ format.edition output format.date output note output fin.entry } FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check "``" title * "'', " * "title" output.check "Master's thesis, " output thesis.affilation format.date "year" output.check note output fin.entry } FUNCTION {misc} { output.bibitem format.authors output title empty$ 'skip$ { "``" title * "'', " * output } if$ howpublished empty$ 'skip$ {howpublished "," * output } if$ format.date output note output fin.entry empty.misc.check } FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check title emphasizec "title" output.check format.thesis output.nonnull thesis.affilation format.date "year" output.check note output fin.entry } FUNCTION {proceedings} { output.bibitem editor empty$ { organization output } { format.editors output.nonnull } if$ booktitle empty$ { title emphasizec output } { booktitle emphasizec output } if$ book.vol.ed format.number.series output publisher empty$ { address empty$ { format.date "year" output.check } { address "," * output format.date "year" output.check } if$ } { address empty$ { publisher "," * output format.date "year" output.check } { publisher ": " * address * "," * output format.date "year" output.check } if$ } if$ note output fin.entry } FUNCTION {techreport} { output.bibitem format.authors "author" output.check "``" title * "'', " * "title" output.check type empty$ { "Technical Report" } 'type if$ number empty$ { ", " * } { " " * number * "," * } if$ output.nonnull institution "," * "institution" output.check address empty$ { skip$ } { address "," * output } if$ format.date "year" output.check note output fin.entry } FUNCTION {unpublished} { output.bibitem format.authors "author" output.check note empty$ { "Unpublished data" output } { year empty$ { note output } { note ", " * year * output } if$ } if$ fin.entry } FUNCTION {remark} { output.bibitem note "note" output.check fin.entry } FUNCTION {default.type} { misc } MACRO {jan} {"Jan."} MACRO {feb} {"Feb."} MACRO {mar} {"Mar."} MACRO {apr} {"Apr."} MACRO {may} {"May"} MACRO {jun} {"June"} MACRO {jul} {"July"} MACRO {aug} {"Aug."} MACRO {sep} {"Sept."} MACRO {oct} {"Oct."} MACRO {nov} {"Nov."} MACRO {dec} {"Dec."} MACRO {acchemr} {"Acc.\ Chem.\ Res."} MACRO {aacsa} {"Adv.\ {ACS} Abstr."} MACRO {anchem} {"Anal.\ Chem."} MACRO {bioch} {"Biochemistry"} MACRO {bicoc} {"Bioconj.\ Chem."} % *** MACRO {bitech} {"Biotechnol.\ Progr."} % *** MACRO {chemeng} {"Chem.\ Eng.\ News"} MACRO {chs} {"Chem.\ Health Safety"} % *** MACRO {crt} {"Chem.\ Res.\ Tox."} % *** MACRO {chemrev} {"Chem.\ Rev."} % *** MACRO {cmat} {"Chem.\ Mat."} % *** MACRO {chemtech} {"{CHEMTECH}"} % *** MACRO {enfu} {"Energy \&{} Fuels"} % *** MACRO {envst} {"Environ.\ Sci.\ Technol."} MACRO {iecf} {"Ind.\ Eng.\ Chem.\ Fundam."} MACRO {iecpdd} {"Ind.\ Eng.\ Chem.\ Proc.\ Des.\ Dev."} MACRO {iecprd} {"Ind.\ Eng.\ Chem.\ Prod.\ Res.\ Dev."} MACRO {iecr} {"Ind.\ Eng.\ Chem.\ Res."} % *** MACRO {inor} {"Inorg.\ Chem."} MACRO {jafc} {"J.~Agric.\ Food Chem."} MACRO {jacs} {"J.~Am.\ Chem.\ Soc."} MACRO {jced} {"J.~Chem.\ Eng.\ Data"} MACRO {jcics} {"J.~Chem.\ Inf.\ Comput.\ Sci."} MACRO {jmc} {"J.~Med.\ Chem."} MACRO {joc} {"J.~Org.\ Chem."} MACRO {jps} {"J.~Pharm.\ Sci."} MACRO {jpcrd} {"J.~Phys.\ Chem.\ Ref.\ Data"} % *** MACRO {jpc} {"J.~Phys.\ Chem."} MACRO {jpca} {"J.~Phys.\ Chem.~A"} MACRO {jpcb} {"J.~Phys.\ Chem.~B"} MACRO {lang} {"Langmuir"} MACRO {macro} {"Macromolecules"} MACRO {orgmet} {"Organometallics"} MACRO {jft} {"J.~Chem.\ Soc., Faraday Trans."} MACRO {jft1} {"J.~Chem.\ Soc., Faraday Trans. 1"} MACRO {jft2} {"J.~Chem.\ Soc., Faraday Trans. 2"} MACRO {tfs} {"Trans.\ Faraday Soc."} MACRO {jcis} {"J.~Colloid Interface Sci."} MACRO {acis} {"Adv.~Colloid Interface Sci."} MACRO {cs} {"Colloids Surf."} MACRO {csa} {"Colloids Surf.\ A:\ Physicochem.\ Eng.\ Apects"} MACRO {csb} {"Colloids Surf.\ B:\ Biointerfaces"} MACRO {pcps} {"Progr.\ Colloid Polym.\ Sci."} MACRO {jmr} {"J.~Magn.\ Reson."} MACRO {jmra} {"J.~Magn.\ Reson.\ A"} MACRO {jmrb} {"J.~Magn.\ Reson.\ B"} MACRO {sci} {"Science"} MACRO {nat} {"Nature (London)"} MACRO {jcch} {"J.~Comput.\ Chem."} MACRO {cca} {"Croat.\ Chem.\ Acta"} MACRO {poly} {"Polymer"} MACRO {ajp} {"Am.\ J.\ Phys."} MACRO {rsi} {"Rev.\ Sci.\ Instrum."} MACRO {jcp} {"J.~Chem.\ Phys."} MACRO {cpl} {"Chem.\ Phys.\ Lett."} MACRO {molph} {"Mol.\ Phys."} MACRO {pac} {"Pure Appl.\ Chem."} MACRO {jbc} {"J.~Biol.\ Chem."} MACRO {tl} {"Tetrahedron Lett.\"} MACRO {psisoe} {"Proc.\ SPIE-Int.\ Soc.\ Opt.\ Eng."} MACRO {prb} {"Phys.\ Rev.\ B:\ Condens.\ Matter"} MACRO {jap} {"J.~Appl.\ Phys."} MACRO {pnac} {"Proc.\ Natl.\ Acad.\ Sci.\ U.~S.~A. "} MACRO {bba} {"Biochim.\ Biophys.\ Acta"} MACRO {nar} {"Nucleic.\ Acid Res."} READ STRINGS { longest.label } INTEGERS { number.label longest.label.width } FUNCTION {initialize.longest.label} { "" 'longest.label := #1 'number.label := #0 'longest.label.width := } FUNCTION {longest.label.pass} { number.label int.to.str$ 'label := number.label #1 + 'number.label := label width$ longest.label.width > { label 'longest.label := label width$ 'longest.label.width := } 'skip$ if$ } EXECUTE {initialize.longest.label} ITERATE {longest.label.pass} FUNCTION {begin.bib} { preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ "\providecommand{\refin}[1]{\\ \textbf{Referenced in:} #1}" write$ newline$ "\begin{thebibliography}{" longest.label * "}" * write$ newline$ } EXECUTE {begin.bib} EXECUTE {init.state.consts} ITERATE {call.type$} FUNCTION {end.bib} { newline$ "\end{thebibliography}" write$ newline$ } EXECUTE {end.bib} % %<*listhuvudkod> ENTRY { address author booktitle chapter edition editor howpublished institution journal key month note number organization pages publisher school series title type volume year annotate } {} { label } INTEGERS { output.state before.all mid.sentence after.sentence after.block } FUNCTION {init.state.consts} { #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := } STRINGS { s t } FUNCTION {output.nonnull} { 's := output.state mid.sentence = { " " * write$ } { output.state after.block = { ", " * write$ newline$ "\newblock " write$ } { output.state before.all = 'write$ { add.period$ " " * write$ } if$ } if$ mid.sentence 'output.state := } if$ s } FUNCTION {output} { duplicate$ empty$ 'pop$ 'output.nonnull if$ } FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } FUNCTION {output.bibitem} { newline$ "\bibitem{" write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := } FUNCTION {fin.entry} { add.period$ write$ newline$ } FUNCTION {new.block} { output.state before.all = 'skip$ { after.block 'output.state := } if$ } FUNCTION {new.sentence} { skip$ } FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } FUNCTION {new.block.checka} { empty$ 'skip$ 'new.block if$ } FUNCTION {new.block.checkb} { empty$ swap$ empty$ and 'skip$ 'new.block if$ } FUNCTION {field.or.null} { duplicate$ empty$ { pop$ "" } 'skip$ if$ } FUNCTION {emphasize} { duplicate$ empty$ { pop$ "" } { "\textit{" swap$ * "}" * } if$ } FUNCTION {emphasizec} { duplicate$ empty$ { pop$ "" } { "\textit{" swap$ * ",}" * } if$ } FUNCTION {emphasizesc} { duplicate$ empty$ { pop$ "" } { "\textit{" swap$ * ";}" * } if$ } FUNCTION {slantc} { duplicate$ empty$ { pop$ "" } { "\textsl{" swap$ * ",}" * } if$ } FUNCTION {emboldenc} { duplicate$ empty$ { pop$ "" } { "\textbf{" swap$ * ",}" * } if$ } INTEGERS { nameptr namesleft numnames } INTEGERS { etal } FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := numnames #15 > s numnames "{ll}" format.name$ "others" = numnames #1 > and or 'etal := etal { #1 #1 + 'namesleft := } { numnames 'namesleft := } if$ { namesleft #0 > } { s nameptr "{vv~}{ll,}{~jj,}{~f.}" format.name$ 't := nameptr #1 > { namesleft #1 > { ";\ \ " * t * } { nameptr #2 > { "" * } 'skip$ if$ t "others" = etal or { " \textit{et al.}\ " * } { ";\ \ " * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {format.authors} { author empty$ { "" } { author format.names } if$ } FUNCTION {format.editors} { editor empty$ { "" } { editor format.names editor num.names$ #1 > { ",\ \ Eds.; " * } { ",\ \ Ed.; " * } if$ } if$ } FUNCTION {n.dashify} { 't := "" { t empty$ not } { t #1 #1 substring$ "-" = { t #1 #2 substring$ "--" = not { "--" * t #2 global.max$ substring$ 't := } { { t #1 #1 substring$ "-" = } { "-" * t #2 global.max$ substring$ 't := } while$ } if$ } { t #1 #1 substring$ * t #2 global.max$ substring$ 't := } if$ } while$ } FUNCTION {format.date} { year empty$ { "" } 'year if$ } FUNCTION {tie.or.space.connect} { duplicate$ text.length$ #3 < { "~" } { " " } if$ swap$ * * } FUNCTION {either.or.check} { empty$ 'pop$ { "can't use both " swap$ * " fields in " * cite$ * warning$ } if$ } FUNCTION {format.bvolume} { volume empty$ { "" } { "volume" volume tie.or.space.connect series empty$ 'skip$ { " of " * series emphasize * } if$ "volume and number" number either.or.check } if$ } FUNCTION {format.number.series} { volume empty$ { number empty$ { series field.or.null } { series empty$ { "there's a number but no series in " cite$ * warning$ } { series " " * number * "; " * } if$ } if$ } { "" } if$ } FUNCTION {format.edition} { edition empty$ { "" } { edition " ed.;" * } if$ } INTEGERS { multiresult } FUNCTION {multi.page.check} { 't := #0 'multiresult := { multiresult not t empty$ not and } { t #1 #1 substring$ duplicate$ "-" = swap$ duplicate$ "," = swap$ "+" = or or { #1 'multiresult := } { t #2 global.max$ substring$ 't := } if$ } while$ multiresult } FUNCTION {format.pages} { pages empty$ { "" } { pages multi.page.check { "pages" pages n.dashify tie.or.space.connect } { "page" pages tie.or.space.connect } if$ } if$ } FUNCTION {format.pages.a} { pages empty$ { "" } { "page" pages tie.or.space.connect } if$ } FUNCTION {format.yr.vol.pages} { year field.or.null emboldenc " " swap$ * * volume field.or.null slantc " " swap$ * * pages empty$ 'skip$ { duplicate$ empty$ { pop$ format.pages.a } { " " * pages * } if$ } if$ } FUNCTION {format.chapter.pages} { chapter empty$ 'format.pages { type empty$ { "Chapter" } { type "l" change.case$ } if$ chapter tie.or.space.connect pages empty$ 'skip$ { ", " * format.pages * } if$ } if$ } FUNCTION {empty.misc.check} { author empty$ title empty$ howpublished empty$ month empty$ year empty$ note empty$ and and and and and { "all relevant fields are empty in " cite$ * warning$ } 'skip$ if$ } FUNCTION {format.thesis} { type empty$ {"Thesis,"} {type " thesis," * } if$ } FUNCTION {format.article.crossref} { key empty$ { journal empty$ { "need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } { "In " journal * } if$ } { "In " key * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.crossref.editor} { editor #1 "{vv~}{ll}" format.name$ editor num.names$ duplicate$ #2 > { pop$ " et~al." * } { #2 < 'skip$ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { " et~al." * } { " and " * editor #2 "{vv~}{ll}" format.name$ * } if$ } if$ } if$ } FUNCTION {format.book.crossref} { volume empty$ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ "In " } { "Volume" volume tie.or.space.connect " of " * } if$ editor empty$ editor field.or.null author field.or.null = or { key empty$ { series empty$ { "need editor, key, or series for " cite$ * " to crossref " * crossref * warning$ "" * } { "\textit{" * series * "}" * } if$ } { key * } if$ } { format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} { editor empty$ editor field.or.null author field.or.null = or { key empty$ { booktitle empty$ { "need editor, key, or booktitle for " cite$ * " to crossref " * crossref * warning$ "" } { "In \textit{" booktitle * ",}" * } if$ } { "In " key * } if$ } { "In " format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {in.book} { "In " output booktitle emphasize volume empty$ {skip$} {", Vol.~" * volume *} if$ edition empty$ {";" * output} {"," * output edition " ed.;\" * output} if$ editor missing$ { skip$ } { format.editors output } if$ format.number.series output new.sentence publisher ":" * "publisher" output.check address "," * "address" output.check } FUNCTION {book.vol.ed} { "" volume empty$ {skip$} {" Vol.~" * volume *} if$ edition empty$ {";" * output} {"," * output edition " ed.;\" * output} if$ } FUNCTION {thesis.affilation} { school "," * "school" output.check institution empty$ 'skip$ {institution "," * output} if$ } FUNCTION {add.note} { annotate empty$ 'skip$ { new.block "{\footnotesize " annotate * "}" * output } if$ } FUNCTION {article} { output.bibitem format.authors "author" output.check crossref missing$ { journal field.or.null emphasize format.yr.vol.pages output } { format.article.crossref output.nonnull format.pages output } if$ note output add.note fin.entry } FUNCTION {submitted} { output.bibitem format.authors "author" output.check new.block "submitted for publication in" output note empty$ { journal emphasize "journal" output.check } { journal emphasizec "journal" output.check note output } if$ add.note fin.entry } FUNCTION {inpress} { output.bibitem format.authors "author" output.check journal emphasizec "journal" output.check "in press" output note output add.note fin.entry } FUNCTION {book} { output.bibitem author empty$ { format.editors "author and editor" output.check } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ booktitle empty$ { title emphasizesc output } { booktitle emphasizesc output } if$ crossref missing$ { format.bvolume output format.number.series output new.sentence publisher ":" * "publisher" output.check address "," * "address" output.check } { format.book.crossref output.nonnull } if$ format.edition output format.date "year" output.check note output add.note fin.entry } FUNCTION {booklet} { output.bibitem format.authors "author" output.check " ``" title * "'', " * "title" output.check howpublished empty$ { skip$ } { howpublished "," * output} if$ address empty$ { skip$ } { address "," * output} if$ format.date "year" output.check note output add.note fin.entry } FUNCTION {inbook} { output.bibitem format.authors "author" output.check " " title * ". " * "title" output.check in.book chapter empty$ {format.date "year" output.check} {year empty$ { "empty year field in " * cite$ * warning$ } { year "; " * output format.chapter.pages output } if$ } if$ note output add.note fin.entry } FUNCTION {incollection} { output.bibitem format.authors "author" output.check " " title * ". " * "title" output.check in.book format.date "year" output.check note output add.note fin.entry } FUNCTION {inproceedings} { inbook } FUNCTION {conference} { inbook } FUNCTION {manual} { output.bibitem author empty$ { organization empty$ 'skip$ { organization ", " * address * output } if$ } { format.authors output.nonnull } if$ "``" title * "'', " * "title" output.check author empty$ { organization empty$ { address empty$ 'skip$ { address "," * output } if$ } 'skip$ if$ } { organization empty$ 'skip$ { organization "," * output address empty$ 'skip$ { address "," * output } if$ } if$ } if$ format.edition output format.date output note output add.note fin.entry } FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check "``" title * "'', " * "title" output.check "Master's thesis, " output thesis.affilation format.date "year" output.check note output add.note fin.entry } FUNCTION {misc} { output.bibitem format.authors output title empty$ 'skip$ { "``" title * "'', " * output } if$ howpublished empty$ 'skip$ {howpublished "," * output } if$ format.date output note output add.note fin.entry empty.misc.check } FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check title emphasizec "title" output.check format.thesis output.nonnull thesis.affilation format.date "year" output.check note output add.note fin.entry } FUNCTION {proceedings} { output.bibitem editor empty$ { organization output } { format.editors output.nonnull } if$ booktitle empty$ { title emphasizec output } { booktitle emphasizec output } if$ book.vol.ed format.number.series output publisher empty$ { address empty$ { format.date "year" output.check } { address "," * output format.date "year" output.check } if$ } { address empty$ { publisher "," * output format.date "year" output.check } { publisher ": " * address * "," * output format.date "year" output.check } if$ } if$ note output add.note fin.entry } FUNCTION {techreport} { output.bibitem format.authors "author" output.check "``" title * "'', " * "title" output.check type empty$ { "Technical Report" } 'type if$ number empty$ { ", " * } { " " * number * "," * } if$ output.nonnull institution "," * "institution" output.check address empty$ { skip$ } { address "," * output } if$ format.date "year" output.check note output add.note fin.entry } FUNCTION {unpublished} { output.bibitem format.authors "author" output.check note empty$ { "Unpublished data" output } { year empty$ { note output } { note ", " * year * output } if$ } if$ add.note fin.entry } FUNCTION {remark} { output.bibitem note "note" output.check add.note fin.entry } FUNCTION {default.type} { misc } MACRO {jan} {"Jan."} MACRO {feb} {"Feb."} MACRO {mar} {"Mar."} MACRO {apr} {"Apr."} MACRO {may} {"May"} MACRO {jun} {"June"} MACRO {jul} {"July"} MACRO {aug} {"Aug."} MACRO {sep} {"Sept."} MACRO {oct} {"Oct."} MACRO {nov} {"Nov."} MACRO {dec} {"Dec."} MACRO {acchemr} {"Acc.\ Chem.\ Res."} MACRO {aacsa} {"Adv.\ {ACS} Abstr."} MACRO {anchem} {"Anal.\ Chem."} MACRO {bioch} {"Biochemistry"} MACRO {bicoc} {"Bioconj.\ Chem."} % *** MACRO {bitech} {"Biotechnol.\ Progr."} % *** MACRO {chemeng} {"Chem.\ Eng.\ News"} MACRO {chs} {"Chem.\ Health Safety"} % *** MACRO {crt} {"Chem.\ Res.\ Tox."} % *** MACRO {chemrev} {"Chem.\ Rev."} % *** MACRO {cmat} {"Chem.\ Mat."} % *** MACRO {chemtech} {"{CHEMTECH}"} % *** MACRO {enfu} {"Energy \&{} Fuels"} % *** MACRO {envst} {"Environ.\ Sci.\ Technol."} MACRO {iecf} {"Ind.\ Eng.\ Chem.\ Fundam."} MACRO {iecpdd} {"Ind.\ Eng.\ Chem.\ Proc.\ Des.\ Dev."} MACRO {iecprd} {"Ind.\ Eng.\ Chem.\ Prod.\ Res.\ Dev."} MACRO {iecr} {"Ind.\ Eng.\ Chem.\ Res."} % *** MACRO {inor} {"Inorg.\ Chem."} MACRO {jafc} {"J.~Agric.\ Food Chem."} MACRO {jacs} {"J.~Am.\ Chem.\ Soc."} MACRO {jced} {"J.~Chem.\ Eng.\ Data"} MACRO {jcics} {"J.~Chem.\ Inf.\ Comput.\ Sci."} MACRO {jmc} {"J.~Med.\ Chem."} MACRO {joc} {"J.~Org.\ Chem."} MACRO {jps} {"J.~Pharm.\ Sci."} MACRO {jpcrd} {"J.~Phys.\ Chem.\ Ref.\ Data"} % *** MACRO {jpc} {"J.~Phys.\ Chem."} MACRO {jpca} {"J.~Phys.\ Chem.~A"} MACRO {jpcb} {"J.~Phys.\ Chem.~B"} MACRO {lang} {"Langmuir"} MACRO {macro} {"Macromolecules"} MACRO {orgmet} {"Organometallics"} MACRO {jft} {"J.~Chem.\ Soc., Faraday Trans."} MACRO {jft1} {"J.~Chem.\ Soc., Faraday Trans. 1"} MACRO {jft2} {"J.~Chem.\ Soc., Faraday Trans. 2"} MACRO {tfs} {"Trans.\ Faraday Soc."} MACRO {jcis} {"J.~Colloid Interface Sci."} MACRO {acis} {"Adv.~Colloid Interface Sci."} MACRO {cs} {"Colloids Surf."} MACRO {csa} {"Colloids Surf.\ A:\ Physicochem.\ Eng.\ Apects"} MACRO {csb} {"Colloids Surf.\ B:\ Biointerfaces"} MACRO {pcps} {"Progr.\ Colloid Polym.\ Sci."} MACRO {jmr} {"J.~Magn.\ Reson."} MACRO {jmra} {"J.~Magn.\ Reson.\ A"} MACRO {jmrb} {"J.~Magn.\ Reson.\ B"} MACRO {sci} {"Science"} MACRO {nat} {"Nature (London)"} MACRO {jcch} {"J.~Comput.\ Chem."} MACRO {cca} {"Croat.\ Chem.\ Acta"} MACRO {poly} {"Polymer"} MACRO {ajp} {"Am.\ J.\ Phys."} MACRO {rsi} {"Rev.\ Sci.\ Instrum."} MACRO {jcp} {"J.~Chem.\ Phys."} MACRO {cpl} {"Chem.\ Phys.\ Lett."} MACRO {molph} {"Mol.\ Phys."} MACRO {pac} {"Pure Appl.\ Chem."} MACRO {jbc} {"J.~Biol.\ Chem."} MACRO {tl} {"Tetrahedron Lett.\"} MACRO {psisoe} {"Proc.\ SPIE-Int.\ Soc.\ Opt.\ Eng."} MACRO {prb} {"Phys.\ Rev.\ B:\ Condens.\ Matter"} MACRO {jap} {"J.~Appl.\ Phys."} MACRO {pnac} {"Proc.\ Natl.\ Acad.\ Sci.\ U.~S.~A. "} MACRO {bba} {"Biochim.\ Biophys.\ Acta"} MACRO {nar} {"Nucleic.\ Acid Res."} READ STRINGS { longest.label } INTEGERS { number.label longest.label.width } FUNCTION {initialize.longest.label} { "" 'longest.label := #1 'number.label := #0 'longest.label.width := } FUNCTION {longest.label.pass} { number.label int.to.str$ 'label := number.label #1 + 'number.label := label width$ longest.label.width > { label 'longest.label := label width$ 'longest.label.width := } 'skip$ if$ } EXECUTE {initialize.longest.label} ITERATE {longest.label.pass} FUNCTION {begin.bib} { preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ "\providecommand{\refin}[1]{\\ \textbf{Referenced in:} #1}" write$ newline$ "\begin{thebibliography}{" longest.label * "}" * write$ newline$ } EXECUTE {begin.bib} EXECUTE {init.state.consts} ITERATE {call.type$} FUNCTION {end.bib} { newline$ "\end{thebibliography}" write$ newline$ } EXECUTE {end.bib} % % \fi % % \Finale % \endinput