如何在 .idx 中精确获取一个空格?我知道如何获取两个或无空格,但不知道如何获取一个

如何在 .idx 中精确获取一个空格?我知道如何获取两个或无空格,但不知道如何获取一个

考虑以下 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语法上这样做的,尽管必要时我可以避免这样做。

相关内容