用 `pifont` 宏包制作的带圈数字列表,交叉引用出错

2020-02-25 16:42发布

用 `pifont` 宏包制作带圈数字列表,发现交叉引用出来的带圈数字有问题 ```tex \documentclass{article} \usepackage{pifont} \def\theen...

用 `pifont` 宏包制作带圈数字列表,发现交叉引用出来的带圈数字有问题 ```tex \documentclass{article} \usepackage{pifont} \def\theenumi{\ding{\numexpr171+\value{enumi}}} \def\labelenumi{\theenumi} \usepackage{hyperref} \begin{document} \begin{enumerate} \item xxx\label{1} \item xxx\label{2} \item xxx\label{3} \end{enumerate} \ref{1}\ref{2}\ref{3} \end{document} ``` 表现为 ![](https://pics.latexstudio.net/data/images/202002/044e1394464ee53.png) 交叉引用的锚点是对的,可以跳转到正确的位置,但是表现的数字不对
4条回答
论坛 github.com/C
2020-02-25 21:32
核心问题是,`\ding` 是脆弱命令。解决方案是把它变健壮(robust): - 局部变健壮,(在 `\setlist` 中)使用 `\protect\ding` 代替 `\ding`,不需要额外的大括号 - 全局变健壮,(在 `pifont` 宏包加载后、第一次使用有序列表之前)增加 `\MakeRobust\ding`。

一周热门 更多>

相关问答