如何在环境中使用不能在环境中的 \openautoquote?

如何在环境中使用不能在环境中的 \openautoquote?

我正在努力改进这个答案使其与 完全兼容csquotes

考虑这个例子:

\documentclass{article}
\usepackage{csquotes}

% hanging indentation for quotes, https://tex.stackexchange.com/a/166213/98645
\renewcommand{\mkbegdispquote}[2]{\strut\llap{``}}
% #1 is closing punctuation, #2 is citation. 
% We don't use them in this instance, but they
% need to be "catered for"
\renewcommand{\mkenddispquote}[2]{#1''\ifblank{#2}{}{#2}}
% #1 is closing punctuation, #2 is citation.
% again, we provide for them if needed

\begin{document}
\begin{displayquote}
Now we use an \enquote{quote inside the quote} in this
long text.\\
Bear with me.
\end{displayquote}

\end{document}

问题有:

  1. 引号现在再次被静态定义 – 这违背了 的目的csquotes。您可以通过替换它们来解决这个问题,例如在德语中,您可以使用,, 而不是``\mkbegdispquote但这仍然不灵活。
  2. 更糟糕的是,它破坏csquotes嵌套引文
    在上面的例子中,“引号内引号”将被排版错误,并使用外引号(““), 代替正如它应该做的那样。

尝试修复

看看csquotes 文档我尝试修复这个问题:

\renewcommand{\mkbegdispquote}[2]{\strut\llap{\openautoquote}}
\renewcommand{\mkenddispquote}[2]{#1\closeautoquote\ifblank{#2}{}{#2}}

那太简单了,不是吗?问题似乎是,\openautoquote如果它处于“环境”(如果这是错误的术语,请原谅我,我不知道 LaTeX 内部结构),即 中,则不起作用并认为它不平衡。\llap我的下一个想法是“伪造”它,显示一个普通符号并隐藏仅表示csquotes它应该在其引用顺序中计算嵌套的符号。

\renewcommand{\mkbegdispquote}[2]{\strut\llap{\textooquote}\vphantom{\openautoquote}}

嗯……现在还在\vphantom,所以当然还是不行。我也没有看到csquotes手动调整嵌套的方法没有显示实际标志。

那么我该怎么做呢?

上面第一个问题已得到有效解决,只有第二个问题才是我这里的问题。

答案1

还有一个 init 命令:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman,french,english]{babel}
\usepackage[autostyle]{csquotes}
\renewcommand{\mkbegdispquote}[2]{\leavevmode\llap{\textooquote}\initoquote}
\renewcommand{\mkenddispquote}[2]{#1\textcoquote\ifblank{#2}{}{#2}}
\begin{document}
\begin{displayquote}
Now we use an \enquote{quote inside the quote} in this
long text.\\
Bear with me.
\end{displayquote}

\selectlanguage{french}
\begin{displayquote}
Now we use an \enquote{quote inside the quote} in this
long text.\\
Bear with me.
\end{displayquote}

\selectlanguage{ngerman}
\begin{displayquote}
Now we use an \enquote{quote inside the quote} in this
long text.\\
Bear with me.
\end{displayquote}

\end{document}

在此处输入图片描述

相关内容