Como usar \openautoquote que não deve estar em um ambiente em um ambiente?

Como usar \openautoquote que não deve estar em um ambiente em um ambiente?

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á:

  1. 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.
  2. Pior, quebra csquoteso 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, \openautoquotenã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 csquotesque deveria contar um aninhamento em sua ordem de cotação.

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

Bem… ainda está na \vphantommoda, então é claro que ainda não funciona. Também não vi nenhuma maneira de csquotesajustar 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}

insira a descrição da imagem aqui

informação relacionada