![索引中的数学符号(makeindex)](https://linux22.com/image/443934/%E7%B4%A2%E5%BC%95%E4%B8%AD%E7%9A%84%E6%95%B0%E5%AD%A6%E7%AC%A6%E5%8F%B7%EF%BC%88makeindex%EF%BC%89.png)
我想在我的索引中包含以下符号(使用 makeindex):
$\| \cdot \|_X$
我尝试了很多,但都不起作用,它不会显示。我试过:
Test\index{Norm!1@$|| \cdot ||$}
Test2\index{Norm!1@$1_X$}
Test3\index{Norm!1@$\| \cdot \|_X$}
当我尝试时,这些命令都不起作用
Test3\index{Norm!1@$Test$}
它可以工作。我哪里做错了?有人能给我展示一个可以显示这些符号的代码吗?谢谢。
答案1
该字符|
对于 MakeIndex 来说是特殊的,因此您需要对其进行转义。
\documentclass{article}
\usepackage{imakeidx}
\makeindex
\begin{document}
Test\index{Norm!1@$"|"| \cdot "|"|$}
Test2\index{Norm!1@$1_X$}
Test3\index{Norm!1@$"\"| \cdot "\"|_X$}
\printindex
\end{document}
该.ind
文件将包含
\begin{theindex}
\item Norm
\subitem $1_X$, 1
\subitem $\| \cdot \|_X$, 1
\subitem $|| \cdot ||$, 1
\end{theindex}
但是,不要将其用作||
常态。
输入规范的更好方法是mathtools
:
\documentclass{article}
\usepackage{amsmath,mathtools}
\usepackage{imakeidx}
\makeindex
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}
\newcommand{\blank}{{\;\cdot\;}}
\begin{document}
Test\index{Norm!1@$\norm{\blank}$}
\printindex
\end{document}
(我添加了一些虚拟条目以避免两行索引。)
答案2
我尝试了第一个 MWE埃格尔但发现了一些缺点。我无法将hyperref
和结合起来imakefile
。
考虑这个索引命令
\index{$"\"| \cdot"\"|_Y$! the norm on space \(Y\)}
如果hyperref
之前已加载 imakeidx
,则索引不使用智能链接。
如果imakeidx
在此之前加载hyperref
,则.idx
文件包含
\indexentry{$"\"|hyperindexformat{\ \cdot"\"}}{4}
这失败了
为了解决这个问题,我在索引命令中使用了‖
unicode字符(即U+2016 DOUBLE VERTICAL LINE
\index{$‖ \cdot ‖_Y$! the norm on space \(Y\)}
因此.idx
文件包含
\indexentry{$‖\cdot‖_X$! the norm on space \(X\)|hyperpage}{4}
这(当然)需要使用xelatex
或lualatex
,就像在这个 MWE 中一样
\documentclass{article}
\usepackage{makeidx}
\makeindex
\usepackage{hyperref}
\usepackage{polyglossia}
\usepackage{fontspec}
\begin{document}
\index{$‖ \cdot ‖_Y$! the norm on space \(Y\)}
\printindex
\end{document}
如果你不喜欢unicode,你可以\Vert
使用‖
PS:第二个 MWE 可以egreg
很好地工作hyperref
,但我不想在\norm
命令内重新包装所有规范。在我看来,$‖ \cdot ‖_Y$
这更具可读性。