考慮乳膠下面直接實現列表:LaTeX中的集合實現?
\newcommand{\[email protected]@list}[2]{%
\ifx#2\@empty%
\xdef#2{#1}%
\else%
\xdef#2{#2,#1}%
\fi%
}%
我不知道是否有執行一套(名單沒有重複的元素)的簡單方法?
考慮乳膠下面直接實現列表:LaTeX中的集合實現?
\newcommand{\[email protected]@list}[2]{%
\ifx#2\@empty%
\xdef#2{#1}%
\else%
\xdef#2{#2,#1}%
\fi%
}%
我不知道是否有執行一套(名單沒有重複的元素)的簡單方法?
這似乎工作:
\newcommand{\[email protected]@set}[2]{%
\ifx#2\@empty%
\xdef#2{#1}%
\else%
\@expandtwoargs\@removeelement{#1}{#2}{#2}%
\xdef#2{#2,#1}%
\fi%
}%
試着看看expl3包中的l3clist模塊。它爲逗號分隔的列表提供了一個基本的編程接口。現在
我回來了一個真正的機器上,這裏有一個例子:
\documentclass{article} \usepackage{expl3} \begin{document} \ExplSyntaxOn \clist_new:N \l_my_clist \clist_put_right:Nn \l_my_clist {hello} \clist_put_right:Nn \l_my_clist {\unknown} \clist_put_right:Nn \l_my_clist {hello} \clist_remove_duplicates:N \l_my_clist \clist_show:N \l_my_clist \ExplSyntaxOff \end{document}
是存在expl3一個一個CLIST。這個包仍然很不穩定,所以我寧願有一個不依賴於它的實現。另外,我不明白l3clist是如何工作的。 – 2010-01-19 08:49:48
不,不穩定:團隊已經表示可以依靠CTAN上的爆炸物。它的工作方式與其他任何TeX編程完全相同,只是通過非常仔細的思考和「開箱即用」閱讀了大量支持內容。 – 2010-01-19 13:10:14
添加一個好的舊「\ @expandtwoargs \ @removeelement」:一個可怕的語法,沒有明顯的理由需要三個參數(我找不到一個地方使用它,而不是從列表中刪除重複項-named)。 – 2010-01-19 13:11:31
這對您的需求很好,我猜測,但會破壞列表中的任何脆弱內容。在l3clist中的實現是健壯的。 – 2010-01-28 23:56:22