2010-01-18 17 views

Respuesta

1

Esto parece funcionar:

\newcommand{\[email protected]@set}[2]{% 
    \ifx#2\@empty% 
     \xdef#2{#1}% 
    \else% 
     \@expandtwoargs\@removeelement{#1}{#2}{#2}% 
     \xdef#2{#2,#1}% 
    \fi% 
}% 
+2

Agregue, el viejo y viejo "\ @expandtwoargs \ @removeelement": una sintaxis horrible, sin razón aparente para necesitar tres argumentos (no puedo encontrar un lugar donde se use, aparte de eliminar duplicados de una lista que no es -llamado). –

+0

Esto está bien para sus necesidades, supongo, pero romperá con cualquier contenido frágil en su lista. La implementación en l3clist es robusta. –

0

Pruebe echar un vistazo al módulo l3clist en el paquete expl3. Proporciona una interfaz de programación básica para listas separadas por comas.


Ahora que estoy de vuelta en una máquina real, he aquí un ejemplo:

 
\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} 
+0

sí, hay un un clist en expl3. Este paquete todavía es bastante inestable, por lo que preferiría tener una implementación que no dependa de él. Además, no entiendo cómo funciona l3clist. –

+0

No, no es inestable: el equipo ha dicho que se puede confiar en las cosas expl3 en CTAN. Funciona exactamente de la misma manera que cualquier otra programación de TeX, simplemente con una gran cantidad de material de soporte pensado cuidadosamente y leído "de fábrica". –