我无法用下面的 MWE 更好地描述这个问题。
复制步骤:
- 使用 Babel 创建双语文章(此处:american 和 ngerman)
- 将 Babel 德语简写添加到英语中(为了方便,我也经常这样做,以便
"=
也为英语启用它。) - 在分段命令中使用简写。
- 本地切换语言。
- 在分段命令中再次使用简写。
实际结果:在步骤 3 中,标题和目录中的简写被正确扩展。在步骤 5 中,标题中的简写被正确扩展,但目录中按字面意思打印简写。
预期结果:速记应始终正确扩展。
梅威瑟:
\documentclass[american]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[ngerman,american,main=american]{babel}
\useshorthands{"}
\addto\extrasamerican{\languageshorthands{american}\languageshorthands{ngerman}}
\begin{document}
\tableofcontents
\section{Lore"=ipsum}
The section title \verb#Lore"=ipsum# is correctly typeset in the TOC.
The shorthands work in the heading and in the TOC.
\begin{otherlanguage}{ngerman}
Ein Absatz in deutsch.
\end{otherlanguage}
\section{Lore"=ipsum}
After a temporary switch to a foreign language, the shorthands work only partially.
The section title \verb#Lore"=ipsum# is correctly typeset in the heading but not in the TOC.
Why?
\end{document}
答案1
没有错误;您陈述的\useshorthands{"}
地方错误:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman,main=american]{babel}
\addto\extrasamerican{%
\languageshorthands{ngerman}%
\useshorthands{"}%
}
\begin{document}
\tableofcontents
\section{Lore"=ipsum}
The section title \verb#Lore"=ipsum# is correctly typeset in the TOC.
The shorthands work in the heading and in the TOC.
\begin{otherlanguage}{ngerman}
Ein Absatz in deutsch.
\end{otherlanguage}
\section{Lore"=ipsum}
After a temporary switch to a foreign language, the shorthands work only partially.
The section title \verb#Lore"=ipsum# is correctly typeset in the heading but not in the TOC.
Why?
\end{document}
有什么问题?使用\begin{otherlanguage}{ngerman}
会导致\babel@toc{ngerman}{}
写入.toc
文件中;然后\end{otherlanguage}
导致写入\babel@toc{american}{}
。
现在序列\babel@toc{ngerman}{}\babel@toc{american}{}
需要\noextrasngerman
被评估,这有助于
\bbl@deactivate {"}\umlauthigh \bbl@nonfrenchspacing
然后你就看到了问题。通过添加\useshorthands{"}
,\extrasamerican
问题就解决了。
答案2
使用带星号的版本\useshorthands
,即:
\useshorthands*{"}
手册中写道:“用户简写并非始终有效,因为它们可能会因语言而停用(例如,如果您使用“作为用户简写并从德语切换到法语,它们将停止工作)。因此,提供了一个带星号的版本 \useshorthands*{char},以确保简写始终处于激活状态。”