LaTeX 自定义命令在 PDF 大纲中的正确显示
在写 LaTeX 时经常需要定义一些方便的命令来定制内容样式。
这里举个例子,比如说内联代码。使用 `colorbox` 实现一个底色为灰色的内联代码命令。如果我们使用了 hyperref
包,那么 PDF 自动生成出纯文本的大纲。
\newcommand{\codeinline}[1]{
\colorbox[HTML]{EEEEEE}{\texttt{\sbseries{\smaller{#1}}}}
}
codeinline

可以看到,内联代码样式在 PDF 页面上显示正常,但是在 PDF 大纲里却显示有问题,同时显示了代码和内容。
这是因为在我们定义命令的时候,没有额外说明这个命令纯文本版的内容是什么。我们可以使用 `texorpdfstring` 命令来修复这个问题。
\newcommand{\codeinline}[1]{
\texorpdfstring{
\colorbox[HTML]{EEEEEE}{\texttt{\sbseries{\smaller{#1}}}}
}{
#1
}
}
codeinline
(支持纯文本模式)