檢查主要事項

檢查主要事項

我需要檢查文字(來自套件 .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
    }

%第一行末尾的需要)。

請注意,\if@mainmatter最初設定為 true。命令\frontmatter並將\backmatter其設為 false,同時\mainmatter將其重設為 true。

\@mainmattertrue命令用於設定條件返回 true,還有類似的\@mainmatterfalse.

相關內容