.png)
Wenn ich die folgende benutzerdefinierte Klasse verwende:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{upecha}[2014/09/21 v0.8 tibetan modern pecha class]
\input{size11.clo}
\def\@outputpage{\shipout\vbox{\box\@outputbox}}
mit der folgenden Testdatei
\documentclass{myclass}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\begin{document}
a
\end{document}
Ich bekomme
(./testbug1.aux
! Missing control sequence inserted.
<inserted text>
\inaccessible
l.2 ...phenmin =\tw@ \righthyphenmin =\thr@@ \edef e
nglish{english}\def tt{tt}...
?
wobei die AUX-Datei Folgendes enthält:
\protect \language =\z@ \lefthyphenmin =\tw@ \righthyphenmin =\thr@@ \edef english{english}\def tt{tt}\def sf{sf}\edef {}\edef English{English}\protect \relax \protect \edef lmr{lmr}\protect \xdef \EU2/lmr/m/n/10.95 {\EU2/lmr/m/n/10.95 }\EU2/lmr/m/n/10.95 \size@update \enc@update \def rm{rm}\language =\l@english \def 21{21}\def September{September}\def September 21, 2014{September 21, 2014}\lefthyphenmin 2\relax \righthyphenmin 3\relax \relax \def Preface{Preface}\def References{References}\def Abstract{Abstract}\def Bibliography{Bibliography}\def Chapter{Chapter}\def Appendix{Appendix}\def Contents{Contents}\def List of Figures{List of Figures}\def List of Tables{List of Tables}\def Index{Index}\def Figure{Figure}\def Table{Table}\def Part{Part}\def encl{encl}\def cc{cc}\def To{To}\def Page{Page}\def see{see}\def see also{see also}\def Proof{Proof}
während es enthalten sollte
\select@language {english}
Diese falsche Definition in der AUX-Datei ist mehr oder weniger die Definition von select@language
.
Ich war versucht, die folgende Zeile in polyglossia.sty anzuklagen:
\protected@write\@auxout{}{\protect\select@language{#1}}%
denn wenn ich \protect
durch ersetze \string
, funktioniert alles wieder. ABER, das Seltsamste ist, dass dieses Verhalten verschwindet, wenn ich die Zeile kommentiere
\def\@outputpage{\shipout\vbox{\box\@outputbox}}
in meiner Klassendatei. Außerdem wird dieser Fehler nicht angezeigt, wenn ich diese Zeile mithilfe der Artikelklasse zu einem Dokument hinzufüge ...
Wer liegt hier also falsch: mein Code, der LaTeX-Kern oder Polyglossia? (LuaTeX und XeLaTeX weisen hier das gleiche Verhalten auf, daher würde ich nicht sagen, dass es von der Engine kommt ...)
Danke schön!
Antwort1
Der LaTeX-Kernel trifft hiergegen mehrere Vorkehrungen:
\documentclass{myclass}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\makeatletter
\def\@outputpage{%
\begingroup
\let\protect\noexpand
\@resetactivechars
\shipout\vbox{
\set@typeset@protect
\aftergroup \endgroup
\aftergroup \set@typeset@protect
\box\@outputbox
}%
}
\makeatother
\begin{document}
a
\end{document}
Auf Seite 334 finden Sie source2e.pdf
die Begründung, warum \let\protect\noexpand
hier der \aftergroup
Trick angewandt wird.