长标题中使用 chemnum 中的 \cmpd 生成奇怪的新行

长标题中使用 chemnum 中的 \cmpd 生成奇怪的新行

\cmpd我在标题中使用 时遇到问题,因为它太长了。出于某种奇怪的原因,化合物编号被放在新行上,即使没有必要。我已经有一个使用 的解决方法~,但这不是我想要的。稍微解释一下:\iupac{}您可以使用 添加一个可能的断点\|。正如您将看到的,换行符将放在 (羟基) 之后,但 (1) 将放在新行上。我插入了两个标题。第一个是让我头疼的那个,第二个工作正常。第四个是解决方法。

这是我的(几乎)MWE:

\documentclass[12pt,english]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[english]{babel} % Silbentrennung, etc.
\usepackage{chemnum} % provides \cmpd{Name.Sub}
\usepackage{chemmacros} % provides iupac and loads siunitx

\begin{document}

\subsection{\iupac{\tert\-Butyl 2\-((\S\-2,2\-dimethyl\-1,3\-dioxolan\-4\-yl)\|(hy\|droxy)\|methyl)\|acryl\|ate} (\cmpd{iPrtBuAcrylate})}
Problematic subsection heading.

\subsection{\iupac{Sodium \S\-2,2\-dimethyl\-1,3\-dioxolane\-4\-carboxylate} (\cmpd{iPrCarboxylate})}
Working subsection heading.

\subsection{\iupac{\tert\-Butyl 2\-((\S\-2,2\-dimethyl\-1,3\-dioxolan\-4\-yl)\|(hy\|droxy)\|methyl)\|acryl\|ate}~(\cmpd{iPrtBuAcrylate})}
Problematic subsection with a workaround.

\end{document}

答案1

这与宏无关chem。 中的默认标题scrartcl\raggedright通过命令设置的\raggedsection。 不规则的右侧环境说明了您遇到的问题。 解决此问题的一种方法是使用包ragged2e并设置\raggedsection\RaggedRight

示例输出

\documentclass[12pt,english]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{ragged2e}

\begin{document}

\subsection{Averylongword\-averylongwordaverylong\-wordaverylongwordavery\-long\-word X}

\begin{flushleft}
  Averylongword\-averylongwordaverylong\-wordaverylongwordavery\-long\-word\-averylongwordaverylong\-wordaverylongwordavery\-long\-word X
\end{flushleft}

\let\raggedsection\RaggedRight

\subsection{Averylongword\-averylongwordaverylong\-wordaverylongwordavery\-long\-word X}

\end{document}

相关内容