Wie verwende ich \openautoquote, das nicht in einer Umgebung stehen darf?

Wie verwende ich \openautoquote, das nicht in einer Umgebung stehen darf?

Ich habe versucht, mich zu verbesserndiese Antwortum es vollständig kompatibel mit zu machen csquotes.

Betrachten Sie dieses Beispiel:

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

DerProblemees gibt:

  1. Die Anführungszeichen sind nun wieder statisch definiert – was dem Ziel von zuwiderläuft csquotes. Dies kann man beheben, indem man sie oben ersetzt, im Deutschen würde man also ,, statt des ``in verwenden \mkbegdispquote, aber auch das ist dann nicht flexibel.
  2. Schlimmer noch, es unterbricht csquotesden eigentlichen beabsichtigten Mechanismus fürverschachtelte Anführungszeichen.
    Im obigen Beispiel wird „Zitat im Zitat“ falsch gesetzt und verwendetäußere Anführungszeichen(""), anstattinnereEinsen (''), wie es sein soll.

Versucht zu beheben

Mit Blick auf diecsquotes-DokumentIch habe versucht, das Problem zu beheben:

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

Das wäre zu einfach gewesen, oder? Das Problem scheint zu sein, dass \openautoquotees nicht funktioniert und als unausgewogen gilt, wenn es sich in einer „Umgebung“ befindet (bitte haben Sie Nachsicht, wenn das der falsche Begriff ist, ich kenne die internen Vorgänge von LaTeX nicht), also in \llap. Meine nächste Idee war dann, dies zu „fälschen“, ein gewöhnliches Symbol anzuzeigen und dasjenige auszublenden, das nur besagt, csquotesdass es eine Verschachtelung in seiner Anführungszeichenreihenfolge zählen soll.

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

Nun ja… es ist immer noch drin \vphantom, also funktioniert es natürlich immer noch nicht. Ich habe auch keine Möglichkeit gesehen, csquotesdie Verschachtelung manuell anzupassen .ohneAnzeige des tatsächlichen Zeichens.

Wie kann ich das also machen?

Das erste Problem oben ist effektiv behoben, nur das zweite ist mein Problem hier.

Antwort1

Es gibt auch einen Init-Befehl:

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

Bildbeschreibung hier eingeben

verwandte Informationen