2010-01-18 34 views

Trả lời

1

Điều này dường như làm việc:

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

Thêm, cũ "\ @expandtwoargs \ @removeelement" tốt: một cú pháp khủng khiếp, không có lý do rõ ràng để cần ba đối số (Tôi không thể tìm thấy một nơi mà nó được sử dụng khác ngoài việc loại bỏ các bản sao khỏi danh sách không phải là có tên). –

+0

Điều này là tốt cho nhu cầu của bạn, tôi đoán, nhưng sẽ phá vỡ với bất kỳ nội dung mong manh nào trong danh sách của bạn. Việc thực hiện trong l3clist là mạnh mẽ. –

0

Hãy thử xem mô-đun l3clist trong gói expl3. Nó cung cấp một giao diện lập trình cơ bản cho các danh sách được phân tách bằng dấu phẩy.


Bây giờ tôi trở lại trên một máy thật, sau đây là một ví dụ:

 
\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

Có có một một clist trong expl3. Gói này vẫn còn khá không ổn định, vì vậy tôi muốn có một thực hiện mà không phụ thuộc vào nó. Ngoài ra, tôi không hiểu l3clist hoạt động như thế nào. –

+0

Không, nó không phải là không ổn định: nhóm nghiên cứu đã nói rằng những thứ expl3 trên CTAN có thể được dựa vào. Nó hoạt động chính xác giống như bất kỳ chương trình TeX nào khác, chỉ với rất nhiều công cụ hỗ trợ được suy nghĩ thông qua rất cẩn thận và đọc "ra khỏi hộp". –

Các vấn đề liên quan