[texhax] listmacros?
Michael Doob
mdoob at ccu.umanitoba.ca
Mon May 30 20:33:41 CEST 2011
On Monday 30 May 2011 1:23 pm, Nitecki, Zbigniew H. wrote:
> I suspect the following does not exist, but wonder if it does or if some expert might suggest how to make it.
>
> Background: I have a pair of huge files containing many personally designed macros, which I used extensively in writing two books, and now use almost reflexively.
> When I write a relatively short paper in latex, I can of course append the two files to the paper when I send it out, but often I use a very small subset of the macros in these files.
>
> So I wonder if there is a command similar to the "listfiles" command (which lists the files used when compiling a document) but listing the macros used---either identified by package,
> or even better, providing a list of \newcommand's defining them. That way I could create a far smaller macro list custom designed for the paper at hand, and use it in place of the two
> large files when submitting a paper for publication or for the ArXiv.
>
This problem comes up all the time. I wish authors were as conscientious as you are.
I almost hesitate to add what follows: it is a hack that I wrote for office use only,
so please don't get mad at me for being so sloppy. I think it will do the job for you.
Cheers,
Michael
#!/bin/sh
gawk '
function isaletter(s){
r = index("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", s)
return r
}
{
inline = $0
inline = inline " %" # append blank as possible terminator
while (1) # find control words in inline
{
ptr = index(inline, "\\")
if (ptr == 0) break;
if ( index(inline, "%") < ptr) break # found a comment marker
inline = substr(inline,ptr); # throw away everything in front of \
ptr=2;
# now make ptr point to the last character in the control word
if (isaletter(substr(inline, ptr,1)))
{
while(isaletter(substr(inline, ptr,1))) ptr++
ptr--
}
print substr(inline,1,ptr);
inline = substr(inline, ptr+1);
}
} ' $* | sort | uniq -c | sort -n
--
------------------------------------------------------------------
Michael Doob Telephone: (204) 474-9796
Department of Mathematics Fax: (204) 474-7606
University of Manitoba email: Michael_Doob at umanitoba.ca
Winnipeg, MB, Canada R3T 2N2
------------------------------------------------------------------
More information about the texhax
mailing list