Добавьте обведенные буквы в заголовки

Добавьте обведенные буквы в заголовки

В своем курсе я хотел бы указать уровень каждой подраздела, используя уровни, обозначенные кружками.

Если я использую команду \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}

введите описание изображения здесь

Связанный контент