在标题中添加带圆圈的字母

在标题中添加带圆圈的字母

在我的课程中,我想使用圆圈中标示的级别来指定每个子部分的级别。

如果我使用命令\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

我会避免代码重复:你的命令可以用双参数命令来定义,它提供所需的 TiZ 指令可以在排版目录时变成不同的东西(除非您希望球也在那里)。

接下来,将这些命令定义为强命令,以便它们能够在移动参数中存活下来。

\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}

在此处输入图片描述

相关内容