Eu estava tentando melhoraresta respostapara torná-lo totalmente compatível com csquotes
.
Considere este exemplo:
\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}
Oproblemashá:
- As aspas são agora novamente definidas estaticamente – o que vai contra o objetivo de
csquotes
. Você pode corrigir isso substituindo-os acima, por exemplo, em alemão você usaria,,
em vez de``
in\mkbegdispquote
, mas isso ainda não é flexível. - Pior, quebra
csquotes
o mecanismo real pretendido paracitações aninhadas.
No exemplo acima, “citação dentro da citação” será digitada incorretamente e usadaaspas externas(""), em vez deinternouns ('') como deveria fazer.
Tenta consertar
Olhando para odocumento csquotesEu tentei consertar isso:
\renewcommand{\mkbegdispquote}[2]{\strut\llap{\openautoquote}}
\renewcommand{\mkenddispquote}[2]{#1\closeautoquote\ifblank{#2}{}{#2}}
Isso teria sido muito fácil, não é? O problema parece ser, \openautoquote
não funciona e pensa que está desequilibrado, se estiver em um "ambiente" (por favor, tenha paciência se este for o termo errado, não conheço os componentes internos do LaTeX), ou seja, em \llap
. Minha próxima ideia foi "fingir" isso, exibir um símbolo comum e ocultar aquele que apenas diz csquotes
que deveria contar um aninhamento em sua ordem de cotação.
\renewcommand{\mkbegdispquote}[2]{\strut\llap{\textooquote}\vphantom{\openautoquote}}
Bem… ainda está na \vphantom
moda, então é claro que ainda não funciona. Também não vi nenhuma maneira de csquotes
ajustar manualmente o aninhamentosemexibindo o sinal real.
Então, como posso fazer isso?
O problema um acima foi efetivamente resolvido, apenas o segundo é o meu problema aqui.
Responder1
Há também um comando de inicialização:
\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}