Fehlermeldung „! Argument von \xpg@nospace hat ein zusätzliches }“ bei Polyglossie

Fehlermeldung „! Argument von \xpg@nospace hat ein zusätzliches }“ bei Polyglossie

Ich verwende einen Code – der am Ende zu finden ist – für lange Zitate in der französischen Tradition. Wenn ich französische Anführungszeichen innerhalb eines so langen Zitats verwende, habe ich kein Problem beim Kompilieren, xetexwenn ich mit der französischen Option lade babel, und die Fehlermeldung

Das Argument \xpg@nospace hat ein zusätzliches }.

beim Laden von polyglossia. Dasselbe passiert beim Kompilieren mit , lualatex,allerdings mit einer anderen Fehlermeldung, beginnend mit

Fehler bei Paket Soul: Die Rekonstruktion ist fehlgeschlagen.

Das Problem verschwindet, wenn ich in der Präambel des Dokuments definiere:

\newcommand*{\og}{«{}} \newcommand*{\fg}{{}»}

und wenn die französischen Anführungszeichen innerhalb des Langzitats durch \og… ersetzt werden \fg.

polyglossiaIch vermute also, dass ein Konflikt zwischen und besteht soul– oder meine Art der Verwendung von soul. Ich habe zuerst auf fr.comp.text.tex gepostet, aber keine Lösung gefunden.

Freundliche Grüße, B. Alfonsi

Code (und Minimalbeispiel):

\documentclass[a4paper,11pt, twoside]{article} 

\usepackage{fontspec}% f 
 \setmainfont{Minion Pro}% 
 %\usepackage[french]{babel} 
 \usepackage{polyglossia} 
 \setmainlanguage{french} 

\usepackage{soulutf8} 
 \usepackage {kvsetkeys} 
 \makeatletter 
 \newsavebox \citeguill@box 
 \define@key {citeguill}{left}[\guillemotleft]{\def\citeguill@left {#1}} 
 \define@key {citeguill}{right}[\guillemotright]{\def\citeguill@right {#1}} 
 \define@key {citeguill}{middle}[\hskip -\fontdimen2\font\mbox \guillemotright\hskip\fontdimen2\font]{\def\citeguill@middle 
 {\setbox\citeguill@box =\hbox {#1}\def\citeguill@middle {\copy 
 \citeguill@box }}% 
 }% \KV@citeguill@middle 
 \newcommand*\citeguillsetup [1]{\def\citeguill@setup {\kvsetkeys 
 {citeguill}{#1}}} 
 \let\citeguill@setup =\relax % 

\newcommand*\citeguill [1][]{% 
 \kvsetkeys{citeguill}{left,right,middle}\citeguill@setup% 
 \kvsetkeys{citeguill}{#1}% 
 \SOUL@setup% 
 \def\SOUL@preamble {\citeguill@middle \citeguill@left }% 
 \def\SOUL@postamble {\citeguill@right }% 
 \def\SOUL@everysyllable {\the\SOUL@syllable }% 
 \def\SOUL@everyspace ##1{##1\nobreak \ 
 \discretionary {\kern-\fontdimen 2\font } 
 {\citeguill@middle } 
 {}}% 
 \def\SOUL@everyhyphen {\discretionary% 
 {\SOUL@setkern \SOUL@hyphkern \SOUL@sethyphenchar } 
 {\citeguill@middle } 
 {}}% 
 \def\SOUL@everyexhyphen ##1{\SOUL@setkern \SOUL@hyphkern 
 \hbox{##1}\discretionary {} 
 {\citeguill@middle } 
 {\SOUL@setkern \SOUL@charkern }}% 
 \SOUL@% 
 }% \citeguill 
 \makeatother 

\begin{document} 

Pour conclure, les rédacteurs de \emph{L’Anti-Mythes} résument bien la question BHL 
telle qu’elle se pose à l’automne 1977 : \citeguill{Que le cynisme séduise, que la 
bêtise paie et que la mode soit au renouveau des idées les plus réactionnaires, cela 
ne suffit pas à expliquer l’extraordinaire exploitation par les médias du phénomène 
«nouveaux philosophes», ni leur impressionnant succès commercial.} 

\end{document}

Antwort1

Es scheint sich hierbei um eine Inkompatibilität zwischen der Funktionsweise soulund der \XeTeXinterchartoksImplementierung der Funktion in Polyglossia für Französisch im Hinblick auf die Guillemets zu handeln.

Wenn ich am Ende der Präambel sage

\makeatletter
\appto\blockextras@french{%
  \XeTeXinterchartoks \french@punctguillstart 4095 = {\nobreakspace\ignorespaces}%
}
\appto\inlineextras@french{%
  \XeTeXinterchartoks \french@punctguillstart 4095 = {\nobreakspace\ignorespaces}%
}
\makeatother

(im Grunde unter Verwendung babelder 3.9-Definition) verschwindet der Fehler. Polyglossia verwendet dort, \xpg@nospacedass ein Argument gelesen wird, was wahrscheinlich für Verwirrung sorgt soul.

Natürlich funktioniert das nicht mit LuaLaTeX, dafür benötigen Sie babel. Ich rate Ihnen jedoch, es babeltrotzdem zu verwenden, es spricht nichts dagegen, insbesondere jetzt, da Version 3.9 XeLaTeX-Unterstützung einführt.

verwandte Informationen