我正在创建一个文件,其中各节标题的数字周围应该有一个方框。此外,有些节不应该显示此数字,即使该方框仍然应该在那里。为了解决这个问题,我使用 titlesec 创建了两个环境,其中一个环境中的数字颜色与方框填充颜色不同,而另一个环境中的颜色匹配。
我遇到的问题是目录中显示了两个章节编号。我查阅了 titlesec 文档,其中提到了使用 \ifthesection 条件来隐藏目录中的数字,但我不知道该怎么做。
我附上了一个示例,其中包含一些虚拟部分和环境。我不想显示练习 A(第 0.2 节)的编号。有人能帮我解决这个问题吗?
谢谢你,
拉曼
\documentclass[10.5pt,hidelinks]{book}
\usepackage[T1]{fontenc}
\usepackage{uarial}
\usepackage[ paper=a4paper, layoutheight = 8.2in, layoutwidth = 6in, layoutvoffset= 35mm, layouthoffset = 29mm, margin=0pt, includeheadfoot, showcrop=true]{geometry}
\usepackage{multicol}
\usepackage{titlesec}
\usepackage{lipsum}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{helvet}
\usepackage{tikz}
\newcommand\sectionbar{%
\tikz[baseline,trim left=2.1cm,trim right=2.0cm] {
% \fill [black] (2.0cm,-0.3ex) rectangle (\textwidth+3.1cm,-0.1ex);
\node [
fill=lightgray,
anchor= base east,
rectangle,
minimum height=3.5ex, minimum width=3.5ex] at (3cm,0) {
% \color{white} \textbf{\arabic{\section}}
\color{white} \textbf{\thesection}
};
\fill [black] (\textwidth-13.15cm,-0.9ex) rectangle (\textwidth+2.1cm,-1.1ex);
}%
}
\titleformat{\section}{\large\bfseries}{\sectionbar}{1.5cm}{}
\newcommand\exercisebar{%
\tikz[baseline,trim left=2.1cm,trim right=2.0cm] {
% \fill [black] (2.0cm,-0.3ex) rectangle (\textwidth+3.1cm,-0.1ex);
\node [
fill=lightgray,
anchor= base east,
rectangle,
minimum height=3.5ex, minimum width=3.5ex] at (3cm,0) {
% \color{white} \textbf{\arabic{\section}}
\color{lightgray} \textbf{\thesection}
};
\fill [black] (\textwidth-13.15cm,-0.9ex) rectangle (\textwidth+2.1cm,-1.1ex);
}%
}
\newenvironment{exercises}
{\titleformat{\section}{\large\bfseries}{\exercisebar}{1.5cm}{}
% \setcounter{secnumdepth}{0}%
% \renewcommand\sectionmark[1]{}
}
{%\setcounter{secnumdepth}{2}
}
\begin{document}
\tableofcontents
\section {LEARNING OBJECTIVES}
\blindtext \\
\lipsum[1]
\begin{exercises}
\section{Exercises A}
\blindtext
\lipsum[2-3]
\end{exercises}
\section{Exercises B}
\blindtext
\lipsum[4-5]
\end{document}
答案1
我相信我找到了最糟糕的解决方案:
\newenvironment{exercises}{%
\titleformat{\section}{\large\bfseries}{\exercisebar}{1.5cm}{}
\addtocontents{toc}{%
\string\let\string\oldnumberline\string\numberline%
\string\renewcommand\string\numberline\string[1]\string\oldnumberline{\strut}}%
}%
}{%
\setcounter{secnumdepth}{2}
\addtocontents{toc}{%
\string\let\string\numberline\string\oldnumberline%
}
}