Con un documento mínimo como
\documentclass{scrartcl}
\pagestyle{headings}
\begin{document}
\section{Introduction}
\end{document}
Recibo el siguiente error conlatex filename.tex
! Más \ más. \@sect ...nombre }{\scr@ds@tocentry }\fi \fi \else \def \@svsechd {#6{\hskip ... l.49 \section{Introducción}
¿Alguien puede ayudarme a identificar dónde podría estar el problema?
- Si cambio la clase de documento para que sea artículo, funciona bien
- Si elimino el \pagestyle{headings}, funciona bien
- Si cambio los títulos a vacíos, funciona bien.
Versiones:
pdfTeX 3.1415926-2.5-1.40.14 (TeX Live 2013/Arch Linux)
kpathsea version 6.1.1
...
Compiled with libpng 1.6.10; using libpng 1.6.10
Compiled with zlib 1.2.8; using zlib 1.2.8
Compiled with poppler version 0.24.5
y KOMA-Script ( scrartcl.cls
)
%%% From File: $Id: scrkernel-version.dtx 1560 2013-12-19 07:13:30Z mjk $
Respuesta1
Así como además dela respuesta de gonzalo. Te has topado con un error conocido de KOMA-Script versión 3.12.
Cfr. (por desgracia sólo en alemán)Bekannte Probleme und Änderungen en KOMA-Script 3.12:
scrartcl: […] Wenn man den Seitenstil headings aktiviert, wird man mit Fehlern wegen eines \fi zu viel bombadiert. Workaround: Paket scrlayer-scrpage (oder notfalls scrpage2) laden und Seitenstil scrheadings verwenden. Hinweis: Der Fehler ist in der experimentellen Release behoben.
Significa que el error que observó se eliminó en una versión experimental que puede descargar desde una página, que está vinculada detrás de las palabras "experimentellen Release", pero nuevamente está en alemán. Afortunadamente Markus Kohm creó para esta página un complemento en inglés:Usando el KOMA-Script más actual con TeX Live, MacTeX o MiKTeX.
Sin usar esta versión experimental debes cargar el paquete (KOMA-Script) scrlayer-scrpage
y usar el estilo de página scrheadings
, similar al sugerido por Gonzalo.(En mi opinión, con la versión 3.12 ya no es necesario usar el paquete scrpage2
porque scrlayer-scrpage
es compatible con versiones anteriores, siempre y cuando nunca hayas usado comandos internos de scrpage2
).
Respuesta2
ComoLa respuesta de Speravirseñala que esto es un error; el headings
estilo de la páginadeberíatrabajar con clases KOMA. Una posible solución es cargar el scrpage2
paquete y cambiar al useheadings
estilo:
\documentclass{scrartcl}
\usepackage{scrpage2}
\pagestyle{useheadings}
\begin{document}
\section{Introduction}
\end{document}
La página 206 del scrguien
documento menciona esto:
El paquete
scrpage2
está pensado principalmente para el uso de los estilos suministrados o para definir los propios estilos. Sin embargo, puede ser necesario volver también a un estilo proporcionado por la clase de documento. Podría parecer que esto debería hacerse con\pagestyle{headings}
, pero tiene la desventaja de que los comandos\automark
y\manualmark
, que veremos en breve, no funcionan como se esperaba. Por esta razón, uno debe volver a los estilos originales usando v\pagestyle{useheadings}`, que elige automáticamente los estilos de página correctos para los encabezados de ejecución manual y automática.
Respuesta3
El uso de headings
produce el siguiente error:
! Extra \else.
\@sect ...sname }{\scr@ds@tocentry }\fi \fi \else
\def \@svsechd {#6{\hskip ...
l.6 \section{Introduction}
?
Como se explica en la respuesta de Speravir, esto es un error en la versión actual (no experimental) de la clase. Si prefiere utilizar el estándar headings
en lugar de la solución alternativa en la respuesta de Gonzalo Medina, puede probar la siguiente solución.
Corrección de la definición deheadings
La siguiente redefinición parece resolver el problema. La línea marcada MODIFIED
contiene un extra \fi
en el original que no está presente en otros usos de \MakeMarkcase
. La solución modifica esa línea para eliminarla \fi
en línea con otros usos de la macro.
\documentclass{scrartcl}
\usepackage{kantlipsum}
\makeatletter
\renewcommand*{\ps@headings}{\let\@mkboth\markboth
\renewcommand*{\@evenhead}{%
\set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
\hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}%
\if@hsl \vskip 1.5\p@ \hrule \fi}}}%
\renewcommand*{\@oddhead}{%
\set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
\hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark
\if@twoside\else\hfil\fi}}%
\if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}%
\renewcommand*{\@evenfoot}{%
\set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
\if@fsl \hrule \vskip 3\p@ \fi
\hb@xt@ \@tempdima{{\pagemark\hfil}}}}}%
\renewcommand*{\@oddfoot}{%
\set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
\if@fsl \hrule \vskip 3\p@ \fi
\hb@xt@ \@tempdima{{\hfil\pagemark
\if@twoside\else\hfil\fi}}}}\hss}%
\renewcommand*{\sectionmark}[1]{%
\if@twoside\expandafter\markboth\else\expandafter\markright\fi
{\MakeMarkcase{\ifnumbered{section}{\sectionmarkformat}{}##1}}{}}% MODIFIED
\renewcommand*{\subsectionmark}[1]{%
\if@twoside
\markright{%
\MakeMarkcase{\ifnumbered{subsection}{\subsectionmarkformat}{}##1}%
}%
\fi
}%
}%
\makeatother
\pagestyle{headings}
\begin{document}
\section{Introduction}
\kant[1]
\subsection{Subsection}
\kant[2]
\section{Another Section}
\kant[3]
\section{Yet Another Section}
\kant[4]
\subsection{Another Subsection}
\kant[5]
\end{document}
El resultado
Respuesta4
Como ya se ha explicado, este es un error que KOMA 3.12
los desarrolladores conocen desde finales de diciembre de 2013 y se solucionó en una versión experimental. Como me encontré con el error a principios de enero, tuve que parchearlo para mis propias fuentes y aquí está mi parche:
\pagestyle{headings}% must be before the patch
\makeatletter
\def\buggysectionmark #1{% KOMA 3.12 as released to CTAN December 2013
\if@twoside\expandafter\markboth\else\expandafter\markright\fi
{\MakeMarkcase{\ifnumbered{section}{\sectionmarkformat\fi}{}#1}}{}}
\ifx\buggysectionmark\sectionmark
\def\sectionmark #1{%
\if@twoside\expandafter\markboth\else\expandafter\markright\fi
{\MakeMarkcase{\ifnumbered{section}{\sectionmarkformat}{}#1}}{}}
\fi
\makeatother
La idea es que una vez que su instalación tenga la próxima versión en KOMAscript
la que se haya solucionado este problema, el parche no hará nada (porque la \ifx
prueba detectará que \sectionmark
ya no es el que tiene errores) y el parche no hará nada que usted no tenga. para jugar de nuevo con sus fuentes heredadas.