%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - chemnum - chemnum_doc_de.tex - % % - a comprehensive numbering method for chemical compounds - % % ------------------------------------------------------------------------------------- % % - Clemens NIEDERBERGER - % % - 2011/11/03 - % % ------------------------------------------------------------------------------------- % % - http://www.mychemistry.eu/ - % % - contact@mychemistry.eu - % % ------------------------------------------------------------------------------------- % % - If you have any ideas, questions, suggestions or bugs to report, please feel free - % % - to contact me. - % % ------------------------------------------------------------------------------------- % % - Copyright 2011 Clemens Niederberger - % % - - % % - This work may be distributed and/or modified under the - % % - conditions of the LaTeX Project Public License, either version 1.3 - % % - 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.3 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 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 - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[DIV11]{scrartcl} \usepackage[ngerman]{babel} \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,booktabs,array,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{hyperref} \hypersetup{colorlinks=true, plainpages=false, bookmarksopen=true, bookmarksopenlevel=2, bookmarksnumbered=true, pdfauthor={Clemens Niederberger}, pdftitle={chemnum - Manual}, pdfsubject={Chemische Substanzen Nummerieren}, pdfkeywords={chemmnum}, pdfcreator={LaTeX} } \newcommand*\changefont[3]{\fontfamily{#1}\fontseries{#2}\fontshape{#3}\selectfont} \ExplSyntaxOn \DeclareDocumentEnvironment { myquote } { m } { \quote \small \changefont { cmss } { m } { sl } } { \par\noindent \parbox { \linewidth } { \raggedleft \normalfont \itshape #1 } \endquote } \ExplSyntaxOff \newcommand*\chemnum{\textsf{chemnum}\xspace} \newcommand*\CNversion{v0.3b\xspace} \newcommand*\CNdate{2011/11/03\xspace} \newcommand*\paket[1]{\textsf{#1}\footnote{\url{http://www.ctan.org/pkg/#1}}} \newcommand*\zB{\mbox{z.\,B.}\xspace} \newcommand*\bzw{\mbox{bzw.}\xspace} \newcommand*\usw{\mbox{usw.}\xspace} \cmpdinit*{a,aa,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,benzol} \begin{document} \begin{titlepage} \centering \Huge chemnum \CNversion \vskip.5cm \Large \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} \vskip3cm \cmpdinit*{glucose.alpha, glucose.beta, glucose.chain} \cmpd*[sub-counter = greek]{glucose.alpha, glucose.beta}\cmpd*{glucose.chain} \setatomsep{2em} \definesubmol{x}{(-[4]H)(-[0]OH)} \definesubmol{y}{(-[0]H)(-[4]HO)} \begin{scheme}[h] \centering\small \schemestart \chemfig{?(-[:-170]HO)-[:-50](-[:170]HO)-[:10](-[:-55,0.7]OH)-[:-10](-[6,0.8]OH)-[:130]O-[:-170]?(-[:150,0.7]-[2,0.7]OH)} \arrow(alpha--chain){<=>} \chemfig{[2]OH-[3]-!x-!x-!y-!x-=[1]O} \arrow(--beta){<=>} \chemfig{?(-[:-170]HO)-[:-50](-[:170]HO)-[:10](-[:-55,0.7]OH)-[:-10](-[:10]OH)(-[6,,,,draw=none]\vphantom{OH})-[:130]O-[:-170]?(-[:150,0.7]-[2,0.7]OH)} \arrow(@chain--chainlabel){0}[-90,.2] \normalsize\cmpd[cmpd-delim]{glucose.chain} \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.} \end{scheme} \end{titlepage} \cmpdreset \tableofcontents \section{Lizenz, Voraussetzungen} \chemnum \CNversion steht unter der \LaTeX\ Project Public License Version 1.3 oder später.\newline(\url{http://www.latex-project.org/lppl.txt}) \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}. \section{Neu in \chemnum \CNversion} Neu seit \CNversion ist folgendes:\cmpd*{a.one,a.two,a.three,a.four,a.five} \begin{itemize} \item der Key \lstinline=sub-cmpd-sep= heißt jetzt \lstinline=sub-marker=, siehe Seite \pageref{ssec:sub_label_marker} \item der Key \lstinline=cmpd-sub-counter= heißt jetzt \lstinline=sub-counter=, siehe Seite \pageref{key:sub-counter} \end{itemize} Diese Umbenennung folgt dem Wunsch, die Keys ihrer Verwendung nach logisch in verschiedene Klassen zu unterteilen, siehe Seite \pageref{key_classes}. \begin{itemize} \item mehrere Keys zum Erstellen von Labels der Art \cmpd[sub-list={one..three,five}]{a}, siehe Abschnitt \ref{ssec:lists_ranges} ab Seite \pageref{ssec:lists_ranges}. \item der Befehl \lstinline=\cmpdref= zum Esetzen von Text-Strings in \lstinline=eps=-Dateien, siehe Abschnitt \ref{ssec:cmpdref}. \item der Key \lstinline=ref-tag=, siehe Seite \pageref{key:key-tag}. \end{itemize} \section{Paket-Optionen}\label{sec:package_options} \chemnum hat eine Option. \begin{framed} \centering\lstinline+\usepackage[textgreek = ]{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}+. 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}). \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} 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} 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: \begin{enumerate} \item Verbindungen müssen in der Regel mit \lstinline=\declarecompound= deklariert werden. Sie müs\-sen es auf jeden Fall, wenn man Label der Art \cmpd{a.one} haben möchte. Dann muss man die La\-bel sogar von Hand vergeben, was den Sinn einer automatischen Nummerierung untergräbt. \item Das Layout lässt sich nicht einzeln ändern, sondern nur für alle Label. \item Die Nummerierung kann nicht zurückgesetzt werden. Obwohl das in der allermeisten Fällen \emph{weder nötig noch zu empfehlen ist}, kann es Einzelfälle geben, in denen solches Verhalten gewünscht ist. \item Eine Liste mehrerer Verbindungen \lstinline=\compound{a,b,c}= kann nicht oder nur um\-ständ\-lich eigenen Vorstellungen angepasst werden. \end{enumerate} Dann gibt es noch \paket{bpchem}, das Befehle ähnlich den Befehlen \lstinline=\label= und \lstinline=\ref= zur Ver\-fü\-gung stellt: \lstinline=\CNlabel{}=, \lstinline=\CNlabelnoref{}= und \lstinline=\CNref{}=. Außerdem hat es Befehle für Sublabel: \lstinline=\CNlabelsub{}{}=, \lstinline=\CNlabelsubnoref{}{}= und \lstinline=\CNrefsub{}{}=. Damit ist es flexibler als die anderen, stellt allerdings kaum Möglichkeiten zur Personalisierung bereit, Listen sind nicht möglich und die Tatsache, dass es verschiedene Befehle für Label und Label mit Sublabeln gibt, ist ebenfalls nicht die beste Lösung. \chemnum soll diese Schwächen beheben. Dafür wurden alle Befehle vollständig neu geschrieben. Allerdings wurden Ideen von \textsf{chemcompounds} aufgegriffen was Dar\-stel\-lungs\-mög\-lich\-kei\-ten wie Begrenzer \usw betrifft. Wenn Ihnen irgendwelche fehlenden Features auf"|fallen, geben Sie mir bitte Bescheid, indem Sie mir eine E-Mail senden. \section{Verbindungen Nummerieren}\label{sec:nummerieren} \subsection{Basisbefehl} Der eigentliche Befehl des Pakets ist \begin{framed} \centering\lstinline=\cmpd{