风格各异的引文

风格各异的引文

我正在使用 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}

„粗体文本 1“//“粗体文本 2“//“粗体文本 1“//“错误“文本 3

如果您问我,我会尝试只在相同的分组级别使用引号。如果出于某种原因这绝对不可能,我会使用手册\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}

相关内容