
나는 프랑스 전통의 긴 인용을 위해 마지막에 있는 코드를 사용합니다. 이렇게 긴 인용문 안에 프랑스어 따옴표를 사용할 때 프랑스어 옵션을 xetex
로드하면 컴파일에 문제가 없으며 babel
오류 메시지가 나타납니다.
\xpg@nospace의 인수에는 추가 }가 있습니다.
로드할 때 polyglossia
. lualatex,
다음으로 시작하는 다른 오류 메시지를 사용하여 컴파일할 때도 마찬가지입니다.
패키지 소울 오류: 재구성에 실패했습니다.
문서의 서문에 정의하면 문제가 사라집니다.
\newcommand*{\og}{«{}} \newcommand*{\fg}{{}»}
그리고 긴 인용 안의 프랑스어 인용 부호가 다음 과 같이 바뀌면 \og
…\fg
polyglossia
그래서 나는 와 soul
– 또는 나의 사용 방식 사이에 약간의 충돌이 있다고 생각합니다 soul
. 처음에 fr.comp.text.tex에 게시했지만 해결책을 얻지 못했습니다.
감사합니다, B. 알폰시
코드(및 최소한의 예):
\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}
답변1
이는 길레메와 관련하여 프랑스어용 Polyglossia에서 기능이 구현되는 soul
방식과 작동 방식이 호환되지 않는 것 같습니다 .\XeTeXinterchartoks
서문 마지막에 이렇게 말하면
\makeatletter
\appto\blockextras@french{%
\XeTeXinterchartoks \french@punctguillstart 4095 = {\nobreakspace\ignorespaces}%
}
\appto\inlineextras@french{%
\XeTeXinterchartoks \french@punctguillstart 4095 = {\nobreakspace\ignorespaces}%
}
\makeatother
(기본적으로 babel
's 3.9 정의 사용) 오류가 사라집니다. Polyglossia는 \xpg@nospace
논쟁을 읽는 데 사용하는데, 이것이 아마도 혼란을 야기할 것입니다 soul
.
물론 이것은 LuaLaTeX에서는 작동하지 않습니다 babel
. 그러나 내 조언은 babel
어쨌든 사용하라는 것입니다. 특히 버전 3.9에 XeLaTeX 지원이 도입되었으므로 아무런 문제가 없습니다.