我正在尝试在章节和子章节周围添加背景框架。该框架应为彩色(80% 灰色)并跨越 \textwidth。
我尝试了一些(未经证实的)方法,并成功地为章节编号、编号后的句点、标题或标题的一小部分添加了颜色。
我试图理解“titlesec”包,但没有成功。
我该怎么做呢?
答案1
Vincent Zoonekynd 的 LaTeX 网站有一些非常直接的例子章节和部分样式。我通过稍微修改样式部分的第 31 条条目,采用了以下最小示例。
\documentclass{article}
\usepackage{lipsum,xcolor}
\makeatletter
\def\section{\@ifstar\unnumberedsection\numberedsection}
\def\numberedsection{\@ifnextchar[%]
\numberedsectionwithtwoarguments\numberedsectionwithoneargument}
\def\unnumberedsection{\@ifnextchar[%]
\unnumberedsectionwithtwoarguments\unnumberedsectionwithoneargument}
\def\numberedsectionwithoneargument#1{\numberedsectionwithtwoarguments[#1]{#1}}
\def\unnumberedsectionwithoneargument#1{\unnumberedsectionwithtwoarguments[#1]{#1}}
\def\numberedsectionwithtwoarguments[#1]#2{%
\ifhmode\par\fi
\removelastskip
\vskip 3ex\goodbreak
\refstepcounter{section}%
\hbox to \hsize{%
\colorbox{black!20}{%
\hbox to 1cm{\hss\bfseries\Large\thesection.\ }%
\vtop{%
\advance \hsize by -1cm
\advance \hsize by -2\fboxrule
\advance \hsize by -2\fboxsep
\parindent=0pt
\leavevmode\raggedright\bfseries\Large
#2
}%
}}\nobreak
\vskip 2mm\nobreak
\addcontentsline{toc}{section}{%
\protect\numberline{\thesection}%
#1}%
\ignorespaces
}
\def\unnumberedsectionwithtwoarguments[#1]#2{%
\ifhmode\par\fi
\removelastskip
\vskip 3ex\goodbreak
% \refstepcounter{section}%
\hbox to \hsize{%
\colorbox{black!20}{%
% \hbox to 1cm{\hss\bfseries\Large\thesection.\ }%
\vtop{%
% \advance \hsize by -1cm
\advance \hsize by -2\fboxrule
\advance \hsize by -2\fboxsep
\parindent=0pt
\leavevmode\raggedright\bfseries\Large
#2
}%
}}\nobreak
\vskip 2mm\nobreak
\addcontentsline{toc}{section}{%
% \protect\numberline{\thesection}%
#1}%
\ignorespaces
}
\makeatother
\pagestyle{empty}
\begin{document}
\lipsum[1]
\section*{Introduction}
\lipsum[1]
\section{Suite}
\lipsum[1]
\section{Suite}
\lipsum[1]
\section{Fin}
\lipsum[1]
\end{document}
它看起来是这样的:
我想这就是你想要的。此外,如果你想要为分区背景使用不同的颜色,你可以轻松地更改它。
答案2
这是一个(真的很 hacky?1)使用 和color
的方法titlesec
:
\usepackage{color}
\usepackage{titlesec}
\makeatletter
\newif\if@secnum
\definecolor{lgray}{gray}{0.75}
\titleformat{\section}[hang]{\Large\bfseries}{%
\global\@secnumtrue
}{0em}{%
{%
\setlength{\fboxsep}{0pt}%
\colorbox{lgray}{\makebox[\textwidth]{\Large\strut}}%
}%
\hspace*{-\textwidth}%
\if@secnum%
\arabic{section}%
\hspace*{1em}%
\fi%
\global\@secnumfalse%
}[]
\makeatother
结果:
1 欢迎更有经验的技术人员指出此代码中的改进或致命错误。使用 LaTeX 是一种学习体验 :)