我正在创建一个多语言文档,使用polyglossia
。我想使用 在章节标题中包含引用文本csquotes
,并且我还想在最终文件中有一个 PDF 书签树,每个章节一个书签,使用bookmark
。最后,我还使用了polyglossia
的 babel 样式简写 ( babelshorthands=true
)。
以下 MWE 失败:
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{german}
\usepackage{csquotes}
\usepackage{bookmark}
\begin{document}
\section{This works}
\section{\enquote{This breaks}}
\end{document}
错误信息如下:
! Argument of \language@active@arg" has an extra }.
<inserted text>
\par
l.10 \section{\enquote{This breaks}}
[...]
谷歌搜索让我得出结论,babel
这里的问题在于简写(事实上,不启用它们可以消除错误),并且我应该"
在章节标题之前禁用简写,然后分别使用\shorthandoff
和重新启用它\shorthandon
(这些babel
命令也是由提供的polyglossia
;事实上,babel
自己的文档特别推荐使用这些命令来解决上述错误):
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{german}
\usepackage{csquotes}
\usepackage{bookmark}
\begin{document}
\section{This works}
\shorthandoff{"}%
\section{\enquote{This breaks}}
\shorthandon{"}%
\end{document}
然而,这仍然会导致与上面相同的错误消息。
使用babel
其本身来代替polyglossia
作品;以下内容:
\documentclass{article}
\usepackage[german]{babel}
\usepackage{csquotes}
\usepackage{bookmark}
\begin{document}
\section{This works}
\shorthandoff{"}%
\section{\enquote{This breaks}}
\shorthandon{"}%
\end{document}
生成所需的输出,没有任何错误。或者,只要未加载包,使用polyglossia
也可以(甚至不禁用简写)。"
bookmark
我的问题是:
- 这是
polyglossia
我应该报告的一个错误(\shorthandoff
并且\shorthandon
不能按预期工作),和/或bookmark
?和 - 因为我更愿意继续使用
polyglossia
和babel
简写,同时保留章节标题和 PDF 书签中的引文,是否有其他方法可以解决原始错误,或者这是“给定 X,选择任意(X-1)”的情况?
提前谢谢了!
答案1
稍后加载语言。该选项babelshorthands=true
使简写直接生效,因此会干扰稍后加载的软件包:
\documentclass{article}
\usepackage{polyglossia}
\usepackage{csquotes}
\usepackage{bookmark}
\setmainlanguage[babelshorthands=true]{german}
\begin{document}
\section{This works}
\section{\enquote{This breaks}}
\end{document}