From 5d9a098da9a37db500b3667874193be8a289e101 Mon Sep 17 00:00:00 2001 From: fouche Date: Thu, 2 Nov 2023 17:17:27 +0200 Subject: [PATCH 01/34] sketch new documentclass --- Makefile | 46 ++++- compositionalityarticle-doc-new.tex | 297 ++++++++++++++++++++++++++++ compositionalityarticle.dtx | 155 +++++++++++++++ 3 files changed, 490 insertions(+), 8 deletions(-) mode change 100644 => 100755 Makefile create mode 100644 compositionalityarticle-doc-new.tex create mode 100755 compositionalityarticle.dtx diff --git a/Makefile b/Makefile old mode 100644 new mode 100755 index 41e2a5f..caf1781 --- a/Makefile +++ b/Makefile @@ -1,15 +1,45 @@ SHELL = /usr/bin/bash PKG = compositionalityarticle -$(PKG).tar.gz: $(PKG).cls logo.eps ORCIDiD_iconvector.pdf $(PKG)-doc.tex $(PKG)-doc.pdf README.md - ctanify --pkgname $(PKG) --no-tds $^ +# VERSION = UNRELEASED +# DATE = $(shell date +"%Y/%m/%d") + +# INTERPOLATIONS = s@@$(DATE)@g; +# INTERPOLATIONS += s//$(VERSION)/g; + +$(PKG).tar.gz: $(PKG).ins $(PKG).pdf README.md + ctanify --notds $^ + +$(PKG).pdf: $(PKG).dtx + pdflatex $(PKG).dtx + pdflatex $(PKG).dtx + makeindex -s gglo.ist -o $(PKG).gls $(PKG).glo + makeindex -s gind.ist -o $(PKG).ind $(PKG).idx + pdflatex $(PKG).dtx + pdflatex $(PKG).dtx + +$(PKG).cls: $(PKG).ins $(PKG).dtx + tex $< + +watch: + ls $(PKG).dtx | entr -c make $(PKG).pdf + +gawk: + ls $(PKG).dtx | entr -c texfot pdflatex -interaction=nonstopmode $(PKG).dtx + +dev: + ls $(PKG).dtx $(PKG)-doc-new.tex | entr -c make dev2 + +dev2: + make $(PKG).cls + texfot pdflatex -interaction=nonstopmode $(PKG)-doc-new.tex -$(PKG)-doc.pdf: $(PKG)-doc.tex - latexmk -pdf $< clean: - latexmk -c $(PKG)-doc.tex + rm -f $(PKG).{aux,dep,glo,gls,hd,idx,ilg,ind,listing,log,out} -clobber: - latexmk -C $(PKG)-doc.tex - rm -f $(PKG).tar.gz +clobber: clean + rm -f $(PKG).{ins,pdf,sty,tar.gz} + +# interpolate: +# sed -i "$(INTERPOLATIONS)" $(PKG).dtx \ No newline at end of file diff --git a/compositionalityarticle-doc-new.tex b/compositionalityarticle-doc-new.tex new file mode 100644 index 0000000..59cd950 --- /dev/null +++ b/compositionalityarticle-doc-new.tex @@ -0,0 +1,297 @@ +\documentclass[ + accepted=2020-05-01, + issue=1, + volume=2, + doi=10.32408/compositionality- +]{compositionalityarticle} + \pdfoutput=1 +\usepackage[utf8]{inputenc} +\usepackage[english]{babel} +\usepackage[T1]{fontenc} +\usepackage{amsmath} + +% TODO: put this in dtx +\usepackage[colorlinks=true, allcolors=shrimp]{hyperref} + +\usepackage{tikz} +\usepackage{lipsum} + +% commands che danno errore +\newenvironment{widetext}{}{} +\let\affiliation\relax +\let\email\relax +\let\orcid\relax +\let\homepage\relax +\newtheorem{theorem}{Theorem} + +\begin{document} +\let\abstractname\relax + +\title{Template demonstrating the compositionalityarticle class} +% \date{} +% \author{Brendan Fong} +% \email{latex@compositionality-journal.org} +% \homepage{http://compositionality-journal.org} +% \orcid{0000-0003-0290-4698} +% \thanks{You can use the \texttt{\string\email}, \texttt{\string\homepage}, \texttt{\string\orcid}, and \texttt{\string\thanks} commands to add additional information for the preceding \texttt{\string\author}. If applicable, this can also be used to indicate that a work has previously been published in conference proceedings.} +% \affiliation{MIT, Mathematics Department, Boston, USA} +% \author{Nina Otter} +% \email{latex@compositionality-journal.org} +% \orcid{0000-0002-3578-1420} +% \affiliation{UCLA, Mathematics Department, Los Angeles, USA} +% \author{Joshua Tan} +% \email{latex@compositionality-journal.org} +% \orcid{0000-0001-5317-4782} +% \affiliation{University of Oxford, Computer Science Department, +% Oxford, UK} +\maketitle + + + +\begin{abstract} + In the standard \texttt{onecolumn} layout + the abstract is typeset above the text. + Compositionality also supports a \texttt{twocolumn} layout with the abstract as a boldface first paragraph. + Both can be combined with the \texttt{titlepage} option to obtain a format with dedicated title and abstract pages that are not included in the page count. + This format can be more suitable for long articles. + The \texttt{abstract} environment can appear both before and after the \texttt{\string\maketitle} command and calling \texttt{\string\maketitle} is optional, as long as there is an \texttt{abstract}. + Both \texttt{abstract} and \texttt{\string\maketitle} however must be placed after all other \texttt{\string\author}, \texttt{\string\affiliation}, etc.\ commands. +In the \texttt{twocolumn} layout and without the \texttt{titlepage} option there can be a paragraph directly following the abstract before the first section. +In \texttt{onecolumn} format or with a dedicated \texttt{titlepage}, this should be avoided. +Note that clicking the title links to the page for the published article on \href{http://compositionality-journal.org}{compositionality-journal.org}. +In this way readers can easily verify whether a work using the \texttt{compositionalityarticle} class was actually published in Compositionality. +\end{abstract} + + + +\section{Figures} +\begin{figure}[t] + \centering + \includegraphics[scale=.2]{example-image-a} + \caption{Every figure must have an informative caption and a number. + The caption can be placed above, below, or to the side of the figure, as you see fit. + The same applies for tables, boxes, and other floating elements.} + \label{fig:figure1} +\end{figure} +See Fig.~\ref{fig:figure1} for an example of how to include figures. +Feel free to place them at the top or bottom of the page, or in the middle of a paragraph as you see fit. +Try to place them on the same page as the text referring to them. +A figure on the first page can help readers remember and recognize your work more easily. + +\section{Sectioning and equations} +Sections, subsections, subsubsections, and paragraphs should be typeset with the standard LaTeX commands. +You can use the standard commands for equations. +For multi-line equations \texttt{align} is \href{http://tex.stackexchange.com/questions/196/eqnarray-vs-align}{preferable} over \texttt{eqnarray}. +\begin{align} + \label{emc} + E &= m c^2\\ + a^2 + b^2 &= c^2\\ + H |\psi\rangle &= E |\psi\rangle\\ + (\mathbb{I} \otimes A) (B \otimes \mathbb{I}) &= A \otimes B +\end{align} +Whether you prefer to refer to equations as Eq.~\eqref{emc}, Equation~\ref{emc}, or just \eqref{emc} is up to you, but please be consistent and use the \texttt{\string\eqref\{\dots\}} command instead of writing \texttt{(\string\ref\{\dots\})}. +As a courtesy for your readers and referees please suppress equation numbers only if there is a valid reason to do so to not make in unnecessarily difficult to refer to individual results and steps in derivations. + +\paragraph{Paragraphs} +The paragraph is the smallest unit of sectioning. +Feel free to end the paragraph title with a full stop if you find this appropriate. + +\subsection{References and footnotes} +\label{sec:subsec1} +Footnotes\footnote{Only use footnotes when appropriate.} appear in the bottom of the page. +Please do not mix them with your references. +Citations to other works should appear in the References section at the end of the work. + +\begin{theorem}[DOI links are required] + Important: As Compositionality is a member of Crossref, all references to works that have a DOI must be hyperlinked according to the DOI. Those links must start with \texttt{https://doi.org/}. Direct links to the website of the publisher are not sufficient. +\end{theorem} + +This can be achieved in several ways, depending on how you format your bibliography. +Suppose the DOI of an article \cite{examplecitation} that you want to cite is \texttt{10.22331/idonotexist}. +If you are formating your bibliography manually, you can cite this work using the following in your \texttt{thebibliography} environment: +\begin{verbatim} +\bibitem{examplecitation} + Name Surname, + Compositionality \textbf{123}, 123456 (1916). + \href{https://doi.org/10.22331/idonotexist} + {https://doi.org/10.22331/idonotexist} +\end{verbatim} + +\begin{theorem}[One citation per bibitem] + Important: If you are formatting your bibliography manually, please do not group multiple citations into one \texttt{\string\bibitem}. + It is not nice for your readers and it screws up our automatic extraction of citations and creates superfluous manual work. +\end{theorem} + +We encourage the use of BibTeX to generate your bibliography from the BibTeX meta-data provided by publishers. +For DOI linking to work, the BibTeX file must contain the \texttt{doi} field as for example in: +\begin{verbatim} +@article{examplecitation, + author = {Surname, Name}, + title = {Title}, + journal = {Compositionality}, + volume = {123}, + page = {123456}, + year = {1916}, + doi = {10.22331/idonotexist}, +} +\end{verbatim} + +Be advised that \href{http://wiki.lyx.org/BibTeX/Tips}{BibTeX does not support unicode characters}. +All special characters must be input via their respective LaTeX commands. + +If you are using BibTeX, you can load the \texttt{natbib} package by putting +\begin{verbatim} +\usepackage[numbers,sort&compress]{natbib} +\end{verbatim} +in the preamble of your document and then use the \texttt{plainnat} citation style by including your BibTeX bibliography \texttt{mybibliography.bib} where you want the bibliography to appear as follows: +\begin{verbatim} +\bibliographystyle{plainnat} +\bibliography{mybibliography} +\end{verbatim} +The \texttt{compositionalityarticle} class automatically detects that the \texttt{natbib} package was loaded and redefines the \texttt{\string\doi} command to create hyperlinks. +This is likely the easiest option if you are converting from another document class. + +If you want to used BibLaTeX, you can instead add +\begin{verbatim} +\usepackage[backend=bibtex]{biblatex} +\addbibresource{mybibliography.bib} +\end{verbatim} +to the preamble of your document and then output the bibliography with +\begin{verbatim} +\printbibliography +\end{verbatim} +where appropriate. +You then have to upload the .bbl file along with the other source files when submitting to the arXiv. +Due to incompatibilities between different LaTeX versions we unfortunately cannot recommend this option until the arXiv has updated its LaTeX system \cite{biblatexsubmittingtothearxiv}. + +The \texttt{compositionalityarticle} class automatically detects that the \texttt{biblatex} package was loaded, sets the default option \texttt{doi=true} to include the DOI in the bibliography, and declares a suitable field format to make it a hyperlink. +Due to issues with \texttt{biber} we recommend to use the \texttt{bibtex} backend of \texttt{biblatex}. + +More information on how to get DOI links in your document can be found on StackExchange \cite{howtogetdoilinksinbibliography,automaticallyaddingdoifieldstoahandmadebibliography}. +Feel free to change the appearance of citations in any way you like by using a different \texttt{bibliographystyle} or via the advanced mechanisms provided by BibLaTeX. +The only two requirements are that citations must uniquely identify the cited work and that they must contain a DOI hyperlink whenever possible. + +To get correct line breaks within links, please add the line +\begin{verbatim} +\pdfoutput=1 +\end{verbatim} +within the first five lines of your main LaTeX file as suggested by the arXiv \cite{arxivpdfoutput}. + +\section{Unpublished and accepted works} +This class supports the \texttt{unpublished} option which disables all Compositionality related branding such as the color as well as the hyperlink in the title. +It can be used for works not yet accepted in Compositionality or that are not intended for submission to Compositionality. +By giving the \texttt{accepted=YYYY-MM-DD} option, with \texttt{YYYY-MM-DD} the acceptance date, the footnote ``Accepted in Compositionality on YYYY-MM-DD. Click on title to verify.'' is added to the bottom of each page to clearly mark works that have been accepted in Compositionality. Once the work is accepted for publication you will receive an identifier {\tt article-id} which you will have to give as the {\tt shortitle=article-id} option (this is needed for the title hyperlink). Finally, for accepted works you also have to give the \texttt{volume=volume-nr}, as well as \texttt{issue=issue-nr} options. + +\section{Summary section} +Longer articles should include a section that, early on, explains the main results, their limitations, and assumptions. +Depending on the target audience this section can be used to, for example, present the main theorem, or provide a summary of the results for a wider audience. + +\section{Extra packages} +Compositionality encourages you to load the following extra packages: +\begin{verbatim} +\usepackage[utf8]{inputenc} +\usepackage[english]{babel} +\usepackage[T1]{fontenc} +\usepackage{amsmath} +\usepackage{hyperref} +\end{verbatim} +If you do not load the \texttt{hyperref} package, \texttt{compositionalityarticle} automatically loads it for you. +Packages that change font settings, such as \texttt{times} or \texttt{helvet} should be avoided. + +\section{Wide equations} +Very wide equations can be shown expanding over both columns using the \texttt{widetext} environment. +In \texttt{onecolumn} mode, the \texttt{widetext} environment has no effect. +\begin{widetext} + \begin{equation} +|\mathrm{AME}(n=6,q=5)\rangle=\sum_{i,j,k=0}^4 |i,j,k,i+j+k,i+2j+3k,i+3j+4k\rangle + \end{equation} +\end{widetext} +To enabled this feature in the \texttt{twocolumn} mode, \texttt{compositionalityarticle} relies on the package \texttt{ltxgrid}. +Unfortunately this package has a bug that leads to a sub-optimal placement of extremely long footnotes. + +\section{Title information} +You can provide information on authors and affiliations in the common format also used by \texttt{revtex}: +\begin{verbatim} +\title{Title} +\author{Author 1} +\author{Author 2} +\affiliation{Affiliation 1} +\author{Author 3} +\affiliation{Affiliation 2} +\author{Author 4} +\affiliation{Affiliation 1} +\affiliation{Affiliation 3} +\end{verbatim} +In this example affiliation 1 will be associated with authors 1, 2, and 4, affiliation 2 with author 3 and affiliation 3 with author 4. +Repeated affiliations are automatically recognized and typeset in the \texttt{superscriptaddress} style. +Alternatively you can use a format similar to that of the \texttt{authblk} package and the \texttt{elsearticle} document class to specify the same affiliation relations as follows: +\begin{verbatim} +\title{Title} +\author[1]{Author 1} +\author[1]{Author 2} +\author[2]{Author 3} +\author[1,3]{Author 4} +\affil[1]{Affiliation 1} +\affil[2]{Affiliation 1} +\affil[3]{Affiliation 1} +\end{verbatim} + + + + + + +\appendix + +\section{First section of the appendix} +Compositionality allows the usage of appendices. + +\subsection{Subsection} +Ideally, the command \texttt{\string\appendix} should be put before the appendices to get appropriate section numbering. +The appendices are then numbered alphabetically, with numeric (sub)subsection numbering. +Equations continue to be numbered sequentially. +\begin{equation} + A \neq B +\end{equation} +You are free to change this in case it is more appropriate for your article, but a consistent and unambiguous numbering of sections and equations must be ensured. + +If you want your appendices to appear in \texttt{onecolumn} mode but the rest of the document in \texttt{twocolumn} mode, you can insert the command \texttt{\string\onecolumn\string\newpage} before \texttt{\string\appendix}. + +\section{Problems and Bugs} +In case you encounter problems using the \texttt{compositionalityarticle} class please analyse the error message carefully and look for help online; \href{http://tex.stackexchange.com/}{http://tex.stackexchange.com/} is an excellent resource. +If you cannot resolve a problem, open a bug report in our bug-tracker under +\begin{center} + \href{https://github.com/compositionality/issues}{https://github.com/compositionality/latex-template/issues}. +\end{center} + +You can also contact us via email under \href{executive-board@compositionality-journal.org}{executive@compositionality-journal.org}, but it may take significantly longer to get a response. +In any case we need the full source of a document that produces the problem and the log file showing the error to help you. + +\bibliographystyle{plain} +\begin{thebibliography}{9} +\bibitem{examplecitation} + Name Surname, + Compositionality \textbf{123}, 123456 (1916). + \href{https://doi.org/10.22331/idonotexist} + {https://doi.org/10.22331/idonotexist} + +\bibitem{biblatexsubmittingtothearxiv} + StackExchange discussion on \href{http://tex.stackexchange.com/questions/26990/biblatex-submitting-to-the-arxiv}{``Biblatex: submitting to the arXiv'' (2017-01-10)} + +\bibitem{arxivpdfoutput} + Help article published by the arXiv on \href{https://arxiv.org/help/submit_tex}{``Considerations for TeX Submissions'' (2017-01-10)} + +\bibitem{howtogetdoilinksinbibliography} + StackExchange discussion on \href{http://tex.stackexchange.com/questions/3802/how-to-get-doi-links-in-bibliography}{``How to get DOI links in bibliography'' (2016-11-18)} + +\bibitem{automaticallyaddingdoifieldstoahandmadebibliography} + StackExchange discussion on \href{http://tex.stackexchange.com/questions/6810/automatically-adding-doi-fields-to-a-hand-made-bibliography}{``Automatically adding DOI fields to a hand-made bibliography'' (2016-11-18)} + +\end{thebibliography} + + + +\onecolumn\newpage + + +\end{document} \ No newline at end of file diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx new file mode 100755 index 0000000..068278d --- /dev/null +++ b/compositionalityarticle.dtx @@ -0,0 +1,155 @@ +% \iffalse meta-comment +%% ============================================================================= +%% +%% compositionality () +%% +%% ============================================================================= +% +% %%%=[ DRIVER ]================================================================ +% +%<*driver> +\documentclass[a4paper,full]{l3doc} +\EnableCrossrefs +\CodelineIndex +\RecordChanges + +\begin{document} + \DocInput{\jobname.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% +% \fi +% +% \changes{0.1.0}{2023/05/31}{Initial version} +% +% \GetFileInfo{\jobname.cls} +% +% \title{^^A +% The \cls{\jobname} document class^^A +% \thanks{Thanks!}\\^^A +% \fileinfo^^A +% } +% +% \author{^^A +% J Doe\\^^A +% \texttt{\href{mailto:j.doe@email.com}{j.doe@email.com}}^^A +% } +% +% \date{\fileversion~(\filedate)} +% +% \maketitle +% +% ^^A=[ DOCUMENTATION ]========================================================= +% +% \begin{documentation} +% +% \section{Documentation} +% +% \end{documentation} +% +% ^^A=[ PACKAGE ]=============================================================== +% +% \begin{implementation} +% +% \section{Implementation} +% +% Open the \pkg{DocStrip} guards. +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% Identify the internal prefix (\LaTeX3 \pkg{DocStrip} convention). +% \begin{macrocode} +%<@@=shrimp> +% \end{macrocode} +% +% Load the essential support (\pkg{expl3}) \enquote{up-front}. +% +% \begin{macrocode} +\RequirePackage{expl3}[2023/05/11] +\RequirePackage{l3keys2e} +\RequirePackage{xparse} +% \end{macrocode} +% +% Identify the package and give the over all version information. +% \begin{macrocode} +\ProvidesExplClass +{compositionality} +{} +{} +{The Compositionality article class} + +\ExplSyntaxOn + +\keys_define:nn { shrimp } +{ + accepted .tl_set:N = \l_shrimp_accepted_tl, + volume .tl_set:N = \l_shrimp_volume_tl, + issue .tl_set:N = \l_shrimp_issue_tl, + doi .tl_set:N = \l_shrimp_doi_tl, +} + +\ProcessKeysOptions { shrimp } + +\LoadClass{article} +\RequirePackage{xkeyval} +\RequirePackage{amsmath} +\RequirePackage{amsfonts} +\RequirePackage{etoolbox} +\RequirePackage[margin=3cm]{geometry} +\RequirePackage{titlesec} +\RequirePackage{fancyhdr} + +\DeclareOptionX{onecolumn}{\AtBeginDocument{\onecolumn}} +\DeclareOptionX{twocolumn}{\AtBeginDocument{\twocolumn}} + +\ExecuteOptionsX{onecolumn} +\ProcessOptionsX + + +\RequirePackage{xcolor} +\definecolor{shrimp}{RGB}{255,90,95} % shrimpositionality pink + +\titleformat{\section}[hang] + {\normalfont\Large\sffamily}{\thesection}{1em}{} +\titleformat{\subsection}[hang] + {\normalfont\large\sffamily}{\thesubsection}{1em}{} +\titleformat{\subsubsection}[hang] + {\normalfont\normalsize\sffamily}{\thesubsubsection}{1em}{} +\titleformat{\paragraph}[runin] + {\normalfont\normalsize\sffamily}{}{1em}{}[.] +% \end{macrocode} +% This generates contents for headers and footers of the first page +% \begin{macrocode} +\tl_new:N \l_shrimp_rhead_content +\tl_set:Nn \l_shrimp_rhead_content { \color{shrimp}\sffamily Volume~\tl_use:N \l_shrimp_volume_tl,~Issue~\tl_use:N \l_shrimp_issue_tl } + +\tl_const:Nn \l_shrimp_doi { 10.32408/compositionality-\tl_use:N \l_shrimp_volume_tl-\tl_use:N \l_shrimp_issue_tl } + +\tl_new:N \l_shrimp_lfoot_content +\tl_set:Nn \l_shrimp_lfoot_content { \color{shrimp}\sffamily Accepted~in~Compositionality~on~\tl_use:N \l_shrimp_accepted_tl.~ +doi:\tl_use:N \l_shrimp_doi} +% \end{macrocode} +% This takes care of headers and footers using \pkg{fancyhdr}; +% \begin{macrocode} +\lhead{} +\chead{} +\rhead{\ifnum\value{page}>1\else\l_shrimp_rhead_content\fi} +\lfoot{\ifnum\value{page}>1\else\l_shrimp_lfoot_content\fi} +\cfoot{} +\rfoot{\color{shrimp}\sffamily\thepage} +\let\headrule\relax +\let\footrulewidth\headrulewidth + +\pagestyle{fancy} +\fancypagestyle{plain}{} + +% \end{macrocode} +% +% +% \iffalse +% +% \fi +% \end{implementation} \ No newline at end of file From 9552bda5902711143ddbda1404c141126f889156 Mon Sep 17 00:00:00 2001 From: fouche Date: Thu, 2 Nov 2023 17:48:16 +0200 Subject: [PATCH 02/34] also the ins --- compositionalityarticle.ins | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100755 compositionalityarticle.ins diff --git a/compositionalityarticle.ins b/compositionalityarticle.ins new file mode 100755 index 0000000..fd6ba6a --- /dev/null +++ b/compositionalityarticle.ins @@ -0,0 +1,13 @@ +\input l3docstrip.tex +\keepsilent +\askforoverwritefalse + +% NOTE: to avoid redundancy we use `%%'-lines instead of pre/postambles +\preamble +\endpreamble +\nopostamble + +\usedir{tex/latex/compositionality} +\generate{\file{\jobname.cls}{\from{\jobname.dtx}{package}}} + +\endbatchfile \ No newline at end of file From 038af2a028811ca9c9bd62943f38d674900bba28 Mon Sep 17 00:00:00 2001 From: Paolo Brasolin Date: Thu, 2 Nov 2023 17:34:40 +0100 Subject: [PATCH 03/34] Refactor dtx --- compositionalityarticle-doc-new.tex | 8 +- compositionalityarticle.dtx | 117 ++++++++++++++++++++-------- 2 files changed, 86 insertions(+), 39 deletions(-) diff --git a/compositionalityarticle-doc-new.tex b/compositionalityarticle-doc-new.tex index 59cd950..c83b31f 100644 --- a/compositionalityarticle-doc-new.tex +++ b/compositionalityarticle-doc-new.tex @@ -2,16 +2,11 @@ accepted=2020-05-01, issue=1, volume=2, - doi=10.32408/compositionality- ]{compositionalityarticle} - \pdfoutput=1 + \usepackage[utf8]{inputenc} \usepackage[english]{babel} \usepackage[T1]{fontenc} -\usepackage{amsmath} - -% TODO: put this in dtx -\usepackage[colorlinks=true, allcolors=shrimp]{hyperref} \usepackage{tikz} \usepackage{lipsum} @@ -25,7 +20,6 @@ \newtheorem{theorem}{Theorem} \begin{document} -\let\abstractname\relax \title{Template demonstrating the compositionalityarticle class} % \date{} diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 068278d..99c8cfa 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -80,38 +80,70 @@ {} {} {The Compositionality article class} - -\ExplSyntaxOn - +% \end{macrocode} +% +% Parse document class options. +% \begin{macrocode} \keys_define:nn { shrimp } { - accepted .tl_set:N = \l_shrimp_accepted_tl, - volume .tl_set:N = \l_shrimp_volume_tl, - issue .tl_set:N = \l_shrimp_issue_tl, - doi .tl_set:N = \l_shrimp_doi_tl, + accepted .tl_set:N = \l_shrimp_accepted_tl, + volume .tl_set:N = \l_shrimp_volume_tl, + issue .tl_set:N = \l_shrimp_issue_tl, } \ProcessKeysOptions { shrimp } - +% \end{macrocode} +% +% Compute article's DOI. +% \begin{macrocode} +\tl_const:Nn \l_shrimp_doi + { + 10.32408/compositionality- + \tl_use:N \l_shrimp_volume_tl + - + \tl_use:N \l_shrimp_issue_tl + } +% \end{macrocode} +% +% Load \pkg{article} as base class. +% \begin{macrocode} \LoadClass{article} -\RequirePackage{xkeyval} +% \end{macrocode} +% +% Require all dependencies. +% \begin{macrocode} \RequirePackage{amsmath} \RequirePackage{amsfonts} -\RequirePackage{etoolbox} -\RequirePackage[margin=3cm]{geometry} +\RequirePackage{amssymb} +\RequirePackage{geometry} \RequirePackage{titlesec} \RequirePackage{fancyhdr} - -\DeclareOptionX{onecolumn}{\AtBeginDocument{\onecolumn}} -\DeclareOptionX{twocolumn}{\AtBeginDocument{\twocolumn}} - -\ExecuteOptionsX{onecolumn} -\ProcessOptionsX - - \RequirePackage{xcolor} -\definecolor{shrimp}{RGB}{255,90,95} % shrimpositionality pink - +\RequirePackage{hyperref} +% \end{macrocode} +% +% Setup page geometry. +% \begin{macrocode} +\geometry{ + margin=3cm, +} +% \end{macrocode} +% +% Setup hyperlink decorations. +% \begin{macrocode} +\hypersetup{ + colorlinks=true, + allcolors=shrimp, +} +% \end{macrocode} +% +% Define brand color. +% \begin{macrocode} +\definecolor{shrimp}{RGB}{255,90,95} +% \end{macrocode} +% +% Set sectioning styles. +% \begin{macrocode} \titleformat{\section}[hang] {\normalfont\Large\sffamily}{\thesection}{1em}{} \titleformat{\subsection}[hang] @@ -121,18 +153,29 @@ \titleformat{\paragraph}[runin] {\normalfont\normalsize\sffamily}{}{1em}{}[.] % \end{macrocode} -% This generates contents for headers and footers of the first page +% +% Compute contents of header and footer of first page. % \begin{macrocode} -\tl_new:N \l_shrimp_rhead_content -\tl_set:Nn \l_shrimp_rhead_content { \color{shrimp}\sffamily Volume~\tl_use:N \l_shrimp_volume_tl,~Issue~\tl_use:N \l_shrimp_issue_tl } - -\tl_const:Nn \l_shrimp_doi { 10.32408/compositionality-\tl_use:N \l_shrimp_volume_tl-\tl_use:N \l_shrimp_issue_tl } +\tl_const:Nn \l_shrimp_rhead_content + { + \color{shrimp} \sffamily + Volume ~ + \tl_use:N \l_shrimp_volume_tl + , ~ Issue ~ + \tl_use:N \l_shrimp_issue_tl + } -\tl_new:N \l_shrimp_lfoot_content -\tl_set:Nn \l_shrimp_lfoot_content { \color{shrimp}\sffamily Accepted~in~Compositionality~on~\tl_use:N \l_shrimp_accepted_tl.~ -doi:\tl_use:N \l_shrimp_doi} +\tl_const:Nn \l_shrimp_lfoot_content + { + \color{shrimp} \sffamily + Accepted ~ in ~ Compositionality ~ on ~ + \tl_use:N \l_shrimp_accepted_tl + . ~ doi: + \tl_use:N \l_shrimp_doi + } % \end{macrocode} -% This takes care of headers and footers using \pkg{fancyhdr}; +% +% Setup \verb|fancy| page style. % \begin{macrocode} \lhead{} \chead{} @@ -140,14 +183,24 @@ doi:\tl_use:N \l_shrimp_doi} \lfoot{\ifnum\value{page}>1\else\l_shrimp_lfoot_content\fi} \cfoot{} \rfoot{\color{shrimp}\sffamily\thepage} +% \end{macrocode} +% +% Hide header rule and fit footer rule to page width. +% \begin{macrocode} \let\headrule\relax \let\footrulewidth\headrulewidth - +% \end{macrocode} +% +% Define \verb|plain| page style as clone of \verb|fancy| to handle first page. +% \begin{macrocode} \pagestyle{fancy} \fancypagestyle{plain}{} - % \end{macrocode} % +% Temporary hack awaiting override of \verb|\maketitle|. +% \begin{macrocode} +\AtBeginDocument{\let\abstractname\relax} +% \end{macrocode} % % \iffalse % From bf9b0b719bff00917c942c179b1ebc54cc578d2a Mon Sep 17 00:00:00 2001 From: Paolo Brasolin Date: Thu, 28 Dec 2023 14:57:07 +0100 Subject: [PATCH 04/34] Implement basic metadata features --- compositionalityarticle.dtx | 111 ++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 99c8cfa..4531922 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -200,6 +200,117 @@ % Temporary hack awaiting override of \verb|\maketitle|. % \begin{macrocode} \AtBeginDocument{\let\abstractname\relax} +% \end{macrocode} +% +% \begin{macrocode} + +\seq_new:N \g_@@_authors_seq +\seq_new:N \g_@@_affiliation_seq +\seq_new:N \g_@@_email_seq +\seq_new:N \g_@@_orcid_seq +\seq_new:N \g_@@_webpage_seq +\seq_new:N \g_@@_thanks_seq + +\RenewDocumentCommand{\author}{m}{ + \seq_gput_right:Nn \g_@@_authors_seq {#1} +} + +\NewDocumentCommand{\affiliation}{m}{ + \seq_put_right:Nn \g_@@_affiliation_seq {#1} +} + +\NewDocumentCommand{\email}{m}{ + \seq_put_right:Nn \g_@@_email_seq {#1} +} + +\NewDocumentCommand{\orcid}{m}{ + \seq_put_right:Nn \g_@@_orcid_seq {#1} +} + +\NewDocumentCommand{\homepage}{m}{ + \seq_put_right:Nn \g_@@_webpage_seq {#1} +} + +\RenewDocumentCommand{\thanks}{m}{ + \seq_put_right:Nn \g_@@_thanks_seq {#1} +} + +\cs_new:Nn \@@_print_title_authors: { + \group_begin: + \sffamily\large + \int_step_inline:nn { \seq_count:N \g_@@_authors_seq } { + \seq_item:Nn \g_@@_authors_seq { ##1 } + \textsuperscript { \int_to_arabic:n { ##1 } } + \int_compare:nNnTF { ##1 + 1 } = { \seq_count:N \g_@@_authors_seq } { , ~ and ~ } { } + \int_compare:nNnTF { ##1 + 1 } < { \seq_count:N \g_@@_authors_seq } { , ~ } { } + } + \group_end: +} + +\cs_new:Nn \@@_print_title_affiliations: { + \group_begin: + \sffamily\small\color{gray} + \int_step_inline:nn { \seq_count:N \g_@@_authors_seq } { + \textsuperscript { \int_to_arabic:n { ##1 } } + \seq_item:Nn \g_@@_affiliation_seq { ##1 } + \par + } + \group_end: +} + +\cs_new:Nn \@@_print_title_footnotes: { + \group_begin: + \let\thefootnote\relax + \int_step_inline:nn { \seq_count:N \g_@@_authors_seq } { + + \seq_clear:N \l_tmpa_seq + + \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \g_@@_email_seq { ##1 } } + \tl_if_empty:NTF \l_tmpa_tl {} { + \seq_put_right:Nx \l_tmpa_seq { + \exp_not:N \href { mailto: \tl_use:N \l_tmpa_tl } { \tl_use:N \l_tmpa_tl } + } + } + + \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \g_@@_webpage_seq { ##1 } } + \tl_if_empty:NTF \l_tmpa_tl {} { + \seq_put_right:Nx \l_tmpa_seq { + \exp_not:N \href { \tl_use:N \l_tmpa_tl } { \tl_use:N \l_tmpa_tl } + } + } + + \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \g_@@_orcid_seq { ##1 } } + \tl_if_empty:NTF \l_tmpa_tl {} { + \seq_put_right:Nx \l_tmpa_seq { + \exp_not:N \href + { https://orcid.org/\tl_use:N \l_tmpa_tl } + { + \lower0.3ex\hbox{\includegraphics[height=2ex]{ORCIDiD_iconvector.pdf}}\thinspace + \tl_use:N \l_tmpa_tl + } + } + } + + \footnotetext{ + \sffamily + \seq_item:Nn \g_@@_authors_seq { ##1 }:~ + \seq_use:Nn \l_tmpa_seq { ,~ } + \seq_if_empty:NF \l_tmpa_seq {} {.} + \seq_item:Nn \g_@@_thanks_seq { ##1 } + } + } + \group_end: +} + +\NewDocumentCommand{\printtitlestuff}{}{ + \@@_print_title_authors: + \par\hrulefill\par + \@@_print_title_affiliations: + \par\hrulefill\par + \@@_print_title_footnotes: + \par\hrulefill\par +} + % \end{macrocode} % % \iffalse From 14f210399b86f262b8ffc93477d9402086b0df2c Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Wed, 15 May 2024 12:30:58 +0300 Subject: [PATCH 05/34] draft \maketitle --- compositionalityarticle-doc-new.tex | 46 +- compositionalityarticle.cls | 1641 +++------------------------ compositionalityarticle.dtx | 27 +- old-compositionalityarticle.cls | 1510 ++++++++++++++++++++++++ 4 files changed, 1713 insertions(+), 1511 deletions(-) create mode 100644 old-compositionalityarticle.cls diff --git a/compositionalityarticle-doc-new.tex b/compositionalityarticle-doc-new.tex index c83b31f..29e9b4b 100644 --- a/compositionalityarticle-doc-new.tex +++ b/compositionalityarticle-doc-new.tex @@ -13,34 +13,34 @@ % commands che danno errore \newenvironment{widetext}{}{} -\let\affiliation\relax -\let\email\relax -\let\orcid\relax -\let\homepage\relax +% \let\affiliation\relax +% \let\email\relax +% \let\orcid\relax +% \let\homepage\relax \newtheorem{theorem}{Theorem} \begin{document} \title{Template demonstrating the compositionalityarticle class} -% \date{} -% \author{Brendan Fong} -% \email{latex@compositionality-journal.org} -% \homepage{http://compositionality-journal.org} -% \orcid{0000-0003-0290-4698} -% \thanks{You can use the \texttt{\string\email}, \texttt{\string\homepage}, \texttt{\string\orcid}, and \texttt{\string\thanks} commands to add additional information for the preceding \texttt{\string\author}. If applicable, this can also be used to indicate that a work has previously been published in conference proceedings.} -% \affiliation{MIT, Mathematics Department, Boston, USA} -% \author{Nina Otter} -% \email{latex@compositionality-journal.org} -% \orcid{0000-0002-3578-1420} -% \affiliation{UCLA, Mathematics Department, Los Angeles, USA} -% \author{Joshua Tan} -% \email{latex@compositionality-journal.org} -% \orcid{0000-0001-5317-4782} -% \affiliation{University of Oxford, Computer Science Department, -% Oxford, UK} -\maketitle - - +\date{} +\author{Brendan Fong} +\email{latex@compositionality-journal.org} +\homepage{http://compositionality-journal.org} +\orcid{0000-0003-0290-4698} +\thanks{You can use the \texttt{\string\email}, \texttt{\string\homepage}, \texttt{\string\orcid}, and \texttt{\string\thanks} commands to add additional information for the preceding \texttt{\string\author}. If applicable, this can also be used to indicate that a work has previously been published in conference proceedings.} +\affiliation{MIT, Mathematics Department, Boston, USA} +\author{Nina Otter} +\email{latex@compositionality-journal.org} +\orcid{0000-0002-3578-1420} +\affiliation{UCLA, Mathematics Department, Los Angeles, USA} +\author{Joshua Tan} +\email{latex@compositionality-journal.org} +\orcid{0000-0001-5317-4782} +\affiliation{University of Oxford, Computer Science Department, + Oxford, UK} + +% \maketitle +\printtitlestuff \begin{abstract} In the standard \texttt{onecolumn} layout diff --git a/compositionalityarticle.cls b/compositionalityarticle.cls index f077e05..cdb646a 100644 --- a/compositionalityarticle.cls +++ b/compositionalityarticle.cls @@ -1,1510 +1,201 @@ %% %% This is file `compositionalityarticle.cls', -%% it provides the compositionalityarticle class for typesetting articles in -%% Compositionality - the open journal for the mathematics of composition +%% generated with the docstrip utility. %% -%% Copyright 2018, 2019, 2020 -%% https://compositionality-journal.org +%% The original source files were: %% -%% It is derived from `article.cls' available from -%% https://www.ctan.org/pkg/article +%% compositionalityarticle.dtx (with options: `package') +%% +%% ============================================================================= %% -%% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. +%% compositionality () %% -\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\def\compositionalityarticleversion{2.1} -\ProvidesClass{compositionalityarticle} -[2020/05/01 v\compositionalityarticleversion -class for Compositionality - the open journal for the mathematics of composition (https://compositionality-journal.org)] -\RequirePackage{xkeyval} -\RequirePackage{etoolbox} -\RequirePackage{graphicx} -\DeclareGraphicsExtensions{.pdf,.jpeg,.png,.eps} -\newcommand*\@ptsize{} - -\newtoggle{@restonecol} -\newtoggle{@titlepage} -\togglefalse{@titlepage} - -\newtoggle{@papersizespecified} -\togglefalse{@papersizespecified} - -\DeclareOptionX{a4paper} -{ - \setlength\paperheight{297mm}% - \setlength\paperwidth{210mm} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{a5paper} -{ - \setlength\paperheight {210mm}% - \setlength\paperwidth {148mm} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{b5paper} -{ - \setlength\paperheight {250mm}% - \setlength\paperwidth {176mm} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{letterpaper} -{ - \setlength\paperheight {11in}% - \setlength\paperwidth {8.5in} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{legalpaper} -{ - \setlength\paperheight {14in}% - \setlength\paperwidth {8.5in} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{executivepaper} -{ - \setlength\paperheight {10.5in}% - \setlength\paperwidth {7.25in} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{landscape} -{ - \setlength\@tempdima {\paperheight}% - \setlength\paperheight {\paperwidth}% - \setlength\paperwidth {\@tempdima} -} - -\DeclareOptionX{10pt}{\renewcommand*\@ptsize{0}} -\DeclareOptionX{11pt}{\renewcommand*\@ptsize{1}} -\DeclareOptionX{12pt}{\renewcommand*\@ptsize{2}} - -\DeclareOptionX{oneside}{\boolfalse{@twoside}\boolfalse{@mparswitch}} -\DeclareOptionX{twoside}{\booltrue{@twoside}\booltrue{@mparswitch}} - -\DeclareOptionX{draft}{\setlength\overfullrule{5pt}} -\DeclareOptionX{final}{\setlength\overfullrule{0pt}} - -\DeclareOptionX{titlepage}{\toggletrue{@titlepage}} -\DeclareOptionX{notitlepage}{\togglefalse{@titlepage}} - -\DeclareOptionX{onecolumn}{\boolfalse{@twocolumn}} -\DeclareOptionX{twocolumn}{\booltrue{@twocolumn}} - -\DeclareOptionX{leqno}{\input{leqno.clo}} -\DeclareOptionX{fleqn}{\input{fleqn.clo}} -\DeclareOptionX{openbib}{% - \AtEndOfPackage{% - \renewcommand\@openbib@code{% - \advance\leftmargin\bibindent - \itemindent -\bibindent - \listparindent \itemindent - \parsep \z@ - }% - \renewcommand\newblock{\par}}% -} - -%declare some dummy options for compatibility -\DeclareOptionX{checkin}{} -\DeclareOptionX{preprint}{} -\DeclareOptionX{reprint}{} -\DeclareOptionX{manuscript}{} -\DeclareOptionX{noshowpacs}{} -\DeclareOptionX{showpacs}{} -\DeclareOptionX{showkeys}{} -\DeclareOptionX{noshowkeys}{} -\DeclareOptionX{balancelastpage}{} -\DeclareOptionX{nobalancelastpage}{} -\DeclareOptionX{nopreprintnumbers}{} -\DeclareOptionX{preprintnumbers}{} -\DeclareOptionX{hyperref}{} -\DeclareOptionX{bibnotes}{} -\DeclareOptionX{nobibnotes}{} -\DeclareOptionX{footinbib}{} -\DeclareOptionX{nofootinbib}{} -\DeclareOptionX{altaffilletter}{} -\DeclareOptionX{altaffilsymbol}{} -\DeclareOptionX{superbib}{} -\DeclareOptionX{citeautoscript}{} -\DeclareOptionX{longbibliography}{} -\DeclareOptionX{nolongbibliography}{} -\DeclareOptionX{eprint}{} -\DeclareOptionX{noeprint}{} -\DeclareOptionX{author-year}{} -\DeclareOptionX{numerical}{} -\DeclareOptionX{galley}{} -\DeclareOptionX{raggedbottom}{} -\DeclareOptionX{tightenlines}{} -\DeclareOptionX{lengthcheck}{} -\DeclareOptionX{reprint}{} -\DeclareOptionX{eqsecnum}{} -\DeclareOptionX{secnumarabic}{} -\DeclareOptionX{floats}{} -\DeclareOptionX{stfloats}{} -\DeclareOptionX{endfloats}{} -\DeclareOptionX{endfloats*}{} -\DeclareOptionX{osa}{} -\DeclareOptionX{osameet}{} -\DeclareOptionX{opex}{} -\DeclareOptionX{tops}{} -\DeclareOptionX{josa}{} - -\newtoggle{@amsfonts} -\togglefalse{@amsfonts} -\DeclareOptionX{amsfonts}{\toggletrue{@amsfonts}} -\DeclareOptionX{noamsfonts}{} - -\newtoggle{@amssymb} -\togglefalse{@amssymb} -\DeclareOptionX{amssymb}{\toggletrue{@amssymb}} -\DeclareOptionX{amssymbol}{\toggletrue{@amssymb}} -\DeclareOptionX{noamssymb}{} - -\newtoggle{@amsmath} -\togglefalse{@amsmath} -\DeclareOptionX{amsmath}{\toggletrue{@amsmath}} -\DeclareOptionX{noamsmath}{} - -\DeclareOptionX{byrevtex}{} -\DeclareOptionX{floatfix}{} -\DeclareOptionX{nofloatfix}{} -\DeclareOptionX{ltxgridinfo}{} -\DeclareOptionX{outputdebug}{} -\DeclareOptionX{raggedfooter}{} -\DeclareOptionX{noraggedfooter}{} -\DeclareOptionX{frontmatterverbose}{} -\DeclareOptionX{linenumbers}{} -\DeclareOptionX{nomerge}{} -\DeclareOptionX{hypertext}{} -\DeclareOptionX{frontmatterverbose}{} -\DeclareOptionX{inactive}{} -\DeclareOptionX{groupedaddress}{} -\DeclareOptionX{unsortedaddress}{} -\DeclareOptionX{runinaddress}{} -\DeclareOptionX{superscriptaddress}{} - -\newtoggle{@unpublished} -\togglefalse{@unpublished} -\DeclareOptionX{unpublished}{\toggletrue{@unpublished}} - -\newtoggle{@accepted} -\togglefalse{@accepted} -\DeclareOptionX{accepted}[]{\ifstrempty{#1}{}{\def\@accepteddate{#1}}\toggletrue{@accepted}\togglefalse{@unpublished}} - -\newtoggle{@revtexcompatibility} -\togglefalse{@revtexcompatibility} -\DeclareOptionX{shorttitle}[]{\def\@shorttitle{#1}} -\DeclareOptionX{issue}[]{\def\@issue{#1}} -\DeclareOptionX{volume}[]{\def\@volume{#1}} -\DeclareOptionX{aps}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{pra}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{prb}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{pre}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{prl}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{prx}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{aip}{\toggletrue{@revtexcompatibility}} - -\newtoggle{@allowfontchangeintitle} -\togglefalse{@allowfontchangeintitle} -\DeclareOptionX{allowfontchangeintitle}{\toggletrue{@allowfontchangeintitle}} - -\newtoggle{@nopdfoutputerror} -\togglefalse{@nopdfoutputerror} -\DeclareOptionX{nopdfoutputerror}{\toggletrue{@nopdfoutputerror}} - -%remind people not to use \today on the arxiv -\newtoggle{@allowtoday} -\togglefalse{@allowtoday} -\DeclareOptionX{allowtoday}{\toggletrue{@allowtoday}} - -% set date to be empty as a default, otherwise latex will fill it with \@today which triggers the allowtoday error -\date{} - -\newtoggle{@noarxiv} -\togglefalse{@noarxiv} -\DeclareOptionX{noarxiv} -{ - \ExecuteOptionsX{a4paper,allowtoday,allowfontchangeintitle,nopdfoutputerror,unpublished} - \toggletrue{@noarxiv} -} - - -\ExecuteOptionsX{10pt,oneside,twocolumn,notitlepage,final} -\ProcessOptionsX -% Throw an error if no paper size was manually specified -% Simply defaulting to a4paper gives inconsistent behaviour when submitting to the arXiv as the arXiv seems to sometimes set a4paper and sometimes letterpaper, maybe depending on the geographic region of the submitter? -\iftoggle{@papersizespecified} -{ -} -{ - \setlength\paperheight {297mm}% - \setlength\paperwidth {210mm}% - \iftoggle{@noarxiv}{}{% - \ClassError{compositionalityarticle}{Please explicitly specify a paper size. Available options: a4paper, a5paper, b5paper, letterpaper, legalpaper, executivepaper. Not specifying a paper size can lead to inconsistent behavior when the manuscript is typeset by the arXiv. This error can be turned off by giving the noarxiv class option}{} - }% -} - -\input{size1\@ptsize.clo} - -%we patch the \usepackage command to enable the blacklisting of packages and to throw an error if \pdfoutput=1 was not included in the document before the first usepackage -\csdef{@packageblacklist}{} -\newcommand*{\@blacklistpackage}[2][]{ - \listxadd{\@packageblacklist}{#2}% - \ifstrempty{#1}{}{\csdef{@packageblacklisterrormessage#2}{#1 \string\usepackage{#2}}} -} - -\let\oldusepackage\usepackage -\renewcommand*{\usepackage}[2][]{ - \iftoggle{@nopdfoutputerror} - {% +%% ============================================================================= +\RequirePackage{expl3}[2023/05/11] +\RequirePackage{l3keys2e} +\RequirePackage{xparse} +\RequirePackage{lmodern} +\ProvidesExplClass +{compositionality} +{} +{} +{The Compositionality article class} +\keys_define:nn { shrimp } +{ + accepted .tl_set:N = \l_shrimp_accepted_tl, + volume .tl_set:N = \l_shrimp_volume_tl, + issue .tl_set:N = \l_shrimp_issue_tl, +} + +\ProcessKeysOptions { shrimp } +\tl_const:Nn \l_shrimp_doi + { + 10.32408/compositionality- + \tl_use:N \l_shrimp_volume_tl + - + \tl_use:N \l_shrimp_issue_tl } +\LoadClass{article} +\RequirePackage{amsmath} +\RequirePackage{amsfonts} +\RequirePackage{amssymb} +\RequirePackage{geometry} +\RequirePackage{titlesec} +\RequirePackage{fancyhdr} +\RequirePackage{xcolor} +\RequirePackage{hyperref} +\geometry{ + margin=3cm, +} +\hypersetup{ + colorlinks=true, + allcolors=shrimp, +} +\definecolor{shrimp}{RGB}{255,90,95} +\titleformat{\section}[hang] + {\normalfont\Large\sffamily}{\thesection}{1em}{} +\titleformat{\subsection}[hang] + {\normalfont\large\sffamily}{\thesubsection}{1em}{} +\titleformat{\subsubsection}[hang] + {\normalfont\normalsize\sffamily}{\thesubsubsection}{1em}{} +\titleformat{\paragraph}[runin] + {\normalfont\normalsize\sffamily}{}{1em}{}[.] +\tl_const:Nn \l_shrimp_rhead_content { - \def\@pdfoutputerror{\ClassError{compositionalityarticle}{As suggested by the arXiv (https://arxiv.org/help/submit_tex), please add \string\pdfoutput=1 within the first 5 lines of the preamble of your main LaTeX file and before the first \string\usepackage command. Without this, the arXiv compiles your document with latex instead of pdflatex and hyperlinks in the bibliography broken over several lines will not work properly. See https://tex.stackexchange.com/questions/182523/publishing-to-arxiv-with-hyperlinks for more information. If you still want to use standard latex (for example because you depend on psfrag) instead of pdflatex despite this problem, you can disable this error by giving the nopdfoutputerror option to compositionalityarticle. In this case please check carefully that the links in the version of your document typeset on the arXiv, especially those in the bibliography, work properly}{}%see also https://tex.stackexchange.com/questions/341466/latex-macros-in-classwarning-or-classerror for why \string is necessary - } - \ifcsdef{pdfoutput}% - {% - \ifnumequal{\pdfoutput}{1} - {} - {\@pdfoutputerror}% - } - {% - \@pdfoutputerror% - } + \color{shrimp} \sffamily + Volume ~ + \tl_use:N \l_shrimp_volume_tl + , ~ Issue ~ + \tl_use:N \l_shrimp_issue_tl } - \ifinlist{#2}{\@packageblacklist}{ - \ifcsdef{@packageblacklisterrormessage#2}{ - \ClassError{compositionalityarticle}{\csname @packageblacklisterrormessage#2\endcsname}{}}{} - }{\oldusepackage[#1]{#2}} -} - -\@blacklistpackage{titlesec} - -\ifbool{@twocolumn} - {\RequirePackage[margin=2cm,bottom=3cm]{geometry}} - {\RequirePackage[margin=3cm,bottom=3cm]{geometry}} - -\@blacklistpackage{geometry} -\setlength\lineskip{1\p@} -\setlength\normallineskip{1\p@} -\renewcommand*\baselinestretch{} -\setlength\parskip{0\p@ \@plus \p@} -\@lowpenalty 51 -\@medpenalty 151 -\@highpenalty 301 - -\AfterEndPreamble{ - % avoid use of today - \ifcsdef{today} - { - \iftoggle{@allowtoday} - { - \let\oldtoday\today - \renewcommand*{\today}{\oldtoday\ClassWarning{compositionalityarticle}{If you intend to upload your manuscript to the arXiv, please manually replace any use of \string\today with the upload date. The arXiv typesets manuscripts on-demand, thus the output of \string\today may change over time}{}} - } % else - { - \renewcommand*{\today}{\ClassError{compositionalityarticle}{If you intend to upload your manuscript to the arXiv, please manually replace any use of \string\today with the upload date. The arXiv typesets manuscripts on-demand, thus the output of \string\today may change over time. If you do not intend to upload your manuscript to the arXiv, you may use the class option noarxiv or turn off this error by means of the allowtoday option}{}} - } - } - {} -} - - -% this was only loaded at begin document, -% but it needs to come before some user-invoked symbol fonts, eg MnSymbol.sty -% so now loading immediately (JG, 2020-08-14) - % avoid bitmap fonts by loading lmodern or at least checking for cm-super - \IfFileExists{lmodern.sty}{ - \RequirePackage{lmodern} - }{ - \IfFileExists{type1ec.sty}{}{ - \iftoggle{@noarxiv}{}{% - \ClassError{compositionalityarticle}{Either the lmodern or the cm-super package are required by compositionalityarticle in order to produce high quality pdf output. Please install the lmodern package, or, if this is not possible, the cm-super package. You can turn off this error message by giving the noarxiv class option}{} - } - } - } -\AtBeginDocument{ - % Define a revtex-style openone symbol - \IfFileExists{bbm.sty}{ - \RequirePackage{bbm} - \DeclareRobustCommand\openone{\mathbbm{1}} - }{ - \IfFileExists{dsfont.sty}{ - \RequirePackage{dsfont} - \DeclareRobustCommand\openone{\mathds{1}} - }{ - % This uses a similar technique to {revtex4-1}'s openone, - % namely two overstruck numeral 1s, but implemented using mboxes - % and math kerning as suggested by The Comprehensive LaTeX Symbol List. - \DeclareRobustCommand\openone{{\mbox{\small1}\mkern-5.5mu1}} - } - } - \RequirePackage{xcolor} - \definecolor{compositionalitypink}{RGB}{255,90,95}%compositionality pink - \definecolor{compositionalitydarkpink}{RGB}{255,70,76}%compositionality dark pink - \definecolor{compositionalitygray}{HTML}{555555} %compositionality gray -} - -\RequirePackage{ltxcmds} - -\let\origif@twocolumn\if@twocolumn -\def\class@name{ltxutil}%get rid of "You should define the class name before reading in this package. Using default" warning from ltxutils which is loaded by ltxgrid -\if@twocolumn - \RequirePackage{ltxgrid}%ltxgrid should be loaded before etoolbox, otherwise terrible things can happen: https://tex.stackexchange.com/questions/343856/biblatex-produces-incomplete-bcf-with-biber-backend?noredirect=1#comment843815_343856 but if this is actually done, even more terrible things happen, so we partially repair what ltxgrid messes up below... - \newcommand*{\twocolumn}[1][]{#1\twocolumngrid} - \newcommand*{\onecolumn}{\onecolumngrid} -\fi -\let\if@twocolumn\origif@twocolumn - -\let\col@number\@colnum - -\ltx@ifpackageloaded{ltxgrid}{ - %repair what ltxutils has destroyed (see https://tex.stackexchange.com/questions/343856/biblatex-produces-incomplete-bcf-with-biber-backend) - \patchcmd\enddocument - {\deadcycles} - {\let\AfterEndDocument\@firstofone - \@afterenddocumenthook - \deadcycles} - {} - {\AtEndDocument{% - \let\etb@@end\@@end - \def\@@end{% - \let\AfterEndDocument\@firstofone - \@afterenddocumenthook - \etb@@end}}} -}{} - -\setcounter{topnumber}{2} -\renewcommand*\topfraction{.7} -\setcounter{bottomnumber}{1} -\renewcommand*\bottomfraction{.3} -\setcounter{totalnumber}{3} -\renewcommand*\textfraction{.2} -\renewcommand*\floatpagefraction{.5} -\setcounter{dbltopnumber}{2} -\renewcommand*\dbltopfraction{.7} -\renewcommand*\dblfloatpagefraction{.5} - -\ifbool{@twoside}{ - \def\ps@headings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\thepage\hfil\slshape\leftmark}% - \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% - \let\@mkboth\markboth - \def\sectionmark##1{% - \markboth {\MakeUppercase{% - \ifnumgreater{\c@secnumdepth}{\z@}{\thesection\quad}{} - ##1}}{}}% - \def\subsectionmark##1{% - \markright {% - \ifnumgreater{\c@secnumdepth}{\@ne}{\thesubsection\quad}{} - ##1}}}% - }{ - \def\ps@headings{% - \let\@oddfoot\@empty - \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% - \let\@mkboth\markboth - \def\sectionmark##1{% - \markright {\MakeUppercase{% - \ifnumgreater{\c@secnumdepth}{\m@ne}{\thesection\quad}{} - ##1}}}}% -} - -\def\ps@myheadings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\thepage\hfil\slshape\leftmark}% - \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% - \let\@mkboth\@gobbletwo - \let\sectionmark\@gobble - \let\subsectionmark\@gobble -} - -\iftoggle{@titlepage} -{ - \newcommand\maketitle{\begin{titlepage}% - % \let\footnotesize\small - \let\footnoterule\relax - \let \footnote \thanks - \null\vfil - \vskip 60\p@ - \begin{center}% - \@maketitle - \end{center}\par - % \@thanks - \vfil\null - \end{titlepage}% - \setcounter{footnote}{0}% - \global\let\thanks\relax - \global\let\maketitle\relax - \global\let\@maketitle\relax - % \global\let\@thanks\@empty - % \global\let\@author\@empty - % \global\let\@date\@empty - % \global\let\@title\@empty - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\and\relax - } -} -{ - \newcommand\maketitle{\par - \begingroup - \renewcommand\thefootnote{\@fnsymbol\c@footnote}% - \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% - \long\def\@makefntext##1{\parindent 1em\noindent - \hb@xt@1.8em{% - \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% - \ifbool{@twocolumn} - {\ifnumequal{\col@number}{\@ne}{\@maketitle}{\twocolumn[\@maketitle]}} - {\global\@topnum\z@ % Prevents figures from going at top of page. - \@maketitle} - \thispagestyle{fancy}%\@thanks - \endgroup - \setcounter{footnote}{0}% - \global\let\thanks\relax - \global\let\maketitle\relax - \global\let\@maketitle\relax - % \global\let\@thanks\@empty - % \global\let\@author\@empty - % \global\let\@date\@empty - % \global\let\@title\@empty - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\and\relax - } -} - -\def\@maketitle{% - \sffamily - \null - \let \footnote \thanks - \noindent% - \begin{minipage}{\textwidth}% - \iftoggle{@titlepage}{\centering}{}% - \noindent{\huge\hyphenpenalty=5000 \@printtitle\par}% - \end{minipage}% - \vskip 1.5em% - \noindent\@printauthors - \vskip 1em% - \noindent\@printaffiliations - \vskip 0em% - \ifdefempty{\@date}{}{\noindent{\footnotesize\color{compositionalitygray}\@date}}% - \par - \vskip 1.5em - \makeatletter% - \begingroup - \hypersetup{% - pdftitle={\detokenize\expandafter{\@title}}, - pdfauthor={\@authorsonly}, - pdfkeywords={\@keywords}, - pdfcreator={LaTeX with hyperref package and class compositionalityarticle \csname ver@compositionalityarticle.cls\endcsname}, - }% - \endgroup - \makeatother% -} - -\setcounter{secnumdepth}{3} -\newcounter {part} -\newcounter {section} -\newcounter {subsection}[section] -\newcounter {subsubsection}[subsection] -\newcounter {paragraph}[subsubsection] -\newcounter {subparagraph}[paragraph] -\renewcommand*\thepart {\@Roman\c@part} -\renewcommand*\thesection {\@arabic\c@section} -\renewcommand*\thesubsection {\thesection.\@arabic\c@subsection} -\renewcommand*\thesubsubsection{\thesubsection.\@arabic\c@subsubsection} -\renewcommand*\theparagraph {\thesubsubsection.\@arabic\c@paragraph} -\renewcommand*\thesubparagraph {\theparagraph.\@arabic\c@subparagraph} -\newcommand\part{% - \ifbool{@noskipsec}{\leavevmode}{} - \par - \addvspace{4ex}% - \boolfalse{@afterindent} - \secdef\@part\@spart} - -\def\@part[#1]#2{% -\ifnumgreater{\c@secnumdepth}{\m@ne} - {\refstepcounter{part}\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}} - {\addcontentsline{toc}{part}{#1}} -{\parindent \z@ \raggedright -\interlinepenalty \@M -\normalfont -\ifnumgreater{\c@secnumdepth}{\m@ne}{\Large\bfseries \partname\nobreakspace\thepart\par\nobreak}{} -\huge \bfseries #2% -\markboth{}{}\par}% -\nobreak -\vskip 3ex -\@afterheading% -} - -\def\@spart#1{% - {\parindent \z@ \raggedright - \interlinepenalty \@M - \normalfont - \huge \bfseries #1\par}% - \nobreak - \vskip 3ex - \@afterheading} - -\newcommand*\section{\@startsection {section}{1}{\z@}% - {-3.5ex \@plus -1ex \@minus -.2ex}% - {2.3ex \@plus.2ex}% - {\normalfont\Large\sffamily}} - -\newcommand*\subsection{\@startsection{subsection}{2}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\normalfont\large\sffamily}} - -\newcommand*\subsubsection{\@startsection{subsubsection}{3}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\normalfont\normalsize\sffamily}} - -\newcommand*\paragraph{\@startsection{paragraph}{4}{\z@}% - {3.25ex \@plus1ex \@minus.2ex}% - {-1em}% - {\normalfont\normalsize\bfseries}} - -\newcommand*\subparagraph{\@startsection{subparagraph}{5}{\parindent}% - {3.25ex \@plus1ex \@minus .2ex}% - {-1em}% - {\normalfont\normalsize\bfseries}} - -\ifbool{@twocolumn}{\setlength\leftmargini{2em}}{\setlength\leftmargini{2.5em}} -\leftmargin \leftmargini -\setlength\leftmarginii {2.2em} -\setlength\leftmarginiii {1.87em} -\setlength\leftmarginiv {1.7em} - -\ifbool{@twocolumn}{ - \setlength\leftmarginv {.5em} - \setlength\leftmarginvi {.5em} -}{ - \setlength\leftmarginv {1em} - \setlength\leftmarginvi {1em} -} -\setlength \labelsep {.5em} -\setlength \labelwidth{\leftmargini} -\addtolength\labelwidth{-\labelsep} -\@beginparpenalty -\@lowpenalty -\@endparpenalty -\@lowpenalty -\@itempenalty -\@lowpenalty -\renewcommand*\theenumi{\@arabic\c@enumi} -\renewcommand*\theenumii{\@alph\c@enumii} -\renewcommand*\theenumiii{\@roman\c@enumiii} -\renewcommand*\theenumiv{\@Alph\c@enumiv} -\newcommand*\labelenumi{\theenumi.} -\newcommand*\labelenumii{(\theenumii)} -\newcommand*\labelenumiii{\theenumiii.} -\newcommand*\labelenumiv{\theenumiv.} -\renewcommand*\p@enumii{\theenumi} -\renewcommand*\p@enumiii{\theenumi(\theenumii)} -\renewcommand*\p@enumiv{\p@enumiii\theenumiii} -\newcommand*\labelitemi{\textbullet} -\newcommand*\labelitemii{\normalfont\bfseries \textendash} -\newcommand*\labelitemiii{\textasteriskcentered} -\newcommand*\labelitemiv{\textperiodcentered} -\newenvironment{description} -{\list{}{\labelwidth\z@ \itemindent-\leftmargin - \let\makelabel\descriptionlabel}} -{\endlist} -\newcommand*\descriptionlabel[1]{\hspace\labelsep - \normalfont\bfseries #1} - -\iftoggle{@titlepage} -{ - \newenvironment{abstract}{% - \ifdefempty{\maketitle}{\relax{}}{\maketitle} - \titlepage - \null\vfil - \thispagestyle{empty}% - \@beginparpenalty\@lowpenalty - \begin{center}% - \bfseries \abstractname - \@endparpenalty\@M - \end{center}}% - {\par\vfil\null\newpage\endtitlepage} -}{ - \newenvironment{abstract}{% - \ifdefempty{\maketitle}{\relax{}}{\maketitle}% - \ifbool{@twocolumn}{\bf}{\vskip 1em \quotation}\noindent\ignorespaces - }% - { - \ifbool{@twocolumn}{}{\endquotation\vskip 2em} - }% -} - -\newenvironment{verse} -{\let\\\@centercr - \list{}{\itemsep \z@ - \itemindent -1.5em% - \listparindent\itemindent - \rightmargin \leftmargin - \advance\leftmargin 1.5em}% - \item\relax} -{\endlist} - -\newenvironment{quotation} -{\list{}{\listparindent 1.5em% - \itemindent \listparindent - \rightmargin \leftmargin - \parsep \z@ \@plus\p@}% - \item\relax} -{\endlist} - -\newenvironment{quote} -{\list{}{\rightmargin\leftmargin}% - \item\relax} -{\endlist} - -\newenvironment{titlepage} -{% - \ifbool{@twocolumn} - {\toggletrue{@restonecol}\onecolumn\newpage} - {\togglefalse{@restonecol}\newpage} - \thispagestyle{empty}% - \setcounter{page}\@ne -}{% - \iftoggle{@restonecol} - {\twocolumn} - {\newpage} - \ifbool{@twoside}{}{\setcounter{page}\@ne} -} - - - -\newcommand{\appendix}[1]{% - \setcounter{section}{0}% - \setcounter{subsection}{0}% - \gdef\thesection{\@Alph\c@section} - \section*{\appendixname}% - #1% -} -\setlength\arraycolsep{5\p@} -\setlength\tabcolsep{6\p@} -\setlength\arrayrulewidth{.4\p@} -\setlength\doublerulesep{2\p@} -\setlength\tabbingsep{\labelsep} -\skip\@mpfootins = \skip\footins -\setlength\fboxsep{3\p@} -\setlength\fboxrule{.4\p@} -\renewcommand*\theequation {\@arabic\c@equation} -\newcounter{figure} -\renewcommand*\thefigure {\@arabic\c@figure} -\def\fps@figure{tbp} -\def\ftype@figure{1} -\def\ext@figure{lof} -\def\fnum@figure{\figurename\nobreakspace\thefigure} - -\newenvironment{figure} -{\@float{figure}} -{\end@float} - -\newenvironment{figure*} -{\@dblfloat{figure}} -{\end@dblfloat} - -\newcounter{table} -\renewcommand*\thetable{\@arabic\c@table} -\def\fps@table{tbp} -\def\ftype@table{2} -\def\ext@table{lot} -\def\fnum@table{\tablename\nobreakspace\thetable} - -\newenvironment{table} -{\@float{table}} -{\end@float} - -\newenvironment{table*} -{\@dblfloat{table}} -{\end@dblfloat} - -\newlength\abovecaptionskip -\newlength\belowcaptionskip -\setlength\abovecaptionskip{10\p@} -\setlength\belowcaptionskip{0\p@} -\long\def\@makecaption#1#2{% - \vskip\abovecaptionskip - \sbox\@tempboxa{#1: #2}% - \ifdimgreater{\wd\@tempboxa}{\hsize} - {#1: #2\par} - {\global\boolfalse{@minipage} - \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}}% - \vskip\belowcaptionskip} - -\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} -\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} -\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} -\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} -\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} -\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} -\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} -\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} -\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} - -\newcommand*\@pnumwidth{1.55em} -\newcommand*\@tocrmarg{2.55em} -\newcommand*\@dotsep{4.5} -\setcounter{tocdepth}{3} - -% We use a trick from Ivan Andrus (https://stackoverflow.com/a/2785740) -% to hide the "\section*{Contents}" command from the table of contents -% to avoid getting an ugly duplication of the Contents header inside -% the table itself. -% -% This trick consists of temporarily redefining \addcontentsline to -% do nothing during the expansion of the arguments to \tocless. -\newcommand{\nocontentsline}[3]{} -\newcommand{\tocless}[2]{\bgroup\let\addcontentsline=\nocontentsline#1{#2}\egroup} -\newcommand\tableofcontents{% - \tocless{\section*}{\contentsname - \@mkboth{% - \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}% - \@starttoc{toc}% -} - -\newcommand*\l@part[2]{% - \ifnumgreater{\c@tocdepth}{-2}{\relax - \addpenalty\@secpenalty - \addvspace{2.25em \@plus\p@}% - \setlength\@tempdima{3em}% - \begingroup - \parindent \z@ \rightskip \@pnumwidth - \parfillskip -\@pnumwidth - {\leavevmode - \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par - \nobreak - \endgroup - }{}% -} - -\newcommand*\l@section[2]{% - \ifnumgreater{\c@tocdepth}{\z@}{ - \addpenalty\@secpenalty - \addvspace{1.0em \@plus\p@}% - \setlength\@tempdima{1.5em}% - \begingroup - \parindent \z@ \rightskip \@pnumwidth - \parfillskip -\@pnumwidth - \leavevmode \bfseries - \advance\leftskip\@tempdima - \hskip -\leftskip - #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par - \endgroup - }{}% -} - -\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} -\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} -\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}} -\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}} - -\newcommand\listoffigures{% - \section*{\listfigurename}% - \@mkboth{\MakeUppercase\listfigurename}% - {\MakeUppercase\listfigurename}% - \@starttoc{lof}% -} - -\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} -\newcommand\listoftables{% - \section*{\listtablename}% - \@mkboth{% - \MakeUppercase\listtablename}% - {\MakeUppercase\listtablename}% - \@starttoc{lot}% -} - -\let\l@table\l@figure -% Declare a new \acknowledgements command for {revtex4-1} -% compatability. -\newcommand*{\acknowledgmentsname}{Acknowledgments} -\newcommand{\acknowledgments}[1]{% - \section*{\acknowledgmentsname}% - #1% -} - -\newdimen\bibindent -\setlength\bibindent{1.5em} - -\newenvironment{thebibliography}[1] -{% - \makeatletter% - \iftoggle{@noarxiv}{}{% - \ltx@ifpackageloaded{natbib}{}{% - \ltx@ifpackageloaded{biblatex}{ - \ClassWarning{compositionalityarticle}{Unfortunately compositionalityarticle cannot recommend the use of BibLaTeX due to incompatibilities between locally installed versions of BibLaTeX and the version used by the arXiv.}% - }{% - \ClassWarning{compositionalityarticle}{The compositionalityarticle class recommends generating the bibliography from a BibTeX file containing DOIs with natbib in order to ensure the generation of DOI hyperlinks}% - }% - }% - }% - \makeatother% - \section*{\refname}% - \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% - \list{\@biblabel{\@arabic\c@enumiv}}% - {\settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand*\theenumiv{\@arabic\c@enumiv}}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \sfcode`\.\@m - \setlength{\itemsep}{0pt plus 0.3ex} -} -{\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} - -\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em} -\let\@openbib@code\@empty - -\newenvironment{theindex}{% - \ifbool{@twocolumn}{\togglefalse{@restonecol}}{\toggletrue{@restonecol}} - \twocolumn[\section*{\indexname}]% - \@mkboth{\MakeUppercase\indexname}% - {\MakeUppercase\indexname}% - \thispagestyle{fancy}\parindent\z@ - \parskip\z@ \@plus .3\p@\relax - \columnseprule \z@ - \columnsep 35\p@ - \let\item\@idxitem% -} -{ - \iftoggle{@restonecol} - {\onecolumn} - {\clearpage} -} - -\newcommand\@idxitem{\par\hangindent 40\p@} -\newcommand\subitem{\@idxitem \hspace*{20\p@}} -\newcommand\subsubitem{\@idxitem \hspace*{30\p@}} -\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} - -\renewcommand*\footnoterule{% - \kern-3\p@ - \hrule\@width.4\columnwidth - \kern2.6\p@} - -\newcommand*\@makefntext[1]{% -\parindent 1em% -\noindent -\hb@xt@1.8em{\hss\@makefnmark}#1} - -\newcommand*\contentsname{Contents} -\newcommand*\listfigurename{List of Figures} -\newcommand*\listtablename{List of Tables} -\newcommand*\refname{References} -\newcommand*\indexname{Index} -\newcommand*\figurename{Figure} -\newcommand*\tablename{Table} -\newcommand*\partname{Part} -\newcommand*\appendixname{Appendix} -\newcommand*\abstractname{Abstract} - -\def\today{\ifcase\month\or - January\or February\or March\or April\or May\or June\or - July\or August\or September\or October\or November\or December\fi - \space\number\day, \number\year} -\setlength\columnsep{20\p@} -\setlength\columnseprule{0\p@} -\setlength{\footnotesep}{\baselineskip} -\RequirePackage{fancyhdr} -\@blacklistpackage{fancyhdr} +\tl_const:Nn \l_shrimp_lfoot_content + { + \color{shrimp} \sffamily + Accepted ~ in ~ Compositionality ~ on ~ + \tl_use:N \l_shrimp_accepted_tl + . ~ doi: + \tl_use:N \l_shrimp_doi + } +\lhead{} +\chead{} +\rhead{\ifnum\value{page}>1\else\l_shrimp_rhead_content\fi} +\lfoot{\ifnum\value{page}>1\else\l_shrimp_lfoot_content\fi} +\cfoot{} +\rfoot{\color{shrimp}\sffamily\thepage} +\let\headrule\relax +\let\footrulewidth\headrulewidth \pagestyle{fancy} -\renewcommand{\headrule}{} -\renewcommand{\footrule}{\vbox to 0pt{\hbox to\headwidth{\color{compositionalitygray}\leaders\hrule\hfil}\vss}} -\fancyhf{} -\iftoggle{@accepted} -{\fancyfoot[R]{\sffamily\iftoggle{@unpublished}{\thepage}{\textcolor{compositionalitypink}{\thepage}}}} -{\fancyfoot[C]{\sffamily\iftoggle{@unpublished}{\thepage}{\textcolor{compositionalitypink}{\thepage}}}} -\iftoggle{@accepted} - {\fancyfoot[L]{\usebox{\@compositionalityacceptedbox}} - \fancyhead[R]{\textcolor{compositionalitypink}{\scriptsize{\ifcsdef{@volume}{Volume \@volume }{}, \ifcsdef{@issue}{Issue \@issue }{}. ISSN 2631-4444}}}} -% - -% validate the date format to be YYYY-MM-DD -\AtBeginDocument{ - \ifcsdef{@accepteddate} - {% - \iftoggle{@xstring} - {% - \RequirePackage{xstring} - \def\@dateerror{\ClassError{compositionalityarticle}{The date in the accepted option must be given in the format YYYY-MM-DD}{}} - % test that we have two -s - \IfSubStr[2]{\@accepteddate}{-}{}{\@dateerror} - \IfSubStr[3]{\@accepteddate}{-}{\@dateerror}{} - \StrBefore[1]{\@accepteddate}{-}[\@accepteddateyear] - \StrBetween[1,2]{\@accepteddate}{-}{-}[\@accepteddatemonth] - \StrBehind[2]{\@accepteddate}{-}[\@accepteddateday] - \IfDecimal{\@accepteddateyear}{}{\@dateerror} - \IfDecimal{\@accepteddatemonth}{}{\@dateerror} - \IfDecimal{\@accepteddateday}{}{\@dateerror} - \StrLen{\@accepteddateyear}[\@accepteddateyearlength] - \StrLen{\@accepteddatemonth}[\@accepteddatemonthlength] - \StrLen{\@accepteddateday}[\@accepteddatedaylength] - \ifnumcomp{\@accepteddateyearlength}{>}{3}{}{\@dateerror} - \ifnumcomp{\@accepteddatemonthlength}{=}{2}{}{\@dateerror} - \ifnumcomp{\@accepteddatedaylength}{=}{2}{}{\@dateerror}% - } - {} - } - {} -} - -%MODIFIED 29.11 - - -\pagenumbering{arabic} -\ifbool{@twoside}{}{\raggedbottom} -\ifbool{@twocolumn}{ - \twocolumn - \sloppy - \flushbottom -}{ - \onecolumn -} - -%the following is mostly taken from revtex4-1 (see https://www.ctan.org/pkg/revtex4-1) -\ifbool{@twocolumn}{ - \newbox\widetext@top - \newbox\widetext@bot - \newenvironment{widetext}{% - \par\ignorespaces - \setbox\widetext@top\vbox{% - \hb@xt@\hsize{% - {\color{compositionalitygray}% - \leaders\hrule\hfil - \vrule\@height6\p@} - }% - }% - \setbox\widetext@bot\hb@xt@\hsize{% - {\color{compositionalitygray}% - \vrule\@depth6\p@ - \leaders\hrule\hfil} - }% - \onecolumngrid - \vskip10\p@ - \dimen@\ht\widetext@top\advance\dimen@\dp\widetext@top - \cleaders\box\widetext@top\vskip\dimen@ - \vskip6\p@ - \prep@math@patch - }{% - \par - \vskip6\p@ - \setbox\widetext@bot\vbox{% - \hb@xt@\hsize{\hfil\box\widetext@bot}% - }% - \dimen@\ht\widetext@bot\advance\dimen@\dp\widetext@bot - \cleaders\box\widetext@bot\vskip\dimen@ - \vskip8.5\p@ - \twocolumngrid\global\booltrue{@ignore} - \booltrue{@endpe} - }% -}{ - \newenvironment{widetext}{}{} -} - +\fancypagestyle{plain}{} -%title -\def\@printtitle{% - {% - \iftoggle{@unpublished}% - {% - \@printtitletextwithappropriatefontsize% - }% - {% - \edef\@titleexpanded{\detokenize\expandafter{\@title}}% - \iftoggle{@xstring}% - {\saveexploremode\exploregroups\StrSubstitute{\@titleexpanded}{ }{\%20}[\@titleforurl]\restoreexploremode}% - {\gdef\@titleforurl{\@titleexpanded}}% - \href{https://compositionality-journal.org/\@shorttitle/} - {% - \color{compositionalitypink}{% - \@printtitletextwithappropriatefontsize\unskip% - }% - }% - }% - }% -} -% In the macro below we compute the appropriate font size of the title. -% We use \Huge if the title fits on one line and \huge if it extends over more -% than one line in font size \Huge -\def\@titleatfontsize#1{% - #1% - \begingroup% - \raggedright% - \iftoggle{@allowfontchangeintitle} - {} - {% - \def\selectfont{\ClassError{compositionalityarticle}{When submitting to compositionality, you are not supposed to use \string\textbf{}, \string\bf, \string\textit{} or other font formating commands inside \string\title{}. Please remove all such commands from your \string\title{}. If you really have to change the font for some part of the title you can turn off this error by giving the option allowfontchangeintitle}{}}%solution from https://tex.stackexchange.com/questions/347596/disallowing-textbf-it-sffamily-in-argument-of-macro-or-environment - }% - \@title% - \endgroup% -}% -\def\@printtitletextwithappropriatefontsize{% - \newsavebox{\@titelsaveboxHuge}% - \savebox{\@titelsaveboxHuge}{% - \parbox[b]{\linewidth}{% - \@titleatfontsize{\Huge}% - }% - }% - \newsavebox{\@titelsaveboxHugeoneline}% - \savebox{\@titelsaveboxHugeoneline}{% - \@titleatfontsize{\Huge}% - }% - \newsavebox{\@titelsaveboxhhuge}% - \savebox{\@titelsaveboxhhuge}{% - \parbox[b]{\linewidth}{% - \@titleatfontsize{\huge}% - }% - }% - \ifdimgreater{\ht\@titelsaveboxHuge}{\ht\@titelsaveboxHugeoneline} - {\@titleatfontsize{\huge}%\usebox{\@titelsaveboxhhuge}% using huge because \the\ht\@titelsaveboxHuge{} is larger than \the\ht\@titelsaveboxHugeoneline{} - } - {\@titleatfontsize{\Huge}% using Huge because \the\ht\@titelsaveboxHuge{} is not larger than \the\ht\@titelsaveboxHugeoneline{} - } -} +\seq_new:N \g__shrimp_authors_seq +\seq_new:N \g__shrimp_affiliation_seq +\seq_new:N \g__shrimp_email_seq +\seq_new:N \g__shrimp_orcid_seq +\seq_new:N \g__shrimp_webpage_seq +\seq_new:N \g__shrimp_thanks_seq -%renew \title to allow for and ignore an optional argument -\renewcommand{\title}[2][]{\gdef\@title{#2}} -% author handling -\newcounter{@authorcounter} -\csdef{@authors}{} -\renewcommand{\author}[2][]{% - \ifstrempty{#1}{% - \internal@author{#2}% - }{% - \internal@elseauthor{#1}{#2} - }% - \csdef{@authorname\the@authorcounter}{#2}% - \def\@currentauthornumber{\the@authorcounter}% -}% -\def\addauthortolabel#1#2{% - \ifcsdef{authorswithlabel#2}{}{\csdef{authorswithlabel#2}{}}% - \listcsxadd{authorswithlabel#2}{#1}}% -\def\internal@elseauthor#1#2{% - \stepcounter{@authorcounter} - \ifcsdef{@authors}{}{\csdef{@authors}{}}% - \listadd{\@authors}{#2}% - \forcsvlist{\addauthortolabel{\the@authorcounter}}{#1}% - \ifbool{@startnewauthorgroup}{\csundef{@authorgroup}}{}% - \ifcsdef{@authorgroup}{}{\csdef{@authorgroup}{}}% - \listxadd{\@authorgroup}{\the@authorcounter}% - \boolfalse{@startnewauthorgroup}% -}% -\def\internal@author#1{% - \stepcounter{@authorcounter} - \ifcsdef{@authors}{}{\csdef{@authors}{}}% - \listadd{\@authors}{#1}% - \ifbool{@startnewauthorgroup}{\csundef{@authorgroup}}{} - \ifcsdef{@authorgroup}{}{\csdef{@authorgroup}{}}% - \listxadd{\@authorgroup}{\the@authorcounter} - \boolfalse{@startnewauthorgroup} -} -\def\@@spaceafter#1{#1 } -\def\@@@comma{\def\@@@comma{,}} -\def\@@commaspacebefore#1{\@@@comma{}#1} -\def\@printauthor#1#2{\def\footnote{\ClassError{compositionalityarticle}{You must not put a \string\footnote{} command inside the argument of \string\author}{}}\ifcsdef{author#1orcid}{\href{https://orcid.org/\csname author#1orcid\endcsname}{\color{black}#2}}{#2}\ifnumcomp{\the@affiliationcounter}{>}{1}{\textsuperscript{\forlistcsloop{\@@commaspacebefore}{author#1affiliations}\unskip}}{}\ifnumcomp{#1}{<}{\the@authorcounter-1}{, }{\ifnumcomp{#1}{=}{\the@authorcounter-1}{\ifnumcomp{#1}{=}{1}{ and }{, and }}{}}} -\def\@printauthors{% - \newcounter{@authornum}% - \large\forlistloop{\stepcounter{@authornum}% - \ifcsdef{author\the@authornum hasextras}{% - \insert\footins{\footnotesize% - % \interlinepenalty\interfootnotelinepenalty - % \splittopskip\footnotesep - % \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \iftoggle{@titlepage} - {\hsize\dimexpr \linewidth\relax \@parboxrestore}% - {\ifbool{@twocolumn} - {\hsize\dimexpr 0.5\linewidth-0.5\columnsep\relax \@parboxrestore} - {\hsize\dimexpr \linewidth\relax \@parboxrestore}% - } - % \flushleft% - % \baselineskip=0pt% - \@printauthorextrainfo{\the@authornum}\vspace{0.5\baselineskip}% - }}{}% - \@printauthor\the@authornum}{\@authors}% -} -\def\@@addcommabetween#1{#1, }%this adds an ugly extra comma at the end but the variant below is not expandable and therefore leads to ugly warnings: https://tex.stackexchange.com/questions/50978/macro-to-extract-typeset-plain-text-from-a-command -%\def\@@addcommabetween#1{\ifdef{\firstauthoronly}{, }{\def\firstauthoronly{\empty}}#1} -\def\@authorsonly{\forlistloop{\@@addcommabetween}{\@authors}} -% affiliation handling -\newbool{@startnewauthorgroup} -\newcounter{@affiliationcounter} -\def\@addaffiliation#1#2{ - \ifcsdef{author#2affiliations}{}{\csdef{author#2affiliations}{}}% - \listcsgadd{author#2affiliations}{#1} +\RenewDocumentCommand{\author}{m}{ + \seq_gput_right:Nn \g__shrimp_authors_seq {#1} } -\newcommand{\address}[2][]{\affiliation[#1]{#2}} -%for compatibility with authblk -\@blacklistpackage{authblk} -\newcommand{\affil}[2][]{ - \affiliation[#1]{#2}} -\newcommand{\affiliation}[2][]{% - \ifstrempty{#1}{% - \internal@affiliation{#2}% - }{% - \elseinternal@affiliation{#1}{#2} - }}% -\def\elseinternal@affiliation#1#2{% - \booltrue{@startnewauthorgroup} - \ifcsdef{affiliations}{}{\csdef{affiliations}{}}% - \expandafter\def\csname\detokenize{#2}\endcsname{#2}% - \stepcounter{@affiliationcounter}% - \listxadd{\affiliations}{\detokenize{#2}}% - \csxdef{affiliation\detokenize{#2}number}{\the@affiliationcounter{}}% - \ifcsdef{authorswithlabel#1}{% - \forlistcsloop{\@addaffiliation{\csname affiliation\detokenize{#2}number\endcsname}}{authorswithlabel#1}% - }{}% +\NewDocumentCommand{\affiliation}{m}{ + \seq_put_right:Nn \g__shrimp_affiliation_seq {#1} } -\def\internal@affiliation#1{% - \booltrue{@startnewauthorgroup} - \ifcsdef{affiliations}{}{\csdef{affiliations}{}}% - \expandafter\def\csname\detokenize{#1}\endcsname{#1} %to handle special characters such as \'a and \l we create a macro whose name is the detokenized version of #1 and that expands to #1 and later call it in \@printaffiliation - \xifinlist{\detokenize{#1}}{\affiliations}{}{\stepcounter{@affiliationcounter}\listxadd{\affiliations}{\detokenize{#1}}\csxdef{affiliation\detokenize{#1}number}{\the@affiliationcounter{}}}% - \forlistloop{\@addaffiliation{\csname affiliation\detokenize{#1}number\endcsname}}{\@authorgroup}% -} -\def\@printaffiliation#1#2{\ifnumcomp{\the@affiliationcounter}{>}{1}{\llap{\textsuperscript{#1}}}{}\csname #2\endcsname\ifnumcomp{#1}{<}{\the@affiliationcounter}{\newline}{}} -\def\@printaffiliations{% - \ifcsdef{affiliations}{}{\csdef{affiliations}{}}% - \newcounter{@affiliationnum}% - \ifnumcomp{\the@affiliationcounter}{>}{1}{% - \settowidth{\leftskip}{\footnotesize\textsuperscript{\the@affiliationcounter}}% - }{}% - {\footnotesize\color{compositionalitygray}% - \forlistloop{\stepcounter{@affiliationnum}\@printaffiliation\the@affiliationnum}{\affiliations}}% -} -%collaboration and altaffiliation -\newcommand{\collaboration}[1]{\author{#1}} -\newcommand{\altaffiliation}[2][]{\affiliation{#1#2}} -% email, homepage, and thanks handling -% be careful - this section is highly sensitive to the positioning of the % marks -\newbool{authorextrainfo@first} -\def\@printauthorextrainfo#1{ - \booltrue{authorextrainfo@first}% - \csname @authorname#1\endcsname: - \ifcsdef{author#1emails} - {% - \ifbool{authorextrainfo@first}{}{\unskip,\space}% - \forlistcsloop{\@@spaceafter}{author#1emails}% - \boolfalse{authorextrainfo@first}% - } - {}% - \ifcsdef{author#1homepages} - {% - \ifbool{authorextrainfo@first}{}{\unskip,\space}% - \forlistcsloop{\@@spaceafter}{author#1homepages}% - \boolfalse{authorextrainfo@first}% - } - {}% - \ifcsdef{author#1orcid} - {% - \ifbool{authorextrainfo@first}{}{\unskip,\space}% - \lower0.3ex\hbox{\includegraphics[height=2ex]{ORCIDiD_iconvector.pdf}}\thinspace% - \csuse{author#1orcid}% - \boolfalse{authorextrainfo@first}% - } - {}% - \ifcsdef{author#1thanks} - {% - \ifbool{authorextrainfo@first}{}{\unskip.\space}% - \forlistcsloop{\@@spaceafter}{author#1thanks}% - \boolfalse{authorextrainfo@first}% - } - {}% +\NewDocumentCommand{\email}{m}{ + \seq_put_right:Nn \g__shrimp_email_seq {#1} } -\newcommand{\email}[2][]{% - \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\email{} may only appear after the first \string\author{} command}{}} - \@email{#1}{\href{mailto:#2}{#2}}} -\newcommand{\homepage}[2][]{% - \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\homepage{} may only appear after the first \string\author{} command}{}} - \@homepage{#1}{\href{#2}{#2}}} -\renewcommand{\thanks}[2][]{% - \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\thanks{} may only appear after the first \string\author{} command}{}} - \@thanks{#1}{#2}} -\newcommand{\orcid}[2][]{% - \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\orcid{} may only appear after the first \string\author{} command}{}} - \@orcid{#1}{#2}} -\def\@email#1#2{%} - \@addemail{#1#2}{\@currentauthornumber} - \csdef{author\@currentauthornumber hasextras}{} -} -\def\@homepage#1#2{% - \ifcsdef{@currentauthornumber}{}{\def\@currentauthornumber{0}}%in case \homepage is called before the first author - \@addhomepage{#1#2}{\@currentauthornumber} - \csdef{author\@currentauthornumber hasextras}{} -} -\def\@thanks#1#2{% - \ifcsdef{@currentauthornumber}{}{\def\@currentauthornumber{0}}%in case \thanks is called before the first author - \@addthanks{#1#2}{\@currentauthornumber} - \csdef{author\@currentauthornumber hasextras}{} -} -\def\@orcid#1#2{% - \ifcsdef{@currentauthornumber}{}{\def\@currentauthornumber{0}}%in case \orcid is called before the first author - \@addorcid{#1#2}{\@currentauthornumber} - \csdef{author\@currentauthornumber hasextras}{} -} -\def\@addemail#1#2{ - \ifcsdef{author#2emails}{}{\csdef{author#2emails}{}}% - \listcsgadd{author#2emails}{#1} -} -\def\@addhomepage#1#2{ - \ifcsdef{author#2homepages}{}{\csdef{author#2homepages}{}}% - \listcsgadd{author#2homepages}{#1} -} -\def\@addthanks#1#2{ - \ifcsdef{author#2thanks}{}{\csdef{author#2thanks}{}}% - \listcsgadd{author#2thanks}{#1} -} -\def\@addorcid#1#2{ - \csdef{author#2orcid}{#1}% +\NewDocumentCommand{\orcid}{m}{ + \seq_put_right:Nn \g__shrimp_orcid_seq {#1} } - -\newtoggle{@xstring} -\IfFileExists{xstring.sty}{\toggletrue{@xstring}}{\togglefalse{@xstring}} - -\AtBeginDocument{ - \iftoggle{@xstring} - {\RequirePackage{xstring}} - {} - - \iftoggle{@accepted} - {% - \newsavebox\@compositionalityacceptedbox - - - \newcommand {\logo} {\raisebox{-0.15cm}[0.1cm]{\includegraphics[width=0.035\textwidth, height=0.035\textwidth]{logo.eps}}} - \savebox\@compositionalityacceptedbox{{\sffamily\scriptsize \logo\textcolor{compositionalitypink}{Accepted in Compositionality on \ifcsdef{@accepteddate}{\@accepteddate}{}.}}}} - - - - - - {} -} -%elsearticle style extra header information -\newcommand{\ead}[2][]{ - \ifstrempty{#1}{ - \email{#2} - }{ - \iftoggle{@xstring} - {\IfStrEq{#1}{url}{\homepage{#2}}{\email{#2}}} - {email{#2}} - } -} -\AtEndPreamble{ - \providecommand{\@elsearticlecommandsnotsupportederror}{\ClassError{compositionalityarticle}{The elsearticle style \string\cortext{}, \string\corref{}, \string\fntext{}, \string\fnref{}, \string\tnotetext{}, and \string\tnoteref{} commands are not supported by compositionalityarticle. Please refrain from using footnotes in the title part of your document and use the \string\tahnks{} command for author footnotes instead.}{}} - \providecommand{\cortext}[2][]{\@elsearticlecommandsnotsupportederror} %corresponding author information - \providecommand{\corref}[1]{\@elsearticlecommandsnotsupportederror} %corresponding author information reference - \providecommand{\fntext}[2][]{\@elsearticlecommandsnotsupportederror} %author footnote - \providecommand{\fnref}[1]{\@elsearticlecommandsnotsupportederror} %author footnot reference - \providecommand{\tnotetext}[2][]{\@elsearticlecommandsnotsupportederror} %title footnote - \providecommand{\tnoteref}[1]{\@elsearticlecommandsnotsupportederror} %title footnote reference +\NewDocumentCommand{\homepage}{m}{ + \seq_put_right:Nn \g__shrimp_webpage_seq {#1} } -% set default options for hyperref to make links more pretty, and add backwards pagerefs to bibliography -\PassOptionsToPackage{colorlinks=true,hyperindex,backref=page}{hyperref} - -\iftoggle{@unpublished} - {\PassOptionsToPackage{allcolors=gray}{hyperref}} - {\PassOptionsToPackage{allcolors=compositionalitydarkpink}{hyperref}} - -\ifcsdef{pdfoutput} -{ - \ifnumequal{\pdfoutput}{0} - {} - {\PassOptionsToPackage{breaklinks=true}{hyperref}}%setting this option produces a warning if \pdfoutput=0 +\RenewDocumentCommand{\thanks}{m}{ + \seq_put_right:Nn \g__shrimp_thanks_seq {#1} } -{} - -%enable DOIs if biblatex is used by default -\PassOptionsToPackage{doi=true}{biblatex} -\AtBeginDocument{% - - \RequirePackage{hyperref}% - - \@ifpackageloaded{natbib}{% - \setlength{\bibsep}{0pt plus 0.3ex} - \@ifpackageloaded{doi}{}{% - \providecommand{\doi}[1]{} - \renewcommand{\doi}[1]{\href{https://doi.org/\detokenize{#1}}{https://doi.org/\detokenize{#1}}}% - }% - }{% - \@ifpackageloaded{biblatex}{ - \DeclareFieldFormat{doi}{\mkbibacro{DOI}\addcolon\space\href{https://doi.org/\detokenize{#1}}{\detokenize{#1}}} - \setcounter{biburllcpenalty}{1000} - \setcounter{biburlucpenalty}{1000} - \setcounter{biburlnumpenalty}{1000} - }{}% - } +\cs_new:Nn \__shrimp_print_title_authors: { + \group_begin: + \sffamily\large + \int_step_inline:nn { \seq_count:N \g__shrimp_authors_seq } { + \seq_item:Nn \g__shrimp_authors_seq { ##1 } + \textsuperscript { \int_to_arabic:n { ##1 } } + \int_compare:nNnTF { ##1 + 1 } = { \seq_count:N \g__shrimp_authors_seq } { , ~ and ~ } { } + \int_compare:nNnTF { ##1 + 1 } < { \seq_count:N \g__shrimp_authors_seq } { , ~ } { } + } + \group_end: } -\def\@keywords{} -\providecommand{\keywords}{} -\renewcommand{\keywords}[1]{\def\@keywords{#1}} - -\iftoggle{@amsfonts} - {\RequirePackage{amsfonts}} - {} -\iftoggle{@amssymb} - {\RequirePackage{amssymb}} - {} -\iftoggle{@amsmath} - {\RequirePackage{amsmath}} - {} - -\iftoggle{@revtexcompatibility} -{ - \PassOptionsToPackage{numbers}{natbib} - \PassOptionsToPackage{sort&compress}{natbib} - - \providecommand{\ao}{Appl.\ Opt.} - \providecommand{\ap}{Appl.\ Phys.} - \providecommand{\apl}{Appl.\ Phys.\ Lett.} - \providecommand{\apj}{Astrophys.\ J.} - \providecommand{\bell}{Bell Syst.\ Tech.\ J.} - \providecommand{\jqe}{IEEE J.\ compositionality Electron.} - \providecommand{\assp}{IEEE Trans.\ Acoust.\ Speech Signal Process.} - \providecommand{\aprop}{IEEE Trans.\ Antennas Propag.} - \providecommand{\mtt}{IEEE Trans.\ Microwave Theory Tech.} - \providecommand{\iovs}{Invest.\ Ophthalmol.\ Vis.\ Sci.} - \providecommand{\jcp}{J.\ Chem.\ Phys.} - \providecommand{\jmo}{J.\ Mod.\ Opt.} - \providecommand{\josa}{J.\ Opt.\ Soc.\ Am.} - \providecommand{\josaa}{J.\ Opt.\ Soc.\ Am.\ A} - \providecommand{\josab}{J.\ Opt.\ Soc.\ Am.\ B} - \providecommand{\jpp}{J.\ Phys.\ (Paris)} - \providecommand{\nat}{Nature (London)} - \providecommand{\oc}{Opt.\ Commun.} - \providecommand{\ol}{Opt.\ Lett.} - \providecommand{\pl}{Phys.\ Lett.} - \providecommand{\pra}{Phys.\ Rev.\ A} - \providecommand{\prb}{Phys.\ Rev.\ B} - \providecommand{\prc}{Phys.\ Rev.\ C} - \providecommand{\prd}{Phys.\ Rev.\ D} - \providecommand{\pre}{Phys.\ Rev.\ E} - \providecommand{\prl}{Phys.\ Rev.\ Lett.} - \providecommand{\rmp}{Rev.\ Mod.\ Phys.} - \providecommand{\pspie}{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.} - \providecommand{\sjqe}{Sov.\ J.\ compositionality Electron.} - \providecommand{\vr}{Vision Res.} - \newenvironment{ruledtabular}{\ClassError{compositionalityarticle}{The compositionalityarticle class does not support the ruledtabular environment. Consider using the booktabs package for tables and the table* environment for tables that span two columns.}{}}{} - - \AtBeginDocument{% - \providecommand{\pacs}[1]{} - \providecommand{\preprint}[1]{} - \providecommand{\volumeyear}[1]{} - \providecommand{\volumenumber}[1]{} - \providecommand{\issuenumber}[1]{} - \providecommand{\eid}[1]{} - \providecommand{\startpage}[1]{} - \def\endpage#1{\gdef\@endpage{#1}} - } - - \AtEndPreamble{% in compatibility mode we load natbib, but only if biblatex has not been loaded. We have to do this AtEndPreamble because natbib can not be loaded AtBeginDocument - \@ifpackageloaded{biblatex}{}{% - \@ifpackageloaded{natbib}{}{% - \usepackage{natbib} - }% - } - \let\@recordedbibliographystyle\relax - \let\@origbibliographystyle\bibliographystyle - \renewcommand{\bibliographystyle}[1]{% - \@origbibliographystyle{#1}% - \gdef\@recordedbibliographystyle{#1}% - } - \let\@origbibliography\bibliography - \renewcommand{\bibliography}[1]{% - \ifx\@recordedbibliographystyle\relax\bibliographystyle{plainnat}\fi - \ltx@ifpackageloaded{natbib}{}{% - \ltx@ifpackageloaded{biblatex}{}{% - \ClassWarning{compositionalityarticle}{You are manually generating your bibliography. Please make sure that all references include DOI hyperlinks. compositionalityarticle recommends the use of BibTeX together with the natbib package for generating the bibliography.}}}% - \@origbibliography{#1}} - \providecommand\textcite[1]{\citet{#1}} - \providecommand\onlinecite[1]{\cite{#1}} - } -} -{ +\cs_new:Nn \__shrimp_print_title_affiliations: { + \group_begin: + \sffamily\small\color{gray} + \int_step_inline:nn { \seq_count:N \g__shrimp_authors_seq } { + \textsuperscript { \int_to_arabic:n { ##1 } } + \seq_item:Nn \g__shrimp_affiliation_seq { ##1 }\newline + } + \group_end: } -\newenvironment{acknowledgements}{\section*{Acknowledgements}}{} +\cs_new:Nn \__shrimp_print_title_footnotes: { + \group_begin: + \let\thefootnote\relax + \int_step_inline:nn { \seq_count:N \g__shrimp_authors_seq } { -\AtBeginDocument{% - \providecommand\text[1]{ - \ClassError{compositionalityarticle}{To use the \string\text{} command please load the mathtools package}{} - } -} + \seq_clear:N \l_tmpa_seq -\PassOptionsToPackage{font={small,sf}}{caption} + \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \g__shrimp_email_seq { ##1 } } + \tl_if_empty:NTF \l_tmpa_tl {} { + \seq_put_right:Nx \l_tmpa_seq { + \exp_not:N \href { mailto: \tl_use:N \l_tmpa_tl } { \tl_use:N \l_tmpa_tl } + } + } -\AtEndPreamble{ - \RequirePackage{caption} -} + \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \g__shrimp_webpage_seq { ##1 } } + \tl_if_empty:NTF \l_tmpa_tl {} { + \seq_put_right:Nx \l_tmpa_seq { + \exp_not:N \href { \tl_use:N \l_tmpa_tl } { \tl_use:N \l_tmpa_tl } + } + } -\@blacklistpackage[You are not supposed to load custom font packages such as]{berasans} -\@blacklistpackage[You are not supposed to load custom font packages such as]{arev} -\@blacklistpackage[You are not supposed to load custom font packages such as]{avant} -\@blacklistpackage[You are not supposed to load custom font packages such as]{bera} -\@blacklistpackage[You are not supposed to load custom font packages such as]{bookman} -\@blacklistpackage[You are not supposed to load custom font packages such as]{cabin} -\@blacklistpackage[You are not supposed to load custom font packages such as]{chancery} -\@blacklistpackage[You are not supposed to load custom font packages such as]{charter} -\@blacklistpackage[You are not supposed to load custom font packages such as]{cmbright} -\@blacklistpackage[You are not supposed to load custom font packages such as]{concrete} -\@blacklistpackage[You are not supposed to load custom font packages such as]{courier} -\@blacklistpackage[You are not supposed to load custom font packages such as]{dejavu} -\@blacklistpackage[You are not supposed to load custom font packages such as]{droid} -\@blacklistpackage[You are not supposed to load custom font packages such as]{drm} -\@blacklistpackage[You are not supposed to load custom font packages such as]{ebgaramond} -\@blacklistpackage[You are not supposed to load custom font packages such as]{euler} -\@blacklistpackage[You are not supposed to load custom font packages such as]{fourier} -\@blacklistpackage[You are not supposed to load custom font packages such as]{fouriernc} -\@blacklistpackage[You are not supposed to load custom font packages such as]{gentium} -\@blacklistpackage[You are not supposed to load custom font packages such as]{helvet} -\@blacklistpackage[You are not supposed to load custom font packages such as]{inconsolata} -\@blacklistpackage[You are not supposed to load custom font packages such as]{kpfonts} -\@blacklistpackage[You are not supposed to load custom font packages such as]{lato} -\@blacklistpackage[You are not supposed to load custom font packages such as]{libertineotf} -\@blacklistpackage[You are not supposed to load custom font packages such as]{libertine} -\@blacklistpackage[You are not supposed to load custom font packages such as]{librebaskerville} -\@blacklistpackage[You are not supposed to load custom font packages such as]{lmodern} -\@blacklistpackage[You are not supposed to load custom font packages such as]{mathdesign} -\@blacklistpackage[You are not supposed to load custom font packages such as]{mathpazo} -\@blacklistpackage[You are not supposed to load custom font packages such as]{mathptmx} -\@blacklistpackage[You are not supposed to load custom font packages such as]{newcent} -\@blacklistpackage[You are not supposed to load custom font packages such as]{newtx} -\@blacklistpackage[You are not supposed to load custom font packages such as]{quattrocento} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgadventor} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgbonum} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgchorus} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgcursor} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgheros} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgpagella} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgschola} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgtermes} -\@blacklistpackage[You are not supposed to load custom font packages such as]{times} -\@blacklistpackage[You are not supposed to load custom font packages such as]{yfonts} + \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \g__shrimp_orcid_seq { ##1 } } + \tl_if_empty:NTF \l_tmpa_tl {} { + \seq_put_right:Nx \l_tmpa_seq { + \exp_not:N \href + { https://orcid.org/\tl_use:N \l_tmpa_tl } + { + \lower0.3ex\hbox{\includegraphics[height=2ex]{ORCIDiD_iconvector.pdf}}\thinspace + \tl_use:N \l_tmpa_tl + } + } + } -\iftoggle{@nopdfoutputerror}{}{\pdfoutput=0} %Set \pdfoutput=0 so that we can check later during \usepackage whether the authors did put \pdfoutput=1 into their document, bit only if the nopdfoutputerror was not given -\endinput -%% -%% End of file `compositionalityarticle.cls'. + \footnotetext{ + \sffamily + \seq_item:Nn \g__shrimp_authors_seq { ##1 }:~ + \seq_use:Nn \l_tmpa_seq { ,~ } + \seq_if_empty:NF \l_tmpa_seq {} {.} + \seq_item:Nn \g__shrimp_thanks_seq { ##1 } + } + } + \group_end: +} + +\NewDocumentCommand{\printtitlestuff}{}{ + \global \@topnum \z@%\newpage\null + \noindent{\normalfont\huge\sffamily\color{shrimp}\@title} \par\bigskip + \noindent\__shrimp_print_title_authors: + \par\bigskip + \noindent\__shrimp_print_title_affiliations: + \par + \noindent\__shrimp_print_title_footnotes: + \par +} +\AtBeginDocument{\renewenvironment{abstract} +{\small\quotation\noindent\ignorespaces} +{\endquotation}} diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 4531922..21a6bbe 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -71,6 +71,7 @@ \RequirePackage{expl3}[2023/05/11] \RequirePackage{l3keys2e} \RequirePackage{xparse} +\RequirePackage{lmodern} % \end{macrocode} % % Identify the package and give the over all version information. @@ -197,10 +198,7 @@ \fancypagestyle{plain}{} % \end{macrocode} % -% Temporary hack awaiting override of \verb|\maketitle|. -% \begin{macrocode} -\AtBeginDocument{\let\abstractname\relax} -% \end{macrocode} + % % \begin{macrocode} @@ -252,8 +250,7 @@ \sffamily\small\color{gray} \int_step_inline:nn { \seq_count:N \g_@@_authors_seq } { \textsuperscript { \int_to_arabic:n { ##1 } } - \seq_item:Nn \g_@@_affiliation_seq { ##1 } - \par + \seq_item:Nn \g_@@_affiliation_seq { ##1 }\newline } \group_end: } @@ -303,14 +300,18 @@ } \NewDocumentCommand{\printtitlestuff}{}{ - \@@_print_title_authors: - \par\hrulefill\par - \@@_print_title_affiliations: - \par\hrulefill\par - \@@_print_title_footnotes: - \par\hrulefill\par + \global \@topnum \z@%\newpage\null + \noindent{\normalfont\huge\sffamily\color{shrimp}\@title} \par\bigskip + \noindent\@@_print_title_authors: + \par\bigskip + \noindent\@@_print_title_affiliations: + \par + \noindent\@@_print_title_footnotes: + \par } - +\AtBeginDocument{\renewenvironment{abstract} +{\small\quotation\noindent\ignorespaces} +{\endquotation}} % \end{macrocode} % % \iffalse diff --git a/old-compositionalityarticle.cls b/old-compositionalityarticle.cls new file mode 100644 index 0000000..f077e05 --- /dev/null +++ b/old-compositionalityarticle.cls @@ -0,0 +1,1510 @@ +%% +%% This is file `compositionalityarticle.cls', +%% it provides the compositionalityarticle class for typesetting articles in +%% Compositionality - the open journal for the mathematics of composition +%% +%% Copyright 2018, 2019, 2020 +%% https://compositionality-journal.org +%% +%% It is derived from `article.cls' available from +%% https://www.ctan.org/pkg/article +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\def\compositionalityarticleversion{2.1} +\ProvidesClass{compositionalityarticle} +[2020/05/01 v\compositionalityarticleversion +class for Compositionality - the open journal for the mathematics of composition (https://compositionality-journal.org)] +\RequirePackage{xkeyval} +\RequirePackage{etoolbox} +\RequirePackage{graphicx} +\DeclareGraphicsExtensions{.pdf,.jpeg,.png,.eps} +\newcommand*\@ptsize{} + +\newtoggle{@restonecol} +\newtoggle{@titlepage} +\togglefalse{@titlepage} + +\newtoggle{@papersizespecified} +\togglefalse{@papersizespecified} + +\DeclareOptionX{a4paper} +{ + \setlength\paperheight{297mm}% + \setlength\paperwidth{210mm} + \toggletrue{@papersizespecified} +} +\DeclareOptionX{a5paper} +{ + \setlength\paperheight {210mm}% + \setlength\paperwidth {148mm} + \toggletrue{@papersizespecified} +} +\DeclareOptionX{b5paper} +{ + \setlength\paperheight {250mm}% + \setlength\paperwidth {176mm} + \toggletrue{@papersizespecified} +} +\DeclareOptionX{letterpaper} +{ + \setlength\paperheight {11in}% + \setlength\paperwidth {8.5in} + \toggletrue{@papersizespecified} +} +\DeclareOptionX{legalpaper} +{ + \setlength\paperheight {14in}% + \setlength\paperwidth {8.5in} + \toggletrue{@papersizespecified} +} +\DeclareOptionX{executivepaper} +{ + \setlength\paperheight {10.5in}% + \setlength\paperwidth {7.25in} + \toggletrue{@papersizespecified} +} +\DeclareOptionX{landscape} +{ + \setlength\@tempdima {\paperheight}% + \setlength\paperheight {\paperwidth}% + \setlength\paperwidth {\@tempdima} +} + +\DeclareOptionX{10pt}{\renewcommand*\@ptsize{0}} +\DeclareOptionX{11pt}{\renewcommand*\@ptsize{1}} +\DeclareOptionX{12pt}{\renewcommand*\@ptsize{2}} + +\DeclareOptionX{oneside}{\boolfalse{@twoside}\boolfalse{@mparswitch}} +\DeclareOptionX{twoside}{\booltrue{@twoside}\booltrue{@mparswitch}} + +\DeclareOptionX{draft}{\setlength\overfullrule{5pt}} +\DeclareOptionX{final}{\setlength\overfullrule{0pt}} + +\DeclareOptionX{titlepage}{\toggletrue{@titlepage}} +\DeclareOptionX{notitlepage}{\togglefalse{@titlepage}} + +\DeclareOptionX{onecolumn}{\boolfalse{@twocolumn}} +\DeclareOptionX{twocolumn}{\booltrue{@twocolumn}} + +\DeclareOptionX{leqno}{\input{leqno.clo}} +\DeclareOptionX{fleqn}{\input{fleqn.clo}} +\DeclareOptionX{openbib}{% + \AtEndOfPackage{% + \renewcommand\@openbib@code{% + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + }% + \renewcommand\newblock{\par}}% +} + +%declare some dummy options for compatibility +\DeclareOptionX{checkin}{} +\DeclareOptionX{preprint}{} +\DeclareOptionX{reprint}{} +\DeclareOptionX{manuscript}{} +\DeclareOptionX{noshowpacs}{} +\DeclareOptionX{showpacs}{} +\DeclareOptionX{showkeys}{} +\DeclareOptionX{noshowkeys}{} +\DeclareOptionX{balancelastpage}{} +\DeclareOptionX{nobalancelastpage}{} +\DeclareOptionX{nopreprintnumbers}{} +\DeclareOptionX{preprintnumbers}{} +\DeclareOptionX{hyperref}{} +\DeclareOptionX{bibnotes}{} +\DeclareOptionX{nobibnotes}{} +\DeclareOptionX{footinbib}{} +\DeclareOptionX{nofootinbib}{} +\DeclareOptionX{altaffilletter}{} +\DeclareOptionX{altaffilsymbol}{} +\DeclareOptionX{superbib}{} +\DeclareOptionX{citeautoscript}{} +\DeclareOptionX{longbibliography}{} +\DeclareOptionX{nolongbibliography}{} +\DeclareOptionX{eprint}{} +\DeclareOptionX{noeprint}{} +\DeclareOptionX{author-year}{} +\DeclareOptionX{numerical}{} +\DeclareOptionX{galley}{} +\DeclareOptionX{raggedbottom}{} +\DeclareOptionX{tightenlines}{} +\DeclareOptionX{lengthcheck}{} +\DeclareOptionX{reprint}{} +\DeclareOptionX{eqsecnum}{} +\DeclareOptionX{secnumarabic}{} +\DeclareOptionX{floats}{} +\DeclareOptionX{stfloats}{} +\DeclareOptionX{endfloats}{} +\DeclareOptionX{endfloats*}{} +\DeclareOptionX{osa}{} +\DeclareOptionX{osameet}{} +\DeclareOptionX{opex}{} +\DeclareOptionX{tops}{} +\DeclareOptionX{josa}{} + +\newtoggle{@amsfonts} +\togglefalse{@amsfonts} +\DeclareOptionX{amsfonts}{\toggletrue{@amsfonts}} +\DeclareOptionX{noamsfonts}{} + +\newtoggle{@amssymb} +\togglefalse{@amssymb} +\DeclareOptionX{amssymb}{\toggletrue{@amssymb}} +\DeclareOptionX{amssymbol}{\toggletrue{@amssymb}} +\DeclareOptionX{noamssymb}{} + +\newtoggle{@amsmath} +\togglefalse{@amsmath} +\DeclareOptionX{amsmath}{\toggletrue{@amsmath}} +\DeclareOptionX{noamsmath}{} + +\DeclareOptionX{byrevtex}{} +\DeclareOptionX{floatfix}{} +\DeclareOptionX{nofloatfix}{} +\DeclareOptionX{ltxgridinfo}{} +\DeclareOptionX{outputdebug}{} +\DeclareOptionX{raggedfooter}{} +\DeclareOptionX{noraggedfooter}{} +\DeclareOptionX{frontmatterverbose}{} +\DeclareOptionX{linenumbers}{} +\DeclareOptionX{nomerge}{} +\DeclareOptionX{hypertext}{} +\DeclareOptionX{frontmatterverbose}{} +\DeclareOptionX{inactive}{} +\DeclareOptionX{groupedaddress}{} +\DeclareOptionX{unsortedaddress}{} +\DeclareOptionX{runinaddress}{} +\DeclareOptionX{superscriptaddress}{} + +\newtoggle{@unpublished} +\togglefalse{@unpublished} +\DeclareOptionX{unpublished}{\toggletrue{@unpublished}} + +\newtoggle{@accepted} +\togglefalse{@accepted} +\DeclareOptionX{accepted}[]{\ifstrempty{#1}{}{\def\@accepteddate{#1}}\toggletrue{@accepted}\togglefalse{@unpublished}} + +\newtoggle{@revtexcompatibility} +\togglefalse{@revtexcompatibility} +\DeclareOptionX{shorttitle}[]{\def\@shorttitle{#1}} +\DeclareOptionX{issue}[]{\def\@issue{#1}} +\DeclareOptionX{volume}[]{\def\@volume{#1}} +\DeclareOptionX{aps}{\toggletrue{@revtexcompatibility}} +\DeclareOptionX{pra}{\toggletrue{@revtexcompatibility}} +\DeclareOptionX{prb}{\toggletrue{@revtexcompatibility}} +\DeclareOptionX{pre}{\toggletrue{@revtexcompatibility}} +\DeclareOptionX{prl}{\toggletrue{@revtexcompatibility}} +\DeclareOptionX{prx}{\toggletrue{@revtexcompatibility}} +\DeclareOptionX{aip}{\toggletrue{@revtexcompatibility}} + +\newtoggle{@allowfontchangeintitle} +\togglefalse{@allowfontchangeintitle} +\DeclareOptionX{allowfontchangeintitle}{\toggletrue{@allowfontchangeintitle}} + +\newtoggle{@nopdfoutputerror} +\togglefalse{@nopdfoutputerror} +\DeclareOptionX{nopdfoutputerror}{\toggletrue{@nopdfoutputerror}} + +%remind people not to use \today on the arxiv +\newtoggle{@allowtoday} +\togglefalse{@allowtoday} +\DeclareOptionX{allowtoday}{\toggletrue{@allowtoday}} + +% set date to be empty as a default, otherwise latex will fill it with \@today which triggers the allowtoday error +\date{} + +\newtoggle{@noarxiv} +\togglefalse{@noarxiv} +\DeclareOptionX{noarxiv} +{ + \ExecuteOptionsX{a4paper,allowtoday,allowfontchangeintitle,nopdfoutputerror,unpublished} + \toggletrue{@noarxiv} +} + + +\ExecuteOptionsX{10pt,oneside,twocolumn,notitlepage,final} +\ProcessOptionsX +% Throw an error if no paper size was manually specified +% Simply defaulting to a4paper gives inconsistent behaviour when submitting to the arXiv as the arXiv seems to sometimes set a4paper and sometimes letterpaper, maybe depending on the geographic region of the submitter? +\iftoggle{@papersizespecified} +{ +} +{ + \setlength\paperheight {297mm}% + \setlength\paperwidth {210mm}% + \iftoggle{@noarxiv}{}{% + \ClassError{compositionalityarticle}{Please explicitly specify a paper size. Available options: a4paper, a5paper, b5paper, letterpaper, legalpaper, executivepaper. Not specifying a paper size can lead to inconsistent behavior when the manuscript is typeset by the arXiv. This error can be turned off by giving the noarxiv class option}{} + }% +} + +\input{size1\@ptsize.clo} + +%we patch the \usepackage command to enable the blacklisting of packages and to throw an error if \pdfoutput=1 was not included in the document before the first usepackage +\csdef{@packageblacklist}{} +\newcommand*{\@blacklistpackage}[2][]{ + \listxadd{\@packageblacklist}{#2}% + \ifstrempty{#1}{}{\csdef{@packageblacklisterrormessage#2}{#1 \string\usepackage{#2}}} +} + +\let\oldusepackage\usepackage +\renewcommand*{\usepackage}[2][]{ + \iftoggle{@nopdfoutputerror} + {% + } + { + \def\@pdfoutputerror{\ClassError{compositionalityarticle}{As suggested by the arXiv (https://arxiv.org/help/submit_tex), please add \string\pdfoutput=1 within the first 5 lines of the preamble of your main LaTeX file and before the first \string\usepackage command. Without this, the arXiv compiles your document with latex instead of pdflatex and hyperlinks in the bibliography broken over several lines will not work properly. See https://tex.stackexchange.com/questions/182523/publishing-to-arxiv-with-hyperlinks for more information. If you still want to use standard latex (for example because you depend on psfrag) instead of pdflatex despite this problem, you can disable this error by giving the nopdfoutputerror option to compositionalityarticle. In this case please check carefully that the links in the version of your document typeset on the arXiv, especially those in the bibliography, work properly}{}%see also https://tex.stackexchange.com/questions/341466/latex-macros-in-classwarning-or-classerror for why \string is necessary + } + \ifcsdef{pdfoutput}% + {% + \ifnumequal{\pdfoutput}{1} + {} + {\@pdfoutputerror}% + } + {% + \@pdfoutputerror% + } + } + \ifinlist{#2}{\@packageblacklist}{ + \ifcsdef{@packageblacklisterrormessage#2}{ + \ClassError{compositionalityarticle}{\csname @packageblacklisterrormessage#2\endcsname}{}}{} + }{\oldusepackage[#1]{#2}} +} + +\@blacklistpackage{titlesec} + +\ifbool{@twocolumn} + {\RequirePackage[margin=2cm,bottom=3cm]{geometry}} + {\RequirePackage[margin=3cm,bottom=3cm]{geometry}} + +\@blacklistpackage{geometry} +\setlength\lineskip{1\p@} +\setlength\normallineskip{1\p@} +\renewcommand*\baselinestretch{} +\setlength\parskip{0\p@ \@plus \p@} +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 + +\AfterEndPreamble{ + % avoid use of today + \ifcsdef{today} + { + \iftoggle{@allowtoday} + { + \let\oldtoday\today + \renewcommand*{\today}{\oldtoday\ClassWarning{compositionalityarticle}{If you intend to upload your manuscript to the arXiv, please manually replace any use of \string\today with the upload date. The arXiv typesets manuscripts on-demand, thus the output of \string\today may change over time}{}} + } % else + { + \renewcommand*{\today}{\ClassError{compositionalityarticle}{If you intend to upload your manuscript to the arXiv, please manually replace any use of \string\today with the upload date. The arXiv typesets manuscripts on-demand, thus the output of \string\today may change over time. If you do not intend to upload your manuscript to the arXiv, you may use the class option noarxiv or turn off this error by means of the allowtoday option}{}} + } + } + {} +} + + +% this was only loaded at begin document, +% but it needs to come before some user-invoked symbol fonts, eg MnSymbol.sty +% so now loading immediately (JG, 2020-08-14) + % avoid bitmap fonts by loading lmodern or at least checking for cm-super + \IfFileExists{lmodern.sty}{ + \RequirePackage{lmodern} + }{ + \IfFileExists{type1ec.sty}{}{ + \iftoggle{@noarxiv}{}{% + \ClassError{compositionalityarticle}{Either the lmodern or the cm-super package are required by compositionalityarticle in order to produce high quality pdf output. Please install the lmodern package, or, if this is not possible, the cm-super package. You can turn off this error message by giving the noarxiv class option}{} + } + } + } +\AtBeginDocument{ + % Define a revtex-style openone symbol + \IfFileExists{bbm.sty}{ + \RequirePackage{bbm} + \DeclareRobustCommand\openone{\mathbbm{1}} + }{ + \IfFileExists{dsfont.sty}{ + \RequirePackage{dsfont} + \DeclareRobustCommand\openone{\mathds{1}} + }{ + % This uses a similar technique to {revtex4-1}'s openone, + % namely two overstruck numeral 1s, but implemented using mboxes + % and math kerning as suggested by The Comprehensive LaTeX Symbol List. + \DeclareRobustCommand\openone{{\mbox{\small1}\mkern-5.5mu1}} + } + } + \RequirePackage{xcolor} + \definecolor{compositionalitypink}{RGB}{255,90,95}%compositionality pink + \definecolor{compositionalitydarkpink}{RGB}{255,70,76}%compositionality dark pink + \definecolor{compositionalitygray}{HTML}{555555} %compositionality gray +} + +\RequirePackage{ltxcmds} + +\let\origif@twocolumn\if@twocolumn +\def\class@name{ltxutil}%get rid of "You should define the class name before reading in this package. Using default" warning from ltxutils which is loaded by ltxgrid +\if@twocolumn + \RequirePackage{ltxgrid}%ltxgrid should be loaded before etoolbox, otherwise terrible things can happen: https://tex.stackexchange.com/questions/343856/biblatex-produces-incomplete-bcf-with-biber-backend?noredirect=1#comment843815_343856 but if this is actually done, even more terrible things happen, so we partially repair what ltxgrid messes up below... + \newcommand*{\twocolumn}[1][]{#1\twocolumngrid} + \newcommand*{\onecolumn}{\onecolumngrid} +\fi +\let\if@twocolumn\origif@twocolumn + +\let\col@number\@colnum + +\ltx@ifpackageloaded{ltxgrid}{ + %repair what ltxutils has destroyed (see https://tex.stackexchange.com/questions/343856/biblatex-produces-incomplete-bcf-with-biber-backend) + \patchcmd\enddocument + {\deadcycles} + {\let\AfterEndDocument\@firstofone + \@afterenddocumenthook + \deadcycles} + {} + {\AtEndDocument{% + \let\etb@@end\@@end + \def\@@end{% + \let\AfterEndDocument\@firstofone + \@afterenddocumenthook + \etb@@end}}} +}{} + +\setcounter{topnumber}{2} +\renewcommand*\topfraction{.7} +\setcounter{bottomnumber}{1} +\renewcommand*\bottomfraction{.3} +\setcounter{totalnumber}{3} +\renewcommand*\textfraction{.2} +\renewcommand*\floatpagefraction{.5} +\setcounter{dbltopnumber}{2} +\renewcommand*\dbltopfraction{.7} +\renewcommand*\dblfloatpagefraction{.5} + +\ifbool{@twoside}{ + \def\ps@headings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\thepage\hfil\slshape\leftmark}% + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\sectionmark##1{% + \markboth {\MakeUppercase{% + \ifnumgreater{\c@secnumdepth}{\z@}{\thesection\quad}{} + ##1}}{}}% + \def\subsectionmark##1{% + \markright {% + \ifnumgreater{\c@secnumdepth}{\@ne}{\thesubsection\quad}{} + ##1}}}% + }{ + \def\ps@headings{% + \let\@oddfoot\@empty + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\sectionmark##1{% + \markright {\MakeUppercase{% + \ifnumgreater{\c@secnumdepth}{\m@ne}{\thesection\quad}{} + ##1}}}}% +} + +\def\ps@myheadings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\thepage\hfil\slshape\leftmark}% + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\@gobbletwo + \let\sectionmark\@gobble + \let\subsectionmark\@gobble +} + +\iftoggle{@titlepage} +{ + \newcommand\maketitle{\begin{titlepage}% + % \let\footnotesize\small + \let\footnoterule\relax + \let \footnote \thanks + \null\vfil + \vskip 60\p@ + \begin{center}% + \@maketitle + \end{center}\par + % \@thanks + \vfil\null + \end{titlepage}% + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@maketitle\relax + % \global\let\@thanks\@empty + % \global\let\@author\@empty + % \global\let\@date\@empty + % \global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax + } +} +{ + \newcommand\maketitle{\par + \begingroup + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% + \long\def\@makefntext##1{\parindent 1em\noindent + \hb@xt@1.8em{% + \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% + \ifbool{@twocolumn} + {\ifnumequal{\col@number}{\@ne}{\@maketitle}{\twocolumn[\@maketitle]}} + {\global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle} + \thispagestyle{fancy}%\@thanks + \endgroup + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@maketitle\relax + % \global\let\@thanks\@empty + % \global\let\@author\@empty + % \global\let\@date\@empty + % \global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax + } +} + +\def\@maketitle{% + \sffamily + \null + \let \footnote \thanks + \noindent% + \begin{minipage}{\textwidth}% + \iftoggle{@titlepage}{\centering}{}% + \noindent{\huge\hyphenpenalty=5000 \@printtitle\par}% + \end{minipage}% + \vskip 1.5em% + \noindent\@printauthors + \vskip 1em% + \noindent\@printaffiliations + \vskip 0em% + \ifdefempty{\@date}{}{\noindent{\footnotesize\color{compositionalitygray}\@date}}% + \par + \vskip 1.5em + \makeatletter% + \begingroup + \hypersetup{% + pdftitle={\detokenize\expandafter{\@title}}, + pdfauthor={\@authorsonly}, + pdfkeywords={\@keywords}, + pdfcreator={LaTeX with hyperref package and class compositionalityarticle \csname ver@compositionalityarticle.cls\endcsname}, + }% + \endgroup + \makeatother% +} + +\setcounter{secnumdepth}{3} +\newcounter {part} +\newcounter {section} +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] +\newcounter {paragraph}[subsubsection] +\newcounter {subparagraph}[paragraph] +\renewcommand*\thepart {\@Roman\c@part} +\renewcommand*\thesection {\@arabic\c@section} +\renewcommand*\thesubsection {\thesection.\@arabic\c@subsection} +\renewcommand*\thesubsubsection{\thesubsection.\@arabic\c@subsubsection} +\renewcommand*\theparagraph {\thesubsubsection.\@arabic\c@paragraph} +\renewcommand*\thesubparagraph {\theparagraph.\@arabic\c@subparagraph} +\newcommand\part{% + \ifbool{@noskipsec}{\leavevmode}{} + \par + \addvspace{4ex}% + \boolfalse{@afterindent} + \secdef\@part\@spart} + +\def\@part[#1]#2{% +\ifnumgreater{\c@secnumdepth}{\m@ne} + {\refstepcounter{part}\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}} + {\addcontentsline{toc}{part}{#1}} +{\parindent \z@ \raggedright +\interlinepenalty \@M +\normalfont +\ifnumgreater{\c@secnumdepth}{\m@ne}{\Large\bfseries \partname\nobreakspace\thepart\par\nobreak}{} +\huge \bfseries #2% +\markboth{}{}\par}% +\nobreak +\vskip 3ex +\@afterheading% +} + +\def\@spart#1{% + {\parindent \z@ \raggedright + \interlinepenalty \@M + \normalfont + \huge \bfseries #1\par}% + \nobreak + \vskip 3ex + \@afterheading} + +\newcommand*\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\normalfont\Large\sffamily}} + +\newcommand*\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\large\sffamily}} + +\newcommand*\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\sffamily}} + +\newcommand*\paragraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}} + +\newcommand*\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}} + +\ifbool{@twocolumn}{\setlength\leftmargini{2em}}{\setlength\leftmargini{2.5em}} +\leftmargin \leftmargini +\setlength\leftmarginii {2.2em} +\setlength\leftmarginiii {1.87em} +\setlength\leftmarginiv {1.7em} + +\ifbool{@twocolumn}{ + \setlength\leftmarginv {.5em} + \setlength\leftmarginvi {.5em} +}{ + \setlength\leftmarginv {1em} + \setlength\leftmarginvi {1em} +} +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +\renewcommand*\theenumi{\@arabic\c@enumi} +\renewcommand*\theenumii{\@alph\c@enumii} +\renewcommand*\theenumiii{\@roman\c@enumiii} +\renewcommand*\theenumiv{\@Alph\c@enumiv} +\newcommand*\labelenumi{\theenumi.} +\newcommand*\labelenumii{(\theenumii)} +\newcommand*\labelenumiii{\theenumiii.} +\newcommand*\labelenumiv{\theenumiv.} +\renewcommand*\p@enumii{\theenumi} +\renewcommand*\p@enumiii{\theenumi(\theenumii)} +\renewcommand*\p@enumiv{\p@enumiii\theenumiii} +\newcommand*\labelitemi{\textbullet} +\newcommand*\labelitemii{\normalfont\bfseries \textendash} +\newcommand*\labelitemiii{\textasteriskcentered} +\newcommand*\labelitemiv{\textperiodcentered} +\newenvironment{description} +{\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} +{\endlist} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} + +\iftoggle{@titlepage} +{ + \newenvironment{abstract}{% + \ifdefempty{\maketitle}{\relax{}}{\maketitle} + \titlepage + \null\vfil + \thispagestyle{empty}% + \@beginparpenalty\@lowpenalty + \begin{center}% + \bfseries \abstractname + \@endparpenalty\@M + \end{center}}% + {\par\vfil\null\newpage\endtitlepage} +}{ + \newenvironment{abstract}{% + \ifdefempty{\maketitle}{\relax{}}{\maketitle}% + \ifbool{@twocolumn}{\bf}{\vskip 1em \quotation}\noindent\ignorespaces + }% + { + \ifbool{@twocolumn}{}{\endquotation\vskip 2em} + }% +} + +\newenvironment{verse} +{\let\\\@centercr + \list{}{\itemsep \z@ + \itemindent -1.5em% + \listparindent\itemindent + \rightmargin \leftmargin + \advance\leftmargin 1.5em}% + \item\relax} +{\endlist} + +\newenvironment{quotation} +{\list{}{\listparindent 1.5em% + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@ \@plus\p@}% + \item\relax} +{\endlist} + +\newenvironment{quote} +{\list{}{\rightmargin\leftmargin}% + \item\relax} +{\endlist} + +\newenvironment{titlepage} +{% + \ifbool{@twocolumn} + {\toggletrue{@restonecol}\onecolumn\newpage} + {\togglefalse{@restonecol}\newpage} + \thispagestyle{empty}% + \setcounter{page}\@ne +}{% + \iftoggle{@restonecol} + {\twocolumn} + {\newpage} + \ifbool{@twoside}{}{\setcounter{page}\@ne} +} + + + + +\newcommand{\appendix}[1]{% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \gdef\thesection{\@Alph\c@section} + \section*{\appendixname}% + #1% +} +\setlength\arraycolsep{5\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +\skip\@mpfootins = \skip\footins +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +\renewcommand*\theequation {\@arabic\c@equation} +\newcounter{figure} +\renewcommand*\thefigure {\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename\nobreakspace\thefigure} + +\newenvironment{figure} +{\@float{figure}} +{\end@float} + +\newenvironment{figure*} +{\@dblfloat{figure}} +{\end@dblfloat} + +\newcounter{table} +\renewcommand*\thetable{\@arabic\c@table} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename\nobreakspace\thetable} + +\newenvironment{table} +{\@float{table}} +{\end@float} + +\newenvironment{table*} +{\@dblfloat{table}} +{\end@dblfloat} + +\newlength\abovecaptionskip +\newlength\belowcaptionskip +\setlength\abovecaptionskip{10\p@} +\setlength\belowcaptionskip{0\p@} +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1: #2}% + \ifdimgreater{\wd\@tempboxa}{\hsize} + {#1: #2\par} + {\global\boolfalse{@minipage} + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}}% + \vskip\belowcaptionskip} + +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} + +\newcommand*\@pnumwidth{1.55em} +\newcommand*\@tocrmarg{2.55em} +\newcommand*\@dotsep{4.5} +\setcounter{tocdepth}{3} + +% We use a trick from Ivan Andrus (https://stackoverflow.com/a/2785740) +% to hide the "\section*{Contents}" command from the table of contents +% to avoid getting an ugly duplication of the Contents header inside +% the table itself. +% +% This trick consists of temporarily redefining \addcontentsline to +% do nothing during the expansion of the arguments to \tocless. +\newcommand{\nocontentsline}[3]{} +\newcommand{\tocless}[2]{\bgroup\let\addcontentsline=\nocontentsline#1{#2}\egroup} +\newcommand\tableofcontents{% + \tocless{\section*}{\contentsname + \@mkboth{% + \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}% + \@starttoc{toc}% +} + +\newcommand*\l@part[2]{% + \ifnumgreater{\c@tocdepth}{-2}{\relax + \addpenalty\@secpenalty + \addvspace{2.25em \@plus\p@}% + \setlength\@tempdima{3em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + {\leavevmode + \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par + \nobreak + \endgroup + }{}% +} + +\newcommand*\l@section[2]{% + \ifnumgreater{\c@tocdepth}{\z@}{ + \addpenalty\@secpenalty + \addvspace{1.0em \@plus\p@}% + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \bfseries + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \endgroup + }{}% +} + +\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} +\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} +\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}} +\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}} + +\newcommand\listoffigures{% + \section*{\listfigurename}% + \@mkboth{\MakeUppercase\listfigurename}% + {\MakeUppercase\listfigurename}% + \@starttoc{lof}% +} + +\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\newcommand\listoftables{% + \section*{\listtablename}% + \@mkboth{% + \MakeUppercase\listtablename}% + {\MakeUppercase\listtablename}% + \@starttoc{lot}% +} + +\let\l@table\l@figure +% Declare a new \acknowledgements command for {revtex4-1} +% compatability. +\newcommand*{\acknowledgmentsname}{Acknowledgments} +\newcommand{\acknowledgments}[1]{% + \section*{\acknowledgmentsname}% + #1% +} + +\newdimen\bibindent +\setlength\bibindent{1.5em} + +\newenvironment{thebibliography}[1] +{% + \makeatletter% + \iftoggle{@noarxiv}{}{% + \ltx@ifpackageloaded{natbib}{}{% + \ltx@ifpackageloaded{biblatex}{ + \ClassWarning{compositionalityarticle}{Unfortunately compositionalityarticle cannot recommend the use of BibLaTeX due to incompatibilities between locally installed versions of BibLaTeX and the version used by the arXiv.}% + }{% + \ClassWarning{compositionalityarticle}{The compositionalityarticle class recommends generating the bibliography from a BibTeX file containing DOIs with natbib in order to ensure the generation of DOI hyperlinks}% + }% + }% + }% + \makeatother% + \section*{\refname}% + \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand*\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m + \setlength{\itemsep}{0pt plus 0.3ex} +} +{\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + +\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em} +\let\@openbib@code\@empty + +\newenvironment{theindex}{% + \ifbool{@twocolumn}{\togglefalse{@restonecol}}{\toggletrue{@restonecol}} + \twocolumn[\section*{\indexname}]% + \@mkboth{\MakeUppercase\indexname}% + {\MakeUppercase\indexname}% + \thispagestyle{fancy}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \columnseprule \z@ + \columnsep 35\p@ + \let\item\@idxitem% +} +{ + \iftoggle{@restonecol} + {\onecolumn} + {\clearpage} +} + +\newcommand\@idxitem{\par\hangindent 40\p@} +\newcommand\subitem{\@idxitem \hspace*{20\p@}} +\newcommand\subsubitem{\@idxitem \hspace*{30\p@}} +\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} + +\renewcommand*\footnoterule{% + \kern-3\p@ + \hrule\@width.4\columnwidth + \kern2.6\p@} + +\newcommand*\@makefntext[1]{% +\parindent 1em% +\noindent +\hb@xt@1.8em{\hss\@makefnmark}#1} + +\newcommand*\contentsname{Contents} +\newcommand*\listfigurename{List of Figures} +\newcommand*\listtablename{List of Tables} +\newcommand*\refname{References} +\newcommand*\indexname{Index} +\newcommand*\figurename{Figure} +\newcommand*\tablename{Table} +\newcommand*\partname{Part} +\newcommand*\appendixname{Appendix} +\newcommand*\abstractname{Abstract} + +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +\setlength\columnsep{20\p@} +\setlength\columnseprule{0\p@} +\setlength{\footnotesep}{\baselineskip} +\RequirePackage{fancyhdr} +\@blacklistpackage{fancyhdr} +\pagestyle{fancy} +\renewcommand{\headrule}{} +\renewcommand{\footrule}{\vbox to 0pt{\hbox to\headwidth{\color{compositionalitygray}\leaders\hrule\hfil}\vss}} +\fancyhf{} +\iftoggle{@accepted} +{\fancyfoot[R]{\sffamily\iftoggle{@unpublished}{\thepage}{\textcolor{compositionalitypink}{\thepage}}}} +{\fancyfoot[C]{\sffamily\iftoggle{@unpublished}{\thepage}{\textcolor{compositionalitypink}{\thepage}}}} +\iftoggle{@accepted} + {\fancyfoot[L]{\usebox{\@compositionalityacceptedbox}} + \fancyhead[R]{\textcolor{compositionalitypink}{\scriptsize{\ifcsdef{@volume}{Volume \@volume }{}, \ifcsdef{@issue}{Issue \@issue }{}. ISSN 2631-4444}}}} +% + +% validate the date format to be YYYY-MM-DD +\AtBeginDocument{ + \ifcsdef{@accepteddate} + {% + \iftoggle{@xstring} + {% + \RequirePackage{xstring} + \def\@dateerror{\ClassError{compositionalityarticle}{The date in the accepted option must be given in the format YYYY-MM-DD}{}} + % test that we have two -s + \IfSubStr[2]{\@accepteddate}{-}{}{\@dateerror} + \IfSubStr[3]{\@accepteddate}{-}{\@dateerror}{} + \StrBefore[1]{\@accepteddate}{-}[\@accepteddateyear] + \StrBetween[1,2]{\@accepteddate}{-}{-}[\@accepteddatemonth] + \StrBehind[2]{\@accepteddate}{-}[\@accepteddateday] + \IfDecimal{\@accepteddateyear}{}{\@dateerror} + \IfDecimal{\@accepteddatemonth}{}{\@dateerror} + \IfDecimal{\@accepteddateday}{}{\@dateerror} + \StrLen{\@accepteddateyear}[\@accepteddateyearlength] + \StrLen{\@accepteddatemonth}[\@accepteddatemonthlength] + \StrLen{\@accepteddateday}[\@accepteddatedaylength] + \ifnumcomp{\@accepteddateyearlength}{>}{3}{}{\@dateerror} + \ifnumcomp{\@accepteddatemonthlength}{=}{2}{}{\@dateerror} + \ifnumcomp{\@accepteddatedaylength}{=}{2}{}{\@dateerror}% + } + {} + } + {} +} + +%MODIFIED 29.11 + + +\pagenumbering{arabic} +\ifbool{@twoside}{}{\raggedbottom} +\ifbool{@twocolumn}{ + \twocolumn + \sloppy + \flushbottom +}{ + \onecolumn +} + +%the following is mostly taken from revtex4-1 (see https://www.ctan.org/pkg/revtex4-1) +\ifbool{@twocolumn}{ + \newbox\widetext@top + \newbox\widetext@bot + \newenvironment{widetext}{% + \par\ignorespaces + \setbox\widetext@top\vbox{% + \hb@xt@\hsize{% + {\color{compositionalitygray}% + \leaders\hrule\hfil + \vrule\@height6\p@} + }% + }% + \setbox\widetext@bot\hb@xt@\hsize{% + {\color{compositionalitygray}% + \vrule\@depth6\p@ + \leaders\hrule\hfil} + }% + \onecolumngrid + \vskip10\p@ + \dimen@\ht\widetext@top\advance\dimen@\dp\widetext@top + \cleaders\box\widetext@top\vskip\dimen@ + \vskip6\p@ + \prep@math@patch + }{% + \par + \vskip6\p@ + \setbox\widetext@bot\vbox{% + \hb@xt@\hsize{\hfil\box\widetext@bot}% + }% + \dimen@\ht\widetext@bot\advance\dimen@\dp\widetext@bot + \cleaders\box\widetext@bot\vskip\dimen@ + \vskip8.5\p@ + \twocolumngrid\global\booltrue{@ignore} + \booltrue{@endpe} + }% +}{ + \newenvironment{widetext}{}{} +} + + +%title +\def\@printtitle{% + {% + \iftoggle{@unpublished}% + {% + \@printtitletextwithappropriatefontsize% + }% + {% + \edef\@titleexpanded{\detokenize\expandafter{\@title}}% + \iftoggle{@xstring}% + {\saveexploremode\exploregroups\StrSubstitute{\@titleexpanded}{ }{\%20}[\@titleforurl]\restoreexploremode}% + {\gdef\@titleforurl{\@titleexpanded}}% + \href{https://compositionality-journal.org/\@shorttitle/} + {% + \color{compositionalitypink}{% + \@printtitletextwithappropriatefontsize\unskip% + }% + }% + }% + }% +} +% In the macro below we compute the appropriate font size of the title. +% We use \Huge if the title fits on one line and \huge if it extends over more +% than one line in font size \Huge +\def\@titleatfontsize#1{% + #1% + \begingroup% + \raggedright% + \iftoggle{@allowfontchangeintitle} + {} + {% + \def\selectfont{\ClassError{compositionalityarticle}{When submitting to compositionality, you are not supposed to use \string\textbf{}, \string\bf, \string\textit{} or other font formating commands inside \string\title{}. Please remove all such commands from your \string\title{}. If you really have to change the font for some part of the title you can turn off this error by giving the option allowfontchangeintitle}{}}%solution from https://tex.stackexchange.com/questions/347596/disallowing-textbf-it-sffamily-in-argument-of-macro-or-environment + }% + \@title% + \endgroup% +}% + +\def\@printtitletextwithappropriatefontsize{% + \newsavebox{\@titelsaveboxHuge}% + \savebox{\@titelsaveboxHuge}{% + \parbox[b]{\linewidth}{% + \@titleatfontsize{\Huge}% + }% + }% + \newsavebox{\@titelsaveboxHugeoneline}% + \savebox{\@titelsaveboxHugeoneline}{% + \@titleatfontsize{\Huge}% + }% + \newsavebox{\@titelsaveboxhhuge}% + \savebox{\@titelsaveboxhhuge}{% + \parbox[b]{\linewidth}{% + \@titleatfontsize{\huge}% + }% + }% + \ifdimgreater{\ht\@titelsaveboxHuge}{\ht\@titelsaveboxHugeoneline} + {\@titleatfontsize{\huge}%\usebox{\@titelsaveboxhhuge}% using huge because \the\ht\@titelsaveboxHuge{} is larger than \the\ht\@titelsaveboxHugeoneline{} + } + {\@titleatfontsize{\Huge}% using Huge because \the\ht\@titelsaveboxHuge{} is not larger than \the\ht\@titelsaveboxHugeoneline{} + } +} + +%renew \title to allow for and ignore an optional argument +\renewcommand{\title}[2][]{\gdef\@title{#2}} +% author handling +\newcounter{@authorcounter} +\csdef{@authors}{} +\renewcommand{\author}[2][]{% + \ifstrempty{#1}{% + \internal@author{#2}% + }{% + \internal@elseauthor{#1}{#2} + }% + \csdef{@authorname\the@authorcounter}{#2}% + \def\@currentauthornumber{\the@authorcounter}% +}% +\def\addauthortolabel#1#2{% + \ifcsdef{authorswithlabel#2}{}{\csdef{authorswithlabel#2}{}}% + \listcsxadd{authorswithlabel#2}{#1}}% +\def\internal@elseauthor#1#2{% + \stepcounter{@authorcounter} + \ifcsdef{@authors}{}{\csdef{@authors}{}}% + \listadd{\@authors}{#2}% + \forcsvlist{\addauthortolabel{\the@authorcounter}}{#1}% + \ifbool{@startnewauthorgroup}{\csundef{@authorgroup}}{}% + \ifcsdef{@authorgroup}{}{\csdef{@authorgroup}{}}% + \listxadd{\@authorgroup}{\the@authorcounter}% + \boolfalse{@startnewauthorgroup}% +}% +\def\internal@author#1{% + \stepcounter{@authorcounter} + \ifcsdef{@authors}{}{\csdef{@authors}{}}% + \listadd{\@authors}{#1}% + \ifbool{@startnewauthorgroup}{\csundef{@authorgroup}}{} + \ifcsdef{@authorgroup}{}{\csdef{@authorgroup}{}}% + \listxadd{\@authorgroup}{\the@authorcounter} + \boolfalse{@startnewauthorgroup} +} +\def\@@spaceafter#1{#1 } +\def\@@@comma{\def\@@@comma{,}} +\def\@@commaspacebefore#1{\@@@comma{}#1} +\def\@printauthor#1#2{\def\footnote{\ClassError{compositionalityarticle}{You must not put a \string\footnote{} command inside the argument of \string\author}{}}\ifcsdef{author#1orcid}{\href{https://orcid.org/\csname author#1orcid\endcsname}{\color{black}#2}}{#2}\ifnumcomp{\the@affiliationcounter}{>}{1}{\textsuperscript{\forlistcsloop{\@@commaspacebefore}{author#1affiliations}\unskip}}{}\ifnumcomp{#1}{<}{\the@authorcounter-1}{, }{\ifnumcomp{#1}{=}{\the@authorcounter-1}{\ifnumcomp{#1}{=}{1}{ and }{, and }}{}}} +\def\@printauthors{% + \newcounter{@authornum}% + \large\forlistloop{\stepcounter{@authornum}% + \ifcsdef{author\the@authornum hasextras}{% + \insert\footins{\footnotesize% + % \interlinepenalty\interfootnotelinepenalty + % \splittopskip\footnotesep + % \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \iftoggle{@titlepage} + {\hsize\dimexpr \linewidth\relax \@parboxrestore}% + {\ifbool{@twocolumn} + {\hsize\dimexpr 0.5\linewidth-0.5\columnsep\relax \@parboxrestore} + {\hsize\dimexpr \linewidth\relax \@parboxrestore}% + } + % \flushleft% + % \baselineskip=0pt% + \@printauthorextrainfo{\the@authornum}\vspace{0.5\baselineskip}% + }}{}% + \@printauthor\the@authornum}{\@authors}% +} +\def\@@addcommabetween#1{#1, }%this adds an ugly extra comma at the end but the variant below is not expandable and therefore leads to ugly warnings: https://tex.stackexchange.com/questions/50978/macro-to-extract-typeset-plain-text-from-a-command +%\def\@@addcommabetween#1{\ifdef{\firstauthoronly}{, }{\def\firstauthoronly{\empty}}#1} +\def\@authorsonly{\forlistloop{\@@addcommabetween}{\@authors}} +% affiliation handling +\newbool{@startnewauthorgroup} +\newcounter{@affiliationcounter} +\def\@addaffiliation#1#2{ + \ifcsdef{author#2affiliations}{}{\csdef{author#2affiliations}{}}% + \listcsgadd{author#2affiliations}{#1} +} +\newcommand{\address}[2][]{\affiliation[#1]{#2}} + +%for compatibility with authblk +\@blacklistpackage{authblk} +\newcommand{\affil}[2][]{ + \affiliation[#1]{#2}} +\newcommand{\affiliation}[2][]{% + \ifstrempty{#1}{% + \internal@affiliation{#2}% + }{% + \elseinternal@affiliation{#1}{#2} + }}% +\def\elseinternal@affiliation#1#2{% + \booltrue{@startnewauthorgroup} + \ifcsdef{affiliations}{}{\csdef{affiliations}{}}% + \expandafter\def\csname\detokenize{#2}\endcsname{#2}% + \stepcounter{@affiliationcounter}% + \listxadd{\affiliations}{\detokenize{#2}}% + \csxdef{affiliation\detokenize{#2}number}{\the@affiliationcounter{}}% + \ifcsdef{authorswithlabel#1}{% + \forlistcsloop{\@addaffiliation{\csname affiliation\detokenize{#2}number\endcsname}}{authorswithlabel#1}% + }{}% +} +\def\internal@affiliation#1{% + \booltrue{@startnewauthorgroup} + \ifcsdef{affiliations}{}{\csdef{affiliations}{}}% + \expandafter\def\csname\detokenize{#1}\endcsname{#1} %to handle special characters such as \'a and \l we create a macro whose name is the detokenized version of #1 and that expands to #1 and later call it in \@printaffiliation + \xifinlist{\detokenize{#1}}{\affiliations}{}{\stepcounter{@affiliationcounter}\listxadd{\affiliations}{\detokenize{#1}}\csxdef{affiliation\detokenize{#1}number}{\the@affiliationcounter{}}}% + \forlistloop{\@addaffiliation{\csname affiliation\detokenize{#1}number\endcsname}}{\@authorgroup}% +} +\def\@printaffiliation#1#2{\ifnumcomp{\the@affiliationcounter}{>}{1}{\llap{\textsuperscript{#1}}}{}\csname #2\endcsname\ifnumcomp{#1}{<}{\the@affiliationcounter}{\newline}{}} +\def\@printaffiliations{% + \ifcsdef{affiliations}{}{\csdef{affiliations}{}}% + \newcounter{@affiliationnum}% + \ifnumcomp{\the@affiliationcounter}{>}{1}{% + \settowidth{\leftskip}{\footnotesize\textsuperscript{\the@affiliationcounter}}% + }{}% + {\footnotesize\color{compositionalitygray}% + \forlistloop{\stepcounter{@affiliationnum}\@printaffiliation\the@affiliationnum}{\affiliations}}% +} +%collaboration and altaffiliation +\newcommand{\collaboration}[1]{\author{#1}} +\newcommand{\altaffiliation}[2][]{\affiliation{#1#2}} + +% email, homepage, and thanks handling +% be careful - this section is highly sensitive to the positioning of the % marks +\newbool{authorextrainfo@first} +\def\@printauthorextrainfo#1{ + \booltrue{authorextrainfo@first}% + \csname @authorname#1\endcsname: + \ifcsdef{author#1emails} + {% + \ifbool{authorextrainfo@first}{}{\unskip,\space}% + \forlistcsloop{\@@spaceafter}{author#1emails}% + \boolfalse{authorextrainfo@first}% + } + {}% + \ifcsdef{author#1homepages} + {% + \ifbool{authorextrainfo@first}{}{\unskip,\space}% + \forlistcsloop{\@@spaceafter}{author#1homepages}% + \boolfalse{authorextrainfo@first}% + } + {}% + \ifcsdef{author#1orcid} + {% + \ifbool{authorextrainfo@first}{}{\unskip,\space}% + \lower0.3ex\hbox{\includegraphics[height=2ex]{ORCIDiD_iconvector.pdf}}\thinspace% + \csuse{author#1orcid}% + \boolfalse{authorextrainfo@first}% + } + {}% + \ifcsdef{author#1thanks} + {% + \ifbool{authorextrainfo@first}{}{\unskip.\space}% + \forlistcsloop{\@@spaceafter}{author#1thanks}% + \boolfalse{authorextrainfo@first}% + } + {}% +} + +\newcommand{\email}[2][]{% + \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\email{} may only appear after the first \string\author{} command}{}} + \@email{#1}{\href{mailto:#2}{#2}}} +\newcommand{\homepage}[2][]{% + \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\homepage{} may only appear after the first \string\author{} command}{}} + \@homepage{#1}{\href{#2}{#2}}} +\renewcommand{\thanks}[2][]{% + \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\thanks{} may only appear after the first \string\author{} command}{}} + \@thanks{#1}{#2}} +\newcommand{\orcid}[2][]{% + \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\orcid{} may only appear after the first \string\author{} command}{}} + \@orcid{#1}{#2}} +\def\@email#1#2{%} + \@addemail{#1#2}{\@currentauthornumber} + \csdef{author\@currentauthornumber hasextras}{} +} +\def\@homepage#1#2{% + \ifcsdef{@currentauthornumber}{}{\def\@currentauthornumber{0}}%in case \homepage is called before the first author + \@addhomepage{#1#2}{\@currentauthornumber} + \csdef{author\@currentauthornumber hasextras}{} +} +\def\@thanks#1#2{% + \ifcsdef{@currentauthornumber}{}{\def\@currentauthornumber{0}}%in case \thanks is called before the first author + \@addthanks{#1#2}{\@currentauthornumber} + \csdef{author\@currentauthornumber hasextras}{} +} +\def\@orcid#1#2{% + \ifcsdef{@currentauthornumber}{}{\def\@currentauthornumber{0}}%in case \orcid is called before the first author + \@addorcid{#1#2}{\@currentauthornumber} + \csdef{author\@currentauthornumber hasextras}{} +} +\def\@addemail#1#2{ + \ifcsdef{author#2emails}{}{\csdef{author#2emails}{}}% + \listcsgadd{author#2emails}{#1} +} +\def\@addhomepage#1#2{ + \ifcsdef{author#2homepages}{}{\csdef{author#2homepages}{}}% + \listcsgadd{author#2homepages}{#1} +} +\def\@addthanks#1#2{ + \ifcsdef{author#2thanks}{}{\csdef{author#2thanks}{}}% + \listcsgadd{author#2thanks}{#1} +} +\def\@addorcid#1#2{ + \csdef{author#2orcid}{#1}% +} + + +\newtoggle{@xstring} +\IfFileExists{xstring.sty}{\toggletrue{@xstring}}{\togglefalse{@xstring}} + +\AtBeginDocument{ + \iftoggle{@xstring} + {\RequirePackage{xstring}} + {} + + \iftoggle{@accepted} + {% + \newsavebox\@compositionalityacceptedbox + + + \newcommand {\logo} {\raisebox{-0.15cm}[0.1cm]{\includegraphics[width=0.035\textwidth, height=0.035\textwidth]{logo.eps}}} + \savebox\@compositionalityacceptedbox{{\sffamily\scriptsize \logo\textcolor{compositionalitypink}{Accepted in Compositionality on \ifcsdef{@accepteddate}{\@accepteddate}{}.}}}} + + + + + + {} +} +%elsearticle style extra header information +\newcommand{\ead}[2][]{ + \ifstrempty{#1}{ + \email{#2} + }{ + \iftoggle{@xstring} + {\IfStrEq{#1}{url}{\homepage{#2}}{\email{#2}}} + {email{#2}} + } +} +\AtEndPreamble{ + \providecommand{\@elsearticlecommandsnotsupportederror}{\ClassError{compositionalityarticle}{The elsearticle style \string\cortext{}, \string\corref{}, \string\fntext{}, \string\fnref{}, \string\tnotetext{}, and \string\tnoteref{} commands are not supported by compositionalityarticle. Please refrain from using footnotes in the title part of your document and use the \string\tahnks{} command for author footnotes instead.}{}} + \providecommand{\cortext}[2][]{\@elsearticlecommandsnotsupportederror} %corresponding author information + \providecommand{\corref}[1]{\@elsearticlecommandsnotsupportederror} %corresponding author information reference + \providecommand{\fntext}[2][]{\@elsearticlecommandsnotsupportederror} %author footnote + \providecommand{\fnref}[1]{\@elsearticlecommandsnotsupportederror} %author footnot reference + \providecommand{\tnotetext}[2][]{\@elsearticlecommandsnotsupportederror} %title footnote + \providecommand{\tnoteref}[1]{\@elsearticlecommandsnotsupportederror} %title footnote reference +} + +% set default options for hyperref to make links more pretty, and add backwards pagerefs to bibliography +\PassOptionsToPackage{colorlinks=true,hyperindex,backref=page}{hyperref} + +\iftoggle{@unpublished} + {\PassOptionsToPackage{allcolors=gray}{hyperref}} + {\PassOptionsToPackage{allcolors=compositionalitydarkpink}{hyperref}} + +\ifcsdef{pdfoutput} +{ + \ifnumequal{\pdfoutput}{0} + {} + {\PassOptionsToPackage{breaklinks=true}{hyperref}}%setting this option produces a warning if \pdfoutput=0 +} +{} + +%enable DOIs if biblatex is used by default +\PassOptionsToPackage{doi=true}{biblatex} + +\AtBeginDocument{% + + \RequirePackage{hyperref}% + + \@ifpackageloaded{natbib}{% + \setlength{\bibsep}{0pt plus 0.3ex} + \@ifpackageloaded{doi}{}{% + \providecommand{\doi}[1]{} + \renewcommand{\doi}[1]{\href{https://doi.org/\detokenize{#1}}{https://doi.org/\detokenize{#1}}}% + }% + }{% + \@ifpackageloaded{biblatex}{ + \DeclareFieldFormat{doi}{\mkbibacro{DOI}\addcolon\space\href{https://doi.org/\detokenize{#1}}{\detokenize{#1}}} + \setcounter{biburllcpenalty}{1000} + \setcounter{biburlucpenalty}{1000} + \setcounter{biburlnumpenalty}{1000} + }{}% + } +} + +\def\@keywords{} +\providecommand{\keywords}{} +\renewcommand{\keywords}[1]{\def\@keywords{#1}} + +\iftoggle{@amsfonts} + {\RequirePackage{amsfonts}} + {} +\iftoggle{@amssymb} + {\RequirePackage{amssymb}} + {} +\iftoggle{@amsmath} + {\RequirePackage{amsmath}} + {} + +\iftoggle{@revtexcompatibility} +{ + \PassOptionsToPackage{numbers}{natbib} + \PassOptionsToPackage{sort&compress}{natbib} + + \providecommand{\ao}{Appl.\ Opt.} + \providecommand{\ap}{Appl.\ Phys.} + \providecommand{\apl}{Appl.\ Phys.\ Lett.} + \providecommand{\apj}{Astrophys.\ J.} + \providecommand{\bell}{Bell Syst.\ Tech.\ J.} + \providecommand{\jqe}{IEEE J.\ compositionality Electron.} + \providecommand{\assp}{IEEE Trans.\ Acoust.\ Speech Signal Process.} + \providecommand{\aprop}{IEEE Trans.\ Antennas Propag.} + \providecommand{\mtt}{IEEE Trans.\ Microwave Theory Tech.} + \providecommand{\iovs}{Invest.\ Ophthalmol.\ Vis.\ Sci.} + \providecommand{\jcp}{J.\ Chem.\ Phys.} + \providecommand{\jmo}{J.\ Mod.\ Opt.} + \providecommand{\josa}{J.\ Opt.\ Soc.\ Am.} + \providecommand{\josaa}{J.\ Opt.\ Soc.\ Am.\ A} + \providecommand{\josab}{J.\ Opt.\ Soc.\ Am.\ B} + \providecommand{\jpp}{J.\ Phys.\ (Paris)} + \providecommand{\nat}{Nature (London)} + \providecommand{\oc}{Opt.\ Commun.} + \providecommand{\ol}{Opt.\ Lett.} + \providecommand{\pl}{Phys.\ Lett.} + \providecommand{\pra}{Phys.\ Rev.\ A} + \providecommand{\prb}{Phys.\ Rev.\ B} + \providecommand{\prc}{Phys.\ Rev.\ C} + \providecommand{\prd}{Phys.\ Rev.\ D} + \providecommand{\pre}{Phys.\ Rev.\ E} + \providecommand{\prl}{Phys.\ Rev.\ Lett.} + \providecommand{\rmp}{Rev.\ Mod.\ Phys.} + \providecommand{\pspie}{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.} + \providecommand{\sjqe}{Sov.\ J.\ compositionality Electron.} + \providecommand{\vr}{Vision Res.} + \newenvironment{ruledtabular}{\ClassError{compositionalityarticle}{The compositionalityarticle class does not support the ruledtabular environment. Consider using the booktabs package for tables and the table* environment for tables that span two columns.}{}}{} + + \AtBeginDocument{% + \providecommand{\pacs}[1]{} + \providecommand{\preprint}[1]{} + \providecommand{\volumeyear}[1]{} + \providecommand{\volumenumber}[1]{} + \providecommand{\issuenumber}[1]{} + \providecommand{\eid}[1]{} + \providecommand{\startpage}[1]{} + \def\endpage#1{\gdef\@endpage{#1}} + } + + \AtEndPreamble{% in compatibility mode we load natbib, but only if biblatex has not been loaded. We have to do this AtEndPreamble because natbib can not be loaded AtBeginDocument + \@ifpackageloaded{biblatex}{}{% + \@ifpackageloaded{natbib}{}{% + \usepackage{natbib} + }% + } + \let\@recordedbibliographystyle\relax + \let\@origbibliographystyle\bibliographystyle + \renewcommand{\bibliographystyle}[1]{% + \@origbibliographystyle{#1}% + \gdef\@recordedbibliographystyle{#1}% + } + \let\@origbibliography\bibliography + \renewcommand{\bibliography}[1]{% + \ifx\@recordedbibliographystyle\relax\bibliographystyle{plainnat}\fi + \ltx@ifpackageloaded{natbib}{}{% + \ltx@ifpackageloaded{biblatex}{}{% + \ClassWarning{compositionalityarticle}{You are manually generating your bibliography. Please make sure that all references include DOI hyperlinks. compositionalityarticle recommends the use of BibTeX together with the natbib package for generating the bibliography.}}}% + \@origbibliography{#1}} + \providecommand\textcite[1]{\citet{#1}} + \providecommand\onlinecite[1]{\cite{#1}} + } +} +{ +} + +\newenvironment{acknowledgements}{\section*{Acknowledgements}}{} + +\AtBeginDocument{% + \providecommand\text[1]{ + \ClassError{compositionalityarticle}{To use the \string\text{} command please load the mathtools package}{} + } +} + +\PassOptionsToPackage{font={small,sf}}{caption} + +\AtEndPreamble{ + \RequirePackage{caption} +} + +\@blacklistpackage[You are not supposed to load custom font packages such as]{berasans} +\@blacklistpackage[You are not supposed to load custom font packages such as]{arev} +\@blacklistpackage[You are not supposed to load custom font packages such as]{avant} +\@blacklistpackage[You are not supposed to load custom font packages such as]{bera} +\@blacklistpackage[You are not supposed to load custom font packages such as]{bookman} +\@blacklistpackage[You are not supposed to load custom font packages such as]{cabin} +\@blacklistpackage[You are not supposed to load custom font packages such as]{chancery} +\@blacklistpackage[You are not supposed to load custom font packages such as]{charter} +\@blacklistpackage[You are not supposed to load custom font packages such as]{cmbright} +\@blacklistpackage[You are not supposed to load custom font packages such as]{concrete} +\@blacklistpackage[You are not supposed to load custom font packages such as]{courier} +\@blacklistpackage[You are not supposed to load custom font packages such as]{dejavu} +\@blacklistpackage[You are not supposed to load custom font packages such as]{droid} +\@blacklistpackage[You are not supposed to load custom font packages such as]{drm} +\@blacklistpackage[You are not supposed to load custom font packages such as]{ebgaramond} +\@blacklistpackage[You are not supposed to load custom font packages such as]{euler} +\@blacklistpackage[You are not supposed to load custom font packages such as]{fourier} +\@blacklistpackage[You are not supposed to load custom font packages such as]{fouriernc} +\@blacklistpackage[You are not supposed to load custom font packages such as]{gentium} +\@blacklistpackage[You are not supposed to load custom font packages such as]{helvet} +\@blacklistpackage[You are not supposed to load custom font packages such as]{inconsolata} +\@blacklistpackage[You are not supposed to load custom font packages such as]{kpfonts} +\@blacklistpackage[You are not supposed to load custom font packages such as]{lato} +\@blacklistpackage[You are not supposed to load custom font packages such as]{libertineotf} +\@blacklistpackage[You are not supposed to load custom font packages such as]{libertine} +\@blacklistpackage[You are not supposed to load custom font packages such as]{librebaskerville} +\@blacklistpackage[You are not supposed to load custom font packages such as]{lmodern} +\@blacklistpackage[You are not supposed to load custom font packages such as]{mathdesign} +\@blacklistpackage[You are not supposed to load custom font packages such as]{mathpazo} +\@blacklistpackage[You are not supposed to load custom font packages such as]{mathptmx} +\@blacklistpackage[You are not supposed to load custom font packages such as]{newcent} +\@blacklistpackage[You are not supposed to load custom font packages such as]{newtx} +\@blacklistpackage[You are not supposed to load custom font packages such as]{quattrocento} +\@blacklistpackage[You are not supposed to load custom font packages such as]{tgadventor} +\@blacklistpackage[You are not supposed to load custom font packages such as]{tgbonum} +\@blacklistpackage[You are not supposed to load custom font packages such as]{tgchorus} +\@blacklistpackage[You are not supposed to load custom font packages such as]{tgcursor} +\@blacklistpackage[You are not supposed to load custom font packages such as]{tgheros} +\@blacklistpackage[You are not supposed to load custom font packages such as]{tgpagella} +\@blacklistpackage[You are not supposed to load custom font packages such as]{tgschola} +\@blacklistpackage[You are not supposed to load custom font packages such as]{tgtermes} +\@blacklistpackage[You are not supposed to load custom font packages such as]{times} +\@blacklistpackage[You are not supposed to load custom font packages such as]{yfonts} + +\iftoggle{@nopdfoutputerror}{}{\pdfoutput=0} %Set \pdfoutput=0 so that we can check later during \usepackage whether the authors did put \pdfoutput=1 into their document, bit only if the nopdfoutputerror was not given +\endinput +%% +%% End of file `compositionalityarticle.cls'. From 4b7d3ef4ed5bc142e55f0cc13a1fc18b095ce5c7 Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Wed, 15 May 2024 15:47:00 +0300 Subject: [PATCH 06/34] improve metadata rendering --- .gitignore | 2 +- compositionalityarticle-doc-new.tex | 12 +++++++++--- compositionalityarticle.cls | 10 ++++++---- compositionalityarticle.dtx | 10 ++++++---- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 3cb7bf7..0e7c528 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ *.cb *.cb2 .*.lb - +*.hd ## Intermediate documents: *.dvi *.xdv diff --git a/compositionalityarticle-doc-new.tex b/compositionalityarticle-doc-new.tex index 29e9b4b..7133e7e 100644 --- a/compositionalityarticle-doc-new.tex +++ b/compositionalityarticle-doc-new.tex @@ -2,8 +2,12 @@ accepted=2020-05-01, issue=1, volume=2, + a4paper, ]{compositionalityarticle} +\usepackage{caption} +\captionsetup{margin=10pt,font=small,labelfont=sf} + \usepackage[utf8]{inputenc} \usepackage[english]{babel} \usepackage[T1]{fontenc} @@ -27,17 +31,19 @@ \email{latex@compositionality-journal.org} \homepage{http://compositionality-journal.org} \orcid{0000-0003-0290-4698} -\thanks{You can use the \texttt{\string\email}, \texttt{\string\homepage}, \texttt{\string\orcid}, and \texttt{\string\thanks} commands to add additional information for the preceding \texttt{\string\author}. If applicable, this can also be used to indicate that a work has previously been published in conference proceedings.} \affiliation{MIT, Mathematics Department, Boston, USA} +% \author{Nina Otter} \email{latex@compositionality-journal.org} \orcid{0000-0002-3578-1420} \affiliation{UCLA, Mathematics Department, Los Angeles, USA} +% \author{Joshua Tan} \email{latex@compositionality-journal.org} \orcid{0000-0001-5317-4782} -\affiliation{University of Oxford, Computer Science Department, - Oxford, UK} +\affiliation{University of Oxford, Computer Science Department, Oxford, UK} +% +\thanks{You can use the \texttt{\string\email}, \texttt{\string\homepage}, \texttt{\string\orcid}, and \texttt{\string\thanks} commands to add additional information for the preceding \texttt{\string\author}. If applicable, this can also be used to indicate that a work has previously been published in conference proceedings.} % \maketitle \printtitlestuff diff --git a/compositionalityarticle.cls b/compositionalityarticle.cls index cdb646a..0553174 100644 --- a/compositionalityarticle.cls +++ b/compositionalityarticle.cls @@ -15,6 +15,7 @@ \RequirePackage{l3keys2e} \RequirePackage{xparse} \RequirePackage{lmodern} + \ProvidesExplClass {compositionality} {} @@ -62,16 +63,17 @@ {\normalfont\normalsize\sffamily}{}{1em}{}[.] \tl_const:Nn \l_shrimp_rhead_content { - \color{shrimp} \sffamily + \color{shrimp} \sffamily\footnotesize Volume ~ \tl_use:N \l_shrimp_volume_tl , ~ Issue ~ - \tl_use:N \l_shrimp_issue_tl + \tl_use:N \l_shrimp_issue_tl \kern1em + ISSN ~ 2631-4444 } \tl_const:Nn \l_shrimp_lfoot_content { - \color{shrimp} \sffamily + \color{shrimp} \sffamily\footnotesize Accepted ~ in ~ Compositionality ~ on ~ \tl_use:N \l_shrimp_accepted_tl . ~ doi: @@ -137,7 +139,7 @@ \sffamily\small\color{gray} \int_step_inline:nn { \seq_count:N \g__shrimp_authors_seq } { \textsuperscript { \int_to_arabic:n { ##1 } } - \seq_item:Nn \g__shrimp_affiliation_seq { ##1 }\newline + \seq_item:Nn \g__shrimp_affiliation_seq { ##1 }\smallskip\newline } \group_end: } diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 21a6bbe..647a182 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -72,6 +72,7 @@ \RequirePackage{l3keys2e} \RequirePackage{xparse} \RequirePackage{lmodern} + % \end{macrocode} % % Identify the package and give the over all version information. @@ -159,16 +160,17 @@ % \begin{macrocode} \tl_const:Nn \l_shrimp_rhead_content { - \color{shrimp} \sffamily + \color{shrimp} \sffamily\footnotesize Volume ~ \tl_use:N \l_shrimp_volume_tl , ~ Issue ~ - \tl_use:N \l_shrimp_issue_tl + \tl_use:N \l_shrimp_issue_tl \kern1em + ISSN ~ 2631-4444 } \tl_const:Nn \l_shrimp_lfoot_content { - \color{shrimp} \sffamily + \color{shrimp} \sffamily\footnotesize Accepted ~ in ~ Compositionality ~ on ~ \tl_use:N \l_shrimp_accepted_tl . ~ doi: @@ -250,7 +252,7 @@ \sffamily\small\color{gray} \int_step_inline:nn { \seq_count:N \g_@@_authors_seq } { \textsuperscript { \int_to_arabic:n { ##1 } } - \seq_item:Nn \g_@@_affiliation_seq { ##1 }\newline + \seq_item:Nn \g_@@_affiliation_seq { ##1 }\smallskip\newline } \group_end: } From 84d70c2d557df4a613004192cbdb3e155ff4e224 Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Wed, 15 May 2024 18:28:05 +0300 Subject: [PATCH 07/34] add published toggle --- compositionalityarticle.dtx | 46 ++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 647a182..41d2ca1 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -88,9 +88,11 @@ % \begin{macrocode} \keys_define:nn { shrimp } { - accepted .tl_set:N = \l_shrimp_accepted_tl, - volume .tl_set:N = \l_shrimp_volume_tl, - issue .tl_set:N = \l_shrimp_issue_tl, + accepted .tl_set:N = \l_shrimp_accepted_tl, + volume .tl_set:N = \l_shrimp_volume_tl, + issue .tl_set:N = \l_shrimp_issue_tl, + published .bool_set:N = \l_shrimp_published_bool, + published .default:n = false, } \ProcessKeysOptions { shrimp } @@ -158,23 +160,35 @@ % % Compute contents of header and footer of first page. % \begin{macrocode} -\tl_const:Nn \l_shrimp_rhead_content +\bool_if:nTF \l_shrimp_published_bool { - \color{shrimp} \sffamily\footnotesize - Volume ~ - \tl_use:N \l_shrimp_volume_tl - , ~ Issue ~ - \tl_use:N \l_shrimp_issue_tl \kern1em - ISSN ~ 2631-4444 + \tl_const:Nn \l_shrimp_rhead_content + { + \color{shrimp} \sffamily\footnotesize + Volume ~ + \tl_use:N \l_shrimp_volume_tl + , ~ Issue ~ + \tl_use:N \l_shrimp_issue_tl \kern1em + ISSN ~ 2631-4444 + } + } + { + \tl_const:Nn \l_shrimp_rhead_content \c_empty_tl } -\tl_const:Nn \l_shrimp_lfoot_content +\bool_if:nTF \l_shrimp_published_bool + { + \tl_const:Nn \l_shrimp_lfoot_content + { + \color{shrimp} \sffamily\footnotesize + Accepted ~ in ~ Compositionality ~ on ~ + \tl_use:N \l_shrimp_accepted_tl + . ~ doi: + \tl_use:N \l_shrimp_doi + } + } { - \color{shrimp} \sffamily\footnotesize - Accepted ~ in ~ Compositionality ~ on ~ - \tl_use:N \l_shrimp_accepted_tl - . ~ doi: - \tl_use:N \l_shrimp_doi + \tl_const:Nn \l_shrimp_rhead_content \c_empty_tl } % \end{macrocode} % From 9fcb081d6099a528547608b381511ea9c648751f Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Wed, 15 May 2024 18:28:51 +0300 Subject: [PATCH 08/34] stub backref support --- compositionalityarticle-doc-new.tex | 2 ++ compositionalityarticle.cls | 51 +++++++++++++++++++---------- compositionalityarticle.dtx | 5 ++- 3 files changed, 40 insertions(+), 18 deletions(-) diff --git a/compositionalityarticle-doc-new.tex b/compositionalityarticle-doc-new.tex index 7133e7e..1a7caf0 100644 --- a/compositionalityarticle-doc-new.tex +++ b/compositionalityarticle-doc-new.tex @@ -1,5 +1,6 @@ \documentclass[ accepted=2020-05-01, + published=true, issue=1, volume=2, a4paper, @@ -8,6 +9,7 @@ \usepackage{caption} \captionsetup{margin=10pt,font=small,labelfont=sf} +\usepackage[backref=page]{hyperref} \usepackage[utf8]{inputenc} \usepackage[english]{babel} \usepackage[T1]{fontenc} diff --git a/compositionalityarticle.cls b/compositionalityarticle.cls index 0553174..1be34c0 100644 --- a/compositionalityarticle.cls +++ b/compositionalityarticle.cls @@ -15,7 +15,6 @@ \RequirePackage{l3keys2e} \RequirePackage{xparse} \RequirePackage{lmodern} - \ProvidesExplClass {compositionality} {} @@ -23,9 +22,11 @@ {The Compositionality article class} \keys_define:nn { shrimp } { - accepted .tl_set:N = \l_shrimp_accepted_tl, - volume .tl_set:N = \l_shrimp_volume_tl, - issue .tl_set:N = \l_shrimp_issue_tl, + accepted .tl_set:N = \l_shrimp_accepted_tl, + volume .tl_set:N = \l_shrimp_volume_tl, + issue .tl_set:N = \l_shrimp_issue_tl, + published .bool_set:N = \l_shrimp_published_bool, + published .default:n = false, } \ProcessKeysOptions { shrimp } @@ -44,7 +45,11 @@ \RequirePackage{titlesec} \RequirePackage{fancyhdr} \RequirePackage{xcolor} +\RequirePackage{xkeyval} \RequirePackage{hyperref} +\RequirePackage{backref} +\PassOptionsToPackage{verbose=false,hyperpageref}{backref} +\def\backrefpagesname{} \geometry{ margin=3cm, } @@ -61,23 +66,35 @@ {\normalfont\normalsize\sffamily}{\thesubsubsection}{1em}{} \titleformat{\paragraph}[runin] {\normalfont\normalsize\sffamily}{}{1em}{}[.] -\tl_const:Nn \l_shrimp_rhead_content +\bool_if:nTF \l_shrimp_published_bool { - \color{shrimp} \sffamily\footnotesize - Volume ~ - \tl_use:N \l_shrimp_volume_tl - , ~ Issue ~ - \tl_use:N \l_shrimp_issue_tl \kern1em - ISSN ~ 2631-4444 + \tl_const:Nn \l_shrimp_rhead_content + { + \color{shrimp} \sffamily\footnotesize + Volume ~ + \tl_use:N \l_shrimp_volume_tl + , ~ Issue ~ + \tl_use:N \l_shrimp_issue_tl \kern1em + ISSN ~ 2631-4444 + } + } + { + \tl_const:Nn \l_shrimp_rhead_content \c_empty_tl } -\tl_const:Nn \l_shrimp_lfoot_content +\bool_if:nTF \l_shrimp_published_bool + { + \tl_const:Nn \l_shrimp_lfoot_content + { + \color{shrimp} \sffamily\footnotesize + Accepted ~ in ~ Compositionality ~ on ~ + \tl_use:N \l_shrimp_accepted_tl + . ~ doi: + \tl_use:N \l_shrimp_doi + } + } { - \color{shrimp} \sffamily\footnotesize - Accepted ~ in ~ Compositionality ~ on ~ - \tl_use:N \l_shrimp_accepted_tl - . ~ doi: - \tl_use:N \l_shrimp_doi + \tl_const:Nn \l_shrimp_rhead_content \c_empty_tl } \lhead{} \chead{} diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 41d2ca1..ec5b6b2 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -72,7 +72,6 @@ \RequirePackage{l3keys2e} \RequirePackage{xparse} \RequirePackage{lmodern} - % \end{macrocode} % % Identify the package and give the over all version information. @@ -123,7 +122,11 @@ \RequirePackage{titlesec} \RequirePackage{fancyhdr} \RequirePackage{xcolor} +\RequirePackage{xkeyval} \RequirePackage{hyperref} +\RequirePackage{backref} +\PassOptionsToPackage{verbose=false,hyperpageref}{backref} +\def\backrefpagesname{} % \end{macrocode} % % Setup page geometry. From 5fd4678150b07bdaf6867de1ca51e7114c424d5e Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Wed, 15 May 2024 19:08:43 +0300 Subject: [PATCH 09/34] implement backref --- compositionalityarticle-doc-new.tex | 2 +- compositionalityarticle.cls | 3 ++- compositionalityarticle.dtx | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/compositionalityarticle-doc-new.tex b/compositionalityarticle-doc-new.tex index 1a7caf0..bfe3e81 100644 --- a/compositionalityarticle-doc-new.tex +++ b/compositionalityarticle-doc-new.tex @@ -9,7 +9,7 @@ \usepackage{caption} \captionsetup{margin=10pt,font=small,labelfont=sf} -\usepackage[backref=page]{hyperref} + \usepackage[utf8]{inputenc} \usepackage[english]{babel} \usepackage[T1]{fontenc} diff --git a/compositionalityarticle.cls b/compositionalityarticle.cls index 1be34c0..01ccc33 100644 --- a/compositionalityarticle.cls +++ b/compositionalityarticle.cls @@ -47,8 +47,8 @@ \RequirePackage{xcolor} \RequirePackage{xkeyval} \RequirePackage{hyperref} +\PassOptionsToPackage{hyperpageref}{backref} \RequirePackage{backref} -\PassOptionsToPackage{verbose=false,hyperpageref}{backref} \def\backrefpagesname{} \geometry{ margin=3cm, @@ -56,6 +56,7 @@ \hypersetup{ colorlinks=true, allcolors=shrimp, + backref=page } \definecolor{shrimp}{RGB}{255,90,95} \titleformat{\section}[hang] diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index ec5b6b2..e58086f 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -124,8 +124,8 @@ \RequirePackage{xcolor} \RequirePackage{xkeyval} \RequirePackage{hyperref} +\PassOptionsToPackage{hyperpageref}{backref} \RequirePackage{backref} -\PassOptionsToPackage{verbose=false,hyperpageref}{backref} \def\backrefpagesname{} % \end{macrocode} % @@ -141,6 +141,7 @@ \hypersetup{ colorlinks=true, allcolors=shrimp, + backref=page } % \end{macrocode} % From 6f149689cdf95d38e4930c0c609fd547aaf44ae4 Mon Sep 17 00:00:00 2001 From: fouche Date: Fri, 17 May 2024 09:45:24 +0300 Subject: [PATCH 10/34] testing --- .gitignore | 1 + Makefile | 41 +- compositionalityarticle.cls | 4 +- compositionalityarticle.dtx | 2 +- old-compositionalityarticle.cls | 1510 ------------------------------- 5 files changed, 43 insertions(+), 1515 deletions(-) delete mode 100644 old-compositionalityarticle.cls diff --git a/.gitignore b/.gitignore index 0e7c528..6d022e5 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ *.dvi *.xdv *-converted-to.* +all_test_papers/ # these rules might exclude image files for figures etc. # *.ps # *.eps diff --git a/Makefile b/Makefile index caf1781..da7f8bb 100755 --- a/Makefile +++ b/Makefile @@ -36,10 +36,47 @@ dev2: clean: - rm -f $(PKG).{aux,dep,glo,gls,hd,idx,ilg,ind,listing,log,out} + rm -f $(PKG).{aux,dep,glo,gls,hd,idx,ilg,ind,listing,log,out,brf} clobber: clean rm -f $(PKG).{ins,pdf,sty,tar.gz} # interpolate: -# sed -i "$(INTERPOLATIONS)" $(PKG).dtx \ No newline at end of file +# sed -i "$(INTERPOLATIONS)" $(PKG).dtx +createpapers: + mkdir -p all_test_papers + curl --silent 'https://export.arxiv.org/api/query?search_query=jr%3ACompositionality&start=0&max_results=50' \ + | grep '' \ + | grep -Po '(?<=http://arxiv.org/abs/)[0-9v.]+' \ + | while read -r link; do mkdir "all_test_papers/$$link" && curl "http://arxiv.org/src/$$link" | tar -xz -C "all_test_papers/$$link"; done + grep -lr "{compositionalityarticle}" all_test_papers/*/*.tex \ + | while read -r path; do mv "$$path" "$${path%/*}/main.tex"; done + for file in all_test_papers/*/main.tex; do \ + sed -i "s%{compositionalityarticle}%{../../compositionalityarticle}%" "$$file"; \ + done + +canceltests: + rm -rf all_test_papers/ + +test: + for folder in all_test_papers/*; do \ + cd $$folder && \ + pwd && \ + latexmk -C && \ + latexmk -pdf -halt-on-error -shell-escape main.tex || cd ..; \ + done + +log: + for logfile in all_test_papers/*/*.log; do \ + echo -e "\\n\\nFILE : \e[0;31m$$logfile\e[0m" && \ + texfot --ignore "LaTeX Warning: Citation" \ + --ignore "LaTeX Warning: Reference" \ + --ignore "This is pdfTeX," \ + --ignore "Package natbib Warning: Citation" \ + --ignore "Package hyperref Warning:" \ + --ignore "LaTeX Warning: You have requested document class" \ + --ignore "LaTeX Warning: Unused global option\(s\)" \ + --ignore 'Underfull \\hbox' \ + --ignore 'Overfull \\hbox' \ + cat $$logfile; \ + done \ No newline at end of file diff --git a/compositionalityarticle.cls b/compositionalityarticle.cls index 01ccc33..55bc26a 100644 --- a/compositionalityarticle.cls +++ b/compositionalityarticle.cls @@ -48,7 +48,7 @@ \RequirePackage{xkeyval} \RequirePackage{hyperref} \PassOptionsToPackage{hyperpageref}{backref} -\RequirePackage{backref} +%\RequirePackage{backref} \def\backrefpagesname{} \geometry{ margin=3cm, @@ -95,7 +95,7 @@ } } { - \tl_const:Nn \l_shrimp_rhead_content \c_empty_tl + \tl_const:Nn \l_shrimp_lfoot_content \c_empty_tl } \lhead{} \chead{} diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index e58086f..a988579 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -125,7 +125,7 @@ \RequirePackage{xkeyval} \RequirePackage{hyperref} \PassOptionsToPackage{hyperpageref}{backref} -\RequirePackage{backref} +\RequirePackage{backref} % TODO: this is incompatible with the user loading biblatex \def\backrefpagesname{} % \end{macrocode} % diff --git a/old-compositionalityarticle.cls b/old-compositionalityarticle.cls deleted file mode 100644 index f077e05..0000000 --- a/old-compositionalityarticle.cls +++ /dev/null @@ -1,1510 +0,0 @@ -%% -%% This is file `compositionalityarticle.cls', -%% it provides the compositionalityarticle class for typesetting articles in -%% Compositionality - the open journal for the mathematics of composition -%% -%% Copyright 2018, 2019, 2020 -%% https://compositionality-journal.org -%% -%% It is derived from `article.cls' available from -%% https://www.ctan.org/pkg/article -%% -%% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\def\compositionalityarticleversion{2.1} -\ProvidesClass{compositionalityarticle} -[2020/05/01 v\compositionalityarticleversion -class for Compositionality - the open journal for the mathematics of composition (https://compositionality-journal.org)] -\RequirePackage{xkeyval} -\RequirePackage{etoolbox} -\RequirePackage{graphicx} -\DeclareGraphicsExtensions{.pdf,.jpeg,.png,.eps} -\newcommand*\@ptsize{} - -\newtoggle{@restonecol} -\newtoggle{@titlepage} -\togglefalse{@titlepage} - -\newtoggle{@papersizespecified} -\togglefalse{@papersizespecified} - -\DeclareOptionX{a4paper} -{ - \setlength\paperheight{297mm}% - \setlength\paperwidth{210mm} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{a5paper} -{ - \setlength\paperheight {210mm}% - \setlength\paperwidth {148mm} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{b5paper} -{ - \setlength\paperheight {250mm}% - \setlength\paperwidth {176mm} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{letterpaper} -{ - \setlength\paperheight {11in}% - \setlength\paperwidth {8.5in} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{legalpaper} -{ - \setlength\paperheight {14in}% - \setlength\paperwidth {8.5in} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{executivepaper} -{ - \setlength\paperheight {10.5in}% - \setlength\paperwidth {7.25in} - \toggletrue{@papersizespecified} -} -\DeclareOptionX{landscape} -{ - \setlength\@tempdima {\paperheight}% - \setlength\paperheight {\paperwidth}% - \setlength\paperwidth {\@tempdima} -} - -\DeclareOptionX{10pt}{\renewcommand*\@ptsize{0}} -\DeclareOptionX{11pt}{\renewcommand*\@ptsize{1}} -\DeclareOptionX{12pt}{\renewcommand*\@ptsize{2}} - -\DeclareOptionX{oneside}{\boolfalse{@twoside}\boolfalse{@mparswitch}} -\DeclareOptionX{twoside}{\booltrue{@twoside}\booltrue{@mparswitch}} - -\DeclareOptionX{draft}{\setlength\overfullrule{5pt}} -\DeclareOptionX{final}{\setlength\overfullrule{0pt}} - -\DeclareOptionX{titlepage}{\toggletrue{@titlepage}} -\DeclareOptionX{notitlepage}{\togglefalse{@titlepage}} - -\DeclareOptionX{onecolumn}{\boolfalse{@twocolumn}} -\DeclareOptionX{twocolumn}{\booltrue{@twocolumn}} - -\DeclareOptionX{leqno}{\input{leqno.clo}} -\DeclareOptionX{fleqn}{\input{fleqn.clo}} -\DeclareOptionX{openbib}{% - \AtEndOfPackage{% - \renewcommand\@openbib@code{% - \advance\leftmargin\bibindent - \itemindent -\bibindent - \listparindent \itemindent - \parsep \z@ - }% - \renewcommand\newblock{\par}}% -} - -%declare some dummy options for compatibility -\DeclareOptionX{checkin}{} -\DeclareOptionX{preprint}{} -\DeclareOptionX{reprint}{} -\DeclareOptionX{manuscript}{} -\DeclareOptionX{noshowpacs}{} -\DeclareOptionX{showpacs}{} -\DeclareOptionX{showkeys}{} -\DeclareOptionX{noshowkeys}{} -\DeclareOptionX{balancelastpage}{} -\DeclareOptionX{nobalancelastpage}{} -\DeclareOptionX{nopreprintnumbers}{} -\DeclareOptionX{preprintnumbers}{} -\DeclareOptionX{hyperref}{} -\DeclareOptionX{bibnotes}{} -\DeclareOptionX{nobibnotes}{} -\DeclareOptionX{footinbib}{} -\DeclareOptionX{nofootinbib}{} -\DeclareOptionX{altaffilletter}{} -\DeclareOptionX{altaffilsymbol}{} -\DeclareOptionX{superbib}{} -\DeclareOptionX{citeautoscript}{} -\DeclareOptionX{longbibliography}{} -\DeclareOptionX{nolongbibliography}{} -\DeclareOptionX{eprint}{} -\DeclareOptionX{noeprint}{} -\DeclareOptionX{author-year}{} -\DeclareOptionX{numerical}{} -\DeclareOptionX{galley}{} -\DeclareOptionX{raggedbottom}{} -\DeclareOptionX{tightenlines}{} -\DeclareOptionX{lengthcheck}{} -\DeclareOptionX{reprint}{} -\DeclareOptionX{eqsecnum}{} -\DeclareOptionX{secnumarabic}{} -\DeclareOptionX{floats}{} -\DeclareOptionX{stfloats}{} -\DeclareOptionX{endfloats}{} -\DeclareOptionX{endfloats*}{} -\DeclareOptionX{osa}{} -\DeclareOptionX{osameet}{} -\DeclareOptionX{opex}{} -\DeclareOptionX{tops}{} -\DeclareOptionX{josa}{} - -\newtoggle{@amsfonts} -\togglefalse{@amsfonts} -\DeclareOptionX{amsfonts}{\toggletrue{@amsfonts}} -\DeclareOptionX{noamsfonts}{} - -\newtoggle{@amssymb} -\togglefalse{@amssymb} -\DeclareOptionX{amssymb}{\toggletrue{@amssymb}} -\DeclareOptionX{amssymbol}{\toggletrue{@amssymb}} -\DeclareOptionX{noamssymb}{} - -\newtoggle{@amsmath} -\togglefalse{@amsmath} -\DeclareOptionX{amsmath}{\toggletrue{@amsmath}} -\DeclareOptionX{noamsmath}{} - -\DeclareOptionX{byrevtex}{} -\DeclareOptionX{floatfix}{} -\DeclareOptionX{nofloatfix}{} -\DeclareOptionX{ltxgridinfo}{} -\DeclareOptionX{outputdebug}{} -\DeclareOptionX{raggedfooter}{} -\DeclareOptionX{noraggedfooter}{} -\DeclareOptionX{frontmatterverbose}{} -\DeclareOptionX{linenumbers}{} -\DeclareOptionX{nomerge}{} -\DeclareOptionX{hypertext}{} -\DeclareOptionX{frontmatterverbose}{} -\DeclareOptionX{inactive}{} -\DeclareOptionX{groupedaddress}{} -\DeclareOptionX{unsortedaddress}{} -\DeclareOptionX{runinaddress}{} -\DeclareOptionX{superscriptaddress}{} - -\newtoggle{@unpublished} -\togglefalse{@unpublished} -\DeclareOptionX{unpublished}{\toggletrue{@unpublished}} - -\newtoggle{@accepted} -\togglefalse{@accepted} -\DeclareOptionX{accepted}[]{\ifstrempty{#1}{}{\def\@accepteddate{#1}}\toggletrue{@accepted}\togglefalse{@unpublished}} - -\newtoggle{@revtexcompatibility} -\togglefalse{@revtexcompatibility} -\DeclareOptionX{shorttitle}[]{\def\@shorttitle{#1}} -\DeclareOptionX{issue}[]{\def\@issue{#1}} -\DeclareOptionX{volume}[]{\def\@volume{#1}} -\DeclareOptionX{aps}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{pra}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{prb}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{pre}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{prl}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{prx}{\toggletrue{@revtexcompatibility}} -\DeclareOptionX{aip}{\toggletrue{@revtexcompatibility}} - -\newtoggle{@allowfontchangeintitle} -\togglefalse{@allowfontchangeintitle} -\DeclareOptionX{allowfontchangeintitle}{\toggletrue{@allowfontchangeintitle}} - -\newtoggle{@nopdfoutputerror} -\togglefalse{@nopdfoutputerror} -\DeclareOptionX{nopdfoutputerror}{\toggletrue{@nopdfoutputerror}} - -%remind people not to use \today on the arxiv -\newtoggle{@allowtoday} -\togglefalse{@allowtoday} -\DeclareOptionX{allowtoday}{\toggletrue{@allowtoday}} - -% set date to be empty as a default, otherwise latex will fill it with \@today which triggers the allowtoday error -\date{} - -\newtoggle{@noarxiv} -\togglefalse{@noarxiv} -\DeclareOptionX{noarxiv} -{ - \ExecuteOptionsX{a4paper,allowtoday,allowfontchangeintitle,nopdfoutputerror,unpublished} - \toggletrue{@noarxiv} -} - - -\ExecuteOptionsX{10pt,oneside,twocolumn,notitlepage,final} -\ProcessOptionsX -% Throw an error if no paper size was manually specified -% Simply defaulting to a4paper gives inconsistent behaviour when submitting to the arXiv as the arXiv seems to sometimes set a4paper and sometimes letterpaper, maybe depending on the geographic region of the submitter? -\iftoggle{@papersizespecified} -{ -} -{ - \setlength\paperheight {297mm}% - \setlength\paperwidth {210mm}% - \iftoggle{@noarxiv}{}{% - \ClassError{compositionalityarticle}{Please explicitly specify a paper size. Available options: a4paper, a5paper, b5paper, letterpaper, legalpaper, executivepaper. Not specifying a paper size can lead to inconsistent behavior when the manuscript is typeset by the arXiv. This error can be turned off by giving the noarxiv class option}{} - }% -} - -\input{size1\@ptsize.clo} - -%we patch the \usepackage command to enable the blacklisting of packages and to throw an error if \pdfoutput=1 was not included in the document before the first usepackage -\csdef{@packageblacklist}{} -\newcommand*{\@blacklistpackage}[2][]{ - \listxadd{\@packageblacklist}{#2}% - \ifstrempty{#1}{}{\csdef{@packageblacklisterrormessage#2}{#1 \string\usepackage{#2}}} -} - -\let\oldusepackage\usepackage -\renewcommand*{\usepackage}[2][]{ - \iftoggle{@nopdfoutputerror} - {% - } - { - \def\@pdfoutputerror{\ClassError{compositionalityarticle}{As suggested by the arXiv (https://arxiv.org/help/submit_tex), please add \string\pdfoutput=1 within the first 5 lines of the preamble of your main LaTeX file and before the first \string\usepackage command. Without this, the arXiv compiles your document with latex instead of pdflatex and hyperlinks in the bibliography broken over several lines will not work properly. See https://tex.stackexchange.com/questions/182523/publishing-to-arxiv-with-hyperlinks for more information. If you still want to use standard latex (for example because you depend on psfrag) instead of pdflatex despite this problem, you can disable this error by giving the nopdfoutputerror option to compositionalityarticle. In this case please check carefully that the links in the version of your document typeset on the arXiv, especially those in the bibliography, work properly}{}%see also https://tex.stackexchange.com/questions/341466/latex-macros-in-classwarning-or-classerror for why \string is necessary - } - \ifcsdef{pdfoutput}% - {% - \ifnumequal{\pdfoutput}{1} - {} - {\@pdfoutputerror}% - } - {% - \@pdfoutputerror% - } - } - \ifinlist{#2}{\@packageblacklist}{ - \ifcsdef{@packageblacklisterrormessage#2}{ - \ClassError{compositionalityarticle}{\csname @packageblacklisterrormessage#2\endcsname}{}}{} - }{\oldusepackage[#1]{#2}} -} - -\@blacklistpackage{titlesec} - -\ifbool{@twocolumn} - {\RequirePackage[margin=2cm,bottom=3cm]{geometry}} - {\RequirePackage[margin=3cm,bottom=3cm]{geometry}} - -\@blacklistpackage{geometry} -\setlength\lineskip{1\p@} -\setlength\normallineskip{1\p@} -\renewcommand*\baselinestretch{} -\setlength\parskip{0\p@ \@plus \p@} -\@lowpenalty 51 -\@medpenalty 151 -\@highpenalty 301 - -\AfterEndPreamble{ - % avoid use of today - \ifcsdef{today} - { - \iftoggle{@allowtoday} - { - \let\oldtoday\today - \renewcommand*{\today}{\oldtoday\ClassWarning{compositionalityarticle}{If you intend to upload your manuscript to the arXiv, please manually replace any use of \string\today with the upload date. The arXiv typesets manuscripts on-demand, thus the output of \string\today may change over time}{}} - } % else - { - \renewcommand*{\today}{\ClassError{compositionalityarticle}{If you intend to upload your manuscript to the arXiv, please manually replace any use of \string\today with the upload date. The arXiv typesets manuscripts on-demand, thus the output of \string\today may change over time. If you do not intend to upload your manuscript to the arXiv, you may use the class option noarxiv or turn off this error by means of the allowtoday option}{}} - } - } - {} -} - - -% this was only loaded at begin document, -% but it needs to come before some user-invoked symbol fonts, eg MnSymbol.sty -% so now loading immediately (JG, 2020-08-14) - % avoid bitmap fonts by loading lmodern or at least checking for cm-super - \IfFileExists{lmodern.sty}{ - \RequirePackage{lmodern} - }{ - \IfFileExists{type1ec.sty}{}{ - \iftoggle{@noarxiv}{}{% - \ClassError{compositionalityarticle}{Either the lmodern or the cm-super package are required by compositionalityarticle in order to produce high quality pdf output. Please install the lmodern package, or, if this is not possible, the cm-super package. You can turn off this error message by giving the noarxiv class option}{} - } - } - } -\AtBeginDocument{ - % Define a revtex-style openone symbol - \IfFileExists{bbm.sty}{ - \RequirePackage{bbm} - \DeclareRobustCommand\openone{\mathbbm{1}} - }{ - \IfFileExists{dsfont.sty}{ - \RequirePackage{dsfont} - \DeclareRobustCommand\openone{\mathds{1}} - }{ - % This uses a similar technique to {revtex4-1}'s openone, - % namely two overstruck numeral 1s, but implemented using mboxes - % and math kerning as suggested by The Comprehensive LaTeX Symbol List. - \DeclareRobustCommand\openone{{\mbox{\small1}\mkern-5.5mu1}} - } - } - \RequirePackage{xcolor} - \definecolor{compositionalitypink}{RGB}{255,90,95}%compositionality pink - \definecolor{compositionalitydarkpink}{RGB}{255,70,76}%compositionality dark pink - \definecolor{compositionalitygray}{HTML}{555555} %compositionality gray -} - -\RequirePackage{ltxcmds} - -\let\origif@twocolumn\if@twocolumn -\def\class@name{ltxutil}%get rid of "You should define the class name before reading in this package. Using default" warning from ltxutils which is loaded by ltxgrid -\if@twocolumn - \RequirePackage{ltxgrid}%ltxgrid should be loaded before etoolbox, otherwise terrible things can happen: https://tex.stackexchange.com/questions/343856/biblatex-produces-incomplete-bcf-with-biber-backend?noredirect=1#comment843815_343856 but if this is actually done, even more terrible things happen, so we partially repair what ltxgrid messes up below... - \newcommand*{\twocolumn}[1][]{#1\twocolumngrid} - \newcommand*{\onecolumn}{\onecolumngrid} -\fi -\let\if@twocolumn\origif@twocolumn - -\let\col@number\@colnum - -\ltx@ifpackageloaded{ltxgrid}{ - %repair what ltxutils has destroyed (see https://tex.stackexchange.com/questions/343856/biblatex-produces-incomplete-bcf-with-biber-backend) - \patchcmd\enddocument - {\deadcycles} - {\let\AfterEndDocument\@firstofone - \@afterenddocumenthook - \deadcycles} - {} - {\AtEndDocument{% - \let\etb@@end\@@end - \def\@@end{% - \let\AfterEndDocument\@firstofone - \@afterenddocumenthook - \etb@@end}}} -}{} - -\setcounter{topnumber}{2} -\renewcommand*\topfraction{.7} -\setcounter{bottomnumber}{1} -\renewcommand*\bottomfraction{.3} -\setcounter{totalnumber}{3} -\renewcommand*\textfraction{.2} -\renewcommand*\floatpagefraction{.5} -\setcounter{dbltopnumber}{2} -\renewcommand*\dbltopfraction{.7} -\renewcommand*\dblfloatpagefraction{.5} - -\ifbool{@twoside}{ - \def\ps@headings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\thepage\hfil\slshape\leftmark}% - \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% - \let\@mkboth\markboth - \def\sectionmark##1{% - \markboth {\MakeUppercase{% - \ifnumgreater{\c@secnumdepth}{\z@}{\thesection\quad}{} - ##1}}{}}% - \def\subsectionmark##1{% - \markright {% - \ifnumgreater{\c@secnumdepth}{\@ne}{\thesubsection\quad}{} - ##1}}}% - }{ - \def\ps@headings{% - \let\@oddfoot\@empty - \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% - \let\@mkboth\markboth - \def\sectionmark##1{% - \markright {\MakeUppercase{% - \ifnumgreater{\c@secnumdepth}{\m@ne}{\thesection\quad}{} - ##1}}}}% -} - -\def\ps@myheadings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\thepage\hfil\slshape\leftmark}% - \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% - \let\@mkboth\@gobbletwo - \let\sectionmark\@gobble - \let\subsectionmark\@gobble -} - -\iftoggle{@titlepage} -{ - \newcommand\maketitle{\begin{titlepage}% - % \let\footnotesize\small - \let\footnoterule\relax - \let \footnote \thanks - \null\vfil - \vskip 60\p@ - \begin{center}% - \@maketitle - \end{center}\par - % \@thanks - \vfil\null - \end{titlepage}% - \setcounter{footnote}{0}% - \global\let\thanks\relax - \global\let\maketitle\relax - \global\let\@maketitle\relax - % \global\let\@thanks\@empty - % \global\let\@author\@empty - % \global\let\@date\@empty - % \global\let\@title\@empty - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\and\relax - } -} -{ - \newcommand\maketitle{\par - \begingroup - \renewcommand\thefootnote{\@fnsymbol\c@footnote}% - \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% - \long\def\@makefntext##1{\parindent 1em\noindent - \hb@xt@1.8em{% - \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% - \ifbool{@twocolumn} - {\ifnumequal{\col@number}{\@ne}{\@maketitle}{\twocolumn[\@maketitle]}} - {\global\@topnum\z@ % Prevents figures from going at top of page. - \@maketitle} - \thispagestyle{fancy}%\@thanks - \endgroup - \setcounter{footnote}{0}% - \global\let\thanks\relax - \global\let\maketitle\relax - \global\let\@maketitle\relax - % \global\let\@thanks\@empty - % \global\let\@author\@empty - % \global\let\@date\@empty - % \global\let\@title\@empty - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\and\relax - } -} - -\def\@maketitle{% - \sffamily - \null - \let \footnote \thanks - \noindent% - \begin{minipage}{\textwidth}% - \iftoggle{@titlepage}{\centering}{}% - \noindent{\huge\hyphenpenalty=5000 \@printtitle\par}% - \end{minipage}% - \vskip 1.5em% - \noindent\@printauthors - \vskip 1em% - \noindent\@printaffiliations - \vskip 0em% - \ifdefempty{\@date}{}{\noindent{\footnotesize\color{compositionalitygray}\@date}}% - \par - \vskip 1.5em - \makeatletter% - \begingroup - \hypersetup{% - pdftitle={\detokenize\expandafter{\@title}}, - pdfauthor={\@authorsonly}, - pdfkeywords={\@keywords}, - pdfcreator={LaTeX with hyperref package and class compositionalityarticle \csname ver@compositionalityarticle.cls\endcsname}, - }% - \endgroup - \makeatother% -} - -\setcounter{secnumdepth}{3} -\newcounter {part} -\newcounter {section} -\newcounter {subsection}[section] -\newcounter {subsubsection}[subsection] -\newcounter {paragraph}[subsubsection] -\newcounter {subparagraph}[paragraph] -\renewcommand*\thepart {\@Roman\c@part} -\renewcommand*\thesection {\@arabic\c@section} -\renewcommand*\thesubsection {\thesection.\@arabic\c@subsection} -\renewcommand*\thesubsubsection{\thesubsection.\@arabic\c@subsubsection} -\renewcommand*\theparagraph {\thesubsubsection.\@arabic\c@paragraph} -\renewcommand*\thesubparagraph {\theparagraph.\@arabic\c@subparagraph} -\newcommand\part{% - \ifbool{@noskipsec}{\leavevmode}{} - \par - \addvspace{4ex}% - \boolfalse{@afterindent} - \secdef\@part\@spart} - -\def\@part[#1]#2{% -\ifnumgreater{\c@secnumdepth}{\m@ne} - {\refstepcounter{part}\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}} - {\addcontentsline{toc}{part}{#1}} -{\parindent \z@ \raggedright -\interlinepenalty \@M -\normalfont -\ifnumgreater{\c@secnumdepth}{\m@ne}{\Large\bfseries \partname\nobreakspace\thepart\par\nobreak}{} -\huge \bfseries #2% -\markboth{}{}\par}% -\nobreak -\vskip 3ex -\@afterheading% -} - -\def\@spart#1{% - {\parindent \z@ \raggedright - \interlinepenalty \@M - \normalfont - \huge \bfseries #1\par}% - \nobreak - \vskip 3ex - \@afterheading} - -\newcommand*\section{\@startsection {section}{1}{\z@}% - {-3.5ex \@plus -1ex \@minus -.2ex}% - {2.3ex \@plus.2ex}% - {\normalfont\Large\sffamily}} - -\newcommand*\subsection{\@startsection{subsection}{2}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\normalfont\large\sffamily}} - -\newcommand*\subsubsection{\@startsection{subsubsection}{3}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\normalfont\normalsize\sffamily}} - -\newcommand*\paragraph{\@startsection{paragraph}{4}{\z@}% - {3.25ex \@plus1ex \@minus.2ex}% - {-1em}% - {\normalfont\normalsize\bfseries}} - -\newcommand*\subparagraph{\@startsection{subparagraph}{5}{\parindent}% - {3.25ex \@plus1ex \@minus .2ex}% - {-1em}% - {\normalfont\normalsize\bfseries}} - -\ifbool{@twocolumn}{\setlength\leftmargini{2em}}{\setlength\leftmargini{2.5em}} -\leftmargin \leftmargini -\setlength\leftmarginii {2.2em} -\setlength\leftmarginiii {1.87em} -\setlength\leftmarginiv {1.7em} - -\ifbool{@twocolumn}{ - \setlength\leftmarginv {.5em} - \setlength\leftmarginvi {.5em} -}{ - \setlength\leftmarginv {1em} - \setlength\leftmarginvi {1em} -} -\setlength \labelsep {.5em} -\setlength \labelwidth{\leftmargini} -\addtolength\labelwidth{-\labelsep} -\@beginparpenalty -\@lowpenalty -\@endparpenalty -\@lowpenalty -\@itempenalty -\@lowpenalty -\renewcommand*\theenumi{\@arabic\c@enumi} -\renewcommand*\theenumii{\@alph\c@enumii} -\renewcommand*\theenumiii{\@roman\c@enumiii} -\renewcommand*\theenumiv{\@Alph\c@enumiv} -\newcommand*\labelenumi{\theenumi.} -\newcommand*\labelenumii{(\theenumii)} -\newcommand*\labelenumiii{\theenumiii.} -\newcommand*\labelenumiv{\theenumiv.} -\renewcommand*\p@enumii{\theenumi} -\renewcommand*\p@enumiii{\theenumi(\theenumii)} -\renewcommand*\p@enumiv{\p@enumiii\theenumiii} -\newcommand*\labelitemi{\textbullet} -\newcommand*\labelitemii{\normalfont\bfseries \textendash} -\newcommand*\labelitemiii{\textasteriskcentered} -\newcommand*\labelitemiv{\textperiodcentered} -\newenvironment{description} -{\list{}{\labelwidth\z@ \itemindent-\leftmargin - \let\makelabel\descriptionlabel}} -{\endlist} -\newcommand*\descriptionlabel[1]{\hspace\labelsep - \normalfont\bfseries #1} - -\iftoggle{@titlepage} -{ - \newenvironment{abstract}{% - \ifdefempty{\maketitle}{\relax{}}{\maketitle} - \titlepage - \null\vfil - \thispagestyle{empty}% - \@beginparpenalty\@lowpenalty - \begin{center}% - \bfseries \abstractname - \@endparpenalty\@M - \end{center}}% - {\par\vfil\null\newpage\endtitlepage} -}{ - \newenvironment{abstract}{% - \ifdefempty{\maketitle}{\relax{}}{\maketitle}% - \ifbool{@twocolumn}{\bf}{\vskip 1em \quotation}\noindent\ignorespaces - }% - { - \ifbool{@twocolumn}{}{\endquotation\vskip 2em} - }% -} - -\newenvironment{verse} -{\let\\\@centercr - \list{}{\itemsep \z@ - \itemindent -1.5em% - \listparindent\itemindent - \rightmargin \leftmargin - \advance\leftmargin 1.5em}% - \item\relax} -{\endlist} - -\newenvironment{quotation} -{\list{}{\listparindent 1.5em% - \itemindent \listparindent - \rightmargin \leftmargin - \parsep \z@ \@plus\p@}% - \item\relax} -{\endlist} - -\newenvironment{quote} -{\list{}{\rightmargin\leftmargin}% - \item\relax} -{\endlist} - -\newenvironment{titlepage} -{% - \ifbool{@twocolumn} - {\toggletrue{@restonecol}\onecolumn\newpage} - {\togglefalse{@restonecol}\newpage} - \thispagestyle{empty}% - \setcounter{page}\@ne -}{% - \iftoggle{@restonecol} - {\twocolumn} - {\newpage} - \ifbool{@twoside}{}{\setcounter{page}\@ne} -} - - - - -\newcommand{\appendix}[1]{% - \setcounter{section}{0}% - \setcounter{subsection}{0}% - \gdef\thesection{\@Alph\c@section} - \section*{\appendixname}% - #1% -} -\setlength\arraycolsep{5\p@} -\setlength\tabcolsep{6\p@} -\setlength\arrayrulewidth{.4\p@} -\setlength\doublerulesep{2\p@} -\setlength\tabbingsep{\labelsep} -\skip\@mpfootins = \skip\footins -\setlength\fboxsep{3\p@} -\setlength\fboxrule{.4\p@} -\renewcommand*\theequation {\@arabic\c@equation} -\newcounter{figure} -\renewcommand*\thefigure {\@arabic\c@figure} -\def\fps@figure{tbp} -\def\ftype@figure{1} -\def\ext@figure{lof} -\def\fnum@figure{\figurename\nobreakspace\thefigure} - -\newenvironment{figure} -{\@float{figure}} -{\end@float} - -\newenvironment{figure*} -{\@dblfloat{figure}} -{\end@dblfloat} - -\newcounter{table} -\renewcommand*\thetable{\@arabic\c@table} -\def\fps@table{tbp} -\def\ftype@table{2} -\def\ext@table{lot} -\def\fnum@table{\tablename\nobreakspace\thetable} - -\newenvironment{table} -{\@float{table}} -{\end@float} - -\newenvironment{table*} -{\@dblfloat{table}} -{\end@dblfloat} - -\newlength\abovecaptionskip -\newlength\belowcaptionskip -\setlength\abovecaptionskip{10\p@} -\setlength\belowcaptionskip{0\p@} -\long\def\@makecaption#1#2{% - \vskip\abovecaptionskip - \sbox\@tempboxa{#1: #2}% - \ifdimgreater{\wd\@tempboxa}{\hsize} - {#1: #2\par} - {\global\boolfalse{@minipage} - \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}}% - \vskip\belowcaptionskip} - -\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} -\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} -\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} -\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} -\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} -\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} -\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} -\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} -\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} - -\newcommand*\@pnumwidth{1.55em} -\newcommand*\@tocrmarg{2.55em} -\newcommand*\@dotsep{4.5} -\setcounter{tocdepth}{3} - -% We use a trick from Ivan Andrus (https://stackoverflow.com/a/2785740) -% to hide the "\section*{Contents}" command from the table of contents -% to avoid getting an ugly duplication of the Contents header inside -% the table itself. -% -% This trick consists of temporarily redefining \addcontentsline to -% do nothing during the expansion of the arguments to \tocless. -\newcommand{\nocontentsline}[3]{} -\newcommand{\tocless}[2]{\bgroup\let\addcontentsline=\nocontentsline#1{#2}\egroup} -\newcommand\tableofcontents{% - \tocless{\section*}{\contentsname - \@mkboth{% - \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}% - \@starttoc{toc}% -} - -\newcommand*\l@part[2]{% - \ifnumgreater{\c@tocdepth}{-2}{\relax - \addpenalty\@secpenalty - \addvspace{2.25em \@plus\p@}% - \setlength\@tempdima{3em}% - \begingroup - \parindent \z@ \rightskip \@pnumwidth - \parfillskip -\@pnumwidth - {\leavevmode - \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par - \nobreak - \endgroup - }{}% -} - -\newcommand*\l@section[2]{% - \ifnumgreater{\c@tocdepth}{\z@}{ - \addpenalty\@secpenalty - \addvspace{1.0em \@plus\p@}% - \setlength\@tempdima{1.5em}% - \begingroup - \parindent \z@ \rightskip \@pnumwidth - \parfillskip -\@pnumwidth - \leavevmode \bfseries - \advance\leftskip\@tempdima - \hskip -\leftskip - #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par - \endgroup - }{}% -} - -\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} -\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} -\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}} -\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}} - -\newcommand\listoffigures{% - \section*{\listfigurename}% - \@mkboth{\MakeUppercase\listfigurename}% - {\MakeUppercase\listfigurename}% - \@starttoc{lof}% -} - -\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} -\newcommand\listoftables{% - \section*{\listtablename}% - \@mkboth{% - \MakeUppercase\listtablename}% - {\MakeUppercase\listtablename}% - \@starttoc{lot}% -} - -\let\l@table\l@figure -% Declare a new \acknowledgements command for {revtex4-1} -% compatability. -\newcommand*{\acknowledgmentsname}{Acknowledgments} -\newcommand{\acknowledgments}[1]{% - \section*{\acknowledgmentsname}% - #1% -} - -\newdimen\bibindent -\setlength\bibindent{1.5em} - -\newenvironment{thebibliography}[1] -{% - \makeatletter% - \iftoggle{@noarxiv}{}{% - \ltx@ifpackageloaded{natbib}{}{% - \ltx@ifpackageloaded{biblatex}{ - \ClassWarning{compositionalityarticle}{Unfortunately compositionalityarticle cannot recommend the use of BibLaTeX due to incompatibilities between locally installed versions of BibLaTeX and the version used by the arXiv.}% - }{% - \ClassWarning{compositionalityarticle}{The compositionalityarticle class recommends generating the bibliography from a BibTeX file containing DOIs with natbib in order to ensure the generation of DOI hyperlinks}% - }% - }% - }% - \makeatother% - \section*{\refname}% - \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% - \list{\@biblabel{\@arabic\c@enumiv}}% - {\settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand*\theenumiv{\@arabic\c@enumiv}}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \sfcode`\.\@m - \setlength{\itemsep}{0pt plus 0.3ex} -} -{\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} - -\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em} -\let\@openbib@code\@empty - -\newenvironment{theindex}{% - \ifbool{@twocolumn}{\togglefalse{@restonecol}}{\toggletrue{@restonecol}} - \twocolumn[\section*{\indexname}]% - \@mkboth{\MakeUppercase\indexname}% - {\MakeUppercase\indexname}% - \thispagestyle{fancy}\parindent\z@ - \parskip\z@ \@plus .3\p@\relax - \columnseprule \z@ - \columnsep 35\p@ - \let\item\@idxitem% -} -{ - \iftoggle{@restonecol} - {\onecolumn} - {\clearpage} -} - -\newcommand\@idxitem{\par\hangindent 40\p@} -\newcommand\subitem{\@idxitem \hspace*{20\p@}} -\newcommand\subsubitem{\@idxitem \hspace*{30\p@}} -\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} - -\renewcommand*\footnoterule{% - \kern-3\p@ - \hrule\@width.4\columnwidth - \kern2.6\p@} - -\newcommand*\@makefntext[1]{% -\parindent 1em% -\noindent -\hb@xt@1.8em{\hss\@makefnmark}#1} - -\newcommand*\contentsname{Contents} -\newcommand*\listfigurename{List of Figures} -\newcommand*\listtablename{List of Tables} -\newcommand*\refname{References} -\newcommand*\indexname{Index} -\newcommand*\figurename{Figure} -\newcommand*\tablename{Table} -\newcommand*\partname{Part} -\newcommand*\appendixname{Appendix} -\newcommand*\abstractname{Abstract} - -\def\today{\ifcase\month\or - January\or February\or March\or April\or May\or June\or - July\or August\or September\or October\or November\or December\fi - \space\number\day, \number\year} -\setlength\columnsep{20\p@} -\setlength\columnseprule{0\p@} -\setlength{\footnotesep}{\baselineskip} -\RequirePackage{fancyhdr} -\@blacklistpackage{fancyhdr} -\pagestyle{fancy} -\renewcommand{\headrule}{} -\renewcommand{\footrule}{\vbox to 0pt{\hbox to\headwidth{\color{compositionalitygray}\leaders\hrule\hfil}\vss}} -\fancyhf{} -\iftoggle{@accepted} -{\fancyfoot[R]{\sffamily\iftoggle{@unpublished}{\thepage}{\textcolor{compositionalitypink}{\thepage}}}} -{\fancyfoot[C]{\sffamily\iftoggle{@unpublished}{\thepage}{\textcolor{compositionalitypink}{\thepage}}}} -\iftoggle{@accepted} - {\fancyfoot[L]{\usebox{\@compositionalityacceptedbox}} - \fancyhead[R]{\textcolor{compositionalitypink}{\scriptsize{\ifcsdef{@volume}{Volume \@volume }{}, \ifcsdef{@issue}{Issue \@issue }{}. ISSN 2631-4444}}}} -% - -% validate the date format to be YYYY-MM-DD -\AtBeginDocument{ - \ifcsdef{@accepteddate} - {% - \iftoggle{@xstring} - {% - \RequirePackage{xstring} - \def\@dateerror{\ClassError{compositionalityarticle}{The date in the accepted option must be given in the format YYYY-MM-DD}{}} - % test that we have two -s - \IfSubStr[2]{\@accepteddate}{-}{}{\@dateerror} - \IfSubStr[3]{\@accepteddate}{-}{\@dateerror}{} - \StrBefore[1]{\@accepteddate}{-}[\@accepteddateyear] - \StrBetween[1,2]{\@accepteddate}{-}{-}[\@accepteddatemonth] - \StrBehind[2]{\@accepteddate}{-}[\@accepteddateday] - \IfDecimal{\@accepteddateyear}{}{\@dateerror} - \IfDecimal{\@accepteddatemonth}{}{\@dateerror} - \IfDecimal{\@accepteddateday}{}{\@dateerror} - \StrLen{\@accepteddateyear}[\@accepteddateyearlength] - \StrLen{\@accepteddatemonth}[\@accepteddatemonthlength] - \StrLen{\@accepteddateday}[\@accepteddatedaylength] - \ifnumcomp{\@accepteddateyearlength}{>}{3}{}{\@dateerror} - \ifnumcomp{\@accepteddatemonthlength}{=}{2}{}{\@dateerror} - \ifnumcomp{\@accepteddatedaylength}{=}{2}{}{\@dateerror}% - } - {} - } - {} -} - -%MODIFIED 29.11 - - -\pagenumbering{arabic} -\ifbool{@twoside}{}{\raggedbottom} -\ifbool{@twocolumn}{ - \twocolumn - \sloppy - \flushbottom -}{ - \onecolumn -} - -%the following is mostly taken from revtex4-1 (see https://www.ctan.org/pkg/revtex4-1) -\ifbool{@twocolumn}{ - \newbox\widetext@top - \newbox\widetext@bot - \newenvironment{widetext}{% - \par\ignorespaces - \setbox\widetext@top\vbox{% - \hb@xt@\hsize{% - {\color{compositionalitygray}% - \leaders\hrule\hfil - \vrule\@height6\p@} - }% - }% - \setbox\widetext@bot\hb@xt@\hsize{% - {\color{compositionalitygray}% - \vrule\@depth6\p@ - \leaders\hrule\hfil} - }% - \onecolumngrid - \vskip10\p@ - \dimen@\ht\widetext@top\advance\dimen@\dp\widetext@top - \cleaders\box\widetext@top\vskip\dimen@ - \vskip6\p@ - \prep@math@patch - }{% - \par - \vskip6\p@ - \setbox\widetext@bot\vbox{% - \hb@xt@\hsize{\hfil\box\widetext@bot}% - }% - \dimen@\ht\widetext@bot\advance\dimen@\dp\widetext@bot - \cleaders\box\widetext@bot\vskip\dimen@ - \vskip8.5\p@ - \twocolumngrid\global\booltrue{@ignore} - \booltrue{@endpe} - }% -}{ - \newenvironment{widetext}{}{} -} - - -%title -\def\@printtitle{% - {% - \iftoggle{@unpublished}% - {% - \@printtitletextwithappropriatefontsize% - }% - {% - \edef\@titleexpanded{\detokenize\expandafter{\@title}}% - \iftoggle{@xstring}% - {\saveexploremode\exploregroups\StrSubstitute{\@titleexpanded}{ }{\%20}[\@titleforurl]\restoreexploremode}% - {\gdef\@titleforurl{\@titleexpanded}}% - \href{https://compositionality-journal.org/\@shorttitle/} - {% - \color{compositionalitypink}{% - \@printtitletextwithappropriatefontsize\unskip% - }% - }% - }% - }% -} -% In the macro below we compute the appropriate font size of the title. -% We use \Huge if the title fits on one line and \huge if it extends over more -% than one line in font size \Huge -\def\@titleatfontsize#1{% - #1% - \begingroup% - \raggedright% - \iftoggle{@allowfontchangeintitle} - {} - {% - \def\selectfont{\ClassError{compositionalityarticle}{When submitting to compositionality, you are not supposed to use \string\textbf{}, \string\bf, \string\textit{} or other font formating commands inside \string\title{}. Please remove all such commands from your \string\title{}. If you really have to change the font for some part of the title you can turn off this error by giving the option allowfontchangeintitle}{}}%solution from https://tex.stackexchange.com/questions/347596/disallowing-textbf-it-sffamily-in-argument-of-macro-or-environment - }% - \@title% - \endgroup% -}% - -\def\@printtitletextwithappropriatefontsize{% - \newsavebox{\@titelsaveboxHuge}% - \savebox{\@titelsaveboxHuge}{% - \parbox[b]{\linewidth}{% - \@titleatfontsize{\Huge}% - }% - }% - \newsavebox{\@titelsaveboxHugeoneline}% - \savebox{\@titelsaveboxHugeoneline}{% - \@titleatfontsize{\Huge}% - }% - \newsavebox{\@titelsaveboxhhuge}% - \savebox{\@titelsaveboxhhuge}{% - \parbox[b]{\linewidth}{% - \@titleatfontsize{\huge}% - }% - }% - \ifdimgreater{\ht\@titelsaveboxHuge}{\ht\@titelsaveboxHugeoneline} - {\@titleatfontsize{\huge}%\usebox{\@titelsaveboxhhuge}% using huge because \the\ht\@titelsaveboxHuge{} is larger than \the\ht\@titelsaveboxHugeoneline{} - } - {\@titleatfontsize{\Huge}% using Huge because \the\ht\@titelsaveboxHuge{} is not larger than \the\ht\@titelsaveboxHugeoneline{} - } -} - -%renew \title to allow for and ignore an optional argument -\renewcommand{\title}[2][]{\gdef\@title{#2}} -% author handling -\newcounter{@authorcounter} -\csdef{@authors}{} -\renewcommand{\author}[2][]{% - \ifstrempty{#1}{% - \internal@author{#2}% - }{% - \internal@elseauthor{#1}{#2} - }% - \csdef{@authorname\the@authorcounter}{#2}% - \def\@currentauthornumber{\the@authorcounter}% -}% -\def\addauthortolabel#1#2{% - \ifcsdef{authorswithlabel#2}{}{\csdef{authorswithlabel#2}{}}% - \listcsxadd{authorswithlabel#2}{#1}}% -\def\internal@elseauthor#1#2{% - \stepcounter{@authorcounter} - \ifcsdef{@authors}{}{\csdef{@authors}{}}% - \listadd{\@authors}{#2}% - \forcsvlist{\addauthortolabel{\the@authorcounter}}{#1}% - \ifbool{@startnewauthorgroup}{\csundef{@authorgroup}}{}% - \ifcsdef{@authorgroup}{}{\csdef{@authorgroup}{}}% - \listxadd{\@authorgroup}{\the@authorcounter}% - \boolfalse{@startnewauthorgroup}% -}% -\def\internal@author#1{% - \stepcounter{@authorcounter} - \ifcsdef{@authors}{}{\csdef{@authors}{}}% - \listadd{\@authors}{#1}% - \ifbool{@startnewauthorgroup}{\csundef{@authorgroup}}{} - \ifcsdef{@authorgroup}{}{\csdef{@authorgroup}{}}% - \listxadd{\@authorgroup}{\the@authorcounter} - \boolfalse{@startnewauthorgroup} -} -\def\@@spaceafter#1{#1 } -\def\@@@comma{\def\@@@comma{,}} -\def\@@commaspacebefore#1{\@@@comma{}#1} -\def\@printauthor#1#2{\def\footnote{\ClassError{compositionalityarticle}{You must not put a \string\footnote{} command inside the argument of \string\author}{}}\ifcsdef{author#1orcid}{\href{https://orcid.org/\csname author#1orcid\endcsname}{\color{black}#2}}{#2}\ifnumcomp{\the@affiliationcounter}{>}{1}{\textsuperscript{\forlistcsloop{\@@commaspacebefore}{author#1affiliations}\unskip}}{}\ifnumcomp{#1}{<}{\the@authorcounter-1}{, }{\ifnumcomp{#1}{=}{\the@authorcounter-1}{\ifnumcomp{#1}{=}{1}{ and }{, and }}{}}} -\def\@printauthors{% - \newcounter{@authornum}% - \large\forlistloop{\stepcounter{@authornum}% - \ifcsdef{author\the@authornum hasextras}{% - \insert\footins{\footnotesize% - % \interlinepenalty\interfootnotelinepenalty - % \splittopskip\footnotesep - % \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \iftoggle{@titlepage} - {\hsize\dimexpr \linewidth\relax \@parboxrestore}% - {\ifbool{@twocolumn} - {\hsize\dimexpr 0.5\linewidth-0.5\columnsep\relax \@parboxrestore} - {\hsize\dimexpr \linewidth\relax \@parboxrestore}% - } - % \flushleft% - % \baselineskip=0pt% - \@printauthorextrainfo{\the@authornum}\vspace{0.5\baselineskip}% - }}{}% - \@printauthor\the@authornum}{\@authors}% -} -\def\@@addcommabetween#1{#1, }%this adds an ugly extra comma at the end but the variant below is not expandable and therefore leads to ugly warnings: https://tex.stackexchange.com/questions/50978/macro-to-extract-typeset-plain-text-from-a-command -%\def\@@addcommabetween#1{\ifdef{\firstauthoronly}{, }{\def\firstauthoronly{\empty}}#1} -\def\@authorsonly{\forlistloop{\@@addcommabetween}{\@authors}} -% affiliation handling -\newbool{@startnewauthorgroup} -\newcounter{@affiliationcounter} -\def\@addaffiliation#1#2{ - \ifcsdef{author#2affiliations}{}{\csdef{author#2affiliations}{}}% - \listcsgadd{author#2affiliations}{#1} -} -\newcommand{\address}[2][]{\affiliation[#1]{#2}} - -%for compatibility with authblk -\@blacklistpackage{authblk} -\newcommand{\affil}[2][]{ - \affiliation[#1]{#2}} -\newcommand{\affiliation}[2][]{% - \ifstrempty{#1}{% - \internal@affiliation{#2}% - }{% - \elseinternal@affiliation{#1}{#2} - }}% -\def\elseinternal@affiliation#1#2{% - \booltrue{@startnewauthorgroup} - \ifcsdef{affiliations}{}{\csdef{affiliations}{}}% - \expandafter\def\csname\detokenize{#2}\endcsname{#2}% - \stepcounter{@affiliationcounter}% - \listxadd{\affiliations}{\detokenize{#2}}% - \csxdef{affiliation\detokenize{#2}number}{\the@affiliationcounter{}}% - \ifcsdef{authorswithlabel#1}{% - \forlistcsloop{\@addaffiliation{\csname affiliation\detokenize{#2}number\endcsname}}{authorswithlabel#1}% - }{}% -} -\def\internal@affiliation#1{% - \booltrue{@startnewauthorgroup} - \ifcsdef{affiliations}{}{\csdef{affiliations}{}}% - \expandafter\def\csname\detokenize{#1}\endcsname{#1} %to handle special characters such as \'a and \l we create a macro whose name is the detokenized version of #1 and that expands to #1 and later call it in \@printaffiliation - \xifinlist{\detokenize{#1}}{\affiliations}{}{\stepcounter{@affiliationcounter}\listxadd{\affiliations}{\detokenize{#1}}\csxdef{affiliation\detokenize{#1}number}{\the@affiliationcounter{}}}% - \forlistloop{\@addaffiliation{\csname affiliation\detokenize{#1}number\endcsname}}{\@authorgroup}% -} -\def\@printaffiliation#1#2{\ifnumcomp{\the@affiliationcounter}{>}{1}{\llap{\textsuperscript{#1}}}{}\csname #2\endcsname\ifnumcomp{#1}{<}{\the@affiliationcounter}{\newline}{}} -\def\@printaffiliations{% - \ifcsdef{affiliations}{}{\csdef{affiliations}{}}% - \newcounter{@affiliationnum}% - \ifnumcomp{\the@affiliationcounter}{>}{1}{% - \settowidth{\leftskip}{\footnotesize\textsuperscript{\the@affiliationcounter}}% - }{}% - {\footnotesize\color{compositionalitygray}% - \forlistloop{\stepcounter{@affiliationnum}\@printaffiliation\the@affiliationnum}{\affiliations}}% -} -%collaboration and altaffiliation -\newcommand{\collaboration}[1]{\author{#1}} -\newcommand{\altaffiliation}[2][]{\affiliation{#1#2}} - -% email, homepage, and thanks handling -% be careful - this section is highly sensitive to the positioning of the % marks -\newbool{authorextrainfo@first} -\def\@printauthorextrainfo#1{ - \booltrue{authorextrainfo@first}% - \csname @authorname#1\endcsname: - \ifcsdef{author#1emails} - {% - \ifbool{authorextrainfo@first}{}{\unskip,\space}% - \forlistcsloop{\@@spaceafter}{author#1emails}% - \boolfalse{authorextrainfo@first}% - } - {}% - \ifcsdef{author#1homepages} - {% - \ifbool{authorextrainfo@first}{}{\unskip,\space}% - \forlistcsloop{\@@spaceafter}{author#1homepages}% - \boolfalse{authorextrainfo@first}% - } - {}% - \ifcsdef{author#1orcid} - {% - \ifbool{authorextrainfo@first}{}{\unskip,\space}% - \lower0.3ex\hbox{\includegraphics[height=2ex]{ORCIDiD_iconvector.pdf}}\thinspace% - \csuse{author#1orcid}% - \boolfalse{authorextrainfo@first}% - } - {}% - \ifcsdef{author#1thanks} - {% - \ifbool{authorextrainfo@first}{}{\unskip.\space}% - \forlistcsloop{\@@spaceafter}{author#1thanks}% - \boolfalse{authorextrainfo@first}% - } - {}% -} - -\newcommand{\email}[2][]{% - \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\email{} may only appear after the first \string\author{} command}{}} - \@email{#1}{\href{mailto:#2}{#2}}} -\newcommand{\homepage}[2][]{% - \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\homepage{} may only appear after the first \string\author{} command}{}} - \@homepage{#1}{\href{#2}{#2}}} -\renewcommand{\thanks}[2][]{% - \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\thanks{} may only appear after the first \string\author{} command}{}} - \@thanks{#1}{#2}} -\newcommand{\orcid}[2][]{% - \ifcsdef{@currentauthornumber}{}{\ClassError{compositionalityarticle}{\string\orcid{} may only appear after the first \string\author{} command}{}} - \@orcid{#1}{#2}} -\def\@email#1#2{%} - \@addemail{#1#2}{\@currentauthornumber} - \csdef{author\@currentauthornumber hasextras}{} -} -\def\@homepage#1#2{% - \ifcsdef{@currentauthornumber}{}{\def\@currentauthornumber{0}}%in case \homepage is called before the first author - \@addhomepage{#1#2}{\@currentauthornumber} - \csdef{author\@currentauthornumber hasextras}{} -} -\def\@thanks#1#2{% - \ifcsdef{@currentauthornumber}{}{\def\@currentauthornumber{0}}%in case \thanks is called before the first author - \@addthanks{#1#2}{\@currentauthornumber} - \csdef{author\@currentauthornumber hasextras}{} -} -\def\@orcid#1#2{% - \ifcsdef{@currentauthornumber}{}{\def\@currentauthornumber{0}}%in case \orcid is called before the first author - \@addorcid{#1#2}{\@currentauthornumber} - \csdef{author\@currentauthornumber hasextras}{} -} -\def\@addemail#1#2{ - \ifcsdef{author#2emails}{}{\csdef{author#2emails}{}}% - \listcsgadd{author#2emails}{#1} -} -\def\@addhomepage#1#2{ - \ifcsdef{author#2homepages}{}{\csdef{author#2homepages}{}}% - \listcsgadd{author#2homepages}{#1} -} -\def\@addthanks#1#2{ - \ifcsdef{author#2thanks}{}{\csdef{author#2thanks}{}}% - \listcsgadd{author#2thanks}{#1} -} -\def\@addorcid#1#2{ - \csdef{author#2orcid}{#1}% -} - - -\newtoggle{@xstring} -\IfFileExists{xstring.sty}{\toggletrue{@xstring}}{\togglefalse{@xstring}} - -\AtBeginDocument{ - \iftoggle{@xstring} - {\RequirePackage{xstring}} - {} - - \iftoggle{@accepted} - {% - \newsavebox\@compositionalityacceptedbox - - - \newcommand {\logo} {\raisebox{-0.15cm}[0.1cm]{\includegraphics[width=0.035\textwidth, height=0.035\textwidth]{logo.eps}}} - \savebox\@compositionalityacceptedbox{{\sffamily\scriptsize \logo\textcolor{compositionalitypink}{Accepted in Compositionality on \ifcsdef{@accepteddate}{\@accepteddate}{}.}}}} - - - - - - {} -} -%elsearticle style extra header information -\newcommand{\ead}[2][]{ - \ifstrempty{#1}{ - \email{#2} - }{ - \iftoggle{@xstring} - {\IfStrEq{#1}{url}{\homepage{#2}}{\email{#2}}} - {email{#2}} - } -} -\AtEndPreamble{ - \providecommand{\@elsearticlecommandsnotsupportederror}{\ClassError{compositionalityarticle}{The elsearticle style \string\cortext{}, \string\corref{}, \string\fntext{}, \string\fnref{}, \string\tnotetext{}, and \string\tnoteref{} commands are not supported by compositionalityarticle. Please refrain from using footnotes in the title part of your document and use the \string\tahnks{} command for author footnotes instead.}{}} - \providecommand{\cortext}[2][]{\@elsearticlecommandsnotsupportederror} %corresponding author information - \providecommand{\corref}[1]{\@elsearticlecommandsnotsupportederror} %corresponding author information reference - \providecommand{\fntext}[2][]{\@elsearticlecommandsnotsupportederror} %author footnote - \providecommand{\fnref}[1]{\@elsearticlecommandsnotsupportederror} %author footnot reference - \providecommand{\tnotetext}[2][]{\@elsearticlecommandsnotsupportederror} %title footnote - \providecommand{\tnoteref}[1]{\@elsearticlecommandsnotsupportederror} %title footnote reference -} - -% set default options for hyperref to make links more pretty, and add backwards pagerefs to bibliography -\PassOptionsToPackage{colorlinks=true,hyperindex,backref=page}{hyperref} - -\iftoggle{@unpublished} - {\PassOptionsToPackage{allcolors=gray}{hyperref}} - {\PassOptionsToPackage{allcolors=compositionalitydarkpink}{hyperref}} - -\ifcsdef{pdfoutput} -{ - \ifnumequal{\pdfoutput}{0} - {} - {\PassOptionsToPackage{breaklinks=true}{hyperref}}%setting this option produces a warning if \pdfoutput=0 -} -{} - -%enable DOIs if biblatex is used by default -\PassOptionsToPackage{doi=true}{biblatex} - -\AtBeginDocument{% - - \RequirePackage{hyperref}% - - \@ifpackageloaded{natbib}{% - \setlength{\bibsep}{0pt plus 0.3ex} - \@ifpackageloaded{doi}{}{% - \providecommand{\doi}[1]{} - \renewcommand{\doi}[1]{\href{https://doi.org/\detokenize{#1}}{https://doi.org/\detokenize{#1}}}% - }% - }{% - \@ifpackageloaded{biblatex}{ - \DeclareFieldFormat{doi}{\mkbibacro{DOI}\addcolon\space\href{https://doi.org/\detokenize{#1}}{\detokenize{#1}}} - \setcounter{biburllcpenalty}{1000} - \setcounter{biburlucpenalty}{1000} - \setcounter{biburlnumpenalty}{1000} - }{}% - } -} - -\def\@keywords{} -\providecommand{\keywords}{} -\renewcommand{\keywords}[1]{\def\@keywords{#1}} - -\iftoggle{@amsfonts} - {\RequirePackage{amsfonts}} - {} -\iftoggle{@amssymb} - {\RequirePackage{amssymb}} - {} -\iftoggle{@amsmath} - {\RequirePackage{amsmath}} - {} - -\iftoggle{@revtexcompatibility} -{ - \PassOptionsToPackage{numbers}{natbib} - \PassOptionsToPackage{sort&compress}{natbib} - - \providecommand{\ao}{Appl.\ Opt.} - \providecommand{\ap}{Appl.\ Phys.} - \providecommand{\apl}{Appl.\ Phys.\ Lett.} - \providecommand{\apj}{Astrophys.\ J.} - \providecommand{\bell}{Bell Syst.\ Tech.\ J.} - \providecommand{\jqe}{IEEE J.\ compositionality Electron.} - \providecommand{\assp}{IEEE Trans.\ Acoust.\ Speech Signal Process.} - \providecommand{\aprop}{IEEE Trans.\ Antennas Propag.} - \providecommand{\mtt}{IEEE Trans.\ Microwave Theory Tech.} - \providecommand{\iovs}{Invest.\ Ophthalmol.\ Vis.\ Sci.} - \providecommand{\jcp}{J.\ Chem.\ Phys.} - \providecommand{\jmo}{J.\ Mod.\ Opt.} - \providecommand{\josa}{J.\ Opt.\ Soc.\ Am.} - \providecommand{\josaa}{J.\ Opt.\ Soc.\ Am.\ A} - \providecommand{\josab}{J.\ Opt.\ Soc.\ Am.\ B} - \providecommand{\jpp}{J.\ Phys.\ (Paris)} - \providecommand{\nat}{Nature (London)} - \providecommand{\oc}{Opt.\ Commun.} - \providecommand{\ol}{Opt.\ Lett.} - \providecommand{\pl}{Phys.\ Lett.} - \providecommand{\pra}{Phys.\ Rev.\ A} - \providecommand{\prb}{Phys.\ Rev.\ B} - \providecommand{\prc}{Phys.\ Rev.\ C} - \providecommand{\prd}{Phys.\ Rev.\ D} - \providecommand{\pre}{Phys.\ Rev.\ E} - \providecommand{\prl}{Phys.\ Rev.\ Lett.} - \providecommand{\rmp}{Rev.\ Mod.\ Phys.} - \providecommand{\pspie}{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.} - \providecommand{\sjqe}{Sov.\ J.\ compositionality Electron.} - \providecommand{\vr}{Vision Res.} - \newenvironment{ruledtabular}{\ClassError{compositionalityarticle}{The compositionalityarticle class does not support the ruledtabular environment. Consider using the booktabs package for tables and the table* environment for tables that span two columns.}{}}{} - - \AtBeginDocument{% - \providecommand{\pacs}[1]{} - \providecommand{\preprint}[1]{} - \providecommand{\volumeyear}[1]{} - \providecommand{\volumenumber}[1]{} - \providecommand{\issuenumber}[1]{} - \providecommand{\eid}[1]{} - \providecommand{\startpage}[1]{} - \def\endpage#1{\gdef\@endpage{#1}} - } - - \AtEndPreamble{% in compatibility mode we load natbib, but only if biblatex has not been loaded. We have to do this AtEndPreamble because natbib can not be loaded AtBeginDocument - \@ifpackageloaded{biblatex}{}{% - \@ifpackageloaded{natbib}{}{% - \usepackage{natbib} - }% - } - \let\@recordedbibliographystyle\relax - \let\@origbibliographystyle\bibliographystyle - \renewcommand{\bibliographystyle}[1]{% - \@origbibliographystyle{#1}% - \gdef\@recordedbibliographystyle{#1}% - } - \let\@origbibliography\bibliography - \renewcommand{\bibliography}[1]{% - \ifx\@recordedbibliographystyle\relax\bibliographystyle{plainnat}\fi - \ltx@ifpackageloaded{natbib}{}{% - \ltx@ifpackageloaded{biblatex}{}{% - \ClassWarning{compositionalityarticle}{You are manually generating your bibliography. Please make sure that all references include DOI hyperlinks. compositionalityarticle recommends the use of BibTeX together with the natbib package for generating the bibliography.}}}% - \@origbibliography{#1}} - \providecommand\textcite[1]{\citet{#1}} - \providecommand\onlinecite[1]{\cite{#1}} - } -} -{ -} - -\newenvironment{acknowledgements}{\section*{Acknowledgements}}{} - -\AtBeginDocument{% - \providecommand\text[1]{ - \ClassError{compositionalityarticle}{To use the \string\text{} command please load the mathtools package}{} - } -} - -\PassOptionsToPackage{font={small,sf}}{caption} - -\AtEndPreamble{ - \RequirePackage{caption} -} - -\@blacklistpackage[You are not supposed to load custom font packages such as]{berasans} -\@blacklistpackage[You are not supposed to load custom font packages such as]{arev} -\@blacklistpackage[You are not supposed to load custom font packages such as]{avant} -\@blacklistpackage[You are not supposed to load custom font packages such as]{bera} -\@blacklistpackage[You are not supposed to load custom font packages such as]{bookman} -\@blacklistpackage[You are not supposed to load custom font packages such as]{cabin} -\@blacklistpackage[You are not supposed to load custom font packages such as]{chancery} -\@blacklistpackage[You are not supposed to load custom font packages such as]{charter} -\@blacklistpackage[You are not supposed to load custom font packages such as]{cmbright} -\@blacklistpackage[You are not supposed to load custom font packages such as]{concrete} -\@blacklistpackage[You are not supposed to load custom font packages such as]{courier} -\@blacklistpackage[You are not supposed to load custom font packages such as]{dejavu} -\@blacklistpackage[You are not supposed to load custom font packages such as]{droid} -\@blacklistpackage[You are not supposed to load custom font packages such as]{drm} -\@blacklistpackage[You are not supposed to load custom font packages such as]{ebgaramond} -\@blacklistpackage[You are not supposed to load custom font packages such as]{euler} -\@blacklistpackage[You are not supposed to load custom font packages such as]{fourier} -\@blacklistpackage[You are not supposed to load custom font packages such as]{fouriernc} -\@blacklistpackage[You are not supposed to load custom font packages such as]{gentium} -\@blacklistpackage[You are not supposed to load custom font packages such as]{helvet} -\@blacklistpackage[You are not supposed to load custom font packages such as]{inconsolata} -\@blacklistpackage[You are not supposed to load custom font packages such as]{kpfonts} -\@blacklistpackage[You are not supposed to load custom font packages such as]{lato} -\@blacklistpackage[You are not supposed to load custom font packages such as]{libertineotf} -\@blacklistpackage[You are not supposed to load custom font packages such as]{libertine} -\@blacklistpackage[You are not supposed to load custom font packages such as]{librebaskerville} -\@blacklistpackage[You are not supposed to load custom font packages such as]{lmodern} -\@blacklistpackage[You are not supposed to load custom font packages such as]{mathdesign} -\@blacklistpackage[You are not supposed to load custom font packages such as]{mathpazo} -\@blacklistpackage[You are not supposed to load custom font packages such as]{mathptmx} -\@blacklistpackage[You are not supposed to load custom font packages such as]{newcent} -\@blacklistpackage[You are not supposed to load custom font packages such as]{newtx} -\@blacklistpackage[You are not supposed to load custom font packages such as]{quattrocento} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgadventor} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgbonum} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgchorus} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgcursor} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgheros} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgpagella} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgschola} -\@blacklistpackage[You are not supposed to load custom font packages such as]{tgtermes} -\@blacklistpackage[You are not supposed to load custom font packages such as]{times} -\@blacklistpackage[You are not supposed to load custom font packages such as]{yfonts} - -\iftoggle{@nopdfoutputerror}{}{\pdfoutput=0} %Set \pdfoutput=0 so that we can check later during \usepackage whether the authors did put \pdfoutput=1 into their document, bit only if the nopdfoutputerror was not given -\endinput -%% -%% End of file `compositionalityarticle.cls'. From 38b315b6cdc4351b2eb72fc667fd4f95a8830ad3 Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 11:20:22 +0300 Subject: [PATCH 11/34] better testing --- Makefile | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index da7f8bb..1764adc 100755 --- a/Makefile +++ b/Makefile @@ -41,19 +41,20 @@ clean: clobber: clean rm -f $(PKG).{ins,pdf,sty,tar.gz} -# interpolate: -# sed -i "$(INTERPOLATIONS)" $(PKG).dtx -createpapers: - mkdir -p all_test_papers +all_test_papers/%: + mkdir $@ + curl "http://arxiv.org/src/$*" | tar -xz -C $@ + grep -lr "{compositionalityarticle}" $@/*.tex \ + | while read -r path; do mv "$$path" "$${path%/*}/main.tex"; done + sed -i "s%{compositionalityarticle}%{../../compositionalityarticle}%" $@/main.tex + cp logo.eps $@/ + +all_test_papers: + mkdir -p $@ curl --silent 'https://export.arxiv.org/api/query?search_query=jr%3ACompositionality&start=0&max_results=50' \ | grep '' \ | grep -Po '(?<=http://arxiv.org/abs/)[0-9v.]+' \ - | while read -r link; do mkdir "all_test_papers/$$link" && curl "http://arxiv.org/src/$$link" | tar -xz -C "all_test_papers/$$link"; done - grep -lr "{compositionalityarticle}" all_test_papers/*/*.tex \ - | while read -r path; do mv "$$path" "$${path%/*}/main.tex"; done - for file in all_test_papers/*/main.tex; do \ - sed -i "s%{compositionalityarticle}%{../../compositionalityarticle}%" "$$file"; \ - done + | while read -r link; do make $@/$$link; done canceltests: rm -rf all_test_papers/ @@ -62,8 +63,7 @@ test: for folder in all_test_papers/*; do \ cd $$folder && \ pwd && \ - latexmk -C && \ - latexmk -pdf -halt-on-error -shell-escape main.tex || cd ..; \ + latexmk -gg -quiet -halt-on-error -shell-escape main.tex || cd ..; \ done log: @@ -72,6 +72,9 @@ log: texfot --ignore "LaTeX Warning: Citation" \ --ignore "LaTeX Warning: Reference" \ --ignore "This is pdfTeX," \ + --ignore "epstopdf" \ + --ignore "LaTeX Warning: " \ + --ignore "Package \w+ Warning: " \ --ignore "Package natbib Warning: Citation" \ --ignore "Package hyperref Warning:" \ --ignore "LaTeX Warning: You have requested document class" \ @@ -79,4 +82,7 @@ log: --ignore 'Underfull \\hbox' \ --ignore 'Overfull \\hbox' \ cat $$logfile; \ - done \ No newline at end of file + done + +all_test_papers/%/main.pdf: + cd all_test_papers/$* && latexmk -gg -shell-escape main.tex \ No newline at end of file From 13b1f095dcfd5bc6cb7d46b607a8520cbcf8280a Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 13:08:17 +0300 Subject: [PATCH 12/34] Overcome hurdles --- Makefile | 22 +++++++++++++--------- compositionalityarticle.cls | 9 ++++++++- compositionalityarticle.dtx | 19 +++++++++++++++++-- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 1764adc..1b19cbd 100755 --- a/Makefile +++ b/Makefile @@ -41,6 +41,7 @@ clean: clobber: clean rm -f $(PKG).{ins,pdf,sty,tar.gz} +# TODO: we're skipping 1112.3076v4, 1812.02935v6 and 2105.03038v4 because of pstricks. all_test_papers/%: mkdir $@ curl "http://arxiv.org/src/$*" | tar -xz -C $@ @@ -48,10 +49,16 @@ all_test_papers/%: | while read -r path; do mv "$$path" "$${path%/*}/main.tex"; done sed -i "s%{compositionalityarticle}%{../../compositionalityarticle}%" $@/main.tex cp logo.eps $@/ + cp ORCIDiD_iconvector.pdf $@/ + grep -lr "{pstricks}" $@/*.tex \ + | while read -r path; do rm -rf "$${path%/*}"; done -all_test_papers: - mkdir -p $@ - curl --silent 'https://export.arxiv.org/api/query?search_query=jr%3ACompositionality&start=0&max_results=50' \ +all_test_papers/index.xml: + mkdir -p all_test_papers + curl -o $@ 'https://export.arxiv.org/api/query?search_query=jr%3ACompositionality&start=0&max_results=50' + +all_test_papers: all_test_papers/index.xml + cat $< \ | grep '' \ | grep -Po '(?<=http://arxiv.org/abs/)[0-9v.]+' \ | while read -r link; do make $@/$$link; done @@ -60,11 +67,7 @@ canceltests: rm -rf all_test_papers/ test: - for folder in all_test_papers/*; do \ - cd $$folder && \ - pwd && \ - latexmk -gg -quiet -halt-on-error -shell-escape main.tex || cd ..; \ - done + for folder in all_test_papers/*; do make $$folder/main.pdf; done log: for logfile in all_test_papers/*/*.log; do \ @@ -73,6 +76,7 @@ log: --ignore "LaTeX Warning: Reference" \ --ignore "This is pdfTeX," \ --ignore "epstopdf" \ + --ignore "Missing character: " \ --ignore "LaTeX Warning: " \ --ignore "Package \w+ Warning: " \ --ignore "Package natbib Warning: Citation" \ @@ -85,4 +89,4 @@ log: done all_test_papers/%/main.pdf: - cd all_test_papers/$* && latexmk -gg -shell-escape main.tex \ No newline at end of file + cd all_test_papers/$* && latexmk -gg -pdf -halt-on-error -quiet -shell-escape main.tex \ No newline at end of file diff --git a/compositionalityarticle.cls b/compositionalityarticle.cls index 55bc26a..561971d 100644 --- a/compositionalityarticle.cls +++ b/compositionalityarticle.cls @@ -206,7 +206,13 @@ \group_end: } -\NewDocumentCommand{\printtitlestuff}{}{ +\newcommand*{\acknowledgmentsname}{Acknowledgments} +\newcommand{\acknowledgments}[1]{% +\section*{\acknowledgmentsname}% +#1% +} + +\renewcommand{\maketitle}{ \global \@topnum \z@%\newpage\null \noindent{\normalfont\huge\sffamily\color{shrimp}\@title} \par\bigskip \noindent\__shrimp_print_title_authors: @@ -216,6 +222,7 @@ \noindent\__shrimp_print_title_footnotes: \par } + \AtBeginDocument{\renewenvironment{abstract} {\small\quotation\noindent\ignorespaces} {\endquotation}} diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index a988579..5ffc154 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -192,7 +192,7 @@ } } { - \tl_const:Nn \l_shrimp_rhead_content \c_empty_tl + \tl_const:Nn \l_shrimp_lfoot_content \c_empty_tl } % \end{macrocode} % @@ -319,7 +319,20 @@ \group_end: } -\NewDocumentCommand{\printtitlestuff}{}{ +\newcommand*{\acknowledgmentsname}{Acknowledgments} +\newcommand{\acknowledgments}[1]{% + \section*{\acknowledgmentsname}% + #1% +} + +\let\address\affiliation % NOTE: this may need a fake optional argument + +% TODO: allow fake shorttitle on \title +% TODO: option clashes for hyperrerf and geometry +% TODO: Package biblatex Error: Incompatible package 'backref' + +%\NewDocumentCommand{\printtitlestuff}{}{ +\renewcommand{\maketitle}{ \global \@topnum \z@%\newpage\null \noindent{\normalfont\huge\sffamily\color{shrimp}\@title} \par\bigskip \noindent\@@_print_title_authors: @@ -329,6 +342,8 @@ \noindent\@@_print_title_footnotes: \par } +%\let\maketitle\printtitlestuff + \AtBeginDocument{\renewenvironment{abstract} {\small\quotation\noindent\ignorespaces} {\endquotation}} From 69c65eced459022813fa34e46ec1f831d275b6d0 Mon Sep 17 00:00:00 2001 From: Paolo Brasolin Date: Fri, 17 May 2024 14:09:14 +0200 Subject: [PATCH 13/34] Refactor testing procedure --- Makefile | 56 +++---------------------------------------------- test/.gitignore | 4 ++++ test/Makefile | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 53 deletions(-) create mode 100644 test/.gitignore create mode 100755 test/Makefile diff --git a/Makefile b/Makefile index 1b19cbd..4998b83 100755 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -SHELL = /usr/bin/bash +SHELL = /usr/bin/env bash PKG = compositionalityarticle # VERSION = UNRELEASED @@ -29,64 +29,14 @@ gawk: dev: ls $(PKG).dtx $(PKG)-doc-new.tex | entr -c make dev2 - + dev2: make $(PKG).cls texfot pdflatex -interaction=nonstopmode $(PKG)-doc-new.tex - clean: rm -f $(PKG).{aux,dep,glo,gls,hd,idx,ilg,ind,listing,log,out,brf} - + clobber: clean rm -f $(PKG).{ins,pdf,sty,tar.gz} -# TODO: we're skipping 1112.3076v4, 1812.02935v6 and 2105.03038v4 because of pstricks. -all_test_papers/%: - mkdir $@ - curl "http://arxiv.org/src/$*" | tar -xz -C $@ - grep -lr "{compositionalityarticle}" $@/*.tex \ - | while read -r path; do mv "$$path" "$${path%/*}/main.tex"; done - sed -i "s%{compositionalityarticle}%{../../compositionalityarticle}%" $@/main.tex - cp logo.eps $@/ - cp ORCIDiD_iconvector.pdf $@/ - grep -lr "{pstricks}" $@/*.tex \ - | while read -r path; do rm -rf "$${path%/*}"; done - -all_test_papers/index.xml: - mkdir -p all_test_papers - curl -o $@ 'https://export.arxiv.org/api/query?search_query=jr%3ACompositionality&start=0&max_results=50' - -all_test_papers: all_test_papers/index.xml - cat $< \ - | grep '' \ - | grep -Po '(?<=http://arxiv.org/abs/)[0-9v.]+' \ - | while read -r link; do make $@/$$link; done - -canceltests: - rm -rf all_test_papers/ - -test: - for folder in all_test_papers/*; do make $$folder/main.pdf; done - -log: - for logfile in all_test_papers/*/*.log; do \ - echo -e "\\n\\nFILE : \e[0;31m$$logfile\e[0m" && \ - texfot --ignore "LaTeX Warning: Citation" \ - --ignore "LaTeX Warning: Reference" \ - --ignore "This is pdfTeX," \ - --ignore "epstopdf" \ - --ignore "Missing character: " \ - --ignore "LaTeX Warning: " \ - --ignore "Package \w+ Warning: " \ - --ignore "Package natbib Warning: Citation" \ - --ignore "Package hyperref Warning:" \ - --ignore "LaTeX Warning: You have requested document class" \ - --ignore "LaTeX Warning: Unused global option\(s\)" \ - --ignore 'Underfull \\hbox' \ - --ignore 'Overfull \\hbox' \ - cat $$logfile; \ - done - -all_test_papers/%/main.pdf: - cd all_test_papers/$* && latexmk -gg -pdf -halt-on-error -quiet -shell-escape main.tex \ No newline at end of file diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000..9c9e706 --- /dev/null +++ b/test/.gitignore @@ -0,0 +1,4 @@ +index.xml +index.txt +src/ +tar/ diff --git a/test/Makefile b/test/Makefile new file mode 100755 index 0000000..eae875d --- /dev/null +++ b/test/Makefile @@ -0,0 +1,55 @@ +SHELL = /usr/bin/env bash + +index.xml: + curl -o $@ 'https://export.arxiv.org/api/query?search_query=jr%3ACompositionality&start=0&max_results=100' + +# TODO: we're skipping 1112.3076v4, 1812.02935v6 and 2105.03038v4 because of pstricks. +index.txt: index.xml + cat $< \ + | grep '' \ + | grep -Pv '(1112.3076v4|1812.02935v6|2105.03038v4)' \ + | grep -Po '(?<=http://arxiv.org/abs/)[0-9v.]+' \ + > $@ + +tar/%.tar.gz: + mkdir -p tar + curl -o $@ "http://arxiv.org/src/$*" + +tar: index.txt + cat $< | while read -r id; do make tar/$$id.tar.gz; done + +src/%: tar/%.tar.gz + mkdir -p $@ + tar -xvzf $< -C $@ + grep -lr "{compositionalityarticle}" $@/*.tex \ + | while read -r path; do mv "$$path" "$${path%/*}/main.tex"; done + sed -i "s%{compositionalityarticle}%{../../../compositionalityarticle}%" $@/main.tex + cp -f ../logo.eps $@ + cp -f ../ORCIDiD_iconvector.pdf $@ + +src: index.txt tar + cat $< | while read -r id; do make src/$$id; done + +src/%/main.pdf: + cd src/$* && latexmk -gg -pdf -halt-on-error -quiet -shell-escape main.tex + +all: src + for folder in src/*; do make $$folder/main.pdf; done + +log: + for logfile in src/*/*.log; do \ + echo -e "\\n\\n========\\n\\n" && \ + texfot \ + --ignore "This is pdfTeX," \ + --ignore "epstopdf" \ + --ignore "Missing character: " \ + --ignore "LaTeX( Font)? Warning: " \ + --ignore "pdfTeX warning" \ + --ignore "Package \w+ Warning: " \ + --ignore '(Under|Over)full \\hbox' \ + cat $$logfile; \ + done + +clobber: + rm -rf src + From 13d123c06ef6adf0219b66df31dd202d3ad16e54 Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 16:31:03 +0300 Subject: [PATCH 14/34] add compatibility flag --- compositionalityarticle.dtx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 5ffc154..8987e10 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -87,11 +87,13 @@ % \begin{macrocode} \keys_define:nn { shrimp } { - accepted .tl_set:N = \l_shrimp_accepted_tl, - volume .tl_set:N = \l_shrimp_volume_tl, - issue .tl_set:N = \l_shrimp_issue_tl, + accepted .tl_set:N = \l_shrimp_accepted_tl, + volume .tl_set:N = \l_shrimp_volume_tl, + issue .tl_set:N = \l_shrimp_issue_tl, published .bool_set:N = \l_shrimp_published_bool, published .default:n = false, + compat .bool_set:N = \l_shrimp_compat_bool, + compat .default:n = false, } \ProcessKeysOptions { shrimp } @@ -331,7 +333,13 @@ % TODO: option clashes for hyperrerf and geometry % TODO: Package biblatex Error: Incompatible package 'backref' -%\NewDocumentCommand{\printtitlestuff}{}{ +% This is here only for retrocompatibility issues +\bool_if:nTF \l_shrimp_compat_bool { + \newcommand{\keywords}[1]{} + \let\oldtitle\title + \renewcommand{\title}[2][]{\oldtitle{#2}} +} {} + \renewcommand{\maketitle}{ \global \@topnum \z@%\newpage\null \noindent{\normalfont\huge\sffamily\color{shrimp}\@title} \par\bigskip From b256549f04f7ae7ad98956ca548042a9747b42ba Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 16:31:17 +0300 Subject: [PATCH 15/34] linting --- compositionalityarticle.dtx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 8987e10..fd8eb39 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -341,7 +341,7 @@ } {} \renewcommand{\maketitle}{ - \global \@topnum \z@%\newpage\null + \global \@topnum \z@ \noindent{\normalfont\huge\sffamily\color{shrimp}\@title} \par\bigskip \noindent\@@_print_title_authors: \par\bigskip @@ -350,7 +350,6 @@ \noindent\@@_print_title_footnotes: \par } -%\let\maketitle\printtitlestuff \AtBeginDocument{\renewenvironment{abstract} {\small\quotation\noindent\ignorespaces} From 60548d08d3c35c8b3709c647859c0591c9c5f2d6 Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 16:31:46 +0300 Subject: [PATCH 16/34] refactor pkg options --- compositionalityarticle.dtx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index fd8eb39..ceac072 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -125,9 +125,19 @@ \RequirePackage{fancyhdr} \RequirePackage{xcolor} \RequirePackage{xkeyval} +\RequirePackage{graphicx} + +% Define brand color. +% \begin{macrocode} +\definecolor{shrimp}{RGB}{255,90,95} +% \end{macrocode} +% +% Setup hyperlink decorations. +\PassOptionsToPackage{colorlinks=true,hyperindex,allcolors=shrimp}{hyperref} \RequirePackage{hyperref} + \PassOptionsToPackage{hyperpageref}{backref} -\RequirePackage{backref} % TODO: this is incompatible with the user loading biblatex +\RequirePackage{backref} % WARNING: this is incompatible with the user loading biblatex \def\backrefpagesname{} % \end{macrocode} % From 75013a71934bb65157c17b60e98a8ae156021ad0 Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 16:32:53 +0300 Subject: [PATCH 17/34] delete cls --- compositionalityarticle.cls | 228 ------------------------------------ compositionalityarticle.dtx | 13 -- test/Makefile | 2 +- 3 files changed, 1 insertion(+), 242 deletions(-) delete mode 100644 compositionalityarticle.cls diff --git a/compositionalityarticle.cls b/compositionalityarticle.cls deleted file mode 100644 index 561971d..0000000 --- a/compositionalityarticle.cls +++ /dev/null @@ -1,228 +0,0 @@ -%% -%% This is file `compositionalityarticle.cls', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% compositionalityarticle.dtx (with options: `package') -%% -%% ============================================================================= -%% -%% compositionality () -%% -%% ============================================================================= -\RequirePackage{expl3}[2023/05/11] -\RequirePackage{l3keys2e} -\RequirePackage{xparse} -\RequirePackage{lmodern} -\ProvidesExplClass -{compositionality} -{} -{} -{The Compositionality article class} -\keys_define:nn { shrimp } -{ - accepted .tl_set:N = \l_shrimp_accepted_tl, - volume .tl_set:N = \l_shrimp_volume_tl, - issue .tl_set:N = \l_shrimp_issue_tl, - published .bool_set:N = \l_shrimp_published_bool, - published .default:n = false, -} - -\ProcessKeysOptions { shrimp } -\tl_const:Nn \l_shrimp_doi - { - 10.32408/compositionality- - \tl_use:N \l_shrimp_volume_tl - - - \tl_use:N \l_shrimp_issue_tl - } -\LoadClass{article} -\RequirePackage{amsmath} -\RequirePackage{amsfonts} -\RequirePackage{amssymb} -\RequirePackage{geometry} -\RequirePackage{titlesec} -\RequirePackage{fancyhdr} -\RequirePackage{xcolor} -\RequirePackage{xkeyval} -\RequirePackage{hyperref} -\PassOptionsToPackage{hyperpageref}{backref} -%\RequirePackage{backref} -\def\backrefpagesname{} -\geometry{ - margin=3cm, -} -\hypersetup{ - colorlinks=true, - allcolors=shrimp, - backref=page -} -\definecolor{shrimp}{RGB}{255,90,95} -\titleformat{\section}[hang] - {\normalfont\Large\sffamily}{\thesection}{1em}{} -\titleformat{\subsection}[hang] - {\normalfont\large\sffamily}{\thesubsection}{1em}{} -\titleformat{\subsubsection}[hang] - {\normalfont\normalsize\sffamily}{\thesubsubsection}{1em}{} -\titleformat{\paragraph}[runin] - {\normalfont\normalsize\sffamily}{}{1em}{}[.] -\bool_if:nTF \l_shrimp_published_bool - { - \tl_const:Nn \l_shrimp_rhead_content - { - \color{shrimp} \sffamily\footnotesize - Volume ~ - \tl_use:N \l_shrimp_volume_tl - , ~ Issue ~ - \tl_use:N \l_shrimp_issue_tl \kern1em - ISSN ~ 2631-4444 - } - } - { - \tl_const:Nn \l_shrimp_rhead_content \c_empty_tl - } - -\bool_if:nTF \l_shrimp_published_bool - { - \tl_const:Nn \l_shrimp_lfoot_content - { - \color{shrimp} \sffamily\footnotesize - Accepted ~ in ~ Compositionality ~ on ~ - \tl_use:N \l_shrimp_accepted_tl - . ~ doi: - \tl_use:N \l_shrimp_doi - } - } - { - \tl_const:Nn \l_shrimp_lfoot_content \c_empty_tl - } -\lhead{} -\chead{} -\rhead{\ifnum\value{page}>1\else\l_shrimp_rhead_content\fi} -\lfoot{\ifnum\value{page}>1\else\l_shrimp_lfoot_content\fi} -\cfoot{} -\rfoot{\color{shrimp}\sffamily\thepage} -\let\headrule\relax -\let\footrulewidth\headrulewidth -\pagestyle{fancy} -\fancypagestyle{plain}{} - - -\seq_new:N \g__shrimp_authors_seq -\seq_new:N \g__shrimp_affiliation_seq -\seq_new:N \g__shrimp_email_seq -\seq_new:N \g__shrimp_orcid_seq -\seq_new:N \g__shrimp_webpage_seq -\seq_new:N \g__shrimp_thanks_seq - -\RenewDocumentCommand{\author}{m}{ - \seq_gput_right:Nn \g__shrimp_authors_seq {#1} -} - -\NewDocumentCommand{\affiliation}{m}{ - \seq_put_right:Nn \g__shrimp_affiliation_seq {#1} -} - -\NewDocumentCommand{\email}{m}{ - \seq_put_right:Nn \g__shrimp_email_seq {#1} -} - -\NewDocumentCommand{\orcid}{m}{ - \seq_put_right:Nn \g__shrimp_orcid_seq {#1} -} - -\NewDocumentCommand{\homepage}{m}{ - \seq_put_right:Nn \g__shrimp_webpage_seq {#1} -} - -\RenewDocumentCommand{\thanks}{m}{ - \seq_put_right:Nn \g__shrimp_thanks_seq {#1} -} - -\cs_new:Nn \__shrimp_print_title_authors: { - \group_begin: - \sffamily\large - \int_step_inline:nn { \seq_count:N \g__shrimp_authors_seq } { - \seq_item:Nn \g__shrimp_authors_seq { ##1 } - \textsuperscript { \int_to_arabic:n { ##1 } } - \int_compare:nNnTF { ##1 + 1 } = { \seq_count:N \g__shrimp_authors_seq } { , ~ and ~ } { } - \int_compare:nNnTF { ##1 + 1 } < { \seq_count:N \g__shrimp_authors_seq } { , ~ } { } - } - \group_end: -} - -\cs_new:Nn \__shrimp_print_title_affiliations: { - \group_begin: - \sffamily\small\color{gray} - \int_step_inline:nn { \seq_count:N \g__shrimp_authors_seq } { - \textsuperscript { \int_to_arabic:n { ##1 } } - \seq_item:Nn \g__shrimp_affiliation_seq { ##1 }\smallskip\newline - } - \group_end: -} - -\cs_new:Nn \__shrimp_print_title_footnotes: { - \group_begin: - \let\thefootnote\relax - \int_step_inline:nn { \seq_count:N \g__shrimp_authors_seq } { - - \seq_clear:N \l_tmpa_seq - - \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \g__shrimp_email_seq { ##1 } } - \tl_if_empty:NTF \l_tmpa_tl {} { - \seq_put_right:Nx \l_tmpa_seq { - \exp_not:N \href { mailto: \tl_use:N \l_tmpa_tl } { \tl_use:N \l_tmpa_tl } - } - } - - \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \g__shrimp_webpage_seq { ##1 } } - \tl_if_empty:NTF \l_tmpa_tl {} { - \seq_put_right:Nx \l_tmpa_seq { - \exp_not:N \href { \tl_use:N \l_tmpa_tl } { \tl_use:N \l_tmpa_tl } - } - } - - \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \g__shrimp_orcid_seq { ##1 } } - \tl_if_empty:NTF \l_tmpa_tl {} { - \seq_put_right:Nx \l_tmpa_seq { - \exp_not:N \href - { https://orcid.org/\tl_use:N \l_tmpa_tl } - { - \lower0.3ex\hbox{\includegraphics[height=2ex]{ORCIDiD_iconvector.pdf}}\thinspace - \tl_use:N \l_tmpa_tl - } - } - } - - \footnotetext{ - \sffamily - \seq_item:Nn \g__shrimp_authors_seq { ##1 }:~ - \seq_use:Nn \l_tmpa_seq { ,~ } - \seq_if_empty:NF \l_tmpa_seq {} {.} - \seq_item:Nn \g__shrimp_thanks_seq { ##1 } - } - } - \group_end: -} - -\newcommand*{\acknowledgmentsname}{Acknowledgments} -\newcommand{\acknowledgments}[1]{% -\section*{\acknowledgmentsname}% -#1% -} - -\renewcommand{\maketitle}{ - \global \@topnum \z@%\newpage\null - \noindent{\normalfont\huge\sffamily\color{shrimp}\@title} \par\bigskip - \noindent\__shrimp_print_title_authors: - \par\bigskip - \noindent\__shrimp_print_title_affiliations: - \par - \noindent\__shrimp_print_title_footnotes: - \par -} - -\AtBeginDocument{\renewenvironment{abstract} -{\small\quotation\noindent\ignorespaces} -{\endquotation}} diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index ceac072..f1c1073 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -148,19 +148,6 @@ } % \end{macrocode} % -% Setup hyperlink decorations. -% \begin{macrocode} -\hypersetup{ - colorlinks=true, - allcolors=shrimp, - backref=page -} -% \end{macrocode} -% -% Define brand color. -% \begin{macrocode} -\definecolor{shrimp}{RGB}{255,90,95} -% \end{macrocode} % % Set sectioning styles. % \begin{macrocode} diff --git a/test/Makefile b/test/Makefile index eae875d..45f9d8e 100755 --- a/test/Makefile +++ b/test/Makefile @@ -22,7 +22,7 @@ src/%: tar/%.tar.gz mkdir -p $@ tar -xvzf $< -C $@ grep -lr "{compositionalityarticle}" $@/*.tex \ - | while read -r path; do mv "$$path" "$${path%/*}/main.tex"; done + | while read -r path; do [ -f "$${path%/*}/main.tex" ] || mv "$$path" "$${path%/*}/main.tex"; done sed -i "s%{compositionalityarticle}%{../../../compositionalityarticle}%" $@/main.tex cp -f ../logo.eps $@ cp -f ../ORCIDiD_iconvector.pdf $@ From 6ad42f04bedff5c2c5982f12a01c5456ecbf973c Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 16:33:42 +0300 Subject: [PATCH 18/34] gitignore cls --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6d022e5..7b2a445 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ *.cb *.cb2 .*.lb +compositionalityarticle.cls *.hd ## Intermediate documents: *.dvi From 811d3726946a89049d73a9451d287c42eec2af8f Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 17:18:33 +0300 Subject: [PATCH 19/34] drop old doc files --- Makefile | 7 - compositionalityarticle-doc-new.tex | 299 ---------------------------- compositionalityarticle-doc.tex | 281 -------------------------- 3 files changed, 587 deletions(-) delete mode 100644 compositionalityarticle-doc-new.tex delete mode 100644 compositionalityarticle-doc.tex diff --git a/Makefile b/Makefile index 4998b83..b26fbef 100755 --- a/Makefile +++ b/Makefile @@ -27,13 +27,6 @@ watch: gawk: ls $(PKG).dtx | entr -c texfot pdflatex -interaction=nonstopmode $(PKG).dtx -dev: - ls $(PKG).dtx $(PKG)-doc-new.tex | entr -c make dev2 - -dev2: - make $(PKG).cls - texfot pdflatex -interaction=nonstopmode $(PKG)-doc-new.tex - clean: rm -f $(PKG).{aux,dep,glo,gls,hd,idx,ilg,ind,listing,log,out,brf} diff --git a/compositionalityarticle-doc-new.tex b/compositionalityarticle-doc-new.tex deleted file mode 100644 index bfe3e81..0000000 --- a/compositionalityarticle-doc-new.tex +++ /dev/null @@ -1,299 +0,0 @@ -\documentclass[ - accepted=2020-05-01, - published=true, - issue=1, - volume=2, - a4paper, -]{compositionalityarticle} - -\usepackage{caption} -\captionsetup{margin=10pt,font=small,labelfont=sf} - - -\usepackage[utf8]{inputenc} -\usepackage[english]{babel} -\usepackage[T1]{fontenc} - -\usepackage{tikz} -\usepackage{lipsum} - -% commands che danno errore -\newenvironment{widetext}{}{} -% \let\affiliation\relax -% \let\email\relax -% \let\orcid\relax -% \let\homepage\relax -\newtheorem{theorem}{Theorem} - -\begin{document} - -\title{Template demonstrating the compositionalityarticle class} -\date{} -\author{Brendan Fong} -\email{latex@compositionality-journal.org} -\homepage{http://compositionality-journal.org} -\orcid{0000-0003-0290-4698} -\affiliation{MIT, Mathematics Department, Boston, USA} -% -\author{Nina Otter} -\email{latex@compositionality-journal.org} -\orcid{0000-0002-3578-1420} -\affiliation{UCLA, Mathematics Department, Los Angeles, USA} -% -\author{Joshua Tan} -\email{latex@compositionality-journal.org} -\orcid{0000-0001-5317-4782} -\affiliation{University of Oxford, Computer Science Department, Oxford, UK} -% -\thanks{You can use the \texttt{\string\email}, \texttt{\string\homepage}, \texttt{\string\orcid}, and \texttt{\string\thanks} commands to add additional information for the preceding \texttt{\string\author}. If applicable, this can also be used to indicate that a work has previously been published in conference proceedings.} - -% \maketitle -\printtitlestuff - -\begin{abstract} - In the standard \texttt{onecolumn} layout - the abstract is typeset above the text. - Compositionality also supports a \texttt{twocolumn} layout with the abstract as a boldface first paragraph. - Both can be combined with the \texttt{titlepage} option to obtain a format with dedicated title and abstract pages that are not included in the page count. - This format can be more suitable for long articles. - The \texttt{abstract} environment can appear both before and after the \texttt{\string\maketitle} command and calling \texttt{\string\maketitle} is optional, as long as there is an \texttt{abstract}. - Both \texttt{abstract} and \texttt{\string\maketitle} however must be placed after all other \texttt{\string\author}, \texttt{\string\affiliation}, etc.\ commands. -In the \texttt{twocolumn} layout and without the \texttt{titlepage} option there can be a paragraph directly following the abstract before the first section. -In \texttt{onecolumn} format or with a dedicated \texttt{titlepage}, this should be avoided. -Note that clicking the title links to the page for the published article on \href{http://compositionality-journal.org}{compositionality-journal.org}. -In this way readers can easily verify whether a work using the \texttt{compositionalityarticle} class was actually published in Compositionality. -\end{abstract} - - - -\section{Figures} -\begin{figure}[t] - \centering - \includegraphics[scale=.2]{example-image-a} - \caption{Every figure must have an informative caption and a number. - The caption can be placed above, below, or to the side of the figure, as you see fit. - The same applies for tables, boxes, and other floating elements.} - \label{fig:figure1} -\end{figure} -See Fig.~\ref{fig:figure1} for an example of how to include figures. -Feel free to place them at the top or bottom of the page, or in the middle of a paragraph as you see fit. -Try to place them on the same page as the text referring to them. -A figure on the first page can help readers remember and recognize your work more easily. - -\section{Sectioning and equations} -Sections, subsections, subsubsections, and paragraphs should be typeset with the standard LaTeX commands. -You can use the standard commands for equations. -For multi-line equations \texttt{align} is \href{http://tex.stackexchange.com/questions/196/eqnarray-vs-align}{preferable} over \texttt{eqnarray}. -\begin{align} - \label{emc} - E &= m c^2\\ - a^2 + b^2 &= c^2\\ - H |\psi\rangle &= E |\psi\rangle\\ - (\mathbb{I} \otimes A) (B \otimes \mathbb{I}) &= A \otimes B -\end{align} -Whether you prefer to refer to equations as Eq.~\eqref{emc}, Equation~\ref{emc}, or just \eqref{emc} is up to you, but please be consistent and use the \texttt{\string\eqref\{\dots\}} command instead of writing \texttt{(\string\ref\{\dots\})}. -As a courtesy for your readers and referees please suppress equation numbers only if there is a valid reason to do so to not make in unnecessarily difficult to refer to individual results and steps in derivations. - -\paragraph{Paragraphs} -The paragraph is the smallest unit of sectioning. -Feel free to end the paragraph title with a full stop if you find this appropriate. - -\subsection{References and footnotes} -\label{sec:subsec1} -Footnotes\footnote{Only use footnotes when appropriate.} appear in the bottom of the page. -Please do not mix them with your references. -Citations to other works should appear in the References section at the end of the work. - -\begin{theorem}[DOI links are required] - Important: As Compositionality is a member of Crossref, all references to works that have a DOI must be hyperlinked according to the DOI. Those links must start with \texttt{https://doi.org/}. Direct links to the website of the publisher are not sufficient. -\end{theorem} - -This can be achieved in several ways, depending on how you format your bibliography. -Suppose the DOI of an article \cite{examplecitation} that you want to cite is \texttt{10.22331/idonotexist}. -If you are formating your bibliography manually, you can cite this work using the following in your \texttt{thebibliography} environment: -\begin{verbatim} -\bibitem{examplecitation} - Name Surname, - Compositionality \textbf{123}, 123456 (1916). - \href{https://doi.org/10.22331/idonotexist} - {https://doi.org/10.22331/idonotexist} -\end{verbatim} - -\begin{theorem}[One citation per bibitem] - Important: If you are formatting your bibliography manually, please do not group multiple citations into one \texttt{\string\bibitem}. - It is not nice for your readers and it screws up our automatic extraction of citations and creates superfluous manual work. -\end{theorem} - -We encourage the use of BibTeX to generate your bibliography from the BibTeX meta-data provided by publishers. -For DOI linking to work, the BibTeX file must contain the \texttt{doi} field as for example in: -\begin{verbatim} -@article{examplecitation, - author = {Surname, Name}, - title = {Title}, - journal = {Compositionality}, - volume = {123}, - page = {123456}, - year = {1916}, - doi = {10.22331/idonotexist}, -} -\end{verbatim} - -Be advised that \href{http://wiki.lyx.org/BibTeX/Tips}{BibTeX does not support unicode characters}. -All special characters must be input via their respective LaTeX commands. - -If you are using BibTeX, you can load the \texttt{natbib} package by putting -\begin{verbatim} -\usepackage[numbers,sort&compress]{natbib} -\end{verbatim} -in the preamble of your document and then use the \texttt{plainnat} citation style by including your BibTeX bibliography \texttt{mybibliography.bib} where you want the bibliography to appear as follows: -\begin{verbatim} -\bibliographystyle{plainnat} -\bibliography{mybibliography} -\end{verbatim} -The \texttt{compositionalityarticle} class automatically detects that the \texttt{natbib} package was loaded and redefines the \texttt{\string\doi} command to create hyperlinks. -This is likely the easiest option if you are converting from another document class. - -If you want to used BibLaTeX, you can instead add -\begin{verbatim} -\usepackage[backend=bibtex]{biblatex} -\addbibresource{mybibliography.bib} -\end{verbatim} -to the preamble of your document and then output the bibliography with -\begin{verbatim} -\printbibliography -\end{verbatim} -where appropriate. -You then have to upload the .bbl file along with the other source files when submitting to the arXiv. -Due to incompatibilities between different LaTeX versions we unfortunately cannot recommend this option until the arXiv has updated its LaTeX system \cite{biblatexsubmittingtothearxiv}. - -The \texttt{compositionalityarticle} class automatically detects that the \texttt{biblatex} package was loaded, sets the default option \texttt{doi=true} to include the DOI in the bibliography, and declares a suitable field format to make it a hyperlink. -Due to issues with \texttt{biber} we recommend to use the \texttt{bibtex} backend of \texttt{biblatex}. - -More information on how to get DOI links in your document can be found on StackExchange \cite{howtogetdoilinksinbibliography,automaticallyaddingdoifieldstoahandmadebibliography}. -Feel free to change the appearance of citations in any way you like by using a different \texttt{bibliographystyle} or via the advanced mechanisms provided by BibLaTeX. -The only two requirements are that citations must uniquely identify the cited work and that they must contain a DOI hyperlink whenever possible. - -To get correct line breaks within links, please add the line -\begin{verbatim} -\pdfoutput=1 -\end{verbatim} -within the first five lines of your main LaTeX file as suggested by the arXiv \cite{arxivpdfoutput}. - -\section{Unpublished and accepted works} -This class supports the \texttt{unpublished} option which disables all Compositionality related branding such as the color as well as the hyperlink in the title. -It can be used for works not yet accepted in Compositionality or that are not intended for submission to Compositionality. -By giving the \texttt{accepted=YYYY-MM-DD} option, with \texttt{YYYY-MM-DD} the acceptance date, the footnote ``Accepted in Compositionality on YYYY-MM-DD. Click on title to verify.'' is added to the bottom of each page to clearly mark works that have been accepted in Compositionality. Once the work is accepted for publication you will receive an identifier {\tt article-id} which you will have to give as the {\tt shortitle=article-id} option (this is needed for the title hyperlink). Finally, for accepted works you also have to give the \texttt{volume=volume-nr}, as well as \texttt{issue=issue-nr} options. - -\section{Summary section} -Longer articles should include a section that, early on, explains the main results, their limitations, and assumptions. -Depending on the target audience this section can be used to, for example, present the main theorem, or provide a summary of the results for a wider audience. - -\section{Extra packages} -Compositionality encourages you to load the following extra packages: -\begin{verbatim} -\usepackage[utf8]{inputenc} -\usepackage[english]{babel} -\usepackage[T1]{fontenc} -\usepackage{amsmath} -\usepackage{hyperref} -\end{verbatim} -If you do not load the \texttt{hyperref} package, \texttt{compositionalityarticle} automatically loads it for you. -Packages that change font settings, such as \texttt{times} or \texttt{helvet} should be avoided. - -\section{Wide equations} -Very wide equations can be shown expanding over both columns using the \texttt{widetext} environment. -In \texttt{onecolumn} mode, the \texttt{widetext} environment has no effect. -\begin{widetext} - \begin{equation} -|\mathrm{AME}(n=6,q=5)\rangle=\sum_{i,j,k=0}^4 |i,j,k,i+j+k,i+2j+3k,i+3j+4k\rangle - \end{equation} -\end{widetext} -To enabled this feature in the \texttt{twocolumn} mode, \texttt{compositionalityarticle} relies on the package \texttt{ltxgrid}. -Unfortunately this package has a bug that leads to a sub-optimal placement of extremely long footnotes. - -\section{Title information} -You can provide information on authors and affiliations in the common format also used by \texttt{revtex}: -\begin{verbatim} -\title{Title} -\author{Author 1} -\author{Author 2} -\affiliation{Affiliation 1} -\author{Author 3} -\affiliation{Affiliation 2} -\author{Author 4} -\affiliation{Affiliation 1} -\affiliation{Affiliation 3} -\end{verbatim} -In this example affiliation 1 will be associated with authors 1, 2, and 4, affiliation 2 with author 3 and affiliation 3 with author 4. -Repeated affiliations are automatically recognized and typeset in the \texttt{superscriptaddress} style. -Alternatively you can use a format similar to that of the \texttt{authblk} package and the \texttt{elsearticle} document class to specify the same affiliation relations as follows: -\begin{verbatim} -\title{Title} -\author[1]{Author 1} -\author[1]{Author 2} -\author[2]{Author 3} -\author[1,3]{Author 4} -\affil[1]{Affiliation 1} -\affil[2]{Affiliation 1} -\affil[3]{Affiliation 1} -\end{verbatim} - - - - - - -\appendix - -\section{First section of the appendix} -Compositionality allows the usage of appendices. - -\subsection{Subsection} -Ideally, the command \texttt{\string\appendix} should be put before the appendices to get appropriate section numbering. -The appendices are then numbered alphabetically, with numeric (sub)subsection numbering. -Equations continue to be numbered sequentially. -\begin{equation} - A \neq B -\end{equation} -You are free to change this in case it is more appropriate for your article, but a consistent and unambiguous numbering of sections and equations must be ensured. - -If you want your appendices to appear in \texttt{onecolumn} mode but the rest of the document in \texttt{twocolumn} mode, you can insert the command \texttt{\string\onecolumn\string\newpage} before \texttt{\string\appendix}. - -\section{Problems and Bugs} -In case you encounter problems using the \texttt{compositionalityarticle} class please analyse the error message carefully and look for help online; \href{http://tex.stackexchange.com/}{http://tex.stackexchange.com/} is an excellent resource. -If you cannot resolve a problem, open a bug report in our bug-tracker under -\begin{center} - \href{https://github.com/compositionality/issues}{https://github.com/compositionality/latex-template/issues}. -\end{center} - -You can also contact us via email under \href{executive-board@compositionality-journal.org}{executive@compositionality-journal.org}, but it may take significantly longer to get a response. -In any case we need the full source of a document that produces the problem and the log file showing the error to help you. - -\bibliographystyle{plain} -\begin{thebibliography}{9} -\bibitem{examplecitation} - Name Surname, - Compositionality \textbf{123}, 123456 (1916). - \href{https://doi.org/10.22331/idonotexist} - {https://doi.org/10.22331/idonotexist} - -\bibitem{biblatexsubmittingtothearxiv} - StackExchange discussion on \href{http://tex.stackexchange.com/questions/26990/biblatex-submitting-to-the-arxiv}{``Biblatex: submitting to the arXiv'' (2017-01-10)} - -\bibitem{arxivpdfoutput} - Help article published by the arXiv on \href{https://arxiv.org/help/submit_tex}{``Considerations for TeX Submissions'' (2017-01-10)} - -\bibitem{howtogetdoilinksinbibliography} - StackExchange discussion on \href{http://tex.stackexchange.com/questions/3802/how-to-get-doi-links-in-bibliography}{``How to get DOI links in bibliography'' (2016-11-18)} - -\bibitem{automaticallyaddingdoifieldstoahandmadebibliography} - StackExchange discussion on \href{http://tex.stackexchange.com/questions/6810/automatically-adding-doi-fields-to-a-hand-made-bibliography}{``Automatically adding DOI fields to a hand-made bibliography'' (2016-11-18)} - -\end{thebibliography} - - - -\onecolumn\newpage - - -\end{document} \ No newline at end of file diff --git a/compositionalityarticle-doc.tex b/compositionalityarticle-doc.tex deleted file mode 100644 index f2220bd..0000000 --- a/compositionalityarticle-doc.tex +++ /dev/null @@ -1,281 +0,0 @@ -\documentclass[a4paper,onecolumn, superscriptaddress,10pt,accepted=2020-05-01,issue=1, volume=2, shorttitle=papers]{compositionalityarticle} - \pdfoutput=1 -\usepackage[utf8]{inputenc} -\usepackage[english]{babel} -\usepackage[T1]{fontenc} -\usepackage{amsmath} -\usepackage{hyperref} - -\usepackage{tikz} -\usepackage{lipsum} - -\newtheorem{theorem}{Theorem} - -\begin{document} - -\title{Template demonstrating the compositionalityarticle class} -\date{} -\author{Brendan Fong} -\email{latex@compositionality-journal.org} -\homepage{http://compositionality-journal.org} -\orcid{0000-0003-0290-4698} -\thanks{You can use the \texttt{\string\email}, \texttt{\string\homepage}, \texttt{\string\orcid}, and \texttt{\string\thanks} commands to add additional information for the preceding \texttt{\string\author}. If applicable, this can also be used to indicate that a work has previously been published in conference proceedings.} -\affiliation{MIT, Mathematics Department, Boston, USA} -\author{Nina Otter} -\email{latex@compositionality-journal.org} -\orcid{0000-0002-3578-1420} -\affiliation{UCLA, Mathematics Department, Los Angeles, USA} -\author{Joshua Tan} -\email{latex@compositionality-journal.org} -\orcid{0000-0001-5317-4782} -\affiliation{University of Oxford, Computer Science Department, - Oxford, UK} -\maketitle - -\begin{abstract} - In the standard \texttt{onecolumn} layout - the abstract is typeset above the text. - Compositionality also supports a \texttt{twocolumn} layout with the abstract as a boldface first paragraph. - Both can be combined with the \texttt{titlepage} option to obtain a format with dedicated title and abstract pages that are not included in the page count. - This format can be more suitable for long articles. - The \texttt{abstract} environment can appear both before and after the \texttt{\string\maketitle} command and calling \texttt{\string\maketitle} is optional, as long as there is an \texttt{abstract}. - Both \texttt{abstract} and \texttt{\string\maketitle} however must be placed after all other \texttt{\string\author}, \texttt{\string\affiliation}, etc.\ commands. -In the \texttt{twocolumn} layout and without the \texttt{titlepage} option there can be a paragraph directly following the abstract before the first section. -In \texttt{onecolumn} format or with a dedicated \texttt{titlepage}, this should be avoided. -Note that clicking the title links to the page for the published article on \href{http://compositionality-journal.org}{compositionality-journal.org}. -In this way readers can easily verify whether a work using the \texttt{compositionalityarticle} class was actually published in Compositionality. -\end{abstract} - - - -\section{Figures} -\begin{figure}[t] - \centering - \includegraphics[scale=.2]{logo} - \caption{Every figure must have an informative caption and a number. - The caption can be placed above, below, or to the side of the figure, as you see fit. - The same applies for tables, boxes, and other floating elements.} - \label{fig:figure1} -\end{figure} -See Fig.~\ref{fig:figure1} for an example of how to include figures. -Feel free to place them at the top or bottom of the page, or in the middle of a paragraph as you see fit. -Try to place them on the same page as the text referring to them. -A figure on the first page can help readers remember and recognize your work more easily. - -\section{Sectioning and equations} -Sections, subsections, subsubsections, and paragraphs should be typeset with the standard LaTeX commands. -You can use the standard commands for equations. -For multi-line equations \texttt{align} is \href{http://tex.stackexchange.com/questions/196/eqnarray-vs-align}{preferable} over \texttt{eqnarray}. -\begin{align} - \label{emc} - E &= m\,c^2\\ - a^2 + b^2 &= c^2\\ - H\,|\psi\rangle &= E\,|\psi\rangle\\ - (\openone \otimes A)\,(B \otimes \openone) &= A \otimes B -\end{align} -Whether you prefer to refer to equations as Eq.~\eqref{emc}, Equation~\ref{emc}, or just \eqref{emc} is up to you, but please be consistent and use the \texttt{\string\eqref\{\dots\}} command instead of writing \texttt{(\string\ref\{\dots\})}. -As a courtesy for your readers and referees please suppress equation numbers only if there is a valid reason to do so to not make in unnecessarily difficult to refer to individual results and steps in derivations. - -\paragraph{Paragraphs} -The paragraph is the smallest unit of sectioning. -Feel free to end the paragraph title with a full stop if you find this appropriate. - -\subsection{References and footnotes} -\label{sec:subsec1} -Footnotes\footnote{Only use footnotes when appropriate.} appear in the bottom of the page. -Please do not mix them with your references. -Citations to other works should appear in the References section at the end of the work. - -\begin{theorem}[DOI links are required] - Important: As Compositionality is a member of Crossref, all references to works that have a DOI must be hyperlinked according to the DOI. Those links must start with \texttt{https://doi.org/}. Direct links to the website of the publisher are not sufficient. -\end{theorem} - -This can be achieved in several ways, depending on how you format your bibliography. -Suppose the DOI of an article \cite{examplecitation} that you want to cite is \texttt{10.22331/idonotexist}. -If you are formating your bibliography manually, you can cite this work using the following in your \texttt{thebibliography} environment: -\begin{verbatim} -\bibitem{examplecitation} - Name Surname, - Compositionality \textbf{123}, 123456 (1916). - \href{https://doi.org/10.22331/idonotexist} - {https://doi.org/10.22331/idonotexist} -\end{verbatim} - -\begin{theorem}[One citation per bibitem] - Important: If you are formatting your bibliography manually, please do not group multiple citations into one \texttt{\string\bibitem}. - It is not nice for your readers and it screws up our automatic extraction of citations and creates superfluous manual work. -\end{theorem} - -We encourage the use of BibTeX to generate your bibliography from the BibTeX meta-data provided by publishers. -For DOI linking to work, the BibTeX file must contain the \texttt{doi} field as for example in: -\begin{verbatim} -@article{examplecitation, - author = {Surname, Name}, - title = {Title}, - journal = {Compositionality}, - volume = {123}, - page = {123456}, - year = {1916}, - doi = {10.22331/idonotexist}, -} -\end{verbatim} - -Be advised that \href{http://wiki.lyx.org/BibTeX/Tips}{BibTeX does not support unicode characters}. -All special characters must be input via their respective LaTeX commands. - -If you are using BibTeX, you can load the \texttt{natbib} package by putting -\begin{verbatim} -\usepackage[numbers,sort&compress]{natbib} -\end{verbatim} -in the preamble of your document and then use the \texttt{plainnat} citation style by including your BibTeX bibliography \texttt{mybibliography.bib} where you want the bibliography to appear as follows: -\begin{verbatim} -\bibliographystyle{plainnat} -\bibliography{mybibliography} -\end{verbatim} -The \texttt{compositionalityarticle} class automatically detects that the \texttt{natbib} package was loaded and redefines the \texttt{\string\doi} command to create hyperlinks. -This is likely the easiest option if you are converting from another document class. - -If you want to used BibLaTeX, you can instead add -\begin{verbatim} -\usepackage[backend=bibtex]{biblatex} -\addbibresource{mybibliography.bib} -\end{verbatim} -to the preamble of your document and then output the bibliography with -\begin{verbatim} -\printbibliography -\end{verbatim} -where appropriate. -You then have to upload the .bbl file along with the other source files when submitting to the arXiv. -Due to incompatibilities between different LaTeX versions we unfortunately cannot recommend this option until the arXiv has updated its LaTeX system \cite{biblatexsubmittingtothearxiv}. - -The \texttt{compositionalityarticle} class automatically detects that the \texttt{biblatex} package was loaded, sets the default option \texttt{doi=true} to include the DOI in the bibliography, and declares a suitable field format to make it a hyperlink. -Due to issues with \texttt{biber} we recommend to use the \texttt{bibtex} backend of \texttt{biblatex}. - -More information on how to get DOI links in your document can be found on StackExchange \cite{howtogetdoilinksinbibliography,automaticallyaddingdoifieldstoahandmadebibliography}. -Feel free to change the appearance of citations in any way you like by using a different \texttt{bibliographystyle} or via the advanced mechanisms provided by BibLaTeX. -The only two requirements are that citations must uniquely identify the cited work and that they must contain a DOI hyperlink whenever possible. - -To get correct line breaks within links, please add the line -\begin{verbatim} -\pdfoutput=1 -\end{verbatim} -within the first five lines of your main LaTeX file as suggested by the arXiv \cite{arxivpdfoutput}. - -\section{Unpublished and accepted works} -This class supports the \texttt{unpublished} option which disables all Compositionality related branding such as the color as well as the hyperlink in the title. -It can be used for works not yet accepted in Compositionality or that are not intended for submission to Compositionality. -By giving the \texttt{accepted=YYYY-MM-DD} option, with \texttt{YYYY-MM-DD} the acceptance date, the footnote ``Accepted in Compositionality on YYYY-MM-DD. Click on title to verify.'' is added to the bottom of each page to clearly mark works that have been accepted in Compositionality. Once the work is accepted for publication you will receive an identifier {\tt article-id} which you will have to give as the {\tt shortitle=article-id} option (this is needed for the title hyperlink). Finally, for accepted works you also have to give the \texttt{volume=volume-nr}, as well as \texttt{issue=issue-nr} options. - -\section{Summary section} -Longer articles should include a section that, early on, explains the main results, their limitations, and assumptions. -Depending on the target audience this section can be used to, for example, present the main theorem, or provide a summary of the results for a wider audience. - -\section{Extra packages} -Compositionality encourages you to load the following extra packages: -\begin{verbatim} -\usepackage[utf8]{inputenc} -\usepackage[english]{babel} -\usepackage[T1]{fontenc} -\usepackage{amsmath} -\usepackage{hyperref} -\end{verbatim} -If you do not load the \texttt{hyperref} package, \texttt{compositionalityarticle} automatically loads it for you. -Packages that change font settings, such as \texttt{times} or \texttt{helvet} should be avoided. - -\section{Wide equations} -Very wide equations can be shown expanding over both columns using the \texttt{widetext} environment. -In \texttt{onecolumn} mode, the \texttt{widetext} environment has no effect. -\begin{widetext} - \begin{equation} -|\mathrm{AME}(n=6,q=5)\rangle=\sum_{i,j,k=0}^4 |i,j,k,i+j+k,i+2j+3k,i+3j+4k\rangle - \end{equation} -\end{widetext} -To enabled this feature in the \texttt{twocolumn} mode, \texttt{compositionalityarticle} relies on the package \texttt{ltxgrid}. -Unfortunately this package has a bug that leads to a sub-optimal placement of extremely long footnotes. - -\section{Title information} -You can provide information on authors and affiliations in the common format also used by \texttt{revtex}: -\begin{verbatim} -\title{Title} -\author{Author 1} -\author{Author 2} -\affiliation{Affiliation 1} -\author{Author 3} -\affiliation{Affiliation 2} -\author{Author 4} -\affiliation{Affiliation 1} -\affiliation{Affiliation 3} -\end{verbatim} -In this example affiliation 1 will be associated with authors 1, 2, and 4, affiliation 2 with author 3 and affiliation 3 with author 4. -Repeated affiliations are automatically recognized and typeset in the \texttt{superscriptaddress} style. -Alternatively you can use a format similar to that of the \texttt{authblk} package and the \texttt{elsearticle} document class to specify the same affiliation relations as follows: -\begin{verbatim} -\title{Title} -\author[1]{Author 1} -\author[1]{Author 2} -\author[2]{Author 3} -\author[1,3]{Author 4} -\affil[1]{Affiliation 1} -\affil[2]{Affiliation 1} -\affil[3]{Affiliation 1} -\end{verbatim} - - - - - - -\appendix - -\section{First section of the appendix} -Compositionality allows the usage of appendices. - -\subsection{Subsection} -Ideally, the command \texttt{\string\appendix} should be put before the appendices to get appropriate section numbering. -The appendices are then numbered alphabetically, with numeric (sub)subsection numbering. -Equations continue to be numbered sequentially. -\begin{equation} - A \neq B -\end{equation} -You are free to change this in case it is more appropriate for your article, but a consistent and unambiguous numbering of sections and equations must be ensured. - -If you want your appendices to appear in \texttt{onecolumn} mode but the rest of the document in \texttt{twocolumn} mode, you can insert the command \texttt{\string\onecolumn\string\newpage} before \texttt{\string\appendix}. - -\section{Problems and Bugs} -In case you encounter problems using the \texttt{compositionalityarticle} class please analyse the error message carefully and look for help online; \href{http://tex.stackexchange.com/}{http://tex.stackexchange.com/} is an excellent resource. -If you cannot resolve a problem, open a bug report in our bug-tracker under -\begin{center} - \href{https://github.com/compositionality/issues}{https://github.com/compositionality/latex-template/issues}. -\end{center} - -You can also contact us via email under \href{executive-board@compositionality-journal.org}{executive@compositionality-journal.org}, but it may take significantly longer to get a response. -In any case we need the full source of a document that produces the problem and the log file showing the error to help you. - -\bibliographystyle{plain} -\begin{thebibliography}{9} -\bibitem{examplecitation} - Name Surname, - Compositionality \textbf{123}, 123456 (1916). - \href{https://doi.org/10.22331/idonotexist} - {https://doi.org/10.22331/idonotexist} - -\bibitem{biblatexsubmittingtothearxiv} - StackExchange discussion on \href{http://tex.stackexchange.com/questions/26990/biblatex-submitting-to-the-arxiv}{``Biblatex: submitting to the arXiv'' (2017-01-10)} - -\bibitem{arxivpdfoutput} - Help article published by the arXiv on \href{https://arxiv.org/help/submit_tex}{``Considerations for TeX Submissions'' (2017-01-10)} - -\bibitem{howtogetdoilinksinbibliography} - StackExchange discussion on \href{http://tex.stackexchange.com/questions/3802/how-to-get-doi-links-in-bibliography}{``How to get DOI links in bibliography'' (2016-11-18)} - -\bibitem{automaticallyaddingdoifieldstoahandmadebibliography} - StackExchange discussion on \href{http://tex.stackexchange.com/questions/6810/automatically-adding-doi-fields-to-a-hand-made-bibliography}{``Automatically adding DOI fields to a hand-made bibliography'' (2016-11-18)} - -\end{thebibliography} - - - -\onecolumn\newpage - - -\end{document} \ No newline at end of file From ab76bff09ea71567426e6686d919e0ea188c412e Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 17:19:27 +0300 Subject: [PATCH 20/34] stub documentation --- compositionalityarticle.dtx | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index f1c1073..9a897be 100755 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -47,6 +47,38 @@ % % \section{Documentation} % +% \subsection{Documentclass options} +% \begin{function}{ +% accepted, +% volume, +% issue, +% published, +% } +% \begin{syntax} +% accepted=\meta{bool} +% volume=\meta{integer} +% issue=\meta{integer} +% published=\meta{YYYY-MM-DD} +% \end{syntax} +% +% The \texttt{accepted} key does things +% +% \end{function} +% \subsection{Metadata handling} +% \begin{function}{ +% \author, +% \affiliation, +% \email, +% \orcid, +% \homepage, +% \thanks +% } +% \begin{syntax} +% \cs{author}\marg{author name} +% \end{syntax} +% +% +% \end{function} % \end{documentation} % % ^^A=[ PACKAGE ]=============================================================== From 1c4bc940879f269995418fb12239470408bfd399 Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 17:20:04 +0300 Subject: [PATCH 21/34] refactor --- compositionalityarticle.dtx | 43 +++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 18 deletions(-) mode change 100755 => 100644 compositionalityarticle.dtx diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx old mode 100755 new mode 100644 index 9a897be..fa122c7 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -158,21 +158,22 @@ \RequirePackage{xcolor} \RequirePackage{xkeyval} \RequirePackage{graphicx} - -% Define brand color. -% \begin{macrocode} -\definecolor{shrimp}{RGB}{255,90,95} +\RequirePackage{hyperref} % \end{macrocode} % % Setup hyperlink decorations. -\PassOptionsToPackage{colorlinks=true,hyperindex,allcolors=shrimp}{hyperref} -\RequirePackage{hyperref} - +% \begin{macrocode} +\hypersetup{colorlinks=true,hyperindex,allcolors=shrimp} \PassOptionsToPackage{hyperpageref}{backref} \RequirePackage{backref} % WARNING: this is incompatible with the user loading biblatex \def\backrefpagesname{} % \end{macrocode} % +% Define brand color. +% \begin{macrocode} +\definecolor{shrimp}{RGB}{255,90,95} +% \end{macrocode} +% % Setup page geometry. % \begin{macrocode} \geometry{ @@ -349,26 +350,29 @@ } \group_end: } - +% \end{macrocode} +% +% Definition of acknowledgments subsection +% \begin{macrocode} \newcommand*{\acknowledgmentsname}{Acknowledgments} \newcommand{\acknowledgments}[1]{% \section*{\acknowledgmentsname}% #1% } - -\let\address\affiliation % NOTE: this may need a fake optional argument - -% TODO: allow fake shorttitle on \title -% TODO: option clashes for hyperrerf and geometry -% TODO: Package biblatex Error: Incompatible package 'backref' - +% \end{macrocode} +% % This is here only for retrocompatibility issues +% \begin{macrocode} \bool_if:nTF \l_shrimp_compat_bool { + \let\address\affiliation % NOTE: this may need a fake optional argument \newcommand{\keywords}[1]{} \let\oldtitle\title \renewcommand{\title}[2][]{\oldtitle{#2}} } {} - +% \end{macrocode} +% +% Redefine maketitle +% \begin{macrocode} \renewcommand{\maketitle}{ \global \@topnum \z@ \noindent{\normalfont\huge\sffamily\color{shrimp}\@title} \par\bigskip @@ -379,7 +383,10 @@ \noindent\@@_print_title_footnotes: \par } - +% \end{macrocode} +% +% Abstractname is empty +% \begin{macrocode} \AtBeginDocument{\renewenvironment{abstract} {\small\quotation\noindent\ignorespaces} {\endquotation}} @@ -388,4 +395,4 @@ % \iffalse % % \fi -% \end{implementation} \ No newline at end of file +% \end{implementation} From 7d631232dd28eaaf63a523a123d038fb653c11aa Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 17:33:05 +0300 Subject: [PATCH 22/34] move from makefile to l3build --- .gitignore | 1 + Makefile | 35 ----------------------------------- README.md | 12 ++++++++++++ build.lua | 7 +++++++ 4 files changed, 20 insertions(+), 35 deletions(-) delete mode 100755 Makefile create mode 100644 build.lua diff --git a/.gitignore b/.gitignore index 7b2a445..fccc8aa 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ *.cb2 .*.lb compositionalityarticle.cls +build/ *.hd ## Intermediate documents: *.dvi diff --git a/Makefile b/Makefile deleted file mode 100755 index b26fbef..0000000 --- a/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -SHELL = /usr/bin/env bash -PKG = compositionalityarticle - -# VERSION = UNRELEASED -# DATE = $(shell date +"%Y/%m/%d") - -# INTERPOLATIONS = s@@$(DATE)@g; -# INTERPOLATIONS += s//$(VERSION)/g; - -$(PKG).tar.gz: $(PKG).ins $(PKG).pdf README.md - ctanify --notds $^ - -$(PKG).pdf: $(PKG).dtx - pdflatex $(PKG).dtx - pdflatex $(PKG).dtx - makeindex -s gglo.ist -o $(PKG).gls $(PKG).glo - makeindex -s gind.ist -o $(PKG).ind $(PKG).idx - pdflatex $(PKG).dtx - pdflatex $(PKG).dtx - -$(PKG).cls: $(PKG).ins $(PKG).dtx - tex $< - -watch: - ls $(PKG).dtx | entr -c make $(PKG).pdf - -gawk: - ls $(PKG).dtx | entr -c texfot pdflatex -interaction=nonstopmode $(PKG).dtx - -clean: - rm -f $(PKG).{aux,dep,glo,gls,hd,idx,ilg,ind,listing,log,out,brf} - -clobber: clean - rm -f $(PKG).{ins,pdf,sty,tar.gz} - diff --git a/README.md b/README.md index b90171a..0e1a650 100644 --- a/README.md +++ b/README.md @@ -10,5 +10,17 @@ The class may be distributed and/or modified under the conditions of the LaTeX P If you find any bugs when using the article class or the template, please help us by opening a report in our bug-tracker under https://github.com/compositionality/latex-template/issues. Please reproduce the problem by providing the full source of a minimal working LaTeX file, as well as the log file showing the error. +### Build system + +To build this package we use `l3build` from [CTAN](https://ctan.org/pkg/l3build). + + +```bash +l3build doc # builds documentation +l3build ctan # builds the package to upload on CTAN +l3build clean # removes build artifacts +``` + + ## Acknowledgements This class is heavily based on the `quantumarticle' class for the journal https://quantum-journal.org. We thank the editors of Quantum for sharing their experiences and expertise. diff --git a/build.lua b/build.lua new file mode 100644 index 0000000..ad97183 --- /dev/null +++ b/build.lua @@ -0,0 +1,7 @@ +module = "compositionalityarticle" + +function update_tag(filename, content, tagname, tagdate) + content = string.gsub(content, "", tagname) + content = string.gsub(content, "", tagdate) + return content +end \ No newline at end of file From 4dfdb51883474b16c16097bb916671234fce40d8 Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Fri, 17 May 2024 17:41:07 +0300 Subject: [PATCH 23/34] remove outdated ref to quantumarticle class --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 0e1a650..90b173a 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,3 @@ l3build doc # builds documentation l3build ctan # builds the package to upload on CTAN l3build clean # removes build artifacts ``` - - -## Acknowledgements -This class is heavily based on the `quantumarticle' class for the journal https://quantum-journal.org. We thank the editors of Quantum for sharing their experiences and expertise. From 5223d0563d41226a87da4642630003fdc3d518c2 Mon Sep 17 00:00:00 2001 From: fouche Date: Sat, 18 May 2024 12:17:55 +0300 Subject: [PATCH 24/34] add mwe and todo list for stuff found in the way --- TODO.md | 1 + mwe.tex | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 TODO.md create mode 100644 mwe.tex diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..1e34526 --- /dev/null +++ b/TODO.md @@ -0,0 +1 @@ +- if some metadata are empty, don't print them \ No newline at end of file diff --git a/mwe.tex b/mwe.tex new file mode 100644 index 0000000..3746f0d --- /dev/null +++ b/mwe.tex @@ -0,0 +1,20 @@ +\documentclass[accepted=2999-29-02,volume=9999,issue=9999,published=true]{compositionalityarticle} + + +\title{A minimal working example for the compositionalityarticle class} +\author{P. Brasolin} +% \affiliation{} +% \email{} +% \orcid{} +% \homepage{} +\thanks{I thank my mom for getting laid and having made a figo come me.} +\author{F. Loregian} +% \affiliation{} +% \email{} +% \orcid{} +% \homepage{} +\thanks{I thank my mom for getting laid and having made a figo come me.} +\begin{document} +\maketitle +A +\end{document} \ No newline at end of file From 9b11a9ecd8b9e23e18a8e56a02b6ca2493187784 Mon Sep 17 00:00:00 2001 From: fouche Date: Sat, 18 May 2024 12:18:23 +0300 Subject: [PATCH 25/34] stub documentation --- compositionalityarticle.dtx | 50 ++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index fa122c7..bde0f82 100644 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -12,7 +12,7 @@ \EnableCrossrefs \CodelineIndex \RecordChanges - +\usepackage{tcolorbox} \begin{document} \DocInput{\jobname.dtx} \PrintChanges @@ -48,23 +48,38 @@ % \section{Documentation} % % \subsection{Documentclass options} +% As usual, options for the documentclass are optional arguments of \texttt{documentclass}: +% \begin{syntax} +% \cs{documentclass}\oarg{option1,option2,\dots}\{compositionalityarticle\} +% \end{syntax} % \begin{function}{ % accepted, % volume, % issue, % published, % } -% \begin{syntax} -% accepted=\meta{bool} -% volume=\meta{integer} -% issue=\meta{integer} -% published=\meta{YYYY-MM-DD} -% \end{syntax} -% -% The \texttt{accepted} key does things -% +% \begin{syntax} + % accepted=\meta{YYYY-MM-DD} + % volume=\meta{integer} + % issue=\meta{integer} + % published=\meta{bool} +% \end{syntax} +% +% The \texttt{documentclass} options form the bibliographic information for the paper. The \texttt{accepted} key accepts a string in the format \texttt{YYYY-MM-DD}. The fields \texttt{volume} and \texttt{issue} are integers \texttt{[0-9]+}. If the Boolean option \texttt{accepted} is flagged \texttt{true}, the class generates a watermark on the bottom and top-right of the first page of the paper, containing the metadata: date of acceptance, DOI (generated from \texttt{volume} and \texttt{issue}), and volume/issue pair. % \end{function} +% \begin{tcolorbox}[ +% colback=cyan!5!white, +% colframe=cyan, +% sharp corners, +% boxrule=1pt, +% ] +% Most authors need a DOI for their paper as soon as possible. When a paper is accepted in Compositionality the DOI will be always formed as +% \begin{center} \tt https://www.doi.org/10.32408/compositionality-\meta{volume}-\meta{issue} \end{center} +% As soon as the paper is assigned a volume/issue pair, this information can be used by authors, irregardless of the publication queue. +% \end{tcolorbox} +% % \subsection{Metadata handling} +% The metadata for the paper is handled by a series of self-explanatory macros (author accepts a single name): % \begin{function}{ % \author, % \affiliation, @@ -74,10 +89,21 @@ % \thanks % } % \begin{syntax} -% \cs{author}\marg{author name} +% \cs{author}\marg{author's name} +% \cs{affiliation}\marg{author's university/school} +% \cs{email}\marg{author's email} +% \cs{orcid}\marg{author's orcid} +% \cs{homepage}\marg{author's personal webpage (if available)} % \end{syntax} +% So, \cs{author}\texttt{\{Jane Doe, John Doe\}} and \cs{affiliation}\texttt{\{University of Wakanda, Narnia School of Technology\}} is not the correct syntax (although it doesn't raise an error). Instead: \dots % -% +% \end{function} +% \begin{function} +% {\title} +% \begin{syntax} +% \cs{title}\marg{the paper's title} +% \end{syntax} +% Once all these fields are filled, \cs{maketitle} will print all the metadata in the right place. % \end{function} % \end{documentation} % From 2a1a9ff73d99a60b9aee6257f00bc89a295fb729 Mon Sep 17 00:00:00 2001 From: fouche Date: Sat, 18 May 2024 12:18:40 +0300 Subject: [PATCH 26/34] spacing before \thanks content --- compositionalityarticle.dtx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index bde0f82..8a6a519 100644 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -370,7 +370,7 @@ \sffamily \seq_item:Nn \g_@@_authors_seq { ##1 }:~ \seq_use:Nn \l_tmpa_seq { ,~ } - \seq_if_empty:NF \l_tmpa_seq {} {.} + \seq_if_empty:NF \l_tmpa_seq {} {.~} \seq_item:Nn \g_@@_thanks_seq { ##1 } } } From 5d1be82dea9b9196b9e531620c4956cd729567ac Mon Sep 17 00:00:00 2001 From: fouche Date: Mon, 20 May 2024 09:48:14 +0300 Subject: [PATCH 27/34] draft documentation --- .gitignore | 1 + compositionalityarticle.dtx | 19 +++++++++++++++++-- mwe.tex | 4 ++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index fccc8aa..355db8b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ *.fmt *.fot *.cb +compositionalityarticle-ctan.zip *.cb2 .*.lb compositionalityarticle.cls diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 8a6a519..b211df0 100644 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -94,9 +94,24 @@ % \cs{email}\marg{author's email} % \cs{orcid}\marg{author's orcid} % \cs{homepage}\marg{author's personal webpage (if available)} +% \cs{thanks}\marg{author's acknowledgements (if needed)} % \end{syntax} -% So, \cs{author}\texttt{\{Jane Doe, John Doe\}} and \cs{affiliation}\texttt{\{University of Wakanda, Narnia School of Technology\}} is not the correct syntax (although it doesn't raise an error). Instead: \dots -% +% So, \cs{author}\texttt{\{Jane Doe, John Doe\}} and \cs{affiliation}\texttt{\{University of Wakanda, Narnia School of Technology\}} is not the correct syntax (although it doesn't raise an error). Instead, use +% \begin{verbatim} +% \author{Peter Freyd} +% \affiliation{University of Pennsylvania} +% \email{peter.freyd@example.com} +% \orcid{0000-0003-2025-7860} +% \homepage{https://www.math.upenn.edu/~pjf} +% %%% +% \author{John von Neumann} +% \affiliation{Institute for Advanced Study, Princeton} +% \email{john.vonneumann@example.com} +% \orcid{0000-0001-5864-1937} +% \homepage{https://www.ias.edu/vonneumann} +% \end{verbatim} +% +% The author's \href{https://orcid.org}{orcid} ID should be specified as four four-digits groups like \texttt{0123-0123-0123-0123}. % \end{function} % \begin{function} % {\title} diff --git a/mwe.tex b/mwe.tex index 3746f0d..964b174 100644 --- a/mwe.tex +++ b/mwe.tex @@ -7,13 +7,13 @@ % \email{} % \orcid{} % \homepage{} -\thanks{I thank my mom for getting laid and having made a figo come me.} +\thanks{I thank my mom.} \author{F. Loregian} % \affiliation{} % \email{} % \orcid{} % \homepage{} -\thanks{I thank my mom for getting laid and having made a figo come me.} +\thanks{I thank my mom.} \begin{document} \maketitle A From 69c111f7c0ea891151eb96f96c37d92b04224f5a Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Mon, 20 May 2024 11:28:31 +0300 Subject: [PATCH 28/34] raise error if no \author given --- compositionalityarticle.dtx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index b211df0..273303d 100644 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -326,6 +326,12 @@ \seq_put_right:Nn \g_@@_thanks_seq {#1} } +\msg_new:nnn { compositionalityarticle } { no-authors } { You~need~to~define~at~least~one~author,~using~the~\author~macro } + +\cs_new:Nn \@@_check_authors_ge_one: { + \seq_if_empty:NTF \g_@@_authors_seq { \msg_error:nn { compositionalityarticle } { no-authors } } { } +} + \cs_new:Nn \@@_print_title_authors: { \group_begin: \sffamily\large From cac01de73671ab2a40632d59b33d721f3a0ecb61 Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Mon, 20 May 2024 11:29:12 +0300 Subject: [PATCH 29/34] setup build environment --- Makefile | 5 +++++ build.lua | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a406e17 --- /dev/null +++ b/Makefile @@ -0,0 +1,5 @@ +build/doc/compositionalityarticle.pdf build/unpacked/compositionalityarticle.cls: compositionalityarticle.dtx compositionalityarticle.ins build.lua + l3build doc + +mwe.pdf: mwe.tex build/unpacked/compositionalityarticle.cls + latexmk -pdf mwe.tex \ No newline at end of file diff --git a/build.lua b/build.lua index ad97183..f090654 100644 --- a/build.lua +++ b/build.lua @@ -4,4 +4,6 @@ function update_tag(filename, content, tagname, tagdate) content = string.gsub(content, "", tagname) content = string.gsub(content, "", tagdate) return content -end \ No newline at end of file +end + +typesetopts = "-interaction=nonstopmode -shell-escape" \ No newline at end of file From efd5e2ddc28739b87594be0dc37e925190af7bfc Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Mon, 20 May 2024 11:51:23 +0300 Subject: [PATCH 30/34] hide superscript when affil is missing --- compositionalityarticle.dtx | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 273303d..78acbe7 100644 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -97,19 +97,19 @@ % \cs{thanks}\marg{author's acknowledgements (if needed)} % \end{syntax} % So, \cs{author}\texttt{\{Jane Doe, John Doe\}} and \cs{affiliation}\texttt{\{University of Wakanda, Narnia School of Technology\}} is not the correct syntax (although it doesn't raise an error). Instead, use -% \begin{verbatim} -% \author{Peter Freyd} -% \affiliation{University of Pennsylvania} -% \email{peter.freyd@example.com} -% \orcid{0000-0003-2025-7860} -% \homepage{https://www.math.upenn.edu/~pjf} -% %%% -% \author{John von Neumann} -% \affiliation{Institute for Advanced Study, Princeton} -% \email{john.vonneumann@example.com} -% \orcid{0000-0001-5864-1937} -% \homepage{https://www.ias.edu/vonneumann} -% \end{verbatim} +% \begin{minted}{latex} +% \author{Peter Freyd} +% \affiliation{University of Pennsylvania} +% \email{peter.freyd@example.com} +% \orcid{0000-0003-2025-7860} +% \homepage{https://www.math.upenn.edu/~pjf} +% %%% +% \author{John von Neumann} +% \affiliation{Institute for Advanced Study, Princeton} +% \email{john.vonneumann@example.com} +% \orcid{0000-0001-5864-1937} +% \homepage{https://www.ias.edu/vonneumann} +% \end{minted} % % The author's \href{https://orcid.org}{orcid} ID should be specified as four four-digits groups like \texttt{0123-0123-0123-0123}. % \end{function} @@ -337,7 +337,8 @@ \sffamily\large \int_step_inline:nn { \seq_count:N \g_@@_authors_seq } { \seq_item:Nn \g_@@_authors_seq { ##1 } - \textsuperscript { \int_to_arabic:n { ##1 } } + \tl_set:Nf \l_tmpa_tl { \seq_item:Nn \g_@@_affiliation_seq { ##1 } } + \tl_if_empty:NTF \l_tmpa_tl { } { \textsuperscript { \int_to_arabic:n { ##1 } } } \int_compare:nNnTF { ##1 + 1 } = { \seq_count:N \g_@@_authors_seq } { , ~ and ~ } { } \int_compare:nNnTF { ##1 + 1 } < { \seq_count:N \g_@@_authors_seq } { , ~ } { } } @@ -348,8 +349,11 @@ \group_begin: \sffamily\small\color{gray} \int_step_inline:nn { \seq_count:N \g_@@_authors_seq } { - \textsuperscript { \int_to_arabic:n { ##1 } } - \seq_item:Nn \g_@@_affiliation_seq { ##1 }\smallskip\newline + \tl_set:Nf \l_tmpa_tl { \seq_item:Nn \g_@@_affiliation_seq { ##1 } } + \tl_if_empty:NTF \l_tmpa_tl { } { + \textsuperscript { \int_to_arabic:n { ##1 } } + \tl_use:N \l_tmpa_tl\smallskip\newline + } } \group_end: } @@ -421,6 +425,7 @@ % Redefine maketitle % \begin{macrocode} \renewcommand{\maketitle}{ + \@@_check_authors_ge_one: \global \@topnum \z@ \noindent{\normalfont\huge\sffamily\color{shrimp}\@title} \par\bigskip \noindent\@@_print_title_authors: From 99882303cc7143a009d74ae5eba67c66a81e0683 Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Mon, 20 May 2024 12:01:06 +0300 Subject: [PATCH 31/34] affils numbered correctly when some are missing --- compositionalityarticle.dtx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 78acbe7..37a8bc2 100644 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -335,10 +335,14 @@ \cs_new:Nn \@@_print_title_authors: { \group_begin: \sffamily\large + \int_zero:N \l_tmpa_int \int_step_inline:nn { \seq_count:N \g_@@_authors_seq } { \seq_item:Nn \g_@@_authors_seq { ##1 } \tl_set:Nf \l_tmpa_tl { \seq_item:Nn \g_@@_affiliation_seq { ##1 } } - \tl_if_empty:NTF \l_tmpa_tl { } { \textsuperscript { \int_to_arabic:n { ##1 } } } + \tl_if_empty:NTF \l_tmpa_tl { } { + \int_incr:N \l_tmpa_int + \textsuperscript { \int_to_arabic:n { \int_use:N \l_tmpa_int } } + } \int_compare:nNnTF { ##1 + 1 } = { \seq_count:N \g_@@_authors_seq } { , ~ and ~ } { } \int_compare:nNnTF { ##1 + 1 } < { \seq_count:N \g_@@_authors_seq } { , ~ } { } } @@ -348,10 +352,12 @@ \cs_new:Nn \@@_print_title_affiliations: { \group_begin: \sffamily\small\color{gray} + \int_zero:N \l_tmpa_int \int_step_inline:nn { \seq_count:N \g_@@_authors_seq } { \tl_set:Nf \l_tmpa_tl { \seq_item:Nn \g_@@_affiliation_seq { ##1 } } \tl_if_empty:NTF \l_tmpa_tl { } { - \textsuperscript { \int_to_arabic:n { ##1 } } + \int_incr:N \l_tmpa_int + \textsuperscript { \int_to_arabic:n { \int_use:N \l_tmpa_int } } \tl_use:N \l_tmpa_tl\smallskip\newline } } From ccb3cbd8344966197a22ad298add718ec93a454c Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Mon, 20 May 2024 12:48:34 +0300 Subject: [PATCH 32/34] Refactor internal data structure to improve metadata macro behaviour --- compositionalityarticle.dtx | 42 +++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 37a8bc2..2b603ba 100644 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -302,35 +302,55 @@ \seq_new:N \g_@@_webpage_seq \seq_new:N \g_@@_thanks_seq +\int_new:N \g_@@_current_author_int +\int_zero:N \g_@@_current_author_int + +\msg_new:nnn { compositionalityarticle } { no-authors } { You~need~to~define~at~least~one~author,~using~the~\author~macro } + +\cs_new:Nn \@@_check_authors_ge_one: { + \int_if_zero:nTF \g_@@_current_author_int { \msg_error:nn { compositionalityarticle } { no-authors } } { } +} + +\cs_new:Nn \@@_init_new_author: { + \int_incr:N \g_@@_current_author_int + \seq_gput_right:NV \g_@@_authors_seq \c_empty_tl + \seq_gput_right:NV \g_@@_affiliation_seq \c_empty_tl + \seq_gput_right:NV \g_@@_email_seq \c_empty_tl + \seq_gput_right:NV \g_@@_orcid_seq \c_empty_tl + \seq_gput_right:NV \g_@@_webpage_seq \c_empty_tl + \seq_gput_right:NV \g_@@_thanks_seq \c_empty_tl +} + \RenewDocumentCommand{\author}{m}{ - \seq_gput_right:Nn \g_@@_authors_seq {#1} + \@@_init_new_author: + \seq_set_item:Nnn \g_@@_authors_seq { \int_use:N \g_@@_current_author_int } { #1 } } \NewDocumentCommand{\affiliation}{m}{ - \seq_put_right:Nn \g_@@_affiliation_seq {#1} + \@@_check_authors_ge_one: + \seq_set_item:Nnn \g_@@_affiliation_seq { \int_use:N \g_@@_current_author_int } { #1 } } \NewDocumentCommand{\email}{m}{ - \seq_put_right:Nn \g_@@_email_seq {#1} + \@@_check_authors_ge_one: + \seq_set_item:Nnn \g_@@_email_seq { \int_use:N \g_@@_current_author_int } { #1 } } \NewDocumentCommand{\orcid}{m}{ - \seq_put_right:Nn \g_@@_orcid_seq {#1} + \@@_check_authors_ge_one: + \seq_set_item:Nnn \g_@@_orcid_seq { \int_use:N \g_@@_current_author_int } { #1 } } \NewDocumentCommand{\homepage}{m}{ - \seq_put_right:Nn \g_@@_webpage_seq {#1} + \@@_check_authors_ge_one: + \seq_set_item:Nnn \g_@@_webpage_seq { \int_use:N \g_@@_current_author_int } { #1 } } \RenewDocumentCommand{\thanks}{m}{ - \seq_put_right:Nn \g_@@_thanks_seq {#1} + \@@_check_authors_ge_one: + \seq_set_item:Nnn \g_@@_thanks_seq { \int_use:N \g_@@_current_author_int } { #1 } } -\msg_new:nnn { compositionalityarticle } { no-authors } { You~need~to~define~at~least~one~author,~using~the~\author~macro } - -\cs_new:Nn \@@_check_authors_ge_one: { - \seq_if_empty:NTF \g_@@_authors_seq { \msg_error:nn { compositionalityarticle } { no-authors } } { } -} \cs_new:Nn \@@_print_title_authors: { \group_begin: From cfafec7e588c427fe7ddd3fea5c5c4b611e0f19d Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Mon, 20 May 2024 12:59:29 +0300 Subject: [PATCH 33/34] Hide footnotes when lacking metadata --- compositionalityarticle.dtx | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index 2b603ba..ed39245 100644 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -417,12 +417,17 @@ } } - \footnotetext{ - \sffamily - \seq_item:Nn \g_@@_authors_seq { ##1 }:~ - \seq_use:Nn \l_tmpa_seq { ,~ } - \seq_if_empty:NF \l_tmpa_seq {} {.~} - \seq_item:Nn \g_@@_thanks_seq { ##1 } + \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \g_@@_thanks_seq { ##1 } } + \bool_if:nTF { + \seq_if_empty_p:N \l_tmpa_seq && \tl_if_empty_p:N \l_tmpa_tl + } { } { + \footnotetext{ + \sffamily + \seq_item:Nn \g_@@_authors_seq { ##1 }:~ + \seq_use:Nn \l_tmpa_seq { ,~ } + \seq_if_empty:NF \l_tmpa_seq {} {.~} + \seq_item:Nn \g_@@_thanks_seq { ##1 } + } } } \group_end: From 8cc2d6500932f60c9fbf03f6fa97df4f3d3b60f2 Mon Sep 17 00:00:00 2001 From: tetrapharmakon Date: Mon, 20 May 2024 13:12:35 +0300 Subject: [PATCH 34/34] (Almost) highlight code samples --- compositionalityarticle.dtx | 1 + 1 file changed, 1 insertion(+) diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx index ed39245..5b84c7b 100644 --- a/compositionalityarticle.dtx +++ b/compositionalityarticle.dtx @@ -13,6 +13,7 @@ \CodelineIndex \RecordChanges \usepackage{tcolorbox} +\usepackage{minted} \begin{document} \DocInput{\jobname.dtx} \PrintChanges