テキストがどこにあるか (パッケージ .sty から) をチェックする必要があります。テキストが mainmatter セクションにある場合は、いくつかのヘッダーを含め\pagestyle{LL}
、そうでない場合は、\pagestyle{plain}
またはその他のヘッダーを含めます。構築\ifx\@mainmattertrue\pagestyle{LL}\else\pagestyle{plain}\fi
:
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{New}[2014/12/12]
\DeclareOption{LL}{\AtEndOfPackage{\llstyle}}
\ProcessOptions\relax
\RequirePackage{textcase}
\def\ps@LL{
%------------------Колонтитули---------------------
%------------------Верхні--------------------------
\renewcommand{\@evenhead}%
{\raisebox{0pt}[\headheight][0pt]{% начало блока
\vbox{\hbox to\textwidth{\strut
\small{\thepage\hfil\MakeUppercase{BlaBla}\hfil{GL}. \thechapter}}\hrule}}% конец блока
}% конец макроопределения
\renewcommand{\@oddhead}%
{\raisebox{0pt}[\headheight][0pt]{% начало блока
\vbox{\hbox to\textwidth{\strut
\small{{\S\hspace{1ex}}\thesection\hfil\MakeUppercase{Bla1}\hfil\thepage}}\hrule}}% конец блока
}% конец макроопределения
}
\def\@LLview{
\ifx\@mainmattertrue\pagestyle{LL}\else\pagestyle{plain}\fi
}
\def\llstyle
{
\@ifclassloaded{book}{\@LLview}{}
\@ifclassloaded{extbook}{\@LLview}{}
}
\endinput
動作しません
\documentclass[12pt,twoside]{book}
\usepackage[cp1251]{inputenc}
\usepackage[english]{babel}
\usepackage[LL]{New}
\usepackage{lipsum}
\begin{document}
\frontmatter
\chapter{Intro}
\lipsum[1-6]
\mainmatter
\chapter{One}
\lipsum[1-10]
\end{document}
なぜ?
答え1
クラスは条件book
を定義します\if@mainmatter
。
\if@mainmatter
<we are in the main matter>
\else
<we aren't in the main matter>
\fi
必要なコードのスキームです。例えば
\def\@LLview{%
\if@mainmatter
\pagestyle{LL}%
\else
\pagestyle{plain}%
\fi
}
このインデントスタイルは必須ではありませんが、便利だと思います。あなたのスタイルでは、
\def\@LLview{%
\if@mainmatter\pagestyle{LL}\else\pagestyle{plain}\fi
}
(%
最初の行の末尾のは必要)。
は最初は true に設定されていることに注意してください\if@mainmatter
。 コマンド\frontmatter
と は\backmatter
これを false に設定し、 は\mainmatter
これを true にリセットします。
コマンド\@mainmattertrue
は、条件が true を返すように設定するために使用され、同様の もあります\@mainmatterfalse
。