如何使用 chemmacros 创建子方案并在方案表中列出子标题?

如何使用 chemmacros 创建子方案并在方案表中列出子标题?

chemmacros 包提供了scheme创建类似图形的环境方案的模块,还可以创建方案列表,只需发出 即可生成\listofschemes。太棒了!

现在,我想拥有subschemes,就像subfigure环境对图形所做的那样。我该如何实现呢?此外,我还想让子方案标题显示在方案列表中(即,应调整其深度以不仅显示主标题,还显示第一级子标题)。当然,这不会影响其他“... 列表”。

答案1

为了实现子方案,我们可以利用包\DeclareCaptionSubType的命令subcaption(参见手册第 5 节)。

因此,我们应该scheme使用定义一个新的newfloat浮点数\DeclareFloatingEnvironment,然后我们\DeclareCaptionSubType{scheme}就可以获得我们subscheme想要的环境。

\usepackage{chemmacros}
\usechemmodule{scheme}
\usepackage{newfloat}
\DeclareFloatingEnvironment[
   fileext=los,
   listname={List of Schemes},
   name=Scheme,
   placement=tbp,
   within=none % don't reset numbering
]{scheme}
\DeclareCaptionSubType{scheme}

这应该允许您在文档中执行类似的操作:

\begin{scheme}[tb]
\centering
\begin{subscheme}{0.5\textwidth}
   % your chemical structure
   \caption{Your subcaption.}
   \label{sch:subscheme-1}
\end{subscheme}%
\begin{subscheme}{0.5\textwidth}
   \centering
   % another chemical structure
   \caption{Your other subcaption.}
   \label{sch:subscheme-2}
\end{subscheme}
\caption{Structures.}
\label{sch:structures}
\end{scheme}

太棒了!我还应该指出,chemmacros 手册非常有用,其中包括以下内容(释义):

\begin{scheme}scheme当前导码末尾不存在环境时, scheme 模块才会定义浮动环境。(第 7.9 节)

因此,我们可以定义自己的方案环境(如上所述),而不会干扰 chemmacros 方案模块。现在我们有了子方案,方案列表可能看起来有点无聊(对我来说确实如此),因为实际化学结构的标题位于副标题

这有点难以实现,但简而言之,你必须在包参数list=true中设置subcaption \setcounter{losdepth}{2}(假设您已fileext=los\DeclareFloatingEnvironment)之前的某个地方设置\listofschemes

这是一个完整的 MWE,它显示一个包含子方案、子图、显示子标题的方案列表和图形列表的文档。

\documentclass[a4paper]{article}

\usepackage[english]{babel}
% my original document happened to use lualatex
\usepackage[utf8]{luainputenc}
\usepackage{fontspec}

\usepackage{graphicx}
\usepackage[%
   % the following two lines are not required
   margin=0pt,font+=small,labelformat=parens,%
   labelsep=space,justification=centering,skip=6pt,%
   % list=true must be used *in combination with* \setcounter{\Zdepth}{2}
   list=true%
]{subcaption}

% not loading tocloft gives "no counter lofdepth defined"
% titles makes tocloft surrender control of the TOC title font, spacing, etc.to the document's default behaviour (otherwise tocloft uses its own settings)
\usepackage[titles]{tocloft}

\usepackage{chemmacros}
\usechemmodule{scheme}
\usepackage{newfloat}
\DeclareFloatingEnvironment[
   fileext=los,
   listname={List of Schemes},
   name=Scheme,
   placement=tbp,
   within=none % other options are within={section,chapter}
]{scheme}
\DeclareCaptionSubType{scheme}
\usepackage{chemfig}
% print atoms in sans-serif instead of serif, looks better
\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}

\usepackage{hyperref}

\begin{document}

\setcounter{losdepth}{2}
\setcounter{lofdepth}{1} % not strictly necessary, depth=1 is default

\tableofcontents
\listofschemes
\listoffigures

\section{Chemistry}

\subsection{Dyes}

\begin{scheme}[tb]
\centering
\begin{subscheme}{0.5\textwidth}
   \centering
   % define invisible bond (for use between the charged species)
   \definesubmol\nobond{-[,1.2,,,draw=none]}
   \footnotesize\chemfig[atom sep=2.0em]{[7]H_3C-N(-[6]CH_3)-[:30]*6(=-(*6(=\chembelow{S}{\scriptscriptstyle\oplus}(!\nobond\chemabove{Cl}{\scriptscriptstyle\ominus})-(*6(-=(-N(-[1]CH_3)-[6]CH_3)-=-=))--N=-))--=-)}
   \caption[Methylene blue]{Methylene blue.}
   \label{sch:MB-structure}
\end{subscheme}\,%
\begin{subscheme}{0.5\textwidth}
   \centering\footnotesize
   \chemfig[atom sep=2.0em]{([:-30]*6((-=^[::+60]-[::+60]=^[::+60]-[::+60])=-(-OH)=(-N=[::60]N-*6(=(-OH)-=(-S(=[::+90]O)(=[::-90]O)(-O^\ominus\,Na^\oplus))-*6(-=(-NO_2)-=--)=-))-=-))}
   \caption[Eriochrome black T]{Eriochrome black T.}
   \label{sch:EBT-structure}
\end{subscheme}
\caption[MB and EBT dyes]{MB and EBT.}
\label{sch:MB-EBT-structures}
\end{scheme}

\begin{figure}[tbh]
\centering
\begin{subfigure}[b]{0.5\linewidth}
\centering
\includegraphics[width=0.97\textwidth]{example-image-a}
\caption{}
\label{fig:031-005}
\end{subfigure}%
\begin{subfigure}[b]{0.5\linewidth}
\centering
\includegraphics[width=0.97\textwidth]{example-image-b}
\caption{}
\label{fig:031-014}
\end{subfigure}
\caption[Photographs of cell]{Nice photographs.}
\label{fig:031}
\end{figure}

\end{document}

上述代码块的编译 PDF

环境:TeXLive 2020、chemmacros v5.11、newfloat v1.1l、caption v1.3。

在弄清楚这种行为时,我得到了很多帮助化学宏指令副标题新浮点数包装手册,以及其他问题(并不总是密切相关):

新的图形环境
定义新型漂浮环境
如何编辑方案列表中的方案编号?
如何更改图形列表中子图的显示?
\listoffigures 不能与 \subfig 一起使用
修改 \listofschemes 输出以匹配回忆录类
\setcounter{目录深度}

相关内容