Erstellen Sie eine einfache "Schema" -Umgebung und eine "Liste der Schemata".

Nov 22 2020

Ich habe den größten Teil meiner Arbeit geschrieben und gesetzt. Derzeit habe ich eine Liste mit Abbildungen und eine Liste mit Tabellen.

Jetzt sagt mir mein Ausschuss jedoch, dass ich auch eine Liste von Schemata haben muss. In der Chemie ist ein Schema eine Umgebung, die (Bilder von) chemischen Strukturen und Reaktionen enthält.

Leider habe ich meine chemischen Strukturen bereits als Zahlen kodiert. Es gibt einige Pakete wie chemstyleund chemscheme, die anscheinend ihre eigenen Schemakonstrukte bereitstellen. Ich würde es jedoch vorziehen, sie nicht zu verwenden, da einige dieser Pakete ihre eigenen Standardeinstellungen für Dinge wie chemische Formeln festlegen. (Ich sehe zum Beispiel, dass das chemstylePaket definiert ist \ie, aber ich habe bereits meine eigene Definition für \iein meiner Arbeit.) Ich verwende bereits die Pakete chemformulaund chemmacros.

Gibt es eine Möglichkeit, meine eigene Schema-Umgebung einfacher zu erstellen? Der einzige Unterschied, den ich brauche, besteht darin, dass Schemata als "Schema" bezeichnet und in einer Liste von Schemata aufgeführt werden sollten. Mit anderen Worten, der einzige Unterschied zwischen einer Figur und einem Schema besteht in der Buchhaltung.

Hier ist mein MWE mit einigen der wichtigsten Pakete, die ich verwende. Eine mögliche Komplikation ist, dass ich das subcaptionPaket verwende, um Unterfiguren zu erstellen. Normalerweise habe ich nur ein Bild pro Figur / Schema, aber ich erstelle Unterreferenzen \phantomsubcaptionaus dem subcaptionPaket. Außerdem verwende ich das tocloftPaket, um die Abstände in den Listen der Abbildungen und Tabellen anzupassen, und dies könnte die Dinge möglicherweise noch komplizierter machen.

Schließlich wäre es schön, wenn ich die neue "Schema" -Umgebung mit dem cleverefPaket verwenden könnte, da ich den \crefBefehl aus diesem Paket häufig verwende, um auf Abbildungen, Tabellen usw. zu verweisen.

\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}

Antworten

3 leandriis Nov 22 2020 at 16:36

Hier ist , wie Sie kombinieren können chemmacros" schemeModul mit subcaptionund cleveref. Ich habe auch den Referenzstil geändert, um ihn an die Unterfiguren anzupassen.

Leider \listofschemesscheint derzeit nicht mit der bookKlasse kompatibel zu sein (siehe auch: entsprechender Fehlerbericht ). Ich habe daher reportfür folgende MWE verwendet:

  • Liste der Schemata:

  • Verweise auf Schemata und Teilschemata:

  • Bildunterschriften von Schemata:

\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}
3 egreg Nov 22 2020 at 18:34

Laden Sie das newfloatPaket und das schemeModul für chemmacros.

Sie müssen nur eine subschemeUmgebung für einrichten subcaption, was zu Beginn des Dokuments erfolgen muss.

Ich habe tocbibindzum Hinzufügen \listoffiguresund \listoftableszum Inhaltsverzeichnis geladen . Ihre manuelle Methode ist falsch: Sie sollten mindestens \cleardoublepagevorher haben \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}
2 gernot Nov 22 2020 at 02:50

Wie @leandriis in den Kommentaren feststellte, macht das chemmacrosPaket anscheinend bereits das, was Sie wollen.

Andernfalls müssen Sie nur die Zeilen hinzufügen

\usepackage{newfloat}
\DeclareFloatingEnvironment[fileext=los,placement={!ht},name=Scheme]{myscheme}
\captionsetup[myscheme]{labelfont=bf}
\crefname{myscheme}{scheme}{schemes}

zu Ihrer Präambel und kann dann einen neuen Float-Typ myschemeähnlich wie verwenden figures. Die Liste der Schemata wird mit erstellt \listofmyschemes.