![如何在 .idx 中精确获取一个空格?我知道如何获取两个或无空格,但不知道如何获取一个](https://linux22.com/image/468801/%E5%A6%82%E4%BD%95%E5%9C%A8%20.idx%20%E4%B8%AD%E7%B2%BE%E7%A1%AE%E8%8E%B7%E5%8F%96%E4%B8%80%E4%B8%AA%E7%A9%BA%E6%A0%BC%EF%BC%9F%E6%88%91%E7%9F%A5%E9%81%93%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E4%B8%A4%E4%B8%AA%E6%88%96%E6%97%A0%E7%A9%BA%E6%A0%BC%EF%BC%8C%E4%BD%86%E4%B8%8D%E7%9F%A5%E9%81%93%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E4%B8%80%E4%B8%AA.png)
考虑以下 MWE:
\documentclass{ltxdoc}
\makeatletter
\newcommand*\myindex[3]{%
\doc@providetarget
\index{#1:\levelchar#2\actualchar{\ttfamily#3}\doc@handleencap{usage}}%
}
\makeatother
\makeindex
\begin{document}
\DescribeEnv{myenv}\marg{argument}\par
\myindex{environments}{myenv}{myenv}
\end{document}
虽然\DescribeEnv
索引myenv
前面只有一个空格myenv
,但\myindex
会添加两个。
内容.idx
:
\indexentry{myenv={\ttfamily myenv} (env.)|hdclindex{2}{usage}}{1}
\indexentry{environments:>myenv={\ttfamily myenv}|hdclindex{2}{usage}}{1}
\indexentry{environments:>myenv={\ttfamily myenv}|hdclindex{3}{usage}}{1}
这会导致索引条目数量是应有数量的两倍。
谢谢Heiko Oberdiek 的回答我可以使用来阻止此操作
\documentclass{ltxdoc}
\makeatletter
\newcommand*\myindex[3]{% ateb Heiko Oberdiek https://tex.stackexchange.com/a/412521/
\doc@providetarget
\@bsphack
\begingroup
\@sanitize
\@wrindex{#1:\levelchar#2\actualchar{\string\ttfamily #3}\doc@handleencap{usage}}%
}
\makeatother
\makeindex
\begin{document}
\DescribeEnv{myenv}\marg{argument}\par
\myindex{environments}{myenv}{myenv}
\end{document}
这让我
\indexentry{myenv={\ttfamily myenv} (env.)|hdclindex{2}{usage}}{1}
\indexentry{environments:>myenv={\ttfamily myenv}|hdclindex{2}{usage}}{1}
\indexentry{environments:>myenv={\ttfamilymyenv}|hdclindex{3}{usage}}{1}
但现在我没有空格,我不知道如何保留一个空格。如果这很重要,我实际上是在expl3
语法上这样做的,尽管必要时我可以避免这样做。