Реализована ли реализация в LaTeX? - PullRequest
5 голосов
/ 18 января 2010

Рассмотрим следующую простую реализацию списка в латексе:

\newcommand{\add@to@list}[2]{%
  \ifx#2\@empty%
    \xdef#2{#1}%
  \else%
    \xdef#2{#2,#1}%
  \fi%
}%

Интересно, есть ли простой способ реализовать набор (список без повторяющихся элементов)?

Ответы [ 2 ]

1 голос
/ 19 января 2010

Это похоже на работу:

\newcommand{\add@to@set}[2]{%
   \ifx#2\@empty%
      \xdef#2{#1}%
   \else%
      \@expandtwoargs\@removeelement{#1}{#2}{#2}%
      \xdef#2{#2,#1}%
   \fi%
}%
0 голосов
/ 19 января 2010

Попробуйте взглянуть на модуль l3clist в комплекте expl3. Он обеспечивает базовый интерфейс программирования для списков через запятую.


Теперь, когда я вернулся на настоящую машину, вот пример:

\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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...