diff options
57 files changed, 13976 insertions, 4 deletions
diff --git a/Master/texmf-dist/doc/latex/nwejm/README.md b/Master/texmf-dist/doc/latex/nwejm/README.md new file mode 100644 index 00000000000..6e81570bb05 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/README.md @@ -0,0 +1,21 @@ +nwejm - Support for the journal "North-Western European Journal of Mathematics" +=============================================================================== + +This bundle includes LaTeX classes and `biblatex` styles files dedicated to the +new journal "North-Western European Journal of Mathematics". + +Follow development, submit issues, and suggest improvements at +https://github.com/dbitouze/nwejm. + +Installation +------------ + +The classes are supplied in `.dtx` format. If you want to unpack the `.dtx` +yourself, running `tex nwejm.dtx` will extract the package whereas +`pdflatex nwejm` will typeset the documentation of the `nwejmart` class +(currently only in French). + +Typesetting the documentation also requires a number of packages in addition to +those needed to use the `nwejm` classes. To compile the documentation without +error, you will need, among others, my personal (dirty) package `denisbdoc` for +documenting the classes I've written. diff --git a/Master/texmf-dist/doc/latex/nwejm/addons/completion/nwejm.cwl b/Master/texmf-dist/doc/latex/nwejm/addons/completion/nwejm.cwl new file mode 100644 index 00000000000..f383b4ee744 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/addons/completion/nwejm.cwl @@ -0,0 +1,209 @@ +# mode: nwejm.cls +# denisbitouze, 23.12.2015 +# +#include:class-book +#include:latex-document +#include:latex-mathsymbols +#include:tex +#include:xparse +#include:l3keys2e +#include:l3sort +#include:nag +#include:fontenc +#include:inputenc +#include:fontspec +#include:graphicx +#include:adjustbox +#include:draftwatermark +#include:xspace +#include:csquotes +#include:biblatex +#include:array +#include:booktabs +#include:varioref +#include:mathtools +#include:mathrsfs +#include:esvect +#include:kpfonts +#include:translations +#include:fmtcount +#include:geometry +#include:babel +#include:tocvsec2 +#include:etoc +#include:microtype +#include:datetime2 +#include:enumitem +#include:pagegrid +#include:amsthm +#include:thmtools +#include:hyperref +#include:hypcap +#include:bookmark +#include:glossaries +#include:cleveref +# +# Document class +#keyvals:\documentclass/nwejmart +french +english +ngerman +dutch +#endkeyvals +# +# Cover and title pages +# +# Title, etc. +\title{title}#n +\title[short title]{title}#n +\subtitle{%<subtitle%>}#n* +\subtitle[%<short subtitle%>]{%<subtitle%>}#n* +# +# Author +\author{%<Last name%>, %<First name%>}#n +\author[affiliation={%<affiliation%>}]{%<Last name%>, %<First name%>}#n +\author[affiliation=[%<affiliation's tag%>]{%<affiliation%>}]{%<Last name%>, %<First name%>}#n +\author[affiliationtagged={%<affiliation's tag%>}]{%<Last name%>, %<First name%>}#n +# +# Dates +\dates{received=%<yyyy%>-%<mm%>-%<dd%>,accepted=%<yyyy%>-%<mm%>-%<dd%>,online=%<yyyy%>-%<mm%>-%<dd%>}#n +# +# Math commands +\N#m +\Z#m +\D#m +\Q#m +\R#m +\C#m +\K#m +\arccosh#m +\arcsin#m +\arcsinh#m +\arctan#m +\arctanh#m +\Argch#m +\Argsh#m +\Argth#m +\ch#m +\cotan#m +\curl#m +\dif#m +\Div#m +\grad#m +\E#m +\I#m +\rot#m +\sh#m +\supp#m +\th#m +\norm#m +\lnorm#m +\llnorm#m +\lpnorm#m +\supnorm#m +\abs#m +\prt#m +\brk#m +\brc#m +\leqgeq#m +\lrangle#m +\set{%<set self-contained definition%>}#m +\set{%<set definition%>}[%<such that...%>]#m +\begin{axiom} +\begin{assertions} +\begin{conjecture} +\begin{corollary} +\begin{definition} +\begin{example} +\begin{hypotheses} +\begin{proposition} +\begin{lemma} +\begin{notation} +\begin{proof} +\begin{remark} +\begin{theorem} +# +\begin{axiom*} +\begin{assertions*} +\begin{conjecture*} +\begin{corollary*} +\begin{definition*} +\begin{example*} +\begin{hypotheses*} +\begin{proposition*} +\begin{lemma*} +\begin{notation*} +\begin{proof*} +\begin{remark*} +\begin{theorem*} +# +\end{axiom} +\end{assertions} +\end{conjecture} +\end{corollary} +\end{definition} +\end{example} +\end{hypotheses} +\end{proposition} +\end{lemma} +\end{notation} +\end{proof} +\end{remark} +\end{theorem} +# +\end{axiom*} +\end{assertions*} +\end{conjecture*} +\end{corollary*} +\end{definition*} +\end{example*} +\end{hypotheses*} +\end{proposition*} +\end{lemma*} +\end{notation*} +\end{proof*} +\end{remark*} +\end{theorem*} +# +\begin{description*} +\begin{enumerate*} +\begin{itemize*} +# +\end{description*} +\end{enumerate*} +\end{itemize*} +# Miscellaneous commands +\keywords{%<list of keywords%>}#n +\msc{%<list of MSCs%>}#n +\nwejm#n +\nwejm*#n* +\century{%<(positive or negative) integer%>}#n +\century*{%<(positive or negative) integer%>}#n* +\aside{%<interpolated clause%>}#n +\aside*{%<interpolated clause%>}#n +\acknowledgements{%<acknowledgments%>}#n +\ie#n +\ie*#n* +\Ie#n +\Ie*#n* +\NewPairedDelimiter#n +\articlesetup#n +\BinaryOperators#n +# +\editorinchief{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\editor{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\fieldseditor{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\managingeditor{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\classdesigner{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\computerengineer{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\classmaintainer{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\fontdesigner{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\printingservice{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\computerassistance{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\secretary{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\issuesetup{number=%<positive integer%>}#n +\journalsetup {publisher=%<publisher%>,address={%<address%>},phone=%<phone%>,email=%<email%>,url=%<url%>,issn=%<issn%>,isbn=%<isbn%>}#n +\inputarticle{file}#i +\inputarticle[path]{file}#i +\fontdesignertext{text}#n +\printertext{text}#n diff --git a/Master/texmf-dist/doc/latex/nwejm/addons/completion/nwejmart.cwl b/Master/texmf-dist/doc/latex/nwejm/addons/completion/nwejmart.cwl new file mode 100644 index 00000000000..67175927679 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/addons/completion/nwejmart.cwl @@ -0,0 +1,5 @@ +# mode: nwejm.cls +# denisbitouze, 23.12.2015 +# +#include:nwejm + diff --git a/Master/texmf-dist/doc/latex/nwejm/documentation/french/fixed-footnotes.tex b/Master/texmf-dist/doc/latex/nwejm/documentation/french/fixed-footnotes.tex new file mode 100644 index 00000000000..3f3417ac696 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/documentation/french/fixed-footnotes.tex @@ -0,0 +1,8 @@ +\DeclareFixedFootnote{\conseilslatex}{Et donne de façon subliminale quelques conseils + \LaTeX{}. On consultera \autocite{Ensenbach} pour un panorama plus complet des + commandes et extensions obsolètes (et autres erreurs).} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "nwejm.tex" +%%% End: diff --git a/Master/texmf-dist/doc/latex/nwejm/documentation/french/notations.tex b/Master/texmf-dist/doc/latex/nwejm/documentation/french/notations.tex new file mode 100644 index 00000000000..5aaa71586e2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/documentation/french/notations.tex @@ -0,0 +1,135 @@ +\subsection{Notations, syntaxe, terminologie et codes couleurs}\label{sec-synt-term-notat} + +Nous précisons ici les notations, syntaxe, terminologie et codes couleurs de +la présente documentation. + +\subsubsection{Commandes, environnements, clés, valeurs}\label{sec-comm-envir-cles} + +Les commandes, environnements, clés et valeurs de clés sont systématiquement +composés en fonte à chasse fixe. En outre, pour plus facilement les +distinguer, ils figurent avec des couleurs propres : +\begin{itemize} +\item les commandes en bleu : \docAuxCommand*{commande} ; +\item les environnements en \enquote{sarcelle} : + \docAuxEnvironment*{environnement} ; +\item les clés en pourpre : \docAuxKey*{clé} ; +\item les valeurs des clés en violet : \docValue*{valeur}. +\end{itemize} + +\subsubsection{Arguments génériques} +\label{sec-arguments-generiques} + +Pour expliquer le rôle d'une commande, il est parfois nécessaire d'indiquer +à quoi celle-ci s'applique, autrement dit quel en est l'argument générique. +Un tel argument est composé : +\begin{itemize} +\item en fonte à chasse fixe ; +\item en italique ; +\item entre chevrons simples ; +\end{itemize} +le tout en marron, ainsi : \meta{argument générique}. + +\subsubsection{Liens hypertextes} +\label{sec-liens-hypertextes} + +Les liens hypertextes figurent en couleur, ainsi : +\href{http://gte.univ-littoral.fr/members/dbitouze/pub/latex}{lien hypertexte}. +La plupart des références aux commandes, environnements et clés définis dans la +présente documentation, sont des liens hypertextes, surmontés du numéro de page +où se trouve la cible correspondante (sauf si elle se situe sur la même page) : +\begin{itemize} +\item \refCom{author} ; +\item \refEnv{abstract}. +\end{itemize} + + +\subsubsection{Éléments \enquote{obligatoires}} +\label{sec-comm-oblig} + +L'icône \mandatory{}, figurant en regard de certains éléments (commandes ou +environnements), indique que ceux-ci sont \enquote{obligatoires}. + +\subsubsection{Codes sources} +\label{sec-codes-sources} + +Les exemples qui illustrent la présente documentation sont constitués de codes +sources et, le cas échéant, des \enquote{copies d'écran} correspondantes. +% Ceux-ci proviennent le plus souvent du spécimen de document composé avec la +% \yatcl, fourni avec l'ensemble de la classe +% (cf. \vref{sec-specimen-arborescence}). + +Ces codes sources figurent dans des cadres, pouvant comporter un titre, de +couleur bleu : +\begin{itemize} +\item non ombrés s'ils doivent être saisis dans le corps du document ; +\begin{bodycode} +"\meta{code source}" +\end{bodycode} +\begin{bodycode}[title=\meta{titre}] +"\meta{code source}" +\end{bodycode} +\item ombrés s'ils doivent être saisis en préambule du fichier. +\begin{preamblecode} +"\meta{code source à insérer en préambule}" +\end{preamblecode} +\begin{preamblecode}[title=\meta{titre}] +"\meta{code source à insérer en préambule}" +\end{preamblecode} +\end{itemize} + +\subsubsection{Espaces dans les codes sources} +\label{sec-espaces-dans-les} + +Pour éviter certaines confusions, les espaces dans les codes sources devant +être saisis au clavier sont parfois matérialisés au moyen de la marque +\lstinline[showspaces]+ +. + +\subsubsection{Options} +\label{sec-options} + +La présente classe, ainsi que certaines de ses commandes et certains de ses +environnements, peuvent être modulés au moyen d'options, ou listes d'options +(séparées par des virgules). Ces options peuvent se présenter sous la forme +\meta{clé}|=|\meta{valeur} et la \meta{valeur} passée à une \meta{clé} peut +être : +%^^A \begin{description} +%^^A \item[ne prennent pas de valeur.] Une telle option, par exemple nommée +%^^A \refKey{option}, est alors documentée selon la syntaxe suivante: +%^^A \begin{docKey*}{option}{}{\meta{valeurs par défaut et initiale}} +%^^A \meta{Description de \refKey{option}} +%^^A \end{docKey*} +%^^A \item[prennent des valeurs.] Une telle option se présente alors sous la forme +%^^A \meta{clé}"="\meta{valeur}. Les valeurs passées à une clé peuvent être : +\begin{description} +\item[libre.] Si une telle \meta{clé} est (pour l'exemple) nommée + \refKey{freekey}, elle est alors documentée selon la syntaxe suivante : + \begin{docKey*}{freekey}{=\meta{valeur}}{\meta{valeurs par défaut et initiale}} + \meta{Description de \refKey{freekey}} + \end{docKey*} +\item[imposée] (parmi une liste de valeurs possibles). Si une telle \meta{clé} est + (pour l'exemple) nommée \refKey{choicekey} et de valeurs imposées + \docValue*{valeur1}, \dots{}, \docValue*{valeurN}, elle est alors + documentée selon la syntaxe suivante\footnote{Comme souvent en informatique, + la barre verticale séparant les valeurs possibles signifie \enquote{ou}.} : + \begin{docKey*}{choicekey}{=\docValue*{valeur1}\textbar...\textbar\docValue*{valeurN}}{\meta{valeurs par défaut et initiale}} + \meta{Description de \refKey{choicekey} et de ses valeurs possibles} + \end{docKey*} +\end{description} +%^^A \end{description} + +Les \meta{valeurs par défaut et initiale} d'une clé sont souvent précisées +(entre parenthèses en fin de ligne). Elles indiquent ce que la clé vaut : +\begin{description} +\item[par défaut] c'est-à-dire lorsque la clé \emph{est} employée, mais + \emph{seule} c'est-à-dire sans qu'une valeur explicite lui soit passée ; +\item[initialement] c'est-à-dire lorsque la clé \emph{n'est pas} employée. +\end{description} +% +\iffalse +%%% Local Variables: +%%% mode: latex +%%% eval: (latex-mode) +%%% ispell-local-dictionary: "fr_FR" +%%% TeX-master: "nwejm.dtx" +%%% End: +\fi diff --git a/Master/texmf-dist/doc/latex/nwejm/documentation/french/nwejm-fr.tex b/Master/texmf-dist/doc/latex/nwejm/documentation/french/nwejm-fr.tex new file mode 100644 index 00000000000..8c51264c336 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/documentation/french/nwejm-fr.tex @@ -0,0 +1,1431 @@ +\section{Introduction} +\label{sec-introduction} + +\begin{dbremark}{Documentation : travail en cours}{} + La présente documentation est un travail en cours. Nous prions les lecteurs + qui ont des remarques à formuler ou qui trouveront des erreurs de bien vouloir + nous les signaler à l'adresse courriel figurant en page de titre. +\end{dbremark} + +La classe \LaTeX{} \nwejmauthor{} est destinée aux auteurs souhaitant publier un +article dans le \href{http://math.univ-lille1.fr/~nwejm/}{\gls{nwejm}}. Cette +classe a pour but : +\begin{enumerate} +\item de reproduire fidèlement la maquette de la \nwejm{}, permettant ainsi + aux auteurs de pouvoir travailler la mise en page de leur document dans des + conditions réelles ; +\item de fournir un certain nombre d'outils (commandes et environnements) + destinés à faciliter la rédaction de documents, notamment ceux contenant des + formules de mathématiques. +\end{enumerate} + +\begin{dbwarning}{Codage d'entrée \protect\lstinline+UTF-8+ obligatoire}{} + La \nwejmauthorcl{} du \nwejm{} repose de façon cruciale sur un codage + d'entrée en |UTF-8| : + \begin{itemize} + \item elle charge le \Package{inputenc}\footnote{% + Il convient donc de \emph{ne pas} charger ce package : on se reportera + à la \vref{sec-canevas-de-fichier} pour un canevas de fichier source + destiné à la \nwejm{} et notamment pour un préambule typique.% + % + } + % + avec l'option \docAuxKey{utf8} ; + \item elle suppose que les fichiers sources \file{.tex} sont effectivement + codés en |UTF-8| : on veillera donc à ce que l'éditeur utilisé soit réglé + sur ce codage d'entrée. + \end{itemize} +\end{dbwarning} + +\begin{dbwarning}{Format et compilation \hologo{pdfLaTeX}}{} + La composition des numéros du \nwejm*{} met en œuvre : + \begin{itemize} + \item le format \hologo{LaTeX}\footnote{Sous sa version \hologo{LaTeXe}, la + plus courante de nos jours.}. On évitera donc les commandes des autres + formats tels que \hologo{plainTeX} ; + \item le compilateur privilégié est \hologo{pdfLaTeX}. En particulier, le + compilateur \hologo{LaTeX} n'étant \emph{a priori} pas utilisé, nous + préférons : + \begin{enumerate} + \item comme formats d'images : \format{jpg}, \format{png} et + \format{pdf}\footnote{Le format recommandé est \format{pdf} car il est + vectoriel si bien que la qualité des images n'est pas dégradée en cas de + redimensionnement.} ; + \item éviter l'usage de code \program{PostScript}, notamment via + \program{PSTricks} et, comme outil de dessin, privilégions par exemple le + \Package{TikZ}. + \end{enumerate} + \end{itemize} +\end{dbwarning} + +\section{Configuration de l'article} + +\subsection{Langue de l'article} +\label{sec:langue-de-larticle} + +Le \nwejm{} accepte des articles dans chacune des quatre langues +\begin{itemize} +\item anglais ; +\item français ; +\item allemand ; +\item néerlandais ; +\end{itemize} +et la \nwejmauthorcl{} permet de spécifier la langue choisie\footnote{La gestion + des langues est assurée en sous-main par le \Package{babel}.} au moyen des +options de classe suivantes. +% \refKey{english}, \refKey{french}, \refKey{ngerman} \refKey{dutch} + +\begin{docKey}{english}{}{pas de valeur, option par défaut} + Cette option définit l'anglais comme langue de l'article. +\end{docKey} +\begin{docKey}{french}{}{} + Cette option définit le français comme langue de l'article. +\end{docKey} +\begin{docKey}{german}{}{} + Cette option définit l'allemand comme langue de l'article. Elle a pour alias + \docAuxKey{ngerman}. + \begin{dbremark}{Option de \package*{babel} sous-jacente à l'option + \protect\refKey{german}}{} + L'option de langue \refKey{german} de la \nwejmauthorcl{} appelle en + sous-main l'option \docAuxKey*{ngerman} du \Package*{babel}. + \end{dbremark} + \begin{docKey}{dutch}{}{} + Cette option définit le néerlandais comme langue de l'article. +\end{docKey} +\end{docKey} + +\begin{dbremark}{Langue par défaut de l'article}{} + Si aucune de ces options n'est spécifiée, la langue de l'article est par + défaut l'anglais. +\end{dbremark} + +\subsection{Autres configurations} +\label{sec:autr-conf} + +\begin{docCommand}{articlesetup}{\marg{options}} + Cette commande permet de configurer les \meta{options} de l'article en cours + sous la forme clés/valeurs. La seule clé fournie pour l'instant est + \refKey{gradient} (mais ceci peut être amené à changer). +\end{docCommand} + +\begin{dbwarning}{Commande \protect\refCom{articlesetup} : pas en préambule !}{} + La commande \refCom{articlesetup} doit être utilisée \emph{exclusivement} dans + le corps du document (de préférence juste après |\begin{document}|) sans quoi + la configuration choisie, certes prise en compte dans l'article isolé, + risque de ne pas l'être dans le volume complet ! +\end{dbwarning} + +\section{Préparation du \enquote{titre} de l'article} +\label{sec-prep-de-lart} + +Cette section liste les commandes, options et environnement permettant de +\emph{préparer} le \enquote{titre} de l'article ainsi que son éventuelle partie +finale. + +\subsection{Titre, sous-titre} +\label{sec-titre} + +\begin{docCommand}[doc description=\mandatory]{title}{\oarg{titre court}\marg{titre}} + Cette commande définit le \meta{titre} de l'article qui apparaît : + \begin{itemize} + \item en début d'article ; + \item en titre courant\footnote{En entête.} sur les pages paires ; + \item comme métadonnée \enquote{Titre} du fichier \textsc{pdf} correspondant ; + \item dans la table des matières du volume où sera publié l'article. + \end{itemize} +\end{docCommand} + +\begin{docCommand}{subtitle}{\oarg{sous-titre court}\marg{sous-titre}} + Cette commande définit l'éventuel \meta{sous-titre} de l'article. Celui-ci + est automatiquement ajouté au titre. +\end{docCommand} + +Les commandes \refCom{title} et \refCom{subtitle} admettent un argument +optionnel permettant de spécifier un \meta{(sous-)titre court} de l'article qui +figure alors à la place du (sous-)titre \enquote{normal} en titre courant et +dans la table des matières. + +\begin{bodycode}[listing options={deletekeywords={title,subtitle}}] +\title[Le Traité du calcul des probabilités]{Le Traité du calcul des + probabilités et de ses applications} +\subtitle[Étendue et limites d'un projet borélien]{Étendue et limites + d'un projet borélien de grande envergure (1921-1939)} +\end{bodycode} + +\begin{dbremark}{Affichage des titre et sous-titre}{} + Pour que les titre et sous-titre soient affichés, il est nécessaire de + recourir à la commande habituelle \refCom{maketitle}. +\end{dbremark} + +\subsection{Auteur(s)} +\label{sec-auteurs} + +Un auteur d'article est spécifié au moyen de la commande \refCom{author} +suivante. En cas d'auteurs multiples, il suffit de (et il faut) recourir +à plusieurs occurrences de cette commande. + +\begin{docCommand}{author}{\oarg{options}\brackets{\meta{Nom}, \meta{Prénom}}} + Cette commande, facultative, définit un auteur d'article. +\end{docCommand} +% +\begin{dbwarning}{Format des prénom et nom de l'auteur}{} + On veillera à ce que : + \begin{enumerate} + \item la saisie des prénom et nom de l'auteur soit conforme à la syntaxe + (identique à celle de \hologo{BibTeX} et \package{biblatex}) : + % +\begin{bodycode}[listing options={showspaces}] +"\meta{Nom}", "\meta{Prénom}" +\end{bodycode} + % + \item les éventuels caractères diacritiques (accents, etc.) figurent dans les + \meta{Prénom} et \meta{Nom} ; + \item le \meta{Nom} \emph{ne} soit \emph{pas} saisi en capitales (sauf pour la + ou les majuscules)\footnote{Dans les articles en français, ce nom sera + automatiquement composé en petites capitales.}. + \end{enumerate} +\end{dbwarning} + +\begin{dbremark}{Affichage des prénoms et noms du ou des auteurs}{} + Pour que les prénoms et noms du ou des auteurs soient affichés, il est + nécessaire de recourir à la commande habituelle \refCom{maketitle}. +\end{dbremark} + +La commande \refCom{author} admet un argument optionnel permettant de spécifier +la ou les affiliations de l'auteur au moyen d'une des clés \refKey{affiliation} +et \refKey{affiliationtagged} suivantes. + +\begin{docKey}{affiliation}{={\oarg{tag}\marg{affiliation}}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de définir une (unique) \meta{affiliation}. Pour un auteur + ayant plusieurs affiliations, cette clé est utilisée autant de fois que + nécessaire. + + En outre, chaque affiliation peut recevoir un \meta{tag} en vue d'être + réutilisée pour un autre auteur. +\end{docKey} + +\begin{docKey}{affiliationtagged}{={\marg{tag}}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de spécifier une (unique) affiliation déjà définie et taguée + pour un auteur précédent. +\end{docKey} + +% \begin{bodycode} +% % Exemple où 2 auteurs partagent l'affiliation "\meta{affiliation$_3$}". +% \author[% +% affiliation="\marg{affiliation$_1$}",% +% affiliation="\marg{affiliation$_2$}",% +% affiliation="\oarg{tag de l'affiliation$_3$}\marg{affiliation$_3$}",% +% ]{"\meta{Nom$_1$}", "\meta{Prénom$_1$}"} +% \author[% +% affiliationtagged="\oarg{tag de l'affiliation$_3$}",% +% ]{"\meta{Nom$_2$}", "\meta{Prénom$_2$}"} +% \end{bodycode} + +\begin{bodycode}[listing options={deletekeywords={author}}] +\author[ + affiliation={Laboratoire \textsc{sphere}, Université Paris Diderot} + ]{Bustamante, Martha-Cecilia} +\author[ + affiliation=[aff2]{\textsc{lpma}, Université Pierre et Marie Curie}, + affiliation={\textsc{ghdso}, Université Paris-Sud}]{Cléry, Matthias} +\author[ + affiliationtagged={aff2} +]{Mazliak, Laurent} +\end{bodycode} + +\begin{dbwarning}{Paires d'accolades + % des clés \refKey{affiliation} et \refKey{minibio} + (relativement) obligatoires}{} + Au cas (probable) où une valeur \meta{affiliation} contienne une ou plusieurs + virgules, la paire d'accolades l'entourant est obligatoire. +\end{dbwarning} + +\subsection{Résumé} +\label{sec-resume} + +\begin{docEnvironment}[doc description=\mandatory,doclang/environment content=résumé]{abstract}{} + Cet environnement est destiné à recevoir le \meta{résumé} de l'article. +\end{docEnvironment} + +\subsection{Mots clés} + +\begin{docCommand}[doc description=\mandatory]{keywords}{\marg{mot(s) clé(s)}} + Cette commande permet de spécifier le (ou les) \meta{mot(s) clé(s)} de + l'article sous la forme d'une liste séparée par des virgules. +\end{docCommand} + +\subsection{\texorpdfstring{\acrfull{msc}}{MSC}} + +\begin{docCommand}[doc description=\mandatory]{msc}{\marg{\acrshort{msc}}} + Cette commande permet de spécifier le (ou les) \meta{\acrshort{msc}} de + l'article sous la forme d'une liste séparée par des virgules. +\end{docCommand} + +\section{Production du titre de l'article} +\label{sec-creation-du-titre} + +Le titre proprement dit de l'article, regroupant tous les éléments saisis à la +\vref{sec-prep-de-lart}, est produit par la commande standard +\refCom{maketitle}. + +\begin{docCommand}[doc description=\mandatory]{maketitle}{} + Cette commande \emph{produit} l'affichage du \enquote{titre} de l'article, + c'est-à-dire : + \begin{itemize} + \item son titre et son éventuel sous-titre (commandes \refCom{title} et + \refCom{subtitle}) ; + \item son ou ses auteurs, sous la forme de leurs noms et prénoms (commande(s) + \refCom{author}) et, en note de bas de page, leurs affiliations respectives ; + \item son éventuel résumé (environnement \refEnv{abstract}) ; + \item son ou ses mots clés (commande \refCom{keywords}) ; + \item son ou ses \acrshort{msc} (commande \refCom{msc}). + \end{itemize} +\end{docCommand} + +\begin{bodycode}[listing options={deletekeywords={title,subtitle,author,keywords},deletekeywords={[2]{first}}}] +\title[Le Traité du calcul des probabilités]{Le Traité du calcul des + probabilités et de ses applications} +\subtitle[Étendue et limites d'un projet borélien]{Étendue et limites + d'un projet borélien de grande envergure (1921-1939)} +% +\author[ + affiliation={Laboratoire \textsc{sphere}, Université Paris Diderot} + ]{Bustamante, Martha-Cecilia} +\author[ + affiliation=[aff2]{\textsc{lpma}, Université Pierre et Marie Curie}, + affiliation={\textsc{ghdso}, Université Paris-Sud}]{Cléry, Matthias} +\author[ + affiliationtagged={aff2} +]{Mazliak, Laurent} +% +\begin{abstract} + Cet article est consacré à l'étude détaillée du vaste projet [...] +\end{abstract} +% +\keywords{Probabilités, statistiques, balistique, assurance, jeux, + Émile Borel, Institut Henri Poincaré} +\msc{01A60, 01A74, 60-03, 60A05, 62-03} +% +\maketitle +\end{bodycode} + +\section{Remerciements} +\label{sec:remerciements} + +\begin{docCommand}{acknowledgements}{\marg{remerciements}} + Cette commande, facultative, permet de spécifier des \meta{remerciements} pour + un article. +\end{docCommand} + +\begin{bodycode}[listing options={deletekeywords={author},deletekeywords={[2]{first,and}}}] +\acknowledgments{% + The first author's research was supported by the Hungarian National + Science Foundation Grants K81658 and K104183. Research conducted + while the second author enjoyed the hospitality of the Alfréd Rényi + Institute of Mathematics, and benefited from the \textsc{otka} + grant K109789.% +} +\end{bodycode} + +\begin{dbremark}{Affichage des remerciements sur les auteurs}{} + Pour que les remerciements soient affichés, il est nécessaire de recourir à la + commande \refCom{printbibliography} destinée à être utilisée en fin d'article. +\end{dbremark} + +\section{Bibliographie} +\label{sec-bibliographie} + +Pour composer les bibliographies, la \nwejmauthorcl{} recourt aux outils +modernes que sont le \Package*{biblatex} et le moteur \hologo{biber} dont +l'usage peut être brièvement résumé comme suit\autocite[Pour plus de détails, +cf. par exemple][en français]{Bitouze}. +\begin{enumerate} +\item Construire, dans un \meta{fichier bibliographique}\footnote{De tels + fichiers sont d'extension \file{.bib}.}, une base bibliographique. + + Nous conseillons pour ce faire de recourir à un logiciel dédié, par exemple + \href{http://jabref.sourceforge.net/}{\program{JabRef}} à configurer en se + rendant dans le menu \menuentry{Options>Preferences} et, dans l'onglet : + \begin{itemize} + \item \menuentry{Général}\footnote{On pourra en profiter pour changer la langue de + l'interface dans la liste déroulante \menuentry{Language}.}, en choisissant + \menuentry{UTF8} dans la liste déroulante \menuentry{Default encoding} ; + \item \menuentry{Advanced}, en cochant l'option \menuentry{BibLaTeX mode} ; + \end{itemize} + + On n'oubliera pas de donner à chaque référence bibliographique une \meta{clé} + permettant de l'identifier de façon unique dans la base + bibliographique\footnote{Sous \program{JabRef}, on pourra se faire aider pour + cela par l'icône en forme de \enquote{baguette magique} ou de clé.}. +\item Dans le fichier source \file{.tex} : + \begin{enumerate} + \item \emph{En préambule}, utiliser la commande \docAuxCommand{addbibresource} + pour indiquer le \meta{fichier bibliographique} à considérer : +\begin{preamblecode} +\addbibresource{"\meta{fichier bibliographique}".bib} +\end{preamblecode} + \item Dans le corps du document, utiliser la commande + \docAuxCommand{autocite}\footnote{De préférence à la commande + \docAuxCommand{cite}.}\footnote{La référence est alors détaillée en note + de bas de page.} ou, éventuellement, \docAuxCommand{textcite}\footnote{La + référence est alors affichée au fil du texte, mais avec moins de détails.} + du \Package*{biblatex} pour citer les références bibliographiques (pourvue + d'une \meta{clé}) : +\begin{bodycode} +\autocite{"\meta{clé}"} +\textcite{"\meta{clé}"} +\end{bodycode} + \item À la fin du document, faire figurer la liste des références + bibliographiques au moyen de la commande \refCom{printbibliography}. + \end{enumerate} +\item Procéder à une suite de compilations \hologo{pdfLaTeX}, \hologo{biber} et + \hologo{pdfLaTeX}\footnote{Pour automatiser ces compilations, on pourra + recourir au \enquote{compilateur} \program{latexmk}, fourni par toute + distribution \TeX{} moderne, en s'aidant du fichier de configuration + \file{latexmkrc} joint à la présente classe.}. +\end{enumerate} + +\begin{docCommand}{printbibliography}{} + Cette commande produit la liste des références bibliographiques saisies selon + la syntaxe du \Package*{biblatex}. Elle a été redéfinie de sorte + à automatiquement afficher, avant la liste des références, les éventuels + remerciements (commande \refCom{acknowledgements}). +\end{docCommand} + +Par exemple, si le \File{.bib} contient : + +\begin{bodycode}[listing only,listing options={morekeywords={Book,Article}}] +@Book{ har, + author = {Hartshorne, Robin}, + title = {Algebraic geometry}, + note = {Graduate Texts in Mathematics, No. 52}, + publisher = {Springer-Verlag}, + address = {New York}, + year = {1977} +} +@Book{ laz1, + author = {Lazarsfeld, Robert}, + title = {Positivity in algebraic geometry. {I}}, + volume = {48}, + note = {Classical setting: line bundles and linear series}, + publisher = {Springer-Verlag}, + address = {Berlin}, + year = {2004} +} +@Article{ shin, + author = {Shin, Kil-Ho}, + title = {{$3$}-dimensional {F}ano varieties with canonical + singularities}, + journal = {Tokyo J. Math.}, + volume = {12}, + year = {1989}, + number = {2}, + pages = {375-385} +} +\end{bodycode} + +alors, le source \file{.tex} suivant : +\begin{bodycode}[listing only,listing options={deletekeywords={[1]{theorem},[2]{first,and,see}}}] +The first assertion is a direct consequence of the Riemann-Roch +formula for threefolds\autocite[See e.g.][437]{har} and +Kawamata-Viehweg vanishing\autocite[theorem~4.3.1]{laz1}. For the +second assertion, see \textcite[theorem~(0.4)]{shin}. +% +\printbibliography +\end{bodycode} + +donne le texte figurant dans l'encadré intitulé \enquote{Exemple de + bibliographie} \vpageref{biblio}. + +\begin{refsegment} + % \selectlanguage{english} +\begin{bodycode}[text only,float,title={Exemple de bibliographie},label=biblio] +The first assertion is a direct consequence of the Riemann-Roch formula for +threefolds\autocite[See e.g.][437]{har} and Kawamata-Viehweg +vanishing\autocite[theorem~4.3.1]{laz1}. For the second assertion, see +\textcite[theorem~(0.4)]{shin}. +% +\printbibliography[segment=1] +\end{bodycode} +\end{refsegment} + +\section{Commandes propres aux mathématiques} +\label{sec:comm-propr-aux} + +La \nwejmauthorcl{} : +\begin{itemize} +\item charge les packages : + \begin{itemize} + \item \package*{kpfonts} qui fournit tous les symboles standard, y compris + ceux du \Package{amssymb}, mais en propose également de nombreux autres ; + \item \package*{mathtools} qui lui-même charge \package*{amsmath} (mais en + l'étendant et en corrigeant certains de ses défauts), si bien que toutes les + commandes de ces deux packages sont disponibles ; + \item \package*{mathrsfs} qui fournit de jolies lettres calligraphiques (via + la commande \docAuxCommand{mathscr}) ; + \end{itemize} +\item redéfinit certaines commandes et en fournit quelques nouvelles, listées + ci-dessous ; +\item fournit (en s'appuyant sur les packages \package*{amsthm} et + \package*{thmtools}) des environnements de type \enquote{théorème} classiques, + listés ci-dessous. +\end{itemize} + +\subsection{Constantes universelles et fonctions courantes} + +\begin{docCommand}{I}{} + Cette commande affiche l'unité imaginaire : \enquote{$\I$}. +\end{docCommand} + +\begin{docCommand}{E}{\oarg{argument}} + Selon que son argument optionnel est utilisé ou pas, cette commande affiche : + \begin{itemize} + \item la fonction exponentielle appliquée à l'\meta{argument} ; + \item le nombre d'Euler \enquote{$\E$}. + \end{itemize} +\end{docCommand} + +\begin{bodycode}[listing and text] +\begin{align} + \E[\I\pi]+1 & = 0 \\ + \E & = \sum_{n\geq 0} \frac{1}{n!} +\end{align} +\end{bodycode} + +\begin{dbremark}{Syntaxes équivalentes pour la fonction exponentielle}{} + Il y a équivalence entre les commandes : + \begin{itemize} + \item |\E[|\meta{argument}|]| qui est fournie par la classe ; + \item |\E^{|\meta{argument}|}| qui est plus habituelle. +\end{itemize} +\end{dbremark} + +\begin{docCommand}{log(*)}{} + Cette commande affiche, sous sa forme : + \begin{description} + \item[\emph{non} étoilée :] \enquote{$\log$} ; + \item[étoilée :] \enquote{$\log*$}. + \end{description} +\end{docCommand} + +\begin{docCommand}{lg(*)}{} + Cette commande affiche, sous sa forme : + \begin{description} + \item[\emph{non} étoilée :] \enquote{$\lg$} ; + \item[étoilée :] \enquote{$\lg*$}. + \end{description} +\end{docCommand} + +\subsection{Ensembles} + +\subsection{Ensembles courants} + +\begin{docCommand}{bbN}{} + Cette commande affiche l'ensemble des nombres entiers positifs : + \enquote{$\bbN$}. +\end{docCommand} + +\begin{docCommand}{bbZ}{} + Cette commande affiche l'ensemble des nombres entiers relatifs : + \enquote{$\bbZ$}. +\end{docCommand} + +\begin{docCommand}{bbD}{} + Cette commande affiche l'ensemble des nombres décimaux : \enquote{$\bbD$}. +\end{docCommand} + +\begin{docCommand}{bbQ}{} + Cette commande affiche l'ensemble des nombres rationnels : \enquote{$\bbQ$}. +\end{docCommand} + +\begin{docCommand}{bbR}{} + Cette commande affiche l'ensemble des nombres réels : \enquote{$\bbR$}. +\end{docCommand} + +\begin{docCommand}{bbC}{} + Cette commande affiche l'ensemble des nombres complexes : \enquote{$\bbC$}. +\end{docCommand} + +\begin{docCommand}{bbK}{} + Cette commande peut être utilisée pour dénoter un corps quelconque. Elle + affiche \enquote{$\bbK$}. +\end{docCommand} + +\subsection{Ensembles définis} + +\begin{docCommand}{set}{\marg{définition}\oarg{caractérisation}} + Cette commande affiche l'ensemble défini par \meta{définition}, avec une + éventuelle \meta{caractérisation}\footnote{Partie suivant \enquote{tels + que}.}. +\begin{bodycode}[listing and text] +\begin{align} + \bbN & = \set{0,1,2,3,\dots} \\ + \bbZ & = \bbN\cup\set{-n}[n\in\bbN] \\ + \bbQ & = \set{p/q}[p\in\bbZ,\ q\in\bbN^*] \\ + \bbQ & = \set{\frac{p}{q}}[p\in\bbZ,\ q\in\bbN^*] +\end{align} +\end{bodycode} +\end{docCommand} + +\subsection[Fonctions trigonométriques circulaires et hyperboliques]{Fonctions + trigonométriques circulaires et hyperboliques, directes et réciproques} + +\begin{dbremark}{Commandes propres au français}{} + Les commandes de cette section ne sont définies (ou redéfinies) que pour les + articles en français. +\end{dbremark} + +\begin{docCommand}{cot}{} + Cette commande affiche la cotangente : \enquote{$\cot$}. Elle a pour alias + \docAuxCommand{cotan}. +\end{docCommand} + +\begin{docCommand}{arccos}{} + Cette commande affiche (la détermination principale de) l'arc cosinus : + \enquote{$\arccos$}. +\end{docCommand} + +\begin{docCommand}{arcsin}{} + Cette commande affiche (la détermination principale de) l'arc sinus : + \enquote{$\arcsin$}. +\end{docCommand} + +\begin{docCommand}{arctan}{} + Cette commande affiche (la détermination principale de) l'arc tangente : + \enquote{$\arctan$}. +\end{docCommand} + +\begin{docCommand}{cosh}{} + Cette commande affiche le cosinus hyperbolique : \enquote{$\cosh$}. Elle a pour + alias \docAuxCommand{ch}. +\end{docCommand} + +\begin{docCommand}{sinh}{} + Cette commande affiche le sinus hyperbolique : \enquote{$\sinh$}. Elle a pour + alias \docAuxCommand{sh}. +\end{docCommand} + +\begin{docCommand}{tanh}{} + Cette commande affiche la tangente hyperbolique : \enquote{$\tanh$}. + \begin{dbremark}{Pas de commande \protect\docAuxCommand{th} pour la tangente hyperbolique}{} + La commande |\th| est déjà définie dans \LaTeX{} et ne peut donc pas être + utilisée pour la tangente hyperbolique. + \end{dbremark} +\end{docCommand} + +\begin{docCommand}{arccosh}{} + Cette commande affiche l'argument cosinus hyperbolique : + \enquote{$\arccosh$}. Elle a pour alias \docAuxCommand{Argch}. +\end{docCommand} + +\begin{docCommand}{arcsinh}{} + Cette commande affiche l'argument sinus hyperbolique : + \enquote{$\arcsinh$}. Elle a pour alias \docAuxCommand{Argsh}. +\end{docCommand} + +\begin{docCommand}{arctanh}{} + Cette commande affiche l'argument tangente hyperbolique : + \enquote{$\arctanh$}. Elle a pour alias \docAuxCommand{Argth}. +\end{docCommand} + +\subsection{Paires de délimiteurs} + +\subsubsection{Commandes prédéfinies} + +La classe offre un certain nombre de commandes listées dans le \vref{com-paired} +facilitant la saisie de paires de délimiteurs courants, par exemple pour les +normes, les valeurs absolues, etc. + +\begin{table} + \centering + \begin{tabular}{ll} + Commandes & Exemple \\\toprule + \docAuxCommand{norm} & $\norm{\cdot}$ \\\midrule + \docAuxCommand{lnorm} & $\lnorm{\cdot}$ \\\midrule + \docAuxCommand{llnorm} & $\llnorm{\cdot}$ \\\midrule + \docAuxCommand{lpnorm} & $\lpnorm{\cdot}$ \\\midrule + \docAuxCommand{supnorm} & $\supnorm{\cdot}$ \\\midrule + \docAuxCommand{abs} & $\abs{\cdot}$ \\\midrule + \docAuxCommand{prt} & $\prt{\cdot}$ \\\midrule + \docAuxCommand{brk} & $\brk{\cdot}$ \\\midrule + \docAuxCommand{brc} & $\brc{\cdot}$ \\\midrule + \docAuxCommand{leqgeq} & $\leqgeq{\cdot}$ \\\midrule + \docAuxCommand{lrangle} & $\lrangle{\cdot}$ \\\bottomrule + \end{tabular} + \caption{Commandes facilitant la saisie de paires de + délimiteurs courants} + \label{com-paired} +\end{table} + +Ces commandes ayant toutes la même syntaxe, seule celle de la commande +\docAuxCommand{norm} est détaillée. + +\begin{docCommand*}{norm}{\oarg{paramètre de taille}\marg{argument}} + Cette commande affiche la norme de l'\meta{argument}. + + Par défaut, la hauteur des délimiteurs est automatiquement adaptée à celle de + l'\meta{argument} mais il est possible de spécifier en argument optionnel un + \meta{paramètre de taille} : + \begin{itemize} + \item \docValue{0} : taille par défaut du délimiteur\footnote{Taille du + délimiteur en mode texte.} ; + \item \docValue{1} ou \docAuxCommand{big} : taille du délimiteur plus grande + que la précédente ; + \item \docValue{2} ou \docAuxCommand{Big} : taille du délimiteur plus grande + que la précédente ; + \item \docValue{3} ou \docAuxCommand{bigg} : taille du délimiteur plus grande + que la précédente ; + \item \docValue{4} ou \docAuxCommand{Bigg} : taille du délimiteur plus grande + que la précédente. + \end{itemize} +\end{docCommand*} + +\begin{docCommand}{norm*}{\marg{argument}} + Cette commande est équivalente à |\norm[0]{|\meta{argument}|}|. +\end{docCommand} + +\begin{bodycode}[listing and text] +\begin{equation} +\supnorm{\frac{A}{2}}^k \quad +\supnorm[0]{\frac{A}{2}}^k \quad +\supnorm[1]{\frac{A}{2}}^k \quad +\supnorm[2]{\frac{A}{2}}^k \quad +\supnorm[3]{\frac{A}{2}}^k \quad +\supnorm[4]{\frac{A}{2}}^k \quad +\supnorm*{\frac{A}{2}}^k +\end{equation} +\end{bodycode} + +\begin{dbremark}{Indices des paires de délimiteurs qui n'en sont pas pourvues par défaut}{} + Il est toujours possible d'ajouter manuellement un indice à une commande de + paire de délimiteurs qui n'en est pas pourvue par défaut. +\begin{bodycode}[listing and text] +\begin{equation} +\norm{\frac{A}{2}}_3 +\end{equation} +\end{bodycode} +\end{dbremark} + +\subsubsection{Commandes à définir} + +Il est possible de définir de nouvelles commandes facilitant la saisie de paires +de délimiteurs au moyen de la commande \refCom{NewPairedDelimiter}. +% +\begin{docCommand}{NewPairedDelimiter}{\marg{commande}\marg{options}} + Cette commande définit une \meta{commande} similaire à la commande + \docAuxCommand{norm} mais dont les délimiteurs gauche et droit et l'indice + sont ceux spécifiés en \meta{options} au moyen des clés \refKey{left}, + \refKey{right} et \refKey{subscript}. + \begin{docKey}{left}{=\meta{délimiteur}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de spécifier le délimiteur gauche de la \meta{commande} + créée par \refCom{NewPairedDelimiter}. + \end{docKey} + \begin{docKey}{right}{=\meta{délimiteur}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de spécifier le délimiteur droit de la \meta{commande} + créée par \refCom{NewPairedDelimiter}. + \end{docKey} + \begin{docKey}{subscript}{=\meta{indice}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de spécifier l'indice de la \meta{commande} créée par + \refCom{NewPairedDelimiter}. + \end{docKey} +\end{docCommand} + +\NewPairedDelimiter{\floor}{ + left=\lfloor, + right=\rfloor, + subscript=\text{eff} +} +\begin{preamblecode} +\NewPairedDelimiter{\floor}{ + left=\lfloor, + right=\rfloor, + subscript=\text{eff} +} +\end{preamblecode} +\begin{bodycode}[listing and text] +\begin{equation} +\floor{\frac{A}{2}} +\end{equation} +\end{bodycode} + +\subsection{Opérateurs} + +\subsubsection{Opérateurs prédéfinis} + +\begin{docCommand}{dif}{} + Cette commande affiche l'opérateur différentiel employé notamment dans les + intégrales : \enquote{$\dif$}. +\begin{bodycode}[listing and text] +\begin{equation} +\iiint_T f(x,y,z)\dif x \dif y \dif z=0 +\end{equation} +\end{bodycode} +\end{docCommand} + +\begin{docCommand}{grad}{} + Cette commande affiche le gradient : + \begin{itemize} + \item sous la forme \enquote{$\grad$} par défaut ; + \item sous la forme \enquote{$\nabla$} si la valeur \docValue{nabla} est + passée à la clé \refKey{gradient} en argument de la commande + \refCom{articlesetup}. + \end{itemize} + \begin{docKey}{gradient}{=\docValue{grad}\textbar\docValue{nabla}}{pas + de valeur par défaut, initialement \docValue{grad}} + Cette clé permet de spécifier la façon dont est affiché le gradient grâce + à la commande \refCom{grad}. + \end{docKey} +\end{docCommand} + +\begin{docCommand}{Div}{} + Cette commande affiche la divergence : \enquote{$\Div$}. + \begin{dbremark}{Pas de commande \protect\docAuxCommand{div} pour la divergence}{} + La commande |\div| est déjà définie dans \LaTeX{} et ne peut donc pas être + utilisée pour la divergence. + \end{dbremark} +\end{docCommand} + +\begin{docCommand}{curl}{} + Cette commande affiche le rotationnel : + \enquote{$\curl$}. Elle a pour alias \docAuxCommand{rot}. +\end{docCommand} + +\begin{bodycode}[listing and text] +\begin{align} + \Div F & = \grad \cdot F \\ + \curl F & = \grad \wedge F +\end{align} +\end{bodycode} + +\begin{docCommand}{supp}{} + Cette commande affiche le support (d'une fonction, d'une mesure, etc.) : + \enquote{$\supp$}. +\end{docCommand} + +\subsubsection{Opérateurs à définir} + +Il est possible de définir de nouveaux noms d'opérateurs au moyen de la commande +usuelle \refCom{DeclareMathOperator}. + +\begin{docCommand}{DeclareMathOperator}{\marg{commande}\marg{nom}} + Cette commande définit la \meta{commande} qui affiche l'opérateur nommé + \meta{nom}. +\end{docCommand} + +\begin{preamblecode} +\DeclareMathOperator{\cat}{Cat} +\end{preamblecode} +\begin{bodycode}[listing and text,listing options={deletekeywords={[1]{example}},deletekeywords={[2]{all}}}] +A standard example is $\cat$, the $2$-category of all (small) +categories. +\end{bodycode} + +\subsubsection{(Usage avancé) Précautions en cas d'opérations binaires non + courantes} + +Si, dans des opérations binaires, un opérateur\footnote{Prédéfini ou défini au + moyen de la commande \protect\refCom{DeclareMathOperator}.} est suivi par un +opérateur binaire courant de \LaTeX{} (\docAuxCommand{circ}, +\docAuxCommand{cdot}, \docAuxCommand{wedge}, etc.), les espaces horizontales les +séparant seront correctes. + +En revanche, si l'opérateur binaire impliqué n'est pas courant, il convient de +le déclarer au moyen de la commande \refCom{BinaryOperators}. + +\begin{docCommand}{BinaryOperators}{\marg{opérateurs binaires}} + Cette commande assure que les \meta{opérateurs binaires}\footnote{Séparés par + des virgules.} seront, dans des opérations binaires, correctement espacés + des opérateurs les précédant. +\end{docCommand} + +\begin{preamblecode} +\newcommand{\mybinop}{\mathbin{@}} +\end{preamblecode} +\begin{bodycode}[listing and text] +\begin{tabular}{l@{ : }l} + $\grad \cdot F$ & bon \\ + $\grad \mybinop F$ & mauvais \\ + \BinaryOperators{\mybinop}% + $\grad \mybinop F$ & bon (grâce à \verb|\BinaryOperators{\mybinop}|) +\end{tabular} +\end{bodycode} + +\subsection{Divers} + +\begin{dbremark}{Commandes propres au français (bis)}{} + Les commandes suivantes ne sont définies redéfinies que pour les articles en + français. +\end{dbremark} + +\begin{docCommand}{leq}{} + Cette commande affiche \enquote{$\leq$}. +\end{docCommand} +\begin{docCommand}{geq}{} + Cette commande affiche \enquote{$\geq$}. +\end{docCommand} + +\subsection{Environnements de type \enquote{théorème}} + +Pour faciliter la composition des théorèmes et objets analogues, la +\nwejmauthorcl{} fournit des environnements prêts à l'emploi et permet d'en +créer de nouveaux si besoin est (cf. commande \refCom{newtheorem}). + +\subsubsection{Environnements de type \enquote{théorème} prédéfinis} +\label{sec:envir-de-type} + +Le \vref{env-theorems} liste les théorèmes et objets analogues prédéfinis par la +\nwejmauthorcl{} avec : +\begin{description} +\item[en colonne~1] le nom des environnements correspondants ; +\item[en colonne~2] leurs titres récurrents (automatiquement traduits dans la + langue de l'article). +\end{description} + +\begin{table} + \centering + \begin{tabular}{ll} + Environnement & Titre (ici en français) \\\toprule + \docAuxEnvironment{theorem} & Théorème \\\midrule + \docAuxEnvironment{corollary} & Corollaire \\\midrule + \docAuxEnvironment{conjecture} & Conjecture \\\midrule + \docAuxEnvironment{proposition} & Proposition \\\midrule + \docAuxEnvironment{lemma} & Lemme \\\midrule + \docAuxEnvironment{axiom} & Axiome \\\midrule[.75pt] + \docAuxEnvironment{definition} & Définition \\\midrule + \docAuxEnvironment{remark} & Remarque \\\midrule + \docAuxEnvironment{example} & Exemple \\\midrule + \docAuxEnvironment{notation} & Notation \\\midrule[.75pt] + \docAuxEnvironment{proof} & Preuve \\\bottomrule + \end{tabular} + \caption{Environnements de type \enquote{théorème} fournis} + \label{env-theorems} +\end{table} + +\begin{dbremark}{\enquote{Théorèmes} non numérotés}{} + Chacun des environnements du \vref{env-theorems} admet une version étoilée + créant une version non numérotée de l'objet de type \enquote{théorème} + correspondant. +\end{dbremark} + +\begin{bodycode}[listing and text] +\begin{theorem} + Tout espace métrisable séquentiellement compact est compact. +\end{theorem} +\begin{definition}[congruence modulo $n$] + Soit $n$ un entier supérieur ou égal à $2$. Deux entiers $a$ et $b$ + sont dits congruents modulo $n$ si $a - b \in n\bbZ$ +\end{definition} +\begin{remark*} + Une des plus belles relations mathématiques est : + \[ + e^{i\pi}+1=0. + \] +\end{remark*} +\begin{proof} + Tout ce qui est rare est cher. Or un cheval bon marché est rare. + Donc un cheval bon marché est cher. +\end{proof} +\end{bodycode} + +On remarque dans l'exemple précédent que les \enquote{théorèmes} ont des mises +en forme variables. La \nwejmauthorcl{} fournit effectivement trois styles de +\enquote{théorèmes}, \docValue{theorem}, \docValue{definition} et +\docValue{proof}, dont les caractéristiques sont indiquées au +\vref{env-theorems-styles}. + +\begin{table} + \centering + \setlength{\tymin}{\widthof{romain, terminé}} + \begin{tabulary}{\linewidth}{LLLL} +Style & Titre récurrent & Contenu & \enquote{Théorèmes} concernés \\\toprule +\docValue{theorem} & gras, romain, numéroté & italique + & théorèmes, corollaires, conjectures, propositions, lemmes, axiomes \\\midrule +\docValue{definition} & gras, romain, numéroté & romain & définitions, remarques, exemples, notations \\\midrule +\docValue{proof} & non gras, italique, non numéroté & romain, terminé par un carré blanc & preuves \\\bottomrule + \end{tabulary} + \caption{Styles de \enquote{théorèmes} fournis} + \label{env-theorems-styles} +\end{table} + +\subsubsection{Environnements de type \enquote{théorème} personnels} +\label{sec:envir-de-type-1} + +Si les environnements de \enquote{théorème} fournis par la classe ne suffisent +pas, la commande \refCom{newtheorem} permet d'en créer de nouveaux. + +\begin{docCommand}{newtheorem}{\oarg{option(s)}\marg{nom}} + Cette commande crée un nouvel environnement \LaTeX{}, \meta{nom}, destiné à la + composition d'un \enquote{théorème} dont, par défaut : + \begin{itemize} + \item le titre récurrent est \meta{Nom}\footnote{\Ie*{}, quelle que soit la + langue de l'article, le \meta{nom} de l'environnement \LaTeX{} dont + l'initiale est en majuscule.} ; + \item le style est \docValue{theorem}. + \end{itemize} + Cette commande crée également l'environnement étoilé \meta{nom}|*| produisant + des occurrences \emph{non} numérotées de ce \enquote{théorème}. + + Si les valeurs par défaut du titre récurrent (\meta{Nom}) ou du style + (\docValue{theorem}) ne conviennent pas, il suffit spécifier celles souhaitées + en \meta{option(s)} au moyen des clés \refKey{title} et \refKey{style} + suivantes. + \begin{docKey}{title}{={\meta{titre récurrent}}}{pas de + valeur par défaut, initialement vide} + Cette clé permet de spécifier un \meta{titre récurrent} différent de + \meta{Nom}, valable quelle que soit la langue de l'article. + \end{docKey} + \begin{docKey}{style}{=\docValue{theorem}\textbar\docValue{definition}\textbar\docValue{proof}}{pas + de valeur par défaut,\\initialement \docValue{theorem}} + Cette clé permet de spécifier le style du \enquote{théorème} à créer, au + moyen des valeurs \docValue{theorem}, \docValue{definition} et + \docValue{proof}. + \end{docKey} + + Si besoin est, il est même possible de spécifier des titres récurrents + différents selon la langue utilisée au moyen des clés suivantes : + \begin{docKey}{title/english}{={\meta{titre récurrent en anglais}}}{pas de + valeur par défaut,\\initialement vide} + \end{docKey} + \begin{docKey}{title/french}{={\meta{titre récurrent en français}}}{pas de + valeur par défaut,\\initialement vide} + \end{docKey} + \begin{docKey}{title/german}{={\meta{titre récurrent en allemand}}}{pas de + valeur par défaut,\\initialement vide} + \end{docKey} + \begin{docKey}{title/dutch}{={\meta{titre récurrent en néerlandais}}}{pas de + valeur par défaut,\\initialement vide} + Ces clés permettent de spécifier un \meta{titre récurrent} différent + de \meta{Nom} pour la langue correspondante. + \end{docKey} + +\begin{preamblecode}[listing options={deletekeywords={[1]{title,subtitle,definition}},morekeywords={[2]{title,subtitle}},morekeywords={[3]{definition}}}] +\newtheorem{article} +\newtheorem[title/french=Fait,style=definition]{fact} +\end{preamblecode} +\begin{bodycode}[listing and text] +\begin{article}[dit premier] +Les hommes naissent et demeurent libres et égaux en droits [...] +\end{article} +\begin{fact*} +Tout ce qui est rare est cher. +\end{fact*} +\begin{fact} +Un cheval bon marché est rare. +\end{fact} +\end{bodycode} +\end{docCommand} + +\subsection{Listes d'hypothèses ou d'assertions} +\label{sec:list-dhyp-ou} + +Dans les articles en mathématiques, il est fréquent que les auteurs aient +à lister des assertions ou des hypothèses et à s'y référer. Pour ce faire, la +\nwejmauthorcl{} fournit deux environnements qui s'emploient comme l'habituel +environnement \docAuxEnvironment{enumerate} de listes ordonnées (numérotées) : +\refEnv{assertions} et \refEnv{hypotheses}, dans lesquels chaque assertion ou +hypothèse est introduite par la commande \docAuxCommand{item}. + +\begin{docEnvironment}[doclang/environment content=assertions]{assertions}{} + Cet environnement compose une liste d'assertions. +\end{docEnvironment} +\begin{docEnvironment}[doclang/environment content=hypothèses]{hypotheses}{} + Cet environnement compose une liste d'hypothèses. +\end{docEnvironment} + +\begin{bodycode}[listing and text,listing options={deletekeywords={[1]{label}}}] +\begin{axiom}\label{mon-axiom} + Chaque assertion suivante est admise. + \begin{assertions} + \item\label{rare-cher} Tout ce qui est rare est cher. + \item\label{cheval} Un cheval bon marché est rare. + \end{assertions} +\end{axiom} +En vertu des \vref{rare-cher,cheval} de l'\vref{mon-axiom}, +un cheval bon marché est cher. +\end{bodycode} + +\section{Commandes généralistes} +\label{sec:comm-gener} + +En plus des commandes propres aux mathématiques, la \nwejmauthorcl{} fournit des +commandes généralistes destinées à faciliter la saisie d'un article à paraître +dans la \nwejm{}. + +\begin{docCommand}{ie(*)}{} + Cette commande affiche l'expression \enquote{\ie*{}} traduite dans la langue + de l'article, sous sa forme : + \begin{description} + \item[\emph{non} étoilée :] en version abrégée \enquote{\ie{}} ; + \item[étoilée :] en version \emph{non} abrégée \enquote{\ie*{}}. + \end{description} +\end{docCommand} + +\begin{docCommand}{Ie(*)}{} + Cette commande affiche l'expression \enquote{\Ie*{}} traduite dans la langue + de l'article, sous sa forme : + \begin{description} + \item[\emph{non} étoilée :] en version abrégée \enquote{\Ie{}} ; + \item[étoilée :] en version \emph{non} abrégée \enquote{\Ie*{}}. + \end{description} +\end{docCommand} + +\begin{docCommand}{century(*)}{\marg{numéro}} + Cette commande affiche l'ordinal du \meta{numéro}\footnote{Ce numéro doit être + un nombre entier non nul, le cas échéant négatif.}\footnote{En français et en + allemand, \meta{numéro} est composé en chiffre romain et en petites + capitales.} d'un siècle, suivi du mot \enquote{siècle} traduit dans la + langue de l'article et de la mention éventuelle qu'il s'agit d'un siècle + précédant notre ère. Ainsi : +\begin{bodycode}[listing and text] +Au \century{-1}, [...]. Plus tard, au \century{8}, [...] +\end{bodycode} + Sa version étoilée n'affiche que l'ordinal (sauf si le \meta{numéro} est + négatif). Ainsi : +\begin{bodycode}[listing and text] +L'agriculture au \century*{-1} était [...]. +La poésie du \century*{19} aura marqué [...] +\end{bodycode} +\end{docCommand} + +\begin{docCommand}{aside(*)}{\marg{texte}} + Cette commande permet de composer du \meta{texte} entre tirets longs, pour une + \enquote{incise} (un peu à la manière de parenthèses). + \begin{description} + \item[Sous sa forme non étoilée,] elle insère le \meta{texte} entre deux + tirets longs. + \item[Sous sa forme étoilée,] elle fait (seulement) précéder le \meta{texte} + d'un tiret, ce qui est à utiliser en fin de phrase. + \end{description} + Ainsi : +\begin{bodycode}[listing and text] +Des expériences \aside{dans le monde \enquote{réel}} ont même été +suscitées par des expériences numériques. +\end{bodycode} + et : +\begin{bodycode}[listing and text,listing options={deletekeywords={exemple}}] +On soupçonne que non \aside*{par exemple on s'attend à ce que + $1/\pi$ ne soit pas une période}. +\end{bodycode} +\end{docCommand} + +\begin{docCommand}{nwejm}{} + Cette commande affiche, sous sa forme : + \begin{description} + \item[\emph{non} étoilée :] la version abrégée \enquote{\nwejm} ; + \item[étoilée :] la version \emph{non} abrégée \enquote{\nwejm*}. + \end{description} +\end{docCommand} + +\section{Sélection d'outils fournis par des packages tiers} + +Cette section donne une liste d'outils (commandes et environnements) fournis par +des packages automatiquement chargés par la \nwejmauthorcl\footnote{La + \vref{sec-packages-charges-ou-pas} liste ceux dont les fonctionnalités peuvent + être utiles aux auteurs.}. + +\begin{dbwarning}{Liste des fonctionnalités des packages tiers non exhaustive}{} + Cette liste est \emph{non exhaustive} : + \begin{itemize} + \item seule une infime partie des packages existants est chargée par la + classe ; + \item seuls certains packages chargés par la classe sont cités ; + \item seules certaines fonctionnalités des packages cités sont décrites. Le + lecteur souhaitant en savoir davantage est invité à lire la documentation de + ces packages. + \end{itemize} +\end{dbwarning} + +\subsection{Références croisées} +\label{sec-references-croisees} + +Le \Package*{cleveref}, utilisé conjointement avec le \Package*{varioref}, rend la +commande \refCom{vref} de ce dernier très puissante. + +\begin{docCommand}{vref}{\marg{label}} + Cette commande affiche le numéro d'un objet\footnote{Section, équation, + théorème, figure, tableau, etc.} labellisé par la commande + \lstinline[deletekeywords={label}]+\label{+\meta{label}|}| et : + \begin{itemize} + \item affiche (ou pas selon le contexte) le numéro de la page où se situe cet + objet\footnote{Fonctionnalité fournie par le \Package{varioref}.} ; + \item détecte la nature de cet objet et fait précéder le numéro de celui-ci du + mot clé correspondant\footnote{Fonctionnalité fournie par le + \Package{cleveref}.} automatiquement traduit dans la langue de + l'article\footnote{Fonctionnalité fournie par la \nwejmauthorcl.} ; + \item fait de la référence à l'objet (numéro et éventuel numéro de page) un + lien hypertexte vers l'objet\footnote{Fonctionnalité fournie par le + \Package{hyperref}.}. + \end{itemize} +\begin{bodycode}[listing and text] +[...] on se reportera à la \vref{sec-canevas-de-fichier} pour un +canevas de fichier source [...] +\end{bodycode} +\end{docCommand} + +% \begin{dbremark}{\docAuxCommand{ref} et \docAuxCommand{eqref} : clones de \protect\refCom{vref}}{} +% Les traditionnelles commandes \docAuxCommand{ref} et \docAuxCommand{eqref} ont +% été redéfinies par la \nwejmauthorcl pour fonctionner de façon identique +% à \refCom{vref}. +% \end{dbremark} + +\subsection{\enquote{Équations} (non-)numérotées} +\label{sec:equat-non-numer} + +Pour les \enquote{équations}, le \Package*{amsmath} fournit les environnements +mathématiques : +\begin{itemize} +\item |equation|, |align|, |gather|, |multline| et |flalign| qui numérotent + leur contenu ; +\item |equation*|, |align*|, |gather*|, |multline*| et |flalign*| qui \emph{ne} + numérotent \emph{pas} leur contenu ; +\end{itemize} +les premiers étant à utiliser si (et seulement si, théoriquement) les contenus +correspondants font l'objet de références croisées. + +Avoir à choisir entre les versions étoilées ou pas présente au moins deux +inconvénients pour l'utilisateur : +\begin{enumerate} +\item cela l'oblige à se poser à chaque fois la question de la + numérotation de son équation ; +\item son choix peut ultérieurement s'avérer caduc\footnote{Et donc nécessiter + de passer par exemple d'un environnement étoilé à un non-étoilé \aside*{donc + avec ajout d'un label}.} +\end{enumerate} +Pour pallier cela, le \Package{autonum} : +\begin{enumerate} +\item permet de ne recourir qu'aux environnements non-étoilés ; +\item assure automatiquement que les \enquote{équations} effectivement + numérotées seront celles, et seulement celles, s'avérant faire l'objet de + références croisées au sein du document. +\end{enumerate} + +\begin{bodycode}[listing and text,listing options={deletekeywords={label}}] +L'\vref{euler-identy} mérite une référence croisée. +\begin{equation}\label{euler-identy} + \E[\I\pi]+1=0 +\end{equation} +C'est bien la seule ici. +\begin{equation}\label{not-interesting} + 0=0 +\end{equation} +Malheureusement. +\begin{equation} + 1=1 +\end{equation} +\end{bodycode} + +\subsection{Acronymes} +\label{sec:acronymes} + +Il est fréquent que des acronymes doivent figurer dans un article de +mathématiques et le \Package{glossaries} propose pour cela une fonctionnalité +à la fois très efficace et très simple : il suffit de recourir à ses commandes : +\begin{description} +\item[\refCom{newacronym}] pour \emph{définir} un acronyme : +\item[\refCom{gls} (ou \refCom{acrshort})] pour \emph{afficher} un acronyme. +\end{description} + +\begin{docCommand}{newacronym}{\marg{clé}\marg{forme courte}\marg{forme longue}} + Cette commande, à utiliser de préférence en préambule, définit un acronyme + où : + \begin{enumerate} + \item \meta{clé} identifie l'acronyme de manière unique dans le + document\footnote{À l'auteur de veiller à ne pas utiliser deux fois la même + clé pour identifier des acronymes distincts.} ; + \item \meta{forme courte} est l'acronyme en lui-même ; + \item \meta{forme longue} est la signification de l'acronyme. + \end{enumerate} +\begin{dbwarning}{Forme courte des acronymes : en bas de casse}{} + La \meta{forme courte} d'un acronyme est à saisir exclusivement en bas de + casse (en minuscules) car elle sera en fait composée en petites capitales. +\end{dbwarning} +\end{docCommand} + +\begin{docCommand}{gls}{\marg{clé}} + Cette commande affiche l'acronyme identifié par \marg{clé} selon le principe + suivant : + \begin{enumerate} + \item la 1\iere{} occurrence de cette commande dans le document affiche + l'acronyme sous sa forme \emph{complète}, \ie*{} sa \meta{forme longue} + suivie de sa \meta{forme courte} entre parenthèses ; + \item les occurrences suivantes affichent l'acronyme uniquement sous + \meta{forme courte}. + \end{enumerate} +\end{docCommand} + +\begin{preamblecode} +\newacronym{bap}{bap}{bounded approximation property} +\end{preamblecode} +\begin{bodycode}[listing and text] +\begin{enumerate} +\item \gls{bap}, +\item \gls{bap}. +\end{enumerate} +\end{bodycode} + +\begin{docCommand}{acrshort}{\marg{clé}} + Cette commande affiche la \meta{forme courte} (seule) de l'acronyme, quel que + soit le contexte\footnote{\Ie*{} même si c'est la 1\iere{} fois que l'acronyme + est utilisé dans le document.}. +\end{docCommand} + +\begin{dbremark}{Commande \refCom{acrshort} : utile dans un titre}{} + La commande \refCom{acrshort} peut être utile notamment dans le titre d'un + article où l'on ne souhaite pas que soit détaillée la forme complète d'un + acronyme. +\end{dbremark} + +Le \Package*{glossaries} fournit bien d'autres commandes et offre bien d'autres +fonctionnalités\autocite[Pour plus de détails, cf. par exemple][]{Bitouze7}. + +\subsection{Guillemets, citations} +\label{sec-guillemets-citations} + +Le \Package*{csquotes} est dédié aux citations, formelles et informelles, +d'extraits de textes. Il propose notamment la commande \refCom{enquote} +suivante, simple d'emploi. + +\begin{docCommand}{enquote}{\marg{texte}} + Cette commande compose le \meta{texte} entre guillemets, automatiquement + adaptés : + \begin{itemize} + \item aux standards typographiques de la langue en cours. On pourra donc + l'utiliser dès que du texte est à mettre entre guillemets ; + \item au niveau (1 ou 2) de \enquote{citation} en cas d'emboîtement. On + pourra donc également l'utiliser dès que du texte est à citer de façon + informelle. + \end{itemize} +\begin{bodycode}[listing and text] +Il lui répondit : \enquote{Courteline disait: \enquote{Passer + pour un idiot aux yeux d'un imbécile est une volupté de fin + gourmet.}} +\end{bodycode} +\end{docCommand} + +\begin{docCommand}{blockcquote}{\marg{clé}\marg{extrait}} + Cette commande permet de citer un \meta{extrait} de façon + formelle\footnote{\Ie*{} avec précision de la source.}, la référence + bibliographique correspondante devant figurer dans un des fichiers \file{.bib} + ajoutés\footnote{Au moyen de la commande \docAuxCommand{addbibresource}} et + y étant identifiée par la clé \meta{clé}. + +\begin{bodycode}[listing and text] +\citeauthor{Bitouze} précise que : +\blockcquote{Bitouze}{% + \textins{Cette} commande compose les citations en détachant + automatiquement du paragraphe courant celles qui sont + longues\footnote{Par défaut, ce sont celles + dépassant 3~lignes.}.% +}. +\end{bodycode} +\end{docCommand} + +La commande \refCom{blockcquote} admet des arguments optionnels permettant +d'ajouter du texte \meta{antérieur} et/ou \meta{postérieur} à la citation +d'extrait\autocite[Pour plus de détails, cf. par exemple][]{Bitouze}. + +% (\textsc{À suivre...}) + +\subsection{Adresses Web (\texorpdfstring{\acrshort{url}}{URL})} +\label{sec-url} + +Le \Package*{hyperref} fournit (entre autres) la commande \refCom{url} qui +permet de facilement afficher des adresses Web, aussi appelées +\enquote{\gls{url}}, même si elles comportent des caractères spéciaux de \TeX{} +(|#|, +% +\lstinline[commentstyle={}]+%+, +% +|_|, |~|, |&|, etc.) : ces caractères peuvent donc être saisis tels quels, sauf +si la commande \refCom{url} est utilisée dans l'argument d'une autre +commande\footnote{Par exemple \protect\docAuxCommand*{foonote}.} auquel cas les +caractères |#| et +% +\lstinline[commentstyle={}]+%+ +% +sont alors à faire précéder de la commande \enquote{d'échappement} |\| +(contre-oblique).% + +\begin{docCommand}{url}{\marg{adresse Web}} + Cette commande affiche l'\meta{adresse Web} saisie \emph{telle quelle} et fait + d'elle un lien hypertexte. +\begin{bodycode}[listing and text,listing options={deletekeywords={url,math,nwejm,exemple,pdf}}] +Nous renvoyons aux instructions aux auteurs sur notre site Web +\url{http://math.univ-lille1.fr/~nwejm/#Authors}. +\end{bodycode} +\end{docCommand} + +\subsection{Listes en ligne} +\label{sec:listes-en-ligne} + +Le lecteur est certainement familier des environnements +\docAuxEnvironment{itemize}, \docAuxEnvironment{enumerate} et +\docAuxEnvironment{description} permettant de créer des listes respectivement +non ordonnées\footnote{\enquote{À puces}.}, ordonnées\footnote{\Ie*{} + numérotées} et \enquote{de description}. Le \Package*{enumitem} fournit des +versions étoilées de ces environnements qui composent ces listes \enquote{en + ligne}, c'est-à-dire au sein d'un même paragraphe\footnote{Le but premier de + ce package est de personnaliser les listes mais cela est déconseillé dans le + cadre du \nwejm{} car cela pourrait contrevenir à la marche typographique + qu'il a adoptée.}. + +\begin{docEnvironment}[doclang/environment content=liste]{itemize*}{} + Cet environnement compose une liste \enquote{à puces} en ligne. +\end{docEnvironment} +\begin{docEnvironment}[doclang/environment content=liste]{enumerate*}{} + Cet environnement compose une liste \enquote{numérotée} en ligne. +\end{docEnvironment} +\begin{docEnvironment}[doclang/environment content=liste]{description*}{} + Cet environnement compose une liste \enquote{de description} en ligne. +\end{docEnvironment} + +\begin{bodycode}[listing and text,listing options={deletekeywords={url,math,url,pages}}] +\begin{enumerate} +\item Les données que j’ai rassemblées [...] +\item Les données que j’ai recueillies sont + \begin{enumerate*} + \item disponibles publiquement sur internet : pages Web et CV des + conférenciers ; + \item accessibles par Wikipédia, par le précieux + \enquote{mathematics genealogy project} + (\url{http://genealogy.math.ndsu.nodak.edu/}) ; + \item pour 60 des conférenciers pour lesquelles mes informations + étaient trop lacunaires, [...]. + \end{enumerate*} +\end{enumerate} +\end{bodycode} + +\section{Canevas de fichier source typique} +\label{sec-canevas-de-fichier} + +Le lecteur souhaitant écrire un article pour le \nwejm*{} trouvera ci-dessous un +canevas de fichier source qui est un modèle typique d'article standard où les +commandes et environnement moins fréquents ont été mis en commentaire. Il est +attaché au fichier \file{PDF} de la présente documentation\footnote{Il peut + également être copié-collé : la plupart des afficheurs \textsc{pdf} + permettent de sélectionner et de copier du texte.}. +% +\newcommand{\attachfilename}{template.tex}% +\newcommand{\attachfiletextlink}{Canevas de fichier source typique}% +\tcbinputlisting{% + samples, + fontupper=\scriptsize\ttfamily, + listing only, + listing file=../examples/\attachfilename, + title={\attachfiletextlink\ \attachfile{../examples/\attachfilename}},% + listing options={deletekeywords={title,subtitle,author,keywords},deletekeywords={[2]{first}}} +} + +\iffalse +%%% Local Variables: +%%% mode: latex +%%% eval: (latex-mode) +%%% ispell-local-dictionary: "fr_FR" +%%% TeX-master: "nwejm.tex" +%%% End: +\fi diff --git a/Master/texmf-dist/doc/latex/nwejm/documentation/french/packages-un-loaded.tex b/Master/texmf-dist/doc/latex/nwejm/documentation/french/packages-un-loaded.tex new file mode 100644 index 00000000000..50518ee5099 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/documentation/french/packages-un-loaded.tex @@ -0,0 +1,92 @@ +\subsection{Packages chargés (ou pas) par la + classe}\label{sec-packages-charges-ou-pas} + +\subsubsection{Packages chargés par la classe}\label{sec:packages-charges-par} + +On a vu que, pour plusieurs de ses fonctionnalités, la \nwejmauthorcl{} s'appuie +sur des packages qu'elle charge automatiquement. Ceux dont les fonctionnalités +peuvent être utiles aux auteurs d'articles du \nwejm{} sont répertoriés dans la +liste suivante qui indique leur fonction et le cas échéant la ou les options +avec lesquelles ils sont chargés. + +En sus des outils propres à la \nwejmauthorcl, tous ceux fournis par ces +différents packages sont donc à disposition des auteurs de la \nwejm{}. + +\begin{description} +\item[\package{nag} :] signalement\footnote{Sous forme de \emph{warnings}.} de + packages, commandes et environnements obsolètes : + \begin{description} + \item[options par défaut :] \docAuxKey{l2tabu}, \docAuxKey{orthodox} ; + \end{description} +\item[\package{kpfonts} :] police principale du document : + \begin{description} + \item[option par défaut :] \docAuxKey{noDcommand} ; + \end{description} +\item[\package{graphicx} :] inclusion d'images ; +\item[\package{adjustbox} :] ajustement de la position de boîtes, par exemple + d'images ; +\item[\package{xspace} :] définition de commandes qui ne \enquote{mangent} pas + l'espace qui suit ; +\item[\package{array} :] extension (et corrections de bogues) des + environnements de tableaux ; +\item[\package{booktabs} :] tableaux d'allure professionnelle ; +\item[\package{csquotes} :] citations d'extraits informelles et + formelles\footnote{Avec citation des sources, + cf. \vref{sec-guillemets-citations}.} : + \begin{description} + \item[option par défaut :] \docAuxKey{autostyle} ; + \item[réglage par défaut] |\SetCiteCommand{\autocite}| ; + \end{description} +\item[\package{biblatex} :] gestion puissante de la bibliographie ; +\item[\package{datetime2} :] formats de dates et de (zones de) temps : + \begin{description} + \item[option par défaut :] \docAuxKey{useregional} ; + \end{description} +\item[\package{hyperref} :] support pour les liens + hypertextes\footnote{Cf. \vref{sec-url}.} : + \begin{description} + \item[option par défaut :] \docAuxKey{hidelinks}, + \docAuxKey{hypertexnames}(|=false|) ; + \end{description} +\item[\package{glossaries} :] création de glossaires et (listes d')acronymes : + \begin{description} + \item[option par défaut :] \docAuxKey{nowarn} ; + \end{description} +\item[\package{varioref} et \package{cleveref} :] références croisées + intelligentes\footnote{Cf. \vref{sec-references-croisees}.}. +\end{description} + +\subsubsection{Packages non chargés par la classe}\label{sec:packages-non-charges} + +La liste suivante, loin d'être exhaustive, répertorie des packages non chargés +par la \nwejmauthorcl{} mais pouvant se révéler utiles aux auteurs. En outre, +lorsqu'ils sont chargés manuellement par l'utilisateur, certains d'entre eux se +voient fixés par la \nwejmauthorcl{} des options ou réglages dont les plus +notables sont précisés. + +\begin{description} +\item[\package{tikz-cd} :] création simple de diagrammes commutatifs de très + haute qualité\footnote{Et offrant une syntaxe plus naturelle que le + \Package*{xymatrix}.} ; +\item[\package{pgfplots} :] création simple de graphiques (de dimensions~$2$ + ou~$3$) de très haute qualité pour représenter des fonctions ou des données + expérimentales ; +\item[\package{siunitx} :] gestion des nombres, angles et unités, et alignement + vertical sur le séparateur décimal dans les tableaux : + \begin{description} + \item[option par défaut :]\ + \begin{itemize} + \item \docAuxKey{detect-all} ; + \item \docAuxKey{locale}|=|\docValue{FR} ou \docValue{UK} ou \docValue{DE} + selon la langue de l'article ; + \end{itemize} + \end{description} +\item[\package{listings} :] insertion de listings informatiques ; +\item[\package{todonotes} :] insertion de \enquote{TODO}\footnote{Rappels de + points qu'il ne faut pas oublier d'ajouter, de compléter, de réviser, etc.}. +\end{description} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "nwejm.tex" +%%% End: diff --git a/Master/texmf-dist/doc/latex/nwejm/documentation/french/todo.tex b/Master/texmf-dist/doc/latex/nwejm/documentation/french/todo.tex new file mode 100644 index 00000000000..9a1c9eec1a8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/documentation/french/todo.tex @@ -0,0 +1,17 @@ +\chapter{To do} +\label{cha:do} + +% \begin{enumerate} +% \item Revoir les pointillés de la 2\ieme{} de couverture avec le \Pkg{TikZ} (au +% moyen de quelque chose comme : +% \verb|\tikz \draw[dotted] (0pt,0pt) -- (50pt,0pt);|). +% \end{enumerate} + +\iffalse +%%% Local Variables: +%%% mode: latex +%%% eval: (latex-mode) +%%% ispell-local-dictionary: "fr_FR" +%%% TeX-master: "../gazette.dtx" +%%% End: +\fi diff --git a/Master/texmf-dist/doc/latex/nwejm/documentation/latexmkrc b/Master/texmf-dist/doc/latex/nwejm/documentation/latexmkrc new file mode 100644 index 00000000000..3e6b294ce0d --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/documentation/latexmkrc @@ -0,0 +1,17 @@ +$pdf_mode = 1; + +$bibtex_use = 1; +$bibtex = 'biber %O %B'; + +$makeindex = 'texindy -L french'; + +add_cus_dep('idx', 'ind', 0, 'texindy'); +sub texindy{ + system("texindy -L french \"$_[0].idx\""); +} + +push @generated_exts, "aux", "idx", "ind", "lo*", "out", "toc", "acn", "acr", +"alg", "bbl", "bcf", "fls", "gl*", "ist", "run.xml", "sbl*", "sl*", "sym*", +"xdy", "unq", "mw", "*~" ; + +$clean_ext = "synctex.gz* run.xml tex.bak bbl bcf fdb_latexmk run tdo listing" diff --git a/Master/texmf-dist/doc/latex/nwejm/documentation/nwejm.bib b/Master/texmf-dist/doc/latex/nwejm/documentation/nwejm.bib new file mode 100644 index 00000000000..b871eadceb7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/documentation/nwejm.bib @@ -0,0 +1,66 @@ +% This file was created with JabRef 2.10. +% Encoding: UTF8 + + +@Online{Bitouze, + Title = {Conférence \LaTeX{} \no6}, + Author = {Bitouzé, Denis}, + Date = {2015-12-09}, + Url = {http://gte.univ-littoral.fr/members/dbitouze/pub/latex/diapositives-cours-d/conference-n-6/downloadFile/file/en-ligne6.pdf}, + Language = {french}, + Organization = {Université du Littoral Côte d'Opale}, + Subtitle = {Bibliographie (biber/biblatex), citations d’extraits}, +} + +@Online{Bitouze7, + Title = {Conférence \LaTeX{} \no7}, + Author = {Bitouzé, Denis}, + Date = {2015-10-22}, + Url = {http://gte.univ-littoral.fr/members/dbitouze/pub/latex/diapositives-cours-d/conference-n-7/downloadFile/file/en-ligne7.pdf}, + Language = {french}, + Pages = {28-154}, + Organization = {Université du Littoral Côte d'Opale}, + Subtitle = {Index, glossaires, acronymes}, +} + +@Manual{Ensenbach, + Title = {Liste des péchés des utilisateurs de \LaTeXe}, + Author = {Ensenbach, Marc and Trettin, Mark and Alfonsi, Bernard}, + Date = {2011-09-20}, + Language = {french}, + Subtitle = {Commandes et extensions obsolètes, et autres erreurs}, + Url = {http://mirrors.ctan.org/info/l2tabu/french/l2tabufr.pdf}, + + Owner = {bitouze}, + Timestamp = {2015.03.18} +} + +@Book{har, + author = {Hartshorne, Robin}, + title = {Algebraic geometry}, + note = {Graduate Texts in Mathematics, No. 52}, + publisher = {Springer-Verlag}, + address = {New York}, + year = {1977} +} + +@Book{ laz1, + author = {Lazarsfeld, Robert}, + title = {Positivity in algebraic geometry. {I}}, + volume = {48}, + note = {Classical setting: line bundles and linear series}, + publisher = {Springer-Verlag}, + address = {Berlin}, + year = {2004} +} + +@Article{shin, + author = {Shin, Kil-Ho}, + title = {{$3$}-dimensional {F}ano varieties with canonical + singularities}, + journal = {Tokyo J. Math.}, + volume = {12}, + year = {1989}, + number = {2}, + pages = {375-385} +} diff --git a/Master/texmf-dist/doc/latex/nwejm/documentation/nwejm.pdf b/Master/texmf-dist/doc/latex/nwejm/documentation/nwejm.pdf Binary files differnew file mode 100644 index 00000000000..ec36fc29b6d --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/documentation/nwejm.pdf diff --git a/Master/texmf-dist/doc/latex/nwejm/documentation/nwejm.tex b/Master/texmf-dist/doc/latex/nwejm/documentation/nwejm.tex new file mode 100644 index 00000000000..e8a19dfd1c6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/documentation/nwejm.tex @@ -0,0 +1,67 @@ +\documentclass[french,nolocaltoc]{nwejmart} +\usepackage{denisbdoc} +\usepackage[firstpage]{draftwatermark} +% +\indexsetup{level=\section*,toclevel=section,noclearpage} +\makeindex[columns=2] +\tcbset{index format=off} +% +\lstMakeShortInline[style=dbtex]| +\tcbset{listing options={escapechar=+}} +% +\SetWatermarkColor{gray!10}% +\SetWatermarkFontSize{20mm}% +\SetWatermarkText{\MakeUppercase{travail en cours}}% +% +\addbibresource{nwejm.bib} +% +\newacronym{nwejm}{nwejm}{North-Western European Journal of Mathematics} +\newacronym{bap}{bap}{bounded approximation property} +\newacronym{msc}{msc}{Mathematical Subject Classification} +\newacronym{url}{url}{Uniform Resource Locator} +% +\newtheorem{article} +\newtheorem[title=Fait,style=definition]{fact} +% +\DeclareMathOperator{\cat}{Cat} +\newcommand{\mybinop}{\mathbin{@}} +% +\begin{document} +\title[Documentation de la classe \LaTeX{} du \texorpdfstring{\nwejm}{NWEJM}]{Documentation de la classe \LaTeX{} du \nwejm*{} destinée aux auteurs} +% +\author[% +affiliation={% + Université du Littoral Côte d'Opale, Laboratoire de mathématiques pures et + appliquées (\nolinkurl{denis.bitouze@lmpa.univ-littoral.fr})% +},% +]{Bitouzé, Denis} +% +\maketitle +% +\etocarticlestylenomarks +\localtableofcontents +% +\input{french/fixed-footnotes} +\input{french/nwejm-fr} +% +\section{Annexes} +\input{french/packages-un-loaded} +\input{french/notations} +% +\printbibliography +% +% \tcblistof{dbwarninglist}{Table des +% avertissements\addcontentsline{toc}{section}{Table des avertissements}}% +% \tcblistof{dbremarklist}{Table des remarques\addcontentsline{toc}{section}{Table +% des remarques}}% +% \tcblistof[\chapter*]{dbexamplelist}{Table des exemples\addcontentsline{toc}{chapter}{Table des exemples}}% +% \tcblistof[\chapter*]{dbfaqlist}{Table des +% questions\addcontentsline{toc}{chapter}{Table des questions} +% +\printindex +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/dutch.pdf b/Master/texmf-dist/doc/latex/nwejm/examples/dutch.pdf Binary files differnew file mode 100644 index 00000000000..186b7a0e9c3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/dutch.pdf diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/dutch.tex b/Master/texmf-dist/doc/latex/nwejm/examples/dutch.tex new file mode 100644 index 00000000000..3f968aa9b7c --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/dutch.tex @@ -0,0 +1,36 @@ +\documentclass[dutch]{nwejmart} +\usepackage{lipsum} +\addbibresource{biblatex-examples.bib} +\input{sample} +% +\begin{document} +\title{Artikel Titel (dutch)} +\author[affiliation={Affiliation 8}]{Last8, First8} +\author[affiliation={Affiliation 9}]{Last9, First9} +\author[affiliation={Affiliation 10}]{Last10, First10} +\author[affiliation={Affiliation 11}]{Last11, First11} +\author[affiliation={Affiliation 12}]{Last12, First12} +\author[affiliation={Affiliation 13}]{Last13, First13} +\author[affiliation={Affiliation 14}]{Last14, First14} +\author[affiliation={Affiliation 15}]{Last15, First15} +\author[affiliation={Affiliation 16}]{Last16, First16} +\author[affiliation={Affiliation 17}]{Last17, First17} +\author[affiliation={Affiliation 18}]{Last18, First18} +\author[affiliation={Affiliation 19}]{Last19, First19} +\author[affiliation={Affiliation 20}]{Last20, First20} +% +\sample{% + \begin{enumerate} + \item It\footnote{Foo bar.} is well known\autocite{gonzalez} + that... Moreover, it is well known\autocite{iliad} that... + \item \textcite{gonzalez} have proved... Moreover, \textcite{iliad} + have proved... + \end{enumerate} + \lipsum[1-5] +} +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "issue" +%%% End: diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/english.pdf b/Master/texmf-dist/doc/latex/nwejm/examples/english.pdf Binary files differnew file mode 100644 index 00000000000..5c113aadbb5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/english.pdf diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/english.tex b/Master/texmf-dist/doc/latex/nwejm/examples/english.tex new file mode 100644 index 00000000000..d2c6dcb4677 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/english.tex @@ -0,0 +1,24 @@ +\documentclass[english]{nwejmart} +\usepackage{lipsum} +\addbibresource{biblatex-examples.bib} +\input{sample} +% +\begin{document} +\title{Article's Title (english)} +\author[affiliation={Affiliation 5}]{Last5, First5} +\author[affiliation={Affiliation 6}]{Last6, First6} +% +\sample{% + \begin{enumerate} + \item It\footnote{Foo bar.} is well known\autocite{cotton} + that... Moreover, it is well known\autocite{coleridge} that... + \item \textcite{cotton} have proved... Moreover, \textcite{coleridge} + have proved... + \end{enumerate} +} +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "issue" +%%% End: diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/example.pdf b/Master/texmf-dist/doc/latex/nwejm/examples/example.pdf Binary files differnew file mode 100644 index 00000000000..bfb81674483 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/example.pdf diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/example.tex b/Master/texmf-dist/doc/latex/nwejm/examples/example.tex new file mode 100644 index 00000000000..a9fb4e6a766 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/example.tex @@ -0,0 +1,187 @@ +% This is an example of the usage of the `nwejmart' class dedicated to articles +% submitted to the North-Western European Journal of Mathematics. +% +% The language of the article is by default English. Should it be French, German +% or Dutch instead, it would be specified as \documentclass' option. +\documentclass[ +% french % If the language of the article will be French +% german % If the language of the article will be German +% dutch % If the language of the article will be Dutch +]{nwejmart} +% +% The following package should not be used for a real article! ;) +\usepackage{lipsum} +% +% Replace below `biblatex-examples.bib' by your own bibtex file, preferrably at +% `biblatex' format (don't forget the `.bib' extension below). This will require +% an extra `biber' compilation. See `glossaries' package's documentation for +% more details. +\addbibresource{biblatex-examples.bib} +% +% Should acronyms be used in the article, define them thanks to \newacronym +% command from `glossaries' package as follows: +% - 1st argument: ⟨label⟩ of the acronym (also called key), +% - 2nd argument: ⟨short form⟩ of the acronym (lowercase!), +% - 3rd argument: ⟨long form⟩ of the acronym, +% and use them with \gls{⟨label⟩} (or, if needed, with \acrshort{⟨label⟩}). +% See `glossaries' package's documentation for more details. +\newacronym{nwejm}{nwejm}{North-Western European Journal of Mathematics} +% +\begin{document} +% +% Title of the article. A short form (that will be displayed in the headers and +% in the volume's TOC) may be specified as optional argument. +\title{Article's Title} +% +% Subtitle of the article, if any. A short form may be specified as optional +% argument. +% \subtitle{Article's Subtitle} +% +% Author(s) of the article: +% - one \author command per author, +% - mandatory argument entered as `⟨Last Name⟩, ⟨First Name⟩'. +% Use the key-value `affiliation={⟨affiliation⟩}' optional argument to specify +% one or more affiliations. An affiliation can be tagged +% (`affiliation=[⟨tag⟩]{⟨affiliation⟩}') and reused later +% (affiliationtagged={⟨tag⟩}). +\author[affiliation={Affiliation 1}]{Last1, First1} +\author[affiliation=[aff2]{Affiliation 2}]{Last2, First2} +\author[affiliation={Affiliation 3},affiliation={Affiliation 3 bis}]{Last3, First3} +\author[affiliation={Affiliation 4},affiliationtagged={aff2}]{Last4, First4} +% +% The abstract is entered as usually. +\begin{abstract} + \lipsum[1] +\end{abstract} +% +% The keywords are entered thanks to \keywords command, as a comma separated list. +\keywords{foo,bar,baz} +% +% The Mathematical Subject Classification (MSC) are entered thanks to \msc +% command,as a comma separated list. +\msc{11B13,11B30,11P70} +% +\maketitle +% +% Acknowledgments, if any, are entered thanks to \acknowledgments command (and +% will be displayed just before the bibliography, thanks to the +% \printbibliography command). +\acknowledgments{Thanks to mum, daddy and all my buddies.} +% +% Unnumbered sections, if needed, are entered as usually with the starred +% version of the \section command. Note that: +% - their titles will automatically be displayed in the headers (and in the +% volume's TOC), +% - no need to use the starred versions of the subsequent \subsection commands +% (if any) +\section*{Introduction} +% +\subsection{Citations tests} +% +% Use mainly the \autocite command (from `biblatex' package) to cite +% references. Depending on the context, \textcite command (among others) may be +% used. See `biblatex' package's documentation for more details. +\begin{enumerate} +\item It\footnote{Foo bar.} is well known\autocite{baez/article} + that... Moreover, it is well known\autocite{companion} that... +\item \textcite{baez/article} have proved... Moreover, \textcite{companion} + have proved... +\end{enumerate} +% +\subsection{Cross-references tests} +% +% The cross-references are entered thanks to the \vref command (from `varioref' +% package) and the `cleveref' features. Note that: +% - the name of the object referenced is automatically added, +% - the page of the object referenced is automatically added (if not on the +% same page). +Cf. \vref{thm:bolzano-weierstrass} \& \vref{rmk:euler} \& +\vref{eq:euler} \& \vref{sec:first-numbered}. +% +\subsection{Acronyms tests} +% +% As said above, use \gls{⟨label⟩} to display the acronym labelled ⟨label⟩. Note +% that, automatically: +% - the first occurrence of this command displays the /complete/ form of the +% acronym (long form followed by the short one in parentheses), +% - the subsequent occurrences of this command display only the short form of the +% acronym, +% - if an occurrence should be displayed as the short form of an acronym, +% regardless it is the first one or not, the command \acrshort{⟨label⟩} is to +% be used. +\begin{enumerate} +\item The present article is published in the \gls{nwejm}. +\item Moreover, the present article is published in the \gls{nwejm}. +\end{enumerate} +% +\subsection{Miscellaneaous} +% +% Use: +% - the \century command to display centuries, even negative ones, +% - the \aside command for interpolated clauses, +% - the \ie command for "that is", +% - the \acrlong when need to display (only) the long form of an acronym. +\begin{itemize} +\item It has been proved in the \century{19} \aside{more than 100 years ago} + that... +\item This has been conceptualized in the \century{-3} \aside*{more than 2000 + years ago}. +\item \acrshort{nwejm} \ie{} \acrlong*{nwejm}. +\item \acrshort{nwejm} \ie*{} \acrlong*{nwejm}. +\end{itemize} +% +\subsection{Theorems tests} +% +% The theorems and the like are entered as usually. Note that, should one of +% them be unnumbered, the environment used would be starred. +\begin{theorem}[Bolzano–Weierstrass]\label{thm:bolzano-weierstrass} + A subset of $\bbR^n$ ($n\in\bbN^*$) is sequentially compact if and only if it is + closed and bounded. +\end{theorem} +\begin{proof}[not that easy!] + ... +\end{proof} +\begin{definition} + In Cartesian space $\bbR^n$ with the $p$-norm $L_p$, an open ball is the set + \[ + B(r)=\set{x\in \bbR^n}[\sum _{i=1}^n\left|x_i\right|^p<r^p] + \] +\end{definition} +\begin{remark}[Euler's identity]\label{rmk:euler} + One of the most beautiful mathematical equation: + \begin{equation*} + \E[\I\pi]+1=0 + \end{equation*} +\end{remark} +\begin{lemma*}[Zorn] + Suppose a partially ordered set $P$ has the property that every chain has an + upper bound in $P$. Then the set $P$ contains at least one maximal element. +\end{lemma*} +% +\lipsum[2-6] +% +\begin{equation}\label{eq:euler} + \E[\I\pi]+1=0 +\end{equation} +% +\lipsum[8-15] +% +\section{First (numbered) section}\label{sec:first-numbered} +\lipsum[2] +\subsection{First subsection} +\lipsum[3-8] +\subsection{Second subsection} +\lipsum[9-15] +\section{Second (numbered) section} +\lipsum[16-38] +% +% The \printbibliography command (from `biblatex' package) displays the list of +% references (preceded by the acknowledgments, if any). +\printbibliography +% +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/french.pdf b/Master/texmf-dist/doc/latex/nwejm/examples/french.pdf Binary files differnew file mode 100644 index 00000000000..c5155c48b7d --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/french.pdf diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/french.tex b/Master/texmf-dist/doc/latex/nwejm/examples/french.tex new file mode 100644 index 00000000000..59da9672dc9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/french.tex @@ -0,0 +1,28 @@ +\documentclass[french]{nwejmart} +\usepackage{lipsum} +\addbibresource{biblatex-examples.bib} +\input{sample} +% +\begin{document} +\nocite{*} +% +\title{Titre de l'article (french)} +\author[affiliation={Affiliation 1}]{Last1, First1} +\author[affiliation=[aff2]{Affiliation 2}]{Last2, First2} +\author[affiliation={Affiliation 3},affiliation={Affiliation 3 bis}]{Last3, First3} +\author[affiliation={Affiliation 4},affiliationtagged={aff2}]{Last4, First4} +% +\sample{% + \begin{enumerate} + \item It\footnote{Foo bar.} is well known\autocite{baez/article} + that... Moreover, it is well known\autocite{companion} that... + \item \textcite{baez/article} have proved... Moreover, \textcite{companion} + have proved... + \end{enumerate} +} +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "issue" +%%% End: diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/german.pdf b/Master/texmf-dist/doc/latex/nwejm/examples/german.pdf Binary files differnew file mode 100644 index 00000000000..fae586a8cb8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/german.pdf diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/german.tex b/Master/texmf-dist/doc/latex/nwejm/examples/german.tex new file mode 100644 index 00000000000..2b81f4eaafd --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/german.tex @@ -0,0 +1,23 @@ +\documentclass[german]{nwejmart} +\usepackage{lipsum} +\addbibresource{biblatex-examples.bib} +\input{sample} +% +\begin{document} +\title{Beitragstitel (german)} +\author[affiliation={Affiliation 7},affiliation={Affiliation 7 bis}]{Last7, First7} +% +\sample{% + \begin{enumerate} + \item It\footnote{Foo bar.} is well known\autocite{gerhardt} + that... Moreover, it is well known\autocite{hammond} that... + \item \textcite{gerhardt} have proved... Moreover, \textcite{hammond} + have proved... + \end{enumerate} +} +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "issue" +%%% End: diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/issue.pdf b/Master/texmf-dist/doc/latex/nwejm/examples/issue.pdf Binary files differnew file mode 100644 index 00000000000..e28b086208c --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/issue.pdf diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/issue.tex b/Master/texmf-dist/doc/latex/nwejm/examples/issue.tex new file mode 100644 index 00000000000..2b23aeb2a51 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/issue.tex @@ -0,0 +1,23 @@ +\documentclass{nwejm} +\usepackage{lipsum} +\issuesetup{number=1} +\geometry{% + % verbose% + % ,showframe% +} +% +\addbibresource{biblatex-examples.bib} +% +\input{sample} +% +\begin{document} +\inputarticle[french]{french} +\inputarticle{english} +\inputarticle[german]{german} +\inputarticle[dutch]{dutch} +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/sample.tex b/Master/texmf-dist/doc/latex/nwejm/examples/sample.tex new file mode 100644 index 00000000000..9fb33aee135 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/sample.tex @@ -0,0 +1,101 @@ +\providecommand{\eulersidentity}{% + \begin{equation*} + \E[\I\pi]+1=0 + \end{equation*} +} +\providecommand{\sample}[1]{% + % + \newacronym{nwejm-\languagename}{nwejm}{North-Western European Journal of Mathematics} + % + \begin{abstract} + \lipsum[1] + \end{abstract} + % + \keywords{foo,bar,baz} + % + \msc{11B13,11B30,11P70} + % + \acknowledgments{Thanks to mum, daddy and all my buddies.} + % + \maketitle + % + \section*{Introduction} + % + \subsection{Citations tests} + #1 + % + \subsection{Cross-references tests} + Cf. \vref{thm:bolzano-weierstrass-\languagename,rmk:euler-\languagename} \& + \vref{eq:euler-\languagename} \& \vref{sec:first-numbered-\languagename}. + % + \subsection{Miscellaneaous} + \begin{itemize} + \item It has been proved in the \century{19} \aside{more than 100 years ago} + that... + \item This has been conceptualized in the \century{-3} \aside*{more than 2000 + years ago}. + \item \acrshort{nwejm-\languagename} \ie{} \acrlong*{nwejm-\languagename}. + \item \acrshort{nwejm-\languagename} \ie*{} \acrlong*{nwejm-\languagename}. + \end{itemize} + % + \subsection{Acronyms tests} + \begin{enumerate} + \item The present article is published in the \gls{nwejm-\languagename}. + \item Moreover, the present article is published in the \gls{nwejm-\languagename}. + \end{enumerate} + % + \subsection{Theorems tests} + \begin{theorem}[Bolzano–Weierstrass]\label{thm:bolzano-weierstrass-\languagename} + A subset of $\bbR^n$ ($n\in\bbN^*$) is sequentially compact if and only if it is + closed and bounded. + \end{theorem} + \begin{proof}[not that easy!] + ... + \end{proof} + \begin{definition} + In Cartesian space $\bbR^n$ with the $p$-norm $L_p$, an open ball is the set + \[ + B(r)=\set{x\in \bbR^n}[\sum _{i=1}^n\left|x_i\right|^p<r^p] + \] + \end{definition} + \begin{remark}[Euler's identity]\label{rmk:euler-\languagename} + One of the most beautiful mathematical equation: + \begin{equation} + \E[\I\pi]+1=0 + \end{equation} + \end{remark} + \begin{lemma*}[Zorn] + Suppose a partially ordered set $P$ has the property that every chain has an + upper bound in $P$. Then the set $P$ contains at least one maximal element. + \end{lemma*} + \begin{axiom}\label{my-axiom-\languagename} + The following assertions are considered as true. + \begin{assertions} + \item\label{rare-expensive-\languagename} Anything that is scarce also is + expensive. + \item\label{cheap-horse-\languagename} A cheap horse is scarce. + \end{assertions} + \end{axiom} + According to \vref{rare-expensive-\languagename,cheap-horse-\languagename} + from \vref{my-axiom-\languagename}, a cheap horse is expensive. + % + \subsection{Dummy text and nice equation} + % + \lipsum[2-6] + % + \begin{equation}\label{eq:euler-\languagename} + \E[\I\pi]+1=0 + \end{equation} + % + \lipsum[8-15] + % + \section{First (numbered) section}\label{sec:first-numbered-\languagename} + \lipsum[2] + \subsection{First subsection} + \lipsum[3-8] + \subsection{Second subsection} + \lipsum[9-15] + \section{Second (numbered) section} + \lipsum[16-38] + \printbibliography +} diff --git a/Master/texmf-dist/doc/latex/nwejm/examples/template.tex b/Master/texmf-dist/doc/latex/nwejm/examples/template.tex new file mode 100644 index 00000000000..9050da57a53 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/examples/template.tex @@ -0,0 +1,72 @@ +% This is a template that may be used for the articles submitted to the +% North-Western European Journal of Mathematics. +% +% The language of the article is by default English. Should it be French, German +% or Dutch instead, it would be specified as \documentclass' option. +\documentclass[ +% french % If the language of the article will be French +% german % If the language of the article will be German +% dutch % If the language of the article will be Dutch +]{nwejmart} +% +% Specify your own bibtex file, preferrably at `biblatex' format (don't forget +% the `.bib' extension below) in the argument of the \addbibresource command. +\addbibresource{} +% +% Should acronyms be used in the article, define them thanks to \newacronym +% command from `glossaries' package as follows: +% - 1st argument: ⟨label⟩ of the acronym (also called key), +% - 2nd argument: ⟨short form⟩ of the acronym (lowercase!), +% - 3rd argument: ⟨long form⟩ of the acronym, +% and use them with \gls{⟨label⟩} (or, if needed, with \acrshort{⟨label⟩}). +% See `glossaries' package's documentation for more details. +% \newacronym{}{}{} +% +\begin{document} +% +% Title of the article. A short form (that will be displayed in the headers and +% in the volume's TOC) may be specified as optional argument. +\title{} +% +% Subtitle of the article, if any. A short form may be specified as optional +% argument. +% \subtitle{} +% +% Author(s) of the article: +% - one \author command per author, +% - mandatory argument entered as `⟨Last Name⟩, ⟨First Name⟩'. +% Use the key-value `affiliation={⟨affiliation⟩}' optional argument for each +% affiliation of the author. An affiliation can be tagged +% (`affiliation=[⟨tag⟩]{⟨affiliation⟩}') and reused later +% (affiliationtagged={⟨tag⟩}). +\author[affiliation={}]{, } +% \author[affiliation={}]{, } +% +% The abstract is entered as usually. +\begin{abstract} + ... +\end{abstract} +% +% The keywords are entered thanks to \keywords command, as a comma separated list. +\keywords{} +% +% The Mathematical Subject Classification (MSC) are entered thanks to \msc +% command,as a comma separated list. +\msc{} +% +% The title is made as usually. +\maketitle +% +% Acknowledgments, if any, are entered thanks to \acknowledgments command (and +% will be displayed just before the bibliography, thanks to the +% \printbibliography command). +% \acknowledgments{} +% +% Here comes the article's content. +... +% +% The \printbibliography command (from `biblatex' package) displays the list of +% references (preceded by the acknowledgments, if any) +\printbibliography +% +\end{document} diff --git a/Master/texmf-dist/doc/latex/nwejm/latexmkrc.tex b/Master/texmf-dist/doc/latex/nwejm/latexmkrc.tex new file mode 100644 index 00000000000..3e6b294ce0d --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/latexmkrc.tex @@ -0,0 +1,17 @@ +$pdf_mode = 1; + +$bibtex_use = 1; +$bibtex = 'biber %O %B'; + +$makeindex = 'texindy -L french'; + +add_cus_dep('idx', 'ind', 0, 'texindy'); +sub texindy{ + system("texindy -L french \"$_[0].idx\""); +} + +push @generated_exts, "aux", "idx", "ind", "lo*", "out", "toc", "acn", "acr", +"alg", "bbl", "bcf", "fls", "gl*", "ist", "run.xml", "sbl*", "sl*", "sym*", +"xdy", "unq", "mw", "*~" ; + +$clean_ext = "synctex.gz* run.xml tex.bak bbl bcf fdb_latexmk run tdo listing" diff --git a/Master/texmf-dist/doc/latex/nwejm/ltxdoc.cfg b/Master/texmf-dist/doc/latex/nwejm/ltxdoc.cfg new file mode 100644 index 00000000000..42825d30887 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/ltxdoc.cfg @@ -0,0 +1,11 @@ +\AtBeginDocument{% + \OnlyDescription% Comment out for implementation details + \EnableCrossrefs% + \RecordChanges% + % \GlossaryPrologue{% + % }% + \CodelineIndex% +}% +\AtEndDocument{% + % \PrintIndex% +} diff --git a/Master/texmf-dist/doc/latex/nwejm/nwejm-logos-collection.tex b/Master/texmf-dist/doc/latex/nwejm/nwejm-logos-collection.tex new file mode 100644 index 00000000000..b32baede8a4 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/nwejm-logos-collection.tex @@ -0,0 +1,41 @@ +\documentclass[tikz]{standalone} +\usepackage{graphicx} +\usepackage{tkz-berge} +\makeatletter +\newcommand*{\grWheelComplete}[2][]{% + \begingroup% + \setkeys[GR]{cl}{#1}% + \grStar[#1]{#2}% + \pgfmathsetcounter{tkz@gr@a}{#2-1}% + \edef\tkz@auxctp{\thetkz@gr@a}% + \foreach \ia in {0,...,\tkz@auxctp}% + {\foreach \ib in {\ia,...,\tkz@auxctp}% + {\Edge(\cmdGR@cl@prefix\ia)(\cmdGR@cl@prefix\ib)}% + }% + \endgroup% +} +\makeatother +\begin{document} +\begin{tikzpicture}[scale=.8] + \GraphInit[vstyle=Shade]% + \SetGraphShadeColor{blue!60!black!30}{blue}{white}% + \tikzset{% + VertexStyle/.style = {% + shape = circle,% + fill = white,% + minimum size = 3.5cm,% + draw% + }% + }% + \SetVertexNoLabel% + \grWheelComplete[RA=9]{6}% + \AssignVertexLabel{a}{% + \includegraphics[height=25mm]{nwejm-fields-institute-logo},% + \includegraphics[height=25mm]{nwejm-federation-recherche-math-npdc-logo},% + \includegraphics[height=10mm]{nwejm-kwg-logo},% + \includegraphics[height=20mm]{nwejm-smf-logo},% + \includegraphics[height=12mm]{nwejm-sml-logo},% + \includegraphics[height=25mm]{nwejm-logo}% + };% +\end{tikzpicture} +\end{document} diff --git a/Master/texmf-dist/doc/latex/nwejm/nwejm.cwl b/Master/texmf-dist/doc/latex/nwejm/nwejm.cwl new file mode 100644 index 00000000000..f383b4ee744 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/nwejm.cwl @@ -0,0 +1,209 @@ +# mode: nwejm.cls +# denisbitouze, 23.12.2015 +# +#include:class-book +#include:latex-document +#include:latex-mathsymbols +#include:tex +#include:xparse +#include:l3keys2e +#include:l3sort +#include:nag +#include:fontenc +#include:inputenc +#include:fontspec +#include:graphicx +#include:adjustbox +#include:draftwatermark +#include:xspace +#include:csquotes +#include:biblatex +#include:array +#include:booktabs +#include:varioref +#include:mathtools +#include:mathrsfs +#include:esvect +#include:kpfonts +#include:translations +#include:fmtcount +#include:geometry +#include:babel +#include:tocvsec2 +#include:etoc +#include:microtype +#include:datetime2 +#include:enumitem +#include:pagegrid +#include:amsthm +#include:thmtools +#include:hyperref +#include:hypcap +#include:bookmark +#include:glossaries +#include:cleveref +# +# Document class +#keyvals:\documentclass/nwejmart +french +english +ngerman +dutch +#endkeyvals +# +# Cover and title pages +# +# Title, etc. +\title{title}#n +\title[short title]{title}#n +\subtitle{%<subtitle%>}#n* +\subtitle[%<short subtitle%>]{%<subtitle%>}#n* +# +# Author +\author{%<Last name%>, %<First name%>}#n +\author[affiliation={%<affiliation%>}]{%<Last name%>, %<First name%>}#n +\author[affiliation=[%<affiliation's tag%>]{%<affiliation%>}]{%<Last name%>, %<First name%>}#n +\author[affiliationtagged={%<affiliation's tag%>}]{%<Last name%>, %<First name%>}#n +# +# Dates +\dates{received=%<yyyy%>-%<mm%>-%<dd%>,accepted=%<yyyy%>-%<mm%>-%<dd%>,online=%<yyyy%>-%<mm%>-%<dd%>}#n +# +# Math commands +\N#m +\Z#m +\D#m +\Q#m +\R#m +\C#m +\K#m +\arccosh#m +\arcsin#m +\arcsinh#m +\arctan#m +\arctanh#m +\Argch#m +\Argsh#m +\Argth#m +\ch#m +\cotan#m +\curl#m +\dif#m +\Div#m +\grad#m +\E#m +\I#m +\rot#m +\sh#m +\supp#m +\th#m +\norm#m +\lnorm#m +\llnorm#m +\lpnorm#m +\supnorm#m +\abs#m +\prt#m +\brk#m +\brc#m +\leqgeq#m +\lrangle#m +\set{%<set self-contained definition%>}#m +\set{%<set definition%>}[%<such that...%>]#m +\begin{axiom} +\begin{assertions} +\begin{conjecture} +\begin{corollary} +\begin{definition} +\begin{example} +\begin{hypotheses} +\begin{proposition} +\begin{lemma} +\begin{notation} +\begin{proof} +\begin{remark} +\begin{theorem} +# +\begin{axiom*} +\begin{assertions*} +\begin{conjecture*} +\begin{corollary*} +\begin{definition*} +\begin{example*} +\begin{hypotheses*} +\begin{proposition*} +\begin{lemma*} +\begin{notation*} +\begin{proof*} +\begin{remark*} +\begin{theorem*} +# +\end{axiom} +\end{assertions} +\end{conjecture} +\end{corollary} +\end{definition} +\end{example} +\end{hypotheses} +\end{proposition} +\end{lemma} +\end{notation} +\end{proof} +\end{remark} +\end{theorem} +# +\end{axiom*} +\end{assertions*} +\end{conjecture*} +\end{corollary*} +\end{definition*} +\end{example*} +\end{hypotheses*} +\end{proposition*} +\end{lemma*} +\end{notation*} +\end{proof*} +\end{remark*} +\end{theorem*} +# +\begin{description*} +\begin{enumerate*} +\begin{itemize*} +# +\end{description*} +\end{enumerate*} +\end{itemize*} +# Miscellaneous commands +\keywords{%<list of keywords%>}#n +\msc{%<list of MSCs%>}#n +\nwejm#n +\nwejm*#n* +\century{%<(positive or negative) integer%>}#n +\century*{%<(positive or negative) integer%>}#n* +\aside{%<interpolated clause%>}#n +\aside*{%<interpolated clause%>}#n +\acknowledgements{%<acknowledgments%>}#n +\ie#n +\ie*#n* +\Ie#n +\Ie*#n* +\NewPairedDelimiter#n +\articlesetup#n +\BinaryOperators#n +# +\editorinchief{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\editor{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\fieldseditor{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\managingeditor{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\classdesigner{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\computerengineer{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\classmaintainer{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\fontdesigner{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\printingservice{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\computerassistance{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\secretary{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\issuesetup{number=%<positive integer%>}#n +\journalsetup {publisher=%<publisher%>,address={%<address%>},phone=%<phone%>,email=%<email%>,url=%<url%>,issn=%<issn%>,isbn=%<isbn%>}#n +\inputarticle{file}#i +\inputarticle[path]{file}#i +\fontdesignertext{text}#n +\printertext{text}#n diff --git a/Master/texmf-dist/doc/latex/nwejm/nwejmart.cwl b/Master/texmf-dist/doc/latex/nwejm/nwejmart.cwl new file mode 100644 index 00000000000..67175927679 --- /dev/null +++ b/Master/texmf-dist/doc/latex/nwejm/nwejmart.cwl @@ -0,0 +1,5 @@ +# mode: nwejm.cls +# denisbitouze, 23.12.2015 +# +#include:nwejm + diff --git a/Master/texmf-dist/source/latex/nwejm/nwejm.drv b/Master/texmf-dist/source/latex/nwejm/nwejm.drv new file mode 100644 index 00000000000..b22dccd5e62 --- /dev/null +++ b/Master/texmf-dist/source/latex/nwejm/nwejm.drv @@ -0,0 +1,45 @@ +%% +%% This is file `nwejm.drv', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% nwejm.dtx (with options: `driver') +%% -------:| ----------------------------------------------------------------- +%% nwejm:| Class for the journal "North-Western European Journal of Mathematics" +%% Author:| Denis Bitouze +%% E-mail:| denis.bitouze@lmpa.univ-littoral.fr +%% License:| Released under the LaTeX Project Public License v1.3c or later +%% See:| http://www.latex-project.org/lppl.txt +%% +\ProvidesFile{nwejm.dtx} +\documentclass{ltxdoc} +\usepackage[a4paper,margin=25mm,left=50mm,nohead]{geometry} +\usepackage[numbered]{hypdoc} + +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +%% +%% Copyright (C) 2015, 2016 by Denis Bitouze <denis.bitouze@lmpa.univ-littoral.fr> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Denis Bitouze. +%% +%% This work consists of the file nwejm.dtx and a Makefile. +%% Running "make" generates the derived files README, nwejm.pdf and nwejm.cls. +%% Running "make inst" installs the files in the user's TeX tree. +%% Running "make install" installs the files in the local TeX tree. +%% +%% +%% End of file `nwejm.drv'. diff --git a/Master/texmf-dist/source/latex/nwejm/nwejm.dtx b/Master/texmf-dist/source/latex/nwejm/nwejm.dtx new file mode 100644 index 00000000000..0f66d98b509 --- /dev/null +++ b/Master/texmf-dist/source/latex/nwejm/nwejm.dtx @@ -0,0 +1,5773 @@ +% \iffalse meta-comment +%<*internal> +\iffalse +%</internal> +%<*readme> +nwejm - Support for the journal "North-Western European Journal of Mathematics" +=============================================================================== + +This bundle includes LaTeX classes and `biblatex` styles files dedicated to the +new journal "North-Western European Journal of Mathematics". + +Follow development, submit issues, and suggest improvements at +https://github.com/dbitouze/nwejm. + +Installation +------------ + +The classes are supplied in `.dtx` format. If you want to unpack the `.dtx` +yourself, running `tex nwejm.dtx` will extract the package whereas +% +`pdflatex nwejm` will typeset the documentation of the `nwejmart` class +(currently only in French). + +Typesetting the documentation also requires a number of packages in addition to +those needed to use the `nwejm` classes. To compile the documentation without +error, you will need, among others, my personal (dirty) package `denisbdoc` for +documenting the classes I've written. +%</readme> +%<*internal> +\fi +\def\nameofplainTeX{plain} +\ifx\fmtname\nameofplainTeX\else + \expandafter\begingroup +\fi +%</internal> +%<*install> +\input l3docstrip.tex +\Msg{********************************************************} +\Msg{* Installation} +\Msg{* Class: nwejm 2016/04/14 v0.96} +\Msg{* for the journal} +\Msg{* "North-Western European Journal of Mathematics" (DB)} +\Msg{********************************************************} +\keepsilent +\askforoverwritefalse +\preamble +-------:| ----------------------------------------------------------------- + nwejm:| Class for the journal "North-Western European Journal of Mathematics" + Author:| Denis Bitouze + E-mail:| denis.bitouze@lmpa.univ-littoral.fr +License:| Released under the LaTeX Project Public License v1.3c or later + See:| http://www.latex-project.org/lppl.txt + +\endpreamble +\postamble + +Copyright (C) 2015, 2016 by Denis Bitouze <denis.bitouze@lmpa.univ-littoral.fr> + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License (LPPL), either +version 1.3c of this license or (at your option) any later +version. The latest version of this license is in the file: + +http://www.latex-project.org/lppl.txt + +This work is "maintained" (as per LPPL maintenance status) by +Denis Bitouze. + +This work consists of the file nwejm.dtx and a Makefile. +Running "make" generates the derived files README, nwejm.pdf and nwejm.cls. +Running "make inst" installs the files in the user's TeX tree. +Running "make install" installs the files in the local TeX tree. + +\endpostamble +% +\def\NWEJM@classname{\jobname} +\def\NWEJM@addons{addons} +\def\NWEJM@documentation{documentation} +% +\usedir{/} +\generate{ + \nopreamble\nopostamble + \file{README.md}{\from{\jobname.dtx}{readme}} +}% +\usedir{tex/latex/\NWEJM@classname} +\generate{% + \file{\NWEJM@classname.cls}{\from{\jobname.dtx}{class}} + \file{\NWEJM@classname art.cls}{\from{\jobname.dtx}{class-article}} + \file{\NWEJM@classname.dbx}{\from{\jobname.dtx}{datamodel}} + \file{\NWEJM@classname.cbx}{\from{\jobname.dtx}{citestyle}} + \file{\NWEJM@classname.bbx}{\from{\jobname.dtx}{bibstyle}} + \file{\NWEJM@classname.lbx}{\from{\jobname.dtx}{languagemodel}} + \nopreamble\nopostamble + \file{\NWEJM@classname.cfg}{\from{\jobname.dtx}{configuration}} + \file{\NWEJM@classname-english.trsl}{\from{\jobname.dtx}{english}} + \file{\NWEJM@classname-french.trsl}{\from{\jobname.dtx}{french}} + \file{\NWEJM@classname-german.trsl}{\from{\jobname.dtx}{german}} + \file{\NWEJM@classname-dutch.trsl}{\from{\jobname.dtx}{dutch}} +}% +\usedir{tex/latex/\NWEJM@classname/images} +\generate{% + \nopreamble\nopostamble + \file{\NWEJM@classname-logos-collection.tex}{\from{\jobname.dtx}{logos-collection}} +}% +%</install> +%<install>\endbatchfile +%<*internal> +\usedir{source/latex/\NWEJM@classname} +\generate{ + \file{\NWEJM@classname.ins}{\from{\jobname.dtx}{install}} + \file{\NWEJM@classname.drv}{\from{\jobname.dtx}{driver}}% +}% +\nopreamble\nopostamble +% \usedir{doc/latex/\NWEJM@classname} +% \generate{ +% \file{README.md}{\from{\jobname.dtx}{readme}} +% } +\usedir{doc/latex/\NWEJM@classname/\NWEJM@documentation} +\generate{ + \file{latexmkrc}{\from{\jobname.dtx}{latexmkrc}} +} +\usedir{doc/latex/\NWEJM@classname/\NWEJM@addons/completion} +\generate{% + \file{\NWEJM@classname.cwl}{\from{\jobname.dtx}{class-cwl}} + \file{\NWEJM@classname art.cwl}{\from{\jobname.dtx}{classart-cwl}} +}% +\ifx\fmtname\nameofplainTeX + \expandafter\endbatchfile +\else + \expandafter\endgroup +\fi +%</internal> +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{nwejm.dtx} +\documentclass{ltxdoc} +\usepackage[a4paper,margin=25mm,left=50mm,nohead]{geometry} +\usepackage[numbered]{hypdoc} + +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +%</driver> +% \fi +% +% \GetFileInfo{\jobname.dtx} +% \DoNotIndex{\newcommand,\newenvironment} +% +%\title{\textsf{nwejm} --- Class for the journal "North-Western European Journal of Mathematics"\thanks{This file +% describes version \fileversion, last revised \filedate.} +%} +%\author{Denis Bitouze\thanks{E-mail: denis.bitouze@lmpa.univ-littoral.fr}} +%\date{Released \filedate} +% +%\maketitle +% +%\changes{v0.96}{2016/04/14}{Some improvements. Incompatible changes: big sets +% macros prefixed with ×bb×, e.g. ×\bbR× instead of ×\R×.} +% \changes{v0.92}{2015/12/10}{First usable release} +% \changes{v0.9}{2015/09/30}{First public release} +% +% \begin{abstract} +% ==== Put abstract text here. ==== +% \end{abstract} +% +% \section{Usage} +% +% ==== Put descriptive text here. ==== +% +% \DescribeMacro{\dummyMacro} +% This macro does nothing.\index{doing nothing|usage} It is merely an +% example. If this were a real macro, you would put a paragraph here +% describing what the macro is supposed to do, what its mandatory and +% optional arguments are, and so forth. +% +% \DescribeEnv{dummyEnv} +% This environment does nothing. It is merely an example. +% If this were a real environment, you would put a paragraph here +% describing what the environment is supposed to do, what its +% mandatory and optional arguments are, and so forth. +% +%\StopEventually{^^A +% \PrintChanges +% \PrintIndex +%} +% +% \section{Implementation} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% We start by loading some packages that are required to define the \nwejmcl{} +% (and its options). Since the latter will make use of the \pkg{expl3} +% programming interface (\LaTeX3). In order to load this package, it is enough +% to load the \Pkg{xparse} which is anyway needed to produce document-level +% commands. +% +% \begin{itemize} +% \item A generic document command parser: +% \begin{macrocode} +\RequirePackage{xparse} +% \end{macrocode} +% \item \LaTeXe{} option processing using \LaTeX3 keys: +% \begin{macrocode} +\RequirePackage{l3keys2e} +% \end{macrocode} +% \item Sorting lists (since \Pkg{l3sort} is about to move from `experimental' +% to `stable' status, the \File{l3sort.sty} will be removed soonish): +% \begin{macrocode} +\IfFileExists{l3sort.sty}{ + \RequirePackage{l3sort} +}{ +} +% \item e-\TeX{} tools for \LaTeX: +% \begin{macrocode} +\RequirePackage{etoolbox} +% \end{macrocode} +% \end{itemize} +% +% In order to avoid ×_nwejm× in the name of each internal (i.e. private) +% function and variable, we make use of the ×@@× place holder provided by the +% \Pkg{l3docstrip}. +% \begin{macrocode} +%<@@=nwejm> +% \end{macrocode} +% +% \subsection{\LaTeX3 loading} +% +% For debugging purpose, \Pkg{expl3} could be loaded with its +% \docAuxKey*{check-declarations} option. +% \begin{macrocode} +% \PassOptionsToPackage{check-declarations}{expl3} +% \end{macrocode} +% +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +% \end{macrocode} +% +% The class is declared in the \LaTeX3{}'s way. +% \begin{macrocode} +\ProvidesExplClass +%<class> {nwejm} +%<class-article> {nwejmart} + {2015/09/30} + {1.00} + { + Class for the journal "North-Western European Journal of Mathematics". + } +% \end{macrocode} +% +% \begin{macrocode} +\ExplSyntaxOn +% \end{macrocode} +% +% \section{Messages} +% +% In this section, some messages are declared for future use. +% \begin{macrocode} +\msg_new:nnnn{nwejm}{Issue~number~needed}{Option~`#1'~needed!} +{Please~specify~`#1=<number>', ~otherwise~`<number>'~will~be~set~to + ~`\int_use:N\c_@@_first_issue_number_int'.}% +\msg_new:nnnn{nwejmart}{Unknown~choice}{Choice~`#3'~invalid!} +{Please~specify~#1=#2.}% +\msg_new:nnn{nwejmart}{Unknown~tag}{There~ isn't~ any~ affiliation~ tagged~ + with~ `#1'.~ This~ one~ will~ be~ ignored.}% +\msg_new:nnn{nwejmart}{Unknown~language}{The~ option~ `#1'~ you~ passed~ isn't~ + a~ valid~ language~ name~ (only~ `english',~ `french',~ `ngerman',~ `german',~ + `dutch'~ are~ accepted).~ `english'~ will~ be~ used~ instead.}% +\msg_new:nnn{nwejmart}{No~keyword}{You~ haven't~ specify~ any~ keyword~ for~ + this~ article!}% +\msg_new:nnn{nwejmart}{No~MSC}{You~ haven't~ specify~ any~ Mathematical~ + Subject~ Classification~ (MSC)~ for~ this~ article!}% +\msg_new:nnn{nwejmart}{No~abstract}{You~ haven't~ specify~ any~ abstract~ for~ + this~ article!}% +\msg_new:nnn{nwejmart}{Starred~AMS~environments}{The~ starred~AMS~environment~ + `#1*'~should~ be~ avoided.~ It~ will ~be ~ replaced ~ by its~ unstarred~ counterpart~ `#1'.}% +\msg_new:nnn{ +%<class-article> nwejmart +%<class> nwejm +}{Command~restricted~to~document~body~used~in~preamble}{The~command~#1 + can~be~used~only~in~document~body~and~not~in~preamble!}% +\msg_new:nnn{nwejmart}{Article~setup~not~consistent}{The~ article~ setup~ + concerning~ the~ option~ `#1'~ has~ changed~ after~ its~ 1st~ use.~ Please~ + use~ \articlesetup~ command~ just~ once,~ just~ after~ the~ beginning~ of~ + the~ document.}% +\msg_new:nnn{nwejmart}{Wrong~paired~delimiter's~size~parameter}{The~ + size~parameter~specified~ (`#1')~is~ not~ allowed:~ only~ `0',~`1'~(or~ + `\string\big'),~`2'~(or~ `\string\Big'),~`3'~(or~ `\string\big'g)~and~`4'~(or~ + `\string\Bigg')~ are ~ allowed. ~ It~ will~ be~ ignored.}% +% \end{macrocode} +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \subsection{Class options} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \begin{macro}{\c_@@_pagegrid_dim} +% We declare the constant dimension of the pagegrid, when enabled. +% \begin{macrocode} +\dim_const:Nn \c_@@_pagegrid_dim { 1mm} +% \end{macrocode} +% \end{macro} +% +% We define some class options: +% \begin{itemize} +% \item "pagegrid" in order to draw a grid on each page, in order to check the +% layout (most debugging purpose), +% \item ... +% \end{itemize} +% +% \begin{macrocode} +\bool_new:N \g_@@_for_authors_bool +\bool_new:N \g_@@_cover_bool +\bool_new:N \g_@@_coverpage_bool +\bool_new:N \g_@@_inside_pages_bool +% \end{macrocode} +% +% \begin{macrocode} +\keys_define:nn { nwejm } +{ + pagegrid .dim_gset:N = \g_@@_pagegrid_dim, + pagegrid .default:n = {\c_@@_pagegrid_dim}, + forauthors .code:n = {% + \bool_gset_true:N \g_@@_for_authors_bool% + \bool_gset_true:N \g_@@_inside_pages_bool% + },% + forprinter .bool_gset:N = \g_@@_for_printer_bool, + output .choice:, + output / frontcover .code:n = {% + \bool_gset_true:N \g_@@_for_printer_bool% + \bool_gset_true:N \g_@@_cover_bool% + },% + output / insidepages .code:n = {% + \bool_gset_true:N \g_@@_for_printer_bool% + \bool_gset_true:N \g_@@_inside_pages_bool% + },% + output / backcover .code:n = {% + \bool_gset_true:N \g_@@_for_printer_bool% + },% + output / web .code:n = {% + },% +}% +% \end{macrocode} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \begin{macrocode} +%<*class-article> +% \end{macrocode} +% +% \begin{macrocode} +\bool_new:N \g_@@_language_specified_bool +\cs_new_protected:Nn \_@@_language:n +{ + \bool_gset_true:N \g_@@_language_specified_bool% + \PassOptionsToPackage{main=#1}{babel} + \PassOptionsToPackage{#1}{varioref} + \AtBeginDocument{ + \LoadDictionaryFor{#1}{nwejm} + } + \AtEndPreamble{% + \FCloadlang{#1} + } + \AfterEndPreamble{% + \selectlanguage{#1} + } +} +% \end{macrocode} +% +% \begin{macrocode} +%</class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +\keys_define:nn { nwejm } +{ + 10pt .code:n = {% + \PassOptionsToClass{10pt}{book} + },% + 11pt .code:n = {% + \PassOptionsToClass{11pt}{book} + },% + 12pt .code:n = {% + \PassOptionsToClass{12pt}{book} + },% +% \end{macrocode} +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class-article> +% \end{macrocode} +% +% \begin{macrocode} + english .code:n = { + \_@@_language:n {english} + },% + french .code:n = { + \_@@_language:n {french} + },% + german .code:n = { + \_@@_language:n {ngerman} + },% + ngerman .code:n = { + \_@@_language:n {ngerman} + },% + dutch .code:n = { + \_@@_language:n {dutch} + },% + % unknown .code:n = { + % \msg_warning:nnx{nwejmart}{Unknown~language}{\CurrentOption} + % \tl_gset:Nn \g_@@_language_tl {english} + % }, +% \end{macrocode} +% +% An option to prevent automatic local table of contents at the end of +% independent articles. +% \begin{macrocode} + nolocaltoc .code:n = { + \bool_gset_true:N \g_@@_nolocaltoc_bool + },% +% \end{macrocode} +% +% \begin{macrocode} +%</class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +}% +% \end{macrocode} +% +% \begin{macrocode} +\ProcessKeysOptions { nwejm } +% \end{macrocode} +% +% \subsection{Class loading} +% +% \begin{macrocode} +% As subsequent class, the \Cls{book} is loaded. +% \begin{macrocode} +\LoadClass { book } +\PassOptionsToPackage{export}{adjustbox}% +\PassOptionsToPackage{fleqn}{mathtools}% +\PassOptionsToPackage{french,ngerman,dutch,english,noabbrev}{cleveref} +% \end{macrocode} +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class-article> +% \end{macrocode} +% +% We now treat the case where no language option is passed at ×\documentclass× +% level (×english× is the default). +% \begin{macrocode} +\bool_if:NF {\g_@@_language_specified_bool} { + \_@@_language:n {english} +} +% \end{macrocode} +% +% \begin{macrocode} +%</class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% We load the dictionaries containing the translations needed for theorems and +% the like. +% \begin{macrocode} +\AtBeginDocument{ + \LoadDictionaryFor{french}{nwejm} + \LoadDictionaryFor{english}{nwejm} + \LoadDictionaryFor{dutch}{nwejm} + \LoadDictionaryFor{german}{nwejm} +} +% \end{macrocode} +% +% \begin{macrocode} +\PassOptionsToPackage{french,ngerman,dutch,english}{babel} +\PassOptionsToPackage{french,ngerman,dutch,english}{varioref} +% \end{macrocode} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \section{Packages loading} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% Many of the \nwejmcl{} features are provided by third party packages. In this +% section, we load them and outline their features interesting from the \nwejmcl{} +% point of view.\todo{When possible, the list of loaded packages should be split +% into two lists: one of the packages needed just by \nwejm{} (for both its logic +% and its layout) and one of packages useful for the end user.} +% +% \begin{enumerate} +% \item Selective filtering of error messages and warnings +% \begin{macrocode} +\RequirePackage{silence} +% \end{macrocode} +% +% We filter harmless warnings (from \pkg{kpfonts}, \pkg{etex}, \pkg{etoc}). +% \begin{macrocode} +\WarningFilter[nwejm]{kpfonts}{With 'easyscsl' option, don't fit together} +\WarningFilter[nwejm]{etex}{Extended allocation already in use} +\WarningFilter[nwejm]{etoc}{package tocvsec2 detected and its modification of} +\ActivateWarningFilters[nwejm] +% \end{macrocode} +% +% \item Detecting and warning about obsolete \LaTeX{} commands: +% \begin{macrocode} +\RequirePackage[l2tabu,orthodox]{nag} +% \end{macrocode} +% +% \item In case of \hologo{pdfTeX} engine, we enforce \pkg{fontenc} to be loaded +% with its \docAuxKey*{T1} option (usual for French and English documents) and +% \pkg{inputenc} to be loaded with its \docAuxKey*{utf8} option. Otherwise +% \pkg{fontspec}, convenient for both \hologo{XeLaTeX} and \hologo{LuaLaTeX}, +% is loaded, with ligatures à la \TeX{} by default enabled. +% \begin{macrocode} +\pdftex_if_engine:TF + { + \RequirePackage[T1]{fontenc} + \RequirePackage[utf8]{inputenc} + }{ + \RequirePackage{fontspec} + } +% \end{macrocode} +% +% \item Compile \TeX{} pictures stand-alone or as part of a document: +% \begin{macrocode} +%<class>\RequirePackage[group=false,subpreambles,sort]{standalone}% +% \end{macrocode} +% +% \item Formatting both header and footers (pagestyle), and sections headers: +% \begin{macrocode} +\RequirePackage[pagestyles]{titlesec}% +% \end{macrocode} +% +% \item Graphics inclusion: +% \begin{macrocode} +\RequirePackage{graphicx}% +% \end{macrocode} +% +% \item Establish input relative to a directory: +% \begin{macrocode} +%<class>\RequirePackage{import}% +% \end{macrocode} +% +% \item Put a grey textual watermark on document pages (loaded only if +% "forauthors" \nwejm{}'s option is on): +% \begin{macrocode} +%<class>\bool_if:nT { \g_@@_for_authors_bool } { +%<class> \RequirePackage{draftwatermark}[2006/06/30]% +%<class>} +% \end{macrocode} +% +% \item Graphics package-alike macros for \enquote{general} boxes: +% \begin{macrocode} +\RequirePackage{adjustbox}% +% \end{macrocode} +% +% \item A new reference scheme for \LaTeX{}, giving the total number of pages in +% the document: +% \begin{macrocode} +%<class>\RequirePackage{zref-totpages} +% \end{macrocode} +% +% \item A new reference scheme for \LaTeX{}, providing the facilities of the +% \package{xr} and \package{xr-hyper} packages: +% \begin{macrocode} +%<class>\RequirePackage{zref-xr}% +% \end{macrocode} +% +% \item A range of footnote options +% \begin{macrocode} +\RequirePackage[multiple]{footmisc}% +% \end{macrocode} +% +% \item Extension of \LaTeX{}'s color facilities: +% \begin{macrocode} +\RequirePackage[svgnames]{xcolor}% +% \end{macrocode} +% +% \item Define commands that appear not to eat spaces: +% \begin{macrocode} +\RequirePackage{xspace}% +% \end{macrocode} +% +% \item Context sensitive quotation facilities: +% \begin{macrocode} +\RequirePackage[autostyle]{csquotes}% +% \end{macrocode} +% +% \item Extended implementation of the \LaTeX{} array and +% tabular–environments: +% \begin{macrocode} +\RequirePackage{array} +% \end{macrocode} +% +% \item Publication quality tables in \LaTeX{}: +% \begin{macrocode} +\RequirePackage{booktabs} +% \end{macrocode} +% +% \item Extension to \Pkg{amsmath}: correct various bugs/defeciencies in amsmath +% and useful tools for mathematical typesetting\footnote{The \Pkg{mathtools} +% loads \pkg{amsmath}, hence it's not necessary to load the +% latter. It has to be loaded before \pkg{datatool} and \pkg{kpfonts}.}: +% \begin{macrocode} +\RequirePackage{mathtools} +% \end{macrocode} +% +% \item Extensions to theorem environments: +% \begin{macrocode} +\RequirePackage[thmmarks,amsmath]{ntheorem} +% \end{macrocode} +% +% \item Support for using RSFS fonts in maths: +% \begin{macrocode} +\RequirePackage{mathrsfs} +% \end{macrocode} +% +% \item Vector arrows: +% \begin{macrocode} +\RequirePackage{esvect} +% \end{macrocode} +% +% Load of main font to be used: +% \begin{macrocode} +%<class>\RequirePackage[easyscsl,noDcommand]{kpfonts} +%<class-article>\RequirePackage[noDcommand]{kpfonts} +% \end{macrocode} +% +% % \item Hooks to do actions on every page or on the current page: +% % \begin{macrocode} +% \RequirePackage{everypage} +% % \end{macrocode} +% +% \item Flexible and easy interface to page dimensions: +% \begin{macrocode} +\RequirePackage{geometry} +% \end{macrocode} +% +% \item Internationalisation of \LaTeXe{} packages: +% \begin{macrocode} +\RequirePackage{translations}% +% \end{macrocode} +% +% \item Display the value of a \LaTeX{} counter in a variety of formats +% \begin{macrocode} +\RequirePackage{fmtcount}% +% \end{macrocode} +% +% \item Multilingual support for Plain TeX or LaTeX: +% \begin{macrocode} +\RequirePackage{babel}% +% \end{macrocode} +% +% \item Intelligent page references: +% \begin{macrocode} +\RequirePackage{varioref} +% \end{macrocode} +% +% \item Section numbering (and table of contents control but this is canceled +% by \Package{etoc}): +% \begin{macrocode} +\RequirePackage{tocvsec2} +% \end{macrocode} +% +% \item Completely customisable TOCs: +% \begin{macrocode} +\RequirePackage{etoc}% +% \end{macrocode} +% +% \item Subliminal refinements towards typographical perfection: +% \begin{macrocode} +\RequirePackage[babel=true]{microtype}% +% \end{macrocode} +% +% \item Current date and time formatting: +% \begin{macrocode} +\RequirePackage[useregional]{datetime2}% +% \end{macrocode} +% +% \item Customization of lists: +% \begin{macrocode} +\RequirePackage[inline]{enumitem}% +% \end{macrocode} +% +% \item A couple of things involving environments: +% \begin{macrocode} +\RequirePackage{environ} +% \end{macrocode} +% +% \item Print page grid in background: +% \begin{macrocode} +%<class>\RequirePackage[foreground]{pagegrid}% +% \end{macrocode} +% +% \item Tools to load and manipulate data: +% \begin{macrocode} +%<class>\RequirePackage{datatool}% +% \end{macrocode} +% +% \item Control float placement: +% \begin{macrocode} +%<class>\RequirePackage{placeins}% +% \end{macrocode} +% +% \item Improve on \LaTeX{}'s footnote handling (useful for its ×\savenotes× and +% ×\spewnotes× commands added to theorems environment in order footnotes are +% not trapped within them). +% \begin{macrocode} +\RequirePackage{footnote}% +% \end{macrocode} +% +% \item Hypertext marks: +% \begin{macrocode} +\RequirePackage[hyperfootnotes=false,pdfencoding=unicode]{hyperref}% +\AtBeginDocument{% + \hypersetup{hidelinks,hypertexnames=false}% +}% +% \end{macrocode} +% +% \item Adjusting the anchors of captions: +% \begin{macrocode} +\RequirePackage[all]{hypcap} +% \end{macrocode} +% +% \item A new bookmark (outline) organization for \Pkg{hyperref}: +% \begin{macrocode} +\RequirePackage[numbered]{bookmark}% +% \end{macrocode} +% +% \item Create glossaries and lists of acronyms: +% \begin{macrocode} +\RequirePackage[nowarn]{glossaries}% +% \end{macrocode} +% +% \item Intelligent cross-referencing: +% \begin{macrocode} +\RequirePackage{cleveref}% +% \end{macrocode} +% +% \item Automatic equation references: +% \begin{macrocode} +\RequirePackage{autonum} +% \end{macrocode} +% +% \item Programmable bibliographies and citations (loaded with a dedicated style): +% \begin{macrocode} +\RequirePackage[backend=biber,style=nwejm]{biblatex}% +\ExecuteBibliographyOptions{defernumbers=true,dashed=false,uniquename=init,backref,safeinputenc} +% \end{macrocode} +% +% \end{enumerate} +% +% Setings of the glossaries and acronyms. +% \begin{macrocode} +\makeglossaries +% +\setglossarystyle{indexhypergroup} +\setacronymstyle{long-sc-short} +\glsdisablehyper +% \end{macrocode} +% +% \section{Counters} +% +% In this section, we define some counters for future use. +% +% \begin{macro}{\g_@@_articles_int} +% The integer "\g_@@_articles_int" will count the number of articles in order to +% provide for each of them a unique bibliographic key. +% \begin{macrocode} +\int_new:N \g_@@_articles_int +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\g_@@_counters_to_be_reset_clist} +% We create a new comma list that will gather all the counters (in particular +% the ones associated to the (numbered) theorem environments, defined either +% by the or by the user), we want to be able to easily set to zero at the end +% of each article input: +% \begin{macrocode} +\clist_new:N \g_@@_counters_to_be_reset_clist +% \end{macrocode} +% \end{macro} +% +% \section{Constants} +% +% In this section, we declared some constants for future use. +% +% \subsection{Integers} +% +% \subsubsection{Issue numbers} +% +% \begin{macro}{\c_@@_first_issue_number_int} +% \begin{macro}{\c_@@_first_issue_year_int} +% \begin{macro}{\c_@@_first_issue_month_int} +% \begin{macro}{\c_@@_interval_in_months_int} +% The first issue number, month and year, and the interval (in months) between +% two consecutive issues, are declared. +% \begin{macrocode} +\int_const:Nn \c_@@_first_issue_number_int { 1 } +\int_const:Nn \c_@@_first_issue_year_int { 2016 } +\int_const:Nn \c_@@_first_issue_month_int { 1 } +\int_const:Nn \c_@@_interval_in_months_int { 6 } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Strings and keywords} +% +% We now declare some private string constants. +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% For the backcover table of contents. +% \begin{macrocode} +\tl_const:Nn \c_@@_backcover_tableofcontents_string_tl {Volume's~Contents} +% \end{macrocode} +% For the editor in chief. +% \begin{macrocode} +\tl_const:Nn \c_@@_editorinchief_string_tl {Editor~in~Chief} +% \end{macrocode} +% For the associate editors. +% \begin{macrocode} +\tl_const:Nn \c_@@_associate_editors_string_tl {Associate~Editors} +% \end{macrocode} +% For the managing editor. +% \begin{macrocode} +\tl_const:Nn \c_@@_managing_editor_string_tl {Managing~Editor} +% \end{macrocode} +% For the field editor. +% \begin{macrocode} +\tl_const:Nn \c_@@_field_editor_string_tl {Field~Editor} +% \end{macrocode} +% For the editorial secretariat. +% \begin{macrocode} +\tl_const:Nn \c_@@_editorial_secretariat_string_tl {Secretariat} +% \end{macrocode} +% For the phone. +% \begin{macrocode} +\tl_const:Nn \c_@@_phone_string_tl {Tel.} +% \end{macrocode} +% For the \textsc{issn}. +% \begin{macrocode} +\tl_const:Nn \c_@@_issn_string_tl {\textsc{issn}} +% \end{macrocode} +% For the \textsc{isbn}. +% \begin{macrocode} +\tl_const:Nn \c_@@_isbn_string_tl {\textsc{isbn}} +% \end{macrocode} +% For "\LaTeX Class". +% \begin{macrocode} +\tl_const:Nn \c_@@_latexclass_string_tl {\LaTeX{}~class} +% \end{macrocode} +% For the computer engineering. +% \begin{macrocode} +\tl_const:Nn \c_@@_computer_engineering_string_tl {Computer~engineering~issues} +% \end{macrocode} +% For the printer. +% \begin{macrocode} +\tl_const:Nn \c_@@_printer_string_tl {Printing~service} +% \end{macrocode} +% For configuration file. +% \begin{macrocode} +\tl_const:Nn \c_@@_configuration_file_string_tl {nwejm.cfg} +% \end{macrocode} +% For the front cover header texts. +% \begin{macrocode} +\tl_const:Nn \c_@@_frontcover_header_left_string_tl { + \int_use:N\g_@@_issue_year_int% +} +\tl_const:Nn \c_@@_frontcover_header_right_string_tl { + Number\space\int_use:N\g_@@_issue_number_int% +} +% \end{macrocode} +% For the name of the directory containing the 3rd and 4th cover pages. +% \begin{macrocode} +\tl_const:Nn \c_@@_backmatter_directory_string_tl {backmatter} +% \end{macrocode} +% For the name of the file containing the text of the current issue's back cover. +% \begin{macrocode} +\tl_const:Nn \c_@@_issue_backcover_text_file_string_tl {backcover} +\tl_const:Nn \c_@@_backcover_page_file_string_tl {\c_@@_backmatter_directory_string_tl/\c_@@_issue_backcover_text_file_string_tl} +% \end{macrocode} +% For authors' instructions file. +% \begin{macrocode} +\tl_const:Nn \c_@@_authors_instructions_file_extension_tl {ain} +\tl_const:Nn \c_@@_authors_instructions_file_tl {\c_job_name_tl.\c_@@_authors_instructions_file_extension_tl} +% \end{macrocode} +% For the authors instructions. +% \begin{macrocode} +\tl_const:Nn \c_@@_authors_instructions_string_tl {Instructions~to~authors} +% \end{macrocode} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% For the dates keywords. +% \begin{macrocode} +\tl_const:Nn \c_@@_date_received_tl {received} +\tl_const:Nn \c_@@_date_accepted_tl {accepted} +\tl_const:Nn \c_@@_date_online_tl {online} +% \end{macrocode} +% For the dates separators. +% \begin{macrocode} +\tl_const:Nn \c_@@_dates_separator_tl {/} +% \end{macrocode} +% +% For the name and path of the images directory. +% \begin{macrocode} +\tl_const:Nn \c_@@_images_directory_string_tl {images} +\tl_const:Nn \c_@@_issue_images_path_string_tl {\c_@@_images_directory_string_tl} +% \end{macrocode} +% For the preliminary versions sent to authors for checking. +% \begin{macrocode} +\tl_const:Nn \c_@@_preliminary_version_string_tl {% + This~document~is~a~draft~that~lets~you~check~the~integrity~of~original~text~and + bibliography~of~your~article~to~appear~in~the~next~issue~of~the + \c_@@_journal_title_string_tl.~The~current~layout~may~not~be~the~final~one.% +} +% \end{macrocode} +% For the \textsc{msc}. +% \begin{macrocode} +\tl_const:Nn \c_@@_msc_string_tl {\textsc{msc}} +% \end{macrocode} +% +% For the colon, possibily preceded by the relevant space (in French). +% \begin{macrocode} +\tl_const:Nn \c_@@_colon_tl { + \ifcurrentbaselanguage{french}{\FBcolonspace}{}: + % \ifundef{\Fcolonspace}{\FBcolonspace}{\Fcolonspace}: +} +% \end{macrocode} +% For the asides opening and eventuelly closing punctuation marks. +% \begin{macrocode} +\tl_const:Nn \c_@@_aside_string_tl {--} +% \end{macrocode} +% For the draft watermark. +% \begin{macrocode} +\tl_const:Nn \c_@@_draftwatermark_string_tl {draft} +% \end{macrocode} +% +% For the name of the file containing the bibliography of the current issue. +% \begin{macrocode} +\tl_const:Nn \c_@@_issue_bib_file_suffix_string_tl {@@} +\tl_const:Nn \c_@@_issue_bib_file_string_tl {\c_job_name_tl\c_@@_issue_bib_file_suffix_string_tl.bib} +\tl_const:Nn \c_@@_issue_bib_path_string_tl {\c_@@_issue_bib_file_string_tl} +% \end{macrocode} +% +% For the prefix of the bibliographic key of each article. +% \begin{macrocode} +\tl_const:Nn \c_@@_issue_bib_key_tl {\int_use:N \g_@@_issue_number_int} +% \end{macrocode} +% +% For the journal's short and long titles. +% \begin{macrocode} +\tl_const:Nn \c_@@_journal_short_title_string_tl {\textsc{nwejm}} +\tl_const:Nn \c_@@_journal_title_string_tl { + North-Western~European~Journal~of~Mathematics% +} +\tl_const:Nn \c_@@_journal_front_cover_title_string_tl { + North-Western~European\\Journal\\of\\Mathematics% +} +% \end{macrocode} +% +% For the names of the underlying classes. +% \begin{macrocode} +\tl_const:Nn \c_@@_nwejm_class_name_tl {nwejm} +\tl_const:Nn \c_@@_nwejmarticle_class_name_tl {nwejmart} +% \end{macrocode} +% +% \subsection{Booleans} +% +% We now declare the booleans that will be used. +% +% \begin{macro}{\g_@@_frontcover_bool} +% \begin{macro}{\g_@@_inside_frontcover_bool} +% \begin{macro}{\g_@@_inside_backcover_bool} +% \begin{macro}{\g_@@_frontmatter_bool} +% \begin{macro}{\g_@@_rubric_bool} +% \begin{macro}{\g_@@_interview_rubric_bool} +% \begin{macro}{\g_@@_mainmatter_bool} +% \begin{macro}{\g_@@_backmatter_bool} +% \begin{macro}{\g_@@_backcover_bool} +% The following booleans will be used to test wheter we are respectively in the +% front cover, in the inside front cover, in the frontmatter, in (first page +% of) a rubric, in the mainmatter. +% \begin{macrocode} +\bool_new:N \g_@@_frontcover_bool +\bool_new:N \g_@@_inside_frontcover_bool +\bool_new:N \g_@@_inside_backcover_bool +\bool_new:N \g_@@_frontmatter_bool +\bool_new:N \g_@@_mainmatter_bool +\bool_new:N \g_@@_backmatter_bool +\bool_new:N \g_@@_backcover_bool +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +\bool_new:N \g_@@_date_specified_bool +% \end{macrocode} +% +% \subsection{Dimensions} +% +% \subsubsection{Geometry of the page} +% +% \begin{macro}{\c_@@_offset_dim} +% \begin{macro}{\c_@@_paperheight_dim} +% \begin{macro}{\c_@@_paperwidth_dim} +% \begin{macro}{\c_@@_topmargin_dim} +% \begin{macro}{\c_@@_headsep_dim} +% \begin{macro}{\c_@@_botmargin_dim} +% \begin{macro}{\c_@@_innermargin_dim} +% \begin{macro}{\c_@@_outermargin_dim} +% \begin{macro}{\c_@@_footskip_dim} +% \begin{macro}{\c_@@_header_line_width_dim} +% \begin{macro}{\c_@@_header_line_yshift_dim} +% We first declare the default page layout constant dimensions. +% \begin{macrocode} +\dim_const:Nn \c_@@_layoutheight_dim { 240mm} +\dim_const:Nn \c_@@_layoutwidth_dim { 170mm} +% \end{macrocode} +% +% We define a \enquote{printer} layout offset dimension +% "\c_@@_printer_layoutoffset_dim", fixed by the printer to be \SI{5}{\mm}. +% \begin{macrocode} +\dim_const:Nn \c_@@_printer_layoutoffset_dim { 5mm} +% \end{macrocode} +% +% We define a \enquote{potential} layout offset dimension which is non-zero (and +% the equal to \enquote{printer} layout offset dimension) iff the output is +% prepared for the printer ("\g_@@_for_printer_bool" flag equals true). +% \begin{macrocode} +\bool_if:NTF {\g_@@_for_printer_bool} { + \dim_const:Nn \c_@@_potential_layoutoffset_dim { \c_@@_printer_layoutoffset_dim} +}{ + \dim_const:Nn \c_@@_potential_layoutoffset_dim {\c_zero_dim} +} +% \end{macrocode} +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% We define a \enquote{printer} binding dimension +% "\c_@@_printer_bindingoffset_dim", fixed by the printer to have different +% values depending on some total pages thresholds. If the binding dimension is +% denoted by $b$ (and expressed in millimeters) and the total page number of the +% document\footnote{Except cover pages, that is the \enquote{real} total page +% number minus $4$.} is denoted by $N$, the thresholds are as follows: +% \begin{equation}\label{binding} +% b= +% \begin{cases} +% 0 & \text{ si } N < 68 \\ +% 3 & \text{ si } 68\leq N<80 \\ +% 3.5 & \text{ si } 80\leq N<88 \\ +% 3.9 & \text{ si } 88\leq N<96 \\ +% 4.1 & \text{ si } 96\leq N<104 \\ +% 4.5 & \text{ si } 104\leq N<120 \\ +% 5 & \text{ si } N\geq 120 +% \end{cases} +% \end{equation} +% +% We define the thresholds: +% \begin{macrocode} +\int_const:Nn \c_@@_thresold_a_int {68} +\int_const:Nn \c_@@_thresold_b_int {80} +\int_const:Nn \c_@@_thresold_c_int {88} +\int_const:Nn \c_@@_thresold_d_int {96} +\int_const:Nn \c_@@_thresold_e_int {104} +\int_const:Nn \c_@@_thresold_f_int {120} +% \end{macrocode} +% and the corresponding binding dimensions: +% \begin{macrocode} +\dim_const:Nn \c_@@_bindingoffset_a_dim {3mm} +\dim_const:Nn \c_@@_bindingoffset_b_dim {3.5mm} +\dim_const:Nn \c_@@_bindingoffset_c_dim {3.9mm} +\dim_const:Nn \c_@@_bindingoffset_d_dim {4.1mm} +\dim_const:Nn \c_@@_bindingoffset_e_dim {4.5mm} +\dim_const:Nn \c_@@_bindingoffset_f_dim {5mm} +% \end{macrocode} +% +% In order to know the total pages number of the document (store in +% "\g_@@_total_page_number_int"), we need first to specify the +% \enquote{external} document whom \File{.aux} will be read. +% \begin{macrocode} +\zexternaldocument[self]{\jobname}% +\int_new:N \g_@@_total_pages_number_int% +\int_new:N \g_@@_total_inside_pages_number_int% +% \end{macrocode} +% +% We extract the total pages number thanks to "\zref@extractdefault" from +% \Package{zref-totpages}. +% \begin{macrocode} +\int_gset:Nn \g_@@_total_pages_number_int { \zref@extractdefault{selfLastPage}{abspage}{0} } +\int_gset:Nn \g_@@_total_inside_pages_number_int { \g_@@_total_pages_number_int - 4 } +% \end{macrocode} +% +% The \enquote{printer} binding dimension is now store in +% "\c_@@_printer_bindingoffset_dim" following \vref{binding}. +% \begin{macrocode} +\int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_a_int} +{ + \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_zero_dim } +}{ + \int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_b_int} + { + \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_a_dim } + }{ + \int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_c_int} + { + \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_b_dim } + }{ + \int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_d_int} + { + \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_c_dim } + }{ + \int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_e_int} + { + \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_d_dim } + }{ + \int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_f_int} + { + \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_e_dim } + }{ + \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_f_dim } + } + } + } + } + } +} +% \end{macrocode} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% The binding offset is applied iff the front cover is required ("frontcover" +% option), which implies the output is prepared for the printer, with non-zero +% offset ("\g_@@_for_printer_bool" flag equals true). +% \begin{macrocode} +\bool_if:NTF {\g_@@_cover_bool} { + \dim_const:Nn \c_@@_potential_bindingoffset_dim { \c_@@_printer_bindingoffset_dim } +}{ + \dim_const:Nn \c_@@_potential_bindingoffset_dim {\c_zero_dim} +} +% \end{macrocode} +% +% The paper height is rather simple: it is always the layout height dimension +% plus 2 times (top and bottom) the layout offset dimension (which turns to be +% non-zero iff the output is prepared for the printer). +% \begin{macrocode} +\dim_const:Nn \c_@@_paperheight_dim { \c_@@_layoutheight_dim+2\c_@@_potential_layoutoffset_dim} +% \end{macrocode} +% +% The paper width is more complicated: it is the layout width dimension plus: +% \begin{itemize} +% \item the \enquote{potential} binding offset (which turns to be non-zero iff +% only the cover page is output), +% \item the layout offset dimension (which turns to be non-zero iff the output +% is prepared for the printer): +% \begin{description} +% \item[if for the cover pages] just 1 time, +% \item[if for the other pages] 2 times. +% \end{description} +% \end{itemize} +% \begin{macrocode} +\bool_if:NTF {\g_@@_cover_bool} { + \dim_const:Nn \c_@@_paperwidth_dim { + \c_@@_layoutwidth_dim + + + \c_@@_potential_layoutoffset_dim + +\c_@@_potential_bindingoffset_dim + } +}{ + \dim_const:Nn \c_@@_paperwidth_dim { + \c_@@_layoutwidth_dim + + + 2 + \c_@@_potential_layoutoffset_dim + +\c_@@_potential_bindingoffset_dim + } +} +% \end{macrocode} +% +% \begin{macrocode} +\dim_const:Nn \c_@@_topmargin_dim { 20mm} +\dim_const:Nn \c_@@_topmargin_frontcover_dim { + \c_@@_topmargin_dim + % + 30mm +} +\dim_const:Nn \c_@@_topmargin_inside_cover_dim { + \c_@@_topmargin_dim + % +10mm +} +\dim_const:Nn \c_@@_topmargin_front_matter_dim { + \c_@@_topmargin_inside_cover_dim +} +% \dim_const:Nn \c_@@_topmargin_backcover_dim { +% \c_@@_topmargin_frontcover_dim +% } +\dim_const:Nn \c_@@_headsep_dim { 9.5mm} +\dim_const:Nn \c_@@_headsep_frontcover_dim { + \c_@@_headsep_dim + % +31mm + % -\c_@@_potential_layoutoffset_dim +} +\dim_const:Nn \c_@@_headsep_inside_frontcover_dim { + \c_@@_headsep_dim + +7mm +} +\dim_const:Nn \c_@@_headsep_front_matter_dim { + \c_@@_headsep_inside_frontcover_dim +} +\dim_const:Nn \c_@@_headheight_dim { 5mm } +\dim_const:Nn \c_@@_botmargin_dim { 30mm} +\dim_const:Nn \c_@@_footskip_dim { 10mm} +\dim_const:Nn \c_@@_margin_frontcover_dim { 15mm } +\dim_const:Nn \c_@@_bottom_frontcover_dim { 15mm } +\dim_const:Nn \c_@@_left_minipage_frontcover_dim { .4\linewidth } +\dim_const:Nn \c_@@_right_minipage_frontcover_dim { .6\linewidth } +% \end{macrocode} +% +% \begin{macrocode} +\dim_const:Nn \c_@@_innermargin_dim { 23mm } +\dim_const:Nn \c_@@_outermargin_dim { 30mm } +\dim_const:Nn \c_@@_inside_cover_box_width_dim { 150mm }% +\dim_const:Nn \c_@@_innermargin_inside_cover_dim { + (\c_@@_layoutwidth_dim - \c_@@_inside_cover_box_width_dim)/2 + - \c_@@_potential_bindingoffset_dim + % + \c_@@_adjustmargin_dim +} +\dim_const:Nn \c_@@_outermargin_inside_cover_dim { + (\c_@@_layoutwidth_dim - \c_@@_inside_cover_box_width_dim)/2 + % - \c_@@_adjustmargin_dim +} +\dim_const:Nn \c_@@_innermargin_backcover_dim { 10mm } +\dim_const:Nn \c_@@_outermargin_backcover_dim { \c_@@_innermargin_backcover_dim } +\dim_const:Nn \c_@@_topmargin_backcover_dim { \c_@@_innermargin_backcover_dim } +\dim_const:Nn \c_@@_bottommargin_backcover_dim { \c_@@_innermargin_backcover_dim } +\dim_const:Nn \c_@@_front_matter_extra_innermargin_dim { \c_zero_dim } +\dim_const:Nn \c_@@_front_matter_extra_outermargin_dim { \c_zero_dim } +\dim_const:Nn \c_@@_inside_cover_offset_dim { \c_zero_dim }% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% We set the default geometry of the page. +% \begin{macrocode} +\geometry{% + papersize={\c_@@_paperwidth_dim,\c_@@_paperheight_dim} +} +% \end{macrocode} +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% We create a constant token list that contains the geometry of the front cover. +% \begin{macrocode} +\bool_if:NTF {\g_@@_cover_bool} { + \dim_show:N \c_@@_topmargin_frontcover_dim + \dim_show:N \c_@@_headsep_frontcover_dim + \dim_show:N \c_@@_headheight_dim + \tl_const:Nn \c_@@_frontcover_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutvoffset=\c_@@_potential_layoutoffset_dim + ,bindingoffset=\c_@@_potential_bindingoffset_dim + ,top=\c_@@_topmargin_frontcover_dim + ,top=\c_@@_topmargin_frontcover_dim + ,headsep=\c_@@_headsep_frontcover_dim + ,headheight=\c_@@_headheight_dim + ,bottom=\c_@@_bottom_frontcover_dim + ,footskip=\c_@@_footskip_dim + ,outer=\c_@@_margin_frontcover_dim + ,inner=\c_@@_potential_layoutoffset_dim + ,nomarginpar% + }% +}{ + \tl_const:Nn \c_@@_frontcover_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutoffset=\c_@@_potential_layoutoffset_dim + ,bindingoffset=\c_@@_potential_bindingoffset_dim + ,top=\c_@@_topmargin_frontcover_dim + ,headsep=\c_@@_headsep_frontcover_dim + ,headheight=\c_@@_headheight_dim + ,bottom=\c_@@_bottom_frontcover_dim + ,footskip=\c_@@_footskip_dim + ,hmargin=\c_@@_margin_frontcover_dim + ,nomarginpar% + }% +} +% \end{macrocode} +% +% We create a constant token list that contains the geometry of the inside front +% and back covers. +% \begin{macrocode} +\bool_if:NTF {\g_@@_cover_bool} { + \tl_const:Nn \c_@@_inside_cover_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutvoffset=\c_@@_potential_layoutoffset_dim + ,bindingoffset=\c_@@_potential_bindingoffset_dim + ,top=\c_@@_topmargin_inside_cover_dim + ,headheight=\c_@@_headheight_dim + ,headsep=\c_@@_headsep_inside_frontcover_dim + ,bottom=\c_@@_botmargin_dim + ,footskip=\c_@@_footskip_dim + ,inner=\c_@@_innermargin_inside_cover_dim-\c_@@_potential_layoutoffset_dim + ,outer=\c_@@_outermargin_inside_cover_dim+\c_@@_potential_layoutoffset_dim + ,nomarginpar% + }% +}{ + \tl_const:Nn \c_@@_inside_cover_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutoffset=\c_@@_potential_layoutoffset_dim + ,bindingoffset=\c_@@_potential_bindingoffset_dim + ,top=\c_@@_topmargin_inside_cover_dim + ,headheight=\c_@@_headheight_dim + ,headsep=\c_@@_headsep_inside_frontcover_dim + ,bottom=\c_@@_botmargin_dim + ,footskip=\c_@@_footskip_dim + % ,inner=1cm + % ,outer=1cm + ,inner=\c_@@_innermargin_inside_cover_dim + ,outer=\c_@@_outermargin_inside_cover_dim + ,nomarginpar% + }% +} +% \end{macrocode} +% +% We create a constant token list that contains the geometry of the front matter. +% \begin{macrocode} +\tl_const:Nn \c_@@_front_matter_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutoffset=\c_@@_potential_layoutoffset_dim + % ,bindingoffset=\c_@@_potential_bindingoffset_dim + ,top=\c_@@_topmargin_front_matter_dim% + ,headheight=\c_@@_headheight_dim + ,headsep=\c_@@_headsep_front_matter_dim + ,bottom=\c_@@_botmargin_dim + ,footskip=\c_@@_footskip_dim% + ,inner=\c_@@_innermargin_dim+\c_@@_front_matter_extra_innermargin_dim% + ,outer=\c_@@_outermargin_dim+\c_@@_front_matter_extra_outermargin_dim% + ,nomarginpar% +}% +% \end{macrocode} +% +% We create a constant token list that contains the geometry of the back cover. +% \begin{macrocode} +\tl_const:Nn \c_@@_backcover_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutoffset=\c_@@_potential_layoutoffset_dim + % ,bindingoffset=\c_@@_potential_bindingoffset_dim + ,top=\c_@@_topmargin_backcover_dim% + % ,top=\c_@@_topmargin_dim-15mm% + % ,headheight=\c_@@_headheight_dim + % ,headsep=\c_@@_headsep_dim-18mm + ,bottom=\c_@@_bottommargin_backcover_dim + % ,footskip=\c_@@_footskip_dim + ,inner=\c_@@_innermargin_backcover_dim + ,outer=\c_@@_outermargin_backcover_dim +} +% \end{macrocode} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% We create a constant token list that contains the geometry of the main pages. +% \begin{macrocode} +\tl_const:Nn \c_@@_main_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutoffset=\c_@@_potential_layoutoffset_dim + ,textwidth=\c_@@_layoutwidth_dim*3/4 + ,textheight=\c_@@_layoutheight_dim*3/4 + % ,marginratio={4\string :6,5\string :7} + ,inner=\c_@@_innermargin_dim + ,headheight=\c_@@_headheight_dim + ,footskip=\c_@@_footskip_dim + % + % ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + % ,layoutoffset=\c_@@_potential_layoutoffset_dim + % % ,bindingoffset=\c_@@_potential_bindingoffset_dim + % ,top=\c_@@_topmargin_dim% + % ,headheight=\c_@@_headheight_dim + % ,headsep=\c_@@_headsep_dim + % ,bottom=\c_@@_botmargin_dim + % ,footskip=\c_@@_footskip_dim + % ,inner=\c_@@_innermargin_dim + % ,outer=\c_@@_outermargin_dim +}% +% \end{macrocode} +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \section{Miscellaneous patches} +% +% If we don't ask the cover page (only), the inside back cover and back cover +% pages are automatically included at the end of the document, the former +% containing some condensed instructions to authors. But, this cannot be done +% within "\AtEndDocument" and "\preto\@enddocumenthook" should be used instead +% (see \url{http://tex.stackexchange.com/q/240318/18401}). +% \begin{macrocode} +\bool_if:NF {\g_@@_coverpage_bool} { + \bool_if:NF {\g_@@_inside_pages_bool} { + \preto\@enddocumenthook{ +% \end{macrocode} +% +% The inside front cover and front cover pages are numbered \enquote{i} and +% \enquote{ii} hence the inside back cover and back cover pages are numbered +% \enquote{iii} and \enquote{iv}. +% \begin{macrocode} + \cleardoublepage + \pagenumbering{roman}% + \setcounter{page}{3} +% \end{macrocode} +% +% On the backcover, we want the table of contents (displayed as a chapter, +% therefore by default starting on a right page) to be displayed on a left page. +% \begin{macrocode} + \bool_gset_true:N \g_@@_backmatter_bool + \g_@@_display_inside_backcover_tl + \newpage + \@openrightfalse + \g_@@_display_backcover_tl + }% + }% +}% +% \end{macrocode} +% +% % If we don't ask the cover page (only), the document total page numbers should +% % be a multiple of four and we add the necessary and sufficient number of blank +% % pages if it isn't the case (code borrowed from +% % \url{http://tex.stackexchange.com/a/83498/18401}). +% % \begin{macrocode} +% \bool_if:NF {\g_@@_coverpage_bool} { +% \bool_if:nF { \g_@@_for_authors_bool } { +% \bool_if:nT { \g_@@_inside_pages_bool } { +% \AtEndDocument{% +% \prg_replicate:nn +% { \int_mod:nn { 4 - \int_mod:nn { \getpagerefnumber{LastPage} } { 4 } } { 4 } } +% { \thispagestyle{@@_blank_pages_ps}\null\clearpage } +% } +% } +% } +% } +% % \end{macrocode} +% +% \section{Displaying the table of contents} +% +% \begin{macrocode} +\bool_new:N \g_@@_tableofcontents_already_used_bool +\renewcommand\etocbeforetitlehook +{% + \DeclareNameAlias{labelname}{giveninits-last} + \bool_if:NF {\g_@@_for_authors_bool}{ + \bool_if:NF {\g_@@_tableofcontents_already_used_bool}{ + \g_@@_frontmatter_switch_tl + \phantomsection + \hypertarget{@@_toc}{} + \bookmark[dest=@@_toc,level=chapter]{\contentsname} + } + } +}% +\renewcommand\etocaftertochook +{% + \bool_if:NF {\g_@@_for_authors_bool}{ + \bool_if:NF {\g_@@_tableofcontents_already_used_bool}{ + \normalsize% + \clearpage% + \bool_gset_false:N \g_@@_frontmatter_bool% + \g_@@_mainmatter_switch_tl + } + } + \bool_gset_true:N \g_@@_tableofcontents_already_used_bool +}% +% \end{macrocode} +% +% \section{Page styles} +% +% \subsection{Front cover page style} +% +% \begin{macrocode} + % \box_new:N \l_@@_journal_frontcover_logo_box + % \box_new:N \l_@@_journal_volume_box + % \AfterEndPreamble{% + % \hbox_set:Nn \l_@@_journal_volume_box + % { + % \color{Navy} + % \LARGE + % \bfseries + % \sffamily + % \adjustbox{stack=l}{% + % \c_@@_frontcover_header_left_string_tl + % \\\c_@@_frontcover_header_right_string_tl + % } + % } + % \hbox_set:Nn \l_@@_journal_frontcover_logo_box + % { + % \includegraphics[width=3cm]{ nwejm-logo } + % } + % \hbox_set_to_wd:Nnn \l_@@_journal_frontcover_logo_box { 1cm } + % { + % \box_move_down:nn + % { + % \box_ht:N \l_@@_journal_frontcover_logo_box / 2 + % - + % \box_ht:N \l_@@_journal_volume_box / 2 + % } + % { + % \box_use:N \l_@@_journal_frontcover_logo_box + % } + % } +% \box_set_ht:Nn \l_@@_journal_frontcover_logo_box { \c_zero_dim } +% \box_set_dp:Nn \l_@@_journal_frontcover_logo_box { \c_zero_dim } +% } +% +\newpagestyle{@@_frontcover_ps}[]{% + \sethead + { + \color{Navy} + \Large + \bfseries + \sffamily + \adjustbox{stack=l}{% + \c_@@_frontcover_header_left_string_tl + \\\c_@@_frontcover_header_right_string_tl + } + }% + {}% + {% + % \l_@@_journal_frontcover_logo_box + {\includegraphics[width=1cm]{ nwejm-logo }} + }% + % + \setfoot% + {}% + {}% + {}% +}% +% \end{macrocode} +% +% \subsection{Inside front cover page style} +% +% \begin{macrocode} +\newpagestyle{@@_inside_frontcover_ps}[]{% + \sethead% + {}% + {}% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +% \end{macrocode} +% +% \subsection{Front matter page style} +% +% \begin{macrocode} +\newpagestyle{@@_frontmatter_ps}[]{% + \sethead% + {}% + {}% + {}% + % + \setfoot% + {}% + {\thepage}% + {}% +}% +% \end{macrocode} +% +% \subsection{For blank pages added in order to ensure document total page +% numbers is a multiple of four} +% +% \begin{macrocode} +\newpagestyle{@@_blank_pages_ps}[]{% + \sethead + {}% + {}% + {}% + % + \setfoot% + {}% + {\thepage}% + {}% +}% +% \end{macrocode} +% +% \subsection{Inside back cover page style} +% +% \begin{macrocode} +\newpagestyle{@@_inside_backcover_ps}[]{% + \sethead% + {}% + {}% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +% \end{macrocode} +% +% \subsection{Back cover page style} +% +% \begin{macrocode} +\newpagestyle{@@_backcover_ps}[]{% + \sethead + {}% + {}% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +% \end{macrocode} +% +% We define crop marks. +% \begin{macrocode} +% \bool_if:NT {\g_@@_for_printer_bool} {% +% \AddEverypageHook{% +% \tikz[remember~picture,overlay] {% +% \draw ([yshift=\c_@@_potential_layoutoffset_dim]current~page.south~west) -- +(0.25,0); +% \draw ([xshift=\c_@@_potential_layoutoffset_dim]current~page.south~west) -- +(0,0.25); +% %% lower right +% \draw ([yshift=\c_@@_potential_layoutoffset_dim]current~page.south~east) -- +(-0.25,0); +% \draw ([xshift=-\c_@@_potential_layoutoffset_dim-\c_@@_potential_bindingoffset_dim]current~page.south~east) -- +(0,0.25); +% %% upper left +% \draw ([yshift=-\c_@@_potential_layoutoffset_dim]current~page.north~west) -- +(0.25,0); +% \draw ([xshift=\c_@@_potential_layoutoffset_dim]current~page.north~west) -- +(0,-0.25); +% %% upper right +% \draw ([yshift=-\c_@@_potential_layoutoffset_dim]current~page.north~east) -- +(-0.25,0); +% \draw ([xshift=-\c_@@_potential_layoutoffset_dim-\c_@@_potential_bindingoffset_dim]current~page.north~east) -- +(0,-0.25); +% }% +% }% +% } +% \end{macrocode} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \subsection{Main matter page style} +% +% \begin{macrocode} +\tl_new:N \l_@@_section_header_tl +\tl_set:Nn \l_@@_section_header_tl { + \ifthesection{% + \thesection.~% + }{% + } + \sectiontitle +}% +\newpagestyle{@@_mainmatter_ps}[]{% + \sethead% + [ + \tl_if_exist:NT {\g_@@_short_title_tl} + { + \tl_if_empty:NF \g_@@_short_title_tl {% + \slshape\g_@@_short_title_tl + } + } + ]% + [% + ]% + [ + \DeclareNameAlias{labelname}{giveninits-last} + \AtNextCitekey{\defcounter{maxnames}{2}}\citeauthor{\g_@@_article_bib_key_tl} + ]% + { + \slshape\l_@@_section_header_tl + }% + {% + }% + { + }% + % + \setfoot% + {}% + {\thepage}% + {}% +} +% \end{macrocode} +% +% \subsection{Article's title page style} +% +% \begin{macrocode} + \box_new:N \l_@@_journal_logo_box + \box_new:N \l_@@_journal_name_box + \AfterEndPreamble{% + \hbox_set:Nn \l_@@_journal_name_box + { + \bfseries% + \adjustbox{stack=l}{% + \c_@@_journal_title_string_tl +%<class> \\\tl_mixed_case:n{\GetTranslation{volume-abbreviated}}\space\int_use:N \g_@@_issue_number_int +%<class-article> \mbox{} +} +} +\hbox_set:Nn \l_@@_journal_logo_box +{ + \includegraphics[width=1cm]{ nwejm-logo-NB } +} +\hbox_set_to_wd:Nnn \l_@@_journal_logo_box { 1cm } +{ + \box_move_down:nn + { + \box_ht:N \l_@@_journal_logo_box / 2 + - + \box_ht:N \l_@@_journal_name_box / 2 + } + { + \box_use:N \l_@@_journal_logo_box + } +} +\box_set_ht:Nn \l_@@_journal_logo_box { \c_zero_dim } +\box_set_dp:Nn \l_@@_journal_logo_box { \c_zero_dim } +} +% +\newpagestyle{@@_article_title_ps}[]{% + % \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + { + \box_use:N \l_@@_journal_name_box + }% + {% + }% + { + \box_use:N \l_@@_journal_logo_box + }% + % + \setfoot% + {}% + {\thepage}% + {}% +} +% \end{macrocode} +% +% Patch needed in order entries of the framed TOC on back cover don't overlap +% the page numbers. +% \begin{macrocode} +\def\@pnumwidth{\@tocrmarg} +% \end{macrocode} +% +% \section{First pages} +% +% At begin of the document, we automatically : +% \begin{itemize} +% \item set the graphic path, +% \item set the page grid if the corresponding option has been passed, +% \item display of the front cover and the inside front cover. +% \end{itemize} +% +% \begin{macrocode} +\AtBeginDocument{% + \graphicspath{{\c_@@_issue_images_path_string_tl//}{../\c_@@_issue_images_path_string_tl//}} + % \glsdisablehyper +} +% \end{macrocode} +% +% At the begin of document, we automatically switch to +% \begin{itemize} +% \item frontmatter\footnote{Mainly: page numbers in roman.} in the \enquote{issue} +% version of the class (the first pages are for the table of contents which +% was decided to be in frontmatter), +% \item mainmatter\footnote{Page numbers in arabic, right page style, right +% geometry of the page.} in the \enquote{article} version of the class. +% \end{itemize} +% \begin{macrocode} +%<class-article> \AtBeginDocument{\g_@@_mainmatter_switch_tl} +% \end{macrocode} +% +% \section{Options} +% +% In this section, options used by some of the document commands defined by the +% class are treated. +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \subsection{Journal options} +% +% \begin{macro}{\l_@@_journal_publisher_tl} +% \begin{macro}{\l_@@_journal_address_tl} +% \begin{macro}{\l_@@_journal_phone_tl} +% \begin{macro}{\l_@@_journal_email_tl} +% \begin{macro}{\l_@@_journal_url_tl} +% \begin{macro}{\l_@@_journal_issn_tl} +% \begin{macro}{\l_@@_journal_isbn_tl} +% Some variables which are involved in options are created. +% \begin{macrocode} +\tl_new:N \l_@@_journal_publisher_tl +\tl_new:N \l_@@_journal_address_tl +\tl_new:N \l_@@_journal_phone_tl +\tl_new:N \l_@@_journal_email_tl +\tl_new:N \l_@@_journal_url_tl +\tl_new:N \l_@@_journal_issn_tl +\tl_new:N \l_@@_journal_isbn_tl +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{publisher} +% \begin{macro}{address} +% \begin{macro}{phone} +% \begin{macro}{email} +% \begin{macro}{url} +% \begin{macro}{issn} +% \begin{macro}{isbn} +% The keys options are created. +% \begin{macrocode} +\keys_define:nn { nwejm/journalsetup } +{ + publisher .tl_set:N = \l_@@_journal_publisher_tl, + address .tl_set:N = \l_@@_journal_address_tl, + phone .tl_set:N = \l_@@_journal_phone_tl, + email .tl_set:N = \l_@@_journal_email_tl, + url .tl_set:N = \l_@@_journal_url_tl, + issn .tl_set:N = \l_@@_journal_issn_tl, + isbn .tl_set:N = \l_@@_journal_isbn_tl, +% \end{macrocode} +% +% All these options, when used, must receive a value. +% \begin{macrocode} + publisher .value_required:, + address .value_required:, + phone .value_required:, + email .value_required:, + url .value_required:, + issn .value_required:, + isbn .value_required:, +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \subsection{Issues options} +% +% \begin{macro}{\g_@@_issue_number_int} +% \begin{macro}{\g_@@_issue_month_int} +% \begin{macro}{\g_@@_issue_year_int} +% Some variables which are involved in options are created. +% \begin{macrocode} +\int_new:N \g_@@_issue_number_int +\int_new:N \g_@@_issue_month_int +\int_new:N \g_@@_issue_year_int +\tl_new:N \g_@@_frontcover_image_options_tl +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{number} +% \begin{macro}{volume} +% The keys options are created. +% \begin{macrocode} +\keys_define:nn { nwejm/issuesetup } +{ + number .int_gset:N = \g_@@_issue_number_int, + volume .int_gset:N = \g_@@_issue_volume_int, +% \end{macrocode} +% +% All these options, when used, must receive a value. +% \begin{macrocode} + volume .value_required:, +% \end{macrocode} +% +% If "number" option is not used, its initial value is set to $0$. +% number. +% \begin{macrocode} + volume .initial:n = 0, +} +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% +% \subsection{Dates options} +% +% \begin{macro}{received} +% \begin{macro}{accepted} +% \begin{macro}{online} +% Some keys options for article's dates are created: +% \begin{macrocode} +\keys_define:nn { nwejm/dates } +{ + received .code:n = { + \tl_gset:Nn \g_@@_reception_date_tl {#1} + \bool_gset_true:N \g_@@_date_specified_bool + }, + accepted .code:n = { + \tl_gset:Nn \g_@@_acception_date_tl {#1} + \bool_gset_true:N \g_@@_date_specified_bool + }, + online .code:n = { + \tl_gset:Nn \g_@@_online_date_tl {#1} + \bool_gset_true:N \g_@@_date_specified_bool + }, +% \end{macrocode} +% +% The following options, when used, must receive a value. +% \begin{macrocode} + received .value_required:, + accepted .value_required:, + online .value_required:, +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Authors options} +% +% \begin{macrocode} +\quark_new:N \q_@@ +\int_new:N \l_author_int +\prop_new:N \g_authors_prop +\prop_new:N \l_affiliations_tagged_prop +\cs_generate_variant:Nn \prop_put_if_new:Nnn { NVn } +\cs_generate_variant:Nn \prop_gput_if_new:Nnn { Nxn } +\cs_generate_variant:Nn \prop_put_if_new:Nnn { NnV } +% \end{macrocode} +% +% Currently, \Package{expl3} doesn't provide any command that counts the number +% of items of property lists. It should be implemented soonish and, meanwhile, +% Bruno Le Floch provided the following macros (see +% \url{https://github.com/latex3/latex3/issues/293}). +% \begin{macrocode} +\cs_new:Npn \__@@_prop_count:nn #1#2 { + 1 } +\cs_new:Npn \@@_prop_count:N #1 +{ \int_eval:n { 0 \prop_map_function:NN #1 \__@@_prop_count:nn } } +% \end{macrocode} +% +% \begin{macro}{affiliation} +% \begin{macro}{affiliationtagged} +% The keys options are created. +% \begin{macrocode} +\NewDocumentCommand \@@_author_affiliation:ww { o u\q_@@ } +{ + \stepcounter{footnote} + \prop_put_if_new:NVn \l_tmpa_prop {\the\c@footnote} {#2} + \IfValueT{#1}{% + \prop_put_if_new:NnV \l_affiliations_tagged_prop {#1} {\the\c@footnote} + } +} +% +\keys_define:nn { nwejm / authors } +{ + email .tl_gset:N = \g_@@_people_email_tl, + affiliation .code:n = {% + \@@_author_affiliation:ww #1 \q_@@ + }, + affiliationtagged .code:n = {% + \prop_get:NnNTF \l_affiliations_tagged_prop {#1} \l_tmpa_tl + {% + \prop_put_if_new:NVn \l_tmpa_prop {\l_tmpa_tl} {} + }{ + \msg_error:nnn{@@}{Unknown~tag}{#1} + } + }, +% \end{macrocode} +% +% All these options, when used, must receive a value. +% \begin{macrocode} + affiliation .value_required:, + affiliationtagged .value_required:, +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{New theorem options} +% +% \begin{macrocode} +\tl_new:N \l_@@_newtheorem_style_tl +\keys_define:nn { nwejm / newtheorem } +{ + title .tl_set:N = \l_@@_newtheorem_title_tl, + title / french .tl_set:N = \l_@@_newtheorem_french_title_tl, + title / english .tl_set:N = \l_@@_newtheorem_english_title_tl, + title / german .tl_set:N = \l_@@_newtheorem_german_title_tl, + title / dutch .tl_set:N = \l_@@_newtheorem_dutch_title_tl, + title .value_required:, + title / french .value_required:, + title / english .value_required:, + title / german .value_required:, + title / dutch .value_required:, + % + style .choice:, + style / theorem .code:n = {\_@@_theorem_style:n {theorem}}, + style / definition .code:n = {\_@@_theorem_style:n {definition}}, + style / proof .code:n = {\_@@_theorem_style:n {proof}}, + style / unknown .code:n = + \msg_error:nnxxx { nwejm } { Unknown~choice } + { style } % Name of choice key + { theorem~or~definition~or~proof } % Valid choices + { \exp_not:n {#1} } % Invalid choice given +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +\bool_new:N \g_@@_gradient_nabla_bool +\bool_new:N \g_@@_gradient_nabla_control_bool +\keys_define:nn { nwejm/articlesetup } +{ + gradient .choice:, + gradient / nabla .code:n = {\bool_gset_true:N \g_@@_gradient_nabla_bool}, + gradient / grad .code:n = {\bool_gset_false:N \g_@@_gradient_nabla_bool}, + gradient / unknown .code:n = + \msg_error:nnxxx { nwejmart } { Unknown~choice } + { gradient } % Name of choice key + { nabla~or~grad } % Valid choices + { \exp_not:n {#1} } % Invalid choice given +} +% \end{macrocode} +% +% \section{Miscellaneous token lists} +% +% We define some token lists for the long and short forms of the journal. +% \begin{macrocode} +\tl_new:N \g_@@_nwejm_short_string_tl +\tl_new:N \g_@@_nwejm_string_tl +\tl_gset:Nn \g_@@_nwejm_short_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c_@@_journal_short_title_string_tl}}{\c_@@_journal_short_title_string_tl} + }{% + \emph{\c_@@_journal_short_title_string_tl} + }% +} +\tl_gset:Nn \g_@@_nwejm_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c_@@_journal_title_string_tl}}{\c_@@_journal_title_string_tl} + }{% + \emph{\c_@@_journal_title_string_tl} + }% +} +% \end{macrocode} +% +% We fix some strings for the PDF's metadata . +% \begin{macrocode} +\tl_new:N \l_@@_pdftitle_string_tl +\tl_new:N \l_@@_pdfauthor_string_tl +\tl_set:Nn \l_@@_pdftile_string_tl { + \c_@@_journal_title_string_tl\space--\space{}N°\int_use:N\g_@@_issue_number_int +} +\tl_set:Nn \l_@@_pdfauthor_string_tl { + \g_@@_nwejm_string_tl +} +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_protected:Nn \_@@_email:n + { + \href{mailto:#1}{\nolinkurl{#1}}% + } +% \end{macrocode} +% +% We create a control sequence that populates the bib file. +% \begin{macrocode} +\tl_new:N \l_@@_crossref_tl +\cs_new_protected:Nn \_@@_populate_bib_file:nn +{ + \int_if_exist:cF {g_@@_#2_int} + { + \int_new:c {g_@@_#2_int} + } + \int_incr:c {g_@@_#2_int} + \tl_if_in:nnTF { #2 } { author } { + \tl_set:Nn \l_@@_crossref_tl {% + \c_@@_issue_bib_key_tl + -art- + \int_use:N \g_@@_articles_int + } + } { + \tl_set:Nn \l_@@_crossref_tl {\c_@@_issue_bib_key_tl} + } + \tl_set:Nn \l_@@_people_first_last_name_tl {#1} + \iow_now:Nx \g_@@_bib_out_iow {% + @article{ + \c_@@_issue_bib_key_tl -#2- \int_use:c {g_@@_#2_int}, + \iow_newline: + author={\exp_not:V\l_@@_people_first_last_name_tl}, + \iow_newline: + options={skipbib}, + \iow_newline: + crossref = {\l_@@_crossref_tl} + \iow_newline: + } + \iow_newline: + }% +} +% \end{macrocode} +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \section{Functions for specifiying the people involved in the journal} +% +% For this, and thanks to \Pkg{datatool}, we create a database of +% \enquote{people} involved in the journal. +% \begin{macrocode} +\DTLnewdb{people} +% \end{macrocode} +% +% Then we create the internal "\_@@_people" function that let us populate the +% "_@@_people" database. Each people will be identified by some identifiers: +% speciality (optional), firstname, lastname, affiliation, email, role. +% \begin{macrocode} +\cs_new_protected:Nn \_@@_people:nnnnn +{ + \DTLnewrow{people}% + \DTLnewdbentry{people}{first-last-name}{#1}% + \DTLnewdbentry{people}{affiliation}{#2}% + \DTLnewdbentry{people}{country}{#3}% + \DTLnewdbentry{people}{email}{#4}% + \DTLnewdbentry{people}{role}{#5}% + \_@@_populate_bib_file:nn {#1}{#5} +} +% \end{macrocode} +% +% We create a variant of this control sequence that passes the \emph{values} of +% the variables involved (see +% \url{http://tex.stackexchange.com/a/214284/18401}). +% \begin{macrocode} +\cs_generate_variant:Nn \_@@_people:nnnnn { nVnVx } +% \end{macrocode} +% +% \section{Functions for displaying people involved in the journal by role} +% +% We create the function that displays firstname and lastname of people involved +% in the journal by role. +% \begin{macrocode} +\cs_new_protected:Nn \@@_display_people_by_role:n +{ + \DTLforeach*[\DTLiseq{\l_@@_people_role_tl}{#1}]{people}{% + \l_@@_firstlastname_tl=first-last-name% + ,\l_@@_people_affiliation_tl=affiliation% + ,\l_@@_people_country_tl=country% + ,\l_@@_people_email_tl=email% + ,\l_@@_people_role_tl=role% + }{% + \tl_if_in:NnTF \l_@@_people_role_tl { editor } { + \item[ + \_@@_citeauthor_no_giveninits:n {\c_@@_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}% + ] + \l_@@_people_affiliation_tl% + \space% + (\l_@@_people_country_tl)% + % ,\space% + % \_@@_email:n {\l_@@_people_email_tl} + \DTLiflastrow{% + }{% + % \medskip% + } + }{ + \tl_if_in:NnTF \l_@@_people_role_tl { author } { + \footnotesize% + \noindent% + \begin{description}[leftmargin=1em,style=nextline] + \item[% + \_@@_citeauthor_no_giveninits:n {\c_@@_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}% + ] + \tl_if_empty:NF \l_@@_people_affiliation_tl + {% + \mbox{}% + \par% + \vspace{-2ex}% + \l_@@_people_affiliation_tl% + } + \tl_if_empty:NF \l_@@_people_email_tl + {% + \par% + \_@@_email:n {\l_@@_people_email_tl} + } + \end{description} + \DTLiflastrow{% + }{ + \DTLpar% + \medskip% + } + }{ + \_@@_citeauthor_no_giveninits:n {\c_@@_issue_bib_key_tl -#1- + \exp_not:V\DTLcurrentindex}% + \tl_if_empty:NF \l_@@_people_email_tl + { + \space(\_@@_email:n {\l_@@_people_email_tl}) + } + } + } + } +} +% \end{macrocode} +% +% \section{Displaying the front cover} +% +% We create the variable that displays the front cover. +% \begin{macrocode} +\tl_new:N \g_@@_display_frontcover_tl% +\tl_gset:Nn \g_@@_display_frontcover_tl {% + \bool_gset_true:N \g_@@_frontcover_bool + \pagestyle{@@_frontcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_frontcover_geometry_tl}% + \noindent% + \bool_if:NTF {\g_@@_cover_bool} { + \hspace*{-\c_@@_potential_layoutoffset_dim} + }{ + \hspace*{-2\c_@@_potential_layoutoffset_dim} + } + { + \mbox{} + \vfill + \begin{center} + \Huge% + \bfseries% + \sffamily% + \itshape% + \color{Navy}% + \c_@@_journal_front_cover_title_string_tl% + \end{center} + } + \vfill% + \clearpage% + \bool_gset_false:N \g_@@_frontcover_bool +} +% \end{macrocode} +% +% \section{Displaying the inside front cover} +% +% We create the variable that displays the inside front cover. +% \begin{macrocode} +\tl_new:N \g_@@_display_inside_frontcover_tl% +\tl_gset:Nn \g_@@_display_inside_frontcover_tl {% + \bool_gset_true:N \g_@@_inside_frontcover_bool% + \pagestyle{@@_inside_frontcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_inside_cover_geometry_tl}% + \footnotesize% + \begin{multicols*}{2} + \setlength{\columnsep}{1mm} + \begin{description}[leftmargin=2em] + \item[\textsc{\c_@@_editorinchief_string_tl}] \ + \begin{description}[leftmargin=1em] + \@@_display_people_by_role:n {editorinchief} + \end{description} + \bigskip + \par + \item[\textsc{\c_@@_associate_editors_string_tl}] \ + \begin{description}[leftmargin=1em] + \@@_display_people_by_role:n {editor} + \end{description} + \bigskip + \par + \item[\textsc{\c_@@_field_editor_string_tl}] \ + \begin{description}[leftmargin=1em] + \@@_display_people_by_role:n {fieldseditor} + \end{description} + \bigskip + \par + \item[\textsc{\c_@@_managing_editor_string_tl}] \ + \begin{description}[leftmargin=1em] + \@@_display_people_by_role:n {managingeditor} + \end{description} + \end{description} + \end{multicols*} + \clearpage% + \bool_gset_false:N \g_@@_inside_frontcover_bool + \pagestyle{@@_frontmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_main_geometry_tl}% +} +% \end{macrocode} +% +% \section{Displaying the inside back cover} +% +% We create the variable that displays the inside back cover. +% \begin{macrocode} +\tl_new:N \g_@@_display_inside_backcover_tl% +\tl_gset:Nn \g_@@_display_inside_backcover_tl {% + \bool_gset_true:N \g_@@_inside_backcover_bool% + \pagestyle{@@_inside_backcover_ps}% + % \exp_after:wN\newgeometry\exp_after:wN{\c_@@_inside_cover_geometry_tl}% + % \file_if_exist:nT { \c_@@_authors_instructions_file_tl } {% + \bool_if:NTF {\g_@@_no_inside_backcover_bool} { + \hbox{} + }{% + \small% + \file_if_exist:nT { \c_@@_authors_instructions_file_tl } {% + % \begin{multicols}{2} + % \setlength{\columnsep}{1mm} + \file_input:n {\c_@@_authors_instructions_file_tl} + % \end{multicols} + % \setlength{\columnseprule}{1pt} + } + \begin{description}[leftmargin=1em] + \item[\c_@@_editorial_secretariat_string_tl{}~:] \ \par% + % \l_@@_journal_publisher_tl% + % \par% + % \space\textendash{}\space% + \@@_display_people_by_role:n { secretary }\par + \l_@@_journal_address_tl\par% + \c_@@_phone_string_tl{}~:~\l_@@_journal_phone_tl{}\par% + \_@@_email:n {\l_@@_journal_email_tl} + \newline% + % \space\textendash{}\space + \url{\l_@@_journal_url_tl} + \item[\c_@@_issn_string_tl{}~:] \l_@@_journal_issn_tl + \tl_if_empty:NF \l_@@_journal_isbn_tl + {% + \item[\c_@@_isbn_string_tl{}~:] \l_@@_journal_isbn_tl + } + \item[\c_@@_latexclass_string_tl{}~:] + \@@_display_people_by_role:n { classdesigner } + \item[\c_@@_computer_engineering_string_tl{}~:] %\g_@@_printer_text_tl + \@@_display_people_by_role:n { computerengineer } + \item[\c_@@_printer_string_tl{}~:] %\g_@@_printer_text_tl + \@@_display_people_by_role:n { printingservice } + \end{description} + \g_@@_font_designer_text_tl + } + % }{% + % \hbox{} + % } + \bool_gset_false:N \g_@@_inside_backcover_bool +} +% \end{macrocode} +% +% \section{Displaying the back cover} +% +% \begin{macrocode} +\tl_new:N \g_@@_short_toc_tl% +% \end{macrocode} +% +% The following code to get a framed TOC is borrowed from \pkg{etoc}'s +% documentation. +% \begin{macrocode} +\tl_gset:Nn \g_@@_short_toc_tl {% + \begingroup + \etocstandardlines + \etocsetnexttocdepth{chapter} + \renewcommand{\etocbkgcolorcmd}{\color{Navy!5}} + \renewcommand{\etocbelowtocskip}{0pt\relax} + \fboxsep1ex + \etocframedstyle [1]{\fbox{\makebox[.5\linewidth]{\etocfontminusone\c_@@_backcover_tableofcontents_string_tl}}} + \tableofcontents + \endgroup +} +% \end{macrocode} +% +% We compute the height of this framed TOC to know the place left on the page +% for the collection of logos that will be displayed below. +% \begin{macrocode} +% \newlength\toto +% \setlength{\toto}{ \textheight - \heightof{\g_@@_short_toc_tl} } +\tl_new:N \g_@@_display_backcover_tl% +\tl_gset:Nn \g_@@_display_backcover_tl {% + \bool_gset_true:N \g_@@_backcover_bool +% \end{macrocode} +% +% The following code is borrowed from \pkg{etoc}'s documentation. +% \begin{macrocode} +\g_@@_short_toc_tl +\vfill{} + \begin{center} + \includegraphics[height=.4\textheight]{nwejm-logos-collection.pdf} + \end{center} +} +% \end{macrocode} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \section{Displaying the dates} +% +% We create the variable that displays the dates. +% \begin{macrocode} +\cs_new_protected:Nn \_@@_date:nn +{ + \tl_if_exist:NT {#2} + { + \tl_if_empty:NF {#2} + { + \tl_if_eq:NNF {\c_@@_date_received_tl} {#1} { \c_@@_dates_separator_tl } + \tl_mixed_case:n { \exp_args:No \GetTranslation{#1} } + \c_@@_colon_tl\space + \DTMdate{#2}% + } + } +} +\tl_new:N \g_@@_display_dates_tl% +\tl_gset:Nn \g_@@_display_dates_tl {% + \footnotesize% + \_@@_date:nn {\c_@@_date_received_tl}{\g_@@_reception_date_tl} + \_@@_date:nn {\c_@@_date_accepted_tl}{\g_@@_acception_date_tl} + \_@@_date:nn {\c_@@_date_online_tl} {\g_@@_online_date_tl} + \tl_gclear:N \g_@@_reception_date_tl + \tl_gclear:N \g_@@_acception_date_tl + \tl_gclear:N \g_@@_online_date_tl +} +% \end{macrocode} +% +% \section{Displaying the keywords} +% +% \begin{macro}{\keywords} +% \begin{macro}{\l_@@_keywords_tl} +% The command for article's keywords is defined: the article's keywords is +% store in "\l_@@_keywords_tl" for later use. +% \begin{macrocode} +\seq_new:N \l_@@_keywords_seq +\tl_new:N \l_@@_keywords_tl +\NewDocumentCommand \keywords { m } { + \seq_clear:N \l_@@_keywords_seq + \tl_clear:N \l_@@_keywords_tl + \seq_set_from_clist:Nn \l_tmpa_seq {#1} + \seq_set_map:NNn \l_@@_keywords_seq \l_tmpa_seq { + ##1 + } + \tl_set:Nn \l_@@_keywords_tl { \seq_use:Nn \l_@@_keywords_seq {,~} } +%<class-article> \hypersetup{pdfkeywords=\l_@@_keywords_tl} +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Displaying the Mathematical Subject Classification (\textsc{msc})} +% +% \begin{macro}{\msc} +% \begin{macro}{\l_@@_msc_tl} +% The command for article's \textsc{msc} is defined: the article's \textsc{msc} is +% store in "\l_@@_msc_tl" for later use. +% \begin{macrocode} +\seq_new:N \l_@@_msc_seq +\tl_new:N \l_@@_msc_tl +\NewDocumentCommand \msc { m } { + \seq_clear:N \l_@@_msc_seq + \tl_clear:N \l_@@_msc_tl + % + % does what the name suggests, set a sequence from the clist + \seq_set_from_clist:Nn \l_tmpa_seq {#1} + % applies final arg to each element of second seq and stores result in first seq + \seq_set_map:NNn \l_@@_msc_seq \l_tmpa_seq { + ##1 + } + % + % \seq_use puts the items from the seq back in the input with ",~" as a separator + \tl_set:Nn \l_@@_msc_tl {\seq_use:Nn \l_@@_msc_seq {,~}} +%%<class-article> \hypersetup{pdfmsc=\l_@@_msc_tl} +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{User level commands} +% +% Here, we gather all the user level (public) commands. +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \subsection{Populating the people involved in the journal} +% +% \begin{macro}{\editorinchief} +% \begin{macro}{\managingeditor} +% \begin{macro}{\fieldseditor} +% \begin{macro}{\editor} +% \begin{macro}{\classdesigner} +% \begin{macro}{\fontdesigner} +% \begin{macro}{\classmaintainer} +% \begin{macro}{\printingservice} +% \begin{macro}{\computerengineer} +% \begin{macro}{\secretary} +% We define some document-level commands that let the user specify +% respectively the editor(s) in chief, the fields editor, the managing editor, +% the editors, the class designer and maintainer(s), etc. +%% \enquote{R\'{e}dacteur(s) en chef}. +% \begin{macrocode} +\NewDocumentCommand \editorinchief {mmmm} +{ + \_@@_people:nnnnn {#1}{#2}{#3}{#4}{editorinchief} +} +\NewDocumentCommand \editor {mmmm} +{ + \_@@_people:nnnnn {#1}{#2}{#3}{#4}{editor} +} +\NewDocumentCommand \fieldseditor {mmmm} +{ + \_@@_people:nnnnn {#1}{#2}{#3}{#4}{fieldseditor} +} +\NewDocumentCommand \managingeditor {mmmm} +{ + \_@@_people:nnnnn {#1}{#2}{#3}{#4}{managingeditor} +} +\NewDocumentCommand \classdesigner {mmmm} +{ + \_@@_people:nnnnn {#1}{#2}{#3}{#4}{classdesigner} +} +\NewDocumentCommand \computerengineer {mmmm} +{ + \_@@_people:nnnnn {#1}{#2}{#3}{#4}{computerengineer} +} +\NewDocumentCommand \classmaintainer {mmmm} +{ + \_@@_people:nnnnn {#1}{#2}{#3}{#4}{classmaintainer} +} +\NewDocumentCommand \fontdesigner {mmmm} +{ + \_@@_people:nnnnn {#1}{#2}{#3}{#4}{fontdesigner} +} +\NewDocumentCommand \printingservice {mmmm} +{ + \_@@_people:nnnnn {#1}{#2}{#3}{#4}{printingservice} +} +\NewDocumentCommand \computerassistance {mmmm} +{ + \_@@_people:nnnnn {#1}{#2}{#3}{#4}{computerassistance} +} +\NewDocumentCommand \secretary {mmmm} +{ + \_@@_people:nnnnn {#1}{#2}{#3}{#4}{secretary} +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Issue setup} +% +% \begin{macro}{\issuesetup} +% We define the command that lets the user specify the issue setup. +% \begin{macrocode} +\NewDocumentCommand \issuesetup { m } { +% \end{macrocode} +% +% Its keys are set (only "number", "month" and "year" are relevant here). +% \begin{macrocode} + \keys_set:nn { nwejm/issuesetup } {#1} +% \end{macrocode} +% +% We fix some of the PDF's metadata . +% \begin{macrocode} +\hypersetup{pdftitle=\l_@@_pdftitle_string_tl} +\hypersetup{pdfauthor=\l_@@_pdfauthor_string_tl} +% \end{macrocode} +% +% We use here the fact that, if the "number", "month" or "year" options are not +% used, their corresponding "\g_@@_issue_number_int", "\g_@@_issue_month_int" or +% "\g_@@_issue_year_int" variables are equal to $0$ ($<1$). +% +% First, if "number" is not used, its "\g_@@_issue_number_int" variable is set +% to "\c_@@_first_issue_number_int"\footnote{The number of the first journal's +% issue using the present class.} and a warning is emitted. +% \begin{macrocode} + \int_compare:nNnT {\g_@@_issue_number_int}<{1} + { + \int_gset:Nn \g_@@_issue_number_int { \c_@@_first_issue_number_int } + \msg_warning:nnn{nwejm}{Issue~number~needed}{number} + } +% \end{macrocode} +% +% If not specified as \refCom{issuesetup}'s key-value options, issue's month and +% year are computed from issue number (which defaults to +% "\c_@@_first_issue_month_int"). +% +% \begin{macro}{\c_@@_issue_age_in_months_int} +% First, if "month" or "year" option is not used (one of the previous +% variables is $0$ hence their product is $0$ ($<1$)), we compute the issue +% age in months, useful for both month and year computation. +% \begin{macrocode} + \int_compare:nNnT {\g_@@_issue_month_int * \g_@@_issue_year_int}<{1} + { + \int_new:N \g_@@_issue_age_in_months_int% + \int_gset:Nn \g_@@_issue_age_in_months_int + { + \c_@@_first_issue_month_int + + \c_@@_interval_in_months_int + * ( \int_use:N \g_@@_issue_number_int - \c_@@_first_issue_number_int ) + } + } +% \end{macrocode} +% \end{macro} +% +% If the "month" is not used, we replace "\g_@@_issue_month_int" ($=0$) by its +% computed value from the issue number. +% \begin{macrocode} + \int_compare:nNnT {\g_@@_issue_month_int}<{1} + { + \int_gset:Nn \g_@@_issue_month_int + { + \int_mod:nn { \g_@@_issue_age_in_months_int } { 12 } + } + } +% \end{macrocode} +% +% If the "year" is not used, we replace "\g_@@_issue_year_int" ($=0$) by its +% computed value from the issue number. +% \begin{macrocode} + \int_compare:nNnT {\g_@@_issue_year_int}<{1} + { + \int_new:N \g_@@_issue_age_in_years_int% + \int_gset:Nn \g_@@_issue_age_in_years_int + {% + \int_div_truncate:nn { \g_@@_issue_age_in_months_int } { 12 } + }% + \int_gset:Nn \g_@@_issue_year_int + { + \g_@@_issue_age_in_years_int + \c_@@_first_issue_year_int + } + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Journal setup} +% +% \begin{macro}{\journalsetup} +% We define the command that lets the user specify the +% journal setup. This setup is likely to be rarely changed. +% \begin{macrocode} +\NewDocumentCommand \journalsetup { m } { +% \end{macrocode} +% +% Its keys are set (only "publisher", "address", "phone", "email", "url" +% and "issn" are relevant here). +% \begin{macrocode} + \keys_set:nn { nwejm/journalsetup } { #1 } +} +% \end{macrocode} +% \end{macro} +% +% \subsection{\Pkg{Varioref}} +% +% We have to save the extra definitions of the \Pkg{varioref} which currently is +% multilingual aware. +% \begin{macrocode} +\addto\extrasfrench{% + \def\reftextfaceafter {page~\reftextvario{ci-contre}{suivante}}% + \def\reftextfacebefore{page~\reftextvario{ci-contre}% + {pr\’ec\’edente}}% + \def\reftextafter + {page~suivante}% + \def\reftextbefore + {page~pr\’ec\’edente}% + \def\reftextcurrent + {de~la~pr\’esente~page}% + \def\reftextfaraway#1{page~\pageref{#1}}% + \def\reftextpagerange#1#2{pages~\pageref{#1}--\pageref{#2}}% + \def\reftextlabelrange#1#2{\ref{#1}~\‘a~\ref{#2}}% +} +\addto\extrasngerman{% + \def\reftextfaceafter {auf~der~n\"achsten~Seite}% + \def\reftextfacebefore{auf~der~vorherigen~Seite}% + \let\reftextafter \reftextfaceafter + \let\reftextbefore \reftextfacebefore + \def\reftextcurrent {auf~dieser~Seite}% + \def\reftextfaraway#1{auf~Seite~\pageref{#1}}% + \def\reftextpagerange#1#2{auf~den~Seiten~\pageref{#1}--\pageref{#2}}% + \def\reftextlabelrange#1#2{\ref{#1}~bis~\ref{#2}}% +} +\addto\extrasdutch{% + \def\refpagename{pagina}% + \def\reftextfaceafter {op~de~\reftextvario{rechter~\refpagename}% + {\refpagename\ hiernaast}}% + \def\reftextfacebefore{op~de~\reftextvario{linker~\refpagename}% + {\refpagename\ hiernaast}}% + \def\reftextafter {op~de~\reftextvario{volgende~\refpagename}% + {\refpagename\ hierna}}% + \def\reftextbefore {op~de~\reftextvario{vorige~\refpagename}% + {\refpagename\ hiervoor}}% + \def\reftextcurrent {op~deze~\refpagename}% + \def\reftextfaraway#1{op~\refpagename\space\pageref{#1}} +} +\addto\extrasenglish{% + \def\reftextfaceafter {on~the~\reftextvario{facing}{next}~page}% + \def\reftextfacebefore{on~the~\reftextvario{facing}{preceding}~page}% + \def\reftextafter {on~the~\reftextvario{following}{next}~page}% + \def\reftextbefore {on~the~\reftextvario{preceding}{previous}~page}% + \def\reftextcurrent {on~\reftextvario{this}{the~current}~page}% + \def\reftextfaraway#1{on~page~\pageref{#1}}% + \def\reftextpagerange#1#2{on~pages~\pageref{#1}--\pageref{#2}}% + \def\reftextlabelrange#1#2{\ref{#1}~to~\ref{#2}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \subsection{Article setup} +% +% Some of the document commands will be restricted to document body, as the +% following ×\articlesetup× command whose effects would otherwise be overriden +% when, for the whole issue, preambles of each article will be gathered thanks +% to \Pkg{standalone}. +% \begin{macrocode} +\cs_new_protected:Nn \_@@_command_only_in_body:n +{ + \cs_if_eq:NNF {\@onlypreamble} {\@notprerr} { + \msg_error:nnn{ +%<class-article> nwejmart +%<class> nwejm + }{Command~restricted~to~document~body~used~in~preamble}{#1} + } +} +% \end{macrocode} +% +% \begin{macro}{\articlesetup} +% We define the command that lets the user specify the article setup. +% \begin{macrocode} +\NewDocumentCommand \articlesetup { m } { + \_@@_command_only_in_body:n {\articlesetup} + \keys_set:nn { nwejm/articlesetup } {#1} +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Dates setup} +% +% \begin{macro}{\dates} +% We define the command that lets the user specify the issue setup. +% \begin{macrocode} +\NewDocumentCommand \dates { m } { + \keys_set:nn { nwejm/dates } { #1 } +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Input variant} +% +% We create a variant of the "\input" macro to be use for the input of each +% article: it starts a new \package{biblatex}'s "refsection" and reset to zero +% some counters. +% \begin{macrocode} +\NewDocumentCommand \inputarticle { O{english} m } {% + \newrefsection + \tl_if_eq:nnTF { #1 } { german } {% + \selectlanguage{ngerman} + }{ + \selectlanguage{#1} + }% +% \end{macrocode} +% +% Though we switch to \pkg{babel}'s ×french×, footnotes are not displayed as +% French ones in the issue. The following fixes this trouble. +% \begin{macrocode} + \tl_if_eq:nnTF { #1 } { french } {% + \FrenchFootnotes + }{% + \StandardFootnotes + } +% \end{macrocode} +% +% We reset setup possibly chosen in previous articles. +% \begin{macrocode} +%<class> \bool_gset_false:N \g_@@_gradient_nabla_bool +%<class> \bool_gset_false:N \g_@@_gradient_nabla_control_bool +%<class> \bool_gset_false:N \g_@@_grad_used_bool +% \end{macrocode} +% +% \begin{macrocode} + \inputfrom{./}{#2} +% \end{macrocode} +% The list of counters we want to be able to easily set to zero doesn't contains +% only the ones associated to the (numbered) theorem environments: it should +% contain the following ones as well: +% \begin{macrocode} + \clist_put_right:Nn \g_@@_counters_to_be_reset_clist { + footnote, + section, + figure, + table, + equation + } +% \end{macrocode} +% We set to zero the counters that should be at the end of each article input: +% \begin{macrocode} + \clist_map_inline:Nn \g_@@_counters_to_be_reset_clist { + \@ifundefined{c@##1}{ + }{ + \setcounter{##1}{\c_zero} + } + } +% \end{macrocode} +% We reset all acronyms entries. +% \begin{macrocode} + \glsresetall + \selectlanguage{english} +} +% \end{macrocode} +% +% \section{(Re)Definition of document commands that identify the article} +% +% The names of the authors of the different articles will appear at several +% places, and notably in the table of contents where first and middle names have to +% be rendered as initials. Because automatically rendering initials is a complex task +% already provided by \Pkg{biblatex}, we will create a \file{.bib} file +% containing "article" entries for each article of the \nwejm{} journal. +% +% This can be done only at the beginning of the document, in order to know the +% characteristics of the current issue. +% \begin{macrocode} +\AtBeginDocument{% +% \end{macrocode} +% +% We first create a token list containing the date of the current issue formated +% as required by \pkg{biblatex} (the month issue needs a leading zero if it is +% $<10$). +% \begin{macrocode} +\tl_new:N \g_@@_bib_issue_date_tl +\tl_gset:Nn +\g_@@_bib_issue_date_tl { + \int_use:N \g_@@_issue_year_int - + \int_compare:nNnT {\g_@@_issue_month_int}<{10} + { + 0 + } + \int_use:N \g_@@_issue_month_int +} +% \end{macrocode} +% +% We will populate the bibiliographic file of the current issue with the current +% issue (as "@periodical" entry type). +% \begin{macrocode} + \iow_now:Nx \g_@@_bib_out_iow {% + @periodical{\c_@@_issue_bib_key_tl,\iow_newline: + issuetitle = {\exp_not:f\c_@@_journal_title_string_tl},\iow_newline: + date = {\g_@@_bib_issue_date_tl},\iow_newline: + number = \int_use:N \g_@@_issue_number_int,\iow_newline: + % issn = {\l_@@_journal_issn_tl},\iow_newline: + options = {skipbib}\iow_newline: + } + \iow_newline: + }% +} +% \end{macrocode} +% +% \begin{macro}{\title} +% \begin{macro}{\g_@@_title_tl} +% The command for article's title is redefined: the full \enquote{article's +% title} is store in "\g_@@_title_tl" for later use. +% \begin{macrocode} +\tl_new:N \g_@@_title_tl +\RenewDocumentCommand \title { o m } { +% \end{macrocode} +% +% We don't want the (next) title to appear in the headers of the preceding +% article. +% \begin{macrocode} + \cleardoublepage +% \end{macrocode} +% +% We increment the "\g_@@_articles_int" integer that counts the number of +% articles in order to provide for each of them a unique bibliographic key. +% \begin{macrocode} + \int_gincr:N \g_@@_articles_int + \tl_gclear:N \g_@@_short_title_tl + \tl_gclear:N \g_@@_short_subtitle_tl + % + \IfNoValueF {#1} + { + \tl_gset:Nn \g_@@_short_title_tl {#1} + } + \tl_gset:Nn \g_@@_title_tl {#2} + \tl_if_empty:NT \g_@@_short_title_tl {% + \tl_gset_eq:NN \g_@@_short_title_tl \g_@@_title_tl + } +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\subtitle} +% \begin{macro}{\g_@@_subtitle_tl} +% The command for article's subtitle is redefined: the full and short +% \enquote{article's subtitles} are store in "\g_@@_subtitle_tl" and +% "\g_@@_short_subtitle_tl" for later use. +% \begin{macrocode} +\tl_new:N \g_@@_subtitle_tl +\NewDocumentCommand \subtitle { o m } { + \IfNoValueF {#1} + { + \tl_gset:Nn \g_@@_short_subtitle_tl {#1} + } + \tl_gset:Nn \g_@@_subtitle_tl {#2} + \tl_if_empty:NT \g_@@_short_subtitle_tl {% + \tl_gset_eq:NN \g_@@_short_subtitle_tl \g_@@_subtitle_tl + } +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\author} +% The command for article's author (including its affiliation) is redefined. +% \begin{macrocode} +\RenewDocumentCommand \author { O{} m } { +% \end{macrocode} +% +% We don't want the (next) authors to appear in the headers of the preceding +% article. +% \begin{macrocode} + \cleardoublepage +% \end{macrocode} +% + \int_incr:N \l_author_int + \prop_gput_if_new:Nxn \g_authors_prop {author_\int_use:c {l_author_int}} {#2} + \IfNoValueF {#1} + { + \keys_set:nn { nwejm/authors } { #1 } + } + \prop_set_eq:cN {l_author_ \int_use:c {l_author_int} _affiliations_prop} \l_tmpa_prop + \prop_clear:N \l_tmpa_prop + \_@@_populate_bib_file:nn {#2}{author-art-\int_use:N \g_@@_articles_int} + \tl_if_empty:NTF \l_@@_people_first_last_names_tl {% + \tl_put_right:Nn + \l_@@_people_first_last_names_tl + {#2} + }{ + \tl_put_right:Nn + \l_@@_people_first_last_names_tl + {~and~#2} + } +} +% \end{macrocode} +% \end{macro} +% +% We create a stream in order to write a bibliographic file +% \begin{macrocode} +\iow_new:N \g_@@_bib_out_iow +\ior_new:N \g_@@_bib_out_ior +\tl_new:N \g_@@_bib_out_tl +\file_if_exist:nTF { \c_@@_issue_bib_path_string_tl } +{ + \ior_open:Nn \g_@@_bib_out_ior { \c_@@_issue_bib_path_string_tl } + \ior_str_map_inline:Nn \g_@@_bib_out_ior + { \tl_gput_right:Nn \g_@@_bib_out_tl {#1 \par } } + \ior_close:N \g_@@_bib_out_ior +}{ + \typeout{no file! rerun} +} +\iow_open:Nn \g_@@_bib_out_iow { \c_@@_issue_bib_path_string_tl } +% \end{macrocode} +% +% \begin{environment}{abstract} +% The environment for article's abstract. +% \begin{macrocode} +\tl_new:N \g_@@_abstract_body_tl +\NewDocumentEnvironment{abstract}{} + {\CollectAbstract} + {\endCollectAbstract} +\NewEnviron{CollectAbstract} + { + \tl_gset_eq:NN \g_@@_abstract_body_tl \BODY + } +% \end{macrocode} +% \end{environment} +% +% \section{Definition of a private front and main matter switches} +% +% A private "\_@@_frontmatter_switch_tl" switch is defined in order to +% automatically insert some settings. +% \begin{macrocode} +\tl_new:N \g_@@_frontmatter_switch_tl% +\tl_gset:Nn \g_@@_frontmatter_switch_tl { + \bool_gset_true:N \g_@@_frontmatter_bool + \frontmatter + \pagestyle{@@_frontmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_main_geometry_tl}% +} +% \end{macrocode} +% +% A private "\_@@_mainmatter_switch_tl" switch is defined in order to +% automatically insert some settings. +% \begin{macrocode} +\tl_new:N \g_@@_mainmatter_switch_tl% +\tl_gset:Nn \g_@@_mainmatter_switch_tl { + \bool_gset_false:N \g_@@_frontmatter_bool + \bool_gset_true:N \g_@@_mainmatter_bool + \mainmatter + % \SetParskip{\c_@@_mainmatter_parskip_skip} + \pagestyle{@@_mainmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_main_geometry_tl}% +} +% \end{macrocode} +% +% \section{Definition of the acknowledgments} +% +% \begin{macrocode} +\tl_new:N \g_@@_article_acknowledgments_tl% +\cs_new_protected:Nn \@@_article_acknowledgments:n +{ + \tl_gset:Nn \g_@@_article_acknowledgments_tl { #1 } +} +\NewDocumentCommand \acknowledgments { m } { + \@@_article_acknowledgments:n {#1} +} +% \end{macrocode} +% +% \section{Definition of the title command} +% +% We create two token lists that will contain: +% \begin{enumerate} +% \item the unique bibliographic key, +% \item the "author" value of the bibliographic entry, +% \end{enumerate} +% of the current article. +% \begin{macrocode} +\tl_new:N \g_@@_article_bib_key_tl% +\tl_new:N \l_@@_people_first_last_names_tl +\tl_new:N \g_@@_authors_first_last_names_tl% +\tl_new:N \g__@@_citeauthor_no_giveninits% +\tl_new:N \g_@@_citeauthor_tl% +\int_new:N \g_@@_author_s_number_current_article_int% +% +\cs_new_protected:Nn \_@@_citeauthor_no_giveninits:n {% + \tl_gset:Nn \g_@@_citeauthor_tl {% + \DeclareNameAlias{labelname}{default}% + \group_begin: + \togglefalse{blx@giveninits}% + \citeauthor{#1} + \group_end: + }% + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\g_@@_citeauthor_tl}{} + }{% + \g_@@_citeauthor_tl + }% +} +% \end{macrocode} +% +% In the following "\maketitle" document level macro, we will need to display +% the list the authors of the current article, not as a comma separated list +% (default "\citeauthor" \pkg{biblatex}'s macro behavior), but as an itemized +% list. For this, we create the "\_@@_itemized_citeauthor" internal function +% that will make use of "\citeauthor" where "\multinamedelim" and +% "\finalnamedelim" will be patched into "\item". As we don't want to globally +% alter the behavior of these macros, we first store their original meanings in +% some private control sequence: +% \begin{macrocode} +\cs_set_eq:NN \_@@_orig_multinamedelim \multinamedelim +\cs_set_eq:NN \_@@_orig_finalnamedelim \finalnamedelim +\cs_new_protected:Nn \_@@_maketitle_citeauthor:n +{ + \restorecommand\mkbibnamelast + \def\multinamedelim {\hskip 1em \@plus.17fil}% + \cs_set_eq:NN \finalnamedelim \multinamedelim + \AtNextCitekey{\defcounter{maxnames}{100}} + \group_begin: + \DeclareNameAlias{labelname}{default}% + \togglefalse{blx@giveninits}% + \citeauthor{#1} + \group_end: + \cs_set_eq:NN \multinamedelim \_@@_orig_multinamedelim + \cs_set_eq:NN \finalnamedelim \_@@_orig_finalnamedelim + \protected\def\mkbibnamelast#1{% + \textsc{\textnohyphenation{#1}}}% +} +\cs_new_protected:Nn \@@_display_author:n +{ + \seq_clear:N \l_tmpa_seq + \prop_get:NnN \g_authors_prop {author_#1} \l_tmpa_tl + \prop_map_inline:cn {l_author_ #1 _affiliations_prop} { + \seq_put_right:Nx \l_tmpa_seq { ##1 } + } + \seq_sort:Nn \l_tmpa_seq + { + \int_compare:nNnTF { ##1 } > { ##2 } + { \sort_reversed: } + { \sort_ordered: } + } + \mbox{% + \_@@_citeauthor_no_giveninits:n {\c_@@_issue_bib_key_tl -author-art- \int_use:N \g_@@_articles_int-#1} + } + \seq_map_inline:Nn \l_tmpa_seq { + \prop_get:cnN {l_author_ #1 _affiliations_prop} {##1} \l_tmpb_tl + \footnotemark[##1] + \tl_if_empty:NF \l_tmpb_tl + { + \footnotetext[##1]{\l_tmpb_tl} + } + } + \hskip 1em plus .17fil +} +% \end{macrocode} +% +% We declare two token list which will used in the next (re)definition. +% \begin{macrocode} +\tl_new:N \l_@@_bullet_and_rule_tl +\tl_new:N \l_@@_authors_box_tl +\tl_new:N \l_@@_abstract_box_tl +\tl_new:N \l_@@_bullet_and_rule_odd_tl +\tl_new:N \l_@@_bullet_and_rule_even_tl +\tl_new:N \l_@@_title_box_tl +\tl_new:N \g_@@_title_for_toc_tl +% \end{macrocode} +% +% \begin{macro}{\maketitle} +% The command that \emph{makes} the title is redefined. +% \begin{macrocode} +\RenewDocumentCommand \maketitle { } { +% \end{macrocode} +% +% We enforce all the previous floats to be processed before a new article starts +% (this is already done in "acknowledgments"environment but is repeated here if +% what is before provides floats but not acknowledgments). +% \begin{macrocode} +%<class> \FloatBarrier% +% \end{macrocode} +% +% We store the unique bibliographic key of the current article in the +% "\g_@@_article_bib_key_tl" token list. +% \begin{macrocode} +\tl_gset:Nn \g_@@_article_bib_key_tl {% + \c_@@_issue_bib_key_tl + -art- + \int_use:N \g_@@_articles_int +} +% \end{macrocode} +% +% We will populate the bibiliographic file of the current issue with the current +% article (title, author(s) and a fixed part giving by the issue number, journal +% title and date). +% +% We now populate the bibiliographic file. +% \begin{macrocode} +\tl_if_empty:NF \g_@@_title_tl {% + \iow_now:Nx \g_@@_bib_out_iow {% + @article{ + \g_@@_article_bib_key_tl, + \iow_newline: + title={\exp_not:V\g_@@_title_tl}, + \iow_newline: + \tl_if_empty:NF \g_@@_subtitle_tl {% + subtitle={\exp_not:V\g_@@_subtitle_tl}, + \iow_newline: + } + \tl_if_eq:NNF { \g_@@_short_title_tl } { \g_@@_title_tl } {% + shorttitle={\exp_not:V\g_@@_short_title_tl}, + \iow_newline: + }% + \tl_if_empty:NF \l_@@_people_first_last_names_tl + { + author={\exp_not:V\l_@@_people_first_last_names_tl}, + \iow_newline: + } + options={skipbib}, + \iow_newline: + crossref = {\c_@@_issue_bib_key_tl} + } + \iow_newline: + }% + % \tl_clear:N \l_@@_people_first_last_names_tl +}% +% +\tl_set:Nn \l_@@_authors_box_tl +{% + \bool_if:nTF { \tl_if_empty_p:N \l_@@_people_first_last_names_tl } + { + \mbox{} + } + { + \int_set:Nn \l_tmpa_int { \@@_prop_count:N \g_authors_prop} + \normalsize% + \int_step_inline:nnnn {1}{1}{\l_tmpa_int} { + \@@_display_author:n {##1} + } + \prop_gclear:N \g_authors_prop + } +} +% \end{macrocode} +% +% We clear the tagged affiliations (henece their scope is the current article). +% \begin{macrocode} +\int_zero:N \l_author_int +\prop_clear:N \l_affiliations_tagged_prop +% \end{macrocode} +% +% \begin{macrocode} +\tl_set:Nn \l_@@_dates_box_tl +{% + \g_@@_display_dates_tl +} +% +\tl_set:Nn \l_@@_keywords_box_tl +{% + \noindent + { + \bfseries + \tl_mixed_case:n{ + \GetTranslation{plural-keyword} + \c_@@_colon_tl + } + } + \space\l_@@_keywords_tl. +} +\tl_set:Nn \l_@@_msc_box_tl +{% + \noindent\textbf{\c_@@_msc_string_tl}\c_@@_colon_tl\space\l_@@_msc_tl. +} +\tl_set:Nn \l_@@_abstract_box_tl +{% + \mbox{} + \par% + \vskip .5em% + \tl_if_empty:NTF \g_@@_abstract_body_tl + {% + \msg_warning:nn{nwejmart}{No~abstract} + }% + {% + \small + \begin{center}% + {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}% + \end{center}% + \begin{quotation} + \g_@@_abstract_body_tl + \end{quotation} + } +}% +% \end{macrocode} +% +% \begin{macrocode} +\tl_set:Nn \g_@@_partial_title_for_toc_tl +{ + \tl_if_empty:NTF \g_@@_short_title_tl {% + \g_@@_title_tl% + }{ + \g_@@_short_title_tl% + } + \bool_if:nF { \tl_if_empty_p:N \g_@@_short_subtitle_tl } + { + .\space\g_@@_short_subtitle_tl + } +} +% \end{macrocode} +% +% For the article's class, the article's title and (if any) subtitle are added +% to the ×pdftitle× PDF's metadata. +% \begin{macrocode} +%<class-article> \hypersetup{pdftitle=\g_@@_partial_title_for_toc_tl} +% \end{macrocode} +% +% \begin{macrocode} +\tl_set:Nn \g_@@_title_for_toc_tl +{ + \g_@@_partial_title_for_toc_tl + \bool_if:nF { \tl_if_empty_p:N \l_@@_people_first_last_names_tl } + { + \textsl{ + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{% + \AtNextCitekey{\defcounter{maxnames}{100}} + \space\textendash\space\citeauthor{\g_@@_article_bib_key_tl} + }{} + }{% + \space\textendash\space\citeauthor{\g_@@_article_bib_key_tl} + }% + } + } +} +% \end{macrocode} +% +% The article's titles are produced thanks to the ×\chapter× which is +% unnumbered (otherwise the corresponding bookmark is numbered), but not through +% the starred version of ×\chapter× (because we need its -- alternative title in +% the TOC). +% \begin{macrocode} + \setsecnumdepth{none} +%<class-article> \bookmarksetup{depth=-2} + \chapter[\g_@@_title_for_toc_tl]{% + \LARGE% + \g_@@_title_tl + \tl_if_empty:NF \g_@@_subtitle_tl {% + \\[1ex]% + \Large% + \g_@@_subtitle_tl + }\\[2ex]% + \l_@@_authors_box_tl% + \bool_if:NT {\g_@@_date_specified_bool} + { + \\[2ex] + \l_@@_dates_box_tl + } + \\[-4ex] + } + \bool_gset_false:N \g_@@_date_specified_bool + \bookmarksetup{depth=subsection} + \setsecnumdepth{subsection} +% \end{macrocode} +% +% We want header of the article's titles pages. +% \begin{macrocode} + \thispagestyle{@@_article_title_ps}% +% +\l_@@_abstract_box_tl% +\normalsize +\tl_if_empty:NTF \l_@@_keywords_tl { + \msg_warning:nn{nwejmart}{No~keyword} +}{ + \l_@@_keywords_box_tl + \par% + \vskip .5em% +} +\tl_if_empty:NTF \l_@@_msc_tl { + \msg_warning:nn{nwejmart}{No~MSC} +}{ + \l_@@_msc_box_tl + \par% + \vskip .5em% +} +%<class-article> \hypersetup{pdfauthor=\l_@@_people_first_last_names_tl} +% +\tl_gclear:N \g_@@_title_tl +\tl_gclear:N \g_@@_subtitle_tl +\tl_gclear:N \g_@@_title_for_toc_tl +\tl_gclear:N \g_@@_abstract_body_tl +% \end{macrocode} +% +% We clear the authors database from the possible previous article. +% \begin{macrocode} + \tl_gclear:N \g_@@_people_affiliation_tl + \tl_gclear:N \g_@@_people_email_tl + \tl_clear:N \l_@@_people_first_last_names_tl% +} +% \end{macrocode} +% \end{macro} +% +% We load the configuration file, which has to be located in the \TeX{} search +% path: at least one such a file is provided by the class and located in the +% same directory as the class file. This file is loaded at the end of preamble +% instead of begin of the document in order some settings needed in preamble are +% taken in account. +% \begin{macrocode} +%<class>\AtEndPreamble{\file_input:n {\c_@@_configuration_file_string_tl}} +% \end{macrocode} +% +% \subsection{Miscellaneous} +% +% We fix the \pkg{csquotes}' quotes for PDF strings. +% \begin{macrocode} +\DeclarePlainStyle{«~}{~»}{`}{'} +% \end{macrocode} +% +% We change the default settings of the floats placement. +% \begin{macrocode} +\setcounter{topnumber}{3} +\renewcommand{\topfraction}{0.8} +% \end{macrocode} +% +% We change the default vertical space between text and footnotes. +% \begin{macrocode} +\addtolength{\skip\footins}{.25\baselineskip} +% \end{macrocode} +% +% We change the default horizontal space between columns in multicolumn mode. +% \begin{macrocode} +\setlength{\columnsep}{7mm}% +% \end{macrocode} +% +% We change the way the section counter is displayed (the chapter should not appear). +% \begin{macrocode} +\renewcommand{\thesection}{\arabic{section}}% +% \end{macrocode} +% +% In case \Pkg{siunitx} is loaded, we make it follow the French rules. +% \begin{macrocode} +\@ifpackageloaded{siunitx}{% + \addto\extrasenglish{\sisetup{locale = UK}} + \addto\extrasfrench{\sisetup{locale = FR}} + \addto\extrasngerman{\sisetup{locale = DE}} + \addto\extrasgerman{\sisetup{locale = DE}} + \addto\extrasdutch{% + \sisetup{% + exponent-product = \ensuremath { \times } , + inter-unit-product = \, , + output-decimal-marker = { , } + }% + } + \sisetup{detect-all} +} +% \end{macrocode} +% +% \subsection{Redefinition of heading commands} +% +% We redefine the heading commands (×\section× and ×\subsection×, not below as +% the corresponding headings are not numbered) in order the starred versions +% make use of ×\setsecnumdepth{none}× from \Pkg{tocvsec2} and hence save the +% user from having to add the ugly ×\addcontentsline× trick. Here, +% ×\AfterPreamble× is necessary to delay the redefinition when \Pkg{titlesec} +% has done its own. +% +% \begin{macrocode} +\cs_set_eq:NN \_@@_section \section +\cs_set_eq:NN \_@@_subsection \subsection +\cs_set_eq:NN \_@@_subsubsection \subsubsection +\AfterPreamble{% + \RenewDocumentCommand \section { s o m } {% + \IfBooleanTF {#1} + { + \setsecnumdepth{none}% + } + { + \resetsecnumdepth*% + } + \IfNoValueTF{#2}{\_@@_section{#3}}{\_@@_section[#2]{#3}} + } + \RenewDocumentCommand \subsection { s o m } {% + \IfBooleanT {#1} + { + \setsecnumdepth{none}% + } + \IfNoValueTF{#2}{\_@@_subsection{#3}}{\_@@_subsection[#2]{#3}} + } + \RenewDocumentCommand \subsubsection { s o m } {% + \IfBooleanT {#1} + { + \setsecnumdepth{none}% + } + \IfNoValueTF{#2}{\_@@_subsubsection{#3}}{\_@@_subsubsection[#2]{#3}} + } +} +% \end{macrocode} +% +% \section{Miscellaneous private commands specific to the journal} +% +% We create miscellaneous private commands specific to the journal. +% +% Command for centuries. +% \begin{macrocode} +\int_new:N \l_@@_abs_int +% +\cs_new_protected:Nn \_@@_ordinalnum_suffix:n +{ + \int_set:Nn \l_@@_abs_int {\int_abs:n {#1}} + \ifcurrentbaselanguage{english}{ + \int_use:N \l_@@_abs_int + \int_set:Nn \l_tmpa_int {\int_mod:nn {\l_@@_abs_int} {\c_one_hundred}} + \int_case:nnF + { \l_tmpa_int } + { + { \c_eleven } { \fmtord{th} } + { \c_twelve } { \fmtord{th} } + { \c_thirteen } { \fmtord{th} } + }{ + \int_set:Nn \l_tmpb_int {\int_mod:nn {\l_@@_abs_int} {\c_ten}} + \int_case:nnF + { \l_tmpb_int } + { + { \c_zero } { \fmtord{th} } + { \c_one } { \fmtord{st} } + { \c_two } { \fmtord{nd} } + { \c_three } { \fmtord{rd} } + }{ + \fmtord{th} + } + } + }{ + \ifcurrentbaselanguage{dutch}{ + \int_use:N \l_@@_abs_int + e + }{ + \textsc{\int_to_roman:n {\int_abs:n {#1}}} + \ifcurrentbaselanguage{french}{ + \int_compare:nNnTF { \l_@@_abs_int } = { 1 }{\fmtord{er}}{\fmtord{e}} + }{ + \ifcurrentbaselanguage{german}{ + . + }{ + \ifcurrentbaselanguage{ngerman}{ + . + }{ + } + } + } + } + } +} +% +\cs_new_protected:Nn \_@@_century_suffix:n +{ + \space{} + \GetTranslation{century}% + \int_compare:nNnT { #1 } < { 0 }{ + \space + \GetTranslation{before-christ} + }{ + } +} +% \end{macrocode} +% +% \section{Miscellaneous (re)definitions} +% +% We gather here miscellaneous redefinitions. +% +% \begin{macro}{\century} +% In case of \enquote{before-christ} translation usually ending with a period +% (in case of abbreviation), we add a period just after it, but only if the +% character following the "\century" macro is not a period itself. +% \begin{macrocode} +\NewDocumentCommand \century { s m } {% + \_@@_ordinalnum_suffix:n {#2}% + \IfBooleanTF {#1} + { + \int_compare:nNnT { #2 } < { 0 }{ + \_@@_century_suffix:n {#2}% + } + }{ + \_@@_century_suffix:n {#2}% + } + \int_compare:nNnT { #2 } < { 0 }{ + \ifcurrentbaselanguage{english}{% + }{ + \@ifnextchar.% + { + }{ + .\xspace + }% + } + } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\aside} +% \begin{macrocode} +\NewDocumentCommand \aside { s m } {% + \IfBooleanTF {#1} + { + \c_@@_aside_string_tl{}~#2 + } + { + \c_@@_aside_string_tl{}~#2~\c_@@_aside_string_tl + } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ie} +% \begin{macro}{\Ie} +% \begin{macrocode} +\NewDocumentCommand \ie { s } {% + \IfBooleanTF {#1} + { + \GetTranslation{idest} + } + { + \GetTranslation{ie} + \@ifnextchar.% + { + }{ + .\xspace + }% + } +} +\NewDocumentCommand \Ie { s } {% + \IfBooleanTF {#1} + { + \GetTranslation{Idest} + } + { + \GetTranslation{Ie} + \@ifnextchar.% + { + }{ + .\xspace + }% + } +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Vectors} +% +% Vectors, even written with "\vec", are typeset with \pkg{esvect}'s "\vv": +% \begin{macrocode} +\RenewDocumentCommand \vec { m } { + \vv{#1} +} +% \end{macrocode} +% +% \subsection{Usual theorems and the like} +% +% Some usual theorems and the like are defined, thanks to \Pkg{thmtools}. First, +% we define a private function "\_@@_new_theorem" that defines: +% \begin{enumerate} +% \item a new (private, \pkg{thmtools}) theorem with 4 arguments: +% \begin{enumerate} +% \item name of the (private) \pkg{thmtools} theorem, +% \item French title for this theorem, +% \item English title for this theorem. +% \end{enumerate} +% \item a public environment based on this private theorem with a the usual +% syntax of \pkg{amsthm} theorems, except it has an optional argument for +% possible additional options to the default styles ("theorem" or +% "definition"). +% \end{enumerate} +% +% Then, we define a public command, similar to "\newtheorem", based on +% "\_@@_new_theorem", that lets the user define his own theorems: +% \begin{macrocode} +\bool_new:N \g_@@_no_numbered_theorem_bool +\cs_new_protected:Nn \_@@_theorem_style:n +{ + \bool_gset_false:N \g_@@_no_numbered_theorem_bool + \str_case:nn + { #1 } + { + { theorem } { + \theoremstyle{plain} + \theoremheaderfont{\normalfont\bfseries} + \theorembodyfont{\itshape} + \theoremseparator{~--} + \theoremsymbol{} + } + { definition } { + \theoremstyle{plain} + \theoremheaderfont{\normalfont\bfseries} + \theorembodyfont{\normalfont} + \theoremseparator{~--} + \theoremsymbol{} + } + { proof } { + \theoremstyle{nonumberplain} + \bool_gset_true:N \g_@@_no_numbered_theorem_bool + \theoremheaderfont{\normalfont\itshape} + \theorembodyfont{\normalfont} + \theoremseparator{.} + \theoremsymbol{\ensuremath{\square}} + } + } +} +\cs_set_eq:NN \_@@_orig_newtheorem \newtheorem +\cs_new_protected:Nn \_@@_new_theorem:nnnnn +{ + \AtBeginDocument{% + \IfTranslation{English}{#1}{% + }{% + \DeclareTranslation{English}{#1}{\tl_mixed_case:n{#2}}% + } + \IfTranslation{French}{#1}{% + }{% + \DeclareTranslation{French}{#1}{\tl_mixed_case:n{#3}}% + } + \IfTranslation{German}{#1}{% + }{% + \DeclareTranslation{German}{#1}{\tl_mixed_case:n{#4}}% + } + \IfTranslation{Dutch}{#1}{% + }{% + \DeclareTranslation{Dutch}{#1}{\tl_mixed_case:n{#5}}% + } + } + \_@@_orig_newtheorem{#1}{\protect\tl_mixed_case:n{ \protect\GetTranslation{#1} }} + \bool_if:NF {\g_@@_no_numbered_theorem_bool} { + \_@@_orig_newtheorem*{#1_@@_nonumbered}{\protect\tl_mixed_case:n{ \protect\GetTranslation{#1} }} + } +} +\cs_generate_variant:Nn \_@@_new_theorem:nnnnn { nVVVV } +% \end{macrocode} +% +% Then, we define a public command, similar to "\newtheorem", based on +% "\_@@_new_theorem", that lets the user define his own theorems: +% \begin{macrocode} +\RenewDocumentCommand \newtheorem { O{} m } +{ + \tl_clear:N \l_@@_newtheorem_style_tl + \tl_clear:N \l_@@_newtheorem_title_tl + \tl_clear:N \l_@@_newtheorem_french_title_tl + \tl_clear:N \l_@@_newtheorem_english_title_tl + \tl_clear:N \l_@@_newtheorem_german_title_tl + \tl_clear:N \l_@@_newtheorem_dutch_title_tl + % + \tl_set:Nn \l_@@_newtheorem_english_title_tl { + #2 + } + \tl_set:Nf \l_@@_newtheorem_french_title_tl { + \l_@@_newtheorem_english_title_tl + } + \tl_set:Nf \l_@@_newtheorem_german_title_tl { + \l_@@_newtheorem_english_title_tl + } + \tl_set:Nf \l_@@_newtheorem_dutch_title_tl { + \l_@@_newtheorem_english_title_tl + } + \tl_set:Nn \l_@@_newtheorem_style_tl { + theorem + } + \_@@_theorem_style:n {theorem} + \IfNoValueF {#1} + { + \keys_set:nn { nwejm / newtheorem } { #1 } + \tl_if_empty:NF \l_@@_newtheorem_title_tl {% + \tl_set:Nf \l_@@_newtheorem_english_title_tl + { + \l_@@_newtheorem_title_tl + } + \tl_set:Nf \l_@@_newtheorem_french_title_tl + { + \l_@@_newtheorem_title_tl + } + \tl_set:Nf \l_@@_newtheorem_german_title_tl + { + \l_@@_newtheorem_title_tl + } + \tl_set:Nf \l_@@_newtheorem_dutch_title_tl + { + \l_@@_newtheorem_title_tl + } + } + } + % + \_@@_new_theorem:nVVVV + {#2} + {\l_@@_newtheorem_english_title_tl} + {\l_@@_newtheorem_french_title_tl} + {\l_@@_newtheorem_german_title_tl} + {\l_@@_newtheorem_dutch_title_tl} +% \end{macrocode} +% The following line ensures footnotes and, more specifically, autocitations +% (which are in footnotes) are handled in theorems' notes (i.e. in their +% optional argument). +% \begin{macrocode} + \makesavenoteenv{#2} +% \end{macrocode} +% +% \begin{macrocode} + \bool_if:NF {\g_@@_no_numbered_theorem_bool} { + \ifcsmacro{#2*}{% + \RenewDocumentEnvironment{#2*}{o} + { + \IfNoValueTF {##1} + { \begin{#2_@@_nonumbered} } + { \begin{#2_@@_nonumbered}[##1] } + }{ + \end{#2_@@_nonumbered} + } + }{ + \NewDocumentEnvironment{#2*}{o} + { + \IfNoValueTF {##1} + { \begin{#2_@@_nonumbered} } + { \begin{#2_@@_nonumbered}[##1] } + }{ + \end{#2_@@_nonumbered} + } + } + } +% \end{macrocode} +% +% We add to the list of counters we want to be able to easily set to zero the +% ones associated to the (numbered) theorem environments (defined either by the +% class or by the user): +% \begin{macrocode} + \clist_put_right:Nn \g_@@_counters_to_be_reset_clist {#2} +} +% \end{macrocode} +% +% Finally, we define some usual theorems: +% \begin{macrocode} +\newtheorem{theorem} +\newtheorem{corollary} +\newtheorem{conjecture} +\newtheorem{proposition} +\newtheorem{lemma} +\newtheorem{axiom} +% +\newtheorem[style=definition]{definition} +\newtheorem[style=definition]{remark} +\newtheorem[style=definition]{example} +\newtheorem[style=definition]{notation} +% +\newtheorem[style=proof]{proof} +% +\cs_new_protected:Nn \_@@_clone_theorem:nn +{ + \NewDocumentEnvironment{#1}{} + { + \begin{#2} + }{ + \end{#2} + } + \NewDocumentEnvironment{#1*}{} + { + \begin{#2*} + }{ + \end{#2*} + } +} +% +\_@@_clone_theorem:nn {Theorem}{theorem} +\_@@_clone_theorem:nn {Corollary}{corollary} +\_@@_clone_theorem:nn {Conjecture}{conjecture} +\_@@_clone_theorem:nn {Proposition}{proposition} +\_@@_clone_theorem:nn {Lemma}{lemma} +\_@@_clone_theorem:nn {Axiom}{axiom} +\_@@_clone_theorem:nn {Definition}{definition} +\_@@_clone_theorem:nn {Remark}{remark} +\_@@_clone_theorem:nn {Example}{example} +\_@@_clone_theorem:nn {Notation}{notation} +\_@@_clone_theorem:nn {Proof}{proof} +% +\clist_set:Nn \l_tmpa_clist {% + theorem, + corollary, + conjecture, + proposition, + lemma, + axiom, + definition, + remark, + example, + notation, + proof% +} +\clist_map_inline:Nn \l_tmpa_clist { + \crefname{#1}{ + \GetTranslation{#1} + }{% + \GetTranslation{plural-#1} + } + \Crefname{#1}{ + \tl_mixed_case:n{ \protect + \GetTranslation{#1} + } + }{% + \tl_mixed_case:n{ + \GetTranslation{plural-#1} + } + } +} +% \end{macrocode} +% +% \subsection{Assertions and hypotheses enumerations} +% +% An environment for assertions' and hypotheses enumerations are provided in +% order to display them homogeneously: +% \begin{macrocode} +\clist_set:Nn \l_tmpa_clist {% + hypothesis, + assertion% +} +\clist_map_inline:Nn \l_tmpa_clist { + \newlist{#1}{enumerate}{1} + \setlist[#1]{% + label= + \normalfont + ( + \textsf{ + \tl_upper_case:n {\tl_head:f {\GetTranslation{#1}}} + } + $\c_math_subscript_token\mathsf{\arabic*}$), + ref=( + \textsf{ + \tl_upper_case:n {\tl_head:f {\GetTranslation{#1}}} + } + $_\mathsf{\arabic*}$ + ) + } + \crefname{#1i}{ + \GetTranslation{#1} + }{% + \GetTranslation{plural-#1} + } + \Crefname{#1i}{ + \tl_mixed_case:n{ + \GetTranslation{#1} + } + }{% + \tl_mixed_case:n{ + \GetTranslation{plural-#1} + } + } +} +\NewDocumentEnvironment{hypotheses}{} +{ + \begin{hypothesis} + }{ + \end{hypothesis} +} +\NewDocumentEnvironment{assertions}{} +{ + \begin{assertion} + }{ + \end{assertion} +} +% \end{macrocode} +% +% We borrow the following code provided by Enrico Gregorio (see +% \url{http://tex.stackexchange.com/q/289913/18401}) in order to improve the +% operators defined with ×\DeclareMathOperator×. +% \begin{macrocode} +\RenewDocumentCommand{\DeclareMathOperator}{mm} +{ + \NewDocumentCommand{#1}{} + { + \operatorname{#2} + \peek_after:Nw \@@_opx_check: + } +} +\NewDocumentCommand{\BinaryOperators}{m} +{ + \clist_gput_right:Nn \g_@@_opx_binary_clist { #1 } +} +\clist_new:N \g_@@_opx_binary_clist +\cs_new_protected:Nn \@@_opx_check: +{ + \clist_map_inline:Nn \g_@@_opx_binary_clist + { + \token_if_eq_meaning:NNT \l_peek_token ##1 { \clist_map_break:n { {\!} } } + } +} +\BinaryOperators{% + \amalg,% + \ast,% + \bigcirc,% + \bigtriangledown,% + \bigtriangleup,% + \bullet,% + \cap,% + \cdot,% + \circ,% + \cup,% + \dagger,% + \ddagger,% + \diamond,% + \div,% + \lhd,% + \mp,% + \odot,% + \ominus,% + \oplus,% + \oslash,% + \otimes,% + \pm,% + \rhd,% + \setminus,% + \sqcap,% + \sqcup,% + \star,% + \times,% + \triangleleft,% + \triangleright,% + \unlhd,% + \unrhd,% + \uplus,% + \vee,% + \wedge,% + \wr,% + \barwedge,% + \boxdot,% + \boxminus,% + \boxplus,% + \boxtimes,% + \Cap,% + \centerdot,% + \circledast,% + \circledcirc,% + \circleddash,% + \Cup,% + \curlyvee,% + \curlywedge,% + \divideontimes,% + \dotplus,% + \doublebarwedge,% + \intercal,% + \leftthreetimes,% + \ltimes,% + \rightthreetimes,% + \rtimes,% + \smallsetminus,% + \veebar% +} +% \end{macrocode} +% +% \subsection{(Reciprocal) Trigonometric and hyperbolic functions} +% +% Reciprocal trigonometric functions, even written with usual "\arccos", +% "\arcsin", "\arctan", etc. are typeset with an uppercase \enquote{A}: +% \begin{macrocode} +\DeclareMathOperator{\cotan}{cotan} +\DeclareMathOperator{\Arccos}{Arccos} +\DeclareMathOperator{\Arcsin}{Arcsin} +\DeclareMathOperator{\Arctan}{Arctan} +\DeclareMathOperator{\arccosh}{arccosh} +\DeclareMathOperator{\arcsinh}{arcsinh} +\DeclareMathOperator{\arctanh}{arctanh} +\DeclareMathOperator{\Argch}{Argch} +\DeclareMathOperator{\Argsh}{Argsh} +\DeclareMathOperator{\Argth}{Argth} +\cs_set_eq:NN \_@@_orig_arccos \arccos +\cs_set_eq:NN \_@@_orig_arcsin \arcsin +\cs_set_eq:NN \_@@_orig_arctan \arctan +\cs_set_eq:NN \_@@_orig_arccosh \arccosh +\cs_set_eq:NN \_@@_orig_arcsinh \arcsinh +\cs_set_eq:NN \_@@_orig_arctanh \arctanh +\RenewDocumentCommand \arccos {} { + \ifcurrentbaselanguage{french}{\Arccos}{\_@@_orig_arccos}% +} +\RenewDocumentCommand \arcsin {} { + \ifcurrentbaselanguage {french}{\Arcsin}{\_@@_orig_arcsin}% +} +\RenewDocumentCommand \arctan {} { + \ifcurrentbaselanguage {french}{\Arctan}{\_@@_orig_arctan}% +} +\RenewDocumentCommand \arccosh {} { + \ifcurrentbaselanguage{french}{\Argch}{\_@@_orig_arccosh}% +} +\RenewDocumentCommand \arcsinh {} { + \ifcurrentbaselanguage {french}{\Argsh}{\_@@_orig_arcsinh}% +} +\RenewDocumentCommand \arctanh {} { + \ifcurrentbaselanguage {french}{\Argth}{\_@@_orig_arctanh}% +} +% \end{macrocode} +% +% Various other operators. +% \begin{macrocode} +\cs_set_eq:NN \_@@_orig_cot \cot +\RenewDocumentCommand \cot {} { + \ifcurrentbaselanguage {french}{\cotan}{\_@@_orig_cot}% +} +\DeclareMathOperator{\ch}{ch} +\DeclareMathOperator{\sh}{sh} +\cs_set_eq:NN \_@@_orig_cosh \cosh +\cs_set_eq:NN \_@@_orig_sinh \sinh +\cs_set_eq:NN \_@@_orig_tanh \tanh +\RenewDocumentCommand \cosh {} { + \ifcurrentbaselanguage {french}{\ch}{\_@@_orig_cosh}% +} +\RenewDocumentCommand \sinh {} { + \ifcurrentbaselanguage {french}{\sh}{\_@@_orig_sinh}% +} +\RenewDocumentCommand \tanh {} { + \ifcurrentbaselanguage {french}{\operatorname{th}}{\_@@_orig_tanh}% +} +\DeclareMathOperator{\Id}{Id} +\cs_set_eq:NN \_@@_orig_log \log +\cs_set_eq:NN \_@@_orig_lg \lg +\RenewDocumentCommand \log { s } { + \IfBooleanTF {#1} + { + \_@@_orig_log + } + { + \ln + } +} +\RenewDocumentCommand \lg { s } { + \IfBooleanTF {#1} + { + \_@@_orig_lg + } + { + \ln + } +} +% \end{macrocode} +% +% \subsection{Miscellaneous constants} +% +% We define here the constants $\exp(1)$ (and the function which derives from +% it) and the complex number $i$/ +% \begin{macrocode} +\NewDocumentCommand \E { O{} } { + \ensuremath{ + \mathsf{e} + \tl_if_empty:nF {#1} {^{#1}} + } +} +\NewDocumentCommand \I { } { + \ensuremath{\mathsf{i}} +} +% \end{macrocode} +% +% \subsection{Miscellaneous operators} +% +% \begin{macrocode} +\bool_new:N \g_@@_grad_used_bool +\NewDocumentCommand \grad {} {% + \bool_if:NTF \g_@@_gradient_nabla_bool { + \operatorname{\nabla} + }{ + \operatorname{grad} + }% + \peek_after:Nw \@@_opx_check: + \bool_if:NTF \g_@@_grad_used_bool { + \bool_if:nT { (\g_@@_gradient_nabla_bool && !\g_@@_gradient_nabla_control_bool) + || ( !\g_@@_gradient_nabla_bool && \g_@@_gradient_nabla_control_bool) } { + \msg_error:nnn{nwejmart}{Article~setup~not~consistent}{gradient} + } + }{ + \bool_gset_eq:NN \g_@@_gradient_nabla_control_bool \g_@@_gradient_nabla_bool + \bool_gset_true:N \g_@@_grad_used_bool + } +} +\DeclareMathOperator{\Div}{div} +\NewDocumentCommand \curl {} {% + \ifcurrentbaselanguage {english}{ + \operatorname{curl} + }{ + \operatorname{rot} + }% + \peek_after:Nw \@@_opx_check: +} +\NewDocumentCommand \supp {} {% + \ifcurrentbaselanguage {ngerman}{ + \operatorname{Tr} + }{ + \operatorname{supp} + }% + \peek_after:Nw \@@_opx_check: +} +% \end{macrocode} +% +% We define a command for the differential operator. +% \begin{macrocode} +\NewDocumentCommand \dif {}{\mathop{}\!\mathrm{d}} +% \end{macrocode} +% +% \subsection{Various math utilities} +% +% \begin{macrocode} +\cs_set_eq:NN \_@@_orig_leq \leq +\cs_set_eq:NN \_@@_orig_geq \geq +\RenewDocumentCommand \le {} {% + \ifcurrentbaselanguage {french}{\leqslant}{\_@@_orig_leq}% +} +\RenewDocumentCommand \leq {} {% + \ifcurrentbaselanguage {french}{\leqslant}{\_@@_orig_leq}% +} +\RenewDocumentCommand \ge {} {% + \ifcurrentbaselanguage {french}{\geqslant}{\_@@_orig_geq}% +} +\RenewDocumentCommand \geq {} {% + \ifcurrentbaselanguage {french}{\geqslant}{\_@@_orig_geq}% +} +% \end{macrocode} +% +% \subsection{(Big) Sets} +% +% \begin{macrocode} +\NewDocumentCommand \bbN {} {\mathbb{N}} +\NewDocumentCommand \bbZ {} {\mathbb{Z}} +\NewDocumentCommand \bbD {} {\mathbb{D}} +\NewDocumentCommand \bbQ {} {\mathbb{Q}} +\NewDocumentCommand \bbR {} {\mathbb{R}} +\NewDocumentCommand \bbC {} {\mathbb{C}} +\NewDocumentCommand \bbK {} {\mathbb{K}} +% \end{macrocode} +% +% We replace the ugly default ×\emptyset× by the much nicer ×\varnothing×. +% \begin{macrocode} +\cs_set_eq:NN \emptyset \varnothing +% \end{macrocode} +% +% Now, a command for displaying the sets. +% \begin{macrocode} +\tl_new:N \l_@@_given_tl +\tl_set:Nn \l_@@_given_tl { + \nonscript\:\delimsize\slash + \allowbreak + \nonscript\: + \mathopen{} +}% +\DeclarePairedDelimiterX\_@@_set[1]\{\}{% + #1 +} +\NewDocumentCommand \set { m O{} } { + \if@display + \tl_if_empty:nTF {#2} {% + \__nwejm_set*{#1} + }{ + \__nwejm_set*{#1\l__nwejm_given_tl #2} + } + \else + \tl_if_empty:nTF {#2} {% + \__nwejm_set{#1} + }{ + \__nwejm_set{#1\l__nwejm_given_tl #2} + } + \fi +} +% \end{macrocode} +% +% \subsection{Paired delimiters} +% +% The following code is adapted from +% \url{http://tex.stackexchange.com/a/136767/18401} which defines a variant to +% \pkg{mathtools}' ×\DeclarePairedDelimiter× that improves it. Note that the +% behaviour is reversed from \pkg{mathtools}' one: the starred versions of the +% commands don't expand to the height of the contained material whereas the non +% starred versions, if used without the optional argument, do expand to the +% height of the contained material. +% \begin{macrocode} +\DeclareDocumentCommand{\NewPairedDelimiter}{mm} + { + \_@@_delimiter_clear_keys: % reset to the default + \keys_set:nn { nwejm/delimiters } { #2 } + \use:x % we want to expand the values of the token variables set with the keys + { + \exp_not:n {\NewDocumentCommand{#1}{sO{}m} } + { + \exp_not:n { \IfBooleanTF{##1} } + { + \exp_not:N \@@_paired_delimiter:nnnnn + { \exp_not:n { 0 } } + { \exp_not:V \l_@@_delimiter_left_tl } + { \exp_not:V \l_@@_delimiter_right_tl } + { \exp_not:n { ##3 } } + { \exp_not:V \l_@@_delimiter_subscript_tl } + } + { + \exp_not:N \@@_paired_delimiter:nnnnn + { \exp_not:n { ##2 } } + { \exp_not:V \l_@@_delimiter_left_tl } + { \exp_not:V \l_@@_delimiter_right_tl } + { \exp_not:n { ##3 } } + { \exp_not:V \l_@@_delimiter_subscript_tl } + } + } + } + } +\keys_define:nn { nwejm/delimiters } + { + left .tl_set:N = \l@@_delimiter_left_tl, + right .tl_set:N = \l@@_delimiter_right_tl, + subscript .tl_set:N = \l@@_delimiter_subscript_tl, + } +\cs_new_protected:Npn \_@@_delimiter_clear_keys: + { + \keys_set:nn { nwejm/delimiters } { left=.,right=.,subscript={} } + } +\cs_new_protected:Npn \@@_paired_delimiter_expand:nnnn #1 #2 #3 #4 + {% Fix the spacing issue with \left and \right (D. Arsenau, P. Stephani and H. Oberdiek) + \mathopen{} + \mathclose\c_group_begin_token + \left#1 + #3 + \group_insert_after:N \c_group_end_token + \right#2 + \tl_if_empty:nF {#4} { \c_math_subscript_token {#4} } + } +\cs_new_protected:Npn \@@_paired_delimiter_fixed:nnnnn #1 #2 #3 #4 #5 + { + \mathopen{#1#2}#4\mathclose{#1#3} + \tl_if_empty:nF {#5} { \c_math_subscript_token {#5} } + } +\cs_new_protected:Npn \@@_paired_delimiter:nnnnn #1 #2 #3 #4 #5 + { + \str_case:nnF {#1} + { + { } { \@@_paired_delimiter_expand:nnnn {#2}{#3}{#4}{#5} } + {0} { \@@_paired_delimiter_fixed:nnnnn {}{#2}{#3}{#4}{#5} } + {1} { \@@_paired_delimiter_fixed:nnnnn { \big }{#2}{#3}{#4}{#5} } + {\big} { \@@_paired_delimiter_fixed:nnnnn { \big }{#2}{#3}{#4}{#5} } + {2} { \@@_paired_delimiter_fixed:nnnnn { \Big }{#2}{#3}{#4}{#5} } + {\Big} { \@@_paired_delimiter_fixed:nnnnn { \Big }{#2}{#3}{#4}{#5} } + {3} { \@@_paired_delimiter_fixed:nnnnn { \bigg }{#2}{#3}{#4}{#5} } + {\bigg} { \@@_paired_delimiter_fixed:nnnnn { \bigg }{#2}{#3}{#4}{#5} } + {4} { \@@_paired_delimiter_fixed:nnnnn { \Bigg }{#2}{#3}{#4}{#5} } + {\Bigg} { \@@_paired_delimiter_fixed:nnnnn { \Bigg }{#2}{#3}{#4}{#5} } + } + { + \msg_warning:nnn{nwejmart}{Wrong~paired~delimiter's~size~parameter}{#1} + \@@_paired_delimiter_expand:nnnn {#2}{#3}{#4} + } + } +% \end{macrocode} +% +% Thanks to ×\NewPairedDelimiter×, we define various paired delimiters such +% as norms, absolute value, etc. +% \begin{macrocode} +\NewPairedDelimiter{\norm}{ + left=\lVert, + right=\rVert +} +\NewPairedDelimiter{\lnorm}{ + left=\lVert, + right=\rVert, + subscript=1 +} +\NewPairedDelimiter{\llnorm}{ + left=\lVert, + right=\rVert, + subscript=2 +} +\NewPairedDelimiter{\lpnorm}{ + left=\lVert, + right=\rVert, + subscript=p +} +\NewPairedDelimiter{\supnorm}{ + left=\lVert, + right=\rVert, + subscript=\infty +} +\NewPairedDelimiter{\abs}{ + left=\lvert, + right=\rvert +} +\NewPairedDelimiter{\prt}{ + left=(, + right=) +} +\NewPairedDelimiter{\brk}{ + left=[, + right=] +} +\NewPairedDelimiter{\brc}{ + left=\{, + right=\} +} +\NewPairedDelimiter{\lrangle}{ + left=\langle, + right=\rangle +} +\NewPairedDelimiter{\leqgeq}{ + left=<, + right=> +} +% \end{macrocode} +% +% \section{Packages settings, libraries loading, etc.} +% +% We gather here miscellaneous settings. +% +% \subsection{Related to \Pkg{autonum}} +% +% We add \pkg{autonum} support for ×\vref× referencing command: +% \begin{macrocode} +\AfterEndPreamble{ + \autonum@generatePatchedReferenceCSL{vref} +% \end{macrocode} +% +% The \Pkg{autonum} deletes the definitions of the starred versions of the +% ×equation×, ×align×, ×gather×, ×multline×, ×flalign× environments and that +% may be troubling for the user. Hence we redefine them to be the same as their +% unstarred counterparts: +% \begin{macrocode} + \clist_set:Nn \l_tmpa_clist {equation,align,gather,multline,flalign} + \clist_map_inline:Nn \l_tmpa_clist { + \cs_set_eq:cc {#1*} {#1} + \cs_set_eq:cc {end#1*} {end#1} + } + % \msg_warning:nnn{nwejmart}{Starred~AMS~environments}{#1} +} +% \end{macrocode} +% +% \subsection{Related to \Pkg{etoc}} +% +% TOC depth level is ×section×: +% \begin{macrocode} +%<class>\etocsettocdepth{section} +%<class-article>\etocsettocdepth{subsection} +% \end{macrocode} +% +% \subsection{Related to \Pkg{pgfplots}} +% +% (French) Numbers format: +% \begin{macrocode} +\@ifpackageloaded{pgfplots}{% + \ifcurrentbaselanguage{french}{% + \pgfplotsset{% + /pgf/number~format/.cd, + use~comma, + 1000~sep={\,}, + min~exponent~for~1000~sep=4 + }% + }{ + } +} +% \end{macrocode} +% +% \subsection{Related to \Pkg{biblatex}} +% +% % Use the new French abbreviations +% % \begin{macrocode} +% \DeclareLanguageMapping{french}{nwejm}% +% % \end{macrocode} +% +% Necessary setting (otherwise \textquote{REFERENCES} is displayed in both +% header and footer on the page (and the following ones until the next article) +% where the bibliography appears). +% \begin{macrocode} +\AtEndPreamble{% + \defbibheading{_@@_subbibliography}[\refname]{% + \section*{#1} + }% +% \end{macrocode} +% +% For formal citations (cf. \Package{csquotes}): +% \begin{macrocode} + \SetCiteCommand{\autocite}% +}% +% \end{macrocode} +% +% \begin{macro}{\printbibliography} +% \begin{macrocode} +\int_new:N \l_@@_section_int +\cs_set_eq:NN \_@@_printbibliography \printbibliography +\RenewDocumentCommand \printbibliography { O{} } { +% \end{macrocode} +% We force all the previous floats to be processed no later on the page +% following the beginning of the bibliography. +% \begin{macrocode} +%<class> \FloatBarrier% +% \end{macrocode} +% We automatically insert the acknowledgments (if any) before the bibliography. +% \begin{macrocode} + \tl_if_empty:NF {\g_@@_article_acknowledgments_tl} + { + \section*{\GetTranslation{Acknowledgments}} + \g_@@_article_acknowledgments_tl + \tl_gclear:N \g_@@_article_acknowledgments_tl + } + \_@@_printbibliography[heading=_@@_subbibliography,resetnumbers,#1] +% \end{macrocode} +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \subsection{Miscellaneous} +% +% \begin{macrocode} +%<*class-article> +% \end{macrocode} +% +% The independant articles contain their (local) table of contents at their end. +% \begin{macrocode} + \bool_if:NF \g_@@_nolocaltoc_bool { + \newpage + \setcounter{page}{0} + \pagenumbering{roman}% + \etocarticlestylenomarks +% \end{macrocode} +% +% We don't want the article's title (chapter's title) in the (local) table of +% contents. +% \begin{macrocode} + \etocsetlevel{chapter}{6} + \tableofcontents + } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +} +% \end{macrocode} +% \end{macro} +% +% As bibiliographic resource, we add the file of the current issue. +% \begin{macrocode} +\exp_after:wN\addbibresource\exp_after:wN{\c_@@_issue_bib_path_string_tl} +% \end{macrocode} +% +% \subsection{Related to \Pkg{kpfonts}} +% +% We robustify the "\itshape" redefinition (in case of "easyscsl" option), that +% is not robust in \pkg{kpfonts} code +% (cf. \url{https://groups.google.com/d/msg/fr.comp.text.tex/hIi97ipK5qA/WJoPwvH-p1UJ}). +% \begin{macrocode} +\ifkp@easyscsl +\DeclareRobustCommand{\itshape}{\not@math@alphabet\itshape\mathit% + \ifthenelse{\equal{\f@shape}{\scdefault}}{\fontshape{scsl}}{% + \fontshape\itdefault}\selectfont} +\fi +% \end{macrocode} +% +% We replace the \pkg{kpfonts}' \enquote{mathfrak} by the one from +% \enquote{eufrak}, as the former doesn't provide Euler Fraktur digits. +% \begin{macrocode} +\DeclareMathAlphabet\mathfrak{U}{euf}{m}{n} +\SetMathAlphabet\mathfrak{bold}{U}{euf}{b}{n} +% \end{macrocode} +% +% \subsection{Related to \Pkg{hyperref}} +% +% We perform a workaround replacement macro for short form of acronyms in +% headings title in order to let them smoothly appear in the bookmarks. +% \begin{macrocode} +\expandafter\def\expandafter\pdfstringdefPreHook +\expandafter{% + \pdfstringdefPreHook + \renewcommand{\acrshort}[1]{\tl_upper_case:n {\glsentryshort{##1}}}% +} +% \end{macrocode} +% +% \subsection{Related to \Pkg{draftwatermark}} +% +% \begin{macrocode} +\@ifpackageloaded{draftwatermark}{% + \SetWatermarkColor{gray!10}% + \SetWatermarkFontSize{30mm}% + \SetWatermarkText{\MakeUppercase{\c_@@_draftwatermark_string_tl}}% +}{% +} +% \end{macrocode} +% +% In case of \hologo{pdfTeX} engine, the document makes use of the \pkg{lmodern} +% for the \enquote{ttfamily} font. +% \begin{macrocode} +\pdftex_if_engine:T + { + \renewcommand{\ttdefault}{lmtt} + } +% \end{macrocode} +% +% \begin{macrocode} +\tl_new:N \g_@@_font_designer_text_tl% +\cs_new_protected:Nn \@@_font_designer_text:n +{ + \tl_gset:Nn \g_@@_font_designer_text_tl { #1 } +} +\NewDocumentCommand \fontdesignertext {m} +{ + \_@@_font_designer_text:n {#1}% +} +% \end{macrocode} +% +% \begin{macrocode} +\tl_new:N \g_@@_printer_text_tl% +\cs_new_protected:Nn \@@_printer_text:n +{ + \tl_gset:Nn \g_@@_printer_text_tl { #1 } +} +\NewDocumentCommand \printertext {m} +{ + \_@@_printer_text:n {#1}% +} +% \end{macrocode} +% +% \begin{macro}{\nwejm} +% \begin{macrocode} +\NewDocumentCommand \nwejm { s } { + \IfBooleanTF {#1} + { + \g_@@_nwejm_string_tl + } + { + \g_@@_nwejm_short_string_tl + } + \xspace +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \begin{macrocode} +\AtBeginDocument{% + \dim_if_exist:NTF \g_@@_pagegrid_dim {% + \pagegridsetup{% + enable,% + step=\g_@@_pagegrid_dim% + } + }{% + \pagegridsetup{% + disable% + } + } + \bool_if:NTF {\g_@@_for_authors_bool} { + \thispagestyle{empty} + \includegraphics{gzt-logo} + \hfill + \includegraphics[height=22.5mm]{\c_@@_smf_logo_file_string_tl}% + \par + \vfill + \begin{adjustbox}{valign=c,minipage=\linewidth} + \Large% + \c_@@_preliminary_version_string_tl% + \end{adjustbox} + \vfill + \newpage + }{ + \bool_if:NF {\g_@@_inside_pages_bool} { + \g_@@_display_frontcover_tl + \g_@@_display_inside_frontcover_tl + } + \tableofcontents + } +} +% \end{macrocode} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% Because articles' title are displayed thanks to the ×\chapter× command, we +% have to format its layout. +% \begin{macrocode} +\AfterEndPreamble{% + \titleformat{\chapter}[block] + {\normalfont\centering}{}{0pt}{} + \titlespacing*{\chapter}{0pt}{0pt}{0pt} +} +% \end{macrocode} +% +% We now leave the \LaTeX3{} programming environment. +% \begin{macrocode} +\ExplSyntaxOff +% \end{macrocode} +% +% We get rid of useless overfull hbox warnings (due to ×fleqn× and +% \Pkg{autonum}) by telling autonum to ignore overfull box messages when it does +% its tentative math environment in order to establish some internal values (see +% \url{http://tex.stackexchange.com/q/205393/18401}). But this patch works only +% outside ×\ExplSyntaxOn×/×\ExplSyntaxOff× +% \begin{macrocode} +\patchcmd{\autonum@saveEnvironmentSubcommands} + {(0,0)\begin} + {(0,0)\hfuzz=\maxdimen\begin} + {}{} +% \end{macrocode} +% +% \begin{macrocode} +%</class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +%<*languagemodel> +% \end{macrocode} +% +% \begin{macrocode} + \ProvidesFile{nwejm.lbx} + \InheritBibliographyExtras{french}% extras are inherited from French... + \DeclareBibliographyStrings{% + inherit = {french},% .... as well as all the keys + number = {{\no}{\no}}, + volume = {{volume}{vol\adddot}}, + volumes = {{volumes}{vol\adddot}}, + } +% \end{macrocode} +% +% \begin{macrocode} +%</languagemodel> +% \end{macrocode} +% +% \section{Initial configuration file} +% +% \begin{macrocode} +%<*configuration> +% \end{macrocode} +% +% First, we create the new entry type "interview" and the new field +% "interviewee". +% \begin{macrocode} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Journal data +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\journalsetup{% + publisher = \nwejm, + address = UFR de Math\'{e}matiques -- B\^atiment M2 -- Bureau 10\newline + Universit\'{e} Lille 1 -- Cit\'{e} Scientifique\newline + 59655 Villeneuve d'Ascq, + phone = +33 (0)3 20 43 42 33, + email = aurore.smets@univ-lille1.fr, + url = http://math.univ-lille1.fr/~nwejm/, + issn = +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Editor in chief +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\editorinchief{Nicaise, Serge}{Universit\'{e} de Valenciennes et du Hainaut Cambr\'{e}sis +}{France}{serge.nicaise@univ-valenciennes.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Fields editor +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\fieldseditor{Craig, Walter}{McMaster University}{Canada}{craig@math.mcmaster.ca} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Managing editor +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\managingeditor{Wicker, Nicolas}{Universit\'{e} Lille 1}{France}{Nicolas.Wicker@math.univ-lille1.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Editors +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\editor{Apel, Thomas}{Universit{\"a}t der Bundeswehr München}{Germany}{thomas.apel@unibw.de} +\editor{Beauchard, Karine}{\textsc{ens} Rennes}{France}{Karine.Beauchard@math.polytechnique.fr} +\editor{von Below, Joachim}{Universit\'{e} du Littoral C\^{o}te d'Opale}{France}{vonbelow@lmpa.univ-littoral.fr} +\editor{Biernacki, Christophe}{Universit\'{e} de Lille 1}{France}{christophe.biernacki@math.univ-lille1.fr} +\editor{Chainais-Hillairet, Claire}{Universit\'{e} de Lille 1}{France}{claire.chainais@math.univ-lille1.fr} +\editor{Dauge, Monique}{Universit\'{e} de Rennes I}{France}{monique.dauge@univ-rennes1.fr} +\editor{David, Sinnou}{Universit\'{e} Paris VI}{France}{david@math.jussieu.fr} +\editor{Davydov, Youri}{Universit\'{e} de Lille 1}{France}{youri.davydov@math.univ-lille1.fr} +\editor{D\`{e}bes, Pierre}{Universit\'{e} de Lille 1}{France}{pierre.debes@math.univ-lille1.fr} +\editor{Demailly, Jean-Pierre}{Universit\'{e} de Grenoble 1}{France}{jean-pierre.demailly@ujf-grenoble.fr} +\editor{Droniou, J\'{e}r\^{o}me}{Monash University}{Australia}{jerome.droniou@monash.edu} +\editor{El Kacimi, Aziz}{Universit\'{e} de Valenciennes et du Hainaut Cambr\'{e}sis}{France}{aziz.elkacimi@univ-valenciennes.fr} +\editor{Fleischmann, Peter}{University of Kent}{United Kingdom}{p.fleischmann@kent.ac.uk} +\editor{Fresse, Benoît}{Universit\'{e} de Lille 1}{France}{benoit.fresse@math.univ-lille1.fr} +\editor{Fricain, Emmanuel}{Universit\'{e} de Lille 1}{France}{emmanuel.fricain@math.univ-lille1.fr} +\editor{Gaffney, Eamonn}{Oxford University}{United Kingdom}{gaffney@maths.ox.ac.uk} +\editor{Gloria, Antoine}{Universit\'{e} Libre de Bruxelles}{Belgium}{antoine.gloria@ulb.ac.be} +\editor{Godefroy, Gilles}{Universit\'{e} Paris VI}{France}{godefroy@math.jussieu.fr} +\editor{Grosse-Erdmann, Karl}{Universit\'{e} de Mons}{Belgium}{kg.grosse-erdmann@umons.ac.be} +\editor{Guo, Bao-Zhu}{Academy of Mathematics and Systems Science, Academia Sinica, Beijing}{China}{bzguo@iss.ac.cn} +\editor{Lambrechts, Pascal}{Universit\'{e} Catholique de Louvain}{Belgium}{pascal.lambrechts@uclouvain.be} +\editor{Lef\`{e}vre, Pascal}{Universit\'{e} d'Artois}{France}{pascal.lefevre@univ-artois.fr} +\editor{Leroy, Andr\'{e}}{Universit\'{e} d'Artois}{France}{andreleroy55@gmail.com} +\editor{Loeb, Jean-Jacques}{Universit\'{e} d'Angers}{France}{jean-jacques.loeb@univ-angers.fr} +\editor{Luca, Florian}{University of Witwatersrand}{South-Africa}{florian.luca@wits.ac.za} +\editor{Matom{\"a}ki Kaisa}{University of Turku}{Finland}{ksmato@utu.fi} +\editor{Michaux, Christian}{Universit\'{e} de Mons}{Belgium}{christian.michaux@umons.ac.be} +\editor{Moerdijk, Ieke}{Radboud University Nijmegen}{Netherlands}{i.moerdijk@math.ru.nl} +\editor{Murua, Alejandro}{Universit\'{e} de Montr\'{e}al}{Canada}{murua@dms.umontreal.ca} +\editor{Nakamura, Hiroaki}{Osaka University}{Japan}{nakamura@math.sci.osaka-u.ac.jp} +\editor{van Neerven, Jan}{Delft University of Technology}{Netherlands}{j.m.a.m.vanneerven@tudelft.nl} +\editor{Nicaise, Johannes}{Katholieke Universiteit Leuven}{Belgium}{Johannes.Nicaise@wis.kuleuven.be} +\editor{Norvaisa, Rimas}{Vilnius University}{Lituany}{rimas.norvaisa@mii.vu.lt} +\editor{Peccati, Giovanni}{University of Luxembourg}{Luxembourg}{giovanni.peccati@gmail.com} +\editor{Pirashvili, Teimuraz}{University of Leicester}{United Kingdom}{tp59@le.ac.uk} +\editor{Ramar\'{e}, Olivier}{Universit\'{e} de Lille 1}{France}{olivier.ramare@math.univ-lille1.fr} +\editor{Roelly, Sylvie}{University of Potsdam}{Germany}{roelly@math.uni-potsdam.de} +\editor{Stubbe, Isar}{Universit\'{e} du Littoral C\^{o}te d'Opale}{France}{isar.stubbe@lmpa.univ-littoral.fr} +\editor{Suquet, Charles}{Universit\'{e} de Lille 1}{France}{charles.suquet@math.univ-lille1.fr} +\editor{Tazzioli, Rossana}{Universit\'{e} de Lille 1}{France}{rossana.tazzioli@math.univ-lille1.fr} +\editor{Tignol, Jean-Pierre}{Universit\'{e} Catholique de Louvain}{Belgium}{jean-pierre.tignol@uclouvain.be} +\editor{Wu, Jie}{Institut Elie Cartan}{France}{jie.wu@univ-lorraine.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Secretary +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\secretary{Smets, Aurore}{}{}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LaTeX class designer (and maintainer(s)) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\classdesigner{Bitouz\'{e}, Denis}{Universit\'{e} du Littoral C\^{o}te d'Opale}{France}{denis.bitouze@lmpa.univ-littoral.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Computer engineer +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\computerengineer{Huart, S\'{e}bastien}{Universit\'{e} de Lille 1}{France}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Font designer text +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\fontdesignertext{We make use of the set of fonts \href{http://ctan.org/pkg/kpfonts}{Kp-Fonts}, designed by Christophe Caignaert.} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Printer text +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\printingservice{Derycke, Jean-Jacques}{Universit\'{e} de Lille 1}{France}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Authors instructions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \begin{authorsinstructions} +% Bla bla bla. +% \end{authorsinstructions} +% \end{macrocode} +% +% \begin{macrocode} +%</configuration> +% \end{macrocode} +% +% \section{Dictionaries files} +% +% \begin{macrocode} +%<*english> +% \end{macrocode} +% +% \begin{macrocode} +\ProvideDictionaryFor{English}{nwejm} +% +\ProvideDictTranslation{theorem}{theorem} +\ProvideDictTranslation{corollary}{corollary} +\ProvideDictTranslation{conjecture}{conjecture} +\ProvideDictTranslation{remark}{remark} +\ProvideDictTranslation{axiom}{axiom} +\ProvideDictTranslation{definition}{definition} +\ProvideDictTranslation{example}{example} +\ProvideDictTranslation{lemma}{lemma} +\ProvideDictTranslation{notation}{notation} +\ProvideDictTranslation{proposition}{proposition} +\ProvideDictTranslation{proof}{proof} +\ProvideDictTranslation{plural-theorem}{theorems} +\ProvideDictTranslation{plural-corollary}{corollaries} +\ProvideDictTranslation{plural-conjecture}{conjectures} +\ProvideDictTranslation{plural-remark}{remarks} +\ProvideDictTranslation{plural-axiom}{axioms} +\ProvideDictTranslation{plural-definition}{definitions} +\ProvideDictTranslation{plural-example}{examples} +\ProvideDictTranslation{plural-lemma}{lemmas} +\ProvideDictTranslation{plural-notation}{notations} +\ProvideDictTranslation{plural-proposition}{propositions} +\ProvideDictTranslation{plural-proof}{proofs} +% +\ProvideDictTranslation{volume-abbreviated}{vol.} +% +\ProvideDictTranslation{plural-keyword}{keywords} +% +\ProvideDictTranslation{received}{received} +\ProvideDictTranslation{accepted}{accepted} +\ProvideDictTranslation{online}{online} +% +\ProvideDictTranslation{hypothesis}{hypothesis} +\ProvideDictTranslation{plural-hypothesis}{hypotheses} +% +\ProvideDictTranslation{assertion}{assertion} +\ProvideDictTranslation{plural-assertion}{assertions} +% +\ProvideDictTranslation{century}{century} +\ProvideDictTranslation{before-christ}{BC} +% +\ProvideDictTranslation{Acknowledgments}{Acknowledgments} +% +\ProvideDictTranslation{idest}{id~est} +\ProvideDictTranslation{ie}{i.e} +\ProvideDictTranslation{Idest}{Id~est} +\ProvideDictTranslation{Ie}{I.e} +% \end{macrocode} +% +% \begin{macrocode} +%</english> +% \end{macrocode} +% +% \begin{macrocode} +%<*french> +% \end{macrocode} +% +% \begin{macrocode} +\ProvideDictionaryFor{French}{nwejm} +% +\ProvideDictTranslation{theorem}{th\'{e}or\`{e}me} +\ProvideDictTranslation{corollary}{corollaire} +\ProvideDictTranslation{conjecture}{conjecture} +\ProvideDictTranslation{remark}{remarque} +\ProvideDictTranslation{axiom}{axiome} +\ProvideDictTranslation{definition}{d\'{e}finition} +\ProvideDictTranslation{example}{exemple} +\ProvideDictTranslation{lemma}{lemme} +\ProvideDictTranslation{notation}{notation} +\ProvideDictTranslation{proposition}{proposition} +\ProvideDictTranslation{proof}{preuve} +\ProvideDictTranslation{plural-theorem}{th\'{e}or\`{e}mes} +\ProvideDictTranslation{plural-corollary}{corollaires} +\ProvideDictTranslation{plural-conjecture}{conjectures} +\ProvideDictTranslation{plural-remark}{remarques} +\ProvideDictTranslation{plural-axiom}{axiomes} +\ProvideDictTranslation{plural-definition}{d\'{e}finitions} +\ProvideDictTranslation{plural-example}{exemples} +\ProvideDictTranslation{plural-lemma}{lemmes} +\ProvideDictTranslation{plural-notation}{notations} +\ProvideDictTranslation{plural-proposition}{propositions} +\ProvideDictTranslation{plural-proof}{preuves} +% +\ProvideDictTranslation{volume-abbreviated}{vol.} +% +\ProvideDictTranslation{plural-keyword}{mots-cl\'{e}s} +% +\ProvideDictTranslation{received}{re\c cu} +\ProvideDictTranslation{accepted}{accept\'{e}} +\ProvideDictTranslation{online}{en\space ligne} +% +\ProvideDictTranslation{hypothesis}{hypoth\`{e}se} +\ProvideDictTranslation{plural-hypothesis}{hypoth\`{e}ses} +% +\ProvideDictTranslation{assertion}{assertion} +\ProvideDictTranslation{plural-assertion}{assertions} +% +\ProvideDictTranslation{century}{si\`{e}cle} +\ProvideDictTranslation{before-christ}{av.~J.-C} +% +\ProvideDictTranslation{Acknowledgments}{Remerciements} +% +\ProvideDictTranslation{idest}{c'est-\`{a}-dire} +\ProvideDictTranslation{ie}{c.-\`{a}-d} +\ProvideDictTranslation{Idest}{C'est-\`{a}-dire} +\ProvideDictTranslation{Ie}{C.-\`{a}-d} +% \end{macrocode} +% +% \begin{macrocode} +%</french> +% \end{macrocode} +% +% \begin{macrocode} +%<*german> +% \end{macrocode} +% +% \begin{macrocode} +\ProvideDictionaryFor{German}{nwejm} +% +\ProvideDictTranslation{theorem}{Theorem} +\ProvideDictTranslation{corollary}{Korollar} +\ProvideDictTranslation{conjecture}{Vermutung} +\ProvideDictTranslation{remark}{Bemerkung} +\ProvideDictTranslation{axiom}{Axiom} +\ProvideDictTranslation{definition}{Definition} +\ProvideDictTranslation{example}{Beispiel} +\ProvideDictTranslation{lemma}{Lemma} +\ProvideDictTranslation{notation}{Bezeichnung} +\ProvideDictTranslation{proposition}{Proposition} +\ProvideDictTranslation{proof}{Beweis} +\ProvideDictTranslation{plural-theorem}{Sätze} +\ProvideDictTranslation{plural-corollary}{Korollare} +\ProvideDictTranslation{plural-conjecture}{Vermutungen} +\ProvideDictTranslation{plural-remark}{Bemerkungen} +\ProvideDictTranslation{plural-axiom}{Axiome} +\ProvideDictTranslation{plural-definition}{Definitionen} +\ProvideDictTranslation{plural-example}{Beispiele} +\ProvideDictTranslation{plural-lemma}{Lemmata} +\ProvideDictTranslation{plural-notation}{Bezeichnungen} +\ProvideDictTranslation{plural-proposition}{Propositionen} +\ProvideDictTranslation{proofs}{Beweise} +% +\ProvideDictTranslation{volume-abbreviated}{Bd} +% +\ProvideDictTranslation{plural-keyword}{Schlüsselbegriffe} +% +\ProvideDictTranslation{received}{empfangen} +\ProvideDictTranslation{accepted}{angenommen} +\ProvideDictTranslation{online}{online} +% +\ProvideDictTranslation{hypothesis}{Hypothese} +\ProvideDictTranslation{plural-hypothesis}{Hypothesen} +% +\ProvideDictTranslation{assertion}{Behauptung} +\ProvideDictTranslation{plural-assertion}{Behauptungen} +% +\ProvideDictTranslation{century}{Jhdt} +\ProvideDictTranslation{before-christ}{v.~Chr} +% +\ProvideDictTranslation{Acknowledgments}{Bestätigungen} +% +\ProvideDictTranslation{idest}{das~heißt} +\ProvideDictTranslation{ie}{d.~h} +\ProvideDictTranslation{Idest}{Das~heißt} +\ProvideDictTranslation{Ie}{D~h} +% \end{macrocode} +% +% \begin{macrocode} +%</german> +% \end{macrocode} +% +% \begin{macrocode} +%<*dutch> +% \end{macrocode} +% +% \begin{macrocode} +\ProvideDictionaryFor{Dutch}{nwejm} +% +\ProvideDictTranslation{theorem}{stelling} +\ProvideDictTranslation{corollary}{gevolg} +\ProvideDictTranslation{conjecture}{vermoeden} +\ProvideDictTranslation{remark}{opmerking} +\ProvideDictTranslation{axiom}{axioma} +\ProvideDictTranslation{definition}{definitie} +\ProvideDictTranslation{example}{voorbeeld} +\ProvideDictTranslation{lemma}{lemma} +\ProvideDictTranslation{notation}{notatie} +\ProvideDictTranslation{proposition}{eigenschap} +\ProvideDictTranslation{proof}{bewijs} +\ProvideDictTranslation{plural-theorem}{stellingen} +\ProvideDictTranslation{plural-corollary}{gevolgen} +\ProvideDictTranslation{plural-conjecture}{vermoedens} +\ProvideDictTranslation{plural-remark}{opmerkingen} +\ProvideDictTranslation{plural-axiom}{axioma's} +\ProvideDictTranslation{plural-definition}{definities} +\ProvideDictTranslation{plural-example}{voorbeelden} +\ProvideDictTranslation{plural-lemma}{lemma's} +\ProvideDictTranslation{plural-notation}{notaties} +\ProvideDictTranslation{plural-proposition}{eigenschappen} +\ProvideDictTranslation{plural-proof}{bewijzen} +% +\ProvideDictTranslation{volume-abbreviated}{deel} +% +\ProvideDictTranslation{plural-keyword}{trefwoorden} +% +\ProvideDictTranslation{received}{ontvangen} +\ProvideDictTranslation{accepted}{aanvaard} +\ProvideDictTranslation{online}{online} +% +\ProvideDictTranslation{hypothesis}{hypothese} +\ProvideDictTranslation{plural-hypothesis}{hypotheses} +% +\ProvideDictTranslation{assertion}{aanname} +\ProvideDictTranslation{plural-assertion}{aannames} +% +\ProvideDictTranslation{century}{eeuw} +\ProvideDictTranslation{before-christ}{v.Chr} +% +\ProvideDictTranslation{Acknowledgments}{Dankwoord} +% +\ProvideDictTranslation{idest}{dat~wil~zeggen} +\ProvideDictTranslation{ie}{d.w.z} +\ProvideDictTranslation{Idest}{Dat~wil~zeggen} +\ProvideDictTranslation{Ie}{D.w.z} +% \end{macrocode} +% +% \begin{macrocode} +%</dutch> +% \end{macrocode} +% +% \begin{macrocode} +%<*logos-collection> +% \end{macrocode} +% +% The following complete \File{.tex} draws a graph connecting the logo of the +% current journal with the ones of its sponsors. The resulting image is inserted +% on one of the cover pages. +% \begin{macrocode} +\documentclass[tikz]{standalone} +\usepackage{graphicx} +\usepackage{tkz-berge} +\makeatletter +\newcommand*{\grWheelComplete}[2][]{% + \begingroup% + \setkeys[GR]{cl}{#1}% + \grStar[#1]{#2}% + \pgfmathsetcounter{tkz@gr@a}{#2-1}% + \edef\tkz@auxctp{\thetkz@gr@a}% + \foreach \ia in {0,...,\tkz@auxctp}% + {\foreach \ib in {\ia,...,\tkz@auxctp}% + {\Edge(\cmdGR@cl@prefix\ia)(\cmdGR@cl@prefix\ib)}% + }% + \endgroup% +} +\makeatother +% +\begin{document} +\begin{tikzpicture}[scale=.8] + \GraphInit[vstyle=Shade]% + \SetGraphShadeColor{blue!60!black!30}{blue}{white}% + \tikzset{% + VertexStyle/.style = {% + shape = circle,% + fill = white,% + minimum size = 3.5cm,% + draw% + }% + }% + \SetVertexNoLabel% + \grWheelComplete[RA=9]{6}% + \AssignVertexLabel{a}{% + \includegraphics[height=25mm]{nwejm-fields-institute-logo},% + \includegraphics[height=25mm]{nwejm-federation-recherche-math-npdc-logo},% + \includegraphics[height=10mm]{nwejm-kwg-logo},% + \includegraphics[height=20mm]{nwejm-smf-logo},% + \includegraphics[height=12mm]{nwejm-sml-logo},% + \includegraphics[height=25mm]{nwejm-logo}% + };% +\end{tikzpicture} +\end{document} +% \end{macrocode} +% +% \begin{macrocode} +%</logos-collection> +% \end{macrocode} +% +% \begin{macrocode} +%<*bibstyle> +% \end{macrocode} +% +% \begin{macrocode} +\ProvidesFile{nwejm.bbx} +[2016/04/01 v 0.1 nwejm bibliographic style (DB)] + +\RequireBibliographyStyle{authoryear} + +% \end{macrocode} +% +% We create a name format that prints the initial(s) of the first name(s) before +% last name of a cited author. +% \begin{macrocode} +\DeclareNameFormat{giveninits-last}{% + \nameparts{#1} + \usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}% + \usebibmacro{name:andothers}% +} +% \end{macrocode} +% +% The following is borrowed from Joseph Wright +% (\url{http://tex.stackexchange.com/a/5795/18401}) in order to prevent +% identical URL and DOI fields to be both displayed. +% \begin{macrocode} +\renewbibmacro*{doi+eprint+url}{% + \iftoggle{bbx:doi}% + {% + \iffieldundef{doi}% + {}% + {% + \begingroup% + \edef\URLorDOI{% + \detokenize{http://dx.doi.org/}% + \thefield{doi}% + }% + \iffieldequals{url}{\URLorDOI}% + {\endgroup}% + {% + \endgroup% + \printfield{doi}% + }% + }% + }% + {}% + \newunit\newblock% + \iftoggle{bbx:eprint}% + {\usebibmacro{eprint}}% + {}% + \newunit\newblock% + \iftoggle{bbx:url}% + {\usebibmacro{url+urldate}}% + {}% +} +% \end{macrocode} +% +% We perform some other modifications to ×authoryear× bib style. +% \begin{macrocode} +\renewbibmacro{in:}{% + \ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}% +} +\renewbibmacro*{journal}{% + \iffieldundef{shortjournal}% + {% + \iffieldundef{journaltitle}% + {}% + {% + \printtext[journaltitle]% + {% + \printfield[titlecase]{journaltitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{journalsubtitle}% + }% + }% + }% + {\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}% +} +\renewbibmacro*{volume+number+eid}{% + \printfield{volume}% + \setunit*{\addnbthinspace}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}% +} +\DeclareFieldFormat[article]{volume}{\mkbibbold{#1}} +\DeclareFieldFormat[book]{volume}{\mkbibbold{#1}} +\DeclareFieldFormat[article]{number}{\mkbibparens{#1}} +% \end{macrocode} +% +% We redefine the label date in order the pubstate is used in case no date is +% provided (e.g. for references to appear). +% \begin{macrocode} +\DeclareLabeldate{% + \field{date}% + \field{eventdate}% + \field{origdate}% + \field{urldate}% + \field{pubstate}% + \literal{nodate}% +} +% \end{macrocode} +% +% We ensure the space between initial(s) and last name is unbreakable. +% \begin{macrocode} +\renewcommand*\bibnamedelimc{\addnbspace} +\renewcommand*\bibnamedelimd{\addnbspace} +% \end{macrocode} +% +% \begin{macrocode} +%</bibstyle> +% \end{macrocode} +% +% \begin{macrocode} +%<*citestyle> +% \end{macrocode} +% +% \begin{macrocode} +\ProvidesFile{nwejm.cbx} +[2016/04/01 v 0.1 nwejm citation style (DB)] + +\RequireCitationStyle{authoryear} + +\ExecuteBibliographyOptions{giveninits,ibidtracker=constrict} + +% \end{macrocode} +% +% We redefine the ×\blx@mkbibfootnote× macro in order the footnote mark of +% bibliographic citations are in bold, just by inserting a patch of +% ×\@makefnmark×. +% \begin{macrocode} +\renewrobustcmd{\blx@mkbibfootnote}[2]{% + \iftoggle{blx@footnote}% + {\blx@warning{Nested notes}% + \addspace\mkbibparens{#2}}% + {\unspace% + \ifnum\blx@notetype=\tw@% + \expandafter\@firstoftwo% + \else% + \expandafter\@secondoftwo% + \fi% + {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}% + {% + \patchcmd\@makefnmark% + {\normalfont}% + {\normalfont\bfseries}% + {}{}% + \csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}% + }% + }% +} +% \end{macrocode} +% +% We also redefine the command that is responsible of the \pkg{csquotes}' +% quotations without formal citations (e.g. ×displayquote× versus +% ×displaycquote× environments). +% \begin{macrocode} +\renewcommand*{\mkcitation}[1]{% + \patchcmd\@makefnmark% + {\normalfont}% + {\normalfont\bfseries}% + {}{}% + \footnote{#1}% +} +% \end{macrocode} +% +% Because this cite style is a mix between ×authortitle× and ×authoryear× but is +% mainly based upon ×authoryear× style, we need to define the bib macro +% ×cite:title× defined in ×authortitle× but not in ×authoryear×. +% \begin{macrocode} +\newbibmacro*{cite:title}{% + \printtext[bibhyperref]{% + \printfield[citetitle]{labeltitle}}} +% \end{macrocode} +% +% Because we want to replace autocite redundant consecutive citations by +% \enquote{Ibid.}, we need to borrow some code from \pkg{biblatex}'s ×*-ibid* styles. +% \begin{macrocode} +\providecommand*{\mkibid}[1]{#1} +\newbibmacro*{cite:ibid}{% + \printtext[bibhyperref]{\bibstring[\mkibid]{ibidem}}% +} +% \end{macrocode} +% +% We create the ×nwejm:cite× bib macro which emulates a mix between +% ×authortitle× and ×authoryear× styles: it displays the label name (mainly +% authors' names), then the year and finally the title. +% \begin{macrocode} +\newbibmacro*{nwejm:cite}{% + \iffieldundef{shorthand}{% + {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}% + {\usebibmacro{cite:ibid}}% + {% + \ifthenelse{% + \ifnameundef{labelname}% + }{% + \usebibmacro{cite:label}% + \setunit{\addcomma\space}% + }{% + \printnames{labelname}% + \ifthenelse{% + \iffieldundef{labelyear}% + }{% + }{% + \setunit{\addcomma\space}% + \usebibmacro{cite:labelyear+extrayear}% + \ifthenelse{% + \iffieldundef{labeltitle}% + }{% + }{% + \setunit{\addcomma\space}% + \usebibmacro{cite:title}% + }% + }% + }% + }% + }% + }{% + \usebibmacro{cite:shorthand}% + }% +} +% \end{macrocode} +% +% We now declare the new cite command ×\nwejmfootcite× (and it multicite +% counterpart) which is identical to ×\footcite× except it uses the ×nwejm:cite× +% bib macro instead of the usual ×cite× one. +% \begin{macrocode} +\DeclareCiteCommand{\nwejmfootcite}[\mkbibfootnote] +{\usebibmacro{prenote}}% +{\usebibmacro{citeindex}% + \usebibmacro{nwejm:cite}} +{% +% \end{macrocode} +% +% Unique (auto)citations with multiple keys are displayed in footnotes but each +% of the corresponding references is on its own line. +% \begin{macrocode} + \ifcurrentbaselanguage{french}{% + \parindent=\parindentFFN% + \addtolength{\parindent}{\widthof{\dotFFN\kernFFN}}% + }{% + \parindent=\footnotemargin% + }% + \multicitedelim\newline\indent% +} +{\usebibmacro{postnote}}% +\DeclareMultiCiteCommand{\nwejmfootcites}[\mkbibfootnote]{\nwejmfootcite} +{\addsemicolon\space} +% \end{macrocode} +% +% We now declare the definitions for the ×\autocite× and ×\autocites× commands +% and we apply these definitions. +% \begin{macrocode} +\DeclareAutoCiteCommand{nwejmfootcite}{\nwejmfootcite}{\nwejmfootcites} + +\DeclareCiteCommand{\textcite} + {\boolfalse{cbx:parens}} + {\usebibmacro{citeindex}% + \iffirstcitekey + {\setcounter{textcitetotal}{1}} + {\stepcounter{textcitetotal}% + \textcitedelim}% + \iffootnote{\usebibmacro{nwejm:cite}}{\usebibmacro{textcite}}} + {\ifbool{cbx:parens} + {\bibcloseparen\global\boolfalse{cbx:parens}} + {}} + {\usebibmacro{textcite:postnote}} + + +\ExecuteBibliographyOptions{autocite=nwejmfootcite} +% \end{macrocode} +% +% \begin{macrocode} +%</citestyle> +% \end{macrocode} +% +% \begin{macrocode} +%<*latexmkrc> +% \end{macrocode} +% +% \begin{macrocode} +$pdf_mode = 1; + +$bibtex_use = 1; +$bibtex = 'biber %O %B'; + +$makeindex = 'texindy -L french'; + +add_cus_dep('idx', 'ind', 0, 'texindy'); +sub texindy{ + system("texindy -L french \"$_[0].idx\""); +} + +push @generated_exts, "aux", "idx", "ind", "lo*", "out", "toc", "acn", "acr", +"alg", "bbl", "bcf", "fls", "gl*", "ist", "run.xml", "sbl*", "sl*", "sym*", +"xdy", "unq", "mw", "*~" ; + +$clean_ext = "synctex.gz* run.xml tex.bak bbl bcf fdb_latexmk run tdo listing" +% \end{macrocode} +% +% \begin{macrocode} +%</latexmkrc> +% \end{macrocode} +% +% \chapter{Completion files for TeXstudio and friends} +% Now, the \file{nwejmart.cwl} and \file{nwejm.cwl} files for commands +% completion and syntax checking: +% +% \begin{macrocode} +%<*class-cwl> +% \end{macrocode} +% +% \begin{macrocode} +# mode: nwejm.cls +# denisbitouze, 23.12.2015 +# +#include:class-book +#include:latex-document +#include:latex-mathsymbols +#include:tex +#include:xparse +#include:l3keys2e +#include:l3sort +#include:nag +#include:fontenc +#include:inputenc +#include:fontspec +#include:graphicx +#include:adjustbox +#include:draftwatermark +#include:xspace +#include:csquotes +#include:biblatex +#include:array +#include:booktabs +#include:varioref +#include:mathtools +#include:mathrsfs +#include:esvect +#include:kpfonts +#include:translations +#include:fmtcount +#include:geometry +#include:babel +#include:tocvsec2 +#include:etoc +#include:microtype +#include:datetime2 +#include:enumitem +#include:pagegrid +#include:amsthm +#include:thmtools +#include:hyperref +#include:hypcap +#include:bookmark +#include:glossaries +#include:cleveref +# +# Document class +#keyvals:\documentclass/nwejmart +french +english +ngerman +dutch +#endkeyvals +# +# Cover and title pages +# +# Title, etc. +\title{title}#n +\title[short title]{title}#n +\subtitle{%<subtitle%>}#n* +\subtitle[%<short subtitle%>]{%<subtitle%>}#n* +# +# Author +\author{%<Last name%>, %<First name%>}#n +\author[affiliation={%<affiliation%>}]{%<Last name%>, %<First name%>}#n +\author[affiliation=[%<affiliation's tag%>]{%<affiliation%>}]{%<Last name%>, %<First name%>}#n +\author[affiliationtagged={%<affiliation's tag%>}]{%<Last name%>, %<First name%>}#n +# +# Dates +\dates{received=%<yyyy%>-%<mm%>-%<dd%>,accepted=%<yyyy%>-%<mm%>-%<dd%>,online=%<yyyy%>-%<mm%>-%<dd%>}#n +# +# Math commands +\N#m +\Z#m +\D#m +\Q#m +\R#m +\C#m +\K#m +\arccosh#m +\arcsin#m +\arcsinh#m +\arctan#m +\arctanh#m +\Argch#m +\Argsh#m +\Argth#m +\ch#m +\cotan#m +\curl#m +\dif#m +\Div#m +\grad#m +\E#m +\I#m +\rot#m +\sh#m +\supp#m +\th#m +\norm#m +\lnorm#m +\llnorm#m +\lpnorm#m +\supnorm#m +\abs#m +\prt#m +\brk#m +\brc#m +\leqgeq#m +\lrangle#m +\set{%<set self-contained definition%>}#m +\set{%<set definition%>}[%<such that...%>]#m +\begin{axiom} +\begin{assertions} +\begin{conjecture} +\begin{corollary} +\begin{definition} +\begin{example} +\begin{hypotheses} +\begin{proposition} +\begin{lemma} +\begin{notation} +\begin{proof} +\begin{remark} +\begin{theorem} +# +\begin{axiom*} +\begin{assertions*} +\begin{conjecture*} +\begin{corollary*} +\begin{definition*} +\begin{example*} +\begin{hypotheses*} +\begin{proposition*} +\begin{lemma*} +\begin{notation*} +\begin{proof*} +\begin{remark*} +\begin{theorem*} +# +\end{axiom} +\end{assertions} +\end{conjecture} +\end{corollary} +\end{definition} +\end{example} +\end{hypotheses} +\end{proposition} +\end{lemma} +\end{notation} +\end{proof} +\end{remark} +\end{theorem} +# +\end{axiom*} +\end{assertions*} +\end{conjecture*} +\end{corollary*} +\end{definition*} +\end{example*} +\end{hypotheses*} +\end{proposition*} +\end{lemma*} +\end{notation*} +\end{proof*} +\end{remark*} +\end{theorem*} +# +\begin{description*} +\begin{enumerate*} +\begin{itemize*} +# +\end{description*} +\end{enumerate*} +\end{itemize*} +# Miscellaneous commands +\keywords{%<list of keywords%>}#n +\msc{%<list of MSCs%>}#n +\nwejm#n +\nwejm*#n* +\century{%<(positive or negative) integer%>}#n +\century*{%<(positive or negative) integer%>}#n* +\aside{%<interpolated clause%>}#n +\aside*{%<interpolated clause%>}#n +\acknowledgements{%<acknowledgments%>}#n +\ie#n +\ie*#n* +\Ie#n +\Ie*#n* +\NewPairedDelimiter#n +\articlesetup#n +\BinaryOperators#n +# +\editorinchief{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\editor{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\fieldseditor{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\managingeditor{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\classdesigner{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\computerengineer{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\classmaintainer{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\fontdesigner{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\printingservice{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\computerassistance{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\secretary{%<Last name%>, %<First name%>}{%<affiliation%>}{%<country%>}{%<email%>}#n +\issuesetup{number=%<positive integer%>}#n +\journalsetup {publisher=%<publisher%>,address={%<address%>},phone=%<phone%>,email=%<email%>,url=%<url%>,issn=%<issn%>,isbn=%<isbn%>}#n +\inputarticle{file}#i +\inputarticle[path]{file}#i +\fontdesignertext{text}#n +\printertext{text}#n +% \end{macrocode} +% +% \begin{macrocode} +%</class-cwl> +% \end{macrocode} +% +% \begin{macrocode} +%<*classart-cwl> +% \end{macrocode} +% +% \begin{macrocode} +# mode: nwejm.cls +# denisbitouze, 23.12.2015 +# +#include:nwejm +% \end{macrocode} +% +% \begin{macrocode} +%<classart-cwl> +% \end{macrocode} +% +% \begin{macrocode} +\endinput +% \end{macrocode} +% +% \Finale + +% Local Variables: +% mode: doctex +% ispell-local-dictionary: "english" +% TeX-command-default: "TeX" +% TeX-master: t +% End: diff --git a/Master/texmf-dist/source/latex/nwejm/nwejm.ins b/Master/texmf-dist/source/latex/nwejm/nwejm.ins new file mode 100644 index 00000000000..c4bc74dc6e9 --- /dev/null +++ b/Master/texmf-dist/source/latex/nwejm/nwejm.ins @@ -0,0 +1,101 @@ +%% +%% This is file `nwejm.ins', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% nwejm.dtx (with options: `install') +%% -------:| ----------------------------------------------------------------- +%% nwejm:| Class for the journal "North-Western European Journal of Mathematics" +%% Author:| Denis Bitouze +%% E-mail:| denis.bitouze@lmpa.univ-littoral.fr +%% License:| Released under the LaTeX Project Public License v1.3c or later +%% See:| http://www.latex-project.org/lppl.txt +%% +\input l3docstrip.tex +\Msg{********************************************************} +\Msg{* Installation} +\Msg{* Class: nwejm 2016/04/14 v0.96} +\Msg{* for the journal} +\Msg{* "North-Western European Journal of Mathematics" (DB)} +\Msg{********************************************************} +\keepsilent +\askforoverwritefalse +\preamble +-------:| ----------------------------------------------------------------- + nwejm:| Class for the journal "North-Western European Journal of Mathematics" + Author:| Denis Bitouze + E-mail:| denis.bitouze@lmpa.univ-littoral.fr +License:| Released under the LaTeX Project Public License v1.3c or later + See:| http://www.latex-project.org/lppl.txt + +\endpreamble +\postamble + +Copyright (C) 2015, 2016 by Denis Bitouze <denis.bitouze@lmpa.univ-littoral.fr> + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License (LPPL), either +version 1.3c of this license or (at your option) any later +version. The latest version of this license is in the file: + +http://www.latex-project.org/lppl.txt + +This work is "maintained" (as per LPPL maintenance status) by +Denis Bitouze. + +This work consists of the file nwejm.dtx and a Makefile. +Running "make" generates the derived files README, nwejm.pdf and nwejm.cls. +Running "make inst" installs the files in the user's TeX tree. +Running "make install" installs the files in the local TeX tree. + +\endpostamble +\def\NWEJM@classname{\jobname} +\def\NWEJM@addons{addons} +\def\NWEJM@documentation{documentation} +\usedir{/} +\generate{ + \nopreamble\nopostamble + \file{README.md}{\from{\jobname.dtx}{readme}} +}% +\usedir{tex/latex/\NWEJM@classname} +\generate{% + \file{\NWEJM@classname.cls}{\from{\jobname.dtx}{class}} + \file{\NWEJM@classname art.cls}{\from{\jobname.dtx}{class-article}} + \file{\NWEJM@classname.dbx}{\from{\jobname.dtx}{datamodel}} + \file{\NWEJM@classname.cbx}{\from{\jobname.dtx}{citestyle}} + \file{\NWEJM@classname.bbx}{\from{\jobname.dtx}{bibstyle}} + \file{\NWEJM@classname.lbx}{\from{\jobname.dtx}{languagemodel}} + \nopreamble\nopostamble + \file{\NWEJM@classname.cfg}{\from{\jobname.dtx}{configuration}} + \file{\NWEJM@classname-english.trsl}{\from{\jobname.dtx}{english}} + \file{\NWEJM@classname-french.trsl}{\from{\jobname.dtx}{french}} + \file{\NWEJM@classname-german.trsl}{\from{\jobname.dtx}{german}} + \file{\NWEJM@classname-dutch.trsl}{\from{\jobname.dtx}{dutch}} +}% +\usedir{tex/latex/\NWEJM@classname/images} +\generate{% + \nopreamble\nopostamble + \file{\NWEJM@classname-logos-collection.tex}{\from{\jobname.dtx}{logos-collection}} +}% +\endbatchfile +%% +%% Copyright (C) 2015, 2016 by Denis Bitouze <denis.bitouze@lmpa.univ-littoral.fr> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Denis Bitouze. +%% +%% This work consists of the file nwejm.dtx and a Makefile. +%% Running "make" generates the derived files README, nwejm.pdf and nwejm.cls. +%% Running "make inst" installs the files in the user's TeX tree. +%% Running "make install" installs the files in the local TeX tree. +%% +%% +%% End of file `nwejm.ins'. diff --git a/Master/texmf-dist/tex/latex/nwejm/images/nwejm-federation-recherche-math-npdc-logo.pdf b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-federation-recherche-math-npdc-logo.pdf Binary files differnew file mode 100644 index 00000000000..ddc8e34dcb3 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-federation-recherche-math-npdc-logo.pdf diff --git a/Master/texmf-dist/tex/latex/nwejm/images/nwejm-fields-institute-logo.pdf b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-fields-institute-logo.pdf Binary files differnew file mode 100644 index 00000000000..320d3c67a91 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-fields-institute-logo.pdf diff --git a/Master/texmf-dist/tex/latex/nwejm/images/nwejm-kwg-logo.pdf b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-kwg-logo.pdf Binary files differnew file mode 100644 index 00000000000..4f1b9c7e0c5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-kwg-logo.pdf diff --git a/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logo-NB.pdf b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logo-NB.pdf Binary files differnew file mode 100644 index 00000000000..1e6c7c58732 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logo-NB.pdf diff --git a/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logo.pdf b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logo.pdf Binary files differnew file mode 100644 index 00000000000..7162865ca50 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logo.pdf diff --git a/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logos-collection.pdf b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logos-collection.pdf Binary files differnew file mode 100644 index 00000000000..5d8d781164c --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logos-collection.pdf diff --git a/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logos-collection.tex b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logos-collection.tex new file mode 100644 index 00000000000..b32baede8a4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-logos-collection.tex @@ -0,0 +1,41 @@ +\documentclass[tikz]{standalone} +\usepackage{graphicx} +\usepackage{tkz-berge} +\makeatletter +\newcommand*{\grWheelComplete}[2][]{% + \begingroup% + \setkeys[GR]{cl}{#1}% + \grStar[#1]{#2}% + \pgfmathsetcounter{tkz@gr@a}{#2-1}% + \edef\tkz@auxctp{\thetkz@gr@a}% + \foreach \ia in {0,...,\tkz@auxctp}% + {\foreach \ib in {\ia,...,\tkz@auxctp}% + {\Edge(\cmdGR@cl@prefix\ia)(\cmdGR@cl@prefix\ib)}% + }% + \endgroup% +} +\makeatother +\begin{document} +\begin{tikzpicture}[scale=.8] + \GraphInit[vstyle=Shade]% + \SetGraphShadeColor{blue!60!black!30}{blue}{white}% + \tikzset{% + VertexStyle/.style = {% + shape = circle,% + fill = white,% + minimum size = 3.5cm,% + draw% + }% + }% + \SetVertexNoLabel% + \grWheelComplete[RA=9]{6}% + \AssignVertexLabel{a}{% + \includegraphics[height=25mm]{nwejm-fields-institute-logo},% + \includegraphics[height=25mm]{nwejm-federation-recherche-math-npdc-logo},% + \includegraphics[height=10mm]{nwejm-kwg-logo},% + \includegraphics[height=20mm]{nwejm-smf-logo},% + \includegraphics[height=12mm]{nwejm-sml-logo},% + \includegraphics[height=25mm]{nwejm-logo}% + };% +\end{tikzpicture} +\end{document} diff --git a/Master/texmf-dist/tex/latex/nwejm/images/nwejm-smf-logo.pdf b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-smf-logo.pdf Binary files differnew file mode 100644 index 00000000000..3ab1a5ac68e --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-smf-logo.pdf diff --git a/Master/texmf-dist/tex/latex/nwejm/images/nwejm-sml-logo.pdf b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-sml-logo.pdf Binary files differnew file mode 100644 index 00000000000..3bd23456f80 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/images/nwejm-sml-logo.pdf diff --git a/Master/texmf-dist/tex/latex/nwejm/nwejm-dutch.trsl b/Master/texmf-dist/tex/latex/nwejm/nwejm-dutch.trsl new file mode 100644 index 00000000000..2c3fe6c3d10 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/nwejm-dutch.trsl @@ -0,0 +1,39 @@ +\ProvideDictionaryFor{Dutch}{nwejm} +\ProvideDictTranslation{theorem}{stelling} +\ProvideDictTranslation{corollary}{gevolg} +\ProvideDictTranslation{conjecture}{vermoeden} +\ProvideDictTranslation{remark}{opmerking} +\ProvideDictTranslation{axiom}{axioma} +\ProvideDictTranslation{definition}{definitie} +\ProvideDictTranslation{example}{voorbeeld} +\ProvideDictTranslation{lemma}{lemma} +\ProvideDictTranslation{notation}{notatie} +\ProvideDictTranslation{proposition}{eigenschap} +\ProvideDictTranslation{proof}{bewijs} +\ProvideDictTranslation{plural-theorem}{stellingen} +\ProvideDictTranslation{plural-corollary}{gevolgen} +\ProvideDictTranslation{plural-conjecture}{vermoedens} +\ProvideDictTranslation{plural-remark}{opmerkingen} +\ProvideDictTranslation{plural-axiom}{axioma's} +\ProvideDictTranslation{plural-definition}{definities} +\ProvideDictTranslation{plural-example}{voorbeelden} +\ProvideDictTranslation{plural-lemma}{lemma's} +\ProvideDictTranslation{plural-notation}{notaties} +\ProvideDictTranslation{plural-proposition}{eigenschappen} +\ProvideDictTranslation{plural-proof}{bewijzen} +\ProvideDictTranslation{volume-abbreviated}{deel} +\ProvideDictTranslation{plural-keyword}{trefwoorden} +\ProvideDictTranslation{received}{ontvangen} +\ProvideDictTranslation{accepted}{aanvaard} +\ProvideDictTranslation{online}{online} +\ProvideDictTranslation{hypothesis}{hypothese} +\ProvideDictTranslation{plural-hypothesis}{hypotheses} +\ProvideDictTranslation{assertion}{aanname} +\ProvideDictTranslation{plural-assertion}{aannames} +\ProvideDictTranslation{century}{eeuw} +\ProvideDictTranslation{before-christ}{v.Chr} +\ProvideDictTranslation{Acknowledgments}{Dankwoord} +\ProvideDictTranslation{idest}{dat~wil~zeggen} +\ProvideDictTranslation{ie}{d.w.z} +\ProvideDictTranslation{Idest}{Dat~wil~zeggen} +\ProvideDictTranslation{Ie}{D.w.z} diff --git a/Master/texmf-dist/tex/latex/nwejm/nwejm-english.trsl b/Master/texmf-dist/tex/latex/nwejm/nwejm-english.trsl new file mode 100644 index 00000000000..56300b39dd8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/nwejm-english.trsl @@ -0,0 +1,39 @@ +\ProvideDictionaryFor{English}{nwejm} +\ProvideDictTranslation{theorem}{theorem} +\ProvideDictTranslation{corollary}{corollary} +\ProvideDictTranslation{conjecture}{conjecture} +\ProvideDictTranslation{remark}{remark} +\ProvideDictTranslation{axiom}{axiom} +\ProvideDictTranslation{definition}{definition} +\ProvideDictTranslation{example}{example} +\ProvideDictTranslation{lemma}{lemma} +\ProvideDictTranslation{notation}{notation} +\ProvideDictTranslation{proposition}{proposition} +\ProvideDictTranslation{proof}{proof} +\ProvideDictTranslation{plural-theorem}{theorems} +\ProvideDictTranslation{plural-corollary}{corollaries} +\ProvideDictTranslation{plural-conjecture}{conjectures} +\ProvideDictTranslation{plural-remark}{remarks} +\ProvideDictTranslation{plural-axiom}{axioms} +\ProvideDictTranslation{plural-definition}{definitions} +\ProvideDictTranslation{plural-example}{examples} +\ProvideDictTranslation{plural-lemma}{lemmas} +\ProvideDictTranslation{plural-notation}{notations} +\ProvideDictTranslation{plural-proposition}{propositions} +\ProvideDictTranslation{plural-proof}{proofs} +\ProvideDictTranslation{volume-abbreviated}{vol.} +\ProvideDictTranslation{plural-keyword}{keywords} +\ProvideDictTranslation{received}{received} +\ProvideDictTranslation{accepted}{accepted} +\ProvideDictTranslation{online}{online} +\ProvideDictTranslation{hypothesis}{hypothesis} +\ProvideDictTranslation{plural-hypothesis}{hypotheses} +\ProvideDictTranslation{assertion}{assertion} +\ProvideDictTranslation{plural-assertion}{assertions} +\ProvideDictTranslation{century}{century} +\ProvideDictTranslation{before-christ}{BC} +\ProvideDictTranslation{Acknowledgments}{Acknowledgments} +\ProvideDictTranslation{idest}{id~est} +\ProvideDictTranslation{ie}{i.e} +\ProvideDictTranslation{Idest}{Id~est} +\ProvideDictTranslation{Ie}{I.e} diff --git a/Master/texmf-dist/tex/latex/nwejm/nwejm-french.trsl b/Master/texmf-dist/tex/latex/nwejm/nwejm-french.trsl new file mode 100644 index 00000000000..26e7d8a1371 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/nwejm-french.trsl @@ -0,0 +1,39 @@ +\ProvideDictionaryFor{French}{nwejm} +\ProvideDictTranslation{theorem}{th\'{e}or\`{e}me} +\ProvideDictTranslation{corollary}{corollaire} +\ProvideDictTranslation{conjecture}{conjecture} +\ProvideDictTranslation{remark}{remarque} +\ProvideDictTranslation{axiom}{axiome} +\ProvideDictTranslation{definition}{d\'{e}finition} +\ProvideDictTranslation{example}{exemple} +\ProvideDictTranslation{lemma}{lemme} +\ProvideDictTranslation{notation}{notation} +\ProvideDictTranslation{proposition}{proposition} +\ProvideDictTranslation{proof}{preuve} +\ProvideDictTranslation{plural-theorem}{th\'{e}or\`{e}mes} +\ProvideDictTranslation{plural-corollary}{corollaires} +\ProvideDictTranslation{plural-conjecture}{conjectures} +\ProvideDictTranslation{plural-remark}{remarques} +\ProvideDictTranslation{plural-axiom}{axiomes} +\ProvideDictTranslation{plural-definition}{d\'{e}finitions} +\ProvideDictTranslation{plural-example}{exemples} +\ProvideDictTranslation{plural-lemma}{lemmes} +\ProvideDictTranslation{plural-notation}{notations} +\ProvideDictTranslation{plural-proposition}{propositions} +\ProvideDictTranslation{plural-proof}{preuves} +\ProvideDictTranslation{volume-abbreviated}{vol.} +\ProvideDictTranslation{plural-keyword}{mots-cl\'{e}s} +\ProvideDictTranslation{received}{re\c cu} +\ProvideDictTranslation{accepted}{accept\'{e}} +\ProvideDictTranslation{online}{en\space ligne} +\ProvideDictTranslation{hypothesis}{hypoth\`{e}se} +\ProvideDictTranslation{plural-hypothesis}{hypoth\`{e}ses} +\ProvideDictTranslation{assertion}{assertion} +\ProvideDictTranslation{plural-assertion}{assertions} +\ProvideDictTranslation{century}{si\`{e}cle} +\ProvideDictTranslation{before-christ}{av.~J.-C} +\ProvideDictTranslation{Acknowledgments}{Remerciements} +\ProvideDictTranslation{idest}{c'est-\`{a}-dire} +\ProvideDictTranslation{ie}{c.-\`{a}-d} +\ProvideDictTranslation{Idest}{C'est-\`{a}-dire} +\ProvideDictTranslation{Ie}{C.-\`{a}-d} diff --git a/Master/texmf-dist/tex/latex/nwejm/nwejm-german.trsl b/Master/texmf-dist/tex/latex/nwejm/nwejm-german.trsl new file mode 100644 index 00000000000..f22f5f9ad01 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/nwejm-german.trsl @@ -0,0 +1,39 @@ +\ProvideDictionaryFor{German}{nwejm} +\ProvideDictTranslation{theorem}{Theorem} +\ProvideDictTranslation{corollary}{Korollar} +\ProvideDictTranslation{conjecture}{Vermutung} +\ProvideDictTranslation{remark}{Bemerkung} +\ProvideDictTranslation{axiom}{Axiom} +\ProvideDictTranslation{definition}{Definition} +\ProvideDictTranslation{example}{Beispiel} +\ProvideDictTranslation{lemma}{Lemma} +\ProvideDictTranslation{notation}{Bezeichnung} +\ProvideDictTranslation{proposition}{Proposition} +\ProvideDictTranslation{proof}{Beweis} +\ProvideDictTranslation{plural-theorem}{S^^c3^^a4tze} +\ProvideDictTranslation{plural-corollary}{Korollare} +\ProvideDictTranslation{plural-conjecture}{Vermutungen} +\ProvideDictTranslation{plural-remark}{Bemerkungen} +\ProvideDictTranslation{plural-axiom}{Axiome} +\ProvideDictTranslation{plural-definition}{Definitionen} +\ProvideDictTranslation{plural-example}{Beispiele} +\ProvideDictTranslation{plural-lemma}{Lemmata} +\ProvideDictTranslation{plural-notation}{Bezeichnungen} +\ProvideDictTranslation{plural-proposition}{Propositionen} +\ProvideDictTranslation{proofs}{Beweise} +\ProvideDictTranslation{volume-abbreviated}{Bd} +\ProvideDictTranslation{plural-keyword}{Schl^^c3^^bcsselbegriffe} +\ProvideDictTranslation{received}{empfangen} +\ProvideDictTranslation{accepted}{angenommen} +\ProvideDictTranslation{online}{online} +\ProvideDictTranslation{hypothesis}{Hypothese} +\ProvideDictTranslation{plural-hypothesis}{Hypothesen} +\ProvideDictTranslation{assertion}{Behauptung} +\ProvideDictTranslation{plural-assertion}{Behauptungen} +\ProvideDictTranslation{century}{Jhdt} +\ProvideDictTranslation{before-christ}{v.~Chr} +\ProvideDictTranslation{Acknowledgments}{Best^^c3^^a4tigungen} +\ProvideDictTranslation{idest}{das~hei^^c3^^9ft} +\ProvideDictTranslation{ie}{d.~h} +\ProvideDictTranslation{Idest}{Das~hei^^c3^^9ft} +\ProvideDictTranslation{Ie}{D~h} diff --git a/Master/texmf-dist/tex/latex/nwejm/nwejm.bbx b/Master/texmf-dist/tex/latex/nwejm/nwejm.bbx new file mode 100644 index 00000000000..7a7eebff3ce --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/nwejm.bbx @@ -0,0 +1,116 @@ +%% +%% This is file `nwejm.bbx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% nwejm.dtx (with options: `bibstyle') +%% -------:| ----------------------------------------------------------------- +%% nwejm:| Class for the journal "North-Western European Journal of Mathematics" +%% Author:| Denis Bitouze +%% E-mail:| denis.bitouze@lmpa.univ-littoral.fr +%% License:| Released under the LaTeX Project Public License v1.3c or later +%% See:| http://www.latex-project.org/lppl.txt +%% +\ProvidesFile{nwejm.bbx} +[2016/04/01 v 0.1 nwejm bibliographic style (DB)] + +\RequireBibliographyStyle{authoryear} + +\DeclareNameFormat{giveninits-last}{% + \nameparts{#1} + \usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}% + \usebibmacro{name:andothers}% +} +\renewbibmacro*{doi+eprint+url}{% + \iftoggle{bbx:doi}% + {% + \iffieldundef{doi}% + {}% + {% + \begingroup% + \edef\URLorDOI{% + \detokenize{http://dx.doi.org/}% + \thefield{doi}% + }% + \iffieldequals{url}{\URLorDOI}% + {\endgroup}% + {% + \endgroup% + \printfield{doi}% + }% + }% + }% + {}% + \newunit\newblock% + \iftoggle{bbx:eprint}% + {\usebibmacro{eprint}}% + {}% + \newunit\newblock% + \iftoggle{bbx:url}% + {\usebibmacro{url+urldate}}% + {}% +} +\renewbibmacro{in:}{% + \ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}% +} +\renewbibmacro*{journal}{% + \iffieldundef{shortjournal}% + {% + \iffieldundef{journaltitle}% + {}% + {% + \printtext[journaltitle]% + {% + \printfield[titlecase]{journaltitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{journalsubtitle}% + }% + }% + }% + {\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}% +} +\renewbibmacro*{volume+number+eid}{% + \printfield{volume}% + \setunit*{\addnbthinspace}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}% +} +\DeclareFieldFormat[article]{volume}{\mkbibbold{#1}} +\DeclareFieldFormat[book]{volume}{\mkbibbold{#1}} +\DeclareFieldFormat[article]{number}{\mkbibparens{#1}} +\DeclareLabeldate{% + \field{date}% + \field{eventdate}% + \field{origdate}% + \field{urldate}% + \field{pubstate}% + \literal{nodate}% +} +\renewcommand*\bibnamedelimc{\addnbspace} +\renewcommand*\bibnamedelimd{\addnbspace} +%% +%% Copyright (C) 2015, 2016 by Denis Bitouze <denis.bitouze@lmpa.univ-littoral.fr> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Denis Bitouze. +%% +%% This work consists of the file nwejm.dtx and a Makefile. +%% Running "make" generates the derived files README, nwejm.pdf and nwejm.cls. +%% Running "make inst" installs the files in the user's TeX tree. +%% Running "make install" installs the files in the local TeX tree. +%% +%% +%% End of file `nwejm.bbx'. diff --git a/Master/texmf-dist/tex/latex/nwejm/nwejm.cbx b/Master/texmf-dist/tex/latex/nwejm/nwejm.cbx new file mode 100644 index 00000000000..3382d2d0112 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/nwejm.cbx @@ -0,0 +1,140 @@ +%% +%% This is file `nwejm.cbx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% nwejm.dtx (with options: `citestyle') +%% -------:| ----------------------------------------------------------------- +%% nwejm:| Class for the journal "North-Western European Journal of Mathematics" +%% Author:| Denis Bitouze +%% E-mail:| denis.bitouze@lmpa.univ-littoral.fr +%% License:| Released under the LaTeX Project Public License v1.3c or later +%% See:| http://www.latex-project.org/lppl.txt +%% +\ProvidesFile{nwejm.cbx} +[2016/04/01 v 0.1 nwejm citation style (DB)] + +\RequireCitationStyle{authoryear} + +\ExecuteBibliographyOptions{giveninits,ibidtracker=constrict} + +\renewrobustcmd{\blx@mkbibfootnote}[2]{% + \iftoggle{blx@footnote}% + {\blx@warning{Nested notes}% + \addspace\mkbibparens{#2}}% + {\unspace% + \ifnum\blx@notetype=\tw@% + \expandafter\@firstoftwo% + \else% + \expandafter\@secondoftwo% + \fi% + {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}% + {% + \patchcmd\@makefnmark% + {\normalfont}% + {\normalfont\bfseries}% + {}{}% + \csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}% + }% + }% +} +\renewcommand*{\mkcitation}[1]{% + \patchcmd\@makefnmark% + {\normalfont}% + {\normalfont\bfseries}% + {}{}% + \footnote{#1}% +} +\newbibmacro*{cite:title}{% + \printtext[bibhyperref]{% + \printfield[citetitle]{labeltitle}}} +\providecommand*{\mkibid}[1]{#1} +\newbibmacro*{cite:ibid}{% + \printtext[bibhyperref]{\bibstring[\mkibid]{ibidem}}% +} +\newbibmacro*{nwejm:cite}{% + \iffieldundef{shorthand}{% + {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}% + {\usebibmacro{cite:ibid}}% + {% + \ifthenelse{% + \ifnameundef{labelname}% + }{% + \usebibmacro{cite:label}% + \setunit{\addcomma\space}% + }{% + \printnames{labelname}% + \ifthenelse{% + \iffieldundef{labelyear}% + }{% + }{% + \setunit{\addcomma\space}% + \usebibmacro{cite:labelyear+extrayear}% + \ifthenelse{% + \iffieldundef{labeltitle}% + }{% + }{% + \setunit{\addcomma\space}% + \usebibmacro{cite:title}% + }% + }% + }% + }% + }% + }{% + \usebibmacro{cite:shorthand}% + }% +} +\DeclareCiteCommand{\nwejmfootcite}[\mkbibfootnote] +{\usebibmacro{prenote}}% +{\usebibmacro{citeindex}% + \usebibmacro{nwejm:cite}} +{% + \ifcurrentbaselanguage{french}{% + \parindent=\parindentFFN% + \addtolength{\parindent}{\widthof{\dotFFN\kernFFN}}% + }{% + \parindent=\footnotemargin% + }% + \multicitedelim\newline\indent% +} +{\usebibmacro{postnote}}% +\DeclareMultiCiteCommand{\nwejmfootcites}[\mkbibfootnote]{\nwejmfootcite} +{\addsemicolon\space} +\DeclareAutoCiteCommand{nwejmfootcite}{\nwejmfootcite}{\nwejmfootcites} + +\DeclareCiteCommand{\textcite} + {\boolfalse{cbx:parens}} + {\usebibmacro{citeindex}% + \iffirstcitekey + {\setcounter{textcitetotal}{1}} + {\stepcounter{textcitetotal}% + \textcitedelim}% + \iffootnote{\usebibmacro{nwejm:cite}}{\usebibmacro{textcite}}} + {\ifbool{cbx:parens} + {\bibcloseparen\global\boolfalse{cbx:parens}} + {}} + {\usebibmacro{textcite:postnote}} + +\ExecuteBibliographyOptions{autocite=nwejmfootcite} +%% +%% Copyright (C) 2015, 2016 by Denis Bitouze <denis.bitouze@lmpa.univ-littoral.fr> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Denis Bitouze. +%% +%% This work consists of the file nwejm.dtx and a Makefile. +%% Running "make" generates the derived files README, nwejm.pdf and nwejm.cls. +%% Running "make inst" installs the files in the user's TeX tree. +%% Running "make install" installs the files in the local TeX tree. +%% +%% +%% End of file `nwejm.cbx'. diff --git a/Master/texmf-dist/tex/latex/nwejm/nwejm.cfg b/Master/texmf-dist/tex/latex/nwejm/nwejm.cfg new file mode 100644 index 00000000000..693a375a84e --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/nwejm.cfg @@ -0,0 +1,94 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Journal data +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\journalsetup{% + publisher = \nwejm, + address = UFR de Math\'{e}matiques -- B\^atiment M2 -- Bureau 10\newline + Universit\'{e} Lille 1 -- Cit\'{e} Scientifique\newline + 59655 Villeneuve d'Ascq, + phone = +33 (0)3 20 43 42 33, + email = aurore.smets@univ-lille1.fr, + url = http://math.univ-lille1.fr/~nwejm/, + issn = +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Editor in chief +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\editorinchief{Nicaise, Serge}{Universit\'{e} de Valenciennes et du Hainaut Cambr\'{e}sis +}{France}{serge.nicaise@univ-valenciennes.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Fields editor +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\fieldseditor{Craig, Walter}{McMaster University}{Canada}{craig@math.mcmaster.ca} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Managing editor +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\managingeditor{Wicker, Nicolas}{Universit\'{e} Lille 1}{France}{Nicolas.Wicker@math.univ-lille1.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Editors +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\editor{Apel, Thomas}{Universit{\"a}t der Bundeswehr M^^c3^^bcnchen}{Germany}{thomas.apel@unibw.de} +\editor{Beauchard, Karine}{\textsc{ens} Rennes}{France}{Karine.Beauchard@math.polytechnique.fr} +\editor{von Below, Joachim}{Universit\'{e} du Littoral C\^{o}te d'Opale}{France}{vonbelow@lmpa.univ-littoral.fr} +\editor{Biernacki, Christophe}{Universit\'{e} de Lille 1}{France}{christophe.biernacki@math.univ-lille1.fr} +\editor{Chainais-Hillairet, Claire}{Universit\'{e} de Lille 1}{France}{claire.chainais@math.univ-lille1.fr} +\editor{Dauge, Monique}{Universit\'{e} de Rennes I}{France}{monique.dauge@univ-rennes1.fr} +\editor{David, Sinnou}{Universit\'{e} Paris VI}{France}{david@math.jussieu.fr} +\editor{Davydov, Youri}{Universit\'{e} de Lille 1}{France}{youri.davydov@math.univ-lille1.fr} +\editor{D\`{e}bes, Pierre}{Universit\'{e} de Lille 1}{France}{pierre.debes@math.univ-lille1.fr} +\editor{Demailly, Jean-Pierre}{Universit\'{e} de Grenoble 1}{France}{jean-pierre.demailly@ujf-grenoble.fr} +\editor{Droniou, J\'{e}r\^{o}me}{Monash University}{Australia}{jerome.droniou@monash.edu} +\editor{El Kacimi, Aziz}{Universit\'{e} de Valenciennes et du Hainaut Cambr\'{e}sis}{France}{aziz.elkacimi@univ-valenciennes.fr} +\editor{Fleischmann, Peter}{University of Kent}{United Kingdom}{p.fleischmann@kent.ac.uk} +\editor{Fresse, Beno^^c3^^aet}{Universit\'{e} de Lille 1}{France}{benoit.fresse@math.univ-lille1.fr} +\editor{Fricain, Emmanuel}{Universit\'{e} de Lille 1}{France}{emmanuel.fricain@math.univ-lille1.fr} +\editor{Gaffney, Eamonn}{Oxford University}{United Kingdom}{gaffney@maths.ox.ac.uk} +\editor{Gloria, Antoine}{Universit\'{e} Libre de Bruxelles}{Belgium}{antoine.gloria@ulb.ac.be} +\editor{Godefroy, Gilles}{Universit\'{e} Paris VI}{France}{godefroy@math.jussieu.fr} +\editor{Grosse-Erdmann, Karl}{Universit\'{e} de Mons}{Belgium}{kg.grosse-erdmann@umons.ac.be} +\editor{Guo, Bao-Zhu}{Academy of Mathematics and Systems Science, Academia Sinica, Beijing}{China}{bzguo@iss.ac.cn} +\editor{Lambrechts, Pascal}{Universit\'{e} Catholique de Louvain}{Belgium}{pascal.lambrechts@uclouvain.be} +\editor{Lef\`{e}vre, Pascal}{Universit\'{e} d'Artois}{France}{pascal.lefevre@univ-artois.fr} +\editor{Leroy, Andr\'{e}}{Universit\'{e} d'Artois}{France}{andreleroy55@gmail.com} +\editor{Loeb, Jean-Jacques}{Universit\'{e} d'Angers}{France}{jean-jacques.loeb@univ-angers.fr} +\editor{Luca, Florian}{University of Witwatersrand}{South-Africa}{florian.luca@wits.ac.za} +\editor{Matom{\"a}ki Kaisa}{University of Turku}{Finland}{ksmato@utu.fi} +\editor{Michaux, Christian}{Universit\'{e} de Mons}{Belgium}{christian.michaux@umons.ac.be} +\editor{Moerdijk, Ieke}{Radboud University Nijmegen}{Netherlands}{i.moerdijk@math.ru.nl} +\editor{Murua, Alejandro}{Universit\'{e} de Montr\'{e}al}{Canada}{murua@dms.umontreal.ca} +\editor{Nakamura, Hiroaki}{Osaka University}{Japan}{nakamura@math.sci.osaka-u.ac.jp} +\editor{van Neerven, Jan}{Delft University of Technology}{Netherlands}{j.m.a.m.vanneerven@tudelft.nl} +\editor{Nicaise, Johannes}{Katholieke Universiteit Leuven}{Belgium}{Johannes.Nicaise@wis.kuleuven.be} +\editor{Norvaisa, Rimas}{Vilnius University}{Lituany}{rimas.norvaisa@mii.vu.lt} +\editor{Peccati, Giovanni}{University of Luxembourg}{Luxembourg}{giovanni.peccati@gmail.com} +\editor{Pirashvili, Teimuraz}{University of Leicester}{United Kingdom}{tp59@le.ac.uk} +\editor{Ramar\'{e}, Olivier}{Universit\'{e} de Lille 1}{France}{olivier.ramare@math.univ-lille1.fr} +\editor{Roelly, Sylvie}{University of Potsdam}{Germany}{roelly@math.uni-potsdam.de} +\editor{Stubbe, Isar}{Universit\'{e} du Littoral C\^{o}te d'Opale}{France}{isar.stubbe@lmpa.univ-littoral.fr} +\editor{Suquet, Charles}{Universit\'{e} de Lille 1}{France}{charles.suquet@math.univ-lille1.fr} +\editor{Tazzioli, Rossana}{Universit\'{e} de Lille 1}{France}{rossana.tazzioli@math.univ-lille1.fr} +\editor{Tignol, Jean-Pierre}{Universit\'{e} Catholique de Louvain}{Belgium}{jean-pierre.tignol@uclouvain.be} +\editor{Wu, Jie}{Institut Elie Cartan}{France}{jie.wu@univ-lorraine.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Secretary +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\secretary{Smets, Aurore}{}{}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LaTeX class designer (and maintainer(s)) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\classdesigner{Bitouz\'{e}, Denis}{Universit\'{e} du Littoral C\^{o}te d'Opale}{France}{denis.bitouze@lmpa.univ-littoral.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Computer engineer +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\computerengineer{Huart, S\'{e}bastien}{Universit\'{e} de Lille 1}{France}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Font designer text +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\fontdesignertext{We make use of the set of fonts \href{http://ctan.org/pkg/kpfonts}{Kp-Fonts}, designed by Christophe Caignaert.} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Printer text +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\printingservice{Derycke, Jean-Jacques}{Universit\'{e} de Lille 1}{France}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Authors instructions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/latex/nwejm/nwejm.cls b/Master/texmf-dist/tex/latex/nwejm/nwejm.cls new file mode 100644 index 00000000000..2c6687a3e62 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/nwejm.cls @@ -0,0 +1,2640 @@ +%% +%% This is file `nwejm.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% nwejm.dtx (with options: `class') +%% -------:| ----------------------------------------------------------------- +%% nwejm:| Class for the journal "North-Western European Journal of Mathematics" +%% Author:| Denis Bitouze +%% E-mail:| denis.bitouze@lmpa.univ-littoral.fr +%% License:| Released under the LaTeX Project Public License v1.3c or later +%% See:| http://www.latex-project.org/lppl.txt +%% +\RequirePackage{xparse} +\RequirePackage{l3keys2e} +\IfFileExists{l3sort.sty}{ + \RequirePackage{l3sort} +}{ +} +\RequirePackage{etoolbox} +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesExplClass + {nwejm} + {2015/09/30} + {1.00} + { + Class for the journal "North-Western European Journal of Mathematics". + } +\ExplSyntaxOn +\msg_new:nnnn{nwejm}{Issue~number~needed}{Option~`#1'~needed!} +{Please~specify~`#1=<number>', ~otherwise~`<number>'~will~be~set~to + ~`\int_use:N\c__nwejm_first_issue_number_int'.}% +\msg_new:nnnn{nwejmart}{Unknown~choice}{Choice~`#3'~invalid!} +{Please~specify~#1=#2.}% +\msg_new:nnn{nwejmart}{Unknown~tag}{There~ isn't~ any~ affiliation~ tagged~ + with~ `#1'.~ This~ one~ will~ be~ ignored.}% +\msg_new:nnn{nwejmart}{Unknown~language}{The~ option~ `#1'~ you~ passed~ isn't~ + a~ valid~ language~ name~ (only~ `english',~ `french',~ `ngerman',~ `german',~ + `dutch'~ are~ accepted).~ `english'~ will~ be~ used~ instead.}% +\msg_new:nnn{nwejmart}{No~keyword}{You~ haven't~ specify~ any~ keyword~ for~ + this~ article!}% +\msg_new:nnn{nwejmart}{No~MSC}{You~ haven't~ specify~ any~ Mathematical~ + Subject~ Classification~ (MSC)~ for~ this~ article!}% +\msg_new:nnn{nwejmart}{No~abstract}{You~ haven't~ specify~ any~ abstract~ for~ + this~ article!}% +\msg_new:nnn{nwejmart}{Starred~AMS~environments}{The~ starred~AMS~environment~ + `#1*'~should~ be~ avoided.~ It~ will ~be ~ replaced ~ by its~ unstarred~ counterpart~ `#1'.}% +\msg_new:nnn{ + nwejm +}{Command~restricted~to~document~body~used~in~preamble}{The~command~#1 + can~be~used~only~in~document~body~and~not~in~preamble!}% +\msg_new:nnn{nwejmart}{Article~setup~not~consistent}{The~ article~ setup~ + concerning~ the~ option~ `#1'~ has~ changed~ after~ its~ 1st~ use.~ Please~ + use~ \articlesetup~ command~ just~ once,~ just~ after~ the~ beginning~ of~ + the~ document.}% +\msg_new:nnn{nwejmart}{Wrong~paired~delimiter's~size~parameter}{The~ + size~parameter~specified~ (`#1')~is~ not~ allowed:~ only~ `0',~`1'~(or~ + `\string\big'),~`2'~(or~ `\string\Big'),~`3'~(or~ `\string\big'g)~and~`4'~(or~ + `\string\Bigg')~ are ~ allowed. ~ It~ will~ be~ ignored.}% +\dim_const:Nn \c__nwejm_pagegrid_dim { 1mm} +\bool_new:N \g__nwejm_for_authors_bool +\bool_new:N \g__nwejm_cover_bool +\bool_new:N \g__nwejm_coverpage_bool +\bool_new:N \g__nwejm_inside_pages_bool +\keys_define:nn { nwejm } +{ + pagegrid .dim_gset:N = \g__nwejm_pagegrid_dim, + pagegrid .default:n = {\c__nwejm_pagegrid_dim}, + forauthors .code:n = {% + \bool_gset_true:N \g__nwejm_for_authors_bool% + \bool_gset_true:N \g__nwejm_inside_pages_bool% + },% + forprinter .bool_gset:N = \g__nwejm_for_printer_bool, + output .choice:, + output / frontcover .code:n = {% + \bool_gset_true:N \g__nwejm_for_printer_bool% + \bool_gset_true:N \g__nwejm_cover_bool% + },% + output / insidepages .code:n = {% + \bool_gset_true:N \g__nwejm_for_printer_bool% + \bool_gset_true:N \g__nwejm_inside_pages_bool% + },% + output / backcover .code:n = {% + \bool_gset_true:N \g__nwejm_for_printer_bool% + },% + output / web .code:n = {% + },% +}% +\keys_define:nn { nwejm } +{ + 10pt .code:n = {% + \PassOptionsToClass{10pt}{book} + },% + 11pt .code:n = {% + \PassOptionsToClass{11pt}{book} + },% + 12pt .code:n = {% + \PassOptionsToClass{12pt}{book} + },% +}% +\ProcessKeysOptions { nwejm } +\LoadClass { book } +\PassOptionsToPackage{export}{adjustbox}% +\PassOptionsToPackage{fleqn}{mathtools}% +\PassOptionsToPackage{french,ngerman,dutch,english,noabbrev}{cleveref} +\AtBeginDocument{ + \LoadDictionaryFor{french}{nwejm} + \LoadDictionaryFor{english}{nwejm} + \LoadDictionaryFor{dutch}{nwejm} + \LoadDictionaryFor{german}{nwejm} +} +\PassOptionsToPackage{french,ngerman,dutch,english}{babel} +\PassOptionsToPackage{french,ngerman,dutch,english}{varioref} +\RequirePackage{silence} +\WarningFilter[nwejm]{kpfonts}{With 'easyscsl' option, don't fit together} +\WarningFilter[nwejm]{etex}{Extended allocation already in use} +\WarningFilter[nwejm]{etoc}{package tocvsec2 detected and its modification of} +\ActivateWarningFilters[nwejm] +\RequirePackage[l2tabu,orthodox]{nag} +\pdftex_if_engine:TF + { + \RequirePackage[T1]{fontenc} + \RequirePackage[utf8]{inputenc} + }{ + \RequirePackage{fontspec} + } +\RequirePackage[group=false,subpreambles,sort]{standalone}% +\RequirePackage[pagestyles]{titlesec}% +\RequirePackage{graphicx}% +\RequirePackage{import}% +\bool_if:nT { \g__nwejm_for_authors_bool } { + \RequirePackage{draftwatermark}[2006/06/30]% +} +\RequirePackage{adjustbox}% +\RequirePackage{zref-totpages} +\RequirePackage{zref-xr}% +\RequirePackage[multiple]{footmisc}% +\RequirePackage[svgnames]{xcolor}% +\RequirePackage{xspace}% +\RequirePackage[autostyle]{csquotes}% +\RequirePackage{array} +\RequirePackage{booktabs} +\RequirePackage{mathtools} +\RequirePackage[thmmarks,amsmath]{ntheorem} +\RequirePackage{mathrsfs} +\RequirePackage{esvect} +\RequirePackage[easyscsl,noDcommand]{kpfonts} +\RequirePackage{geometry} +\RequirePackage{translations}% +\RequirePackage{fmtcount}% +\RequirePackage{babel}% +\RequirePackage{varioref} +\RequirePackage{tocvsec2} +\RequirePackage{etoc}% +\RequirePackage[babel=true]{microtype}% +\RequirePackage[useregional]{datetime2}% +\RequirePackage[inline]{enumitem}% +\RequirePackage{environ} +\RequirePackage[foreground]{pagegrid}% +\RequirePackage{datatool}% +\RequirePackage{placeins}% +\RequirePackage{footnote}% +\RequirePackage[hyperfootnotes=false,pdfencoding=unicode]{hyperref}% +\AtBeginDocument{% + \hypersetup{hidelinks,hypertexnames=false}% +}% +\RequirePackage[all]{hypcap} +\RequirePackage[numbered]{bookmark}% +\RequirePackage[nowarn]{glossaries}% +\RequirePackage{cleveref}% +\RequirePackage{autonum} +\RequirePackage[backend=biber,style=nwejm]{biblatex}% +\ExecuteBibliographyOptions{defernumbers=true,dashed=false,uniquename=init,backref,safeinputenc} +\makeglossaries +\setglossarystyle{indexhypergroup} +\setacronymstyle{long-sc-short} +\glsdisablehyper +\int_new:N \g__nwejm_articles_int +\clist_new:N \g__nwejm_counters_to_be_reset_clist +\int_const:Nn \c__nwejm_first_issue_number_int { 1 } +\int_const:Nn \c__nwejm_first_issue_year_int { 2016 } +\int_const:Nn \c__nwejm_first_issue_month_int { 1 } +\int_const:Nn \c__nwejm_interval_in_months_int { 6 } +\tl_const:Nn \c__nwejm_backcover_tableofcontents_string_tl {Volume's~Contents} +\tl_const:Nn \c__nwejm_editorinchief_string_tl {Editor~in~Chief} +\tl_const:Nn \c__nwejm_associate_editors_string_tl {Associate~Editors} +\tl_const:Nn \c__nwejm_managing_editor_string_tl {Managing~Editor} +\tl_const:Nn \c__nwejm_field_editor_string_tl {Field~Editor} +\tl_const:Nn \c__nwejm_editorial_secretariat_string_tl {Secretariat} +\tl_const:Nn \c__nwejm_phone_string_tl {Tel.} +\tl_const:Nn \c__nwejm_issn_string_tl {\textsc{issn}} +\tl_const:Nn \c__nwejm_isbn_string_tl {\textsc{isbn}} +\tl_const:Nn \c__nwejm_latexclass_string_tl {\LaTeX{}~class} +\tl_const:Nn \c__nwejm_computer_engineering_string_tl {Computer~engineering~issues} +\tl_const:Nn \c__nwejm_printer_string_tl {Printing~service} +\tl_const:Nn \c__nwejm_configuration_file_string_tl {nwejm.cfg} +\tl_const:Nn \c__nwejm_frontcover_header_left_string_tl { + \int_use:N\g__nwejm_issue_year_int% +} +\tl_const:Nn \c__nwejm_frontcover_header_right_string_tl { + Number\space\int_use:N\g__nwejm_issue_number_int% +} +\tl_const:Nn \c__nwejm_backmatter_directory_string_tl {backmatter} +\tl_const:Nn \c__nwejm_issue_backcover_text_file_string_tl {backcover} +\tl_const:Nn \c__nwejm_backcover_page_file_string_tl {\c__nwejm_backmatter_directory_string_tl/\c__nwejm_issue_backcover_text_file_string_tl} +\tl_const:Nn \c__nwejm_authors_instructions_file_extension_tl {ain} +\tl_const:Nn \c__nwejm_authors_instructions_file_tl {\c_job_name_tl.\c__nwejm_authors_instructions_file_extension_tl} +\tl_const:Nn \c__nwejm_authors_instructions_string_tl {Instructions~to~authors} +\tl_const:Nn \c__nwejm_date_received_tl {received} +\tl_const:Nn \c__nwejm_date_accepted_tl {accepted} +\tl_const:Nn \c__nwejm_date_online_tl {online} +\tl_const:Nn \c__nwejm_dates_separator_tl {/} +\tl_const:Nn \c__nwejm_images_directory_string_tl {images} +\tl_const:Nn \c__nwejm_issue_images_path_string_tl {\c__nwejm_images_directory_string_tl} +\tl_const:Nn \c__nwejm_preliminary_version_string_tl {% + This~document~is~a~draft~that~lets~you~check~the~integrity~of~original~text~and + bibliography~of~your~article~to~appear~in~the~next~issue~of~the + \c__nwejm_journal_title_string_tl.~The~current~layout~may~not~be~the~final~one.% +} +\tl_const:Nn \c__nwejm_msc_string_tl {\textsc{msc}} +\tl_const:Nn \c__nwejm_colon_tl { + \ifcurrentbaselanguage{french}{\FBcolonspace}{}: + % \ifundef{\Fcolonspace}{\FBcolonspace}{\Fcolonspace}: +} +\tl_const:Nn \c__nwejm_aside_string_tl {--} +\tl_const:Nn \c__nwejm_draftwatermark_string_tl {draft} +\tl_const:Nn \c__nwejm_issue_bib_file_suffix_string_tl {__nwejm} +\tl_const:Nn \c__nwejm_issue_bib_file_string_tl {\c_job_name_tl\c__nwejm_issue_bib_file_suffix_string_tl.bib} +\tl_const:Nn \c__nwejm_issue_bib_path_string_tl {\c__nwejm_issue_bib_file_string_tl} +\tl_const:Nn \c__nwejm_issue_bib_key_tl {\int_use:N \g__nwejm_issue_number_int} +\tl_const:Nn \c__nwejm_journal_short_title_string_tl {\textsc{nwejm}} +\tl_const:Nn \c__nwejm_journal_title_string_tl { + North-Western~European~Journal~of~Mathematics% +} +\tl_const:Nn \c__nwejm_journal_front_cover_title_string_tl { + North-Western~European\\Journal\\of\\Mathematics% +} +\tl_const:Nn \c__nwejm_nwejm_class_name_tl {nwejm} +\tl_const:Nn \c__nwejm_nwejmarticle_class_name_tl {nwejmart} +\bool_new:N \g__nwejm_frontcover_bool +\bool_new:N \g__nwejm_inside_frontcover_bool +\bool_new:N \g__nwejm_inside_backcover_bool +\bool_new:N \g__nwejm_frontmatter_bool +\bool_new:N \g__nwejm_mainmatter_bool +\bool_new:N \g__nwejm_backmatter_bool +\bool_new:N \g__nwejm_backcover_bool +\bool_new:N \g__nwejm_date_specified_bool +\dim_const:Nn \c__nwejm_layoutheight_dim { 240mm} +\dim_const:Nn \c__nwejm_layoutwidth_dim { 170mm} +\dim_const:Nn \c__nwejm_printer_layoutoffset_dim { 5mm} +\bool_if:NTF {\g__nwejm_for_printer_bool} { + \dim_const:Nn \c__nwejm_potential_layoutoffset_dim { \c__nwejm_printer_layoutoffset_dim} +}{ + \dim_const:Nn \c__nwejm_potential_layoutoffset_dim {\c_zero_dim} +} +\int_const:Nn \c__nwejm_thresold_a_int {68} +\int_const:Nn \c__nwejm_thresold_b_int {80} +\int_const:Nn \c__nwejm_thresold_c_int {88} +\int_const:Nn \c__nwejm_thresold_d_int {96} +\int_const:Nn \c__nwejm_thresold_e_int {104} +\int_const:Nn \c__nwejm_thresold_f_int {120} +\dim_const:Nn \c__nwejm_bindingoffset_a_dim {3mm} +\dim_const:Nn \c__nwejm_bindingoffset_b_dim {3.5mm} +\dim_const:Nn \c__nwejm_bindingoffset_c_dim {3.9mm} +\dim_const:Nn \c__nwejm_bindingoffset_d_dim {4.1mm} +\dim_const:Nn \c__nwejm_bindingoffset_e_dim {4.5mm} +\dim_const:Nn \c__nwejm_bindingoffset_f_dim {5mm} +\zexternaldocument[self]{\jobname}% +\int_new:N \g__nwejm_total_pages_number_int% +\int_new:N \g__nwejm_total_inside_pages_number_int% +\int_gset:Nn \g__nwejm_total_pages_number_int { \zref@extractdefault{selfLastPage}{abspage}{0} } +\int_gset:Nn \g__nwejm_total_inside_pages_number_int { \g__nwejm_total_pages_number_int - 4 } +\int_compare:nNnTF {\g__nwejm_total_inside_pages_number_int}<{\c__nwejm_thresold_a_int} +{ + \dim_const:Nn \c__nwejm_printer_bindingoffset_dim { \c_zero_dim } +}{ + \int_compare:nNnTF {\g__nwejm_total_inside_pages_number_int}<{\c__nwejm_thresold_b_int} + { + \dim_const:Nn \c__nwejm_printer_bindingoffset_dim { \c__nwejm_bindingoffset_a_dim } + }{ + \int_compare:nNnTF {\g__nwejm_total_inside_pages_number_int}<{\c__nwejm_thresold_c_int} + { + \dim_const:Nn \c__nwejm_printer_bindingoffset_dim { \c__nwejm_bindingoffset_b_dim } + }{ + \int_compare:nNnTF {\g__nwejm_total_inside_pages_number_int}<{\c__nwejm_thresold_d_int} + { + \dim_const:Nn \c__nwejm_printer_bindingoffset_dim { \c__nwejm_bindingoffset_c_dim } + }{ + \int_compare:nNnTF {\g__nwejm_total_inside_pages_number_int}<{\c__nwejm_thresold_e_int} + { + \dim_const:Nn \c__nwejm_printer_bindingoffset_dim { \c__nwejm_bindingoffset_d_dim } + }{ + \int_compare:nNnTF {\g__nwejm_total_inside_pages_number_int}<{\c__nwejm_thresold_f_int} + { + \dim_const:Nn \c__nwejm_printer_bindingoffset_dim { \c__nwejm_bindingoffset_e_dim } + }{ + \dim_const:Nn \c__nwejm_printer_bindingoffset_dim { \c__nwejm_bindingoffset_f_dim } + } + } + } + } + } +} +\bool_if:NTF {\g__nwejm_cover_bool} { + \dim_const:Nn \c__nwejm_potential_bindingoffset_dim { \c__nwejm_printer_bindingoffset_dim } +}{ + \dim_const:Nn \c__nwejm_potential_bindingoffset_dim {\c_zero_dim} +} +\dim_const:Nn \c__nwejm_paperheight_dim { \c__nwejm_layoutheight_dim+2\c__nwejm_potential_layoutoffset_dim} +\bool_if:NTF {\g__nwejm_cover_bool} { + \dim_const:Nn \c__nwejm_paperwidth_dim { + \c__nwejm_layoutwidth_dim + + + \c__nwejm_potential_layoutoffset_dim + +\c__nwejm_potential_bindingoffset_dim + } +}{ + \dim_const:Nn \c__nwejm_paperwidth_dim { + \c__nwejm_layoutwidth_dim + + + 2 + \c__nwejm_potential_layoutoffset_dim + +\c__nwejm_potential_bindingoffset_dim + } +} +\dim_const:Nn \c__nwejm_topmargin_dim { 20mm} +\dim_const:Nn \c__nwejm_topmargin_frontcover_dim { + \c__nwejm_topmargin_dim + % + 30mm +} +\dim_const:Nn \c__nwejm_topmargin_inside_cover_dim { + \c__nwejm_topmargin_dim + % +10mm +} +\dim_const:Nn \c__nwejm_topmargin_front_matter_dim { + \c__nwejm_topmargin_inside_cover_dim +} +\dim_const:Nn \c__nwejm_headsep_dim { 9.5mm} +\dim_const:Nn \c__nwejm_headsep_frontcover_dim { + \c__nwejm_headsep_dim + % +31mm + % -\c__nwejm_potential_layoutoffset_dim +} +\dim_const:Nn \c__nwejm_headsep_inside_frontcover_dim { + \c__nwejm_headsep_dim + +7mm +} +\dim_const:Nn \c__nwejm_headsep_front_matter_dim { + \c__nwejm_headsep_inside_frontcover_dim +} +\dim_const:Nn \c__nwejm_headheight_dim { 5mm } +\dim_const:Nn \c__nwejm_botmargin_dim { 30mm} +\dim_const:Nn \c__nwejm_footskip_dim { 10mm} +\dim_const:Nn \c__nwejm_margin_frontcover_dim { 15mm } +\dim_const:Nn \c__nwejm_bottom_frontcover_dim { 15mm } +\dim_const:Nn \c__nwejm_left_minipage_frontcover_dim { .4\linewidth } +\dim_const:Nn \c__nwejm_right_minipage_frontcover_dim { .6\linewidth } +\dim_const:Nn \c__nwejm_innermargin_dim { 23mm } +\dim_const:Nn \c__nwejm_outermargin_dim { 30mm } +\dim_const:Nn \c__nwejm_inside_cover_box_width_dim { 150mm }% +\dim_const:Nn \c__nwejm_innermargin_inside_cover_dim { + (\c__nwejm_layoutwidth_dim - \c__nwejm_inside_cover_box_width_dim)/2 + - \c__nwejm_potential_bindingoffset_dim + % + \c__nwejm_adjustmargin_dim +} +\dim_const:Nn \c__nwejm_outermargin_inside_cover_dim { + (\c__nwejm_layoutwidth_dim - \c__nwejm_inside_cover_box_width_dim)/2 + % - \c__nwejm_adjustmargin_dim +} +\dim_const:Nn \c__nwejm_innermargin_backcover_dim { 10mm } +\dim_const:Nn \c__nwejm_outermargin_backcover_dim { \c__nwejm_innermargin_backcover_dim } +\dim_const:Nn \c__nwejm_topmargin_backcover_dim { \c__nwejm_innermargin_backcover_dim } +\dim_const:Nn \c__nwejm_bottommargin_backcover_dim { \c__nwejm_innermargin_backcover_dim } +\dim_const:Nn \c__nwejm_front_matter_extra_innermargin_dim { \c_zero_dim } +\dim_const:Nn \c__nwejm_front_matter_extra_outermargin_dim { \c_zero_dim } +\dim_const:Nn \c__nwejm_inside_cover_offset_dim { \c_zero_dim }% +\geometry{% + papersize={\c__nwejm_paperwidth_dim,\c__nwejm_paperheight_dim} +} +\bool_if:NTF {\g__nwejm_cover_bool} { + \dim_show:N \c__nwejm_topmargin_frontcover_dim + \dim_show:N \c__nwejm_headsep_frontcover_dim + \dim_show:N \c__nwejm_headheight_dim + \tl_const:Nn \c__nwejm_frontcover_geometry_tl {% + ,layoutsize={\c__nwejm_layoutwidth_dim,\c__nwejm_layoutheight_dim} + ,layoutvoffset=\c__nwejm_potential_layoutoffset_dim + ,bindingoffset=\c__nwejm_potential_bindingoffset_dim + ,top=\c__nwejm_topmargin_frontcover_dim + ,top=\c__nwejm_topmargin_frontcover_dim + ,headsep=\c__nwejm_headsep_frontcover_dim + ,headheight=\c__nwejm_headheight_dim + ,bottom=\c__nwejm_bottom_frontcover_dim + ,footskip=\c__nwejm_footskip_dim + ,outer=\c__nwejm_margin_frontcover_dim + ,inner=\c__nwejm_potential_layoutoffset_dim + ,nomarginpar% + }% +}{ + \tl_const:Nn \c__nwejm_frontcover_geometry_tl {% + ,layoutsize={\c__nwejm_layoutwidth_dim,\c__nwejm_layoutheight_dim} + ,layoutoffset=\c__nwejm_potential_layoutoffset_dim + ,bindingoffset=\c__nwejm_potential_bindingoffset_dim + ,top=\c__nwejm_topmargin_frontcover_dim + ,headsep=\c__nwejm_headsep_frontcover_dim + ,headheight=\c__nwejm_headheight_dim + ,bottom=\c__nwejm_bottom_frontcover_dim + ,footskip=\c__nwejm_footskip_dim + ,hmargin=\c__nwejm_margin_frontcover_dim + ,nomarginpar% + }% +} +\bool_if:NTF {\g__nwejm_cover_bool} { + \tl_const:Nn \c__nwejm_inside_cover_geometry_tl {% + ,layoutsize={\c__nwejm_layoutwidth_dim,\c__nwejm_layoutheight_dim} + ,layoutvoffset=\c__nwejm_potential_layoutoffset_dim + ,bindingoffset=\c__nwejm_potential_bindingoffset_dim + ,top=\c__nwejm_topmargin_inside_cover_dim + ,headheight=\c__nwejm_headheight_dim + ,headsep=\c__nwejm_headsep_inside_frontcover_dim + ,bottom=\c__nwejm_botmargin_dim + ,footskip=\c__nwejm_footskip_dim + ,inner=\c__nwejm_innermargin_inside_cover_dim-\c__nwejm_potential_layoutoffset_dim + ,outer=\c__nwejm_outermargin_inside_cover_dim+\c__nwejm_potential_layoutoffset_dim + ,nomarginpar% + }% +}{ + \tl_const:Nn \c__nwejm_inside_cover_geometry_tl {% + ,layoutsize={\c__nwejm_layoutwidth_dim,\c__nwejm_layoutheight_dim} + ,layoutoffset=\c__nwejm_potential_layoutoffset_dim + ,bindingoffset=\c__nwejm_potential_bindingoffset_dim + ,top=\c__nwejm_topmargin_inside_cover_dim + ,headheight=\c__nwejm_headheight_dim + ,headsep=\c__nwejm_headsep_inside_frontcover_dim + ,bottom=\c__nwejm_botmargin_dim + ,footskip=\c__nwejm_footskip_dim + % ,inner=1cm + % ,outer=1cm + ,inner=\c__nwejm_innermargin_inside_cover_dim + ,outer=\c__nwejm_outermargin_inside_cover_dim + ,nomarginpar% + }% +} +\tl_const:Nn \c__nwejm_front_matter_geometry_tl {% + ,layoutsize={\c__nwejm_layoutwidth_dim,\c__nwejm_layoutheight_dim} + ,layoutoffset=\c__nwejm_potential_layoutoffset_dim + % ,bindingoffset=\c__nwejm_potential_bindingoffset_dim + ,top=\c__nwejm_topmargin_front_matter_dim% + ,headheight=\c__nwejm_headheight_dim + ,headsep=\c__nwejm_headsep_front_matter_dim + ,bottom=\c__nwejm_botmargin_dim + ,footskip=\c__nwejm_footskip_dim% + ,inner=\c__nwejm_innermargin_dim+\c__nwejm_front_matter_extra_innermargin_dim% + ,outer=\c__nwejm_outermargin_dim+\c__nwejm_front_matter_extra_outermargin_dim% + ,nomarginpar% +}% +\tl_const:Nn \c__nwejm_backcover_geometry_tl {% + ,layoutsize={\c__nwejm_layoutwidth_dim,\c__nwejm_layoutheight_dim} + ,layoutoffset=\c__nwejm_potential_layoutoffset_dim + % ,bindingoffset=\c__nwejm_potential_bindingoffset_dim + ,top=\c__nwejm_topmargin_backcover_dim% + % ,top=\c__nwejm_topmargin_dim-15mm% + % ,headheight=\c__nwejm_headheight_dim + % ,headsep=\c__nwejm_headsep_dim-18mm + ,bottom=\c__nwejm_bottommargin_backcover_dim + % ,footskip=\c__nwejm_footskip_dim + ,inner=\c__nwejm_innermargin_backcover_dim + ,outer=\c__nwejm_outermargin_backcover_dim +} +\tl_const:Nn \c__nwejm_main_geometry_tl {% + ,layoutsize={\c__nwejm_layoutwidth_dim,\c__nwejm_layoutheight_dim} + ,layoutoffset=\c__nwejm_potential_layoutoffset_dim + ,textwidth=\c__nwejm_layoutwidth_dim*3/4 + ,textheight=\c__nwejm_layoutheight_dim*3/4 + % ,marginratio={4\string :6,5\string :7} + ,inner=\c__nwejm_innermargin_dim + ,headheight=\c__nwejm_headheight_dim + ,footskip=\c__nwejm_footskip_dim + % + % ,layoutsize={\c__nwejm_layoutwidth_dim,\c__nwejm_layoutheight_dim} + % ,layoutoffset=\c__nwejm_potential_layoutoffset_dim + % % ,bindingoffset=\c__nwejm_potential_bindingoffset_dim + % ,top=\c__nwejm_topmargin_dim% + % ,headheight=\c__nwejm_headheight_dim + % ,headsep=\c__nwejm_headsep_dim + % ,bottom=\c__nwejm_botmargin_dim + % ,footskip=\c__nwejm_footskip_dim + % ,inner=\c__nwejm_innermargin_dim + % ,outer=\c__nwejm_outermargin_dim +}% +\bool_if:NF {\g__nwejm_coverpage_bool} { + \bool_if:NF {\g__nwejm_inside_pages_bool} { + \preto\@enddocumenthook{ + \cleardoublepage + \pagenumbering{roman}% + \setcounter{page}{3} + \bool_gset_true:N \g__nwejm_backmatter_bool + \g__nwejm_display_inside_backcover_tl + \newpage + \@openrightfalse + \g__nwejm_display_backcover_tl + }% + }% +}% +\bool_new:N \g__nwejm_tableofcontents_already_used_bool +\renewcommand\etocbeforetitlehook +{% + \DeclareNameAlias{labelname}{giveninits-last} + \bool_if:NF {\g__nwejm_for_authors_bool}{ + \bool_if:NF {\g__nwejm_tableofcontents_already_used_bool}{ + \g__nwejm_frontmatter_switch_tl + \phantomsection + \hypertarget{__nwejm_toc}{} + \bookmark[dest=__nwejm_toc,level=chapter]{\contentsname} + } + } +}% +\renewcommand\etocaftertochook +{% + \bool_if:NF {\g__nwejm_for_authors_bool}{ + \bool_if:NF {\g__nwejm_tableofcontents_already_used_bool}{ + \normalsize% + \clearpage% + \bool_gset_false:N \g__nwejm_frontmatter_bool% + \g__nwejm_mainmatter_switch_tl + } + } + \bool_gset_true:N \g__nwejm_tableofcontents_already_used_bool +}% + % \box_new:N \l__nwejm_journal_frontcover_logo_box + % \box_new:N \l__nwejm_journal_volume_box + % \AfterEndPreamble{% + % \hbox_set:Nn \l__nwejm_journal_volume_box + % { + % \color{Navy} + % \LARGE + % \bfseries + % \sffamily + % \adjustbox{stack=l}{% + % \c__nwejm_frontcover_header_left_string_tl + % \\\c__nwejm_frontcover_header_right_string_tl + % } + % } + % \hbox_set:Nn \l__nwejm_journal_frontcover_logo_box + % { + % \includegraphics[width=3cm]{ nwejm-logo } + % } + % \hbox_set_to_wd:Nnn \l__nwejm_journal_frontcover_logo_box { 1cm } + % { + % \box_move_down:nn + % { + % \box_ht:N \l__nwejm_journal_frontcover_logo_box / 2 + % - + % \box_ht:N \l__nwejm_journal_volume_box / 2 + % } + % { + % \box_use:N \l__nwejm_journal_frontcover_logo_box + % } + % } +\newpagestyle{__nwejm_frontcover_ps}[]{% + \sethead + { + \color{Navy} + \Large + \bfseries + \sffamily + \adjustbox{stack=l}{% + \c__nwejm_frontcover_header_left_string_tl + \\\c__nwejm_frontcover_header_right_string_tl + } + }% + {}% + {% + % \l__nwejm_journal_frontcover_logo_box + {\includegraphics[width=1cm]{ nwejm-logo }} + }% + % + \setfoot% + {}% + {}% + {}% +}% +\newpagestyle{__nwejm_inside_frontcover_ps}[]{% + \sethead% + {}% + {}% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +\newpagestyle{__nwejm_frontmatter_ps}[]{% + \sethead% + {}% + {}% + {}% + % + \setfoot% + {}% + {\thepage}% + {}% +}% +\newpagestyle{__nwejm_blank_pages_ps}[]{% + \sethead + {}% + {}% + {}% + % + \setfoot% + {}% + {\thepage}% + {}% +}% +\newpagestyle{__nwejm_inside_backcover_ps}[]{% + \sethead% + {}% + {}% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +\newpagestyle{__nwejm_backcover_ps}[]{% + \sethead + {}% + {}% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +\tl_new:N \l__nwejm_section_header_tl +\tl_set:Nn \l__nwejm_section_header_tl { + \ifthesection{% + \thesection.~% + }{% + } + \sectiontitle +}% +\newpagestyle{__nwejm_mainmatter_ps}[]{% + \sethead% + [ + \tl_if_exist:NT {\g__nwejm_short_title_tl} + { + \tl_if_empty:NF \g__nwejm_short_title_tl {% + \slshape\g__nwejm_short_title_tl + } + } + ]% + [% + ]% + [ + \DeclareNameAlias{labelname}{giveninits-last} + \AtNextCitekey{\defcounter{maxnames}{2}}\citeauthor{\g__nwejm_article_bib_key_tl} + ]% + { + \slshape\l__nwejm_section_header_tl + }% + {% + }% + { + }% + % + \setfoot% + {}% + {\thepage}% + {}% +} + \box_new:N \l__nwejm_journal_logo_box + \box_new:N \l__nwejm_journal_name_box + \AfterEndPreamble{% + \hbox_set:Nn \l__nwejm_journal_name_box + { + \bfseries% + \adjustbox{stack=l}{% + \c__nwejm_journal_title_string_tl + \\\tl_mixed_case:n{\GetTranslation{volume-abbreviated}}\space\int_use:N \g__nwejm_issue_number_int +} +} +\hbox_set:Nn \l__nwejm_journal_logo_box +{ + \includegraphics[width=1cm]{ nwejm-logo-NB } +} +\hbox_set_to_wd:Nnn \l__nwejm_journal_logo_box { 1cm } +{ + \box_move_down:nn + { + \box_ht:N \l__nwejm_journal_logo_box / 2 + - + \box_ht:N \l__nwejm_journal_name_box / 2 + } + { + \box_use:N \l__nwejm_journal_logo_box + } +} +\box_set_ht:Nn \l__nwejm_journal_logo_box { \c_zero_dim } +\box_set_dp:Nn \l__nwejm_journal_logo_box { \c_zero_dim } +} +\newpagestyle{__nwejm_article_title_ps}[]{% + % \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + { + \box_use:N \l__nwejm_journal_name_box + }% + {% + }% + { + \box_use:N \l__nwejm_journal_logo_box + }% + % + \setfoot% + {}% + {\thepage}% + {}% +} +\def\@pnumwidth{\@tocrmarg} +\AtBeginDocument{% + \graphicspath{{\c__nwejm_issue_images_path_string_tl//}{../\c__nwejm_issue_images_path_string_tl//}} + % \glsdisablehyper +} +\tl_new:N \l__nwejm_journal_publisher_tl +\tl_new:N \l__nwejm_journal_address_tl +\tl_new:N \l__nwejm_journal_phone_tl +\tl_new:N \l__nwejm_journal_email_tl +\tl_new:N \l__nwejm_journal_url_tl +\tl_new:N \l__nwejm_journal_issn_tl +\tl_new:N \l__nwejm_journal_isbn_tl +\keys_define:nn { nwejm/journalsetup } +{ + publisher .tl_set:N = \l__nwejm_journal_publisher_tl, + address .tl_set:N = \l__nwejm_journal_address_tl, + phone .tl_set:N = \l__nwejm_journal_phone_tl, + email .tl_set:N = \l__nwejm_journal_email_tl, + url .tl_set:N = \l__nwejm_journal_url_tl, + issn .tl_set:N = \l__nwejm_journal_issn_tl, + isbn .tl_set:N = \l__nwejm_journal_isbn_tl, + publisher .value_required:, + address .value_required:, + phone .value_required:, + email .value_required:, + url .value_required:, + issn .value_required:, + isbn .value_required:, +} +\int_new:N \g__nwejm_issue_number_int +\int_new:N \g__nwejm_issue_month_int +\int_new:N \g__nwejm_issue_year_int +\tl_new:N \g__nwejm_frontcover_image_options_tl +\keys_define:nn { nwejm/issuesetup } +{ + number .int_gset:N = \g__nwejm_issue_number_int, + volume .int_gset:N = \g__nwejm_issue_volume_int, + volume .value_required:, + volume .initial:n = 0, +} +\keys_define:nn { nwejm/dates } +{ + received .code:n = { + \tl_gset:Nn \g__nwejm_reception_date_tl {#1} + \bool_gset_true:N \g__nwejm_date_specified_bool + }, + accepted .code:n = { + \tl_gset:Nn \g__nwejm_acception_date_tl {#1} + \bool_gset_true:N \g__nwejm_date_specified_bool + }, + online .code:n = { + \tl_gset:Nn \g__nwejm_online_date_tl {#1} + \bool_gset_true:N \g__nwejm_date_specified_bool + }, + received .value_required:, + accepted .value_required:, + online .value_required:, +} +\quark_new:N \q__nwejm +\int_new:N \l_author_int +\prop_new:N \g_authors_prop +\prop_new:N \l_affiliations_tagged_prop +\cs_generate_variant:Nn \prop_put_if_new:Nnn { NVn } +\cs_generate_variant:Nn \prop_gput_if_new:Nnn { Nxn } +\cs_generate_variant:Nn \prop_put_if_new:Nnn { NnV } +\cs_new:Npn \__nwejm_prop_count:nn #1#2 { + 1 } +\cs_new:Npn \__nwejm_prop_count:N #1 +{ \int_eval:n { 0 \prop_map_function:NN #1 \__nwejm_prop_count:nn } } +\NewDocumentCommand \__nwejm_author_affiliation:ww { o u\q__nwejm } +{ + \stepcounter{footnote} + \prop_put_if_new:NVn \l_tmpa_prop {\the\c@footnote} {#2} + \IfValueT{#1}{% + \prop_put_if_new:NnV \l_affiliations_tagged_prop {#1} {\the\c@footnote} + } +} +\keys_define:nn { nwejm / authors } +{ + email .tl_gset:N = \g__nwejm_people_email_tl, + affiliation .code:n = {% + \__nwejm_author_affiliation:ww #1 \q__nwejm + }, + affiliationtagged .code:n = {% + \prop_get:NnNTF \l_affiliations_tagged_prop {#1} \l_tmpa_tl + {% + \prop_put_if_new:NVn \l_tmpa_prop {\l_tmpa_tl} {} + }{ + \msg_error:nnn{__nwejm}{Unknown~tag}{#1} + } + }, + affiliation .value_required:, + affiliationtagged .value_required:, +} +\tl_new:N \l__nwejm_newtheorem_style_tl +\keys_define:nn { nwejm / newtheorem } +{ + title .tl_set:N = \l__nwejm_newtheorem_title_tl, + title / french .tl_set:N = \l__nwejm_newtheorem_french_title_tl, + title / english .tl_set:N = \l__nwejm_newtheorem_english_title_tl, + title / german .tl_set:N = \l__nwejm_newtheorem_german_title_tl, + title / dutch .tl_set:N = \l__nwejm_newtheorem_dutch_title_tl, + title .value_required:, + title / french .value_required:, + title / english .value_required:, + title / german .value_required:, + title / dutch .value_required:, + % + style .choice:, + style / theorem .code:n = {\__nwejm_theorem_style:n {theorem}}, + style / definition .code:n = {\__nwejm_theorem_style:n {definition}}, + style / proof .code:n = {\__nwejm_theorem_style:n {proof}}, + style / unknown .code:n = + \msg_error:nnxxx { nwejm } { Unknown~choice } + { style } % Name of choice key + { theorem~or~definition~or~proof } % Valid choices + { \exp_not:n {#1} } % Invalid choice given +} +\bool_new:N \g__nwejm_gradient_nabla_bool +\bool_new:N \g__nwejm_gradient_nabla_control_bool +\keys_define:nn { nwejm/articlesetup } +{ + gradient .choice:, + gradient / nabla .code:n = {\bool_gset_true:N \g__nwejm_gradient_nabla_bool}, + gradient / grad .code:n = {\bool_gset_false:N \g__nwejm_gradient_nabla_bool}, + gradient / unknown .code:n = + \msg_error:nnxxx { nwejmart } { Unknown~choice } + { gradient } % Name of choice key + { nabla~or~grad } % Valid choices + { \exp_not:n {#1} } % Invalid choice given +} +\tl_new:N \g__nwejm_nwejm_short_string_tl +\tl_new:N \g__nwejm_nwejm_string_tl +\tl_gset:Nn \g__nwejm_nwejm_short_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c__nwejm_journal_short_title_string_tl}}{\c__nwejm_journal_short_title_string_tl} + }{% + \emph{\c__nwejm_journal_short_title_string_tl} + }% +} +\tl_gset:Nn \g__nwejm_nwejm_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c__nwejm_journal_title_string_tl}}{\c__nwejm_journal_title_string_tl} + }{% + \emph{\c__nwejm_journal_title_string_tl} + }% +} +\tl_new:N \l__nwejm_pdftitle_string_tl +\tl_new:N \l__nwejm_pdfauthor_string_tl +\tl_set:Nn \l__nwejm_pdftile_string_tl { + \c__nwejm_journal_title_string_tl\space--\space{}N^^c2^^b0\int_use:N\g__nwejm_issue_number_int +} +\tl_set:Nn \l__nwejm_pdfauthor_string_tl { + \g__nwejm_nwejm_string_tl +} +\cs_new_protected:Nn \__nwejm_email:n + { + \href{mailto:#1}{\nolinkurl{#1}}% + } +\tl_new:N \l__nwejm_crossref_tl +\cs_new_protected:Nn \__nwejm_populate_bib_file:nn +{ + \int_if_exist:cF {g__nwejm_#2_int} + { + \int_new:c {g__nwejm_#2_int} + } + \int_incr:c {g__nwejm_#2_int} + \tl_if_in:nnTF { #2 } { author } { + \tl_set:Nn \l__nwejm_crossref_tl {% + \c__nwejm_issue_bib_key_tl + -art- + \int_use:N \g__nwejm_articles_int + } + } { + \tl_set:Nn \l__nwejm_crossref_tl {\c__nwejm_issue_bib_key_tl} + } + \tl_set:Nn \l__nwejm_people_first_last_name_tl {#1} + \iow_now:Nx \g__nwejm_bib_out_iow {% + @article{ + \c__nwejm_issue_bib_key_tl -#2- \int_use:c {g__nwejm_#2_int}, + \iow_newline: + author={\exp_not:V\l__nwejm_people_first_last_name_tl}, + \iow_newline: + options={skipbib}, + \iow_newline: + crossref = {\l__nwejm_crossref_tl} + \iow_newline: + } + \iow_newline: + }% +} +\DTLnewdb{people} +\cs_new_protected:Nn \__nwejm_people:nnnnn +{ + \DTLnewrow{people}% + \DTLnewdbentry{people}{first-last-name}{#1}% + \DTLnewdbentry{people}{affiliation}{#2}% + \DTLnewdbentry{people}{country}{#3}% + \DTLnewdbentry{people}{email}{#4}% + \DTLnewdbentry{people}{role}{#5}% + \__nwejm_populate_bib_file:nn {#1}{#5} +} +\cs_generate_variant:Nn \__nwejm_people:nnnnn { nVnVx } +\cs_new_protected:Nn \__nwejm_display_people_by_role:n +{ + \DTLforeach*[\DTLiseq{\l__nwejm_people_role_tl}{#1}]{people}{% + \l__nwejm_firstlastname_tl=first-last-name% + ,\l__nwejm_people_affiliation_tl=affiliation% + ,\l__nwejm_people_country_tl=country% + ,\l__nwejm_people_email_tl=email% + ,\l__nwejm_people_role_tl=role% + }{% + \tl_if_in:NnTF \l__nwejm_people_role_tl { editor } { + \item[ + \__nwejm_citeauthor_no_giveninits:n {\c__nwejm_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}% + ] + \l__nwejm_people_affiliation_tl% + \space% + (\l__nwejm_people_country_tl)% + % ,\space% + % \__nwejm_email:n {\l__nwejm_people_email_tl} + \DTLiflastrow{% + }{% + % \medskip% + } + }{ + \tl_if_in:NnTF \l__nwejm_people_role_tl { author } { + \footnotesize% + \noindent% + \begin{description}[leftmargin=1em,style=nextline] + \item[% + \__nwejm_citeauthor_no_giveninits:n {\c__nwejm_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}% + ] + \tl_if_empty:NF \l__nwejm_people_affiliation_tl + {% + \mbox{}% + \par% + \vspace{-2ex}% + \l__nwejm_people_affiliation_tl% + } + \tl_if_empty:NF \l__nwejm_people_email_tl + {% + \par% + \__nwejm_email:n {\l__nwejm_people_email_tl} + } + \end{description} + \DTLiflastrow{% + }{ + \DTLpar% + \medskip% + } + }{ + \__nwejm_citeauthor_no_giveninits:n {\c__nwejm_issue_bib_key_tl -#1- + \exp_not:V\DTLcurrentindex}% + \tl_if_empty:NF \l__nwejm_people_email_tl + { + \space(\__nwejm_email:n {\l__nwejm_people_email_tl}) + } + } + } + } +} +\tl_new:N \g__nwejm_display_frontcover_tl% +\tl_gset:Nn \g__nwejm_display_frontcover_tl {% + \bool_gset_true:N \g__nwejm_frontcover_bool + \pagestyle{__nwejm_frontcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__nwejm_frontcover_geometry_tl}% + \noindent% + \bool_if:NTF {\g__nwejm_cover_bool} { + \hspace*{-\c__nwejm_potential_layoutoffset_dim} + }{ + \hspace*{-2\c__nwejm_potential_layoutoffset_dim} + } + { + \mbox{} + \vfill + \begin{center} + \Huge% + \bfseries% + \sffamily% + \itshape% + \color{Navy}% + \c__nwejm_journal_front_cover_title_string_tl% + \end{center} + } + \vfill% + \clearpage% + \bool_gset_false:N \g__nwejm_frontcover_bool +} +\tl_new:N \g__nwejm_display_inside_frontcover_tl% +\tl_gset:Nn \g__nwejm_display_inside_frontcover_tl {% + \bool_gset_true:N \g__nwejm_inside_frontcover_bool% + \pagestyle{__nwejm_inside_frontcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__nwejm_inside_cover_geometry_tl}% + \footnotesize% + \begin{multicols*}{2} + \setlength{\columnsep}{1mm} + \begin{description}[leftmargin=2em] + \item[\textsc{\c__nwejm_editorinchief_string_tl}] \ + \begin{description}[leftmargin=1em] + \__nwejm_display_people_by_role:n {editorinchief} + \end{description} + \bigskip + \par + \item[\textsc{\c__nwejm_associate_editors_string_tl}] \ + \begin{description}[leftmargin=1em] + \__nwejm_display_people_by_role:n {editor} + \end{description} + \bigskip + \par + \item[\textsc{\c__nwejm_field_editor_string_tl}] \ + \begin{description}[leftmargin=1em] + \__nwejm_display_people_by_role:n {fieldseditor} + \end{description} + \bigskip + \par + \item[\textsc{\c__nwejm_managing_editor_string_tl}] \ + \begin{description}[leftmargin=1em] + \__nwejm_display_people_by_role:n {managingeditor} + \end{description} + \end{description} + \end{multicols*} + \clearpage% + \bool_gset_false:N \g__nwejm_inside_frontcover_bool + \pagestyle{__nwejm_frontmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__nwejm_main_geometry_tl}% +} +\tl_new:N \g__nwejm_display_inside_backcover_tl% +\tl_gset:Nn \g__nwejm_display_inside_backcover_tl {% + \bool_gset_true:N \g__nwejm_inside_backcover_bool% + \pagestyle{__nwejm_inside_backcover_ps}% + % \exp_after:wN\newgeometry\exp_after:wN{\c__nwejm_inside_cover_geometry_tl}% + % \file_if_exist:nT { \c__nwejm_authors_instructions_file_tl } {% + \bool_if:NTF {\g__nwejm_no_inside_backcover_bool} { + \hbox{} + }{% + \small% + \file_if_exist:nT { \c__nwejm_authors_instructions_file_tl } {% + % \begin{multicols}{2} + % \setlength{\columnsep}{1mm} + \file_input:n {\c__nwejm_authors_instructions_file_tl} + % \end{multicols} + % \setlength{\columnseprule}{1pt} + } + \begin{description}[leftmargin=1em] + \item[\c__nwejm_editorial_secretariat_string_tl{}~:] \ \par% + % \l__nwejm_journal_publisher_tl% + % \par% + % \space\textendash{}\space% + \__nwejm_display_people_by_role:n { secretary }\par + \l__nwejm_journal_address_tl\par% + \c__nwejm_phone_string_tl{}~:~\l__nwejm_journal_phone_tl{}\par% + \__nwejm_email:n {\l__nwejm_journal_email_tl} + \newline% + % \space\textendash{}\space + \url{\l__nwejm_journal_url_tl} + \item[\c__nwejm_issn_string_tl{}~:] \l__nwejm_journal_issn_tl + \tl_if_empty:NF \l__nwejm_journal_isbn_tl + {% + \item[\c__nwejm_isbn_string_tl{}~:] \l__nwejm_journal_isbn_tl + } + \item[\c__nwejm_latexclass_string_tl{}~:] + \__nwejm_display_people_by_role:n { classdesigner } + \item[\c__nwejm_computer_engineering_string_tl{}~:] %\g__nwejm_printer_text_tl + \__nwejm_display_people_by_role:n { computerengineer } + \item[\c__nwejm_printer_string_tl{}~:] %\g__nwejm_printer_text_tl + \__nwejm_display_people_by_role:n { printingservice } + \end{description} + \g__nwejm_font_designer_text_tl + } + % }{% + % \hbox{} + % } + \bool_gset_false:N \g__nwejm_inside_backcover_bool +} +\tl_new:N \g__nwejm_short_toc_tl% +\tl_gset:Nn \g__nwejm_short_toc_tl {% + \begingroup + \etocstandardlines + \etocsetnexttocdepth{chapter} + \renewcommand{\etocbkgcolorcmd}{\color{Navy!5}} + \renewcommand{\etocbelowtocskip}{0pt\relax} + \fboxsep1ex + \etocframedstyle [1]{\fbox{\makebox[.5\linewidth]{\etocfontminusone\c__nwejm_backcover_tableofcontents_string_tl}}} + \tableofcontents + \endgroup +} +\tl_new:N \g__nwejm_display_backcover_tl% +\tl_gset:Nn \g__nwejm_display_backcover_tl {% + \bool_gset_true:N \g__nwejm_backcover_bool +\g__nwejm_short_toc_tl +\vfill{} + \begin{center} + \includegraphics[height=.4\textheight]{nwejm-logos-collection.pdf} + \end{center} +} +\cs_new_protected:Nn \__nwejm_date:nn +{ + \tl_if_exist:NT {#2} + { + \tl_if_empty:NF {#2} + { + \tl_if_eq:NNF {\c__nwejm_date_received_tl} {#1} { \c__nwejm_dates_separator_tl } + \tl_mixed_case:n { \exp_args:No \GetTranslation{#1} } + \c__nwejm_colon_tl\space + \DTMdate{#2}% + } + } +} +\tl_new:N \g__nwejm_display_dates_tl% +\tl_gset:Nn \g__nwejm_display_dates_tl {% + \footnotesize% + \__nwejm_date:nn {\c__nwejm_date_received_tl}{\g__nwejm_reception_date_tl} + \__nwejm_date:nn {\c__nwejm_date_accepted_tl}{\g__nwejm_acception_date_tl} + \__nwejm_date:nn {\c__nwejm_date_online_tl} {\g__nwejm_online_date_tl} + \tl_gclear:N \g__nwejm_reception_date_tl + \tl_gclear:N \g__nwejm_acception_date_tl + \tl_gclear:N \g__nwejm_online_date_tl +} +\seq_new:N \l__nwejm_keywords_seq +\tl_new:N \l__nwejm_keywords_tl +\NewDocumentCommand \keywords { m } { + \seq_clear:N \l__nwejm_keywords_seq + \tl_clear:N \l__nwejm_keywords_tl + \seq_set_from_clist:Nn \l_tmpa_seq {#1} + \seq_set_map:NNn \l__nwejm_keywords_seq \l_tmpa_seq { + ##1 + } + \tl_set:Nn \l__nwejm_keywords_tl { \seq_use:Nn \l__nwejm_keywords_seq {,~} } +} +\seq_new:N \l__nwejm_msc_seq +\tl_new:N \l__nwejm_msc_tl +\NewDocumentCommand \msc { m } { + \seq_clear:N \l__nwejm_msc_seq + \tl_clear:N \l__nwejm_msc_tl + % + % does what the name suggests, set a sequence from the clist + \seq_set_from_clist:Nn \l_tmpa_seq {#1} + % applies final arg to each element of second seq and stores result in first seq + \seq_set_map:NNn \l__nwejm_msc_seq \l_tmpa_seq { + ##1 + } + % + % \seq_use puts the items from the seq back in the input with ",~" as a separator + \tl_set:Nn \l__nwejm_msc_tl {\seq_use:Nn \l__nwejm_msc_seq {,~}} +%%<class-article> \hypersetup{pdfmsc=\l_@@_msc_tl} +} +%% \enquote{R\'{e}dacteur(s) en chef}. +\NewDocumentCommand \editorinchief {mmmm} +{ + \__nwejm_people:nnnnn {#1}{#2}{#3}{#4}{editorinchief} +} +\NewDocumentCommand \editor {mmmm} +{ + \__nwejm_people:nnnnn {#1}{#2}{#3}{#4}{editor} +} +\NewDocumentCommand \fieldseditor {mmmm} +{ + \__nwejm_people:nnnnn {#1}{#2}{#3}{#4}{fieldseditor} +} +\NewDocumentCommand \managingeditor {mmmm} +{ + \__nwejm_people:nnnnn {#1}{#2}{#3}{#4}{managingeditor} +} +\NewDocumentCommand \classdesigner {mmmm} +{ + \__nwejm_people:nnnnn {#1}{#2}{#3}{#4}{classdesigner} +} +\NewDocumentCommand \computerengineer {mmmm} +{ + \__nwejm_people:nnnnn {#1}{#2}{#3}{#4}{computerengineer} +} +\NewDocumentCommand \classmaintainer {mmmm} +{ + \__nwejm_people:nnnnn {#1}{#2}{#3}{#4}{classmaintainer} +} +\NewDocumentCommand \fontdesigner {mmmm} +{ + \__nwejm_people:nnnnn {#1}{#2}{#3}{#4}{fontdesigner} +} +\NewDocumentCommand \printingservice {mmmm} +{ + \__nwejm_people:nnnnn {#1}{#2}{#3}{#4}{printingservice} +} +\NewDocumentCommand \computerassistance {mmmm} +{ + \__nwejm_people:nnnnn {#1}{#2}{#3}{#4}{computerassistance} +} +\NewDocumentCommand \secretary {mmmm} +{ + \__nwejm_people:nnnnn {#1}{#2}{#3}{#4}{secretary} +} +\NewDocumentCommand \issuesetup { m } { + \keys_set:nn { nwejm/issuesetup } {#1} +\hypersetup{pdftitle=\l__nwejm_pdftitle_string_tl} +\hypersetup{pdfauthor=\l__nwejm_pdfauthor_string_tl} + \int_compare:nNnT {\g__nwejm_issue_number_int}<{1} + { + \int_gset:Nn \g__nwejm_issue_number_int { \c__nwejm_first_issue_number_int } + \msg_warning:nnn{nwejm}{Issue~number~needed}{number} + } + \int_compare:nNnT {\g__nwejm_issue_month_int * \g__nwejm_issue_year_int}<{1} + { + \int_new:N \g__nwejm_issue_age_in_months_int% + \int_gset:Nn \g__nwejm_issue_age_in_months_int + { + \c__nwejm_first_issue_month_int + + \c__nwejm_interval_in_months_int + * ( \int_use:N \g__nwejm_issue_number_int - \c__nwejm_first_issue_number_int ) + } + } + \int_compare:nNnT {\g__nwejm_issue_month_int}<{1} + { + \int_gset:Nn \g__nwejm_issue_month_int + { + \int_mod:nn { \g__nwejm_issue_age_in_months_int } { 12 } + } + } + \int_compare:nNnT {\g__nwejm_issue_year_int}<{1} + { + \int_new:N \g__nwejm_issue_age_in_years_int% + \int_gset:Nn \g__nwejm_issue_age_in_years_int + {% + \int_div_truncate:nn { \g__nwejm_issue_age_in_months_int } { 12 } + }% + \int_gset:Nn \g__nwejm_issue_year_int + { + \g__nwejm_issue_age_in_years_int + \c__nwejm_first_issue_year_int + } + }% +} +\NewDocumentCommand \journalsetup { m } { + \keys_set:nn { nwejm/journalsetup } { #1 } +} +\addto\extrasfrench{% + \def\reftextfaceafter {page~\reftextvario{ci-contre}{suivante}}% + \def\reftextfacebefore{page~\reftextvario{ci-contre}% + {pr\^^e2^^80^^99ec\^^e2^^80^^99edente}}% + \def\reftextafter + {page~suivante}% + \def\reftextbefore + {page~pr\^^e2^^80^^99ec\^^e2^^80^^99edente}% + \def\reftextcurrent + {de~la~pr\^^e2^^80^^99esente~page}% + \def\reftextfaraway#1{page~\pageref{#1}}% + \def\reftextpagerange#1#2{pages~\pageref{#1}--\pageref{#2}}% + \def\reftextlabelrange#1#2{\ref{#1}~\^^e2^^80^^98a~\ref{#2}}% +} +\addto\extrasngerman{% + \def\reftextfaceafter {auf~der~n\"achsten~Seite}% + \def\reftextfacebefore{auf~der~vorherigen~Seite}% + \let\reftextafter \reftextfaceafter + \let\reftextbefore \reftextfacebefore + \def\reftextcurrent {auf~dieser~Seite}% + \def\reftextfaraway#1{auf~Seite~\pageref{#1}}% + \def\reftextpagerange#1#2{auf~den~Seiten~\pageref{#1}--\pageref{#2}}% + \def\reftextlabelrange#1#2{\ref{#1}~bis~\ref{#2}}% +} +\addto\extrasdutch{% + \def\refpagename{pagina}% + \def\reftextfaceafter {op~de~\reftextvario{rechter~\refpagename}% + {\refpagename\ hiernaast}}% + \def\reftextfacebefore{op~de~\reftextvario{linker~\refpagename}% + {\refpagename\ hiernaast}}% + \def\reftextafter {op~de~\reftextvario{volgende~\refpagename}% + {\refpagename\ hierna}}% + \def\reftextbefore {op~de~\reftextvario{vorige~\refpagename}% + {\refpagename\ hiervoor}}% + \def\reftextcurrent {op~deze~\refpagename}% + \def\reftextfaraway#1{op~\refpagename\space\pageref{#1}} +} +\addto\extrasenglish{% + \def\reftextfaceafter {on~the~\reftextvario{facing}{next}~page}% + \def\reftextfacebefore{on~the~\reftextvario{facing}{preceding}~page}% + \def\reftextafter {on~the~\reftextvario{following}{next}~page}% + \def\reftextbefore {on~the~\reftextvario{preceding}{previous}~page}% + \def\reftextcurrent {on~\reftextvario{this}{the~current}~page}% + \def\reftextfaraway#1{on~page~\pageref{#1}}% + \def\reftextpagerange#1#2{on~pages~\pageref{#1}--\pageref{#2}}% + \def\reftextlabelrange#1#2{\ref{#1}~to~\ref{#2}}% +} +\cs_new_protected:Nn \__nwejm_command_only_in_body:n +{ + \cs_if_eq:NNF {\@onlypreamble} {\@notprerr} { + \msg_error:nnn{ + nwejm + }{Command~restricted~to~document~body~used~in~preamble}{#1} + } +} +\NewDocumentCommand \articlesetup { m } { + \__nwejm_command_only_in_body:n {\articlesetup} + \keys_set:nn { nwejm/articlesetup } {#1} +} +\NewDocumentCommand \dates { m } { + \keys_set:nn { nwejm/dates } { #1 } +} +\NewDocumentCommand \inputarticle { O{english} m } {% + \newrefsection + \tl_if_eq:nnTF { #1 } { german } {% + \selectlanguage{ngerman} + }{ + \selectlanguage{#1} + }% + \tl_if_eq:nnTF { #1 } { french } {% + \FrenchFootnotes + }{% + \StandardFootnotes + } + \bool_gset_false:N \g__nwejm_gradient_nabla_bool + \bool_gset_false:N \g__nwejm_gradient_nabla_control_bool + \bool_gset_false:N \g__nwejm_grad_used_bool + \inputfrom{./}{#2} + \clist_put_right:Nn \g__nwejm_counters_to_be_reset_clist { + footnote, + section, + figure, + table, + equation + } + \clist_map_inline:Nn \g__nwejm_counters_to_be_reset_clist { + \@ifundefined{c@##1}{ + }{ + \setcounter{##1}{\c_zero} + } + } + \glsresetall + \selectlanguage{english} +} +\AtBeginDocument{% +\tl_new:N \g__nwejm_bib_issue_date_tl +\tl_gset:Nn +\g__nwejm_bib_issue_date_tl { + \int_use:N \g__nwejm_issue_year_int - + \int_compare:nNnT {\g__nwejm_issue_month_int}<{10} + { + 0 + } + \int_use:N \g__nwejm_issue_month_int +} + \iow_now:Nx \g__nwejm_bib_out_iow {% + @periodical{\c__nwejm_issue_bib_key_tl,\iow_newline: + issuetitle = {\exp_not:f\c__nwejm_journal_title_string_tl},\iow_newline: + date = {\g__nwejm_bib_issue_date_tl},\iow_newline: + number = \int_use:N \g__nwejm_issue_number_int,\iow_newline: + % issn = {\l__nwejm_journal_issn_tl},\iow_newline: + options = {skipbib}\iow_newline: + } + \iow_newline: + }% +} +\tl_new:N \g__nwejm_title_tl +\RenewDocumentCommand \title { o m } { + \cleardoublepage + \int_gincr:N \g__nwejm_articles_int + \tl_gclear:N \g__nwejm_short_title_tl + \tl_gclear:N \g__nwejm_short_subtitle_tl + % + \IfNoValueF {#1} + { + \tl_gset:Nn \g__nwejm_short_title_tl {#1} + } + \tl_gset:Nn \g__nwejm_title_tl {#2} + \tl_if_empty:NT \g__nwejm_short_title_tl {% + \tl_gset_eq:NN \g__nwejm_short_title_tl \g__nwejm_title_tl + } +} +\tl_new:N \g__nwejm_subtitle_tl +\NewDocumentCommand \subtitle { o m } { + \IfNoValueF {#1} + { + \tl_gset:Nn \g__nwejm_short_subtitle_tl {#1} + } + \tl_gset:Nn \g__nwejm_subtitle_tl {#2} + \tl_if_empty:NT \g__nwejm_short_subtitle_tl {% + \tl_gset_eq:NN \g__nwejm_short_subtitle_tl \g__nwejm_subtitle_tl + } +} +\RenewDocumentCommand \author { O{} m } { + \cleardoublepage + \int_incr:N \l_author_int + \prop_gput_if_new:Nxn \g_authors_prop {author_\int_use:c {l_author_int}} {#2} + \IfNoValueF {#1} + { + \keys_set:nn { nwejm/authors } { #1 } + } + \prop_set_eq:cN {l_author_ \int_use:c {l_author_int} _affiliations_prop} \l_tmpa_prop + \prop_clear:N \l_tmpa_prop + \__nwejm_populate_bib_file:nn {#2}{author-art-\int_use:N \g__nwejm_articles_int} + \tl_if_empty:NTF \l__nwejm_people_first_last_names_tl {% + \tl_put_right:Nn + \l__nwejm_people_first_last_names_tl + {#2} + }{ + \tl_put_right:Nn + \l__nwejm_people_first_last_names_tl + {~and~#2} + } +} +\iow_new:N \g__nwejm_bib_out_iow +\ior_new:N \g__nwejm_bib_out_ior +\tl_new:N \g__nwejm_bib_out_tl +\file_if_exist:nTF { \c__nwejm_issue_bib_path_string_tl } +{ + \ior_open:Nn \g__nwejm_bib_out_ior { \c__nwejm_issue_bib_path_string_tl } + \ior_str_map_inline:Nn \g__nwejm_bib_out_ior + { \tl_gput_right:Nn \g__nwejm_bib_out_tl {#1 \par } } + \ior_close:N \g__nwejm_bib_out_ior +}{ + \typeout{no file! rerun} +} +\iow_open:Nn \g__nwejm_bib_out_iow { \c__nwejm_issue_bib_path_string_tl } +\tl_new:N \g__nwejm_abstract_body_tl +\NewDocumentEnvironment{abstract}{} + {\CollectAbstract} + {\endCollectAbstract} +\NewEnviron{CollectAbstract} + { + \tl_gset_eq:NN \g__nwejm_abstract_body_tl \BODY + } +\tl_new:N \g__nwejm_frontmatter_switch_tl% +\tl_gset:Nn \g__nwejm_frontmatter_switch_tl { + \bool_gset_true:N \g__nwejm_frontmatter_bool + \frontmatter + \pagestyle{__nwejm_frontmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__nwejm_main_geometry_tl}% +} +\tl_new:N \g__nwejm_mainmatter_switch_tl% +\tl_gset:Nn \g__nwejm_mainmatter_switch_tl { + \bool_gset_false:N \g__nwejm_frontmatter_bool + \bool_gset_true:N \g__nwejm_mainmatter_bool + \mainmatter + % \SetParskip{\c__nwejm_mainmatter_parskip_skip} + \pagestyle{__nwejm_mainmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__nwejm_main_geometry_tl}% +} +\tl_new:N \g__nwejm_article_acknowledgments_tl% +\cs_new_protected:Nn \__nwejm_article_acknowledgments:n +{ + \tl_gset:Nn \g__nwejm_article_acknowledgments_tl { #1 } +} +\NewDocumentCommand \acknowledgments { m } { + \__nwejm_article_acknowledgments:n {#1} +} +\tl_new:N \g__nwejm_article_bib_key_tl% +\tl_new:N \l__nwejm_people_first_last_names_tl +\tl_new:N \g__nwejm_authors_first_last_names_tl% +\tl_new:N \g__nwejm_citeauthor_no_giveninits% +\tl_new:N \g__nwejm_citeauthor_tl% +\int_new:N \g__nwejm_author_s_number_current_article_int% +\cs_new_protected:Nn \__nwejm_citeauthor_no_giveninits:n {% + \tl_gset:Nn \g__nwejm_citeauthor_tl {% + \DeclareNameAlias{labelname}{default}% + \group_begin: + \togglefalse{blx@giveninits}% + \citeauthor{#1} + \group_end: + }% + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\g__nwejm_citeauthor_tl}{} + }{% + \g__nwejm_citeauthor_tl + }% +} +\cs_set_eq:NN \__nwejm_orig_multinamedelim \multinamedelim +\cs_set_eq:NN \__nwejm_orig_finalnamedelim \finalnamedelim +\cs_new_protected:Nn \__nwejm_maketitle_citeauthor:n +{ + \restorecommand\mkbibnamelast + \def\multinamedelim {\hskip 1em \@plus.17fil}% + \cs_set_eq:NN \finalnamedelim \multinamedelim + \AtNextCitekey{\defcounter{maxnames}{100}} + \group_begin: + \DeclareNameAlias{labelname}{default}% + \togglefalse{blx@giveninits}% + \citeauthor{#1} + \group_end: + \cs_set_eq:NN \multinamedelim \__nwejm_orig_multinamedelim + \cs_set_eq:NN \finalnamedelim \__nwejm_orig_finalnamedelim + \protected\def\mkbibnamelast#1{% + \textsc{\textnohyphenation{#1}}}% +} +\cs_new_protected:Nn \__nwejm_display_author:n +{ + \seq_clear:N \l_tmpa_seq + \prop_get:NnN \g_authors_prop {author_#1} \l_tmpa_tl + \prop_map_inline:cn {l_author_ #1 _affiliations_prop} { + \seq_put_right:Nx \l_tmpa_seq { ##1 } + } + \seq_sort:Nn \l_tmpa_seq + { + \int_compare:nNnTF { ##1 } > { ##2 } + { \sort_reversed: } + { \sort_ordered: } + } + \mbox{% + \__nwejm_citeauthor_no_giveninits:n {\c__nwejm_issue_bib_key_tl -author-art- \int_use:N \g__nwejm_articles_int-#1} + } + \seq_map_inline:Nn \l_tmpa_seq { + \prop_get:cnN {l_author_ #1 _affiliations_prop} {##1} \l_tmpb_tl + \footnotemark[##1] + \tl_if_empty:NF \l_tmpb_tl + { + \footnotetext[##1]{\l_tmpb_tl} + } + } + \hskip 1em plus .17fil +} +\tl_new:N \l__nwejm_bullet_and_rule_tl +\tl_new:N \l__nwejm_authors_box_tl +\tl_new:N \l__nwejm_abstract_box_tl +\tl_new:N \l__nwejm_bullet_and_rule_odd_tl +\tl_new:N \l__nwejm_bullet_and_rule_even_tl +\tl_new:N \l__nwejm_title_box_tl +\tl_new:N \g__nwejm_title_for_toc_tl +\RenewDocumentCommand \maketitle { } { + \FloatBarrier% +\tl_gset:Nn \g__nwejm_article_bib_key_tl {% + \c__nwejm_issue_bib_key_tl + -art- + \int_use:N \g__nwejm_articles_int +} +\tl_if_empty:NF \g__nwejm_title_tl {% + \iow_now:Nx \g__nwejm_bib_out_iow {% + @article{ + \g__nwejm_article_bib_key_tl, + \iow_newline: + title={\exp_not:V\g__nwejm_title_tl}, + \iow_newline: + \tl_if_empty:NF \g__nwejm_subtitle_tl {% + subtitle={\exp_not:V\g__nwejm_subtitle_tl}, + \iow_newline: + } + \tl_if_eq:NNF { \g__nwejm_short_title_tl } { \g__nwejm_title_tl } {% + shorttitle={\exp_not:V\g__nwejm_short_title_tl}, + \iow_newline: + }% + \tl_if_empty:NF \l__nwejm_people_first_last_names_tl + { + author={\exp_not:V\l__nwejm_people_first_last_names_tl}, + \iow_newline: + } + options={skipbib}, + \iow_newline: + crossref = {\c__nwejm_issue_bib_key_tl} + } + \iow_newline: + }% + % \tl_clear:N \l__nwejm_people_first_last_names_tl +}% +\tl_set:Nn \l__nwejm_authors_box_tl +{% + \bool_if:nTF { \tl_if_empty_p:N \l__nwejm_people_first_last_names_tl } + { + \mbox{} + } + { + \int_set:Nn \l_tmpa_int { \__nwejm_prop_count:N \g_authors_prop} + \normalsize% + \int_step_inline:nnnn {1}{1}{\l_tmpa_int} { + \__nwejm_display_author:n {##1} + } + \prop_gclear:N \g_authors_prop + } +} +\int_zero:N \l_author_int +\prop_clear:N \l_affiliations_tagged_prop +\tl_set:Nn \l__nwejm_dates_box_tl +{% + \g__nwejm_display_dates_tl +} +\tl_set:Nn \l__nwejm_keywords_box_tl +{% + \noindent + { + \bfseries + \tl_mixed_case:n{ + \GetTranslation{plural-keyword} + \c__nwejm_colon_tl + } + } + \space\l__nwejm_keywords_tl. +} +\tl_set:Nn \l__nwejm_msc_box_tl +{% + \noindent\textbf{\c__nwejm_msc_string_tl}\c__nwejm_colon_tl\space\l__nwejm_msc_tl. +} +\tl_set:Nn \l__nwejm_abstract_box_tl +{% + \mbox{} + \par% + \vskip .5em% + \tl_if_empty:NTF \g__nwejm_abstract_body_tl + {% + \msg_warning:nn{nwejmart}{No~abstract} + }% + {% + \small + \begin{center}% + {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}% + \end{center}% + \begin{quotation} + \g__nwejm_abstract_body_tl + \end{quotation} + } +}% +\tl_set:Nn \g__nwejm_partial_title_for_toc_tl +{ + \tl_if_empty:NTF \g__nwejm_short_title_tl {% + \g__nwejm_title_tl% + }{ + \g__nwejm_short_title_tl% + } + \bool_if:nF { \tl_if_empty_p:N \g__nwejm_short_subtitle_tl } + { + .\space\g__nwejm_short_subtitle_tl + } +} +\tl_set:Nn \g__nwejm_title_for_toc_tl +{ + \g__nwejm_partial_title_for_toc_tl + \bool_if:nF { \tl_if_empty_p:N \l__nwejm_people_first_last_names_tl } + { + \textsl{ + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{% + \AtNextCitekey{\defcounter{maxnames}{100}} + \space\textendash\space\citeauthor{\g__nwejm_article_bib_key_tl} + }{} + }{% + \space\textendash\space\citeauthor{\g__nwejm_article_bib_key_tl} + }% + } + } +} + \setsecnumdepth{none} + \chapter[\g__nwejm_title_for_toc_tl]{% + \LARGE% + \g__nwejm_title_tl + \tl_if_empty:NF \g__nwejm_subtitle_tl {% + \\[1ex]% + \Large% + \g__nwejm_subtitle_tl + }\\[2ex]% + \l__nwejm_authors_box_tl% + \bool_if:NT {\g__nwejm_date_specified_bool} + { + \\[2ex] + \l__nwejm_dates_box_tl + } + \\[-4ex] + } + \bool_gset_false:N \g__nwejm_date_specified_bool + \bookmarksetup{depth=subsection} + \setsecnumdepth{subsection} + \thispagestyle{__nwejm_article_title_ps}% +\l__nwejm_abstract_box_tl% +\normalsize +\tl_if_empty:NTF \l__nwejm_keywords_tl { + \msg_warning:nn{nwejmart}{No~keyword} +}{ + \l__nwejm_keywords_box_tl + \par% + \vskip .5em% +} +\tl_if_empty:NTF \l__nwejm_msc_tl { + \msg_warning:nn{nwejmart}{No~MSC} +}{ + \l__nwejm_msc_box_tl + \par% + \vskip .5em% +} +\tl_gclear:N \g__nwejm_title_tl +\tl_gclear:N \g__nwejm_subtitle_tl +\tl_gclear:N \g__nwejm_title_for_toc_tl +\tl_gclear:N \g__nwejm_abstract_body_tl + \tl_gclear:N \g__nwejm_people_affiliation_tl + \tl_gclear:N \g__nwejm_people_email_tl + \tl_clear:N \l__nwejm_people_first_last_names_tl% +} +\AtEndPreamble{\file_input:n {\c__nwejm_configuration_file_string_tl}} +\DeclarePlainStyle{^^c2^^ab~}{~^^c2^^bb}{`}{'} +\setcounter{topnumber}{3} +\renewcommand{\topfraction}{0.8} +\addtolength{\skip\footins}{.25\baselineskip} +\setlength{\columnsep}{7mm}% +\renewcommand{\thesection}{\arabic{section}}% +\@ifpackageloaded{siunitx}{% + \addto\extrasenglish{\sisetup{locale = UK}} + \addto\extrasfrench{\sisetup{locale = FR}} + \addto\extrasngerman{\sisetup{locale = DE}} + \addto\extrasgerman{\sisetup{locale = DE}} + \addto\extrasdutch{% + \sisetup{% + exponent-product = \ensuremath { \times } , + inter-unit-product = \, , + output-decimal-marker = { , } + }% + } + \sisetup{detect-all} +} +\cs_set_eq:NN \__nwejm_section \section +\cs_set_eq:NN \__nwejm_subsection \subsection +\cs_set_eq:NN \__nwejm_subsubsection \subsubsection +\AfterPreamble{% + \RenewDocumentCommand \section { s o m } {% + \IfBooleanTF {#1} + { + \setsecnumdepth{none}% + } + { + \resetsecnumdepth*% + } + \IfNoValueTF{#2}{\__nwejm_section{#3}}{\__nwejm_section[#2]{#3}} + } + \RenewDocumentCommand \subsection { s o m } {% + \IfBooleanT {#1} + { + \setsecnumdepth{none}% + } + \IfNoValueTF{#2}{\__nwejm_subsection{#3}}{\__nwejm_subsection[#2]{#3}} + } + \RenewDocumentCommand \subsubsection { s o m } {% + \IfBooleanT {#1} + { + \setsecnumdepth{none}% + } + \IfNoValueTF{#2}{\__nwejm_subsubsection{#3}}{\__nwejm_subsubsection[#2]{#3}} + } +} +\int_new:N \l__nwejm_abs_int +\cs_new_protected:Nn \__nwejm_ordinalnum_suffix:n +{ + \int_set:Nn \l__nwejm_abs_int {\int_abs:n {#1}} + \ifcurrentbaselanguage{english}{ + \int_use:N \l__nwejm_abs_int + \int_set:Nn \l_tmpa_int {\int_mod:nn {\l__nwejm_abs_int} {\c_one_hundred}} + \int_case:nnF + { \l_tmpa_int } + { + { \c_eleven } { \fmtord{th} } + { \c_twelve } { \fmtord{th} } + { \c_thirteen } { \fmtord{th} } + }{ + \int_set:Nn \l_tmpb_int {\int_mod:nn {\l__nwejm_abs_int} {\c_ten}} + \int_case:nnF + { \l_tmpb_int } + { + { \c_zero } { \fmtord{th} } + { \c_one } { \fmtord{st} } + { \c_two } { \fmtord{nd} } + { \c_three } { \fmtord{rd} } + }{ + \fmtord{th} + } + } + }{ + \ifcurrentbaselanguage{dutch}{ + \int_use:N \l__nwejm_abs_int + e + }{ + \textsc{\int_to_roman:n {\int_abs:n {#1}}} + \ifcurrentbaselanguage{french}{ + \int_compare:nNnTF { \l__nwejm_abs_int } = { 1 }{\fmtord{er}}{\fmtord{e}} + }{ + \ifcurrentbaselanguage{german}{ + . + }{ + \ifcurrentbaselanguage{ngerman}{ + . + }{ + } + } + } + } + } +} +\cs_new_protected:Nn \__nwejm_century_suffix:n +{ + \space{} + \GetTranslation{century}% + \int_compare:nNnT { #1 } < { 0 }{ + \space + \GetTranslation{before-christ} + }{ + } +} +\NewDocumentCommand \century { s m } {% + \__nwejm_ordinalnum_suffix:n {#2}% + \IfBooleanTF {#1} + { + \int_compare:nNnT { #2 } < { 0 }{ + \__nwejm_century_suffix:n {#2}% + } + }{ + \__nwejm_century_suffix:n {#2}% + } + \int_compare:nNnT { #2 } < { 0 }{ + \ifcurrentbaselanguage{english}{% + }{ + \@ifnextchar.% + { + }{ + .\xspace + }% + } + } +} +\NewDocumentCommand \aside { s m } {% + \IfBooleanTF {#1} + { + \c__nwejm_aside_string_tl{}~#2 + } + { + \c__nwejm_aside_string_tl{}~#2~\c__nwejm_aside_string_tl + } +} +\NewDocumentCommand \ie { s } {% + \IfBooleanTF {#1} + { + \GetTranslation{idest} + } + { + \GetTranslation{ie} + \@ifnextchar.% + { + }{ + .\xspace + }% + } +} +\NewDocumentCommand \Ie { s } {% + \IfBooleanTF {#1} + { + \GetTranslation{Idest} + } + { + \GetTranslation{Ie} + \@ifnextchar.% + { + }{ + .\xspace + }% + } +} +\RenewDocumentCommand \vec { m } { + \vv{#1} +} +\bool_new:N \g__nwejm_no_numbered_theorem_bool +\cs_new_protected:Nn \__nwejm_theorem_style:n +{ + \bool_gset_false:N \g__nwejm_no_numbered_theorem_bool + \str_case:nn + { #1 } + { + { theorem } { + \theoremstyle{plain} + \theoremheaderfont{\normalfont\bfseries} + \theorembodyfont{\itshape} + \theoremseparator{~--} + \theoremsymbol{} + } + { definition } { + \theoremstyle{plain} + \theoremheaderfont{\normalfont\bfseries} + \theorembodyfont{\normalfont} + \theoremseparator{~--} + \theoremsymbol{} + } + { proof } { + \theoremstyle{nonumberplain} + \bool_gset_true:N \g__nwejm_no_numbered_theorem_bool + \theoremheaderfont{\normalfont\itshape} + \theorembodyfont{\normalfont} + \theoremseparator{.} + \theoremsymbol{\ensuremath{\square}} + } + } +} +\cs_set_eq:NN \__nwejm_orig_newtheorem \newtheorem +\cs_new_protected:Nn \__nwejm_new_theorem:nnnnn +{ + \AtBeginDocument{% + \IfTranslation{English}{#1}{% + }{% + \DeclareTranslation{English}{#1}{\tl_mixed_case:n{#2}}% + } + \IfTranslation{French}{#1}{% + }{% + \DeclareTranslation{French}{#1}{\tl_mixed_case:n{#3}}% + } + \IfTranslation{German}{#1}{% + }{% + \DeclareTranslation{German}{#1}{\tl_mixed_case:n{#4}}% + } + \IfTranslation{Dutch}{#1}{% + }{% + \DeclareTranslation{Dutch}{#1}{\tl_mixed_case:n{#5}}% + } + } + \__nwejm_orig_newtheorem{#1}{\protect\tl_mixed_case:n{ \protect\GetTranslation{#1} }} + \bool_if:NF {\g__nwejm_no_numbered_theorem_bool} { + \__nwejm_orig_newtheorem*{#1__nwejm_nonumbered}{\protect\tl_mixed_case:n{ \protect\GetTranslation{#1} }} + } +} +\cs_generate_variant:Nn \__nwejm_new_theorem:nnnnn { nVVVV } +\RenewDocumentCommand \newtheorem { O{} m } +{ + \tl_clear:N \l__nwejm_newtheorem_style_tl + \tl_clear:N \l__nwejm_newtheorem_title_tl + \tl_clear:N \l__nwejm_newtheorem_french_title_tl + \tl_clear:N \l__nwejm_newtheorem_english_title_tl + \tl_clear:N \l__nwejm_newtheorem_german_title_tl + \tl_clear:N \l__nwejm_newtheorem_dutch_title_tl + % + \tl_set:Nn \l__nwejm_newtheorem_english_title_tl { + #2 + } + \tl_set:Nf \l__nwejm_newtheorem_french_title_tl { + \l__nwejm_newtheorem_english_title_tl + } + \tl_set:Nf \l__nwejm_newtheorem_german_title_tl { + \l__nwejm_newtheorem_english_title_tl + } + \tl_set:Nf \l__nwejm_newtheorem_dutch_title_tl { + \l__nwejm_newtheorem_english_title_tl + } + \tl_set:Nn \l__nwejm_newtheorem_style_tl { + theorem + } + \__nwejm_theorem_style:n {theorem} + \IfNoValueF {#1} + { + \keys_set:nn { nwejm / newtheorem } { #1 } + \tl_if_empty:NF \l__nwejm_newtheorem_title_tl {% + \tl_set:Nf \l__nwejm_newtheorem_english_title_tl + { + \l__nwejm_newtheorem_title_tl + } + \tl_set:Nf \l__nwejm_newtheorem_french_title_tl + { + \l__nwejm_newtheorem_title_tl + } + \tl_set:Nf \l__nwejm_newtheorem_german_title_tl + { + \l__nwejm_newtheorem_title_tl + } + \tl_set:Nf \l__nwejm_newtheorem_dutch_title_tl + { + \l__nwejm_newtheorem_title_tl + } + } + } + % + \__nwejm_new_theorem:nVVVV + {#2} + {\l__nwejm_newtheorem_english_title_tl} + {\l__nwejm_newtheorem_french_title_tl} + {\l__nwejm_newtheorem_german_title_tl} + {\l__nwejm_newtheorem_dutch_title_tl} + \makesavenoteenv{#2} + \bool_if:NF {\g__nwejm_no_numbered_theorem_bool} { + \ifcsmacro{#2*}{% + \RenewDocumentEnvironment{#2*}{o} + { + \IfNoValueTF {##1} + { \begin{#2__nwejm_nonumbered} } + { \begin{#2__nwejm_nonumbered}[##1] } + }{ + \end{#2__nwejm_nonumbered} + } + }{ + \NewDocumentEnvironment{#2*}{o} + { + \IfNoValueTF {##1} + { \begin{#2__nwejm_nonumbered} } + { \begin{#2__nwejm_nonumbered}[##1] } + }{ + \end{#2__nwejm_nonumbered} + } + } + } + \clist_put_right:Nn \g__nwejm_counters_to_be_reset_clist {#2} +} +\newtheorem{theorem} +\newtheorem{corollary} +\newtheorem{conjecture} +\newtheorem{proposition} +\newtheorem{lemma} +\newtheorem{axiom} +\newtheorem[style=definition]{definition} +\newtheorem[style=definition]{remark} +\newtheorem[style=definition]{example} +\newtheorem[style=definition]{notation} +\newtheorem[style=proof]{proof} +\cs_new_protected:Nn \__nwejm_clone_theorem:nn +{ + \NewDocumentEnvironment{#1}{} + { + \begin{#2} + }{ + \end{#2} + } + \NewDocumentEnvironment{#1*}{} + { + \begin{#2*} + }{ + \end{#2*} + } +} +\__nwejm_clone_theorem:nn {Theorem}{theorem} +\__nwejm_clone_theorem:nn {Corollary}{corollary} +\__nwejm_clone_theorem:nn {Conjecture}{conjecture} +\__nwejm_clone_theorem:nn {Proposition}{proposition} +\__nwejm_clone_theorem:nn {Lemma}{lemma} +\__nwejm_clone_theorem:nn {Axiom}{axiom} +\__nwejm_clone_theorem:nn {Definition}{definition} +\__nwejm_clone_theorem:nn {Remark}{remark} +\__nwejm_clone_theorem:nn {Example}{example} +\__nwejm_clone_theorem:nn {Notation}{notation} +\__nwejm_clone_theorem:nn {Proof}{proof} +\clist_set:Nn \l_tmpa_clist {% + theorem, + corollary, + conjecture, + proposition, + lemma, + axiom, + definition, + remark, + example, + notation, + proof% +} +\clist_map_inline:Nn \l_tmpa_clist { + \crefname{#1}{ + \GetTranslation{#1} + }{% + \GetTranslation{plural-#1} + } + \Crefname{#1}{ + \tl_mixed_case:n{ \protect + \GetTranslation{#1} + } + }{% + \tl_mixed_case:n{ + \GetTranslation{plural-#1} + } + } +} +\clist_set:Nn \l_tmpa_clist {% + hypothesis, + assertion% +} +\clist_map_inline:Nn \l_tmpa_clist { + \newlist{#1}{enumerate}{1} + \setlist[#1]{% + label= + \normalfont + ( + \textsf{ + \tl_upper_case:n {\tl_head:f {\GetTranslation{#1}}} + } + $\c_math_subscript_token\mathsf{\arabic*}$), + ref=( + \textsf{ + \tl_upper_case:n {\tl_head:f {\GetTranslation{#1}}} + } + $_\mathsf{\arabic*}$ + ) + } + \crefname{#1i}{ + \GetTranslation{#1} + }{% + \GetTranslation{plural-#1} + } + \Crefname{#1i}{ + \tl_mixed_case:n{ + \GetTranslation{#1} + } + }{% + \tl_mixed_case:n{ + \GetTranslation{plural-#1} + } + } +} +\NewDocumentEnvironment{hypotheses}{} +{ + \begin{hypothesis} + }{ + \end{hypothesis} +} +\NewDocumentEnvironment{assertions}{} +{ + \begin{assertion} + }{ + \end{assertion} +} +\RenewDocumentCommand{\DeclareMathOperator}{mm} +{ + \NewDocumentCommand{#1}{} + { + \operatorname{#2} + \peek_after:Nw \__nwejm_opx_check: + } +} +\NewDocumentCommand{\BinaryOperators}{m} +{ + \clist_gput_right:Nn \g__nwejm_opx_binary_clist { #1 } +} +\clist_new:N \g__nwejm_opx_binary_clist +\cs_new_protected:Nn \__nwejm_opx_check: +{ + \clist_map_inline:Nn \g__nwejm_opx_binary_clist + { + \token_if_eq_meaning:NNT \l_peek_token ##1 { \clist_map_break:n { {\!} } } + } +} +\BinaryOperators{% + \amalg,% + \ast,% + \bigcirc,% + \bigtriangledown,% + \bigtriangleup,% + \bullet,% + \cap,% + \cdot,% + \circ,% + \cup,% + \dagger,% + \ddagger,% + \diamond,% + \div,% + \lhd,% + \mp,% + \odot,% + \ominus,% + \oplus,% + \oslash,% + \otimes,% + \pm,% + \rhd,% + \setminus,% + \sqcap,% + \sqcup,% + \star,% + \times,% + \triangleleft,% + \triangleright,% + \unlhd,% + \unrhd,% + \uplus,% + \vee,% + \wedge,% + \wr,% + \barwedge,% + \boxdot,% + \boxminus,% + \boxplus,% + \boxtimes,% + \Cap,% + \centerdot,% + \circledast,% + \circledcirc,% + \circleddash,% + \Cup,% + \curlyvee,% + \curlywedge,% + \divideontimes,% + \dotplus,% + \doublebarwedge,% + \intercal,% + \leftthreetimes,% + \ltimes,% + \rightthreetimes,% + \rtimes,% + \smallsetminus,% + \veebar% +} +\DeclareMathOperator{\cotan}{cotan} +\DeclareMathOperator{\Arccos}{Arccos} +\DeclareMathOperator{\Arcsin}{Arcsin} +\DeclareMathOperator{\Arctan}{Arctan} +\DeclareMathOperator{\arccosh}{arccosh} +\DeclareMathOperator{\arcsinh}{arcsinh} +\DeclareMathOperator{\arctanh}{arctanh} +\DeclareMathOperator{\Argch}{Argch} +\DeclareMathOperator{\Argsh}{Argsh} +\DeclareMathOperator{\Argth}{Argth} +\cs_set_eq:NN \__nwejm_orig_arccos \arccos +\cs_set_eq:NN \__nwejm_orig_arcsin \arcsin +\cs_set_eq:NN \__nwejm_orig_arctan \arctan +\cs_set_eq:NN \__nwejm_orig_arccosh \arccosh +\cs_set_eq:NN \__nwejm_orig_arcsinh \arcsinh +\cs_set_eq:NN \__nwejm_orig_arctanh \arctanh +\RenewDocumentCommand \arccos {} { + \ifcurrentbaselanguage{french}{\Arccos}{\__nwejm_orig_arccos}% +} +\RenewDocumentCommand \arcsin {} { + \ifcurrentbaselanguage {french}{\Arcsin}{\__nwejm_orig_arcsin}% +} +\RenewDocumentCommand \arctan {} { + \ifcurrentbaselanguage {french}{\Arctan}{\__nwejm_orig_arctan}% +} +\RenewDocumentCommand \arccosh {} { + \ifcurrentbaselanguage{french}{\Argch}{\__nwejm_orig_arccosh}% +} +\RenewDocumentCommand \arcsinh {} { + \ifcurrentbaselanguage {french}{\Argsh}{\__nwejm_orig_arcsinh}% +} +\RenewDocumentCommand \arctanh {} { + \ifcurrentbaselanguage {french}{\Argth}{\__nwejm_orig_arctanh}% +} +\cs_set_eq:NN \__nwejm_orig_cot \cot +\RenewDocumentCommand \cot {} { + \ifcurrentbaselanguage {french}{\cotan}{\__nwejm_orig_cot}% +} +\DeclareMathOperator{\ch}{ch} +\DeclareMathOperator{\sh}{sh} +\cs_set_eq:NN \__nwejm_orig_cosh \cosh +\cs_set_eq:NN \__nwejm_orig_sinh \sinh +\cs_set_eq:NN \__nwejm_orig_tanh \tanh +\RenewDocumentCommand \cosh {} { + \ifcurrentbaselanguage {french}{\ch}{\__nwejm_orig_cosh}% +} +\RenewDocumentCommand \sinh {} { + \ifcurrentbaselanguage {french}{\sh}{\__nwejm_orig_sinh}% +} +\RenewDocumentCommand \tanh {} { + \ifcurrentbaselanguage {french}{\operatorname{th}}{\__nwejm_orig_tanh}% +} +\DeclareMathOperator{\Id}{Id} +\cs_set_eq:NN \__nwejm_orig_log \log +\cs_set_eq:NN \__nwejm_orig_lg \lg +\RenewDocumentCommand \log { s } { + \IfBooleanTF {#1} + { + \__nwejm_orig_log + } + { + \ln + } +} +\RenewDocumentCommand \lg { s } { + \IfBooleanTF {#1} + { + \__nwejm_orig_lg + } + { + \ln + } +} +\NewDocumentCommand \E { O{} } { + \ensuremath{ + \mathsf{e} + \tl_if_empty:nF {#1} {^{#1}} + } +} +\NewDocumentCommand \I { } { + \ensuremath{\mathsf{i}} +} +\bool_new:N \g__nwejm_grad_used_bool +\NewDocumentCommand \grad {} {% + \bool_if:NTF \g__nwejm_gradient_nabla_bool { + \operatorname{\nabla} + }{ + \operatorname{grad} + }% + \peek_after:Nw \__nwejm_opx_check: + \bool_if:NTF \g__nwejm_grad_used_bool { + \bool_if:nT { (\g__nwejm_gradient_nabla_bool && !\g__nwejm_gradient_nabla_control_bool) + || ( !\g__nwejm_gradient_nabla_bool && \g__nwejm_gradient_nabla_control_bool) } { + \msg_error:nnn{nwejmart}{Article~setup~not~consistent}{gradient} + } + }{ + \bool_gset_eq:NN \g__nwejm_gradient_nabla_control_bool \g__nwejm_gradient_nabla_bool + \bool_gset_true:N \g__nwejm_grad_used_bool + } +} +\DeclareMathOperator{\Div}{div} +\NewDocumentCommand \curl {} {% + \ifcurrentbaselanguage {english}{ + \operatorname{curl} + }{ + \operatorname{rot} + }% + \peek_after:Nw \__nwejm_opx_check: +} +\NewDocumentCommand \supp {} {% + \ifcurrentbaselanguage {ngerman}{ + \operatorname{Tr} + }{ + \operatorname{supp} + }% + \peek_after:Nw \__nwejm_opx_check: +} +\NewDocumentCommand \dif {}{\mathop{}\!\mathrm{d}} +\cs_set_eq:NN \__nwejm_orig_leq \leq +\cs_set_eq:NN \__nwejm_orig_geq \geq +\RenewDocumentCommand \le {} {% + \ifcurrentbaselanguage {french}{\leqslant}{\__nwejm_orig_leq}% +} +\RenewDocumentCommand \leq {} {% + \ifcurrentbaselanguage {french}{\leqslant}{\__nwejm_orig_leq}% +} +\RenewDocumentCommand \ge {} {% + \ifcurrentbaselanguage {french}{\geqslant}{\__nwejm_orig_geq}% +} +\RenewDocumentCommand \geq {} {% + \ifcurrentbaselanguage {french}{\geqslant}{\__nwejm_orig_geq}% +} +\NewDocumentCommand \bbN {} {\mathbb{N}} +\NewDocumentCommand \bbZ {} {\mathbb{Z}} +\NewDocumentCommand \bbD {} {\mathbb{D}} +\NewDocumentCommand \bbQ {} {\mathbb{Q}} +\NewDocumentCommand \bbR {} {\mathbb{R}} +\NewDocumentCommand \bbC {} {\mathbb{C}} +\NewDocumentCommand \bbK {} {\mathbb{K}} +\cs_set_eq:NN \emptyset \varnothing +\tl_new:N \l__nwejm_given_tl +\tl_set:Nn \l__nwejm_given_tl { + \nonscript\:\delimsize\slash + \allowbreak + \nonscript\: + \mathopen{} +}% +\DeclarePairedDelimiterX\__nwejm_set[1]\{\}{% + #1 +} +\NewDocumentCommand \set { m O{} } { + \if@display + \tl_if_empty:nTF {#2} {% + \__nwejm_set*{#1} + }{ + \__nwejm_set*{#1\l__nwejm_given_tl #2} + } + \else + \tl_if_empty:nTF {#2} {% + \__nwejm_set{#1} + }{ + \__nwejm_set{#1\l__nwejm_given_tl #2} + } + \fi +} +\DeclareDocumentCommand{\NewPairedDelimiter}{mm} + { + \__nwejm_delimiter_clear_keys: % reset to the default + \keys_set:nn { nwejm/delimiters } { #2 } + \use:x % we want to expand the values of the token variables set with the keys + { + \exp_not:n {\NewDocumentCommand{#1}{sO{}m} } + { + \exp_not:n { \IfBooleanTF{##1} } + { + \exp_not:N \__nwejm_paired_delimiter:nnnnn + { \exp_not:n { 0 } } + { \exp_not:V \l__nwejm_delimiter_left_tl } + { \exp_not:V \l__nwejm_delimiter_right_tl } + { \exp_not:n { ##3 } } + { \exp_not:V \l__nwejm_delimiter_subscript_tl } + } + { + \exp_not:N \__nwejm_paired_delimiter:nnnnn + { \exp_not:n { ##2 } } + { \exp_not:V \l__nwejm_delimiter_left_tl } + { \exp_not:V \l__nwejm_delimiter_right_tl } + { \exp_not:n { ##3 } } + { \exp_not:V \l__nwejm_delimiter_subscript_tl } + } + } + } + } +\keys_define:nn { nwejm/delimiters } + { + left .tl_set:N = \l__nwejm_delimiter_left_tl, + right .tl_set:N = \l__nwejm_delimiter_right_tl, + subscript .tl_set:N = \l__nwejm_delimiter_subscript_tl, + } +\cs_new_protected:Npn \__nwejm_delimiter_clear_keys: + { + \keys_set:nn { nwejm/delimiters } { left=.,right=.,subscript={} } + } +\cs_new_protected:Npn \__nwejm_paired_delimiter_expand:nnnn #1 #2 #3 #4 + {% Fix the spacing issue with \left and \right (D. Arsenau, P. Stephani and H. Oberdiek) + \mathopen{} + \mathclose\c_group_begin_token + \left#1 + #3 + \group_insert_after:N \c_group_end_token + \right#2 + \tl_if_empty:nF {#4} { \c_math_subscript_token {#4} } + } +\cs_new_protected:Npn \__nwejm_paired_delimiter_fixed:nnnnn #1 #2 #3 #4 #5 + { + \mathopen{#1#2}#4\mathclose{#1#3} + \tl_if_empty:nF {#5} { \c_math_subscript_token {#5} } + } +\cs_new_protected:Npn \__nwejm_paired_delimiter:nnnnn #1 #2 #3 #4 #5 + { + \str_case:nnF {#1} + { + { } { \__nwejm_paired_delimiter_expand:nnnn {#2}{#3}{#4}{#5} } + {0} { \__nwejm_paired_delimiter_fixed:nnnnn {}{#2}{#3}{#4}{#5} } + {1} { \__nwejm_paired_delimiter_fixed:nnnnn { \big }{#2}{#3}{#4}{#5} } + {\big} { \__nwejm_paired_delimiter_fixed:nnnnn { \big }{#2}{#3}{#4}{#5} } + {2} { \__nwejm_paired_delimiter_fixed:nnnnn { \Big }{#2}{#3}{#4}{#5} } + {\Big} { \__nwejm_paired_delimiter_fixed:nnnnn { \Big }{#2}{#3}{#4}{#5} } + {3} { \__nwejm_paired_delimiter_fixed:nnnnn { \bigg }{#2}{#3}{#4}{#5} } + {\bigg} { \__nwejm_paired_delimiter_fixed:nnnnn { \bigg }{#2}{#3}{#4}{#5} } + {4} { \__nwejm_paired_delimiter_fixed:nnnnn { \Bigg }{#2}{#3}{#4}{#5} } + {\Bigg} { \__nwejm_paired_delimiter_fixed:nnnnn { \Bigg }{#2}{#3}{#4}{#5} } + } + { + \msg_warning:nnn{nwejmart}{Wrong~paired~delimiter's~size~parameter}{#1} + \__nwejm_paired_delimiter_expand:nnnn {#2}{#3}{#4} + } + } +\NewPairedDelimiter{\norm}{ + left=\lVert, + right=\rVert +} +\NewPairedDelimiter{\lnorm}{ + left=\lVert, + right=\rVert, + subscript=1 +} +\NewPairedDelimiter{\llnorm}{ + left=\lVert, + right=\rVert, + subscript=2 +} +\NewPairedDelimiter{\lpnorm}{ + left=\lVert, + right=\rVert, + subscript=p +} +\NewPairedDelimiter{\supnorm}{ + left=\lVert, + right=\rVert, + subscript=\infty +} +\NewPairedDelimiter{\abs}{ + left=\lvert, + right=\rvert +} +\NewPairedDelimiter{\prt}{ + left=(, + right=) +} +\NewPairedDelimiter{\brk}{ + left=[, + right=] +} +\NewPairedDelimiter{\brc}{ + left=\{, + right=\} +} +\NewPairedDelimiter{\lrangle}{ + left=\langle, + right=\rangle +} +\NewPairedDelimiter{\leqgeq}{ + left=<, + right=> +} +\AfterEndPreamble{ + \autonum@generatePatchedReferenceCSL{vref} + \clist_set:Nn \l_tmpa_clist {equation,align,gather,multline,flalign} + \clist_map_inline:Nn \l_tmpa_clist { + \cs_set_eq:cc {#1*} {#1} + \cs_set_eq:cc {end#1*} {end#1} + } + % \msg_warning:nnn{nwejmart}{Starred~AMS~environments}{#1} +} +\etocsettocdepth{section} +\@ifpackageloaded{pgfplots}{% + \ifcurrentbaselanguage{french}{% + \pgfplotsset{% + /pgf/number~format/.cd, + use~comma, + 1000~sep={\,}, + min~exponent~for~1000~sep=4 + }% + }{ + } +} +\AtEndPreamble{% + \defbibheading{__nwejm_subbibliography}[\refname]{% + \section*{#1} + }% + \SetCiteCommand{\autocite}% +}% +\int_new:N \l__nwejm_section_int +\cs_set_eq:NN \__nwejm_printbibliography \printbibliography +\RenewDocumentCommand \printbibliography { O{} } { + \FloatBarrier% + \tl_if_empty:NF {\g__nwejm_article_acknowledgments_tl} + { + \section*{\GetTranslation{Acknowledgments}} + \g__nwejm_article_acknowledgments_tl + \tl_gclear:N \g__nwejm_article_acknowledgments_tl + } + \__nwejm_printbibliography[heading=__nwejm_subbibliography,resetnumbers,#1] +} +\exp_after:wN\addbibresource\exp_after:wN{\c__nwejm_issue_bib_path_string_tl} +\ifkp@easyscsl +\DeclareRobustCommand{\itshape}{\not@math@alphabet\itshape\mathit% + \ifthenelse{\equal{\f@shape}{\scdefault}}{\fontshape{scsl}}{% + \fontshape\itdefault}\selectfont} +\fi +\DeclareMathAlphabet\mathfrak{U}{euf}{m}{n} +\SetMathAlphabet\mathfrak{bold}{U}{euf}{b}{n} +\expandafter\def\expandafter\pdfstringdefPreHook +\expandafter{% + \pdfstringdefPreHook + \renewcommand{\acrshort}[1]{\tl_upper_case:n {\glsentryshort{##1}}}% +} +\@ifpackageloaded{draftwatermark}{% + \SetWatermarkColor{gray!10}% + \SetWatermarkFontSize{30mm}% + \SetWatermarkText{\MakeUppercase{\c__nwejm_draftwatermark_string_tl}}% +}{% +} +\pdftex_if_engine:T + { + \renewcommand{\ttdefault}{lmtt} + } +\tl_new:N \g__nwejm_font_designer_text_tl% +\cs_new_protected:Nn \__nwejm_font_designer_text:n +{ + \tl_gset:Nn \g__nwejm_font_designer_text_tl { #1 } +} +\NewDocumentCommand \fontdesignertext {m} +{ + \__nwejm_font_designer_text:n {#1}% +} +\tl_new:N \g__nwejm_printer_text_tl% +\cs_new_protected:Nn \__nwejm_printer_text:n +{ + \tl_gset:Nn \g__nwejm_printer_text_tl { #1 } +} +\NewDocumentCommand \printertext {m} +{ + \__nwejm_printer_text:n {#1}% +} +\NewDocumentCommand \nwejm { s } { + \IfBooleanTF {#1} + { + \g__nwejm_nwejm_string_tl + } + { + \g__nwejm_nwejm_short_string_tl + } + \xspace +} +\AtBeginDocument{% + \dim_if_exist:NTF \g__nwejm_pagegrid_dim {% + \pagegridsetup{% + enable,% + step=\g__nwejm_pagegrid_dim% + } + }{% + \pagegridsetup{% + disable% + } + } + \bool_if:NTF {\g__nwejm_for_authors_bool} { + \thispagestyle{empty} + \includegraphics{gzt-logo} + \hfill + \includegraphics[height=22.5mm]{\c__nwejm_smf_logo_file_string_tl}% + \par + \vfill + \begin{adjustbox}{valign=c,minipage=\linewidth} + \Large% + \c__nwejm_preliminary_version_string_tl% + \end{adjustbox} + \vfill + \newpage + }{ + \bool_if:NF {\g__nwejm_inside_pages_bool} { + \g__nwejm_display_frontcover_tl + \g__nwejm_display_inside_frontcover_tl + } + \tableofcontents + } +} +\AfterEndPreamble{% + \titleformat{\chapter}[block] + {\normalfont\centering}{}{0pt}{} + \titlespacing*{\chapter}{0pt}{0pt}{0pt} +} +\ExplSyntaxOff +\patchcmd{\autonum@saveEnvironmentSubcommands} + {(0,0)\begin} + {(0,0)\hfuzz=\maxdimen\begin} + {}{} +%% +%% Copyright (C) 2015, 2016 by Denis Bitouze <denis.bitouze@lmpa.univ-littoral.fr> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Denis Bitouze. +%% +%% This work consists of the file nwejm.dtx and a Makefile. +%% Running "make" generates the derived files README, nwejm.pdf and nwejm.cls. +%% Running "make inst" installs the files in the user's TeX tree. +%% Running "make install" installs the files in the local TeX tree. +%% +%% +%% End of file `nwejm.cls'. diff --git a/Master/texmf-dist/tex/latex/nwejm/nwejm.dbx b/Master/texmf-dist/tex/latex/nwejm/nwejm.dbx new file mode 100644 index 00000000000..f1e28a4e9fa --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/nwejm.dbx @@ -0,0 +1,34 @@ +%% +%% This is file `nwejm.dbx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% nwejm.dtx (with options: `datamodel') +%% -------:| ----------------------------------------------------------------- +%% nwejm:| Class for the journal "North-Western European Journal of Mathematics" +%% Author:| Denis Bitouze +%% E-mail:| denis.bitouze@lmpa.univ-littoral.fr +%% License:| Released under the LaTeX Project Public License v1.3c or later +%% See:| http://www.latex-project.org/lppl.txt +%% +%% +%% Copyright (C) 2015, 2016 by Denis Bitouze <denis.bitouze@lmpa.univ-littoral.fr> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Denis Bitouze. +%% +%% This work consists of the file nwejm.dtx and a Makefile. +%% Running "make" generates the derived files README, nwejm.pdf and nwejm.cls. +%% Running "make inst" installs the files in the user's TeX tree. +%% Running "make install" installs the files in the local TeX tree. +%% +%% +%% End of file `nwejm.dbx'. diff --git a/Master/texmf-dist/tex/latex/nwejm/nwejm.lbx b/Master/texmf-dist/tex/latex/nwejm/nwejm.lbx new file mode 100644 index 00000000000..d609bd329d4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/nwejm.lbx @@ -0,0 +1,42 @@ +%% +%% This is file `nwejm.lbx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% nwejm.dtx (with options: `languagemodel') +%% -------:| ----------------------------------------------------------------- +%% nwejm:| Class for the journal "North-Western European Journal of Mathematics" +%% Author:| Denis Bitouze +%% E-mail:| denis.bitouze@lmpa.univ-littoral.fr +%% License:| Released under the LaTeX Project Public License v1.3c or later +%% See:| http://www.latex-project.org/lppl.txt +%% + \ProvidesFile{nwejm.lbx} + \InheritBibliographyExtras{french}% extras are inherited from French... + \DeclareBibliographyStrings{% + inherit = {french},% .... as well as all the keys + number = {{\no}{\no}}, + volume = {{volume}{vol\adddot}}, + volumes = {{volumes}{vol\adddot}}, + } +%% +%% Copyright (C) 2015, 2016 by Denis Bitouze <denis.bitouze@lmpa.univ-littoral.fr> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Denis Bitouze. +%% +%% This work consists of the file nwejm.dtx and a Makefile. +%% Running "make" generates the derived files README, nwejm.pdf and nwejm.cls. +%% Running "make inst" installs the files in the user's TeX tree. +%% Running "make install" installs the files in the local TeX tree. +%% +%% +%% End of file `nwejm.lbx'. diff --git a/Master/texmf-dist/tex/latex/nwejm/nwejmart.cls b/Master/texmf-dist/tex/latex/nwejm/nwejmart.cls new file mode 100644 index 00000000000..d762c18f060 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nwejm/nwejmart.cls @@ -0,0 +1,1937 @@ +%% +%% This is file `nwejmart.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% nwejm.dtx (with options: `class-article') +%% -------:| ----------------------------------------------------------------- +%% nwejm:| Class for the journal "North-Western European Journal of Mathematics" +%% Author:| Denis Bitouze +%% E-mail:| denis.bitouze@lmpa.univ-littoral.fr +%% License:| Released under the LaTeX Project Public License v1.3c or later +%% See:| http://www.latex-project.org/lppl.txt +%% +\RequirePackage{xparse} +\RequirePackage{l3keys2e} +\IfFileExists{l3sort.sty}{ + \RequirePackage{l3sort} +}{ +} +\RequirePackage{etoolbox} +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesExplClass + {nwejmart} + {2015/09/30} + {1.00} + { + Class for the journal "North-Western European Journal of Mathematics". + } +\ExplSyntaxOn +\msg_new:nnnn{nwejm}{Issue~number~needed}{Option~`#1'~needed!} +{Please~specify~`#1=<number>', ~otherwise~`<number>'~will~be~set~to + ~`\int_use:N\c__nwejm_first_issue_number_int'.}% +\msg_new:nnnn{nwejmart}{Unknown~choice}{Choice~`#3'~invalid!} +{Please~specify~#1=#2.}% +\msg_new:nnn{nwejmart}{Unknown~tag}{There~ isn't~ any~ affiliation~ tagged~ + with~ `#1'.~ This~ one~ will~ be~ ignored.}% +\msg_new:nnn{nwejmart}{Unknown~language}{The~ option~ `#1'~ you~ passed~ isn't~ + a~ valid~ language~ name~ (only~ `english',~ `french',~ `ngerman',~ `german',~ + `dutch'~ are~ accepted).~ `english'~ will~ be~ used~ instead.}% +\msg_new:nnn{nwejmart}{No~keyword}{You~ haven't~ specify~ any~ keyword~ for~ + this~ article!}% +\msg_new:nnn{nwejmart}{No~MSC}{You~ haven't~ specify~ any~ Mathematical~ + Subject~ Classification~ (MSC)~ for~ this~ article!}% +\msg_new:nnn{nwejmart}{No~abstract}{You~ haven't~ specify~ any~ abstract~ for~ + this~ article!}% +\msg_new:nnn{nwejmart}{Starred~AMS~environments}{The~ starred~AMS~environment~ + `#1*'~should~ be~ avoided.~ It~ will ~be ~ replaced ~ by its~ unstarred~ counterpart~ `#1'.}% +\msg_new:nnn{ + nwejmart +}{Command~restricted~to~document~body~used~in~preamble}{The~command~#1 + can~be~used~only~in~document~body~and~not~in~preamble!}% +\msg_new:nnn{nwejmart}{Article~setup~not~consistent}{The~ article~ setup~ + concerning~ the~ option~ `#1'~ has~ changed~ after~ its~ 1st~ use.~ Please~ + use~ \articlesetup~ command~ just~ once,~ just~ after~ the~ beginning~ of~ + the~ document.}% +\msg_new:nnn{nwejmart}{Wrong~paired~delimiter's~size~parameter}{The~ + size~parameter~specified~ (`#1')~is~ not~ allowed:~ only~ `0',~`1'~(or~ + `\string\big'),~`2'~(or~ `\string\Big'),~`3'~(or~ `\string\big'g)~and~`4'~(or~ + `\string\Bigg')~ are ~ allowed. ~ It~ will~ be~ ignored.}% +\bool_new:N \g__nwejm_language_specified_bool +\cs_new_protected:Nn \__nwejm_language:n +{ + \bool_gset_true:N \g__nwejm_language_specified_bool% + \PassOptionsToPackage{main=#1}{babel} + \PassOptionsToPackage{#1}{varioref} + \AtBeginDocument{ + \LoadDictionaryFor{#1}{nwejm} + } + \AtEndPreamble{% + \FCloadlang{#1} + } + \AfterEndPreamble{% + \selectlanguage{#1} + } +} +\keys_define:nn { nwejm } +{ + 10pt .code:n = {% + \PassOptionsToClass{10pt}{book} + },% + 11pt .code:n = {% + \PassOptionsToClass{11pt}{book} + },% + 12pt .code:n = {% + \PassOptionsToClass{12pt}{book} + },% + english .code:n = { + \__nwejm_language:n {english} + },% + french .code:n = { + \__nwejm_language:n {french} + },% + german .code:n = { + \__nwejm_language:n {ngerman} + },% + ngerman .code:n = { + \__nwejm_language:n {ngerman} + },% + dutch .code:n = { + \__nwejm_language:n {dutch} + },% + % unknown .code:n = { + % \msg_warning:nnx{nwejmart}{Unknown~language}{\CurrentOption} + % \tl_gset:Nn \g__nwejm_language_tl {english} + % }, + nolocaltoc .code:n = { + \bool_gset_true:N \g__nwejm_nolocaltoc_bool + },% +}% +\ProcessKeysOptions { nwejm } +\LoadClass { book } +\PassOptionsToPackage{export}{adjustbox}% +\PassOptionsToPackage{fleqn}{mathtools}% +\PassOptionsToPackage{french,ngerman,dutch,english,noabbrev}{cleveref} +\bool_if:NF {\g__nwejm_language_specified_bool} { + \__nwejm_language:n {english} +} +\RequirePackage{silence} +\WarningFilter[nwejm]{kpfonts}{With 'easyscsl' option, don't fit together} +\WarningFilter[nwejm]{etex}{Extended allocation already in use} +\WarningFilter[nwejm]{etoc}{package tocvsec2 detected and its modification of} +\ActivateWarningFilters[nwejm] +\RequirePackage[l2tabu,orthodox]{nag} +\pdftex_if_engine:TF + { + \RequirePackage[T1]{fontenc} + \RequirePackage[utf8]{inputenc} + }{ + \RequirePackage{fontspec} + } +\RequirePackage[pagestyles]{titlesec}% +\RequirePackage{graphicx}% +\RequirePackage{adjustbox}% +\RequirePackage[multiple]{footmisc}% +\RequirePackage[svgnames]{xcolor}% +\RequirePackage{xspace}% +\RequirePackage[autostyle]{csquotes}% +\RequirePackage{array} +\RequirePackage{booktabs} +\RequirePackage{mathtools} +\RequirePackage[thmmarks,amsmath]{ntheorem} +\RequirePackage{mathrsfs} +\RequirePackage{esvect} +\RequirePackage[noDcommand]{kpfonts} +\RequirePackage{geometry} +\RequirePackage{translations}% +\RequirePackage{fmtcount}% +\RequirePackage{babel}% +\RequirePackage{varioref} +\RequirePackage{tocvsec2} +\RequirePackage{etoc}% +\RequirePackage[babel=true]{microtype}% +\RequirePackage[useregional]{datetime2}% +\RequirePackage[inline]{enumitem}% +\RequirePackage{environ} +\RequirePackage{footnote}% +\RequirePackage[hyperfootnotes=false,pdfencoding=unicode]{hyperref}% +\AtBeginDocument{% + \hypersetup{hidelinks,hypertexnames=false}% +}% +\RequirePackage[all]{hypcap} +\RequirePackage[numbered]{bookmark}% +\RequirePackage[nowarn]{glossaries}% +\RequirePackage{cleveref}% +\RequirePackage{autonum} +\RequirePackage[backend=biber,style=nwejm]{biblatex}% +\ExecuteBibliographyOptions{defernumbers=true,dashed=false,uniquename=init,backref,safeinputenc} +\makeglossaries +\setglossarystyle{indexhypergroup} +\setacronymstyle{long-sc-short} +\glsdisablehyper +\int_new:N \g__nwejm_articles_int +\clist_new:N \g__nwejm_counters_to_be_reset_clist +\int_const:Nn \c__nwejm_first_issue_number_int { 1 } +\int_const:Nn \c__nwejm_first_issue_year_int { 2016 } +\int_const:Nn \c__nwejm_first_issue_month_int { 1 } +\int_const:Nn \c__nwejm_interval_in_months_int { 6 } +\tl_const:Nn \c__nwejm_date_received_tl {received} +\tl_const:Nn \c__nwejm_date_accepted_tl {accepted} +\tl_const:Nn \c__nwejm_date_online_tl {online} +\tl_const:Nn \c__nwejm_dates_separator_tl {/} +\tl_const:Nn \c__nwejm_images_directory_string_tl {images} +\tl_const:Nn \c__nwejm_issue_images_path_string_tl {\c__nwejm_images_directory_string_tl} +\tl_const:Nn \c__nwejm_preliminary_version_string_tl {% + This~document~is~a~draft~that~lets~you~check~the~integrity~of~original~text~and + bibliography~of~your~article~to~appear~in~the~next~issue~of~the + \c__nwejm_journal_title_string_tl.~The~current~layout~may~not~be~the~final~one.% +} +\tl_const:Nn \c__nwejm_msc_string_tl {\textsc{msc}} +\tl_const:Nn \c__nwejm_colon_tl { + \ifcurrentbaselanguage{french}{\FBcolonspace}{}: + % \ifundef{\Fcolonspace}{\FBcolonspace}{\Fcolonspace}: +} +\tl_const:Nn \c__nwejm_aside_string_tl {--} +\tl_const:Nn \c__nwejm_draftwatermark_string_tl {draft} +\tl_const:Nn \c__nwejm_issue_bib_file_suffix_string_tl {__nwejm} +\tl_const:Nn \c__nwejm_issue_bib_file_string_tl {\c_job_name_tl\c__nwejm_issue_bib_file_suffix_string_tl.bib} +\tl_const:Nn \c__nwejm_issue_bib_path_string_tl {\c__nwejm_issue_bib_file_string_tl} +\tl_const:Nn \c__nwejm_issue_bib_key_tl {\int_use:N \g__nwejm_issue_number_int} +\tl_const:Nn \c__nwejm_journal_short_title_string_tl {\textsc{nwejm}} +\tl_const:Nn \c__nwejm_journal_title_string_tl { + North-Western~European~Journal~of~Mathematics% +} +\tl_const:Nn \c__nwejm_journal_front_cover_title_string_tl { + North-Western~European\\Journal\\of\\Mathematics% +} +\tl_const:Nn \c__nwejm_nwejm_class_name_tl {nwejm} +\tl_const:Nn \c__nwejm_nwejmarticle_class_name_tl {nwejmart} +\bool_new:N \g__nwejm_frontcover_bool +\bool_new:N \g__nwejm_inside_frontcover_bool +\bool_new:N \g__nwejm_inside_backcover_bool +\bool_new:N \g__nwejm_frontmatter_bool +\bool_new:N \g__nwejm_mainmatter_bool +\bool_new:N \g__nwejm_backmatter_bool +\bool_new:N \g__nwejm_backcover_bool +\bool_new:N \g__nwejm_date_specified_bool +\dim_const:Nn \c__nwejm_layoutheight_dim { 240mm} +\dim_const:Nn \c__nwejm_layoutwidth_dim { 170mm} +\dim_const:Nn \c__nwejm_printer_layoutoffset_dim { 5mm} +\bool_if:NTF {\g__nwejm_for_printer_bool} { + \dim_const:Nn \c__nwejm_potential_layoutoffset_dim { \c__nwejm_printer_layoutoffset_dim} +}{ + \dim_const:Nn \c__nwejm_potential_layoutoffset_dim {\c_zero_dim} +} +\bool_if:NTF {\g__nwejm_cover_bool} { + \dim_const:Nn \c__nwejm_potential_bindingoffset_dim { \c__nwejm_printer_bindingoffset_dim } +}{ + \dim_const:Nn \c__nwejm_potential_bindingoffset_dim {\c_zero_dim} +} +\dim_const:Nn \c__nwejm_paperheight_dim { \c__nwejm_layoutheight_dim+2\c__nwejm_potential_layoutoffset_dim} +\bool_if:NTF {\g__nwejm_cover_bool} { + \dim_const:Nn \c__nwejm_paperwidth_dim { + \c__nwejm_layoutwidth_dim + + + \c__nwejm_potential_layoutoffset_dim + +\c__nwejm_potential_bindingoffset_dim + } +}{ + \dim_const:Nn \c__nwejm_paperwidth_dim { + \c__nwejm_layoutwidth_dim + + + 2 + \c__nwejm_potential_layoutoffset_dim + +\c__nwejm_potential_bindingoffset_dim + } +} +\dim_const:Nn \c__nwejm_topmargin_dim { 20mm} +\dim_const:Nn \c__nwejm_topmargin_frontcover_dim { + \c__nwejm_topmargin_dim + % + 30mm +} +\dim_const:Nn \c__nwejm_topmargin_inside_cover_dim { + \c__nwejm_topmargin_dim + % +10mm +} +\dim_const:Nn \c__nwejm_topmargin_front_matter_dim { + \c__nwejm_topmargin_inside_cover_dim +} +\dim_const:Nn \c__nwejm_headsep_dim { 9.5mm} +\dim_const:Nn \c__nwejm_headsep_frontcover_dim { + \c__nwejm_headsep_dim + % +31mm + % -\c__nwejm_potential_layoutoffset_dim +} +\dim_const:Nn \c__nwejm_headsep_inside_frontcover_dim { + \c__nwejm_headsep_dim + +7mm +} +\dim_const:Nn \c__nwejm_headsep_front_matter_dim { + \c__nwejm_headsep_inside_frontcover_dim +} +\dim_const:Nn \c__nwejm_headheight_dim { 5mm } +\dim_const:Nn \c__nwejm_botmargin_dim { 30mm} +\dim_const:Nn \c__nwejm_footskip_dim { 10mm} +\dim_const:Nn \c__nwejm_margin_frontcover_dim { 15mm } +\dim_const:Nn \c__nwejm_bottom_frontcover_dim { 15mm } +\dim_const:Nn \c__nwejm_left_minipage_frontcover_dim { .4\linewidth } +\dim_const:Nn \c__nwejm_right_minipage_frontcover_dim { .6\linewidth } +\dim_const:Nn \c__nwejm_innermargin_dim { 23mm } +\dim_const:Nn \c__nwejm_outermargin_dim { 30mm } +\dim_const:Nn \c__nwejm_inside_cover_box_width_dim { 150mm }% +\dim_const:Nn \c__nwejm_innermargin_inside_cover_dim { + (\c__nwejm_layoutwidth_dim - \c__nwejm_inside_cover_box_width_dim)/2 + - \c__nwejm_potential_bindingoffset_dim + % + \c__nwejm_adjustmargin_dim +} +\dim_const:Nn \c__nwejm_outermargin_inside_cover_dim { + (\c__nwejm_layoutwidth_dim - \c__nwejm_inside_cover_box_width_dim)/2 + % - \c__nwejm_adjustmargin_dim +} +\dim_const:Nn \c__nwejm_innermargin_backcover_dim { 10mm } +\dim_const:Nn \c__nwejm_outermargin_backcover_dim { \c__nwejm_innermargin_backcover_dim } +\dim_const:Nn \c__nwejm_topmargin_backcover_dim { \c__nwejm_innermargin_backcover_dim } +\dim_const:Nn \c__nwejm_bottommargin_backcover_dim { \c__nwejm_innermargin_backcover_dim } +\dim_const:Nn \c__nwejm_front_matter_extra_innermargin_dim { \c_zero_dim } +\dim_const:Nn \c__nwejm_front_matter_extra_outermargin_dim { \c_zero_dim } +\dim_const:Nn \c__nwejm_inside_cover_offset_dim { \c_zero_dim }% +\geometry{% + papersize={\c__nwejm_paperwidth_dim,\c__nwejm_paperheight_dim} +} +\tl_const:Nn \c__nwejm_main_geometry_tl {% + ,layoutsize={\c__nwejm_layoutwidth_dim,\c__nwejm_layoutheight_dim} + ,layoutoffset=\c__nwejm_potential_layoutoffset_dim + ,textwidth=\c__nwejm_layoutwidth_dim*3/4 + ,textheight=\c__nwejm_layoutheight_dim*3/4 + % ,marginratio={4\string :6,5\string :7} + ,inner=\c__nwejm_innermargin_dim + ,headheight=\c__nwejm_headheight_dim + ,footskip=\c__nwejm_footskip_dim + % + % ,layoutsize={\c__nwejm_layoutwidth_dim,\c__nwejm_layoutheight_dim} + % ,layoutoffset=\c__nwejm_potential_layoutoffset_dim + % % ,bindingoffset=\c__nwejm_potential_bindingoffset_dim + % ,top=\c__nwejm_topmargin_dim% + % ,headheight=\c__nwejm_headheight_dim + % ,headsep=\c__nwejm_headsep_dim + % ,bottom=\c__nwejm_botmargin_dim + % ,footskip=\c__nwejm_footskip_dim + % ,inner=\c__nwejm_innermargin_dim + % ,outer=\c__nwejm_outermargin_dim +}% +\tl_new:N \l__nwejm_section_header_tl +\tl_set:Nn \l__nwejm_section_header_tl { + \ifthesection{% + \thesection.~% + }{% + } + \sectiontitle +}% +\newpagestyle{__nwejm_mainmatter_ps}[]{% + \sethead% + [ + \tl_if_exist:NT {\g__nwejm_short_title_tl} + { + \tl_if_empty:NF \g__nwejm_short_title_tl {% + \slshape\g__nwejm_short_title_tl + } + } + ]% + [% + ]% + [ + \DeclareNameAlias{labelname}{giveninits-last} + \AtNextCitekey{\defcounter{maxnames}{2}}\citeauthor{\g__nwejm_article_bib_key_tl} + ]% + { + \slshape\l__nwejm_section_header_tl + }% + {% + }% + { + }% + % + \setfoot% + {}% + {\thepage}% + {}% +} + \box_new:N \l__nwejm_journal_logo_box + \box_new:N \l__nwejm_journal_name_box + \AfterEndPreamble{% + \hbox_set:Nn \l__nwejm_journal_name_box + { + \bfseries% + \adjustbox{stack=l}{% + \c__nwejm_journal_title_string_tl + \mbox{} +} +} +\hbox_set:Nn \l__nwejm_journal_logo_box +{ + \includegraphics[width=1cm]{ nwejm-logo-NB } +} +\hbox_set_to_wd:Nnn \l__nwejm_journal_logo_box { 1cm } +{ + \box_move_down:nn + { + \box_ht:N \l__nwejm_journal_logo_box / 2 + - + \box_ht:N \l__nwejm_journal_name_box / 2 + } + { + \box_use:N \l__nwejm_journal_logo_box + } +} +\box_set_ht:Nn \l__nwejm_journal_logo_box { \c_zero_dim } +\box_set_dp:Nn \l__nwejm_journal_logo_box { \c_zero_dim } +} +\newpagestyle{__nwejm_article_title_ps}[]{% + % \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + { + \box_use:N \l__nwejm_journal_name_box + }% + {% + }% + { + \box_use:N \l__nwejm_journal_logo_box + }% + % + \setfoot% + {}% + {\thepage}% + {}% +} +\def\@pnumwidth{\@tocrmarg} +\AtBeginDocument{% + \graphicspath{{\c__nwejm_issue_images_path_string_tl//}{../\c__nwejm_issue_images_path_string_tl//}} + % \glsdisablehyper +} + \AtBeginDocument{\g__nwejm_mainmatter_switch_tl} +\int_new:N \g__nwejm_issue_number_int +\int_new:N \g__nwejm_issue_month_int +\int_new:N \g__nwejm_issue_year_int +\tl_new:N \g__nwejm_frontcover_image_options_tl +\keys_define:nn { nwejm/issuesetup } +{ + number .int_gset:N = \g__nwejm_issue_number_int, + volume .int_gset:N = \g__nwejm_issue_volume_int, + volume .value_required:, + volume .initial:n = 0, +} +\keys_define:nn { nwejm/dates } +{ + received .code:n = { + \tl_gset:Nn \g__nwejm_reception_date_tl {#1} + \bool_gset_true:N \g__nwejm_date_specified_bool + }, + accepted .code:n = { + \tl_gset:Nn \g__nwejm_acception_date_tl {#1} + \bool_gset_true:N \g__nwejm_date_specified_bool + }, + online .code:n = { + \tl_gset:Nn \g__nwejm_online_date_tl {#1} + \bool_gset_true:N \g__nwejm_date_specified_bool + }, + received .value_required:, + accepted .value_required:, + online .value_required:, +} +\quark_new:N \q__nwejm +\int_new:N \l_author_int +\prop_new:N \g_authors_prop +\prop_new:N \l_affiliations_tagged_prop +\cs_generate_variant:Nn \prop_put_if_new:Nnn { NVn } +\cs_generate_variant:Nn \prop_gput_if_new:Nnn { Nxn } +\cs_generate_variant:Nn \prop_put_if_new:Nnn { NnV } +\cs_new:Npn \__nwejm_prop_count:nn #1#2 { + 1 } +\cs_new:Npn \__nwejm_prop_count:N #1 +{ \int_eval:n { 0 \prop_map_function:NN #1 \__nwejm_prop_count:nn } } +\NewDocumentCommand \__nwejm_author_affiliation:ww { o u\q__nwejm } +{ + \stepcounter{footnote} + \prop_put_if_new:NVn \l_tmpa_prop {\the\c@footnote} {#2} + \IfValueT{#1}{% + \prop_put_if_new:NnV \l_affiliations_tagged_prop {#1} {\the\c@footnote} + } +} +\keys_define:nn { nwejm / authors } +{ + email .tl_gset:N = \g__nwejm_people_email_tl, + affiliation .code:n = {% + \__nwejm_author_affiliation:ww #1 \q__nwejm + }, + affiliationtagged .code:n = {% + \prop_get:NnNTF \l_affiliations_tagged_prop {#1} \l_tmpa_tl + {% + \prop_put_if_new:NVn \l_tmpa_prop {\l_tmpa_tl} {} + }{ + \msg_error:nnn{__nwejm}{Unknown~tag}{#1} + } + }, + affiliation .value_required:, + affiliationtagged .value_required:, +} +\tl_new:N \l__nwejm_newtheorem_style_tl +\keys_define:nn { nwejm / newtheorem } +{ + title .tl_set:N = \l__nwejm_newtheorem_title_tl, + title / french .tl_set:N = \l__nwejm_newtheorem_french_title_tl, + title / english .tl_set:N = \l__nwejm_newtheorem_english_title_tl, + title / german .tl_set:N = \l__nwejm_newtheorem_german_title_tl, + title / dutch .tl_set:N = \l__nwejm_newtheorem_dutch_title_tl, + title .value_required:, + title / french .value_required:, + title / english .value_required:, + title / german .value_required:, + title / dutch .value_required:, + % + style .choice:, + style / theorem .code:n = {\__nwejm_theorem_style:n {theorem}}, + style / definition .code:n = {\__nwejm_theorem_style:n {definition}}, + style / proof .code:n = {\__nwejm_theorem_style:n {proof}}, + style / unknown .code:n = + \msg_error:nnxxx { nwejm } { Unknown~choice } + { style } % Name of choice key + { theorem~or~definition~or~proof } % Valid choices + { \exp_not:n {#1} } % Invalid choice given +} +\bool_new:N \g__nwejm_gradient_nabla_bool +\bool_new:N \g__nwejm_gradient_nabla_control_bool +\keys_define:nn { nwejm/articlesetup } +{ + gradient .choice:, + gradient / nabla .code:n = {\bool_gset_true:N \g__nwejm_gradient_nabla_bool}, + gradient / grad .code:n = {\bool_gset_false:N \g__nwejm_gradient_nabla_bool}, + gradient / unknown .code:n = + \msg_error:nnxxx { nwejmart } { Unknown~choice } + { gradient } % Name of choice key + { nabla~or~grad } % Valid choices + { \exp_not:n {#1} } % Invalid choice given +} +\tl_new:N \g__nwejm_nwejm_short_string_tl +\tl_new:N \g__nwejm_nwejm_string_tl +\tl_gset:Nn \g__nwejm_nwejm_short_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c__nwejm_journal_short_title_string_tl}}{\c__nwejm_journal_short_title_string_tl} + }{% + \emph{\c__nwejm_journal_short_title_string_tl} + }% +} +\tl_gset:Nn \g__nwejm_nwejm_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c__nwejm_journal_title_string_tl}}{\c__nwejm_journal_title_string_tl} + }{% + \emph{\c__nwejm_journal_title_string_tl} + }% +} +\tl_new:N \l__nwejm_pdftitle_string_tl +\tl_new:N \l__nwejm_pdfauthor_string_tl +\tl_set:Nn \l__nwejm_pdftile_string_tl { + \c__nwejm_journal_title_string_tl\space--\space{}N^^c2^^b0\int_use:N\g__nwejm_issue_number_int +} +\tl_set:Nn \l__nwejm_pdfauthor_string_tl { + \g__nwejm_nwejm_string_tl +} +\cs_new_protected:Nn \__nwejm_email:n + { + \href{mailto:#1}{\nolinkurl{#1}}% + } +\tl_new:N \l__nwejm_crossref_tl +\cs_new_protected:Nn \__nwejm_populate_bib_file:nn +{ + \int_if_exist:cF {g__nwejm_#2_int} + { + \int_new:c {g__nwejm_#2_int} + } + \int_incr:c {g__nwejm_#2_int} + \tl_if_in:nnTF { #2 } { author } { + \tl_set:Nn \l__nwejm_crossref_tl {% + \c__nwejm_issue_bib_key_tl + -art- + \int_use:N \g__nwejm_articles_int + } + } { + \tl_set:Nn \l__nwejm_crossref_tl {\c__nwejm_issue_bib_key_tl} + } + \tl_set:Nn \l__nwejm_people_first_last_name_tl {#1} + \iow_now:Nx \g__nwejm_bib_out_iow {% + @article{ + \c__nwejm_issue_bib_key_tl -#2- \int_use:c {g__nwejm_#2_int}, + \iow_newline: + author={\exp_not:V\l__nwejm_people_first_last_name_tl}, + \iow_newline: + options={skipbib}, + \iow_newline: + crossref = {\l__nwejm_crossref_tl} + \iow_newline: + } + \iow_newline: + }% +} +\cs_new_protected:Nn \__nwejm_date:nn +{ + \tl_if_exist:NT {#2} + { + \tl_if_empty:NF {#2} + { + \tl_if_eq:NNF {\c__nwejm_date_received_tl} {#1} { \c__nwejm_dates_separator_tl } + \tl_mixed_case:n { \exp_args:No \GetTranslation{#1} } + \c__nwejm_colon_tl\space + \DTMdate{#2}% + } + } +} +\tl_new:N \g__nwejm_display_dates_tl% +\tl_gset:Nn \g__nwejm_display_dates_tl {% + \footnotesize% + \__nwejm_date:nn {\c__nwejm_date_received_tl}{\g__nwejm_reception_date_tl} + \__nwejm_date:nn {\c__nwejm_date_accepted_tl}{\g__nwejm_acception_date_tl} + \__nwejm_date:nn {\c__nwejm_date_online_tl} {\g__nwejm_online_date_tl} + \tl_gclear:N \g__nwejm_reception_date_tl + \tl_gclear:N \g__nwejm_acception_date_tl + \tl_gclear:N \g__nwejm_online_date_tl +} +\seq_new:N \l__nwejm_keywords_seq +\tl_new:N \l__nwejm_keywords_tl +\NewDocumentCommand \keywords { m } { + \seq_clear:N \l__nwejm_keywords_seq + \tl_clear:N \l__nwejm_keywords_tl + \seq_set_from_clist:Nn \l_tmpa_seq {#1} + \seq_set_map:NNn \l__nwejm_keywords_seq \l_tmpa_seq { + ##1 + } + \tl_set:Nn \l__nwejm_keywords_tl { \seq_use:Nn \l__nwejm_keywords_seq {,~} } + \hypersetup{pdfkeywords=\l__nwejm_keywords_tl} +} +\seq_new:N \l__nwejm_msc_seq +\tl_new:N \l__nwejm_msc_tl +\NewDocumentCommand \msc { m } { + \seq_clear:N \l__nwejm_msc_seq + \tl_clear:N \l__nwejm_msc_tl + % + % does what the name suggests, set a sequence from the clist + \seq_set_from_clist:Nn \l_tmpa_seq {#1} + % applies final arg to each element of second seq and stores result in first seq + \seq_set_map:NNn \l__nwejm_msc_seq \l_tmpa_seq { + ##1 + } + % + % \seq_use puts the items from the seq back in the input with ",~" as a separator + \tl_set:Nn \l__nwejm_msc_tl {\seq_use:Nn \l__nwejm_msc_seq {,~}} +%%<class-article> \hypersetup{pdfmsc=\l_@@_msc_tl} +} +\cs_new_protected:Nn \__nwejm_command_only_in_body:n +{ + \cs_if_eq:NNF {\@onlypreamble} {\@notprerr} { + \msg_error:nnn{ + nwejmart + }{Command~restricted~to~document~body~used~in~preamble}{#1} + } +} +\NewDocumentCommand \articlesetup { m } { + \__nwejm_command_only_in_body:n {\articlesetup} + \keys_set:nn { nwejm/articlesetup } {#1} +} +\NewDocumentCommand \dates { m } { + \keys_set:nn { nwejm/dates } { #1 } +} +\NewDocumentCommand \inputarticle { O{english} m } {% + \newrefsection + \tl_if_eq:nnTF { #1 } { german } {% + \selectlanguage{ngerman} + }{ + \selectlanguage{#1} + }% + \tl_if_eq:nnTF { #1 } { french } {% + \FrenchFootnotes + }{% + \StandardFootnotes + } + \inputfrom{./}{#2} + \clist_put_right:Nn \g__nwejm_counters_to_be_reset_clist { + footnote, + section, + figure, + table, + equation + } + \clist_map_inline:Nn \g__nwejm_counters_to_be_reset_clist { + \@ifundefined{c@##1}{ + }{ + \setcounter{##1}{\c_zero} + } + } + \glsresetall + \selectlanguage{english} +} +\AtBeginDocument{% +\tl_new:N \g__nwejm_bib_issue_date_tl +\tl_gset:Nn +\g__nwejm_bib_issue_date_tl { + \int_use:N \g__nwejm_issue_year_int - + \int_compare:nNnT {\g__nwejm_issue_month_int}<{10} + { + 0 + } + \int_use:N \g__nwejm_issue_month_int +} + \iow_now:Nx \g__nwejm_bib_out_iow {% + @periodical{\c__nwejm_issue_bib_key_tl,\iow_newline: + issuetitle = {\exp_not:f\c__nwejm_journal_title_string_tl},\iow_newline: + date = {\g__nwejm_bib_issue_date_tl},\iow_newline: + number = \int_use:N \g__nwejm_issue_number_int,\iow_newline: + % issn = {\l__nwejm_journal_issn_tl},\iow_newline: + options = {skipbib}\iow_newline: + } + \iow_newline: + }% +} +\tl_new:N \g__nwejm_title_tl +\RenewDocumentCommand \title { o m } { + \cleardoublepage + \int_gincr:N \g__nwejm_articles_int + \tl_gclear:N \g__nwejm_short_title_tl + \tl_gclear:N \g__nwejm_short_subtitle_tl + % + \IfNoValueF {#1} + { + \tl_gset:Nn \g__nwejm_short_title_tl {#1} + } + \tl_gset:Nn \g__nwejm_title_tl {#2} + \tl_if_empty:NT \g__nwejm_short_title_tl {% + \tl_gset_eq:NN \g__nwejm_short_title_tl \g__nwejm_title_tl + } +} +\tl_new:N \g__nwejm_subtitle_tl +\NewDocumentCommand \subtitle { o m } { + \IfNoValueF {#1} + { + \tl_gset:Nn \g__nwejm_short_subtitle_tl {#1} + } + \tl_gset:Nn \g__nwejm_subtitle_tl {#2} + \tl_if_empty:NT \g__nwejm_short_subtitle_tl {% + \tl_gset_eq:NN \g__nwejm_short_subtitle_tl \g__nwejm_subtitle_tl + } +} +\RenewDocumentCommand \author { O{} m } { + \cleardoublepage + \int_incr:N \l_author_int + \prop_gput_if_new:Nxn \g_authors_prop {author_\int_use:c {l_author_int}} {#2} + \IfNoValueF {#1} + { + \keys_set:nn { nwejm/authors } { #1 } + } + \prop_set_eq:cN {l_author_ \int_use:c {l_author_int} _affiliations_prop} \l_tmpa_prop + \prop_clear:N \l_tmpa_prop + \__nwejm_populate_bib_file:nn {#2}{author-art-\int_use:N \g__nwejm_articles_int} + \tl_if_empty:NTF \l__nwejm_people_first_last_names_tl {% + \tl_put_right:Nn + \l__nwejm_people_first_last_names_tl + {#2} + }{ + \tl_put_right:Nn + \l__nwejm_people_first_last_names_tl + {~and~#2} + } +} +\iow_new:N \g__nwejm_bib_out_iow +\ior_new:N \g__nwejm_bib_out_ior +\tl_new:N \g__nwejm_bib_out_tl +\file_if_exist:nTF { \c__nwejm_issue_bib_path_string_tl } +{ + \ior_open:Nn \g__nwejm_bib_out_ior { \c__nwejm_issue_bib_path_string_tl } + \ior_str_map_inline:Nn \g__nwejm_bib_out_ior + { \tl_gput_right:Nn \g__nwejm_bib_out_tl {#1 \par } } + \ior_close:N \g__nwejm_bib_out_ior +}{ + \typeout{no file! rerun} +} +\iow_open:Nn \g__nwejm_bib_out_iow { \c__nwejm_issue_bib_path_string_tl } +\tl_new:N \g__nwejm_abstract_body_tl +\NewDocumentEnvironment{abstract}{} + {\CollectAbstract} + {\endCollectAbstract} +\NewEnviron{CollectAbstract} + { + \tl_gset_eq:NN \g__nwejm_abstract_body_tl \BODY + } +\tl_new:N \g__nwejm_frontmatter_switch_tl% +\tl_gset:Nn \g__nwejm_frontmatter_switch_tl { + \bool_gset_true:N \g__nwejm_frontmatter_bool + \frontmatter + \pagestyle{__nwejm_frontmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__nwejm_main_geometry_tl}% +} +\tl_new:N \g__nwejm_mainmatter_switch_tl% +\tl_gset:Nn \g__nwejm_mainmatter_switch_tl { + \bool_gset_false:N \g__nwejm_frontmatter_bool + \bool_gset_true:N \g__nwejm_mainmatter_bool + \mainmatter + % \SetParskip{\c__nwejm_mainmatter_parskip_skip} + \pagestyle{__nwejm_mainmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__nwejm_main_geometry_tl}% +} +\tl_new:N \g__nwejm_article_acknowledgments_tl% +\cs_new_protected:Nn \__nwejm_article_acknowledgments:n +{ + \tl_gset:Nn \g__nwejm_article_acknowledgments_tl { #1 } +} +\NewDocumentCommand \acknowledgments { m } { + \__nwejm_article_acknowledgments:n {#1} +} +\tl_new:N \g__nwejm_article_bib_key_tl% +\tl_new:N \l__nwejm_people_first_last_names_tl +\tl_new:N \g__nwejm_authors_first_last_names_tl% +\tl_new:N \g__nwejm_citeauthor_no_giveninits% +\tl_new:N \g__nwejm_citeauthor_tl% +\int_new:N \g__nwejm_author_s_number_current_article_int% +\cs_new_protected:Nn \__nwejm_citeauthor_no_giveninits:n {% + \tl_gset:Nn \g__nwejm_citeauthor_tl {% + \DeclareNameAlias{labelname}{default}% + \group_begin: + \togglefalse{blx@giveninits}% + \citeauthor{#1} + \group_end: + }% + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\g__nwejm_citeauthor_tl}{} + }{% + \g__nwejm_citeauthor_tl + }% +} +\cs_set_eq:NN \__nwejm_orig_multinamedelim \multinamedelim +\cs_set_eq:NN \__nwejm_orig_finalnamedelim \finalnamedelim +\cs_new_protected:Nn \__nwejm_maketitle_citeauthor:n +{ + \restorecommand\mkbibnamelast + \def\multinamedelim {\hskip 1em \@plus.17fil}% + \cs_set_eq:NN \finalnamedelim \multinamedelim + \AtNextCitekey{\defcounter{maxnames}{100}} + \group_begin: + \DeclareNameAlias{labelname}{default}% + \togglefalse{blx@giveninits}% + \citeauthor{#1} + \group_end: + \cs_set_eq:NN \multinamedelim \__nwejm_orig_multinamedelim + \cs_set_eq:NN \finalnamedelim \__nwejm_orig_finalnamedelim + \protected\def\mkbibnamelast#1{% + \textsc{\textnohyphenation{#1}}}% +} +\cs_new_protected:Nn \__nwejm_display_author:n +{ + \seq_clear:N \l_tmpa_seq + \prop_get:NnN \g_authors_prop {author_#1} \l_tmpa_tl + \prop_map_inline:cn {l_author_ #1 _affiliations_prop} { + \seq_put_right:Nx \l_tmpa_seq { ##1 } + } + \seq_sort:Nn \l_tmpa_seq + { + \int_compare:nNnTF { ##1 } > { ##2 } + { \sort_reversed: } + { \sort_ordered: } + } + \mbox{% + \__nwejm_citeauthor_no_giveninits:n {\c__nwejm_issue_bib_key_tl -author-art- \int_use:N \g__nwejm_articles_int-#1} + } + \seq_map_inline:Nn \l_tmpa_seq { + \prop_get:cnN {l_author_ #1 _affiliations_prop} {##1} \l_tmpb_tl + \footnotemark[##1] + \tl_if_empty:NF \l_tmpb_tl + { + \footnotetext[##1]{\l_tmpb_tl} + } + } + \hskip 1em plus .17fil +} +\tl_new:N \l__nwejm_bullet_and_rule_tl +\tl_new:N \l__nwejm_authors_box_tl +\tl_new:N \l__nwejm_abstract_box_tl +\tl_new:N \l__nwejm_bullet_and_rule_odd_tl +\tl_new:N \l__nwejm_bullet_and_rule_even_tl +\tl_new:N \l__nwejm_title_box_tl +\tl_new:N \g__nwejm_title_for_toc_tl +\RenewDocumentCommand \maketitle { } { +\tl_gset:Nn \g__nwejm_article_bib_key_tl {% + \c__nwejm_issue_bib_key_tl + -art- + \int_use:N \g__nwejm_articles_int +} +\tl_if_empty:NF \g__nwejm_title_tl {% + \iow_now:Nx \g__nwejm_bib_out_iow {% + @article{ + \g__nwejm_article_bib_key_tl, + \iow_newline: + title={\exp_not:V\g__nwejm_title_tl}, + \iow_newline: + \tl_if_empty:NF \g__nwejm_subtitle_tl {% + subtitle={\exp_not:V\g__nwejm_subtitle_tl}, + \iow_newline: + } + \tl_if_eq:NNF { \g__nwejm_short_title_tl } { \g__nwejm_title_tl } {% + shorttitle={\exp_not:V\g__nwejm_short_title_tl}, + \iow_newline: + }% + \tl_if_empty:NF \l__nwejm_people_first_last_names_tl + { + author={\exp_not:V\l__nwejm_people_first_last_names_tl}, + \iow_newline: + } + options={skipbib}, + \iow_newline: + crossref = {\c__nwejm_issue_bib_key_tl} + } + \iow_newline: + }% + % \tl_clear:N \l__nwejm_people_first_last_names_tl +}% +\tl_set:Nn \l__nwejm_authors_box_tl +{% + \bool_if:nTF { \tl_if_empty_p:N \l__nwejm_people_first_last_names_tl } + { + \mbox{} + } + { + \int_set:Nn \l_tmpa_int { \__nwejm_prop_count:N \g_authors_prop} + \normalsize% + \int_step_inline:nnnn {1}{1}{\l_tmpa_int} { + \__nwejm_display_author:n {##1} + } + \prop_gclear:N \g_authors_prop + } +} +\int_zero:N \l_author_int +\prop_clear:N \l_affiliations_tagged_prop +\tl_set:Nn \l__nwejm_dates_box_tl +{% + \g__nwejm_display_dates_tl +} +\tl_set:Nn \l__nwejm_keywords_box_tl +{% + \noindent + { + \bfseries + \tl_mixed_case:n{ + \GetTranslation{plural-keyword} + \c__nwejm_colon_tl + } + } + \space\l__nwejm_keywords_tl. +} +\tl_set:Nn \l__nwejm_msc_box_tl +{% + \noindent\textbf{\c__nwejm_msc_string_tl}\c__nwejm_colon_tl\space\l__nwejm_msc_tl. +} +\tl_set:Nn \l__nwejm_abstract_box_tl +{% + \mbox{} + \par% + \vskip .5em% + \tl_if_empty:NTF \g__nwejm_abstract_body_tl + {% + \msg_warning:nn{nwejmart}{No~abstract} + }% + {% + \small + \begin{center}% + {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}% + \end{center}% + \begin{quotation} + \g__nwejm_abstract_body_tl + \end{quotation} + } +}% +\tl_set:Nn \g__nwejm_partial_title_for_toc_tl +{ + \tl_if_empty:NTF \g__nwejm_short_title_tl {% + \g__nwejm_title_tl% + }{ + \g__nwejm_short_title_tl% + } + \bool_if:nF { \tl_if_empty_p:N \g__nwejm_short_subtitle_tl } + { + .\space\g__nwejm_short_subtitle_tl + } +} + \hypersetup{pdftitle=\g__nwejm_partial_title_for_toc_tl} +\tl_set:Nn \g__nwejm_title_for_toc_tl +{ + \g__nwejm_partial_title_for_toc_tl + \bool_if:nF { \tl_if_empty_p:N \l__nwejm_people_first_last_names_tl } + { + \textsl{ + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{% + \AtNextCitekey{\defcounter{maxnames}{100}} + \space\textendash\space\citeauthor{\g__nwejm_article_bib_key_tl} + }{} + }{% + \space\textendash\space\citeauthor{\g__nwejm_article_bib_key_tl} + }% + } + } +} + \setsecnumdepth{none} + \bookmarksetup{depth=-2} + \chapter[\g__nwejm_title_for_toc_tl]{% + \LARGE% + \g__nwejm_title_tl + \tl_if_empty:NF \g__nwejm_subtitle_tl {% + \\[1ex]% + \Large% + \g__nwejm_subtitle_tl + }\\[2ex]% + \l__nwejm_authors_box_tl% + \bool_if:NT {\g__nwejm_date_specified_bool} + { + \\[2ex] + \l__nwejm_dates_box_tl + } + \\[-4ex] + } + \bool_gset_false:N \g__nwejm_date_specified_bool + \bookmarksetup{depth=subsection} + \setsecnumdepth{subsection} + \thispagestyle{__nwejm_article_title_ps}% +\l__nwejm_abstract_box_tl% +\normalsize +\tl_if_empty:NTF \l__nwejm_keywords_tl { + \msg_warning:nn{nwejmart}{No~keyword} +}{ + \l__nwejm_keywords_box_tl + \par% + \vskip .5em% +} +\tl_if_empty:NTF \l__nwejm_msc_tl { + \msg_warning:nn{nwejmart}{No~MSC} +}{ + \l__nwejm_msc_box_tl + \par% + \vskip .5em% +} + \hypersetup{pdfauthor=\l__nwejm_people_first_last_names_tl} +\tl_gclear:N \g__nwejm_title_tl +\tl_gclear:N \g__nwejm_subtitle_tl +\tl_gclear:N \g__nwejm_title_for_toc_tl +\tl_gclear:N \g__nwejm_abstract_body_tl + \tl_gclear:N \g__nwejm_people_affiliation_tl + \tl_gclear:N \g__nwejm_people_email_tl + \tl_clear:N \l__nwejm_people_first_last_names_tl% +} +\DeclarePlainStyle{^^c2^^ab~}{~^^c2^^bb}{`}{'} +\setcounter{topnumber}{3} +\renewcommand{\topfraction}{0.8} +\addtolength{\skip\footins}{.25\baselineskip} +\setlength{\columnsep}{7mm}% +\renewcommand{\thesection}{\arabic{section}}% +\@ifpackageloaded{siunitx}{% + \addto\extrasenglish{\sisetup{locale = UK}} + \addto\extrasfrench{\sisetup{locale = FR}} + \addto\extrasngerman{\sisetup{locale = DE}} + \addto\extrasgerman{\sisetup{locale = DE}} + \addto\extrasdutch{% + \sisetup{% + exponent-product = \ensuremath { \times } , + inter-unit-product = \, , + output-decimal-marker = { , } + }% + } + \sisetup{detect-all} +} +\cs_set_eq:NN \__nwejm_section \section +\cs_set_eq:NN \__nwejm_subsection \subsection +\cs_set_eq:NN \__nwejm_subsubsection \subsubsection +\AfterPreamble{% + \RenewDocumentCommand \section { s o m } {% + \IfBooleanTF {#1} + { + \setsecnumdepth{none}% + } + { + \resetsecnumdepth*% + } + \IfNoValueTF{#2}{\__nwejm_section{#3}}{\__nwejm_section[#2]{#3}} + } + \RenewDocumentCommand \subsection { s o m } {% + \IfBooleanT {#1} + { + \setsecnumdepth{none}% + } + \IfNoValueTF{#2}{\__nwejm_subsection{#3}}{\__nwejm_subsection[#2]{#3}} + } + \RenewDocumentCommand \subsubsection { s o m } {% + \IfBooleanT {#1} + { + \setsecnumdepth{none}% + } + \IfNoValueTF{#2}{\__nwejm_subsubsection{#3}}{\__nwejm_subsubsection[#2]{#3}} + } +} +\int_new:N \l__nwejm_abs_int +\cs_new_protected:Nn \__nwejm_ordinalnum_suffix:n +{ + \int_set:Nn \l__nwejm_abs_int {\int_abs:n {#1}} + \ifcurrentbaselanguage{english}{ + \int_use:N \l__nwejm_abs_int + \int_set:Nn \l_tmpa_int {\int_mod:nn {\l__nwejm_abs_int} {\c_one_hundred}} + \int_case:nnF + { \l_tmpa_int } + { + { \c_eleven } { \fmtord{th} } + { \c_twelve } { \fmtord{th} } + { \c_thirteen } { \fmtord{th} } + }{ + \int_set:Nn \l_tmpb_int {\int_mod:nn {\l__nwejm_abs_int} {\c_ten}} + \int_case:nnF + { \l_tmpb_int } + { + { \c_zero } { \fmtord{th} } + { \c_one } { \fmtord{st} } + { \c_two } { \fmtord{nd} } + { \c_three } { \fmtord{rd} } + }{ + \fmtord{th} + } + } + }{ + \ifcurrentbaselanguage{dutch}{ + \int_use:N \l__nwejm_abs_int + e + }{ + \textsc{\int_to_roman:n {\int_abs:n {#1}}} + \ifcurrentbaselanguage{french}{ + \int_compare:nNnTF { \l__nwejm_abs_int } = { 1 }{\fmtord{er}}{\fmtord{e}} + }{ + \ifcurrentbaselanguage{german}{ + . + }{ + \ifcurrentbaselanguage{ngerman}{ + . + }{ + } + } + } + } + } +} +\cs_new_protected:Nn \__nwejm_century_suffix:n +{ + \space{} + \GetTranslation{century}% + \int_compare:nNnT { #1 } < { 0 }{ + \space + \GetTranslation{before-christ} + }{ + } +} +\NewDocumentCommand \century { s m } {% + \__nwejm_ordinalnum_suffix:n {#2}% + \IfBooleanTF {#1} + { + \int_compare:nNnT { #2 } < { 0 }{ + \__nwejm_century_suffix:n {#2}% + } + }{ + \__nwejm_century_suffix:n {#2}% + } + \int_compare:nNnT { #2 } < { 0 }{ + \ifcurrentbaselanguage{english}{% + }{ + \@ifnextchar.% + { + }{ + .\xspace + }% + } + } +} +\NewDocumentCommand \aside { s m } {% + \IfBooleanTF {#1} + { + \c__nwejm_aside_string_tl{}~#2 + } + { + \c__nwejm_aside_string_tl{}~#2~\c__nwejm_aside_string_tl + } +} +\NewDocumentCommand \ie { s } {% + \IfBooleanTF {#1} + { + \GetTranslation{idest} + } + { + \GetTranslation{ie} + \@ifnextchar.% + { + }{ + .\xspace + }% + } +} +\NewDocumentCommand \Ie { s } {% + \IfBooleanTF {#1} + { + \GetTranslation{Idest} + } + { + \GetTranslation{Ie} + \@ifnextchar.% + { + }{ + .\xspace + }% + } +} +\RenewDocumentCommand \vec { m } { + \vv{#1} +} +\bool_new:N \g__nwejm_no_numbered_theorem_bool +\cs_new_protected:Nn \__nwejm_theorem_style:n +{ + \bool_gset_false:N \g__nwejm_no_numbered_theorem_bool + \str_case:nn + { #1 } + { + { theorem } { + \theoremstyle{plain} + \theoremheaderfont{\normalfont\bfseries} + \theorembodyfont{\itshape} + \theoremseparator{~--} + \theoremsymbol{} + } + { definition } { + \theoremstyle{plain} + \theoremheaderfont{\normalfont\bfseries} + \theorembodyfont{\normalfont} + \theoremseparator{~--} + \theoremsymbol{} + } + { proof } { + \theoremstyle{nonumberplain} + \bool_gset_true:N \g__nwejm_no_numbered_theorem_bool + \theoremheaderfont{\normalfont\itshape} + \theorembodyfont{\normalfont} + \theoremseparator{.} + \theoremsymbol{\ensuremath{\square}} + } + } +} +\cs_set_eq:NN \__nwejm_orig_newtheorem \newtheorem +\cs_new_protected:Nn \__nwejm_new_theorem:nnnnn +{ + \AtBeginDocument{% + \IfTranslation{English}{#1}{% + }{% + \DeclareTranslation{English}{#1}{\tl_mixed_case:n{#2}}% + } + \IfTranslation{French}{#1}{% + }{% + \DeclareTranslation{French}{#1}{\tl_mixed_case:n{#3}}% + } + \IfTranslation{German}{#1}{% + }{% + \DeclareTranslation{German}{#1}{\tl_mixed_case:n{#4}}% + } + \IfTranslation{Dutch}{#1}{% + }{% + \DeclareTranslation{Dutch}{#1}{\tl_mixed_case:n{#5}}% + } + } + \__nwejm_orig_newtheorem{#1}{\protect\tl_mixed_case:n{ \protect\GetTranslation{#1} }} + \bool_if:NF {\g__nwejm_no_numbered_theorem_bool} { + \__nwejm_orig_newtheorem*{#1__nwejm_nonumbered}{\protect\tl_mixed_case:n{ \protect\GetTranslation{#1} }} + } +} +\cs_generate_variant:Nn \__nwejm_new_theorem:nnnnn { nVVVV } +\RenewDocumentCommand \newtheorem { O{} m } +{ + \tl_clear:N \l__nwejm_newtheorem_style_tl + \tl_clear:N \l__nwejm_newtheorem_title_tl + \tl_clear:N \l__nwejm_newtheorem_french_title_tl + \tl_clear:N \l__nwejm_newtheorem_english_title_tl + \tl_clear:N \l__nwejm_newtheorem_german_title_tl + \tl_clear:N \l__nwejm_newtheorem_dutch_title_tl + % + \tl_set:Nn \l__nwejm_newtheorem_english_title_tl { + #2 + } + \tl_set:Nf \l__nwejm_newtheorem_french_title_tl { + \l__nwejm_newtheorem_english_title_tl + } + \tl_set:Nf \l__nwejm_newtheorem_german_title_tl { + \l__nwejm_newtheorem_english_title_tl + } + \tl_set:Nf \l__nwejm_newtheorem_dutch_title_tl { + \l__nwejm_newtheorem_english_title_tl + } + \tl_set:Nn \l__nwejm_newtheorem_style_tl { + theorem + } + \__nwejm_theorem_style:n {theorem} + \IfNoValueF {#1} + { + \keys_set:nn { nwejm / newtheorem } { #1 } + \tl_if_empty:NF \l__nwejm_newtheorem_title_tl {% + \tl_set:Nf \l__nwejm_newtheorem_english_title_tl + { + \l__nwejm_newtheorem_title_tl + } + \tl_set:Nf \l__nwejm_newtheorem_french_title_tl + { + \l__nwejm_newtheorem_title_tl + } + \tl_set:Nf \l__nwejm_newtheorem_german_title_tl + { + \l__nwejm_newtheorem_title_tl + } + \tl_set:Nf \l__nwejm_newtheorem_dutch_title_tl + { + \l__nwejm_newtheorem_title_tl + } + } + } + % + \__nwejm_new_theorem:nVVVV + {#2} + {\l__nwejm_newtheorem_english_title_tl} + {\l__nwejm_newtheorem_french_title_tl} + {\l__nwejm_newtheorem_german_title_tl} + {\l__nwejm_newtheorem_dutch_title_tl} + \makesavenoteenv{#2} + \bool_if:NF {\g__nwejm_no_numbered_theorem_bool} { + \ifcsmacro{#2*}{% + \RenewDocumentEnvironment{#2*}{o} + { + \IfNoValueTF {##1} + { \begin{#2__nwejm_nonumbered} } + { \begin{#2__nwejm_nonumbered}[##1] } + }{ + \end{#2__nwejm_nonumbered} + } + }{ + \NewDocumentEnvironment{#2*}{o} + { + \IfNoValueTF {##1} + { \begin{#2__nwejm_nonumbered} } + { \begin{#2__nwejm_nonumbered}[##1] } + }{ + \end{#2__nwejm_nonumbered} + } + } + } + \clist_put_right:Nn \g__nwejm_counters_to_be_reset_clist {#2} +} +\newtheorem{theorem} +\newtheorem{corollary} +\newtheorem{conjecture} +\newtheorem{proposition} +\newtheorem{lemma} +\newtheorem{axiom} +\newtheorem[style=definition]{definition} +\newtheorem[style=definition]{remark} +\newtheorem[style=definition]{example} +\newtheorem[style=definition]{notation} +\newtheorem[style=proof]{proof} +\cs_new_protected:Nn \__nwejm_clone_theorem:nn +{ + \NewDocumentEnvironment{#1}{} + { + \begin{#2} + }{ + \end{#2} + } + \NewDocumentEnvironment{#1*}{} + { + \begin{#2*} + }{ + \end{#2*} + } +} +\__nwejm_clone_theorem:nn {Theorem}{theorem} +\__nwejm_clone_theorem:nn {Corollary}{corollary} +\__nwejm_clone_theorem:nn {Conjecture}{conjecture} +\__nwejm_clone_theorem:nn {Proposition}{proposition} +\__nwejm_clone_theorem:nn {Lemma}{lemma} +\__nwejm_clone_theorem:nn {Axiom}{axiom} +\__nwejm_clone_theorem:nn {Definition}{definition} +\__nwejm_clone_theorem:nn {Remark}{remark} +\__nwejm_clone_theorem:nn {Example}{example} +\__nwejm_clone_theorem:nn {Notation}{notation} +\__nwejm_clone_theorem:nn {Proof}{proof} +\clist_set:Nn \l_tmpa_clist {% + theorem, + corollary, + conjecture, + proposition, + lemma, + axiom, + definition, + remark, + example, + notation, + proof% +} +\clist_map_inline:Nn \l_tmpa_clist { + \crefname{#1}{ + \GetTranslation{#1} + }{% + \GetTranslation{plural-#1} + } + \Crefname{#1}{ + \tl_mixed_case:n{ \protect + \GetTranslation{#1} + } + }{% + \tl_mixed_case:n{ + \GetTranslation{plural-#1} + } + } +} +\clist_set:Nn \l_tmpa_clist {% + hypothesis, + assertion% +} +\clist_map_inline:Nn \l_tmpa_clist { + \newlist{#1}{enumerate}{1} + \setlist[#1]{% + label= + \normalfont + ( + \textsf{ + \tl_upper_case:n {\tl_head:f {\GetTranslation{#1}}} + } + $\c_math_subscript_token\mathsf{\arabic*}$), + ref=( + \textsf{ + \tl_upper_case:n {\tl_head:f {\GetTranslation{#1}}} + } + $_\mathsf{\arabic*}$ + ) + } + \crefname{#1i}{ + \GetTranslation{#1} + }{% + \GetTranslation{plural-#1} + } + \Crefname{#1i}{ + \tl_mixed_case:n{ + \GetTranslation{#1} + } + }{% + \tl_mixed_case:n{ + \GetTranslation{plural-#1} + } + } +} +\NewDocumentEnvironment{hypotheses}{} +{ + \begin{hypothesis} + }{ + \end{hypothesis} +} +\NewDocumentEnvironment{assertions}{} +{ + \begin{assertion} + }{ + \end{assertion} +} +\RenewDocumentCommand{\DeclareMathOperator}{mm} +{ + \NewDocumentCommand{#1}{} + { + \operatorname{#2} + \peek_after:Nw \__nwejm_opx_check: + } +} +\NewDocumentCommand{\BinaryOperators}{m} +{ + \clist_gput_right:Nn \g__nwejm_opx_binary_clist { #1 } +} +\clist_new:N \g__nwejm_opx_binary_clist +\cs_new_protected:Nn \__nwejm_opx_check: +{ + \clist_map_inline:Nn \g__nwejm_opx_binary_clist + { + \token_if_eq_meaning:NNT \l_peek_token ##1 { \clist_map_break:n { {\!} } } + } +} +\BinaryOperators{% + \amalg,% + \ast,% + \bigcirc,% + \bigtriangledown,% + \bigtriangleup,% + \bullet,% + \cap,% + \cdot,% + \circ,% + \cup,% + \dagger,% + \ddagger,% + \diamond,% + \div,% + \lhd,% + \mp,% + \odot,% + \ominus,% + \oplus,% + \oslash,% + \otimes,% + \pm,% + \rhd,% + \setminus,% + \sqcap,% + \sqcup,% + \star,% + \times,% + \triangleleft,% + \triangleright,% + \unlhd,% + \unrhd,% + \uplus,% + \vee,% + \wedge,% + \wr,% + \barwedge,% + \boxdot,% + \boxminus,% + \boxplus,% + \boxtimes,% + \Cap,% + \centerdot,% + \circledast,% + \circledcirc,% + \circleddash,% + \Cup,% + \curlyvee,% + \curlywedge,% + \divideontimes,% + \dotplus,% + \doublebarwedge,% + \intercal,% + \leftthreetimes,% + \ltimes,% + \rightthreetimes,% + \rtimes,% + \smallsetminus,% + \veebar% +} +\DeclareMathOperator{\cotan}{cotan} +\DeclareMathOperator{\Arccos}{Arccos} +\DeclareMathOperator{\Arcsin}{Arcsin} +\DeclareMathOperator{\Arctan}{Arctan} +\DeclareMathOperator{\arccosh}{arccosh} +\DeclareMathOperator{\arcsinh}{arcsinh} +\DeclareMathOperator{\arctanh}{arctanh} +\DeclareMathOperator{\Argch}{Argch} +\DeclareMathOperator{\Argsh}{Argsh} +\DeclareMathOperator{\Argth}{Argth} +\cs_set_eq:NN \__nwejm_orig_arccos \arccos +\cs_set_eq:NN \__nwejm_orig_arcsin \arcsin +\cs_set_eq:NN \__nwejm_orig_arctan \arctan +\cs_set_eq:NN \__nwejm_orig_arccosh \arccosh +\cs_set_eq:NN \__nwejm_orig_arcsinh \arcsinh +\cs_set_eq:NN \__nwejm_orig_arctanh \arctanh +\RenewDocumentCommand \arccos {} { + \ifcurrentbaselanguage{french}{\Arccos}{\__nwejm_orig_arccos}% +} +\RenewDocumentCommand \arcsin {} { + \ifcurrentbaselanguage {french}{\Arcsin}{\__nwejm_orig_arcsin}% +} +\RenewDocumentCommand \arctan {} { + \ifcurrentbaselanguage {french}{\Arctan}{\__nwejm_orig_arctan}% +} +\RenewDocumentCommand \arccosh {} { + \ifcurrentbaselanguage{french}{\Argch}{\__nwejm_orig_arccosh}% +} +\RenewDocumentCommand \arcsinh {} { + \ifcurrentbaselanguage {french}{\Argsh}{\__nwejm_orig_arcsinh}% +} +\RenewDocumentCommand \arctanh {} { + \ifcurrentbaselanguage {french}{\Argth}{\__nwejm_orig_arctanh}% +} +\cs_set_eq:NN \__nwejm_orig_cot \cot +\RenewDocumentCommand \cot {} { + \ifcurrentbaselanguage {french}{\cotan}{\__nwejm_orig_cot}% +} +\DeclareMathOperator{\ch}{ch} +\DeclareMathOperator{\sh}{sh} +\cs_set_eq:NN \__nwejm_orig_cosh \cosh +\cs_set_eq:NN \__nwejm_orig_sinh \sinh +\cs_set_eq:NN \__nwejm_orig_tanh \tanh +\RenewDocumentCommand \cosh {} { + \ifcurrentbaselanguage {french}{\ch}{\__nwejm_orig_cosh}% +} +\RenewDocumentCommand \sinh {} { + \ifcurrentbaselanguage {french}{\sh}{\__nwejm_orig_sinh}% +} +\RenewDocumentCommand \tanh {} { + \ifcurrentbaselanguage {french}{\operatorname{th}}{\__nwejm_orig_tanh}% +} +\DeclareMathOperator{\Id}{Id} +\cs_set_eq:NN \__nwejm_orig_log \log +\cs_set_eq:NN \__nwejm_orig_lg \lg +\RenewDocumentCommand \log { s } { + \IfBooleanTF {#1} + { + \__nwejm_orig_log + } + { + \ln + } +} +\RenewDocumentCommand \lg { s } { + \IfBooleanTF {#1} + { + \__nwejm_orig_lg + } + { + \ln + } +} +\NewDocumentCommand \E { O{} } { + \ensuremath{ + \mathsf{e} + \tl_if_empty:nF {#1} {^{#1}} + } +} +\NewDocumentCommand \I { } { + \ensuremath{\mathsf{i}} +} +\bool_new:N \g__nwejm_grad_used_bool +\NewDocumentCommand \grad {} {% + \bool_if:NTF \g__nwejm_gradient_nabla_bool { + \operatorname{\nabla} + }{ + \operatorname{grad} + }% + \peek_after:Nw \__nwejm_opx_check: + \bool_if:NTF \g__nwejm_grad_used_bool { + \bool_if:nT { (\g__nwejm_gradient_nabla_bool && !\g__nwejm_gradient_nabla_control_bool) + || ( !\g__nwejm_gradient_nabla_bool && \g__nwejm_gradient_nabla_control_bool) } { + \msg_error:nnn{nwejmart}{Article~setup~not~consistent}{gradient} + } + }{ + \bool_gset_eq:NN \g__nwejm_gradient_nabla_control_bool \g__nwejm_gradient_nabla_bool + \bool_gset_true:N \g__nwejm_grad_used_bool + } +} +\DeclareMathOperator{\Div}{div} +\NewDocumentCommand \curl {} {% + \ifcurrentbaselanguage {english}{ + \operatorname{curl} + }{ + \operatorname{rot} + }% + \peek_after:Nw \__nwejm_opx_check: +} +\NewDocumentCommand \supp {} {% + \ifcurrentbaselanguage {ngerman}{ + \operatorname{Tr} + }{ + \operatorname{supp} + }% + \peek_after:Nw \__nwejm_opx_check: +} +\NewDocumentCommand \dif {}{\mathop{}\!\mathrm{d}} +\cs_set_eq:NN \__nwejm_orig_leq \leq +\cs_set_eq:NN \__nwejm_orig_geq \geq +\RenewDocumentCommand \le {} {% + \ifcurrentbaselanguage {french}{\leqslant}{\__nwejm_orig_leq}% +} +\RenewDocumentCommand \leq {} {% + \ifcurrentbaselanguage {french}{\leqslant}{\__nwejm_orig_leq}% +} +\RenewDocumentCommand \ge {} {% + \ifcurrentbaselanguage {french}{\geqslant}{\__nwejm_orig_geq}% +} +\RenewDocumentCommand \geq {} {% + \ifcurrentbaselanguage {french}{\geqslant}{\__nwejm_orig_geq}% +} +\NewDocumentCommand \bbN {} {\mathbb{N}} +\NewDocumentCommand \bbZ {} {\mathbb{Z}} +\NewDocumentCommand \bbD {} {\mathbb{D}} +\NewDocumentCommand \bbQ {} {\mathbb{Q}} +\NewDocumentCommand \bbR {} {\mathbb{R}} +\NewDocumentCommand \bbC {} {\mathbb{C}} +\NewDocumentCommand \bbK {} {\mathbb{K}} +\cs_set_eq:NN \emptyset \varnothing +\tl_new:N \l__nwejm_given_tl +\tl_set:Nn \l__nwejm_given_tl { + \nonscript\:\delimsize\slash + \allowbreak + \nonscript\: + \mathopen{} +}% +\DeclarePairedDelimiterX\__nwejm_set[1]\{\}{% + #1 +} +\NewDocumentCommand \set { m O{} } { + \if@display + \tl_if_empty:nTF {#2} {% + \__nwejm_set*{#1} + }{ + \__nwejm_set*{#1\l__nwejm_given_tl #2} + } + \else + \tl_if_empty:nTF {#2} {% + \__nwejm_set{#1} + }{ + \__nwejm_set{#1\l__nwejm_given_tl #2} + } + \fi +} +\DeclareDocumentCommand{\NewPairedDelimiter}{mm} + { + \__nwejm_delimiter_clear_keys: % reset to the default + \keys_set:nn { nwejm/delimiters } { #2 } + \use:x % we want to expand the values of the token variables set with the keys + { + \exp_not:n {\NewDocumentCommand{#1}{sO{}m} } + { + \exp_not:n { \IfBooleanTF{##1} } + { + \exp_not:N \__nwejm_paired_delimiter:nnnnn + { \exp_not:n { 0 } } + { \exp_not:V \l__nwejm_delimiter_left_tl } + { \exp_not:V \l__nwejm_delimiter_right_tl } + { \exp_not:n { ##3 } } + { \exp_not:V \l__nwejm_delimiter_subscript_tl } + } + { + \exp_not:N \__nwejm_paired_delimiter:nnnnn + { \exp_not:n { ##2 } } + { \exp_not:V \l__nwejm_delimiter_left_tl } + { \exp_not:V \l__nwejm_delimiter_right_tl } + { \exp_not:n { ##3 } } + { \exp_not:V \l__nwejm_delimiter_subscript_tl } + } + } + } + } +\keys_define:nn { nwejm/delimiters } + { + left .tl_set:N = \l__nwejm_delimiter_left_tl, + right .tl_set:N = \l__nwejm_delimiter_right_tl, + subscript .tl_set:N = \l__nwejm_delimiter_subscript_tl, + } +\cs_new_protected:Npn \__nwejm_delimiter_clear_keys: + { + \keys_set:nn { nwejm/delimiters } { left=.,right=.,subscript={} } + } +\cs_new_protected:Npn \__nwejm_paired_delimiter_expand:nnnn #1 #2 #3 #4 + {% Fix the spacing issue with \left and \right (D. Arsenau, P. Stephani and H. Oberdiek) + \mathopen{} + \mathclose\c_group_begin_token + \left#1 + #3 + \group_insert_after:N \c_group_end_token + \right#2 + \tl_if_empty:nF {#4} { \c_math_subscript_token {#4} } + } +\cs_new_protected:Npn \__nwejm_paired_delimiter_fixed:nnnnn #1 #2 #3 #4 #5 + { + \mathopen{#1#2}#4\mathclose{#1#3} + \tl_if_empty:nF {#5} { \c_math_subscript_token {#5} } + } +\cs_new_protected:Npn \__nwejm_paired_delimiter:nnnnn #1 #2 #3 #4 #5 + { + \str_case:nnF {#1} + { + { } { \__nwejm_paired_delimiter_expand:nnnn {#2}{#3}{#4}{#5} } + {0} { \__nwejm_paired_delimiter_fixed:nnnnn {}{#2}{#3}{#4}{#5} } + {1} { \__nwejm_paired_delimiter_fixed:nnnnn { \big }{#2}{#3}{#4}{#5} } + {\big} { \__nwejm_paired_delimiter_fixed:nnnnn { \big }{#2}{#3}{#4}{#5} } + {2} { \__nwejm_paired_delimiter_fixed:nnnnn { \Big }{#2}{#3}{#4}{#5} } + {\Big} { \__nwejm_paired_delimiter_fixed:nnnnn { \Big }{#2}{#3}{#4}{#5} } + {3} { \__nwejm_paired_delimiter_fixed:nnnnn { \bigg }{#2}{#3}{#4}{#5} } + {\bigg} { \__nwejm_paired_delimiter_fixed:nnnnn { \bigg }{#2}{#3}{#4}{#5} } + {4} { \__nwejm_paired_delimiter_fixed:nnnnn { \Bigg }{#2}{#3}{#4}{#5} } + {\Bigg} { \__nwejm_paired_delimiter_fixed:nnnnn { \Bigg }{#2}{#3}{#4}{#5} } + } + { + \msg_warning:nnn{nwejmart}{Wrong~paired~delimiter's~size~parameter}{#1} + \__nwejm_paired_delimiter_expand:nnnn {#2}{#3}{#4} + } + } +\NewPairedDelimiter{\norm}{ + left=\lVert, + right=\rVert +} +\NewPairedDelimiter{\lnorm}{ + left=\lVert, + right=\rVert, + subscript=1 +} +\NewPairedDelimiter{\llnorm}{ + left=\lVert, + right=\rVert, + subscript=2 +} +\NewPairedDelimiter{\lpnorm}{ + left=\lVert, + right=\rVert, + subscript=p +} +\NewPairedDelimiter{\supnorm}{ + left=\lVert, + right=\rVert, + subscript=\infty +} +\NewPairedDelimiter{\abs}{ + left=\lvert, + right=\rvert +} +\NewPairedDelimiter{\prt}{ + left=(, + right=) +} +\NewPairedDelimiter{\brk}{ + left=[, + right=] +} +\NewPairedDelimiter{\brc}{ + left=\{, + right=\} +} +\NewPairedDelimiter{\lrangle}{ + left=\langle, + right=\rangle +} +\NewPairedDelimiter{\leqgeq}{ + left=<, + right=> +} +\AfterEndPreamble{ + \autonum@generatePatchedReferenceCSL{vref} + \clist_set:Nn \l_tmpa_clist {equation,align,gather,multline,flalign} + \clist_map_inline:Nn \l_tmpa_clist { + \cs_set_eq:cc {#1*} {#1} + \cs_set_eq:cc {end#1*} {end#1} + } + % \msg_warning:nnn{nwejmart}{Starred~AMS~environments}{#1} +} +\etocsettocdepth{subsection} +\@ifpackageloaded{pgfplots}{% + \ifcurrentbaselanguage{french}{% + \pgfplotsset{% + /pgf/number~format/.cd, + use~comma, + 1000~sep={\,}, + min~exponent~for~1000~sep=4 + }% + }{ + } +} +\AtEndPreamble{% + \defbibheading{__nwejm_subbibliography}[\refname]{% + \section*{#1} + }% + \SetCiteCommand{\autocite}% +}% +\int_new:N \l__nwejm_section_int +\cs_set_eq:NN \__nwejm_printbibliography \printbibliography +\RenewDocumentCommand \printbibliography { O{} } { + \tl_if_empty:NF {\g__nwejm_article_acknowledgments_tl} + { + \section*{\GetTranslation{Acknowledgments}} + \g__nwejm_article_acknowledgments_tl + \tl_gclear:N \g__nwejm_article_acknowledgments_tl + } + \__nwejm_printbibliography[heading=__nwejm_subbibliography,resetnumbers,#1] + \bool_if:NF \g__nwejm_nolocaltoc_bool { + \newpage + \setcounter{page}{0} + \pagenumbering{roman}% + \etocarticlestylenomarks + \etocsetlevel{chapter}{6} + \tableofcontents + } +} +\exp_after:wN\addbibresource\exp_after:wN{\c__nwejm_issue_bib_path_string_tl} +\ifkp@easyscsl +\DeclareRobustCommand{\itshape}{\not@math@alphabet\itshape\mathit% + \ifthenelse{\equal{\f@shape}{\scdefault}}{\fontshape{scsl}}{% + \fontshape\itdefault}\selectfont} +\fi +\DeclareMathAlphabet\mathfrak{U}{euf}{m}{n} +\SetMathAlphabet\mathfrak{bold}{U}{euf}{b}{n} +\expandafter\def\expandafter\pdfstringdefPreHook +\expandafter{% + \pdfstringdefPreHook + \renewcommand{\acrshort}[1]{\tl_upper_case:n {\glsentryshort{##1}}}% +} +\@ifpackageloaded{draftwatermark}{% + \SetWatermarkColor{gray!10}% + \SetWatermarkFontSize{30mm}% + \SetWatermarkText{\MakeUppercase{\c__nwejm_draftwatermark_string_tl}}% +}{% +} +\pdftex_if_engine:T + { + \renewcommand{\ttdefault}{lmtt} + } +\tl_new:N \g__nwejm_font_designer_text_tl% +\cs_new_protected:Nn \__nwejm_font_designer_text:n +{ + \tl_gset:Nn \g__nwejm_font_designer_text_tl { #1 } +} +\NewDocumentCommand \fontdesignertext {m} +{ + \__nwejm_font_designer_text:n {#1}% +} +\tl_new:N \g__nwejm_printer_text_tl% +\cs_new_protected:Nn \__nwejm_printer_text:n +{ + \tl_gset:Nn \g__nwejm_printer_text_tl { #1 } +} +\NewDocumentCommand \printertext {m} +{ + \__nwejm_printer_text:n {#1}% +} +\NewDocumentCommand \nwejm { s } { + \IfBooleanTF {#1} + { + \g__nwejm_nwejm_string_tl + } + { + \g__nwejm_nwejm_short_string_tl + } + \xspace +} +\AfterEndPreamble{% + \titleformat{\chapter}[block] + {\normalfont\centering}{}{0pt}{} + \titlespacing*{\chapter}{0pt}{0pt}{0pt} +} +\ExplSyntaxOff +\patchcmd{\autonum@saveEnvironmentSubcommands} + {(0,0)\begin} + {(0,0)\hfuzz=\maxdimen\begin} + {}{} +%% +%% Copyright (C) 2015, 2016 by Denis Bitouze <denis.bitouze@lmpa.univ-littoral.fr> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Denis Bitouze. +%% +%% This work consists of the file nwejm.dtx and a Makefile. +%% Running "make" generates the derived files README, nwejm.pdf and nwejm.cls. +%% Running "make inst" installs the files in the user's TeX tree. +%% Running "make install" installs the files in the local TeX tree. +%% +%% +%% End of file `nwejmart.cls'. diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 5f6a55f878b..db406071b46 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -1269,6 +1269,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'musixtnt' => '&POSTmusixtnt', 'niceframe' => '&POST_rmsymlink', 'numericplots' => '&POSTnumericplots', + 'nwejm' => '&POSTnwejm', 'pas-cv' => '&POSTpas_vc', 'pedigree-perl' => '&POSTpedigreeperl', 'pgfornament' => '&POSTpgfornament', @@ -1622,7 +1623,7 @@ $standardtex='\.(.bx|4ht|cfg|clo|cls|cmap|def|code\.tex|fd|fontspec|ldf|sty)$'; 'msg', '-msg\.tex|' . $standardtex, 'msu-thesis', 'gb4e-compat\.tex|' . $standardtex, 'multirow', '^..[^s].*\.sty', # not miscdoc.sty - 'musixtex', 'NULL', # leave musixdoc.sty + 'musixtex', 'NULL', # not musixdoc.sty 'musixtnt', 'musixtnt.tex', 'mycv', 'mycv.*\.tex|' . $standardtex, 'mylatexformat', '.*\.ltx', @@ -1633,12 +1634,12 @@ $standardtex='\.(.bx|4ht|cfg|clo|cls|cmap|def|code\.tex|fd|fontspec|ldf|sty)$'; 'notes', '[^s]\.(eps|pdf|png)|' . $standardtex, # not notes.pdf 'ntheorem', '\.sty|\.std', 'nucleardata', '\.(csv|hd|pytxcode)|' . $standardtex, - 'nwejm', '\.(.bx|sty|[^c]\.cfg|cls|def|trsl)$', # omit ltxdoc.cfg + 'nwejm', '[^c]\.cfg$|\.(.bx|sty|cls|trsl)$', # not ltxdoc.cfg 'ocgx', 'tikz.*\.code\.tex|' . $standardtex, 'odsfile', '\.lua|' . $standardtex, 'ofs', '^ofs\.tex|ofsdef\.tex|ofs-.*\.tex|\.sty|a.*\.tex|.*fn\.tex', - 'pageslts', '\.sty|[^c]\.cfg', # omit ltxdoc.cfg, would be system-wide - 'papermas', '\.sty|[^c]\.cfg', # omit ltxdoc.cfg, would be system-wide + 'pageslts', '\.sty|[^c]\.cfg', # not ltxdoc.cfg + 'papermas', '\.sty|[^c]\.cfg', # not ltxdoc.cfg, would be system-wide 'passivetex', '\.xmt|' . $standardtex, 'patch', '\.tex', 'pdf-trans', 'pdf-trans.tex', @@ -2356,6 +2357,7 @@ my $core_latex = "$Master/texmf-dist/tex/latex"; 'minitoc' => 'latex', # requires interaction and 1000q instead of 10q 'mylatexformat'=> 'tex', 'nameauth' => 'pdflatex-preserve-pdf', + 'nwejm' => 'tex', 'nomentbl' => 'latex -translate-file=empty.tcx', # no 8-bit 'pbsheet' => 'latex', # requires interaction 'thumb' => 'latex -translate-file=empty.tcx', # no 8-bit @@ -5906,6 +5908,11 @@ sub POSTnumericplots { &SYSTEM ("$MV latex $DEST/tex/latex/$package"); } +sub POSTnwejm { + print "POST$package - mv images subdir\n"; + &SYSTEM ("$MV images $DEST/tex/latex/$package"); +} + sub POSTpas_vc { print "POST$package - mv latex subdir, doc files\n"; &SYSTEM ("$MV latex $DEST/tex/latex/$package"); diff --git a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc index 583c5e9e003..7a5b2815067 100644 --- a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc @@ -85,6 +85,7 @@ depend mynsfc depend nature depend nddiss depend ndsu-thesis +depend nwejm depend nih depend nihbiosketch depend nostarch diff --git a/Master/tlpkg/tlpsrc/nwejm.tlpsrc b/Master/tlpkg/tlpsrc/nwejm.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/nwejm.tlpsrc |