自定义 listofschemes 的标题

自定义 listofschemes 的标题

\listofschemes当尝试自定义由包的命令打印的标题时chemstyle,我遇到了意外的行为。

引用chemstyle手册中的一段话:

为了与 LaTeX 内核提供的 \listoffigures 和 \listoftables 宏相匹配,chemscheme 提供了一个 \listofschemes 命令。该命令的工作方式与内核命令相同,默认文本存储在宏 \listschemename 中。

为了覆盖图形列表的默认标题,我通常在文档的序言中使用以下命令:

\addto\captionsngerman{\renewcommand\listfigurename{Verzeichnis der Abbildungen}}

虽然此命令按预期工作,但用于更改方案列表标题的类似命令在使用作为语言规范时无效ngerman。(如以下 MWE 所示)。如果ngermanenglish预期输出进行更改,则会产生预期输出。

有可能克服这个问题吗?

\documentclass[ngerman]{article}
\usepackage{graphicx}
\usepackage{babel}
\usepackage{chemstyle}
\addto\captionsngerman{\renewcommand\listschemename{Verzeichnis der Schemata}}
\addto\captionsngerman{\renewcommand\listfigurename{Verzeichnis der Abbildungen}}

\begin{document}

\listofschemes
\listoffigures

\begin{scheme}
\includegraphics[scale=0.25]{example-image}
\end{scheme}

\begin{figure}
\includegraphics[scale=0.25]{example-image}
\end{figure}

\end{document}

在此处输入图片描述

答案1

chemscheme负责该命令的包在开始文档时\listofschemes添加了自己的翻译,因此您的命令出现得太早并被覆盖。\listschemename\addto

但是,用 来延迟它是不够的\AtBeginDocument,因为chemscheme还执行\selectlanguage{\languagename}

解决方法:也执行\csname captions\languagename\endcsname

\documentclass[ngerman]{article}
\usepackage{graphicx}
\usepackage{babel}
\usepackage{chemstyle}

\AtBeginDocument{%
  \addto\captionsngerman{\renewcommand\listfigurename{Verzeichnis der Abbildungen}}
  \addto\captionsngerman{\renewcommand\listschemename{Verzeichnis der Schemata}}%
  \csname captions\languagename\endcsname
}

\begin{document}

\listofschemes
\listoffigures

\begin{scheme}
\includegraphics[scale=0.25]{example-image}
\caption{What's up, doc?}
\end{scheme}

\begin{figure}
\includegraphics[scale=0.25]{example-image}
\caption{What's up, doc?}
\end{figure}

\end{document}

第一\addto条指令可以在外面\AtBeginDocument,但将它们全部放在一起更加一致。

在此处输入图片描述

相关内容