Используйте в оглавлении иконки, созданные Tikz

Используйте в оглавлении иконки, созданные Tikz

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

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

В настоящее время я использую предложения, которые я получил вэтот вопрос. Однако с изображениями .png трудно работать, и они всегда получаются нечеткими. Я хотел бы попробовать использовать TikZ, чтобы сделать эти изображения, чтобы они оставались четкими при любом размере.

Ради экономии времени я привел пример только для первого раздела. Однако я хотел бы использовать уникальный значок для каждого раздела в пределах одной главы. Эти значки будут очень простыми: просто круг с буквой внутри. Я хочу использоватьТикЗдля того, чтобы избежать необходимости делать эти значки изображениями.

Я не знаю, как это сделать. Любая помощь будет оценена по достоинству. Спасибо.

решение1

В общем, использование пакета tikzscaleизменяет \includegraphicsкоманду, чтобы иметь возможность читать и набирать tikz-graphics. Поэтому вы можете сделать что-то вроде

  • создайте свои изображения с помощью tikz
  • сохранить каждое изображение в отдельном файле
  • используйте код связанного ответа и загрузите tikzscaleпакет
  • использовать \includegraphics[height=10pt]{mytikzimage}в соответствующих местах.

Этот подход имеет дополнительный бонус, который tikzscaleавтоматически масштабирует tikz-images до абсолютного размера, что, как я считаю, имеет решающее значение для этой идеи? Вы можете заглянуть в tikzбиблиотеку externalize, поскольку tikzscaleверстает каждое изображение пару раз, чтобы достичь этого масштабирования. в противном случае использование нескольких иконок в вашем ToC может значительно замедлить компиляцию вашего документа.

Смотрите следующий код, который я позаимствовал изздесь, ссылку на который вы уже дали:

\documentclass{book}
\usepackage{titletoc}
\usepackage{graphicx}
\usepackage{tikz}      % to draw the symbols
\usepackage{tikzscale} % to include tikz graphics as image files and scale them

\makeatletter
\newcommand\stdsectioninToC{
\titlecontents{section}
  [3.8em]
  {}
  {\contentslabel{2.3em}}
  {\hspace*{-2.3em}}
  {\titlerule*[1em]{.}\contentspage}
}
\newcommand\iconsectioninToC{
\titlecontents{section}
  [3.8em]
  {}
  {\contentslabel{2.3em}%
    \smash{\includegraphics[height=10pt]{image}}\hspace{0.5em}% change here 
  }
  {\hspace*{-2.3em}}
  {\titlerule*[1em]{.}\contentspage}
}
\AtBeginDocument{\stdsectioninToC}
\makeatother

\begin{document}

\tableofcontents

\chapter{A test chapter}
\section{First test section}
\section{Second test section}
\section{Third test section}
\section{Fourth test section}

\iconsectioninToC
\chapter{A test chapter}
\section{First test section}
\section{Second test section}
\section{Third test section}
\section{Fourth test section}

\stdsectioninToC
\chapter{A test chapter}
\section{First test section}
\section{Second test section}
\section{Third test section}
\section{Fourth test section}

\end{document}

Здесь я использовал дополнительный файл image.tikzсо следующим содержимым:

% image.tikz
\begin{tikzpicture}
    \draw [fill=red!30] (-1,0) -- (0,1) -- (1,0) -- (0,-1) -- cycle;
\end{tikzpicture}

Как показано на скриншоте ниже, это работает просто чудесно:

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

Для полноты картины: если вам нужны отдельные картинки для отдельных разделов, вам придется изменить код внутри \iconsectioninToC(это не моя работа мозга, скопировано из связанного ответа). Измените прокомментированную часть на:

\stepcounter{mysecimage}
\smash{\includegraphics[height=10pt]{image-\the\value{mysecimage}}}\hspace{0.5em}

и дайте названия своим изображениям image-1.tikzи image-2.tikzт. д.

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