![章节标题与 titleformat 对齐](https://linux22.com/image/267407/%E7%AB%A0%E8%8A%82%E6%A0%87%E9%A2%98%E4%B8%8E%20titleformat%20%E5%AF%B9%E9%BD%90.png)
我正在尝试使用 titleformat 排版标题,如下例所示:
我喜欢整体效果,但当标题环绕时,它不是左对齐的。有没有办法相应地缩进第二行?这是生成示例的代码:
\documentclass[12pt]{book}
\usepackage{titlesec}
\usepackage{xcolor}
\newfont{\chapterNumber}{eurb10 scaled 5000}
\titleformat{\chapter}[block]%
{\relax}%
{\llap{\color{gray}\chapterNumber\thechapter%
\hspace{10pt}\vline} }{10pt}%
{\raggedright\LARGE\textsc}
%% Using this instead, the text is left-aligned but the
%% vertical line is not aligned with the body text
% \titleformat{\chapter}[block]%
% {\relax}%
% {\llap{\color{gray}\chapterNumber\thechapter%
% \hspace{10pt}\vline\hspace{10pt}}}{0pt}%
% {\raggedright\LARGE\textsc}
\begin{document}
\chapter{Long long long long long long long long long long title}
\end{document}
\hspace
还有另一种定义,即通过将 放在内部来使标题对齐\llap
,但这样垂直线就会向左移动,而我希望它与正文对齐。
答案1
使用\parbox
赋予其负 10 点的宽度\textwidth
。
\documentclass[12pt]{book}
\usepackage{titlesec}
\usepackage{xcolor,lipsum}
\titleformat{\chapter}[block]
{}
{\llap{\color{gray}\chapterNumber\thechapter
\hspace{10pt}\vline}}
{10pt}
{\formatchaptertitle}
\newcommand{\formatchaptertitle}[1]{%
\parbox[t]{\dimexpr\textwidth-10pt}{\raggedright\LARGE\scshape#1}}
\newcommand{\chapterNumber}{%
\fontsize{50}{50}\usefont{U}{eur}{b}{n}}
\begin{document}
\chapter{Long long long long long long long long long long title}
\lipsum[1]
\end{document}
该lipsum
包仅用于生成显示如何\vline
与左边距对齐的文本。
不要使用\newfont
,但我建议使用命令来定义\chapterNumber
。
该命令\newfont
仍保留在 LaTeX 中以实现向后兼容,因为使用 LaTeX 2.09 编写的旧文档可以使用它。早在 90 年代初,随着新字体选择方案 (NFSS) 的引入,一些字体管理的新概念已包含在 LaTeX 中,使用定义的字体会\newfont
忽略它们,因此结果可能会令人惊讶。
Euler 字体有“未指定”编码U
,其系列名称为eur
;您需要粗体系列b
和正常形状n
,因此\usefont{U}{eur}{b}{n}
;必须单独设置大小:第一个参数\fontsize
是适当的字体大小,第二个参数是基线跳跃(这里几乎无关紧要,因此我使用与大小相同的值)。没有单位意味着单位“点”。命令后\fontsize{x}{y}
是\selectfont
必需的,但它由自动提供\usefont
。