我正在尝试改变 \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 调整标题位置。