¿Cómo usar \openautoquote que no debe estar en un entorno en un entorno?

¿Cómo usar \openautoquote que no debe estar en un entorno en un entorno?

Estaba tratando de mejoraresta respuestapara hacerlo totalmente compatible con csquotes.

Considere este ejemplo:

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

Elproblemashay:

  1. Las comillas vuelven a estar definidas estáticamente, lo que va en contra del objetivo de csquotes. Puedes solucionar este problema reemplazándolos arriba, por ejemplo, en alemán usarías ,, en lugar de ``in \mkbegdispquote, pero esto todavía no es flexible.
  2. Peor aún, rompe csquotesel mecanismo real previsto paracitas anidadas.
    En el ejemplo anterior, "cita dentro de la cita" se escribirá mal y se utilizarácomillas exteriores(""), en lugar deinternounos ('') como se supone que debe hacer.

intenta arreglar

Mirando a ladocumento de citas csIntenté arreglar esto:

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

Habría sido demasiado fácil, ¿no? El problema parece ser que \openautoquoteno funciona y cree que está desequilibrado si está en un "entorno" (tengan paciencia si este es el término incorrecto, no conozco los componentes internos de LaTeX), es decir, en \llap. Mi siguiente idea entonces fue "falsificar" esto, mostrar un símbolo ordinario y ocultar el que simplemente dice csquotesque debería contar un anidamiento en su orden de cotización.

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

Bueno... todavía está disponible \vphantom, así que, por supuesto, todavía no funciona. Tampoco he visto forma de csquotesajustar manualmente el anidamiento.sinmostrando el signo real.

Entonces, ¿cómo puedo hacer eso?

El problema uno anterior se solucionó efectivamente, solo el segundo es mi problema aquí.

Respuesta1

También hay un comando de inicio:

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

ingrese la descripción de la imagen aquí

información relacionada