summaryrefslogtreecommitdiff
path: root/macros/generic/commado/commado.sty
blob: 25f5b687ad680a6fc0754c84bf76a837fd51b663 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
                                                      \input plainpkg
% \NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{commado}[2012/11/30 v0.11 iterate on CSL (UL)]
%%
%% Copyright (C) 2012 Uwe Lueck,
%% http://www.contact-ednotes.sty.de.vu
%% -- author-maintained in the sense of LPPL below --
%%
%% This file can be redistributed and/or modified under
%% the terms of the LaTeX Project Public License; either
%% version 1.3c of the License, or any later version.
%% The latest version of this license is in
%%     http://www.latex-project.org/lppl.txt
%% We did our best to help you, but there is NO WARRANTY.
%%
%% Please report bugs, problems, and suggestions via
%%
%%   http://www.contact-ednotes.sty.de.vu
%%
\PushCatMakeLetterAt
%% == Auxiliaries                       ==
\ifltx \else    %% unless provided by LaTeX already
    \long\def\@firstoftwo#1#2{#1}
    \long\def\@secondoftwo#1#2{#1}
\fi
%% ... 4 less than
% \long\def\@firstsecondofthree#1#2#3{#1#2}
% \long\def\@firstthirdofthree#1#2#3{#1#3}
%%
%% == Processing a Comma-Separated List ==
%% Most of the following code aims at removing the final 
%% space in the comma-separated list.
%% % `\<cmd>' usually may either refer to a string starting 
%% % with a backslash or to the \emph{token} with the name 
%% % \qtdcode{<cmd>} 
%% % (cf. "\TeX's Tokens" in the \ctanpkgref{dowith} documentation).
%% A variant of parsing as in 'fifinddo.sty' 
%% (\ctanpkgdref{nicetext} bundle) and 
%% \ctanpkgstyref{bitelist}\urlfoot{CtanPkgRef}{bitelist} 
%% package is employed  %% ^ 2012/11/30
%% (while I am about to use different approaches there, 
%%  one may see here how, inspired by `\@ifblank' in 
%%  \ctanpkgstyref{url}).\urlfoot{CtanPkgRef}{url}
%% The purpose of the following `\edef' of 
%% |\DoWithCSL{<cmd>}{<list>}|
%% is to get a space token after `\@firstoftwo' in the parameter text.
%% \pagebreak[3]
\let\CD@final@comma\relax
\edef\DoWithCSL#1#2{%
    \CD@final@comma#2\CD@final@comma    %% 2nd \ 2012/11/30
    \noexpand\@firstoftwo
%     \noexpand\@firstsecondofthree
    \space\CD@final@comma
    \noexpand\@secondoftwo
%     \noexpand\@firstthirdofthree
    \noexpand\end{#1}{#2}}
\def\CD@final@comma#1 \CD@final@comma#2#3\end#4#5{%
%     \expandafter\@secondfirstoftwo\expandafter{%
%         #2{#1}#5}{\do@with@csl#4}%
    #2{\do@with@csl{#4}#1}{\do@with@csl{#4}#5}%
%% ... 15 vs.\ 13:
%       #2{\do@with@csl{#4}}{#1}{#5}%
            ,\StopDoing,}
\catcode`\Q=3               %% not in #1
\def\do@with@csl#1#2#3,{%
%% #1 is <cmd>. #2 takes the first token from (remaining) <list>
%% that is not a space token. Trying to enter a blank 
%% list item would result in using the 
%% \emph{next comma as a list item!}---The following 
%% is an alternative to the analogue in 'domore.sty':
    \unless@stop@doing#2#3\StopDoing
        #1{#2#3}\do@with@csl{#1}\StopDoing Q}
\def\unless@stop@doing#1\StopDoing#2\StopDoing#3Q{#2}
%% ... somewhat replaces `\@secondfirstoftwo'---but will the 
%% latter be dropped? `\unless@stop@doing' is specific 
%% for `\StopDoing'---but can be used with `\DoWith' too. 
%% TODO %% 2012/11/24
\catcode`\Q=11
%%
%% == Leaving the Package File ==
\PopLetterCatAt
\endinput
%%
%% == \acro{VERSION HISTORY} ==

v0.1   2012/11/24f.  started 
       2012/11/26    code ready
       2012/11/27    documented
v0.11  2012/11/30    code typo corrected, removing final space, 
                     doc. \urlfoot's