Com um documento mínimo como
\documentclass{scrartcl}
\pagestyle{headings}
\begin{document}
\section{Introduction}
\end{document}
Estou recebendo o seguinte erro comlatex filename.tex
! Extra \outro. \@sect ...sname }{\scr@ds@tocentry }\fi \fi \else \def \@svsechd {#6{\hskip ... 1.49 \seção{Introdução}
Alguém pode ajudar a identificar onde pode estar o problema?
- Se eu alterar a classe do documento para artigo, tudo funcionará bem
- Se eu remover o \pagestyle{títulos}, tudo funcionará bem
- Se eu mudar os títulos para vazios, funciona bem
Versões:
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
e KOMA-Script ( scrartcl.cls
)
%%% From File: $Id: scrkernel-version.dtx 1560 2013-12-19 07:13:30Z mjk $
Responder1
Assim como além deA resposta de Gonçalo. Você encontrou um bug conhecido do KOMA-Script versão 3.12.
Cf. (infelizmente, apenas em alemão)Solução de problemas e soluções no 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.
Isso significa que o erro que você observou foi removido em uma versão experimental que você pode baixar de uma página, cujo link está atrás das palavras “experimentellen Release”, mas está novamente em alemão. Felizmente Markus Kohm criou para esta página um companheiro em inglês:Usando o KOMA-Script mais atual com TeX Live, MacTeX ou MiKTeX.
Sem usar esta versão experimental você deve carregar o pacote (KOMA-Script) scrlayer-scrpage
e usar o pagestyle scrheadings
, semelhante ao sugerido por Gonzalo.(A meu ver, com a versão 3.12 não há mais necessidade de usar package scrpage2
, porque scrlayer-scrpage
é compatível com versões anteriores, desde que você nunca tenha usado comandos internos de scrpage2
.)
Responder2
ComoA resposta do Speraviraponta, isso é um bug; o headings
estilo da páginadevetrabalhar com aulas KOMA. Uma possível solução é carregar o scrpage2
pacote e mudar para useheadings
o estilo:
\documentclass{scrartcl}
\usepackage{scrpage2}
\pagestyle{useheadings}
\begin{document}
\section{Introduction}
\end{document}
A página 206 do scrguien
documento menciona isso:
O pacote
scrpage2
destina-se principalmente ao uso dos estilos fornecidos ou à definição de estilos próprios. Contudo, pode ser necessário voltar também para um estilo fornecido pela classe de documento. Pode parecer que isso deveria ser feito com\pagestyle{headings}
, mas tem a desvantagem de que os comandos\automark
e\manualmark
, que serão discutidos em breve, não funcionam como esperado. Por esta razão, deve-se voltar aos estilos originais usando v\pagestyle{useheadings}`, que escolhe automaticamente os estilos de página corretos para títulos de execução manual e automática.
Responder3
O uso de headings
produz o seguinte erro:
! Extra \else.
\@sect ...sname }{\scr@ds@tocentry }\fi \fi \else
\def \@svsechd {#6{\hskip ...
l.6 \section{Introduction}
?
Conforme explicado na resposta do Speravir, este é um bug na versão atual (não experimental) da classe. Se você preferir usar o padrão headings
em vez da solução alternativa na resposta de Gonzalo Medina, tente a seguinte correção.
Corrigindo a definição deheadings
A seguinte redefinição parece resolver o problema. A linha marcada MODIFIED
contém um extra \fi
no original que não está presente em outros usos de \MakeMarkcase
. A correção modifica essa linha para remover a \fi
linha com outros usos da 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}
O resultado
Responder4
Como já foi explicado, este é um bug KOMA 3.12
conhecido pelos desenvolvedores desde o final de dezembro de 2013 e corrigido em uma versão experimental. Como encontrei o bug no início de janeiro, tive que corrigi-lo para minhas próprias fontes e aqui está meu patch:
\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
A ideia é que assim que sua instalação tiver a próxima versão KOMAscript
onde esse problema terá sido corrigido, o patch não fará nada (porque o \ifx
teste detectará que \sectionmark
não é mais o bugado) e o patch não fará nada que você não tenha para mexer novamente com suas fontes legadas.