我正在使用 tabularx 来制作一个漂亮的章节标题(可能不是最好的方法,但对我来说这是最容易对齐内容的方法)。
我怎样才能使标题行间距相等?(字母“g”弄乱了间距),为什么标题没有水平对齐?
有没有更好的方法可以在不使用 tabularx 的情况下实现此效果?右侧的大章节编号在底部对齐,而标题带有下划线和多行?
\documentclass{book}
\usepackage{xcolor}
\usepackage[explicit]{titlesec}
\usepackage{lmodern}
\usepackage{tabularx}
\newcolumntype{L}{>{\raggedleft\arraybackslash}X}
\renewcommand\tabularxcolumn[1]{b{#1}}
\titleformat{\chapter}[block]
{\normalfont\sffamily}{}{0pt}
{
\begin{tabularx}{\linewidth}{@{}L r@{}}
{\Huge \sffamily \textbf {#1}}\vspace{0.2em} &
{\normalfont\sffamily\fontsize{120}{110}\selectfont\color{gray!25}{\textbf \thechapter}} \\\cline{1-1}
\end{tabularx}
}
\begin{document}
\chapter{ace ace ace ace ace ace ace age ace ace ace ace ace ace ace }
\end{document}
答案1
我建议你改变
\begin{tabularx}{\linewidth}{@{}L r@{}}
{\Huge \sffamily \textbf {#1}}\vspace{0.2em} &
到
\begin{tabularx}{\linewidth}{@{} >{\Huge\sffamily\bfseries}L r @{}}
#1 &
完整的 MWE:
\documentclass{book}
\usepackage{xcolor}
\usepackage[explicit]{titlesec}
\usepackage{lmodern}
\usepackage{tabularx}
\newcolumntype{L}{>{\raggedleft\arraybackslash}X}
\renewcommand\tabularxcolumn[1]{b{#1}}
\titleformat{\chapter}[block]
{\normalfont\sffamily}{}{0pt}
{
%\begin{tabularx}{\linewidth}{@{}L r@{}}
%{\Huge \sffamily \textbf {#1}}\vspace{0.2em} &
\begin{tabularx}{\linewidth}{@{} >{\Huge\sffamily\bfseries}L r @{}}
#1 &
{\normalfont\sffamily \fontsize{120}{110}\selectfont \color{gray!25}{\textbf \thechapter}} \\\cline{1-1}
\end{tabularx}
}
\begin{document}
\chapter{ace ace ace ace ace ace ace age ace ace ace ace ace ace ace}
\end{document}
答案2
我不会使用tabularx
,而是使用顶部对齐\parbox
,其中包含与标题、垂直跳过和规则对齐的底部\parbox
对齐。这样,章节号将与标题的底线对齐。
\documentclass{book}
\usepackage{xcolor}
\usepackage{showframe} % just for the example
\usepackage{titlesec}
\usepackage{lmodern}
\titleformat{name=\chapter}[block]
{\normalfont\sffamily}
{}
{0pt}
{\jakechapter{\thechapter}}
\titleformat{name=\chapter,numberless}[block]
{\normalfont\sffamily}
{}
{0pt}
{\jakechapter{\hphantom{0}}}
\newsavebox{\jakechapterbox}
\newcommand{\jakechapter}[2]{%
\sbox{\jakechapterbox}{\normalfont\fontsize{120}{110}\sffamily\bfseries\color{gray!25}#1}%
\parbox[t]{\dimexpr\textwidth-\wd\jakechapterbox-2\tabcolsep}{%
\parbox[b]{\linewidth}{%
\raggedleft\normalfont\Huge\sffamily\bfseries#2%
}
\vspace{0.2em}\hrule
}\hfill\usebox{\jakechapterbox}%
}
\begin{document}
\begingroup\let\clearpage\relax\let\cleardoublepage\relax
\chapter*{Introduction}
\chapter{This is a chapter title split across two lines}
\endgroup
\end{document}
该\begingroup...\endgroup
业务用于制作具有两个章节标题的单幅图像,一个标题有编号,另一个标题无编号。
第二张图显示标题和章节号的基线一致。