Estoy intentando escribir un archivo utilizando el archivo de clase de documento proporcionado por la revista Semantics and Pragmatics enhttp://info.semprag.org/style. Sin embargo, ni siquiera puedo compilar la plantilla de ejemplo que proporcionan... Siempre que intento ejecutarla LaTeX
, aparece el siguiente error:
ERROR: Undefined control sequence.
--- TeX said ---
./sp.cls:107:
Undefined control sequence.
<recently read> \DeclareUnicodeCharacter
l.107 \DeclareUnicodeCharacter
{2011}{\mbox{-}\nobreak\hskip0pt}
Lo intenté con auctex
y en overleaf.com pero el error siguió siendo el mismo.
- La "plantilla vacía":http://info.semprag.org/examples/sp-template.tex
- El archivo de clase de documento:https://raw.githubusercontent.com/semprag/tex/master/sp.cls
Curiosamente, no pude encontrar nada relacionado con el error de "secuencia de control indefinida" causado por \DeclareUnicodeCharacter
buscar en Google. Esto no tiene sentido para mí ya que aparentemente los motores TeX simplemente piensan que \DeclareUnicodeCharacter
no es un comando válido en absoluto, mientras que el archivo de clase de documento, así como varios ejemplos en Internet, simplemente usan este comando directamente sin ningún problema. ¿Hay algún problema con el archivo de clase de documento cuando se usa con la versión más reciente del motor TeX o configuré mal algo?
EDITAR: El registro de compilación:https://www.dropbox.com/s/49mkenzngua0we0/sp-template.log?dl=0
Respuesta1
La macro \DeclareUnicodeCharacter
está definida en el paquete.inputenc
cuando se carga con la utf8
codificación. Normalmente necesitas la siguiente línea antes de usar \DeclareUnicodeCharacter
:
\usepackage[utf8]{inputenc}
Sin embargo, en este caso, sp.cls
ya contiene la línea \RequirePackage[utf8]{inputenc}
103,antesse utiliza \DeclareUnicodeCharacter
en la línea 107, por lo que debería poder compilar sp-template.tex
incluso pdflatex
sin agregar explícitamente la línea.
Sin embargo, si compila con los motores xelatex
o lualatex
(que están basados en Unicode y por defecto son utf8
), entonces el inputenc
paquete se ignora y (solo) se imprime una advertencia en el registro de errores:
% 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}
?
(Tenga en cuenta la línea que comienza con "Advertencia de entrada de paquete". En mi opinión, tiene sentido que esto sea un error, pero probablemente los autores inputenc
optaron por convertirlo en una advertencia porque muchos archivos escritos con inputenc
tienen la posibilidad de funcionar en formato Unicode. motores si inputenc
simplemente no hace nada.)
Entonces necesitas
- compila tu archivo con el motor pdfTeX, o
Si deseas compilar con XeTeX/LuaTeX, hackea
sp.cls
para eliminar la siguiente línea:\DeclareUnicodeCharacter{2011}{\mbox{-}\nobreak\hskip0pt}
(tenga en cuenta que se agregó para tratar conun problema de separación de palabrasque es poco probable que tenga con un motor basado en Unicode ya que presumiblemente nadie definiría la separación de palabras después de U+2011) y también estas líneas que suelen
\ifpdf
significar "salida no PostScript" pero desafortunadamente excluye XeTeXpero no LuaTeX(Está bien eliminarlos porquebreakurl
no es necesario):% If the author is using postscript (discouraged), then load the % breakurl package, else don't load it. \RequirePackage{ifpdf} \ifpdf \else \RequirePackage{breakurl} \fi
(Tenga en cuenta que si envía el .tex
archivo fuente a otra persona, como la revista, entonces no debe elegir la última opción: y, en general, si envía artículos a revistas, no debe alterar sus archivos de estilo. . Pero si no vas a enviar el archivo a nadie y simplemente lo vas a componer al estilo del diario para tu propia diversión, puedes hacer lo que quieras.)