我正在尝试自定义 \chapter 格式。我想要的是类似\hrulefill
但允许我控制线条从基线升高多少以及规则的粗细的东西。例如,使用\rule
命令,我可以设置选项,\rule[raise from baseline]{length}{width}
这样我就可以进行所有可能的组合,即使用命令,如果我想要与=\textwidth
相同的结果。\hrulefill
\rule{\textwidth}
现在我的问题是,我不希望规则与文本宽度一样长,但是只要规则遇到一个单词,在我的情况下是“章节的章节编号”。
我已经写了代码
\titleformat{\chapter}[display]
{\bfseries\Huge} %
{\flushright \rule[15pt]{280pt}{5pt} %here I want to change 280pt with something like \textwidth
\textsuperscript{\fontsize{30}{60}\selectfont{Chapter}}%
{\fontsize{70}{60}\selectfont\thechapter}} %
{10 pt}%
{\bfseries\fontsize{25}{20}\selectfont}%
\titlespacing*{\chapter}{3pt}{-5ex}{0ex}
这给了我输出
当然,这不符合我的意图,因为规则的长度是固定的(280pt),可能不适用于其他数字更大的章节。否则,如果我用\textwidth
固定长度代替,我的输出将变成
使章节低于规则。现在,是否有一个命令可以用规则填充文本宽度,但在找到行的第一个单词时停止?我知道有类似的问题,但没有人以这种方式专门解决这个问题,我想保留这种格式,以便代码更改尽可能少。
提前致谢。
编辑:也许我解释得不太清楚。事实上,我想要的是与第一幅图像(规则与章节标志对齐)更相似的东西,而不是第二幅图像,但它填充了整个文本宽度(而您可以在第一个例子看到规则的开头并不与文本对齐)。
答案1
这里有一个解决方案。我更改了最后一个参数的值\titlespacing
(0pt),导致章节标题与以下文本太接近。但也许你不是想有章节标题,而只是标签?
\documentclass[12pt, a4paper]{book}% http://ctan.org/pkg/amsproc
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{microtype}
\SetTracking[no ligatures={f}]{encoding=*}{100}
\usepackage{lipsum}
\usepackage{titlesec}%
\usepackage{tabularx}
\titleformat{\chapter}[display]
{\bfseries\Huge} %
{\begin{tabularx}{\linewidth}{@{}Xl@{}}
\raisebox{3ex}{\rule[-1.8ex]{\linewidth}{5pt}}%\vspace{1.5ex}%
& \textsuperscript{\fontsize{30}{60}\selectfont{Chapter}}%
{\fontsize{70}{60}\selectfont\thechapter}\end{tabularx}} %
{10 pt}%
{\bfseries\fontsize{25}{20}\selectfont}%
\titlespacing*{\chapter}{3pt}{-0.7ex}{10ex}
\begin{document}
\chapter{Test chapter}%}{Example chapter}
\lipsum[1]
\end{document}
输出如下所示: