\部分格式

\部分格式

我正在尝试改变 \part 标题的方面。我的目标是达到这个方面:

在此处输入图片描述

以下是我目前所做的:

\documentclass[12pt,twoside,draft]{book}
\usepackage{fancyhdr}
\pagestyle{fancy}

\usepackage[T1]{fontenc}
\usepackage{librecaslon}


\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{titlesec}

\renewcommand{\thepart}{\arabic{part}}

\newcommand\encadrement[1][1cm]{%
    \tikz[overlay,remember picture,line width=0.3pt]
    \draw(-8.2mm,5.1mm) -- (109.8mm,5.1mm);%
    \tikz[overlay,remember picture,line width=0.3pt]
    \draw(-8.2mm,5.1mm) -- (-8.2mm,-192.9mm);%
}

\makeatletter
\def\@part[#1]#2{%
\encadrement[1cm]
\thispagestyle{empty}
\ifnum \c@secnumdepth >\m@ne
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
{\parindent \z@ 
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >\m@ne
\begin{center}
\begin{tikzpicture}[my node/.style={anchor=base,inner sep=0pt}]
\node[my node] (center) {\text{Livre} \thepart};
\draw($(center.base)+(-1.9cm,-1ex)$)     -- ($(center.base)+(+1.9cm,-1ex)$);
\end{tikzpicture}
\end{center}

\par\nobreak
\fi
\huge \bfseries #2
\markboth{}{}\par}
\newpage
\@afterheading}
\makeatother

结果如下:

在此处输入图片描述

如您所见,我的 \newpage 将标题移至页面中间。使用 \pagebreak 时,标题移至页面底部。并且,无需任何命令,标题就会被拆分到第一页和第二页之间。

有人知道如何解决这个问题吗?

顺便说一句,如果有人能解释这段代码,我将不胜感激!

\ifnum \c@secnumdepth >\m@ne
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
{\parindent \z@ 
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >\m@ne

多谢 !

答案1

关于以下代码的辅助问题的答案

\ifnum \c@secnumdepth >\m@ne
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
{\parindent \z@ 
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >\m@ne

它检查计数器(控制分区编号)的值是否secnumdepth大于或等于 0。如果小于 0,则不编号;\part如果大于或等于 0,则编号\part

答案2

我已经能够使用以下代码解决这个问题:

\newcommand\framethispage[1][1cm]{%
    \tikz[overlay,remember picture,line width=0.2pt]
    \draw([xshift=(#1),yshift=(-#1)]current page.north west) -- ([xshift=(#1),yshift=(#1)+2mm]current page.south west);%
    \tikz[overlay,remember picture,line width=0.2pt]
    \draw([xshift=(#1),yshift=(-#1)]current page.north west) -- ([xshift=(-#1)-2mm,yshift=(-#1)]current page.north east);%
}

然后使用 \vspace 调整标题位置。

相关内容