这是我第一次使用 Latex,用来写论文。
我将我的工作组织为一个主文件,并使用 调用其他几个文件subfiles
,因为我喜欢在编写单个章节时对其进行编译。但是,以这种方式生成的章节与主文件的布局不同(这只是最终版本的问题,我必须将其发送给我的主管)。我解决了这个问题,编译了主文件,其中包含所有注释代码,但编写我感兴趣的章节所需的代码,并进行了更改\setcounter{chapter}{}
以获得正确的编号。
它工作正常,但我发现如果我\pagestyle{plain}
在下面的代码中注释,包fancyhdr
不会应用我定义的页面样式。有人能解释一下为什么吗?我预计,自从我输入\pagestyle{MyStyle}
后,这个命令后面的页面样式应该是MyStyle
。
\documentclass[12pt,twoside,openright]{report}
\usepackage[english]{babel}
% Page layout
\usepackage[a4paper,
inner=41mm,
outer=32mm,
top=43mm,
bottom=44mm,
headheight=20pt,
headsep=\baselineskip,
bindingoffset=0mm]{geometry}
\usepackage{emptypage}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\usepackage{lipsum}
\usepackage{subfiles}
% Page style
\usepackage{fancyhdr}
% Defining MyStyle
\fancypagestyle{MyStyle}{%
\fancyhead{}
\fancyhead[RO]{\rightmark \ \ {\vrule height 13pt width 1pt} \ \textbf{\thepage}}
\fancyhead[LE]{\textbf{\thepage} \ {\vrule height 13pt width 1pt} \ \leftmark}
\fancyfoot{}
\fancyfoot[RO,LE]{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\chaptermark}[1]{\markboth{\thechapter. \ \textsc{##1}}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ {##1}}}
}
% Redefining the PLAIN style
\fancypagestyle{plain}{%
\fancyhead{}
\fancyhead[RO]{{\vrule height 13pt width 1pt} \ \textbf{\thepage}}
\fancyhead[LE]{\textbf{\thepage} \ {\vrule height 13pt width 1pt}}
\fancyfoot{}
\fancyfoot[RO,LE]{}
\renewcommand{\headrulewidth}{0pt}
}
\begin{document}
\pagenumbering{Roman}
\pagestyle{plain}
%Abstract
%Table of Contents
%Lists of Figures
%Lists of Tables
\clearpage
\pagenumbering{arabic}
\pagestyle{MyStyle}
% Previous chapters...
\setcounter{chapter}{3}
\chapter{Chapter Title}
\section{First section title}
\lipsum
\section{Second section title}
\lipsum
% Following chapters...
\end{document}
答案1
摘自包装手册第 9 节“有关 LATEX 标记的独家新闻”(第 9 页):
您可以通过重新定义 \chaptermark、\sectionmark 和 \subsectionmark 命令来影响章节、章节和小节信息(仅其中两个!)的显示方式。您必须将重新定义放在第一次调用 \pagestyle{fancy} 之后,因为这会设置默认值。
更具体地说,第一次调用 \ps@fancy 会设置默认值。
的定义\fancypagestyle
(来自fancyhdr.sty
):
\newcommand{\fancypagestyle}[2]{%
\@namedef{ps@#1}{\let\fancy@gbl\relax#2\relax\ps@fancy}}
请注意,\fancypagestyle{MyStyle}
直到第一次调用\pagestyle{MyStyle}
完成才会执行。因此,如果\pagestyle{MyStyle}
是 fancyhdr pagestyle 的第一次调用,那么它也是 的第一次调用。因此,第二个参数中的和的\ps@fancy
重新定义将被默认值覆盖。但是,如果您之前调用过其他 fancyhdr pagestyle或再次使用,它就可以正常工作。\chaptermark
\sectionmark
\fancypagestyle
MyStyle
\pagestyle{MyStyle}
\documentclass[12pt,twoside,openright]{report}
\usepackage{emptypage}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
% Page style
\usepackage{fancyhdr}
\pagestyle{fancy}% <- !
% Defining MyStyle
\fancypagestyle{MyStyle}{%
\fancyhead{}
\fancyhead[RO]{\rightmark \ \ {\vrule height 13pt width 1pt} \ \textbf{\thepage}}
\fancyhead[LE]{\textbf{\thepage} \ {\vrule height 13pt width 1pt} \ \leftmark}
\fancyfoot{}
\fancyfoot[RO,LE]{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\chaptermark}[1]{\markboth{\thechapter. \ \textsc{##1}}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ {##1}}}
}
% Redefining the PLAIN style
\fancypagestyle{plain}{%
\fancyhead{}
\fancyhead[RO]{{\vrule height 13pt width 1pt} \ \textbf{\thepage}}
\fancyhead[LE]{\textbf{\thepage} \ {\vrule height 13pt width 1pt}}
\fancyfoot{}
\fancyfoot[RO,LE]{}
\renewcommand{\headrulewidth}{0pt}
}
\begin{document}
\pagestyle{MyStyle}
% Previous chapters...
\setcounter{chapter}{3}
\chapter{Chapter Title}
\section{First section title}
\lipsum
\section{Second section title}
\lipsum
% Following chapters...
\end{document}
也可以使用
\documentclass[12pt,twoside,openright]{report}
\usepackage{emptypage}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
% Page style
\usepackage{fancyhdr}
% Defining MyStyle
\fancypagestyle{MyStyle}{%
\fancyhead{}
\fancyhead[RO]{\rightmark \ \ {\vrule height 13pt width 1pt} \ \textbf{\thepage}}
\fancyhead[LE]{\textbf{\thepage} \ {\vrule height 13pt width 1pt} \ \leftmark}
\fancyfoot{}
\fancyfoot[RO,LE]{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\chaptermark}[1]{\markboth{\thechapter. \ \textsc{##1}}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ {##1}}}
}
% Redefining the PLAIN style
\fancypagestyle{plain}{%
\fancyhead{}
\fancyhead[RO]{{\vrule height 13pt width 1pt} \ \textbf{\thepage}}
\fancyhead[LE]{\textbf{\thepage} \ {\vrule height 13pt width 1pt}}
\fancyfoot{}
\fancyfoot[RO,LE]{}
\renewcommand{\headrulewidth}{0pt}
}
\begin{document}
\pagestyle{MyStyle}% or \pagestyle{fancy} or \pagestyle{plain}
\pagestyle{MyStyle}
% Previous chapters...
\setcounter{chapter}{3}
\chapter{Chapter Title}
\section{First section title}
\lipsum
\section{Second section title}
\lipsum
% Following chapters...
\end{document}
请注意,仅当被重新定义\pagestyle{plain}\pagestyle{MyStyle}
时才有效。plain
\fancypagestyle{plain}{...}
另外这里还有另一个建议使用scrlayer-scrpage
\documentclass[12pt,twoside,openright]{report}
\usepackage{emptypage}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
% Page style
\usepackage[automark,markcase=noupper]{scrlayer-scrpage}
\addtokomafont{pagehead}{\normalfont}
\addtokomafont{pagenumber}{\bfseries}
\providepairofpagestyles{MyStyle}{
\rohead%
[{\vrule height 13pt width 1pt} \ \pagemark]%
{\headmark \ \ {\vrule height 13pt width 1pt} \ \pagemark}
\lehead%
[\pagemark \ {\vrule height 13pt width 1pt}]%
{\pagemark \ {\vrule height 13pt width 1pt} \ \scshape{\headmark}}
\renewcommand\chaptermarkformat{\thechapter. \ }
}
\DeclarePageStyleAlias{plain}{plain.MyStyle}
\begin{document}
\pagestyle{MyStyle}
% Previous chapters...
\setcounter{chapter}{3}
\chapter{Chapter Title}
\section{First section title}
\lipsum
\section{Second section title}
\lipsum
% Following chapters...
\end{document}