summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/glosmathtools/README.md5
-rw-r--r--macros/latex/contrib/glosmathtools/glosmathtools.sty4
-rw-r--r--macros/latex/contrib/glosmathtools/sample_glosmathtools_en.pdfbin0 -> 346481 bytes
-rw-r--r--macros/latex/contrib/glosmathtools/sample_glosmathtools_en.tex112
-rw-r--r--macros/latex/contrib/glosmathtools/sample_glosmathtools_fr.pdf (renamed from macros/latex/contrib/glosmathtools/sample_glosmathtools.pdf)bin377849 -> 349517 bytes
-rw-r--r--macros/latex/contrib/glosmathtools/sample_glosmathtools_fr.tex (renamed from macros/latex/contrib/glosmathtools/sample_glosmathtools.tex)19
-rw-r--r--macros/latex/contrib/glosmathtools/sample_glosmathtools_glos.tex4
-rw-r--r--macros/latex/contrib/hyperxmp/README2
-rw-r--r--macros/latex/contrib/hyperxmp/einstein-xmp.tex14
-rw-r--r--macros/latex/contrib/hyperxmp/einstein1.pdfbin0 -> 70830 bytes
-rw-r--r--macros/latex/contrib/hyperxmp/einstein1.pngbin35909 -> 0 bytes
-rw-r--r--macros/latex/contrib/hyperxmp/einstein2.pdfbin0 -> 77679 bytes
-rw-r--r--macros/latex/contrib/hyperxmp/einstein2.pngbin40735 -> 0 bytes
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.dtx1361
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.ins9
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.pdfbin655188 -> 1234122 bytes
-rw-r--r--macros/latex/contrib/jmlr/CHANGES7
-rw-r--r--macros/latex/contrib/jmlr/README2
-rw-r--r--macros/latex/contrib/jmlr/jmlr.dtx123
-rw-r--r--macros/latex/contrib/jmlr/jmlr.ins2
-rw-r--r--macros/latex/contrib/jmlr/jmlr.pdfbin629603 -> 631982 bytes
-rw-r--r--macros/latex/contrib/jmlr/sample-books/jmlrbook-sample.pdfbin318973 -> 313757 bytes
-rw-r--r--macros/latex/contrib/jmlr/sample-books/proceedings-sample.pdfbin419288 -> 412460 bytes
-rw-r--r--macros/latex/contrib/jmlr/sample-papers/jmlr-sample.pdfbin309399 -> 312766 bytes
-rw-r--r--macros/latex/contrib/jmlr/sample-papers/jmlr-sample.tex4
-rw-r--r--macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.pdfbin297812 -> 324349 bytes
-rw-r--r--macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.tex4
-rw-r--r--macros/latex/contrib/lettrine/README.md (renamed from macros/latex/contrib/lettrine/README)50
-rw-r--r--macros/latex/contrib/lettrine/contrib.dtx4
-rw-r--r--macros/latex/contrib/lettrine/contrib.ins2
-rw-r--r--macros/latex/contrib/lettrine/doc/demo-de.pdfbin136266 -> 57807 bytes
-rw-r--r--macros/latex/contrib/lettrine/doc/demo-de.tex68
-rw-r--r--macros/latex/contrib/lettrine/doc/demo-fr.pdfbin0 -> 62734 bytes
-rw-r--r--macros/latex/contrib/lettrine/doc/demo-fr.tex (renamed from macros/latex/contrib/lettrine/doc/demo.tex)90
-rw-r--r--macros/latex/contrib/lettrine/doc/demo-lua.pdfbin0 -> 74166 bytes
-rw-r--r--macros/latex/contrib/lettrine/doc/demo-lua.tex116
-rw-r--r--macros/latex/contrib/lettrine/doc/demo.pdfbin144777 -> 0 bytes
-rw-r--r--macros/latex/contrib/lettrine/doc/lettrine.pdfbin123998 -> 89941 bytes
-rw-r--r--macros/latex/contrib/lettrine/lettrine.dtx284
-rw-r--r--macros/latex/contrib/lettrine/lettrine.ins2
-rw-r--r--macros/latex/contrib/mychemistry/README30
-rw-r--r--macros/latex/contrib/mychemistry/examples.pdfbin941952 -> 0 bytes
-rw-r--r--macros/latex/contrib/mychemistry/examples.tex864
-rw-r--r--macros/latex/contrib/mychemistry/mychemistry.sty1557
-rw-r--r--macros/latex/contrib/mychemistry/mychemistry_en.pdfbin764132 -> 0 bytes
-rw-r--r--macros/latex/contrib/mychemistry/mychemistry_en.tex1724
-rw-r--r--macros/latex/contrib/physconst/CHANGELOG.md15
-rw-r--r--macros/latex/contrib/physconst/physconst.dtx602
-rw-r--r--macros/latex/contrib/physconst/physconst.pdfbin208326 -> 213667 bytes
-rw-r--r--macros/latex/contrib/physunits/CHANGELOG.md20
-rw-r--r--macros/latex/contrib/physunits/physunits.dtx75
-rw-r--r--macros/latex/contrib/physunits/physunits.pdfbin100908 -> 105018 bytes
-rw-r--r--macros/latex/contrib/yathesis/README.md2
-rw-r--r--macros/latex/contrib/yathesis/doc/README-TRANSLATION.md2
-rw-r--r--macros/latex/contrib/yathesis/doc/yathesis-fr.pdfbin6494376 -> 6513450 bytes
-rw-r--r--macros/latex/contrib/yathesis/exemples/specimen/latexmkrc24
-rw-r--r--macros/latex/contrib/yathesis/exemples/specimen/these.pdfbin1231592 -> 1240074 bytes
-rw-r--r--macros/latex/contrib/yathesis/exemples/specimen/these.tex21
-rw-r--r--macros/latex/contrib/yathesis/source/yathesis-samples-templates.dtx25
-rw-r--r--macros/latex/contrib/yathesis/source/yathesis.dtx524
-rw-r--r--macros/luatex/generic/luatexja/README8
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-en.pdfbin528742 -> 685487 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-ja.pdfbin938795 -> 1101328 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja.dtx151
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua3
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-otf.lua6
-rw-r--r--macros/luatex/generic/luatexja/src/luatexja.sty2
-rw-r--r--macros/luatex/generic/luatexja/src/patches/lltjp-listings.sty21
68 files changed, 2557 insertions, 5407 deletions
diff --git a/macros/latex/contrib/glosmathtools/README.md b/macros/latex/contrib/glosmathtools/README.md
index 1c5478f452..83d58b8617 100644
--- a/macros/latex/contrib/glosmathtools/README.md
+++ b/macros/latex/contrib/glosmathtools/README.md
@@ -13,8 +13,7 @@ The main features are:
- bilangual nomenclatures (for bilangual documents)
- bilangual abbreviations
-At the time being, the documentation is based on `ulthese` class and
-in french only.
+The documentation is based on `ulthese` class.
## Licence
@@ -23,7 +22,7 @@ later version.
## Version
-0.5.2 (2020-03-20)
+1.0.0 (2020-03-26)
## Author
diff --git a/macros/latex/contrib/glosmathtools/glosmathtools.sty b/macros/latex/contrib/glosmathtools/glosmathtools.sty
index 1eeab40e75..9344689e97 100644
--- a/macros/latex/contrib/glosmathtools/glosmathtools.sty
+++ b/macros/latex/contrib/glosmathtools/glosmathtools.sty
@@ -3,7 +3,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{glosmathtools}%
[%
-2020/03/20 v0.5.2 %
+2020/03/26 v1.0.0 %
Mathematical nomenclature tools based on glossaries package %
Francis Gagnon %
]%
@@ -252,7 +252,7 @@ Francis Gagnon %
\renewcommand*{\glosstyledesc}[1]{\glsentrydesc{##1}}%
\renewcommand*{\glossentry}[2]%
{%
- \ifnum\value{glosmath@mainEntryCtr}>0\leavevmode\par\fi%
+ \ifnum\value{glosmath@mainEntryCtr}>0\vspace{\baselineskip}\fi%
\glstarget{##1}{\glscatnamefmt{\glosstyledesc{##1}}}%
\par\nopagebreak%
\stepcounter{glosmath@mainEntryCtr}%
diff --git a/macros/latex/contrib/glosmathtools/sample_glosmathtools_en.pdf b/macros/latex/contrib/glosmathtools/sample_glosmathtools_en.pdf
new file mode 100644
index 0000000000..35c8397461
--- /dev/null
+++ b/macros/latex/contrib/glosmathtools/sample_glosmathtools_en.pdf
Binary files differ
diff --git a/macros/latex/contrib/glosmathtools/sample_glosmathtools_en.tex b/macros/latex/contrib/glosmathtools/sample_glosmathtools_en.tex
new file mode 100644
index 0000000000..bffa7f8890
--- /dev/null
+++ b/macros/latex/contrib/glosmathtools/sample_glosmathtools_en.tex
@@ -0,0 +1,112 @@
+% !TeX encoding = UTF-8
+% !TeX spellcheck = en_US
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Main document for glosmathtool sample
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% manually load hyperref with nohyperref
+\documentclass[projet,nohyperref,article,english,french]{ulthese}
+%% ===================== packages ============================================
+\ifxetex\else \usepackage[utf8]{inputenc} \fi
+\usepackage{mathtools,siunitx,amsmath,amsfonts}
+\usepackage{hyperref} % loaded last except glosmathtools
+% toc ocption passed to glossaries : add nomenclature to PDF bookmarks
+\usepackage[qtmarkupright,singlelineskip,toc]{glosmathtools}
+%% ===================== preamble ============================================
+%% ------------- glosmathtools -----------------------------------------------
+\makeglossaries% executed in first
+\setacronymlang{L1}% first language abbreviations
+\setglossarystyle{nomencl-L1L2}% bilingual description
+\loadglsentries{sample_glosmathtools_glos} % definition file
+\glssetwidest{LOOP} % IMPORTANT : widest entry in nomenclature
+\renewcommand*{\glscatnamefmt}[1]{\textbf{#1}} % category text format
+%% ------------- ulthese ----------------------------------------------------
+\titre{\texttt{glosmathtools} documentation and sample in \texttt{ulthese}}
+\soustitre{v1.0.0}
+\auteur{Francis Gagnon}
+\makeatletter\renewcommand*{\UL@typeofdoc}{}\makeatother
+%% ============================================================================
+
+\begin{document}
+\selectlanguage{english} % babel-related (not glosmathtool)
+\frontmatter
+\frontispice
+
+\printglossary[title=Nomenclature]
+
+\mainmatter
+
+\chapter{\texttt{glosmathtools} documentation and sample}
+
+\section{Compilation}
+The \texttt{glosmathtools} package is based on \texttt{glossaries} included in MiKTeX and TeX Live. Like a bibliography, the glossary compilation is done by executing the commands in the following order:
+\begin{enumerate}
+ \item \texttt{pdflatex}
+ \item \texttt{makeglossaries}
+ \item \texttt{pdflatex}
+\end{enumerate}
+The \texttt{makeglossaries} command is directly available in TeXstudio menus or with \texttt{F9}. For other editors, add a custom command. For example, in TexMaker, go to \texttt{User > User Commands > Edit User Commands}:
+\begin{itemize}
+ \item Menu Item : \texttt{glossaries}
+ \item Command : \texttt{makeglossaries \%}
+\end{itemize}
+On Windows with MiKTeX, the \texttt{makeglossaries} script may requires an installation of Perl (see \url{https://tinyurl.com/ybnoyqjp}). Once Perl installed, you should run \texttt{perltex.exe} available in the MiKTeX installation directory.
+
+\section{Package options}
+The options of the \texttt{glosmathtools} package are summarized by:
+\begin{description}
+ \item[qtmarkupright] character \texttt{<">} shortcut for subscript without italics
+ \item[singlelineskip] force single line spacing in nomenclature
+ \item[nodefop] use operators and accents without definitions
+ \item[{[other options]}] passed to \texttt{glossaries} package
+\end{description}
+For example, the \textbf{toc} option of \texttt{glossaries} can be added to include the nomenclature in the table of contents.
+
+\section{Using the package}
+By default, mathematical symbols must be used in the text so that they are added to the nomenclature, which encourages the author to introduce his variables. It is still possible to manually add a symbol without referring to it with the \texttt{\textbackslash glsadd\{label\}} macro, or \texttt{\textbackslash glsaddall}, to add everything.
+
+\subsection{Symbols, subscripts and accents}
+The insertion of a simple mathematical symbol with hyperlink is done with the \texttt{\textbackslash gls} macro of \texttt{glossaries}: \gls{k}, \gls{mat.A} and \gls{mat.b}. The same goes for abbreviations: the \gls{ODE}. Abbreviations are only defined at their first use: the \gls{ODE}.
+
+Subscripts must be labeled \texttt{sub.restOfTheLabel}: the subscript \gls{sub.a} indicates air. The \texttt{\textbackslash glsub} macro allows to add subscripts to variables: \glsub{d}{v}, \glsub{z}{v}, \glsub{T}{v}, \glsub{D}{a}, \glsub{rho}{w} and \glsub{mu}{v}. By defining mathematical symbols with \texttt{\textbackslash newglosentrymath}, all macros can be used in text mode and math mode (with \texttt{\$\$}). Still, it is better to write explicit symbols in equations to ease code reading (no hyperlink):
+\begin{equation}
+d"v + \glsub{d}{v} = \SI{10.0}{\centi\meter} = 3.937\qtmark
+\end{equation}
+The package can be loaded with the \texttt{qtmarkupright} option. The \texttt{<">} character is then configured as a shortcut for writing an index without italics in \texttt{math} mode (\texttt{<\_>} for italic index) \footnote{The \texttt{\textbackslash qtmark} macro inserts the character <">. In ISO, subscripts representing the abbreviation of a word are written without italics, and those representing a variable, in italics.}.
+
+The \texttt{\textbackslash glsvi} macro appends a variable in index to another variable, and \texttt{\textbackslash glsvisub}, an indexed variable to another variable: \glsvi{T}{k} and \glsvisub{T}{z}{v}. Finally, it is possible to add two subscripts separated by comma with \texttt{\textbackslash glsubs}: \glsubs{D}{w}{a}. In this case, the comma operator is added to the nomenclature, which must be defined in the glossary under \texttt{op.comma} label.
+
+Accents can also be added to variables with \texttt{\textbackslash glsac} macro: \glsac[dot]{m} and \glsac[bar]{T}. At their respective use, an operator is added to the nomenclature. They must therefore be defined at their respective labels. The available accents are:
+\begin{description}
+\item[dot] $\dot{\bullet}$ (defined at label \texttt{op.dot})
+\item[ddot] $\ddot{\bullet}$ (defined at label \texttt{op.ddot})
+\item[bar] $\bar{\bullet}$ (defined at label \texttt{op.bar})
+\item[hat] $\widehat{\bullet}$ (defined at label \texttt{op.hat})
+\item[vec] $\vec{\bullet}$ (defined at label \texttt{op.vec})
+\item[tilde] $\widetilde{\bullet}$ (defined at label \texttt{op.tilde})
+\end{description}
+Moreover, an optional argument makes it possible to add accents to all the aforementioned macros: \glsub[bar]{T}{v} and \glsubs[dot]{m}{v}{a}. There are two optional arguments for \texttt{\textbackslash glsvi} and \texttt{\textbackslash glsvisub} cases: \glsvi[dot]{m}{k}, \glsvi[bar][dot]{T}{m} and \glsvisub[][dot]{T}{m}{w}. Finally, the \texttt{nodefop} option makes it possible to use accents without nomenclature definitions.
+
+\subsection{Language, abbreviations and nomenclature}
+If there are language changes throughout the document, you must change the language for acronyms. The \texttt{descseclang} key must be defined in the glossary beforehand. Afterward, the \texttt{\textbackslash setacronymlang} macro allows to choose among 4 language options:
+\begin{description}
+ \item[L1] main language description (abbreviation) : \setacronymlang{L1}\acrfull{TL}
+ \item[L2] second language description (abbreviation) : \setacronymlang{L2}\acrfull{TL}
+ \item[L1L2] bilingual description, main language (abbreviation, \textit{second language}) : \setacronymlang{L1L2}\acrfull{TL}
+ \item[L2L1] bilingual description, second language (abbreviation, \textit{main language}) : \setacronymlang{L2L1}\acrfull{TL}
+\end{description}
+\setacronymlang{L1}% back to document language
+The \texttt{acronymlang} environment works in a similar way: \begin{acronymlang}{L1L2}\acrfull{TL}\end{acronymlang}. The \texttt{\textbackslash glslang} macro displays the acronym in the specified language: \glslang[L1L2]{TL}. Second descriptions are also available with \texttt{\textbackslash glsdescsec}: \textit{le \glsdescsec{TL}}.
+
+For the nomenclature (or list of symbols), the widest entry must be defined in the preamble with \texttt{\textbackslash glssetwidest}. Like abbreviations, it is possible to change your language with 4 style options for \texttt{\textbackslash setglossarystyle}:
+\begin{description}
+ \item[nomencl-L1] (or \textbf{nomencl}) main language description
+ \item[nomencl-L2] second language description
+ \item[nomencl-L1L2] bilingual description, main language (abbreviation, \textit{second language})
+ \item[nomencl-L2L1] bilingual description, second language (abbreviation, \textit{main language})
+\end{description}
+The \texttt{singlespaceglos} package option forces single line spacing in the nomenclature (requires \texttt{ulthese}/\texttt{memoir} or the \texttt{setspace} package). The \texttt{\textbackslash glscatnamefmt} macro can be redefined in the preamble to modify header format for categories. The example on page ii is a bilingual nomenclature \textbf{nomencl-L2L1} with single line spacing.
+
+If defined, the content of \texttt{symbol} key is appended to descriptions (for units or dimensions). Note that the mathematical symbols are not saved in this key, but at the \texttt{name} key.
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/glosmathtools/sample_glosmathtools.pdf b/macros/latex/contrib/glosmathtools/sample_glosmathtools_fr.pdf
index 69c126e041..930ee1909a 100644
--- a/macros/latex/contrib/glosmathtools/sample_glosmathtools.pdf
+++ b/macros/latex/contrib/glosmathtools/sample_glosmathtools_fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/glosmathtools/sample_glosmathtools.tex b/macros/latex/contrib/glosmathtools/sample_glosmathtools_fr.tex
index e4e1c785f8..ffda16f91c 100644
--- a/macros/latex/contrib/glosmathtools/sample_glosmathtools.tex
+++ b/macros/latex/contrib/glosmathtools/sample_glosmathtools_fr.tex
@@ -5,8 +5,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% nohyperref pour charger le package hyperref manuellement
-% voir https://gitlab.com/vigou3/ulthese/issues/2
-\documentclass[projet,nohyperref,english,french]{ulthese}
+\documentclass[projet,nohyperref,article,english,french]{ulthese}
%% ===================== packages ============================================
\ifxetex\else \usepackage[utf8]{inputenc} \fi
\usepackage{mathtools,siunitx,amsmath,amsfonts}
@@ -23,14 +22,16 @@
\renewcommand*{\glscatnamefmt}[1]{\textbf{#1}} % format des catégories
%% ------------- ulthese ----------------------------------------------------
\titre{Documentation et exemple de \texttt{glosmathtools} dans \texttt{ulthese}}
-\soustitre{v0.5.2}
+\soustitre{v1.0.0}
\auteur{Francis Gagnon}
+\makeatletter\renewcommand*{\UL@typeofdoc}{}\makeatother
%% ============================================================================
\begin{document}
-\frontmatter
-
+\selectlanguage{french} % pour babel (pas glosmathtool)
+\frontmatter
\frontispice
+
\printglossary[title=Nomenclature]
\mainmatter
@@ -59,12 +60,13 @@ Les options du package \texttt{glosmathtools} se résument par :
\item[nodefop] utilisation des opérateurs et accents sans définition
\item[{[autres options]}] passés au package \texttt{glossaries}
\end{description}
-Par exemple, l'option \textbf{toc} du package \texttt{glossaries} peut être ajouté afin d'inclure la nomenclature dans la table des matières. De plus amples informations sont fournies ci-dessous (voir .
+Par exemple, l'option \textbf{toc} du package \texttt{glossaries} peut être ajouté afin d'inclure la nomenclature dans la table des matières.
\section{Utilisation du package}
-\subsection{Symboles, indices et accentuations}
+Par défaut, les symboles mathématiques doivent être utilisés dans le texte pour qu'ils soient ajoutés à la nomenclature, ce qui incite l'auteur à introduire ses variables. Il est tout de même possible de manuellement ajouter un symbole sans y référer avec la macro \texttt{\textbackslash glsadd\{label\}}, ou \texttt{\textbackslash glsaddall}, pour tout ajouter.
-L'insertion d'un symbole mathématique simple avec hyperlien se fait avec la macro \texttt{\textbackslash gls} de \texttt{glossaries} : \gls{k}, \gls{mat.A} et \gls{mat.b}. C'est la même chose pour les abréviations : le \gls{LOOP}. Les abréviations sont uniquement définies à leur première utilisation : le \gls{LOOP}.
+\subsection{Symboles, indices et accentuations}
+L'insertion d'un symbole mathématique simple avec hyperlien se fait avec la macro \texttt{\textbackslash gls} de \texttt{glossaries} : \gls{k}, \gls{mat.A} et \gls{mat.b}. C'est la même chose pour les abréviations : la \gls{TL}. Les abréviations sont uniquement définies à leur première utilisation : la \gls{TL}.
Les indices doivent être définis avec un label du format \texttt{sub.resteDuLabel}: l'indice \gls{sub.a} désigne l'air. La macro \texttt{\textbackslash glsub} permet d'ajouter un indice à une variable : \glsub{d}{v}, \glsub{z}{v}, \glsub{T}{v}, \glsub{D}{a}, \glsub{rho}{w} et \glsub{mu}{v}. En définissant les symboles mathématiques avec \texttt{\textbackslash newglosentrymath}, toutes les macros peuvent s'utiliser autant en mode \texttt{text} qu'en mode \texttt{math} (avec \texttt{\$\$}). Par contre, il est mieux d'écrire explicitement les symboles dans une équation afin d'alléger le code (pas d'hyperlien):
\begin{equation}
@@ -86,7 +88,6 @@ Des accents peuvent aussi s'ajouter sur les variables avec la macro \texttt{\tex
De plus, un argument optionnel permet d'ajouter des accents à toutes les macros précédentes : \glsub[bar]{T}{v} et \glsubs[dot]{m}{v}{a}. Il y a deux arguments optionnels dans le cas de \texttt{\textbackslash glsvi} et \texttt{\textbackslash glsvisub} : \glsvi[dot]{m}{k}, \glsvi[bar][dot]{T}{m} et \glsvisub[][dot]{T}{m}{w}. Finalement, il est possible d'utiliser les accents sans définition dans la nomenclature avec l'option \texttt{nodefop}.
\subsection{Langue, abréviations et nomenclature}
-
S'il y a des changements de langues à travers le document, il faut changer de langue pour les acronymes. La clé \texttt{descseclang} doit être préalablement définie dans le glossaire. Par la suite, la macro \texttt{\textbackslash setacronymlang} permet de choisir 4 options de langue:
\begin{description}
\item[L1] description langue principale (abréviations) : \setacronymlang{L1}\acrfull{ODE}
diff --git a/macros/latex/contrib/glosmathtools/sample_glosmathtools_glos.tex b/macros/latex/contrib/glosmathtools/sample_glosmathtools_glos.tex
index edab2bc8f9..62c2386dd0 100644
--- a/macros/latex/contrib/glosmathtools/sample_glosmathtools_glos.tex
+++ b/macros/latex/contrib/glosmathtools/sample_glosmathtools_glos.tex
@@ -156,7 +156,7 @@
parent=abbrv%
]{ODE}{ODE}{ordinary differential equation}
\newacronym[%
- descseclang={laboratoire d'observation et d'optimisation des procédés},%
+ descseclang={transformation de Laplace},%
parent=abbrv%
- ]{LOOP}{LOOP}{process observation and optimization laboratory}
+ ]{TL}{TL}{Laplace transform}
}% \ No newline at end of file
diff --git a/macros/latex/contrib/hyperxmp/README b/macros/latex/contrib/hyperxmp/README
index c65c645223..c5365e41b0 100644
--- a/macros/latex/contrib/hyperxmp/README
+++ b/macros/latex/contrib/hyperxmp/README
@@ -47,7 +47,7 @@ Building hyperxmp.pdf is a little more involved:
Copyright and license
=====================
-Copyright (C) 2019 Scott Pakin
+Copyright (C) 2011-2020 Scott Pakin
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
diff --git a/macros/latex/contrib/hyperxmp/einstein-xmp.tex b/macros/latex/contrib/hyperxmp/einstein-xmp.tex
index f876012212..2526cf0ff7 100644
--- a/macros/latex/contrib/hyperxmp/einstein-xmp.tex
+++ b/macros/latex/contrib/hyperxmp/einstein-xmp.tex
@@ -19,7 +19,10 @@
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"
- xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/"
+ xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"
+ xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"
+ xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"
+ xmlns:prism="http://prismstandard.org/namespaces/basic/2.1/"
xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
@@ -31,7 +34,7 @@
\end{alltt}
\begin{center}
$\vdots$\par
- \emph{[over 100 lines of boilerplate definitions not shown]}\par
+ \emph{[over 200 lines of boilerplate definitions not shown]}\par
$\vdots$\par
\end{center}
\begin{alltt}
@@ -40,7 +43,9 @@
<pdf:Keywords>
\metavalue{energy quanta, Hertz effect, quantum physics}
</pdf:Keywords>
- <pdf:Producer>\metavalue{pdfTeX-1.40.19}</pdf:Producer>
+ <pdf:Producer>
+ \metavalue{pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian)}
+ </pdf:Producer>
<pdf:PDFVersion>\metavalue{1.5}</pdf:PDFVersion>
<xmpRights:Marked>\metavalue{True}</xmpRights:Marked>
<xmpRights:WebStatement>
@@ -127,6 +132,7 @@
\metavalue{uuid:3e4c4182-b182-46c9-995f-754c41d13390}
</xmpMM:InstanceID>
<xmpMM:VersionID>\metavalue{2.998e8}</xmpMM:VersionID>
+ <xmpMM:RenditionClass>\metavalue{default}</xmpMM:RenditionClass>
<Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">
<Iptc4xmpCore:CiAdrExtadr>\metavalue{Kramgasse 49}</Iptc4xmpCore:CiAdrExtadr>
<Iptc4xmpCore:CiAdrCity>\metavalue{Bern}</Iptc4xmpCore:CiAdrCity>
@@ -156,7 +162,7 @@
<prism:url>
\metavalue{http://www.physik.uni-augsburg.de/annalen/history/einstein-papers/190517132-148.pdf}
</prism:url>
- <prism:byteCount>\metavalue{56884}</prism:byteCount>
+ <prism:byteCount>\metavalue{59846}</prism:byteCount>
<prism:pageCount>\metavalue{17}</prism:pageCount>
</rdf:Description>
</rdf:RDF>
diff --git a/macros/latex/contrib/hyperxmp/einstein1.pdf b/macros/latex/contrib/hyperxmp/einstein1.pdf
new file mode 100644
index 0000000000..3a283dfca7
--- /dev/null
+++ b/macros/latex/contrib/hyperxmp/einstein1.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperxmp/einstein1.png b/macros/latex/contrib/hyperxmp/einstein1.png
deleted file mode 100644
index 8cee49db9d..0000000000
--- a/macros/latex/contrib/hyperxmp/einstein1.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hyperxmp/einstein2.pdf b/macros/latex/contrib/hyperxmp/einstein2.pdf
new file mode 100644
index 0000000000..3a3144d096
--- /dev/null
+++ b/macros/latex/contrib/hyperxmp/einstein2.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperxmp/einstein2.png b/macros/latex/contrib/hyperxmp/einstein2.png
deleted file mode 100644
index abe66a246d..0000000000
--- a/macros/latex/contrib/hyperxmp/einstein2.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.dtx b/macros/latex/contrib/hyperxmp/hyperxmp.dtx
index a5aa24a146..bad62e4b98 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.dtx
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%
-% Copyright (C) 2019 by Scott Pakin <scott+hyxmp@pakin.org>
-% -------------------------------------------------------
+% Copyright (C) 2011--2020 by Scott Pakin <scott+hyxmp@pakin.org>
+% ---------------------------------------------------------------
%
% This file may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{hyperxmp}
%<*package>
- [2019/04/05 v4.1 Store hyperref metadata in XMP format]
+ [2020/03/20 v5.0 Store hyperref metadata in XMP format]
%</package>
%
%<*driver>
@@ -31,8 +31,10 @@
\gdef\levelchar{&}
\egroup
\documentclass{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage[english]{babel}
\usepackage{graphicx}
-\usepackage{color}
+\usepackage[cmyk]{xcolor}
\usepackage{tocbibind}
\usepackage{microtype}
\usepackage{needspace}
@@ -40,9 +42,19 @@
\usepackage{alltt}
\usepackage{multicol}
\usepackage{makeidx}
-\usepackage[utf8]{inputenc}
+\usepackage{mmap}
+\usepackage{enumitem}
+\usepackage{booktabs}
+\usepackage{marginfix}
+\usepackage{ifmtarg}
+\usepackage{iftex}
+\input{hyperxmp-stds}
+\expandafter\ifx\csname wantpdfstandards\endcsname\relax
+ \usepackage{hyperref}
+\else
+ \usepackage[pdfa]{hyperref}
+\fi
\usepackage{hyperxmp}
-\usepackage[unicode,bookmarksopen,bookmarksopenlevel=2,bookmarksnumbered]{hyperref}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -60,17 +72,27 @@
pdftitle={The hyperxmp package},
pdfsubject={LaTeX2e support for XMP metadata},
pdfkeywords={LaTeX, embedded metadata, XMP, PDF, copyright, license, comments},
- pdfcopyright={Copyright (C) 2019, Scott Pakin},
+ pdfcopyright={Copyright (C) 2011-2020, Scott Pakin},
pdflicenseurl={http://www.latex-project.org/lppl/},
pdfcaptionwriter={Scott Pakin},
pdfcontactemail={scott+hyxmp@pakin.org},
pdfcontacturl={http://www.pakin.org/\xmptilde scott/},
pdfversionid={\versionnumber},
pdflang={en-US},
+ pdftrapped={False},
+ pdfstartpage={},
pdfurl={http://mirror.ctan.org/macros/latex/contrib/hyperxmp/hyperxmp.pdf},
baseurl={http://mirror.ctan.org/macros/latex/contrib/hyperxmp/}
}
+% Specify some additional hyperref configuration.
+\hypersetup{%
+ unicode,
+ bookmarksopen,
+ bookmarksopenlevel=2,
+ bookmarksnumbered
+}
+
\begin{document}
\DocInput{hyperxmp.dtx}
\Needspace{10\baselineskip}
@@ -89,7 +111,7 @@
%</driver>
% \fi
%
-% \CheckSum{2095}
+% \CheckSum{2342}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -142,6 +164,10 @@
% \changes{v4.1}{2019/04/05}{Updated the documentation to refer to
% \protect\cs{pdfnumpages} by its correct name. Thanks to Volker RW Schaa
% for catching the discrepancy}
+% \changes{v5.0}{2020/02/15}{Added support for \protect\acro{PDF/UA}
+% standards, as requested by Robin Schwab}
+% \changes{v5.0}{2020/02/26}{Added support for \protect\acro{PDF/X}
+% standards, as requested by Robin Schwab}
%
% ^^A \GetFileInfo{hyperxmp.dtx}
%
@@ -259,6 +285,18 @@
% }
% \makeatother
%
+% ^^A Typeset a PDF standard name, indexing only the standard type but
+% ^^A not the subtype or year.
+% \makeatletter
+% \newcommand*{\PDFstd}[4]{^^A
+% \mbox{^^A
+% \acro{PDF/#1}-\oldstylenums{#2}^^A
+% #3^^A
+% \@ifnotmtarg{#4}{:\oldstylenums{#4}}^^A
+% }^^A
+% }
+% \makeatother
+%
% ^^A Pack figures a bit tighter onto the page.
% \renewcommand{\floatpagefraction}{0.8}
%
@@ -276,7 +314,6 @@
% metadata through \pkgname{hyperref}'s mechanisms.
% \end{abstract}
%
-%
% \section{Introduction}
%
% Adobe Systems, Inc.\ has been promoting
@@ -297,10 +334,12 @@
% also its title, list of authors, description, and other metadata.
%
% \paragraph{This is too abstract! Give me an example.}
-% Consider a \LaTeX\ document with three authors: Jack Napier, Edward
-% Nigma, and Harvey Dent. The generated \acro{PDF} file will contain,
-% among other information, the following stanza of \acro{XMP} code
-% embedded within it:
+% Consider a \LaTeX\ document with three authors---Jack Napier, Edward
+% Nigma, and Harvey Dent---named in the \LaTeX\ source in the usual way:
+% ``\verb|\author{|\texttt{Jack Napier \cs{and} Edward Nigma \cs{and}
+% Harvey Dent}\verb|}|''. With \pkgname{hyperxmp}, the generated
+% \acro{PDF} file will contain, among other information, the following
+% stanza of \acro{XMP} code embedded within it:
%
% \begin{verbatim}
% <dc:creator>
@@ -323,7 +362,7 @@
%
% Remember that \acro{XMP} code is stored as \emph{metadata}. It does
% not appear when viewing or printing the \acro{PDF} file. Rather, it
-% is intended to make it easy for applications to identify and
+% is intended to make it easy for computer applications to identify and
% categorize the document.
%
% \paragraph{What metadata does \textsf{hyperxmp} process?}
@@ -360,14 +399,18 @@
% \item page range(s) (\xmpprop{prism:pageRange})
% \item \acro{PDF} version (\xmpprop{pdf:PDFVersion})
% \item \acro{PDF}-generating tool (\xmpprop{pdf:Producer} and \xmpprop{xmp:CreatorTool})
-% \item \acro{PDF/A} compliance level and version (\xmpprop{pdfaid:part} and \xmpprop{pdfaid:conformance})
+% \item \acro{PDF/A} version and conformance level (\xmpprop{pdfaid:part} and \xmpprop{pdfaid:conformance})
+% \item \acro{PDF/UA} version (\xmpprop{pdfuaid:part})
+% \item \acro{PDF/X} standard compliance (\xmpprop{pdfxid:GTS\_PDFXVersion})
% \item position/title of primary author (\xmpprop{photoshop:AuthorsPosition})
% \item publication name of parent publication (\xmpprop{prism:publicationName})
% \item publisher of the document (\xmpprop{dc:publisher})
+% \item rendition variation of the document (\xmpprop{xmpMM:RenditionClass})
% \item summary (\xmpprop{dc:description})
% \item subtitle (\xmpprop{prism:subtitle})
% \item telephone number(s) of primary author (\xmpprop[CiTelWork]{Iptc4xmpCore:CreatorContactInfo})
% \item title (\xmpprop{dc:title})
+% \item trapping of colors (\xmpprop{pdf:trapped})
% \item type of document (\xmpprop{dc:type})
% \item type of parent publication (\xmpprop{prism:aggregationType})
% \item \acro{URL} of the document (\xmpprop{prism:url})
@@ -425,6 +468,7 @@
% \item \optname{pdfproducer}
% \item \optname{pdfsubject}
% \item \optname{pdftitle}
+% \item \optname{pdftrapped}
% \end{itemize}
% \end{multicols}
%
@@ -467,12 +511,15 @@
% \item \optname{pdfpublication}
% \item \optname{pdfpublisher}
% \item \optname{pdfpubtype}
+% \item \optname{pdfrendition}
% \item \optname{pdfsource}
% \item \optname{pdfsubtitle}
% \item \optname{pdftype}
+% \item \optname{pdfuapart}
% \item \optname{pdfurl}
% \item \optname{pdfversionid}
% \item \optname{pdfvolumenum}
+% \item \optname{pdfxstandard}
% \end{itemize}
% \end{multicols}
% \label{page:end-new-options}
@@ -483,8 +530,10 @@
% The document title is specified as normal for \pkgname{hyperref} with
% \moptname{pdftitle}, but see Note~\ref{note:multilingual} on
% page~\pageref{note:multilingual} for instructions on how to specify a
-% title in multiple languages. \pkgname{hyperxmp} introduces a
-% complementary \moptname{pdfsubtitle} option:
+% title in multiple languages. If \optname{pdftitle} is not specified
+% it will inherit its value from the document's \cs{title}.
+% \pkgname{hyperxmp} introduces a complementary \moptname{pdfsubtitle}
+% option:
%
% \begin{verbatim}
% pdftitle={Frankenstein},
@@ -498,14 +547,20 @@
% optional \acro{ISO} \mbox{3166-1} two-letter region code. See the
% example below for \optname{pdfpublication}.
%
-% \Needspace{6\baselineskip}
-% \moptname{pdfauthortitle} indicates the primary author's position or
-% title. \moptname{pdfcaptionwriter} specifies the name of the person
-% who added the metadata to the document. The next eight items describe
-% how to contact the person or institution responsible for the document
-% (the ``contact''). \moptname{pdfcontactaddress} is the contact's
-% street address and can include the institution name if the contact is
-% an institution; \moptname{pdfcontactcity} is the contact's city;
+% \pkgname{hyperref}'s \moptname{pdfauthor} option specifies the
+% document's author(s). See Note~\ref{note:literal-commas} on
+% page~\pageref{note:literal-commas} for a discussion of the correct
+% syntax. If \optname{pdfauthor} is not specified it will inherit its
+% value from the document's \cs{author}. \moptname{pdfauthortitle}
+% indicates the primary author's position or title.
+% \moptname{pdfcaptionwriter} specifies the name of the person who added
+% the metadata to the document.
+%
+% The next eight items describe how to contact the person or institution
+% responsible for the document (the ``contact'').
+% \moptname{pdfcontactaddress} is the contact's street address and can
+% include the institution name if the contact is an institution;
+% \moptname{pdfcontactcity} is the contact's city;
% \moptname{pdfcontactcountry} is the contact's country;
% \moptname{pdfcontactemail} is the contact's email address (or
% multiple, comma-separated email addresses); \moptname{pdfcontactphone}
@@ -561,7 +616,8 @@
% \pkgname{gitver} package is an expandable (see
% Note~\ref{note:expandable} on page~\pageref{note:expandable}) version
% of the current \href{https://git-scm.com/}{Git} hash that can suitably
-% be passed to \optname{pdfversionid}.
+% be passed to \optname{pdfversionid}. If not specified,
+% \optname{pdfversionid} defaults to~|1|.
%
% Already-published documents can be identified in a number of ways.
% \moptname{pdfisbn} specifies the \acro{ISBN}. \moptname{pdfissn}
@@ -663,6 +719,16 @@
% of mailing lists,''~\cite{DCMI2012:meta-terms} and other forms of
% text---all things \LaTeX\ is commonly used to typeset.
%
+% Sometimes a base document is rendered in different forms.
+% \moptname{pdfrendition} indicates the particular rendition the current
+% document instance represents. The value should come from the
+% following controlled vocabulary~\cite{Adobe2012:XMP}: |default|,
+% |draft|, |low-res|, |proof|, |screen|, and |thumbnail|.
+% \pkgname{hyperxmp}'s default value is |default|, which indicates the
+% master document, unless the \optname{draft} option is passed to
+% |\documentclass|, in which case \pkgname{hyperxmp} defaults to
+% |draft|.
+%
% The \moptname{pdfbytes} option expresses the document's file size in
% bytes. The intention is for this to be used to display an estimate of
% download time to a user or to serve as a quick check on whether a file
@@ -672,27 +738,71 @@
% a second run of |pdftex| because it queries the size of the \acro{PDF}
% file from the \emph{previous} run.
%
+% \pkgname{hyperxmp} honors \pkgname{hyperref}'s \moptname{pdftrapped}
+% option. A document can indicate whether it employs
+% \href{https://en.wikipedia.org/wiki/Trap_(printing)}{color trapping}
+% by specifying \optname{pdftrapped}=|True| or
+% \optname{pdftrapped}=|False|. (\optname{pdftrapped}=|Unknown| is also
+% allowed.) A current limitation of \pkgname{hyperxmp} is that if a
+% value other than |False| is provided, a document will additionally
+% need to specify \optname{keeppdfinfo}
+% (page~\pageref{page:keeppdfinfo}) to ensure that the \acro{PDF}
+% \pdfterm{Info} dictionary specifies the correct trapping value.
+%
+% \moptname{pdfapart} and \moptname{pdfaconformance}, are used in
+% conjunction with \pkgname{hyperref}'s \optname{pdfa} option to claim a
+% particular \acro{PDF/A} standard by which the document abides. They
+% default to \optname{pdfapart}=|1| and \optname{pdfaconformance}=|B|,
+% indicating the \PDFstd{A}{1}{b}{} standard. These can be
+% changed (with caution) to assert that the document abides by a
+% different standard (e.g.,~\PDFstd{A}{2}{u}{}). A document that
+% conforms to the \acro{PDF/UA} standard can use \moptname{pdfuapart} to
+% indicate the \acro{PDF/UA} conformance level. For example,
+% \optname{pdfuapart}=|1| asserts that the document respects
+% \PDFstd{UA}{1}{}{}. \moptname{pdfxstandard} indicates
+% the particular \acro{PDF/X} standard by which the document abides.
+% Unlike \optname{pdfpart} and \optname{pdfaconformance}, which accept a
+% number and a letter, respectively, \optname{pdfxstandard} expects a
+% textual identification of a standard name. The following are the
+% \acro{PDF/X} standard names that are considered acceptable at the time
+% of this writing.
+%
+% ^^A This list needs to be kept up-to-date with the standards checked
+% ^^A by \@pdfxstandard.
+% \begin{multicols}{3}
+% \raggedcolumns
+% \begin{itemize}[noitemsep]
+% \item \PDFstd{X}{1}{a}{2001}
+% \item \PDFstd{X}{1}{a}{2003}
+% \item \PDFstd{X}{3}{}{2002}
+% \item \PDFstd{X}{3}{}{2003}
+% \item \PDFstd{X}{4}{}{}
+% \item \PDFstd{X}{4}{p}{}
+% \item \PDFstd{X}{5}{g}{}
+% \item \PDFstd{X}{5}{n}{}
+% \item \PDFstd{X}{5}{pg}{}
+% \end{itemize}
+% \end{multicols}
+%
+% For example, one can specify \optname{pdfxstandard}=|{PDF/X-4}| or
+% \optname{pdfxstandard}=|{PDF/X-3:2003}|, but specifying
+% \optname{pdfxstandard}=|{PDF/X-3}| will not pass \acro{PDF/X}
+% validation. Note that at the time of this writing the use of the
+% \PDFstd{X}{4}{p}{}, \PDFstd{X}{5}{n}{}, and \PDFstd{X}{5}{pg}{}
+% standards has not been tested.
+%
% A rarely needed option, \moptname{pdfsource}, overrides the name of
% the \LaTeX\ source file. It defaults to |\jobname.tex| but can be
% replaced by any other string. If \optname{pdfsource} is given an
% empty argument, no document source will be specified at all.
%
-% Two other rarely needed options, \moptname{pdfaconformance} and
-% \moptname{pdfapart}, are used in conjunction with \pkgname{hyperref}'s
-% \optname{pdfa} option to claim a particular \acro{PDF/A} standard by
-% which the document abides. They default to \optname{pdfapart}=|1| and
-% \optname{pdfaconformance}=|B|, indicating the \acro{PDF/A}-\textsc{1b}
-% standard. These can be changed (with caution) to assert that the
-% document abides by a different standard
-% (e.g.,~\acro{PDF/A}-\textsc{2u}).
-%
% \bigskip
%
-% It is usually more convenient to provide values for those options using
-% \pkgname{hyperref}'s |\hypersetup| command than on the |\usepackage|
-% command line. See
+% It is usually more convenient to provide values for the preceding
+% options using \pkgname{hyperref}'s |\hypersetup| command than on the
+% |\usepackage| command line. See
% \href{http://mirrors.ctan.org/macros/latex/contrib/hyperref/hyperref.pdf}{the
-% \pkgname{hyperref} manual} for more information.
+% \pkgname{hyperref} manual} for more information.
%
%
% \subsection{A complete example}
@@ -819,6 +929,7 @@
% \subsection{Usage notes}
%
% \usagenote{Conflicting metadata in PDF/A documents}
+% \label{note:meta-conflicts}
% A \acro{PDF} file includes an \pdfterm{Info} dictionary containing
% \pdfterm{Author}, \pdfterm{Title}, \pdfterm{Subject}, and
% \pdfterm{Keywords} keys. The \pkgname{hyperref} package's
@@ -857,10 +968,12 @@
%
% Starting with version~4.0, \pkgname{hyperxmp}'s solution is to
% suppress writing metadata to the \acro{PDF} \pdfterm{Info} dictionary
-% and write it only to the \acro{XMP} packet. This appears to pacify
-% \acro{PDF/A} validators yet retains the author and keyword lists in
-% their non-truncated form. If desired, the \pdfterm{Info} dictionary
-% can be retained by passing the \optname{keeppdfinfo} option to
+% and write it only to the \acro{XMP} packet. (\pkgname{hyperxmp}~v5.0+
+% is more sophisticated. It suppresses only the author and keyword
+% lists.) This appears to pacify \acro{PDF/A} validators yet retains
+% the author and keyword lists in their non-truncated form. If desired,
+% the \pdfterm{Info} dictionary can be retained by passing the
+% \moptname{keeppdfinfo}\label{page:keeppdfinfo} option to
% \cs{hypersetup}.
%
% \usagenote{Acrobat multiline-field bug}
@@ -916,6 +1029,7 @@
% \end{enumerate}
%
% \usagenote{Literal commas}
+% \label{note:literal-commas}
% \pkgname{hyperxmp} splits the \optname{pdfauthor} and
% \optname{pdfkeywords} lists at commas. Therefore, when specifying
% \optname{pdfauthor} and \optname{pdfkeywords}, you should separate
@@ -1162,7 +1276,7 @@
%
% \input{einstein-xmp}
%
-% \begin{thebibliography}{1}
+% \begin{thebibliography}{99}
% \bibitem{Adobe2010:pdfmark}
% Adobe Systems, Inc., San Jose, California.
% \newblock \emph{{A}dobe {A}crobat~{X} {SDK} Help, pdfmark Reference}.
@@ -1265,6 +1379,9 @@
% \pkgname{hyperxmp}. Read this section only if you want to learn how
% \pkgname{hyperxmp} is implemented.
%
+% \iffalse
+%<*package>
+% \fi
%
% \subsection{Initial preparation}
% \label{sec:initial-prep}
@@ -1309,14 +1426,15 @@
%
%
% \subsection{Integration with \textsf{hyperref}}
+% \label{sec:hyperref-int}
%
% An important design decision underlying \pkgname{hyperxmp} is that the
% package should integrate seamlessly with \pkgname{hyperref}. To that
-% end, \pkgname{hyperxmp} takes its \acro{XMP} metadata from
+% end, \pkgname{hyperxmp} takes \acro{XMP} metadata from
% \pkgname{hyperref}'s \optname{baseurl}, \optname{pdfauthor},
% \optname{pdfkeywords}, \optname{pdflang}, \optname{pdfproducer},
-% \optname{pdfsubject}, and \optname{pdftitle} options. It also
-% introduces a number of new options, which are listed
+% \optname{pdfsubject}, \optname{pdftrapped}, and \optname{pdftitle}
+% options. It also introduces a number of new options, which are listed
% \vpagerefrange[above]{page:begin-new-options}{page:end-new-options}.
% For consistency with \pkgname{hyperref}'s document-metadata naming
% conventions (which are in turn based on \LaTeX's document-metadata
@@ -1329,16 +1447,21 @@
% We load a bunch of helper packages: \pkgname{kvoptions} for
% package-option processing, \pkgname{pdfescape} and \pkgname{stringenc}
% for re-encoding \term{Unicode} strings, \pkgname{intcalc} for
-% performing integer calculations (division and modulo),
-% \pkgname{ifxetex} for detecting \XeTeX, and \pkgname{ifmtarg} for
-% testing if a macro argument is empty or all spaces.
+% performing integer calculations (division and modulo), \pkgname{iftex}
+% for determining which \tex\ engine is being used, \pkgname{ifmtarg}
+% for testing if a macro argument is empty or all spaces,
+% \pkgname{etoolbox} for dynamically patching existing commands
+% (specifically, \pkgname{hyperref}'s |\PDF@FinishDoc|), and
+% \pkgname{ifthen} for convenient string comparisons.
% \begin{macrocode}
\RequirePackage{kvoptions}
\RequirePackage{pdfescape}
\RequirePackage{stringenc}
\RequirePackage{intcalc}
-\RequirePackage{ifxetex}
+\RequirePackage{iftex}
\RequirePackage{ifmtarg}
+\RequirePackage{etoolbox}
+\RequirePackage{ifthen}
% \end{macrocode}
%
% \begin{macro}{\@ifmtargexp}
@@ -1476,11 +1599,26 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\hyxmp@no@bad@parts}
+% Complain about a bad \optname{pdfapart} or \optname{pdfuapart} if given
+% trailing non-digits after a part number.
+% \begin{macrocode}
+\def\hyxmp@no@bad@parts#1\relax{%
+ \@ifnotmtarg{#1}{%
+ \PackageWarning{hyperxmp}{pdfapart and pdfuapart must be numeric}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@pdfapart}
% Prepare to store the \acro{PDF/A} part ID, which defaults to~``1''.
% \begin{macrocode}
\def\@pdfapart{1}
-\define@key{Hyp}{pdfapart}{\hyxmp@pdfstringdef\@pdfapart{#1}}
+\define@key{Hyp}{pdfapart}{%
+ \afterassignment\hyxmp@no@bad@parts\@tempcnta=0#1\relax
+ \hyxmp@pdfstringdef\@pdfapart{\the\@tempcnta}%
+}
% \end{macrocode}
% \end{macro}
%
@@ -1488,8 +1626,112 @@
% Prepare to store the \acro{PDF/A} conformance ID, which defaults to~``B''.
% \begin{macrocode}
\def\@pdfaconformance{B}
-\define@key{Hyp}{pdfaconformance}{\hyxmp@pdfstringdef\@pdfaconformance{#1}}
+\define@key{Hyp}{pdfaconformance}{%
+ \uppercase{\hyxmp@pdfstringdef\@pdfaconformance{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@pdfuapart}
+% Prepare to store the \acro{PDF/UA} part ID.
+% \begin{macrocode}
+\def\@pdfuapart{}
+\define@key{Hyp}{pdfuapart}{%
+ \afterassignment\hyxmp@no@bad@parts\@tempcnta=0#1\relax
+ \hyxmp@pdfstringdef\@pdfuapart{\the\@tempcnta}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@set@pdfx@major}
+% Parse \optname{pdfxstandard} as ``|PDF/X-|\meta{major}\meta{other}'',
+% setting |\hyxmp@pdfx@major| to \meta{major}.
+% \begin{macrocode}
+\newcommand*{\hyxmp@set@pdfx@major}[1]{\hyxmp@set@pdfx@major@i#1!}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@set@pdfx@major@i}
+% This is the first helper macro for |\hyxmp@set@pdfx@major|. It stores
+% the \acro{PDF/X} major version in |\@tempcnta|.
+% \begin{macrocode}
+\def\hyxmp@set@pdfx@major@i PDF/X-{%
+ \afterassignment\hyxmp@set@pdfx@major@ii
+ \@tempcnta=%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@set@pdfx@major@ii}
+% \begin{macro}{\hyxmp@pdfx@major}
+% This is the second helper macro for |\hyxmp@set@pdfx@major|. It
+% copies the \acro{PDF/X} major version from |\@tempcnta| to
+% |\@hyxmp@pdfx@major| and discards the rest of the \acro{PDF/X}
+% standard string.
+% \begin{macrocode}
+\def\hyxmp@set@pdfx@major@ii#1!{%
+ \edef\hyxmp@pdfx@major{\the\@tempcnta}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@check@std}
+% \changes{v5.0}{2020/03/10}{Added this macro}
+% Compare a user-provided string to a fixed string. (Assumption: Both
+% are names of \acro{PDF/X} standard versions.) If they match, undefine
+% |\next|, which we assume was previously defined to issue an
+% ``unrecognized standard'' warning message.
+% \begin{macrocode}
+\newcommand*\hyxmp@check@std[2]{%
+ \ifthenelse{\equal{#1}{#2}}%
+ {\global\let\next=\relax}%
+ {}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@pdfxstandard}
+% Prepare to store the \acro{PDF/X} standard.
+% \changes{v5.0}{2020/03/10}{Added this macro}
+% \begin{macrocode}
+\def\@pdfxstandard{}
+\def\hyxmp@pdfx@major{}
+\define@key{Hyp}{pdfxstandard}{%
+ \hyxmp@pdfstringdef\@pdfxstandard{#1}%
% \end{macrocode}
+% \begin{macro}{\next}
+% Issue a warning message if the \acro{PDF/X} standard named by the user
+% does not appear in a list of known \acro{PDF/X} standards. This is to
+% caution the user that \pkgname{hyperxmp} generates standard-specific
+% \acro{XMP} metadata and it can only guess at the correct format for
+% new standard versions. (See the comments on
+% page~\pageref{page:pdfx-id-schema} above the definition of
+% |\hyxmp@pdfx@id@schema|, for example.)
+% \begin{macrocode}
+ \gdef\next{%
+ \PackageWarning{hyperxmp}{Unrecognized PDF/X standard `#1'}%
+ }%
+ \hyxmp@check@std{#1}{PDF/X-1a:2001}%
+ \hyxmp@check@std{#1}{PDF/X-1a:2003}%
+ \hyxmp@check@std{#1}{PDF/X-3:2002}%
+ \hyxmp@check@std{#1}{PDF/X-3:2003}%
+ \hyxmp@check@std{#1}{PDF/X-4}%
+ \hyxmp@check@std{#1}{PDF/X-4p}%
+ \hyxmp@check@std{#1}{PDF/X-5g}%
+ \hyxmp@check@std{#1}{PDF/X-5n}%
+ \hyxmp@check@std{#1}{PDF/X-5pg}%
+ \next
+% \end{macrocode}
+% \begin{macro}{\hyxmp@pdfx@major}
+% Parse the \acro{PDF/X} major version number from
+% \optname{pdfxstandard} and assign it to |\hyxmp@pdfx@major|.
+% \begin{macrocode}
+ \hyxmp@set@pdfx@major{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
% \end{macro}
%
% \begin{macro}{\@pdfsource}
@@ -1525,14 +1767,36 @@
% \end{macro}
%
% \begin{macro}{\@pdfversionid}
-% Prepare to store a \acro{UUID} that represents the current version of
-% the document.
+% Prepare to store a string that represents the current version of
+% the document. It defaults to ``|1|''.
% \begin{macrocode}
-\def\@pdfversionid{}
+\def\@pdfversionid{1}
\define@key{Hyp}{pdfversionid}{\hyxmp@pdfstringdef\@pdfversionid{#1}}
% \end{macrocode}
% \end{macro}
%
+% \begin{macrocode}
+\RequirePackage{ifdraft}
+% \end{macrocode}
+%
+% \begin{macro}{\@pdfrendition}
+% \changes{v5.0}{2020/02/27}{Added the \protect\optname{pdfrendition}
+% option}
+% Prepare to store a tag describing how this rendition of the document
+% differs from the master. The default value is |default|, which
+% indicates the master document, except in the case of
+% |\documentclass[draft]|, for which |\@pdfrendition| defaults to
+% |draft|.
+% \begin{macrocode}
+\ifdraft{%
+ \def\@pdfrendition{draft}%
+}{%
+ \def\@pdfrendition{default}%
+}
+\define@key{Hyp}{pdfrendition}{\hyxmp@pdfstringdef\@pdfrendition{#1}}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@pdfpublication}
% Prepare to store the name of the publication in which the
% document was published.
@@ -1761,24 +2025,58 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\hyxmp@suppress@pdf@metadata}
-% Suppress \pkgname{hyperref} from writing \pdfterm{Author},
-% \pdfterm{Title}, \pdfterm{Subject}, and other \acro{PDF} metadata into
-% the \pdfterm{Info} dictionary. This prevents conflicts between the
-% \acro{PDF} metadata and the \acro{XMP} metadata, which cause
-% \acro{PDF/A} validation to fail. The \acro{PDF} metadata can be
-% restored by passing the \optname{keeppdfinfo} option to
+% \begin{macro}{\hyxmp@no@info@lists}
+% Suppress \pkgname{hyperref} from writing \pdfterm{Author} and
+% \pdfterm{Keywords} into the \pdfterm{Info} dictionary. This prevents
+% conflicts between the \acro{PDF} metadata and the \acro{XMP} metadata
+% that cause \acro{PDF/A} validation to fail. The \acro{PDF} metadata
+% can be restored by passing the \optname{keeppdfinfo} option to
% |\hypersetup|.
% \changes{v4.0}{2019/03/31}{Added this macro}
+% \changes{v5.0}{2020/03/10}{Renamed this macros from
+% \protect\cs{hyxmp@suppress@pdf@metadata} and rewrote it to replace,
+% if possible, only \protect\pdfterm{Author} and \protect\pdfterm{Keywords}}
+% \begin{macrocode}
+\def\hyxmp@no@info@lists{%
+% \end{macrocode}
+% \begin{macro}{\hyxmp@suppress@pdf@info}
+% \begin{macro}{\next}
+% If |\patchcmd| fails for any reason---most likely, a modification to
+% the \pkgname{hyperref} package---our fallback is to prevent
+% \pkgname{hyperref} from writing \emph{any} data to the \acro{PDF}
+% \pdfterm{Info} dictionary.
% \begin{macrocode}
-\def\hyxmp@suppress@pdf@metadata{%
- \global\let\PDF@FinishDoc=\@empty
+ \def\hyxmp@suppress@pdf@info{%
+ \global\let\PDF@FinishDoc=\@empty
+ \PackageWarningNoLine{hyperxmp}{%
+ Suppressing the _entire_ PDF Info dictionary.\MessageBreak
+ Please notify the hyperxmp maintainer%
+ }%
+ }%
+ \let\next=\relax
+ \patchcmd
+ {\PDF@FinishDoc}%
+ {/Author(\@pdfauthor)}%
+ {}%
+ {}%
+ {\let\next=\hyxmp@suppress@pdf@info}%
+ \patchcmd
+ {\PDF@FinishDoc}%
+ {/Keywords(\@pdfkeywords)}%
+ {}%
+ {}%
+ {\let\next=\hyxmp@suppress@pdf@info}%
+ \next
}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
\define@key{Hyp}{keeppdfinfo}[true]{%
- \gdef\hyxmp@suppress@pdf@metadata{}%
+ \gdef\hyxmp@no@info@lists{}%
}
% \end{macrocode}
-% \end{macro}
%
% \changes{v2.1}{2012/09/16}{Enabled \protect\pkgname{hyperxmp} and
% \protect\pkgname{hyperref} to be loaded in either order. This addresses
@@ -2005,10 +2303,10 @@
\@pdfsubject
\@pdfsubtitle
\@pdftitle
- \@pdftype
+ \@pdfuapart
\@pdfurl
- \@pdfversionid
\@pdfvolumenum
+ \@pdfxstandard
}%
\ifx\hyxmp@concated@metadata\@empty
\PackageWarningNoLine{hyperxmp}{%
@@ -2022,6 +2320,40 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\hyxmp@check@standards}
+% Most \acro{PDF} standards require that certain metadata be present.
+% If compliance with a \acro{PDF} standard is claimed but any of the
+% metadata it requires are absent, issue a warning message.
+% \changes{v5.0}{2020/03/11}{Added this macro}
+% \begin{macrocode}
+\newcommand*{\hyxmp@check@standards}{%
+% \end{macrocode}
+% \begin{macro}{\hyxmp@standards}
+% We define |\hyxmp@standards| to be non-empty if \emph{any} \acro{PDF}
+% standard is claimed (currently, \acro{PDF/A}, \acro{PDF/X}, or
+% \acro{PDF/UA}.
+% \begin{macrocode}
+ \def\hyxmp@standards{%
+ \@pdfapart
+ \@pdfxstandard
+ \@pdfuapart
+ }%
+% \end{macrocode}
+% Check that a document title was provided and is non-empty.
+% \begin{macrocode}
+ \@ifnotmtargexp{\hyxmp@standards}{%
+ \@ifmtargexp{\@pdftitle}{%
+ \PackageWarning{hyperxmp}{%
+ Missing pdftitle (required for PDF standards\MessageBreak
+ compliance)%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% Rather than load \pkgname{hyperref} ourself we let the author do it
% then verify he actually did. This approach gives the author the
% flexibility to load \pkgname{hyperxmp} and \pkgname{hyperref} in
@@ -2071,14 +2403,8 @@
\fi
\hyxmp@xmlify\@pdfmetalang
% \end{macrocode}
-% If the author explicitly specified the document date, override the
-% compilation timestamp with the specified date.
-% \begin{macrocode}
- \ifx\@pdfdatetime\@empty
- \else
- \edef\hyxmp@today{\@pdfdatetime}%
- \fi
-% \end{macrocode}
+% \changes{v5.0}{2020/03/17}{Don't set any document dates (creation,
+% modification, or metadata) from \string\optname{pdfdate}}
% If the author left \optname{pdftitle} blank but specified |\title|,
% use the title for \optname{pdftitle}. Likewise, if the author left
% \optname{pdfauthor} blank but specified |\author|, use the author for
@@ -2100,6 +2426,29 @@
}%
{}%
% \end{macrocode}
+% Most \acro{PDF} standards dictate that if the same metadata appear in
+% both the \acro{XMP} packet and the \acro{PDF} \pdfterm{Info}
+% dictionary, the metadata must match. This requirement poses a problem
+% for a user-unspecified \optname{pdfcreationdate} in the context of
+% \XeLaTeX\@. In this case we explicitly define |\@pdfcreationdate| as
+% |\hyxmp@today@pdf| to prevent the \cmdname{xdvipdfmx} back-end
+% processor from detecting a missing \pdfterm{CreationDate} in the
+% \pdfterm{Info} dictionary and adding its own---typically a few seconds
+% after \pkgname{hyperxmp} has constructed an \xmpprop{xmp:CreateDate}
+% for the \acro{XMP} metadata and leading to a metadata mismatch.
+% \begin{macrocode}
+ \@ifundefined{XeTeXversion}{}{%
+ \@ifmtargexp{\@pdfcreationdate}{%
+ \let\@pdfcreationdate=\hyxmp@today@pdf
+ }%
+ {}%
+ }%
+% \end{macrocode}
+% If the document claims to comply with one or more \acro{PDF}
+% standards, check that all of the requisite metadata are present.
+% \begin{macrocode}
+ \hyxmp@check@standards
+% \end{macrocode}
% Older versions of \pkgname{hyperref} write the \pdfterm{Info}
% dictionary to the \acro{PDF} file at the end of the document. New
% versions of \pkgname{hyperref} write the \pdfterm{Info} dictionary to
@@ -2108,11 +2457,11 @@
% we suppress writing the \pdfterm{Info} dictionary here, at the
% beginning of the document.
% \changes{v4.1}{2019/04/02}{Invoke
-% \protect\cs{hyxmp@suppress@pdf@metadata} at the beginning of the
+% \protect\cs{hyxmp@no@info@lists} at the beginning of the
% document, for compatibility with both newer and older versions of
% \protect\pkgname{hyperref}}
% \begin{macrocode}
- \hyxmp@suppress@pdf@metadata
+ \hyxmp@no@info@lists
% \end{macrocode}
% We wait until the end of the document to construct the \acro{XMP}
% packet and write it to the \acro{PDF} document catalog. This gives
@@ -2142,10 +2491,15 @@
% |\hypersetup| command. The functions in this section convert
% author-supplied lists (e.g.,~|pdfkeywords={foo, bar, baz}|) into
% \LaTeX\ lists (e.g.,~|\@elt {foo}| |\@elt {bar}| |\@elt {baz}|) that
-% can be more easily manipulated (Section~\ref{sec:list-manip}); trim
-% spaces off the ends of strings (Section~\ref{sec:trim-spaces}); and,
-% in Section~\ref{sec:text-xml}, convert text to \acro{XML} (e.g.,~from
-% |<scott+hyxmp@pakin.org>| to |&lt;scott+hyxmp@pakin.org&gt;|).
+% can be more easily manipulated (Section~\ref{sec:list-manip}); parse
+% dates in both \acro{PDF} and \acro{XMP} formats
+% (Section~\ref{sec:date-manip}; trim spaces off the ends of strings
+% (Section~\ref{sec:trim-spaces}); convert text to \acro{XML}
+% (e.g.,~from |<scott+hyxmp@pakin.org>| to
+% |&lt;scott+hyxmp@pakin.org&gt;|) (Section~\ref{sec:text-xml});
+% simplify the pretty-printing of a begin tag, \acro{XML} text, and end
+% tag (Section~\ref{sec:output-xml}; and provide metadata in multiple
+% languages (Section~\ref{sec:lang-alt}).
%
% \subsubsection{List manipulation}
% \label{sec:list-manip}
@@ -2345,7 +2699,7 @@
% \changes{v3.2}{2017/02/20}{Added this macro}
% \begin{macrocode}
\def\hyxmp@as@xmp@date#1{%
- \expandafter\ifx\hyxmp@first@char@i#1\relax D%
+ \expandafter\ifnum\expandafter`\hyxmp@first@char@i#1\relax=`D
\hyxmp@pdf@to@xmp@date{#1}%
\else
#1%
@@ -2561,15 +2915,16 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\hyxmp@today@define}
+% \begin{macro}{\hyxmp@today@xmp@define}
% Use \tex\ primitives to define a given macro as today's date in
-% \textsc{yyyy}-\textsc{mm}-\textsc{dd}|T|hh|:|mm format.
+% \textsc{yyyy}-\textsc{mm}-\textsc{dd}|T|hh|:|mm|Z| format.
% \changes{v2.4}{2013/12/21}{Added this macro}
% \changes{v3.0}{2016/07/03}{Modified to accept the name of a macro
% to define}
% \changes{v3.2}{2017/02/21}{Modified to include hours and minutes}
+% \changes{v5.0}{2020/03/16}{Modified to specify UTC}
% \begin{macrocode}
-\def\hyxmp@today@define#1{%
+\def\hyxmp@today@xmp@define#1{%
% \end{macrocode}
% The date is a straightforward representation of \tex's |\year|,
% |\month|, and |\day| primitives, with the latter two zero-padded to
@@ -2594,48 +2949,89 @@
% macro~|#1|.
% \begin{macrocode}
\@tempcnta=\time
- \divide\@tempcnta by 60%
- \ifnum\@tempcnta<10%
+ \divide\@tempcnta by 60
+ \ifnum\@tempcnta<10
\xdef#1{#1T0\the\@tempcnta}%
\else
\xdef#1{#1T\the\@tempcnta}%
\fi
- \multiply\@tempcnta by -60%
+ \multiply\@tempcnta by -60
\advance\@tempcnta by \time
- \ifnum\@tempcnta<10%
+ \ifnum\@tempcnta<10
\xdef#1{#1:0\the\@tempcnta}%
\else
\xdef#1{#1:\the\@tempcnta}%
\fi
+ \xdef#1{#1Z}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@try@today}
+% If |\hyxmp@today@xmp| is still empty and |#1| is defined, evaluate |#2|.
+% Otherwise, do nothing.
+% \begin{macrocode}
+\def\hyxmp@try@today#1#2{%
+ \@ifmtargexp{\hyxmp@today@xmp}{%
+ \@ifundefined{#1}{}{#2}%
+ }{}%
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\hyxmp@today}
-% Define |\hyxmp@today| as the current date and (if available) time and
+% \begin{macro}{\hyxmp@today@xmp}
+% Define |\hyxmp@today@xmp| as the current date and (if available) time and
% timezone in \acro{XMP} \xmpterm{Date} format~\cite{Adobe2012:XMP}.
% \changes{v2.4}{2013/12/24}{Modified the code to parse the time and
% timezone from \texttt{\string\string\string\pdfcreationdate}, as
% proposed by Florian Breitwieser}
+% \changes{v5.0}{2020/03/15}{Support \string\XeTeX's \string\cs{filemoddate}}
% \begin{macrocode}
-\@ifundefined{pdffeedback}{%
- \@ifundefined{pdfcreationdate}{%
+\def\hyxmp@today@xmp{}
% \end{macrocode}
-% Case 1: Neither |\pdffeedback| nor |\pdfcreationdate| is defined
-% (\XeLaTeX\ and regular \LaTeX).
+% Case 1: |\pdfcreationdate| is defined (\pdfLaTeX\ and pre-0.85 \LuaLaTeX).
% \begin{macrocode}
- \hyxmp@today@define\hyxmp@today
- }{%
+\hyxmp@try@today{pdfcreationdate}{%
+ \edef\hyxmp@today@xmp{\expandafter\hyxmp@pdf@to@xmp@date\pdfcreationdate}%
+}
+% \end{macrocode}
+% Case 2: |\pdffeedback| is defined (\LuaLaTeX~0.85+).
+% \begin{macrocode}
+\hyxmp@try@today{pdffeedback}{%
+ \edef\hyxmp@today@xmp{\expandafter\hyxmp@pdf@to@xmp@date\pdffeedback creationdate}%
+}
% \end{macrocode}
-% Case 2: |\pdfcreationdate| is defined (\pdfLaTeX\ and pre-0.85 \LuaLaTeX).
+% Case 3: |\filemoddate| is defined (\XeLaTeX).
+% In this case, we treat the timestamp of the job's |.aux| file as the
+% current date/time.
% \begin{macrocode}
- \edef\hyxmp@today{\expandafter\hyxmp@pdf@to@xmp@date\pdfcreationdate}%
+\hyxmp@try@today{filemoddate}{%
+ \edef\hyxmp@today@xmp{\filemoddate{\jobname.aux}}%
+ \edef\next{%
+ \edef\noexpand\hyxmp@today@xmp{\noexpand\hyxmp@as@xmp@date{\hyxmp@today@xmp}}%
}%
-}{%
+ \next
+}%
% \end{macrocode}
-% Case 3: |\pdffeedback| is defined (\LuaLaTeX~0.85+).
+% Case 4: None of the above.
+% Do the best we can using the available \tex\ primitives (|\year|,
+% |\month|, |\day|, and |\time|.
% \begin{macrocode}
- \edef\hyxmp@today{\expandafter\hyxmp@pdf@to@xmp@date\pdffeedback creationdate}%
+\hyxmp@try@today{year}{%
+ \hyxmp@today@xmp@define\hyxmp@today@xmp
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@today@pdf}
+% Define |\hyxmp@today@pdf| as the current date and (if available) time
+% and timezone in \acro{PDF} date format~\cite{Adobe2008:PDF}. To do so
+% we simply convert |\hyxmp@today@xmp|, defined above, from \acro{XMP}
+% to \acro{PDF} using |\hyxmp@xmp@to@pdf@date|.
+% \changes{v5.0}{2020/03/16}{Added this macro}
+% \begin{macrocode}
+\expandafter\edef\expandafter\hyxmp@today@pdf\expandafter{%
+ \expandafter\hyxmp@xmp@to@pdf@date\expandafter{\hyxmp@today@xmp}%
}
% \end{macrocode}
% \end{macro}
@@ -2737,18 +3133,6 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\hyxmp@reencode}
-% This is now a placeholder macro needed only for |\@pdfmetalang| in
-% the |\begin{document}|.
-% \changes{v1.3}{2011/04/25}{Introduced this macro to re-encode Unicode
-% strings as 8-bit strings before manipulating them into \acro{XMP}
-% schema. This change addresses a bug reported by Martin M\"unch}
-% \changes{v2.0}{2012/08/02}{Replaced with an empty macro by Heiko Oberdiek}
-% \begin{macrocode}
-\newcommand*{\hyxmp@reencode}[1]{}
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}{\SE->pdfdoc@03}
% Preserve \acro{ETX} (|^^C|), which is normally an invalid character in
% \term{PDFDocEncoding}. We use it in \pkgname{hyperxmp} (and
@@ -2793,7 +3177,7 @@
\StringEncodingConvert
\hyxmp@text\hyxmp@text{utf16be}{utf32be}%
}{%
- \ifxetex
+ \ifXeTeX
\hyxmp@xetex@crap
\else
\StringEncodingConvert
@@ -3115,6 +3499,118 @@
% \end{macro}
%
%
+% \subsubsection{Outputting structured XML}
+% \label{sec:output-xml}
+%
+% An \acro{XMP} packet consists of structured \acro{XML} data. We
+% define some helper routines to handle the repetitive tasks of
+% indenting a consistent number of spaces, inserting begin and end tags,
+% and escaping arbitrary text as necessary for \acro{XML} compatibility.
+%
+% \begin{macro}{\hyxmp@extra@indent}
+% This macro is used internally to increase the amount of indentation
+% when writing certain \acro{XML} data. It is normally defined as empty
+% but can temporarily be redefined to a sequence of |\space| characters.
+% \begin{macrocode}
+\newcommand*{\hyxmp@extra@indent}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@add@simple}
+% Given an \acro{XMP} tag~(|#1|) and a string~(|#2|), if the string is
+% nonempty, add a begin tag, the string, and an end tag to the packet.
+% The ``|simple|'' in the macro name indicates that the string is output
+% without variations for different languages.
+% \changes{v2.0}{2012/08/25}{Added this macro}
+% \changes{v5.0}{2020/02/21}{Insert the tag name (\string\texttt{\#1})
+% verbatim}
+% \begin{macrocode}
+\newcommand*{\hyxmp@add@simple}[2]{%
+ \@ifnotmtargexp{#2}{%
+ \hyxmp@xmlify{#2}%
+ \hyxmp@add@to@xml{\hyxmp@extra@indent______<}%
+ \xdef\hyxmp@xml{\hyxmp@xml#1}%
+ \hyxmp@add@to@xml{>\hyxmp@xmlified</}%
+ \xdef\hyxmp@xml{\hyxmp@xml#1>^^J}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@add@simple@var}
+% Given an \acro{XMP} tag~(|#1|) and a variable name~(|#2|), if the
+% string is defined, add a begin tag, the string, and an end tag to the
+% packet. The ``|simple|'' in the macro name indicates that the string
+% is output without variations for different languages.
+% |\hyxmp@add@simple@var| differs from |\hyxmp@add@simple| in that the
+% former includes defined but empty values in the \acro{XMP} packet
+% while the latter excludes both undefined and defined but empty values.
+% \changes{v2.4}{2013/12/21}{Added this macro}
+% \begin{macrocode}
+\newcommand*{\hyxmp@add@simple@var}[2]{%
+ \expandafter\ifx\csname#2\endcsname\relax
+ \else
+ \hyxmp@xmlify{\csname#2\endcsname}%
+ \hyxmp@add@to@xml{%
+ \hyxmp@extra@indent______<#1>\hyxmp@xmlified</#1>^^J%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@add@simple@lang}
+% Given an \acro{XMP} tag~(|#1|) and a string~(|#2|), if the string is
+% nonempty, add a begin tag, the string, and an end tag to the packet.
+% The ``|simple|'' in the macro name indicates that the string is output
+% without variations for different languages. However, if the string
+% begins with a language code in square brackets, specify that as the
+% (sole) language for the tag.
+% \changes{v4.0}{2019/03/12}{Added this macro}
+% \begin{macrocode}
+\newcommand*{\hyxmp@add@simple@lang}[2]{%
+ \@ifnotmtarg{#2}{%
+ \hyxmp@xmlify{#2}%
+ \expandafter\hyxmp@add@simple@lang@i\hyxmp@xmlified\relax{#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@add@simple@lang@i}
+% This is a helper macro for |\hyxmp@add@simple@lang|. It takes an
+% optional language code (in brackets), text up to |\relax|, and a tag,
+% and typesets the text within the \acro{XML} tag.
+% \begin{macrocode}
+\newcommand*{\hyxmp@add@simple@lang@i}{%
+ \@ifnextchar[\hyxmp@add@simple@lang@ii{\hyxmp@add@simple@lang@ii[]}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@add@simple@lang@ii}
+% This is another helper macro for |\hyxmp@add@simple@lang|. It takes
+% an mandatory language code (in brackets; can be empty), text up to
+% |\relax|, and a tag, and typesets the text within the \acro{XML} tag.
+% \begin{macrocode}
+\def\hyxmp@add@simple@lang@ii[#1]#2\relax#3{%
+ \@ifnotmtarg{#2}{%
+ \hyxmp@xmlify{#2}%
+ \@ifmtarg{#1}{%
+ \hyxmp@add@to@xml{%
+______<#3>\hyxmp@xmlified</#3>^^J%
+ }%
+ }{%
+ \hyxmp@add@to@xml{%
+______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
% \subsubsection{Providing metadata in multiple languages}
% \label{sec:lang-alt}
%
@@ -3418,9 +3914,9 @@
% addition to the document-specified timestamp}
% \begin{macrocode}
\newcommand*{\hyxmp@def@InstanceID}{%
- \hyxmp@today@define{\hyxmp@seed@string}%
+ \hyxmp@today@xmp@define{\hyxmp@seed@string}%
\edef\hyxmp@seed@string{%
- \jobname:\@pdftitle:\@pdfauthor:\hyxmp@today:\hyxmp@seed@string
+ \jobname:\@pdftitle:\@pdfauthor:\hyxmp@today@xmp:\hyxmp@seed@string
}%
\expandafter\hyxmp@seed@rng\expandafter{\hyxmp@seed@string}%
\edef\hyxmp@rand@num{\the\@tempcnta}%
@@ -3446,8 +3942,8 @@
% (Section~\ref{sec:xmp-media}), \acro{XMP} Basic
% (Section~\ref{sec:xmp-basic}), Photoshop
% (Section~\ref{sec:photoshop}), \acro{IPTC} Photo Metadata
-% (Section~\ref{sec:photo-meta}), and \acro{PDF/A} Identification
-% (Section~\ref{sec:pdfa-id}). The |\hyxmp@construct@packet| macro
+% (Section~\ref{sec:photo-meta}), and \acro{PDF}\textsc{/*} Identification
+% (Section~\ref{sec:pdfX-id}). The |\hyxmp@construct@packet| macro
% (Section~\ref{sec:combining-schemata}) constructs the \acro{XMP}
% packet into |\hyxmp@xml|. It first writes the appropriate \acro{XML}
% header, then calls the various schema-writing macros, then injects
@@ -3536,6 +4032,91 @@ _______________________________________________________________^^J%
% \subsubsection{The Adobe PDF schema}
% \label{sec:adobe-pdf}
%
+% Older versions of \pkgname{hyperref} defined a default producer; newer
+% versions do not. Instead, they let the \tex\ engine define the
+% producer itself. This poses a problem for \acro{PDF/A} compliance
+% because \pkgname{hyperxmp} sees an empty producer and therefore omits
+% writing a \xmpprop{pdf:Producer} to the \acro{XMP} packet, causing a
+% mismatch between the data in the \acro{XMP} packet and the data in the
+% \acro{PDF} \pdfterm{Info} dictionary. To ensure consistency between
+% \acro{XMP} and \pdfterm{Info}, we explicitly define our own default
+% |\@pdfproducer| here.
+%
+% \begin{macro}{\@pdfproducer}
+% \begin{macro}{\hyxmp@define@pdfproducer}
+% Define |\@pdfproducer| using the banner string if available or the
+% \tex\ engine's version number if not.
+% \changes{v5.0}{2020/03/01}{Added this macro}
+% \begin{macrocode}
+\newcommand*{\hyxmp@define@pdfproducer}{%
+ \gdef\@pdfproducer{TeX}
+ \ifPDFTeX
+ \expandafter\hyxmp@banner@to@producer\expandafter{\pdftexbanner}
+ \else
+ \ifLuaTeX
+ \expandafter\hyxmp@banner@to@producer\expandafter{\luatexbanner}
+ \else
+ \ifXeTeX
+ \edef\@pdfproducer{XeTeX version \the\XeTeXversion\XeTeXrevision}
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@pdfproducer}
+% \begin{macro}{\hyxmp@banner@to@producer}
+% Define |\@pdfproducer| as the \tex\ engine's banner string
+% \ifPDFTeX
+% (e.g.,~``\texttt{\pdftexbanner}''),
+% \else
+% \ifLuaTeX
+% (e.g.,~``\texttt{\luatexbanner}''),
+% \else
+% (e.g.,~``\texttt{This is pdfTeX, Version 3.14159265-2.6-1.40.20
+% (TeX Live 2019/Debian) kpathsea version 6.3.1}''),
+% \fi
+% \fi
+% removing the initial ``\texttt{This is}'' if possible (specifically,
+% when $\varepsilon$-\TeX's\index{e-TeX=$\varepsilon$-\TeX}
+% |\scantokens| primitive is available).
+% \begin{macrocode}
+\def\hyxmp@banner@to@producer#1{%
+ \ifx\scantokens\relax
+ \gdef\@pdfproducer{#1}%
+ \else
+ \scantokens{\makeatletter\hyxmp@remove@this#1\relax\makeatother}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@pdfproducer}
+% \begin{macro}{\hyxmp@remove@this}
+% Define |\@pdfproducer| as a given banner string with the initial
+% ``\texttt{This is}'' stripped off the beginning.
+% \begin{macrocode}
+\def\hyxmp@remove@this This is #1\relax{\gdef\@pdfproducer{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% If \optname{pdfproducer} wasn't specified and \pkgname{hyperref}
+% didn't already define |\@pdfproducer|---old versions of
+% \pkgname{hyperref} did; newer ones don't---try to assign a meaningful
+% producer string and use that.
+% \changes{v5.0}{2020/03/02}{Define a default producer}
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ifx\@pdfproducer\relax
+ \hyxmp@define@pdfproducer
+ \fi
+}
+% \end{macrocode}
+%
% \begin{macro}{\hyxmp@pdf@schema}
% Add properties defined by the Adobe \acro{PDF} schema to the |\hyxmp@xml|
% macro.
@@ -3549,7 +4130,7 @@ _______________________________________________________________^^J%
% \xmpprop{pdf:PDFVersion} property). Unlike most of the other schemata
% that \pkgname{hyperxmp} supports, the Adobe \acro{PDF} schema is
% \emph{always} included in the document, even if all of its keys are
-% empty. This is because \acro{PDF/A}-1b requires the keywords and
+% empty. This is because \PDFstd{A}{1}{b}{} requires the keywords and
% producer to be the same in the \acro{XMP} metadata and the \acro{PDF}
% metadata. Because \pkgname{hyperref} always specifies the
% \pdfterm{Keywords} and \pdfterm{Producer} fields, even when they're
@@ -3560,10 +4141,15 @@ _______________________________________________________________^^J%
% \texttt{\string\string\string\hyxmp@pdf@schema}
% \protect\emph{always} include the Adobe \protect\acro{PDF} schema,
% even when empty. Florian Breitwieser noted that this is necessary
-% for \protect\acro{PDF/A}-1b compliance}
+% for \protect\PDFstd{A}{1}{b}{} compliance}
+% \changes{v5.0}{2020/02/28}{Honor \protect\optname{pdftrapped}}
% \begin{macrocode}
- \hyxmp@add@simple@var{pdf:Keywords}{@pdfkeywords}%
\hyxmp@add@simple@var{pdf:Producer}{@pdfproducer}%
+ \hyxmp@add@simple@var{pdf:Keywords}{@pdfkeywords}%
+ \hyxmp@add@simple{pdf:Trapped}{\@pdftrapped}%
+% \end{macrocode}
+% Specify the \acro{PDF} version.
+% \begin{macrocode}
\@ifundefined{pdfvariable}{%
\@ifundefined{pdfminorversion}{%
% \end{macrocode}
@@ -3586,106 +4172,6 @@ _______________________________________________________________^^J%
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\hyxmp@extra@indent}
-% This macro is used internally to increase the amount of indentation
-% when writing certain \acro{XML} data. It is normally defined as empty
-% but can temporarily be redefined to a sequence of |\space| characters.
-% \begin{macrocode}
-\newcommand*{\hyxmp@extra@indent}{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\hyxmp@add@simple}
-% Given an \acro{XMP} tag~(|#1|) and a string~(|#2|), if the string is
-% nonempty, add a begin tag, the string, and an end tag to the packet.
-% The ``|simple|'' in the macro name indicates that the string is output
-% without variations for different languages.
-% \changes{v2.0}{2012/08/25}{Added this macro}
-% \begin{macrocode}
-\newcommand*{\hyxmp@add@simple}[2]{%
- \@ifnotmtargexp{#2}{%
- \hyxmp@xmlify{#2}%
- \hyxmp@add@to@xml{%
- \hyxmp@extra@indent______<#1>\hyxmp@xmlified</#1>^^J%
- }%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\hyxmp@add@simple@var}
-% Given an \acro{XMP} tag~(|#1|) and a variable name~(|#2|), if the
-% string is defined, add a begin tag, the string, and an end tag to the
-% packet. The ``|simple|'' in the macro name indicates that the string
-% is output without variations for different languages.
-% |\hyxmp@add@simple@var| differs from |\hyxmp@add@simple| in that the
-% former includes defined but empty values in the \acro{XMP} packet
-% while the latter excludes both undefined and defined but empty values.
-% \changes{v2.4}{2013/12/21}{Added this macro}
-% \begin{macrocode}
-\newcommand*{\hyxmp@add@simple@var}[2]{%
- \expandafter\ifx\csname#2\endcsname\relax
- \else
- \hyxmp@xmlify{\csname#2\endcsname}%
- \hyxmp@add@to@xml{%
- \hyxmp@extra@indent______<#1>\hyxmp@xmlified</#1>^^J%
- }%
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\hyxmp@add@simple@lang}
-% Given an \acro{XMP} tag~(|#1|) and a string~(|#2|), if the string is
-% nonempty, add a begin tag, the string, and an end tag to the packet.
-% The ``|simple|'' in the macro name indicates that the string is output
-% without variations for different languages. However, if the string
-% begins with a language code in square brackets, specify that as the
-% (sole) language for the tag.
-% \changes{v4.0}{2019/03/12}{Added this macro}
-% \begin{macrocode}
-\newcommand*{\hyxmp@add@simple@lang}[2]{%
- \@ifnotmtarg{#2}{%
- \hyxmp@xmlify{#2}%
- \expandafter\hyxmp@add@simple@lang@i\hyxmp@xmlified\relax{#1}%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\hyxmp@add@simple@lang@i}
-% This is a helper macro for |\hyxmp@add@simple@lang|. It takes an
-% optional language code (in brackets), text up to |\relax|, and a tag,
-% and typesets the text within the \acro{XML} tag.
-% \begin{macrocode}
-\newcommand*{\hyxmp@add@simple@lang@i}{%
- \@ifnextchar[\hyxmp@add@simple@lang@ii{\hyxmp@add@simple@lang@ii[]}%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\hyxmp@add@simple@lang@ii}
-% This is another helper macro for |\hyxmp@add@simple@lang|. It takes
-% an mandatory language code (in brackets; can be empty), text up to
-% |\relax|, and a tag, and typesets the text within the \acro{XML} tag.
-% \begin{macrocode}
-\def\hyxmp@add@simple@lang@ii[#1]#2\relax#3{%
- \@ifnotmtarg{#2}{%
- \hyxmp@xmlify{#2}%
- \@ifmtarg{#1}{%
- \hyxmp@add@to@xml{%
-______<#3>\hyxmp@xmlified</#3>^^J%
- }%
- }{%
- \hyxmp@add@to@xml{%
-______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
- }%
- }%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-%
%
% \subsubsection{The Dublin Core schema}
% \label{sec:dublin-core}
@@ -3857,7 +4343,7 @@ ______</dc:#2>^^J%
\hyxmp@rdf@dc[\ifHy@pdfa]{description}{\@pdfsubject}%
\hyxmp@rdf@dc{rights}{\@pdfcopyright}%
\hyxmp@singleton@dc{publisher}{\@pdfpublisher}%
- \hyxmp@singleton@dc[Seq]{date}{\hyxmp@today}%
+ \hyxmp@singleton@dc[Seq]{date}{\hyxmp@today@xmp}%
\hyxmp@singleton@dc{language}{\@pdflang}%
\hyxmp@singleton@dc{type}{\@pdftype}%
\hyxmp@list@to@xml[\ifHy@pdfa]{creator}{Seq}{\hyxmp@pdfauthor}%
@@ -3950,6 +4436,7 @@ ______</dc:#2>^^J%
\hyxmp@add@simple{xmpMM:DocumentID}{\hyxmp@DocumentID}%
\hyxmp@add@simple{xmpMM:InstanceID}{\hyxmp@InstanceID}%
\hyxmp@add@simple{xmpMM:VersionID}{\@pdfversionid}%
+ \hyxmp@add@simple{xmpMM:RenditionClass}{\@pdfrendition}%
}
% \end{macrocode}
% \end{macro}
@@ -3958,38 +4445,6 @@ ______</dc:#2>^^J%
% \subsubsection{The XMP Basic schema}
% \label{sec:xmp-basic}
%
-% \begin{macro}{\hyxmp@define@createdate}
-% \begin{macro}{\hyxmp@createdate}
-% Define |\hyxmp@createdate| as the document's creation date but in
-% \acro{XMP} date format, not \acro{PDF} date format. We use
-% |\hyxmp@createdate| for the \xmpprop{xmp:CreateDate},
-% \xmpprop{xmp:ModifyDate}, and \xmpprop{xmp:MetadataDate} fields.
-% \begin{macrocode}
-\newcommand*{\hyxmp@define@createdate}{%
- \@ifundefined{pdffeedback}{%
- \@ifundefined{pdfcreationdate}{%
-% \end{macrocode}
-% Case 1: Neither |\pdffeedback| nor |\pdfcreationdate| is defined
-% (\XeLaTeX\ and regular \LaTeX).
-% \begin{macrocode}
- \hyxmp@today@define\hyxmp@createdate
- }{%
-% \end{macrocode}
-% Case 2: |\pdfcreationdate| is defined (\pdfLaTeX\ and pre-0.85 \LuaLaTeX).
-% \begin{macrocode}
- \edef\hyxmp@createdate{\expandafter\hyxmp@pdf@to@xmp@date\pdfcreationdate}%
- }%
- }{%
-% \end{macrocode}
-% Case 3: |\pdffeedback| is defined (\LuaLaTeX~0.85+).
-% \begin{macrocode}
- \edef\hyxmp@createdate{\expandafter\hyxmp@pdf@to@xmp@date\pdffeedback creationdate}%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
% \begin{macro}{\hyxmp@xmp@basic@schema}
% Add properties defined by the \acro{XMP} Basic schema to the
% |\hyxmp@xml| macro. These include a bunch of dates (all set to the
@@ -4007,47 +4462,38 @@ ______</dc:#2>^^J%
% \protect\pkgname{hyperxmp} code}
% \begin{macrocode}
\newcommand*{\hyxmp@xmp@basic@schema}{%
- \hyxmp@define@createdate
% \end{macrocode}
% For the document's creation date, use the user-specified
% |\@pdfcreationdate| if defined and non-empty. Otherwise use our
-% fabricated |\hyxmp@createdate|.
+% fabricated |\hyxmp@today@xmp|.
% \begin{macrocode}
- \@ifundefined{@pdfcreationdate}{%
- \hyxmp@add@simple{xmp:CreateDate}{\hyxmp@createdate}%
+ \@ifmtargexp{\@pdfcreationdate}{%
+ \hyxmp@add@simple{xmp:CreateDate}{\hyxmp@today@xmp}%
}{%
- \ifx\@pdfcreationdate\@empty
- \hyxmp@add@simple{xmp:CreateDate}{\hyxmp@createdate}%
- \else
- \hyxmp@add@simple{xmp:CreateDate}{%
- \expandafter\hyxmp@as@xmp@date\expandafter{\@pdfcreationdate}}%
- \fi
+ \hyxmp@add@simple{xmp:CreateDate}{%
+ \expandafter\hyxmp@as@xmp@date\expandafter{\@pdfcreationdate}}%
}%
% \end{macrocode}
% For the document's modification date, use the user-specified
% |\@pdfmoddate| if defined and non-empty. Otherwise use our
-% fabricated |\hyxmp@createdate|.
+% fabricated |\hyxmp@today@xmp|.
% \begin{macrocode}
- \@ifundefined{@pdfmoddate}{%
- \hyxmp@add@simple{xmp:ModifyDate}{\hyxmp@createdate}%
+ \@ifmtargexp{\@pdfmoddate}{%
+ \hyxmp@add@simple{xmp:ModifyDate}{\hyxmp@today@xmp}%
}{%
- \ifx\@pdfmoddate\@empty
- \hyxmp@add@simple{xmp:ModifyDate}{\hyxmp@createdate}%
- \else
- \hyxmp@add@simple{xmp:ModifyDate}{%
- \expandafter\hyxmp@as@xmp@date\expandafter{\@pdfmoddate}}%
- \fi
+ \hyxmp@add@simple{xmp:ModifyDate}{%
+ \expandafter\hyxmp@as@xmp@date\expandafter{\@pdfmoddate}}%
}%
% \end{macrocode}
% For the document's metadata date, use the user-specified
% |\@pdfmetadatetime| if defined and non-empty. Otherwise use our
-% fabricated |\hyxmp@createdate|.
+% fabricated |\hyxmp@today@xmp|.
% \begin{macrocode}
- \ifx\@pdfmetadatetime\@empty
- \hyxmp@add@simple{xmp:MetadataDate}{\hyxmp@createdate}%
- \else
+ \@ifmtargexp{\@pdfmetadatetime}{%
+ \hyxmp@add@simple{xmp:MetadataDate}{\hyxmp@today@xmp}%
+ }{%
\hyxmp@add@simple{xmp:MetadataDate}{\@pdfmetadatetime}%
- \fi
+ }%
% \end{macrocode}
% Define the creation tool and the base \acro{URL}.
% \begin{macrocode}
@@ -4080,16 +4526,17 @@ ______</dc:#2>^^J%
% \end{macro}
%
%
-% \subsubsection{The PDF/A Identification schema}
-% \label{sec:pdfa-id}
+% \subsubsection{PDF/* Identification schemata}
+% \label{sec:pdfX-id}
%
% \begin{macro}{\hyxmp@pdfa@id@schema}
% Add properties defined by the \acro{PDF/A} Identification
% schema~\cite{PDFA2008:xmp-props} to the |\hyxmp@xml| macro. These
% properties identify a document as conforming to a particular
-% \acro{PDF/A} standard. We default to \acro{PDF/A}-1b if any \acro{PDF/A}
-% compliance is detected but let the author override the ``1'' with
-% \optname{pdfapart} and the ``B'' with \optname{pdfaconformance}.
+% \acro{PDF/A} standard. We default to \PDFstd{A}{1}{b}{} if any
+% \acro{PDF/A} compliance is detected but let the author override the
+% ``1'' with \optname{pdfapart} and the ``B'' with
+% \optname{pdfaconformance}.
% \changes{v2.4}{2013/12/21}{Added this macro}
% \changes{v2.9}{2016/04/12}{Let the author specify the \protect\acro{PDF/A}
% part and conformance IDs, as requested by Leonid Sinev}
@@ -4103,6 +4550,44 @@ ______</dc:#2>^^J%
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\hyxmp@pdfua@id@schema}
+% If the document conforms to a \acro{PDF/UA} standard, the author can
+% indicate the standard version with \optname{pdfuapart}.
+% \changes{v5.0}{2020/02/16}{Added this macro}
+% \begin{macrocode}
+\newcommand*{\hyxmp@pdfua@id@schema}{%
+ \hyxmp@add@simple{pdfuaid:part}{\@pdfuapart}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@pdfx@id@schema}
+% \label{page:pdfx-id-schema}
+% If the document conforms to a \acro{PDF/X} standard, the author can
+% indicate the standard version with \optname{pdfxstandard}. We
+% separately handle \PDFstd{X}{1}{}{}, \PDFstd{X}{2}{}{} and
+% \PDFstd{X}{3}{}{}, and \PDFstd{X}{4}{}{} onwards.
+% \changes{v5.0}{2020/02/26}{Added this macro}
+% \begin{macrocode}
+\newcommand*{\hyxmp@pdfx@id@schema}{%
+ \@tempcnta=0\hyxmp@pdfx@major\relax
+ \ifnum\@tempcnta=0
+ \else
+ \ifnum\@tempcnta=1
+ \hyxmp@add@simple{pdfx:GTS_PDFXVersion}{PDF/X-1:2001}%
+ \hyxmp@add@simple{pdfx:GTS_PDFXConformance}{\@pdfxstandard}%
+ \else
+ \ifnum\@tempcnta<4
+ \hyxmp@add@simple{pdfx:GTS_PDFXVersion}{\@pdfxstandard}%
+ \else
+ \hyxmp@add@simple{pdfxid:GTS_PDFXVersion}{\@pdfxstandard}%
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
%
% \subsubsection{The IPTC Photo Metadata schema}
% \label{sec:photo-meta}
@@ -4396,11 +4881,15 @@ __________</rdf:li>^^J%
% takes as input an optional type (defaults to \xmpterm{Text}) and a
% mandatory name, category, and description.
% \changes{v4.0}{2019/03/15}{Added this macro}
+% \changes{v5.0}{2020/02/21}{Insert the property name (\string\texttt{\#2})
+% verbatim}
% \begin{macrocode}
\newcommand{\hyxmp@declare@property}[4][Text]{%
\hyxmp@add@to@xml{%
________________<rdf:li rdf:parseType="Resource">^^J%
-__________________<pdfaProperty:name>#2</pdfaProperty:name>^^J%
+__________________<pdfaProperty:name>}%
+ \xdef\hyxmp@xml{\hyxmp@xml#2}%
+ \hyxmp@add@to@xml{</pdfaProperty:name>^^J%
__________________<pdfaProperty:valueType>#1</pdfaProperty:valueType>^^J%
__________________<pdfaProperty:category>#3</pdfaProperty:category>^^J%
__________________<pdfaProperty:description>#4</pdfaProperty:description>^^J%
@@ -4429,6 +4918,24 @@ ______________________</rdf:li>^^J%
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\hyxmp@pdf@extensions}
+% Declare the Adobe \acro{PDF} schema.
+% \changes{v5.0}{2020/02/27}{Added this macro}
+% \begin{macrocode}
+\newcommand*{\hyxmp@pdf@extensions}{%
+ \hyxmp@begin@ext@decl
+ {Adobe PDF Schema}%
+ {pdf}%
+ {http://ns.adobe.com/pdf/1.3/}%
+ \hyxmp@declare@property
+ {Trapped}%
+ {internal}%
+ {Indication if the document has been modified to include trapping information}%
+ \hyxmp@end@ext@decl
+}%
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\hyxmp@mm@extensions}
% Declare the \acro{XMP} Media Management schema.
% \changes{v4.0}{2019/03/15}{Added this macro}
@@ -4452,6 +4959,10 @@ ______________________</rdf:li>^^J%
{VersionID}%
{internal}%
{Document version identifier}%
+ \hyxmp@declare@property
+ {RenditionClass}%
+ {internal}%
+ {The manner in which a document is rendered}%
\hyxmp@end@ext@decl
}%
% \end{macrocode}
@@ -4480,6 +4991,67 @@ ______________________</rdf:li>^^J%
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\hyxmp@pdfua@id@extensions}
+% Declare the \acro{PDF/UA} Universal Accessibility schema.
+% \changes{v5.0}{2020/02/15}{Added this macro}
+% \begin{macrocode}
+\newcommand*{\hyxmp@pdfua@id@extensions}{%
+ \hyxmp@begin@ext@decl
+ {PDF/UA Universal Accessibility Schema}%
+ {pdfuaid}%
+ {http://www.aiim.org/pdfua/ns/id/}%
+ \hyxmp@declare@property
+ [Integer]%
+ {part}%
+ {internal}%
+ {Part of ISO 14289 standard}%
+ \hyxmp@end@ext@decl
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@pdfx@id@extensions}
+% Declare the schema used pre-\PDFstd{X}{4}{}{}. Because Adobe Acrobat DC
+% (at least) defines this even for \PDFstd{X}{4}{}{} and later, we follow
+% suit.
+% \changes{v5.0}{2020/02/26}{Added this macro}
+% \begin{macrocode}
+\newcommand*{\hyxmp@pdfx@id@extensions}{%
+ \ifx\hyxmp@pdfx@major\empty
+ \else
+ \hyxmp@begin@ext@decl
+ {Adobe Document Info PDF/X eXtension Schema}%
+ {pdfx}%
+ {http://ns.adobe.com/pdfx/1.3/}%
+ \hyxmp@declare@property
+ {GTS_PDFXVersion}%
+ {internal}%
+ {ID of PDF/X standard}%
+ \hyxmp@declare@property
+ {GTS_PDFXConformance}%
+ {internal}%
+ {Conformance level of PDF/X standard}%
+ \hyxmp@end@ext@decl
+ \fi
+% \end{macrocode}
+% Declare the schema used in \PDFstd{X}{4}{}{} and later versions.
+% \begin{macrocode}
+ \@tempcnta=0\hyxmp@pdfx@major\relax
+ \ifnum\@tempcnta>3
+ \hyxmp@begin@ext@decl
+ {PDF/X ID Schema}%
+ {pdfxid}%
+ {http://www.npes.org/pdfx/ns/id/}%
+ \hyxmp@declare@property
+ {GTS_PDFXVersion}%
+ {internal}%
+ {ID of PDF/X standard}%
+ \hyxmp@end@ext@decl
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\hyxmp@iptc@extensions}
% \changes{v2.2}{2012/12/13}{Added this macro to support
% \acro{PDF/A} generation}
@@ -4654,6 +5226,10 @@ __________</rdf:li>^^J%
\newcommand*{\hyxmp@declare@extensions}{%
\hyxmp@begin@extension@decls
% \end{macrocode}
+% Declare the Adobe \acro{PDF} schema (always present).
+% \begin{macrocode}
+ \hyxmp@pdf@extensions
+% \end{macrocode}
% Declare the \acro{XMP} Media Management extensions (always present).
% \begin{macrocode}
\hyxmp@mm@extensions
@@ -4662,9 +5238,26 @@ __________</rdf:li>^^J%
% generating a \acro{PDF/A} document.
% \begin{macrocode}
\ifHy@pdfa
- \hyxmp@mm@extensions
+ \hyxmp@pdfa@id@extensions
+ \fi
+% \end{macrocode}
+% Conditionally declare the \acro{PDF/UA} Universal Accessibility
+% extensions.
+% \begin{macrocode}
+ \ifx\@pdfuapart\@empty
+ \else
+ \hyxmp@pdfua@id@extensions
\fi
% \end{macrocode}
+% \begin{macro}{\next}
+% Conditionally declare the \acro{PDF/X} extensions.
+% \begin{macrocode}
+ \ifx\@pdfxversion\@empty
+ \else
+ \hyxmp@pdfx@id@extensions
+ \fi
+% \end{macrocode}
+% \end{macro}
% Conditionally declare \acro{IPTC} photo metadata extensions.
% \begin{macrocode}
\ifx\hyxmp@iptc@data\@empty
@@ -4740,6 +5333,9 @@ _____________________xmlns:xmp="http://ns.adobe.com/xap/1.0/"^^J%
_____________________xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"^^J%
_____________________xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent\hyxmp@hash"^^J%
_____________________xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"^^J%
+_____________________xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"^^J%
+_____________________xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"^^J%
+_____________________xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"^^J%
_____________________xmlns:prism="http://prismstandard.org/namespaces/basic/2.1/"^^J%
_____________________xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"^^J%
_____________________xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"^^J%
@@ -4763,6 +5359,8 @@ _____________________xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field\hyxmp@ha
\hyxmp@photoshop@schema
\hyxmp@xmp@basic@schema
\hyxmp@pdfa@id@schema
+ \hyxmp@pdfua@id@schema
+ \hyxmp@pdfx@id@schema
\hyxmp@mm@schema
\hyxmp@iptc@schema
\hyxmp@prism@schema
@@ -5051,5 +5649,192 @@ __</rdf:RDF>^^J%
\catcode`\"=\hyxmp@dq@code
% \end{macrocode}
%
+% \iffalse
+%</package>
+% \fi
+%
+% \iffalse
+%<*doc-helper>
+% \fi
+%
+% ^^A There's not much point including the documentation helper code
+% ^^A in the documentation itself, but feel free to remove the
+% ^^A following |\iffalse| and matching |\fi| if you'd like to include
+% ^^A it.
+% \iffalse
+%
+% \section{Documentation helper code}
+%
+% The following code is used to make |hyperxmp.pdf| compliant with the
+% \PDFstd{A}{1}{b}{} standard, at least when built from \pdfLaTeX\ or
+% \LuaLaTeX, but not currently \XeLaTeX\@. We include this code in a
+% separate file because (a)~it is less distracting squirreled away here
+% than placed at the top of the |.dtx| file, and (b)~putting it in a
+% separate file makes it easy to disable. One simply needs to comment
+% out the |\input{hyperxmp-stds}| line to produce an ordinary \acro{PDF}
+% file, which offers the benefit of live hyperlinks in almost all
+% \acro{PDF} readers.
+%
+% \subsection{Ensuring proper support}
+%
+% \begin{macro}{\next}
+% We can't proceed without a color profile. For this document we use a
+% \acro{CMYK} profile, specifically uncoated FOGRA29L, as a small and
+% thus safe color space. As long as |FOGRA29L_uncoated.icc| lies in the
+% \tex\ search path (which normally includes the current directory),
+% we'll be able to find it.
+% \begin{macrocode}
+\let\next=\endinput
+\IfFileExists{FOGRA29L_uncoated.icc}
+ {\let\next=\relax}
+ {}
+\next
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\next}
+% We can't proceed unless we're running either \pdfLaTeX\ or
+% \LuaLaTeX\@. \XeLaTeX\ doesn't appear to support all of the
+% mechanisms required below to support \PDFstd{A}{1}{b}{} compliance.
+% If you know how to adapt the following code to \XeLaTeX, please
+% contact the \pkgname{hyperxmp} maintainer.
+% \begin{macrocode}
+\let\next=\endinput
+\ifPDFTeX
+ \let\next=\relax
+\else
+ \ifLuaTeX
+ \usepackage{luatex85}
+ \let\next=\relax
+ \fi
+\fi
+\next
+% \end{macrocode}
+% \end{macro}
+%
+% If we're here, we should be able to make |hyperxmp.pdf|
+% \PDFstd{A}{1}{b}{}-compliant.
+% \begin{macrocode}
+\def\wantpdfstandards{}
+\typeout{Generating PDF/A-1b compliant hyperxmp documentation.}
+% \end{macrocode}
+%
+% \subsection{Complying with the PDF/A-1b standard}
+%
+% We can't specify \PDFstd{A}{1}{b}{} compliance until after both
+% \pkgname{hyperref} and \pkgname{hyperxmp} are loaded so we do so at
+% the beginning of the document.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \hypersetup{%
+ pdfapart=1,
+ pdfaconformance=b
+ }%
+}
+% \end{macrocode}
+%
+% \PDFstd{A}{1}{b}{} forbids object compression. This is normally the
+% default for \pdfLaTeX, but the \TeX\ Live distribution changes the
+% default to compression level~2. Here we explicitly change it back
+% to~0.
+% \begin{macrocode}
+\pdfobjcompresslevel=0
+% \end{macrocode}
+%
+% We specify an uncoated FOGRA29 output intent for both
+% \PDFstd{A}{1}{b}{} and \acro{PDF/X} (all versions).
+% \begin{macrocode}
+\immediate\pdfobj stream attr {/N 4} file {FOGRA29L_uncoated.icc}
+\edef\iccobj{\the\pdflastobj}
+\pdfcatalog{%
+ /OutputIntents [
+ <<
+ /Type /OutputIntent
+ /S /GTS_PDFA1
+ /DestOutputProfile \iccobj\space 0 R
+ /OutputConditionIdentifier (Uncoated FOGRA29)
+ /Info (FOGRA29L)
+ >>
+ <<
+ /Type /OutputIntent
+ /S /GTS_PDFX
+ /DestOutputProfile \iccobj\space 0 R
+ /OutputConditionIdentifier (Uncoated FOGRA29)
+ /Info (FOGRA29L)
+ >>
+ ]
+}
+% \end{macrocode}
+%
+% \begin{macro}{\HyColor@HyperrefBorderColor}
+% We just specified a \acro{CMYK} color profile, but \pkgname{hyperref}
+% normally produces \acro{RGB} link borders. The following code
+% instructs \pkgname{hyperref} to accept \acro{CMYK} colors.
+% \begin{macrocode}
+\makeatletter
+\AtBeginDocument{%
+ \let\HyColor@HyperrefBorderColor\HyColor@XZeroOneThreeFour
+}
+\makeatother
+% \end{macrocode}
+% \end{macro}
+%
+% \pkgname{hyperref}'s default colors are specified as \acro{RGB}\@. We
+% need to reassign them so they take on \acro{CMYK} values. (Note that
+% the main document already loaded the \pkgname{xcolor} package with the
+% \optname{cmyk} option.) Annoyingly, very few \acro{PDF} readers
+% correctly color hyperlinks defined with \acro{CMYK} link borders. At
+% the time of this writing (March 2020), Adobe Acrobat DC displays the
+% \emph{reverse} of the specified color, presumably because it always
+% interprets the first three color channels as red, green, and blue.
+% Other browsers display no border or a black border. This is not a
+% huge problem in practice because (a)~it's more important to be able to
+% distinguish hyperlinks from regular text than to render with correct
+% border colors and (b)~\acro{PDF} readers may suppress hyperlink
+% borders anyway for \PDFstd{A}{1}{b}{} documents.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \hypersetup{%
+ citebordercolor=green,
+ linkbordercolor=red,
+ urlbordercolor=cyan
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\@tempdima}
+% \begin{macro}{\boxwd}
+% \begin{macro}{\boxht}
+% \begin{macro}{\next}
+% Explicitly specify the \pdfterm{BleedBox} and \pdfterm{TrimBox} to use
+% for every page of the documentation.
+% \begin{macrocode}
+\makeatletter
+\@tempdima=0.996264\paperwidth
+\edef\boxwd{\strip@pt\@tempdima}
+\@tempdima=0.996264\paperheight
+\edef\boxht{\strip@pt\@tempdima}
+\makeatother
+\edef\next{%
+ \protect\pdfpageattr{
+ /BleedBox [0.0 0.0 \boxwd\space \boxht]
+ /TrimBox [0.0 0.0 \boxwd\space \boxht]
+ /StructParents 0
+ /Tabs /S
+ }%
+}
+\next
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \fi
+%
+% \iffalse
+%</doc-helper>
+% \fi
+%
% \Finale
\endinput
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.ins b/macros/latex/contrib/hyperxmp/hyperxmp.ins
index 1b82c2a202..7a81974604 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.ins
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2019 by Scott Pakin <scott+hyxmp@pakin.org>
+%% Copyright (C) 2011-2020 by Scott Pakin <scott+hyxmp@pakin.org>
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
@@ -21,7 +21,7 @@
This is a generated file.
-Copyright (C) 2019 by Scott Pakin <scott+hyxmp@pakin.org>
+Copyright (C) 2011-2020 by Scott Pakin <scott+hyxmp@pakin.org>
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
@@ -35,7 +35,10 @@ version 2008/05/04 or later.
\endpreamble
-\generate{\file{hyperxmp.sty}{\from{hyperxmp.dtx}{package}}}
+\generate{%
+ \file{hyperxmp.sty}{\from{hyperxmp.dtx}{package}}%
+ \file{hyperxmp-stds.tex}{\from{hyperxmp.dtx}{doc-helper}}%
+}
\obeyspaces
\Msg{*************************************************************}
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.pdf b/macros/latex/contrib/hyperxmp/hyperxmp.pdf
index 559569698f..66c531f330 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.pdf
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/CHANGES b/macros/latex/contrib/jmlr/CHANGES
index ab51376c3f..7bb3e80b95 100644
--- a/macros/latex/contrib/jmlr/CHANGES
+++ b/macros/latex/contrib/jmlr/CHANGES
@@ -1,3 +1,10 @@
+v1.27 (2020-03-26):
+
+ * jmlrutils.sty:
+
+ Bug fix: subfigure and subtable references were producing
+ extraneous text (added check for LaTeX kernel version)
+
v1.26 (2020-01-31):
* jmlr.cls:
diff --git a/macros/latex/contrib/jmlr/README b/macros/latex/contrib/jmlr/README
index fb1947600e..ef18e9e40c 100644
--- a/macros/latex/contrib/jmlr/README
+++ b/macros/latex/contrib/jmlr/README
@@ -1,4 +1,4 @@
-LaTeX Class : jmlr bundle v1.26 (2020-01-31)
+LaTeX Class : jmlr bundle v1.27 (2020-03-26)
Author : Nicola L. C. Talbot
dickimaw-books.com/contact
diff --git a/macros/latex/contrib/jmlr/jmlr.dtx b/macros/latex/contrib/jmlr/jmlr.dtx
index bde2faa142..577b06010d 100644
--- a/macros/latex/contrib/jmlr/jmlr.dtx
+++ b/macros/latex/contrib/jmlr/jmlr.dtx
@@ -1,14 +1,14 @@
%\iffalse
% jmlr.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
+% -doc "jmlr-manual.tex"
+% -author "Nicola Talbot"
+% -section "chapter"
% -src "jmlrutils.sty\Z=>jmlrutils.sty"
% -src "jmlr.cls\Z=>jmlr.cls"
% -src "jmlrbook.cls\Z=>jmlrbook.cls"
-% -doc "jmlr-manual.tex"
-% -section "chapter"
-% -author "Nicola Talbot"
% jmlr
-% Created on 2020/1/31 10:46
+% Created on 2020/3/26 11:30
%\fi
%\iffalse
%<*package>
@@ -52,7 +52,7 @@ Research (PMLR)},
\doxitem{Option}{option}{package options}
-\CheckSum{5237}
+\CheckSum{5259}
\newcommand*{\appopt}[1]{\texttt{-{}-#1}}
@@ -70,7 +70,7 @@ Research (PMLR)},
% \author{Nicola L. C. Talbot\\[10pt]
%\url{http://www.dickimaw-books.com/}}
%
-% \date{2020-01-31 (version 1.26)}
+% \date{2020-03-26 (version 1.27)}
% \maketitle
%\tableofcontents
%
@@ -1143,11 +1143,11 @@ Research (PMLR)},
%\section{Where To Go For Help}
%
%If you have a general \LaTeX\ query, the first place to go to is the
-%\urlfootref{http://www.tex.ac.uk/faq}{UK TUG FAQ}.
+%\urlfootref{https://texfaq.org/}{\TeX\ FAQ}.
%
%If you are unfamiliar or just getting started with \LaTeX, there's
%a list of on-line introductions to \LaTeX\ at
-%\url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=man-latex}
+%\url{https://texfaq.org/FAQ-man-latex}
%or have a look at
%\href{http://www.dickimaw-books.com/latex/novices}{\LaTeX\ for Complete Novices}.
%
@@ -1753,7 +1753,7 @@ Research (PMLR)},
%Non-class dependent code. This package is automatically loaded by
%\cls{jmlr} but may be used with other classes.
% \begin{macrocode}
-\ProvidesPackage{jmlrutils}[2020/01/31 v1.26 (NLCT)]
+\ProvidesPackage{jmlrutils}[2020/03/26 v1.27 (NLCT)]
% \end{macrocode}
% Package options:
%\begin{macro}{\ifjmlrutilsmaths}
@@ -2117,21 +2117,59 @@ Research (PMLR)},
}
% \end{macrocode}
%\end{macro}
+% The LaTeX kernel changed the definition of \cs{refstepcounter} to
+% allow \cs{p@\ldots} to have an argument. This means we need to
+% check the kernel version and pick up that extra argument if
+% present.
+%\changes{1.27}{2020-03-26}{added check for \LaTeX\ kernel version}
+% \begin{macrocode}
+ \@ifl@t@r\fmtversion{2019/08/22}%
+ {
+% \end{macrocode}
+% Newer kernel versions.
%\begin{macro}{\@subfigurelabel}
% Define how label appears.
% \begin{macrocode}
- \newcommand*\@subfigurelabel[2]{#1\subfigurelabel{#2}}
+ \newcommand*\@subfigurelabel[3]{#1\subfigurelabel{#2}}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\@subfigref}
+% \begin{macrocode}
+ \newcommand*\@subfigref[1]{%
+ {%
+ \def\@subfigurelabel##1##2##3{\subfigurelabel{##2}}%
+ \ref{#1}%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+ }%
+ {
+% \end{macrocode}
+% Older kernel versions.
+%\begin{macro}{\@subfigurelabel}
+% Define how label appears.
+% \begin{macrocode}
+ \newcommand*\@subfigurelabel[2]{#1\subfigurelabel{#2}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@subfigref}
+% \begin{macrocode}
+ \newcommand*\@subfigref[1]{%
+ {%
+ \def\@subfigurelabel##1##2{\subfigurelabel{##2}}%
+ \ref{#1}%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+ }
+% \end{macrocode}
%\begin{macro}{\subfigref}
% Reference the sub-figure without including the figure number.
% \begin{macrocode}
- \newcommand*\@subfigref[1]{%
- {%
- \def\@subfigurelabel##1##2{\subfigurelabel{##2}}%
- \ref{#1}%
- }%
- }
\newcommand*{\subfigref}[1]{%
\let\@objectname\@empty
\def\@objectref{}%
@@ -2229,21 +2267,56 @@ Research (PMLR)},
}
% \end{macrocode}
%\end{macro}
+%As with \cs{@subfigure} we again need to check \LaTeX\ kernel version.
+%\changes{1.27}{2020-03-26}{added check for \LaTeX\ kernel version}
+% \begin{macrocode}
+ \@ifl@t@r\fmtversion{2019/08/22}%
+ {
+% \end{macrocode}
+% Newer kernel versions.
%\begin{macro}{\@subtablelabel}
% Define how label appears.
% \begin{macrocode}
- \newcommand*\@subtablelabel[2]{#1\subtablelabel{#2}}
+ \newcommand*\@subtablelabel[3]{#1\subtablelabel{#2}}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\@subtabref}
+% \begin{macrocode}
+ \newcommand*\@subtabref[1]{%
+ {%
+ \def\@subtablelabel##1##2##3{\subtablelabel{##2}}%
+ \ref{#1}%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+ }%
+ {
+% \end{macrocode}
+% Older kernel versions.
+%\begin{macro}{\@subtablelabel}
+% Define how label appears.
+% \begin{macrocode}
+ \newcommand*\@subtablelabel[2]{#1\subtablelabel{#2}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@subtabref}
+% \begin{macrocode}
+ \newcommand*\@subtabref[1]{%
+ {%
+ \def\@subtablelabel##1##2{\subtablelabel{##2}}%
+ \ref{#1}%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+ }%
+% \end{macrocode}
%\begin{macro}{\subtabref}
% Reference the sub-table without including the table number.
% \begin{macrocode}
- \newcommand*\@subtabref[1]{%
- {%
- \def\@subtablelabel##1##2{\subtablelabel{##2}}%
- \ref{#1}%
- }%
- }
\newcommand*{\subtabref}[1]{%
\let\@objectname\@empty
\def\@objectref{}%
@@ -2680,7 +2753,7 @@ Research (PMLR)},
% Declare class and required TeX format:
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{jmlr}[2020/01/31 v1.26 (NLCT) Journal of Machine Learning Research]
+\ProvidesClass{jmlr}[2020/03/26 v1.27 (NLCT) Journal of Machine Learning Research]
% \end{macrocode}
%\changes{1.10}{2011-01-05}{hyperref now loaded by jmlr instead of
%jmlrbook}
@@ -4806,7 +4879,7 @@ Keywords:} \ignorespaces}%
% \end{macrocode}
% Declare class:
% \begin{macrocode}
-\ProvidesClass{jmlrbook}[2020/01/31 v1.26 (NLCT) JMLR Book Style]
+\ProvidesClass{jmlrbook}[2020/03/26 v1.27 (NLCT) JMLR Book Style]
% \end{macrocode}
% Need \sty{xkeyval} package to have key=value class options
% \begin{macrocode}
diff --git a/macros/latex/contrib/jmlr/jmlr.ins b/macros/latex/contrib/jmlr/jmlr.ins
index bd12b229e8..c73ba3101c 100644
--- a/macros/latex/contrib/jmlr/jmlr.ins
+++ b/macros/latex/contrib/jmlr/jmlr.ins
@@ -1,4 +1,4 @@
-% jmlr.ins generated using makedtx version 1.2 2020/1/31 10:46
+% jmlr.ins generated using makedtx version 1.2 2020/3/26 11:30
\input docstrip
\preamble
diff --git a/macros/latex/contrib/jmlr/jmlr.pdf b/macros/latex/contrib/jmlr/jmlr.pdf
index 581338b699..9c8887da03 100644
--- a/macros/latex/contrib/jmlr/jmlr.pdf
+++ b/macros/latex/contrib/jmlr/jmlr.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/sample-books/jmlrbook-sample.pdf b/macros/latex/contrib/jmlr/sample-books/jmlrbook-sample.pdf
index 7cf60da59e..6b5311f08e 100644
--- a/macros/latex/contrib/jmlr/sample-books/jmlrbook-sample.pdf
+++ b/macros/latex/contrib/jmlr/sample-books/jmlrbook-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/sample-books/proceedings-sample.pdf b/macros/latex/contrib/jmlr/sample-books/proceedings-sample.pdf
index 9c288b8fc2..32fc16df55 100644
--- a/macros/latex/contrib/jmlr/sample-books/proceedings-sample.pdf
+++ b/macros/latex/contrib/jmlr/sample-books/proceedings-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.pdf b/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.pdf
index c59344bbdd..e13b6a6c93 100644
--- a/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.pdf
+++ b/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.tex b/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.tex
index ac147209d6..b45425a183 100644
--- a/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.tex
+++ b/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.tex
@@ -128,9 +128,9 @@ the video tutorials for the production editors at
Please also ensure that your document will compile with PDF\LaTeX.
If you have an error message that's puzzling you, first check for it
at the UK TUG FAQ
-\url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=man-latex}. If
+\url{https://texfaq.org/FAQ-man-latex}. If
that doesn't help, create a minimal working example (see
-\url{http://theoval.cmp.uea.ac.uk/~nlct/latex/minexample/}) and post
+\url{https://www.dickimaw-books.com/latex/minexample/}) and post
to somewhere like \TeX\ on StackExchange
(\url{http://tex.stackexchange.com/}) or the \LaTeX\ Community Forum
(\url{http://www.latex-community.org/forum/}).
diff --git a/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.pdf b/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.pdf
index 8b3eeb1f42..dcd47fc349 100644
--- a/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.pdf
+++ b/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.tex b/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.tex
index 1e19ddd436..c30a2f40cc 100644
--- a/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.tex
+++ b/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.tex
@@ -102,9 +102,9 @@ commands, such as \verb|\rm|, and obsolete packages, such as
Please also ensure that your document will compile with PDF\LaTeX.
If you have an error message that's puzzling you, first check for it
at the UK TUG FAQ
-\url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=man-latex}. If
+\url{https://texfaq.org/FAQ-man-latex}. If
that doesn't help, create a minimal working example (see
-\url{http://theoval.cmp.uea.ac.uk/~nlct/latex/minexample/}) and post
+\url{https://www.dickimaw-books.com/latex/minexample}) and post
to somewhere like TeX on StackExchange
(\url{http://tex.stackexchange.com/}) or the LaTeX Community Forum
(\url{http://www.latex-community.org/forum/}).
diff --git a/macros/latex/contrib/lettrine/README b/macros/latex/contrib/lettrine/README.md
index c5e5f062bd..73d10c6773 100644
--- a/macros/latex/contrib/lettrine/README
+++ b/macros/latex/contrib/lettrine/README.md
@@ -1,34 +1,50 @@
- Lettrine bundle
+The Lettrine bundle
+===================
-This bundle contains a package that I maintain to typeset dropped
-capitals in a LaTeX document.
+Description
+-----------
-It is subject to the LaTeX Project Public License.
+This package is meant for typesetting dropped capitals in LaTeX documents.
+
+Documentation
+-------------
+
+Have a look at one of the PDF files, demo-fr.pdf (in French),
+demo-de.pdf (in German) or demo-lua.pdf in the doc directory,
+to see how different layouts for dropped capitals can be achieved.
+You can also play with the source files demo-*.tex.
+
+Have a look at lettrine.pdf in the doc directory, if you are interested
+in the complete documentation and code.
+
+If you wish, you can customize lettrine.cfg according to your needs.
+
+License
+-------
+
+Released under the LaTeX Project Public License v1.3 or later
See http://www.latex-project.org/lppl.txt
for the details of that license.
-Installation: this bundle is included in most TeX distributions, but
-if you need to install it by yourself
+Installation
+------------
+
+This bundle is included in most TeX distributions, but if you need
+to install it by yourself
1. run lualatex on lettrine.dtx to get the documentation (lettrine.pdf),
2. run luatex on lettrine.ins to strip the comments and create
lettrine.sty and lettrine.cfg
3. run luatex on contrib.dtx to produce the *.cfl files.
+
Files lettrine.sty, lettrine.cfg, lettrine-*.sty and *.cfl go to to
a directory searched by TeX, typically $TEXMF/tex/latex/lettrine.
+
Files README, demo*, *.pdf go to a doc directory, typically
$TEXMF/doc/latex/lettrine.
+
Files *.dtx, *.ins go to a source directory, typically
$TEXMF/source/latex/lettrine
-If you wish, you can customize lettrine.cfg according to your needs.
-
-Have a look at one of the PDF files, demo.pdf (in French), or
-demo-de.pdf (in German) in the doc directory, to see how
-different layouts for dropped capitals can be achieved.
-You can also play with the source files demo.tex or demo-de.tex.
-Have a look at lettrine.pdf in the doc directory, if you are interested
-in the complete documentation and code.
-
--
-Daniel Flipo, <daniel.flipo@free.fr>
-August, 25th, 2018.
+Copyright 1999--2020 Daniel Flipo
+E-mail: daniel (dot) flipo (at) free (dot) fr
diff --git a/macros/latex/contrib/lettrine/contrib.dtx b/macros/latex/contrib/lettrine/contrib.dtx
index 15fa621740..63d23d094b 100644
--- a/macros/latex/contrib/lettrine/contrib.dtx
+++ b/macros/latex/contrib/lettrine/contrib.dtx
@@ -33,8 +33,8 @@
%%
%% A
\LettrineOptionsFor{A}{slope=0.1\LettrineWidth, findent=-.5em, nindent=.7em}
-%% Same parameters for \`A
-\LettrineOptionsFor{\`A}{slope=0.1\LettrineWidth, findent=-.5em, nindent=0.7em}
+%% Same parameters for À (utf-8)
+\LettrineOptionsFor{À}{slope=0.1\LettrineWidth, findent=-.5em, nindent=0.7em}
%% C'
\LettrineOptionsFor{C'}{nindent=-0.5em}
%% I and J hang into the margin
diff --git a/macros/latex/contrib/lettrine/contrib.ins b/macros/latex/contrib/lettrine/contrib.ins
index 2070b331cf..3762e5aef2 100644
--- a/macros/latex/contrib/lettrine/contrib.ins
+++ b/macros/latex/contrib/lettrine/contrib.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 1999-2018 Daniel Flipo.
+%% Copyright (C) 1999-2020 Daniel Flipo.
%%
%% This program can be distributed and/or modified under the terms
%% of the LaTeX Project Public License either version 1.3c of this
diff --git a/macros/latex/contrib/lettrine/doc/demo-de.pdf b/macros/latex/contrib/lettrine/doc/demo-de.pdf
index 069a6e8640..3c7102a898 100644
--- a/macros/latex/contrib/lettrine/doc/demo-de.pdf
+++ b/macros/latex/contrib/lettrine/doc/demo-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/doc/demo-de.tex b/macros/latex/contrib/lettrine/doc/demo-de.tex
index a5fabafa06..204841e854 100644
--- a/macros/latex/contrib/lettrine/doc/demo-de.tex
+++ b/macros/latex/contrib/lettrine/doc/demo-de.tex
@@ -1,22 +1,25 @@
-%Format: pdfLaTeX
-\documentclass[12pt,a4paper]{article}
+\documentclass[a4paper,12pt,german]{article}
+\usepackage{iftex}
+\iftutex
+ \usepackage{fontspec}
+ \setmainfont{erewhon} % erewhon (Utopia)
+\else
+ \usepackage{fourier} % fourier (Utopia) und
+ \renewcommand{\ttdefault}{lmtt} % Latin Modern Typewriter fonts
+\fi
\usepackage[a4paper,text={150mm,240mm},centering]{geometry}
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage{palatino} % Palatino und
-\renewcommand{\ttdefault}{lmtt} % Latin Modern Typewriter fonts
\usepackage{microtype}
\usepackage{lettrine}
\usepackage{graphicx,color}
\usepackage{lettrine}
-\usepackage{german}
+\usepackage{babel}
-\newcommand{\MF}{{\small\sffamily\scshape metafont}}
-\newcommand{\MP}{{\small\sffamily\scshape metapost}}
+\newcommand{\MF}{{\small\scshape metafont}}
+\newcommand{\MP}{{\small\scshape metapost}}
\setlength{\parindent}{0pt}
\sloppy
\begin{document}
@@ -55,11 +58,11 @@ beeinflusst.
\vspace{\baselineskip}
\textit{Initiale vollständig im Randbereich} :\\
-\verb+\lettrine[lhang=1, nindent=0pt, lines=3]{V}{erschieben}+
+\verb+\lettrine[lhang=1,findent= .3em,nindent=0pt,lines=3]{V}{erschieben}+
-\lettrine[lhang=1, nindent=0pt, lines=3]{V}{erschieben} wir nun im vierten
-Beispiel die Initiale in den Randbereich. Dieses Verhalten wird durch den
-Parameter \verb+lhang= + gesteuert.
+\lettrine[lhang=1,findent= .3em,nindent=0pt,lines=3]{V}{erschieben}
+wir nun im vierten Beispiel die Initiale in den Randbereich.
+Dieses Verhalten wird durch den Parameter \verb+lhang= + gesteuert.
\vspace{\baselineskip}
\textit{Initiale, vergrössert und teilweise im Randbereich} :\\
@@ -91,10 +94,10 @@ wohl nur Anführungszeichen dafür in Frage kommen.
\newpage
\textit{Wir verkleinern die Initiale nun um 10\% und heben sie
-um 10\% wegen des {\glqq}Q{\grqq}}
-\verb+\lettrine[lines=4, loversize=-.1, lraise=.1]{Q}{ualität}+
+um 15\% wegen des {\glqq}Q{\grqq}}:\\
+\verb+\lettrine[lines=4, loversize=-.15, lraise=.15]{Q}{ualität}+
-\lettrine[lines=4, loversize=-.1, lraise=.1]{Q}{ualität} hat ihren
+\lettrine[lines=4, loversize=-.15, lraise=.15]{Q}{ualität} hat ihren
Preis. Und wenn es nur die Zeit ist, um zu lernen wie Sie solche Spielereien
anstellen können. Bei den Ergebnissen lohnt sich aber die Mühe. Welche
Parameter diesmal was beeinflussen, lasse ich Sie nun selbst herausfinden.
@@ -130,24 +133,24 @@ bietet auch das {\glqq}V{\grqq} keine Schwierigkeiten mehr. Wie das beim
der Neigung des {\ttfamily\upshape V} folgt; Das {\ttfamily\upshape V} ragt
zusätzlich halb in den Rand hinein
(Option {\ttfamily\upshape lhang=0.5} :})\\
-\verb+\lettrine[lines=4, slope=-0.5em, lhang=0.5, nindent=0pt]+\\
+\verb+\lettrine[lines=4, slope=-0.5em, lhang=0.5, findent=.5em,nindent=0pt]+\\
\verb+ {V}{iel} ist...+
-\lettrine[lines=4, slope=-0.5em, lhang=0.5, nindent=0pt]{V}{iel} ist hier
-nicht anders. Nur die negative Neigung und das Hereinragen in den Rand. Ob
-Ihnen das Ergebnis gefällt müssen Sie selber entscheiden. Sie sehen aber,
-das das {\glqq}V{\grqq} wirklich keine Schwierigkeiten bietet. Der Unterschied
-zum vorhergehenden Beispiel ist nicht besonders gross.
+\lettrine[lines=4, slope=-0.5em, lhang=0.5, findent=.5em, nindent=0pt]{V}{iel}
+ist hier nicht anders. Nur die negative Neigung und das Hereinragen in den
+Rand. Ob Ihnen das Ergebnis gefällt müssen Sie selber entscheiden.
+Sie sehen aber, das das {\glqq}V{\grqq} wirklich keine Schwierigkeiten bietet.
+Der Unterschied zum vorhergehenden Beispiel ist nicht besonders gross.
\vspace{.5\baselineskip}
\textit{Ändern wir nun die Schriftfamilie für die Initiale
(hier AvantGarde bold italique):}\\
-\verb+\renewcommand{\LettrineFontHook}{\fontfamily{pag}%+\\
+\verb+\renewcommand{\LettrineFontHook}{\fontfamily{pag}\fontencoding{T1}%+\\
\verb+ \fontseries{bx}\fontshape{it}}+\\
\verb+\lettrine[findent=.3em]{A}{uch} ein Wechsel...+
{% (Ändern des lokalen fonts)
-\renewcommand{\LettrineFontHook}{\fontfamily{pag}\fontseries{bx}\fontshape{it}}
+\renewcommand{\LettrineFontHook}{\fontfamily{pag}\fontencoding{T1}\fontseries{bx}\fontshape{it}}
\lettrine[findent=.3em]{A}{uch} ein Wechsel der Schriftfamilie ist problemlos
möglich. Hier verwenden wir Avantgarde und setzen mit der Option
@@ -157,11 +160,12 @@ möglich. Hier verwenden wir Avantgarde und setzen mit der Option
\vspace{.5\baselineskip}
\textit{Ändern wir nun die Schriftfamilie und die Farbe für die Initiale
(hier yfrak in Grau) :}\\
-\verb+\renewcommand{\LettrineFontHook}{\fontfamily{yfrak}\color[gray]{0.5}}+\\
-\verb+\lettrine[loversize=0.1]{A}{uch}...+
+\verb+\renewcommand{\LettrineFontHook}{\fontfamily{yfrak}\fontencoding{T1}+\\
+\verb+ \color[gray]{0.5}}\lettrine[loversize=0.1]{A}{uch}...+
{% (Aendern des lokalen fonts)
-\renewcommand{\LettrineFontHook}{\fontfamily{yfrak}\color[gray]{0.5}}
+\renewcommand{\LettrineFontHook}{\fontfamily{yfrak}\fontencoding{T1}
+ \color[gray]{0.5}}
\lettrine[loversize=0.1]{A}{uch} ein Wechsel der
Schriftfamilie ist problemlos möglich. Hier verwenden wir yfrak,
@@ -181,14 +185,14 @@ die Boolsche Variable \texttt{image=true} zu benützen; z.B. so:
\vspace{.5\baselineskip}
{% Gruppierung, um die LOKALEN Definitionen zu schützen
-\fontfamily{yfrak}\selectfont\Large
+\fontfamily{yfrak}\fontencoding{T1}\selectfont\Large
\renewcommand{\LettrineTextFont}{\relax}
\lettrine[image=true, lines=3, lhang=.2, loversize=.25, %
lraise=-.05, findent=0.1em, nindent=0em]
{W}{er} reitet so spät durch Nacht und Wind?\\
Es ist der Vater mit seinem Kind;\\
Er hat den Knaben wohl in dem Arm,\\
-Er faßt ihn sicher, er hält ihn warm.
+Er fa{\ss}t ihn sicher, er hält ihn warm.
\par}
\vspace{\baselineskip} Und hier der zum Beispiel gehörende \LaTeX{}--Code:
@@ -197,14 +201,14 @@ lädt dann die Datei \verb+W.eps+. Das Suffix \verb+.eps+ kann -- dank des
Pakets \verb+graphicx.sty+ -- weggelassen werden.
\begin{verbatim}
-{\fontfamily{yfrak}\selectfont\Large
+{\fontfamily{yfrak}\fontencoding{T1}\selectfont\Large
\renewcommand{\LettrineTextFont}{\relax}
\lettrine[image=true, lines=3, lhang=.2, loversize=.25, %
lraise=-.05, findent=0.1em, nindent=0em]
{W}{er} reitet so spät durch Nacht und Wind?
Es ist der Vater mit seinem Kind;
Er hat den Knaben wohl in dem Arm,
-Er faßt ihn sicher, er hält ihn warm.\par}
+Er fa{\ss}t ihn sicher, er hält ihn warm.\par}
\end{verbatim}
Zur Darstellung dieses Beispiels müssen folgende Pakete installiert sein:
@@ -235,5 +239,7 @@ in eine PDF-Datei \verb+W.pdf+ umwandeln (mit Hilfe von \verb+epstopdf+).
%%% Local Variables:
%%% mode: latex
+%%% coding: utf-8
%%% TeX-master: t
+%%% TeX-engine: xetex
%%% End:
diff --git a/macros/latex/contrib/lettrine/doc/demo-fr.pdf b/macros/latex/contrib/lettrine/doc/demo-fr.pdf
new file mode 100644
index 0000000000..dc30880860
--- /dev/null
+++ b/macros/latex/contrib/lettrine/doc/demo-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/doc/demo.tex b/macros/latex/contrib/lettrine/doc/demo-fr.tex
index 705f9272c3..21e525ed06 100644
--- a/macros/latex/contrib/lettrine/doc/demo.tex
+++ b/macros/latex/contrib/lettrine/doc/demo-fr.tex
@@ -1,24 +1,27 @@
-%Format: pdfLaTeX
-\documentclass[12pt,german,french]{article}
-
-\usepackage[a4paper,text={145mm,240mm},centering]{geometry}
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage{palatino} % Romain (sans-serif= helvetica)
-\renewcommand{\ttdefault}{lmtt} % Courier chasse trop !
+\documentclass[paper=a4,12pt,german,french]{scrartcl}
+\usepackage{iftex}
+\iftutex
+ \usepackage{fontspec}
+ \setmainfont{erewhon}
+\else
+ \usepackage[utf8]{inputenc}
+ \usepackage{fourier}
+ \renewcommand{\ttdefault}{lmtt} % Courier chasse trop !
+\fi
\usepackage{microtype}
\usepackage{Rothdn, Typocaps} % cfr-initials (p. 3)
+\usepackage{graphicx,color}
\usepackage{lettrine}
\usepackage{babel}
\frenchbsetup{AutoSpacePunctuation=false,og=«,fg=»}
-\usepackage{graphicx,color}
-\usepackage{hyperref,bookmark}
+\newcommand*{\MF}{{\small\scshape metafont}}
+\newcommand*{\MP}{{\small\scshape metapost}}
+\newcommand*{\file}[1]{\texttt{#1}}
+\newcommand*{\cs}[1]{\texttt{\boi#1}}
-\newcommand{\MF}{{\small\sffamily\scshape metafont}}
-\newcommand{\MP}{{\small\sffamily\scshape metapost}}
\setlength{\parindent}{0pt}
\sloppy
\begin{document}
@@ -35,8 +38,7 @@
\lettrine{E}{n} plein marais de la Souteyranne, à quelques kilomètres
au nord d'Aigues-Mortes, se trouve la Tour Carbonnière.
Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
-terrestre de la ville fortifiée, celle qui menait à Psalmody,
-l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
+terrestre de la ville fortifiée, celle qui menait à Psalmody.
\vspace{\baselineskip}
\textit{Lettrine sur une seule ligne (option {\ttfamily\upshape lines=1}) :}\\
@@ -79,8 +81,7 @@ plein marais de la Souteyranne,
à quelques kilomètres au nord d'Aigues-Mortes la Tour Carbonnière.
Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
terrestre de la ville fortifiée, celle qui menait à Psalmody,
-l'une des « abbayes de sel» \dots
-% dont il ne reste que des vestiges.
+l'une des « abbayes de sel» dont il ne reste que des vestiges.
\vspace{\baselineskip}
\textit{On peut ajouter un guillemet devant la lettrine} :\\
@@ -90,9 +91,7 @@ l'une des « abbayes de sel» \dots
à quelques kilomètres au nord d'Aigues-Mortes, se trouve
la Tour Carbonnière.
Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
-terrestre de la ville fortifiée, celle qui menait à Psalmody,
-l'une des « abbayes de sel» \dots
-% dont il ne reste que des vestiges.
+terrestre de la ville fortifiée, celle qui menait à Psalmody.
\newpage
Toutes Les lettrines suivantes seront en gris jusqu'à nouvel ordre : \\
@@ -123,7 +122,7 @@ se trouve la Tour Carbonnière, surprend les visiteurs.
Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
terrestre de la ville fortifiée, celle qui menait à Psalmody,
l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
-L'abbaye était ravitaillée par un souterrain qui
+L'abbaye était ravitaillée ---~dit-on~--- par un souterrain qui
la reliait au château de Treillan.
\vspace{.5\baselineskip}
@@ -144,19 +143,18 @@ la reliait au château de Treillan.
\textit{Utilisation de l'option {\ttfamily\upshape slope} pour que le texte
suive la pente du {\ttfamily\upshape V}, noter que celui-ci est à
demi-poussé dans la marge par l'option {\ttfamily\upshape lhang=0.5} :}\\
-\verb+\lettrine[lines=4, slope=-0.5em, lhang=0.5, nindent=0pt]+\\
+\verb+\lettrine[lines=4, slope=-0.5em, lhang=0.5, findent=.5em, nindent=0pt]+\\
\verb+ {V}{oici} à...+
-\lettrine[lines=4, slope=-0.5em, lhang=0.5, nindent=0pt]{V}{oici}
+\lettrine[lines=4, slope=-0.5em, lhang=0.5, findent=.5em, nindent=0pt]{V}{oici}
à quelques kilomètres au nord d'Aigues-Mortes la Tour Carbonnière.
Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
terrestre de la ville fortifiée, celle qui menait à Psalmody,
l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
L'abbaye était ravitaillée ---~dit-on~--- par un souterrain qui
-la reliait au château de Treillan.
+la reliait au château de Treillan distant de quelques kilomètres à peine.
\newpage
-\newgeometry{text={138mm,240mm},centering}
\begin{center}
\large\bfseries Deux exemples d’utilisation de cfr-initials
@@ -187,19 +185,20 @@ terrestre de la ville fortifiée.
\renewcommand{\LettrineFontHook}{\Rothdnfamily}
\vspace{.5\baselineskip}
-\textit{Le calcul de la taille de la lettrine prend comme référence les
- lettres EFTZ (voir {\ttfamily\upshape\boi LettrineTestString}),
- dans le cas de la police Rothdn ça donne ceci pour A :
-}
+
+\textit{Le calcul de la taille de la lettrine prend normalement comme
+ référence les lettres EFTZ (voir {\upshape\cs{LettrineTestString}}),
+ dans le cas de la police Rothdn ça donne ceci pour A : }
\verb+\lettrine[lines=3]{A}{u} bord du marais+
\lettrine[lines=3]{A}{u} bord du marais de la Souteyranne, à quelques
kilomètres au nord d'Aigues-Mortes, se trouve la Tour Carbonnière.
Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
-terrestre de la ville fortifiée, celle qui menait à Psalmody.
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
-\vspace{.5\baselineskip}
+\vspace{\baselineskip}
\textit{L’option {\ttfamily\upshape refstring} donne une taille correcte à la
lettrine (le calcul est fait sur la base du A lui-même et non de EFTZ%
\footnote{Le F de la police Rothdn a une hauteur supérieure à celles des
@@ -211,11 +210,12 @@ terrestre de la ville fortifiée, celle qui menait à Psalmody.
\lettrine[refstring, lines=3]{A}{u} bord du marais de la Souteyranne,
à quelques kilomètres au nord d'Aigues-Mortes, se trouve la Tour Carbonnière.
Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
-terrestre de la ville fortifiée, celle qui menait à Psalmody.
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
-\vspace{.5\baselineskip}
-\textit{Il suffit maintenant de remonter un peu la lettrine
+\vspace{\baselineskip}
+\textit{Il suffit maintenant de remonter la lettrine
({\ttfamily\upshape lraise=0.15}) pour compenser sa profondeur :
}
@@ -225,10 +225,10 @@ terrestre de la ville fortifiée, celle qui menait à Psalmody.
Souteyranne, à quelques kilomètres au nord d'Aigues-Mortes, se trouve
la Tour Carbonnière.
Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
-terrestre de la ville fortifiée, celle qui menait à Psalmody.
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
\newpage
-\restoregeometry
\begin{center}
\large\bfseries Utilisation d'une image comme lettrine
\end{center}
@@ -240,12 +240,12 @@ d'utiliser le booléen \texttt{image}, exemple :
\begin{otherlanguage}{german}
\renewcommand{\LettrineTextFont}{\relax}
-\fontfamily{yfrak}\selectfont\Large
+\fontfamily{yfrak}\fontencoding{T1}\selectfont\Large
\lettrine[image=true,lhang=.2, loversize=.25, findent=0.1em]
{W}{er} reitet so spät durch Nacht und Wind?\\
Es ist der Vater mit seinem Kind;\\
Er hat den Knaben wohl in dem Arm,\\
-Er faßt ihn sicher, er hält ihn warm.\par
+Er fa{\ss}t ihn sicher, er hält ihn warm.\par
\end{otherlanguage}
\vspace{.5\baselineskip}
@@ -257,17 +257,17 @@ de \verb+graphicx.sty+).
\begin{verbatim}
\begin{otherlanguage}{german}
- \fontfamily{yfrak}\selectfont\Large
+ \fontfamily{yfrak}\fontencoding{T1}\selectfont\Large
\renewcommand{\LettrineTextFont}{\relax}
\lettrine[image=true,lhang=.2, loversize=.25, findent=0.1em]
{W}{er} reitet so spät durch Nacht und Wind?\\
Es ist der Vater mit seinem Kind;\\
Er hat den Knaben wohl in dem Arm,\\
- Er faßt ihn sicher, er hält ihn warm.\par
+ Er fa{\ss}t ihn sicher, er hält ihn warm.\par
\end{otherlanguage}
\end{verbatim}
-Cet exemple fait appel aux fichiers suivants :
+Pour la compilation en pdfLaTeX cet exemple fait appel aux fichiers suivants :
\begin{itemize}
\item \texttt{graphicx.sty} (extension standard \LaTeXe{}),
\item \texttt{blackletter1} de Thorsten~\textsc{Bronger} (disponible sur CTAN),
@@ -283,18 +283,13 @@ indications de Denis~\textsc{Roegel} que je remercie bien vivement.
Une solution plus simple s’offre aux utilisateurs de LuaLaTeX ou XeLaTeX pour
reproduire le poème ci-dessus : il suffit d’utiliser la police OpenType Yinit
pour la lettrine et par exemple une des polices OpenType UnifrakturMaguntia
-pour le texte, voir \url{http://unifraktur.sourceforge.net/maguntia.html}.
-
-Le codage est identique à ceci près que l’option \texttt{image=true} est
-supprimée et l’appel à la police \texttt{yfrak} remplacé par :\\
-\verb+\setmainfont{UnifrakturMaguntia19}\Large+\\
-\verb+\renewcommand{\LettrineFontHook}{\setmainfont{Yinit}}+
+pour le texte, voir le fichier \file{demo-lua.pdf}.
\vfill
\begin{flushright}
Daniel \textsc{Flipo}\\
\texttt{daniel.flipo@free.fr}\\
- avril 2019.
+ mars 2020.
\end{flushright}
\end{document}
@@ -303,4 +298,5 @@ supprimée et l’appel à la police \texttt{yfrak} remplacé par :\\
%%% mode: latex
%%% coding: utf-8
%%% TeX-master: t
+%%% TeX-engine: xetex
%%% End:
diff --git a/macros/latex/contrib/lettrine/doc/demo-lua.pdf b/macros/latex/contrib/lettrine/doc/demo-lua.pdf
new file mode 100644
index 0000000000..f0e6257e6e
--- /dev/null
+++ b/macros/latex/contrib/lettrine/doc/demo-lua.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/doc/demo-lua.tex b/macros/latex/contrib/lettrine/doc/demo-lua.tex
new file mode 100644
index 0000000000..4492ade68e
--- /dev/null
+++ b/macros/latex/contrib/lettrine/doc/demo-lua.tex
@@ -0,0 +1,116 @@
+\documentclass[12pt,paper=a4,german,french,british]{scrartcl}
+
+\usepackage{lettrine}
+\usepackage[dvipsnames]{xcolor}
+\usepackage[colorlinks, urlcolor=ForestGreen, linkcolor=blue]{hyperref}
+
+%%% Linux Libertine fonts...
+\usepackage{fontspec}
+\setmainfont{Linux Libertine O}
+%\setsansfont{TeX Gyre Heros}[Scale=MatchLowercase]
+\setmonofont{Latin Modern Mono}[Scale=MatchLowercase]
+
+\usepackage{Typocaps}
+
+\usepackage{babel}
+\frenchbsetup{AutoSpacePunctuation=false, og=«,fg=»}
+\babeltags{fr=french, de=german, uk=british}
+
+\newcommand*{\file}[1]{\texttt{#1}}
+\newcommand*{\cs}[1]{\texttt{\boi#1}}
+\newcommand*{\MF}{{\small\scshape metafont}}
+
+\setlength{\parindent}{0pt}
+\sloppy
+
+\begin{document}
+\thispagestyle{empty}
+\enlargethispage{2\baselineskip}
+
+\begin{center}
+\large\bfseries Some LuaLaTeX examples
+\end{center}
+
+Both files \file{demo-fr.tex} and \file{demo-de.tex} can be compiled either with
+pdfLaTeX or with LuaLaTeX or XeLaTeX. The purpose of the next examples is to
+show how easy it is to change the font for the dropped initial with Unicode
+engines: no need to care about the low-level NFSS syntax, a simple
+\cs{fontspec} call will do the trick.
+
+\vspace{.5\baselineskip}
+In the first example, \textit{ Linux Libertine Initials} is used for the
+dropped capital:\\
+\verb+\renewcommand{\LettrineFontHook}{\fontspec{LinLibertine_I.otf}}+\\
+\verb+\lettrine[lines=3]{E}{n plein marais de la Souteyranne...}+
+
+\begin{fr}
+ \renewcommand{\LettrineFontHook}{\fontspec{LinLibertine_I.otf}}
+ \lettrine[lines=3]{E}{n plein marais de la Souteyranne}, à quelques
+ kilomètres au nord d'Aigues-Mortes, se trouve la Tour Carbonnière.
+ Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+ terrestre de la ville fortifiée, celle qui menait à Psalmody,
+ l'une des « abbayes de sel» dont il ne reste que quelques vestiges.\par
+\end{fr}
+
+\vspace{.5\baselineskip}
+Of course, it is still possible to use Type\,1 fonts for the dropped capitals,
+here \textit{Typocaps} (red):\\
+\verb+\renewcommand{\LettrineFontHook}{\Typocapsfamily\color{red}}+\\
+\verb+\lettrine[findent=.3em]{E}{n plein marais de la Souteyranne}...+
+
+\begin{fr}
+\renewcommand{\LettrineFontHook}{\Typocapsfamily\color{red}}
+\lettrine[findent=.3em]{E}{n plein marais de la Souteyranne}, à quelques
+kilomètres au nord d'Aigues-Mortes, se trouve la Tour Carbonnière.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée.\par
+\end{fr}
+
+\vspace{.5\baselineskip}
+OpenType and TrueType free fonts are available for Old German, here is an example
+featuring the \textit{Yinit} OpenType font%
+\footnote{produced by Élie Roux from Yannis Haralambous’ Gothic Initials
+ originally in \MF.}
+for the initial and \textit{UnifrakturMaguntia} TrueType font%
+\footnote{\url{http://unifraktur.sourceforge.net/maguntia.html}}
+for the running text. The later has several nice \textit{optional features},
+(here long s and old umlaut variant):
+
+\verb+\setmainfont{UnifrakturMaguntia.ttf}[StylisticSet=11,CharacterVariant=15]+\\
+\verb+\renewcommand{\LettrineTextFont}{\relax} % No small caps here!+ \\
+\verb+\renewcommand{\LettrineFontHook}{\fontspec{Yinit.otf}}+\\
+\verb+\lettrine[lhang=.2, loversize=.25, findent=0.1em]{W}{er} reitet+
+
+\begin{de}\Large
+\setmainfont{UnifrakturMaguntia.ttf}[StylisticSet=11,CharacterVariant=15]
+\renewcommand{\LettrineTextFont}{\relax}
+\renewcommand{\LettrineFontHook}{\fontspec{Yinit.otf}}
+\lettrine[lhang=.2, loversize=.25, findent=0.1em]
+{W}{er} reitet so spät durch Nacht und Wind?\\
+Es ist der Vater mit seinem Kind;\\
+Er hat den Knaben wohl in dem Arm,\\
+Er faßt ihn sicher, er hält ihn warm.\par
+\end{de}
+
+\vspace{.5\baselineskip}
+Without the \textit{optional features}, the output looks more modern:
+
+\begin{otherlanguage}{german}\Large
+\setmainfont{UnifrakturMaguntia.ttf}
+\renewcommand{\LettrineTextFont}{\relax}
+\renewcommand{\LettrineFontHook}{\fontspec{Yinit.otf}}
+\lettrine[lhang=.2, loversize=.25, findent=0.1em]
+{W}{er} reitet so spät durch Nacht und Wind?\\
+Es ist der Vater mit seinem Kind;\\
+Er hat den Knaben wohl in dem Arm,\\
+Er faßt ihn sicher, er hält ihn warm.\par
+\end{otherlanguage}
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% coding: utf-8
+%%% TeX-master: t
+%%% TeX-engine: luatex
+%%% End:
diff --git a/macros/latex/contrib/lettrine/doc/demo.pdf b/macros/latex/contrib/lettrine/doc/demo.pdf
deleted file mode 100644
index c0253dc0d5..0000000000
--- a/macros/latex/contrib/lettrine/doc/demo.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/lettrine/doc/lettrine.pdf b/macros/latex/contrib/lettrine/doc/lettrine.pdf
index 9d206d0d65..5660e16e1b 100644
--- a/macros/latex/contrib/lettrine/doc/lettrine.pdf
+++ b/macros/latex/contrib/lettrine/doc/lettrine.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/lettrine.dtx b/macros/latex/contrib/lettrine/lettrine.dtx
index a522c917b2..c357e97aba 100644
--- a/macros/latex/contrib/lettrine/lettrine.dtx
+++ b/macros/latex/contrib/lettrine/lettrine.dtx
@@ -2,7 +2,7 @@
%
% \iffalse meta-comment
%
-% Copyright © 1999-2018 Daniel Flipo.
+% Copyright © 1999-2020 Daniel Flipo.
%
% This program can be distributed and/or modified under the terms
% of the LaTeX Project Public License either version 1.3c of this
@@ -26,20 +26,25 @@
\ProvidesFile{lettrine.dtx}
%</dtx>
%<*!cfg>
- [2019-04-06 v2.22 (Daniel Flipo)]
+ [2020-03-14 v2.23 (Daniel Flipo)]
%</!cfg>
%
% Lettrine package for LaTeX version 2e
%
-% Copyright © 1999-2019 by Daniel Flipo
+% Copyright © 1999-2020 by Daniel Flipo
%
% Please report errors to: daniel (dot) flipo (at) free (dot) fr
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
+\usepackage[dvipsnames]{xcolor}
\usepackage{unicode-math}
-\setmainfont{Latin Modern Roman}
-\setmathfont{XITS Math}
+\setmainfont{erewhon}
+\setsansfont{Cabin}[Scale=MatchLowercase]
+\setmonofont{Inconsolatazi4}[Scale=MatchLowercase, Color=Sepia,
+ HyphenChar=None,StylisticSet={2,3}]
+\setmathfont{Erewhon-Math.otf}
+\usepackage{fourier-orns}
\usepackage[expansion=true,protrusion=true]{microtype}
\usepackage{url}
\usepackage[numbered]{hypdoc}
@@ -47,6 +52,7 @@
\usepackage{lettrine}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
+\renewcommand{\labelitemi}{\starredbullet}
%
\RecordChanges
\AtEndDocument{%
@@ -59,15 +65,15 @@
%
\newcommand*\file[1]{\texttt{#1}}
\newcommand*\lopt[1]{\texttt{#1}}
-\renewcommand\meta[1]{\textit{<#1>}} % no math mode (see doc.sty)
+\renewcommand\meta[1]{\textit{\color{Sepia}<#1>}} % no math mode (see doc.sty)
%
\setlength{\parindent}{0pt}
\setlength{\parskip}{.3\baselineskip}
\begin{document}
\GetFileInfo{lettrine.dtx}
\begin{center}
- \textbf{\Large Typesetting dropped capitals in \LaTeXe{} documents}
- \\[.2\baselineskip]^^A\]
+ \textbf{\Large Typesetting dropped capitals with LaTeX}
+ \\[.5\baselineskip]^^A\]
{\large Daniel Flipo}\\
\texttt{daniel.flipo@free.fr}
\end{center}
@@ -84,7 +90,9 @@
% \filedate.}, provides a command |\lettrine| which requires two
% mandatory arguments, and an optional one.
%
-% Adding |\usepackage{lettrine}| in the preamble of a document
+% \changes{v2.23}{2020/03/14}{Documentation cleanup.}
+%
+% Adding |\usepackage{lettrine}| in the preamble of a document
% defines the command |\lettrine|, the simplest use of which is
% |\lettrine{|\meta{letter}|}{|\meta{text}|}|.
% It produces a dropped capital \meta{letter} (2 lines high),
@@ -110,122 +118,106 @@
% \changes{v1.7}{2014/09/16}{New counter to add lines for
% dropped capitals with positive depth, like Q.}
%
-% \item \lopt{depth=}\meta{integer} sets the number of lines to
-% be reserved under the baseline, this is meant for dropped
-% capital with positive depth, like Q (default=0);
-% \item \lopt{lhang=}\meta{decimal} ($0\le|lhang|\le1$) sets
-% how much of the dropped capital’s width should hang into
-% the margin (default=0);
-% \item \lopt{loversize=}\meta{decimal} ($-1<\lopt{loversize}\le1$)
-% enlarges the dropped capital’s height: with
-% \lopt{loversize=0.1} its height is enlarged by 10\% so
-% that it raises above the top paragraph’s line (default=0);
-% \item \lopt{lraise=}\meta{decimal} does not affect the dropped
-% capital’s height, but moves it up (if positive),
-% down (if negative); useful with capitals like |J| or |Q|
-% which have a positive depth, (default=0);
-% \item \lopt{findent=}\meta{dimen} (positive or negative)
-% controls the horizontal gap between the dropped capital
-% and the indented block of text (default=0pt);
-% \item \lopt{nindent=}\meta{dimen} shifts all indented lines,
-% starting from the second one, horizontally by
-% \meta{dimen} (this shift is relative to the first
-% line, default=0.5em);
-% \item \lopt{slope=}\meta{dimen} can be used with dropped
-% capitals like |A| or |V| to add \meta{dimen}
-% (positive or negative) to the indentation of each line
-% starting from the third one (no effect if \lopt{lines=2},
-% default=0pt);
-% \item \lopt{ante=}\meta{text} can be used to typeset \meta{text}
-% \emph{before} the dropped capital (typical use is for
-% French guillemets starting the paragraph).
+% \item \lopt{depth=}\meta{integer} sets the number of lines to be
+% reserved under the baseline, this is meant for dropped capital with
+% positive depth, like Q (default=0);
+% \item \lopt{lhang=}\meta{decimal} ($0\le|lhang|\le1$) sets how much
+% of the dropped capital’s width should hang into the margin
+% (default=0);
+% \item \lopt{loversize=}\meta{decimal} ($-1<\lopt{loversize}\le1$)
+% enlarges the dropped capital’s height: with \lopt{loversize=0.1}
+% its height is enlarged by 10\% so that it raises above the top
+% paragraph’s line (default=0);
+% \item \lopt{lraise=}\meta{decimal} does not affect the dropped
+% capital’s height, but moves it up (if positive), down (if
+% negative); useful with capitals like |J| or |Q| which have
+% a positive depth, (default=0);
+% \item \lopt{findent=}\meta{dimen} (positive or negative) controls the
+% horizontal gap between the dropped capital and the indented block
+% of text (default=0pt);
+% \item \lopt{nindent=}\meta{dimen} shifts all indented lines, starting
+% from the second one, horizontally by \meta{dimen} (this shift is
+% relative to the first line, default=0.5em);
+% \item \lopt{slope=}\meta{dimen} can be used with dropped capitals
+% like |A| or |V| to add \meta{dimen} (positive or negative) to the
+% indentation of each line starting from the third one (no effect if
+% \lopt{lines=2}, default=0pt);
+% \item \lopt{ante=}\meta{text} can be used to typeset \meta{text}
+% \emph{before} the dropped capital (typical use is for French
+% guillemets starting the paragraph).
%
% \changes{v1.6}{2004/05/22}{Add a flag to switch to
% images in eps or pdf format. Suggested by Bill Jetzer.}
%
-% \item \lopt{image=true} (new to version 1.6) will force
-% |\lettrine| to replace the letter normally used as
-% dropped capital by an image in eps format (latex) or
-% in pdf, jpg, etc.\ format (pdflatex); this needs the
-% |graphicx| package to be loaded in the preamble of course.
-% |\lettrine[image=true]{A}{n exemple}| or just
-% |\lettrine[image]{A}{n exemple}| will load |A.eps|,
-% |A.jpg|, |A.png| or |A.pdf| instead of letter~A.
-% This was suggested by Bill Jetzer.\\
-% N.B.: Redefining |\LettrineFont| as |\LettrineFontEPS|
-% is no longer supported and |\LettrineFontEPS| has been
-% renamed as |\LettrineImage|.
+% \item \lopt{image=true} will force |\lettrine| to replace the letter
+% normally used as dropped capital by an image in eps format (latex)
+% or in pdf, jpg, etc.\ format (pdflatex, xelatex, lualatex);
+% this requires the |graphicx| package to be loaded in the preamble.
+% |\lettrine[image=true]{A}{n exemple}|\quad or just\\
+% |\lettrine[image]{A}{n exemple}|\\
+% will load |A.eps|, |A.jpg|, |A.png| or |A.pdf| instead of letter~A.\\
+% N.B.: Redefining |\LettrineFont| as |\LettrineFontEPS| is no longer
+% supported and |\LettrineFontEPS| has been renamed as
+% |\LettrineImage|.
%
% \changes{v1.8}{2015/02/06}{Added two keyval options:
% `grid’ (true/false) and `novskip’ to override \cs{DiscardVskip}.}
%
-% \item \lopt{grid=true} (new to version 1.8) will force
-% the vertical skip added above the paragraph starting with
-% |\lettrine| to be rounded up to an integer number of
-% |\baselineskip|.
-% This option is meant for grid typesetting.
-% \item \lopt{novskip=}\meta{dimen} (new to version 1.8)
-% overrides |\DiscardVskip| (default=0.2pt). In some cases
-% (see options \lopt{lraise}, \lopt{loversize} or
-% accentuated dropped capitals,\dots) the top of the
-% dropped capital will raise above the top of following
-% text (usually in small caps), this will trigger
-% a corresponding vertical skip above the paragraph
-% starting with |\lettrine|, \emph{only if} this skip
-% exceeds |\DiscardVskip|.
-% Consider enlarging |novskip| (or |\DiscardVskip|) to
-% prevent small vertical skips from being rounded up to
-% |\baselineskip| when using the `grid’ option.
+% \item \lopt{grid=true} will force the vertical skip added above the
+% paragraph starting with |\lettrine| to be rounded up to an integer
+% number of |\baselineskip|. This option is meant for grid
+% typesetting.
+% \item \lopt{novskip=}\meta{dimen} overrides |\DiscardVskip|
+% (default=0.2pt). In some cases (see options \lopt{lraise},
+% \lopt{loversize} or accentuated dropped capitals,\dots) the top of
+% the dropped capital will raise above the top of following text
+% (usually in small caps), this will trigger a corresponding vertical
+% skip above the paragraph starting with |\lettrine|, \emph{only if}
+% this skip exceeds |\DiscardVskip|. Consider enlarging |novskip|
+% (or |\DiscardVskip|) to prevent small vertical skips from being
+% rounded up to |\baselineskip| when using the `grid’ option.
%
% \changes{v1.9}{2015/08/31}{New keyval option: `realheight’
% (true/false) and new global flag \cs{ifLettrineRealHeight}.}
%
-% \item \lopt{realheight=true} (new to version 1.9) will
-% compute the default height of the initial so that the
-% top of it is exactly aligned with the top of the text
-% entered as second mandatory argument of |\lettrine|
-% taking possible accents into account.
-% Otherwise, the default height is computed using a
-% customisable string |\LettrineSecondString| instead of
-% the real argument. For backward compatibility, option
-% \lopt{realheight} defaults to \lopt{false} and
-% |\LettrineSecondString| to `x’.
-%
-% You probably don’t need this option if you choose to
-% typeset the second mandatory argument of |\lettrine| in
-% small caps (the default). If you change
-% |\LettrineTextFont| to |\relax| or |\upshape|, consider
-% these two examples:
-% \begin{description}
-% \item |\lettrine{H}{ello}| you probably would like the
-% top of the `H’ to be aligned with the top of the `ll’
-% rather than with the top of the `e’, adding option
-% |realheight| does the trick:
-% |\lettrine[realheight]{H}{ello}|.\par
-% Global variants : |\LettrineRealHeighttrue| or (without
-% |realheight| option)
-% |\renewcommand*{\LettrineSecondString}{l}|.
-% \item |\lettrine{L}{a misère}| option
-% \lopt{realheight=true} would align with the top
-% of the `L’ with the top of the grave accent, the
-% default is probably better (top of the `L’ aligned with
-% the top of the non accented letters).
-% \end{description}
-%
-% \item \lopt{refstring}\footnote{Unlike \lopt{grid} or
-% \lopt{realheight}, \lopt{refstring} is not a flag
-% (\emph{do not} add \lopt{=true}!); it is possible to set
-% \lopt{refstring=}\meta{string} to override
-% \cs{LettrineTestString} locally.}
-% (new to version 2.1) is meant for fancy initials with
-% irregular heights (i.e.\ taken in fonts like Yinit
-% (OpenType), \file{cfr-initials},\dots).
-% \lopt{refstring} forces the |\fontsize| computations to
-% be run on the initial given as |\lettrine|’s first
-% mandatory argument instead of the reference string
-% |\LettrineTestString|. In most cases, this option should
-% \emph{not} be used: think of accentuated initials or
-% capitals with optical correction.
+% \item \lopt{realheight=true} will compute the default height of the
+% initial so that the top of it is exactly aligned with the top of
+% the text entered as second mandatory argument of |\lettrine|
+% taking possible accents into account. Otherwise, the default
+% height is computed using a customisable string
+% |\LettrineSecondString| instead of the real argument. For
+% backward compatibility, option \lopt{realheight} defaults to
+% \lopt{false} and |\LettrineSecondString| to `x’.
+%
+% You probably don’t need this option if you choose to typeset
+% the second mandatory argument of |\lettrine| in small caps
+% (the default). If you change |\LettrineTextFont| to |\relax|
+% or |\upshape|, consider these two examples:
+% \begin{description}
+% \item |\lettrine{H}{ello}| you might like the top of the
+% `H’ to be aligned with the top of the `ll’ rather than with the
+% top of the `e’, adding option |realheight| does the trick:
+% |\lettrine[realheight]{H}{ello}|.\par
+% Global variants : |\LettrineRealHeighttrue| or (without the
+% |realheight| option) |\renewcommand*{\LettrineSecondString}{l}|.
+% \item |\lettrine{L}{a misère}| option \lopt{realheight=true} would
+% align with the top of the `L’ with the top of the grave accent,
+% the default is probably better (top of the `L’ aligned with the
+% top of the non accented letters).
+% \end{description}
+%
+% \item \lopt{refstring}\footnote{Unlike \lopt{grid} or
+% \lopt{realheight}, \lopt{refstring} is not a flag (\emph{do not}
+% add \lopt{=true}!); it is possible to set
+% \lopt{refstring=}\meta{string} to override \cs{LettrineTestString}
+% locally.} is meant for fancy initials with
+% irregular heights (i.e.\ taken in fonts like Yinit (OpenType),
+% \file{cfr-initials},\dots). \lopt{refstring} forces the
+% |\fontsize| computations to be run on the initial given as
+% |\lettrine|’s first mandatory argument instead of the reference
+% string |\LettrineTestString|. In most cases, this option should
+% \emph{not} be used: think of accentuated initials or capitals with
+% optical correction.
%
% \end{itemize}
%
@@ -235,8 +227,9 @@
% |{V}{oici} un exemple |\dots
%
% Coloured initials are possible in conjonction with package
-% \file{color}, examples: |\lettrine{\textcolor{red}{A}}{n} example|
-% \quad or\\ |\lettrine{\textcolor[gray]{0.5}{A}}{nother} one| \\
+% \file{color}, examples: \\
+% |\lettrine{\textcolor{red}{A}}{n} example|\quad or\\
+% |\lettrine{\textcolor[gray]{0.5}{A}}{nother} one| \\
% see package \file{color} for the syntax of colour commands.
% Another possibility to colour initials globally is described
% below, see |\LettrineFontHook|.
@@ -244,9 +237,10 @@
% Three dimensions, |\LettrineWidth|, |\LettrineHeight| and
% |\LettrineDepth|, store the final size of the initial.
%
-% Once \file{lettrine.sty} will be installed (run \texttt{latex}
-% on \file{lettrine.ins} to extract it), compile and print
-% \file{demo.tex} to see the possible usage of these parameters.
+% Once \file{lettrine.sty} will be installed (run \texttt{lualatex}
+% on \file{lettrine.ins} to extract it), compile \file{demo-fr.tex}
+% and \file{demo-lua.tex} print the resulting PDFs to see the
+% possible usage of these parameters.
%
% \changes{v1.9}{2015/08/31}{New customisable string
% \cs{LettrineSecondString} to tune the initial’s height.}
@@ -289,24 +283,31 @@
% |\LettrineTextFont| sets the font used for the second argument
% of |\lettrine|, its default definition is
% |\newcommand{\LettrineTextFont}{\scshape}| (second argument in
-% small caps, this can be changed using |\renewcommand|).
-%
-% |\LettrineFont| sets the font used for the dropped capital,
-% usually the current font in a (large) size, computed
-% automatically from the number of lines it will fill:
-% the font size is computed so that, a \emph{standard} dropped
-% capital (say Z, not À) when sitting on its baseline, gets
-% its top aligned with the top of the following text (provided
-% $|loversize|=0$ and $|lines|\ge 2$). When \lopt{lines=1},
-% size is computed as if \lopt{lines} was~2.\\
+% small caps), this can be changed using |\renewcommand|.
+%
+% |\LettrineFont| \emph{is not customisable} see |\LettrineFontHook|
+% below, it sets the font used for the dropped capital, usually the
+% current font in a (large) size, computed automatically from the
+% number of lines it will fill: the font size is computed so that,
+% a \emph{standard} dropped capital (say Z, not À) when sitting on
+% its baseline, gets its top aligned with the top of the following
+% text (provided $|loversize|=0$ and $|lines|\ge 2$). When
+% \lopt{lines=1}, size is computed as if \lopt{lines} was~2.
+%
% A hook |\LettrineFontHook| is provided to change the font
-% used for the dropped capital, syntax follows \LaTeX{}’s
-% low-level font interface (see \LaTeX{} Companion, p.187--192),
+% used for the dropped capital, syntax follows LaTeX’s
+% low-level font interface (see LaTeX Companion, p.187--192),
% the |\selectfont| command is issued by |\LettrineFont|:\\
% |\renewcommand{\LettrineFontHook}{\fontfamily{ppl}|\ignorespaces
% |\fontseries{bx}}%|\\
% | \fontshape{sl}}|,\\
-% selects Palatino bold expanded slanted for the dropped capital.\\
+% selects Palatino bold expanded slanted for the dropped capital.
+%
+% With LuaLaTeX or XeLaTeX changing the lettrine’s font is
+% even easier, simply use the |\fontspec| command:\\
+% |\renewcommand{\LettrineFontHook}{\fontspec{LinLibertine_I.otf}|\\
+% will switch to Linux Libertine Initials.
+%
% |\LettrineFontHook| can also be used to change the colour of
% all initials in a (part of) document:
% |\renewcommand{\LettrineFontHook}{\color[gray]{0.5}}| \\
@@ -348,7 +349,7 @@
% (Palatino, Times, Utopia\dots), or any OpenType font, they are
% fully scalable too!
%
-% \vspace{\baselineskip}
+% \newpage{}
% \textbf{Known issues:}
% \begin{itemize}
% \item Nothing is done to prevent page-breaking in a paragraph
@@ -363,7 +364,7 @@
% |\parshape=0| just after the end of the list (starting a new
% paragraph just before or just after the list works too).
% Remember that `quote’, `quotation’, `abstract’ environments
-% are implemented as \emph{lists} in \LaTeX{}.
+% are implemented as \emph{lists} in LaTeX.
% \item If you are facing some slight height inaccuracy for a
% dropped capital, you can try option \lopt{refstring};
% this option is meant for fancy (unaccented) initials.
@@ -380,9 +381,9 @@
% order to produce exactly the same output as with former
% versions: you can request
% |\usepackage{lettrine}[=v1.6]|\footnote{Don’t forget the
-% \texttt{=} sign!} for 1999-2012 documents or
-% |\usepackage{lettrine}[=v1.9]| (documents from 2012 to
-% July 2018) or |\usepackage{lettrine}[=v2.0]| (August 2018).
+% \texttt{=} sign!} for 1999-2012 documents or\\
+% |\usepackage{lettrine}[=v1.9]| (documents from 2012 to July 2018)
+% or\\ |\usepackage{lettrine}[=v2.0]| (August 2018).
% Using any date in ISO format works too:
% |\usepackage{lettrine}[=2014-03-15]| will load v1.9.
% \end{itemize}
@@ -407,7 +408,7 @@
\DeclareRelease{v1.6}{1999-03-03}{lettrine-2006-03-17.sty}
\DeclareRelease{v1.9}{2012-07-20}{lettrine-2015-08-31.sty}
\DeclareRelease{v2.0}{2018-07-21}{lettrine-2018-08-18.sty}
- \DeclareCurrentRelease{}{2019-03-30}
+ \DeclareCurrentRelease{}{2020-03-14}
\else
\PackageWarning{lettrine}{Your LaTeX kernel is too old to provide
access\MessageBreak to former versions of the lettrine package.%
@@ -417,7 +418,7 @@
\fi
% \end{macrocode}
%
-% This package only runs with \LaTeXe{} and requires files
+% This package only runs with LaTeX and requires files
% \file{keyval.sty} and \file{minifp.sty}.
%
% \begin{macrocode}
@@ -698,7 +699,7 @@
%
% \begin{macro}{\LettrineImage}
% The following definition is for use with dropped capitals defined
-% as images: EPS, PDF, JPG, PNG files (see examples in demo.tex).
+% as images: EPS, PDF, JPG, PNG files (see examples in demo-fr.tex).
% Its use requires the |graphicx| package to be loaded in the
% preamble with |\usepackage{graphicx}|. The required size is
% computed just as in the standard case, |\includegraphics|
@@ -914,7 +915,7 @@
\@tempdima=\L@oversize pt\relax
\PackageInfo{lettrine.sty}%
{Targeted height = \the\L@target@tht\MessageBreak
- (no accent, loversize=0),\MessageBreak
+ (for loversize=0, accent excluded),\MessageBreak
Lettrine height = \the\LettrineHeight\space (#2)%
\ifdim\@tempdima=\z@\else\space loversize=\L@oversize\fi;%
\MessageBreak reported}%
@@ -1079,7 +1080,7 @@
}
% \end{macrocode}
%
-% Load a local config file if present in \LaTeX{}’s search path.
+% Load a local config file if present in LaTeX’s search path.
% \begin{macrocode}
\InputIfFileExists{lettrine.cfg}
{\typeout{Loading lettrine.cfg}}
@@ -1166,4 +1167,5 @@
%%% Local Variables:
%%% fill-column: 72
%%% coding: utf-8
+%%% TeX-engine: luatex
%%% End:
diff --git a/macros/latex/contrib/lettrine/lettrine.ins b/macros/latex/contrib/lettrine/lettrine.ins
index a2fd3ac5bf..8c605c8aad 100644
--- a/macros/latex/contrib/lettrine/lettrine.ins
+++ b/macros/latex/contrib/lettrine/lettrine.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 1999-2019 Daniel Flipo.
+%% Copyright (C) 1999-2020 Daniel Flipo.
%%
%% This file will generate fast loadable files and documentation
%% driver files from the doc files in this package when run through
diff --git a/macros/latex/contrib/mychemistry/README b/macros/latex/contrib/mychemistry/README
deleted file mode 100644
index 2fe11d7b08..0000000000
--- a/macros/latex/contrib/mychemistry/README
+++ /dev/null
@@ -1,30 +0,0 @@
---------------------------------------------------------------------------
-the MYCHEMISTRY package v1.99b 2012/12/19
-
- create reaction schemes with LaTeX and chemfig
-
---------------------------------------------------------------------------
-Clemens Niederberger
-Web: https://www.bitbucket.org/cgnieder/mychemistry
-E-Mail: contact@mychemistry.eu
---------------------------------------------------------------------------
-If you have any ideas, questions, suggestions or bugs to report, please
-feel free to contact me.
---------------------------------------------------------------------------
-Copyright 2011--2012 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 mychemistrysty, mychemistry_en.tex,
-README and the derived file mychemistry_en.pdf.
--------------------------------------------------------------------------- \ No newline at end of file
diff --git a/macros/latex/contrib/mychemistry/examples.pdf b/macros/latex/contrib/mychemistry/examples.pdf
deleted file mode 100644
index 88eda6001e..0000000000
--- a/macros/latex/contrib/mychemistry/examples.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/mychemistry/examples.tex b/macros/latex/contrib/mychemistry/examples.tex
deleted file mode 100644
index 46dbc96466..0000000000
--- a/macros/latex/contrib/mychemistry/examples.tex
+++ /dev/null
@@ -1,864 +0,0 @@
-\documentclass[DIV10]{cnpkgdoc}
-\docsetup{
- pkg = mychemistry,
- title = mychemistry -- examples,
- subtitle = Create Reaction Schemes with \LaTeXe\ and Chemfig ,
- code-box = {
- skipbelow = .5\baselineskip plus .5ex minus .5ex ,
- skipabove = .5\baselineskip plus .5ex minus .5ex ,
- roundcorner = 3pt ,
- innerleftmargin = 1.5em ,
- innerrightmargin = 1.5em
- }
-}
-
-\addcmds{
- @addtoreset,
- anywhere,
- arrow,
- branch,
- celsius,
- ch,
- chemabove,
- chemand,
- chembelow,
- chemfig,
- chemname,
- cmpd,
- colorlet,
- command,
- draw,
- elmove,
- floatstyle,
- fpch,
- fplus,
- fscrm,
- fscrp,
- Hpl,
- iupac,
- lewis,
- Lewis,
- listof,
- makeinvisible,
- makevisible,
- marrow,
- mch,
- mCsetup,
- mech,
- mesomeric,
- N,
- node,
- para,
- pch,
- phantom,
- reactant,
- restylefloat,
- setarrowlabel,
- setarrowlength,
- setarrowline,
- setatomsep,
- setatomsize,
- setbondlength,
- setbondshape,
- setcrambond,
- setmergelength,
- setrcndist,
- setrxnalign,
- setschemealign,
- setschemename,
- SI,
- text,
- therxnscheme,
- tikzset,
- trans,
- transition
-}
-
-\chemsetup[option]{circled=all}
-
-\usepackage{chemnum}
-\usepackage{fnpct}
-\usepackage{booktabs}
-\usepackage{siunitx}
-\usepackage{scrhack}
-
-\TitlePicture{%
- \parbox{.7\linewidth}{%
- Since the documentation is already long enough I decided to provide an
- extra file containing only examples and a few words where to find possibly
- interesting code.\par
- For all the undocumented little macros like \cmd{fscrp} or \cmd{delm} have
- a look in the \paket*{chemmacros} documentation.
- }
-}
-
-\begin{document}
-
-\section{Addition Reaction}\label{sec:addition}
-A simple reaction scheme with two different products.
-
-\begin{rxnscheme}{Addition Reaction}
- \reactant{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }
- \arrow{ $+ \Hpl$ }{}
- \mesomeric[,rf]{
- \reactant{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\fplus)-[::-60]} }
- \marrow[below]
- \reactant[below]{ \chemfig{\fplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }
- }
- \branch[right=of rf,,yshift=3em]{
- \arrow{}{}
- \reactant{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} }
- }
- \branch[right=of rf,,yshift=-5em]{
- \arrow{}{}
- \reactant{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-adduct} }
- }
-\end{rxnscheme}
-
-
-\begin{beispiel}[code only]
- \begin{rxnscheme}[,]{Addition Reaction}
- \reactant{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }
- \arrow{ $+ \Hpl$ }{}
- \mesomeric[,rf]{
- \reactant{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\fplus)-[::-60]} }
- \marrow[below]
- \reactant[below]{ \chemfig{\fplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }
- }
- \branch[right=of rf,,yshift=3em]{
- \arrow{}{}
- \reactant{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} }
- }
- \branch[right=of rf,,yshift=-5em]{
- \arrow{}{}
- \reactant{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-adduct} }
- }
- \end{rxnscheme}
-\end{beispiel}
-
-\section{Mesomerism}
-\begin{rxnscheme}[,,,.8]{Mesomerism}
- \setatomsep{1.6em}
- \reactant[,start]{ \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \cmpd{benzene}} }
- \arrow[,,2.8]{}{}
- \reactant{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \cmpd{bromobenzene}} }
- \arrow[start.below,,,pfeil_a]{\ch{Br2} / \ch{AlBr3}}{$-\ch{AlBr4-}$}
- \mesomeric[pfeil_a.below,mesomerism,xshift=8.5em,yshift=-2.5em]{
- \reactant{
- \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\fplus)-[@{e2}])}
- \elmove{e1}{60:4mm}{e2}{0:4mm}
- }
- \marrow
- \reactant{
- \chemfig{*6(-(-[:90,.4,,,white]\fplus)-[@{e4}]=[@{e3}]-(-[:120]Br)(-[:60]H)-=)}
- \elmove{e3}{180:4mm}{e4}{150:4mm}
- }
- \marrow
- \reactant{
- \chemfig{*6(-=-(-[:-150,.4,,,white]\fplus)-(-[:120]Br)(-[:60]H)-=)}
- }
- }
- \branch[above=of mesomerism,,xshift=7.5em]{
- \arrow[above]{$-\Hpl$}{}
- }
-\end{rxnscheme}
-
-If you put something relative to an arrow you might have to consider that the
-arrow's anchor point is in the middle of the arrow. That's why \cmd{mesomeric}
-is shifted with \code{yshift=-2.5em} in line 9.
-\begin{beispiel}[code only]
- \begin{rxnscheme}[,,,.8]{Mesomerism}
- \setatomsep{1.6em}
- % main reaction:
- \reactant[,start]{ \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \cmpd{benzene}} }
- \arrow[,,2.8]{}{}
- \reactant{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \cmpd{bromobenzene}} }
- % branch:
- \arrow[start.below,,,pfeil_a]{\ch{Br2} / \ch{AlBr3}}{$-\ch{AlBr4-}$}
- \mesomeric[!!pfeil_a.below!!,mesomerism,xshift=8.5em,!!yshift=-2.5em!!]{
- \reactant{
- \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\fplus)-[@{e2}])}
- \elmove{e1}{60:4mm}{e2}{0:4mm}
- }
- \marrow
- \reactant{
- \chemfig{*6(-(-[:90,.4,,,white]\fplus)-[@{e4}]=[@{e3}]-(-[:120]Br)(-[:60]H)-=)}
- \elmove{e3}{180:4mm}{e4}{150:4mm}
- }
- \marrow
- \reactant{
- \chemfig{*6(-=-(-[:-150,.4,,,white]\fplus)-(-[:120]Br)(-[:60]H)-=)}
- }
- }
- % last arrow inside a branch, since it cannot be shifted by itself:
- \branch[above=of mesomerism,,xshift=7.5em]{
- \arrow[above]{$-\Hpl$}{}
- }
- \end{rxnscheme}
-\end{beispiel}
-
-\section{The Former Titlepage}
-This scheme used to be on the title page of the examples file. It isn't any more
-but here's the scheme, anyway.
-\begin{rxnscheme}[,,,.7]{The Titlepage}
- \setatomsep{1.5em}\footnotesize
- \reactant[,a]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3)(-[6]OH)-CH_3} }
- \arrow[a.20]{}{}
- \reactant[20]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[@{e1}6,,,2]H_2@{e2}\chembelow{O}{\fplus})-C(-[2]CH_3)(-[6]OH)-CH_3}\elmove{e1}{10:4mm}{e2}{-10:4mm} }
- \arrow[,,1.42]{$-\ch{H2O}$}{}
- \reactant{ \chemfig{\chembelow{C}{\fplus}(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))-C(-[2]CH_3)(-[6]OH)-CH_3} }{}
- \arrow[a.-20,-|>]{}{}
- \reactant[-20]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3)(-[@{e3}6]@{e4}\chembelow{O}{\fplus}H_2)-CH_3}\elmove{e3}{170:4mm}{e4}{-170:4mm} }
- \arrow[,,1.42]{$-\ch{H2O}$}{}
- \reactant[,end]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-\chembelow{C}{\fplus}(-[2]CH_3)-CH_3} }
- \anywhere{below=of end}{}
-\end{rxnscheme}
-
-\begin{beispiel}[code only]
- \begin{rxn}[,.7]
- \setatomsep{1.5em}\footnotesize
- % reaction above:
- \reactant[,a]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3)(-[6]OH)-CH_3} }
- \arrow[a.45]{}{}
- \reactant[45]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[@{e1}6,,,2]H_2@{e2}\chembelow{O}{\fplus})-C(-[2]CH_3)(-[6]OH)-CH_3}\elmove{e1}{10:4mm}{e2}{-10:4mm} }
- \arrow[,,1.42]{$-\ch{H2O}$}{}
- \reactant{ \chemfig{\chembelow{C}{\fplus}(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))-C(-[2]CH_3)(-[6]OH)-CH_3} }{}
- % going down:
- \arrow[a.-45,-|>]{}{}
- \reactant[-45]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3)(-[@{e3}6]@{e4}\chembelow{O}{\fplus}H_2)-CH_3}\elmove{e3}{170:4mm}{e4}{-170:4mm} }
- \arrow[,,1.42]{$-\ch{H2O}$}{}
- \reactant{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-\chembelow{C}{\fplus}(-[2]CH_3)-CH_3} }
- \end{rxn}
-\end{beispiel}
-
-\section{Condensation Reaction}
-\begin{rxnscheme}{Condensation Reaction}
- \reactant{\chemfig{**6(---(-CH_2OH)-(-OH)--)}}
- \chemand
- \reactant{\chemfig{**6(----(-OH)-(-HOCH_2)-)}}
- \arrow[,-+>]{}{\ch{H2O}}
- \reactant{\chemfig{**6(---(-CH_2-[:-30]O-[:30]CH_2-[:-30]**6(-----(-OH)-))-(-OH)--)}}
- \arrow[-90,-+>,,dec]{}{\ch{CH2O}}
- \anywhere{dec.180,,xshift=-.2em}{\SI{200}{\celsius}}
- \reactant[-90,target]{\chemfig{**6(---(-CH_2-[:-30]**6(-----(-OH)-))-(-OH)--)}}
- \branch[left=of target]{
- \reactant{\chemfig{**6(---(-CH_2OH)-(-OH)--)}}
- \chemand
- \reactant{\chemfig{**6(----(-OH)-(-H)-)}}
- \arrow[,-+>]{}{\ch{H2O}}
- }
-\end{rxnscheme}
-
-\begin{beispiel}[code only]
- \begin{rxnscheme}{Condensation Reaction}
- \reactant{\chemfig{**6(---(-CH_2OH)-(-OH)--)}}
- \chemand
- \reactant{\chemfig{**6(----(-OH)-(-HOCH_2)-)}}
- \arrow[,-+>]{}{\ch{H2O}}
- \reactant{\chemfig{**6(---(-CH_2-[:-30]O-[:30]CH_2-[:-30]**6(-----(-OH)-))-(-OH)--)}}
- \arrow[-90,-+>,,dec]{}{\ch{CH2O}}
- \anywhere{dec.180,,xshift=-.2em}{\SI{200}{\celsius}}
- \reactant[-90,target]{\chemfig{**6(---(-CH_2-[:-30]**6(-----(-OH)-))-(-OH)--)}}
- \branch[left=of target]{
- \reactant{\chemfig{**6(---(-CH_2OH)-(-OH)--)}}
- \chemand
- \reactant{\chemfig{**6(----(-OH)-(-H)-)}}
- \arrow[,-+>]{}{\ch{H2O}}
- }
- \end{rxnscheme}
-\end{beispiel}
-
-\section{Substitution vs. Elimination}
-\begin{rxnscheme}{Substitution vs. Elimination}
- % first reaction:
- \reactant[,start_a]{\chemfig{@{H}H-[@{b1}:-60]\chemabove{C}{\scriptstyle\beta}(<[:-100]H)(<:[:-150]H)-[@{b2}]\chemabove{C}{\scriptstyle\alpha}(<[:20]H)(<:[:60]H)-[@{b3}:-60]@{X1}X}}
- \arrow{E2}{}
- \reactant{\chemfig{H-[:60]C(-[:120]H)=C(-[:60]H)-[:-60]H}}
- \chemand
- \reactant{\ch{X-}}
- \chemand
- \reactant{\chemfig{O(-[:60]H)-[:-60]H}}
- % second reaction:
- \reactant[start_a.-90,start_b,yshift=-4em]{\chemfig{H-[:-60]C(<[:-100]H)(<:[:-150]H)-@{C}C(<[:20]H)(<:[:60]H)-[@{b4}:-60]@{X2}X}}
- \arrow{S$_\text{N}$2}{}
- \reactant{\chemfig{H-[:-60]C(<[:-100]H)(<:[:-150]H)-C(<[:-80]H)(<:[:-30]H)-[:60]OH}}
- \chemand
- \reactant{\ch{X-}}
- % nucleophile/base:
- \anywhere{start_b.135,nuc,xshift=-3em,yshift=2em}{\chemfig{H-@{O}\chemabove{\lewis{026,O}}{\hspace{5mm}\fscrm}}}
- % electron movements:
- \anywhere{nuc.0}{
- \elmove{O}{90:1.5cm}{H}{180:1cm}
- \elmove{b1}{60:1cm}{b2}{90:5mm}
- \elmove{b3}{-170:5mm}{X1}{180:5mm}
- \elmove{O}{-90:1cm}{C}{100:1.5cm}
- \elmove{b4}{-170:5mm}{X2}{180:5mm}
- }
-\end{rxnscheme}
-
-You may see in line 20 that the \cmd{elmove} commands are put inside of
-\cmd{anywhere}. This is necessary in order to produce the right scheme. But this
-time you can position \cmd{anywhere} literally anywhere.
-\begin{beispiel}[code only]
- \begin{rxnscheme}{Substitution vs. Elimination}
- % first reaction:
- \reactant[,start_a]{\chemfig{@{H}H-[@{b1}:-60]\chemabove{C}{\scriptstyle\beta}(<[:-100]H)(<:[:-150]H)-[@{b2}]\chemabove{C}{\scriptstyle\alpha}(<[:20]H)(<:[:60]H)-[@{b3}:-60]@{X1}X}}
- \arrow{\mech[e2}{}
- \reactant{\chemfig{H-[:60]C(-[:120]H)=C(-[:60]H)-[:-60]H}}
- \chemand
- \reactant{\ch{X-}}
- \chemand
- \reactant{\chemfig{O(-[:60]H)-[:-60]H}}
- % second reaction:
- \reactant[start_a.-90,start_b,yshift=-4em]{\chemfig{H-[:-60]C(<[:-100]H)(<:[:-150]H)-@{C}C(<[:20]H)(<:[:60]H)-[@{b4}:-60]@{X2}X}}
- \arrow{\mech[2]}{}
- \reactant{\chemfig{H-[:-60]C(<[:-100]H)(<:[:-150]H)-C(<[:-80]H)(<:[:-30]H)-[:60]OH}}
- \chemand
- \reactant{\ch{X-}}
- % nucleophile/base:
- \anywhere{start_b.135,nuc,xshift=-3em,yshift=2em}{\chemfig{H-@{O}\chemabove{\lewis{026,O}}{\hspace{5mm}\fscrm}}}
- % electron movements:
- \anywhere{nuc.0}{
- \elmove{O}{90:1.5cm}{H}{180:1cm}
- \elmove{b1}{60:1cm}{b2}{90:5mm}
- \elmove{b3}{-170:5mm}{X1}{180:5mm}
- \elmove{O}{-90:1cm}{C}{100:1.5cm}
- \elmove{b4}{-170:5mm}{X2}{180:5mm}
- }
- \end{rxnscheme}
-\end{beispiel}
-
-\section{Scheme with three Lines}\label{sec:three_lines}
-\begin{rxnscheme}{Scheme with three Lines}
- \setatomsep{1.5em}
- \footnotesize
- \reactant[,start]{\chemfig{EtO-(=[2]O)-[:-60](-Br)-[:-120](=[6]O)-[4]EtO}}
- \chemand
- \reactant{\chemfig{*6(-=-=-*5(-(=O)-\chemabove{\lewis{4:,N}}{\fscrm}(-[4,.7,,,draw=none]\chemabove{K}{\fscrp})-(=O)--)=)}}
- \arrow{}{}
- \reactant{\chemfig{*6(-=-=-*5(-(=O)-N(-(-[::-60](=[::-60]O)-[::60]EtO)-[::60](=[::60]O)-[::-60]EtO)-(=O)--)=)}}
- % newline, started with \anywhere:
- \anywhere{start.-90,a,xshift=-4em,yshift=-5em}{}
- \arrow[a.0,,.6]{\chemabove{\lewis{0:,B}}{\fscrm}}{}
- \arrow{\ch{R-X}}{}
- \reactant{\chemfig{*6(-=-=-*5(-(=O)-N(-(-[4]R)(-[::-60](=[::-60]O)-[::60]EtO)-[::60](=[::60]O)-[::-60]EtO)-(=O)--)=)}}
- \arrow[,,1.25]{\Hpl/\ch{H2O}}{}
- \reactant{\chemfig{*6(-=-=-*5(-(=O)-N(-(-[4]R)(-[::-60](=[::-60]O)-[::60]HO_2C)-[::60](=[::60]O)-[::-60]HO_2C)-(=O)--)=)}}
- % newline, started with \anywhere:
- \anywhere{a.-90,b,yshift=-7em}{}
- \arrow[b.0]{$- {\ch{CO2}}$}{}
- \arrow{\Hpl}{\ch{H2O}}
- \reactant{\chemfig{R-(-[6]H)(-[2]C|O_2\mch)-NH_3\pch}}
-\end{rxnscheme}
-\begin{beispiel}[code only]
- \begin{rxnscheme}{Scheme with three Lines}
- \setatomsep{1.5em}
- \footnotesize
- \reactant[,start]{\chemfig{EtO-(=[2]O)-[:-60](-Br)-[:-120](=[6]O)-[4]EtO}}
- \chemand
- \reactant{\chemfig{*6(-=-=-*5(-(=O)-\chemabove{\lewis{4:,N}}{\fscrm}(-[4,.7,,,draw=none]\chemabove{K}{\fscrp})-(=O)--)=)}}
- \arrow{}{}
- \reactant{\chemfig{*6(-=-=-*5(-(=O)-N(-(-[::-60](=[::-60]O)-[::60]EtO)-[::60](=[::60]O)-[::-60]EtO)-(=O)--)=)}}
- % newline, started with \anywhere:
- \anywhere{start.-90,a,xshift=-4em,yshift=-5em}{}
- \arrow[a.0,,.6]{\chemabove{\lewis{0:,B}}{\fscrm}}{}
- \arrow{\ch{R-X}}{}
- \reactant{\chemfig{*6(-=-=-*5(-(=O)-N(-(-[4]R)(-[::-60](=[::-60]O)-[::60]EtO)-[::60](=[::60]O)-[::-60]EtO)-(=O)--)=)}}
- \arrow[,,1.25]{\Hpl/\ch{H2O}}{}
- \reactant{\chemfig{*6(-=-=-*5(-(=O)-N(-(-[4]R)(-[::-60](=[::-60]O)-[::60]HO_2C)-[::60](=[::60]O)-[::-60]HO_2C)-(=O)--)=)}}
- % newline, started with \anywhere:
- \anywhere{a.-90,b,yshift=-7em}{}
- \arrow[b.0]{$- {\ch{CO2}}$}{}
- \arrow{\Hpl}{\ch{H2O}}
- \reactant{\chemfig{R-(-[6]H)(-[2]C|O_2\mch)-NH_3\pch}}
- \end{rxnscheme}
-\end{beispiel}
-
-
-\section{Hydratisation}\label{sec:hydratisation}
-\pgfdeclaredecoration{ddbond}{initial}{%
- \state{initial}[width=2pt]{%
- \pgfpathlineto{\pgfpoint{2pt}{0pt}}%
- \pgfpathmoveto{\pgfpoint{1.5pt}{2pt}}%
- \pgfpathlineto{\pgfpoint{2pt}{2pt}}%
- \pgfpathmoveto{\pgfpoint{2pt}{0pt}}%
- }%
- \state{final}{%
- \pgfpathlineto{\pgfpointdecoratedpathlast}%
- }%
-}%
-\tikzset{lddbond/.style={decorate,decoration=ddbond}}%
-\tikzset{rddbond/.style={decorate,decoration={ddbond,mirror}}}%
-A scheme with transition states.
-
-\begin{rxnscheme}{Hydratisation}
- \reactant[,carbonyl_A]{\chemfig{R_2C=O}}
- \anywhere{above=of carbonyl_A}{\chemfig{H-[:-30]O-[:30]H}}
- \arrow[,<=>]{\tiny slow}{}
- \transition[,transition_A]{\chemfig{R_2C(-[2,,2,,densely dotted]\chemabove{O}{\delp}(-[:150]H)-[:30]H)-[:-30,1.15,,,lddbond]O-[6,,,,densely dotted]H-[,,,,densely dotted]\chemabove{A}{\delm}}}
- \anywhere{below=of transition_A,,text width=3cm}{(general transition state, acid cat.)}
- \arrow[,<=>,.7]{}{}
- \reactant{\chemfig{R_2C(-[:60]\chemabove{O}{\fscrp}H_2)-[:-60]OH}}
- \arrow[below right,<=>,.7]{$-\Hpl$}{}
- \reactant[below right]{\chemfig{R_2C(-[:60]OH)-[:-60]OH}}
- \arrow[below left,<=>,.7]{}{\ch{H2O}}
- \reactant[below left,zw]{\chemfig{R_2C(-[:60]OH)-[:-60]O|\mch}}
- \arrow[left,<=>,.7]{}{}
- \transition[left,transition_B]{\chemfig{R_2C(-[2,,2,,densely dotted]O(-[:150]H-[4,,,,densely dotted]\chemabove{B}{\delp})-[:30]H)-[:-30,1.15,,,lddbond]\chemabove{O}{\delm}-[6,,,,draw=none]\phantom{H}}}
- \anywhere{below=of transition_B,,text width=3cm}{(general transition state, base cat.)}
- \arrow[left,<=>]{}{\tiny slow}
- \reactant[left,carbonyl_B]{\chemfig{R_2C=O}}
- \anywhere{above=of carbonyl_B}{\chemfig{H-[:-30]O-[:30]H}}
-\end{rxnscheme}
-
-For this example we first declare a style for the delocalized double bonds:
-\begin{beispiel}[code only]
- \pgfdeclaredecoration{ddbond}{initial}{%
- \state{initial}[width=2pt]{%
- \pgfpathlineto{\pgfpoint{2pt}{0pt}}%
- \pgfpathmoveto{\pgfpoint{1.5pt}{2pt}}%
- \pgfpathlineto{\pgfpoint{2pt}{2pt}}%
- \pgfpathmoveto{\pgfpoint{2pt}{0pt}}%
- }%
- \state{final}{%
- \pgfpathlineto{\pgfpointdecoratedpathlast}%
- }%
- }%
- \tikzset{lddbond/.style={decorate,decoration=ddbond}}%
- \tikzset{rddbond/.style={decorate,decoration={ddbond,mirror}}}%
-\end{beispiel}
-Now the delocalized double bond can be used via \paket*{chemfig}'s fifth option
-(see the \paket{chemfig} manual):
-\begin{beispiel}[code only]
- \chemfig{-[,,,,lddbond]-[,,,,rddbond]}
-\end{beispiel}
-\chemfig{-[,,,,lddbond]-[,,,,rddbond]}\par\medskip
-
-Then the whole code looks like follows:
-\begin{beispiel}[code only]
- \begin{rxnscheme}{Hydratisation}
- \reactant[,carbonyl_A]{\chemfig{R_2C=O}}
- \anywhere{above=of carbonyl_A}{\chemfig{H-[:-30]O-[:30]H}}
- \arrow[,<=>]{\tiny slow}{}
- \transition[,transition_A]{\chemfig{R_2C(-[2,,2,,densely dotted]\chemabove{O}{\delp}(-[:150]H)-[:30]H)-[:-30,1.15,,,lddbond]O-[6,,,,densely dotted]H-[,,,,densely dotted]\chemabove{A}{\delm}}}
- \anywhere{below=of transition_A,,text width=3cm}{(general transition state, acid cat.)}
- \arrow[,<=>,.7]{}{}
- \reactant{\chemfig{R_2C(-[:60]\chemabove{O}{\fscrp}H_2)-[:-60]OH}}
- \arrow[below right,<=>,.7]{$-\Hpl$}{}
- \reactant[below right]{\chemfig{R_2C(-[:60]OH)-[:-60]OH}}
- \arrow[below left,<=>,.7]{}{\ch{H2O}}
- \reactant[below left,zw]{\chemfig{R_2C(-[:60]OH)-[:-60]O|\mch}}
- \arrow[left,<=>,.7]{}{}
- \transition[left,transition_B]{\chemfig{R_2C(-[2,,2,,densely dotted]O(-[:150]H-[4,,,,densely dotted]\chemabove{B}{\delp})-[:30]H)-[:-30,1.15,,,lddbond]\chemabove{O}{\delm}-[6,,,,draw=none]\phantom{H}}}
- \anywhere{below=of transition_B,,text width=3cm}{(general transition state, base cat.)}
- \arrow[left,<=>]{\tiny langsam}{}
- \reactant[left,carbonyl_B]{\chemfig{R_2C=O}}
- \anywhere{above=of carbonyl_B}{\chemfig{H-[:-30]O-[:30]H}}
- \end{rxnscheme}
-\end{beispiel}
-You can see that \cmd{anywhere} was used several times, either to place molecules
-or to label molecules.
-
-\section{Esterification}\label{sec:veresterung}
-\begin{rxnscheme}{Esterification}
- \reactant{\chemfig{H-C(=[:60]O)-[:-60]O-H}}
- \arrow[,-+>,1.5,protolysis]{\ch{H2SO4}}{\ch{HSO4-}}
- \anywhere{below=of protolysis,,yshift=1em}{\tiny protolysis}
- \mesomeric{
- \reactant{\chemfig{H-@{a2}C(-[:60]O-H)(-[:30,.5,,,draw=none]{\fscrp})-[:-60]O-H}}
- \marrow
- \reactant{\chemfig{H-C(=[:60]\chemabove{O}{\fscrp}-H)-[:-60]O-H}}
- }
- \branch[below,,xshift=-5em]{
- \arrow[below,<=>]{\chemfig{H-[:120]@{a1}O-[:60]CH_3}}{\tiny addition}
- \reactant[below]{\chemfig{H-C(-[2]O-[:30]H)(-\chemabove{O}{\fscrp}(-[:60]CH_3)-[:-60]H)-[6]O-[:-30]H}\elmove{a1}{90:1.5cm}{a2}{0:3cm}}
- }
- \branch[left,,yshift=-3.5em]{
- \arrow[left,<=>]{}{\tiny protolysis}
- }
- \reactant[left]{\chemfig{H-C(-[2]O-[:30]H)(-O-CH_3)-[@{b1}6]@{a3}\chemabove{O}{\hspace*{-4mm}\fscrp}(-[:-150]H)-[:-30]H}\elmove{b1}{0:5mm}{a3}{20:5mm}}
- \arrow[below,<=>]{$- {\ch{H2O}}$}{\tiny elimination}
- \mesomeric[below,,xshift=6em]{
- \reactant{\chemfig{H-C(-[:60]O-H)(-[,.5,,,draw=none]{\fscrp})-[:-60]O-CH_3}}
- \marrow
- \reactant{\chemfig{H-C(=[:60]\chemabove{O}{\fscrp}-H)-[:-60]O-CH_3}}
- }
- \arrow[,-+>,1.5]{\ch{HSO4-}}{\ch{H2SO4}}
- \reactant{\chemfig{H-C(=[:60]O)-[:-60]O-CH_3}}
-\end{rxnscheme}
-
-\begin{beispiel}[code only]
- \begin{rxn}{Esterification}
- \reactant{\chemfig{H-C(=[:60]O)-[:-60]O-H}}
- \arrow[,-+>,1.2,protolysis]{\ch{H2SO4}}{\ch{HSO4-}}
- \anywhere{below=of protolysis,,yshift=1em}{\tiny protolysis}
- \mesomeric{
- \reactant{\chemfig{H-@{a2}C(-[:60]O-H)(-[:30,.5,,,draw=none]{\fscrp})-[:-60]O-H}}
- \marrow
- \reactant{\chemfig{H-C(=[:60]\chemabove{O}{\fscrp}-H)-[:-60]O-H}}
- }
- \branch[below,,xshift=-5em]{
- \arrow[below,<=>]{\tiny addition}{\chemfig{H-[:120]@{a1}O-[:60]CH_3}}
- \reactant[below]{
- \chemfig{H-C(-[2]O-[:30]H)(-\chemabove{O}{\fscrp}(-[:60]CH_3)-[:-60]H)-[6]O-[:-30]H}
- \elmove{a1}{90:1.5cm}{a2}{0:3cm}
- }
- }
- \branch[left,,yshift=-3.5em]{
- \arrow[left,<=>]{}{\tiny protolysis}
- }
- \reactant[left]{
- \chemfig{H-C(-[2]O-[:30]H)(-O-CH_3)-[@{b1}6]@{a3}\chemabove{O}{\hspace*{-4mm}\fscrp}(-[:-150]H)-[:-30]H}
- \elmove{b1}{0:5mm}{a3}{20:5mm}
- }
- \arrow[below,<=>]{$- {\ch{H2O}}$}{\tiny elimination}
- \mesomeric[below,,xshift=6em]{
- \reactant{\chemfig{H-C(-[:60]O-H)(-[,.5,,,draw=none]{\fscrp})-[:-60]O-CH_3}}
- \marrow
- \reactant{\chemfig{H-C(=[:60]\chemabove{O}{\fscrp}-H)-[:-60]O-CH_3}}
- }
- \arrow[,-+>,1.2]{\ch{HSO4-}}{\ch{H2SO4}}
- \reactant{\chemfig{H-C(=[:60]O)-[:-60]O-CH_3}}
- \end{rxnscheme}
-\end{beispiel}
-
-\section{Electrophilic Addition}\label{sec:elektrophile_addition}
-This scheme forms a circle.
-\begin{rxnscheme}{Electrophilic Addition}
- \setarrowlength{3em}
- \reactant{\chemfig{>[:-20]C(<[:40])=[6]C(<[:-130])<[:-20]}}
- \chemand[,plus]
- \reactant{\chemfig{\lewis{246,Br}-\lewis{026,Br}}}
- \arrow[plus.-90,<=>]{\footnotesize fast}{}
- \reactant[-90,attack]{\chemfig{>[:-20]C(<[:40])=[@{db}6]C(<[:-130])<[:-20]}}
- \anywhere{right=of attack}{
- \chemfig{@{Br1}\lewis{246,Br}-[@{b2}]@{Br2}\lewis{026,Br}}
- \elmove{db}{20:5mm}{Br1}{135:5mm}
- \elmove{b2}{-120:5mm}{Br2}{-120:5mm}
- }
- % to the left:
- \arrow[attack.-135,<=>,2]{$- {\ch{Br-}}$}{\footnotesize slow}
- \reactant[-135,carbenium_a]{\vflipnext\chemfig{-[:-30]\chembelow{C}{\fscrp}(-[:30])-[6]C(<[:-150])(<:[:-100])-[:-30]\lewis{137,Br}}}
- \anywhere{below=of carbenium_a}{\footnotesize carbenium ion}
- \arrow[,<<=>]{}{}
- \reactant[,bromonium]{\chemfig{>:[:-60]C?(<[:160])-[6]C(<[:-110])(<:[:-150])-[:30]\lewis{17,Br}?-[4,.5,,,draw=none]{\fscrp}}}
- \anywhere{below=of bromonium,,yshift=.35em}{\footnotesize bromonium ion}
- % to the right:
- \arrow[attack.-45,<=>,2]{\footnotesize slow}{$- {\ch{Br-}}$}
- \reactant[-45,carbenium_b]{\chemfig{-[:-30]\chemabove{C}{\fscrp}(-[:30])-[6]C(<:[:-150])(<[:-100])-[:-30]\lewis{157,Br}}}
- \anywhere{below=of carbenium_b}{\footnotesize carbenium ion}
- \arrow[left,<<=>]{}{}
- \mCsetup{reset}
-\end{rxnscheme}
-
-\begin{beispiel}[code only]
- \begin{rxnscheme}{Electrophilic Addition}
- \setarrowlength{3em}
- \reactant{\chemfig{>[:-20]C(<[:40])=[6]C(<[:-130])<[:-20]}}
- \chemand[,plus]
- \reactant{\chemfig{\lewis{246,Br}-\lewis{026,Br}}}
- \arrow[plus.-90,<=>]{\footnotesize fast}{}
- \reactant[-90,attack]{\chemfig{>[:-20]C(<[:40])=[@{db}6]C(<[:-130])<[:-20]}}
- \anywhere{right=of attack}{
- \chemfig{@{Br1}\lewis{246,Br}-[@{b2}]@{Br2}\lewis{026,Br}}
- \elmove{db}{20:5mm}{Br1}{135:5mm}
- \elmove{b2}{-120:5mm}{Br2}{-120:5mm}
- }
- % to the left:
- \arrow[attack.-135,<=>,2]{$- {\ch{Br-}}$}{\footnotesize slow}
- \reactant[-135,carbenium_a]{\vflipnext\chemfig{-[:-30]\chembelow{C}{\fscrp}(-[:30])-[6]C(<[:-150])(<:[:-100])-[:-30]\lewis{137,Br}}}
- \anywhere{below=of carbenium_a}{\footnotesize carbenium ion}
- \arrow[,<<=>]{}{}
- \reactant[,bromonium]{\chemfig{>:[:-60]C?(<[:160])-[6]C(<[:-110])(<:[:-150])-[:30]\lewis{17,Br}?-[4,.5,,,draw=none]{\fscrp}}}
- \anywhere{below=of bromonium,,yshift=.35em}{\footnotesize bromonium ion}
- % to the right:
- \arrow[attack.-45,<=>,2]{\footnotesize slow}{$- {\ch{Br-}}$}
- \reactant[-45,carbenium_b]{\chemfig{-[:-30]\chemabove{C}{\fscrp}(-[:30])-[6]C(<:[:-150])(<[:-100])-[:-30]\lewis{157,Br}}}
- \anywhere{below=of carbenium_b}{\footnotesize carbenium ion}
- \arrow[left,<<=>]{}{}
- \mCsetup{reset}
- \end{rxnscheme}
-\end{beispiel}
-
-\section{Activation of Fatty Acids}\label{sec:activation_fatty_acid}
-\begin{rxnscheme}{Activation of Fatty Acids}
- \reactant[,ATP]{\chemfig{\chemabove{O}{\hspace*{-5mm}\fscrm}-P(=[2]O)(-[6]\chembelow{O}{\fscrm})-O-P(=[2]O)(-[6]\chembelow{O}{\fscrm})-@{O1}O-[@{b1}]@{P}P(=[2]O)(-[6]\chembelow{O}{\fscrm})-O-CH_2-[6,1.5,1](-[6,.5])(-[:20,1.3]O?[a])<[7](-[2,.5])(-[6]OH)-[,,,,line width=3pt](-[2,.5])(-[6]OH)>[1]?[a](-[6,.5])-[2,1.5]N?[b]-[:18]([:30]*6(-N=-N=(-NH_2)-=))-[:90]-[:162]N=^[:-126]?[b]}}
- \anywhere{below right=of ATP,,xshift=-4em,yshift=3em}{\bfseries ATP}
- \arrow[below,,1.5]{}{\chemname{\chemfig{R-C(=[:-60]O)-[:60]@{O2}O-[@{b2}]H}}{fatty acid}}
- \branch[on chain=going below]{
- \reactant[,pyrophosphat]{
- \chemfig{\chemabove{O}{\hspace*{-5mm}\fscrm}-P(=[2]O)(-[6]\chembelow{O}{\fscrm})-O-P(=[2]O)(-[6]\chembelow{O}{\fscrm})-\chemabove{O}{\hspace*{5mm}\fscrm}}
- \elmove{b1}{100:1cm}{O1}{90:5mm}
- \elmove{O2}{135:1cm}{P}{-135:1cm}
- \elmove{b2}{-90:5mm}{O2}{-60:5mm}
- }
- \anywhere{below=of pyrophosphat}{pyrophosphate PP$_\text{i}$}
- \chemand
- \reactant[,acyl-amp]{\chemfig{R-@{C}C(=[:-60]O)-[@{b3}:60]@{O3}O-P(-[6]\chembelow{O}{\fscrm})(=[2]O)-O-CH_2-[6,,1,1]r|ibos|e-[2,1.05,3,1]a|denine}}
- \anywhere{below=of acyl-amp}{\bfseries acyl-AMP}
- }
- \branch[on chain=going below,,xshift=-8em]{
- \arrow[below]{\ch{H2O}}{}
- \reactant[below,Pi]{2~\chemfig{HO-P(=[2]O)(-[6]\chembelow{O}{\fscrm})-O}}
- \anywhere{below right=of Pi}{P$_\text{i}$}
- }
- \branch[,,xshift=4em]{
- \arrow[below,-+>]{\chemfig{CoA-@{S}S-[@{b4}:-60]H}}{AMP}
- \reactant[below,acyl-SCoA]{
- \chemfig{R-C(=[:-60]O)-[:60]S-CoA}
- \elmove{S}{45:3cm}{C}{-120:2cm}
- \elmove{b3}{135:5mm}{O3}{110:7mm}
- \elmove{b4}{-120:7mm}{S}{-100:5mm}
- }
- \anywhere{below=of acyl-SCoA}{acyl-SCoA}
- }
-\end{rxnscheme}
-
-\begin{beispiel}[code only]
- \begin{rxnscheme}{Activation of Fatty Acids}
- \reactant[,ATP]{\chemfig{\chemabove{O}{\hspace*{-5mm}\fscrm}-P(=[2]O)(-[6]\chembelow{O}{\fscrm})-O-P(=[2]O)(-[6]\chembelow{O}{\fscrm})-@{O1}O-[@{b1}]@{P}P(=[2]O)(-[6]\chembelow{O}{\fscrm})-O-CH_2-[6,1.5,1](-[6,.5])(-[:20,1.3]O?[a])<[7](-[2,.5])(-[6]OH)-[,,,,line width=3pt](-[2,.5])(-[6]OH)>[1]?[a](-[6,.5])-[2,1.5]N?[b]-[:18]([:30]*6(-N=-N=(-NH_2)-=))-[:90]-[:162]N=^[:-126]?[b]}}
- \anywhere{below right=of ATP,,xshift=-4em,yshift=3em}{\bfseries ATP}
- \arrow[below,,1.5]{\chemname{\chemfig{R-C(=[:-60]O)-[:60]@{O2}O-[@{b2}]H}}{fatty acid}}{}
- \branch[on chain=going below]{
- \reactant[,pyrophosphat]{
- \chemfig{\chemabove{O}{\hspace*{-5mm}\fscrm}-P(=[2]O)(-[6]\chembelow{O}{\fscrm})-O-P(=[2]O)(-[6]\chembelow{O}{\fscrm})-\chemabove{O}{\hspace*{5mm}\fscrm}}
- \elmove{b1}{100:1cm}{O1}{90:5mm}
- \elmove{O2}{135:1cm}{P}{-135:1cm}
- \elmove{b2}{-90:5mm}{O2}{-60:5mm}
- }
- \anywhere{below=of pyrophosphat}{pyrophosphate PP$_\text{i}$}
- \chemand
- \reactant[,acyl-amp]{\chemfig{R-@{C}C(=[:-60]O)-[@{b3}:60]@{O3}O-P(-[6]\chembelow{O}{\fscrm})(=[2]O)-O-CH_2-[6,,1,1]r|ibos|e-[2,1.05,3,1]A|denine}}
- \anywhere{below=of acyl-amp}{\bfseries acyl-AMP}
- }
- \branch[on chain=going below,,xshift=-8em]{
- \arrow[below]{\ch{H2O}}{}
- \reactant[below,Pi]{2~\chemfig{HO-P(=[2]O)(-[6]\chembelow{O}{\fscrm})-O}}
- \anywhere{below right=of Pi}{P$_\text{i}$}
- }
- \branch[,,xshift=4em]{
- \arrow[below,-+>]{\chemfig{CoA-@{S}S-[@{b4}:-60]H}}{AMP}
- \reactant[below,acyl-SCoA]{
- \chemfig{R-C(=[:-60]O)-[:60]S-CoA}
- \elmove{S}{135:2cm}{C}{-135:1cm}
- \elmove{b3}{-45:5mm}{O3}{-70:7mm}
- \elmove{b4}{-120:7mm}{S}{-100:5mm}
- }
- \anywhere{below=of acyl-SCoA}{acyl-SCoA}
- }
- \end{rxnscheme}
-\end{beispiel}
-
-\section{Change the layout with \TikZ}\label{sec:tikz_layout}
-\begin{rxnscheme}{Change the layout with \TikZ}
- \colorlet{mCgreen}{green!50!gray}
- \colorlet{mCblue}{cyan!50!gray}
- \colorlet{mCred}{magenta!50!gray}
- \tikzset{reactant/.style={draw=#1,fill=#1!10,minimum width=.8\textwidth,inner sep=1em,rounded corners}}
- \mCsetup{arrowlength=3em,arrowline=very thick}
- \reactant[,,reactant=mCgreen]{
- \chemname{\chemfig{Alky|l--[6](-[4,,,2]Acy|l)-[6]-O-P(=[2]O)(-[6]O|\mch)-O-[:-30]-[:30]-[:-30]NH_2}}{\bfseries Phosphatidylethanolamine}
- }
- \arrow[below]{\iupac{\N\-acyl\|transferase}}{}
- \reactant[below,,reactant=mCblue]{
- \chemname{\chemfig{Alky|l--[6](-[4,,,2]Acy|l)-[6]-O-P(=[2]O)(-[6]O|\mch)-O-[:-30]-[:30]-[:-30]\chembelow{N}{H}-[:30](=[2]O)-[:-30]-[:30]-[:-30]-[:30]=_-[:-30]-[:30]=_-[:-60]-[::-60]=_[:180]-[::-30]-[::60]=_[:180]-[::-30]-[::60]-[::-60]-[::60]-[6]}}{\bfseries\iupac{\N\-arachidonoyl\-PE}}
- }
- \arrow[below]{Phospholipase D}{}
- \reactant[below,,reactant=mCred]{
- \chemname{\chemfig{HO-[:-30]-[:30]-[:-30]\chembelow{N}{H}-[:30](=[2]O)-[:-30]-[:30]-[:-30]-[:30]=_-[:-30]-[:30]=_-[:-60]-[::-60]=_[:180]-[::-30]-[::60]=_[:180]-[::-30]-[::60]-[::-60]-[::60]-[6]}}{\bfseries Anandamide}
- }
- \mCsetup{reset}
-\end{rxnscheme}
-
-This is an example for the usage of the \code{<tikz>} option. Please take a closer
-look at lines \numlist{5;7;11;15}.
-\begin{beispiel}[code only]
- \begin{rxnscheme}{Change the layout with \TikZ}
- \colorlet{mCgreen}{green!50!gray}
- \colorlet{mCblue}{cyan!50!gray}
- \colorlet{mCred}{magenta!50!gray}
- !!\tikzset{reactant/.style={draw=#1,fill=#1!10,minimum width=.8\textwidth,inner sep=1em,rounded corners}}!!
- \mCsetup{arrowlength=3em,arrowline=very thick}
- \reactant[,,!!reactant=mCgreen!!]{
- \chemname{\chemfig{Alky|l--[6](-[4,,,2]Acy|l)-[6]-O-P(=[2]O)(-[6]O|\mch)-O-[:-30]-[:30]-[:-30]NH_2}}{\bfseries Phosphatidylethanolamine}
- }
- \arrow[below]{}{\iupac{\N-acyl\|transferase}}
- \reactant[below,,!!reactant=mCblue!!]{
- \chemname{\chemfig{Alky|l--[6](-[4,,,2]Acy|l)-[6]-O-P(=[2]O)(-[6]O|\mch)-O-[:-30]-[:30]-[:-30]\chembelow{N}{H}-[:30](=[2]O)-[:-30]-[:30]-[:-30]-[:30]=_-[:-30]-[:30]=_-[:-60] -[::-60]=_[:180]-[::-30]-[::60]=_[:180]-[::-30]- [::60]-[::-60]-[::60]-[6]}}{\bfseries\iupac{\N\-arachidonoyl\-PE}}
- }
- \arrow[below]{}{Phospholipase D}
- \reactant[below,,!!reactant=mCred!!]{
- \chemname{\chemfig{HO-[:-30]-[:30]-[:-30]\chembelow{N}{H}-[:30](=[2]O)-[:-30]-[:30]-[:-30]-[:30]=_-[:-30]-[:30]=_-[:-60] -[::-60]=_[:180]-[::-30]-[::60]=_[:180]-[::-30]- [::60]-[::-60]-[::60]-[6]}}{\bfseries Anandamide}
- }
- \mCsetup{reset}
- \end{rxnscheme}
-\end{beispiel}
-
-\section{Claisen-Kondensation}
-\begin{rxnscheme}{Claisen-Kondensation}
- \colorlet{mCred}{red!50!gray}
- \setatomsep{1.5em}
- % Ergebnis:
- \branch[,one,draw=mCred,fill=mCred!10,rounded corners,inner sep=.5em]{
- \reactant{\chemfig{[:30]-(=[2]O)-[:-30]O--[:-30]}}
- \chemand
- \reactant{\chemfig{[:30]-(=[2]O)-[:-30]O--[:-30]}}
- \arrow[,,2]{\ch{NaOEt}, \ch{EtOH}}{}
- \reactant{\chemfig{[:30]-(=[2]O)-[:-30]-(=[2]O)-[:-30]O--[:-30]}}
- }
- % Mechanismus:
- \branch[-90,,xshift=-13.5em]{
- \arrow[-90,<<=>]{\ch{^-OEt}}{}
- }
- \mesomeric[-90,two,xshift=4.5em]{
- \reactant{\chemfig{[:30](-[:150,.3,,,draw=none]@{C1}\fscrm)-(=[2]O)-[:-30]O--[:-30]}}
- \marrow
- \reactant{\chemfig{[:30]=(-[2]O|\mch)-[:-30]O--[:-30]}}
- }
- \chemand
- \reactant{\ch{EtOH}}
- \branch[two.-90,three,xshift=-5.5em]{
- \arrow[-90,<=>,,,both]{\chemfig[][scale=.7]{[:30]-@{C2}(=[@{b1}2]O@{O1})-[:-30]O--[:-30]}}{}
- }
- \reactant[three.-90]{\chemfig{-(-[@{b2}2]@{O2}O|\mch)(-[6]-[:-30](=[6]O)-[:30]O-[:-30]-[:30])-[@{b3}]@{O3}O-[:30]-[:-30]}}
- \arrow[,<=>]{}{}
- \reactant[,four]{\chemfig{[:30]-(=[2]O)-[:-30]@{C3}(-[:-120]H)(-[@{b4}:-60]H@{H})-(=[2]O)-[:-30]O--[:-30]}}
- \chemand
- \reactant{\chemfig{\mch @{O4}OEt}}
- \arrow[four.-90]{}{}
- \mesomeric[-90]{
- \reactant{\chemfig{[:30]-(=[2]O)-[:-30]=(-[2]O|\mch)-[:-30]O--[:-30]}}
- \marrow
- \reactant{\chemfig{[:30]-(=[2]O)-[:-30](-[6,.3,,,draw=none]\fscrm)-(=[2]O)-[:-30]O--[:-30]}}
- \marrow
- \reactant{\chemfig{[:30]-(-[2]O|\mch)=[:-30]-(=[2]O)-[:-30]O--[:-30]}}
- }
- \arrow[-90]{\Hpl, \ch{H2O}}{}
- \reactant[-90]{\chemfig{[:30]-(=[2]O)-[:-30]-(=[2]O)-[:-30]O--[:-30]}}
- \anywhere{one.0}{
- \elmove{C1}{-100:2cm}{C2}{-90:2cm}
- \elmove{b1}{10:5mm}{O1}{0:5mm}
- \elmove{O2}{180:5mm}{b2}{180:5mm}
- \elmove{b3}{80:5mm}{O3}{90:5mm}
- \elmove{b4}{0:5mm}{C3}{0:7mm}
- \elmove{O4}{-90:1cm}{H}{-45:1cm}
- }
-\end{rxnscheme}
-
-\begin{beispiel}[code only]
- \begin{rxnscheme}{Claisen-Kondensation}
- \colorlet{mCred}{red!50!gray}
- \setatomsep{1.5em}
- % Ergebnis:
- \branch[,one,draw=mCred,fill=mCred!10,rounded corners,inner sep=.5em]{
- \reactant{\chemfig{[:30]-(=[2]O)-[:-30]O--[:-30]}}
- \chemand
- \reactant{\chemfig{[:30]-(=[2]O)-[:-30]O--[:-30]}}
- \arrow[,,2]{\ch{NaOEt}, \ch{EtOH}}{}
- \reactant{\chemfig{[:30]-(=[2]O)-[:-30]-(=[2]O)-[:-30]O--[:-30]}}
- }
- % Mechanismus:
- \branch[-90,,xshift=-13.5em]{
- \arrow[-90,<=>]{\ch{^-OEt}}{}
- }
- \mesomeric[-90,two,xshift=4.5em]{
- \reactant{\chemfig{[:30](-[:150,.3,,,draw=none]@{C1}\fscrm)-(=[2]O)-[:-30]O--[:-30]}}
- \marrow
- \reactant{\chemfig{[:30]=(-[2]O|\mch)-[:-30]O--[:-30]}}
- }
- \chemand
- \reactant{\ch{EtOH}}
- \branch[two.-90,three,xshift=-5.5em]{
- \arrow[-90,<=>,,,both]{\chemfig[][scale=.7]{[:30]-@{C2}(=[@{b1}2]O@{O1})-[:-30]O--[:-30]}}{}
- }
- \reactant[three.-90]{\chemfig{-(-[@{b2}2]@{O2}O|\mch)(-[6]-[:-30](=[6]O)-[:30]O-[:-30]-[:30])-[@{b3}]@{O3}O-[:30]-[:-30]}}
- \arrow[,<=>]{}{}
- \reactant[,four]{\chemfig{[:30]-(=[2]O)-[:-30]@{C3}(-[:-120]H)(-[@{b4}:-60]H@{H})-(=[2]O)-[:-30]O--[:-30]}}
- \chemand
- \reactant{\chemfig{\mch @{O4}OEt}}
- \arrow[four.-90]{}{}
- \mesomeric[-90]{
- \reactant{\chemfig{[:30]-(=[2]O)-[:-30]=(-[2]O|\mch)-[:-30]O--[:-30]}}
- \marrow
- \reactant{\chemfig{[:30]-(=[2]O)-[:-30](-[6,.3,,,draw=none]\fscrm)-(=[2]O)-[:-30]O--[:-30]}}
- \marrow
- \reactant{\chemfig{[:30]-(-[2]O|\mch)=[:-30]-(=[2]O)-[:-30]O--[:-30]}}
- }
- \arrow[-90]{\Hpl, \ch{H2O}}{}
- \reactant[-90]{\chemfig{[:30]-(=[2]O)-[:-30]-(=[2]O)-[:-30]O--[:-30]}}
- \anywhere{one.0}{
- \elmove{C1}{-100:2cm}{C2}{-90:2cm}
- \elmove{b1}{10:5mm}{O1}{0:5mm}
- \elmove{O2}{180:5mm}{b2}{180:5mm}
- \elmove{b3}{80:5mm}{O3}{90:5mm}
- \elmove{b4}{0:5mm}{C3}{0:7mm}
- \elmove{O4}{-90:1cm}{H}{-45:1cm}
- }
- \end{rxnscheme}
-\end{beispiel}
-
-
-\section{Extensive Synthesis}\label{sec:tikzsynthese}
-As last example we can create extensive syntheses, using the \cmd{merge} command.
-\begin{rxnscheme}[,,,.8]{Extensive Synthesis}
- \setatomsep{1.5em}
- \branch[,start_left]{
- \reactant{\chemfig{=_[::30]-[::-60]-[::60](-[::-60])(-[::120])-[::0]OH}}
- \arrow[below]{\ch{HBr}}{}
- \reactant[below]{\chemfig{Br-[::30]-[::-60]=_[::60](-[::-60])-[::60]}}
- }
- \branch[right=of start_left,start_center,yshift=1em]{
- \reactant{\chemname{\chemfig[][scale=.8]{**6(--(-SO_2Cl)---(-)-)}}{tosyle chloride}}
- \arrow[below]{\ch{NaOH}}{\ch{Zn}}
- \reactant[below]{\chemfig[][scale=.8]{**6(--(-SO_2Na)---(-)-)}}
- }
- \branch[right=of start_center,start_right,xshift=3em,yshift=-10em]{
- \reactant{\chemname{\chemfig{-[::30](-[::60])=_[::-60]-[::60]COOH}}{\iupac{3\-methyl\-2\-butenoic acid}}}
- \arrow[below]{\ch{CH3OH}}{}
- \reactant[below]{\chemfig{-[::30](-[::60])=_[::-60]-[::60]CO_2CH_3}}
- }
- \branch[below=of start_left,target_one,xshift=5em,yshift=-5em]{
- \reactant{\chemfig[][scale=.8]{**6(--(-SO_2-[:30]-[::-60]=_[::60](-[::60])-[::-60])---(-)-)}}
- }
- \branch[below=of target_one,target_two,xshift=6em,yshift=-6em]{
- \mesomeric{\chemfig[][scale=.8]{-[::30](-[::60])=^[::-60]-[::60](-[::60]S(=[::90]O)(=[::-90]O)-[::0]**6(---(-)---))-[::-60](-[::0])(-[::-120])-[::60](-[::60,.5,,,white]\fminus)-[::-60]CO_2CH_3}}
- \arrow[below,,.5]{}{}
- \arrow[below,,.5]{\ch{KOH}}{}
- \reactant[below]{\chemname{\chemfig{-[::-30](-[::-60])=^[::60]>[::-60](-[::90,1.2])-[::30,1.2](-[::120,1.2](-[::-60])-[::0])<:[::-30]COOH}}{\iupac{\trans\-chrysanthemum acid}}}
- }
- \merge{target_one}{start_left}{start_center}
- \merge[\ch{NaOCH3}]{target_two}{target_one}{start_right}
-\end{rxnscheme}
-\begin{beispiel}[code only]
- \begin{rxnscheme}[,,,.8]{Extensive Synthesis}
- \setatomsep{1.5em}
- \branch[,start_left]{
- \reactant{\chemfig{=_[::30]-[::-60]-[::60](-[::-60])(-[::120])-[::0]OH}}
- \arrow[below]{\ch{HBr}}{}
- \reactant[below]{\chemfig{Br-[::30]-[::-60]=_[::60](-[::-60])-[::60]}}
- }
- \branch[right=of start_left,start_center,yshift=1em]{
- \reactant{\chemname{\chemfig[][scale=.8]{**6(--(-SO_2Cl)---(-)-)}}{tosyle chloride}}
- \arrow[below]{\ch{NaOH}}{\ch{Zn}}
- \reactant[below]{\chemfig[][scale=.8]{**6(--(-SO_2Na)---(-)-)}}
- }
- \branch[right=of start_center,start_right,xshift=3em,yshift=-10em]{
- \reactant{\chemname{\chemfig{-[::30](-[::60])=_[::-60]-[::60]COOH}}{\iupac{3\-methyl\-2\-butenoic acid}}}
- \arrow[below]{\ch{CH3OH}}{}
- \reactant[below]{\chemfig{-[::30](-[::60])=_[::-60]-[::60]CO_2CH_3}}
- }
- \branch[below=of start_left,target_one,xshift=5em,yshift=-5em]{
- \reactant{\chemfig[][scale=.8]{**6(--(-SO_2-[:30]-[::-60]=_[::60](-[::60])-[::-60])---(-)-)}}
- }
- \branch[below=of target_one,target_two,xshift=6em,yshift=-6em]{
- \mesomeric{\chemfig[][scale=.8]{-[::30](-[::60])=^[::-60]-[::60](-[::60]S(=[::90]O)(=[::-90]O)-[::0]**6(---(-)---))-[::-60](-[::0])(-[::-120])-[::60](-[::60,.5,,,white]\fminus)-[::-60]CO_2CH_3}}
- \arrow[below,,.5]{}{}
- \arrow[below,,.5]{\ch{KOH}}{}
- \reactant[below]{\chemname{\chemfig{-[::-30](-[::-60])=^[::60]>[::-60](-[::90,1.2])-[::30,1.2](-[::120,1.2](-[::-60])-[::0])<:[::-30]COOH}}{\iupac{\trans\-chrysanthemum acid}}
- }
- \merge{target_one}{start_left}{start_center}
- \merge[\ch{NaOCH3}]{target_two}{target_one}{start_right}
- \end{rxnscheme}
-\end{beispiel}
-
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/mychemistry/mychemistry.sty b/macros/latex/contrib/mychemistry/mychemistry.sty
deleted file mode 100644
index 089ac37b85..0000000000
--- a/macros/latex/contrib/mychemistry/mychemistry.sty
+++ /dev/null
@@ -1,1557 +0,0 @@
-% --------------------------------------------------------------------------
-% the MYCHEMISTRY package
-%
-% create reaction schemes with LaTeX and chemfig
-%
-% --------------------------------------------------------------------------
-% Clemens Niederberger
-% Web: https://www.bitbucket.org/cgnieder/mychemistry
-% E-Mail: contact@mychemistry.eu
-% --------------------------------------------------------------------------
-% If you have any ideas, questions, suggestions or bugs to report, please
-% feel free to contact me.
-% --------------------------------------------------------------------------
-% Copyright 2011--2012 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 mychemistrysty, mychemistry_en.tex,
-% README and the derived file mychemistry_en.pdf.
-% --------------------------------------------------------------------------
-\ProvidesPackage{mychemistry}[2012/12/19 v1.99b create reaction schemes with LaTeX and chemfig]
-\RequirePackage{etoolbox,float,xkeyval,chemfig,chemmacros}
-\usetikzlibrary{
- arrows,
- positioning,
- decorations.pathmorphing,
- shapes,
- calc,
- matrix,
- chains,
- scopes,
- intersections}
-
-% --------------------------------------------------------------------------
-% Tools
-\newif\ifmCh@strict
-\newif\ifmCh@draft
-\def\mCh@if@strict{%
- \ifmCh@strict\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
-
-\def\mCh@error#1#2{%
- \mCh@if@strict
- {\PackageError{mychemistry}{#1}{#2}}
- {\PackageWarning{mychemistry}{#1}{#2}}}
-
-\def\mCh@strict@error#1#2{%
- \begingroup
- \mCh@stricttrue
- \mCh@error{#1}{#2}%
- \endgroup}
-
-\def\mCh@def#1{%
- \ifdef{#1}{%
- \mCh@strict@error{already defined}{mychemistry tries to define \string#1 but
- it seems it is already defined. Please contact the author.}%
- \@gobble
- }{\def#1}}
-
-% "variablen" definieren
-\mCh@def\mCh@strip@bs{\expandafter\@gobble\string}
-\mCh@def\mCh@ifis@variable#1#2#3{%
- \ifcsdef{mCh@variable@\mCh@strip@bs#1}
- {#2}
- {\mCh@error{variable \string#1 undefined}{}#3}}
-\mCh@def\mCh@new@variable#1{%
- \ifcsdef{mCh@variable@\mCh@strip@bs#1}
- {\mCh@error{variable \string#1 already defined. I'm doing nothing!}{}}
- {\csdef{mCh@variable@\mCh@strip@bs#1}{}\csdef{mCh@\mCh@strip@bs#1}{}}}
-\mCh@def\mCh@set@variable#1#2{%
- \mCh@ifis@variable{#1}{\csdef{mCh@\mCh@strip@bs#1}{#2}}{\@gobble}}
-\mCh@def\mCh@xset@variable#1#2{%
- \mCh@ifis@variable{#1}{\csedef{mCh@\mCh@strip@bs#1}{#2}}{\@gobble}}
-\mCh@def\mCh@clear@variable#1{%
- \mCh@ifis@variable{#1}{\csdef{mCh@\mCh@strip@bs#1}{}}{}}
-\mCh@def\mCh@let@variable#1#2{%
- \mCh@ifis@variable{#1}{\mCh@ifis@variable{#2}
- {\csletcs{mCh@\mCh@strip@bs#1}{mCh@\mCh@strip@bs#2}}{}}{}}
-\mCh@def\mCh@empty@variable#1{%
- \mCh@ifis@variable{#1}{\cslet{mCh@\mCh@strip@bs#1}\@empty}{}}
-\mCh@def\mCh@ifeq@variable#1#2#3#4{%
- \mCh@ifis@variable{#1}{\mCh@ifis@variable{#2}
- {\ifcsequal{mCh@\mCh@strip@bs#1}{mCh@\mCh@strip@bs#2}{#3}{#4}}{}}{}}
-\mCh@def\mCh@ifempty@variable#1#2#3{%
- \ifcsequal{mCh@\mCh@strip@bs#1}{@empty}{#2}{#3}}
-
-\mCh@new@variable\true
-\mCh@new@variable\false
-
-\mCh@set@variable\true{true}
-\mCh@set@variable\false{false}
-
-% Optional Argument Analysis
-% is #2 part of #1? (inspired by \CF@if@instr by Christian Tellechea)
-\mCh@def\mCh@if@instr#1#2{%
- \def\mCh@if@instr@i##1#2##2\@nil{%
- \ifstrempty{##2}{\@secondoftwo}{\@firstoftwo}}%
- \mCh@if@instr@i#1\@@nil#2\@nil
-}
-
-\mCh@new@variable\firstarg
-\mCh@new@variable\secondarg
-\mCh@new@variable\thirdarg
-
-% Am ersten , splitten, #1 in #3 speichern, #2 in \mCh@remainargs
-% (das Makro ist eine Kopie von \CF@analyze@movearg in chemfig.tex von Christian Tellechea)
-\mCh@def\mCh@splitfirst#1,#2\@nil#3{%
- \def#3{#1}\def\mCh@remainargs{#2}%
-}
-
-% ein durch , in 3 Teile getrenntes Argument splitten
-% (das Makro ist eine Abwandlung von \CF@analyze@movearg in chemfig.tex von Christian Tellechea)
-\mCh@def\mCh@splitarg#1{%
- \mCh@if@instr{#1}{,}
- {\expandafter\mCh@splitfirst#1\@nil\mCh@firstarg}
- {\mCh@set@variable\firstarg{#1}}%
- \expandafter\mCh@if@instr\expandafter{\mCh@remainargs}{,}
- {\expandafter\mCh@splitfirst\mCh@remainargs\@nil\mCh@secondarg}{\expandafter\mCh@set@variable\expandafter\secondarg\expandafter{\mCh@remainargs}}%
- \ifx\mCh@remainargs\mCh@secondarg
- \mCh@empty@variable\thirdarg
- \else
- \expandafter\mCh@set@variable\expandafter\thirdarg\expandafter{\mCh@remainargs}%
- \fi
-}
-
-% --------------------------------------------------------------------------
-% options
-\define@key[MC]{mychemistry.sty}{strict}{\mCh@stricttrue}
-\DeclareOptionX[MC]{strict}{\mCh@stricttrue}
-
-\define@key[MC]{mychemistry.sty}{draft}{\mCh@stricttrue\mCh@drafttrue}
-\DeclareOptionX[MC]{draft}{\mCh@stricttrue\mCh@drafttrue}
-
-\define@key[MC]{mychemistry.sty}{final}{\mCh@strictfalse\mCh@draftfalse}
-\DeclareOptionX[MC]{final}{\mCh@strictfalse\mCh@draftfalse}
-
-\mCh@new@variable\rs@placement
-\mCh@new@variable\rs@currentplacement
-
-\mCh@set@variable\rs@placement{hpt}
-\mCh@let@variable\rs@currentplacement\rs@placement
-
-\define@key[MC]{mychemistry.sty}{placement}{%
- \mCh@set@variable\rs@placement{#1}}
-
-\ProcessOptionsX[MC]
-
-% --------------------------------------------------------------------------
-% language settings
-\mCh@new@variable\rs@name
-\mCh@set@variable\rs@name{Reaction scheme}
-
-\RequirePackage{translations}
-\NewTranslation{English} {reaction-scheme-(caption-title)} {Reaction scheme}
-\NewTranslation{French} {reaction-scheme-(caption-title)} {Sch\'{e}ma r\'{e}actionnel}
-\NewTranslation{German} {reaction-scheme-(caption-title)} {Reaktionsschema}
-\NewTranslation{Italian} {reaction-scheme-(caption-title)} {Reazione Scheme}
-\NewTranslation{Spanish} {reaction-scheme-(caption-title)} {Esquema de Reacci\'{o}n}
-\mCh@set@variable\rs@name{\GetTranslation{reaction-scheme-(caption-title)}}
-
-
-% --------------------------------------------------------------------------
-% Direction Analysis
-% Richtungen:
-\mCh@new@variable\r
-\mCh@new@variable\ar
-\mCh@new@variable\a
-\mCh@new@variable\al
-\mCh@new@variable\l
-\mCh@new@variable\br
-\mCh@new@variable\b
-\mCh@new@variable\bl
-
-\mCh@set@variable\r{right}
-\mCh@set@variable\ar{above right}
-\mCh@set@variable\a{above}
-\mCh@set@variable\al{above left}
-\mCh@set@variable\l{left}
-\mCh@set@variable\br{below right}
-\mCh@set@variable\b{below}
-\mCh@set@variable\bl{below left}
-
-\mCh@new@variable\vert@i
-\mCh@new@variable\vert@ii
-\mCh@new@variable\vert@iii
-
-\mCh@set@variable\vert@i{90}
-\mCh@set@variable\vert@ii{-90}
-\mCh@set@variable\vert@iii{270}
-
-% Richtung in Bezug auf node oder nicht?
-\mCh@new@variable\direction
-
-\mCh@def\mCh@split@angle#1.#2\@nil#3{%
- \def#3{#1}\mCh@set@variable\direction{#2}}
-\mCh@def\mCh@wowo@node#1{%
- \mCh@if@instr{#1}{.}
- {\expandafter\mCh@split@angle#1\@nil\mCh@referred@node}
- {\mCh@set@variable\direction{#1}}}
-
-% Winkel bestimmen:
-\mCh@new@variable\angle
-\mCh@new@variable\referred@node
-
-\mCh@def\mCh@analyze@angle#1{%
- \mCh@empty@variable\angle
- \mCh@empty@variable\referred@node
- \mCh@wowo@node{#1}%
- \mCh@ifeq@variable\direction\r {\mCh@set@variable\angle{0}}{}%
- \mCh@ifeq@variable\direction\ar {\mCh@set@variable\angle{45}}{}%
- \mCh@ifeq@variable\direction\a {\mCh@set@variable\angle{90}}{}%
- \mCh@ifeq@variable\direction\al {\mCh@set@variable\angle{135}}{}%
- \mCh@ifeq@variable\direction\l {\mCh@set@variable\angle{180}}{}%
- \mCh@ifeq@variable\direction\bl {\mCh@set@variable\angle{225}}{}%
- \mCh@ifeq@variable\direction\b {\mCh@set@variable\angle{270}}{}%
- \mCh@ifeq@variable\direction\br {\mCh@set@variable\angle{315}}{}%
- \mCh@ifempty@variable\angle{%
- \pgfmathparse{\mCh@direction <0 ? int(\mCh@direction+360) : int(\mCh@direction) }%
- \mCh@xset@variable\angle{\pgfmathresult}%
- }{}%
-}
-% --------------------------------------------------------------------------
-% PFEILE
-% \arrow[<pos>,<type>,<length factor>,<name>,both,<tikz>]{<above>}{<below>}
-% Pfeiltypen:
-\mCh@new@variable\arrow@type@def
-\mCh@new@variable\arrow@type@eqv
-\mCh@new@variable\arrow@type@back
-\mCh@new@variable\arrow@type@eq
-\mCh@new@variable\arrow@type@eqq
-\mCh@new@variable\arrow@type@eeq
-\mCh@new@variable\arrow@type@not
-\mCh@new@variable\arrow@type@pm
-
-\mCh@set@variable\arrow@type@def{->}
-\mCh@set@variable\arrow@type@eqv{<->}
-\mCh@set@variable\arrow@type@back{<-}
-\mCh@set@variable\arrow@type@eq{<=>}
-\mCh@set@variable\arrow@type@eqq{<=>>}
-\mCh@set@variable\arrow@type@eeq{<<=>}
-\mCh@set@variable\arrow@type@not{-|>}
-\mCh@set@variable\arrow@type@pm{-+>}
-
-% Voreinstellungen
-% Pfeillänge
-\mCh@new@variable\arrow@length@def
-\mCh@new@variable\arrow@length
-\mCh@new@variable\arrow@factor
-
-\mCh@set@variable\arrow@length@def{4em}
-\let\mCh@arrow@length\mCh@arrow@length@def
-\mCh@set@variable\arrow@factor{1}
-
-\newrobustcmd\setarrowlength[1]{%
- \ifblank{#1}
- {\mCh@let@variable\arrow@length\arrow@length@def}
- {\mCh@set@variable\arrow@length{#1}}}
-
-% Label-Abstand
-\mCh@new@variable\arrow@label@dist@def
-\mCh@new@variable\arrow@label@dist
-
-\mCh@set@variable\arrow@label@dist@def{.2em}
-\mCh@let@variable\arrow@label@dist\arrow@label@dist@def
-
-\newrobustcmd\setarrowlabel[1]{%
- \ifblank{#1}
- {\mCh@let@variable\arrow@label@dist\arrow@label@dist@def}
- {\mCh@set@variable\arrow@label@dist{#1}}}
-
-% Pfeildicke
-\mCh@new@variable\arrow@linethickness@default
-\mCh@new@variable\arrow@linethickness
-
-\mCh@set@variable\arrow@linethickness@default{semithick}
-\mCh@let@variable\arrow@linethickness\arrow@linethickness@default
-
-\newrobustcmd\setarrowline[1]{%
- \ifblank{#1}
- {\mCh@let@variable\arrow@linethickness\arrow@linethickness@default}
- {\mCh@set@variable\arrow@linethickness{#1}}}
-
-% Winkel untersuchen, um Label richtig anzubringen
-\mCh@new@variable\beta
-\mCh@new@variable\arrow@label@anchor@up
-\mCh@new@variable\arrow@label@anchor@down
-\mCh@new@variable\arrow@label@anchor@add
-\mCh@new@variable\arrow@label@anchor@sub
-\newcount\mCh@alpha
-
-\mCh@def\mCh@evaluate@angle#1{
- \mCh@alpha=#1
- \pgfmathparse{cos(\mCh@alpha) > 0}
- \ifnum\pgfmathresult=1
- \mCh@set@variable\beta{#1}%
- \mCh@set@variable\arrow@label@anchor@up{south}%
- \mCh@set@variable\arrow@label@anchor@down{north}%
- \ifnum\mCh@alpha<180
- \mCh@set@variable\arrow@label@anchor@add{east}%
- \mCh@set@variable\arrow@label@anchor@sub{south}%
- \else
- \mCh@set@variable\arrow@label@anchor@add{south}%
- \mCh@set@variable\arrow@label@anchor@sub{west}%
- \fi
- \else
- \pgfmathparse{cos(\mCh@alpha) == 0}%
- \ifnum\pgfmathresult=1
- \mCh@set@variable\beta{0}%
- \ifnum\mCh@alpha=90
- \mCh@set@variable\arrow@label@anchor@up{east}%
- \mCh@set@variable\arrow@label@anchor@down{west}%
- \mCh@set@variable\arrow@label@anchor@add{east}%
- \mCh@set@variable\arrow@label@anchor@sub{east}%
- \else
- \mCh@set@variable\arrow@label@anchor@up{west}%
- \mCh@set@variable\arrow@label@anchor@down{east}%
- \mCh@set@variable\arrow@label@anchor@add{west}%
- \mCh@set@variable\arrow@label@anchor@sub{west}%
- \fi
- \else
- \mCh@set@variable\arrow@label@anchor@up{north}%
- \mCh@set@variable\arrow@label@anchor@down{south}%
- \ifnum\mCh@alpha=180
- \mCh@set@variable\beta{180-#1}%
- \mCh@set@variable\arrow@label@anchor@add{north}%
- \mCh@set@variable\arrow@label@anchor@sub{north}%
- \fi
- \ifnum\mCh@alpha>180
- \mCh@set@variable\beta{180+#1}%
- \mCh@set@variable\arrow@label@anchor@add{west}%
- \mCh@set@variable\arrow@label@anchor@sub{north}%
- \fi
- \ifnum\mCh@alpha<180
- \mCh@set@variable\beta{180+#1}%
- \mCh@set@variable\arrow@label@anchor@add{north}%
- \mCh@set@variable\arrow@label@anchor@sub{east}%
- \fi
- \fi
- \fi
-}
-
-% Maße der Nodes der Pfeilargumente bestimmen, größere später an Pfeil weitergeben
-\mCh@new@variable\arrow@both
-\mCh@set@variable\arrow@both{both}
-
-\newlength{\mCh@height@A}
-\newlength{\mCh@height@B}
-\newlength{\mCh@arrow@label@height}
-\newlength{\mCh@width@A}
-\newlength{\mCh@width@B}
-\newlength{\mCh@arrow@label@width}
-
-\mCh@def\mCh@savenode{%
- \global\let\mCh@minx=\pgfpositionnodelaterminx
- \global\let\mCh@maxx=\pgfpositionnodelatermaxx
- \global\let\mCh@miny=\pgfpositionnodelaterminy
- \global\let\mCh@maxy=\pgfpositionnodelatermaxy
-}
-
-% der nächste Befehl benötigt pgf v2.10!
-\mCh@def\mCh@largernode#1#2{%
- \ifdef\pgfpositionnodelater{%
- \pgfpositionnodelater{\mCh@savenode}%
- \node{#1};
- \deflength{\mCh@width@A}{\mCh@maxx-\mCh@minx}%
- \deflength{\mCh@height@A}{\mCh@maxy-\mCh@miny}%
- \node{#2};
- \deflength{\mCh@width@B}{\mCh@maxx-\mCh@minx}%
- \deflength{\mCh@height@B}{\mCh@maxy-\mCh@miny}%
- \pgfmathsetlength{\mCh@arrow@label@width}{max(\mCh@width@A,\mCh@width@B)}%
- \pgfmathsetlength{\mCh@arrow@label@height}{max(\mCh@height@A,\mCh@height@B)}%
- \global\mCh@arrow@label@width=\mCh@arrow@label@width
- \global\mCh@arrow@label@height=\mCh@arrow@label@height
- }{%
- \mCh@error{%
- The command \string\pgfpositionnodelater\space is undefined. Make sure,
- you have installed the latest version of pgf}{}%
- }%
-}
-
-% Pfeil zeichnen:
-\newrobustcmd\mCh@arrow[3][]{%
- \ifstrempty{#1}
- {\mCh@arrow@i}{\mCh@arrow@ii[#1]}
- {#2}{#3}}
-
-\mCh@def\mCh@arrow@i#1#2{%
- \node[on chain=going {at=(\tikzchainprevious.0)},
- minimum size=0,
- inner sep=3pt,
- outer sep=0,
- anchor=180,
- shift=(0:.5*\mCh@rxn@node@distance)] (@mCh@arrow@start){};
- \node[on chain=going {at=(\tikzchainprevious.0),
- shift=($(0:.5*\mCh@arrow@factor*\mCh@arrow@length)$)},
- minimum size=0,
- inner sep=3pt,
- outer sep=0] (@mCh@arrow@end){};
- \draw[-mCtip,\mCh@arrow@linethickness]
- let \n1={0}, \n2={180}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](mCh@arrow@center){}
- ++($(0:\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\node\expandafter[\mCh@arrow@uplabel@visible,
- rotate=0,
- anchor=south,
- inner sep=0]
- at ($(mCh@arrow@center)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#1};
- \expandafter\node\expandafter[\mCh@arrow@downlabel@visible,
- rotate=0,
- anchor=north,
- inner sep=0]
- at ($(mCh@arrow@center)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#2};
-}
-
-\mCh@new@variable\arrow@plusminus
-\mCh@new@variable\anchor
-\mCh@new@variable\arrow@tikz
-\mCh@new@variable\arrow@type@valid
-\mCh@new@variable\arrow@type
-\mCh@new@variable\arrow@type@actual
-\mCh@new@variable\arrow@name
-
-\mCh@def\mCh@arrow@ii[#1]#2#3{%
- \mCh@empty@variable\arrow@plusminus
- \mCh@empty@variable\arrow@type
- \let\mCh@remainargs\@empty
- \mCh@splitarg{#1}%
- \mCh@ifempty@variable\firstarg{% erste Option: Richtung
- \mCh@set@variable\angle{0}%
- \mCh@set@variable\beta{0}%
- \mCh@set@variable\arrow@label@anchor@up{south}%
- \mCh@set@variable\arrow@label@anchor@down{north}%
- \mCh@set@variable\arrow@label@anchor@add{south}%
- \mCh@set@variable\arrow@label@anchor@sub{south}%
- \mCh@set@variable\anchor{180}%
- \mCh@empty@variable\referred@node
- }{%
- \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}%
- \mCh@set@variable\anchor{180+\mCh@angle}%
- \mCh@evaluate@angle{\mCh@angle}%
- }
- \mCh@ifempty@variable\referred@node{%
- \mCh@set@variable\referred@node{\tikzchainprevious}%
- }{}%
- \mCh@ifempty@variable\secondarg{}{% zweite Option: Typ
- \mCh@set@variable\arrow@type{true}
- \mCh@let@variable\arrow@type@actual\secondarg
- }%
- \let\mCh@remainargs\@empty%
- \expandafter\mCh@splitarg\expandafter{\mCh@thirdarg}%
- \mCh@ifempty@variable\firstarg{% dritte Option: Längenfaktor
- \mCh@set@variable\arrow@factor{1}%
- }{%
- \mCh@xset@variable\arrow@factor{\mCh@firstarg}%
- }%
- \mCh@ifempty@variable\secondarg{% vierte Option: Name
- \mCh@set@variable\arrow@name{mCh@arrow@center}%
- }{%
- \mCh@xset@variable\arrow@name{\mCh@secondarg}%
- }%
- \let\mCh@remainargs\@empty%
- \expandafter\mCh@splitarg\expandafter{\mCh@thirdarg}%
- \mCh@ifeq@variable\arrow@both\firstarg% fünfte Option: both
- {{\mCh@largernode{#2}{#3}}}%
- {%
- \deflength{\mCh@arrow@label@width}{0pt}%
- \deflength{\mCh@arrow@label@height}{0pt}%
- }%
- \mCh@ifempty@variable\secondarg{% sechste Option: tikz
- \mCh@empty@variable\arrow@tikz
- }{%
- \mCh@xset@variable\arrow@tikz{\mCh@secondarg,\mCh@thirdarg}%
- }%
- \node[on chain=going {at=(\mCh@referred@node.\mCh@angle)},
- minimum size=0,
- inner sep=3pt,
- outer sep=0,
- anchor=\mCh@anchor,
- shift=(\mCh@angle:.5*\mCh@rxn@node@distance)] (@mCh@arrow@start){};
- \node[on chain=going {at=(\tikzchainprevious.\mCh@angle),
- shift=($(\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$)},
- minimum size=0,
- inner sep=3pt,
- outer sep=0] (@mCh@arrow@end){};
- \mCh@ifeq@variable\arrow@type\true{%
- \mCh@let@variable\arrow@type@valid\false
- \mCh@ifeq@variable\arrow@type@actual\arrow@type@eq{% <=>
- \mCh@let@variable\arrow@type@valid\true
- \expandafter\draw\expandafter[\mCh@arrow@tikz,
- -mChtip,
- \mCh@arrow@linethickness]
- let \n1={20+\mCh@angle}, \n2={160+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](mCh@arrow@center@up){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\draw\expandafter[\mCh@arrow@tikz,
- mChtip-,
- \mCh@arrow@linethickness]
- let \n1={-20+\mCh@angle}, \n2={200+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](mCh@arrow@center@down){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \draw[draw=none]
- let \n1={\mCh@angle}, \n2={180+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\node\expandafter[\mCh@arrow@uplabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@up,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,
- inner sep=0]
- at ($(mCh@arrow@center@up)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2};
- \expandafter\node[\expandafter\mCh@arrow@downlabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@down,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,
- inner sep=0]
- at ($(mCh@arrow@center@down)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3};
- }{}%
- \mCh@ifeq@variable\arrow@type@actual\arrow@type@eqq{% <=>>
- \mCh@let@variable\arrow@type@valid\true
- \expandafter\draw\expandafter[\mCh@arrow@tikz,
- -mChtip,
- \mCh@arrow@linethickness]
- let \n1={20+\mCh@angle}, \n2={160+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](mCh@arrow@center@up){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\draw\expandafter[\mCh@arrow@tikz,
- mChtip-,
- \mCh@arrow@linethickness]
- let \n1={-20+\mCh@angle}
- in ($(@mCh@arrow@start.\n1)+(\mCh@angle:.25*\mCh@arrow@factor*\mCh@arrow@length)$)
- --node[pos=.5,inner sep=0](mCh@arrow@center@down){}
- ++($(\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$);
- \draw[draw=none] let \n1={\mCh@angle}, \n2={180+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\node\expandafter[\mCh@arrow@uplabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@up,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,
- inner sep=0]
- at ($(mCh@arrow@center@up)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2};
- \expandafter\node\expandafter[\mCh@arrow@downlabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@down,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,
- inner sep=0]
- at ($(mCh@arrow@center@down)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3};
- }{}%
- \mCh@ifeq@variable\arrow@type@actual\arrow@type@eeq{% <<=>
- \mCh@let@variable\arrow@type@valid\true
- \expandafter\draw\expandafter[\mCh@arrow@tikz,
- -mChtip,
- \mCh@arrow@linethickness]
- let \n1={20+\mCh@angle}, \n2={160+\mCh@angle}
- in ($(@mCh@arrow@start.\n1)+(\mCh@angle:.25*\mCh@arrow@factor*\mCh@arrow@length)$)
- --node[pos=.5,inner sep=0](mCh@arrow@center@up){}
- ++($(\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\draw\expandafter[\mCh@arrow@tikz,
- mChtip-,
- \mCh@arrow@linethickness]
- let \n1={-20+\mCh@angle}, \n2={200+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](mCh@arrow@center@down){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \draw[draw=none]
- let \n1={\mCh@angle}, \n2={180+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\node\expandafter[\mCh@arrow@uplabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@up,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,
- inner sep=0]
- at ($(mCh@arrow@center@up)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2};
- \expandafter\node\expandafter[\mCh@arrow@downlabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@down,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,
- inner sep=0]
- at ($(mCh@arrow@center@down)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3};
- }{}%
- \mCh@ifeq@variable\arrow@type@actual\arrow@type@def{% ->
- \mCh@let@variable\arrow@type@valid\true
- \expandafter\draw\expandafter[\mCh@arrow@tikz,
- -mCtip,
- \mCh@arrow@linethickness,
- \mCh@arrow@tikz]
- let \n1={\mCh@angle}, \n2={180+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\node\expandafter[\mCh@arrow@uplabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@up,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height]
- at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2};
- \expandafter\node\expandafter[\mCh@arrow@downlabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@down,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height]
- at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3};
- }{}%
- \mCh@ifeq@variable\arrow@type@actual\arrow@type@eqv{% <->
- \mCh@let@variable\arrow@type@valid\true
- \expandafter\draw\expandafter[\mCh@arrow@tikz,
- mCtip-mCtip,
- \mCh@arrow@linethickness]
- let \n1={\mCh@angle}, \n2={180+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\node\expandafter[\mCh@arrow@uplabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@up,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,inner sep=0]
- at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2};
- \expandafter\node\expandafter[\mCh@arrow@downlabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@down,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,inner sep=0]
- at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3};
- }{}%
- \mCh@ifeq@variable\arrow@type@actual\arrow@type@back{% <-
- \mCh@let@variable\arrow@type@valid\true
- \expandafter\draw\expandafter[\mCh@arrow@tikz,
- mCtip-,
- \mCh@arrow@linethickness]
- let \n1={\mCh@angle}, \n2={180+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\node\expandafter[\mCh@arrow@uplabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@up,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,
- inner sep=0] at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2};
- \expandafter\node\expandafter[\mCh@arrow@downlabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@down,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,
- inner sep=0]
- at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3};
- }{}%
- \mCh@ifeq@variable\arrow@type@actual\arrow@type@not{% -|>
- \mCh@let@variable\arrow@type@valid\true
- \expandafter\draw\expandafter[\mCh@arrow@tikz,
- -mCtip,
- \mCh@arrow@linethickness]
- let \n1={\mCh@angle}, \n2={180+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\node\expandafter[\mCh@arrow@uplabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@up,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,
- inner sep=0] at ($(\mCh@arrow@name)!.8em!90:(@mCh@arrow@end)$){#2};
- \expandafter\node\expandafter[\mCh@arrow@downlabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@down,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,inner sep=0]
- at ($(\mCh@arrow@name)!.8em!-90:(@mCh@arrow@end)$){#3};
- \draw ($(mCh@arrow@center)!.6em!-110:(@mCh@arrow@end)+(\mCh@angle:.1em)$)
- --($(mCh@arrow@center)!.6em!70:(@mCh@arrow@end)+(\mCh@angle:.1em)$);
- \draw ($(mCh@arrow@center)!.6em!-110:(@mCh@arrow@end)+(180+\mCh@angle:.1em)$)
- --($(mCh@arrow@center)!.6em!70:(@mCh@arrow@end)+(180+\mCh@angle:.1em)$);
- }{}%
- \mCh@ifeq@variable\arrow@type@actual\arrow@type@pm{% -+>
- \mCh@let@variable\arrow@type@valid\true
- \mCh@let@variable\arrow@plusminus\true
- \draw[-mCtip,\mCh@arrow@linethickness]
- let \n1={\mCh@angle}, \n2={180+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- }{}%
- \mCh@ifeq@variable\arrow@type@valid\false
- {\mCh@error{Unknown arrow type `\mCh@arrow@type@actual'}{}}{}%
- }{% default: ->
- \expandafter\draw\expandafter[\mCh@arrow@tikz,
- -mCtip,
- \mCh@arrow@linethickness]
- let \n1={\mCh@angle}, \n2={180+\mCh@angle}
- in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){}
- ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$);
- \expandafter\node\expandafter[\mCh@arrow@uplabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@up,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,inner sep=0]
- at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2};
- \expandafter\node\expandafter[\mCh@arrow@downlabel@visible,
- rotate=\mCh@beta,
- anchor=\mCh@arrow@label@anchor@down,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height,inner sep=0]
- at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3};
- }%
- \mCh@ifempty@variable\arrow@plusminus{}{%
- \ifstrempty{#2}{}{%
- \draw (\mCh@arrow@name.base) edge[bend left]
- ++(${0.6667}*(146.3+\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$);
- \node[anchor=\mCh@arrow@label@anchor@add,
- inner sep=\mCh@arrow@label@dist,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height]
- at ($(\mCh@arrow@name.base)+{0.6667}*(146.3+\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$) {#2};
- }%
- \ifstrempty{#3}{}{%
- \draw (\mCh@arrow@name.base) edge[bend right,-mCtip]
- ++(${0.6667}*(33.7+\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$);
- \node[anchor=\mCh@arrow@label@anchor@sub,
- inner sep=\mCh@arrow@label@dist,
- minimum width=\mCh@arrow@label@width,
- minimum height=\mCh@arrow@label@height]
- at ($(\mCh@arrow@name.base)+{0.6667}*(33.7+\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$) {#3};
- }%
- }%
- \mCh@set@variable\arrow@factor{1}%
-}
-
-% eigene Pfeilspitze ------------------------------------------------------------------ %
-\pgfarrowsdeclare{mCtip}{mCtip}
- {%
- \arrowsize=0.2pt
- \advance\arrowsize by .5\pgflinewidth
- \pgfarrowsleftextend{-4\arrowsize-.5\pgflinewidth}%
- \pgfarrowsrightextend{.5\pgflinewidth}%
- }
- {%
- \pgfsetdash{}{0pt}% do not dash
- \pgfsetroundjoin% fix join
- \pgfsetroundcap% fix cap
- \pgfpathmoveto{\pgfpointorigin}%
- \pgfpathlineto{\pgfpoint{-3pt}{1pt}}%
- \pgfpathlineto{\pgfpoint{-1.5pt}{0pt}}%
- \pgfpathlineto{\pgfpoint{-3pt}{-1pt}}%
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}%
- \pgfusepathqfillstroke
- }
-
-\pgfarrowsdeclare{mChtip}{mChtip}
- {%
- \arrowsize=0.2pt
- \advance\arrowsize by .5\pgflinewidth
- \pgfarrowsleftextend{-4\arrowsize-.5\pgflinewidth}%
- \pgfarrowsrightextend{.5\pgflinewidth}%
- }
- {%
- \pgfsetdash{}{0pt}% do not dash
- \pgfsetroundjoin% fix join
- \pgfsetroundcap% fix cap
- \pgfpathmoveto{\pgfpoint{0pt}{0pt}}%
- \pgfpathlineto{\pgfpoint{-3pt}{1pt}}%
- \pgfpathlineto{\pgfpoint{-1.5pt}{0pt}}%
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}%
- \pgfusepathqfillstroke
- }
-
-% --------------------------------------------------------------------------
-% MERGE
-% \merge[<label>,<pos>,<length>]{<target>}{<start a>}{<start b>}
-\mCh@new@variable\merge@length
-\mCh@new@variable\merge@length@default
-\mCh@new@variable\merge@length@value
-\mCh@new@variable\merge@arg
-\mCh@new@variable\merge@to
-\mCh@new@variable\merge@from@one
-\mCh@new@variable\merge@from@two
-
-\mCh@set@variable\merge@length@default{3em}
-\mCh@let@variable\merge@length@value\merge@length@default
-
-% Basisbefehle
-\mCh@def\mCh@merge@right{%
- \draw[mCtip-,\mCh@arrow@linethickness]
- ($(\mCh@merge@to.west)+(-\mCh@rxn@node@distance,0)$)
- --node[midway,above,yshift=.1em]{\mCh@merge@arg}
- ++(-\mCh@merge@length,0) node(crossing) {};
- \draw[\mCh@arrow@linethickness]
- ($(\mCh@merge@from@one.east)+(\mCh@rxn@node@distance,0)$) -| (crossing.base);
- \draw[\mCh@arrow@linethickness]
- ($(\mCh@merge@from@two.east)+(\mCh@rxn@node@distance,0)$) -| (crossing.base);
-}
-
-\mCh@def\mCh@merge@above{%
- \draw[mCtip-,\mCh@arrow@linethickness]
- ($(\mCh@merge@to.south)+(0,-\mCh@rxn@node@distance)$)
- --node[midway,right,xshift=.1em]{\mCh@merge@arg}
- ++(0,-\mCh@merge@length) node(crossing) {};
- \draw[\mCh@arrow@linethickness]
- (crossing.base) -| ($(\mCh@merge@from@one.north)+(0,\mCh@rxn@node@distance)$);
- \draw[\mCh@arrow@linethickness]
- (crossing.base) -| ($(\mCh@merge@from@two.north)+(0,\mCh@rxn@node@distance)$);
-}
-
-\mCh@def\mCh@merge@left{%
- \draw[mCtip-,\mCh@arrow@linethickness]
- ($(\mCh@merge@to.east)+(\mCh@rxn@node@distance,0)$)
- --node[midway,above,yshift=.1em]{\mCh@merge@arg}
- ++(\mCh@merge@length,0) node(crossing) {};
- \draw[\mCh@arrow@linethickness]
- ($(\mCh@merge@from@one.west)+(-\mCh@rxn@node@distance,0)$) -| (crossing.base);
- \draw[\mCh@arrow@linethickness]
- ($(\mCh@merge@from@two.west)+(-\mCh@rxn@node@distance,0)$) -| (crossing.base);
-}
-
-\mCh@def\mCh@merge@below{%
- \draw[mCtip-,\mCh@arrow@linethickness]
- ($(\mCh@merge@to.north)+(0,\mCh@rxn@node@distance)$)
- --node[midway,right,xshift=.1em]{\mCh@merge@arg}
- ++(0,\mCh@merge@length) node(crossing) {};
- \draw[\mCh@arrow@linethickness]
- (crossing.base) -| ($(\mCh@merge@from@one.south)+(0,-\mCh@rxn@node@distance)$);
- \draw[\mCh@arrow@linethickness]
- (crossing.base) -| ($(\mCh@merge@from@two.south)+(0,-\mCh@rxn@node@distance)$);
-}
-
-% eigentlicher Befehl ----------------------------------------------------------------- %
-\newrobustcmd\mCh@merge[4][]{%
- \ifblank{#1}
- {\mCh@merge@i}{\mCh@merge@ii[#1]}
- {#2}{#3}{#4}}
-
-\mCh@def\mCh@merge@i#1#2#3{%
- \mCh@let@variable\merge@length\merge@length@value
- \mCh@empty@variable\merge@arg
- \mCh@set@variable\merge@to{#1}%
- \mCh@set@variable\merge@from@one{#2}%
- \mCh@set@variable\merge@from@two{#3}%
- \mCh@merge@below
-}
-
-\mCh@def\mCh@merge@ii[#1]#2#3#4{%
- \let\mCh@remainargs\@empty
- \mCh@splitarg{#1}%
- \mCh@ifempty@variable\firstarg
- {\mCh@empty@variable\merge@arg}
- {\mCh@let@variable\merge@arg\firstarg}%
- \mCh@ifempty@variable\thirdarg
- {\mCh@let@variable\merge@length\merge@length@value}
- {\mCh@set@variable\merge@length{\mCh@thirdarg}}%
- \mCh@set@variable\merge@to{#2}%
- \mCh@set@variable\merge@from@one{#3}%
- \mCh@set@variable\merge@from@two{#4}%
- \mCh@ifempty@variable\secondarg
- {\mCh@merge@below}
- {\csuse{mCh@merge@\mCh@secondarg}}%
-}
-
-\newrobustcmd\setmergelength[1]{%
- \ifblank{#1}
- {\mCh@let@variable\merge@length@value\merge@length@default}
- {\mCh@set@variable\merge@length@value{#1}}}
-
-% --------------------------------------------------------------------------
-% REAKTIONSSCHEMA
-\newlength\mCh@rxn@node@distance@default
-\newlength\mCh@rxn@node@distance
-
-\deflength\mCh@rxn@node@distance@default{1em}
-\deflength\mCh@rxn@node@distance{\mCh@rxn@node@distance@default}
-
-\newrobustcmd\setrcndist[1]{%
- \ifblank{#1}
- {\deflength\mCh@rxn@node@distance{\mCh@rxn@node@distance@default}}
- {\deflength\mCh@rxn@node@distance{#1}}}
-
-% Schema
-% \begin{rxnscheme}[<label>,<placement>,<align>,<scale factor>,<name>]{<caption>}
-\mCh@new@variable\rs@scale
-\mCh@new@variable\rs@currentscale
-
-\mCh@set@variable\rs@scale{1.0}
-\mCh@set@variable\rs@currentscale{\mCh@rs@scale}
-
-\newrobustcmd\setschemename[1]{%
- \mCh@set@variable\rs@name{#1}}
-
-\mCh@new@variable\rs@caption
-\mCh@new@variable\rs@label
-\mCh@new@variable\rs@currentlabel
-\mCh@new@variable\rs@align
-\mCh@new@variable\rs@right
-\mCh@new@variable\rs@center
-\mCh@new@variable\rs@left
-
-\mCh@let@variable\rs@currentlabel\rs@label
-\mCh@set@variable\rs@align{center}
-\mCh@set@variable\rs@right{right}
-\mCh@set@variable\rs@center{center}
-\mCh@set@variable\rs@left{left}
-
-\newrobustcmd\setschemealign[1]{%
- \ifblank{#1}
- {\mCh@set@variable\rs@align{center}}
- {\mCh@set@variable\rs@align{#1}}}
-
-% Gleitumgebung
-\floatstyle{ruled}
-\newfloat{rxnfloat}{\mCh@rs@currentplacement}{rxnscheme}
-\floatname{rxnfloat}{\mCh@rs@name}% Name ändern
-
-% eigentliche Umgebung:
-\newrobustcmd\mCh@rxnscheme[2][]{%
- \ifblank{#1}
- {\mCh@rxnscheme@i}
- {\mCh@empty@variable\rs@currentlabel\mCh@rxnscheme@ii[#1]}%
- {#2}}
-
-\mCh@def\mCh@rxnscheme@ii[#1]#2{% [<label>,<placement>,<align>,<scale>,<name>]
- \let\mCh@remainargs\@empty
- \mCh@splitarg{#1}%
- \mCh@ifempty@variable\firstarg% erste Option
- {\mCh@empty@variable\rs@currentlabel}
- {\mCh@let@variable\rs@currentlabel\firstarg}%
- \mCh@ifempty@variable\secondarg% zweite Option
- {\mCh@let@variable\rs@currentplacement\rs@placement}
- {\mCh@let@variable\rs@currentplacement\secondarg}%
- \let\mCh@remainargs\@empty
- \expandafter\mCh@splitarg\expandafter{\mCh@thirdarg}%
- \mCh@ifempty@variable\firstarg% dritte Option
- {\mCh@set@variable\rs@align{center}}
- {\mCh@let@variable\rs@align\firstarg}%
- \mCh@ifempty@variable\secondarg% vierte Option
- {\mCh@set@variable\rs@currentscale{1}}
- {\mCh@let@variable\rs@currentscale\secondarg}%
- \mCh@ifempty@variable\thirdarg{}% fünfte Option
- {\mCh@let@variable\rs@name\thirdarg}%
- \mCh@rxnscheme@i{#2}%
-}
-
-\mCh@def\mCh@scheme@enable{%
- \let\arrow\mCh@arrow
- \let\reactant\mCh@reactant
- \let\mesomeric\mCh@mesomeric
- \let\transition\mCh@transition
- \let\anywhere\mCh@anywhere
- \let\dummy\mCh@dummy
- \let\branch\mCh@branch
- \let\chemand\mCh@chemand
- \let\merge\mCh@merge
-% \let\elmove\mCh@elmove
-}
-
-\mCh@def\mCh@scheme@disable{%
- \let\arrow\relax
- \let\reactant\relax
- \let\mesomeric\relax
- \let\transition\relax
- \let\anywhere\relax
- \let\dummy\relax
- \let\branch\relax
- \let\chemand\relax
- \let\merge\relax
-% \let\elmove\relax
-}
-
-\mCh@def\mCh@rxnscheme@i#1{%
- \mCh@scheme@enable
- \mCh@set@variable\rs@caption{#1}%
- \rxnfloat
- \mCh@ifeq@variable\rs@align\rs@center{\centering}{}%
- \mCh@ifeq@variable\rs@align\rs@left{\raggedright}{}%
- \mCh@ifeq@variable\rs@align\rs@right{\raggedleft}{}%
- \mCh@atomsize\mCh@bondlength\mCh@bondshape
- \tikzpicture[
- every picture/.style={scale=\mCh@rs@currentscale},
- start chain,
- node distance=\mCh@rxn@node@distance,
- inner sep=0pt,
- outer sep=0pt]
- \mCh@dummy
-}
-
-\newenvironment{rxnscheme}{\mCh@rxnscheme}{%
- \endtikzpicture
- \caption{\mCh@rs@caption}%
- \mCh@ifempty@variable\rs@currentlabel{}
- {\label{\mCh@rs@currentlabel}}%
- \endrxnfloat
- \mCh@scheme@disable
-}
-
-% ----------------------------------------------------------------------------
-% einfache Reaktion
-% \begin{rxn}[<align>,<scalefactor>]
-\mCh@new@variable\reaction@scale
-\mCh@new@variable\reaction@align
-
-\mCh@set@variable\reaction@scale{1.0}
-\mCh@set@variable\reaction@align{center}
-
-\newrobustcmd\setrxnalign[1]{%
- \ifblank{#1}
- {\mCh@set@variable\reaction@align{center}}
- {\mCh@set@variable\reaction@align{#1}}}
-
-\mCh@new@variable\reaction@right
-\mCh@new@variable\reaction@center
-\mCh@new@variable\reaction@left
-
-\mCh@set@variable\reaction@right{right}
-\mCh@set@variable\reaction@center{center}
-\mCh@set@variable\reaction@left{left}
-
-\newrobustcmd\mCh@rxn[1][]{%
- \ifblank{#1}
- {\mCh@rxn@i}{\mCh@rxn@ii[#1]}}
-
-\mCh@def\mCh@rxn@ii[#1]{%
- \let\mCh@remainargs\@empty
- \mCh@splitarg{#1}%
- \mCh@ifempty@variable\firstarg
- {\mCh@let@variable\reaction@align\reaction@center}
- {\mCh@let@variable\reaction@align\firstarg}%
- \mCh@ifempty@variable\secondarg
- {\mCh@set@variable\reaction@scale{1}}
- {\mCh@let@variable\reaction@scale\secondarg}%
- \mCh@rxn@i
-}
-
-\mCh@def\mCh@rxn@i{%
- \mCh@scheme@enable
- \hspace*{0pt}%
- \mCh@ifeq@variable\reaction@align\reaction@center{\center}{}%
- \mCh@ifeq@variable\reaction@align\reaction@left{\flushleft}{}%
- \mCh@ifeq@variable\reaction@align\reaction@right{\flushright}{}%
- \mCh@bondlength\mCh@bondshape\mCh@atomsize
- \begin{tikzpicture}[
- every picture/.style={scale=\mCh@reaction@scale},
- start chain,
- node distance=\mCh@rxn@node@distance,
- inner sep=0pt,
- outer sep=0pt]
- \mCh@dummy
-}
-
-\newenvironment{rxn}{\mCh@rxn}{%
- \end{tikzpicture}%
- \mCh@ifeq@variable\reaction@align\reaction@center{\endcenter}{}%
- \mCh@ifeq@variable\reaction@align\reaction@left{\endflushleft}{}%
- \mCh@ifeq@variable\reaction@align\reaction@right{\endflushright}{}%
- \mCh@scheme@disable
-}
-
-% --------------------------------------------------------------------------
-% REAKTANDEN
-% Standardreaktand
-% \reactant[<pos>,<name>,<tikz>]{<something>}
-\def\mCh@argument@safe{\@makeother\#}
-
-\newrobustcmd\mCh@reactant[1][]{%
- \begingroup
- \mCh@argument@safe
- \ifblank{#1}
- {\mCh@reactant@i}
- {\mCh@reactant@ii[#1]}%
-}
-
-\mCh@def\mCh@reactant@i#1{%
- \expandafter\node\expandafter[%
- \mCh@reactant@visible,
- on chain=going {at=(\tikzchainprevious.0)},
- anchor=180,
- shift=(0:\mCh@rxn@node@distance)]{#1};
- \endgroup
-}
-
-\mCh@def\mCh@reactant@ii[#1]#2{%
- \let\mCh@remainargs\@empty\mCh@splitarg{#1}%
- \mCh@ifempty@variable\firstarg{% erste Option: <pos>, zweite Option: <name>, dritte Option: <tikz>
- \mCh@set@variable\angle{0}%
- \mCh@set@variable\anchor{180}%
- \mCh@empty@variable\referred@node
- }{%
- \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}%
- \mCh@set@variable\anchor{180+\mCh@angle}%
- }%
- \mCh@ifempty@variable\referred@node
- {\mCh@set@variable\referred@node{\tikzchainprevious}}{}%
- \expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[%
- \expandafter\mCh@thirdarg\expandafter,%
- \mCh@reactant@visible,
- on chain=going {at=(\mCh@referred@node.\mCh@angle)},
- anchor=\mCh@anchor,shift=(\mCh@angle:\mCh@rxn@node@distance)]
- (\mCh@secondarg){#2};
- \endgroup
-}
-
-% Mesomerie
-% \mesomeric[<pos>,<name>,<tikz>]{<something>}
-\newrobustcmd\mCh@mesomeric[1][]{%
- \begingroup
- \mCh@argument@safe
- \ifblank{#1}
- {\mCh@mesomeric@i}
- {\mCh@mesomeric@ii[#1]}%
-}
-
-\mCh@def\mCh@mesomeric@i#1{%
- \node[on chain=going {at=(\tikzchainprevious.0),
- shift=($(0:\mCh@rxn@node@distance)$)},
- anchor=180,shift=(0:\mCh@rxn@node@distance),
- inner sep=1pt,
- left delimiter={[},
- right delimiter={]}]
- {\tikzpicture[start branch]#1\endtikzpicture};
- \endgroup
-}
-
-\mCh@def\mCh@mesomeric@ii[#1]#2{%
- \let\mCh@remainargs\@empty
- \mCh@splitarg{#1}%
- \mCh@ifempty@variable\firstarg{% erste Option: <pos>, zweite Option: <name>, dritte Option: <tikz>
- \mCh@set@variable\angle{0}%
- \mCh@set@variable\anchor{180}%
- \mCh@empty@variable\referred@node
- }{%
- \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}%
- \mCh@set@variable\anchor{180+\mCh@angle}%
- }%
- \mCh@ifempty@variable\referred@node
- {\mCh@set@variable\referred@node{\tikzchainprevious}}{}%
- \expandafter\node\expandafter[\mCh@thirdarg,
- on chain=going {at=(\mCh@referred@node.\mCh@angle)},
- anchor=\mCh@anchor,
- shift=(\mCh@angle:\mCh@rxn@node@distance),
- inner sep=1pt,
- left delimiter={[},
- right delimiter={]}]
- (\mCh@secondarg){\tikzpicture[start branch]#2\endtikzpicture};
- \endgroup
-}
-
-% Mesomerie-Pfeil
-% \marrow[<pos>]
-\newrobustcmd\marrow[1][]{\arrow[#1,<->,.5]{}{}}
-
-% Anywhere
-% \anywhere{<pos>,<name>,<tikz>}{<something>}
-\mCh@new@variable\anywhere@positioning
-
-\newrobustcmd\mCh@anywhere[1]{%
- \begingroup
- \mCh@argument@safe
- \let\mCh@remainargs\@empty
- \mCh@splitarg{#1}% erste Option: <pos>, zweite Option: <name>, dritte Option: <tikz>
- \mCh@ifempty@variable\firstarg{%
- \mCh@error{\string\anywhere: positioning missing}{}%
- }{%
- \expandafter\mCh@if@instr\expandafter{\mCh@firstarg}{=}{%
- \mCh@xset@variable\anywhere@positioning{\mCh@firstarg}%
- }{%
- \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}%
- \mCh@set@variable\anchor{180+\mCh@angle}%
- \mCh@ifempty@variable\referred@node{%
- \mCh@error{You can't use `angle' to position \string\anywhere.
- You need to use `name.angle'}%
- }{%
- \mCh@set@variable\anywhere@positioning{%
- at=(\mCh@referred@node.\mCh@angle),anchor=\mCh@anchor}%
- }%
- }%
- }%
- \mCh@anywhere@i
-}
-
-\mCh@def\mCh@anywhere@i#1{%
- \expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[%
- \expandafter\mCh@thirdarg\expandafter,%
- \mCh@anywhere@positioning](\mCh@secondarg){#1};
- \endgroup
-}
-
-% Dummy
-% \dummy[<name>]
-\newrobustcmd\mCh@dummy[1][]{%
- \ifblank{#1}
- {\draw node[on chain,xshift=-\mCh@rxn@node@distance]{};}
- {\draw node[on chain,xshift=-\mCh@rxn@node@distance](#1){};}}
-
-% Uebergangszustand
-% \transition[<pos>,<name>,<tikz>]{<something>}
-\mCh@new@variable\transition@name
-
-\newrobustcmd\mCh@transition[1][]{%
- \begingroup
- \mCh@argument@safe
- \ifblank{#1}
- {\mCh@transition@i}
- {\mCh@transition@ii[#1]}%
-}
-
-\mCh@def\mCh@transition@i#1{%
- \expandafter\node\expandafter[\mCh@reactant@visible,
- on chain=going {at=(\tikzchainprevious.0)},
- anchor=180,
- shift=(0:\mCh@rxn@node@distance),
- anchor=180,
- inner sep=3pt,
- left delimiter={[},
- right delimiter={]}]
- (mCh@transition@name){#1};
- \node at ($(mCh@transition@name.north east)+(.7em,0)$)
- {$\transitionstatesymbol$};
- \endgroup
-}
-
-\mCh@def\mCh@transition@ii[#1]#2{%
- \let\mCh@remainargs\@empty
- \mCh@splitarg{#1}%
- \mCh@ifempty@variable\firstarg{% erste Option: <pos>
- \mCh@set@variable\angle{0}%
- \mCh@set@variable\anchor{180}%
- \mCh@empty@variable\referred@node
- }{%
- \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}%
- \mCh@set@variable\anchor{180+\mCh@angle}%
- }%
- \mCh@ifempty@variable\secondarg% zweite Option: <name>, dritte Option: <tikz>
- {\mCh@set@variable\transition@name{mCh@transition@name}}
- {\mCh@let@variable\transition@name\secondarg}%
- \mCh@ifempty@variable\referred@node
- {\mCh@set@variable\referred@node{\tikzchainprevious}}{}%
- \expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[%
- \mCh@reactant@visible\expandafter,%
- \mCh@thirdarg,
- on chain=going {at=(\mCh@referred@node.\mCh@angle)},
- anchor=\mCh@anchor,
- shift=(\mCh@angle:\mCh@rxn@node@distance),
- inner sep=3pt,
- left delimiter={[},
- right delimiter={]}]
- (\mCh@transition@name){#2};
- \node at ($(\mCh@transition@name.north east)+(.7em,0)$)
- {$\transitionstatesymbol$};
- \endgroup
-}
-
-% Abzweigung
-% \branch[<pos>,<name>,<tikz>]{<formulae>}
-% <pos>: default: on chain=going "right" (0°)
-% on chain=going <somewhere>
-% <somewhere>=of <name>
-% <angle> (sitzt auf der Kette)
-% <name>.<angle> (sitzt nicht auf der Kette)
-\mCh@new@variable\branch@positioning
-
-\newrobustcmd\mCh@branch[1][]{%
- \begingroup
- \mCh@argument@safe
- \ifblank{#1}
- {\mCh@branch@i}
- {\mCh@branch@ii[#1]}%
-}
-
-\mCh@def\mCh@branch@i{%
- \expandafter\mCh@set@variable\expandafter\branch@positioning\expandafter{\mCh@branch@visible,
- on chain=going {at=(\tikzchainprevious.0)},
- anchor=180,
- shift=(0:\mCh@rxn@node@distance)}%
- \mCh@empty@variable\secondarg
- \mCh@empty@variable\thirdarg
- \mCh@branch@iii}
-
-\mCh@def\mCh@branch@ii[#1]{%
- \let\mCh@remainargs\@empty
- \mCh@splitarg{#1}% erste Option: <pos>, zweite Option: <name>, dritte Option: <tikz>
- \mCh@ifempty@variable\firstarg{%
- \expandafter\mCh@set@variable\expandafter\branch@positioning\expandafter{\mCh@branch@visible,
- on chain=going {at=(\tikzchainprevious.0)},
- anchor=180,
- shift=(0:\mCh@rxn@node@distance)}%
- }{%
- \expandafter\mCh@if@instr\expandafter{\mCh@firstarg}{=}{%
- \mCh@xset@variable\branch@positioning{\mCh@branch@visible,\mCh@firstarg}%
- }{%
- \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}%
- \mCh@set@variable\anchor{180+\mCh@angle}%
- \mCh@ifempty@variable\referred@node{%
- \expandafter\mCh@set@variable\expandafter\branch@positioning\expandafter{\mCh@branch@visible,
- on chain=going {at=(\tikzchainprevious.\mCh@angle)},
- anchor=\mCh@anchor,
- shift=(\mCh@angle:\mCh@rxn@node@distance)}%
- }{%
- \expandafter\mCh@set@variable\expandafter\branch@positioning\expandafter{\mCh@branch@visible,
- at=(\mCh@referred@node.\mCh@angle),
- anchor=\mCh@anchor,
- shift=(\mCh@angle:\mCh@rxn@node@distance)}%
- }%
- }%
- }%
- \mCh@branch@iii}
-
-\mCh@def\mCh@branch@iii#1{%
- \expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[%
- \expandafter\mCh@branch@positioning\expandafter,%
- \mCh@thirdarg]
- (\mCh@secondarg){\tikzpicture[start branch]#1\endtikzpicture};
- \endgroup
-}%
-
-
-% --------------------------------------------------------------------------
-% Sonstiges
-% Elektronenverschiebungspfeile
-\mCh@new@variable\elmove@default@tikz
-\mCh@new@variable\elmove@tikz
-
-\tikzset{mCh@elmove/.style={->,red,shorten <=3pt,shorten >=1pt}}
-\mCh@set@variable\elmove@default@tikz{mCh@elmove}
-\mCh@let@variable\elmove@tikz\elmove@default@tikz
-
-\newrobustcmd\elmove[5][]{%
- \chemmove{
- \expandafter\draw\expandafter[\mCh@elmove@tikz,#1]
- (#2).. controls +(#3) and +(#5)..(#4);
- }}
-
-\newrobustcmd\setelmove[1]{%
- \ifblank{#1}
- {\mCh@let@variable\elmove@tikz\elmove@default@tikz}
- {\mCh@set@variable\elmove@tikz{#1}}}
-
-% Plus
-\newrobustcmd\mCh@chemand[1][]{%
- \ifblank{#1}
- {\reactant{\chemsign[0pt]{+}}}
- {\reactant[#1]{\chemsign[0pt]{+}}}}
-
-% --------------------------------------------------------------------------
-% Setup myChemistry
-% Bindungslänge
-\mCh@new@variable\bondlength@default
-\mCh@new@variable\bondlength
-
-\mCh@set@variable\bondlength@default{1.8em}
-\mCh@set@variable\bondlength{\setatomsep{\mCh@bondlength@default}}
-
-\newrobustcmd\setbondlength[1]{%
- \ifblank{#1}
- {\mCh@set@variable\bondlength{\setatomsep{\mCh@bondlength@default}}}
- {\mCh@set@variable\bondlength{\setatomsep{#1}}}}
-
-% Keilbindungen
-\mCh@new@variable\bondshape@one
-\mCh@new@variable\bondshape@two
-\mCh@new@variable\bondshape@three
-
-\mCh@set@variable\bondshape@one{3pt}
-\mCh@set@variable\bondshape@two{.5pt}
-\mCh@set@variable\bondshape@three{1pt}
-
-\newrobustcmd\setbondshape[3]{%
- \ifblank{#1}
- {\mCh@set@variable\bondshape@one{3pt}}
- {\mCh@set@variable\bondshape@one{#1}}%
- \ifblank{#2}
- {\mCh@set@variable\bondshape@two{.5pt}}
- {\mCh@set@variable\bondshape@two{#2}}%
- \ifblank{#3}
- {\mCh@set@variable\bondshape@three{1pt}}
- {\mCh@set@variable\bondshape@three{#3}}%
-}
-
-\mCh@new@variable\bondshape
-\mCh@set@variable\bondshape{%
- \setcrambond{\mCh@bondshape@one}{\mCh@bondshape@two}{\mCh@bondshape@three}}
-
-% Atomgröße
-\mCh@new@variable\atomsize@default
-\mCh@new@variable\atomsize
-
-\mCh@set@variable\atomsize@default{\small}
-\mCh@let@variable\atomsize\atomsize@default
-
-\newrobustcmd\setatomsize[1]{%
- \ifblank{#1}
- {\mCh@let@variable\atomsize\atomsize@default}
- {\mCh@set@variable\atomsize{#1}}}
-
-% allg. Setup
-\newrobustcmd\mCsetup[1]{\setkeys{mCh@setup}{#1}}
-
-\define@key{mCh@setup}{arrowlabel}[\mCh@arrow@label@dist@def]{%
- \setarrowlabel{#1}}
-\define@key{mCh@setup}{arrowlength}[\mCh@arrow@length@def]{%
- \setarrowlength{#1}}
-\define@key{mCh@setup}{arrowline}[\mCh@arrow@linethickness@default]{%
- \setarrowline{#1}}
-\define@key{mCh@setup}{atomsize}[\mCh@atomsize@default]{%
- \setatomsize{#1}}
-\define@key{mCh@setup}{bondlength}[\mCh@bondlength@default]{%
- \setbondlength{#1}}
-\define@key{mCh@setup}{rcndist}[\mCh@rxn@node@distance@default]{%
- \setrcndist{#1}}
-\define@key{mCh@setup}{rxnalign}[center]{%
- \setrxnalign{#1}}
-\define@key{mCh@setup}{schemealign}[center]{%
- \setschemealign{#1}}
-\define@key{mCh@setup}{align}[center]{%
- \setrxnalign{#1}
- \setschemealign{#1}}
-\define@key{mCh@setup}{mergelength}[\mCh@merge@length@default]{%
- \setmergelength{#1}}
-\define@key{mCh@setup}{elmove}[\mCh@elmove@default@tikz]{%
- \setelmove{#1}}
-\define@key{mCh@setup}{reset}[]{%
- \setarrowlabel{}%
- \setarrowlength{}%
- \setarrowline{}%
- \setmergelength{}%
- \setatomsize{}%
- \setbondlength{}%
- \setbondshape{}{}{}%
- \setrcndist{}%
- \setrxnalign{}%
- \setschemealign{}%
- \setelmove{}%
-}
-
-% --------------------------------------------------------------------------
-% NODES SICHTBAR/UNSICHTBAR MACHEN
-\mCh@new@variable\reactant@visible
-\mCh@new@variable\arrow@uplabel@visible
-\mCh@new@variable\arrow@downlabel@visible
-\mCh@new@variable\branch@visible
-
-\mCh@empty@variable\reactant@visible
-\mCh@empty@variable\arrow@uplabel@visible
-\mCh@empty@variable\arrow@downlabel@visible
-\mCh@empty@variable\branch@visible
-
-\newrobustcmd\makevisible{%
- \ifmCh@draft
- \mCh@set@variable\reactant@visible{draw=red!60,solid}%
- \mCh@set@variable\arrow@uplabel@visible{draw=green!60,solid}%
- \mCh@set@variable\arrow@downlabel@visible{draw=blue!60,solid}%
- \mCh@set@variable\branch@visible{draw=cyan,solid}%
- \fi
-}
-
-\newrobustcmd\makeinvisible{%
- \mCh@empty@variable\reactant@visible
- \mCh@empty@variable\arrow@uplabel@visible
- \mCh@empty@variable\arrow@downlabel@visible
- \mCh@empty@variable\branch@visible
-}
-
-\endinput
-
-% ----------------------------------------------------------------------------
-HISTORY:
-2011/02/24 version 1.0 - first release to CTAN
-2011/03/01 version 1.1 - package option `english' added
- - package key `placement' added
- - rxnscheme key `placement' added
- - package key `shade=boolean' changed into package
- option `shade'
- - package option `nochemexec' added, will prevent mC
- from loading chemexec
-2011/03/20 version 1.2 - license changed into LPPL 1.3 or later
- - package option `nocompounds' added, will prevent mC
- from loading chemcompounds
- - package option `chemstyle' added, will load chemstyle
- - package option `nomhchem' added, will prevent mC from
- loading mhchem if chemexec isn't loaded either
- - package option `nopackages' added, will prevent mC
- from loading any chemistry package except chemfig
- - some small issues resolved
- - bug in arrow type <=> resolved
- - arrow argument placement rewritten; two new keys for
- arrow: `aboveshift' and `belowshift' (causing new
- problems with alignment, though)
- - wrong arrow alignment (due to last change) mainly
- resolved (NEEDS pgf v2.10!)
- => solved wrong branch alignment as well
- - `inner sep' set to 0, arrow, transition & mesomeric
- adjusted
- - bug in arrow type -|> resolved
- - commands \makevisible / \makeinvisible added
- - arrow key `both' added
- - rxn has now keys instead of an option
- - commands \setrcndist, \setrxnalign, \setschemealign
- added
- - rxn-, rxnscheme-key align added
-2011/03/26 version 1.2.1 - rewritten commands, so they accept second argument
- without first:
- \reactand, \mesomeric, \transition, \branch,
- \makevisible, \makeinvisible
-2011/03/28 version 1.2.2 - bugfix with transition
- - atomsize, arrowlength, bondlength and bondshape
- renamed into set<name> and code slightly rewritten
- - \mCsetup added
-2011/04/01 version 1.2.3 - bug in \branch resolved
- - \chemand added
-2011/04/02 version 1.2.4 - bugs in \makevisible, \makeinvisible resolved
- - input bondwidth.tex if ChemFig v0.4
-2011/04/04 version 1.3 - commands \reactand, \mesomeric, \branch, \transition,
- \chemand (\makeinvisible, \makeinvisible) rewritten:
- more flexible with opt. arguments
-2011/04/15 version 1.4 - minor bugfixes
- - \merge-command rewritten: it now accepts an arrow
- label and the length is adjustable
- - \dummy mostly obsolete
- - bugfix with aligning rxn & rxnscheme
- - synonym to \reactand=\reactant added
- - rxn & rxnscheme rewritten
- - commands \reactant, \mesomeric, \branch & \transition
- modified: argument is set with \mCh@argument@safe{#1},
- so the chemfig catcode regime is working properly
- before () (else possible problem with triple bond ~)
- - syntax of \arrow changed so it fits to the syntax of
- all the other commands
- - command \anywhere added
- - own arrow tips defined
- - command \setarrowline added
- - new arrow type -+> added
-2011/04/23 version 1.5 - major parts of the code rewritten -- the whole
- positioning part now is different and way more flexible:
- arbitrary angles can be used for positioning, referencing
- an object is easier, arrows can be modified using <tikz>,
- command \anywhere now has similar syntax
- - arrow types <=>> and <<=> added
- - arrow type -+> modified: more flexible
- - bugfixes in error-handling
-2011/04/27 version 1.5.1 - removed bondwidth.tex
- - \arrow, \reactant, \mesomeric, \transition, \anywhere,
- \dummy, \branch, and \chemand only defined inside scheme
- environments
-2012/07/27 version 1.99 - conflict with `pdfpages' resolved, LaTeXified various
- parts in order to minimize conflicts with other
- packages; \merge is also only defined inside the scheme
- environments
-2012/09/20 version 1.99a - small adjustments to \elmove
-2012/12/19 version 1.99b - changed catcode regime (# is read with catcode 12)
- so that chemfig's bond offset works
-
-% ---------------------------------------------------------------------------- \ No newline at end of file
diff --git a/macros/latex/contrib/mychemistry/mychemistry_en.pdf b/macros/latex/contrib/mychemistry/mychemistry_en.pdf
deleted file mode 100644
index daffa005e0..0000000000
--- a/macros/latex/contrib/mychemistry/mychemistry_en.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/mychemistry/mychemistry_en.tex b/macros/latex/contrib/mychemistry/mychemistry_en.tex
deleted file mode 100644
index 269b8fecbf..0000000000
--- a/macros/latex/contrib/mychemistry/mychemistry_en.tex
+++ /dev/null
@@ -1,1724 +0,0 @@
-% arara: pdflatex
-% arara: pdflatex
-% arara: makeindex: { sort: on, style: mychemistry_en.ist }
-% arara: pdflatex
-% --------------------------------------------------------------------------
-% the MYCHEMISTRY package
-%
-% create reaction schemes with LaTeX and chemfig
-%
-% --------------------------------------------------------------------------
-% Clemens Niederberger
-% Web: https://www.bitbucket.org/cgnieder/mychemistry
-% E-Mail: contact@mychemistry.eu
-% --------------------------------------------------------------------------
-% If you have any ideas, questions, suggestions or bugs to report, please
-% feel free to contact me.
-% --------------------------------------------------------------------------
-% Copyright 2011--2012 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 modiagram.sty, modiagram_en.tex,
-% README and the derived file modiagram_en.pdf.
-% --------------------------------------------------------------------------
-% \errorcontextlines=999
-\documentclass[toc=index,DIV10]{cnpkgdoc}
-\docsetup{
- pkg = [draft]mychemistry,
- subtitle = Create Reaction Schemes with \LaTeXe\ and Chemfig ,
- code-box = {
- skipbelow = .5\baselineskip plus .5ex minus .5ex ,
- skipabove = .5\baselineskip plus .5ex minus .5ex ,
- roundcorner = 3pt ,
- innerleftmargin = 1.5em ,
- innerrightmargin = 1.5em
- }
-}
-
-\usepackage{chemnum}
-\usepackage{fnpct}
-\usepackage{booktabs}
-\usepackage{siunitx}
-
-\chemsetup[chemformula]{format=\libertineLF}
-
-\addcmds{
- @addtoreset,
- anywhere,
- arrow,
- branch,
- celsius,
- ch,
- chemabove,
- chemand,
- chembelow,
- chemfig,
- chemname,
- cmpd,
- colorlet,
- command,
- draw,
- elmove,
- floatstyle,
- fpch,
- fplus,
- fscrm,
- fscrp,
- Hpl,
- iupac,
- lewis,
- Lewis,
- listof,
- makeinvisible,
- makevisible,
- marrow,
- mch,
- mCsetup,
- mech,
- mesomeric,
- N,
- node,
- para,
- pch,
- phantom,
- reactant,
- restylefloat,
- setarrowlabel,
- setarrowlength,
- setarrowline,
- setatomsep,
- setatomsize,
- setbondlength,
- setbondshape,
- setcrambond,
- setmergelength,
- setrcndist,
- setrxnalign,
- setschemealign,
- setschemename,
- SI,
- text,
- therxnscheme,
- tikzset,
- trans,
- transition
-}
-
-\usepackage{makeidx}
-\usepackage{filecontents}
-\begin{filecontents*}{\jobname.ist}
- heading_prefix "{\\bfseries "
- heading_suffix "\\hfil}\\nopagebreak\n"
- headings_flag 1
- delim_0 "\\dotfill "
- delim_1 "\\dotfill "
- delim_2 "\\dotfill "
- delim_r "\\nohyperpage{\\textendash}"
- suffix_2p "\\nohyperpage{\\,f.}"
- suffix_3p "\\nohyperpage{\\,ff.}"
-\end{filecontents*}
-
-\makeindex
-
-\begin{document}
-\section{Licence and Requirements}\label{ssec:voraussetzungen}
-Permission is granted to copy, distribute and/or modify this software under the
-terms of the LaTeX Project Public License, version 1.3 or later
-(\url{http://www.latex-project.org/lppl.txt}). This package has the status
-``maintained.''
-
-\mychemistry needs and loads the packages \paket{etoolbox}, \paket{float},
-\paket{xkeyval}, \paket{chemmacros} and \paket{chemfig}. It also loads the
-TikZ-libraries \code{arrows}, \code{positioning}, \code{decorations.pathmorphing},
-\code{shapes}, \code{calc}, \code{matrix}, \code{chains}, \code{scopes} and
-\code{intersections}.
-
-\mychemistry also loads \paket*{translations}\footnote{Part of the
-\paket*{exsheets} package} for proper language support.
-
-\section{Changes}
-With v1.99 (=v2.0beta) package dependencies have changed so that \mychemistry
-loads noticably less packages than before. Most important for you: it does \emph{not}
-load \paket{mhchem} any more. This documentation uses \paket{chemmacros} instead
-which is loaded by \mychemistry.
-
-There are now considerably less package options as most of them are not needed
-any more.
-
-\mychemistry now provides proper language support, \eg, when used together with
-\paket{babel}.
-
-New is the command \cmd{setelmove}. The command \cmd{makevisible} now only has
-an effect if the new option \key{draft} is used.
-
-\section{Background}
-\mychemistry provides two environments within which the mechanisms are created.
-Both environments basically are \code{tikzpicture} environments. When this package
-first was written \paket{chemfig} lacked the possibility of creating reaction
-schemes itself. This was the motivation for me to get started on \mychemistry
-which then rapidly grew and until now has its users.
-
-The background has changed in August 2011, though. Then \paket{chemfig} v1.0 was
-published and now provides simple but powerful macros to create reactions schemes.
-They don't seem to to be used very often but I am advertising as much as I can.
-Anyway, since then \mychemistry can be considered obsolete and is not actively
-developed any more. The current release 1.99 (= 2.0beta) was due to an
-incompatibilty with \paket{pdfpages} and a complete robustification of various
-parts of the code.
-
-\emph{Other than bug fixes this package will very likely \emph{not} be updated
-any more}!
-
-\section{Package options}\label{sec:paketoptionen}
-\mychemistry has a few package options.
-\begin{beschreibung}
- \option{strict} With this option all warning messages are turned into error
- messages.
- \option{draft} This option is an alias to \key{strict}. Additionally it enables
- the \cmd{makevisible} command.
- \option{final} This option is the opposite to \key{draft}, \ie, most error
- messages will be issued as warnings. It also disables the \cmd{makevisible}
- command.
- \option{placement}{<value>} Changes the default floating behaviour of \env{rxnscheme},
- see section~\ref{ssec:rxnscheme}.
-\end{beschreibung}
-
-\section{Usage}
-\subsection{Basic Principle}
-Within the \code{tikzpicture} reactants and arrows are placed as nodes on a
-\code{chain}\footnote{Provided by the tikzlibrary `chains'}.
-
-\begin{beispiel}
- \begin{tikzpicture}[start chain]
- \node [on chain] {A};
- \node [on chain] {B};
- \node [on chain] {C};
- \end{tikzpicture}
-\end{beispiel}
-This way there are several possibilities to place the nodes relative to the others.
-\begin{beispiel}
- \begin{tikzpicture}[start chain=going right,node distance=5mm]
- \node [draw,on chain] {Hello};
- \node [draw,on chain] {World};
- \node [draw,continue chain=going below,on chain] {,};
- \node [draw,on chain] {this};
- \node [draw,on chain] {is};
- \end{tikzpicture}
-\end{beispiel}
-
-Above all \mychemistry uses the possibility of creating branches to the chain.
-\begin{beispiel}
- \begin{tikzpicture}[start chain=going right,node distance=5mm]
- \node [draw,on chain] {A};
- \node [draw,on chain] {B};
- { [start branch]
- \node [on chain=going below] {1};
- \node [on chain=going below] {2};
- }
- { [start branch]
- \node [on chain=going above] {$\alpha$};
- \node [on chain=going above] {$\beta$};
- }
- \node [draw,on chain] {C};
- \end{tikzpicture}
-\end{beispiel}
-You don't have to understand that mechanism in detail but you should remember the
-placement commands in the last example, because \mychemistry uses them in the same
-way.
-
-In some of the examples in this documentation the nodes are boxed with a coloured
-frame (see section~\ref{ssec:makevisible}). This is done so one can see, which size
-they have and which impact changes of the alignment have on them.
-
-\subsection{How does it work?}
-\subsubsection{Basic Commands}
-There are two basic commands:
-\begin{beschreibung}
- \Befehl{reactant}[<pos>,<name>,<tikz>]{<formula>}
- \Befehl{arrow}[<pos>,<type>,<length factor>,<name>,both,<tikz>]{<above>}\ma{<below>}
-\end{beschreibung}
-
-Schemes are created within the \env{rxn}{} environment. There you place reactants
-and arrows.
-\begin{beispiel}
- \begin{rxn}
- \reactant{ \chemfig{-[::30]-[::-60]OH} }
- \arrow{Ox.}{}
- \reactant{ \chemfig{-[::30]=_[::-60]O} }
- \end{rxn}
-\end{beispiel}
-
-When you don't use options reactants and arrows always are put to the right of
-the last object. With the option \code{<pos>} you can change this behaviour.
-\begin{beispiel}
- % positioning using key words
- \begin{rxn}
- \reactant{ \chemfig{-[::30]-[::-60]OH} }
- \arrow[below]{Ox.}{}
- \reactant[below]{ \chemfig{-[::30]=_[::-60]O} }
- \end{rxn}
- % positioning using an angle
- \begin{rxn}
- \reactant{ \chemfig{-[::30]-[::-60]OH} }
- \arrow[180]{}{Ox.}
- \reactant[180]{ \chemfig{-[::30]=_[::-60]O} }
- \end{rxn}
-\end{beispiel}
-
-\begin{table}
- \centering
- \begin{tabular}{>{\ttfamily}l*{2}{>{$}r<{$}}}
- \toprule
- {\normalfont key word} & \text{pos. angle} & \text{neg. angle} \\
- \midrule
- right & 0 & \pm 360 \\
- right above & 45 & -315 \\
- above & 90 & -270 \\
- above left & 135 & -225 \\
- left & 180 & -180 \\
- below left & 225 & -135 \\
- below & 270 & -90 \\
- below right & 315 & -45 \\
- \bottomrule
- \end{tabular}
- \caption{key words for positioning}\label{tab:keywords}
-\end{table}
-
-You can see in the last example that positioning can be realized through key
-words (see table~\ref{tab:keywords}) like \code{below} or by using the angle
-relative to the horizontal line. Every angle from the interval
-$[\ang{-360};\ang{360}]$. \ang{0} corresponds to \code{right} which is the default
-value. \emph{Positive angles} mean a turn \emph{counter clockwise}, negative ones
-a turn clockwise -- like you're used to in mathematics.
-
-\begin{beispiel}
- \begin{rxn}
- \reactant{ \chemfig{-[::30]-[::-60]OH} }
- \arrow[20]{Ox.}{}
- \reactant[20]{ \chemfig{-[::30]=_[::-60]O} }
- \end{rxn}
- \begin{rxn}
- \reactant{ \chemfig{-[::30]-[::-60]OH} }
- \arrow[-20]{Ox.}{}
- \reactant[-20]{ \chemfig{-[::30]=_[::-60]O} }
- \end{rxn}
-\end{beispiel}
-
-\subsubsection{Positioning}
-Reactants and arrows cannot only be positioned through key words and angles. They
-can refer to another reactant or arrow.
-\begin{beispiel}
- \begin{rxn}
- \reactant[,start]{ \chemfig{R-[::30](-[::60]R|^1) (-[::-120]R|^2)-[::-60]OH} }
- \arrow[40]{\tiny$\text{R}^1=\text{H}$} {\tiny$\text{R}^2=\text{H}$}
- \reactant[40]{ \chemfig{R-[::30]=_[::-60]O} }
- \arrow[start.0]{\tiny$\text{R}^1=\text{alkyl}$} {\tiny$\text{R}^2=\text{H}$}
- \reactant{ \chemfig{R-[::30](-[::60]R)=_[::-60]O} }
- \arrow[start.-40,-|>]{\tiny$\text{R}^1=\text{alkyl}$} {\tiny$\text{R}^2=\text{Alkyl}$}
- \end{rxn}
-\end{beispiel}
-In the last example the first reactant got the \code{<name>} \code{start}. The
-arrows in lines 5 and 7 now could refer to it. A \emph{previously given name} can
-act as an anchor for later reactants or arrows, if the positioning is written like
-\code{<anchor>.<angle>}.
-
-Arrows can be given names, too. The anchor point of an arrow always is in the
-middle of the arrow line and has \emph{no} size.
-\begin{beispiel}
- \begin{rxn}
- \reactant{\chemfig{[:60]-(-[::60])=[::-60](-[::-60])-}}
- \arrow[,,,arrow]{}{}
- \reactant[arrow.90]{\ch{H2O}}
- \end{rxn}
-\end{beispiel}
-
-Using this kind of positioning does \emph{not} break the chain.
-\begin{beispiel}[code only]
- \begin{rxn}
- \reactant[,a]{A}
- \arrow{}{}
- \reactant{B}
- \arrow[a.-90]{}{}
- \reactant[-90]{C}
- \arrow[a.180]{}{}
- \reactant[180]{D}
- \end{rxn}
-\end{beispiel}
-
-All seven objects of this example are logically speaking part of the same chain.
-The next object is placed to the right of the last one if no positioning is used.
-\begin{rxn}
- \tikzset{nummer/.style={circle,fill=gray!30,draw=gray,minimum size=3.5mm}}
- \reactant[,a]{A}\arrow[,,,pa]{}{}\reactant[,b]{B}
- \arrow[a.-90,,,pb]{}{}\reactant[-90,c]{C}
- \arrow[a.180,,,pc]{}{}\reactant[180,d]{D}
- \anywhere{a.45,,nummer}{1}
- \anywhere{pa.90,,nummer}{2}
- \anywhere{b.45,,nummer}{3}
- \anywhere{pb.0,,nummer}{4}
- \anywhere{c.45,,nummer}{5}
- \anywhere{pc.90,,nummer}{6}
- \anywhere{d.45,,nummer}{7}
-\end{rxn}
-
-\subsubsection{Branches}
-To break a chain you use the command
-\begin{beschreibung}
- \Befehl{branch}[<pos>,<name>,<tikz>]{<formulae>}
-\end{beschreibung}
-The positioning of a branch is slightly different from earlier objects, although
-the syntax is similar. A branch has two additional ways of positioning. Every
-positioning that refers to an anchor cause that the branch is not a part of the
-chain but is a real branch.
-\begin{description}
- \item[\code{<angle>}] on the chain
- \item[\code{<key>}] on the chain
- \item[\code{<anchor>.<angle>}] not on the chain
- \item[\code{on chain=going <key>}]on the chain
- \item[\code{<key>=of <anchor>}] not on the chain
-\end{description}
-As \code{<key>} you again use the values from table~\ref{tab:keywords}.
-
-\begin{beispiel}
- \begin{rxn}
- \reactant{ \chemfig{-[::30]-[::-60]OH} }
- \arrow{}{}
- \reactant[,carbonyl]{ \chemfig{-[::30]=_[::-60]O} }
- \branch[carbonyl.-90]{
- \arrow[-90,<=>]{\ch{NH2R}}{}
- \reactant[-90]{ \chemfig{-[::30]=_[::-60]N(-[6]H)-[::60]R} }
- }
- \arrow{}{}
- \reactant{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} }
- \end{rxn}
-\end{beispiel}
-
-Please note that in the last example the arrow and the reactant placed after
-branch continue the original chain.
-\begin{beispiel}[code only]
- \begin{rxn}
- \reactant[,a]{A}
- \arrow{}{}
- \reactant{B}
- \branch[a.-90]{
- \arrow[-90]{}{}
- \reactant[-90]{C}
- }
- \arrow[a.180]{}{}
- \reactant[180]{D}
- \end{rxn}
-\end{beispiel}
-
-The chain is broken by the branch which starts a new chain itself.
-\begin{rxn}
- \tikzset{nummer/.style={circle,fill=gray!30,draw=gray,minimum size=3.5mm,overlay}}
- \reactant[,a]{A}\arrow[,,,pa]{}{}\reactant[,b]{B}
- \branch[a.-90]{
- \arrow[-90,,,pb]{}{}\reactant[-90,c]{C}
- \anywhere{pb.0,,nummer}{a}
- \anywhere{c.45,,nummer}{b}
- }
- \arrow[a.180,,,pc]{}{}\reactant[180,d]{D}
- \anywhere{a.45,,nummer}{1}
- \anywhere{pa.90,,nummer}{2}
- \anywhere{b.45,,nummer}{3}
- \anywhere{pc.90,,nummer}{4}
- \anywhere{d.45,,nummer}{5}
-\end{rxn}
-
-Using \cmd{branch} allows to create schemes with several branches:
-\begin{beispiel}
- \begin{rxn}
- \reactant{ \chemfig{-[::30]-[::-60]OH} }
- \arrow{}{}
- \reactant[,carbonyl]{ \chemfig{-[::30]=_[::-60]O} }
- \arrow[-90]{}{}
- \reactant[-90]{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} }
- \branch[right=of carbonyl]{
- \arrow[,<=>,1.12]{\ch{NH2R}}{}
- \reactant{ \chemfig{-[::30]=_[::-60]N(-[6]H)-[::60]R} }
- }
- \branch[below right=of carbonyl]{
- \arrow[-45,<=>,1.12]{ \chemfig{[,.75]-[::30]-[::-60]OH} }{}
- \reactant[-45]{ \chemfig{-[::30](-[::60]O-[::-60]-[::-60])-[::-60]OH} }
- }
- \arrow[carbonyl.90]{ \chemfig{[,.75]-[::30]=_[::-60]O}/\Hpl }{}
- \reactant[90]{ \chemfig{-[::30](-[::60]OH)-[::-60]-[::60]=[::60]O} }
- \arrow{$-\ch{H2O}$}{}
- \reactant{ \chemfig{-[::30]=[::-60]-[::60]=[::60]O} }
- \end{rxn}
-\end{beispiel}
-
-\subsubsection{Numbered Schemes}
-There is another environment to create schemes.
-\begin{beschreibung}
- \Umg{rxnscheme}[<label>,<placement>,<alignment>,<skale factor>,<title>]{<caption>}
-\end{beschreibung}
-
-This is a floating environment for scheme, which can be given a \code{<caption>},
-a \code{<label>} and the common placement identifiers like \code{htp} (default).
-\begin{beispiel}[code and float]
-\begin{rxnscheme}{Keto-Enol-tautomerism}
- \reactant{ \chemfig{=[::30]-[::-60]OH} }
- \arrow[,<=>]{}{}
- \reactant{ \chemfig{-[::30]=[::-60]O} }
-\end{rxnscheme}
-\end{beispiel}
-
-\subsection{Predefined Values}
-There are some predefined values that are basically due to my personal taste. But
-of course you can change them according to your requirements. For \paket{chemfig}%
--formul\ae\ \emph{inside of \mychemistry environments} some values are predefined
-as follows:
-\begin{beispiel}[code only]
- \setatomsep{1.8em}
- \setcrambond{3pt}{0.5pt}{1pt}
-\end{beispiel}
-Outside the \mychemistry environments the defaults of \paket{chemfig} still are
-set.
-\begin{beispiel}
- \begin{rxn}
- \reactant{\chemfig{**6(------)}}
- \end{rxn}
- \chemfig{**6(------)}
-\end{beispiel}
-
-\mychemistry's defaults can be changed with these commands:
-\begin{beschreibung}
- \Befehl{setbondlength}{<length>}
- \Befehl{setbondshape}{<base length>}\ma{<dash thickness>}\ma{<dash spacing>}
- \Befehl{setatomsize}{<font size>}
-\end{beschreibung}
-With these commands the parameters are changed \emph{for all following}
-\mychemistry environments. If you leave the arguments empty default values are
-restored. Default for \cmd{setatomsize} is \cmd{small}.
-
-\begin{beispiel}
- \setbondlength{2.1em}\setbondshape{5pt}{1pt}{2pt}\setatomsize{\Large}
- \begin{rxn}
- \reactant{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]A}}
- \end{rxn}
- \setbondlength{}\setbondshape{}{}{}\setatomsize{}
- \begin{rxn}
- \reactant{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]A}}
- \end{rxn}
-\end{beispiel}
-
-If you only want to change the parameters of a single environment you can use
-\paket{chemfig}'s commands and \LaTeX's fontsize commands \emph{inside the
-environment}.
-\begin{beispiel}
- \begin{rxn}
- \setatomsep{2.1em}\setcrambond{5pt}{1pt}{2pt}\Large
- \reactant{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]A}}
- \end{rxn}
- \begin{rxn}
- \reactant{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]A}}
- \end{rxn}
-\end{beispiel}
-
-The default length of reaction arrows is \SI{4}{em}, the default line width is
-\code{semithick} and the default label distance is \SI{0.2}{em}. You can change
-these default values with the commands
-\begin{beschreibung}
- \Befehl{setarrowlength}{<length>}
- \Befehl{setarrowline}{<line width>}
- \Befehl{setarrowlabel}{<label distance>}
-\end{beschreibung}
-or with
-\begin{beschreibung}
- \befehl{mCsetup}{<options>} valid options are:
- \Option{arrowlength}{<length>}
- \Option{arrowline}{<line width>}
- \Option{arrowlabel}{<label distance>}
-\end{beschreibung}
-
-\section{Advanced Usage, Usage with \TikZ}
-The biggest problem with \mychemistry usually is the correct positioning of
-reactants and arrows. Section~\ref{ssec:ausrichtungsfrage} looks a little bit
-into this topic.
-
-Some of the commands can be given \TikZ code as third optional argument. More
-precisely you can use the same \TikZ keys there as you would with a \cmd{node}
-inside a \code{tikzpicture}. If a node is placed with \cmd{node}\oa{<tikz>}%
-\da{<placement>}\ma{<anything>} then \code{<tikz>} is about the same in \eg
-\cmd{reactant}[,,<tikz>]{}. With this you can customize your scheme in many ways.
-
-\subsection{The Alignment Question}\label{ssec:ausrichtungsfrage}
-Since reactants, arrows and branches are aligned centered to the referred object
-the default alignment not always produces nice results.
-\begin{beispiel}
- \makevisible
- \begin{rxn}
- \reactant{ \chemname{\chemfig{*6(-=-=-=)}}{benzene \cmpd{benzene}} }
- \arrow{}{}
- \reactant{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \cmpd{bromobenzene}} }
- \end{rxn}
-\end{beispiel}
-As you can see both reactants are not aligned equally to the arrow as far as the
-benzene ring is concerned. The first reactant seems to be shifted up. Trying to
-solve this with \TikZ code fails:
-
-\begin{beispiel}
- \makevisible
- \begin{rxn}
- \reactant[,,yshift=-1em]{ \chemname{\chemfig{*6(-=-=-=)}}{benzene \cmpd{benzene}} }
- \arrow{}{}
- \reactant{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \cmpd{bromobenzene}} }
- \end{rxn}
-\end{beispiel}
-This is, because the first reactant is shifted with the respect to the object it
-refers to. Since it is the first object on the chain itself it isn't shifted a
-all. The following arrow always is centered to the object before.
-\begin{beispiel}
- \makevisible
- \begin{rxn}
- \reactant{A}
- \chemand
- \reactant[,,yshift=1em]{B}
- \arrow{}{}
- \end{rxn}
-\end{beispiel}
-Since there is no possibility to change the alignment of the arrow itself what
-you can do is put it inside a branch.
-\begin{beispiel}
- \makevisible
- \begin{rxn}
- \reactant{A}
- \chemand
- \reactant[,,yshift=1em]{B}
- \branch[,,yshift=-1em]{\arrow{}{}}
- \end{rxn}
- \begin{rxn}
- \reactant{ \chemname{\chemfig{*6(-=-=-=)}}{benzene \cmpd{benzene}} }
- \branch[,,yshift=1em]{\arrow{}{}}
- \reactant{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \cmpd{bromobenzene}} }
- \end{rxn}
-\end{beispiel}
-For the last example this isn't the best solution though because exact alignment
-needs lots of tries until you get the required result. There is another solution:
-an invisible bromine to the first benzene.
-\begin{beispiel}
- \makevisible
- \begin{rxn}
- \reactant{ \chemname{\chemfig{*6(-=-=(-[,,,,draw=none]\phantom{Br})-=)}}{benzene \cmpd{benzene}} }
- \arrow{}{}
- \reactant{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \cmpd{bromobenzene}} }
- \end{rxn}
-\end{beispiel}
-In other cases, too, an invisible substituent should be preferred over \TikZ code
-since it's easier and more precise:
-\begin{beispiel}
- \makevisible
- default:
- \begin{rxn}
- \reactant{\chemfig{-[:-30]-[:30](=[2]O)-[:-30]OH}}
- \chemand
- \reactant{\chemfig{HO-[:30]-[:-30]-[:30]}}
- \arrow{[\Hpl]}{\SI{200}{\celsius}}
- \reactant{\chemfig{-[:-30]-[:30](=[2]O)-[:-30]O-[:30]-[:-30]-[:30]}}
- \end{rxn}
- hydroxy groups at the same height through TikZ:
- \begin{rxn}
- \reactant{\chemfig{-[:-30]-[:30](=[2]O)-[:-30]OH}}
- \chemand[,,yshift=-1.2em]
- \reactant[,,yshift=.12em]{\chemfig{HO-[:30]-[:-30]-[:30]}}
- \branch[,,yshift=1.08em]{\arrow{[\Hpl]}{\SI{200}{\celsius}}}
- \reactant{\chemfig{-[:-30]-[:30](=[2]O)-[:-30]O-[:30]-[:-30]-[:30]}}
- \end{rxn}
- hydroxy groups at the same height through an invisible substituent:
- \begin{rxn}
- \reactant{\chemfig{-[:-30]-[:30](=[2]O)-[:-30]OH}}
- \chemand
- \reactant{\chemfig{HO-[:30](=[2,,,,draw=none]\phantom{O})-[:-30]-[:30]}}
- \arrow{[\Hpl]}{\SI{200}{\celsius}}
- \reactant{\chemfig{-[:-30]-[:30](=[2]O)-[:-30]O-[:30]-[:-30]-[:30]}}
- \end{rxn}
-\end{beispiel}
-
-I'm afraid that in many other cases you'll have to play with \code{xshift} and
-\code{yshift}, though, until the scheme looks the way you want.
-
-\subsection{Using \TikZ to Achieve Other Results}
-You could, just for fun?, change the looks of a molecule with \TikZ.
-\begin{beispiel}
- \begin{rxn}
- \reactant[,,->,green!45!blue!55]{ \chemfig{*6(---(-)---)} }
- \end{rxn}
- \chemfig[->,green!45!blue!55]{*6(---(-)---)}
-\end{beispiel}
-The last example is not very good, of course, since you can achieve the same result
-using \paket{chemfig}'s own possibilities. But other cases are imaginable: for
-example one could define a style with which reactants are shown:
-\begin{beispiel}
- \colorlet{mCgreen}{green!50!gray}
- \colorlet{mCblue}{cyan!50!gray}
- \colorlet{mCred}{magenta!50!gray}
- \colorlet{mCyellow}{yellow!50!gray}
- \begin{rxn}
- \tikzset{reactant/.style={draw=#1,fill=#1!10,inner sep=1em,minimum height=10em,minimum width=12em,rounded corners}}
- \reactant[,cytosine,reactant=mCred]{\chemfig{H-[:30]N*6(-(=O)-N=(-NH_2)-=-)}}
- \anywhere{cytosine.-90,,yshift=-2mm}{Cytosine}
- \reactant[,thymine,reactant=mCyellow]{\chemfig{H-[:30]N*6(-(=O)-N(-H)-(=O)-(-CH_3)=-)}}
- \anywhere{thymine.-90,,yshift=-2mm}{Thymine}
- \reactant[cytosine.-90,adenine,yshift=-2em,reactant=mCblue]{\chemfig{[:-36]*5(-N(-H)-*6(-N=-N=(-NH_2)--)--N=)}}
- \anywhere{adenine.-90,Guanin,yshift=-2mm}{Adenine}
- \reactant[,guanine,reactant=mCgreen]{\chemfig{[:-36]*5(-N(-H)-*6(-N=(-NH_2)-N(-H)-(=O)--)--N=)}}
- \anywhere{guanine.-90,,yshift=-2mm}{Guanine}
- \end{rxn}
-\end{beispiel}
-This way certain parts of a scheme could be emphasized:
-\begin{beispiel}
- \begin{rxn}
- \setatomsep{1.5em}
- \colorlet{mCgreen}{green!50!gray}
- \tikzset{emph/.style={draw=mCgreen,fill=mCgreen!10,inner sep=1em}}
- \reactant[,lineOne]{\chemfig{R^1-[:30](=[@{b1}2]O)-[:-30]O-H}}
- \arrow[,<=>]{\chemfig{@{Hpl1}\Hpl}}{}
- \branch[,,emph]{
- \reactant{\chemfig{R^1-[:30]@{C1}(-[2]O-[:30]H)(-[6,.5,,,draw=none]\fplus)-[:-30]O-H}}
- \arrow[,<=>,2]{\chemfig{[:30]H-@{O1}O-[::-60]-R^2}}{}
- \reactant{\chemfig{R^1-[:30](-[2]O-[:30]H)(-[6]@{O2}O-[:-150]H)-[:-30]@{O3}\chemabove{O}{\fplus}(-[@{b2}6]H)-[:30]-[:-30]R^2}}
- }
- \anywhere{lineOne.-90,lineTwo,xshift=-3em,yshift=-7em}{}
- \arrow[lineTwo.0,<=>]{$-$\Hpl/\chemfig{@{Hpl2}\Hpl}}{}
- \reactant{\chemfig{R^1-[:30](-[@{b3}2]O-[@{b4}:30]H)(-[@{b5}6]@{O4}\chembelow{O}{\fplus}(-[:-30]H)-[:-150]H)-[:-30]O-[:30]-[:-30]R^2}}
- \arrow[,<=>,2]{$- \ch{H+} - \ch{H2O}$}{}
- \reactant{\chemfig{R^1-[:30](=[2]O)-[:-30]O-[:30]-[:-30]R^2}}
- \anywhere{lineTwo.-90}{
- \elmove{b1}{10:5mm}{Hpl1}{135:1cm}
- \elmove{O1}{135:1.5cm}{C1}{30:5mm}
- \elmove{O2}{-90:3cm}{Hpl2}{90:2cm}
- \elmove{b2}{0:5mm}{O3}{-10:5mm}
- \elmove{b4}{-40:5mm}{b3}{0:5mm}
- \elmove{b5}{-30:5mm}{O4}{-10:5mm}
- }
- \end{rxn}
-\end{beispiel}
-
-\section{Alphabetical Command Reference}
-In the following section every command is explained.
-
-\subsection{anywhere}\label{ssec:anywhere}
-Sometimes it might be useful to be able to place a reactant or anything else off
-the chain.
-\begin{beschreibung}
- \Befehl{anywhere}{<pos>,<name>,<tikz>}\ma{<something>}
-\end{beschreibung}
-For this case there's \cmd{anywhere}. It is positioned with \code{<pos>} similar
-to \cmd{branch}.
-\begin{description}
- \item[\code{<anchor>.<angle>}] not on the chain
- \item[\code{on chain=going <key>}] on the chain
- \item[\code{<key>=of <anchor>}] not on the chain
-\end{description}
-Please be aware that \code{<pos>} cannot be left empty.
-
-\begin{beispiel}
- \begin{rxn}
- \reactant[,carbonyl_A]{\chemfig{R_2C=O}}
- \anywhere{above=of carbonyl_A}{\chemfig{H-[:-30]O-[:30]H}};
- \end{rxn}
-\end{beispiel}
-You can use this command \eg for placing labels next to reactants.
-\begin{beispiel}
- \begin{rxn}
- \reactant[,ketone]{\chemfig{H-\chemabove{C}{\hspace*{5mm}\scriptstyle\alpha}(-[2]H)(-[6,,,2]{}|{\textcolor{blue}H})-C(=[:60]\lewis{02,O})-[:-60]C|H_3}}
- \anywhere{below=of ketone}{$+ \ch[format=\color{blue}]{OH-}$}
- \arrow[,<=>]{\tiny slow}{}
- \mesomeric[,mesomer]{
- \reactant[,carbanion]{\chemfig{H_2|\chemabove[3pt]{\lewis{2,C}}{\fscrm}-C(=[:60]\lewis{02,O})-[:-60]C|H_3}}
- \marrow
- \reactant[,enolate]{\chemfig{H_2C=C(-[:60]\chemabove{\lewis{024,O}}{\hspace*{5mm}\fscrm})-[:-60]C|H_3}}
- }
- \anywhere{above=of enolate}{\tiny enolate ion}
- \anywhere{above=of carbanion}{\tiny carbanion}
- \anywhere{below=of mesomer}{$+ \ch[format=\color{blue}]{H2O}$}
- \end{rxn}
-\end{beispiel}
-You can find many further examples for the usage of \cmd{anywhere} in \code{examples.tex}
-or \code{examples.pdf}, respectively.
-
-\subsection{\cmd{arrow}}\label{ssec:arrow}
-Reaction arrows are created with \cmd{arrow}.
-\begin{beschreibung}
- \Befehl{arrow}[<pos>,<type>,<length factor>,<name>,both,<tikz>]{<above>}\ma{<below>}
-\end{beschreibung}
-
-\subsubsection{Options}
-There are a number of options to customize the arrows. The options must be used
-in the right order, separated with commas.
-\begin{enumerate}
-\item\code{<pos>} -- possible values:
- \begin{rxn}
- \setarrowlength{2.5em}
- \dummy[a]
- \arrow{}{}\reactant{right = \ang{0}}
- \branch[above right=of a]{\arrow[above right]{}{}\reactant[above right,,overlay]{above right = \ang{45}}}
- \branch[above=of a]{\arrow[above]{}{}\reactant[above,,overlay]{above = \ang{90}}}
- \branch[above left=of a]{\arrow[above left]{}{}\reactant[above left,,overlay]{above left = \ang{135}}}
- \branch[left=of a]{\arrow[left]{}{}\reactant[left,,overlay]{left = \ang{180} = \ang{-180}}}
- \branch[below left=of a]{\arrow[below left]{}{}\reactant[below left,,overlay,xshift=-2em]{below left = \ang{225} = \ang{-135}}}
- \branch[below=of a]{\arrow[below]{}{}\reactant[below,,overlay]{below = \ang{270} = \ang{-90}}}
- \branch[below right=of a]{\arrow[below right]{}{}\reactant[below right,,overlay,xshift=2em]{below right = \ang{315} = \ang{-45}}}
- \end{rxn}
- Additionally you can use every angle from the interval $[\ang{-360};\ang{360}]$.
-
- You can also use an angle with respect to an object that's been named with
- \code{<name>}: \code{<name>.<angle>}. This means the arrow is placed in an
- angle of \code{<angle>} next to \code{<name>}. You can find lots of examples in
- \code{examples.tex} or\code{examples.pdf}, respectively.
-\item\code{<type>} -- possible values:
- \begin{rxn}
- \dummy[a]
- \branch[below=of a,b,yshift=.5em]{\arrow{}{}\reactant{\ttfamily -\textgreater}}
- \branch[below=of b,c,yshift=.5em]{\arrow[,<-]{}{}\reactant{\ttfamily \textless-}}
- \branch[below=of c,d,xshift=.25em,yshift=.5em]{\arrow[,<->]{}{}\reactant{\ttfamily \textless-\textgreater}}
- \branch[below=of d,e,yshift=.5em]{\arrow[,<=>]{}{}\reactant{\ttfamily \textless=\textgreater}}
- \branch[below=of e,f,xshift=.25em,yshift=.5em]{\arrow[,<=>>]{}{}\reactant{\ttfamily \textless=\textgreater{}\textgreater}}
- \branch[below=of f,g,yshift=.5em]{\arrow[,<<=>]{}{}\reactant{\ttfamily \textless{}\textless=\textgreater}}
- \branch[below=of g,h,xshift=-.25em,yshift=.5em]{\arrow[,-|>]{}{}\reactant{\ttfamily -\textbar\textgreater}}
- \branch[below=of h,,yshift=.5em]{\arrow[,-+>]{ }{ }\reactant{\ttfamily -+\textgreater}}
- \end{rxn}
-\item\code{<length factor>} -- this factor multiplies with the arrow length
- (\SI{4}{em} with factor = $1.0$, default)
-\item\code{<name>} -- can be used to give the arrow an anchor, to which another
- object can refer.
-\item\code{both}-- this gives both nodes within which the labels are written the
- same size.
-\item\code{<tikz>} -- you can modify the arrow with \TikZ keys. Not all \TikZ
- keys have an effect, though. You can't shift arrows with \code{shift=<coord>},
- for example.
-\end{enumerate}
-\begin{beispiel}
- \begin{rxn}
- \arrow[,,.25]{M}{}\arrow[,,.5]{MM}{}\arrow[,,.75]{MMM}{}\arrow{MMMM}{}\arrow[,,1.125]{MMMMM}{}\arrow[,,1.25]{MMMMM}{}
- \end{rxn}
-\end{beispiel}
-Please note, that the labels \code{<above>} and \code{<below>} are rotated with
-the arrow. At an angle of \ang{180} \code{<above>} actually is \emph{below} the arrow.
-\begin{beispiel}
- \begin{rxn}
- \setarrowlength{2.5em}
- \dummy[a]
- \arrow{a}{b}
- \arrow[a.45]{a}{b}
- \arrow[a.90]{a}{b}
- \arrow[a.135]{a}{b}
- \arrow[a.180]{a}{b}
- \arrow[a.225]{a}{b}
- \arrow[a.270]{a}{b}
- \arrow[a.315]{a}{b}
- \end{rxn}
-\end{beispiel}
-
-You need to be aware of one or two points, when using the arrow type \code{-+>}:
-if you leave the labels empty, the arrow is the same as \code{->}. The first label
-is the one added to the reaction, the second the one subtracted. If you use only
-one of the labels only the corresponding arrow part is drawn.
-\begin{beispiel}
- corresponds \verb"->":
- \begin{rxn}
- \arrow[,-+>]{}{}
- \end{rxn}
- add:
- \begin{rxn}
- \arrow[,-+>]{a}{}
- \end{rxn}
- subtract:
- \begin{rxn}
- \arrow[,-+>]{}{b}
- \end{rxn}
- both add and subtract:
- \begin{rxn}
- \arrow[,-+>]{a}{b}
- \end{rxn}
- Blanks are \emph{not} an empty label:
- \begin{rxn}
- \arrow[,-+>]{ }{ }
- \end{rxn}
-\end{beispiel}
-
-You can change the appearance of an arrow with \TikZ keys:
-\begin{beispiel}
- \begin{rxn}
- \mCsetup{arrowlabel=.7em,arrowlength=6em}
- \reactant{A}
- \arrow[20,,,,,decorate,decoration=snake,blue]{a}{b}
- \reactant[20]{A$^*$}
- \end{rxn}
-\end{beispiel}
-
-\subsubsection{Alignment}
-If an arrow is placed inside a branch the alignment of the branch may be
-determined by the size of the label nodes. If the two labels have a different
-size, alignment can go wrong.
-\begin{beispiel}
- \makevisible
- \begin{rxn}
- \reactant[,a]{A}
- \arrow{}{}
- \branch[below=of a]{
- \arrow[-90]{\chemfig{-[::30]-[::-60]OH}}{}
- }
- \end{rxn}
- \makeinvisible
-\end{beispiel}
-By using the option \code{both} both nodes get the same size. This can correct
-the alignment.
-\begin{beispiel}
- \makevisible
- \begin{rxn}
- \reactant[,a]{A}
- \arrow{}{}
- \branch[below=of a]{
- \arrow[-90,,,,both]{\chemfig{-[::30]-[::-60]OH}}{}
- }
- \end{rxn}
- \makeinvisible
-\end{beispiel}
-There's more to the question of alignment in section~\ref{sssec:branch_ausrichtung}.
-
-\subsubsection{Appearance}
-You can change the general appearance of arrows with \cmd{setarrowlength}
-(section~\ref{ssec:setarrowlength}) and \cmd{setarrowline} (section~\ref{ssec:setarrowline}).
-
-\subsection{\cmd{branch}}\label{ssec:branch}
-\cmd{branch} is used to, well, create a branch to a reaction.
-\begin{beschreibung}
- \Befehl{branch}[<pos>,<anchor>,<tikz>]{<branch code>}
-\end{beschreibung}
-For \cmd{branch} positioning an anchor is important. Let's take a look at an example:
-\begin{beispiel}
- \begin{rxn}
- \reactant[,start]{\chemfig{-[::30]=_[::-60](-[::-60])-[::60]}}
- \arrow[,,.75]{\ch{HCl}}{}
- \reactant{\chemfig{-[::30]-[::-60](-[::120]Cl)(-[::-60])-[::60]}}
- \chemand
- \reactant{\chemfig{-[::30](-[::60]Cl)-[::-60](-[::-60])-[::60]}}
- \branch[below right=of start]{
- \arrow[-45,,.75]{\ch{H2O}}{}
- \reactant[-45]{\chemfig{-[::30]-[::-60](-[::120]OH)(-[::-60])-[::60]}}
- \chemand
- \reactant{\chemfig{-[::30](-[::60]OH)-[::-60](-[::-60])-[::60]}}
- }
- \end{rxn}
-\end{beispiel}
-The first reactant got the anchor \code{start} (line 2, also see
-section~\ref{ssec:reactant}). \cmd{branch} now refers to it in its alignment
-(line 7). If you don't use the alignment reference to an anchor you automatically
-refer to the last \cmd{reactant} or \cmd{arrow}. If you don't use alignment at all,
-then the branch is aligned to the right of the last \cmd{reactant} or \cmd{arrow}.
-\begin{beispiel}
- \begin{rxn}
- \reactant{ \chemfig{CH_2=CH-OH} }
- \arrow[,<=>,.5]{}{}
- \branch{ \reactant{ \chemfig{CH_3-CH=O} } }
- \end{rxn}
-\end{beispiel}
-
-\subsubsection{Positioning}\label{sssec:branch_positionierung}
-There are several ways to position a branch. It can either be part of the chain
-or be a real branch.
-\begin{description}
- \item[\code{<angle>}] on the chain
- \item[\code{<key>}] on the chain
- \item[\code{<anchor>.<angle>}] not on the chain
- \item[\code{on chain=going <key>}] on the chain
- \item[\code{<key>=of <anchor>}] not on the chain
-\end{description}
-
-The default behaviour is equal to \cmd{branch}[0]{}. In different situations
-different ways can be favoured. For example if you want to use \cmd{branch} to
-shift an arrow it can still be part of the chain.
-\begin{beispiel}
- \begin{rxn}
- \reactant{A}
- \branch[,,yshift=1em]{\arrow{}{}}
- \reactant[,,yshift=-1em]{B}
- \end{rxn}
-\end{beispiel}
-
-If you like to start a real branch it \emph{does} matter which way you use.
-\begin{beispiel}
- \makevisible
- \begin{rxn}
- \reactant[,a]{\chemfig{[:30]--[::-60]-OH}}
- \arrow{}{}
- \branch[a.-45]{\arrow[-45]{}{}}
- \end{rxn}
- \begin{rxn}
- \reactant[,a]{\chemfig{[:30]--[::-60]-OH}}
- \arrow{}{}
- \branch[below right=of a]{\arrow[-45]{}{}}
- \end{rxn}
-\end{beispiel}
-
-If a reactant isn't squared or circled \ang{-45} does not mean the same as
-``below right.''
-\begin{beispiel}
- \makevisible
- \begin{rxn}
- \reactant[,a,circle]{\chemfig{[:30]--[::-60]-OH}}
- \arrow{}{}
- \branch[a.-45]{\arrow[-45]{}{}}
- \end{rxn}
- \begin{rxn}
- \reactant[,a,circle]{\chemfig{[:30]--[::-60]-OH}}
- \arrow{}{}
- \branch[below right=of a]{\arrow[-45]{}{}}
- \end{rxn}
-\end{beispiel}
-
-\subsubsection{Alignment problems}\label{sssec:branch_ausrichtung}
-If an arrow has two arguments with different sizes and is placed inside a branch
-the alignment of the branch can go wrong. In this case the \cmd{arrow} key
-\code{both} isn't a solution since the smaller argument then is not placed next
-to the arrow but is centered in its node.
-\begin{beispiel}
- \makevisible
- \begin{rxn}
- \reactant[,a]{A}
- \arrow{}{}
- \branch[below=of a]{
- \arrow[below,,,,both]{\chemfig{-[::30]-[::-60]OH}}{\Hpl}
- }
- \end{rxn}
-\end{beispiel}
-
-What you have to do is shift the branch using the \TikZ keys \code{xshift} and
-\code{yshift}.
-\begin{beispiel}
- \makevisible
- \begin{rxn}
- \reactant[,a]{A}
- \arrow{}{}
- \branch[below=of a,,xshift=-1.35em]{
- \arrow[below]{\chemfig{-[::30]-[::-60]OH}}{\Hpl}
- }
- \end{rxn}
-\end{beispiel}
-
-\subsection{\cmd{chemand}}\label{ssec:chemand}
-The command
-\begin{beschreibung}
- \Befehl{chemand}[<alignment>,<anchor>,<tikz>]
-\end{beschreibung}
-produces and places a $+$ in the same way \cmd{reactant} places arbitrary text.
-\begin{beispiel}
- \begin{rxn}
- \reactant{\chemfig{*6(------)}}
- \chemand
- \reactant{\ch{Br2}}
- \arrow{$h\nu$}{}
- \reactant{\chemfig{*6(--(-Br)----)}}
- \chemand
- \reactant{\ch{HBr}}
- \end{rxn}
-\end{beispiel}
-The optional arguments for \cmd{chemand} and \cmd{reactant} are the same, see
-section~\ref{ssec:reactant} for \cmd{reactant}'s options.
-
-\subsection{\cmd{dummy}}\label{ssec:dummy}
-\cmd{dummy} creates an empty node. Up to v1.3 \cmd{arrow} needed to follow after
-a node since \cmd{arrow} internally uses \cmd*{tikzchainprevious}. If there was
-no node on the chain \emph{before} \cmd{arrow} was used an error was raised.
-The same thing happened with \cmd{branch}. By using \cmd{dummy} you could start
-a scheme with an arrow anyway.
-\begin{beispiel}[code only]
- \begin{rxn}
- \dummy\arrow{}{}
- \end{rxn}
-\end{beispiel}
-\emph{This is \emph{not} necessary any more}. In some (alignment) cases an empty
-node still might be useful so the command still exists.
-
-\subsection{\cmd{elmove}}\label{ssec:elmove}
-\cmd{elmove} just is a wrapper for \paket{chemfig}'s \cmd*{chemmove}.
-\begin{beschreibung}
- \Befehl{elmove}[<tikz>]{<start>}\ma{<start direction>}\ma{<end>}\ma{<end direction>}
-\end{beschreibung}
-This is expanding to
-\begin{beispiel}[code only]
- \chemmove{\draw[<tikz>](<start>).. controls +(<start direction>) and +(<end direction>)..(<end>);}
-\end{beispiel}
-using \oa{->,red,shorten <=3pt,shorten >=1pt} as default for \code{<tikz>}. How
-you use \cmd*{chemmove} is described in the documentation of \chemfig.
-\begin{beispiel}
- \begin{center}
- \setatomsep{1.8em}
- \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])}
- \elmove{e1}{60:4mm}{e2}{0:4mm}
- \end{center}
-\end{beispiel}
-You should use \cmd{elmove} \emph{only inside} of \cmd{anywhere}, \cmd{reactant}
-or \cmd{transition}. Otherwise you might get alignment errors.
-
-\subsection{\cmd{makeinvisible}}\label{ssec:makeinvisible}
-\begin{beschreibung}
- \Befehl{makeinvisible}
-\end{beschreibung}
-\cmd{makeinvisible} restores the normal \mychemistry behaviour after \cmd{makevisible}
-(see section~\ref{ssec:makevisible}) has been used. \cmd{makeinvisible} only changes
-the looks of nodes following after it.
-
-\subsection{\cmd{makevisible}}\label{ssec:makevisible}
-\begin{beschreibung}
- \Befehl{makevisible}
-\end{beschreibung}
-With \cmd{makevisible} you can visualize the nodes within which reactants, arrows
-and branches are set. This is useful when you're aligning branches, for example.
-You can see an example of the usage of \cmd{makevisible} in section~\ref{ssec:arrow}.
-Every kind of nodes is emphasized with a different colour:
-
-\tikz[baseline=(X.base)]\node[draw=red!60](X){\cmd{reactant}{}};,
-\tikz[baseline=(X.base)]\node[draw=green!60](X){\cmd{arrow}{above}};,
-\tikz[baseline=(X.base)]\node[draw=blue!60](X){\cmd{arrow}{below}};
-and \tikz[baseline=(X.base)]\node[draw=cyan](X){\cmd{branch}{}};.
-Also see section~\ref{ssec:makeinvisible}.
-
-\cmd{makevisible} only changes the looks of nodes following after it ond only
-effects the group whithin which it is used.
-\begin{beispiel}
- \begin{rxn}
- \makevisible
- \reactant[,a]{A}
- \arrow{a}{b}
- \branch[below=of a]{
- \arrow[-90,,,,both]{a}{b}
- }
- \end{rxn}
- \begin{rxn}
- {\makevisible
- \reactant{\chemfig{[:30]--[::-60]-OH}}
- }
- \reactant{\chemfig{[:30]--[::-60]-OH}}
- \end{rxn}
-\end{beispiel}
-
-\emph{Please beware that \cmd{makevisible} \emph{only} has an effect if the
-package option \key{draft} is active}!
-
-\subsection{\cmd{marrow}}\label{ssec:marrow}
-\cmd{marrow} creates a double-headed arrow.
-\begin{beschreibung}
- \Befehl{marrow}[<direction>]
-\end{beschreibung}
-It is a shortcut for \cmd{arrow}[<direction>,<->,.5]\ma{}\ma{}.
-
-\subsection{\cmd{mCsetup}}\label{ssec:mCsetup}
-With
-\begin{beschreibung}
- \Befehl{mCsetup}{<keys>}
-\end{beschreibung}
-you can fully customize \mychemistry. For each of \mychemistry's commands going
-like \cmd{set<command>} except \cmd{setbondshape} there is a key \key{<command>}{<value>}.
-Additionally there is the key \key{align}{<value>} with which you can change the
-alignment behaviour of both \env{rxn}{} and \env{rxnscheme}{}, and the key
-\key{reset} with whith all values are reset to default.
-\begin{beispiel}
- \mCsetup{
- align=left,
- arrowlabel=.7em,
- arrowlength=3em,
- arrowline=thick,
- atomsize=\large,
- bondlength=3em,
- mergelength=4em,
- rcndist=2em
- %rxnalign=right,
- %schemealign=left
- }
- \setbondshape{4pt}{2pt}{1pt}
- \begin{rxn}
- \reactant{A}\arrow{a}{b}\reactant{\chemfig{A-(<[2])(<:[6])-B}}
- \end{rxn}
- \mCsetup{reset}
- \begin{rxn}
- \reactant{A}\arrow{a}{b}\reactant{\chemfig{A-(<[2])(<:[6])-B}}
- \end{rxn}
-\end{beispiel}
-\cmd{mCsetup} as well as every other setup command only effects the group whithin
-which it is used.
-
-Here is a complete list of valid keys:
-\begin{beschreibung}
- \Option{align}
- \Option{arrowlabel}
- \Option{arrowlength}
- \Option{arrowline}
- \Option{atomsize}
- \Option{bondlength}
- \Option{elmove}
- \Option{mergelength}
- \Option{rcndist}
- \Option{reset}
- \Option{rxnalign}
- \Option{schemealign}
-\end{beschreibung}
-
-\subsection{\cmd{merge}}\label{ssec:merge}
-The \cmd{merge} command is used to merge different reaction chains. In order to
-do that the reactants that are to be merged must have an anchor name
-(\cmd{reactant}[,<anchor>]{}), similar with branches, see sections~\ref{ssec:reactant}
-and \ref{ssec:branch}) and be placed \emph{before} \cmd{merge}.
-\begin{beschreibung}
- \Befehl{merge}[<label>,<direction>,<length>]{<target>}\ma{<start a>}\ma{<start b>}
-\end{beschreibung}
-\cmd{merge} has three optional and three mandatory arguments. The latter are the
-anchor names of the reactants that are to be merged.
-\begin{beispiel}
- \begin{rxn}
- \branch[,first]{
- \reactant[,start_a]{\chemfig{-[:30]-[:-30]OH}}
- \reactant[,start_b,xshift=9em]{\chemfig{-[:30]=[:-30]O}}
- }
- \branch[below=of first,target,yshift=-5em]{
- \reactant{\chemfig{-[:30]-[:-30]O-[:30](-[2]OH)-[:-30]}}
- }
- \merge[\ch{[OH^-]}]{target}{start_a}{start_b}
- \end{rxn}
-\end{beispiel}
-
-The default \code{<direction>} is \code{below}, other possible values are
-\code{right}, \code{left} and \code{above}. With \code{<length>} the length of
-the arrow from the point of merging to the tip can be changed. The default length
-is \SI{3}{em}. The default length can be changed with \cmd{setmergelength} or
-\cmd{mCsetup}.
-\begin{beispiel}
- \begin{rxn}
- \reactant[,start_a]{\chemfig{-[:30]-[:-30]OH}}
- \branch[below=of start_a,start_b,yshift=-9em]{
- \reactant{\chemfig{-[:30]=[:-30]O}}
- }
- \branch[right=of start_a,target,xshift=7em,yshift=-6em]{
- \reactant{\chemfig{-[:30]-[:-30]O-[:30](-[2]OH)-[:-30]}}
- }
- \merge[\ch{[OH^-]},right,5em]{target}{start_a}{start_b}
- \end{rxn}
-\end{beispiel}
-Since you have to place the reactants first it might be useful to know a little
-bit about involved lengths. There are three values which influence the needed
-distance between start points and the target reactant. There is the \emph{depth}
-of the involved reactants, the distance of the ``reaction nodes'' \emph{rcndist}
-(see section~\ref{ssec:setrcndist}) and the length of the \cmd{merge} arrow
-\emph{mergelength} (also see section~\ref{ssec:setmergelength}).
-\begin{rxn}
- \node[above](a) at (0,0){A};
- \node[above](b) at (10em,0){B};
- \node[below](c) at (5em,-6em){C};
- \merge{c}{a}{b}
- \draw (-8.5em,1em) -- (-8.5em,-9em);
- \foreach \x in {-1,0,1,2,3,4,5,6,7,8,9}{
- \draw (-8.5em,-\x em) -- (-8.7em,-\x em);
- }
- \draw[<->,red] (10em,0)--node[midway,right,xshift=.2em]{rcndist (default: 1em)}(10em,-1em);
- \draw[<->,red] (0,0)--(0,-1em);
- \draw[<->,red] (5em,-5em)--(5em,-6em);
- \draw[<->,blue] (6em,-2em) --node[midway,right,xshift=.2em]{mergelength (default: 3em)} (6em,-5em);
- \draw[<->,green] ($(a.base)+(-.5em,0)$)--node[midway,left,xshift=-.2em]{reactant depth}++(0,.5em);
-\end{rxn}
-At last an example where two chains are merged.
-\begin{beispiel}
- \begin{rxn}
- \setatomsep{1.15em}\footnotesize
- % chain 1
- \reactant[,first]{ \chemfig{Cl-[:30,1.5]--[:-30,1.5]O-[:30,1.5]--[:-30,1.5]Cl}{} }
- \arrow[,,.5]{}{}
- \reactant[,start_above]{ \chemfig{O(-[:-150]**6(-----(-OH)-))-[:90]-[:30]-[:-30]O-[:30]-[:-30]-[:-90]O-[:-30]**6(-(-HO)-----)} }
- % chain 2
- \branch[below=of first,start_below,xshift=8em,yshift=-4em]{
- \reactant{ \chemfig{**6((--[6,,,2]HO)-N-(--[6]OH)----)} }
- \arrow[,,.5]{}{}
- \reactant{ \chemfig{**6((--[6]Br)-N-(--[6]Br)----)} }
- }
- % target
- \branch[right=of start_above,target,xshift=5em,yshift=-4em]{
- \reactant[,c]{ \chemfig{O(-[:-150]**6(-----(-O?)-))-[:90]-[:30]**6(-N-(--[:-90]O-[:-30]**6(-(-O-[6]-[:-150]-[:150]O-[:-150]-[:150]?)-----))----)} }
- }
- % merging:
- \merge[,right]{target}{start_above}{start_below}
- \end{rxn}
-\end{beispiel}
-The usage of \cmd{merge} may require some playing with branches, \code{xshift}
-and \code{yshift} until you get the desired result.
-\begin{beispiel}
- \begin{rxn}
- \setatomsep{1.5em}
- \reactant[,start_aa]{ \chemname{\chemfig{**6(---(-NH_2)---)}}{Anilin} }
- \reactant[below,start_ab,yshift=-3em]{ \chemname{\ch{HNO2}}{salpetrige S\"aure} }
- \branch[right=of start_aa,target_a,xshift=6em,yshift=-5em]{
- \reactant{ \chemname{\chemfig{**6(---(-N|_2\fpch)---)}}{Diazoniumion} }
- }% = start_ba
- \branch[below=of target_a,start_bb,yshift=-3em]{
- \reactant{ \chemname{\chemfig{**6(---(-NH_2)---)}}{Anilin} }
- }
- \branch[right=of target_a,target_b,xshift=6em,yshift=-5em]{
- \reactant{ \chemname{\chemfig{N(-[:-150]**6(------))=N-[:-30]**6(---(-NH_2)---)}}{\iupac{\para\-Amino\|diazo\|benzol}} }
- }
- \merge[,right]{target_a}{start_aa}{start_ab}
- \merge[,right]{target_b}{target_a}{start_bb}
- \end{rxn}
-\end{beispiel}
-
-\subsection{\cmd{mesomeric}}\label{ssec:mesomeric}
-The \cmd{mesomeric} command works just like \cmd{branch} (see section~\ref{ssec:branch})
-but places the formul\ae\ into square brackets.
-\begin{beschreibung}
- \Befehl{mesomeric}[<pos>,<anchor>,<tikz>]{<formula>}
-\end{beschreibung}
-The resonance formul\ae\ are written into \code{<formula>}. With \cmd{marrow}
-(see section~\ref{ssec:marrow}) you can create the resonance arrows. If needed
-you can give an anchor (\code{<anchor>}) to \cmd{mesomeric} (also see
-section~\ref{ssec:branch}). Alignment is used the same way as with \cmd{reactant}.
-\begin{beispiel}
- \begin{rxn}
- \mesomeric{
- \reactant{
- \chemfig{*6(=[@{e1}]-=-(-[:120]X)(-[:60]H)-(-[:-30,.4,,,white]\fplus)-[@{e2}])}
- \elmove{e1}{60:4mm}{e2}{0:4mm}
- }
- \marrow
- \reactant{
- \chemfig{*6(-(-[:90,.4,,,white]\fplus)-[@{e4}]=[@{e3}]-(-[:120]X)(-[:60]H)-=)}
- \elmove{e3}{180:4mm}{e4}{150:4mm}
- }
- \marrow
- \reactant{
- \chemfig{*6(-=-(-[:-150,.4,,,white]\fplus)-(-[:120]X)(-[:60]H)-=)}
- }
- }
- \end{rxn}
-\end{beispiel}
-
-Or vertical, too:
-\begin{beispiel}
- \begin{rxn}
- \mesomeric{
- \reactant{ \chemfig{*6(=-=-=-)} }
- \marrow[below]
- \reactant[below]{ \chemfig{*6(-=-=-=)} }
- }
- \end{rxn}
-\end{beispiel}
-
-Or maybe a coordination complex?
-\begin{beispiel}
- \begin{rxn}
- \setatomsep{3em}
- \mesomeric[,a]{
- \reactant{ \chemfig{H_3\lewis{0,N}-[,1.35,,,dotted]{Cu}(-[2,,,,dotted]\lewis{6,N}H_3)(-[6,,,,dotted]\lewis{2,N}H_3)-[,1.2,,,dotted]\lewis{4,N}H_3} }
- }
- \node[above right=of a,yshift=-1em] {$2\fplus$};
- \end{rxn}
-\end{beispiel}
-
-\subsection{\cmd{reactant}}\label{ssec:reactant}
-\cmd{reactant} is something like the basic command.
-\begin{beschreibung}
- \Befehl{reactant}[<pos>,<name>,<tikz>]{<formula>}
-\end{beschreibung}
-Formul\ae\ (\code{<formula>}) are written inside this command and can be named
-(\code{<name>}) for other objects to refer to. \code{<pos>} can either be one of
-these key words
-\begin{enumerate}
- \item \code{right},
- \item \code{above right},
- \item \code{above},
- \item \code{above left},
- \item \code{left},
- \item \code{below left},
- \item \code{below},
- \item \code{below right}
-\end{enumerate}
-or be an angle from the intervall $[\ang{-360};\ang{360}]$. You also can position
-it relativ to another object via \code{<anchor>.<angle>}. The default equals
-\cmd{reactant}[0]{}.
-\begin{beispiel}
- below:
- \begin{rxn}
- \reactant{\ch{Br2}}
- \reactant[-90]{\ch{Cl2}}
- \end{rxn}
-
- more than one reactant:
- \begin{rxn}
- \reactant{\ch{Br2}}
- \reactant[-90]{\ch{I2}}
- \reactant{\ch{Cl2}}
- \end{rxn}
-
- going down:
- \begin{rxn}
- \reactant{\ch{Br-Br}}
- \arrow[-90,,.5]{$h\nu$}{}
- \reactant[-90]{\ch{2 "\Lewis{0.,Br}"}}
- \end{rxn}
-\end{beispiel}
-You can find many more examples in the file \code{examples.tex} or
-\code{examples.pdf}, respectively.
-
-\subsection{rxn (environment)}\label{ssec:rxn}
-\env{rxn}{} is a non-floating not numbered environment for reaction schemes. Per
-default all schemes are centered.
-\begin{beschreibung}
- \Umg{rxn}[<alignment>,<scalefactor>]{...}
-\end{beschreibung}
-
-\subsubsection{Options}\label{sssec:rxn_optionen}
-\env{rxn}{} has two options which are to be used in the following order, separated
-by a comma:
-\begin{enumerate}
- \item\code{<alignment>}: alignment behaviour of the \env{rxn}{} environment;
- default is \code{center}.
- \item\code{<scalefactor>}: factor by which the \env{rxn}{} environment is scaled;
- default: \code{1.0}. Same behaviour as with \env{rxnscheme}, see
- section~\ref{ssec:rxnscheme}.
-\end{enumerate}
-If you use the \code{<scalefactor>} option you might see strange effects on
-\paket{chemfig} formul\ae.
-
-\begin{beispiel}
- \begin{rxn}[,.5]
- \reactant{\chemfig{**6(------)}}
- \end{rxn}
-\end{beispiel}
-Scaling does in general not affect the size of \paket{chemfig} formul\ae\ but
-does scale the aromaticity ring of benzene and similar molecules. This is not
-\mychemistry's fault:
-\begin{beispiel}
- \chemfig[scale=.5]{**6(------)}
-\end{beispiel}
-This issue can be solved either by using the \emph{first} optional argument of
-\cmd*{chemfig} to undo the scaling or by using the \emph{second} optional argument
-to scale the rest of the molecule.
-\begin{beispiel}
- \begin{rxn}[,.5]
- \reactant{\chemfig[scale=2]{**6(------)}}
- \reactant{\chemfig[][scale=.5]{**6(------)}}
- \end{rxn}
- \chemfig[scale=.5][scale=.5]{**6(------)}
-\end{beispiel}
-
-Alignment examples:
-\begin{beispiel}
- \begin{rxn}[center]
- \reactant{center}\arrow{}{}\reactant{centered}
- \end{rxn}
- \begin{rxn}[right]
- \reactant{right}\arrow{}{}\reactant{raggedleft}
- \end{rxn}
- \begin{rxn}[left]
- \reactant{left}\arrow{}{}\reactant{raggedright}
- \end{rxn}
-\end{beispiel}
-
-\subsection{rxnscheme (environment)}\label{ssec:rxnscheme}
-\env{rxnscheme}{} is a floating environment for reaction schemes.
-\begin{beschreibung}
- \Umg{rxnscheme}[<label>,<placement>,<alignment>,<scalefactor>,<name>]{\unskip\ma{<caption>} ...}
-\end{beschreibung}
-
-\subsubsection{Options}\label{sssec:rxnscheme_optionen}
-\env{rxnscheme}{} has five options which are to be used in the following order,
-separated by commas:
-\begin{enumerate}
- \item\code{<label>}: Like every other floating environment \env{rxnscheme}{} can
- be given a label. In order to do that you need to use the option \code{<label>}.
- For example if you use
-\begin{beispiel}[code only]
- \begin{rxnscheme}[rs:schema]{<caption>}
- ...
- \end{rxnscheme}
-\end{beispiel}
- you can refer to it by using \cmd*{ref}{rs:schema} as usual.
- \item\code{<placement>}: With this option you can change the placement of the
- float, \eg with \code{h}. The default value is \code{htp}.
- \item\code{<alignment>}: This option changes the alignment of the scheme. You
- can choose between \code{left}, \code{center} and \code{right}.
- \item\code{<scalefactor>}: \env{rxnscheme}{} has another key with which the
- scheme can be scaled. Please keep in mind that it doesn't affect the font size
- and the size of \paket{chemfig}'s formul\ae. You can have strange effects on
- \paket{chemfig}'s formul\ae\ if you use this key, though. See
- section~\ref{sssec:rxn_optionen} for more information.
- \item\code{<name>} This option changes the name of the actual scheme from
- ``Reaction scheme'' into \code{<name>}.
-\begin{beispiel}[code only]
- \begin{rxnscheme}[,<placement>]{<caption>}
- ...
- \end{rxnscheme}
-\end{beispiel}
-\end{enumerate}
-
-\begin{beispiel}[code and float]
- \begin{rxnscheme}[,,,2]{Big scheme}
- \large\setatomsep{3.5em}
- \reactant{ \chemfig{=[::30]-[::-60]OH} }
- \arrow[,<=>]{}{}
- \reactant{ \chemfig{-[::30]=[::-60]O} }
- \end{rxnscheme}
- \begin{rxnscheme}[,,,.5]{Small scheme}
- \setatomsep{1.15em}\footnotesize
- \reactant{ \chemfig{=[::30]-[::-60]OH} }
- \arrow[,<=>]{}{}
- \reactant{ \chemfig{-[::30]=[::-60]O} }
- \end{rxnscheme}
- \begin{rxnscheme}{center}
- \reactant{center}\arrow{}{}\reactant{centered}
- \end{rxnscheme}
- \begin{rxnscheme}[,,right]{right}
- \reactant{right}\arrow{}{}\reactant{raggedleft}
- \end{rxnscheme}
- \begin{rxnscheme}[,,left]{left}
- \reactant{left}\arrow{}{}\reactant{raggedright}
- \end{rxnscheme}
-\end{beispiel}
-
-\subsubsection{Customizing rxnscheme}
-\paragraph{Style}
-If you don't like the style of \env{rxnscheme}{} you can change it by using
-\begin{beschreibung}
- \Befehl{floatstyle}{<new style>}
- \Befehl{rxnfloat}
-\end{beschreibung}
-There are different possible styles, provided by the \paket{float} package:
-\begin{description}
- \item[\code{plain}] without any special formatting, the caption is below the object.
- \item[\code{plaintop}] like \code{plain} but the caption is placed above the object.
- \item[\code{boxed}] the object is boxed, the caption placed below.
- \item[\code{ruled}] the caption is placed above the object framed by two rules,
- one above and one below, another rule frames the object below; default for
- \env{rxnscheme}{}.
-\end{description}
-
-\begin{beispiel}[code and float]
- \begin{rxnscheme}{ruled}
- \reactant{default style}
- \end{rxnscheme}
- \floatstyle{boxed}
- \restylefloat{rxnfloat}
- \begin{rxnscheme}{boxed}
- \reactant{framed object}
- \end{rxnscheme}
- \floatstyle{plain}
- \restylefloat{rxnfloat}
- \begin{rxnscheme}{plain}
- \reactant{without any special formatting}
- \end{rxnscheme}
-\end{beispiel}
-\floatstyle{ruled}
-\restylefloat{rxnfloat}
-
-\paragraph{Placement}
-Usually floating environments have an optional argument for their placement.
-The default placement is \code{htp}. If you want to change it into \code{H} or
-something, you can use
-\begin{beschreibung}
- \Befehl{floatplacement}{rxnfloat}\ma{<placement>}
-\end{beschreibung}
-
-It's easier, though, loading \mychemistry with the \key{placement} option:
-\begin{beispiel}[code only]
- \usepackage[placement=<placement>]{mychemistry}
-\end{beispiel}
-
-This will change the default placement behaviour from \code{htp} to \code{<placement>}.
-You can also change the placement behaviour of just one \env{rxnscheme}{} by
-using the placement option:
-\begin{beispiel}[code only]
- \begin{rxnscheme}[,<placement>]{<caption>}
- ...
- \end{rxnscheme}
-\end{beispiel}
-
-\paragraph{Name}\label{par:rxnscheme_name}
-If you want to change the name of reaction scheme you can do that with
-\begin{beschreibung}
- \Befehl{setschemename}{<new name>}
-\end{beschreibung}
-The default name is ``Reaction scheme'' but can change depending on the language
-you've loaded with \paket{babel}.
-
-\paragraph{Counter}
-The counter can be changed just as usual. For example by using
-\begin{beispiel}[code only]
- \makeatletter
- \@addtoreset{rxnfloat}{section}
- \makeatletter
- \renewcommand*\therxnscheme{\arabic{section}.\arabic{rxnscheme}}
-\end{beispiel}
-the counter is reset with every new section an looks like \code{section.rxnscheme}.
-
-\paragraph{List of Schemes}
-By writing
-\begin{beschreibung}
- \Befehl{listof}{rxnfloat}\ma{<title>}
-\end{beschreibung}
-you can create a list of all schemes created with \env{rxnscheme}{}.
-\begin{beispiel}
- \listof{rxnfloat}{Reaction schemes}
-\end{beispiel}
-
-\subsection{\cmd{setarrowlabel}}\label{ssec:setarrowlabel}
-The distance of arrow labels to the arrow has a default value of \SI{0.2}{em}.
-You can change this with
-\begin{beschreibung}
- \Befehl{setarrowlabel}{<distance>}
-\end{beschreibung}
-into \code{<distance>}.
-\begin{beispiel}
- \begin{rxn}
- \arrow{a}{b}
- \setarrowlabel{.5em}
- \arrow{a}{b}
- \end{rxn}
-\end{beispiel}
-
-\subsection{\cmd{setarrowlength}}\label{ssec:setarrowlength}
-The default length of an reaction arrow is \SI{4}{em}. You can change this value
-with
-\begin{beschreibung}
- \Befehl{setarrowlength}{<length>}
-\end{beschreibung}
-into \code{<length>}. Mind the fact that you have to use a length unit. If you
-leave the argument empty the length is reset to default.
-
-\subsection{\cmd{setatomsize}}\label{ssec:setatomsize}
-With
-\begin{beschreibung}
- \Befehl{setatomsize}{<font size>}
-\end{beschreibung}
-you can change the font size of the atom groups. Default value is \cmd*{small}.
-If you leave the argument empty the size is reset to default.
-
-\subsection{\cmd{setbondlength}}\label{ssec:setbondlength}
-With
-\begin{beschreibung}
- \Befehl{setbondlength}{<length>}
-\end{beschreibung}
-you can change \cmd{setatomsep}{<length>}= for all \paket{chemfig} formul\ae\
-\emph{inside} of the \mychemistry environments. The default value is \SI{1.8}{em}.
-If you leave the argument empty the length is reset to default.
-
-\subsection{\cmd{setarrowline}}\label{ssec:setarrowline}
-With the command
-\begin{beschreibung}
- \Befehl{setarrowline}{<value>}
-\end{beschreibung}
-the thickness of the arrows can be customized. Possible values are
- \begin{flushleft}
- \begin{tikzpicture}
- \draw[ultra thin] (0,0)--(1,0)node[right]{\ttfamily ultra thin};
- \draw[very thin] (0,-.5)--(1,-.5)node[right]{\ttfamily very thin};
- \draw[thin] (0,-1)--(1,-1)node[right]{\ttfamily thin};
- \draw[semithick] (0,-1.5)--(1,-1.5)node[right]{{\ttfamily semithick} (default)};
- \draw[thick] (0,-2)--(1,-2)node[right]{\ttfamily thick};
- \draw[very thick] (0,-2.5)--(1,-2.5)node[right]{\ttfamily very thick};
- \draw[ultra thick] (0,-3)--(1,-3)node[right]{\ttfamily ultra thick};
- \end{tikzpicture}
-\end{flushleft}
-
-This command also applies to \cmd{merge}.
-
-\subsection{\cmd{setbondshape}}\label{ssec:setbondshape}
-With
-\begin{beschreibung}
- \Befehl{setbondshape}{<base length>}\ma{<dash thickness>}\ma{<dash spacing>}
-\end{beschreibung}
-you can change \cmd{setcrambond}{<base length>}\ma{<dash thickness>}\ma{<dash spacing>}
-for all \paket{chemfig} formul\ae\ \emph{inside} of the \mychemistry environments.
-Default values are (in this order) \SI{3}{pt}, \SI{.5}{pt} and \SI{1}{pt}. If
-you leave an argument empty the value is reset to default.
-
-\subsection{\cmd{setelmove}}\label{ssec:setelmove}
-The command
-\begin{beschreibung}
- \Befehl{setelmove}{<tikz>}
-\end{beschreibung}
-sets the default style that is used for the lines drawn by \cmd{elmove}. An empty
-argument resets to \code{->,red,shorten <=3pt,shorten >=1pt}.
-
-\subsection{\cmd{setmergelength}}\label{ssec:setmergelength}
-With
-\begin{beschreibung}
- \Befehl{setmergelength}{<length>}
-\end{beschreibung}
-you can change the length of the \cmd{merge} arrow. More precisely you can change
-the length of the arrow from the point of line crossing to the arrow tip (see
-section~\ref{ssec:merge}). If you leave the argument empty the value is reset to
-default (\SI{3}{em}).
-
-\subsection{\cmd{setrcndist}}\label{ssec:setrcndist}
-The nodes within which the reactants an arrows are set have a certain distance
-between them. The default distance is \SI{1}{em}. If you want to change that you
-can use
-\begin{beschreibung}
- \Befehl{setrcndist}{<length>}
-\end{beschreibung}
-If you leave the argument empty the distance is reset to \SI{1}{em}.
-\begin{beispiel}
- \setrcndist{2em}
- \begin{rxn}
- \reactant{A}\arrow{}{}
- \end{rxn}
- \setrcndist{}
- \begin{rxn}
- \reactant{A}\arrow{}{}
- \end{rxn}
-\end{beispiel}
-
-\subsection{\cmd{setrxnalign}/\cmd{setschemealign}}\label{ssec:setrxnalign}\label{ssec:setschemealign}
-With the commands
-\begin{beschreibung}
- \Befehl{setrxnalign}{<alignment>}
- \Befehl{setschemealign}{<alignment>}
-\end{beschreibung}
-The default alignment behaviour of \env{rxn}{} and \env{rxnscheme}{} (see
-sections~\ref{sssec:rxn_optionen} and \ref{sssec:rxnscheme_optionen}) can be set.
-You can choose between \code{left}, \code{center} and \code{right}.
-
-If you leave the argument empty \mychemistry's default behaviour (\code{center})
-is restored.
-\begin{beispiel}
- \setrxnalign{right}
- \begin{rxn}
- \reactant{A}\arrow{}{}\reactant{B}
- \end{rxn}
- \setrxnalign{}
- \begin{rxn}
- \reactant{A}\arrow{}{}\reactant{B}
- \end{rxn}
-\end{beispiel}
-
-\subsection{\cmd{setschemename}}\label{ssec:setschemename}
-See page~\pageref{par:rxnscheme_name}.
-
-\subsection{\cmd{transition}}\label{ssec:transition}
-\cmd{transition} works exactly like \cmd{reactant} (see section~\ref{ssec:reactant}).
-\begin{beschreibung}
- \Befehl{transition}[<pos>,<anchor>,<tikz>]{<formula>}
-\end{beschreibung}
-\begin{beispiel}
- \begin{rxn}
- \reactant{ \ch{H2 + I2} }
- \arrow[below,<=>,.5]{}{}
- \transition[below]{ \chemfig[dotted][]{H?-I-[2]I-[4]H?} }
- \arrow[below,<=>,.5]{}{}
- \reactant[below]{ \ch{2 HI} }
- \end{rxn}
-\end{beispiel}
-
-\appendix
-\printindex
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/physconst/CHANGELOG.md b/macros/latex/contrib/physconst/CHANGELOG.md
index c765c612a0..ec507efcf5 100644
--- a/macros/latex/contrib/physconst/CHANGELOG.md
+++ b/macros/latex/contrib/physconst/CHANGELOG.md
@@ -59,3 +59,18 @@ Stefan-Boltzmann constants were incorrect.
- Corrected formatting of README file.
- Fixed sections of macros - the individual macros were unintentionally
subsections of the Naming Conversion
+## [1.1.1] - 2020/03/26
+### Added
+- Acknowledgements section of documentation
+- Bug reporting section of documentation
+- Prerequisites / Dependencies section of documentation
+### Changes
+- The shortconst option was having the opposite of the intended effect. When
+not specified, constants were appearing with reduced precision, and when
+specified, constants had full precision. Fixed operation to be as intended.
+- Corrected changelog (in the .pdf) and overall version of the file to
+correctly be 1.1.x instead of 1.0.2
+- Upgraded macros subsection to section (this was a prior bug).
+- Corrected the description of the source of astronomical constants within the
+introduction.
+
diff --git a/macros/latex/contrib/physconst/physconst.dtx b/macros/latex/contrib/physconst/physconst.dtx
index 7ade189381..498759fa43 100644
--- a/macros/latex/contrib/physconst/physconst.dtx
+++ b/macros/latex/contrib/physconst/physconst.dtx
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1994/06/01]
%<package> \ProvidesPackage{physconst}
%<*package>
- [2020/01/26 v1.0.2 physconst package]
+ [2020/03/26 v1.1.1 physconst package]
%</package>
%<package>\RequirePackage{physunits}
%<package>\DeclareOption{shortconst}{ \typeout{physconst: reduced precision}%
@@ -72,10 +72,12 @@
% \changes{v1.0.0}{2020/01/25}{Initial version.}
% \changes{v1.0.1}{2020/01/25}{Add options section and fix formatting.}
% \changes{v1.0.2}{2020/01/26}{External changes for distribution.}
+% \changes{v1.1.0}{2020/02/03}{Add Earth, Sun, Jupiter mass and radius, fix Coulomb constant.}
+% \changes{v1.1.1}{2020/03/26}{Fixed bug that shortconst was having the opposite effect than intended. Additions and corrections to documentation.}
%
% \GetFileInfo{physconst.dtx}
-% \DeclareRobustCommand{\fileversion}{v1.0.2}
-% \DeclareRobustCommand{\filedate}{2020/01/26}
+% \DeclareRobustCommand{\fileversion}{v1.1.1}
+% \DeclareRobustCommand{\filedate}{2020/03/26}
%
% \DoNotIndex{\DeclareRobustCommand,\newenvironment,\DeclareRobustCommand%
% ,\left,\right,\textbf,\mathrm}
@@ -89,6 +91,7 @@
% \setlength{\parskip}{1em}
%
% \section{Introduction}
+% \changes{v1.1.1}{2020/03/26}{Corrected source of astronomical constants within the introduction.}
%
%
% This package consists of several macros that are shorthand for a variety of
@@ -101,9 +104,10 @@
% classroom settings, homework assignments, etc.
%
% Most constants are taken from CODATA 2018, with the exception of the
-% astronomical objects, whose values are taken from their current wikipedia
-% entries. If you have an interest and/or need for more reliable data,
-% please contact me.
+% astronomical objects, whose values are taken from International Astronomical
+% Union specified values. Constants that are derived from true constants, e.g.
+% the fine structure constant, have been calculated using the accepted values
+% of the fundamental constants.
%
%\subsection{Options}
%
@@ -123,10 +127,32 @@
% decimal portion of full precision constants. E.g. the elementary charge
% would appear as $1.602176634\times10^{-19}\Coulomb$ instead of
% $1.602\,176\,634\times10^{-19}\Coulomb$. (notice the gaps between digits
-% in the latter.
+% in the latter.)
%
-%\subsection{Macros}
+% \section{Prerequisites / Dependencies}
+% \changes{v1.1.1}{2020/03/26}{Added section for dependencies.}
%
+% \subsection{General}
+% This package requires the \verb|physunits| package.%
+% \subsection{Generating Documentation}
+% \verb|hyperref|, \verb|xcolor|, \verb|mdframed|, and
+% \verb|imakeidx| packages are required to generate the documentation
+% (this file) for this package.
+%
+% \section{Acknowledgements}
+% \changes{v1.1.1}{2020/03/26}{Added section for acknowledgements.}
+%
+% The author would like to thank Dr. Florian Leupold for catching a glaring
+% error in the shortconst option.%
+% \section{Bug Reporting}
+% \changes{v1.1.1}{2020/03/26}{Added section for bug reporting.}
+%
+% Please report bugs or issues in this package using github, at
+% \url{https://github.com/astrobit/physconst/issues}.%
+%
+%\section{Macros}
+%
+% \changes{v1.1.1}{2020/03/26}{Upgraded macros to a section instead of a subsection.}
%
%\subsection{Normal Macros}
%
@@ -5633,18 +5659,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassElectron}{%
-\k@SI@short@MassElectron}
+\k@SI@full@MassElectron}
\else
\DeclareRobustCommand {\kMassElectron}{%
-\k@SI@full@MassElectron}
+\k@SI@short@MassElectron}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassElectron}{%
-\k@cgs@short@MassElectron}
+\k@cgs@full@MassElectron}
\else
\DeclareRobustCommand {\kMassElectron}{%
-\k@cgs@full@MassElectron}
+\k@cgs@short@MassElectron}
\fi
\fi
% \end{macrocode}
@@ -5664,10 +5690,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVMassElectron}{%
-\k@eV@short@MassElectron}
+\k@eV@full@MassElectron}
\else
\DeclareRobustCommand {\keVMassElectron}{%
-\k@eV@full@MassElectron}
+\k@eV@short@MassElectron}
\fi
% \end{macrocode}
% \end{macro}
@@ -5807,18 +5833,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassElectronNumeric}{%
-\k@SI@short@MassElectronNumeric}
+\k@SI@full@MassElectronNumeric}
\else
\DeclareRobustCommand {\kMassElectronNumeric}{%
-\k@SI@full@MassElectronNumeric}
+\k@SI@short@MassElectronNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassElectronNumeric}{%
-\k@cgs@short@MassElectronNumeric}
+\k@cgs@full@MassElectronNumeric}
\else
\DeclareRobustCommand {\kMassElectronNumeric}{%
-\k@cgs@full@MassElectronNumeric}
+\k@cgs@short@MassElectronNumeric}
\fi
\fi
% \end{macrocode}
@@ -5838,10 +5864,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVMassElectronNumeric}{%
-\k@eV@short@MassElectronNumeric}
+\k@eV@full@MassElectronNumeric}
\else
\DeclareRobustCommand {\keVMassElectronNumeric}{%
-\k@eV@full@MassElectronNumeric}
+\k@eV@short@MassElectronNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -5994,18 +6020,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassProton}{%
-\k@SI@short@MassProton}
+\k@SI@full@MassProton}
\else
\DeclareRobustCommand {\kMassProton}{%
-\k@SI@full@MassProton}
+\k@SI@short@MassProton}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassProton}{%
-\k@cgs@short@MassProton}
+\k@cgs@full@MassProton}
\else
\DeclareRobustCommand {\kMassProton}{%
-\k@cgs@full@MassProton}
+\k@cgs@short@MassProton}
\fi
\fi
% \end{macrocode}
@@ -6025,10 +6051,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVMassProton}{%
-\k@eV@short@MassProton}
+\k@eV@full@MassProton}
\else
\DeclareRobustCommand {\keVMassProton}{%
-\k@eV@full@MassProton}
+\k@eV@short@MassProton}
\fi
% \end{macrocode}
% \end{macro}
@@ -6166,18 +6192,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassProtonNumeric}{%
-\k@SI@short@MassProtonNumeric}
+\k@SI@full@MassProtonNumeric}
\else
\DeclareRobustCommand {\kMassProtonNumeric}{%
-\k@SI@full@MassProtonNumeric}
+\k@SI@short@MassProtonNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassProtonNumeric}{%
-\k@cgs@short@MassProtonNumeric}
+\k@cgs@full@MassProtonNumeric}
\else
\DeclareRobustCommand {\kMassProtonNumeric}{%
-\k@cgs@full@MassProtonNumeric}
+\k@cgs@short@MassProtonNumeric}
\fi
\fi
% \end{macrocode}
@@ -6197,10 +6223,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVMassProtonNumeric}{%
-\k@eV@short@MassProtonNumeric}
+\k@eV@full@MassProtonNumeric}
\else
\DeclareRobustCommand {\keVMassProtonNumeric}{%
-\k@eV@full@MassProtonNumeric}
+\k@eV@short@MassProtonNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -6355,18 +6381,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassHydrogen}{%
-\k@SI@short@MassHydrogen}
+\k@SI@full@MassHydrogen}
\else
\DeclareRobustCommand {\kMassHydrogen}{%
-\k@SI@full@MassHydrogen}
+\k@SI@short@MassHydrogen}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassHydrogen}{%
-\k@cgs@short@MassHydrogen}
+\k@cgs@full@MassHydrogen}
\else
\DeclareRobustCommand {\kMassHydrogen}{%
-\k@cgs@full@MassHydrogen}
+\k@cgs@short@MassHydrogen}
\fi
\fi
% \end{macrocode}
@@ -6386,10 +6412,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVMassHydrogen}{%
-\k@eV@short@MassHydrogen}
+\k@eV@full@MassHydrogen}
\else
\DeclareRobustCommand {\keVMassHydrogen}{%
-\k@eV@full@MassHydrogen}
+\k@eV@short@MassHydrogen}
\fi
% \end{macrocode}
% \end{macro}
@@ -6529,18 +6555,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassHydrogenNumeric}{%
-\k@SI@short@MassHydrogenNumeric}
+\k@SI@full@MassHydrogenNumeric}
\else
\DeclareRobustCommand {\kMassHydrogenNumeric}{%
-\k@SI@full@MassHydrogenNumeric}
+\k@SI@short@MassHydrogenNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassHydrogenNumeric}{%
-\k@cgs@short@MassHydrogenNumeric}
+\k@cgs@full@MassHydrogenNumeric}
\else
\DeclareRobustCommand {\kMassHydrogenNumeric}{%
-\k@cgs@full@MassHydrogenNumeric}
+\k@cgs@short@MassHydrogenNumeric}
\fi
\fi
% \end{macrocode}
@@ -6560,10 +6586,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVMassHydrogenNumeric}{%
-\k@eV@short@MassHydrogenNumeric}
+\k@eV@full@MassHydrogenNumeric}
\else
\DeclareRobustCommand {\keVMassHydrogenNumeric}{%
-\k@eV@full@MassHydrogenNumeric}
+\k@eV@short@MassHydrogenNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -6659,18 +6685,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassSun}{%
-\k@SI@short@MassSun}
+\k@SI@full@MassSun}
\else
\DeclareRobustCommand {\kMassSun}{%
-\k@SI@full@MassSun}
+\k@SI@short@MassSun}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassSun}{%
-\k@cgs@short@MassSun}
+\k@cgs@full@MassSun}
\else
\DeclareRobustCommand {\kMassSun}{%
-\k@cgs@full@MassSun}
+\k@cgs@short@MassSun}
\fi
\fi
% \end{macrocode}
@@ -6759,18 +6785,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassSunNumeric}{%
-\k@SI@short@MassSunNumeric}
+\k@SI@full@MassSunNumeric}
\else
\DeclareRobustCommand {\kMassSunNumeric}{%
-\k@SI@full@MassSunNumeric}
+\k@SI@short@MassSunNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassSunNumeric}{%
-\k@cgs@short@MassSunNumeric}
+\k@cgs@full@MassSunNumeric}
\else
\DeclareRobustCommand {\kMassSunNumeric}{%
-\k@cgs@full@MassSunNumeric}
+\k@cgs@short@MassSunNumeric}
\fi
\fi
% \end{macrocode}
@@ -6828,10 +6854,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassEarth}{%
-\k@short@MassEarth}
+\k@full@MassEarth}
\else
\DeclareRobustCommand {\kMassEarth}{%
-\k@full@MassEarth}
+\k@short@MassEarth}
\fi
% \end{macrocode}
% \end{macro}
@@ -6885,10 +6911,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassEarthNumeric}{%
-\k@short@MassEarthNumeric}
+\k@full@MassEarthNumeric}
\else
\DeclareRobustCommand {\kMassEarthNumeric}{%
-\k@full@MassEarthNumeric}
+\k@short@MassEarthNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -6946,10 +6972,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassJupiter}{%
-\k@short@MassJupiter}
+\k@full@MassJupiter}
\else
\DeclareRobustCommand {\kMassJupiter}{%
-\k@full@MassJupiter}
+\k@short@MassJupiter}
\fi
% \end{macrocode}
% \end{macro}
@@ -7003,10 +7029,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassJupiterNumeric}{%
-\k@short@MassJupiterNumeric}
+\k@full@MassJupiterNumeric}
\else
\DeclareRobustCommand {\kMassJupiterNumeric}{%
-\k@full@MassJupiterNumeric}
+\k@short@MassJupiterNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -7161,18 +7187,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassAMU}{%
-\k@SI@short@MassAMU}
+\k@SI@full@MassAMU}
\else
\DeclareRobustCommand {\kMassAMU}{%
-\k@SI@full@MassAMU}
+\k@SI@short@MassAMU}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassAMU}{%
-\k@cgs@short@MassAMU}
+\k@cgs@full@MassAMU}
\else
\DeclareRobustCommand {\kMassAMU}{%
-\k@cgs@full@MassAMU}
+\k@cgs@short@MassAMU}
\fi
\fi
% \end{macrocode}
@@ -7192,10 +7218,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVMassAMU}{%
-\k@eV@short@MassAMU}
+\k@eV@full@MassAMU}
\else
\DeclareRobustCommand {\keVMassAMU}{%
-\k@eV@full@MassAMU}
+\k@eV@short@MassAMU}
\fi
% \end{macrocode}
% \end{macro}
@@ -7335,18 +7361,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassAMUNumeric}{%
-\k@SI@short@MassAMUNumeric}
+\k@SI@full@MassAMUNumeric}
\else
\DeclareRobustCommand {\kMassAMUNumeric}{%
-\k@SI@full@MassAMUNumeric}
+\k@SI@short@MassAMUNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kMassAMUNumeric}{%
-\k@cgs@short@MassAMUNumeric}
+\k@cgs@full@MassAMUNumeric}
\else
\DeclareRobustCommand {\kMassAMUNumeric}{%
-\k@cgs@full@MassAMUNumeric}
+\k@cgs@short@MassAMUNumeric}
\fi
\fi
% \end{macrocode}
@@ -7366,10 +7392,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVMassAMUNumeric}{%
-\k@eV@short@MassAMUNumeric}
+\k@eV@full@MassAMUNumeric}
\else
\DeclareRobustCommand {\keVMassAMUNumeric}{%
-\k@eV@full@MassAMUNumeric}
+\k@eV@short@MassAMUNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -7470,18 +7496,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeFundamental}{%
-\k@SI@short@ChargeFundamental}
+\k@SI@full@ChargeFundamental}
\else
\DeclareRobustCommand {\kChargeFundamental}{%
-\k@SI@full@ChargeFundamental}
+\k@SI@short@ChargeFundamental}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeFundamental}{%
-\k@cgs@short@ChargeFundamental}
+\k@cgs@full@ChargeFundamental}
\else
\DeclareRobustCommand {\kChargeFundamental}{%
-\k@cgs@full@ChargeFundamental}
+\k@cgs@short@ChargeFundamental}
\fi
\fi
% \end{macrocode}
@@ -7572,18 +7598,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeFundamentalNumeric}{%
-\k@SI@short@ChargeFundamentalNumeric}
+\k@SI@full@ChargeFundamentalNumeric}
\else
\DeclareRobustCommand {\kChargeFundamentalNumeric}{%
-\k@SI@full@ChargeFundamentalNumeric}
+\k@SI@short@ChargeFundamentalNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeFundamentalNumeric}{%
-\k@cgs@short@ChargeFundamentalNumeric}
+\k@cgs@full@ChargeFundamentalNumeric}
\else
\DeclareRobustCommand {\kChargeFundamentalNumeric}{%
-\k@cgs@full@ChargeFundamentalNumeric}
+\k@cgs@short@ChargeFundamentalNumeric}
\fi
\fi
% \end{macrocode}
@@ -7682,18 +7708,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeElectron}{%
-\k@SI@short@ChargeElectron}
+\k@SI@full@ChargeElectron}
\else
\DeclareRobustCommand {\kChargeElectron}{%
-\k@SI@full@ChargeElectron}
+\k@SI@short@ChargeElectron}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeElectron}{%
-\k@cgs@short@ChargeElectron}
+\k@cgs@full@ChargeElectron}
\else
\DeclareRobustCommand {\kChargeElectron}{%
-\k@cgs@full@ChargeElectron}
+\k@cgs@short@ChargeElectron}
\fi
\fi
% \end{macrocode}
@@ -7784,18 +7810,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeElectronNumeric}{%
-\k@SI@short@ChargeElectronNumeric}
+\k@SI@full@ChargeElectronNumeric}
\else
\DeclareRobustCommand {\kChargeElectronNumeric}{%
-\k@SI@full@ChargeElectronNumeric}
+\k@SI@short@ChargeElectronNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeElectronNumeric}{%
-\k@cgs@short@ChargeElectronNumeric}
+\k@cgs@full@ChargeElectronNumeric}
\else
\DeclareRobustCommand {\kChargeElectronNumeric}{%
-\k@cgs@full@ChargeElectronNumeric}
+\k@cgs@short@ChargeElectronNumeric}
\fi
\fi
% \end{macrocode}
@@ -7894,18 +7920,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeProton}{%
-\k@SI@short@ChargeProton}
+\k@SI@full@ChargeProton}
\else
\DeclareRobustCommand {\kChargeProton}{%
-\k@SI@full@ChargeProton}
+\k@SI@short@ChargeProton}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeProton}{%
-\k@cgs@short@ChargeProton}
+\k@cgs@full@ChargeProton}
\else
\DeclareRobustCommand {\kChargeProton}{%
-\k@cgs@full@ChargeProton}
+\k@cgs@short@ChargeProton}
\fi
\fi
% \end{macrocode}
@@ -7996,18 +8022,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeProtonNumeric}{%
-\k@SI@short@ChargeProtonNumeric}
+\k@SI@full@ChargeProtonNumeric}
\else
\DeclareRobustCommand {\kChargeProtonNumeric}{%
-\k@SI@full@ChargeProtonNumeric}
+\k@SI@short@ChargeProtonNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kChargeProtonNumeric}{%
-\k@cgs@short@ChargeProtonNumeric}
+\k@cgs@full@ChargeProtonNumeric}
\else
\DeclareRobustCommand {\kChargeProtonNumeric}{%
-\k@cgs@full@ChargeProtonNumeric}
+\k@cgs@short@ChargeProtonNumeric}
\fi
\fi
% \end{macrocode}
@@ -8109,18 +8135,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusBohr}{%
-\k@SI@short@RadiusBohr}
+\k@SI@full@RadiusBohr}
\else
\DeclareRobustCommand {\kRadiusBohr}{%
-\k@SI@full@RadiusBohr}
+\k@SI@short@RadiusBohr}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusBohr}{%
-\k@cgs@short@RadiusBohr}
+\k@cgs@full@RadiusBohr}
\else
\DeclareRobustCommand {\kRadiusBohr}{%
-\k@cgs@full@RadiusBohr}
+\k@cgs@short@RadiusBohr}
\fi
\fi
% \end{macrocode}
@@ -8211,18 +8237,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusBohrNumeric}{%
-\k@SI@short@RadiusBohrNumeric}
+\k@SI@full@RadiusBohrNumeric}
\else
\DeclareRobustCommand {\kRadiusBohrNumeric}{%
-\k@SI@full@RadiusBohrNumeric}
+\k@SI@short@RadiusBohrNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusBohrNumeric}{%
-\k@cgs@short@RadiusBohrNumeric}
+\k@cgs@full@RadiusBohrNumeric}
\else
\DeclareRobustCommand {\kRadiusBohrNumeric}{%
-\k@cgs@full@RadiusBohrNumeric}
+\k@cgs@short@RadiusBohrNumeric}
\fi
\fi
% \end{macrocode}
@@ -8322,18 +8348,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kAstronomicalUnit}{%
-\k@SI@short@AstronomicalUnit}
+\k@SI@full@AstronomicalUnit}
\else
\DeclareRobustCommand {\kAstronomicalUnit}{%
-\k@SI@full@AstronomicalUnit}
+\k@SI@short@AstronomicalUnit}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kAstronomicalUnit}{%
-\k@cgs@short@AstronomicalUnit}
+\k@cgs@full@AstronomicalUnit}
\else
\DeclareRobustCommand {\kAstronomicalUnit}{%
-\k@cgs@full@AstronomicalUnit}
+\k@cgs@short@AstronomicalUnit}
\fi
\fi
% \end{macrocode}
@@ -8425,18 +8451,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kAstronomicalUnitNumeric}{%
-\k@SI@short@AstronomicalUnitNumeric}
+\k@SI@full@AstronomicalUnitNumeric}
\else
\DeclareRobustCommand {\kAstronomicalUnitNumeric}{%
-\k@SI@full@AstronomicalUnitNumeric}
+\k@SI@short@AstronomicalUnitNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kAstronomicalUnitNumeric}{%
-\k@cgs@short@AstronomicalUnitNumeric}
+\k@cgs@full@AstronomicalUnitNumeric}
\else
\DeclareRobustCommand {\kAstronomicalUnitNumeric}{%
-\k@cgs@full@AstronomicalUnitNumeric}
+\k@cgs@short@AstronomicalUnitNumeric}
\fi
\fi
% \end{macrocode}
@@ -8535,18 +8561,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kParsec}{%
-\k@SI@short@Parsec}
+\k@SI@full@Parsec}
\else
\DeclareRobustCommand {\kParsec}{%
-\k@SI@full@Parsec}
+\k@SI@short@Parsec}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kParsec}{%
-\k@cgs@short@Parsec}
+\k@cgs@full@Parsec}
\else
\DeclareRobustCommand {\kParsec}{%
-\k@cgs@full@Parsec}
+\k@cgs@short@Parsec}
\fi
\fi
% \end{macrocode}
@@ -8637,18 +8663,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kParsecNumeric}{%
-\k@SI@short@ParsecNumeric}
+\k@SI@full@ParsecNumeric}
\else
\DeclareRobustCommand {\kParsecNumeric}{%
-\k@SI@full@ParsecNumeric}
+\k@SI@short@ParsecNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kParsecNumeric}{%
-\k@cgs@short@ParsecNumeric}
+\k@cgs@full@ParsecNumeric}
\else
\DeclareRobustCommand {\kParsecNumeric}{%
-\k@cgs@full@ParsecNumeric}
+\k@cgs@short@ParsecNumeric}
\fi
\fi
% \end{macrocode}
@@ -8743,18 +8769,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusSun}{%
-\k@SI@short@RadiusSun}
+\k@SI@full@RadiusSun}
\else
\DeclareRobustCommand {\kRadiusSun}{%
-\k@SI@full@RadiusSun}
+\k@SI@short@RadiusSun}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusSun}{%
-\k@cgs@short@RadiusSun}
+\k@cgs@full@RadiusSun}
\else
\DeclareRobustCommand {\kRadiusSun}{%
-\k@cgs@full@RadiusSun}
+\k@cgs@short@RadiusSun}
\fi
\fi
% \end{macrocode}
@@ -8845,18 +8871,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusSunNumeric}{%
-\k@SI@short@RadiusSunNumeric}
+\k@SI@full@RadiusSunNumeric}
\else
\DeclareRobustCommand {\kRadiusSunNumeric}{%
-\k@SI@full@RadiusSunNumeric}
+\k@SI@short@RadiusSunNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusSunNumeric}{%
-\k@cgs@short@RadiusSunNumeric}
+\k@cgs@full@RadiusSunNumeric}
\else
\DeclareRobustCommand {\kRadiusSunNumeric}{%
-\k@cgs@full@RadiusSunNumeric}
+\k@cgs@short@RadiusSunNumeric}
\fi
\fi
% \end{macrocode}
@@ -8914,10 +8940,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusEarth}{%
-\k@short@RadiusEarth}
+\k@full@RadiusEarth}
\else
\DeclareRobustCommand {\kRadiusEarth}{%
-\k@full@RadiusEarth}
+\k@short@RadiusEarth}
\fi
% \end{macrocode}
% \end{macro}
@@ -8971,10 +8997,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusEarthNumeric}{%
-\k@short@RadiusEarthNumeric}
+\k@full@RadiusEarthNumeric}
\else
\DeclareRobustCommand {\kRadiusEarthNumeric}{%
-\k@full@RadiusEarthNumeric}
+\k@short@RadiusEarthNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -9031,10 +9057,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusJupiter}{%
-\k@short@RadiusJupiter}
+\k@full@RadiusJupiter}
\else
\DeclareRobustCommand {\kRadiusJupiter}{%
-\k@full@RadiusJupiter}
+\k@short@RadiusJupiter}
\fi
% \end{macrocode}
% \end{macro}
@@ -9088,10 +9114,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiusJupiterNumeric}{%
-\k@short@RadiusJupiterNumeric}
+\k@full@RadiusJupiterNumeric}
\else
\DeclareRobustCommand {\kRadiusJupiterNumeric}{%
-\k@full@RadiusJupiterNumeric}
+\k@short@RadiusJupiterNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -9232,18 +9258,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRydberg}{%
-\k@SI@short@Rydberg}
+\k@SI@full@Rydberg}
\else
\DeclareRobustCommand {\kRydberg}{%
-\k@SI@full@Rydberg}
+\k@SI@short@Rydberg}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRydberg}{%
-\k@cgs@short@Rydberg}
+\k@cgs@full@Rydberg}
\else
\DeclareRobustCommand {\kRydberg}{%
-\k@cgs@full@Rydberg}
+\k@cgs@short@Rydberg}
\fi
\fi
% \end{macrocode}
@@ -9261,10 +9287,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVRydberg}{%
-\k@eV@short@Rydberg}
+\k@eV@full@Rydberg}
\else
\DeclareRobustCommand {\keVRydberg}{%
-\k@eV@full@Rydberg}
+\k@eV@short@Rydberg}
\fi
% \end{macrocode}
% \end{macro}
@@ -9390,18 +9416,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRydbergNumeric}{%
-\k@SI@short@RydbergNumeric}
+\k@SI@full@RydbergNumeric}
\else
\DeclareRobustCommand {\kRydbergNumeric}{%
-\k@SI@full@RydbergNumeric}
+\k@SI@short@RydbergNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRydbergNumeric}{%
-\k@cgs@short@RydbergNumeric}
+\k@cgs@full@RydbergNumeric}
\else
\DeclareRobustCommand {\kRydbergNumeric}{%
-\k@cgs@full@RydbergNumeric}
+\k@cgs@short@RydbergNumeric}
\fi
\fi
% \end{macrocode}
@@ -9419,10 +9445,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVRydbergNumeric}{%
-\k@eV@short@RydbergNumeric}
+\k@eV@full@RydbergNumeric}
\else
\DeclareRobustCommand {\keVRydbergNumeric}{%
-\k@eV@full@RydbergNumeric}
+\k@eV@short@RydbergNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -9516,18 +9542,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kLuminositySun}{%
-\k@SI@short@LuminositySun}
+\k@SI@full@LuminositySun}
\else
\DeclareRobustCommand {\kLuminositySun}{%
-\k@SI@full@LuminositySun}
+\k@SI@short@LuminositySun}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kLuminositySun}{%
-\k@cgs@short@LuminositySun}
+\k@cgs@full@LuminositySun}
\else
\DeclareRobustCommand {\kLuminositySun}{%
-\k@cgs@full@LuminositySun}
+\k@cgs@short@LuminositySun}
\fi
\fi
% \end{macrocode}
@@ -9618,18 +9644,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kLuminositySunNumeric}{%
-\k@SI@short@LuminositySunNumeric}
+\k@SI@full@LuminositySunNumeric}
\else
\DeclareRobustCommand {\kLuminositySunNumeric}{%
-\k@SI@full@LuminositySunNumeric}
+\k@SI@short@LuminositySunNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kLuminositySunNumeric}{%
-\k@cgs@short@LuminositySunNumeric}
+\k@cgs@full@LuminositySunNumeric}
\else
\DeclareRobustCommand {\kLuminositySunNumeric}{%
-\k@cgs@full@LuminositySunNumeric}
+\k@cgs@short@LuminositySunNumeric}
\fi
\fi
% \end{macrocode}
@@ -9732,18 +9758,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPressureAtmosphere}{%
-\k@SI@short@PressureAtmosphere}
+\k@SI@full@PressureAtmosphere}
\else
\DeclareRobustCommand {\kPressureAtmosphere}{%
-\k@SI@full@PressureAtmosphere}
+\k@SI@short@PressureAtmosphere}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPressureAtmosphere}{%
-\k@cgs@short@PressureAtmosphere}
+\k@cgs@full@PressureAtmosphere}
\else
\DeclareRobustCommand {\kPressureAtmosphere}{%
-\k@cgs@full@PressureAtmosphere}
+\k@cgs@short@PressureAtmosphere}
\fi
\fi
% \end{macrocode}
@@ -9839,18 +9865,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPressureAtmosphereNumeric}{%
-\k@SI@short@PressureAtmosphereNumeric}
+\k@SI@full@PressureAtmosphereNumeric}
\else
\DeclareRobustCommand {\kPressureAtmosphereNumeric}{%
-\k@SI@full@PressureAtmosphereNumeric}
+\k@SI@short@PressureAtmosphereNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPressureAtmosphereNumeric}{%
-\k@cgs@short@PressureAtmosphereNumeric}
+\k@cgs@full@PressureAtmosphereNumeric}
\else
\DeclareRobustCommand {\kPressureAtmosphereNumeric}{%
-\k@cgs@full@PressureAtmosphereNumeric}
+\k@cgs@short@PressureAtmosphereNumeric}
\fi
\fi
% \end{macrocode}
@@ -9950,18 +9976,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPressureStandard}{%
-\k@SI@short@PressureStandard}
+\k@SI@full@PressureStandard}
\else
\DeclareRobustCommand {\kPressureStandard}{%
-\k@SI@full@PressureStandard}
+\k@SI@short@PressureStandard}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPressureStandard}{%
-\k@cgs@short@PressureStandard}
+\k@cgs@full@PressureStandard}
\else
\DeclareRobustCommand {\kPressureStandard}{%
-\k@cgs@full@PressureStandard}
+\k@cgs@short@PressureStandard}
\fi
\fi
% \end{macrocode}
@@ -10057,18 +10083,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPressureStandardNumeric}{%
-\k@SI@short@PressureStandardNumeric}
+\k@SI@full@PressureStandardNumeric}
\else
\DeclareRobustCommand {\kPressureStandardNumeric}{%
-\k@SI@full@PressureStandardNumeric}
+\k@SI@short@PressureStandardNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPressureStandardNumeric}{%
-\k@cgs@short@PressureStandardNumeric}
+\k@cgs@full@PressureStandardNumeric}
\else
\DeclareRobustCommand {\kPressureStandardNumeric}{%
-\k@cgs@full@PressureStandardNumeric}
+\k@cgs@short@PressureStandardNumeric}
\fi
\fi
% \end{macrocode}
@@ -10169,18 +10195,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kSpeedLight}{%
-\k@SI@short@SpeedLight}
+\k@SI@full@SpeedLight}
\else
\DeclareRobustCommand {\kSpeedLight}{%
-\k@SI@full@SpeedLight}
+\k@SI@short@SpeedLight}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kSpeedLight}{%
-\k@cgs@short@SpeedLight}
+\k@cgs@full@SpeedLight}
\else
\DeclareRobustCommand {\kSpeedLight}{%
-\k@cgs@full@SpeedLight}
+\k@cgs@short@SpeedLight}
\fi
\fi
% \end{macrocode}
@@ -10270,18 +10296,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kSpeedLightNumeric}{%
-\k@SI@short@SpeedLightNumeric}
+\k@SI@full@SpeedLightNumeric}
\else
\DeclareRobustCommand {\kSpeedLightNumeric}{%
-\k@SI@full@SpeedLightNumeric}
+\k@SI@short@SpeedLightNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kSpeedLightNumeric}{%
-\k@cgs@short@SpeedLightNumeric}
+\k@cgs@full@SpeedLightNumeric}
\else
\DeclareRobustCommand {\kSpeedLightNumeric}{%
-\k@cgs@full@SpeedLightNumeric}
+\k@cgs@short@SpeedLightNumeric}
\fi
\fi
% \end{macrocode}
@@ -10387,18 +10413,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kAccelGravity}{%
-\k@SI@short@AccelGravity}
+\k@SI@full@AccelGravity}
\else
\DeclareRobustCommand {\kAccelGravity}{%
-\k@SI@full@AccelGravity}
+\k@SI@short@AccelGravity}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kAccelGravity}{%
-\k@cgs@short@AccelGravity}
+\k@cgs@full@AccelGravity}
\else
\DeclareRobustCommand {\kAccelGravity}{%
-\k@cgs@full@AccelGravity}
+\k@cgs@short@AccelGravity}
\fi
\fi
% \end{macrocode}
@@ -10500,18 +10526,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kAccelGravityNumeric}{%
-\k@SI@short@AccelGravityNumeric}
+\k@SI@full@AccelGravityNumeric}
\else
\DeclareRobustCommand {\kAccelGravityNumeric}{%
-\k@SI@full@AccelGravityNumeric}
+\k@SI@short@AccelGravityNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kAccelGravityNumeric}{%
-\k@cgs@short@AccelGravityNumeric}
+\k@cgs@full@AccelGravityNumeric}
\else
\DeclareRobustCommand {\kAccelGravityNumeric}{%
-\k@cgs@full@AccelGravityNumeric}
+\k@cgs@short@AccelGravityNumeric}
\fi
\fi
% \end{macrocode}
@@ -10616,18 +10642,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kCoulomb}{%
-\k@SI@short@Coulomb}
+\k@SI@full@Coulomb}
\else
\DeclareRobustCommand {\kCoulomb}{%
-\k@SI@full@Coulomb}
+\k@SI@short@Coulomb}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kCoulomb}{%
-\k@cgs@short@Coulomb}
+\k@cgs@full@Coulomb}
\else
\DeclareRobustCommand {\kCoulomb}{%
-\k@cgs@full@Coulomb}
+\k@cgs@short@Coulomb}
\fi
\fi
% \end{macrocode}
@@ -10723,18 +10749,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kCoulombNumeric}{%
-\k@SI@short@CoulombNumeric}
+\k@SI@full@CoulombNumeric}
\else
\DeclareRobustCommand {\kCoulombNumeric}{%
-\k@SI@full@CoulombNumeric}
+\k@SI@short@CoulombNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kCoulombNumeric}{%
-\k@cgs@short@CoulombNumeric}
+\k@cgs@full@CoulombNumeric}
\else
\DeclareRobustCommand {\kCoulombNumeric}{%
-\k@cgs@full@CoulombNumeric}
+\k@cgs@short@CoulombNumeric}
\fi
\fi
% \end{macrocode}
@@ -10835,18 +10861,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kVacuumPermittivity}{%
-\k@SI@short@VacuumPermittivity}
+\k@SI@full@VacuumPermittivity}
\else
\DeclareRobustCommand {\kVacuumPermittivity}{%
-\k@SI@full@VacuumPermittivity}
+\k@SI@short@VacuumPermittivity}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kVacuumPermittivity}{%
-\k@cgs@short@VacuumPermittivity}
+\k@cgs@full@VacuumPermittivity}
\else
\DeclareRobustCommand {\kVacuumPermittivity}{%
-\k@cgs@full@VacuumPermittivity}
+\k@cgs@short@VacuumPermittivity}
\fi
\fi
% \end{macrocode}
@@ -10937,18 +10963,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kVacuumPermittivityNumeric}{%
-\k@SI@short@VacuumPermittivityNumeric}
+\k@SI@full@VacuumPermittivityNumeric}
\else
\DeclareRobustCommand {\kVacuumPermittivityNumeric}{%
-\k@SI@full@VacuumPermittivityNumeric}
+\k@SI@short@VacuumPermittivityNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kVacuumPermittivityNumeric}{%
-\k@cgs@short@VacuumPermittivityNumeric}
+\k@cgs@full@VacuumPermittivityNumeric}
\else
\DeclareRobustCommand {\kVacuumPermittivityNumeric}{%
-\k@cgs@full@VacuumPermittivityNumeric}
+\k@cgs@short@VacuumPermittivityNumeric}
\fi
\fi
% \end{macrocode}
@@ -11054,18 +11080,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kVacuumPermeability}{%
-\k@SI@short@VacuumPermeability}
+\k@SI@full@VacuumPermeability}
\else
\DeclareRobustCommand {\kVacuumPermeability}{%
-\k@SI@full@VacuumPermeability}
+\k@SI@short@VacuumPermeability}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kVacuumPermeability}{%
-\k@cgs@short@VacuumPermeability}
+\k@cgs@full@VacuumPermeability}
\else
\DeclareRobustCommand {\kVacuumPermeability}{%
-\k@cgs@full@VacuumPermeability}
+\k@cgs@short@VacuumPermeability}
\fi
\fi
% \end{macrocode}
@@ -11161,18 +11187,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kVacuumPermeabilityNumeric}{%
-\k@SI@short@VacuumPermeabilityNumeric}
+\k@SI@full@VacuumPermeabilityNumeric}
\else
\DeclareRobustCommand {\kVacuumPermeabilityNumeric}{%
-\k@SI@full@VacuumPermeabilityNumeric}
+\k@SI@short@VacuumPermeabilityNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kVacuumPermeabilityNumeric}{%
-\k@cgs@short@VacuumPermeabilityNumeric}
+\k@cgs@full@VacuumPermeabilityNumeric}
\else
\DeclareRobustCommand {\kVacuumPermeabilityNumeric}{%
-\k@cgs@full@VacuumPermeabilityNumeric}
+\k@cgs@short@VacuumPermeabilityNumeric}
\fi
\fi
% \end{macrocode}
@@ -11231,10 +11257,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kVacuumImpedance}{%
-\k@short@VacuumImpedance}
+\k@full@VacuumImpedance}
\else
\DeclareRobustCommand {\kVacuumImpedance}{%
-\k@full@VacuumImpedance}
+\k@short@VacuumImpedance}
\fi
% \end{macrocode}
% \end{macro}
@@ -11287,10 +11313,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kVacuumImpedanceNumeric}{%
-\k@short@VacuumImpedanceNumeric}
+\k@full@VacuumImpedanceNumeric}
\else
\DeclareRobustCommand {\kVacuumImpedanceNumeric}{%
-\k@full@VacuumImpedanceNumeric}
+\k@short@VacuumImpedanceNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -11424,18 +11450,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kBoltzmann}{%
-\k@SI@short@Boltzmann}
+\k@SI@full@Boltzmann}
\else
\DeclareRobustCommand {\kBoltzmann}{%
-\k@SI@full@Boltzmann}
+\k@SI@short@Boltzmann}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kBoltzmann}{%
-\k@cgs@short@Boltzmann}
+\k@cgs@full@Boltzmann}
\else
\DeclareRobustCommand {\kBoltzmann}{%
-\k@cgs@full@Boltzmann}
+\k@cgs@short@Boltzmann}
\fi
\fi
% \end{macrocode}
@@ -11453,10 +11479,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVBoltzmann}{%
-\k@eV@short@Boltzmann}
+\k@eV@full@Boltzmann}
\else
\DeclareRobustCommand {\keVBoltzmann}{%
-\k@eV@full@Boltzmann}
+\k@eV@short@Boltzmann}
\fi
% \end{macrocode}
% \end{macro}
@@ -11581,18 +11607,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kBoltzmannNumeric}{%
-\k@SI@short@BoltzmannNumeric}
+\k@SI@full@BoltzmannNumeric}
\else
\DeclareRobustCommand {\kBoltzmannNumeric}{%
-\k@SI@full@BoltzmannNumeric}
+\k@SI@short@BoltzmannNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kBoltzmannNumeric}{%
-\k@cgs@short@BoltzmannNumeric}
+\k@cgs@full@BoltzmannNumeric}
\else
\DeclareRobustCommand {\kBoltzmannNumeric}{%
-\k@cgs@full@BoltzmannNumeric}
+\k@cgs@short@BoltzmannNumeric}
\fi
\fi
% \end{macrocode}
@@ -11610,10 +11636,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVBoltzmannNumeric}{%
-\k@eV@short@BoltzmannNumeric}
+\k@eV@full@BoltzmannNumeric}
\else
\DeclareRobustCommand {\keVBoltzmannNumeric}{%
-\k@eV@full@BoltzmannNumeric}
+\k@eV@short@BoltzmannNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -11754,18 +11780,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPlanck}{%
-\k@SI@short@Planck}
+\k@SI@full@Planck}
\else
\DeclareRobustCommand {\kPlanck}{%
-\k@SI@full@Planck}
+\k@SI@short@Planck}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPlanck}{%
-\k@cgs@short@Planck}
+\k@cgs@full@Planck}
\else
\DeclareRobustCommand {\kPlanck}{%
-\k@cgs@full@Planck}
+\k@cgs@short@Planck}
\fi
\fi
% \end{macrocode}
@@ -11784,10 +11810,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVPlanck}{%
-\k@eV@short@Planck}
+\k@eV@full@Planck}
\else
\DeclareRobustCommand {\keVPlanck}{%
-\k@eV@full@Planck}
+\k@eV@short@Planck}
\fi
% \end{macrocode}
% \end{macro}
@@ -11916,18 +11942,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPlanckNumeric}{%
-\k@SI@short@PlanckNumeric}
+\k@SI@full@PlanckNumeric}
\else
\DeclareRobustCommand {\kPlanckNumeric}{%
-\k@SI@full@PlanckNumeric}
+\k@SI@short@PlanckNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPlanckNumeric}{%
-\k@cgs@short@PlanckNumeric}
+\k@cgs@full@PlanckNumeric}
\else
\DeclareRobustCommand {\kPlanckNumeric}{%
-\k@cgs@full@PlanckNumeric}
+\k@cgs@short@PlanckNumeric}
\fi
\fi
% \end{macrocode}
@@ -11946,10 +11972,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVPlanckNumeric}{%
-\k@eV@short@PlanckNumeric}
+\k@eV@full@PlanckNumeric}
\else
\DeclareRobustCommand {\keVPlanckNumeric}{%
-\k@eV@full@PlanckNumeric}
+\k@eV@short@PlanckNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -12095,18 +12121,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPlanckReduced}{%
-\k@SI@short@PlanckReduced}
+\k@SI@full@PlanckReduced}
\else
\DeclareRobustCommand {\kPlanckReduced}{%
-\k@SI@full@PlanckReduced}
+\k@SI@short@PlanckReduced}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPlanckReduced}{%
-\k@cgs@short@PlanckReduced}
+\k@cgs@full@PlanckReduced}
\else
\DeclareRobustCommand {\kPlanckReduced}{%
-\k@cgs@full@PlanckReduced}
+\k@cgs@short@PlanckReduced}
\fi
\fi
% \end{macrocode}
@@ -12126,10 +12152,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVPlanckReduced}{%
-\k@eV@short@PlanckReduced}
+\k@eV@full@PlanckReduced}
\else
\DeclareRobustCommand {\keVPlanckReduced}{%
-\k@eV@full@PlanckReduced}
+\k@eV@short@PlanckReduced}
\fi
% \end{macrocode}
% \end{macro}
@@ -12263,18 +12289,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPlanckReducedNumeric}{%
-\k@SI@short@PlanckReducedNumeric}
+\k@SI@full@PlanckReducedNumeric}
\else
\DeclareRobustCommand {\kPlanckReducedNumeric}{%
-\k@SI@full@PlanckReducedNumeric}
+\k@SI@short@PlanckReducedNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kPlanckReducedNumeric}{%
-\k@cgs@short@PlanckReducedNumeric}
+\k@cgs@full@PlanckReducedNumeric}
\else
\DeclareRobustCommand {\kPlanckReducedNumeric}{%
-\k@cgs@full@PlanckReducedNumeric}
+\k@cgs@short@PlanckReducedNumeric}
\fi
\fi
% \end{macrocode}
@@ -12294,10 +12320,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\keVPlanckReducedNumeric}{%
-\k@eV@short@PlanckReducedNumeric}
+\k@eV@full@PlanckReducedNumeric}
\else
\DeclareRobustCommand {\keVPlanckReducedNumeric}{%
-\k@eV@full@PlanckReducedNumeric}
+\k@eV@short@PlanckReducedNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -12398,18 +12424,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kGravity}{%
-\k@SI@short@Gravity}
+\k@SI@full@Gravity}
\else
\DeclareRobustCommand {\kGravity}{%
-\k@SI@full@Gravity}
+\k@SI@short@Gravity}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kGravity}{%
-\k@cgs@short@Gravity}
+\k@cgs@full@Gravity}
\else
\DeclareRobustCommand {\kGravity}{%
-\k@cgs@full@Gravity}
+\k@cgs@short@Gravity}
\fi
\fi
% \end{macrocode}
@@ -12505,18 +12531,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kGravityNumeric}{%
-\k@SI@short@GravityNumeric}
+\k@SI@full@GravityNumeric}
\else
\DeclareRobustCommand {\kGravityNumeric}{%
-\k@SI@full@GravityNumeric}
+\k@SI@short@GravityNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kGravityNumeric}{%
-\k@cgs@short@GravityNumeric}
+\k@cgs@full@GravityNumeric}
\else
\DeclareRobustCommand {\kGravityNumeric}{%
-\k@cgs@full@GravityNumeric}
+\k@cgs@short@GravityNumeric}
\fi
\fi
% \end{macrocode}
@@ -12623,18 +12649,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kStefanBoltzmann}{%
-\k@SI@short@StefanBoltzmann}
+\k@SI@full@StefanBoltzmann}
\else
\DeclareRobustCommand {\kStefanBoltzmann}{%
-\k@SI@full@StefanBoltzmann}
+\k@SI@short@StefanBoltzmann}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kStefanBoltzmann}{%
-\k@cgs@short@StefanBoltzmann}
+\k@cgs@full@StefanBoltzmann}
\else
\DeclareRobustCommand {\kStefanBoltzmann}{%
-\k@cgs@full@StefanBoltzmann}
+\k@cgs@short@StefanBoltzmann}
\fi
\fi
% \end{macrocode}
@@ -12735,18 +12761,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kStefanBoltzmannNumeric}{%
-\k@SI@short@StefanBoltzmannNumeric}
+\k@SI@full@StefanBoltzmannNumeric}
\else
\DeclareRobustCommand {\kStefanBoltzmannNumeric}{%
-\k@SI@full@StefanBoltzmannNumeric}
+\k@SI@short@StefanBoltzmannNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kStefanBoltzmannNumeric}{%
-\k@cgs@short@StefanBoltzmannNumeric}
+\k@cgs@full@StefanBoltzmannNumeric}
\else
\DeclareRobustCommand {\kStefanBoltzmannNumeric}{%
-\k@cgs@full@StefanBoltzmannNumeric}
+\k@cgs@short@StefanBoltzmannNumeric}
\fi
\fi
% \end{macrocode}
@@ -12848,18 +12874,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiation}{%
-\k@SI@short@Radiation}
+\k@SI@full@Radiation}
\else
\DeclareRobustCommand {\kRadiation}{%
-\k@SI@full@Radiation}
+\k@SI@short@Radiation}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiation}{%
-\k@cgs@short@Radiation}
+\k@cgs@full@Radiation}
\else
\DeclareRobustCommand {\kRadiation}{%
-\k@cgs@full@Radiation}
+\k@cgs@short@Radiation}
\fi
\fi
% \end{macrocode}
@@ -12955,18 +12981,18 @@
\ifx\cgsunits\undefined
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiationNumeric}{%
-\k@SI@short@RadiationNumeric}
+\k@SI@full@RadiationNumeric}
\else
\DeclareRobustCommand {\kRadiationNumeric}{%
-\k@SI@full@RadiationNumeric}
+\k@SI@short@RadiationNumeric}
\fi
\else
\ifx\shortconst\undefined
\DeclareRobustCommand {\kRadiationNumeric}{%
-\k@cgs@short@RadiationNumeric}
+\k@cgs@full@RadiationNumeric}
\else
\DeclareRobustCommand {\kRadiationNumeric}{%
-\k@cgs@full@RadiationNumeric}
+\k@cgs@short@RadiationNumeric}
\fi
\fi
% \end{macrocode}
@@ -13023,10 +13049,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kFineStructure}{%
-\k@short@FineStructure}
+\k@full@FineStructure}
\else
\DeclareRobustCommand {\kFineStructure}{%
-\k@full@FineStructure}
+\k@short@FineStructure}
\fi
% \end{macrocode}
% \end{macro}
@@ -13078,10 +13104,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kFineStructureNumeric}{%
-\k@short@FineStructureNumeric}
+\k@full@FineStructureNumeric}
\else
\DeclareRobustCommand {\kFineStructureNumeric}{%
-\k@full@FineStructureNumeric}
+\k@short@FineStructureNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -13138,10 +13164,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kFineStructureReciprocal}{%
-\k@short@FineStructureReciprocal}
+\k@full@FineStructureReciprocal}
\else
\DeclareRobustCommand {\kFineStructureReciprocal}{%
-\k@full@FineStructureReciprocal}
+\k@short@FineStructureReciprocal}
\fi
% \end{macrocode}
% \end{macro}
@@ -13194,10 +13220,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kFineStructureReciprocalNumeric}{%
-\k@short@FineStructureReciprocalNumeric}
+\k@full@FineStructureReciprocalNumeric}
\else
\DeclareRobustCommand {\kFineStructureReciprocalNumeric}{%
-\k@full@FineStructureReciprocalNumeric}
+\k@short@FineStructureReciprocalNumeric}
\fi
% \end{macrocode}
% \end{macro}
@@ -13254,10 +13280,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kAvogadro}{%
-\k@short@Avogadro}
+\k@full@Avogadro}
\else
\DeclareRobustCommand {\kAvogadro}{%
-\k@full@Avogadro}
+\k@short@Avogadro}
\fi
% \end{macrocode}
% \end{macro}
@@ -13310,10 +13336,10 @@
% \begin{macrocode}
\ifx\shortconst\undefined
\DeclareRobustCommand {\kAvogadroNumeric}{%
-\k@short@AvogadroNumeric}
+\k@full@AvogadroNumeric}
\else
\DeclareRobustCommand {\kAvogadroNumeric}{%
-\k@full@AvogadroNumeric}
+\k@short@AvogadroNumeric}
\fi
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/physconst/physconst.pdf b/macros/latex/contrib/physconst/physconst.pdf
index ead2ea8bc7..a4bc4e2172 100644
--- a/macros/latex/contrib/physconst/physconst.pdf
+++ b/macros/latex/contrib/physconst/physconst.pdf
Binary files differ
diff --git a/macros/latex/contrib/physunits/CHANGELOG.md b/macros/latex/contrib/physunits/CHANGELOG.md
index 5ccb30dc10..d61164e263 100644
--- a/macros/latex/contrib/physunits/CHANGELOG.md
+++ b/macros/latex/contrib/physunits/CHANGELOG.md
@@ -36,4 +36,24 @@
- modify the makefile to include the new distrubution readme and makefile
- give instructions on using makefile for distribution
- Did a little more reformatting in the README.
+## [1.0.3.d] - 2020/01/26
+- there was some issues and mixup with tags in github. This is just a version
+number change to get the github tags to show up in the right order
+## [1.0.3.e] - 2020/01/26
+### Changed
+- add a section on just build instructions into readme
+## [1.0.4] - 2020/03/26
+### Changes
+- kcal appeared to accept a prefix, though it was ignored; remove option for the
+macro
+- Celcius, Fahrenheit, and Rankine had the ^\circ outside of the ensuremath,
+causing problems for text mode. The degree symbol is also typically typeset
+with the unit instead of with the number. Correct both of these issues.
+- correct version number and file date in dtx and pdf documentation
+- Make sure \micro macro is compatable with siunitx
+### Added
+- Add acknowledgements to documentation
+- Add bug reporting section to documentation
+- Add prerequisites section to documentation
+- Give some explanation of differences to siunitx in introduction
diff --git a/macros/latex/contrib/physunits/physunits.dtx b/macros/latex/contrib/physunits/physunits.dtx
index 103f97c0c8..5bb71b3fa6 100644
--- a/macros/latex/contrib/physunits/physunits.dtx
+++ b/macros/latex/contrib/physunits/physunits.dtx
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1994/06/01]
%<package> \ProvidesPackage{physunits}
%<*package>
- [2020/01/26 v1.0.3 Physical units package]
+ [2020/03/26 v1.0.4 Physical units package]
%</package>
%<package>\ProcessOptions\relax
%<*driver>
@@ -41,7 +41,7 @@
%</driver>
% \fi
%
-% \CheckSum{486}
+% \CheckSum{490}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -63,10 +63,12 @@
% \changes{v1.0.1}{2020/01/25}{Clean up formatting, fix index}
% \changes{v1.0.2}{2020/01/25}{External changes in makefile}
% \changes{v1.0.3}{2020/01/26}{External changes in makefile}
+% \changes{v1.0.4}{2020/03/26}{Corrected version number and date in
+% documentation}
%
% \GetFileInfo{physunits.dtx}
-% \DeclareRobustCommand{\fileversion}{v1.0}
-% \DeclareRobustCommand{\filedate}{2020/01/26}
+% \DeclareRobustCommand{\fileversion}{v1.0.4}
+% \DeclareRobustCommand{\filedate}{2020/03/26}
%
% \DoNotIndex{\DeclareRobustCommand,\newenvironment,\DeclareRobustCommand,
% \left,\right,\textbf,\mathrm,\ensuremath,\units@separator,\expandafter,\,}
@@ -86,6 +88,33 @@
% physical units that are commonly used in introductory level physics and
% astronomy classes.
%
+% At present, this package provides some similar units to those in siunitx, but
+% is uses slightly different macro names for each. This package also provides
+% a number of non-SI units (e.g. erg, cm, BTU).
+%
+%
+% \section{Prerequisites / Dependencies}
+% \changes{v1.0.4}{2020/03/26}{Added section for dependencies.}
+%
+% \subsection{General}
+% This package requires the \verb|physunits| package.%
+%
+% \subsection{Generating Documentation}
+% The \verb|hyperref| package are required to generate the documentation
+% (this file) for this package.
+%
+% \section{Acknowledgements}
+% \changes{v1.0.4}{2020/03/26}{Added section for acknowledgements.}
+%
+% The author would like to thank Brian Dunn for catching bugs in the temperature
+% units and kcal, leading to changes in v1.0.4.
+%
+% \section{Bug Reporting}
+% \changes{v1.0.4}{2020/03/26}{Added section for bug reporting.}
+%
+% Please report bugs or issues in this package using github, at
+% \url{https://github.com/astrobit/physunits/issues}.%
+%
% \section{Naming Convention}
%
% most macros consist of just the commonly used letter or unit, e.g.
@@ -613,13 +642,17 @@
%\iffalse
%<*package>
%\fi
-% \begin{macro}{\units@separator}
-% |\units@separator| is a special macro used to set the spacing between a
-% quantity and the associated units.
+% \begin{macro}{\micro}
+% \changes{v1.0.4}{2020/03/26}{Corrected version number and date in
+% documentation}
+% |\micro| is a special macro used to typeset the symbol \textbackslash mu.
+% It is compatable with the \textbackslash micro in siunitx.
%
% \begin{macrocode}
+\ifx\micro\undefined
\DeclareRobustCommand{\micro}{\ensuremath{%
\mu}}
+\fi
% \end{macrocode}
% \end{macro}
%\iffalse
@@ -899,10 +932,12 @@
%<*package>
%\fi
% \begin{macro}{\kcal}
+% \changes{v1.0.4}{2020/03/26}{kcal appeared to take a prefix, but the prefix
+% was ignored; removed the prefix.}
% |\kcal| is a macro for kilo-calories (kcal).
%
% \begin{macrocode}
-\DeclareRobustCommand{\kcal}[1]{\ensuremath{%
+\DeclareRobustCommand{\kcal}{\ensuremath{%
\expandafter\units@separator\mathrm{kcal}}}
% \end{macrocode}
% \end{macro}
@@ -1628,11 +1663,15 @@
%<*package>
%\fi
% \begin{macro}{\Celcius}
+% \changes{v1.0.4}{2020/03/26}{had ${}^\circ$ outside of
+% ensuremath, causing problems for text mode. It is also more common to typeset
+% the $^\circ$ with the unit instead of the number. Corrects both of these
+% issues}
% |\Celcius| is a macro for degrees Celcius $(\Celcius)$.
%
% \begin{macrocode}
-\DeclareRobustCommand{\Celcius}{^\circ\ensuremath{%
-\expandafter\units@separator\mathrm{C}}}
+\DeclareRobustCommand{\Celcius}{\ensuremath{\expandafter\units@separator{}%
+^\circ\mathrm{C}}}
% \end{macrocode}
% \end{macro}
%\iffalse
@@ -1643,11 +1682,15 @@
%<*package>
%\fi
% \begin{macro}{\Rankine}
+% \changes{v1.0.4}{2020/03/26}{had ${}^\circ$ outside of
+% ensuremath, causing problems for text mode. It is also more common to typeset
+% the $^\circ$ with the unit instead of the number. Corrects both of these
+% issues}
% |\Rankine| is a macro for degrees Rankine $(\Rankine)$.
%
% \begin{macrocode}
-\DeclareRobustCommand{\Rankine}{^\circ\ensuremath{%
-\expandafter\units@separator\mathrm{R}}}
+\DeclareRobustCommand{\Rankine}{\ensuremath{%
+\expandafter\units@separator{}^\circ\mathrm{R}}}
% \end{macrocode}
% \end{macro}
%\iffalse
@@ -1658,11 +1701,15 @@
%<*package>
%\fi
% \begin{macro}{\Fahrenheit}
+% \changes{v1.0.4}{2020/03/26}{had ${}^\circ$ outside of
+% ensuremath, causing problems for text mode. It is also more common to typeset
+% the $^\circ$ with the unit instead of the number. Corrects both of these
+% issues}
% |\Fahrenheit| is a macro for degrees Fahrenheit $(\Fahrenheit)$.
%
% \begin{macrocode}
-\DeclareRobustCommand{\Fahrenheit}{^\circ\ensuremath{%
-\expandafter\units@separator\mathrm{F}}}
+\DeclareRobustCommand{\Fahrenheit}{\ensuremath{%
+\expandafter\units@separator{}^\circ\mathrm{F}}}
% \end{macrocode}
% \end{macro}
%\iffalse
diff --git a/macros/latex/contrib/physunits/physunits.pdf b/macros/latex/contrib/physunits/physunits.pdf
index 090dfa7d83..e6f2ad825a 100644
--- a/macros/latex/contrib/physunits/physunits.pdf
+++ b/macros/latex/contrib/physunits/physunits.pdf
Binary files differ
diff --git a/macros/latex/contrib/yathesis/README.md b/macros/latex/contrib/yathesis/README.md
index fdbaeb4727..72b110a995 100644
--- a/macros/latex/contrib/yathesis/README.md
+++ b/macros/latex/contrib/yathesis/README.md
@@ -1,6 +1,6 @@
-----------------------------------------------------------------------
-- `yathesis` --- Yet Another Thesis Class, version 0.99u
+- `yathesis` --- Yet Another Thesis Class, version 1.0.0
- E-mail: `denis.bitouze@univ-littoral.fr`
- Released under the LaTeX Project Public License v1.3c or later. See
http://www.latex-project.org/lppl.txt
diff --git a/macros/latex/contrib/yathesis/doc/README-TRANSLATION.md b/macros/latex/contrib/yathesis/doc/README-TRANSLATION.md
index 07d496fd45..fa3ba0c978 100644
--- a/macros/latex/contrib/yathesis/doc/README-TRANSLATION.md
+++ b/macros/latex/contrib/yathesis/doc/README-TRANSLATION.md
@@ -2,4 +2,4 @@
Currently, the `yathesis` documentation is not translated in English. In case
you're interested, please contact the maintainer:
-`denis.bitouze@lmpa.univ-littoral.fr`
+`denis.bitouze@univ-littoral.fr`
diff --git a/macros/latex/contrib/yathesis/doc/yathesis-fr.pdf b/macros/latex/contrib/yathesis/doc/yathesis-fr.pdf
index 1e44bc250d..e35be5cdb3 100644
--- a/macros/latex/contrib/yathesis/doc/yathesis-fr.pdf
+++ b/macros/latex/contrib/yathesis/doc/yathesis-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/yathesis/exemples/specimen/latexmkrc b/macros/latex/contrib/yathesis/exemples/specimen/latexmkrc
index 6a0e01d39e..334747a898 100644
--- a/macros/latex/contrib/yathesis/exemples/specimen/latexmkrc
+++ b/macros/latex/contrib/yathesis/exemples/specimen/latexmkrc
@@ -3,21 +3,21 @@ $pdf_mode = 1;
$bibtex_use = 1;
$bibtex = 'biber %O %B';
-add_cus_dep('glo', 'gls', 0, 'makeglossaries');
-add_cus_dep('glo2', 'gls2', 0, 'makeglossaries');
-add_cus_dep('acn', 'acr', 0, 'makeglossaries');
+add_cus_dep( 'acn', 'acr', 0, 'makeglossaries' );
+add_cus_dep( 'glo', 'gls', 0, 'makeglossaries' );
add_cus_dep('slo', 'sls', 0, 'makeglossaries');
-sub makeglossaries{
- system( "makeglossaries \"$_[0]\"" );
+$clean_ext .= " acr acn alg glo gls glg slo sls slg";
+sub makeglossaries {
+ my ($base_name, $path) = fileparse( $_[0] );
+ pushd $path;
+ my $return = system "makeglossaries", $base_name;
+ popd;
+ return $return;
}
$makeindex = 'texindy -L french';
-add_cus_dep('idx', 'ind', 0, 'texindy');
-sub texindy{
- system("texindy -L french \"$_[0].idx\"");
-}
+push @generated_exts, 'acn', 'acr', 'alg', 'bbl', 'bcf', 'fls', 'gl*', 'idx',
+'ind', 'ist', 'sbl*', 'sl*', 'sym*' ;
-@generated_exts = qw(aux idx ind lo* out toc acn acr alg bbl bcf fls gl* ist
-run.xml sbl* sl* sym* xdy unq synctex.gz mw *~
-);
+$clean_ext .= 'synctex.gz* run.xml tex.bak out bbl bcf fdb_latexmk run tdo listing *~ lo* unq mw' ;
diff --git a/macros/latex/contrib/yathesis/exemples/specimen/these.pdf b/macros/latex/contrib/yathesis/exemples/specimen/these.pdf
index c15b4c57fb..11dc9bc808 100644
--- a/macros/latex/contrib/yathesis/exemples/specimen/these.pdf
+++ b/macros/latex/contrib/yathesis/exemples/specimen/these.pdf
Binary files differ
diff --git a/macros/latex/contrib/yathesis/exemples/specimen/these.tex b/macros/latex/contrib/yathesis/exemples/specimen/these.tex
index 26c3a24d30..aa6ef51409 100644
--- a/macros/latex/contrib/yathesis/exemples/specimen/these.tex
+++ b/macros/latex/contrib/yathesis/exemples/specimen/these.tex
@@ -13,7 +13,7 @@
\usepackage{caption}
\usepackage{listings}
\usepackage{microtype}
-\usepackage{varioref}
+\usepackage[nospace]{varioref}
\usepackage[xindy,quiet]{imakeidx}
\usepackage[autostyle]{csquotes}
\usepackage[backend=biber,safeinputenc]{biblatex}
@@ -101,7 +101,7 @@
\newglssymbol{ohm}{\si{\ohm}}{ohm}{unité de résistance électrique}
\newglssymbol{exists}{\ensuremath{\exists}}{quantificateur existentiel}{}
\newglssymbol[constanteplanck]{planck}{\ensuremath{h}}{constante de
- Planck}{\ensuremath{h\approx\SI{6,62606957e-34}{\joule\second}}}
+ Planck}{\ensuremath{h=\SI{6.62607015e-34}{\joule\second}}}
%
% Configuration globale de l'apparence des listings informatiques
\lstset{%
@@ -576,7 +576,7 @@ uniquement sous leur forme abrégée\footnote{Sauf contre-ordre.} :
%
Si on examine, dans le fichier\index{\gls{latex}!fichier}
\fichier{developpementI.tex} du répertoire \fichier{corps}, le code source
-du tableau\vref{tab-passionnant}\index{\gls{latex}!tableau}, on verra l'usage
+du tableau~\vref{tab-passionnant}\index{\gls{latex}!tableau}, on verra l'usage
de commandes permettant d'obtenir des tableaux d'allure
professionnelle\footnote{Pour obtenir de tels tableaux sous \LaTeX{}, on
\href{http://www.tug.org/pracjourn/2007-1/mori/mori.pdf}{trouvera sur
@@ -604,7 +604,7 @@ professionnelle\footnote{Pour obtenir de tels tableaux sous \LaTeX{}, on
\section{Méthode de travail}
\label{sec-methode}
%
-Nous incluons la figure\vref{fig-tigre}\index{\gls{latex}!figure} qui n'est
+Nous incluons la figure~\vref{fig-tigre}\index{\gls{latex}!figure} qui n'est
pas là pour faire joli, mais bien pour éclairer notre propos.
\begin{figure}
\centering
@@ -618,12 +618,11 @@ On note qu'on peut mettre, en argument optionnel de la commande
permettant de créer la légende, une légende \og courte\fg{} qui sera
celle qui figurera, par exemple, dans la liste des figures.
-On pourra se convaincre, à la lecture des pages~86 à~89 de la
-\href{http://mirrors.ctan.org/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf}{documentation
- du package \package{TikZ}}, de ce qu'une figure\index{\gls{latex}!figure}
-n'est pas toujours préférable à un tableau\index{\gls{latex}!tableau}. Plus
-généralement, on pourra lire toute la section~7, intitulée \emph{Guidelines on
- Graphics} (pages~84 à~90).
+On pourra se convaincre, à la lecture de la section~7.6 \enquote{\emph{Plots and
+ Charts}} de la \href{https://ctan.org/pkg/pgf/doc}{documentation du package
+ \package{TikZ}}, de ce qu'une figure\index{\gls{latex}!figure} n'est pas
+toujours préférable à un tableau\index{\gls{latex}!tableau}. Plus généralement,
+on pourra lire toute la section~7 \enquote{\emph{Guidelines on Graphics}}.
Avec \LaTeX{}\index{\gls{latex}|textbf}, il est extrêmement aisé de créer
un index\index{\gls{latex}!index}, comme dans les documents les mieux
@@ -681,7 +680,7 @@ Dans ce chapitre, nous concluons l'étude du chaos du rire.
\chapter{Développement}
Nous pouvons faire référence à des graphiques (très jolis au demeurant), comme
-celui de la figure\vref{sin-x*sin-y}.
+celui de la figure~\vref{sin-x*sin-y}.
\lipsum[3-10]
\begin{figure}[ht]
\centering
diff --git a/macros/latex/contrib/yathesis/source/yathesis-samples-templates.dtx b/macros/latex/contrib/yathesis/source/yathesis-samples-templates.dtx
index 46866d39f0..77cd29a6d9 100644
--- a/macros/latex/contrib/yathesis/source/yathesis-samples-templates.dtx
+++ b/macros/latex/contrib/yathesis/source/yathesis-samples-templates.dtx
@@ -29,7 +29,7 @@
\usepackage{caption}
%<these-sample|flat-sample>\usepackage{listings}
\usepackage{microtype}
-\usepackage{varioref}
+\usepackage[nospace]{varioref}
%<these-sample|flat-sample>\usepackage[xindy,quiet]{imakeidx}
%<these-master|flat-template>%\usepackage[xindy,quiet]{imakeidx}
%<these-sample|flat-sample>\usepackage[autostyle]{csquotes}
@@ -166,7 +166,7 @@
\newglssymbol{ohm}{\si{\ohm}}{ohm}{unité de résistance électrique}
\newglssymbol{exists}{\ensuremath{\exists}}{quantificateur existentiel}{}
\newglssymbol[constanteplanck]{planck}{\ensuremath{h}}{constante de
- Planck}{\ensuremath{h\approx\SI{6,62606957e-34}{\joule\second}}}
+ Planck}{\ensuremath{h=\SI{6.62607015e-34}{\joule\second}}}
%</flat-sample|symbols-sample>
%<*these-sample|these-master>
%<<COMMENT
@@ -910,7 +910,7 @@ uniquement sous leur forme abrégée\footnote{Sauf contre-ordre.} :
%COMMENT
Si on examine, dans le fichier\index{\gls{latex}!fichier}
\fichier{developpementI.tex} du répertoire \fichier{corps}, le code source
-du tableau\vref{tab-passionnant}\index{\gls{latex}!tableau}, on verra l'usage
+du tableau~\vref{tab-passionnant}\index{\gls{latex}!tableau}, on verra l'usage
de commandes permettant d'obtenir des tableaux d'allure
professionnelle\footnote{Pour obtenir de tels tableaux sous \LaTeX{}, on
\href{http://www.tug.org/pracjourn/2007-1/mori/mori.pdf}{trouvera sur
@@ -944,7 +944,7 @@ professionnelle\footnote{Pour obtenir de tels tableaux sous \LaTeX{}, on
%<<COMMENT
%
%COMMENT
-Nous incluons la figure\vref{fig-tigre}\index{\gls{latex}!figure} qui n'est
+Nous incluons la figure~\vref{fig-tigre}\index{\gls{latex}!figure} qui n'est
pas là pour faire joli, mais bien pour éclairer notre propos.
\begin{figure}
\centering
@@ -959,12 +959,11 @@ On note qu'on peut mettre, en argument optionnel de la commande
permettant de créer la légende, une légende \og courte\fg{} qui sera
celle qui figurera, par exemple, dans la liste des figures.
-On pourra se convaincre, à la lecture des pages~86 à~89 de la
-\href{http://mirrors.ctan.org/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf}{documentation
- du package \package{TikZ}}, de ce qu'une figure\index{\gls{latex}!figure}
-n'est pas toujours préférable à un tableau\index{\gls{latex}!tableau}. Plus
-généralement, on pourra lire toute la section~7, intitulée \emph{Guidelines on
- Graphics} (pages~84 à~90).
+On pourra se convaincre, à la lecture de la section~7.6 \enquote{\emph{Plots and
+ Charts}} de la \href{https://ctan.org/pkg/pgf/doc}{documentation du package
+ \package{TikZ}}, de ce qu'une figure\index{\gls{latex}!figure} n'est pas
+toujours préférable à un tableau\index{\gls{latex}!tableau}. Plus généralement,
+on pourra lire toute la section~7 \enquote{\emph{Guidelines on Graphics}}.
Avec \LaTeX{}\index{\gls{latex}|textbf}, il est extrêmement aisé de créer
un index\index{\gls{latex}!index}, comme dans les documents les mieux
@@ -1065,7 +1064,7 @@ Dans ce chapitre, nous concluons l'étude du chaos du rire.
\chapter{Développement}
Nous pouvons faire référence à des graphiques (très jolis au demeurant), comme
-celui de la figure\vref{sin-x*sin-y}.
+celui de la figure~\vref{sin-x*sin-y}.
%
\lipsum[3-10]
\begin{figure}[ht]
@@ -1370,7 +1369,3 @@ Vous pouvez stocker les images de votre thèse dans le présent répertoire.
% \end{macrocode}
%
% \endinput
-% Local Variables:
-% mode: doctex
-% TeX-master: t
-% End:
diff --git a/macros/latex/contrib/yathesis/source/yathesis.dtx b/macros/latex/contrib/yathesis/source/yathesis.dtx
index 6c9a4414ea..9dd1330702 100644
--- a/macros/latex/contrib/yathesis/source/yathesis.dtx
+++ b/macros/latex/contrib/yathesis/source/yathesis.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2012-2019 by Denis Bitouz'e <denis.bitouze@univ-littoral.fr>
+% Copyright (C) 2012-2020 by Denis Bitouz'e <denis.bitouze@univ-littoral.fr>
% -------------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -23,7 +23,7 @@
%<*readme>
-----------------------------------------------------------------------
-- `yathesis` --- Yet Another Thesis Class, version 0.99u
+- `yathesis` --- Yet Another Thesis Class, version 1.0.0
- E-mail: `denis.bitouze@univ-littoral.fr`
- Released under the LaTeX Project Public License v1.3c or later. See
http://www.latex-project.org/lppl.txt
@@ -73,7 +73,7 @@ Typesetting the documentation of the class requires:
\input docstrip.tex
\Msg{********************************************************}
\Msg{* Installation}
-\Msg{* Class: yathesis 2019-03-28 v0.99u}
+\Msg{* Class: yathesis 2020-03-26 v1.0.0}
\Msg{* that helps to write thesis following French rules (DB)}
\Msg{********************************************************}
\keepsilent
@@ -87,7 +87,7 @@ See http://www.latex-project.org/lppl.txt
-----------------------------------------------------------------------
\endpreamble
\postamble
-% Copyright (C) 2012-2019 by Denis Bitouzé <denis.bitouze@univ-littoral.fr>
+% Copyright (C) 2012-2020 by Denis Bitouzé <denis.bitouze@univ-littoral.fr>
----------------------------------------------------------------------------------
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
@@ -265,14 +265,14 @@ This work consists of the file yathesis.dtx
\fi
%</internal>
% \fi
-% \def\YADnblastversion{0.99u}
+% \def\YADnblastversion{1.0.0}
% \def\YADdatelastversion{\today}
% \def\fileversion{v\YADnblastversion}
% \def\filedate{\YADdatelastversion}
% \iffalse
%<*class>
-\def\fileversion{v0.99u}
-\def\filedate{2019/03/28}
+\def\fileversion{v1.0.0}
+\def\filedate{2020/03/26}
%</class>
%<*driver>
\ProvidesFile{yathesis.dtx}
@@ -280,7 +280,7 @@ This work consists of the file yathesis.dtx
\ReplaceClass{article}{report}
\BeforePackage{doc}{\let\oldmaketitle\maketitle}
\documentclass[english,french]{ltxdoc}
-\usepackage{denisbdoc}
+\usepackage[yad]{denisbdoc}
\lstMakeShortInline[style=dbtex]"
\usepackage[lining]{libertine}
\renewcommand{\ttdefault}{lmtt}
@@ -448,6 +448,7 @@ This work consists of the file yathesis.dtx
\newbool{YAD@valid@month}
\newbool{YAD@valid@year}
\newbool{YAD@mainmatter@used}
+\newbool{YAD@backmatter}
\newbool{YAD@localtocs}%
\newbool{YAD@nextwithlocaltoc}%
\newbool{YAD@nonnumbered@chapter}%
@@ -456,6 +457,7 @@ This work consists of the file yathesis.dtx
\newbool{YAD@nonnumbered@subsubsection}%
\newbool{YAD@nonnumbered@paragraph}%
\newbool{YAD@nonnumbered@subparagraph}%
+\newbool{YAD@colophon}%
%
\newlength{\cmdKV@YAD@logoheight}
\newlength{\YAD@max@logoheight}
@@ -503,15 +505,15 @@ This work consists of the file yathesis.dtx
% ou "version=inprogress*" est passée à la \yatcl{}.
% \begin{macrocode}
\newcommand{\YAD@generic@text}{%
- Un texte generique risque d'etre affiche a la place.\MessageBreak%
+ Un texte générique risque d'être affiché à la place.\MessageBreak%
}%
\newcommand{\YAD@quiet@text}[1]{%
- Pour ne plus etre importune par la presente erreur,\MessageBreak%
+ Pour ne plus être importuné(e) par la présente erreur,\MessageBreak%
on peut passer l'option\MessageBreak%
\space\space`#1'\MessageBreak%
- a la classe `yathesis', mais cela peut serieusement\MessageBreak%
- alterer son fonctionnement : option a utiliser\MessageBreak%
- \space\space\space\space/a ses risques et perils !/%
+ à la classe `yathesis', mais cela peut sérieusement\MessageBreak%
+ altérer son fonctionnement : option à utiliser\MessageBreak%
+ \space\space\space\space/à ses risques et périls !/%
}%
\newcommand{\YAD@extra@help@text}{%
\MessageBreak%
@@ -614,8 +616,8 @@ This work consists of the file yathesis.dtx
}%
% }{%
% \ClassWarningNoLine{yathesis}{%
- % Valeur passee a la cle `#1' non valide :\MessageBreak%
- % cette valeur ne peut etre que `true' ou `false'%
+ % Valeur passée à la clé `#1' non valide :\MessageBreak%
+ % cette valeur ne peut être que `true' ou `false'%
% }%
% }%
}%
@@ -810,13 +812,13 @@ This work consists of the file yathesis.dtx
test {\ifstrequal{#1}{chapter}}
}{%
\YAD@ClassWarningNoLine{%
- La valeur (`#1') passee a la cle\MessageBreak%
+ La valeur (`#1') passée à la cle\MessageBreak%
`localtocs/depth'\MessageBreak%
en option de classe n'est pas un des niveaux de\MessageBreak%
sectionnement acceptes :\MessageBreak%
`section', `subsection',`subsubsection',\MessageBreak%
`paragraph', `subparagraph'.\MessageBreak%
- Le niveau `\YAD@tocdepth' va etre utilise a la place%
+ Le niveau `\YAD@tocdepth' va être utilisé à la place%
}%
}{%
}%
@@ -841,7 +843,7 @@ This work consists of the file yathesis.dtx
L'ajout automatique des bibliographies locales en fin\MessageBreak%
de chapitres fourni par l'option de classe\MessageBreak%
`localbibs' repose sur le package `biblatex'\MessageBreak%
- que vous n'avez pas charge.\MessageBreak%
+ que vous n'avez pas chargé.\MessageBreak%
La classe `yathesis' va le faire pour vous mais\MessageBreak%
le recours a ce package pour la bibliographie sera\MessageBreak%
alors necessaire et exclura tout autre outil\MessageBreak%
@@ -868,9 +870,6 @@ This work consists of the file yathesis.dtx
% \end{macrocode}
%
% \begin{macrocode}
-% \def\YAD@interligne{single}%
-% \define@choicekey*{yathesis.cls}{space}{single,onehalf,double}[single]%
-% {\def\YAD@interligne{#1}}%
\def\YAD@interligne{single}%
\yadsetup{%
space/.is choice,%
@@ -882,6 +881,17 @@ This work consists of the file yathesis.dtx
% \end{macrocode}
%
% \begin{macrocode}
+\def\YAD@colophon@location{verso-frontcover}%
+\yadsetup{%
+ colophon-location/.is choice,%
+ colophon-location/nowhere/.code={\def\YAD@colophon@location{nowhere}},%
+ colophon-location/verso-frontcover/.code={\def\YAD@colophon@location{verso-frontcover}},%
+ colophon-location/recto-backcover/.code={\def\YAD@colophon@location{recto-backcover}},%
+ colophon-location/.initial=verso-frontcover%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
\yadsetup{%
mainlanguage/.store in=\YAD@mainlanguage,%
secnumdepth/.store in=\YAD@secnumdepth,%
@@ -1046,11 +1056,10 @@ This work consists of the file yathesis.dtx
% \begin{macrocode}
\RequirePackage{setspace}[2011/12/19]%
% \end{macrocode}
-% % Pour régler finement la profondeur de la table des matières et de la
-% % numérotation
-% % \begin{macrocode}
-% \RequirePackage{tocvsec2}[2014/03/10]%
-% % \end{macrocode}
+% Pour un colophon
+% \begin{macrocode}
+\RequirePackage[noclrdblpg,nofullpage,aftertitle=1em]{colophon}[2018/04/01]%
+% \end{macrocode}
% Pour faire figurer les table des matières, bibliographie et index
% dans la table des matières
% \begin{macrocode}
@@ -1205,10 +1214,10 @@ This work consists of the file yathesis.dtx
}{%
% \AtEndPreamble{%
\YAD@ClassWarningNoLine{%
- La version de `babel' utilisee est obsolete.\MessageBreak%
+ La version de `babel' utilisée est obsolète.\MessageBreak%
La classe `yathesis' va essayer de faire son possible\MessageBreak%
mais il est possible qu'elle produise des resultats\MessageBreak%
- non prevus. Il est conseille de mettre a jour sa\MessageBreak%
+ non prévus. Il est conseillé de mettre à jour sa\MessageBreak%
distribution TeX%
}%
% }%
@@ -1222,6 +1231,20 @@ This work consists of the file yathesis.dtx
\addto\captionsfrench{\def\tablename{{\scshape Tableau}}}%
% \end{macrocode}
%
+% % On redéfinit l'environnement "colophon" pour pouvoir disposer de la macro
+% % "\colophon" qui va héberger le contenu du colophon.
+% % \begin{macrocode}
+% \let\YAD@colophon@ORI\colophon
+% \let\colophon\relax
+% \let\YAD@endcolophon@ORI\endcolophon
+% \let\endcolophon\relax
+% % \end{macrocode}
+% On redéfinit la taille des caractères des titre et texte du colophon.
+% \begin{macrocode}
+\colophonpreparhook{\normalsize}
+\colophonpretitlehook{\Large}
+% \end{macrocode}
+%
% On définit la macro "\YAD@ifemptyorundef" qui teste si le nom passé est celui
% d'une macro inexistante ou dont le texte de remplacement est vide (ou
% constitué d'espaces seulement).
@@ -1250,7 +1273,7 @@ This work consists of the file yathesis.dtx
\ifnumgreater{\value{YAD@warnings}}{0}{%
% \immediate\write\YAD@file{%
\ClassWarningNoLine{yathesis}{%
- L'option `nowarning' ayant ete utilisee,\MessageBreak%
+ L'option `nowarning' ayant été utilisée,\MessageBreak%
\theYAD@warnings\space warning%
\ifnumequal{\value{YAD@warnings}}{1}{%
\space propre%
@@ -1258,15 +1281,15 @@ This work consists of the file yathesis.dtx
s propres%
}
%
- a la classe `yathesis'\MessageBreak%
+ à la classe `yathesis'\MessageBreak%
\ifnumequal{\value{YAD@warnings}}{1}{%
- a ete masque%
+ a été masqué%
}{%
- ont ete masques%
+ ont été masqués%
}
%
dans ce fichier de log.\MessageBreak%
- Il est fortement conseille de reactiver\MessageBreak%
+ Il est fortement conseillé de réactiver\MessageBreak%
l'affichage de ce%
\ifnumequal{\value{YAD@warnings}}{1}{%
\space warning%
@@ -1569,7 +1592,7 @@ This work consists of the file yathesis.dtx
\lstinline[morekeywords=expression]|\\expression\{|%
\YAD@meta{label}%
\lstinline|\}\{|%
- \YAD@meta{valeur (en fran\c cais)}%
+ \YAD@meta{valeur (en français)}%
\lstinline|\}\{|%
\YAD@meta{valeur (en anglais)}%
\lstinline|\}|
@@ -1890,19 +1913,19 @@ This work consists of the file yathesis.dtx
\newcommand{\YAD@error@firstlastnames@empty}[4]{%
\ifthenelse{\isempty{#2}}{%
\YAD@ClassError{%
- Prenom #1 non specifie%
+ Prénom #1 non specifié%
}{%
Le 1er argument obligatoire de la commande \string#4\MessageBreak%
- est vide (celui-ci doit etre renseigne).%
+ est vide (celui-ci doit être renseigné).%
}%
}{%
}%
\ifthenelse{\isempty{#3}}{%
\YAD@ClassError{%
- Nom #1 non specifie%
+ Nom #1 non specifié%
}{%
Le 2e argument obligatoire de la commande \string#4\MessageBreak%
- est vide (celui-ci doit etre renseigne).%
+ est vide (celui-ci doit être renseigné).%
}%
}{%
}%
@@ -1930,10 +1953,10 @@ This work consists of the file yathesis.dtx
bool {YAD@female} or %
not bool {YAD@male}%
}{%
- \YAD@error@firstlastnames@empty{de la directrice de these}{#2}{#3}{\supervisor}%
+ \YAD@error@firstlastnames@empty{de la directrice de thèse}{#2}{#3}{\supervisor}%
\YAD@staff[role=supervisor-female,#1]{#2}{#3}{YAD@supervisors}%
}{%
- \YAD@error@firstlastnames@empty{du directeur de these}{#2}{#3}{\supervisor}%
+ \YAD@error@firstlastnames@empty{du directeur de thèse}{#2}{#3}{\supervisor}%
\YAD@staff[role=supervisor,#1]{#2}{#3}{YAD@supervisors}%
}%
\if@tempswa%
@@ -1956,10 +1979,10 @@ This work consists of the file yathesis.dtx
bool {YAD@female} or %
not bool {YAD@male}%
}{%
- \YAD@error@firstlastnames@empty{de la co-directrice de these}{#2}{#3}{\cosupervisor}%
+ \YAD@error@firstlastnames@empty{de la co-directrice de thèse}{#2}{#3}{\cosupervisor}%
\YAD@staff[role=cosupervisor-female,#1]{#2}{#3}{YAD@supervisors}%
}{%
- \YAD@error@firstlastnames@empty{du co-directeur de these}{#2}{#3}{\cosupervisor}%
+ \YAD@error@firstlastnames@empty{du co-directeur de thèse}{#2}{#3}{\cosupervisor}%
\YAD@staff[role=cosupervisor,#1]{#2}{#3}{YAD@supervisors}%
}%
\if@tempswa%
@@ -1983,10 +2006,10 @@ This work consists of the file yathesis.dtx
bool {YAD@female} or %
not bool {YAD@male}%
}{%
- \YAD@error@firstlastnames@empty{de la co-encadrante de these}{#2}{#3}{\comonitor}%
+ \YAD@error@firstlastnames@empty{de la co-encadrante de thèse}{#2}{#3}{\comonitor}%
\YAD@staff[role=comonitor-female,#1]{#2}{#3}{YAD@supervisors}%
}{%
- \YAD@error@firstlastnames@empty{de co-encadrant de these}{#2}{#3}{\comonitor}%
+ \YAD@error@firstlastnames@empty{de co-encadrant de thèse}{#2}{#3}{\comonitor}%
\YAD@staff[role=comonitor,#1]{#2}{#3}{YAD@supervisors}%
}%
\if@tempswa%
@@ -2468,7 +2491,7 @@ This work consists of the file yathesis.dtx
Argument obligatoire de \csuse{#2}\space vide%
}{%
L'argument obligatoire de la commande \csuse{#2}\MessageBreak%
- est vide (celui-ci doit etre renseigne).%
+ est vide (celui-ci doit être renseigné).%
}%
}{%
}%
@@ -2591,8 +2614,8 @@ This work consists of the file yathesis.dtx
% % \begin{macrocode}
% \ifthenelse{\equal{#2}{doctoralschool}}{%
% \YAD@ClassWarningNoLine{%
-% Le logo de l'ecole doctorale a ete fourni mais\MessageBreak%
-% il n'apparaitra nulle part. Le mieux est de le supprimer%
+% Le logo de l'école doctorale a été fourni mais\MessageBreak%
+% il n'apparaîtra nulle part. Le mieux est de le supprimer%
% }%
% }{%
% }%
@@ -2670,7 +2693,7 @@ This work consists of the file yathesis.dtx
Argument obligatoire de \csuse{#2}\space vide%
}{%
L'argument obligatoire de la commande \csuse{#2}\MessageBreak%
- est vide (celui-ci doit etre renseigne).%
+ est vide (celui-ci doit être renseigné).%
}%
}{%
}%
@@ -2709,9 +2732,9 @@ This work consists of the file yathesis.dtx
\YAD@ClassError[no#2]{%
Argument optionnel de \csuse{#2}\space vide%
}{%
- La commande \csuse{#2}\space a ete utilisee\MessageBreak%
+ La commande \csuse{#2}\space a été utilisée\MessageBreak%
mais avec un argument optionnel vide : celui-ci doit\MessageBreak%
- etre soit non vide soit pas utilise%
+ être soit non vide soit pas utilisé%
}%
\YAD@reach@file{\YAD@generic@argument@translate{#2}}%
}{%
@@ -2745,12 +2768,13 @@ This work consists of the file yathesis.dtx
\YAD@create@macro[entite]{company}
\YAD@create@macro[entite]{cocompany}
\YAD@create@macro[entite]{doctoralschool}
+\YAD@create@macro{colophontext}
\YAD@create@macro[bilingue]{academicfield}
\YAD@create@macro[bilingue]{speciality}
\YAD@create@macro[bilingue]{title}
\YAD@create@macro[bilingue]{subtitle}
\YAD@create@macro[bilingue]{subject}
-\YAD@create@macro{disclaimer}
+\YAD@create@macro{disclaimertext}
% \end{macrocode}
% Commande définissant le numéro d'ordre de la thèse, tel qu'exigé par certains
% instituts.
@@ -2772,10 +2796,10 @@ This work consists of the file yathesis.dtx
\YAD@ClassError{%
Argument optionnel de \protect\ordernumber\space vide%
}{%
- La commande \protect\ordernumber\space a ete
- utilisee\MessageBreak%
+ La commande \protect\ordernumber\space a été
+ utilisée\MessageBreak%
mais avec un argument optionnel vide : celui-ci doit\MessageBreak%
- etre soit non vide soit pas utilise.%
+ être soit non vide soit pas utilisé.%
}%
}{%
#1%
@@ -2811,7 +2835,7 @@ This work consists of the file yathesis.dtx
#3%
}%
}%
- \YAD@error@firstlastnames@empty{de l'auteur de la these}{#2}{#3}{\author}%
+ \YAD@error@firstlastnames@empty{de l'auteur de la thèse}{#2}{#3}{\author}%
\YAD@hypersetup{pdfauthor=\YAD@firstname@author{} \YAD@lastname@author}%
\newcommand*\YAD@email@author{%
#1%
@@ -2877,9 +2901,9 @@ This work consists of the file yathesis.dtx
Jour de la date de #5 non valide%
}{%
La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
- n'a pas ete correctement saisie car le\MessageBreak%
+ n'a pas été correctement saisie car le\MessageBreak%
jour (`\YAD@daydate') n'est pas valide :\MessageBreak%
- ce doit etre un nombre entier entre 1 et 31.%
+ ce doit être un nombre entier entre 1 et 31.%
}%
}{%
\IfDecimal{\YAD@daydate}{%
@@ -2894,9 +2918,9 @@ This work consists of the file yathesis.dtx
Jour de la date de #5 non valide%
}{%
La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
- n'a pas ete correctement saisie car le\MessageBreak%
+ n'a pas été correctement saisie car le\MessageBreak%
numero de jour (`\YAD@daydate') n'est pas valide :\MessageBreak%
- ce doit etre un nombre entier entre 1 et 31.%
+ ce doit être un nombre entier entre 1 et 31.%
}%
}{%
\global\booltrue{YAD@valid@day}%
@@ -2910,9 +2934,9 @@ This work consists of the file yathesis.dtx
Mois de la date de #5 non valide%
}{%
La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
- n'a pas ete correctement saisie car le\MessageBreak%
+ n'a pas été correctement saisie car le\MessageBreak%
mois (`\YAD@monthdate') n'est pas valide :\MessageBreak%
- ce doit etre un nombre entier entre\MessageBreak%
+ ce doit être un nombre entier entre\MessageBreak%
1 (janvier) et 12 (decembre).%
}%
}{%
@@ -2928,9 +2952,9 @@ This work consists of the file yathesis.dtx
Mois de la date de #5 non valide%
}{%
La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
- n'a pas ete correctement saisie car le\MessageBreak%
+ n'a pas été correctement saisie car le\MessageBreak%
numero de mois (`\YAD@monthdate') n'est pas valide :\MessageBreak%
- ce doit etre un nombre entier entre\MessageBreak%
+ ce doit être un nombre entier entre\MessageBreak%
1 (janvier) et 12 (decembre).%
}%
}{%
@@ -2942,11 +2966,11 @@ This work consists of the file yathesis.dtx
not (test {\IfInteger{\YAD@yeardate}})%
}{%
\YAD@ClassError[nodate]{%
- Annee de la date de #5 non valide%
+ Année de la date de #5 non valide%
}{%
La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
- n'a pas ete correctement saisie car l'annee\MessageBreak%
- (`\YAD@yeardate') n'est pas valide : ce doit etre\MessageBreak%
+ n'a pas été correctement saisie car l'année\MessageBreak%
+ (`\YAD@yeardate') n'est pas valide : ce doit être\MessageBreak%
un nombre entier.%
}%
}{%
@@ -3009,9 +3033,9 @@ This work consists of the file yathesis.dtx
}{%
}{%
\YAD@ClassError[nodate]{%
- Date de soutenance non specifiee%
+ Date de soutenance non specifiée%
}{%
- La commande \protect\date\space n'a pas ete utilisee\MessageBreak%
+ La commande \protect\date\space n'a pas été utilisée\MessageBreak%
(celle-ci est requise).%
}%
}%
@@ -3135,12 +3159,12 @@ This work consists of the file yathesis.dtx
\@ifundefined {Etoc@\cmdKV@YAD@depth @@}
{%
\YAD@ClassWarningNoLine{%
- La valeur (`\cmdKV@YAD@depth') passee a la cle `depth'\MessageBreak%
+ La valeur (`\cmdKV@YAD@depth') passée à la clé `depth'\MessageBreak%
en argument de la commande \string\tableofcontents\space n'est pas\MessageBreak%
un des niveaux de sectionnement connus :\MessageBreak%
`part', `chapter', `section', `subsection',\MessageBreak%
`subsubsection', `paragraph', `subparagraph', `none' et `all'.\MessageBreak%
- Le niveau `\YAD@tocdepth' va etre utilise a la place%
+ Le niveau `\YAD@tocdepth' va être utilisé à la place%
}%
\let\cmdKV@YAD@depth\YAD@tocdepth
}{%
@@ -3214,14 +3238,14 @@ This work consists of the file yathesis.dtx
\else%
\setcounter{secnumdepth}{3}%
\YAD@ClassWarningNoLine{%
- La valeur (`\YAD@secnumdepth') passee a la cle `secnumdepth'\MessageBreak%
+ La valeur (`\YAD@secnumdepth') passée à la clé `secnumdepth'\MessageBreak%
en argument de la commande \string\documentclass\space n'est
pas\MessageBreak%
un des niveaux de sectionnement connus (`part', `chapter',\MessageBreak%
`section', `subsection', `subsubsection', `paragraph',\MessageBreak%
`subparagraph', `none' et `all').\MessageBreak%
- Le niveau `subsection' va etre utilise\MessageBreak%
- a la place%
+ Le niveau `subsection' va être utilisé\MessageBreak%
+ à la place%
}%
\fi%
}
@@ -3246,8 +3270,9 @@ This work consists of the file yathesis.dtx
% \begin{macrocode}
\newcommand*{\YAD@chapter@header}{%
\ifboolexpr{
- (test {\ifnumcomp{\value{secnumdepth}}{>}{-1}} or (not bool
- {YAD@nonnumbered@chapter})) and test {\ifnumcomp{\value{chapter}}{>}{0}}
+ ((test {\ifnumcomp{\value{secnumdepth}}{>}{-1}} or (not bool
+ {YAD@nonnumbered@chapter})) and test {\ifnumcomp{\value{chapter}}{>}{0}}) and
+ (not bool {YAD@backmatter})
}{%
\MakeUppercase\chaptername{}\ \thechapter.
}{%
@@ -3261,8 +3286,9 @@ This work consists of the file yathesis.dtx
% \begin{macrocode}
\newcommand*{\YAD@section@header}{%
\ifboolexpr{
- (test {\ifnumcomp{\value{secnumdepth}}{>}{0}} or (not bool
- {YAD@nonnumbered@section})) and test {\ifnumcomp{\value{chapter}}{>}{0}}
+ ((test {\ifnumcomp{\value{secnumdepth}}{>}{0}} or (not bool
+ {YAD@nonnumbered@section})) and test {\ifnumcomp{\value{chapter}}{>}{0}}) and
+ (not bool {YAD@backmatter})%
}{%
\thesection.
}{%
@@ -3453,11 +3479,11 @@ This work consists of the file yathesis.dtx
}{%
}{%
\YAD@ClassError*{%
- Commande \protect\mainmatter\space non utilisee%
+ Commande \protect\mainmatter\space non utilisée%
}{%
La commande \protect\mainmatter\space introduisant la partie principale
du document\MessageBreak%
- n'a pas ete utilisee. Celle-ci est requise.%
+ n'a pas été utilisée. Celle-ci est requise.%
}%
}%
}%
@@ -3540,7 +3566,7 @@ This work consists of the file yathesis.dtx
% On demande que la bibliographie apparaisse au plus haut niveau des
% signets
% \begin{macrocode}
- \cleardoublepage%
+ % \cleardoublepage%
\YAD@phantomsection%
\YAD@bookmarksetup{startatroot}%
\YAD@setfoot%
@@ -3581,6 +3607,7 @@ This work consists of the file yathesis.dtx
% \begin{macrocode}
\xapptocmd{\backmatter}{%
\pagestyle{backmatter}%
+ \booltrue{YAD@backmatter}%
\boolfalse{YAD@localtocs}%
}{}{}%
% \end{macrocode}
@@ -3657,7 +3684,6 @@ This work consists of the file yathesis.dtx
% \begin{macrocode}
\newpagestyle{backcover}[]{%
\singlespacing%
- \YAD@clearspread%
\setlength{\footskip}{35pt}%
\setfootrule{0pt}%
\setfoot[%
@@ -3685,11 +3711,11 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@nolaboratory}{%
}{%
\YAD@ClassError[nolaboratory]{%
- Nom du laboratoire de la these non specifie ou vide%
+ Nom du laboratoire de la thèse non specifié ou vide%
}{%
- La commande \protect\laboratory\space n'a pas ete utilisee\MessageBreak%
+ La commande \protect\laboratory\space n'a pas été utilisée\MessageBreak%
(celle-ci est requise) ou son 1er argument est vide\MessageBreak%
- (celui-ci doit etre renseigne).%
+ (celui-ci doit être renseigné).%
}%
}%
}{%
@@ -3721,11 +3747,11 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@nolaboratoryaddress}{%
}{%
\YAD@ClassError[nolaboratoryaddress]{%
- Adresse du laboratoire non specifiee ou vide%
+ Adresse du laboratoire non specifiée ou vide%
}{%
- La commande \protect\laboratory\space n'a pas ete utilisee\MessageBreak%
+ La commande \protect\laboratory\space n'a pas été utilisée\MessageBreak%
(celle-ci est requise) ou son 2e argument est vide\MessageBreak%
- (celui-ci doit etre renseigne).%
+ (celui-ci doit être renseigné).%
}%
}%
}{%
@@ -3797,11 +3823,11 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@notitle}{%
}{%
\YAD@ClassError[notitle]{%
- Titre de la these non specifie%
+ Titre de la thèse non specifié%
}{%
- La commande \protect\title\space n'a pas ete utilisee\MessageBreak%
+ La commande \protect\title\space n'a pas été utilisée\MessageBreak%
(celle-ci est requise) ou son argument obligatoire est vide\MessageBreak%
- (celui-ci doit etre renseigne).%
+ (celui-ci doit être renseigné).%
}%
}%
}{%
@@ -3867,13 +3893,13 @@ This work consists of the file yathesis.dtx
\YAD@ifemptyorundef{\printinstitute}{%
\YAD@generic@argument@translate{institute}%
\YAD@ClassError[noinstitute]{%
- Institut de la these non specifie%
+ Institut de la thèse non specifié%
}{%
- La commande \protect\institute\space n'a pas ete
- utilisee\MessageBreak%
+ La commande \protect\institute\space n'a pas été
+ utilisée\MessageBreak%
(celle-ci est requise) ou son argument obligatoire est
vide\MessageBreak%
- (celui-ci doit etre renseigne).%
+ (celui-ci doit être renseigné).%
}%
}{%
\YAD@translation{institute} \textbf{\textsc{\Large\printinstitute}}%
@@ -3902,13 +3928,13 @@ This work consists of the file yathesis.dtx
\YAD@ifemptyorundef{\printdoctoralschool}{%
\YAD@generic@argument@translate{doctoralschool}%
\YAD@ClassError[nodoctoralschool]{%
- Ecole doctorale de la these non specifiee%
+ École doctorale de la thèse non specifiée%
}{%
- la commande \protect\doctoralschool\space n'a pas ete
- utilisee\MessageBreak%
+ la commande \protect\doctoralschool\space n'a pas été
+ utilisée\MessageBreak%
(celle-ci est requise) ou son argument obligatoire est
vide\MessageBreak%
- (celui-ci doit etre renseigne).%
+ (celui-ci doit être renseigné).%
}%
}{%
\textbf{\printdoctoralschool}%
@@ -3940,12 +3966,12 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@noauthor}{%
}{%
\YAD@ClassError[noauthor]{%
- Auteur de la these non specifie%
+ Auteur de la thèse non specifié%
}{%
- La commande \protect\author\space n'a pas ete utilisee (celle-ci
+ La commande \protect\author\space n'a pas été utilisée (celle-ci
est requise)\MessageBreak%
ou ses 2 premiers arguments obligatoires sont vides\MessageBreak%
- (ceux-ci doivent etre renseignes).%
+ (ceux-ci doivent être renseignés).%
}%
}%
}{%
@@ -4011,11 +4037,11 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@noacademicfield}{%
}{%
\YAD@ClassError[noacademicfield]{%
- Champ disciplinaire de la these non specifie%
+ Champ disciplinaire de la thèse non specifié%
}{%
- La commande \protect\academicfield\space n'a pas ete utilisee
+ La commande \protect\academicfield\space n'a pas été utilisée
(celle-ci est requise)\MessageBreak%
- ou son argument obligatoire est vide (celui-ci doit etre renseigne).%
+ ou son argument obligatoire est vide (celui-ci doit être renseigné).%
}%
}%
}{%
@@ -4075,12 +4101,12 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@nosupervisor}{%
}{%
\YAD@ClassError*[nosupervisor]{%
- Directeur de these non specifie%
+ Directeur de thèse non specifié%
}{%
- La commande \protect\supervisor\space n'a pas ete utilisee\MessageBreak%
+ La commande \protect\supervisor\space n'a pas été utilisée\MessageBreak%
(celle-ci est requise) ou ses arguments obligatoires sont
vides\MessageBreak%
- (ceux-ci doivent etre renseignes).%
+ (ceux-ci doivent être renseignés).%
}%
}%
}%
@@ -4089,6 +4115,13 @@ This work consists of the file yathesis.dtx
% \begin{macrocode}
\endgroup%
% \end{macrocode}
+% On insère le code pour l'éventuel colophon
+% \begin{macrocode}
+\ifthenelse{\equal{\YAD@colophon@location}{verso-frontcover}}{%
+ \YAD@insert@colophon%
+}{%
+}%
+% \end{macrocode}
% Maintenant que la 1\iere{} page de titre (celle de 1\iere{} de couverture)
% a été créée, le booléen "YAD@cover@page" est faux.
% \begin{macrocode}
@@ -4136,15 +4169,37 @@ This work consists of the file yathesis.dtx
}{%
}{%
\YAD@ClassError*[nomaketitle]{%
- Commande \protect\maketitle\space non utilisee%
+ Commande \protect\maketitle\space non utilisée%
}{%
- La commande \protect\maketitle\space n'a pas ete utilisee. Celle-ci est
+ La commande \protect\maketitle\space n'a pas été utilisée. Celle-ci est
requise.%
}%
}%
}%
% \end{macrocode}
%
+% Code pour l'éventuel colophon
+% \begin{macrocode}
+\newcommand{\YAD@insert@colophon}{%
+ \ifthenelse{\equal{\YAD@colophon@location}{nowhere}}{%
+ }{%
+ \ifbool{YAD@colophon}{%
+ }{%
+ \clearpage
+ \vspace*{\stretch{1}}%
+ \begin{minipage}{\linewidth}
+ \begin{colophon}
+ \printcolophontext%
+ \end{colophon}
+ \end{minipage}
+ \vspace*{\stretch{1}}%
+ \newpage
+ \booltrue{YAD@colophon}%
+ }%
+ }%
+}
+% \end{macrocode}
+%
% Définition de "\keywords".
% \begin{macro}{\keywords}
% \begin{macro}{\YAD@metakeywords}
@@ -4191,30 +4246,30 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@nokeywords}{%
}{%
\YAD@ClassError[nokeywords]{%
- Commande \protect\keywords\space non utilisee%
+ Commande \protect\keywords\space non utilisée%
}{%
- La commande \protect\keywords\space n'a pas ete utilisee. Celle-ci est
+ La commande \protect\keywords\space n'a pas été utilisée. Celle-ci est
requise.%
}%
}%
}{%
\ifdefempty{\YAD@mainkeywords}{%
\YAD@ClassError[nokeywords]{%
- Mots cles dans la langue principale non specifies%
+ Mots clés dans la langue principale non specifiés%
}{%
- Les mots cles dans la langue principale\MessageBreak%
+ Les mots clés dans la langue principale\MessageBreak%
(1er argument de la commande \protect\keywords) n'ont\MessageBreak%
- pas ete specifies. Ceux-ci sont requis.%
+ pas été specifiés. Ceux-ci sont requis.%
}%
}{%
\csdef{YAD@metakeywords}{\YAD@mainkeywords} }%
\ifdefempty{\YAD@secondarykeywords}{%
\YAD@ClassError[nokeywords]{%
- Mots cles dans la langue secondaire non specifies%
+ Mots clés dans la langue secondaire non specifiés%
}{%
- Les mots cles dans la langue secondaire\MessageBreak%
+ Les mots clés dans la langue secondaire\MessageBreak%
(2e argument de la commande \protect\keywords) n'ont\MessageBreak%
- pas ete specifies. Ceux-ci sont requis.%
+ pas été specifiés. Ceux-ci sont requis.%
}%
}{%
\csdef{YAD@metakeywords}{\YAD@mainkeywords (\YAD@secondarykeywords)}%
@@ -4285,21 +4340,21 @@ This work consists of the file yathesis.dtx
}{%
\ifthenelse{\isempty{#2}}{%
\YAD@ClassError[nolaboratory]{%
- Nom du laboratoire de la these vide%
+ Nom du laboratoire de la thèse vide%
}{%
Le 1er argument obligatoire de la commande
\protect\laboratory\MessageBreak%
- est vide (celui-ci doit etre renseigne).%
+ est vide (celui-ci doit être renseigné).%
}%
}{%
}%
\ifthenelse{\isempty{#3}}{%
\YAD@ClassError[nolaboratory]{%
- Adresse du laboratoire de la these vide%
+ Adresse du laboratoire de la thèse vide%
}{%
Le 2e argument obligatoire de la commande
\protect\laboratory\MessageBreak%
- est vide (celui-ci doit etre renseigne).%
+ est vide (celui-ci doit être renseigné).%
}%
}{%
}%
@@ -4312,7 +4367,7 @@ This work consists of the file yathesis.dtx
\YAD@ifemptyorundef{\cmdKV@YAD@logoheight}{%
\DTLnewdbentry{laboratories}{logoheight}{\YAD@default@logoheight}%
}{%
- \DTLnewdbentry{laboratories}{logoheight}{\cmdKV@YAD@logoheight}%
+ \DTLnewdbentry{laboratories}{logoheight}{\the\cmdKV@YAD@logoheight}%
}%
\YAD@ifemptyorundef{\cmdKV@YAD@url}{%
\DTLnewdbentry{laboratories}{url}{}%
@@ -4489,7 +4544,7 @@ This work consists of the file yathesis.dtx
\ifthenelse{\DTLiseq{\YAD@laboratory@logo}{}}{%
}{%
\hspace{\stretch{1}}%
- \begin{minipage}[t]{.325\linewidth}
+ \adjustbox{right=.325\linewidth}{%
\def\YAD@logo{%
\YAD@ifemptyorundef{\YAD@laboratory@logo}{%
\YAD@reach@file{\YAD@generic@argument@translate{logolaboratory}}%
@@ -4501,20 +4556,19 @@ This work consists of the file yathesis.dtx
}%
\if@tempswa%
\else%
- \hspace{\stretch{1}}%
% \ifbool{YAD@nolink}{%
% \YAD@logo%
% }{%
- \YAD@ifemptyorundef{\YAD@laboratory@url}{%
- % \YAD@href{www.laboratory.fr}{%
- \YAD@logo%
- % }%
- }{%
- \YAD@href{\YAD@laboratory@url}{\YAD@logo}%
- }%
+ \YAD@ifemptyorundef{\YAD@laboratory@url}{%
+ % \YAD@href{www.laboratory.fr}{%
+ \YAD@logo%
+ % }%
+ }{%
+ \YAD@href{\YAD@laboratory@url}{\YAD@logo}%
+ }%
% }%
\fi%
- \end{minipage}%
+ }%
}%
\par%
\DTLiflastrow{%
@@ -4798,10 +4852,10 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@nomakeabstract}{%
}{%
\YAD@ClassError*[nomakeabstract]{%
- Commande \protect\makeabstract\space non utilisee%
+ Commande \protect\makeabstract\space non utilisée%
}{%
- La commande \protect\makeabstract\space n'a pas ete\MessageBreak%
- utilisee. Celle-ci est requise.%
+ La commande \protect\makeabstract\space n'a pas été\MessageBreak%
+ utilisée. Celle-ci est requise.%
}%
}%
}%
@@ -4817,15 +4871,15 @@ This work consists of the file yathesis.dtx
\YAD@ClassError[noabstract]{%
Contenu de la 1re occurrence de `abstract' vide%
}{%
- La 1re occurrence de l'environnement `abstract' a ete
- utilisee\MessageBreak%
+ La 1re occurrence de l'environnement `abstract' a été
+ utilisée\MessageBreak%
avec un contenu vide. Un contenu non vide est requis.%
}%
}{%
\YAD@ClassError[noabstract]{%
Contenu de l'environnement `abstract' vide%
}{%
- L'environnement `abstract' a ete utilise mais avec un contenu
+ L'environnement `abstract' a été utilisé mais avec un contenu
vide.\MessageBreak%
Un contenu non vide est requis.%
}%
@@ -4836,8 +4890,8 @@ This work consists of the file yathesis.dtx
\YAD@ClassError[noabstract]{%
Contenu de la 2e occurrence de `abstract' vide%
}{%
- La 2e occurrence de l'environnement `abstract' a ete
- utilisee\MessageBreak%
+ La 2e occurrence de l'environnement `abstract' a été
+ utilisée\MessageBreak%
avec un contenu vide. Un contenu non vide est requis.%
}%
}{%
@@ -4846,9 +4900,9 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@noabstract}{%
}{%
\YAD@ClassError[noabstract]{%
- Environnement `abstract' non utilise%
+ Environnement `abstract' non utilisé%
}{%
- L'environnement `abstract' n'a pas ete utilise. Celui-ci est requis.%
+ L'environnement `abstract' n'a pas été utilisé. Celui-ci est requis.%
}%
}%
}%
@@ -4859,9 +4913,17 @@ This work consists of the file yathesis.dtx
% Éléments communs de la page de présentation
% \begin{macrocode}
\newcommand{\makebackcover}{%
- \YAD@alarm@noabstract%
- \cleardoublepage%
\pagestyle{backcover}%
+% \end{macrocode}
+% On insère le code pour l'éventuel colophon
+% \begin{macrocode}
+ \ifthenelse{\equal{\YAD@colophon@location}{recto-backcover}}{%
+ \newgeometry{centering,nomarginpar,bottom=1cm,top=1cm,headheight=\YAD@max@logoheight,hmargin=2cm,includeall}%
+ \YAD@insert@colophon%
+ \restoregeometry%
+ }{%
+ \YAD@clearspread%
+ }%
\YAD@abstract@page%
}%
% \end{macrocode}
@@ -4883,12 +4945,12 @@ This work consists of the file yathesis.dtx
\DTLifdbempty{dedications}{%
\YAD@generic@argument@translate{dedications}%
\YAD@ClassError{%
- \protect\makededications\space utilisee/\protect\dedication\space non
- utilisee%
+ \protect\makededications\space utilisée/\protect\dedication\space non
+ utilisée%
}{%
- La commande \protect\makededications\space a ete utilisee mais la
+ La commande \protect\makededications\space a été utilisée mais la
commande \protect\dedication,\MessageBreak%
- permettant de preparer des dedicaces, n'a pas ete utilisee.%
+ permettant de préparer des dédicaces, n'a pas été utilisée.%
}%
}{%
% \end{macrocode}
@@ -4902,11 +4964,11 @@ This work consists of the file yathesis.dtx
\YAD@ifemptyorundef{\YAD@dedication}{%
\YAD@generic@argument@translate{dedication}%
\YAD@ClassError{%
- Dedicace vide%
+ Dédicace vide%
}{%
L'argument obligatoire d'une commande \protect\dedication\space est
vide\MessageBreak%
- (celui-ci doit etre renseigne).%
+ (celui-ci doit être renseigné).%
}%
}{%
\YAD@dedication%
@@ -4950,13 +5012,13 @@ This work consists of the file yathesis.dtx
\qitem{\YAD@generic@argument@translate{epigraphs}}{}%
\end{epigraphs}%
\YAD@ClassError{%
- \protect\makefrontepigraphs\space utilisee/\protect\frontepigraph\space
- non utilisee%
+ \protect\makefrontepigraphs\space utilisée/\protect\frontepigraph\space
+ non utilisée%
}{%
- La commande \protect\makefrontepigraphs\space a ete utilisee mais la
+ La commande \protect\makefrontepigraphs\space a été utilisée mais la
commande\MessageBreak%
- \protect\frontepigraph, permettant de preparer des epigraphes, n'a pas
- ete utilisee.%
+ \protect\frontepigraph, permettant de préparer des épigraphes, n'a pas
+ été utilisée.%
}{%
}%
}{%
@@ -4978,7 +5040,7 @@ This work consists of the file yathesis.dtx
}{%
L'argument obligatoire d'une commande \protect\frontepigraph\space
est vide\MessageBreak%
- (celui-ci doit etre renseigne).%
+ (celui-ci doit être renseigné).%
}%
}{%
}%
@@ -5703,10 +5765,10 @@ This work consists of the file yathesis.dtx
% \ifbool{YAD@frenchabstract@used}{%
% \ifthenelse{\equal{\YAD@mainlanguage}{french}}{%
% \YAD@ClassWarningNoLine{%
-% Resume substantiel en francais inutile.\MessageBreak%
-% La langue principale de la these etant le\MessageBreak%
-% fran\c cais, un resume substantiel en\MessageBreak%
-% fran\c cais est inutile : vous pouvez supprimer\MessageBreak%
+% Résumé substantiel en français inutile.\MessageBreak%
+% La langue principale de la thèse étant le\MessageBreak%
+% français, un résumé substantiel en\MessageBreak%
+% français est inutile : vous pouvez supprimer\MessageBreak%
% la commande \protect\frenchabstract\space et le texte qui s'y\MessageBreak%
% rapporte%
% }%
@@ -5716,23 +5778,24 @@ This work consists of the file yathesis.dtx
% \ifthenelse{\equal{\YAD@mainlanguage}{french}}{%
% }{%
% \YAD@ClassWarningNoLine{%
-% Resume substantiel en fran\c cais recommande.\MessageBreak%
-% La langue principale de la these n'etant pas le\MessageBreak%
-% fran\c cais, un resume substantiel en\MessageBreak%
-% fran\c cais est recommande : vous pouvez en creer\MessageBreak%
+% Résumé substantiel en français récommandé.\MessageBreak%
+% La langue principale de la thèse n'etant pas le\MessageBreak%
+% français, un résumé substantiel en\MessageBreak%
+% français est récommandé : vous pouvez en créer\MessageBreak%
% un au moyen de \protect\frenchabstract\space (cf. la\MessageBreak%
-% documentation de la la classe yat)%
+% documentation de la classe yat)%
% }%
% }%
% }%
% }%
% % \end{macrocode}
%
-% On définit la valeur, en anglais et en français, de la macro "\disclaimer" de
-% clause de non-responsabilité définie précédemment.
+% On définit la valeur, en anglais et en français, de la macro "\disclaimertext"
+% (anciennement "\disclaimer") de clause de non-responsabilité définie
+% précédemment.
%
% \begin{macrocode}
-\disclaimer{%
+\disclaimertext{%
\IfLanguageName{french}{%
\ifundef{\printinstitute}{%
L'\YAD@generic@argument@translate{institute}
@@ -5762,6 +5825,13 @@ This work consists of the file yathesis.dtx
}%
% \end{macrocode}
%
+% Par souci de compatibilité ascendante, on définit la macro "\disclaimer"
+% comme étant un clone de "\disclaimertext".
+%
+% \begin{macrocode}
+\newcommand{\disclaimer}[1]{\disclaimertext{#1}}
+% \end{macrocode}
+%
% \begin{macro}{\makedisclaimer}
% \begin{macrocode}
\csdef{makedisclaimer}{%
@@ -5776,7 +5846,7 @@ This work consists of the file yathesis.dtx
\else%
\vspace*{\stretch{1}}%
\fi%
- \printdisclaimer%
+ \printdisclaimertext%
\if@tempswa%
\else%
\vspace*{\stretch{1}}%
@@ -5786,6 +5856,26 @@ This work consists of the file yathesis.dtx
% \end{macrocode}
% \end{macro}
%
+% On définit la valeur, en anglais et en français, de la macro "\colophon" du colophon.
+%
+% \begin{macrocode}
+\colophontext{%
+ \IfLanguageName{french}{%
+ Mémoire de thèse intitulé \frquote{\printtitle}, écrit par \printauthor{},
+ achevé le \today{}, composé au moyen du système de préparation de document
+ \href{https://fr.wikipedia.org/wiki/LaTeX}{\LaTeX{}} et de la classe
+ \href{https://www.ctan.org/pkg/yathesis}{\textsf{yathesis}} dédiée aux
+ thèses préparées en France.%
+ }{%
+ Doctoral dissertation entitled “\printtitle”, written by \printauthor{},
+ completed on \today{}, typeset with the document preparation system
+ \href{https://en.wikipedia.org/wiki/LaTeX}{\LaTeX{}} and the
+ \href{https://www.ctan.org/pkg/yathesis}{\textsf{yathesis}} class dedicated
+ to theses prepared in France.%
+ }%
+}%
+% \end{macrocode}
+%
% % Le contenu de l'environnement "introduction" est collecté dans la macro
% % "\YAD@introduction" pour tester s'il est vide.
% % \begin{macro}{\YAD@introduction}
@@ -5877,7 +5967,7 @@ This work consists of the file yathesis.dtx
% \ifbool{YAD@introduction@used}{%
% \ifbool{YAD@introduction@empty}{%
% \YAD@ClassWarningNoLine{%
-% L'environnement `introduction' a ete utilise\MessageBreak%
+% L'environnement `introduction' a été utilisé\MessageBreak%
% avec un contenu vide.\MessageBreak%
% Un contenu non vide est requis%
% }%
@@ -5887,8 +5977,8 @@ This work consists of the file yathesis.dtx
% \ifYAD@nointroduction%
% \else%
% \YAD@ClassWarningNoLine{%
-% L'environnement `introduction' n'a pas ete\MessageBreak%
-% utilise. Celui-ci est requis%
+% L'environnement `introduction' n'a pas été\MessageBreak%
+% utilisé. Celui-ci est requis%
% }%
% \fi%
% }%
@@ -5994,7 +6084,7 @@ This work consists of the file yathesis.dtx
% \ifbool{YAD@conclusion@used}{%
% \ifbool{YAD@conclusion@empty}{%
% \YAD@ClassWarningNoLine{%
-% L'environnement `conclusion' a ete utilise\MessageBreak%
+% L'environnement `conclusion' a été utilisé\MessageBreak%
% avec un contenu vide.\MessageBreak%
% Un contenu non vide est requis%
% }%
@@ -6004,8 +6094,8 @@ This work consists of the file yathesis.dtx
% \ifYAD@noconclusion%
% \else%
% \YAD@ClassError{%
-% L'environnement `conclusion' n'a pas ete\MessageBreak%
-% utilise. Celui-ci est requis%
+% L'environnement `conclusion' n'a pas été\MessageBreak%
+% utilisé. Celui-ci est requis%
% }%
% \fi%
% }%
@@ -6023,12 +6113,9 @@ This work consists of the file yathesis.dtx
}%
% \end{macrocode}
%
-% Réglage nécessaire sans quoi le titre courant \textquote{BIBLIOGRAPHIE}
-% apparaît en trop en entête et en pied de page (see \url{http://tex.stackexchange.com/q/89884/18401}).
% \begin{macrocode}
\AtEndPreamble{%
\@ifpackageloaded{biblatex}{%
- \defbibheading{bibintoc}[\bibname]{\chapter*{#1}}%
\defbibheading{YAD@localbibs@heading}[\translate{lbl-localbibname}]{%
\renewcommand\addcontentsline[3]{}%
\section*{#1}%
@@ -6051,13 +6138,20 @@ This work consists of the file yathesis.dtx
\let\YAD@printbibliography@ORI\printbibliography%
\renewcommand{\printbibliography}[1][]{%
\booltrue{YAD@printbibliography@used}%
-% TODO: The "biblio" page style (which starts a new page) should be used except
-% in case of "refsection" \package{biblatex}'s option, otherwise the
-% bibliographies by chapters (that should be considered as sections) don't
-% behave as sections: they start a newpage!
+% \end{macrocode}
+%
+% Hack aimablement fourni par samcarter
+% (\url{https://texnique.fr/osqa/questions/6977/header-avec-biblatex/6978})
+% qui évite que l'entête de la bibliographie, en dernière page de celle-ci, ne
+% contienne pas seulement \enquote{Bibliographie} mais \enquote{CHAPITRE
+% XXX. Bibliographie}.
+% \begin{macrocode}
\pagestyle{biblio}%
- \YAD@printbibliography@ORI[heading=bibintoc,#1]%
- \pagestyle{ordinary}%
+ \chapter*{\bibname}%
+ \begingroup%
+ \let\cleardoublepage\relax%
+ \YAD@printbibliography@ORI[heading=none,#1]%
+ \endgroup%
}%
}{%
}%
@@ -6073,9 +6167,9 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@noprintbibliography}{%
}{%
\YAD@ClassError*[noprintbibliography]{%
- Commande \protect\printbibliography\space non utilisee%
+ Commande \protect\printbibliography\space non utilisée%
}{%
- La commande \protect\printbibliography\space n'a pas ete utilisee. Celle-ci est
+ La commande \protect\printbibliography\space n'a pas été utilisée. Celle-ci est
requise.%
}%
}%
@@ -6133,11 +6227,11 @@ This work consists of the file yathesis.dtx
}%
}{%
\ClassError{yathesis}{}{%
- Commande \protect\newglssymbol\space utilisee sans que 'glossaries' soit
- charge%
+ Commande \protect\newglssymbol\space utilisée sans que 'glossaries' soit
+ chargé%
}{%
- La commande \protect\newglssymbol ne peut etre\MessageBreak%
- utilisee que si le package 'glossaries' est charge%
+ La commande \protect\newglssymbol ne peut être\MessageBreak%
+ utilisée que si le package 'glossaries' est chargé%
}%
}%
}%
@@ -6215,7 +6309,7 @@ This work consists of the file yathesis.dtx
\InputIfFileExists{\YAD@configuration@directory/\YAD@configuration@file}%
{\ClassInfo{yathesis}{%
Fichier de configuration local \YAD@configuration@file\space
- trouve%
+ trouvé%
}%
}{%
% \YAD@ClassWarningNoLine{%
@@ -6239,14 +6333,14 @@ This work consists of the file yathesis.dtx
\InputIfFileExists{\YAD@configuration@directory/\YAD@characteristics@file}%
{%
\ClassInfo{yathesis}{%
- Fichier \YAD@characteristics@file\space des donnees du document trouve%
+ Fichier \YAD@characteristics@file\space des donnees du document trouvé%
}%
}%
{%
% \YAD@ClassWarningNoLine{%
% Fichier \YAD@characteristics@file\space des donnees du titre
% introuvable.\MessageBreak%
- % Le fichier \YAD@characteristics@file\space n'a pas ete trouve\MessageBreak%
+ % Le fichier \YAD@characteristics@file\space n'a pas été trouvé\MessageBreak%
% dans le dossier `\YAD@configuration@directory'.\MessageBreak Ce fichier
% \YAD@characteristics@file\space peut faciliter l'usage\MessageBreak de la classe%
% }%
@@ -6266,12 +6360,12 @@ This work consists of the file yathesis.dtx
% \fi
% \InputIfFileExists{\YAD@configuration@directory/\macrosfile}%
% {\ClassInfo{yathesis}{%
-% Fichier \macrosfile\space trouve%
+% Fichier \macrosfile\space trouvé%
% }}%
% {%
% % \YAD@ClassWarningNoLine{%
% % Fichier \macrosfile\space introuvable.\MessageBreak%
-% % Le fichier \macrosfile\space n'a pas ete trouve\MessageBreak%
+% % Le fichier \macrosfile\space n'a pas été trouvé\MessageBreak%
% % dans le dossier `\YAD@configuration@directory'%
% % }%
% }%
@@ -6292,9 +6386,9 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@notableofcontents}{%
}{%
\YAD@ClassError*[notableofcontents]{%
- Commande \protect\tableofcontents\space non utilisee%
+ Commande \protect\tableofcontents\space non utilisée%
}{%
- La commande \protect\tableofcontents\space n'a pas ete utilisee. Celle-ci
+ La commande \protect\tableofcontents\space n'a pas été utilisée. Celle-ci
est requise.%
}%
}%
@@ -6347,10 +6441,10 @@ This work consists of the file yathesis.dtx
% \begin{macrocode}
\InputIfFileExists{\YAD@translations@file}{}{%
\ClassError{%
- Fichier \`YAD@translations@file' non trouve%
+ Fichier \`YAD@translations@file' non trouvé%
}{%
- Le fichier \`YAD@translations@file' n'a pas ete trouve.\MessageBreak%
- Veuillez verifier votre installation de la classe `yathesis'.%
+ Le fichier \`YAD@translations@file' n'a pas été trouvé.\MessageBreak%
+ Veuillez vérifier votre installation de la classe `yathesis'.%
}%
}
% \end{macrocode}
@@ -6472,7 +6566,7 @@ This work consists of the file yathesis.dtx
%
% \begin{macrocode}
# mode: yathesis.cls
-# denisbitouze, 2016-12-01
+# denisbitouze, 2020-03-26
#
#include:class-book
#include:latex-document
@@ -6507,6 +6601,7 @@ This work consists of the file yathesis.dtx
#include:fncychap
#include:titleps
#include:ifdraft
+#include:colophon
#include:draftwatermark
#include:babel
#include:iflang
@@ -6526,6 +6621,7 @@ sepcorpaffilfrench=
sepcorpaffilenglish=
version=#inprogress,inprogress*,submitted,submitted*,final,draft
output=#screen,paper,paper*
+colophon=#verso-frontcover,recto-backcover,nowhere
localtocs
localtocs/depth=#section,subsection,subsubsection,paragraph,subparagraph
localbibs
@@ -6892,6 +6988,7 @@ name=
\AfterEndPreamble{
\pretocmd{\tableofcontents@YAD@without@argument}{\cleardoublepage\zlabel{tableofcontents-withoutargument}}{}{}
\pretocmd{\tableofcontents@YAD@with@argument}{\cleardoublepage\zlabel{tableofcontents-withargument}}{}{}
+ \pretocmd{\YAD@insert@colophon}{\clearpage\zlabel{colophon}}{}{}
\pretocmd{\maketitle}{\zlabel{fr-title}}{}{}%
\pretocmd{\makedisclaimer}{\cleardoublepage\zlabel{disclaimer}}{}{}
\pretocmd{\makekeywords}{\cleardoublepage\zlabel{keywords}}{}{}
@@ -6906,7 +7003,7 @@ name=
\RenewDocumentCommand\chapter{som}{%
\IfBooleanTF{#1}
{
- \ifthenelse{\equal{#3}{Introduction g\IeC {\'e}n\IeC {\'e}rale}}{\cleardoublepage\zlabel{introduction}%
+ \ifthenelse{\equal{#3}{Introduction générale}}{\cleardoublepage\zlabel{introduction}%
}{%
}%
\IfNoValueTF{#2}
@@ -6914,7 +7011,7 @@ name=
{\YAD@demo@chapter@ORI*[#2]{#3}}%
}
{%
- \ifthenelse{\equal{#3}{Introduction g\IeC {\'e}n\IeC {\'e}rale}}{\cleardoublepage\zlabel{introduction}%
+ \ifthenelse{\equal{#3}{Introduction générale}}{\cleardoublepage\zlabel{introduction}%
}{%
}%
\ifthenelse{\equal{#3}{Contexte du chaos du rire}}{\cleardoublepage\zlabel{chapter}%
@@ -6963,25 +7060,24 @@ $pdf_mode = 1;
$bibtex_use = 1;
$bibtex = 'biber %O %B';
-add_cus_dep('glo', 'gls', 0, 'makeglossaries');
-add_cus_dep('acn', 'acr', 0, 'makeglossaries');
+add_cus_dep( 'acn', 'acr', 0, 'makeglossaries' );
+add_cus_dep( 'glo', 'gls', 0, 'makeglossaries' );
add_cus_dep('slo', 'sls', 0, 'makeglossaries');
-sub makeglossaries{
- system( "makeglossaries \"$_[0]\"" );
+$clean_ext .= " acr acn alg glo gls glg slo sls slg";
+sub makeglossaries {
+ my ($base_name, $path) = fileparse( $_[0] );
+ pushd $path;
+ my $return = system "makeglossaries", $base_name;
+ popd;
+ return $return;
}
-$makeindex = 'texindy -L french';
-
-add_cus_dep('idx', 'ind', 0, 'texindy');
-sub texindy{
- system("texindy -L french \"$_[0].idx\"");
-}
+$makeindex = 'texindy -L french -C utf8';
push @generated_exts, 'acn', 'acr', 'alg', 'bbl', 'bcf', 'fls', 'gl*', 'idx',
'ind', 'ist', 'sbl*', 'sl*', 'sym*' ;
$clean_ext .= 'synctex.gz* run.xml tex.bak out bbl bcf fdb_latexmk run tdo listing *~ lo* unq mw' ;
-);
% \end{macrocode}
%
% \begin{macrocode}
diff --git a/macros/luatex/generic/luatexja/README b/macros/luatex/generic/luatexja/README
index 4ef0694918..838db102cf 100644
--- a/macros/luatex/generic/luatexja/README
+++ b/macros/luatex/generic/luatexja/README
@@ -1,4 +1,4 @@
-The LuaTeX-ja Package 20200323.0
+The LuaTeX-ja Package 20200326.0
--------------------------------
Copyright (c) 2011--2020 The LuaTeX-ja project
License: modified BSD (see COPYING)
@@ -45,9 +45,9 @@ Installation
2. If you must/want to install manually:
a. Download the source archive from CTAN,
- or tagged as 20200323.0 in the Git repository by
+ or tagged as 20200326.0 in the Git repository by
<http://git.osdn.jp/view?p=luatex-ja/luatexja.git
- ;a=snapshot;h=refs/tags/20200323.0;sf=tgz>
+ ;a=snapshot;h=refs/tags/20200326.0;sf=tgz>
b. Extract the archive and process following three files by LuaLaTeX
to generate classes for Japanese typesetting:
@@ -95,4 +95,4 @@ Notes
* src/*.{ins.dtx} and src/ltj-kinsoku_make.tex are not needed in regular use.
-Last commit date: Mon Mar 23 07:51:46 2020 +0900
+Last commit date: Thu Mar 26 10:27:52 2020 +0900
diff --git a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
index c850b984ca..386207203a 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
+++ b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
index e82c5aae28..cae4649d22 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
+++ b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja.dtx b/macros/luatex/generic/luatexja/doc/luatexja.dtx
index 1cf7ea28d7..d2ec828f7e 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja.dtx
+++ b/macros/luatex/generic/luatexja/doc/luatexja.dtx
@@ -1,11 +1,6 @@
%<*!showexpl>
%#! lualatex -shell-escape
-% To typeset this manual, you need following two fonts:
-% - KozMinPr6N-Regular.otf
-% - KozGoPr6N-Medium.otf
-% - KozGoPr6N-Regular.otf
-
%%%%% section ==> 章
%%%%% subsection => 節
\IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{}
@@ -34,9 +29,9 @@
]{iosevka-slab-regular}
\setsansfont[Scale=MatchLowercase,Ligatures=TeX,RawFeature=-notdef]{Linux Biolinum O}
\usepackage[match]{luatexja-fontspec}
-\usepackage[kozuka-pr6n]{luatexja-preset}
+\usepackage[haranoaji]{luatexja-preset}
\usepackage{unicode-math}
-\setmonojfont{KozGoPr6N-Regular.otf}
+\setmonojfont{HaranoAjiGothic-Regular.otf}
\setmathfont[Scale=MatchLowercase]{XITSMath}
\setLaTeXa{\scshape a}
@@ -94,7 +89,7 @@
basicstyle=\ttfamily\small, pos=r, breaklines=true,
numbers=none, rframe={}, basewidth=0.5em, numberstyle=\tiny, numbersep=0.5em,
explpreset={numberstyle=\tiny, numbers=left, numbersep=1em, columns=fixed},
- morecomment=[l]{\%}, commentstyle=\color{green},
+ morecomment=[l]{\%}, commentstyle=\color{green}
}
% Suppress output from showexpl to stdout.
\makeatletter
@@ -1389,8 +1384,8 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\
\item 和文フォントのシェイプを定義するには,通常の \cs{DeclareFontShape} を使えば良い:
%</ja>
\begin{lstlisting}
-\DeclareFontShape{JY3}{mc}{b}{n}{<-> s*KozMinPr6N-Bold:jfm=ujis;-kern}{}
- % Kozuka Mincho Pr6N Bold
+\DeclareFontShape{JY3}{mc}{b}{n}{<-> s*HaranoAjiMincho--Bold:jfm=ujis;-kern}{}
+ % Harano Aji Mincho Bold
\end{lstlisting}
%<*ja>
仮名書体を使う場合など,複数の和文フォントを組み合わせて使いたい場合は
@@ -1637,10 +1632,12 @@ Below is an example of \cs{jfontspec}.
%</ja>
\begin{LTXexample}[width=0.4\textwidth]
-\jfontspec[CJKShape=NLC]{KozMinPr6N-Regular}
-JIS~X~0213:2004→辻\par
-\jfontspec[CJKShape=JIS1990]{KozMinPr6N-Regular}
-JIS~X~0208:1990→辻
+\jfontspec[CJKShape=NLC]{HaranoAjiMincho-Regular}
+JIS~X~0213:2004→辻鯵\par
+\jfontspec[CJKShape=JIS1990]{HaranoAjiMincho-Regular}
+JIS~X~0208-1990→辻鯵\par
+\jfontspec[CJKShape=JIS1978]{HaranoAjiMincho-Regular}
+JIS~C~6226-1978→辻鯵
\end{LTXexample}
%<en>\subsection{Presets of Japanese fonts}
@@ -1671,10 +1668,10 @@ The following presets are defined:
%<ja> 例えば,本ドキュメントでは\Pkg{luatexja-preset}パッケージを
%<en> For example, this document loads \Pkg{luatexja-preset} package by
\begin{lstlisting}
-\usepackage[kozuka-pr6n]{luatexja-preset}
+\usepackage[haranoaji]{luatexja-preset}
\end{lstlisting}
-%<ja>として読み込み,小塚書体(Pr6N)を使うことを指定している.
-%<en> which means that Kozuka~Pr6N fonts will be used in this document.
+%<ja>として読み込み,原ノ味フォントを使うことを指定している.
+%<en> which means that Harano Aji fonts will be used in this document.
%<*en>
@@ -1693,15 +1690,13 @@ as an external package \Pkg{luatexja-otf}.
一部を(\Pkg{luatexja-otf}という別のパッケージとして)実装した.
%</ja>
-\begin{LTXexample}
-\jfontspec{KozMinPr6N-Regular.otf}
-森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に行く。
-
+\begin{LTXexample}[width=0.4\textwidth]
+森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に\\
\CID{7652}飾区の\CID{13706}野家,
-\CID{1481}城市,葛西駅,
-高崎と\CID{8705}\UTF{FA11}
-
-\aj半角{はんかくカタカナ}
+\CID{1481}城市,葛西駅,\\
+高崎と\CID{8705}\UTF{FA11},濱と\ajMayuHama\\
+\aj半角{カタカナ}\ajKakko3\ajMaruYobi{2}%
+\ajLig{令和}\ajLig{○問}\ajJIS
\end{LTXexample}
%<*ja>
@@ -3441,22 +3436,22 @@ TrueType/OpenTypeフォントにfeatureを指定したものを和文フォン
ことができる:
%</ja>
\begin{LTXexample}[width=0.3\textwidth]
-\jfont\tradgt={file:KozMinPr6N-Regular.otf:script=latn;%
+\jfont\tradmc={IPAexMincho:script=latn;%
+trad;-kern;jfm=ujis} at 14pt
-\tradgt 当/体/医/区
+\tradmc 当/体/医/区
\end{LTXexample}
%<*en>
Note that the defined control sequence
-(\cs{tradgt} in the example above) using \cs{jfont} is not a
+(\cs{tradmc} in the example above) using \cs{jfont} is not a
\textit{font\_def} token, but a macro.
-Hence the input like \verb+\fontname\tradgt+
+Hence the input like \verb+\fontname\tradmc+
causes a error. We denote control sequences which are defined in
\cs{jfont} by <jfont\_cs>.
%</en>
%<*ja>
-なお,\cs{jfont} で定義された制御綴(上の例だと \cs{tradgt})
-は\textit{font\_def}トークンではなくマクロである.従って,\verb+\fontname\tradgt+ のような
+なお,\cs{jfont} で定義された制御綴(上の例だと \cs{tradmc})
+は\textit{font\_def}トークンではなくマクロである.従って,\verb+\fontname\tradmc+のような
入力はエラーとなる.以下では \cs{jfont} で定義された
制御綴を<jfont\_cs>で表す.
%</ja>
@@ -3588,9 +3583,9 @@ The difference among these three~JFMs is shown in \autoref{tab-difjfm}.
\begin{figure}
\begin{LTXexample}[width=0.3\textwidth]
\ltjsetparameter{differentjfm=both}
-\jfont\F=file:KozMinPr6N-Regular.otf:jfm=ujis
-\jfont\G=file:KozGoPr6N-Medium.otf:jfm=ujis
-\jfont\H=file:KozGoPr6N-Medium.otf:jfm=ujis;jfmvar=hoge
+\jfont\F=HaranoAjiMincho-Regular:jfm=ujis
+\jfont\G=HaranoAjiGothic-Medium:jfm=ujis
+\jfont\H=HaranoAjiGothic-Medium:jfm=ujis;jfmvar=hoge
\F ){\G 【】}( % halfwidth space
){\H 『』}( % fullwidth space
@@ -3625,10 +3620,10 @@ JFMもサイズも同じなので,普通に「)【」と入力した時と
\begin{figure}
\begin{LTXexample}[pos=t]
\newcommand\test{\vrule ダイナミックダイクマ\vrule\\}
-\jfont\KMFW = KozMinPr6N-Regular:jfm=prop;-kern at 17pt
-\jfont\KMFK = KozMinPr6N-Regular:jfm=prop at 17pt % kern is activated
-\jfont\KMPW = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;-kern at 17pt
-\jfont\KMPK = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;+kern at 17pt
+\jfont\KMFW = HaranoAjiMincho-Regular:jfm=prop;-kern at 17.28pt
+\jfont\KMFK = HaranoAjiMincho-Regular:jfm=prop at 17.28pt % kern is activated
+\jfont\KMPW = HaranoAjiMincho-Regular:jfm=prop;script=dflt;+palt;-kern at 17.28pt
+\jfont\KMPK = HaranoAjiMincho-Regular:jfm=prop;script=dflt;+palt;+kern at 17.28pt
\begin{multicols}{2}
\ltjsetparameter{kanjiskip=0pt}
{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
@@ -3666,8 +3661,8 @@ NFSS2用の命令(\ref{ssec:chgfnt}節,\ref{ssec:nfsspat}節)における
カーニング情報は標準で使用する}ことになっているようである.
言い換えれば,カーニング情報を使用しない設定にするには,面倒でも
\begin{lstlisting}
-\jfont\hoge=KozMinPr6N-Regular:jfm=ujis;-kern at 3.5mm
-\DeclareFontShape{JY3}{fuga}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{}
+\jfont\hoge=HaranoAjiMincho-Regular:jfm=ujis;-kern at 3.5mm
+\DeclareFontShape{JY3}{fuga}{m}{n} {<-> s*HaranoAjiMincho-Regular:jfm=ujis;-kern}{}
\end{lstlisting}
のように,\texttt{-kern} という指定を自分で追加しなければいけない.
\item
@@ -3703,11 +3698,9 @@ For example, the following example uses the standard JFM \texttt{jfm-ujis.lua},
letter-spacing and the width of italic correction are not correct:
%</en>
\begin{LTXexample}[width=0.3\textwidth]
-\jfont\E=KozMinPr6N-Regular:extend=1.5;jfm=ujis;-kern
-\E あいうえお
-
-\jfont\S=KozMinPr6N-Regular:slant=1;jfm=ujis;-kern
-\S あいう\/ABC
+\jfont\E=HaranoAjiMincho-Regular:extend=1.5;jfm=ujis;-kern
+\jfont\S=HaranoAjiMincho-Regular:slant=1;jfm=ujis;-kern
+\E あいうえお \S あいう\/ABC
\end{LTXexample}
%<*ja>
@@ -3723,16 +3716,15 @@ JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
\begin{LTXexample}[width=16\zw]
\leavevmode
\ltjsetparameter{kanjiskip=0pt plus 3\zw}
-\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
-
-\jfont\G=file:KozMinPr6N-Regular.otf%
- :jfm=ujis;-ltjksp at 9.2487pt
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule\\
+\jfont\G=HaranoAjiMincho-Regular%
+ :jfm=ujis;-ltjksp at \zw
\G\leavevmode%
\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
\end{LTXexample}
なお,
\begin{lstlisting}
- \jfont\G=file:KozMinPr6N-Regular.otf:jfm=ujis;-ltjksp;+ltjksp at 9.2487pt
+ \jfont\G=HaranoAjiMincho-Regular:jfm=ujis;-ltjksp;+ltjksp at \zw
\end{lstlisting}
のように \texttt{+ltjksp} 指定を行った場合は,\texttt{kanjiskip\_natural} など
3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp} を複数回指定した場合は,
@@ -3750,10 +3742,9 @@ This functionality is disabled by \texttt{-ltjksp} specification.
\begin{LTXexample}[width=16\zw]
\leavevmode
\ltjsetparameter{kanjiskip=0pt plus 3\zw}
-\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
-
-\jfont\G=file:KozMinPr6N-Regular.otf%
- :jfm=ujis;-ltjksp at 9.2487pt
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule\\
+\jfont\G=HaranoAjiMincho-Regular%
+ :jfm=ujis;-ltjksp at \zw
\G\leavevmode%
\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
\end{LTXexample}
@@ -3825,8 +3816,8 @@ A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont
unless \texttt{vert}~and//or~\texttt{vrt2} are explicitly activated
or deactivated (as the second line in the example below).
\begin{lstlisting}
-\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv % vrt2 is automatically activated
-\tfont\T=file:KozMinPr6N-Regular.otf:jfm=ujisv;-vert % vert and vrt2 are not activated
+\tfont\S=HaranoAjiMincho-Regular:jfm=ujisv % vrt2 is automatically activated
+\tfont\T=HaranoAjiMincho-Regular:jfm=ujisv;-vert % vert and vrt2 are not activated
\tfont\U=file:ipaexm.ttf:jfm=ujisv
% vert is automatically activated, since this font does not have vrt2
\end{lstlisting}
@@ -3851,9 +3842,9 @@ A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont
\end{description}
\begin{figure}[!tb]
\begin{LTXexample}[pos=b]
-\jfont\X=[KozMinPr6N-Regular.otf]:jfm=ujis
-\tfont\U=[KozMinPr6N-Regular.otf]:jfm=ujisv
-\tfont\V=[KozMinPr6N-Regular.otf]:jfm=ujisv;jpotf
+\jfont\X=[HaranoAjiMincho-Regular.otf]:jfm=ujis
+\tfont\U=[HaranoAjiMincho-Regular.otf]:jfm=ujisv
+\tfont\V=[HaranoAjiMincho-Regular.otf]:jfm=ujisv;jpotf
\def\TEST#1#2{\leavevmode\hbox{#1#2\string#2 “引用,と句読点.”}}
\ttfamily\centering\TEST\yoko\X \quad \TEST\tate\U \quad \TEST\tate\V
\end{LTXexample}
@@ -3880,8 +3871,8 @@ A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont
\footnote{もしフォントが\texttt{vrt2}を定義していなかった場合,代わりに
\texttt{vert}を用いる.}.
\begin{lstlisting}
-\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv % vrt2 is automatically activated
-\tfont\T=file:KozMinPr6N-Regular.otf:jfm=ujisv;-vert % vert and vrt2 are not activated
+\tfont\S=HaranoAjiMincho-Regular:jfm=ujisv % vrt2 is automatically activated
+\tfont\T=HaranoAjiMincho-Regular:jfm=ujisv;-vert % vert and vrt2 are not activated
\tfont\U=file:ipaexm.ttf:jfm=ujisv
% vert is automatically activated, since this font does not have vrt2
\end{lstlisting}
@@ -3914,9 +3905,9 @@ A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont
\begin{figure}[!tb]
\begin{LTXexample}[pos=r,width=.4\textwidth]
-\jfont\X=[KozMinPr6N-Regular.otf]:jfm=ujis
-\tfont\U=[KozMinPr6N-Regular.otf]:jfm=ujisv
-\tfont\V=[KozMinPr6N-Regular.otf]:jfm=ujisv;jpotf
+\jfont\X=[HaranoAjiMincho-Regular.otf]:jfm=ujis
+\tfont\U=[HaranoAjiMincho-Regular.otf]:jfm=ujisv
+\tfont\V=[HaranoAjiMincho-Regular.otf]:jfm=ujisv;jpotf
\def\TEST#1#2{\leavevmode
\hbox{#1#2\string#2 “引用,と句読点.”}}
\ttfamily\centering
@@ -4763,9 +4754,8 @@ using \texttt{jfm-test.lua} which contains the following:
%<ja>ここで,次のような入力とその実行結果を考える:
%<en>Now consider the following input/output:
\begin{LTXexample}[width=0.3\textwidth]
-\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+hwid
-\setbox0\hbox{\a ヒ漢}
-\the\wd0
+\jfont\a=IPAexMincho:jfm=test;+hwid
+\setbox0\hbox{\a ヒ漢}\the\wd0
\end{LTXexample}
%<*en>
Now we look why the above source outputs 15\,pt.
@@ -4798,7 +4788,7 @@ The following input is an example.
但し,JFMによって決まる置換後のグリフの文字クラスが0である場合は,置換前の文字クラスを採用する.
%</ja>
\begin{LTXexample}[width=0.3\textwidth]
-\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert
+\jfont\a=HaranoAjiMincho-Regular:jfm=test;+vert
\a 漢。\inhibitglue 漢
\end{LTXexample}
%<*en>
@@ -4937,7 +4927,7 @@ See Japanese version of this manual.
\texttt{'parbdd'}を入れれば全角下がりとなる.
\begin{LTXexample}[width=0.4\textwidth]
-\jfont\g=KozMinPr6N-Regular:jfm=test \g
+\jfont\g=HaranoAjiMincho-Regular:jfm=test \g
\parindent1\zw\noindent{}◆◆◆◆◆
\par 「◆◆←二分下がり
\par 【◆◆←全角下がり
@@ -6003,7 +5993,7 @@ the beginning of a box and ``あ'', and also between ``あ''~and~``ウ''.
%</ja>
\begin{LTXexample}[width=0.4\textwidth]
-\jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g
+\jfont\g=HaranoAjiMincho-Regular:jfm=test \g
\fbox{\hbox{あウあ\inhibitglue ウ}}
\inhibitglue\par\noindent あ1
\par\inhibitglue\noindent あ2
@@ -6558,9 +6548,9 @@ which is not produced by \cs{fontshape\{it\}}.
\begin{figure}[!tb]
\begin{LTXexample}[pos=b]
\DeclareKanjiFamily{JY3}{edm}{}
-\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis}{}
-\DeclareFontShape{JY3}{edm}{m}{fb} {<-> s*KozGoPr6N-Regular:jfm=ujis;color=003FFF}{}
-\DeclareFontShape{JY3}{edm}{m}{fb2} {<-> s*KozGoPr6N-Regular:jfm=ujis;color=FF1900}{}
+\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*HaranoAjiMincho-Regular:jfm=ujis}{}
+\DeclareFontShape{JY3}{edm}{m}{fb} {<-> s*HaranoAjiGothic-Regular:jfm=ujis;color=003FFF}{}
+\DeclareFontShape{JY3}{edm}{m}{fb2} {<-> s*HaranoAjiGothic-Regular:jfm=ujis;color=FF1900}{}
\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{fb}{ "4E00-"67FF,{-2}-{-2}}
\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{fb2}{"6800-"9FFF}
{\kanjifamily{edm}\selectfont
@@ -6941,8 +6931,8 @@ will not be embedded in the output PDF file. See Subsection~\ref{ssec:psft}.
\begin{LTXexample}[width=0.25\textwidth]
\jfontspec[
YokoFeatures={Color=FF1900}, TateFeatures={Color=003FFF},
- TateFont=KozGoPr6N-Regular
-]{KozMinPr6N-Regular}
+ TateFont=HaranoAjiGothic-Regular
+]{HaranoAjiMincho-Regular}
\hbox{\yoko 横組のテスト}\hbox{\tate 縦組のテスト}
\addjfontfeatures{Color=00AF00}
\hbox{\yoko 横組}\hbox{\tate 縦組}
@@ -6990,11 +6980,11 @@ A demonstrarion is shown in \autoref{fig:yokotate-fontspec}.
\begin{LTXexample}[pos=b]
\jfontspec[
AltFont={
- {Range="4E00-"67FF, Font=KozGoPr6N-Regular, Color=003FFF},
+ {Range="4E00-"67FF, Font=HaranoAjiGothic-Regular, Color=003FFF},
{Range="6800-"9EFF, Color=FF1900},
- {Range="3040-"306F, Font=KozGoPr6N-Regular, Color=35A16B},
+ {Range="3040-"306F, Font=HaranoAjiGothic-Regular, Color=35A16B},
}
-]{KozMinPr6N-Regular}
+]{HaranoAjiMincho-Regular}
日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、
諸国民との協和による成果と、わが国全土にわたつて自由のもたらす恵沢を確保し、……
\end{LTXexample}
@@ -7134,6 +7124,9 @@ If the Japanese font is neither Adobe-Japan1,~Adobe-GB1, Adobe-CNS1,
Adobe-Korea1,~nor~Adobe-KR CID-keyed font,
\LuaTeX-ja treats that <number> is a CID number of Adobe-Japan1 character collection,
and tries to typeset a ``most suitable glyph''.
+
+Note that if the Japanese font is loaded using the HarfBuzz library, this \cs{CID}
+command does not work.
%</en>
%<*ja>
CID番号が<number>の文字を出力する.
@@ -7146,6 +7139,8 @@ CID番号が<number>の文字を出力する.
また,フォントにIVDコレクションAdobe-Japan1が含まれていれば,その情報を用いて
グリフを選択する.
}を出力する.
+
+なお,現在の和文フォントがHarfBuzzを用いて読み込まれた場合には,\cs{CID}は正しく動作しない.
%</ja>
\item[\cs{UTF}\{<hex\_number>\}]
diff --git a/macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua b/macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua
index 04cae9d2f1..2efafc06ed 100644
--- a/macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua
@@ -40,8 +40,7 @@ do
local nulltable = {}
local function get_cidinfo(id) -- table
local t = getfont(id)
- local a = t and (t.cidinfo or (t.resources and t.resources and t.resources.cidinfo)) or nulltable
- return a
+ return (t and (t.resources and t.resources.cidinfo or t.cidinfo)) or nulltable
end
aux.get_cidinfo = get_cidinfo
end
diff --git a/macros/luatex/generic/luatexja/src/ltj-otf.lua b/macros/luatex/generic/luatexja/src/ltj-otf.lua
index 48fe4bde2e..f0088944c2 100644
--- a/macros/luatex/generic/luatexja/src/ltj-otf.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-otf.lua
@@ -78,7 +78,7 @@ local function get_ucs_from_rmlgbm(c)
local tfmdata = font_getfont(curjfnt)
if tfmdata and tfmdata.resources then
local base, ivs = v % 0x200000, 0xE00FF + math.floor(v/0x200000)
- curjfnt = tfmdata and tfmdata.variants
+ curjfnt = tfmdata.resources.variants
curjfnt = curjfnt and curjfnt[ivs]
return curjfnt and curjfnt[base] or base
else return base
@@ -144,7 +144,7 @@ do
if key==0 then return append_jglyph(0) end
local curjfnt = tex_get_attr((ltjd_get_dir_count()==dir_tate)
and attr_curtfnt or attr_curjfnt)
- local cidinfo = ltju.get_cidinfo(cudjfnt)
+ local cidinfo = ltju.get_cidinfo(curjfnt)
if type(cidinfo)~="table" or
cidinfo.ordering ~= "Japan1" and
cidinfo.ordering ~= "GB1" and
@@ -205,7 +205,7 @@ ltjb.add_to_callback('pre_linebreak_filter', extract,'ltj.otf',
local function ind_to_uni(fmtable, fn)
if fn<0 then return end
local cid = ltju.get_cidinfo(fn);
- local t = ltjf_font_extra_info[fn].ind_to_uni
+ local t = ltjf_font_extra_info[fn]; t = t and t.ind_to_uni
if t and cid.ordering == "Japan1" then
for i, v in pairs(fmtable.chars) do
local j = string.match(i, "^AJ1%-([0-9]*)")
diff --git a/macros/luatex/generic/luatexja/src/luatexja.sty b/macros/luatex/generic/luatexja/src/luatexja.sty
index 0af38a01af..0fbb7d1f39 100644
--- a/macros/luatex/generic/luatexja/src/luatexja.sty
+++ b/macros/luatex/generic/luatexja/src/luatexja.sty
@@ -41,7 +41,7 @@
\ProcessOptions\relax
\fi %</LaTeX>
%%%% VERSION
-\def\LuaTeXjaversion{20200323.0}
+\def\LuaTeXjaversion{20200326.0}
\directlua{require('ltj-unicode-ccfix.lua')}% catcode of ideographs
diff --git a/macros/luatex/generic/luatexja/src/patches/lltjp-listings.sty b/macros/luatex/generic/luatexja/src/patches/lltjp-listings.sty
index 13f75e302e..ee3c3aa14b 100644
--- a/macros/luatex/generic/luatexja/src/patches/lltjp-listings.sty
+++ b/macros/luatex/generic/luatexja/src/patches/lltjp-listings.sty
@@ -1,9 +1,9 @@
%
-% lltjp-listings.sty 2018-09-17
+% lltjp-listings.sty 2020-03-23
%
\NeedsTeXFormat{LaTeX2e}
-\RequirePackage{listings,luatexbase-cctb}
+\RequirePackage{etoolbox,listings,luatexbase-cctb}
%%%%%%%%%%%%%%%% Japanese support
%% whether letter-space in a fixed mode box is doubled or not
@@ -26,8 +26,19 @@
% override \lst@FillFixed@
% \ltj@hst@hss is \ltj@lst@hss@ivs or \ltj@lst@hss@normal,
% according to vsraw = true or not.
+\def\lst@FillFixed#1{{\null#1\null}\lst@FillFixed@}
\def\lst@FillFixed@#1{%
- \ifx\@empty#1\else\ltj@lst@hss#1\expandafter\lst@FillFixed@\fi}
+ \ifx\@empty#1\else\ltj@lst@hss{\null#1\null}\expandafter\lst@FillFixed@\fi}
+\let\lst@FillOutputBox\lst@FillFixed
+% [space/full]flexiblemode (not much useful...)
+\def\ltj@lst@FillFlex#1\@empty{\null#1\null}
+\patchcmd\lst@column@flexible
+ {\let\lst@FillOutputBox\@empty}{\let\lst@FillOutputBox\ltj@lst@FillFlex}{}{}
+\patchcmd\lst@column@fullflexible
+ {\let\lst@FillOutputBox\@empty}{\let\lst@FillOutputBox\ltj@lst@FillFlex}{}{}
+\patchcmd\lst@column@spaceflexible
+ {\let\lst@FillOutputBox\@empty}{\let\lst@FillOutputBox\ltj@lst@FillFlex}{}{}
+
\directlua{
local cat_str = luatexbase.catcodetables['string']
@@ -97,7 +108,8 @@
\else
\ltj@lst@setletterflag
\fi
- \lst@Append#1}
+ \lst@Append#1%
+}
% 半角カナ処理命令
\def\ltj@lst@ProcessJALetterHalf#1{%
@@ -423,7 +435,6 @@
\fi}
\endgroup
-
% \begin{修正事項}{1.3} from jlisting.sty
% ちょっとした修正
\gdef\lst@breakProcessOther#1{\lst@ProcessOther#1}