Créer un environnement de «schéma» simple et une «liste de schémas»
J'ai la majorité de ma thèse écrite et mise en page. Actuellement, j'ai une liste de figures et une liste de tableaux.
Cependant, ma commission me dit maintenant que je dois aussi avoir une liste de régimes. En chimie, un schéma est un environnement qui contient (des images de) structures et réactions chimiques.
Malheureusement, j'ai déjà codé mes structures chimiques sous forme de chiffres. Il existe quelques packages, tels que chemstyle
et chemscheme
, qui semblent fournir leurs propres constructions de schéma. Cependant, je préférerais ne pas les utiliser car certains de ces packages définissent leurs propres valeurs par défaut pour des choses comme les formules chimiques. (Par exemple, je vois que le chemstyle
package définit \ie
, mais j'ai déjà ma propre définition \ie
dans ma thèse.) J'utilise déjà les packages chemformula
et chemmacros
.
Est-il possible de créer plus simplement mon propre environnement Scheme? La seule différence dont j'ai besoin est que les régimes doivent être légendés comme «Schéma» et répertoriés dans une liste de schémas. En d'autres termes, la seule différence entre un chiffre et un schéma réside dans la comptabilité.
Voici mon MWE, avec plusieurs des packages cruciaux que j'utilise. Une complication possible est que j'utilise le subcaption
package pour créer des sous-figures. En général, je n'ai qu'une seule image par figure / schéma, mais je crée des sous-références à \phantomsubcaption
partir du subcaption
package. En outre, j'utilise le tocloft
package pour ajuster les espacements dans les listes de figures et de tableaux, ce qui pourrait potentiellement compliquer davantage les choses.
Enfin, ce serait bien si je pouvais utiliser le nouvel environnement "schéma" avec le cleveref
package, car j'utilise \cref
beaucoup la commande de ce package pour faire référence à des figures, des tableaux, etc.
\documentclass[oneside,11pt]{book}
\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage[subrefformat=parens]{subcaption}
\usepackage[
expansion = false ,
tracking = smallcaps ,
letterspace = 40 ,
]{microtype}
\usepackage{booktabs}
\usepackage{acro}
\acsetup{
barriers/use, barriers/reset,
use-id-as-short,
}
\newcommand{\ie}{i.e.}
\newcommand{\eg}{e.g.}
\newcommand{\cf}{cf.}
\newcommand{\avg}[1]{\overline{#1}}
\usepackage{mdframed}
\usepackage[capitalize]{cleveref}
\usepackage{chemformula}
\setchemformula{charge-hshift=.5pt}
\usepackage{chemmacros}
\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{calc}
\usepackage{tabto}
\usepackage[titles]{tocloft}
\setlength{\cftfignumwidth}{2.9em}
\setlength{\cfttabnumwidth}{2.9em}
\begin{document}
\addcontentsline{toc}{chapter}{\listfigurename}
\listoffigures
% \phantomsection %% Remove if using hyperref
\addcontentsline{toc}{chapter}{\listtablename}
\listoftables
\chapter{First chapter}
Text in the first chapter.
Refer to \cref{fig:firstfig} using cleveref package.
Refer to \cref{tbl:firsttbl}.
Refer to \cref{fig:multi}, \cref{fig:multi:a}, and \cref{fig:multi:b}.
Refer to eventual scheme, \cref{scm:eventualscheme}.
Refer to eventual multi-part scheme, \cref{scm:eventualmultischeme}.
% Example figure
\begin{figure}[!h]
\centering
\includegraphics[width=0.02\textwidth]{example-image}
\caption{Caption of figure in first chapter.}\label{fig:firstfig}
\end{figure}
% Example table
\begin{table}[!h]
\centering
\begin{tabular}{ll}
\toprule
A & B\\
\bottomrule
\end{tabular}
\caption{Caption of table in first chapter.}\label{tbl:firsttbl}
\end{table}
% MULTIPART FIGURE
\begin{figure}[!h]
\centering
\begin{subfigure}{\textwidth}
\centering
\includegraphics[width=0.02\textwidth]{example-image}
\phantomsubcaption\label{fig:multi:a}
\end{subfigure}
\begin{subfigure}{0pt}
\phantomsubcaption\label{fig:multi:b}
\end{subfigure}
\caption{Caption of figure referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{fig:multi}
\end{figure}
% I NEED TO CHANGE THE FOLLOWING FIGURE TO A SCHEME (SINGLE-PART SCHEME)
\begin{figure}[!h]
\centering
\includegraphics[width=0.02\textwidth]{example-image-a}
\caption{Caption of eventual scheme.}\label{scm:eventualscheme}
\end{figure}
% I NEED TO CHANGE THE FOLLOWING FIGURE TO A SCHEME (MULTI-PART SCHEME, BUT ONLY WITH ONE IMAGE)
\begin{figure}[!h]
\centering
\begin{subfigure}{\textwidth}
\centering
\includegraphics[width=0.02\textwidth]{example-image-b}
\phantomsubcaption\label{scm:eventualmultischeme:a}
\end{subfigure}
\begin{subfigure}{0pt}
\phantomsubcaption\label{scm:eventualmultischeme:a}
\end{subfigure}
\caption{Caption of eventual scheme referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{scm:eventualmultischeme}
\end{figure}
\chapter{Second chapter}
Text in the second chapter.
Refer to \cref{fig:secondfig}.
% Another example figure
\begin{figure}[!h]
\centering
\includegraphics[width=0.02\textwidth]{example-image}
\caption{Caption of figure in second chapter.}\label{fig:secondfig}
\end{figure}
\end{document}

Réponses
Voici comment combiner chemmacros
' scheme
module avec subcaption
et cleveref
. J'ai également changé le style de référence pour correspondre aux sous-figures.
Malheureusement, \listofschemes
semble actuellement incompatible avec la book
classe (voir aussi: rapport de bogue correspondant ). J'ai donc utilisé report
pour le MWE suivant:
- Liste des schémas:

- Références aux schémas et sous-schémas:

- Légendes des schémas:

\documentclass[oneside,11pt]{report}
\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage[subrefformat=parens]{subcaption}
\usepackage[
expansion = false ,
tracking = smallcaps ,
letterspace = 40 ,
]{microtype}
\usepackage{booktabs}
\usepackage{acro}
\acsetup{
barriers/use, barriers/reset,
use-id-as-short,
}
\newcommand{\ie}{i.e.}
\newcommand{\eg}{e.g.}
\newcommand{\cf}{cf.}
\newcommand{\avg}[1]{\overline{#1}}
\usepackage{mdframed}
\usepackage{chemformula}
\setchemformula{charge-hshift=.5pt}
\usepackage{chemmacros}
\chemsetup{modules=scheme}
\AtEndPreamble{\DeclareCaptionSubType*{scheme}\counterwithin{scheme}{chapter}\renewcommand\thesubscheme{\thescheme\alph{subscheme}}}
\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{calc}
\usepackage{tabto}
\usepackage[titles]{tocloft}
\setlength{\cftfignumwidth}{2.9em}
\setlength{\cfttabnumwidth}{2.9em}
\usepackage{xpatch}
\makeatletter
\xapptocmd{\@chapter}{\addtocontents{los}{\protect\addvspace{10\p@}}}{}{}
\makeatother
\usepackage[capitalize]{cleveref}
\crefformat{subscheme}{\schemename~#2#1#3}
\begin{document}
\addcontentsline{toc}{chapter}{\listfigurename}
\listoffigures
% \phantomsection %% Remove if using hyperref
\addcontentsline{toc}{chapter}{\listtablename}
\listoftables
\addcontentsline{toc}{chapter}{\listschemename}
\listofschemes
\chapter{First chapter}
Text in the first chapter.
Refer to \cref{fig:firstfig} using cleveref package.
Refer to \cref{tbl:firsttbl}.
Refer to \cref{fig:multi}, \cref{fig:multi:a}, and \cref{fig:multi:b}.
Refer to eventual scheme, \cref{scm:eventualscheme}.
Refer to eventual multi-part scheme, \cref{scm:eventualmultischeme}, \cref{scm:eventualmultischeme:a}, and \cref{scm:eventualmultischeme:b}.
\begin{figure}[!h]
\caption{Caption of figure in first chapter.}\label{fig:firstfig}
\end{figure}
\begin{table}[!h]
\caption{Caption of table in first chapter.}\label{tbl:firsttbl}
\end{table}
\begin{figure}[!h]
\begin{subfigure}{\textwidth}
\phantomsubcaption\label{fig:multi:a}
\end{subfigure}
\begin{subfigure}{0pt}
\phantomsubcaption\label{fig:multi:b}
\end{subfigure}
\caption{Caption of figure referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{fig:multi}
\end{figure}
\begin{scheme}[!h]
\caption{Caption of scheme.}\label{scm:eventualscheme}
\end{scheme}
\begin{scheme}[!h]
\begin{subfigure}{\textwidth}
\phantomsubcaption\label{scm:eventualmultischeme:a}
\end{subfigure}
\begin{subfigure}{0pt}
\phantomsubcaption\label{scm:eventualmultischeme:b}
\end{subfigure}
\caption{Caption of scheme referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{scm:eventualmultischeme}
\end{scheme}
\chapter{Second chapter}
Text in the second chapter.
Refer to \cref{fig:secondfig}.
\begin{figure}[!h]
\caption{Caption of figure in second chapter.}\label{fig:secondfig}
\end{figure}
\begin{scheme}[!h]
\caption{Caption of scheme.}\label{scm:eventualscheme2}
\end{scheme}
\end{document}
Chargez le newfloat
package et le scheme
module pour chemmacros
.
Il vous suffit de configurer un subscheme
environnement pour subcaption
, ce qui doit être fait au début du document.
J'ai chargé tocbibind
pour l'ajout \listoffigures
et \listoftables
à la table des matières. Votre méthode manuelle est incorrecte: vous devriez au moins l'avoir \cleardoublepage
avant \addcontentsline
.
\documentclass[oneside,11pt]{book}
\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage[subrefformat=parens]{subcaption}
\usepackage{newfloat}
\usepackage[
expansion = false ,
tracking = smallcaps ,
letterspace = 40 ,
]{microtype}
\usepackage{booktabs}
\usepackage{acro}
\usepackage{mdframed}
\usepackage{chemformula}
\usepackage{chemmacros}
\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{calc}
\usepackage{tabto}
\usepackage[titles]{tocloft}
\usepackage[nottoc]{tocbibind}
\usepackage[capitalize]{cleveref} % should be last
% acro options
\acsetup{
barriers/use, barriers/reset,
use-id-as-short,
}
% chemmacros options
\usechemmodule{scheme}
% chemformula options
\setchemformula{charge-hshift=.5pt}
% tocloft options
\setlength{\cftfignumwidth}{2.9em}
\setlength{\cfttabnumwidth}{2.9em}
% caption options
\AtBeginDocument{\DeclareCaptionSubType*[alph]{scheme}}
% personal commands
\newcommand{\ie}{i.e.}
\newcommand{\eg}{e.g.}
\newcommand{\cf}{cf.}
\newcommand{\avg}[1]{\overline{#1}}
\begin{document}
\tableofcontents
\listoffigures
\listoftables
\listofschemes
\chapter{First chapter}
Text in the first chapter.
Refer to \cref{fig:firstfig} using cleveref package.
Refer to \cref{tbl:firsttbl}.
Refer to \cref{fig:multi}, \cref{fig:multi:a}, and \cref{fig:multi:b}.
Refer to eventual scheme, \cref{scm:eventualscheme}.
Refer to eventual multi-part scheme, \cref{scm:eventualmultischeme}.
% Example figure
\begin{figure}[!h]
\centering
\includegraphics[width=0.02\textwidth]{example-image}
\caption{Caption of figure in first chapter.}\label{fig:firstfig}
\end{figure}
% Example table
\begin{table}[!h]
\centering
\begin{tabular}{ll}
\toprule
A & B\\
\bottomrule
\end{tabular}
\caption{Caption of table in first chapter.}\label{tbl:firsttbl}
\end{table}
% MULTIPART FIGURE
\begin{figure}[!h]
\centering
\begin{subfigure}{0.45\textwidth}
\centering
\includegraphics[width=0.02\textwidth]{example-image}
\phantomsubcaption\label{fig:multi:a}
\end{subfigure}
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=0.02\textwidth]{example-image}
\phantomsubcaption\label{fig:multi:b}
\end{subfigure}
\caption{Caption of figure referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{fig:multi}
\end{figure}
\begin{scheme}[!h]
\centering
\includegraphics[width=0.02\textwidth]{example-image-a}
\caption{Caption of eventual scheme.}\label{scm:eventualscheme}
\end{scheme}
\begin{scheme}[!h]
\centering
\begin{subscheme}{0.45\textwidth}
\centering
\includegraphics[width=0.02\textwidth]{example-image-a}
\phantomsubcaption\label{scm:eventualmultischeme:a}
\end{subscheme}
\begin{subscheme}{0.45\textwidth}
\includegraphics[width=0.02\textwidth]{example-image-b}
\phantomsubcaption\label{scm:eventualmultischeme:b}
\end{subscheme}
\caption{Caption of eventual scheme referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{scm:eventualmultischeme}
\end{scheme}
\chapter{Second chapter}
Text in the second chapter.
Refer to \cref{fig:secondfig}.
% Another example figure
\begin{figure}[!h]
\centering
\includegraphics[width=0.02\textwidth]{example-image}
\caption{Caption of figure in second chapter.}\label{fig:secondfig}
\end{figure}
\end{document}
Comme @leandriis l'a noté dans les commentaires, le chemmacros
package fait apparemment déjà ce que vous voulez.
Sinon, il suffit d'ajouter les lignes
\usepackage{newfloat}
\DeclareFloatingEnvironment[fileext=los,placement={!ht},name=Scheme]{myscheme}
\captionsetup[myscheme]{labelfont=bf}
\crefname{myscheme}{scheme}{schemes}
à votre préambule et peut ensuite utiliser un nouveau type de flotteur myscheme
similaire à figures
. La liste des schémas est produite avec \listofmyschemes
.