env의 env에 있으면 안되는 \openautoquote를 어떻게 사용합니까?

env의 env에 있으면 안되는 \openautoquote를 어떻게 사용합니까?

개선하려고 노력 중이었는데이 답변와 완벽하게 호환되도록 합니다 csquotes.

다음 예를 고려하십시오.

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

그만큼문제다음이 있습니다:

  1. 이제 따옴표가 다시 정적으로 정의됩니다. 이는 의 목적에 어긋납니다 csquotes. 위의 항목을 대체하여 이 문제를 해결할 수 있습니다. 예를 들어 독일어에서는 in ,, 대신 사용 하지만 여전히 유연하지 않습니다.``\mkbegdispquote
  2. 더 나쁜 것은 csquotes실제 의도된 메커니즘을 깨뜨리는 것입니다.중첩된 인용문.
    위의 예에서 "quote inside the quote"는 잘못 조판되어 사용됩니다.바깥쪽 따옴표(""), 대신에안의('') 예상대로입니다.

고치려고 노력함

을 보면서csquotes 문서나는 이 문제를 해결하려고 노력했습니다.

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

그건 너무 쉬웠을 텐데, 그렇지 않나요? 문제는 "환경"에 있는 경우 작동하지 않고 불균형하다고 생각하는 것 같습니다 \openautoquote(잘못된 용어인 경우 양해해 주시기 바랍니다. LaTeX 내부를 모릅니다) \llap. 내 다음 아이디어는 이것을 "가짜"로 삼아 일반 기호를 표시하고 csquotes인용 순서에 따라 중첩을 계산해야 한다고 말하는 기호를 숨기는 것이었습니다 .

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

글쎄… ​​지금도 남아 있으니 \vphantom당연히 여전히 작동하지 않습니다. 또한 csquotes중첩을 수동으로 조정할 수 있는 방법도 본 적이 없습니다.없이실제 기호를 표시합니다.

그러면 어떻게 할 수 있나요?

위의 문제 중 하나는 효과적으로 해결되었습니다. 여기서는 두 번째 문제가 제 문제입니다.

답변1

초기화 명령도 있습니다:

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

여기에 이미지 설명을 입력하세요

관련 정보