diff options
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/chemnum/README | 11 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemnum/chemnum-codehelper.tex (renamed from Master/texmf-dist/doc/latex/chemnum/bsp.tex) | 61 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemnum/chemnum_doc_de.pdf | bin | 657073 -> 963249 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemnum/chemnum_doc_de.tex | 354 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemnum/chemnum_doc_en.pdf | bin | 639318 -> 1036423 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemnum/chemnum_doc_en.tex | 222 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/chemnum/chemnum.sty | 400 |
7 files changed, 588 insertions, 460 deletions
diff --git a/Master/texmf-dist/doc/latex/chemnum/README b/Master/texmf-dist/doc/latex/chemnum/README index 48d5ce5285e..1308cec682a 100644 --- a/Master/texmf-dist/doc/latex/chemnum/README +++ b/Master/texmf-dist/doc/latex/chemnum/README @@ -1,4 +1,5 @@ -chemnum - a comprehensive numbering method for chemical compounds +chemnum v0.3e +a comprehensive approach for the numbering of chemical compounds Basically one main command is provided, \cmpd{<label name>}. With it compound labels are initialized, declared and printed. @@ -7,11 +8,11 @@ it. It also can print compund lists. chemnum loads the packages expl3 and xparse and therefore needs LaTeX3 support as provided by the package bundles l3kernel and l3packages. -chemnum also needs the packages etoolbox, psfrag and textgreek +chemnum also needs the packages etoolbox, psfrag and textgreek or bm to be fully functioning. Clemens NIEDERBERGER -2011/11/08 +2011/12/01 http://www.mychemistry.eu/ contact@mychemistry.eu @@ -34,5 +35,5 @@ This work has the LPPL maintenance status `maintained'. The Current Maintainer of this work is Clemens Niederberger. This work consists of the files chemnum.sty, chemnum_doc_de.tex, -chemnum_doc_en.tex, bsp.tex, scheme-tmp.eps, scheme-bla.eps, README -and the derived files chemnum_doc_de.pdf and chemnum_doc_en.pdf
\ No newline at end of file +chemnum_doc_en.tex, chemnum-codehelper.tex, scheme-tmp.eps, scheme-bla.eps, +README and the derived files chemnum_doc_de.pdf and chemnum_doc_en.pdf
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/chemnum/bsp.tex b/Master/texmf-dist/doc/latex/chemnum/chemnum-codehelper.tex index e7d4f7bfc96..3583603d3a5 100644 --- a/Master/texmf-dist/doc/latex/chemnum/bsp.tex +++ b/Master/texmf-dist/doc/latex/chemnum/chemnum-codehelper.tex @@ -1,9 +1,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% - chemnum - bsp.tex - % -% - a comprehensive numbering method for chemical compounds - % +% - chemnum - chemnum-codehelper.tex - % +% - a comprehensive approach for the numbering of chemical compounds - % % ------------------------------------------------------------------------------------- % % - Clemens NIEDERBERGER - % -% - 2011/11/08 - % +% - 2011/12/01 - % % ------------------------------------------------------------------------------------- % % - http://www.mychemistry.eu/ - % % - contact@mychemistry.eu - % @@ -26,8 +26,8 @@ % - The Current Maintainer of this work is Clemens Niederberger. - % % - - % % - This work consists of the files chemnum.sty, chemnum_doc_de.tex, - % -% - chemnum_doc_en.tex, bsp.tex, scheme-tmp.eps, scheme-bla.eps README and the - % -% - derived files chemnum_doc_de.pdf and chemnum_doc_en.pdf - % +% - chemnum_doc_en.tex, chemnum-codehelper.tex, scheme-tmp.eps, scheme-bla.eps, - % +% - README and the derived files chemnum_doc_de.pdf and chemnum_doc_en.pdf - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This code is just a copy from the LaTeXdemo environment in the siunitx documentation @@ -36,7 +36,7 @@ % [code only] % [code and float] % -% Clemens NIEDERBERGER, 2011/07/25 +% Clemens NIEDERBERGER, 2011/12/01 % % For creating examples with nice highlighting of code, and so % on; based on the system used in the listings source (lstsample). @@ -102,6 +102,7 @@ fcite, includegraphics, lstinline, + marker, penalty, renewcommand, schemename, @@ -174,4 +175,50 @@ } \beispiel@new{code only} {\colorlet{shadecolor}{yellow!20}\shaded\beispiel@common}{\endshaded} -\makeatother
\ No newline at end of file +\makeatother + +\lstset{ + language=[LaTeX]TeX, + basicstyle={\ttfamily}, % Grundstil + extendedchars=true, + numbers=left, % Zeilennummern + numberstyle=\tiny, % Größe des Zeilennummern + numberblanklines=true, % Leerzeilen nummerieren + gobble=0, % das erste Leerzeichen abschneiden + xleftmargin=20pt, % Einrückung links + breaklines=true, % Zeilenumbruch + literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1, + moredelim=[is][\color{myred}]{!!}{!!},% Hervorhebung + moredelim=[is][\color{black}]{++}{++}, % Hervorhebung der Keywords rückgängig + commentstyle={\color[named]{Gray}}, + keywordstyle=\color{code}, + texcsstyle=[30]\color{code}, + moretexcs=[30] + { + @m, + cmpd, + cmpdinit, + cmpdref, + cmpdreset, + cmpdsetup, + CNlabel, + CNlabelnoref, + CNref, + CNlabelsub, + CNlabelsubnoref, + CNrefsub, + declarecompound, + compound, + compoundprefix, + compoundsuffix, + fcite, + lstinline, + penalty, + psfrag, + schemeref, + tableofcontents, + textnumero, + theffbibliography, + uline + } + }%
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_de.pdf b/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_de.pdf Binary files differindex ce85d34cfed..37a2b9d1adb 100644 --- a/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_de.pdf +++ b/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_de.pdf diff --git a/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_de.tex b/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_de.tex index a562e5049b0..6c4e04c8f09 100644 --- a/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_de.tex +++ b/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_de.tex @@ -1,9 +1,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - chemnum - chemnum_doc_de.tex - % -% - a comprehensive numbering method for chemical compounds - % +% - a comprehensive approach for the numbering of chemical compounds - % % ------------------------------------------------------------------------------------- % % - Clemens NIEDERBERGER - % -% - 2011/11/08 - % +% - 2011/12/01 - % % ------------------------------------------------------------------------------------- % % - http://www.mychemistry.eu/ - % % - contact@mychemistry.eu - % @@ -26,72 +26,30 @@ % - The Current Maintainer of this work is Clemens Niederberger. - % % - - % % - This work consists of the files chemnum.sty, chemnum_doc_de.tex, - % -% - chemnum_doc_en.tex, bsp.tex, scheme-tmp.eps, scheme-bla.eps README and the - % -% - derived files chemnum_doc_de.pdf and chemnum_doc_en.pdf - % +% - chemnum_doc_en.tex, chemnum-codehelper.tex, scheme-tmp.eps, scheme-bla.eps, - % +% - README and the derived files chemnum_doc_de.pdf and chemnum_doc_en.pdf - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[DIV11]{scrartcl} \usepackage[ngerman,german,naustrian,austrian,english,british,american,canadian,french,canadien,spanish,italian]{babel} - +\usepackage[T1]{fontenc} \usepackage[utf8]{inputenx} \usepackage[dvipsnames]{xcolor} \colorlet{code}{RawSienna} \colorlet{shadecolor}{yellow!20} -\usepackage[runs=2]{auto-pst-pdf} -\usepackage{chemnum,textcomp,lmodern,microtype,url,xspace,longtable,tabu,booktabs,chemscheme} + \definecolor{myblue}{rgb}{0.02,0.04,0.48} + \definecolor{myred}{rgb}{0.65,0.04,0.07} +\usepackage[textgreek]{chemnum} +\usepackage{textcomp,microtype,libertine,url,xspace,longtable,tabu,booktabs,chemscheme} \usepackage[version=3]{mhchem} \renewcommand*\schemename{Schema} \usepackage[normalem]{ulem} \usepackage[runs=2]{auto-pst-pdf} -\usepackage{chemfig,chemmacros} -\input{bsp} -\lstset{ - language=[LaTeX]TeX, - basicstyle={\ttfamily}, % Grundstil - extendedchars=true, - numbers=left, % Zeilennummern - numberstyle=\tiny, % Größe des Zeilennummern - numberblanklines=true, % Leerzeilen nummerieren - gobble=0, % das erste Leerzeichen abschneiden - xleftmargin=20pt, % Einrückung links - breaklines=true, % Zeilenumbruch - literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1, - moredelim=[is][\color{red!25!purple}]{!!}{!!},% Hervorhebung - moredelim=[is][\color{black}]{++}{++}, % Hervorhebung der Keywords rückgängig - commentstyle={\color[named]{Gray}}, - keywordstyle=\color{code}, - texcsstyle=[30]\color{code}, - moretexcs=[30] - { - @m, - cmpd, - cmpdinit, - cmpdref, - cmpdreset, - cmpdsetup, - CNlabel, - CNlabelnoref, - CNref, - CNlabelsub, - CNlabelsubnoref, - CNrefsub, - declarecompound, - compound, - compoundprefix, - compoundsuffix, - fcite, - lstinline, - penalty, - psfrag, - schemeref, - tableofcontents, - textnumero, - theffbibliography, - uline - } - }% +\usepackage{chemfig} +\input{chemnum-codehelper} \usepackage{hyperref} \hypersetup{colorlinks=true, + allcolors=myblue, plainpages=false, bookmarksopen=true, bookmarksopenlevel=2, @@ -99,28 +57,31 @@ pdfauthor={Clemens Niederberger}, pdftitle={chemnum - Manual}, pdfsubject={Chemische Substanzen Nummerieren}, - pdfkeywords={chemmnum}, + pdfkeywords={chemmnum,compound,labels}, pdfcreator={LaTeX} } \newcommand*\changefont[3]{\fontfamily{#1}\fontseries{#2}\fontshape{#3}\selectfont} \ExplSyntaxOn -\DeclareDocumentEnvironment { myquote } { m } +\DeclareDocumentEnvironment { myquote } { o } { \quote - \small \changefont { cmss } { m } { sl } + \small\sffamily %\changefont { cmss } { m } { sl } } { - \par\noindent - \parbox { \linewidth } { \raggedleft \normalfont \itshape #1 } + \IfNoValueF { #1 } + { + \par\noindent + \parbox { \linewidth } { \raggedleft \normalfont \itshape #1 } + } \endquote } \ExplSyntaxOff -\newcommand*\chemnum{\textsf{chemnum}\xspace} -\newcommand*\CNversion{v0.3c\xspace} -\newcommand*\CNdate{2011/11/08\xspace} +\newcommand*\chemnum{{\scshape\textcolor{myblue}{chemnum}}\xspace} +\newcommand*\CNversion{v0.3e\xspace} +\newcommand*\CNdate{2011/12/01\xspace} \newcommand*\paket[1]{\textsf{#1}\footnote{\url{http://www.ctan.org/pkg/#1}}} \newcommand*\zB{\mbox{z.\,B.}\xspace} @@ -132,18 +93,17 @@ \selectlanguage{ngerman} \begin{titlepage} \centering - \Huge chemnum \CNversion + \Huge\textcolor{myblue}{\biolinumshadow[\fontsize{1.5cm}{1.6cm}\fontshape{sc}]{chemnum}} \vskip.5cm - \Large \CNdate + \Large \CNversion \qquad \CNdate \vskip.5cm \large Clemens \textsc{Niederberger} \vskip.25cm \normalsize\url{http://www.mychemistry.eu/}\\ \href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu} - \vskip2cm - \begin{abstract} - \chemnum ist ein neuer, möglichst umfassender Ansatz zum Nummerieren chemischer Verbindungen. - \end{abstract} + \begin{center}\Large\color{myblue} + Ein umfassender Ansatz für das Nummerieren chemischer Verbindungen mit \LaTeXe. + \end{center} \vskip3cm \cmpdinit*{glucose.alpha, glucose.beta, glucose.chain} \cmpd*[sub-counter = greek]{glucose.alpha, glucose.beta}\cmpd*{glucose.chain} \setatomsep{2em} @@ -161,7 +121,7 @@ \arrow(@chainlabel--){0}[,2.5] \normalsize\cmpd[cmpd-delim]{glucose.beta} \arrow(@chainlabel--){0}[180,2.3] \normalsize\cmpd[cmpd-delim]{glucose.alpha} \schemestop - \caption{Das \textalpha- und das \textbeta-Anomer von \Dfi-Glucose \cmpd[list-delim,list-lang=DE]{glucose.alpha,glucose.beta} stehen in Lösung über die offenkettige Form \cmpd[cmpd-delim]{glucose.chain} im Gleichgewicht.} + \caption{Das \textalpha- und das \textbeta-Anomer von \textsc{d}-Glucose \cmpd[list-delim,list-lang=DE]{glucose.alpha,glucose.beta} stehen in Lösung über die offenkettige Form \cmpd[cmpd-delim]{glucose.chain} im Gleichgewicht.} \end{scheme} \end{titlepage} \cmpdreset @@ -172,28 +132,28 @@ \chemnum ruft intern die Pakete \textsf{expl3} und \paket{xparse} auf. \textsf{xparse} ist Teil des \paket{l3packages}-Bundles, \textsf{expl3} ist Teil des \paket{l3kernel}-Bundles. Das heißt, \chemnum benötigt \LaTeX3-Un\-ter\-stüt\-zung. -\chemnum benötigt außerdem die Pakete \paket{etoolbox} und \paket{psfrag} und (manchmal) das Paket \paket{textgreek}, siehe Abschnitt \ref{sec:package_options}. +\chemnum benötigt außerdem die Pakete \paket{etoolbox} und \paket{psfrag} und entweder das Paket \paket{textgreek} oder das Paket \paket{bm}, abhängig von den Paketoptionen (siehe Abschnitt \ref{sec:package_options}). \section{Paket-Optionen}\label{sec:package_options} \chemnum hat eine Option. \begin{framed} \centering\lstinline+\usepackage[textgreek = <value>]{chemnum}+ \end{framed} -Damit können Sie sowohl einen der drei Stile des \textsf{textgreek}-Pakets wählen\footnote{Zu Details siehe Dokumentation des \textsf{textgreek}-Pakets.} oder \chemnum ohne \textsf{textgreek} laden. Folgende Werte stehen zur Auswahl: \lstinline=artemisia=, \lstinline=cbgreek=, \lstinline=euler= und \lstinline=false=. Wenn Sie \chemnum ohne Option verwenden, wird \textsf{textgreek} mit dem \lstinline=cbgreek=-Stil geladen. Die Verwendung von \lstinline+\usepackage[textgreek]{chemnum}+ entspricht \lstinline+\usepackage[textgreek = cbgreek]{chemnum}+ oder \lstinline+\usepackage{chemnum}+. +Damit können Sie sowohl einen der drei Stile des \textsf{textgreek}-Pakets wählen\footnote{Zu Details siehe Dokumentation des \textsf{textgreek}-Pakets.} oder \chemnum ohne \textsf{textgreek} laden. Folgende Werte stehen zur Auswahl: \lstinline=artemisia=, \lstinline=cbgreek=, \lstinline=euler= und \lstinline=false=. Wenn Sie \lstinline=<value>= weglassen, wird \textsf{textgreek} mit dem \lstinline=cbgreek=-Stil geladen. Die Verwendung von \lstinline+\usepackage[textgreek]{chemnum}+ entspricht also \lstinline+\usepackage[textgreek = cbgreek]{chemnum}+. Wenn Sie \chemnum ohne Option verwenden, wird \textsf{textgreek} nicht verwendet. Das entspricht \lstinline+\usepackage[textgreek = false]{chemnum}+, der Voreinstellung. -Wenn Sie das \textsf{textgreek}-Paket nicht installiert haben und keine griechischen Label be\-nö\-ti\-gen, können Sie \lstinline+\usepackage[textgreek = false]{chemnum}+ verwenden. Damit resultieren die Counter-Optionen \lstinline=greek= und \lstinline=Greek= in den Optionen \lstinline=alph= und \lstinline=Alph= (siehe Abschnitt \ref{ssec:counter}). +Dieses Dokument wurde mit \lstinline+\usepackage[textgreek]{chemnum}+ gesetzt. \section{Motivation} Soweit mir bekannt ist, gab es bislang drei Pakete, die das Nummerieren von Verbindungen erleichtern sollen. Sie alle haben ihre Schwächen. Das erste, \paket{chemcono}, hat für diesen Zweck Bibliographie-Befehle umdefiniert. Dort müs\-sen Verbindungen in einer Art Literaturliste definiert werden. Dadurch kann dann im Text auf sie referenziert werden. Da es die "`Verbindungs-Bibliothek"' immer mit ausgibt, schlägt der Paket-Autor folgendes vor: -\begin{myquote}{Stefan Schulz} +\begin{myquote}[Stefan Schulz] After compilation and printout, discard the last page. \end{myquote} Ganz offensichtlich ist das keine perfekte Lösung. Das zweite, \paket{chemcompounds}, ist enstanden, weil der Paket-Autor ebenfalls mit den Schwä\-chen von \textsf{chemcono} nicht mehr arbeiten wollte. Bei der Erstellung des Pakets hielt er sich stark an den gleichen prinzipiellen Mechanismus wie \textsf{chemcono}. -\begin{myquote}{Stephan Schenk} +\begin{myquote}[Stephan Schenk] When taking a closer look at the chemcono package, I realised that the only thing one has to do is to get rid of everything which produces text. Thus, as a basis I used the mechanism of \lstinline=\bibitem= and \lstinline=\cite= in pretty much the same way as \textsf{chemcono} does by extracting the corresponding code from \lstinline=article.cls= and \lstinline=latex.ltx= but deleting any unnecessary commands producing output. I also introduced several lines of code to make the printing of the compound names more customisable. \end{myquote} Manche Schwächen hat auch dieses Paket: @@ -210,6 +170,7 @@ Dann gibt es noch \paket{bpchem}, das Befehle ähnlich den Befehlen \lstinline=\ Wenn Ihnen irgendwelche fehlenden Features auf"|fallen, geben Sie mir bitte Bescheid, indem Sie mir eine E-Mail senden. +\newpage \section{Verbindungen Nummerieren}\label{sec:nummerieren} \subsection{Basisbefehl} Der eigentliche Befehl des Pakets ist @@ -233,7 +194,7 @@ Falls es nötig sein sollte, eine Verbindung zu deklarieren, ohne ein Label ausz Die versteckte Version\cmpd*{d} erzeugt zwar das Label, schreibt es aber nicht aus. Der n\"achste \cmpd{e} f\"uhrt die Z\"ahlung einfach weiter. Mit \cmpd{d} kann nat\"urlich auf das erzeugte Label zur\"uckgegriffen werden. \end{beispiel} -Als Label-Namen können Sie im Prinzip einsetzen, was Sie wollen\footnote{Es gibt ein Einschränkungen, siehe Abschnitt \ref{ssec:unterlabel} (S.\,\pageref{ssec:unterlabel}) und Abschnitt \ref{ssec:sub_label_marker} (S.\,\pageref{ssec:sub_label_marker}).}. Sie sollten allerdings darauf achten, dass der Name keine Leerzeichen enthält. Das führt zwar nicht unbedingt zu einem Fehler, könnte aber verschiedenen Labeln die gleiche Nummer zuweisen. +Als Label-Namen können Sie im Prinzip einsetzen, was Sie wollen\footnote{Es gibt ein Einschränkungen, siehe Abschnitt \ref{ssec:listen} (S.\, \pageref{ssec:listen}), Abschnitt \ref{sssec:list-input-sep} (S.\,\pageref{sssec:list-input-sep}), Abschnitt \ref{ssec:unterlabel} (S.\,\pageref{ssec:unterlabel}) und Abschnitt \ref{ssec:sub_label_marker} (S.\,\pageref{ssec:sub_label_marker}).}. Sie sollten allerdings darauf achten, dass der Name keine Leerzeichen enthält. Das führt zwar nicht unbedingt zu einem Fehler, könnte aber verschiedenen Labeln die gleiche Nummer zuweisen. \lstset{showspaces=true} \begin{beispiel} @@ -265,15 +226,16 @@ Genauso kann der Hauptname von kombiniert vergebenen Labeln einzeln aufgerufen w \cmpd{f} und \cmpd{g} \end{beispiel} -Wie Sie ein Label der Art \cmpd[sub-list={one,two}]{f} erzeugen können,wird in Abschnitt \ref{ssec:lists_ranges} erklärt. +Wie Sie ein Label der Art \cmpd[sub-list={one,two}]{f} erzeugen können,wird in Abschnitt \ref{sec:lists_ranges} erklärt. -\subsection{Listen} +\subsection{Listen}\label{ssec:listen} Tatsächlich wurde bislang nur die halbe Wahrheit über den Befehl erzählt. Er kann auch für mehrere Label auf einmal verwendet werden. Die richtige Beschreibung des Befehls lautet also eher: \begin{framed} \centering\lstinline=\cmpd{<(possibly comma separated list of) label name(s)>}= \end{framed} +Das bedeutet, dass in der Voreinstellung das Komma nicht Teil des Label-Namens sein kann, es sei den versteckt in geschweiften Klammern. Sie können das ändern, siehe Abschnitt \ref{sssec:list-input-sep} (S.\,\pageref{sssec:list-input-sep}). \begin{beispiel} Mehrere Label k\"onnen einfach durch Kommata getrennt eingegeben werden. Dann wird eine Liste wie \cmpd{a, b, c, e, g.two} ausgegeben. @@ -458,7 +420,7 @@ tun. Dieser Befehl ist vom Befehl \lstinline=\schemeref= des Pakets \paket{chems \caption{Schema mit automatisierten Labeln.} \end{scheme} \end{beispiel} -Sie nummerieren also im Schema die Substanzen mit \textsf{TMP1}, \textsf{TMP2} \usw durch. Diese Marker werden dann durch die entsprechenden Label ersetzt. Dafür verwendet \chemnum genau wie \textsf{chemscheme} den Befehl \lstinline=\psfrag=. Damit er funktioniert, müssen Sie also entweder über \textsc{latex}, \textsc{dvips}, \textsc{ps2pdf} kompilieren, oder \zB das Paket \paket{auto-pst-pdf} verwenden, um trotzdem \textsc{pdflatex} einsetzen zu können. +Sie nummerieren also im Schema die Substanzen mit \textsf{TMP1}, \textsf{TMP2} \usw durch. Diese Marker werden dann durch die entsprechenden Label ersetzt. Dafür verwendet \chemnum genau wie \textsf{chemscheme} den Befehl \lstinline=\psfrag=. Damit er funktioniert, müssen Sie also entweder über \textsc{latex}, \textsc{dvips}, \textsc{ps2pdf} kompilieren, oder \zB das Paket \paket{auto-pst-pdf} zusammen mit \textsc{pdflatex} einsetzen. \textsc{xelatex} wird leider nicht funktionieren, \textsc{lualatex} voraussichtlich ebensowenig, wurde aber vom Autor nicht getestet. In jedem Fall ist es wichtig, dass der Marker als \emph{Text} im \lstinline=eps= gespeichert ist. @@ -502,6 +464,65 @@ Natürlich funktioniert das mit Sublabeln nach dem gewohnten Muster: \end{beispiel} \cmpdreset[9] +\section{Listen und Bereiche von Sublabeln}\label{sec:lists_ranges} +Manchmal kann es nützlich oder erwünscht sein, ein Label mit einem Bereich von Sublabeln anzuzeigen. Nehmen wir an, Sie haben die Verbindungen \cmpd{q.one,q.two,q.three,q.four,q.five}, die sich \zB in ihren Substituenten unterscheiden. Unter Umständen möchte man auf alle gleichzeitig verweisen: \cmpd[cmpd-all]{q}. + +\chemnum stellt zwei Keys (siehe Abschnitt \ref{sec:cmpdsetup}) zur Verfügung, mit denen solche Label erzeugt werden können, und zwei, mit denen sie angepasst werden können. +\begin{framed} + \noindent\lstinline+cmpd-all = true/false+ \hfill Typ: \lstinline=boolean=\\ + \noindent\lstinline+sub-list = {<list of sublabel names>}+ \hfill Typ: \lstinline=other=\\ + \noindent\lstinline+sub-range-sep = <separator>+ \hfill Typ: \lstinline=literal=\\ + \noindent\lstinline+sub-range-marker = <marker>+ \hfill Typ: \lstinline=literal= +\end{framed} +Der Typ des Keys \lstinline=sub-list= unterscheidet sich von dem anderer Keys. Am besten schauen Sie Sich das Beispiel unten an. + +\begin{beispiel} + Liste von Labeln: \cmpd{q.one, q.two, q.three, q.four, q.five} \\ + Alle auf einmal: \cmpd[cmpd-all]{q} +\end{beispiel} + +Wenn Sie nicht auf alle Varianten auf einmal verweisen wollen, können Sie den Key \lstinline=sub-list=\label{key:sub-list} verwenden. Als Eingabe benötigt er eine Komma-separierte Liste der Sublabel-Namen, die zu dem Hauptlabel gehören, das Sie verwenden. +\begin{beispiel} + \cmpd[sub-list={one,three,four}]{q} +\end{beispiel} + +Sie können mit diesem Key auch Bereiche von Sublabeln darstellen. Als Marker zwischen den Namen der beiden Sublabel werden zwei Punkte \lstinline=..= verwendet. +\begin{beispiel} + \cmpd[sub-list={two..four}]{q}\\ + \cmpd[sub-list={one,three..five}]{q}\\ + \cmpd[sub-list={one..three,five}]{q} +\end{beispiel} + +Mit den Keys \lstinline=sub-range-sep= und \lstinline=sub-range-marker= kann man sowohl das Symbol, mit dem der Bereich angezeigt wird als auch den Marker für die Eingabe ändern. +\begin{beispiel} + \cmpdsetup{sub-range-sep = {---}, sub-range-marker = : } + \cmpd[sub-list={two:four}]{q} +\end{beispiel} + +Damit die Keys die richtigen Sublabel verwenden können, müssen diese deklariert worden sein. Daher werden sie aus der Datei \lstinline=<jobname>.cmpd= (angenommen Ihre Quelldatei heißt \lstinline=<jobname>.tex=) gelesen. Daher müssen Sie zweimal (oder öfter) kompilieren, bis alle Labels richtig dargestellt werden. + +Verwendet man Label mit Sublabel-Bereichen, dann möchte man vielleicht an anderer Stelle \emph{nur} das Sublabel ausgeben. Das ist möglich mit folgendem Key: +\begin{framed} + \noindent\lstinline+sub-only = true/false+\hfill Typ: \lstinline=boolean= +\end{framed} +\begin{beispiel} + % use packages `chemfig', `mhchem' and `booktabs' + \cmpd*{benzol.H,benzol.Me,benzol.OH,benzol.NH2} + \chemname{\chemfig{*6(=-=-(-R)=-)}}{\cmpd[cmpd-all]{benzol}} + \begin{tabular}{lll} + & \ce{{}-R} & Name \\\midrule + \cmpd[sub-only]{benzol.H} & \ce{{}-H} & Benzol \\ + \cmpd[sub-only]{benzol.Me} & \ce{{}-CH3} & Toluol \\ + \cmpd[sub-only]{benzol.OH} & \ce{{}-OH} & Phenol \\ + \cmpd[sub-only]{benzol.NH2} & \ce{{}-NH2} & Anilin + \end{tabular} +\end{beispiel} + +In der Zwischenzeit benötigt der Key \lstinline=sub-list= etwas Aufmerksamkeit. Leider ist automatisches Sortieren nicht so trivial, wie man sich wünschte. Daher müssen Sie die Sublabel-Namen in der richtigen Reihenfolge einsetzen, um Label wie diese zu vermeiden: +\begin{beispiel} + \cmpd[sub-list={five..three}]{q} or \cmpd[sub-list={three,one,four}]{q}. +\end{beispiel} + \section{Personalisieren}\label{sec:cmpdsetup} \subsection{Das Prinzip}\label{ssec:prinzip} Das Personalisieren geschieht mit einem Schlüssel-Wert-System. Einstellungen können dabei entweder zentral über @@ -534,7 +555,8 @@ Die Schlüssel sind in verschiedene Klassen\label{key_classes} unterteilt, die a \subsection{Schriftstil}\label{ssec:schriftstil} Um den Stil zu ändern, mit dem die Nummern geschrieben werden, verwenden Sie \begin{framed} -\noindent\lstinline+cmpd-style = <style>+ \hfill Typ: \lstinline=macro= +\noindent\lstinline+cmpd-style = <style>+ \hfill Typ: \lstinline=macro=\\ +\noindent\lstinline+cmpd-weight = bold/normal+ \hfill Typ: \lstinline=choice= \end{framed} \begin{beispiel} % preamble: @@ -544,8 +566,10 @@ Um den Stil zu ändern, mit dem die Nummern geschrieben werden, verwenden Sie \cmpd[cmpd-style = \uline]{a, b, f.two, k}\\ % unterstrichen \cmpd{a, b, f.two, k}\\ % wieder default \cmpdsetup{cmpd-style = \itshape\uline} - \cmpd{a, b, f.two, k} % kursiv und unterstrichen + \cmpd{a, b, f.two, k}\\ % kursiv und unterstrichen + \cmpd[cmpd-weight=normal]{a, b, f.two, k} \end{beispiel} +Dass die Schriftstärke separat eingestellt wird, hat seine Ursache bei den griechischen Labeln (siehe Abschnitt \ref{ssec:counter}). Abhängig von der Paketoption muss die Schriftstärke dort unterschiedlich realisiert werden. \subsection{Eigene Labels}\label{ssec:own_labels} Mit dem Schlüssel @@ -595,7 +619,7 @@ Benötigen \emph{zwei} Token als Wert! \cmpdsetup{cmpd-delim = ()} \cmpd{a, b, f.two, k} % eingeklammert \end{beispiel} -Bitte Beachten Sie, dass die Default-Werte (siehe S.\,\pageref{opt:default} und \pageref{ssec:uebersicht}) von \lstinline=cmpd-delim= und \lstinline=list-delim= und die Voreinstellung von \chemnum \emph{nicht} übereinstimmen. Per Default verwendet \chemnum keine Begrenzer. Beachten Sie außerdem, dass die Listenbegrenzer erst ab \emph{zwei} Labeln verwendet werden. +Wenn Sie \lstinline=\cmpd[cmps-delim]{<label>]= schreiben, also keinen Wert spezifizieren, werden \lstinline=()= verwendet. Dasselbe gilt für \lstinline=list-delim=. Beachten Sie, dass die Listenbegrenzer erst ab \emph{zwei} Labeln verwendet werden. \begin{beispiel} \cmpd{a, b, f.two, k}\\ % default \cmpd[list-delim = {[}{]}]{a, b, f.two, k}\\ % eingeklammert @@ -606,7 +630,7 @@ Bitte Beachten Sie, dass die Default-Werte (siehe S.\,\pageref{opt:default} und \end{beispiel} Wenn Sie generell die Label eingeklammert verwenden, aber ein einzelnes einmal ohne Klammern verwenden wollen, haben Sie mehrere Möglichkeiten: \begin{beispiel} - \cmpdsetup{cmpd-delim = ()} + \cmpdsetup{cmpd-delim} Normal \cmpd{b}, \cmpd{c}, \cmpd{d.one}, aber manchmal so \cmpd[cmpd-delim = ]{e} oder so \cmpd-{e}. \end{beispiel} Mit @@ -638,7 +662,7 @@ Beispiel für die Label-Attribute: \begin{beispiel} \cmpd{a, b, f.two, k}\\ % default \cmpd[cmpd-prefix = Nr.]{a, b, f.two, k}\\ - \cmpdsetup{cmpd-prefix = \textnumero} + \cmpdsetup{cmpd-prefix = \(\rightarrow\)} \cmpd{a, b, f.two, k}\\ \cmpd{a} % KEINE Liste! \end{beispiel} @@ -678,16 +702,30 @@ Haben Sie Label mit Sublabeln, können Sie dort auch ein Trenn-Symbol verwenden. \cmpd[cmpd-sep = :]{a, b, f.two, f.three, k} \end{beispiel} +\subsubsection{Bei Listen -- Eingabe}\label{sssec:list-input-sep} +Wenn Sie mögen, können Sie das Trennsymbol der Listen-Eingabe ändern. Per Default wird hier das Komma verwendet. +\begin{framed} +\noindent\lstinline+list-input-sep = <separator>+ \hfill Typ: \lstinline=literal= +\end{framed} +\begin{beispiel} + \cmpd{a, b, f.two, k}\\ % default + \cmpd[list-input-sep = +]{a + b + f.two + k}\\ + \cmpd{a, b, f.two, k}\\ + \cmpdsetup{list-input-sep = ;} + \cmpd{a; b; f.two; k} +\end{beispiel} +Das ermöglicht Ihnen \zB, IUPAC-Namen als Label-Namen zu verwenden\footnote{Vielen Dank an Christina Lüdingk, die dieses Feature in gewisser Weise vorgeschlagen hat.}. + \subsubsection{Bei Listen -- allgemein} Auch bei Listen lässt sich ein Trennsymbol festlegen, das bestimmt, wie einzelne Label voneinander getrennt werden. Per Default ist das das Komma. \begin{framed} -\noindent\lstinline+list-sep = <separator>+ \hfill Typ: \lstinline=literal= +\noindent\lstinline+list-output-sep = <separator>+ \hfill Typ: \lstinline=literal= \end{framed} \begin{beispiel} \cmpd{a, b, f.two, k}\\ % default - \cmpd[list-sep = ]{a, b, f.two, k}\\ + \cmpd[list-output-sep = ]{a, b, f.two, k}\\ \cmpd{a, b, f.two, k}\\ - \cmpdsetup{list-sep = ;} + \cmpdsetup{list-output-sep = ;} \cmpd{a, b, f.two, k} \end{beispiel} @@ -717,12 +755,12 @@ Sie können den letzten Trenner mit \lstinline=list-last-sep= auch individuell f \cmpd[list-last-sep = empty]{a, b, f.two, k} \end{beispiel} -Ein spezieller Wert ist \lstinline=empty=. Wird er verwendet, wird überall der Trenner eingesetzt, der mit \lstinline=list-sep= festgelegt wurde. +Ein spezieller Wert ist \lstinline=empty=. Wird er verwendet, wird überall der Trenner eingesetzt, der mit \lstinline=list-output-sep= festgelegt wurde. \begin{beispiel} \cmpdsetup{list-last-sep = empty}% \cmpd{a, b, f.two, k}\\ - \cmpd[list-sep = ;]{a, b, f.two, k}\\ - \cmpd[list-sep = {\ und}]{a, b, f.two, k} + \cmpd[list-output-sep = ;]{a, b, f.two, k}\\ + \cmpd[list-output-sep = {\ und}]{a, b, f.two, k} \end{beispiel} \subsection{Sublabel-Marker}\label{ssec:sub_label_marker} @@ -736,78 +774,62 @@ Als Voreinstellung verwendet \chemnum den Punkt \lstinline=.= als Zeichen, um Ha \cmpd[sub-marker= +]{f+one, g+two}\\ \cmpd[sub-marker= ~]{f~one, g~two}\\ \cmpd[sub-marker= &]{f&one, g&two}\\ - \cmpd[sub-marker= *]{f*one, g*two} + \cmpd[sub-marker= *]{f*one, g*two}\\ + \cmpd[sub-marker=\marker]{f\marker one,g\marker two} \end{beispiel} Sie sollten -- nicht nur aus Gründen der Konsistenz -- nur \emph{einmal} am Anfang ihres Dokuments entscheiden, welches Zeichen Sie verwenden. Und zwar \emph{bevor} Sie \lstinline=\tableofcontents= einsetzen. Am besten in der Präambel. Ansonsten kann \lstinline=\tableofcontents= nicht wissen, welchen Marker Sie verwenden und Label im Inhaltsverzeichnis können falsch dargstellt werden. -\subsection{Listen und Bereiche von Sublabeln}\label{ssec:lists_ranges} -Manchmal kann es nützlich oder erwünscht sein, ein Label mit einem Bereich von Sublabeln anzuzeigen. Nehmen wir an, Sie habe die Verbindungen \cmpd{q.one,q.two,q.three,q.four,q.five}, die sich \zB in ihren Substituenten unterscheiden. Unter Umständen möchte man auf alle gleichzeitig verweisen: \cmpd[cmpd-all]{q}. - -\chemnum stellt zwei Keys zur Verfügung, mit denen solche Label erzeugt werden können, und zwei, mit denen sie angepasst werden können. -\begin{framed} - \noindent\lstinline+cmpd-all = <bool>+ \hfill Typ: \lstinline=boolean=\\ - \noindent\lstinline+sub-list = {<list of sublabel names>}+ \hfill Typ: \lstinline=other=\\ - \noindent\lstinline+sub-range-sep = <separator>+ \hfill Typ: \lstinline=literal=\\ - \noindent\lstinline+sub-range-marker = <marker>+ \hfill Typ: \lstinline=literal= -\end{framed} -Der Typ des Keys \lstinline=sub-list= unterscheidet sich von dem anderer Keys. Er ähnelt \lstinline=literal=. Am besten schauen Sie Sich das Beispiel unten an. - -\begin{beispiel} - Liste von Labeln: \cmpd{q.one, q.two, q.three, q.four, q.five} \\ - Alle auf einmal: \cmpd[cmpd-all]{q} -\end{beispiel} - -Wenn Sie nicht auf alle Varianten auf einmal verweisen wollen, können Sie den Key \lstinline=sub-list=\label{key:sub-list} verwenden. Als Eingabe benötigt er eine Komma-separierte Liste der Sublabel-Namen, die zu dem Hauptlabel gehören, das Sie verwenden. -\begin{beispiel} - \cmpd[sub-list={one,three,four}]{q} -\end{beispiel} - -Sie können mit diesem Key auch Bereiche von Sublabeln darstellen. Als Marker zwischen den Namen der beiden Sublabel werden zwei Punkte \lstinline=..= verwendet. -\begin{beispiel} - \cmpd[sub-list={two..four}]{q}\\ - \cmpd[sub-list={one,three..five}]{q}\\ - \cmpd[sub-list={one..three,five}]{q} -\end{beispiel} - -Mit den Keys \lstinline=sub-range-sep= und \lstinline=sub-range-marker= kann man sowohl das Symbol, mit dem der Bereich angezeigt wird als auch den Marker für die Eingabe ändern. +\section{Sprachunterstützung}\label{sec:language_support} +\subsection{Zusammenarbeit mit \textsf{babel}} +\chemnum unterstützt die Sprachauswahl durch das \paket{babel}-Paket für eine Reihe von Sprachen. Dies geschieht mit Hilfe des \textsf{translator} Pakets, falls es vorhanden. Kann \textsf{translator} nicht geladen werden, muss die Sprachunterstützung von Hand vorgenommen werden, siehe Abschnitt \ref{sssec:last-sep}. Die Einstellung von Hand funktioniert natürlich auch, wenn \textsf{translator} geladen wurde. \begin{beispiel} - \cmpdsetup{sub-range-sep = {--}, sub-range-marker = : } - \cmpd[sub-list={two:four}]{q} + \selectlanguage{ngerman}DE: \cmpd{r,s,t} \selectlanguage{german}\cmpd{r,s,t}\\ + \selectlanguage{naustrian}AU: \cmpd{r,s,t} \selectlanguage{austrian}\cmpd{r,s,t}\\ + \selectlanguage{english}EN: \cmpd{r,s,t}\\ + \selectlanguage{british}GB: \cmpd{r,s,t}\\ + \selectlanguage{american}US: \cmpd{r,s,t}\\ + \selectlanguage{canadian}CDN-EN: \cmpd{r,s,t}\\ + \selectlanguage{canadien}CDN-FR: \cmpd{r,s,t}\\ + \selectlanguage{french}FR: \cmpd{r,s,t}\\ + \selectlanguage{spanish}ES: \cmpd{r,s,t}\\ + \selectlanguage{italian}IT: \cmpd{r,s,t} \end{beispiel} +Bei weitem nicht alle Sprachen werden unterstützt, schon allein aus Machbarkeitsgründen. Falls Ihnen eine Sprache fehlen sollte, senden Sie mir bitte eine E-Mail\footnote{\href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu}} mit der dazugehörigen \textsf{babel} Option und der richtigen Übersetzung, und ich werde sie gerne hinzufügen. -Damit die Keys die richtigen Sublabel verwenden können, müssen diese deklariert worden sein. Daher werden sie aus der Datei \lstinline=<jobname>.cmpd= (angenommen Ihre Quelldatei heißt \lstinline=<jobname>.tex=) gelesen. Daher müssen Sie zweimal (oder öfter) kompilieren, bis alle Labels richtig dargestellt werden. +\subsection{Harvard-Komma}\label{ssec:harvard-comma} +Im US-Amerikanischen ist die Verwendung des sogenannten Harvard- oder Oxford-Kommas weit verbreitet, im Britischen und in anderen europäischen Sprachen ist sie eher unüblich. +\begin{myquote}[\href{http://en.wikipedia.org/wiki/Serial_comma}{Wikipedia}, 2011/11/07] + The serial comma (also known as the Oxford comma or Harvard comma, and sometimes referred to as the series comma) is the comma used immediately before a coordinating conjunction (usually and or or, and sometimes nor) preceding the final item in a list of three or more items. For example, a list of three countries can be punctuated as either "Portugal, Spain, and France" (with the serial comma) or as "Portugal, Spain and France" (without the serial comma). -Verwendet man Label mit Sublabel-Bereichen, dann möchte man vielleicht an anderer Stelle \emph{nur} das Sublabel ausgeben. Das ist möglich mit folgendem Key: + Opinions vary among writers and editors on the usage or avoidance of the serial comma. In American English, the serial comma is standard usage in non-journalistic writing that follows the \textsc{Chicago Manual of Style}. Journalists, however, usually follow the AP Stylebook, which advises against it. It is used less often in British English, where it is standard usage to leave it out, with some notable exceptions such as \textsc{Fowler's Modern English Usage}. In many languages (e.g., French, German, Italian, Polish, Spanish), the serial comma is not the norm and may even go against punctuation rules. It may be recommended in many cases, however, to avoid ambiguity or to aid prosody. +\end{myquote} +\chemnum verwendet das Harvard-Komma bei der Verwendung von American English, nicht aber bei anderen Sprachen. Sie haben jedoch die Möglichkeit, das Harvard-Komma mit dem Schlüssel \begin{framed} - \noindent\lstinline+sub-only = <bool>+\hfill Typ: \lstinline=boolean= +\noindent\lstinline+list-serial-comma = true/false+ \hfill Typ: \lstinline=boolean=\label{key:list-serial-comma} \end{framed} +\noindent nach Belieben zu (De-)Aktivieren. \begin{beispiel} - % use packages `chemfig', `mhchem' and `booktabs' - \cmpd*{benzol.H,benzol.Me,benzol.OH,benzol.NH2} - \chemname{\chemfig{*6(=-=-(-R)=-)}}{\cmpd[cmpd-all]{benzol}} - \begin{tabular}{lll} - & \ce{{}-R} & Name \\\midrule - \cmpd[sub-only]{benzol.H} & \ce{{}-H} & Benzol \\ - \cmpd[sub-only]{benzol.Me} & \ce{{}-CH3} & Toluol \\ - \cmpd[sub-only]{benzol.OH} & \ce{{}-OH} & Phenol \\ - \cmpd[sub-only]{benzol.NH2} & \ce{{}-NH2} & Anilin - \end{tabular} + \selectlanguage{ngerman}DE: \cmpd[list-serial-comma]{r,s,t} vs. \cmpd{r,s,t}\\ + \selectlanguage{american}US: \cmpd[list-serial-comma=false]{r,s,t} vs. \cmpd{r,s,t} \end{beispiel} - -In der Zwischenzeit benötigt der Key \lstinline=sub-list= etwas Aufmerksamkeit. Leider ist automatisches Sortieren nicht so trivial, wie man sich wünschte. Daher müssen Sie die Sublabel-Namen in der richtigen Reihenfolge einsetzen, um Label wie diese zu vermeiden: +Wenn Sie die Spracheinstellung manuell vornehmen, beachten Sie, dass dabei auf die Voreinstellung der Sprache zurückgesetzt wird. Daher sollte \lstinline=list-serial-comma= \emph{nach} \lstinline=list-lang= verwendet werden. \begin{beispiel} - \cmpd[sub-list={five..three}]{q} or \cmpd[sub-list={three,one,four}]{q}. + falsch: \cmpdsetup{list-serial-comma=false, list-lang=US}\cmpd{r,s,t}\\ + richtig: \cmpdsetup{list-lang=US, list-serial-comma=false}\cmpd{r,s,t} \end{beispiel} -\subsection{Übersicht}\label{ssec:uebersicht} -Im folgenden sind alle verfügbaren Schlüssel aufgelistet. Bitte beachten Sie, dass die Default-Werte von \lstinline=cmpd-delim= und \lstinline=list-delim= \emph{nicht} mit der Voreinstellung von \chemnum über\-ein\-stim\-men. \chemnum setzt in der Voreinstellung \emph{keine} Begrenzer. +\newpage +\section{Übersicht} +\subsection{Keys}\label{ssec:keys_uebersicht} +Im folgenden sind alle verfügbaren Schlüssel aufgelistet. \begin{center} \label{tab:keys} \begin{longtabu*}{>{\ttfamily}l>{\ttfamily}l>{\ttfamily}l}\toprule \normalfont\bfseries key & \normalfont\bfseries default & \normalfont\bfseries type \\\midrule - cmpd-style & \lstinline=\textbf= & macro \\ + cmpd-style & & macro \\ + cmpd-weight & bold & choice \\ cmpd-label & & literal \\ - cmpd-delim$^\mathrm{a}$ & () & literal \\ + cmpd-delim$^\mathrm{a}$ & & literal \\ cmpd-odelim & & literal \\ cmpd-cdelim & & literal \\ cmpd-prefix & & literal \\ @@ -819,15 +841,16 @@ Im folgenden sind alle verfügbaren Schlüssel aufgelistet. Bitte beachten Sie, sub-marker & . & literal \\ sub-counter & alph & choice \\ sub-list & & other$^\mathrm{b}$ \\ - sub-range-sep & - & literal \\ + sub-range-sep & -- & literal \\ sub-range-marker & .. & literal \\ sub-only & & boolean \\\midrule - list-delim$^\mathrm{a}$ & () & literal \\ + list-delim$^\mathrm{a}$ & & literal \\ list-odelim & & literal \\ list-cdelim & & literal \\ list-prefix & & literal \\ list-suffix & & literal \\ - list-sep & , & literal \\ + list-input-sep & , & literal \\ + list-output-sep & , & literal \\ list-lang & US & choice \\ list-last-sep & and$^\mathrm{c}$ & literal \\ list-serial-comma & & boolean \\\midrule @@ -840,46 +863,7 @@ Im folgenden sind alle verfügbaren Schlüssel aufgelistet. Bitte beachten Sie, \end{tabular} \end{center} -\section{Sprachunterstützung}\label{sec:language_support} -\subsection{Zusammenarbeit mit \textsf{babel}} -\chemnum unterstützt die Sprachauswahl durch das \paket{babel}-Paket für eine Reihe von Sprachen. Dies geschieht mit Hilfe des \textsf{translator} Pakets, falls es vorhanden. Kann \textsf{translator} nicht geladen werden, muss die Sprachunterstützung von Hand vorgenommen werden, siehe Abschnitt \ref{sssec:last-sep}. Die Einstellung von Hand funktioniert natürlich auch, wenn \textsf{translator} geladen wurde. -\begin{beispiel} - \selectlanguage{ngerman}DE: \cmpd{r,s,t} \selectlanguage{german}\cmpd{r,s,t}\\ - \selectlanguage{naustrian}AU: \cmpd{r,s,t} \selectlanguage{austrian}\cmpd{r,s,t}\\ - \selectlanguage{english}EN: \cmpd{r,s,t}\\ - \selectlanguage{british}GB: \cmpd{r,s,t}\\ - \selectlanguage{american}US: \cmpd{r,s,t}\\ - \selectlanguage{canadian}CDN-EN: \cmpd{r,s,t}\\ - \selectlanguage{canadien}CDN-FR: \cmpd{r,s,t}\\ - \selectlanguage{french}FR: \cmpd{r,s,t}\\ - \selectlanguage{spanish}ES: \cmpd{r,s,t}\\ - \selectlanguage{italian}IT: \cmpd{r,s,t} -\end{beispiel} -Bei weitem nicht alle Sprachen werden unterstützt, schon allein aus Machbarkeitsgründen. Falls Ihnen eine Sprache fehlen sollte, senden Sie mir bitte eine E-Mail\footnote{\href{mailto:contact@mychemistry.eu}{contatc@mychemistry.eu}} mit der dazugehörigen \textsf{babel} Option und der richtigen Übersetzung, und ich werde sie gerne hinzufügen. - -\subsection{Harvard-Komma}\label{ssec:harvard-comma} -Im US-Amerikanischen ist die Verwendung des sogenannten Harvard- oder Oxford-Kommas weit verbreitet, im Britischen und in anderen europäischen Sprachen ist sie eher unüblich. -\begin{myquote}{\href{http://en.wikipedia.org/wiki/Serial_comma}{Wikipedia}, 2011/11/07} - The serial comma (also known as the Oxford comma or Harvard comma, and sometimes referred to as the series comma) is the comma used immediately before a coordinating conjunction (usually and or or, and sometimes nor) preceding the final item in a list of three or more items. For example, a list of three countries can be punctuated as either "Portugal, Spain, and France" (with the serial comma) or as "Portugal, Spain and France" (without the serial comma). - - Opinions vary among writers and editors on the usage or avoidance of the serial comma. In American English, the serial comma is standard usage in non-journalistic writing that follows the \textsc{Chicago Manual of Style}. Journalists, however, usually follow the AP Stylebook, which advises against it. It is used less often in British English, where it is standard usage to leave it out, with some notable exceptions such as \textsc{Fowler's Modern English Usage}. In many languages (e.g., French, German, Italian, Polish, Spanish), the serial comma is not the norm and may even go against punctuation rules. It may be recommended in many cases, however, to avoid ambiguity or to aid prosody. -\end{myquote} -\chemnum verwendet das Harvard-Komma bei der Verwendung von American English, nicht aber bei anderen Sprachen. Sie haben jedoch die Möglichkeit, das Harvard-Komma mit dem Schlüssel -\begin{framed} -\noindent\lstinline+list-serial-comma = <bool>+ \hfill Typ: \lstinline=boolean=\label{key:list-serial-comma} -\end{framed} -\noindent nach Belieben zu (De-)Aktivieren. -\begin{beispiel} - \selectlanguage{ngerman}DE: \cmpd[list-serial-comma]{r,s,t} vs. \cmpd{r,s,t}\\ - \selectlanguage{american}US: \cmpd[list-serial-comma=false]{r,s,t} vs. \cmpd{r,s,t} -\end{beispiel} -Wenn Sie die Spracheinstellung manuell vornehmen, beachten Sie, dass dabei auf die Voreinstellung der Sprache zurückgesetzt wird. Daher sollte \lstinline=list-serial-comma= \emph{nach} \lstinline=list-lang= verwendet werden. -\begin{beispiel} - falsch: \cmpdsetup{list-serial-comma=false, list-lang=US}\cmpd{r,s,t}\\ - richtig: \cmpdsetup{list-lang=US, list-serial-comma=false}\cmpd{r,s,t} -\end{beispiel} - -\section{Liste der Befehle} +\subsection{Befehle} Im folgenden werden alle von \chemnum definierten Befehle und deren Varianten aufgelistet. \begin{center} \label{tab:commands} diff --git a/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_en.pdf b/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_en.pdf Binary files differindex 220f97e332f..909bb378f42 100644 --- a/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_en.pdf +++ b/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_en.pdf diff --git a/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_en.tex b/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_en.tex index 192d5bf33cc..12936db8f55 100644 --- a/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_en.tex +++ b/Master/texmf-dist/doc/latex/chemnum/chemnum_doc_en.tex @@ -1,9 +1,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - chemnum - chemnum_doc_en.tex - % -% - a comprehensive numbering method for chemical compounds - % +% - a comprehensive approach for the numbering of chemical compounds - % % ------------------------------------------------------------------------------------- % % - Clemens NIEDERBERGER - % -% - 2011/11/08 - % +% - 2011/12/01 - % % ------------------------------------------------------------------------------------- % % - http://www.mychemistry.eu/ - % % - contact@mychemistry.eu - % @@ -26,72 +26,29 @@ % - The Current Maintainer of this work is Clemens Niederberger. - % % - - % % - This work consists of the files chemnum.sty, chemnum_doc_de.tex, - % -% - chemnum_doc_en.tex, bsp.tex, scheme-tmp.eps, scheme-bla.eps README and the - % -% - derived files chemnum_doc_de.pdf and chemnum_doc_en.pdf - % +% - chemnum_doc_en.tex, chemnum-codehelper.tex, scheme-tmp.eps, scheme-bla.eps, - % +% - README and the derived files chemnum_doc_de.pdf and chemnum_doc_en.pdf - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[DIV11]{scrartcl} \usepackage[ngerman,german,naustrian,austrian,english,british,american,canadian,french,canadien,spanish,italian]{babel} - +\usepackage[T1]{fontenc} \usepackage[utf8]{inputenx} -\usepackage{chemnum,textcomp,lmodern,microtype,url,xspace,booktabs,longtable,tabu,chemscheme} +\usepackage[textgreek]{chemnum} +\usepackage{textcomp,microtype,libertine,url,xspace,longtable,tabu,booktabs,chemscheme} \usepackage[version=3]{mhchem} \usepackage[normalem]{ulem} \usepackage[dvipsnames]{xcolor} \colorlet{code}{RawSienna} + \colorlet{shadecolor}{yellow!20} + \definecolor{myblue}{rgb}{0.02,0.04,0.48} + \definecolor{myred}{rgb}{0.65,0.04,0.07} \usepackage[runs=2]{auto-pst-pdf} \usepackage{chemfig,chemmacros} -\input{bsp} -\lstset{ - language=[LaTeX]TeX, - basicstyle={\ttfamily}, % Grundstil - extendedchars=true, - numbers=left, % Zeilennummern - numberstyle=\tiny, % Größe des Zeilennummern - numberblanklines=true, % Leerzeilen nummerieren - gobble=0, % das erste Leerzeichen abschneiden - xleftmargin=20pt, % Einrückung links - breaklines=true, % Zeilenumbruch - literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1, - moredelim=[is][\color{red!25!purple}]{!!}{!!},% Hervorhebung - moredelim=[is][\color{black}]{++}{++}, % Hervorhebung der Keywords rückgängig - commentstyle={\color[named]{Gray}}, - keywordstyle=\color{code}, - texcsstyle=[30]\color{code}, - moretexcs=[30] - { - @m, - bf, - cmpd, - cmpdinit, - cmpdref, - cmpdreset, - cmpdsetup, - CNlabel, - CNlabelnoref, - CNref, - CNlabelsub, - CNlabelsubnoref, - CNrefsub, - declarecompound, - compound, - compoundprefix, - compoundsuffix, - fcite, - lstinline, - penalty, - psfrag, - schemeref, - sf, - tableofcontents, - textcolor, - textnumero, - theffbibliography, - uline - } - }% +\input{chemnum-codehelper} \usepackage{hyperref} \hypersetup{colorlinks=true, + allcolors=myblue, plainpages=false, bookmarksopen=true, bookmarksopenlevel=2, @@ -118,32 +75,31 @@ } \ExplSyntaxOff -\newcommand*\chemnum{\textsf{chemnum}\xspace} -\newcommand*\CNversion{v0.3c\xspace} -\newcommand*\CNdate{2011/11/08\xspace} +\newcommand*\chemnum{{\scshape\textcolor{myblue}{chemnum}}\xspace} +\newcommand*\CNversion{v0.3e\xspace} +\newcommand*\CNdate{2011/12/01\xspace} \newcommand*\paket[1]{\textsf{#1}\footnote{\url{http://www.ctan.org/pkg/#1}}} \newcommand*\eg{\mbox{e.\,g.}\xspace} \newcommand*\ie{\mbox{i.\,e.}\xspace} \newcommand*\etc{\mbox{etc.}\xspace} -\cmpdinit*{a,aa,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,benzol} +\cmpdinit*{a,aa,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,benzene,r,s,t} \begin{document} \selectlanguage{english} \begin{titlepage} \centering - \Huge chemnum \CNversion + \Huge\textcolor{myblue}{\biolinumshadow[\fontsize{1.5cm}{1.6cm}\fontshape{sc}]{chemnum}} \vskip.5cm - \Large \CNdate + \Large \CNversion \qquad \CNdate \vskip.5cm \large Clemens \textsc{Niederberger} \vskip.25cm \normalsize\url{http://www.mychemistry.eu/}\\ \href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu} - \vskip2cm - \begin{abstract} - \chemnum is a new and hopefully comprehensive approach for the numbering of chemical compounds. - \end{abstract} + \begin{center}\Large\color{myblue} + A comprehensive approach for the numbering of chemical compounds with \LaTeXe. + \end{center} \vskip3cm \cmpdinit*{glucose.alpha, glucose.beta, glucose.chain} \cmpd*[sub-counter = greek]{glucose.alpha, glucose.beta}\cmpd*{glucose.chain} \setatomsep{2em} @@ -172,16 +128,16 @@ \chemnum internally loads the packages \textsf{expl3} and \paket{xparse}. \textsf{xparse} is part of the \paket{l3packages} bundle, \textsf{expl3} is part of the \paket{l3kernel} bundle. This means, \chemnum needs \LaTeX3 Support. -\chemnum also needs the packages \paket{etoolbox}, \paket{psfrag} and (sometimes) \paket{textgreek}, see section \ref{sec:package_options}. +\chemnum also needs the packages \paket{etoolbox}, \paket{psfrag} and either \paket{textgreek} or \paket{bm}, see section \ref{sec:package_options}. \section{Package Options}\label{sec:package_options} \chemnum has one package option. \begin{framed} \centering\lstinline+\usepackage[textgreek = <value>]{chemnum}+ \end{framed} -With this you can both choose between the three different styles of the \textsf{textgreek} package\footnote{See the \textsf{textgreek} documentation for details.} or load \chemnum without the \textsf{textgreek} package. Available values are \lstinline=artemisia=, \lstinline=cbgreek=, \lstinline=euler= and \lstinline=false=. If you use \chemnum without option, then \textsf{textgreek} is loaded with the \lstinline=cbgreek= style. Using \lstinline+\usepackage[textgreek]{chemnum}+ is the same as \lstinline+\usepackage[textgreek = cbgreek]{chemnum}+ and \lstinline+\usepackage{chemnum}+. +With this you can both choose between the three different styles of the \textsf{textgreek} package\footnote{See the \textsf{textgreek} documentation for details.} or load \chemnum without the \textsf{textgreek} package. Available values are \lstinline=artemisia=, \lstinline=cbgreek=, \lstinline=euler= and \lstinline=false=. Using \lstinline+\usepackage[textgreek]{chemnum}+ is the same as \lstinline+\usepackage[textgreek = cbgreek]{chemnum}+. If you use \chemnum without option \textsf{textgreek} is not used. This corresponds to \lstinline+\usepackage[textgreek = false]{chemnum}+, the default setting. -If you don't have the \textsf{textgreek} package installed and don't need to use greek labels, you can use \lstinline+\usepackage[textgreek = false]{chemnum}+. Then choosing the counter options \lstinline=greek= or \lstinline=Greek= will the result in using \lstinline=alph= or \lstinline=Alph=, respectively (see section \ref{ssec:counter}). +This document was set with \lstinline+\usepackage[textgreek]{chemnum}+. \section{Motivation} As far as I know there are three packages that are meant to help with numbering chemical compounds. All of them have their weaknesses. @@ -234,7 +190,7 @@ If it is necessary to declare a compound without printing the label, this is pos The hidden version\cmpd*{d} declares the label but doesn't print anything. The next \cmpd{e} continues to count with the next number. With \cmpd{d} the label can be used, of course. \end{beispiel} -You can pretty much use what you like for a label name\footnote{There are restrictions, see section \ref{ssec:unterlabel} on page \pageref{ssec:unterlabel} and section \ref{ssec:sub_label_marker} on page \pageref{ssec:sub_label_marker}.}. You shouldn't leave blanks in the name, though. This may not cause an error at all, but \emph{could} declare different compounds with the same name. +You can pretty much use what you like for a label name\footnote{There are restrictions, see section \ref{ssec:listen} on page \pageref{ssec:listen}, section \ref{sssec:list-input-sep} on page \pageref{sssec:list-input-sep}, section \ref{ssec:unterlabel} on page \pageref{ssec:unterlabel} and section \ref{ssec:sub_label_marker} on page \pageref{ssec:sub_label_marker}.}. You shouldn't leave blanks in the name, though. This may not cause an error at all, but \emph{could} declare different compounds with the same name. \begin{beispiel} \cmpd{aa }, \cmpd{a a }, \cmpd{a a}, \cmpd{ a a}, \cmpd{ aa} and \cmpd{ aa } all have the same label. As well as \cmpd{aa }, \cmpd{a a}, \cmpd{ aa} and \cmpd{aa}. @@ -265,13 +221,14 @@ The same way the main name of combined labels can be used solely. How you can create a label like \cmpd[sub-list={one,two}]{f} is explained in section \ref{ssec:lists_ranges}. -\subsection{Lists} +\subsection{Lists}\label{ssec:listen} There is actually more to the \lstinline=\cmpd= command. It also prints lists of labels. The right description would be something like: \begin{framed} \centering\lstinline=\cmpd{<(possibly comma separated list of) label name(s)>}= \end{framed} +This means that with default settings the comma can't be part of the label name unless hidden in braces. You can change that, see section \ref{sssec:list-input-sep} on page \pageref{sssec:list-input-sep}. \begin{beispiel} More than one label can be put inside \verb=\cmpd=, separated by commas. Then a list like \cmpd{a, b, c, e, g.two} is printed. @@ -526,9 +483,10 @@ The keys are divided in to different classes\label{key_classes}, which indicate \end{description} \subsection{Font style}\label{ssec:schriftstil} -With the key +With the keys \begin{framed} \noindent\lstinline+cmpd-style = <style>+ \hfill type: \lstinline=macro= +\noindent\lstinline+cmpd-weight = bold/normal+ \hfill type: \lstinline=choice= \end{framed} \noindent you can change the style with which the labels are printed. @@ -540,8 +498,10 @@ With the key \cmpd[cmpd-style = \uline]{a, b, f.two, k}\\ % underlined \cmpd{a, b, f.two, k}\\ % default again \cmpdsetup{cmpd-style = \itshape\uline} - \cmpd{a, b, f.two, k} % underlined and in italics + \cmpd{a, b, f.two, k}\\ % underlined and in italics + \cmpd[cmpd-weight=normal]{a, b, f.two, k} \end{beispiel} +The separate handling of the bold face is because of the greek labels (see section \ref{ssec:counter}). Depending on the package option \texttt{textgreek}, the bold face must realized differently. \subsection{Own labels}\label{ssec:own_labels} With the key @@ -591,7 +551,7 @@ values need \emph{two} tokens! \cmpdsetup{cmpd-delim = ()} \cmpd{a, b, f.two, k} % in braces \end{beispiel} -Please be aware that the default values (see pages \pageref{opt:default} and \pageref{ssec:uebersicht}) of \lstinline=cmpd-delim= and \lstinline=list-delim= and the default setting of \chemnum are \emph{not} the same. By default \chemnum doesn't use delimiters. Also please note that the list delimiters only are used if \lstinline=\cmpd= contains at least two label names. +Please be aware that the default values (see pages \pageref{opt:default} and \pageref{ssec:keys_uebersicht}) of \lstinline=cmpd-delim= and \lstinline=list-delim= and the default setting of \chemnum are \emph{not} the same. By default \chemnum doesn't use delimiters. Also please note that the list delimiters only are used if \lstinline=\cmpd= contains at least two label names. \begin{beispiel} \cmpd{a, b, f.two, k}\\ % default \cmpd[list-delim = {[}{]}]{a, b, f.two, k}\\ % in braces @@ -673,16 +633,30 @@ If you have labels with sublabels, you can use a separator symbol: \cmpd[cmpd-sep = :]{a, b, f.two, f.three, k} \end{beispiel} +\subsubsection{In case of lists -- input}\label{sssec:list-input-sep} +If you like you can change the list input seperator. Predefined is the comma. +\begin{framed} +\noindent\lstinline+list-input-sep = <separator>+ \hfill type: \lstinline=literal= +\end{framed} +\begin{beispiel} + \cmpd{a, b, f.two, k}\\ % default + \cmpd[list-input-sep = +]{a + b + f.two + k}\\ + \cmpd{a, b, f.two, k}\\ + \cmpdsetup{list-input-sep = ;} + \cmpd{a; b; f.two; k} +\end{beispiel} +With this you can for example use IUPAC names as label names\footnote{Thanks to Christina L\"udingk who in a way suggested this feature.}. + \subsubsection{In case of lists -- generally} In case of lists you also can set a separator symbol, which determines how the labels are separated from each other. This is the comma as default. \begin{framed} -\noindent\lstinline+list-sep = <separator>+ \hfill type: \lstinline=literal= +\noindent\lstinline+list-output-sep = <separator>+ \hfill type: \lstinline=literal= \end{framed} \begin{beispiel} \cmpd{a, b, f.two, k}\\ % default - \cmpd[list-sep = ]{a, b, f.two, k}\\ + \cmpd[list-output-sep = ]{a, b, f.two, k}\\ \cmpd{a, b, f.two, k}\\ - \cmpdsetup{list-sep = ;} + \cmpdsetup{list-output-sep = ;} \cmpd{a, b, f.two, k} \end{beispiel} @@ -712,12 +686,12 @@ With the key \lstinline=list-last-sep= you also can set the last separator indiv \cmpd[list-last-sep = empty]{a, b, f.two, k} \end{beispiel} -\lstinline=empty= is a special value. If it is used, the separator set with \lstinline=list-sep= is used for the whole list. +\lstinline=empty= is a special value. If it is used, the separator set with \lstinline=list-output-sep= is used for the whole list. \begin{beispiel} \cmpdsetup{list-last-sep = empty}% \cmpd{a, b, f.two, k}\\ - \cmpd[list-sep = ;]{a, b, f.two, k}\\ - \cmpd[list-sep = {\ and}]{a, b, f.two, k} + \cmpd[list-output-sep = ;]{a, b, f.two, k}\\ + \cmpd[list-output-sep = {\ and}]{a, b, f.two, k} \end{beispiel} \subsection{Sublabel marker}\label{ssec:sub_label_marker} @@ -731,7 +705,8 @@ As a default setting \chemnum uses the point \lstinline=.= as a token to divide \cmpd[sub-marker= +]{f+one, g+two}\\ \cmpd[sub-marker= ~]{f~one, g~two}\\ \cmpd[sub-marker= &]{f&one, g&two}\\ - \cmpd[sub-marker= *]{f*one, g*two} + \cmpd[sub-marker= *]{f*one, g*two}\\ + \cmpd[sub-marker=\marker]{f\marker one,g\marker two} \end{beispiel} You should -- not only for the sake of consistency -- decide only \emph{once} in the beginning of your document \emph{before} the \lstinline=\tableofcontents= or in the preamble, which marker you use. Otherwise, the \lstinline=\tableofcontents= won't know the marker anymore and your labels might be at least displayed wrong in the table of contents. Also you need to setup the marker \emph{before} you use it with \lstinline=\cmpd= or \lstinline=\cmpdinit= etc. @@ -794,47 +769,6 @@ For the time being the \lstinline=sub-list= key requires a little caution. Unfor \cmpd[sub-list={five..three}]{q} or \cmpd[sub-list={three,one,four}]{q}. \end{beispiel} -\subsection{Overview}\label{ssec:uebersicht} -In this section all keys are listed. Please be aware that the default values of \lstinline=cmpd-delim= and \lstinline=list-delim= and the default setting of \chemnum are \emph{not} the same. By default \chemnum doesn't use delimiters. -\begin{center} - \label{tab:keys} - \begin{longtabu*}{>{\ttfamily}l>{\ttfamily}l>{\ttfamily}l}\toprule - \normalfont\bfseries key & \normalfont\bfseries default & \normalfont\bfseries type \\\midrule - cmpd-style & \lstinline=\textbf= & macro \\ - cmpd-label & & literal \\ - cmpd-delim$^\mathrm{a}$ & () & literal \\ - cmpd-odelim & & literal \\ - cmpd-cdelim & & literal \\ - cmpd-prefix & & literal \\ - cmpd-suffix & & literal \\ - cmpd-space & \lstinline=\penalty\@m\ = & literal \\ - cmpd-sep & & literal \\ - cmpd-counter & arabic & choice \\ - cmpd-all & true & boolean \\\midrule - sub-marker & . & literal \\ - sub-counter & alph & choice \\ - sub-list & & other$^\mathrm{b}$ \\ - sub-range-sep & - & literal \\ - sub-range-marker & .. & literal \\ - sub-only & & boolean \\\midrule - list-delim$^\mathrm{a}$ & () & literal \\ - list-odelim & & literal \\ - list-cdelim & & literal \\ - list-prefix & & literal \\ - list-suffix & & literal \\ - list-sep & , & literal \\ - list-lang & US & choice \\ - list-last-sep & and$^\mathrm{c}$ & literal \\ - list-serial-comma & & boolean \\\midrule - ref-tag & TMP & literal \\\bottomrule - \end{longtabu*} - \begin{tabular}{>{\footnotesize}r>{\footnotesize\raggedright}p{.3\linewidth}} - a & value needs \emph{two} tokens. \tabularnewline - b & input is a comma separated list, see p.\,\pageref{key:sub-list}. \tabularnewline - c & depends on the value of \lstinline=list-lang= and the usage of \textsf{babel}. - \end{tabular} -\end{center} - \section{Language Support}\label{sec:language_support} \subsection{Cooperation with \textsf{babel}} \chemnum supports the language choice made with the \paket{babel} package for a number of languages. This is done with the \lstinline=\translate= command of the \textsf{translator} package, if it is available. If \textsf{translator} cannot be loaded, language support must be done manually, see section \ref{sssec:last-sep}. Manual language settings can of course still be done, if \textsf{translator} has been loaded. @@ -873,7 +807,51 @@ If you choose the language manually, please note that this resets the default be right: \cmpdsetup{list-lang=US, list-serial-comma=false}\cmpd{r,s,t} \end{beispiel} -\section{List of commands} +\section{Overview} +\subsection{Keys}\label{ssec:keys_uebersicht} +In this section all keys are listed. +\begin{center} + \label{tab:keys} + \begin{longtabu*}{>{\ttfamily}l>{\ttfamily}l>{\ttfamily}l}\toprule + \normalfont\bfseries key & \normalfont\bfseries default & \normalfont\bfseries type \\\midrule + cmpd-style & & macro \\ + cmpd-weight & bold & choice \\ + cmpd-label & & literal \\ + cmpd-delim$^\mathrm{a}$ & () & literal \\ + cmpd-odelim & & literal \\ + cmpd-cdelim & & literal \\ + cmpd-prefix & & literal \\ + cmpd-suffix & & literal \\ + cmpd-space & \lstinline=\penalty\@m\ = & literal \\ + cmpd-sep & & literal \\ + cmpd-counter & arabic & choice \\ + cmpd-all & true & boolean \\\midrule + sub-marker & . & literal \\ + sub-counter & alph & choice \\ + sub-list & & other$^\mathrm{b}$ \\ + sub-range-sep & - & literal \\ + sub-range-marker & .. & literal \\ + sub-only & & boolean \\\midrule + list-delim$^\mathrm{a}$ & () & literal \\ + list-odelim & & literal \\ + list-cdelim & & literal \\ + list-prefix & & literal \\ + list-suffix & & literal \\ + list-input-sep & , & literal \\ + list-output-sep & , & literal \\ + list-lang & US & choice \\ + list-last-sep & and$^\mathrm{c}$ & literal \\ + list-serial-comma & & boolean \\\midrule + ref-tag & TMP & literal \\\bottomrule + \end{longtabu*} + \begin{tabular}{>{\footnotesize}r>{\footnotesize\raggedright}p{.3\linewidth}} + a & value needs \emph{two} tokens. \tabularnewline + b & input is a comma separated list, see p.\,\pageref{key:sub-list}. \tabularnewline + c & depends on the value of \lstinline=list-lang= and the usage of \textsf{babel}. + \end{tabular} +\end{center} + +\subsection{Commands} In this section all commands provided by \chemnum as well as their variants are listed. \begin{center} \label{tab:commands} diff --git a/Master/texmf-dist/tex/latex/chemnum/chemnum.sty b/Master/texmf-dist/tex/latex/chemnum/chemnum.sty index f543c8c883c..e14348008b3 100644 --- a/Master/texmf-dist/tex/latex/chemnum/chemnum.sty +++ b/Master/texmf-dist/tex/latex/chemnum/chemnum.sty @@ -1,9 +1,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - chemnum - chemnum.sty - % -% - a comprehensive numbering method for chemical compounds - % +% - a comprehensive approach for the numbering of chemical compounds - % % --------------------------------------------------------------------------- % % - Clemens NIEDERBERGER - % -% - 2011/11/08 - % +% - 2011/12/01 - % % --------------------------------------------------------------------------- % % - http://www.mychemistry.eu/ - % % - contact@mychemistry.eu - % @@ -26,12 +26,13 @@ % - The Current Maintainer of this work is Clemens Niederberger. - % % - - % % - This work consists of the files chemnum.sty, chemnum_doc_de.tex, - % -% - chemnum_doc_en.tex, bsp.tex, scheme-tmp.eps, scheme-bla.eps README and - % -% - the derived files chemnum_doc_de.pdf and chemnum_doc_en.pdf - % +% - chemnum_doc_en.tex, chemnum-codehelper.tex, scheme-tmp.eps, - % +% - scheme-bla.eps, README and the derived files chemnum_doc_de.pdf and - % +% - chemnum_doc_en.pdf - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\RequirePackage { expl3 , xparse , etoolbox , psfrag } +\RequirePackage { expl3 , xparse , l3keys2e , etoolbox , psfrag } -\ProvidesExplPackage {chemnum} {2011/11/08} {0.3c} {Numbering chemical compounds} +\ProvidesExplPackage {chemnum} {2011/12/01} {0.3e} {Numbering chemical compounds} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % CHECK FOR SUPPORT @@ -79,39 +80,34 @@ % warning, if textgreek has already been loaded AND option % "textgreek = <value>" is used -\msg_set:nnnn { chemnum } { package-loaded } - { Package~#1~already~loaded. } +\msg_set:nnnn { chemnum } { textgreek-loaded } { - The~package~#1~has~already~been~loaded. \\ - \tl_if_blank:nF { #2 } { Option~#2~will~not~be~used. } + The~package~textgreek~has~already~been~loaded. \\ + \tl_if_blank:nF { #1 } { Option~#1~will~not~be~used. } + } + { + The~package~textgreek~has~already~been~loaded. \\ + \tl_if_blank:nF { #1 } { Option~#1~will~not~be~used. } } % textgreek support and package options: \bool_new:N \l_chemnum_textgreek_bool +\bool_set_false:N \l_chemnum_textgreek_bool -\cs_new:Npn \chemnum_load_package:nn #1#2 +\cs_new_nopar:Npn \chemnum_load_textgreek:n #1 { - \bool_if:cT { l_chemnum_#2_bool } + \AtEndPreamble { - \AtEndPreamble + \exp_args:No \file_if_exist:nTF { textgreek . sty } { - \exp_args:No \file_if_exist:nTF { #2 . sty } - { - \tl_if_blank:nTF { #1 } - { \RequirePackage { #2 } } - { - \@ifpackageloaded { #2 } - { - \msg_warning:nnxx - { chemnum } { package-loaded } { #2 } { #1 } - } - { \RequirePackage [ #1 ] { #2 } } - } - } - { - \msg_warning:nnx { chemnum } { support-missing } { #2 } - \bool_set_false:c { l_chemnum_#2_bool } - } + \@ifpackageloaded { textgreek } + { \msg_warning:nnx { chemnum } { textgreek-loaded } { #1 } } + { \RequirePackage [ #1 ] { textgreek } } + \bool_set_true:N \l_chemnum_textgreek_bool + } + { + \msg_warning:nnx { chemnum } { support-missing } { textgreek } + \bool_set_false:N \l_chemnum_textgreek_bool } } } @@ -121,37 +117,126 @@ \keys_define:nn { chemnum / package } { textgreek .choice: , - textgreek .choice_code:n = - \chemnum_load_package:nn \l_keys_choice_tl { textgreek } , - textgreek .generate_choices:n = { artemisia , cbgreek , euler } , - textgreek .default:n = cbgreek + textgreek / artemisia .code:n = \chemnum_load_textgreek:n { #1 } , + textgreek / cbgreek .code:n = \chemnum_load_textgreek:n { #1 } , + textgreek / euler .code:n = \chemnum_load_textgreek:n { #1 } , + textgreek / false .code:n = + { \bool_set_false:N \l_chemnum_textgreek_bool } , + textgreek .default:n = cbgreek } -\DeclareOption { textgreek } - { - \bool_set_true:N \l_chemnum_textgreek_bool - \chemnum_package_options:n { textgreek } - } -\DeclareOption { textgreek = artemisia } - { - \bool_set_true:N \l_chemnum_textgreek_bool - \chemnum_package_options:n { textgreek = artemisia } - } -\DeclareOption { textgreek = cbgreek } +\ProcessKeysOptions { chemnum / package } + +\AtBeginDocument{ +\bool_if:NTF \l_chemnum_textgreek_bool { - \bool_set_true:N \l_chemnum_textgreek_bool - \chemnum_package_options:n { textgreek = cbgreek } + \cs_new_eq:NN \chemnum_alpha \textalpha + \cs_new_eq:NN \chemnum_beta \textbeta + \cs_new_eq:NN \chemnum_gamma \textgamma + \cs_new_eq:NN \chemnum_delta \textdelta + \cs_new_eq:NN \chemnum_epsilon \textepsilon + \cs_new_eq:NN \chemnum_zeta \textzeta + \cs_new_eq:NN \chemnum_eta \texteta + \cs_new_eq:NN \chemnum_theta \texttheta + \cs_new_eq:NN \chemnum_iota \textiota + \cs_new_eq:NN \chemnum_kappa \textkappa + \cs_new_eq:NN \chemnum_lambda \textlambda + \cs_new_eq:NN \chemnum_mu \textmugreek + \cs_new_eq:NN \chemnum_nu \textnu + \cs_new_eq:NN \chemnum_xi \textxi + \cs_new_eq:NN \chemnum_omikron \textomikron + \cs_new_eq:NN \chemnum_pi \textpi + \cs_new_eq:NN \chemnum_rho \textrho + \cs_new_eq:NN \chemnum_sigma \textsigma + \cs_new_eq:NN \chemnum_tau \texttau + \cs_new_eq:NN \chemnum_upsilon \textupsilon + \cs_new_eq:NN \chemnum_phi \textphi + \cs_new_eq:NN \chemnum_chi \textchi + \cs_new_eq:NN \chemnum_psi \textpsi + \cs_new_eq:NN \chemnum_omega \textomega + \cs_new_eq:NN \chemnum_Alpha \textAlpha + \cs_new_eq:NN \chemnum_Beta \textBeta + \cs_new_eq:NN \chemnum_Gamma \textGamma + \cs_new_eq:NN \chemnum_Delta \textDelta + \cs_new_eq:NN \chemnum_Epsilon \textEpsilon + \cs_new_eq:NN \chemnum_Zeta \textZeta + \cs_new_eq:NN \chemnum_Eta \textEta + \cs_new_eq:NN \chemnum_Theta \textTheta + \cs_new_eq:NN \chemnum_Iota \textIota + \cs_new_eq:NN \chemnum_Kappa \textKappa + \cs_new_eq:NN \chemnum_Lambda \textLambda + \cs_new_eq:NN \chemnum_Mu \textMugreek + \cs_new_eq:NN \chemnum_Nu \textNu + \cs_new_eq:NN \chemnum_Xi \textXi + \cs_new_eq:NN \chemnum_Omikron \textOmikron + \cs_new_eq:NN \chemnum_Pi \textPi + \cs_new_eq:NN \chemnum_Rho \textRho + \cs_new_eq:NN \chemnum_Sigma \textSigma + \cs_new_eq:NN \chemnum_Tau \textTau + \cs_new_eq:NN \chemnum_Upsilon \textUpsilon + \cs_new_eq:NN \chemnum_Phi \textPhi + \cs_new_eq:NN \chemnum_Chi \textChi + \cs_new_eq:NN \chemnum_Psi \textPsi + \cs_new_eq:NN \chemnum_Omega \textOmega } -\DeclareOption { textgreek = euler } { - \bool_set_true:N \l_chemnum_textgreek_bool - \chemnum_package_options:n { textgreek = euler } + \RequirePackage { bm }% abhängig machen von textoption bold + \cs_new_nopar:Npn \chemnum_bm:n #1 + { + \bool_if:NTF \l_chemnum_cmpd_bold_bool + { \bm { #1 } } + { #1 } + } + \cs_new_nopar:Npn \chemnum_alpha { \ensuremath { \chemnum_bm:n { \mathrm { \alpha } } } } + \cs_new_nopar:Npn \chemnum_beta { \ensuremath { \chemnum_bm:n { \mathrm { \beta } } } } + \cs_new_nopar:Npn \chemnum_gamma { \ensuremath { \chemnum_bm:n { \mathrm { \gamma } } } } + \cs_new_nopar:Npn \chemnum_delta { \ensuremath { \chemnum_bm:n { \mathrm { \delta } } } } + \cs_new_nopar:Npn \chemnum_epsilon { \ensuremath { \chemnum_bm:n { \mathrm { \varepsilon } } } } + \cs_new_nopar:Npn \chemnum_zeta { \ensuremath { \chemnum_bm:n { \mathrm { \zeta } } } } + \cs_new_nopar:Npn \chemnum_eta { \ensuremath { \chemnum_bm:n { \mathrm { \eta } } } } + \cs_new_nopar:Npn \chemnum_theta { \ensuremath { \chemnum_bm:n { \mathrm { \theta } } } } + \cs_new_nopar:Npn \chemnum_iota { \ensuremath { \chemnum_bm:n { \mathrm { \iota } } } } + \cs_new_nopar:Npn \chemnum_kappa { \ensuremath { \chemnum_bm:n { \mathrm { \kappa } } } } + \cs_new_nopar:Npn \chemnum_lambda { \ensuremath { \chemnum_bm:n { \mathrm { \lampda } } } } + \cs_new_nopar:Npn \chemnum_mu { \ensuremath { \chemnum_bm:n { \mathrm { \mu } } } } + \cs_new_nopar:Npn \chemnum_nu { \ensuremath { \chemnum_bm:n { \mathrm { \nu } } } } + \cs_new_nopar:Npn \chemnum_xi { \ensuremath { \chemnum_bm:n { \mathrm { \xi } } } } + \cs_new_nopar:Npn \chemnum_omikron { \ensuremath { \chemnum_bm:n { \mathrm { o } } } } + \cs_new_nopar:Npn \chemnum_pi { \ensuremath { \chemnum_bm:n { \mathrm { \pi } } } } + \cs_new_nopar:Npn \chemnum_rho { \ensuremath { \chemnum_bm:n { \mathrm { \rho } } } } + \cs_new_nopar:Npn \chemnum_sigma { \ensuremath { \chemnum_bm:n { \mathrm { \sigma } } } } + \cs_new_nopar:Npn \chemnum_tau { \ensuremath { \chemnum_bm:n { \mathrm { \tau } } } } + \cs_new_nopar:Npn \chemnum_upsilon { \ensuremath { \chemnum_bm:n { \mathrm { \upsilon } } } } + \cs_new_nopar:Npn \chemnum_phi { \ensuremath { \chemnum_bm:n { \mathrm { \varphi } } } } + \cs_new_nopar:Npn \chemnum_chi { \ensuremath { \chemnum_bm:n { \mathrm { \chi } } } } + \cs_new_nopar:Npn \chemnum_psi { \ensuremath { \chemnum_bm:n { \mathrm { \psi } } } } + \cs_new_nopar:Npn \chemnum_omega { \ensuremath { \chemnum_bm:n { \mathrm { \omega } } } } + \cs_new_nopar:Npn \chemnum_Alpha { \ensuremath { \chemnum_bm:n { \mathrm { A } } } } + \cs_new_nopar:Npn \chemnum_Beta { \ensuremath { \chemnum_bm:n { \mathrm { B } } } } + \cs_new_nopar:Npn \chemnum_Gamma { \ensuremath { \chemnum_bm:n { \mathrm { \Gamma } } } } + \cs_new_nopar:Npn \chemnum_Delta { \ensuremath { \chemnum_bm:n { \mathrm { \Delta } } } } + \cs_new_nopar:Npn \chemnum_Epsilon { \ensuremath { \chemnum_bm:n { \mathrm { E } } } } + \cs_new_nopar:Npn \chemnum_Zeta { \ensuremath { \chemnum_bm:n { \mathrm { Z } } } } + \cs_new_nopar:Npn \chemnum_Eta { \ensuremath { \chemnum_bm:n { \mathrm { H } } } } + \cs_new_nopar:Npn \chemnum_Theta { \ensuremath { \chemnum_bm:n { \mathrm { \Theta } } } } + \cs_new_nopar:Npn \chemnum_Iota { \ensuremath { \chemnum_bm:n { \mathrm { I } } } } + \cs_new_nopar:Npn \chemnum_Kappa { \ensuremath { \chemnum_bm:n { \mathrm { K } } } } + \cs_new_nopar:Npn \chemnum_Lambda { \ensuremath { \chemnum_bm:n { \mathrm { \Lambda } } } } + \cs_new_nopar:Npn \chemnum_Mu { \ensuremath { \chemnum_bm:n { \mathrm { M } } } } + \cs_new_nopar:Npn \chemnum_Nu { \ensuremath { \chemnum_bm:n { \mathrm { N } } } } + \cs_new_nopar:Npn \chemnum_Xi { \ensuremath { \chemnum_bm:n { \mathrm { \Xi } } } } + \cs_new_nopar:Npn \chemnum_Omikron { \ensuremath { \chemnum_bm:n { \mathrm { O } } } } + \cs_new_nopar:Npn \chemnum_Pi { \ensuremath { \chemnum_bm:n { \mathrm { \Pi } } } } + \cs_new_nopar:Npn \chemnum_Rho { \ensuremath { \chemnum_bm:n { \mathrm { P } } } } + \cs_new_nopar:Npn \chemnum_Sigma { \ensuremath { \chemnum_bm:n { \mathrm { \Sigma } } } } + \cs_new_nopar:Npn \chemnum_Tau { \ensuremath { \chemnum_bm:n { \mathrm { T } } } } + \cs_new_nopar:Npn \chemnum_Upsilon { \ensuremath { \chemnum_bm:n { \mathrm { \Upsilon } } } } + \cs_new_nopar:Npn \chemnum_Phi { \ensuremath { \chemnum_bm:n { \mathrm { \Phi } } } } + \cs_new_nopar:Npn \chemnum_Chi { \ensuremath { \chemnum_bm:n { \mathrm { X } } } } + \cs_new_nopar:Npn \chemnum_Psi { \ensuremath { \chemnum_bm:n { \mathrm { \Psi } } } } + \cs_new_nopar:Npn \chemnum_Omega { \ensuremath { \chemnum_bm:n { \mathrm { \Omega } } } } } -\DeclareOption { textgreek = false } - { \bool_set_false:N \l_chemnum_textgreek_bool } - -\ExecuteOptions { textgreek } -\ProcessOptions \scan_stop: +} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % TOOLS @@ -166,7 +251,7 @@ % READ FROM PREVIOUS RUN, SAVE FOR NEXT RUN % save all labels in a clist \cs_new:Npn \chemnum_cmpd_save:n #1 - { \clist_gput_right:Nn \g_chemnum_cmpd_save_clist { #1 } } + { \clist_gput_right:Nn \g_chemnum_cmpd_save_clist { { #1 } } } \msg_set:nnn { chemnum } { missing-cmpd-file } { @@ -217,7 +302,7 @@ \bool_new:N \l_chemnum_cmpd_style_is_macro_bool % default style -\cs_new_nopar:Npn \chemnum_cmpd_style_value:n { \bfseries } +\cs_new_nopar:Npn \chemnum_cmpd_style_value:n { } % error message \msg_set:nnn { chemnum } { cmpd-style } { The~value~of~"cmpd-style~=~<style>"~needs~to~be~a~(or~more)~macro~\msg_line_context: . } @@ -238,8 +323,17 @@ % } % use style +\bool_new:N \l_chemnum_cmpd_bold_bool +\bool_set_true:N \l_chemnum_cmpd_bold_bool + \cs_new_nopar:Npn \chemnum_cmpd_use_style:n #1 - { \group_begin: \chemnum_cmpd_style_value:n { #1 } \group_end: } + { + \group_begin: + \bool_if:NT \l_chemnum_cmpd_bold_bool + { \bfseries } + \chemnum_cmpd_style_value:n { #1 } + \group_end: + } %-----------------------------------------------------------------------------% % prefix, suffix, delimiters, format and separator of compound label @@ -289,7 +383,7 @@ % format of sub-numbering \cs_new_nopar:Npn \chemnum_cmpd_sub_kind:nn #1#2 - { \cs:w int_to_#1:n \cs_end: #2 } + { \cs:w int_to_ #1 :n \cs_end: #2 } \cs_generate_variant:Nn \chemnum_cmpd_sub_kind:nn { Nc } % default format @@ -300,42 +394,42 @@ % add greek letters and symbols as numbering format % define \int_to_greek function \cs_new:Npn \int_to_greek:n { } -\bool_if:NTF \l_chemnum_textgreek_bool - { +% \bool_if:NTF \l_chemnum_textgreek_bool +% { \cs_set:Npn \int_to_greek:n #1 { \int_convert_to_symbols:nnn {#1} { 24 } { - { 1 } { \exp_not:o \textalpha } - { 2 } { \exp_not:o \textbeta } - { 3 } { \exp_not:o \textgamma } - { 4 } { \exp_not:o \textdelta } - { 5 } { \exp_not:o \textepsilon } - { 6 } { \exp_not:o \textzeta } - { 7 } { \exp_not:o \texteta } - { 8 } { \exp_not:o \texttheta } - { 9 } { \exp_not:o \textiota } - { 10 } { \exp_not:o \textkappa } - { 11 } { \exp_not:o \textlambda } - { 12 } { \exp_not:o \textmugreek } - { 13 } { \exp_not:o \textnu } - { 14 } { \exp_not:o \textxi } - { 15 } { \exp_not:o \textomikron } - { 16 } { \exp_not:o \textpi } - { 17 } { \exp_not:o \textrho } - { 18 } { \exp_not:o \textsigma } - { 19 } { \exp_not:o \texttau } - { 20 } { \exp_not:o \textupsilon } - { 21 } { \exp_not:o \textphi } - { 22 } { \exp_not:o \textchi } - { 23 } { \exp_not:o \textpsi } - { 24 } { \exp_not:o \textomega } + { 1 } { \exp_not:o \chemnum_alpha } + { 2 } { \exp_not:o \chemnum_beta } + { 3 } { \exp_not:o \chemnum_gamma } + { 4 } { \exp_not:o \chemnum_delta } + { 5 } { \exp_not:o \chemnum_epsilon } + { 6 } { \exp_not:o \chemnum_zeta } + { 7 } { \exp_not:o \chemnum_eta } + { 8 } { \exp_not:o \chemnum_theta } + { 9 } { \exp_not:o \chemnum_iota } + { 10 } { \exp_not:o \chemnum_kappa } + { 11 } { \exp_not:o \chemnum_lambda } + { 12 } { \exp_not:o \chemnum_mu } + { 13 } { \exp_not:o \chemnum_nu } + { 14 } { \exp_not:o \chemnum_xi } + { 15 } { \exp_not:o \chemnum_omikron } + { 16 } { \exp_not:o \chemnum_pi } + { 17 } { \exp_not:o \chemnum_rho } + { 18 } { \exp_not:o \chemnum_sigma } + { 19 } { \exp_not:o \chemnum_tau } + { 20 } { \exp_not:o \chemnum_upsilon } + { 21 } { \exp_not:o \chemnum_phi } + { 22 } { \exp_not:o \chemnum_chi } + { 23 } { \exp_not:o \chemnum_psi } + { 24 } { \exp_not:o \chemnum_omega } } } - } - { - \cs_set_eq:NN \int_to_greek:n \int_to_alph:n - } +% } +% { +% \cs_set_eq:NN \int_to_greek:n \int_to_alph:n +% } % define \int_to_Greek function \cs_new:Npn \int_to_Greek:n { } @@ -345,30 +439,30 @@ { \int_convert_to_symbols:nnn { #1 } { 24 } { - { 1 } { \exp_not:o \textAlpha } - { 2 } { \exp_not:o \textBeta } - { 3 } { \exp_not:o \textGamma } - { 4 } { \exp_not:o \textDelta } - { 5 } { \exp_not:o \textEpsilon } - { 6 } { \exp_not:o \textZeta } - { 7 } { \exp_not:o \textEta } - { 8 } { \exp_not:o \textTheta } - { 9 } { \exp_not:o \textIota } - { 10 } { \exp_not:o \textKappa } - { 11 } { \exp_not:o \textLambda } - { 12 } { \exp_not:o \textMu } - { 13 } { \exp_not:o \textNu } - { 14 } { \exp_not:o \textXi } - { 15 } { \exp_not:o \textOmikron } - { 16 } { \exp_not:o \textPi } - { 17 } { \exp_not:o \textRho } - { 18 } { \exp_not:o \textSigma } - { 19 } { \exp_not:o \textTau } - { 20 } { \exp_not:o \textUpsilon } - { 21 } { \exp_not:o \textPhi } - { 22 } { \exp_not:o \textChi } - { 23 } { \exp_not:o \textPsi } - { 24 } { \exp_not:o \textOmega } + { 1 } { \exp_not:o \chemnum_Alpha } + { 2 } { \exp_not:o \chemnum_Beta } + { 3 } { \exp_not:o \chemnum_Gamma } + { 4 } { \exp_not:o \chemnum_Delta } + { 5 } { \exp_not:o \chemnum_Epsilon } + { 6 } { \exp_not:o \chemnum_Zeta } + { 7 } { \exp_not:o \chemnum_Eta } + { 8 } { \exp_not:o \chemnum_Theta } + { 9 } { \exp_not:o \chemnum_Iota } + { 10 } { \exp_not:o \chemnum_Kappa } + { 11 } { \exp_not:o \chemnum_Lambda } + { 12 } { \exp_not:o \chemnum_Mu } + { 13 } { \exp_not:o \chemnum_Nu } + { 14 } { \exp_not:o \chemnum_Xi } + { 15 } { \exp_not:o \chemnum_Omikron } + { 16 } { \exp_not:o \chemnum_Pi } + { 17 } { \exp_not:o \chemnum_Rho } + { 18 } { \exp_not:o \chemnum_Sigma } + { 19 } { \exp_not:o \chemnum_Tau } + { 20 } { \exp_not:o \chemnum_Upsilon } + { 21 } { \exp_not:o \chemnum_Phi } + { 22 } { \exp_not:o \chemnum_Chi } + { 23 } { \exp_not:o \chemnum_Psi } + { 24 } { \exp_not:o \chemnum_Omega } } } } @@ -451,7 +545,7 @@ % \catcode 58 = 11 \relax \tl_new:N \l_chemnum_sub_range_sep_tl -\tl_set:Nn \l_chemnum_sub_range_sep_tl { - } +\tl_set:Nn \l_chemnum_sub_range_sep_tl { -- } \bool_new:N \l_chemnum_sub_label_only_bool \bool_set_false:N \l_chemnum_sub_label_only_bool @@ -460,7 +554,9 @@ % property keys for compounds \keys_define:nn { chemnum } { cmpd-style .code:n = \chemnum_cmpd_set_style:n { #1 } , - cmpd-style .default:n = \textbf , + cmpd-weight .choice: , + cmpd-weight / bold .code:n = \bool_set_true:N \l_chemnum_cmpd_bold_bool , + cmpd-weight / normal .code:n = \bool_set_false:N \l_chemnum_cmpd_bold_bool , cmpd-label .code:n = { \bool_set_true:N \l_chemnum_cmpd_name_bool @@ -500,7 +596,7 @@ \chemnum_sublabel_range_marker:n { #1 } , sub-range-marker .default:n = { .. } , sub-range-sep .tl_set:N = \l_chemnum_sub_range_sep_tl , - sub-range-sep .default:n = { - } , + sub-range-sep .default:n = { -- } , sub-list .code:n = { \tl_set:Nn \l_chemnum_cmpd_sublabel_list_tl { #1 } @@ -512,9 +608,11 @@ %-----------------------------------------------------------------------------% % list separators, delimiters, prefix and suffix -\bool_new:N \l_chemnum_serial_comma_bool -\bool_set_true:N \l_chemnum_serial_comma_bool +\bool_new:N \l_chemnum_no_serial_comma_bool +\bool_set_false:N \l_chemnum_no_serial_comma_bool +\tl_new:N \l_chemnum_input_separator_tl +\tl_set:Nn \l_chemnum_input_separator_tl { , } \tl_new:N \l_chemnum_list_separator_tl \tl_set:Nn \l_chemnum_list_separator_tl { , } @@ -565,41 +663,45 @@ list-cdelim .default:n = { } , list-space .tl_set:N = \l_chemnum_list_space_tl , list-space .default:n = { \penalty\@m\ } , - list-sep .tl_set:N = \l_chemnum_list_separator_tl , - list-sep .default:n = { , }, + list-input-sep .tl_set:N = \l_chemnum_input_separator_tl , + list-input-sep .default:n = { , } , + list-output-sep .tl_set:N = \l_chemnum_list_separator_tl , + list-output-sep .default:n = { , } , list-last-sep .tl_set:N = \l_chemnum_list_last_separator_tl , list-last-sep .default:n = \l_chemnum_list_last_separator_lang_tl , - list-serial-comma .bool_set:N = \l_chemnum_serial_comma_bool , + list-serial-comma .choice: , + list-serial-comma / true .code:n = \bool_set_false:N \l_chemnum_no_serial_comma_bool , + list-serial-comma / false .code:n = \bool_set_true:N \l_chemnum_no_serial_comma_bool , list-serial-comma .default:n = true , list-lang .choice: , list-lang / US .code:n = { - \bool_set_true:N \l_chemnum_serial_comma_bool + \bool_set_false:N \l_chemnum_no_serial_comma_bool \tl_set:Nn \l_chemnum_list_last_separator_lang_tl { and } } , list-lang / GB .code:n = { - \bool_set_false:N \l_chemnum_serial_comma_bool + \bool_set_true:N \l_chemnum_no_serial_comma_bool \tl_set:Nn \l_chemnum_list_last_separator_lang_tl { and } } , list-lang / DE .code:n = { - \bool_set_false:N \l_chemnum_serial_comma_bool + \bool_set_true:N \l_chemnum_no_serial_comma_bool \tl_set:Nn \l_chemnum_list_last_separator_lang_tl { und } } , list-lang / FR .code:n = { - \bool_set_false:N \l_chemnum_serial_comma_bool + \bool_set_true:N \l_chemnum_no_serial_comma_bool \tl_set:Nn \l_chemnum_list_last_separator_lang_tl { et } } , list-lang / IT .code:n = { - \bool_set_false:N \l_chemnum_serial_comma_bool + \bool_set_true:N \l_chemnum_no_serial_comma_bool \tl_set:Nn \l_chemnum_list_last_separator_lang_tl { e } } , list-lang / ES .code:n = { - \bool_set_false:N \l_chemnum_serial_comma_bool + \bool_set_true:N \l_chemnum_no_serial_comma_bool \tl_set:Nn \l_chemnum_list_last_separator_lang_tl { y } } , list-lang .default:n = US @@ -637,7 +739,9 @@ \chemnum_cmpd_save:n { #1 _ #2 } \cs_new_nopar:cpx { chemnum_cmpd_#1_#2: } { } \int_gincr:c { g_chemnum_cmpd_#1_int } - \cs_gset_nopar:cx { chemnum_cmpd_#1_#2: } + % why is the next line working when \cs_gset_nopar:cpx doesn't? + % (in case ":" is part of #1) + \exp_after:wN \cs_gset_nopar:Npx \cs:w chemnum_cmpd_#1_#2: \cs_end: { \chemnum_cmpd_sub_kind:Nc \l_chemnum_cmpd_sub_kind_value_tl @@ -901,6 +1005,10 @@ % MAIN COMMAND % \cmpd*+-[<key-value-list>]{<(possibly comma separated list of) compound % label(s)>} +\NewDocumentCommand \chemnum_input_separator:n + { > { \exp_args:No \SplitList { \l_chemnum_input_separator_tl } } m } + { \tl_set:Nn \l_tmpa_tl { #1 } } + \NewDocumentCommand \cmpd { s t+ t- o m } { \IfBooleanT #2 @@ -915,12 +1023,13 @@ \int_zero:N \l_chemnum_list_separate_int \IfNoValueF { #4 } { \keys_set:nn { chemnum } { #4 } } - \clist_map_variable:nNn { #5 } \l_chemnum_tmpa_tl + \chemnum_input_separator:n { #5 } + \tl_map_variable:NNn \l_tmpa_tl \l_chemnum_tmpa_tl { \tl_if_blank:VF \l_chemnum_tmpa_tl { \int_incr:N \l_chemnum_list_items_int } } - \clist_map_variable:nNn { #5 } \l_chemnum_tmpa_tl + \tl_map_variable:NNn \l_tmpa_tl \l_chemnum_tmpa_tl { \tl_remove_all:Nn \l_chemnum_tmpa_tl { ~ } \tl_if_blank:VF \l_chemnum_tmpa_tl @@ -990,7 +1099,7 @@ { \int_compare:nNnF { \l_chemnum_list_separate_int } = { 1 } { - \bool_if:NT \l_chemnum_serial_comma_bool + \bool_if:NF \l_chemnum_no_serial_comma_bool { \l_chemnum_list_separator_tl } } \tl_if_blank:VF \l_chemnum_list_last_separator_tl @@ -1099,7 +1208,8 @@ { \bool_set_false:N \l_chemnum_cmpd_init_declare_bool } { \bool_set_true:N \l_chemnum_cmpd_init_declare_bool } \IfNoValueF { #2 } { \keys_set:nn { chemnum / init } { #2 } } - \clist_map_function:nN { #3 } \chemnum_cmpd_init:n + \chemnum_input_separator:n { #3 } + \tl_map_function:NN \l_tmpa_tl \chemnum_cmpd_init:n } %-----------------------------------------------------------------------------% @@ -1197,15 +1307,15 @@ \@ifpackageloaded { babel } { \iflanguage { american } - { \bool_set_true:N \l_chemnum_serial_comma_bool } - { \bool_set_false:N \l_chemnum_serial_comma_bool } + { \bool_set_false:N \l_chemnum_no_serial_comma_bool } + { \bool_set_true:N \l_chemnum_no_serial_comma_bool } \cs_new_eq:NN \chemnum_selectlanguage:n \selectlanguage \cs_set_nopar:Npn \selectlanguage #1 { \chemnum_selectlanguage:n { #1 } \iflanguage { american } - { \bool_set_true:N \l_chemnum_serial_comma_bool } - { \bool_set_false:N \l_chemnum_serial_comma_bool } + { \bool_set_false:N \l_chemnum_no_serial_comma_bool } + { \bool_set_true:N \l_chemnum_no_serial_comma_bool } } } {} @@ -1252,14 +1362,22 @@ HISTORY: http://www.arkat-usa.org/get-file/29257/ or scheme 4 at http://www.arkat-usa.org/get-file/27301/ for reasons, why - 2011/11/08 version 0.3c - localization via babel is now supported with the help - of the translator package + 2011/11/08 version 0.3c - localization via babel is now supported with the + help of the translator package - key "list-serial-comma" added + 2011/12/01 version 0.3d - greek letters without textgreek package + - new key cmpd-weight = bold/normal + - bugfix: sublabels are now possible, when main label + name contains a colon + - it is now possible to change the list input + separator; this means the comma may be part of the + label name + 2011/12/01 version 0.3e - bugfix: labels have been saved in a wrong way, when + list-input-sep had been changed. this is fixed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % TODO: - - Bug: wenn als "sub-marker" ":" von einer anderen Datei gesetzt wird, wird - der Key nicht erkannt -> catcode Problem: entweder temporär catcode von ":" - wieder auf 12 setzen oder den Marker prinzipiell auf 11? + - natürliche Unterstützung für hyperref + - polyglossia: localization of us-variant of english - alphabetische Sortierung für sub-list - Bug: Key "cmpd-style" wenn zB \color{<farbe>} eingegeben: Fehler beim Test auf Makro; Test entfernen? |