Publication robuste sur arXiv

Posté le 2024-06-23 par Aliaume Lopez – Lecture en 39 minutes.

Afin de rendre les articles de recherche publics et facilement accessibles1 il est d’usage en informatique, mathématiques et en physique de publier des versions preprint sur arXiv. Notons qu’utiliser le terme de prépublication est totalement hypocrite, puisque la publication sur arXiv est bien souvent

  1. La seule accessible sans “paywall”,
  2. La seule contenant les annexes et toutes les preuves techniques,
  3. La seule effectivement mise à jour (typos, erreurs, etc.) avec une véritable gestion des versions.

Cependant, n’étant pas revue par les pairs, ce type de publication n’est pas considéré comme une publication “officielle” et il est préférable de citer des versions publiées dans des “journaux/conférences respectables” pour garantir la qualité des résultats.2

Ainsi, l’auteur ou l’autrice consciencieux·se aura essentiellement trois versions de son papier : une version pour arXiv, une version pour les relecteurs et une version pour la publication finale.3 Dans cet article, je me concentre sur la publication sur arXiv et les petites astuces qui rendent celle-ci plus facile. Je pars aussi du principe que l’article est écrit en utilisant le système LaTeX et une certaine familiarité avec ce langage et son écosystème.

La gestion des annexes

Plutôt que de faire une version complètement distincte de votre document sur arXiv, ce qui nécessite un travail non-trivial il est parfois plus simple de simplement garder les annexes du papier original. Cependant, la lecture d’un tel papier devient rapidement fastidieuse, avec les allers-retours incessants entre les annexes et le corps du texte. Une solution économique et plutôt élégante est la suivante : utiliser un environnement proofof pour les preuves, et y faire référence avec une commande \proofref, en suivant le code suivant.

% Créé un environnement de preuve pour les résultats en annexe,
% qui prend en argument le label d’un théorème dans le texte principal,
% et produit une preuve
% \begin{proof}[Preuve de \cref{the-label}]
% \phantomsection\label{the-label:proof}
% contenu
% \end{proof}
\NewDocumentEnvironment{proofof}{m}{%
    \IfValueTF{#1}{%
        \begin{proof}[Proof of \cref{#1} on page \pageref{#1}]
        \phantomsection\label{#1:proof}
    }{%
        \begin{proof}
    }
    \let\oldqedsymbol\qedsymbol
    \renewcommand\qedsymbol{\hyperref[#1]{\oldqedsymbol}}
}{%
    \end{proof}
    \renewcommand\qedsymbol{\oldqedsymbol}
}

% Fait référence à une preuve en annexe si elle existe
\NewDocumentCommand{\proofref}{m}{%
    % Si la preuve existe, alors on construit un lien
    % sinon, rien n’est affiché
    % \hyperref[#1:proof]{Proof of \cref{#1}}
    \IfRefUndefinedExpandable{#1:proof}{}{%
        \hfill\hyperref[#1:proof]{(Proof p.\pageref{#1:proof})}
    }
}

Attention. Pour utiliser les macros définies ci-dessus, il est nécessaire d’avoir chargé les paquets hyperref, cleveref et xparse.

Avec cet environnement, il est possible de faire référence à une preuve en annexe avec la commande \proofref{the-label} qui affichera un lien vers la preuve en annexe si celle-ci existe. L’avantage de cette méthode est que produire l’article “publié” devient très facile : il suffit de ne pas inclure les preuves. Notons que cette méthode est aussi utile pour la version destinée aux relecteurs.

\begin{lemma}[Mon lemme préféré]
    \label{assoc:lem}
    Pour tout $x,y,z \in \mathbb{Z}$,
    $(x + y) + z = x + (y + z)$.
    \proofref{assoc:lem}
\end{lemma}

...

\begin{proofof}{assoc:lem}
    Voici ma preuve...
\end{proof}

Lorsque les théorèmes sont complexes il est souvent utile de reformuler les énoncés devant les preuves en annexe. Pour cela, il est possible d’utiliser l’environnement restatable du paquet thm-restate et sa version plus agréable fournie par thmtools, les deux étant souvent déjà inclus dans les modèles de document pour les conférences en informatique. Cette approche se combine particulièrement bien avec les macros précédentes qui sont à changer comme suit.

\NewDocumentEnvironment{proofof}{ m }{
    % Vérifie que la commande \#1 existe
    % Si oui, cela veut dire que l’on peut rappeler le théorème
    % en prenant soin de construire une commande
    % qui signale que nous sommes bien dans un environnement "rappelé"
    \ifcsname #1\endcsname
        \def\isInsideRestatedTheorem{1}
        \csname #1\endcsname*
    \fi
    \begin{proof}[Proof of {\cref{#1}} page {\pageref{#1}}]
        \phantomsection
        \label{#1:proof}
}{
        
        
        \noindent\hyperref[#1]{$\triangleright$ Go back to \cref{#1} on page \pageref{#1}}
    \end{proof}
}

\NewDocumentCommand{\proofref}{ m }{
    \IfRefUndefinedExpandable{#1:proof}{}{
        % Si la preuve existe, mais que l’on est dans un environnement
        % qui est "rappelé", alors la référence n’est quand même
        % pas affichée.
        \ifdefined\isInsideRestatedTheorem
        \else
        \hfill\hyperref[#1:proof]{\textsf{(Proof p.\pageref{#1:proof})}}
        \fi
    }
}

Attention. Pour utiliser les macros définies ci-dessus, il est nécessaire d’avoir chargé les paquets thm-restate, thmtools, hyperref, cleveref et xparse.

Voici un exemple utilisant cette seconde version des macros.

\begin{lemma}[
      name={My Super Lemma}
    , restate={super-lemma}
    , label={super-lemma}
]
    A nice statement.
    \proofref{super-lemma}
\end{lemma}

...

\begin{proofof}{super-lemma}
    Here is the proof of the super-lemma.
\end{proofof}

Les métadonnées

Lors du processus de soumission sur arXiv, il est nécessaire de fournir un certain nombre de métadonnées, dont la liste est décrite sur leur page de FAQ dédiée. Lors de la soumission d’un article, il sera nécessaire ou fortement conseillé de fournir les informations suivantes :

Comme ces informations sont de toute manière demandées par certaines conférences et qu’il est terrible d’utiliser un environnement textarea HTML simple pour écrire du texte, c’est une bonne pratique d’écrire dans un fichier séparé toutes ces informations déjà prêtes. Cela joue le double rôle de simplification de la soumission (il suffit de copier-coller) et de documentation du projet.

La partie la plus “pénible” de ce processus, au moins pour les premières soumissions, est certainement l’écriture des catégories AMS/ACM et arXiv qui font l’objet de la sous section suivante.

Les catégories AMS et ACM

Afin de permettre une bonne indexation des articles, de multiples référentiels existent. Les plus “importants” en informatique théorique sont certainement les codes de l’AMS (American Mathematical Society), de l’ACM (Association for Computing Machinery) et de The arXiv.

Les codes AMS liés à l’informatique théorique se trouvent sur leur page dédiée à l’informatique et leur page dédiée à la logique. En résumé, ceux qui peuvent être utiles pour moi sont les suivants:

Résumé des codes AMS utiles pour l’informatique théorique.
Code AMSDescription
68Q01General topics in the theory of computing
68Q70Algebraic theory of languages and automata
68Q45Formal languages and automata
68Q60Specification and verification (program logics, model checking, etc.)
68Q19Descriptive complexity and finite models
68Q99None of the above, but in the section Theory of computing
03BxxGeneral logic
03B70Logic in computer science
03CxxModel theory
03C13Model theory of finite structures
03DxxComputability and recursion theory
03D05Automata and formal grammars in connection with logical questions
Revenir en haut de la page courante