【发布时间】:2010-08-26 23:07:10
【问题描述】:
LaTeX 新手在这里。
我需要为我的所有\subsection 标题设置背景颜色。整行应该改变颜色,而不仅仅是它的文本部分。
这确实有效:
\subsection{\colorbox{Gray}{Title}}
但它不会为整行着色。另外我想在一个地方为所有\subsections配置它。
我的 google-fu 让我失望了。关于如何做我想做的任何建议?
【问题讨论】:
LaTeX 新手在这里。
我需要为我的所有\subsection 标题设置背景颜色。整行应该改变颜色,而不仅仅是它的文本部分。
这确实有效:
\subsection{\colorbox{Gray}{Title}}
但它不会为整行着色。另外我想在一个地方为所有\subsections配置它。
我的 google-fu 让我失望了。关于如何做我想做的任何建议?
【问题讨论】:
要使\colorbox 成为线的宽度,请使用\makebox:
\subsection{\colorbox{Gray}{\makebox[\hfill][l]{Title}}}
我不能 100% 确定“\hfill”是您需要放在第一组方括号中的内容。您可能需要对该部分进行试验。另一个值得尝试的方法是
\subsection{\colorbox{Gray}{\makebox[\width][s]{Title\hfill}}}
要在一个地方为所有小节配置它,最简单的方法是定义一个包装器命令:
\newcommand{\mysubsection}[1]
{\subsection{\colorbox{Gray}{\makebox[\hfill][l]{#1}}}}
您也可以重新定义\subsection,但是您必须了解它使用的内部命令并注意匹配您的文档类的其他格式。不推荐。
【讨论】:
扩展 Zack 的答案,这是我的解决方案:
如果你想让文本左对齐
\newcommand{\mysubsection}[1]{
\setlength\fboxsep{4pt} %% spacing around box contents
\subsection*{\colorbox{bgcol}{\makebox[\textwidth][l]{\color{textcol}#1\hfill}}}
}
或者如果你想要它居中
\newcommand{\mysubsection}[1]{
\setlength\fboxsep{4pt} %% spacing around box contents
\subsection*{\colorbox{bgcol}{\makebox[\textwidth]{\color{textcol}#1}}}
}
如果您使用全局设置,您可以删除 \setlength\fboxsep 的本地声明。 显然 bgcol 和 textcol 需要在文档序言的前面定义。
如果在 multicols 环境中,您可以使用 \textwidth 或 \columnwidth,或其中任何一种的相对数量,具体取决于您的布局方式以及您希望它们的外观。
我正在使用多列,文本跨越 100% 的列。但发现使用 \textwidth 或 \columnwidth 与下方文本正文的宽度相比,标题悬在右侧,因此为了纠正这个问题,我实际上最终使用了:
\newcommand{\mysubsection}[1]{
\setlength\fboxsep{4pt} %% spacing around box contents
\subsection*{\colorbox{bgcol}{\makebox[0.97\textwidth]{\color{textcol}#1}}}
}
注意:我使用此代码从“Overfull \hbox”收到错误消息。我不知道如何解决这个问题,但输出工作正常,所以这对我来说不是问题。在不同的程序或构建上,这可能会给您带来问题!
【讨论】: