\section* 不再隐藏章节编号

\section* 不再隐藏章节编号

我想为我的部分添加背景颜色,但这样做\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}

在此处输入图片描述

相关内容