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:
- 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. - Peor aún, rompe
csquotes
el 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 \openautoquote
no 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 csquotes
que 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 csquotes
ajustar 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}