\listofschemes
当尝试自定义由包的命令打印的标题时chemstyle
,我遇到了意外的行为。
引用chemstyle
手册中的一段话:
为了与 LaTeX 内核提供的 \listoffigures 和 \listoftables 宏相匹配,chemscheme 提供了一个 \listofschemes 命令。该命令的工作方式与内核命令相同,默认文本存储在宏 \listschemename 中。
为了覆盖图形列表的默认标题,我通常在文档的序言中使用以下命令:
\addto\captionsngerman{\renewcommand\listfigurename{Verzeichnis der Abbildungen}}
虽然此命令按预期工作,但用于更改方案列表标题的类似命令在使用作为语言规范时无效ngerman
。(如以下 MWE 所示)。如果ngerman
对english
预期输出进行更改,则会产生预期输出。
有可能克服这个问题吗?
\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
,但将它们全部放在一起更加一致。