如何在同一頁開始章節並保留頁首和頁尾(已有可用程式碼)

如何在同一頁開始章節並保留頁首和頁尾(已有可用程式碼)

設定

目前,這是我的第一頁程式碼和專案的整體佈局:

\documentclass[12pt, oneside]{book}

\usepackage{sectsty,fancyhdr}
\sectionfont{\LARGE\bfseries}
\usepackage{geometry}

\usepackage{lipsum}%remove 


% *******************************Margin Settings*******************************

\geometry{% margin settings, has to go first before \pagestyle{}
    paper=a4paper, 
    inner=2.5cm, % Inner margin
    outer=2.5cm, % Outer margin
    bindingoffset=0.0cm, % Binding offset
    top=2.5cm, % Top margin
    bottom=2.5cm, % Bottom margin
    headsep=3.5mm,% controles header  
    footskip=6.4mm,% controles footer
    %showframe,% show how the type block is set on the page
}

% ***************************Header/Footer Settings****************************

\sectionfont{\LARGE\bfseries}%this will keep the formattings of sections
\pagestyle{fancy}
\fancyhf{} % sets all head and foot elements empty.
\rhead{} % right side of upper footer 
\lhead{Project title} %left side 
\renewcommand{\headrulewidth}{2.0pt} % Width of the top line
\renewcommand{\footrulewidth}{1.0pt} % Bottom line 
\setlength{\headheight}{14.5pt}%used to remove the \fancyhf{} \headheight error
\rfoot{Page \thepage} % vice versa with the page number 
\lfoot{\leftmark} % Should show the name of section 

\makeatletter
\renewcommand{\sectionmark}[1]{%this avoids the \makecaptical of footers
  \markboth{\ifnum \c@secnumdepth>\z@ %this allowes symbols in foorters
      \thesection\hskip 1em\relax
    \fi #1}{}}
\makeatother


%****************************ADD NEW CODE HERE**********************



%***************************Title************************************
\newcommand{\mytitle}{
\begin{center}
{\Huge{\textbf{Project of...}}} 
\end{center}

\begin{center}
\textsc{\Large My name}\\[0.5cm] 
\end{center}

\begin{center}
{\large My ID number}\\[0.5cm] 
\end{center}
}

%------------------------------------------------------------------

% Begin 

%------------------------------------------------------------------

\begin{document}

\mytitle
\chapter{chapter 1}
\section{section 1.1}
\subsection{subection 1.1.1}
  \lipsum%remove

\chapter{chapter 2}
\section{section 2.1}
\subsection{subection 2.1.1}
  \lipsum%remove

%------------------------------------------------------------------

% end 

%------------------------------------------------------------------ 


\end{document}  

問題

這是“代碼 1”(將添加到上面“新代碼”部分的序言中):

\fancypagestyle{chapterstart}{% 1st page of the chapters, i.e. no new page for chapter
}
\makeatletter

\def\chapter{
\pagestyle{chapterstart}
\secdef\@chapter\@schapter}

\renewcommand\thesection{\@arabic\c@section} 

\makeatother

這段程式碼允許我在同一頁上開始一個新的章節,並且它也將我的頁首和頁腳保持在同一頁上。但是,這會重置每章的節號。例如,「第 2 章第 2.1 節」將改為「第 2 章第 1.1 節」。

這是“代碼 2”(與之前一樣在上面添加):

\usepackage{etoolbox}
\makeatletter
\patchcmd{\chapter}{\if@openright\cleardoublepage\else\clearpage\fi}{}{}{}
\makeatother

此程式碼允許我在同一頁上開始一個章節,並保留分段的原始編號,例如「第 2 章,第 2.1 節」將保留為「第 2 章,第 2.1 節」。但是我的頁首和頁尾不會包含在同一頁上

目標

如何組合「代碼 1」和「代碼 2」以允許我:在同一頁上開始新章節,將頁首和頁尾保留在新章節頁面上,並保留章節編號的格式。

答案1

代碼 1 可以在沒有\renewcommand\thesection{\@arabic\c@section}.這裡省略了章節號(原文是\thechapter.\@arabic\c@section)。

但有一個缺點,它沒有設置\@afterindentfalse,這會導致普通文本的章節標題後面的第一段縮排。

該線\pagestyle{chapterstart}不是必需的。原\chapter\thispagestyle{plain}。如果沒有這個,頁面樣式就不會改變。

在程式碼 2 中,\chapter使用 進行更改\patchcmd,其優點是,如果命令更改並且無法再進行修補,則可以發出警告或錯誤(最後一個參數,程式碼中的範例)。

\documentclass[12pt, oneside]{book}

\usepackage{sectsty,fancyhdr}
\sectionfont{\LARGE\bfseries}
\usepackage{geometry}

\usepackage{lipsum}%remove 


% *******************************Margin Settings*******************************

\geometry{% margin settings, has to go first before \pagestyle{}
    paper=a4paper, 
    inner=2.5cm, % Inner margin
    outer=2.5cm, % Outer margin
    bindingoffset=0.0cm, % Binding offset
    top=2.5cm, % Top margin
    bottom=2.5cm, % Bottom margin
    headsep=3.5mm,% controles header  
    footskip=6.4mm,% controles footer
    %showframe,% show how the type block is set on the page
}

% ***************************Header/Footer Settings****************************

\sectionfont{\LARGE\bfseries}%this will keep the formattings of sections
\pagestyle{fancy}
\fancyhf{} % sets all head and foot elements empty.
\rhead{} % right side of upper footer 
\lhead{Project title} %left side 
\renewcommand{\headrulewidth}{2.0pt} % Width of the top line
\renewcommand{\footrulewidth}{1.0pt} % Bottom line 
\setlength{\headheight}{14.5pt}%used to remove the \fancyhf{} \headheight error
\rfoot{Page \thepage} % vice versa with the page number 
\lfoot{\leftmark} % Should show the name of section 

\makeatletter
\renewcommand{\sectionmark}[1]{%this avoids the \makecaptical of footers
  \markboth{\ifnum \c@secnumdepth>\z@ %this allowes symbols in foorters
      \thesection\hskip 1em\relax
    \fi #1}{}}
\makeatother


%****************************ADD NEW CODE HERE**********************



%***************************Title************************************
\newcommand{\mytitle}{
\begin{center}
{\Huge{\textbf{Project of...}}} 
\end{center}

\begin{center}
\textsc{\Large My name}\\[0.5cm] 
\end{center}

\begin{center}
{\large My ID number}\\[0.5cm] 
\end{center}
}

%------------------------------------------------------------------
% Code 2
\usepackage{etoolbox}
\makeatletter
% no new page for \chapter
\patchcmd{\chapter}{\if@openright\cleardoublepage\else\clearpage\fi}{}{}{}
% don't change the pagestyle
\patchcmd{\chapter}{\thispagestyle{plain}}{}{}{%
    % example for a warning, 'Package' in text necessary to make TexStudio show it.
    \GenericWarning{(preamble)\@spaces\@spaces\@spaces\@spaces}{Package preamble Warning: patching \string\chapter\space did not work.}}
}
% allow floats on top of the page with a new chapter
\patchcmd{\chapter}{\global\@topnum\z@}{}{}{}
% if not commented out, first paragraph will be indented
%\patchcmd{\chapter}{\@afterindentfalse}{}{}{}
%\makeatother

%------------------------------------------------------------------

% Begin 

%------------------------------------------------------------------

\begin{document}

\mytitle
\chapter{chapter 1}
\section{section 1.1}
\subsection{subection 1.1.1}
  \lipsum%remove

\chapter{chapter 2}
\section{section 2.1}
\subsection{subection 2.1.1}
  \lipsum%remove

%------------------------------------------------------------------

% end 

%------------------------------------------------------------------ 


\end{document}  

相關內容