根据环境输入生成多个目录

根据环境输入生成多个目录

使用以下(伪)代码

\newenvironment{A}[2]{\AddToToC{#1}{#2}}{}
\begin{A}{Test1}{1}
\end{A}
\begin{A}{Test2}{2}
\end{A}
\begin{A}{Test3}{1,2}
\end{A}

我想要生成以下输出:

Table of Content 1:
Test1......1
Test3......1

Table of Content 2:
Test2......1
Test3......1

A即我有不同的 ToC,我想根据调用环境时给出的第二个值将环境名称添加到它们中。该值将是一个整数(但如有必要,可以更改)。
另一个好处是,我能够将一个环境包含在多个 ToC 中(如中Test3),即使它没有像本草案中那样实现。这可能吗?

答案1

我目前的草稿(也是其他情况的可能解决方案,但由于太多而不适合我的情况\writes):

\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{xparse}
\usepackage{tocloft}
\usepackage{pgffor}

\newcommand{\AddToToCSingle}[2]{
    \refstepcounter{ToC#1%
    }
    \def\list{#1ToC}
    \def\listname{\list}
    \addcontentsline{\listname}{ToC#1}
    {\protect\numberline{\csname theToC#1\endcsname}#2}\par
}

\newcommand{\AddToToCMulti}[2]{
    \foreach\x in {#1}{\AddToToCSingle{\x}{#2}}
}

\newcommand{\PrintMultiToC}[1]{
    %\def\curToC{\expandafter\csname listofToC#1\endcsname}
    %\curToC
    \foreach\i in {#1}{\expandafter\csname listofToC\i \endcsname}
}

\newcommand{\GenerateMultiToc}[1]{
    \foreach\i in {#1}{%
        \newcommand\ToC{\expandafter\csname ToC\i\endcsname}
        \newlistof{ToC\i}{\i ToC}{\ToC\i}
        \expandafter\csname listofToC\i\endcsname
        }
}

\newcommand{\ToCA}{A}
\newlistof{ToCA}{AToC}{\ToCA}
\newcommand{\ToCB}{B}
\newlistof{ToCB}{BToC}{\ToCB}
\newcommand{\ToCC}{C}
\newlistof{ToCC}{CToC}{\ToCC}

\newenvironment{Test}[2]{\AddToToCMulti{#2}{#1}#1}{}

\begin{document}
    \PrintMultiToC{A,B}
    \GenerateMultiToc{F, G}
    %\PrintMultiToC{F,G}
    \begin{Test}{Hello}{A,G}
        World
    \end{Test}
\end{document}

目前唯一不起作用的是,我无法\PrintMultiToC{}使用我生成的列表进行调用,我必须直接在 中打印它们\GenerateMultiToc{}

相关内容