自定义相对于页边距的垂直缩进

自定义相对于页边距的垂直缩进

我使用 titletoc\titlesec 来排版一本书。

\documentclass[a4paper]{book}
\pdfoutput=1  %For postig in ArXiv.org
\usepackage{textcase}

\usepackage[14pt]{extsizes}
\renewcommand{\baselinestretch}{1}
\usepackage{color}
\usepackage{indentfirst}
\usepackage{microtype}
\usepackage{indentfirst}

\makeatletter
\renewcommand{\@evenhead}{}
\renewcommand{\@oddhead}{}
\renewcommand{\@evenfoot}{\centerline\thepage}
\renewcommand{\@oddfoot}{\centerline\thepage}
\makeatother

\usepackage{geometry}
\geometry{top=2cm} %поле сверху
\geometry{bottom=2.5cm} %поле снизу
\geometry{left=2.5cm} %поле справа
\geometry{right=2cm} %поле слева
\geometry{bindingoffset=0cm}


\usepackage[breaklinks, pdfpagelabels,linktoc=all, colorlinks=true,bookmarks,bookmarksnumbered=true]{hyperref}



%---------------SECTIONS TYPOS---------------
\usepackage{titlesec,titletoc,chngcntr}
\let\cleardoublepage\clearpage

    \titleformat{\chapter}[display]
    {\vspace*{-5em}\Large}
    {\titleline[l]{\textls[200]{\MakeTextUppercase{\chaptertitlename}}\ \thechapter}\vspace{6pt}\titlerule[.8pt]}
    {\dimexpr-\baselineskip+6pt\relax}
    {\bfseries\MakeUppercase}


    \titleformat{\section}[block]
    {\bfseries}
    {\S\ \thesection.}
    {\fontdimen2\font}
    {}

    \titlecontents{chapter}[0pt]
    {}
    {\textls[200]{\chaptername} \thecontentslabel.\ \bfseries}
    {}
    {\titlerule*[6pt]{.}\contentspage}
    %[\addvspace{3pt}]

    \titlecontents{section}[1.5em]
    {}
    {\S\ \makebox[1.5em][l]{\thecontentslabel.}}
    {}
    {\titlerule*[6pt]{.}\contentspage}

    \makeatletter
    \renewcommand\frontmatter{\cleardoublepage\@mainmatterfalse}
    \renewcommand\mainmatter{\cleardoublepage\@mainmattertrue}
    \makeatother
    \renewcommand{\thechapter}{\Roman{chapter}}
    \counterwithout{section}{chapter}

%---------------TOC typeseting---------------

\let\origtableofcontents\tableofcontents
\renewcommand{\tableofcontents}{%
    \begingroup 
    \titleformat{\chapter}[display]
    {\Large}
    {\titleline[l]{\textls[200]{\MakeTextUppercase{\chaptertitlename}}\ \thechapter}\vspace{6pt}\titlerule[.8pt]}
    {\dimexpr-\baselineskip+6pt\relax}
    {\bfseries\MakeUppercase}%
    \origtableofcontents
    \endgroup}

 \begin{document}
    \frontmatter
    \tableofcontents

\mainmatter
\chapter{Some one}


\section{Some one} 

Some text

\section{Some two} 
Some text

\chapter{Some two} 
\section{Some two} 
 \end{document}   

我需要更改 chaptertitle 之前的垂直缩进,这是\vspace*{-5em}在 \titleformat 中设置的。由于 \titleformat[display] 的“-”符号添加了较大的未知垂直缩进。我希望以任何可能的方式删除此缩进。我认为这可以通过命令完成\vspace*{-5em},但值-5em是非常不相关的,当我更改页面几何形状时,排版看起来不太好。因此,我需要\vspace*{0 any unit}相对于 进行设置\geometry{top=2cm},即垂直空间必须具有值top=2cm

答案1

您可以使用 来实现\titlespacing。我还用 键重新定义了目录的格式,numberless\lsstyle从目录中删除了该命令,因为它绝不 应与小写文本一起使用。在章节标题中,我将其应用于\lsstyle整个标题(标签+章节标题),默认值为 0.2em,我认为这个值太大了。

\documentclass[a4paper]{book}
\pdfoutput=1 %For postig in ArXiv.org
\usepackage{textcase}

\usepackage[14pt]{extsizes}
\renewcommand{\baselinestretch}{1}
\usepackage{color}
\usepackage{indentfirst}
\usepackage{microtype}
\usepackage{indentfirst}

\makeatletter
\renewcommand{\@evenhead}{}
\renewcommand{\@oddhead}{}
\renewcommand{\@evenfoot}{\centerline\thepage}
\renewcommand{\@oddfoot}{\centerline\thepage}
\makeatother

\usepackage[showframe, nomarginpar]{geometry}
\geometry{top=2cm} %поле сверху
\geometry{bottom=2.5cm} %поле снизу
\geometry{left=2.5cm} %поле справа
\geometry{right=2cm} %поле слева
\geometry{bindingoffset=0cm}


\usepackage[breaklinks, pdfpagelabels,linktoc=all, colorlinks=true,bookmarks,bookmarksnumbered=true]{hyperref}



%---------------SECTIONS TYPOS---------------
\usepackage{titlesec,titletoc,chngcntr}
\let\cleardoublepage\clearpage
\setlength\fboxsep{0pt}
\titleformat{\chapter}[display]
{\Large\centering\lsstyle}
{\MakeTextUppercase{\chaptertitlename}\ \thechapter\\\titlerule[.8pt]}%
{\dimexpr-\baselineskip +0.5ex\relax}%
{\bfseries\MakeUppercase}

\titleformat{name=\chapter, numberless}[block]
{\Large\lsstyle}{} {0pt}{\bfseries\MakeUppercase}

\titlespacing*{\chapter}{0pt}{-2.2ex}{5\baselineskip}


\titleformat{\section}[block]
{\bfseries}
{\S\ \thesection.}
{\fontdimen2\font}
{}

\titlecontents{chapter}[0pt]
{\bigskip}
{\chaptername~\thecontentslabel.\enspace\bfseries}
{}
{\titlerule*[6pt]{.}\contentspage}[\medskip]

\titlecontents{section}[1.5em]
{}
{\S\ \makebox[1.5em][l]{\thecontentslabel.}}
{}
{\titlerule*[6pt]{.}\contentspage}

\makeatletter
\renewcommand\frontmatter{\cleardoublepage\@mainmatterfalse}
\renewcommand\mainmatter{\cleardoublepage\@mainmattertrue}
\makeatother
\renewcommand{\thechapter}{\Roman{chapter}}
\counterwithout{section}{chapter}

\begin{document}
\frontmatter
\tableofcontents

\mainmatter
\chapter{Some one}


\section{Some one}

Some text

\section{Some two}
Some text

\chapter{Some two}

\section{Some two}
\end{document} 

在此处输入图片描述

在此处输入图片描述

相关内容