Undefinierter Steuersequenzfehler bei \DeclareUnicodeCharacter

Undefinierter Steuersequenzfehler bei \DeclareUnicodeCharacter

Ich versuche, eine Datei mit der Dokumentklassendatei zu schreiben, die von der Zeitschrift Semantics and Pragmatics bereitgestellt wird unterhttp://info.semprag.org/style. Allerdings kann ich die bereitgestellte Beispielvorlage nicht einmal kompilieren ... Immer wenn ich versuche, LaTeXsie auszuführen, erhalte ich die folgende Fehlermeldung:

ERROR: Undefined control sequence.

--- TeX said ---
./sp.cls:107:
Undefined control sequence.
<recently read> \DeclareUnicodeCharacter 

l.107 \DeclareUnicodeCharacter
                              {2011}{\mbox{-}\nobreak\hskip0pt}

Ich habe es sowohl mit auctexals auch auf overleaf.com versucht, aber der Fehler blieb derselbe.

Seltsamerweise konnte ich beim Googeln nichts zum Fehler „undefinierte Steuersequenz“ finden \DeclareUnicodeCharacter. Das ergibt für mich keinen Sinn, da die TeX-Engines anscheinend einfach denken, dass es sich \DeclareUnicodeCharacterüberhaupt nicht um einen gültigen Befehl handelt, während die Dokumentklassendatei sowie verschiedene Beispiele im Internet diesen Befehl direkt und ohne Probleme verwenden. Stimmt etwas mit der Dokumentklassendatei nicht, wenn sie mit der neuesten Version der TeX-Engine verwendet wird, oder habe ich etwas falsch konfiguriert?


BEARBEITEN: Das Kompilierungsprotokoll:https://www.dropbox.com/s/49mkenzngua0we0/sp-template.log?dl=0

Antwort1

Das Makro \DeclareUnicodeCharacterist im Paket definiertinputencbeim Laden mit der utf8KodierungNormalerweise benötigen Sie daher vor der Verwendung die folgende Zeile \DeclareUnicodeCharacter:

\usepackage[utf8]{inputenc}

In diesem Fall sp.clsenthält das jedoch bereits die Zeile \RequirePackage[utf8]{inputenc}in Zeile 103,VorEs wird \DeclareUnicodeCharacterin Zeile 107 verwendet, daher sollten Sie in der Lage sein, sp-template.texdamit zu kompilieren pdflatex, auch ohne die Zeile explizit hinzuzufügen.

Jedochxelatex, wenn Sie mit den Engines oder kompilieren lualatex(die Unicode-basiert sind und standardmäßig verwenden utf8), wird das inputencPaket ignoriert und (nur) eine Warnung in das Fehlerprotokoll gedruckt:

% xelatex sp-template.tex
This is XeTeX, Version 3.14159265-2.6-0.99998 (TeX Live 2017) (preloaded format=xelatex)
 restricted \write18 enabled.
entering extended mode
(./sp-template.tex
LaTeX2e <2017-04-15>
Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
(./sp.cls
Document Class: sp 2015/01/04 v.3.0 Class for Semantics & Pragmatics
(/usr/local/texlive/2017/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/local/texlive/2017/texmf-dist/tex/latex/base/size12.clo)) (/usr/local/texlive/2017/texmf-dist/tex/latex/stmaryrd/stmaryrd.sty) (/usr/local/texlive/2017/texmf-dist/tex/latex/base/textcomp.sty (/usr/local/texlive/2017/texmf-dist/tex/latex/base/ts1enc.def)) (/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/amssymb.sty (/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/usr/local/texlive/2017/texmf-dist/tex/latex/base/fontenc.sty (/usr/local/texlive/2017/texmf-dist/tex/latex/base/t1enc.def) (/usr/local/texlive/2017/texmf-dist/tex/latex/lm/t1lmr.fd)) (/usr/local/texlive/2017/texmf-dist/tex/latex/psnfss/mathptmx.sty) (/usr/local/texlive/2017/texmf-dist/tex/latex/base/inputenc.sty

Package inputenc Warning: inputenc package ignored with utf8 based engines.

)
! Undefined control sequence.
<recently read> \DeclareUnicodeCharacter 

l.107 \DeclareUnicodeCharacter
                              {2011}{\mbox{-}\nobreak\hskip0pt}
? 

(Beachten Sie die Zeile, die mit „Package inputenc warning“ beginnt. Meiner Meinung nach ist es sinnvoll, dass dies stattdessen ein Fehler ist, aber wahrscheinlich haben die Autoren von sich inputencentschieden, daraus eine Warnung zu machen, weil viele mit geschriebene Dateien inputencmöglicherweise auf Unicode-basierten Engines funktionieren, wenn inputenceinfach nichts passiert.)

Sie müssen also entweder

  1. Kompilieren Sie Ihre Datei mit der pdfTeX-Engine, oder
  2. wenn Sie mit XeTeX/LuaTeX kompilieren möchten, sp.clsentfernen Sie die folgende Zeile:

    \DeclareUnicodeCharacter{2011}{\mbox{-}\nobreak\hskip0pt}
    

    (Beachten Sie, dass es hinzugefügt wurde, umein Silbentrennungsproblemwas bei einer Unicode-basierten Engine wahrscheinlich nicht der Fall ist, da vermutlich niemand die Silbentrennung nach U+2011 definieren würde) und auch diese Zeilen, die normalerweise \ifpdf„Nicht-PostScript-Ausgabe“ bedeuten, aber leider XeTeX ausschließenaber nicht LuaTeX(Sie können entfernt werden, weilbreakurlwird nicht benötigt):

    % If the author is using postscript (discouraged), then load the
    % breakurl package, else don't load it.
    \RequirePackage{ifpdf}
    \ifpdf
    \else
      \RequirePackage{breakurl}
    \fi
    

(Beachten Sie, dass Sie die letztere Option nicht wählen sollten, wenn Sie die Quelldatei an jemand anderen senden .tex, z. B. an die Zeitschrift. Und wenn Sie Artikel an Zeitschriften senden, sollten Sie deren Stildateien im Allgemeinen nicht verändern. Wenn Sie die Datei jedoch an niemanden senden und sie nur zu Ihrem eigenen Vergnügen im Stil der Zeitschrift setzen, können Sie tun, was Sie wollen.)

verwandte Informationen