次のような最小限の文書で
\documentclass{scrartcl}
\pagestyle{headings}
\begin{document}
\section{Introduction}
\end{document}
以下のエラーが発生しますlatex filename.tex
! 追加の \else。 \@sect ...sname }{\scr@ds@tocentry }\fi \fi \else \def \@svsechd {#6{\hskip ... l.49 \section{はじめに}
問題がどこにあるのかを正確に特定するのを手伝ってくれる人はいますか?
- ドキュメントクラスをarticleに変更すると、正常に動作します
- \pagestyle{headings}を削除すると、問題なく動作します
- 見出しを空に変更すると正常に動作します
バージョン:
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
および KOMA スクリプト ( scrartcl.cls
)
%%% From File: $Id: scrkernel-version.dtx 1560 2013-12-19 07:13:30Z mjk $
答え1
加えてゴンサロの答えKOMA-Script バージョン 3.12 の既知のバグに遭遇しました。
参照(残念ながらドイツ語のみ)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.
これは、あなたが観察したエラーが、あるページからダウンロードできる実験バージョンで削除されていることを意味します。そのページは「experimentellen Release」という単語の後ろにリンクされていますが、これもドイツ語です。幸いなことに、Markus Kohm がこのページの英語版を作成しました。最新のKOMAスクリプトをTeX Live、MacTeX、MiKTeXで使用する。
この実験バージョンを使用しない場合は、Gonzalo が提案したように、(KOMA-Script) パッケージをロードしscrlayer-scrpage
てページスタイルを使用する必要があります。scrheadings
(私の考えでは、バージョン 3.12 では、 の内部コマンドを使用していない限り、 は下位互換性があるscrpage2
ため、パッケージ を使用する必要はもうありません。)scrlayer-scrpage
scrpage2
答え2
としてスペラビルの答え指摘するが、これはバグである。headings
ページスタイルすべきKOMA クラスで動作します。回避策としてはscrpage2
、パッケージをロードしてスタイルを変更することが考えられますuseheadings
。
\documentclass{scrartcl}
\usepackage{scrpage2}
\pagestyle{useheadings}
\begin{document}
\section{Introduction}
\end{document}
文書の206ページにはscrguien
次のように書かれています。
このパッケージは
scrpage2
、主に提供されているスタイルの使用や独自のスタイルの定義を目的としています。ただし、ドキュメント クラスによって提供されるスタイルに戻す必要がある場合もあります。これは を使用して行う必要があるように思われますが、これには、後述するコマンドとが期待どおりに機能しないという\pagestyle{headings}
欠点があります。このため、v\pagestyle{useheadings}` を使用して元のスタイルに戻す必要があります。これにより、手動および自動のランニング ヘッダーの両方に対して適切なページ スタイルが自動的に選択されます。\automark
\manualmark
答え3
を使用すると、headings
次のエラーが発生します。
! Extra \else.
\@sect ...sname }{\scr@ds@tocentry }\fi \fi \else
\def \@svsechd {#6{\hskip ...
l.6 \section{Introduction}
?
Speravir の回答で説明されているように、これはクラスの現在の (非実験的な) バージョンでのバグです。Gonzalo headings
Medina の回答の回避策よりも標準を使用したい場合は、次の修正を試してみてください。
定義を修正するheadings
次の再定義により、問題は解決されるようです。 マークされた行には、元の には含まれていないMODIFIED
余分な\fi
が含まれていますが、これは の他の使用には存在しません\MakeMarkcase
。修正により、その行が変更され、\fi
マクロの他の使用と合わせて が削除されます。
\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}
結果
答え4
すでに説明したように、これはKOMA 3.12
2013 年 12 月下旬から開発者に知られているバグであり、実験的なリリースで修正されています。1 月初旬に私自身もこのバグに遭遇したため、自分のソースにパッチを当てる必要がありました。以下は私のパッチです。
\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
アイデアとしては、インストールにKOMAscript
この問題が修正された次のリリースがあれば、パッチは何も実行されず (\ifx
テストによってバグのないリリースであることが検出されるため\sectionmark
)、パッチは何も実行されないため、レガシー ソースを再度いじる必要がなくなります。