怎样才能在章节标题中添加与破损标题成比例的垂直条?

怎样才能在章节标题中添加与破损标题成比例的垂直条?

我正在尝试重现一个漂亮的章节标题,如“少即是多”所示这个博客使用titlesec

\documentclass{report}
\usepackage[T1]{fontenc}
\usepackage{titlesec, blindtext, color}
\definecolor{gray75}{gray}{0.75}
\newcommand{\hsp}{\hspace{20pt}}
\titleformat{\chapter}[hang]{\Huge\bfseries}{\thechapter\hsp\textcolor{gray75}{|}\hsp}{0pt}{\Huge\bfseries}
\begin{document}
\chapter{Less is More}
\blindtext
\end{document}

然而,它的效果正如广告所说的那样:当标题很长时,它会分成 2 行或更多行。我希望垂直条能够随着标题文本的高度而缩放。

我没有选择自动调整大小的解决方案,而是尝试了手动解决方案,即在标题较长的情况下手动调整栏。我尝试使用\rule而不是|,这样我就可以设置栏的高度和垂直位置。但这样一来,标题的第二行就会移到更低的位置,从栏下开始。要看到这一点,请将\titleformat上面的行替换为

\titleformat{\chapter}[hang]{\Huge\bfseries}{\thechapter\hsp\textcolor{gray75}{\rule[-25pt]{2pt}{50pt}}\hsp}{0pt}{\Huge\bfseries}

并使用跨越多行的长章节标题。

我也尝试使用包创建一个只有标题周围左框架部分的框架mdframed,但我无法将\begin{mdframed}\end{mdframed}与一起使用titlesec。放置{\begin{mdframed}}在前命令中(参见文档mdframed)和{\end{mdframed}}后命令中只会出现大量错误。

我该如何解决这个问题?我没有太多章节,所以手动解决绝对没问题。我首先想学习如何控制折线的位置,以防万一\rule

答案1

像这样?

\documentclass{report}
\usepackage[T1]{fontenc}
\usepackage{blindtext, array, color}
 \definecolor{gray75}{gray}{0.75}
\newcommand{\hsp}{\hspace{20pt}}
\usepackage[explicit]{titlesec}
\titleformat{\chapter}[hang]{\Huge\bfseries}{\color{gray75}\thechapter}{20pt}{\begin{tabular}[t]{@{\color{gray75}\vrule width 2pt}>{\hsp}l}#1\end{tabular}}

\begin{document}

\chapter{He Who can do the More\\can do the Less}

\blindtext

\end{document} 

在此处输入图片描述

如果要自动换行,请将代码的最后一行替换为:

{\begin{tabular}[t]{@{\color{gray75}\vrule width 2pt\hsp}p{0.85\textwidth}}\raggedright#1\end{tabular}}

答案2

解释已添加。在这里,我将宏\barbox作为最后要做的事情添加到 中\titleformat。然后我必须编写\barbox,它接受一个参数(章节标题文本)。我所做的是将章节标题文本放入名为 的框中\theCT。该框是顶部对齐的,\parbox其宽度根据经验确定为比文档的文本宽度小 55pt。我确保在文本的开头和结尾添加\strut,这样大写字母和降序字母的存在就不会影响生成的框的高度……只有框的行数会影响结果。

然后,我使用框的深度和高度来确定制作灰度规则所需的深度和高度。最后,我添加了间隙\hsp并重新制作了包含章节标题文本的框。

\documentclass{report}
\usepackage[T1]{fontenc}
\usepackage{titlesec, blindtext, color}
\newsavebox\theCT
\definecolor{gray75}{gray}{0.75}
\newcommand{\hsp}{\hspace{20pt}}
\titleformat{\chapter}[hang]{\Huge\bfseries}{\thechapter\hsp}{0pt}{\Huge\bfseries\barbox}
\newcommand\barbox[1]{\savebox\theCT{%
  \parbox[t]{\dimexpr\textwidth-55pt}{\strut#1\strut}}%
  \textcolor{gray75}{\rule[-\dp\theCT]{1.1pt}{\dimexpr\ht\theCT+\dp\theCT}}%
  \hsp{\usebox{\theCT}}}
\begin{document}
\chapter{Less is More}
\blindtext
\chapter{Less is More Less is More Less is More Less is More}
\blindtext
\end{document}

在此处输入图片描述

相关内容