Fancyhdr - 仅获取自定义页面样式标题中的部分名称

Fancyhdr - 仅获取自定义页面样式标题中的部分名称

有很多问题需要处理fancyhdr,但没有一个对我有用……

我有article一个文档标题,标题中只显示部分名称,不显示子部分,不显示部分编号,只显示名称。为此,我创建了一个自定义页面样式(我的文档中有不同的页面样式),请参阅下面的 MWE。但无论我尝试什么,标题中仍然显示子部分,甚至包括其编号。为什么?

\documentclass{article}
    \newcommand{\maintitle}{MAIN TITLE}
    \newcommand{\docname}{My Document}
% tabular package
\usepackage{tabularx}
% header / footer
\usepackage{fancyhdr}
    \renewcommand{\sectionmark}[1]{\markright{#1}}
% define own pagestyle
\fancypagestyle{complete}{%
    \fancyhf{}%
    \lfoot{%
        \begin{tabularx}{\textwidth}{X X}
            \maintitle & Page~\thepage
        \end{tabularx}
    }
    \rhead{\docname~-~\rightmark}
}
% Let the madness begin...
\begin{document}
    \pagestyle{complete}
    \section{First Section}
        Blablubb ...
        \newpage
        \subsection{First Subsection}
            dumdidum ...
    \section{Second Section}
        Blablablubb ...
        \subsection{Second Subsection}
            dumdidumdidum ...
\end{document}

答案1

\subsection默认情况下也会设置右标记。如果子部分永远不应该出现在页眉中,您可以重新定义\subsectionmark为不执行任何操作:

\renewcommand\subsectionmark[1]{}

例子:

\documentclass{article}
    \newcommand{\maintitle}{MAIN TITLE}
    \newcommand{\docname}{My Document}
% tabular package
\usepackage{tabularx}
% header / footer
\usepackage{fancyhdr}
    \renewcommand{\sectionmark}[1]{\markright{#1}}
    \renewcommand{\subsectionmark}[1]{}% <- added
% define own pagestyle
\fancypagestyle{complete}{%
    \fancyhf{}%
    \fancyfoot[L]{%
        \begin{tabularx}{\textwidth}{X X}
            \maintitle & Page~\thepage
        \end{tabularx}
    }
    \fancyhead[R]{\docname~-~\rightmark}
}
% Let the madness begin...
\begin{document}
    \pagestyle{complete}
    \section{First Section}
        Blablubb ...
        \newpage
        \subsection{First Subsection}
            dumdidum ...
    \section{Second Section}
        Blablablubb ...
        \subsection{Second Subsection}
            dumdidumdidum ...
\end{document}

或者您可以使用左边的标记作为章节标题:

\renewcommand{\sectionmark}[1]{\markboth{#1}{}}% <- changed
\fancypagestyle{complete}{%
    ...
    \fancyhead[R]{\docname~-~\leftmark}% <- changed
}

例子:

\documentclass{article}
    \newcommand{\maintitle}{MAIN TITLE}
    \newcommand{\docname}{My Document}
% tabular package
\usepackage{tabularx}
% header / footer
\usepackage{fancyhdr}
    \renewcommand{\sectionmark}[1]{\markboth{#1}{}}
% define own pagestyle
\fancypagestyle{complete}{%
    \fancyhf{}%
    \fancyfoot[L]{%
        \begin{tabularx}{\textwidth}{X X}
            \maintitle & Page~\thepage
        \end{tabularx}
    }
    \fancyhead[R]{\docname~-~\leftmark}
}
% Let the madness begin...
\begin{document}
    \pagestyle{complete}
    \section{First Section}
        Blablubb ...
        \newpage
        \subsection{First Subsection}
            dumdidum ...
    \section{Second Section}
        Blablablubb ...
        \subsection{Second Subsection}
            dumdidumdidum ...
\end{document}

相关内容