我試著改進這個答案使其完全相容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}
這問題有:
- 引號現在又被靜態定義-這違背了
csquotes
.您可以透過替換上面的它們來解決此問題,例如在德語中您可以使用,,
而不是``
in\mkbegdispquote
,但這仍然不靈活。 - 更糟的是,它破壞了
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}