创建索引时扩展 detokenize 的参数

创建索引时扩展 detokenize 的参数

读完这个答案后https://tex.stackexchange.com/a/292362/64189,我正尝试将其用于我的索引。

\newcommand{\ukindex}[2][\imki@jobname]{%
  \index[#1]{\detokenize{#2}}%
}

但我需要\ukindex这样打电话

\string 线性规划/ZZZZ{\string \textit {див. також} \string 循环内线性规划, 0-1 循环内线性规划}

实际上这是 .idx 文件的摘录,但我需要将其扩展。

编辑: 我按照David的要求添加了代码

\documentclass{book}
\usepackage[T1, T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english, ukrainian]{babel}
\usepackage[xindy]{imakeidx}
\makeindex[program=truexindy]

\makeatletter

\newcommand{\ukindex}[2][\imki@jobname]{%
  \index[#1]{\detokenize{#2}}%
}

\renewcommand{\seealso}[2]{%
  \indexas{\string#1/ZZZZ}{\string\textit{див. також} \string#2}%
}

\newcommand{\indexas}[2]{\begingroup\ukindex{#1{#2}[]}\endgroup}

\makeatother

\begin{document}

\seealso{лінійне програмування}{цілочисельне лінійне програмування, 0-1 цілочисельне
програмування}

Blablabla said Nobody 
\printindex

\end{document}

答案1

如果我删除这些\string命令,

\documentclass{book}
\usepackage[T1, T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english, ukrainian]{babel}
\usepackage[xindy]{imakeidx}
\makeindex[program=truexindy]

\makeatletter

\newcommand{\ukindex}[2][\imki@jobname]{%
  \index[#1]{\detokenize{#2}}%
}

\renewcommand{\seealso}[2]{%
  \indexas{#1/ZZZZ}{\textit{див. також} #2}%
}

\newcommand{\indexas}[2]{\begingroup\ukindex{#1{#2}[]}\endgroup}

\makeatother

\begin{document}

\seealso{лінійне програмування}{цілочисельне лінійне програмування, 0-1 цілочисельне
програмування}

Blablabla said Nobody 
\printindex

\end{document}

.idx文件包含

\indexentry{лінійне програмування/ZZZZ{\textit {див. також} цілочисельне лінійне програмування, 0-1 цілочисельне програмування}[]}{1}

我不确定这是你想要的,但至少没有奇怪的标记。

相关内容