我想为我的部分添加背景颜色,但这样做\section*
不再正常工作,即当我想隐藏它时它现在显示部分编号。有什么想法吗?
这是我的代码:
\documentclass[a4paper]{article}
\usepackage[english]{babel}
\usepackage{color}
\usepackage[uppercase]{titlesec}
\usepackage{textcase}
\newcommand{\ColorSection}[1]{%
\colorbox{red}{\parbox[c][1.5em][c]{\dimexpr\textwidth-2\fboxsep}
{\MakeUppercase{\thesection\ #1}}}}
\titlespacing*{\section}{0pt}{\baselineskip}{\baselineskip}
\titleformat{\section}
{\sffamily\Large\raggedright}
{}{0pt}{\ColorSection}
\begin{document}
\section{with section number}
\section*{no section number}
\end{document}
答案1
这里有一个略有不同的方法,您不需要重复格式化代码。这个想法是将节号保存在私有宏中,但在适当的时候确保它是空的。我还纠正了代码中的一些点:
\documentclass[a4paper]{article}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{textcase}
\usepackage{titlesec}
\newcommand{\sstrut}{\vrule width 0pt height 14pt depth 4pt}
\newcommand{\ColorSection}[1]{%
\colorbox{red}{\parbox[c]{\dimexpr\textwidth-2\fboxsep}
{\raggedright\sstrut\MakeUppercase{\myslabel #1}\sstrut}}}
\titlespacing*{\section}{0pt}{\baselineskip}{\baselineskip}
\titleformat{\section}{\gdef\myslabel{}\sffamily\Large}
{\gdef\myslabel{\thesection\ }}{0pt}{\ColorSection}
\begin{document}
\section{with section number}
\section*{no section number}
\section{long section title to demonstrate line wrapping}
\end{document}
- 我已经搬进
\raggedright
你的\parbox
。它被放置的地方没有效果,而且\filright
无论如何都应该有效果。 - 固定高度的规范
\parbox
不适合长标题。相反,我在文本前后放置了特殊的支柱,以确保框在上下有足够的延伸。
答案2
\documentclass[a4paper]{article}
\usepackage[english]{babel}
\usepackage{color}
\usepackage[uppercase]{titlesec}
\usepackage{textcase}
\newcommand{\ColorSection}[1]{%
\colorbox{red}{\parbox[c][1.5em][c]{\dimexpr\textwidth-2\fboxsep}
{\MakeUppercase{\thesection\ #1}}}}
\newcommand{\ColorSectionStarred}[1]{%
\colorbox{red}{\parbox[c][1.5em][c]{\dimexpr\textwidth-2\fboxsep}
{\MakeUppercase{#1}}}}
\titlespacing*{\section}{0pt}{\baselineskip}{\baselineskip}
\titleformat{\section}
{\sffamily\Large\raggedright}
{}{0pt}{\ColorSection}
\titleformat{name=\section,numberless}
{\sffamily\Large\raggedright}
{}{0pt}{\ColorSectionStarred}
\begin{document}
\section{with section number}
\section*{no section number}
\end{document}