我已经在 Google 上搜索了好几个小时,我的目标是让每个章节/部分都具有相同的缩进量。这意味着虽然有数字,但每个章节都从左边距 3 厘米处开始。你明白我的意思吗?:)
我正在使用该titlesec
包自定义字体大小、颜色等,但无法正确设置间距。因此,我尝试使用两个 parbox 来实现,如下所示:
\titleformat{\section}
{\color{pt_Blau_04}\large\sffamily\bfseries}
{}
{0em}
{\parbox{1cm}{\flushleft\thesection}{\parbox{6cm}{\flushleft #1}}}
[\vspace*{5pt}]
如果章节标题现在是双倍行距,它看起来会非常丑陋,并且 LaTeX 只会把 parboxes 扔得到处都是。
你们知道怎样做才能让每个章节/部分/小节都从同一点开始吗?
答案1
您的想法很好,但您只需使用适当的长度即可。如果数字框具有宽度,x
则标题框的宽度必须等于\textwidth-x
。在下面的示例中,对于数字,我使用了\makebox
宽度为\mylena
(最初设置为1.5cm
)的框,对于标题,我使用了内容和宽度\parbox
为的框。我根据您的代码片段使用了一些定义,但您当然可以使用您的设置(请注意,您需要两个独立但相似的定义:一个用于编号单元,另一个用于未编号单元(通过键)):\raggedright
\mylenb=\textwidth-\mylena
numberless
\documentclass{book}
\usepackage[explicit]{titlesec}
\usepackage{xcolor}
\newlength\mylena
\newlength\mylenb
\setlength\mylena{1.5cm}
\setlength\mylenb{\dimexpr\textwidth-\mylena\relax}
\newcommand\PlaceNumber[1]{%
\makebox[\mylena][l]{#1}}
\colorlet{pt_Blau_04}{cyan!60!black}
\titleformat{\chapter}
{\color{pt_Blau_04}\huge\sffamily\bfseries}
{}
{0em}
{\PlaceNumber{\thechapter}\parbox[t]{\mylenb}{\raggedright#1}}
\titleformat{name=\chapter,numberless}
{\color{pt_Blau_04}\huge\sffamily\bfseries}
{}
{0em}
{\PlaceNumber{}\parbox[t]{\mylenb}{\raggedright#1}}
\titleformat{\section}
{\color{pt_Blau_04}\large\sffamily\bfseries}
{}
{0em}
{\PlaceNumber{\thesection}\parbox[t]{\mylenb}{\raggedright#1}}
[\vspace*{5pt}]
\titleformat{name=\section,numberless}
{\color{pt_Blau_04}\large\sffamily\bfseries}
{}
{0em}
{\PlaceNumber{}\parbox[t]{\mylenb}{\raggedright#1}}
[\vspace*{5pt}]
\titleformat{\subsection}
{\color{pt_Blau_04}\large\sffamily\bfseries}
{}
{0em}
{\PlaceNumber{\thesubsection}\parbox[t]{\mylenb}{\raggedright#1}}
\titleformat{name=\subsection,numberless}
{\color{pt_Blau_04}\large\sffamily\bfseries}
{}
{0em}
{\PlaceNumber{}\parbox[t]{\mylenb}{\raggedright#1}}
\begin{document}
\chapter{Test Chapter with some additional text to see the indentation}
\section{Test Numbered Section}
\section*{Test Unnumbered Section}
\subsection{Test Numbered Subsection}
\subsection*{Test Unnumbered Subsection}
\end{document}
答案2
如果您不打算在章节和部分标题中设置段落分隔符(您不应该这样做),这里有一组更简单的宏,无需进行测量:
\documentclass{book}
\usepackage{titlesec}
\usepackage{xcolor}
\newlength\numberwidth
\setlength\numberwidth{1.5cm}
\newcommand\dotitle[2]{%
\parbox{\textwidth}{
\raggedright
\hangindent\numberwidth\hangafter1
\makebox[\numberwidth][l]{#1}#2%
}%
}
\colorlet{pt_Blau_04}{cyan!60!black}
\titleformat{\chapter}
{\color{pt_Blau_04}\huge\sffamily\bfseries}
{}
{0em}
{\dotitle{\thechapter}}
\titleformat{name=\chapter,numberless}
{\color{pt_Blau_04}\huge\sffamily\bfseries}
{}
{0em}
{\dotitle{}}
\titleformat{\section}
{\color{pt_Blau_04}\large\sffamily\bfseries}
{}
{0em}
{\dotitle{\thesection}}
[\vspace*{5pt}]
\titleformat{name=\section,numberless}
{\color{pt_Blau_04}\large\sffamily\bfseries}
{}
{0em}
{\dotitle{}}
[\vspace*{5pt}]
\titleformat{\subsection}
{\color{pt_Blau_04}\large\sffamily\bfseries}
{}
{0em}
{\dotitle{\thesubsection}}
\titleformat{name=\subsection,numberless}
{\color{pt_Blau_04}\large\sffamily\bfseries}
{}
{0em}
{\dotitle{}}
\begin{document}
\chapter{Test Chapter with some additional text to see the indentation}
{\let\cleardoublepage\relax % just to make the example fit in one page
\chapter*{Test unnumbered chapter}
}
\section{Test Numbered Section}
\section*{Test Unnumbered Section}
\subsection{Test Numbered Subsection}
\subsection*{Test Unnumbered Subsection}
\end{document}
我使用TeX 的\hangindent
和\hangafter
功能。该\dotitle
命令有两个参数,第二个是章节标题,与通常一样titlesec
。