我需要使用 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}