在我的课程中,我想使用圆圈中标示的级别来指定每个子部分的级别。
如果我使用命令\section{title} \trf
,带圈的字母就会出现在标题下方。
如果我将它们放在 \section{XX} 命令中\section{title \trf}
,则文档无法编译
\documentclass{article}
\usepackage{tikz}
\newcommand{\atrf}{\tikz[baseline=(letter.base)]\node[draw,circle,inner sep=1pt, shade,shading=ball,circle,ball color=black!10!red] (letter) {ATRF};}
\newcommand{\trf}{\tikz[baseline=(letter.base)]\node[draw,circle,inner sep=1pt, shade,shading=ball,circle,ball color=black!10!blue] (letter) {TRF};}
\newcommand{\asi}{\tikz[baseline=(letter.base)]\node[draw,circle,inner sep=1pt, shade,shading=ball,circle,ball color=black!10!orange] (letter) {ASI};}
\begin{document}
\section{Chapitre 1} \asi \trf
\section{Chapitre 2}
\subsection{Sous section 2.1}
\subsection{Sous section 2.2}
\end{document}
如何使级别出现在标题行中(因此也出现在目录中)
答案1
在章节标题内使用宏时需要小心,因为这些标题将出现在文档的其他几个位置,例如 PDF 书签或页眉或页脚。
尽管如此,还是可以使用宏,但是您需要在宏的可选参数中提供标题的替代的无宏版本\section
(对于类似的宏,例如等\chapter
,\subsection
也是如此):
\documentclass{article}
\usepackage{tikz}
\newcommand{\atrf}{\tikz[baseline=(letter.base)]\node[draw,circle,inner sep=1pt, shade,shading=ball,circle,ball color=black!10!red] (letter) {ATRF};}
\newcommand{\trf}{\tikz[baseline=(letter.base)]\node[draw,circle,inner sep=1pt, shade,shading=ball,circle,ball color=black!10!blue] (letter) {TRF};}
\newcommand{\asi}{\tikz[baseline=(letter.base)]\node[draw,circle,inner sep=1pt, shade,shading=ball,circle,ball color=black!10!orange] (letter) {ASI};}
\begin{document}
\section[Chapitre 1 (ASI) (TRF)]{Chapitre 1 \asi \trf}
\section{Chapitre 2}
\subsection{Sous section 2.1}
\subsection{Sous section 2.2}
\end{document}
答案2
我会避免代码重复:你的命令可以用双参数命令来定义,它提供所需的 Ti钾Z 指令可以在排版目录时变成不同的东西(除非您希望球也在那里)。
接下来,将这些命令定义为强命令,以便它们能够在移动参数中存活下来。
\documentclass{article}
\usepackage{tikz}
\newcommand{\shadedball}[2]{% #1 = color, #2 = acronym
\ifintoc
(\textcolor{black!10!#1}{#2})%
\else
\begin{tikzpicture}[baseline=(letter.base)]
\node[
draw,
circle,
inner sep=1pt,
shade,
shading=ball,
circle,
ball color=black!10!#1,
minimum width=3em,% <--- to get balls of the same width
] (letter) {#2};
\end{tikzpicture}%
\fi
}
\newif\ifintoc
\DeclareRobustCommand{\atrf}{\shadedball{red}{ARTF}}
\DeclareRobustCommand{\trf}{\shadedball{blue}{TRF}}
\DeclareRobustCommand{\asi}{\shadedball{orange}{ASI}}
\begin{document}
\intoctrue
\tableofcontents
\intocfalse
\section{Chapitre 1 \asi\ \trf\ \atrf}
\end{document}
没有条件业务
\documentclass{article}
\usepackage{tikz}
\newcommand{\shadedball}[2]{% #1 = color, #2 = acronym
\begin{tikzpicture}[baseline=(letter.base)]
\node[
draw,
circle,
inner sep=1pt,
shade,
shading=ball,
circle,
ball color=black!10!#1,
minimum width=3em,% <--- to get balls of the same width
] (letter) {#2};
\end{tikzpicture}%
}
\DeclareRobustCommand{\atrf}{\shadedball{red}{ARTF}}
\DeclareRobustCommand{\trf}{\shadedball{blue}{TRF}}
\DeclareRobustCommand{\asi}{\shadedball{orange}{ASI}}
\begin{document}
\tableofcontents
\section{Chapitre 1 \asi\ \trf\ \atrf}
\end{document}