diff --git a/.gitignore b/.gitignore index 3cb7bf7..355db8b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,13 +9,17 @@ *.fmt *.fot *.cb +compositionalityarticle-ctan.zip *.cb2 .*.lb - +compositionalityarticle.cls +build/ +*.hd ## Intermediate documents: *.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 41e2a5f..a406e17 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,5 @@ -SHELL = /usr/bin/bash -PKG = compositionalityarticle +build/doc/compositionalityarticle.pdf build/unpacked/compositionalityarticle.cls: compositionalityarticle.dtx compositionalityarticle.ins build.lua + l3build doc -$(PKG).tar.gz: $(PKG).cls logo.eps ORCIDiD_iconvector.pdf $(PKG)-doc.tex $(PKG)-doc.pdf README.md - ctanify --pkgname $(PKG) --no-tds $^ - -$(PKG)-doc.pdf: $(PKG)-doc.tex - latexmk -pdf $< - -clean: - latexmk -c $(PKG)-doc.tex - -clobber: - latexmk -C $(PKG)-doc.tex - rm -f $(PKG).tar.gz +mwe.pdf: mwe.tex build/unpacked/compositionalityarticle.cls + latexmk -pdf mwe.tex \ No newline at end of file diff --git a/README.md b/README.md index b90171a..90b173a 100644 --- a/README.md +++ b/README.md @@ -10,5 +10,13 @@ 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. -## 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. +### 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 +``` 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/build.lua b/build.lua new file mode 100644 index 0000000..f090654 --- /dev/null +++ b/build.lua @@ -0,0 +1,9 @@ +module = "compositionalityarticle" + +function update_tag(filename, content, tagname, tagdate) + content = string.gsub(content, "", tagname) + content = string.gsub(content, "", tagdate) + return content +end + +typesetopts = "-interaction=nonstopmode -shell-escape" \ 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 diff --git a/compositionalityarticle.cls b/compositionalityarticle.cls deleted file mode 100644 index f077e05..0000000 --- a/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'. diff --git a/compositionalityarticle.dtx b/compositionalityarticle.dtx new file mode 100644 index 0000000..5b84c7b --- /dev/null +++ b/compositionalityarticle.dtx @@ -0,0 +1,482 @@ +% \iffalse meta-comment +%% ============================================================================= +%% +%% compositionality () +%% +%% ============================================================================= +% +% %%%=[ DRIVER ]================================================================ +% +%<*driver> +\documentclass[a4paper,full]{l3doc} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\usepackage{tcolorbox} +\usepackage{minted} +\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} +% +% \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{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, +% \email, +% \orcid, +% \homepage, +% \thanks +% } +% \begin{syntax} +% \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)} +% \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{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} +% \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} +% +% ^^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} +\RequirePackage{lmodern} +% \end{macrocode} +% +% Identify the package and give the over all version information. +% \begin{macrocode} +\ProvidesExplClass +{compositionality} +{} +{} +{The Compositionality article class} +% \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, + 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 } +% \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} +% \end{macrocode} +% +% Require all dependencies. +% \begin{macrocode} +\RequirePackage{amsmath} +\RequirePackage{amsfonts} +\RequirePackage{amssymb} +\RequirePackage{geometry} +\RequirePackage{titlesec} +\RequirePackage{fancyhdr} +\RequirePackage{xcolor} +\RequirePackage{xkeyval} +\RequirePackage{graphicx} +\RequirePackage{hyperref} +% \end{macrocode} +% +% Setup hyperlink decorations. +% \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{ + margin=3cm, +} +% \end{macrocode} +% +% +% Set sectioning styles. +% \begin{macrocode} +\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} +% +% Compute contents of header and footer of first page. +% \begin{macrocode} +\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 + } +% \end{macrocode} +% +% Setup \verb|fancy| page style. +% \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} +% \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} +% + +% +% \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 + +\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}{ + \@@_init_new_author: + \seq_set_item:Nnn \g_@@_authors_seq { \int_use:N \g_@@_current_author_int } { #1 } +} + +\NewDocumentCommand{\affiliation}{m}{ + \@@_check_authors_ge_one: + \seq_set_item:Nnn \g_@@_affiliation_seq { \int_use:N \g_@@_current_author_int } { #1 } +} + +\NewDocumentCommand{\email}{m}{ + \@@_check_authors_ge_one: + \seq_set_item:Nnn \g_@@_email_seq { \int_use:N \g_@@_current_author_int } { #1 } +} + +\NewDocumentCommand{\orcid}{m}{ + \@@_check_authors_ge_one: + \seq_set_item:Nnn \g_@@_orcid_seq { \int_use:N \g_@@_current_author_int } { #1 } +} + +\NewDocumentCommand{\homepage}{m}{ + \@@_check_authors_ge_one: + \seq_set_item:Nnn \g_@@_webpage_seq { \int_use:N \g_@@_current_author_int } { #1 } +} + +\RenewDocumentCommand{\thanks}{m}{ + \@@_check_authors_ge_one: + \seq_set_item:Nnn \g_@@_thanks_seq { \int_use:N \g_@@_current_author_int } { #1 } +} + + +\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 { } { + \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 } { , ~ } { } + } + \group_end: +} + +\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 { } { + \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 + } + } + \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 + } + } + } + + \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: +} +% \end{macrocode} +% +% Definition of acknowledgments subsection +% \begin{macrocode} +\newcommand*{\acknowledgmentsname}{Acknowledgments} +\newcommand{\acknowledgments}[1]{% + \section*{\acknowledgmentsname}% + #1% +} +% \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}{ + \@@_check_authors_ge_one: + \global \@topnum \z@ + \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 +} +% \end{macrocode} +% +% Abstractname is empty +% \begin{macrocode} +\AtBeginDocument{\renewenvironment{abstract} +{\small\quotation\noindent\ignorespaces} +{\endquotation}} +% \end{macrocode} +% +% \iffalse +% +% \fi +% \end{implementation} 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 diff --git a/mwe.tex b/mwe.tex new file mode 100644 index 0000000..964b174 --- /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.} +\author{F. Loregian} +% \affiliation{} +% \email{} +% \orcid{} +% \homepage{} +\thanks{I thank my mom.} +\begin{document} +\maketitle +A +\end{document} \ 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..45f9d8e --- /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 [ -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 $@ + +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 +