csquotes icon indicating copy to clipboard operation
csquotes copied to clipboard

"Missing }" when using `\foreignblockcquote` with `\footcite`

Open pcdi opened this issue 4 years ago • 2 comments

When setting the cite command to \footcite as described on page 30 in Section 9.2 of the manual, using \foreignblockcquote results in an error:

! Missing } inserted.
<inserted text> 
                }
l.32 ... – ein geradezu unorthographisches Leben.}

Minimal working example:

\documentclass{article}

\usepackage{polyglossia}

\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}

\usepackage{csquotes}
% as per the manual:
\SetCiteCommand{\footcite}
\renewcommand{\mkccitation}[1]{#1}

\setdefaultlanguage{english}
\setotherlanguage{german}

\begin{document}
	% works:
	\blockcquote{angenendt}{Weit hinten, hinter den Wortbergen, fern der Länder
		Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen sie in
		Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines
		Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen
		Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile
		in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die
		Blindtexte beherrscht – ein geradezu unorthographisches Leben.}
	
	% does not work:
	\foreignblockcquote{german}{angenendt}{Weit hinten, hinter den Wortbergen, fern
		der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen
		sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein
		kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den
		nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene
		Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion
		werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben.}
\end{document}

pcdi avatar Aug 05 '21 14:08 pcdi

The main culprit appears to be \csq@resetlang.

Compare the following MWE with \let\csq@resetlang\relax commented out and not commented out.

\documentclass{article}

\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{german}

\usepackage{csquotes}

\begin{document}
\makeatletter
  \csq@savelang
  %\let\csq@resetlang\relax
  \begin{otherlanguage*}{german}
  Lorem\footnote{Foo}
  \end{otherlanguage*}
\end{document}

\csq@resetlang is defined as

https://github.com/josephwright/csquotes/blob/ad510ad33fea8dab7cd530e1d533b0724847396d/csquotes.sty#L813-L817

which seems wrong when you keep in mind that \csq@otherlang@star (i.e. otherlanguage*) is an environment that should be closed with \csq@otherlang@star@end.

Unfortunately, I have absolutely no idea why \csq@resetlang is needed and what \blx@hook@parboxrestore (the hook to which it is added) does.

moewew avatar Aug 05 '21 19:08 moewew

A similar issue was reported at https://tex.stackexchange.com/q/662212/35864.

moewew avatar Oct 19 '22 06:10 moewew