对于多行标题名称,如何自动化 \twocolumn 中章节标题中 \rule 的宽度?

对于多行标题名称,如何自动化 \twocolumn 中章节标题中 \rule 的宽度?

我目前无法使 \rule 操作自动化,使文档在 \twocolumns 中时宽度与标题相同。对于多行名称,是否有办法让灰色框完全跟随节标题的下一行?如果可能,我仍想使用 titlesec 包。谢谢!

这是我现在正在使用的代码。我目前所拥有的子部分的外观

\titleformat{\subsection}{\Large\sffamily\bfseries}{\rlap{\color{black!10}\rule[-0.255cm]{8.225cm}{0.9cm}} \thesubsection}{0.8em}{}

我参考了这篇文章,这是我能找到的最接近解决方案的文章,但标题名称并不像我希望的那样对齐。

将章节标题格式化为黑底白字

请帮忙!

答案1

编辑:我用一个稍微简单的版本替换了代码。旧版本在注释中。

这是可行的方法。计算适当的宽度有点棘手,但这样做可以做到。诀窍是您必须在模式下拾取\linewidth(或) ,以获得适当的宽度。\columnwidthtwocolumn

\documentclass{article}

\usepackage{titlesec}
\usepackage{lipsum}
\usepackage{xcolor}

\newlength\myboxwidth

% This is my original version
% 
% \newcommand\mylabel{}
% \newcommand\myformat{\Large\sffamily\bfseries}

% \newcommand\formatmytitle[1]{%
%   \renewcommand\mylabel{\thesubsection\hspace{10pt}}
%   \setlength{\fboxsep}{5pt}%
%   \settowidth{\myboxwidth}{\myformat\mylabel}%
%   \setlength{\myboxwidth}{\dimexpr \linewidth -2\fboxsep-\myboxwidth}
%   \colorbox{black!10}{\mylabel{\parbox[t]{\myboxwidth}{\raggedright #1}}}}

% \titleformat{\subsection}[display]{\myformat}{}{0pt}{\formatmytitle}

% This is the new version, which is a bit simpler.

\newcommand\formatmytitle[1]{%
  \setlength{\fboxsep}{5pt}%
  \setlength{\myboxwidth}{\dimexpr \linewidth-2\fboxsep}
  \colorbox{black!10}{{\parbox[t]{\myboxwidth}{%
       \setbox0\hbox{\thesubsection\hspace{0.5em}}\hangindent\wd0\hangafter1
       \raggedright\leavevmode\box0 #1}}}}

\titleformat{\subsection}[display]{\Large\sffamily\bfseries}{}{0pt}{\formatmytitle}

\begin{document}

\twocolumn
\sloppy

\section{Whatever}

\subsection{Subtracting Fractions}

\lipsum[1-4]

\end{document}

在此处输入图片描述

相关内容