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
- La seule accessible sans “paywall”,
- La seule contenant les annexes et toutes les preuves techniques,
- 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 :
- Titre: Le titre de l’article, où il est possible d’utiliser des commandes LaTeX de base (pour les mathématiques ou des accents). Cependant, je pense qu’il est préférable d’utiliser des caractères unicode standards pour les accents et les symboles mathématiques.
- Auteurs: Les noms des auteurs, rien de bien passionnant ici, mis à part qu’il reste conseillé d’utiliser des caractères unicode plutôt que des commandes LaTeX.
- Résumé: Un court résumé, au format plein texte, pouvant utiliser quelques symboles mathématiques. En particulier, il n’est pas possible d’utiliser des citations dans cette partie ! Il est d’usage que ce résumé soit aussi celui qui sert de préliminaire à l’article lui-même.
- Catégories arXiv: Avant de pouvoir soumettre un article sur arXiv, il est nécessaire de choisir une (ou plusieurs) catégories pour celui-ci. Les plus “traditionnelles” en informatique théorique sont cs.LO (logique en informatique) et cs.FL (théorie des langages formels).
- Mots-clés: Une courte liste de mots clefs, comme
weighted automata,finite model theoryou autres. - Nombre de pages: Ce n’est pas stricto-sensu nécessaire, mais cela permet de faire une somme de contrôle du pauvre.
- Format de document: Normalement celui-ci est facile à remplir, si vous ne marquez pas
pdfil y a un problème… - DOI: Si l’article est déjà publié dans une version légèrement différente dans un journal ou une conférence. Cette information est utile pour permettre aux lecteurs de “remonter” vers une citation “acceptable” des résultats de l’article.
- Licence: Il est possible de choisir une licence pour l’article, par exemple une licence Creative Commons. En général, je sélectionne la licence
CC-BY-SAqui permet une réutilisation libre de l’article, à condition de citer les auteurs et de redistribuer l’article sous la même licence. - Catégorie AMS, ACM: Afin de permettre une meilleure indexation et découvrabilité des articles, il est recommandé de fournir des catégories AMS pour les articles mathématiques et ACM pour les articles en informatique. Voir la section suivante pour plus de détails.
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:
| Code AMS | Description |
|---|---|
| 68Q01 | General topics in the theory of computing |
| 68Q70 | Algebraic theory of languages and automata |
| 68Q45 | Formal languages and automata |
| 68Q60 | Specification and verification (program logics, model checking, etc.) |
| 68Q19 | Descriptive complexity and finite models |
| 68Q99 | None of the above, but in the section Theory of computing |
| 03Bxx | General logic |
| 03B70 | Logic in computer science |
| 03Cxx | Model theory |
| 03C13 | Model theory of finite structures |
| 03Dxx | Computability and recursion theory |
| 03D05 | Automata and formal grammars in connection with logical questions |