我正在使用 lualatex 1.12 软件包csquotes
来正确引用德语。如果找到匹配的引号,该软件包会进行解析,如果没有找到,它会报错。我的问题是:即使引号是不是设定为相同团体?
例如,以粗体开头的引文,以粗体结尾的引文,即“错误”文本
\documentclass{article}
\usepackage[german]{babel}
\usepackage{csquotes}
\MakeOuterQuote{"}
\begin{document}
\enquote{Bold text 1}
"{\bfseries{}Bold text2}"
"{\bfseries{}Wrong" text3}
\end{document}
理想的解决方案是,无论组是什么,都要正确设置引号。
答案1
本质上不是。csquotes
与分组一起工作,并且分组深深植根于所有csquotes
' 代码中。(分组使得实现嵌套引用成为可能,而无需大量额外的不必要的簿记。)
这是尝试完全删除 使用的引用命令中的任何分组\MakeOuterQuote
。嵌套不会按预期工作,我可能忽略了很多东西,因此可能会出现中断。
买者自负这更像是一项学术练习,看看它是否可行,而不是我在现实世界文档中使用的代码。
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\makeatletter
\protected\def\csq@oqmark@nogroup{%
\global\advance\csq@qlevel\@ne
\global\let\csq@oqmark\csq@qclose
\global\let\csq@qclose@ii\csq@qclose@ii@nogroup
\expandafter\csq@qopen
}
\let\csq@oqmark\csq@oqmark@nogroup
\let\csq@qclose@ii@orig\csq@qclose@ii
\def\csq@qclose@ii@nogroup#1{%
\ifdim\lastkern=\csq@omitmarker
\global\advance\csq@qlevel\m@ne
\global\let\csq@oqmark\csq@oqmark@nogroup
\global\let\csq@qclose@ii\csq@qclose@ii@orig
#1%
\else
\csq@addkern@close
\ifodd\csq@qlevel
\csq@thequote@oclose
\let\csq@kernchar@i\csq@thequote@oclose
\else
\csq@thequote@iclose
\let\csq@kernchar@i\csq@thequote@iclose
\fi
\ifnum\csq@qlevel>\@ne
\csq@setmarker@close
\fi
\global\advance\csq@qlevel\m@ne
\global\let\csq@oqmark\csq@oqmark@nogroup
\global\let\csq@qclose@ii\csq@qclose@ii@orig
\ifblank{#1}{}{\expandafter#1}%
\expandafter\def
\expandafter\csq@kernchar@i
\expandafter{\csq@kernchar@i}%
\expandafter\csq@fixkern
\fi}
\makeatother
\MakeOuterQuote{"}
\begin{document}
\enquote{Bold text 1}
"{\bfseries Bold text2}"
\enquote{Bold text 1}
"{\bfseries Wrong" text3}
\end{document}
如果您问我,我会尝试只在相同的分组级别使用引号。如果出于某种原因这绝对不可能,我会使用手册\textooquote
,\textcoquote
在这种情况下。
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\MakeOuterQuote{"}
\begin{document}
\enquote{Bold text 1}
"{\bfseries Bold text2}"
\enquote{Bold text 1}
\textooquote {\bfseries Wrong\textcoquote\ text3}
\end{document}