如何在環境中使用不能在環境中的 \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.您可以透過替換上面的它們來解決此問題,例如在德語中您可以使用,, 而不是``in \mkbegdispquote,但這仍然不靈活。
  2. 更糟的是,它破壞了csquotes實際的預期機制嵌套引用
    在上面的例子中,「quote inside the quote「將被排版錯誤並使用外引號(““), 代替正如它應該做的那樣('')。

嘗試修復

看著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

還有一個初始化命令:

\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}

在此輸入影像描述

相關內容