将 \lstinline 放入 \item[] 描述中并自动将 \item[] 内容添加到词汇表中

将 \lstinline 放入 \item[] 描述中并自动将 \item[] 内容添加到词汇表中

我已经实施解决方案允许将\lstinline代码放在描述\item命令内。我还想通过将整个\item内容放入命令字段来自动添加整个内容作为词汇表条目name\newglossaryentry内容由文本和代码\item组成。\lstinline

由于\item内容存储在框寄存器中,当我尝试类似操作时,name={\usebox0}条目名称不会出现在文档词汇表中。我认为这是因为\usebox0在文件中没有正确展开.glsdefs(所有条目名称都按字面意思存储为\usebox 0)。

梅威瑟:

\documentclass[letterpaper, 12pt, oneside]{memoir}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{enumitem}
\usepackage{etoolbox}

% Redefine \item command.
\makeatletter
\let\orig@item\item

\def\item{%
    \@ifnextchar{[}%
        {\lstinline@item}%  %@
        {\orig@item}%
}

\begingroup
\catcode`\]=\active
\gdef\lstinline@item[{%
    \setbox0\hbox\bgroup 
        \catcode`\]=\active
        \let]\lstinline@item@end
}
\endgroup

\def\lstinline@item@end{%
    \egroup
    \orig@item[\usebox0]%
    % Extra lines for adding entries to glossary.
    \stepcounter{mycount}%
    \newglossaryentry{\themycount}{name={\usebox0}, description={}}%
    \glsadd{\themycount}%
}
\makeatother

% Glossaries.
\usepackage[automake]{glossaries}
\glsnoexpandfields
\glssetexpandfield{name}
\makeglossaries
% Counter for glossary labels.
\newcounter{mycount}
\setcounter{mycount}{0}


\begin{document}


\printglossary[style=index]

\chapter{Some chapter}

Some text.

\begin{description}
\item[First] Description.
\item[Second] Description.
\end{description}

\end{document}

我已经知道如何将\lstinline代码放入name字段而不会导致任何错误。所以我正在寻找某种机制来将内容存储\item在可在字段中扩展的宏中name,并将其存储在框寄存器中(已解决),以避免\lstinline内部\item问题。

我认为可能是类似\def\storedContent{...}但以同样的方式\setbox0\hbox\bgroup...\egroup工作。我不知道,我尝试了很多方法都没有成功,所以任何解决方案都会受到欢迎。

相关内容