朋友们,我已经成功地使用该tocloft
包来管理自定义索引。但现在我对一个棘手的部分有些怀疑,是否可行。考虑以下代码:
\documentclass{article}
\usepackage[titles]{tocloft}
\usepackage{tikz}
\newcommand*\info[1]{%
\begin{tikzpicture}
\node[draw,inner sep=1pt, minimum height=0.2cm, minimum width=0.5cm] {\tt\tiny #1};
\end{tikzpicture}}
\newcommand{\listfoo}{List of foo}
\newlistof[section]{foo}{idf}{\listfoo}
\begin{document}
\info{123} \info{ABC} Hello world.
\refstepcounter{foo}
\addcontentsline{idf}{foo}{Hello world.}
\refstepcounter{foo}
\addcontentsline{idf}{foo}{Hello bar.}
\listoffoo
\end{document}
输出符合预期:
在这个特殊情况下,我想知道是否可以将 TikZ 图像添加到列表条目中。我尝试添加\addcontentsline{idf}{foo}{\info{123} \info{ABC} Hello world.}
但没有成功。我希望实现这样的效果:
我也尝试了内联\tikz
,但没有成功。可能我忽略了一些显而易见的东西,或者可能比我想象的更棘手。有什么想法吗?
答案1
只需保护\info
命令:
\documentclass{article}
\usepackage[titles]{tocloft}
\usepackage{tikz}
\newcommand*\info[1]{%
\begin{tikzpicture}
\node[draw,inner sep=1pt, minimum height=0.2cm, minimum width=0.5cm] {\tt\tiny #1};
\end{tikzpicture}}
\newcommand{\listfoo}{List of foo}
\newlistof[section]{foo}{idf}{\listfoo}
\begin{document}
\info{123} \info{ABC} Hello world.
\refstepcounter{foo}
\addcontentsline{idf}{foo}{\protect\info{123}\ \protect \info{ABC}\ Hello world.}
\refstepcounter{foo}
\addcontentsline{idf}{foo}{\protect\info{123}\ \protect \info{ABC}\ Hello bar.}
\listoffoo
\end{document}
答案2
\info
用\DeclareRobustCommand
而不是来定义\newcommand
并简单地说
\addcontentsline{idf}{foo}{\info{123} \info{ABC} Hello world.}
您还可以\newrobustcmd
使用电子工具箱包裹。
“强化”那些进入“移动参数”的命令是很常见的,比如目录中的内容。