我目前无法使 \rule 操作自动化,使文档在 \twocolumns 中时宽度与标题相同。对于多行名称,是否有办法让灰色框完全跟随节标题的下一行?如果可能,我仍想使用 titlesec 包。谢谢!
\titleformat{\subsection}{\Large\sffamily\bfseries}{\rlap{\color{black!10}\rule[-0.255cm]{8.225cm}{0.9cm}} \thesubsection}{0.8em}{}
我参考了这篇文章,这是我能找到的最接近解决方案的文章,但标题名称并不像我希望的那样对齐。
请帮忙!
答案1
编辑:我用一个稍微简单的版本替换了代码。旧版本在注释中。
这是可行的方法。计算适当的宽度有点棘手,但这样做可以做到。诀窍是您必须在模式下拾取\linewidth
(或) ,以获得适当的宽度。\columnwidth
twocolumn
\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}