diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:03:17 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:03:17 +0000 |
commit | ecf966f305f6aeff2bbdf42c82d8425921aa9eda (patch) | |
tree | db606a57e3619610e4c35cae849d41cf4e0937d5 /Master/texmf-dist/source/latex/bpchem | |
parent | ac3c55a3216b5988f0e48ba9414ddb059f19a699 (diff) |
source 1
git-svn-id: svn://tug.org/texlive/trunk@105 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/bpchem')
-rw-r--r-- | Master/texmf-dist/source/latex/bpchem/bpchem.dtx | 486 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/bpchem/bpchem.ins | 6 |
2 files changed, 492 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/bpchem/bpchem.dtx b/Master/texmf-dist/source/latex/bpchem/bpchem.dtx new file mode 100644 index 00000000000..2590bfc07d5 --- /dev/null +++ b/Master/texmf-dist/source/latex/bpchem/bpchem.dtx @@ -0,0 +1,486 @@ +% \iffalse +%% File: bpchem.dtx Copyright (C) 2001 +%% Bjoern Pedersen <Bjoern.Pedersen@ch.tum.de> +%% This file may be distributed and used freely under +%% the Latex Project Public License +%% +%% +% +%<*dtx> + \ProvidesFile{bpchem.dtx}[2004/11/06 v1.05 Chemical input helper] +%</dtx> +%<bpchem>\NeedsTeXFormat{LaTeX2e} +%<bpchem>\ProvidesPackage{bpchem}[2004/11/06 v1.05 Chemical input helper] +%<bpchem>\RequirePackage{xspace} +%<driver>\ProvidesFile{bpchem.drv} +% \fi +%\iffalse +%<*driver> +\documentclass{ltxdoc} +\usepackage[latin1]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{bpchem} +\RecordChanges +\begin{document} +\DocInput{bpchem.dtx} +\end{document} +%</driver> +%\fi +% \changes{v1.05}{2004/11/06}{ +% changed email +% } +% \changes{v1.03}{2002/11/01}{ +% re-added lost email-address +% } +% \GetFileInfo{bpchem.dtx} +% \title{The \textsf{bpchem} package\thanks{This file +% has version number \fileversion, last +% revised \filedate.}} +% \author{Bj{\o}rn Pedersen\\ \texttt{Bjoern.Pedersen@frm2.tum.de}} +% \date{\filedate} +% \maketitle +% \section{Introduction} +%This package has been written to alleviate the task of writing +%publications containing lots of chemistry. It provides methods for +%typesetting chemical names, sum formulae and isotopes. It provides the +%possibility to break very long names even over several lines. +% +%This package also provides a way to automatically enumerate your +%chemical compounds, allowing for one-level subgrouping. +% +%What this package does not provide: Methods to draw chemical +%compounds. Although there exist some packages,which where designed for +%this purpose (e.g. xymtex, PPChTex) they are quite limited once you +%get to complex organic, or metal organic compounds. I recommend using +%an external drawing program, possibly in conjunction with psfrag, in +%these cases. +% +%\section{Package options} +% Currently this package supports only one option: +% +% \verb|cbgreek| +% +% this option causes the definitions of some macros to be changed to +% use the cbgreek fonts. As they are not available on all systems, +% and only in mf format, the default is to use the math fonts for +% greek symbols. +% +%\section{User commands in this package} +%\subsection{Setting chemical sum formulae: BPChem{<chemical formula>}} +%\DescribeMacro{\BPChem} +%Within this macro you can use \verb|\_| and \verb|\^| for correct +%chemical sub- and superscripts. +%Example: +%\begin{verbatim} +%\BPChem{C\_2H\_5OH} or \BPChem{SO\_4\^{2-}} +%\end{verbatim} +%\begin{minipage}{10cm} +%\BPChem{C\_2H\_5OH} or \BPChem{SO\_4\^{2-}} +%\end{minipage} +%\subsection{Setting long chemical names: IUPAC{<formula or name>}} +%\DescribeMacro{\IUPAC} +%in addition to sub/superscripts as above, \verb|\-| is a hyphen which +%allows further breakpoints,\verb!\|! is an (invisible) Multibreakpoint. +% +%This environment is especially useful for your long IUPAC-compound names. +% +%Example: +%\begin{verbatim} + %\IUPAC{Tetra\|cyclo[2.2.2.1\^{1,4}]\- +%un\|decane-2\-dodecyl\-5\-(hepta\|decyl\|iso\|dodecyl\|thio\|ester)} +%\end{verbatim} +%\begin{minipage}{15em} +%\IUPAC{Tetra\|cyclo[2.2.2.1\^{1,4}]\-^^A +%un\|decane-2\-dodecyl\-5\-(hepta\|decyl\|iso\|dodecyl\|thio\|ester)} +%\end{minipage} +% +%\subsection{Enumerating and referencing chemical compounds: CNlabel\{<label>\}, CNlabelnoref\{<label>\}, CNref\{<label>\}} +%\DescribeMacro{\CNlabel}\DescribeMacro{\CNlabelnoref}\DescribeMacro{\CNref} +%\verb|CNlabel| defines and use \verb|#1| (via \verb|ref|) as label for +%numbering of chemical compounds. If the label has not yet been +%defined, it is created, otherwise it is just referenced. if you just +%want to define the label, use \verb|\CNlabelnoref| instead. +% +%If you want to get just the reference, use \verb|\CNref|. This comes +%handy for figure captions or section titles, as you would get +%dissorder in the numbering due to the moving argument otherwise. +% +%The default style is: \verb|\textbf{\arabic{\counter}}| +% +%To change, use something like \begin{verbatim} +%\renewcommand{\theBPCno}{\textbf{\arabic{BPCno}}} +%\end{verbatim} + +%Example: +%\begin{verbatim} +%Alkohol \CNlabel{al} is converted to aldehyd \CNlabel{ad}. \CNref{al} +%can also be used otherwise, while \CNref{ad} cannot. +%\end{verbatim} +%\begin{minipage}{20em} +%Alkohol \CNlabel{al} is converted to aldehyd \CNlabel{ad}. \CNref{al} +%can also be used otherwise, while \CNref{ad} cannot. +%\end{minipage} + + + + +% +% +%\subsection{Using sub-labels for classes of compounds: CNlabelsub\{<label>\}\{<sublabel>\}, +%\\CNlabelsubnoref\{<label>\}\{<sublabel>\},\\CNrefsub\{<label>\}\{<sublabel>\}} +%\DescribeMacro{\CNlabelsub}\DescribeMacro{\CNlabelsubnoref}\DescribeMacro{\CNrefsub} +%These commands are the same as above, with additional sub identifier +%\verb|#2| added. If the primary identifier is not yet used, it will be +%created and can also be referenced via the normal commands. +% +%The default style is:\verb|\textbf{\arabic{BPCno}\alph{BPCnoa}}}| +% +%To change, use something like \begin{verbatim} +%\renewcommand{\theBPCnoa}{\textbf{\arabic{BPCno}\alph{BPCnoa}}} +%\end{verbatim} + +%\begin{verbatim} +%To demonstrate the use of sublabels, methanol \CNlabelsub{alk}{a} and +%ethanol \CNlabelsub{alk}{b} are both natural products. The acohols \CNref{alk} +%can synthezied bio-chemically. \CNrebsub{alk}{a} is toxic, while +%\CNrefsub{alk}{b} is only mildly toxic. +%\end{verbatim} +%\begin{minipage}{20em} +%To demonstrate the use of sublabels, methanol \CNlabelsub{alk}{a} and +%ethanol \CNlabelsub{alk}{b} are both natural products. The alcohols \CNref{alk} +%can synthezied bio-chemically. \CNrefsub{alk}{a} is toxic, while +%\CNrefsub{alk}{b} is only mildly toxic. +%\end{minipage} + +%\subsection{Shortcuts for common idioms in chemical literature} +% +% +%\begin{description} +%\item[\HNMR] \verb|\HNMR| +%\item[\CNMR] \verb|\CNMR| +%\item[\cis] \verb|\cis| +%\item[\trans] \verb|\trans| + +%\item[\bpalpha] \verb|\bpalpha| +%\item[\bpbeta] \verb|\bpbeta| +%\item[\bpDelta] \verb|\bpdelta| +%\item[\IUPAC{\hapto{<nummer>}}] \verb|\hapto{<number>}| +%\end{description} +%\textbf{Note:} Some of these macros are influenced by the +%\verb|cbgreek| option! Use is only recommended with the +%\verb|\BPChem| and \verb|\IUPAC| commands. Some will not even work +%outside those commands. +% +%\section{Example} +%\begin{verbatim} +%\begin{minipage}[b]{15em} +%some normal text and math: $A*2=B$ +% +%Test \BPChem{ C\_{2}H\_{4}\^{+}} +%or using math in superscript \BPChem{ C\_{2}H\_{4}\^{$+$}} +% +%\BPChem{Example\_{longer subscript}\^{superscript}} +% +%Isotope: \BPChem{\_{A}\^{B}X\^{C}\_{D}} +% +%\IUPAC{Tetra\|cyclo[2.2.2.1\^{1,4}]\-^^A +%un\|decane-2\-dodecyl-5-(heptadecyl\|iso\|dodecyl\|thio\|ester)} +%\end{minipage} +%\end{verbatim} +% and the resulting output: +% +%\begin{minipage}[b]{15em} +%some normal text and math: $A*2=B$, just to show it. +% +%Test \BPChem{ C\_{2}H\_{4}\^{+}} +%or using math in superscript \BPChem{ C\_{2}H\_{4}\^{$+$}} +% +%\BPChem{Example\_{longer subscript}\^{superscript}} And normal Text again +% +%Isotope: \BPChem{\_{A}\^{B}X\^{C}\_{D}} +% +% +%\IUPAC{Tetra\|cyclo[2.2.2.1\^{1,4}]\-^^A +%un\|decane-2\-dodecyl\-5\-(hepta\|decyl\|iso\|dodecyl\|thio\|ester)} +%\end{minipage} +% +%\StopEventually +% +%\section{The code} +%<*bpchem>^^J +% first comes some option setup +% \begin{macrocode} +\newif\ifusecbgreek% +\usecbgreekfalse% +\DeclareOption{cbgreek}{\PackageInfo{bpchem}{cbgreek selected}\usecbgreektrue} +\ProcessOptions\relax +% \end{macrocode} +%\begin{macro}{\textsubscript} +%% Define a textsubscript corresponing to textsuperscript. +%% This is now also available as the package textsubscript by +%% D.Arsenau or as part of KOMA-Script2 by M. Kohm. +%% +%% +% \begin{macrocode} +\providecommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}} +\def\@textsubscript#1{% + {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}} +% \end{macrocode} +%\end{macro} +%% a register to save the length to backspace +%% two registers needed to get back to correct +%% working position if one is longer than the other. +% \begin{macrocode} + \newlength{\BPClensub} + \newlength{\BPClensuper} + \newlength{\BPCdelta} +% +% \end{macrocode} + +%% we are in subscript and maybe the superscript was longer +% \begin{macrocode} + \DeclareRobustCommand{\BPCadjustsub}{% + \setlength\BPCdelta{\BPClensuper}\addtolength\BPCdelta{-\BPClensub}% + \ifdim\BPCdelta>0pt{\kern\BPCdelta}\else\relax\fi% + \setlength{\BPClensub}{0pt}% reset + \setlength{\BPClensuper}{0pt}% reset + }% +% +% \end{macrocode} +%% we are in superscript and maybe the subscript was longer +% \begin{macrocode} + \DeclareRobustCommand{\BPCadjustsuper}{% + \setlength\BPCdelta{\BPClensub}\addtolength\BPCdelta{-\BPClensuper}% + \ifdim\BPCdelta>0pt{\kern\BPCdelta}\else\relax\fi% + \setlength{\BPClensub}{0pt}% reset + \setlength{\BPClensuper}{0pt}% reset + }% +% +% \end{macrocode} +% +%% make a subscript and remember length in BPClen +% \begin{macrocode} + \DeclareRobustCommand{\BPCsub}[1]{% + \ifmmode_{#1}\settowidth\BPClensub{_{#1}}% + \else\textsubscript{#1}\settowidth\BPClensub{\textsubscript{#1}}\fi% + \futurelet\next\lookforsuper% + }% +% \end{macrocode} +% +%% make a superscript and remember length in BPClen +%% raise by 0.15 em, else e.g. + collides with subscript +% \begin{macrocode} + \DeclareRobustCommand{\BPCsuper}[1]{% + \ifmmode^{#1}\settowidth\BPClensuper{^{#1}}% + \else\raisebox{0.15em}{\textsuperscript{#1}}% + \settowidth\BPClensuper{\textsuperscript{#1}}\fi% + \futurelet\next\lookforsub% + }% +% \end{macrocode} +% +% +%% see if next token is BPCsuper, +% \begin{macrocode} + \DeclareRobustCommand\lookforsuper{% + \ifx\next\BPCsuper\let\next=\BPCsuperbs% + \else\let\next=\BPCadjustsub\fi\next% + }% +% \end{macrocode} +% +%% see if next token is BPCsub +% \begin{macrocode} + \DeclareRobustCommand\lookforsub{% + \ifx\next\BPCsub\let\next=\BPCsubbs% + \else\let\next=\BPCadjustsuper\fi\next% + }% +% +% \end{macrocode} +%% backspace BPClen and make superscript +%% eats the old \verb|\^| +% \begin{macrocode} + \DeclareRobustCommand{\BPCsuperbs}[1]{\kern-\BPClensub\BPCsuper}% +% +% \end{macrocode} +%% backspace and make subscript +%% eats the old \_ +% \begin{macrocode} + \DeclareRobustCommand{\BPCsubbs}[1]{\kern-\BPClensuper\BPCsub}% +% +% \end{macrocode} +% +%% needed to get catcodes right +% \begin{macrocode} + \DeclareRobustCommand{\DoBPChem}{}% + \def\DoBPChem#1{% + #1\endgroup% + }% +\DeclareRobustCommand{\BPCSetupCat}{} +\def\BPCSetupCat{% + %\catcode`^=\active% + %\catcode`\_=\active% + \BPCSetup% +}% +% +\DeclareRobustCommand{\BPCSetup}{} +\def\BPCSetup{% +% + \let\_=\BPCsub% + \let\^=\BPCsuper% +}%end BPCSetup +% \end{macrocode} +% +%% setup for chemical formula +% \begin{macrocode} +\DeclareRobustCommand\BPChem{% + \begingroup% endgroup in DoBPChem + \BPCSetupCat% + \DoBPChem% + } +% \end{macrocode} +% +% + +%% these are taken from german.sty and allow more than one break +%% or breaks and hyphens in a word. Very useful for chemical names, +%% as they tend to grow rather long. Two short versions are also defined +% \changes{v1.05}{2004/11/06}{ +% fixed whitespace bug in DoIUPAC +% } +% \begin{macrocode} +\DeclareRobustCommand{\allowhyphens}{\penalty\@M \hskip\z@skip} +\DeclareRobustCommand{\BreakHyph}{\penalty\@M -\allowhyphens} +\DeclareRobustCommand{\MultiBreak}% + {\penalty\@M\discretionary{-}{}{\kern.03em}% + \allowhyphens} +\let\MB=\MultiBreak \let\BH=\BreakHyph +\DeclareRobustCommand{\DoIUPAC}[1]{% +#1\endgroup} +\def\Prep{% +\let\-=\BreakHyph% +\let\|=\MultiBreak% +\DoIUPAC% +} +\DeclareRobustCommand*{\IUPAC}{% + \begingroup\BPCSetup\ignorespaces% + \Prep}% +% \end{macrocode} + +% \changes{v1.03}{2002/11/01}{ +% fixed bug in \textbackslash IUPAC, \textbackslash | is not getting translated +% to \textbackslash delimitier during \textbackslash write anymore +% } +% \changes{v1.04}{2002/12/14}{also \textbackslash - was affected, fixed} +%% Trick by David Kastrup <David.Kastrup@t-online.de> to make +%% non-fragile. Otherwise \verb+\|+ would become \verb+\delimiter"026B30D+ in +%% e.g. the toc +% \begin{macrocode} +\expandafter\DeclareRobustCommand\expandafter\|\expandafter{\|} +\expandafter\DeclareRobustCommand\expandafter\-\expandafter{\-} +% \end{macrocode} +%%%%%%%%%%%%%%%% +%% counters for numbering of chemical substances +% \begin{macrocode} +\newcounter{BPCno} +\renewcommand{\theBPCno}{\textbf{\arabic{BPCno}}} + +\newcounter{BPCnoa}[BPCno] +\renewcommand{\theBPCnoa}{\textbf{\arabic{BPCno}\alph{BPCnoa}}} +% \end{macrocode} + +%% helper functions to mark first definition +% \begin{macrocode} +\newcommand{\newchems@b}[2]{ +\expandafter\gdef\csname cna@#1#2\endcsname{#2}% +} +% \end{macrocode} + +%% reference a CNlabel (useful for section titles, captions etc.) +% \begin{macrocode} +\DeclareRobustCommand*{\CNref}[1]{% +\ref{cn:#1}% +} +% \end{macrocode} + +%% reference a CNlabel/sublabel +% \begin{macrocode} +\DeclareRobustCommand*{\CNrefsub}[2]{% +\ref{cn:#1#2} +%%\textbf{\csname cna@#1#2\endcsname}% +} +% \end{macrocode} + + +%% label a substance and insert the number +% \begin{macrocode} +\DeclareRobustCommand*{\CNlabel}[1]{% +\CNlabelnoref{#1} +\CNref{#1}% +} +% \end{macrocode} + +%% +% \begin{macrocode} +\DeclareRobustCommand*{\CNlabelnoref}[1]{% +\expandafter\ifx\csname cnd@#1\endcsname\relax% +{\refstepcounter{BPCno}\label{cn:#1}}% +\expandafter\gdef\csname cnd@#1\endcsname{x}% +\fi% +} +% \end{macrocode} +% \begin{macrocode} +\DeclareRobustCommand*{\CNlabelsub}[2]{% +\CNlabelsubnoref{#1}{#2}% +\CNrefsub{#1}{#2}% +} +\DeclareRobustCommand*{\CNlabelsubnoref}[2]{% +\CNlabelnoref{#1}% +\expandafter\ifx\csname cna@#1#2\endcsname\relax% +{\refstepcounter{BPCnoa}\label{cn:#1#2}}% +\expandafter\gdef\csname cna@#1#2\endcsname{x}% +%% \newchems@b{#1}{#2}% +%% \write\@auxout{\string\newchems@b{#1}{#2}}% + \fi% +} +% \end{macrocode} +%% more helper mcors +% special symbols and macros for math-symbols without math-mode +% \changes{v1.03}{2002/11/01}{added cbgreek option for using upright +% greek and fixed namespace, old names will still work} +% \begin{macrocode} +\DeclareRobustCommand{\HNMR}{\IUPAC{\^{1}H-NMR}: $\delta$\xspace} +\DeclareRobustCommand{\CNMR}{\IUPAC{\^{13}C-NMR}: $\delta$\xspace} +\DeclareRobustCommand{\cis}{\textit{cis}\xspace} +\DeclareRobustCommand{\trans}{\textit{trans}\xspace} +%\DeclareRobustCommand{\R}{\textit{R}} +%\DeclareRobustCommand{\S}{\textit{S}} +%%%%%%%%%%%%%%%%%%%%% +% +\ifusecbgreek% code with roman greek +\PackageInfo{bpchem}{using upright greek fonts from cbgreek} +\input{lgrenc.def} +\DeclareRobustCommand{\rm@greekletter}[1]{{\fontencoding{LGR}\selectfont% + \def\encodingdefault{LGR}#1}}% +% some examples +\DeclareRobustCommand{\bpalpha}{\rm@greekletter{a}} +\DeclareRobustCommand{\bpbeta}{\rm@greekletter{b}} +\DeclareRobustCommand{\bpDelta}{\rm@greekletter{D}} +\DeclareRobustCommand{\hapto}[1]{\rm@greekletter{h}\^{#1}} +\else +% code with standard math greek +\PackageInfo{bpchem}{using default math greek fonts} +\DeclareRobustCommand{\bpalpha}{\ensuremath{\alpha}\xspace} +\DeclareRobustCommand{\bpbeta}{\ensuremath{\beta}\xspace} +\DeclareRobustCommand{\bpDelta}{\ensuremath{\Delta}\xspace} +\DeclareRobustCommand{\hapto}[1]{\ensuremath{\eta^{#1}}} +\fi +\let\talpha\bpalpha +\let\tbeta\bpbeta +%%%%%% +\DeclareRobustCommand*{\dreh}[1]% +{$\lbrack \alpha \rbrack _{\mathrm D}^{#1}$} +% \end{macrocode} +%</bpchem> +% \PrintChanges +% \CheckSum{365} +% \Finale diff --git a/Master/texmf-dist/source/latex/bpchem/bpchem.ins b/Master/texmf-dist/source/latex/bpchem/bpchem.ins new file mode 100644 index 00000000000..b1819fc8620 --- /dev/null +++ b/Master/texmf-dist/source/latex/bpchem/bpchem.ins @@ -0,0 +1,6 @@ +%% DocStrip driver for bpbrief +\input docstrip +\askonceonly +\generate{\file{bpchem.sty}{\from{bpchem.dtx}{bpchem}} +} +\endbatchfile |