diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/achemso/natmove.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/achemso/natmove.dtx | 601 |
1 files changed, 601 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/achemso/natmove.dtx b/Master/texmf-dist/source/latex/achemso/natmove.dtx new file mode 100644 index 00000000000..fdbd58cde49 --- /dev/null +++ b/Master/texmf-dist/source/latex/achemso/natmove.dtx @@ -0,0 +1,601 @@ +% \iffalse meta-comment +% +% Portions copyright (C) 1989-2003 by +% Donald Arseneau +% Copyright (C) 2007-08 by +% Joseph Wright <joseph.wright@morningstar2.co.uk> +% +% Part of this file is derived from cite.sty, to which the following +% license applies: +%-------------------------------------------------------------------- +% Copyright (C) 1989-2003 by Donald Arseneau +% These macros may be freely transmitted, reproduced, or modified +% provided that this notice is left intact. +%-------------------------------------------------------------------- +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The current maintainer of this work is Joseph Wright. +% +% This work consists of the source file natmove.dtx +% and the derived files natmove.ins, +% natmove.sty, +% natmove.pdf, +% natmove-manual.pdf and +% jawltxdoc.sty +% +% TDS-ready files: +% The compressed file achemso.tds.zip contains an unpacked version +% of all of the files included here, and pre-compiled +% documentation in PDF format. Simply decompress achemso.tds.zip +% in your local TeX directory, run your hash program (texhash, +% initexmf --update-fndb, etc.) and everything will be ready to +% go. The user documentation for the package is called +% natmove-manual.pdf; the file natmove.pdf includes the user +% manual and the fully-indexed source code. +% +% Unpacking: +% (a) If natmove.ins is present: +% tex natmove.ins +% (b) Without natmove.ins: +% tex natmove.dtx +% (c) If you use LaTeX to generate files: +% latex \let\install=y\input{natmove.dtx} +% +% Documentation: +% (a) Without write18 enabled: +% pdflatex natmove.dtx +% bibtex8 --wolfgang natmove +% makeindex -s gind.ist natmove.idx +% makeindex -s gglo.ist -o natmove.gls natmove.glo +% pdflatex natmove.dtx +% pdflatex natmove.dtx +% (b) With write18 enabled: +% pdflatex natmove.dtx +% pdflatex natmove.dtx +% pdflatex natmove.dtx +% +% Installation: +% Copy natmove.sty to a location searched by TeX, and if required +% by your TeX installation, run the appropriate command to build +% a hash of files (texhash, initexmf --update-fndb, etc.) +% +% Note: +% The jawltxdoc.sty file is not needed for installation, +% only for building the documentation; it may be deleted +% after producing the documentation (if necessary). +% +%<*ignore> +% This is all taken verbatim from Heiko Oberdiek's packages +\begingroup + \def\x{LaTeX2e}% +\expandafter\endgroup +\ifcase 0\ifx\install y1\fi\expandafter + \ifx\csname processbatchFile\endcsname\relax\else1\fi + \ifx\fmtname\x\else 1\fi\relax +\else\csname fi\endcsname +%</ignore> +%<*install> +\input docstrip.tex +\keepsilent +\askforoverwritefalse +\preamble + ---------------------------------------------------------------- + natmove --- Automatic citation moving with natbib + Maintained by Joseph Wright + E-mail: joseph.wright@morningstar2.co.uk + Released under the LaTeX Project Public License v1.3c or later + See http://www.latex-project.org/lppl.txt + ---------------------------------------------------------------- + +\endpreamble +\Msg{Generating natmove files:} +\generate{\file{jawltxdoc.sty}{\from{\jobname.dtx}{jawltxdoc}} +} +\usedir{tex/latex/achemso} +\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}} +} +\usedir{source/latex/achemso} +\generate{\file{\jobname.ins}{\from{\jobname.dtx}{install}} +} +\endbatchfile +%</install> +%<*ignore> +\fi +% Will Robertson's trick +\immediate\write18{bibtex8 --wolfgang \jobname} +\immediate\write18{makeindex -s gind.ist -o \jobname.ind \jobname.idx} +\immediate\write18{makeindex -s gglo.ist -o \jobname.gls \jobname.glo} +%</ignore> +%<*driver> +\PassOptionsToClass{a4paper}{article} +\documentclass[german,english,UKenglish]{ltxdoc} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +%\OnlyDescription +\usepackage[sort&compress,numbers,super]{natbib} +\usepackage{mciteplus} +\usepackage{jawltxdoc} +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +%</driver> +% \fi +% +%\CheckSum{158} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +%\GetFileInfo{\jobname.sty} +% +%\DoNotIndex{\!,\.,\?,\@empty,\@firstoftwo,\@ifmtarg} +%\DoNotIndex{\@ifpackageloaded,\@m,\@nil,\@secondoftwo} +%\DoNotIndex{\AtBeginDocument,\begingroup,\catcode,\def,\else} +%\DoNotIndex{\endgroup,\expandafter,\fi,\frenchspacing,\futurelet} +%\DoNotIndex{\gdef,\global,\ifnum,\ifx,\ifNAT@super,\lastskip} +%\DoNotIndex{\leavevmode,\let,\long,\mathchardef,\NeedsTeXFormat} +%\DoNotIndex{,\newcommand,\newif,\PackageWarning,\ProvidesPackage,\Q} +%\DoNotIndex{\relax,\renewcommand,\RequirePackage,\sfcode,\skip@} +%\DoNotIndex{\space,\spacefactor,\unskip} +% +%\changes{v1.0}{2008/06/22}{First public release} +% +%\setkeys{lst}{language=[LaTeX]{TeX},moretexcs={citenum, +% citeyear,citeauthor}} +% +%\title{\currpkg\ --- Automatic citation moving with natbib^^A +% \thanks{This file describes version \fileversion, last revised +% \filedate.}} +%\author{Joseph Wright^^A +% \thanks{E-mail: joseph.wright@morningstar2.co.uk}} +%\date{Released \filedate} +% +%\maketitle +% +%\newcommand*{\ACS}{\textsc{acs}} +%\begin{abstract} +% The \currpkg package adds the ability to move citations after +% punctuation automatically to the \pkg{natbib} package, in the same +% way as with \pkg{cite}. With non-superscript citations, no action +% is taken. +%\end{abstract} +% +%\begin{multicols}{2} +% \tableofcontents +%\end{multicols} +% +%\section{Using the package} +% The \currpkg package does only one job. It brings the ability to +% move punctuation after citations, using code borrowed from the +% \pkg{cite} package. +%\begin{LaTeXexample} +% Some text \cite{Coghill2006} some more text.\\ +% Some text ending a sentence \cite{Coghill2006}. +%\end{LaTeXexample} +% This is deactivated for other citation types. +%\begin{LaTeXexample} +% Some text \citeyear{Coghill2006}.\\ +% Some text \citeauthor{Coghill2006}.\\ +% Some text \citenum{Coghill2006}. +%\end{LaTeXexample} +% The package does nothing if the \opt{super} option has not been +% given to \pkg{natbib}. This means that the source can be written +% without needing to decide where citations will to appear, with the +% \opt{super} option for \pkg{natbib} controlling the result. +% +%\DescribeMacro{\natmovechars} +% One user macro is provided: \cs{natmovechars}. This contains +% the characters which are moved before superscript punctuation. +% The default contents is |,;:.| and can be set using +% \cs{renewcommand*}: +%\begin{LaTeXexample} +% \renewcommand*{\natmovechars}{.} +% Some text \cite{Coghill2006}, +% more text \cite{Coghill2006}. +%\end{LaTeXexample} +% +%\StopEventually{% +% \PrintChanges +% \PrintIndex +% \bibliographystyle{achemso} +% \bibliography{achemso}} +% +%\iffalse +%<*package> +%\fi +%\section{The code} +%\begin{macro}{\nmv@id} +% The package file is designed to be usable with any document class. +% It sets up the basics, but leaves some settings to the class file. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\def\nmv@id$#1: #2.#3 #4 #5-#6-#7 #8 #9${% + #5/#6/#7\space v1.0\space} +\ProvidesPackage{natmove} + [\nmv@id$Id: natmove.dtx 29 2008-08-22 07:47:26Z joseph $ + Automatic citation moving with natbib] +% \end{macrocode} +%\end{macro} +%\begin{macro}{\nmv@ifmtarg} +%\begin{macro}{\nmv@xifmtarg} +% To keep down dependance on other packages, the very short code +% block from \pkg{ifmtarg} is copied here with an internal name. +% \begin{macrocode} +\begingroup + \catcode`\Q=3 + \long\gdef\nmv@ifmtarg#1{% + \nmv@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil} + \long\gdef\nmv@xifmtarg#1#2Q#3#4#5\@nil{#4} +\endgroup +% \end{macrocode} +%\end{macro} +%\end{macro} +%\begin{macro}{\ifnmv@cite} +% A flag is need to watch whether \cs{cite} or another macro is in +% use. +% \begin{macrocode} +\newif\ifnmv@cite +% \end{macrocode} +%\end{macro} +%\begin{macro}{\nmv@citex} +% Using the flag, either the new internal macro, or the +% \pkg{natbib} original, can be called. +% \begin{macrocode} +\newcommand*{\nmv@citex}{% + \ifnmv@cite + \expandafter\nmv@citex@ + \else + \expandafter\nmv@natcitex + \fi} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\nmv@citex@} +% The new version of \cs{@citex} is needed that looks ahead of the +% citation using \cs{futurelet}. There are three arguments to +% \cs{@citex} when using \pkg{natbib}. Other than that, the trick +% used here is similar to that in \pkg{cite}. +% \begin{macrocode} +\def\nmv@citex@[#1][#2]#3{% + \leavevmode + \skip@\lastskip + \unskip + \begingroup +% \end{macrocode} +%\begin{macro}{\nmv@arg} +% The arguments of the macro now need to be saved, before handing off +% to the ``search'' macro. +% \begin{macrocode} + \def\nmv@arg{[#1][#2]{#3}}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\nmv@citex@end} +% The entire block to be executed after punctuation is set up here, +% to make recursion easier. The system used is very similar to that +% in \pkg{cite}. Notice that the \cs{relax} is essential. +% \begin{macrocode} + \newcommand*{\nmv@citex@end}{% + \expandafter\nmv@natcitex\nmv@arg + \endgroup}% + \global\nmv@citefalse + \nmv@citex@getnext\relax} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\nmv@citex@getnext} +%\begin{macro}{\nmv@citex@next} +% The next token on the input stack is saved into +% \cs{nmv@citex@next}, after gobbling up one token. +% \begin{macrocode} +\newcommand*{\nmv@citex@getnext}[1]{% + \futurelet\nmv@citex@next\nmv@citex@punct} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\begin{macro}{\nmv@citex@punct} +%\begin{macro}{\nmv@citex@loop} +% The working macro for moving the punctuation. This is very much +% like \cs{@citey} in the \pkg{cite} package. The initial assumption +% is that the loop will terminate, and so the recursion call will +% simply do the finalisation. +% \begin{macrocode} +\newcommand*{\nmv@citex@punct}{% + \let\nmv@citex@loop\nmv@citex@end +% \end{macrocode} +% A check is made for doubled full stops. +% \begin{macrocode} + \ifx.\nmv@citex@next\@empty + \ifnum\spacefactor<\nmv@citex@sfac\else + \let\nmv@citex@next\relax + \let\nmv@citex@loop\nmv@citex@getnext + \fi + \fi +% \end{macrocode} +% The other cases are handled. +% \begin{macrocode} + \expandafter\nmv@citex@pnct\natmovechars\@empty + \nmv@citex@loop} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\begin{macro}{\nmv@citex@pnct} +% The final part of the punctuation moving system. +% \begin{macrocode} +\def\nmv@citex@pnct#1#2\@empty{% + \ifx\nmv@citex@next#1\@empty + #1% + \let\nmv@citex@loop\nmv@citex@getnext + \fi + \ifx\@empty#2\@empty\else + \expandafter\nmv@citex@pnct#2\@empty + \fi} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\nmv@citex@sfac} +% The value of the spacing factor after a full stop is used to signal +% doubled punctuation. For French spacing, a bit of patching is +% needed. +% \begin{macrocode} +\mathchardef\nmv@citex@sfac3000 +\expandafter\renewcommand\expandafter*\expandafter{\expandafter% + \frenchspacing\expandafter}\expandafter{% + \frenchspacing + \mathchardef\nmv@citex@sfac1001 + \sfcode`\.\nmv@citex@sfac + \sfcode`\?\nmv@citex@sfac + \sfcode`\!\nmv@citex@sfac} +\ifnum\sfcode`\.=\@m + \frenchspacing +\fi +% \end{macrocode} +%\end{macro} +%\begin{macro}{\nmv@activate} +%\begin{macro}{\@citex} +%\begin{macro}{\nmv@natcitex} +%\begin{macro}{\cite} +%\begin{macro}{\nmv@cite} +%\begin{macro}{\nmv@notactivate} +% The swap has to be done at the beginning of the document. The +% internal flag from \pkg{natbib} is used, but under the +% circumstances we should be safe. \cs{cite} is also patched to make +% the system active. A +% \begin{macrocode} +\newcommand*{\nmv@activate}{% + \let\nmv@natcitex\@citex + \let\@citex\nmv@citex + \let\nmv@cite\cite + \renewcommand*{\cite}[2][]{% + \nmv@ifmtarg{##1} + {\nmv@citetrue + \nmv@cite{##2}} + {\nmv@citefalse + \nmv@cite[##1]{##2}}}} +\AtBeginDocument{ + \@ifpackageloaded{natbib} + {\ifNAT@super + \nmv@activate + \else + \nmv@notactivate + \fi} + {\PackageWarning{natmove} + {The natbib package has not been loaded}}} +\newcommand*{\nmv@notactivate}{} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\begin{macro}{\natmovechars} +% A user macro is needed for moving characters. +% \begin{macrocode} +\newcommand*{\natmovechars}{.,;:} +% \end{macrocode} +%\end{macro} +%\iffalse +%</package> +%\fi +% +%\Finale +% +%\iffalse +%<*jawltxdoc> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{jawltxdoc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage[final]{listings,graphicx,microtype} +\usepackage[scaled=0.95]{helvet} +\usepackage[version=3]{mhchem} +\usepackage[osf]{mathpazo} +\usepackage{booktabs,array,url,courier,xspace,varioref} +\usepackage{upgreek,ifpdf,float,caption,longtable,babel} +\begingroup + \@ifundefined{eTeXversion} + {\aftergroup\@gobble} + {\aftergroup\@firstofone} +\endgroup + {\usepackage{etoolbox}} +\floatstyle{plaintop} +\restylefloat{table} +\labelformat{figure}{\figurename~#1} +\labelformat{table}{\tablename~#1} +\ifpdf + \usepackage{embedfile} + \embedfile[% + stringmethod=escape,% + mimetype=plain/text,% + desc={LaTeX docstrip source archive for package `\jobname'}% + ]{\jobname.dtx} +\fi +\IfFileExists{\jobname.sty} + {\usepackage{\jobname}}{} +\usepackage[numbered]{hypdoc} +\setcounter{IndexColumns}{2} +\newlength\LaTeXwidth +\newlength\LaTeXoutdent +\newlength\LaTeXgap +\setlength\LaTeXgap{1em} +\setlength\LaTeXoutdent{-0.15\textwidth} +\newbox\lst@samplebox +\edef\LaTeXexamplefile{\jobname.tmp} +\lst@RequireAspects{writefile} +\lstnewenvironment{LaTeXexample}[1][example]{% + \global\let\lst@intname\@empty + \ifcsname LaTeXcode#1\endcsname + \expandafter\let\expandafter\LaTeXcode + \csname LaTeXcode#1\endcsname + \expandafter\let\expandafter\LaTeXcodeend + \csname LaTeXcode#1end\endcsname + \else + \PackageError{jawltxdoc} + {Undefined example type `#1'} + \@ehd + \let\LaTeXcode\relax + \let\LaTeXcodeend\relax + \fi + \LaTeXcode} + {\lst@EndWriteFile + \LaTeXcodeend} +\newcommand*{\LaTeXcodeexample}{% + \setbox\lst@samplebox=\hbox\bgroup + \LaTeXcodefloat} +\let\LaTeXcoderesultonly\LaTeXcodeexample +\newcommand*{\LaTeXcodeexampleend}{% + \egroup + \setlength\LaTeXwidth{\wd\lst@samplebox}% + \begin{list}{}{% + \setlength\itemindent{0pt} + \setlength\leftmargin\LaTeXoutdent + \setlength\rightmargin{0pt}}% + \item + \setlength\LaTeXoutdent{-0.15\textwidth} + \begin{minipage}[c]{% + \textwidth-\LaTeXwidth-\LaTeXoutdent-\LaTeXgap} + \LaTeXcodefloatend + \end{minipage}% + \hfill + \begin{minipage}[c]{\LaTeXwidth}% + \hbox to\linewidth{\box\lst@samplebox\hss}% + \end{minipage}% + \end{list}} +\newcommand*{\LaTeXcodefloat}{% + \setkeys{lst}{tabsize=4,gobble=3,breakindent=0pt, + basicstyle=\small\ttfamily,basewidth=0.51em, + keywordstyle=\color{blue}}% + \lst@BeginAlsoWriteFile{\LaTeXexamplefile}} +\let\LaTeXcodenoexample\LaTeXcodefloat +\let\LaTeXcodenoexampleend\@empty +\newcommand*{\LaTeXcodefloatend}{% + \MakePercentComment\catcode`\^^M=10\relax + \small + {\setkeys{lst}{SelectCharTable=\lst@ReplaceInput{\^\^I}% + {\lst@ProcessTabulator}}% + \leavevmode \input{\LaTeXexamplefile}}% + \MakePercentIgnore} +\newcommand*{\LaTeXcoderesultonlyend}{\egroup\LaTeXcodefloatend} +\lstnewenvironment{BibTeXexample}{% + \global\let\lst@intname\@empty + \setbox\lst@samplebox=\hbox\bgroup + \setkeys{lst}{tabsize=4,gobble=3,breakindent=0pt, + basicstyle=\small\ttfamily,basewidth=0.51em, + keywordstyle=\color{black}} + \lst@BeginAlsoWriteFile{\LaTeXexamplefile}} + {\lst@EndWriteFile + \LaTeXcodeexampleend} +\newcommand*{\DescribeOption}{% + \leavevmode\@bsphack\begingroup\MakePrivateLetters + \Describe@Option} +\newcommand*{\Describe@Option}[1]{\endgroup + \marginpar{\raggedleft\PrintDescribeEnv{#1}}% + \SpecialOptionIndex{#1}\@esphack\ignorespaces} +\newcommand*{\SpecialOptionIndex}[1]{\@bsphack + \index{#1\actualchar{\protect\ttfamily#1} + (option)\encapchar usage}% + \index{options:\levelchar#1\actualchar{\protect\ttfamily#1}% + \encapchar usage}\@esphack} +\newcommand*{\indexopt}[1]{\DescribeOption{#1}\opt{#1}} +\newcommand*{\DescribeOptionInfo}[2]{% + \DescribeOption{#1}% + \opt{#1=\meta{#2}}\xspace} +\newcommand*{\ofixarg}[1]{% + {\ttfamily[}% + \ifmmode \expandafter \nfss@text \fi + {% + \meta@font@select + \edef\meta@hyphen@restore{% + \hyphenchar\the\font\the\hyphenchar\font}% + \hyphenchar\font\m@ne + \language\l@nohyphenation + #1\/% + \meta@hyphen@restore + }% + {\ttfamily]}} +\newcommand*{\pkg}[1]{\textsf{#1}} +\newcommand*{\currpkg}{\pkg{\jobname}\xspace} +\newcommand*{\opt}[1]{\texttt{#1}} +\newcommand*{\defaultopt}[1]{\opt{\textbf{#1}}} +\newcommand*{\file}[1]{\texttt{#1}} +\newcommand*{\ext}[1]{\file{.#1}} +\newcommand*{\latin}[1]{\emph{#1}} +\newcommand*{\etc}{% + \@ifnextchar. + {\latin{etc}} + {\latin{etc}.\xspace}} +\newcommand*{\eg}{% + \@ifnextchar. + {\latin{e.g}} + {\latin{e.g}.\xspace}} +\newcommand*{\ie}{% + \@ifnextchar. + {\latin{i.e}} + {\latin{i.e}.\xspace}} +\newcommand*{\etal}{% + \@ifnextchar. + {\latin{et~al.}} + {\latin{et~al}.\xspace}} +\newcommand*{\AMS}{{\protect\usefont{OMS}{cmsy}{m}{n}% + A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}} +\providecommand*{\eTeX}{\ensuremath{\varepsilon}-\TeX} +\DeclareRobustCommand*{\XeTeX} + {X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\kern-.1667em\TeX} +\providecommand*{\CTAN}{\textsc{ctan}} +\@ifpackageloaded{etoolbox} + {\patchcmd{\@addmarginpar} + {\@latex@warning@no@line {Marginpar on page \thepage\space moved}} + {\relax}{}{}} + {} +\newcounter{argument} +\g@addto@macro\endmacro{\setcounter{argument}{0}} +\newcommand*\darg[1]{% + \stepcounter{argument}% + {\ttfamily\char`\#\theargument~:~}#1\par\noindent\ignorespaces} +\newcommand*\doarg[1]{% + \stepcounter{argument}% + {\ttfamily\makebox[0pt][r]{[}% + \char`\#\theargument]:~}#1\par\noindent\ignorespaces} +%</jawltxdoc> +%\fi |