如何将 tikz/pgf 命令添加到 section 命令中

如何将 tikz/pgf 命令添加到 section 命令中

我需要使用 tikz/pgf 为章节命令绘制一个简单的符号,例如:

\documentclass{book}
\usepackage{tikz}

\begin{document}

\chapter{hello tikz\tikz\node{pgf};}

\end{document}

但这不起作用,有什么办法可以解决这个问题吗?谢谢。

答案1

分段命令中的所有内容都必须使用 来增强或保护\protect。如果您正在使用hyperref(我假设),您还需要特别小心,因为内容最终会成为 PDF 书签,而这些书签不支持除普通文本之外的任何内容。

我建议使用以下代码:

\documentclass{book}
\usepackage{tikz}
\usepackage{hyperref}

\DeclareRobustCommand{\TikzStuff}{\texorpdfstring{\tikz\node{pgf};}{replacement text}}

\begin{document}
\chapter{hello \TikzStuff}
\end{document}

可以使用来自的命令来代替旧命令\DeclareRobustCommand(如果命令已存在则不会产生错误),该\newrobustcmd命令etoolbox利用了 LaTeX 的 e-TeX 扩展。也可以直接使用来自的命令 \protected\def\TikzStuff{..}

答案2

我相信你的问题类似于如果章节标题中有符号,则会出现未定义颜色错误。 尝试这个:

\documentclass{book}
\usepackage{tikz}

\DeclareRobustCommand{\MyTikzNode}{\tikz\tikz\node{pgf};}

\begin{document}
\chapter{hello \MyTikzNode}
\end{document}

答案3

我在尝试做类似的事情时偶然发现了这篇文章;我最终实现了以下新命令,虽然这些命令很简单,但对于我的文档来说,它们运行得足够顺利:

\documentclass{amsart}

\newcommand{\ellipse}[1]
{
     \begin{center} \tikz\node[draw, fill = blue!20!white, ellipse]{#1}; \end{center}
}
\newcommand{\hide}[1]
{
    \texorpdfstring{\protect\phantom{\hspace*{5em}#1}}{#1}
}
\newcommand{\csec}[1]
{
    \section{\hide{#1}} 
    \vspace*{-5ex}\ellipse{#1}
}

\usepackage{amsfonts, amsmath, amssymb, amsthm}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{shapes, snakes}
\usepackage{hyperref}

\begin{document}
\section*{Note}
To make a circled, unnumbered section, you could define a new command \verb`csecun` just like \verb`csec` but using the \verb`section*` command.
\csec{First Section}
\csec{Second Section}
\end{document}

相关内容