95a46c5577
Signed-off-by: Nico Schottelius <nico@ikn.schottelius.org>
121 lines
2.2 KiB
Awk
121 lines
2.2 KiB
Awk
#! /usr/bin/awk -f
|
|
# Copyright (c) 1998-2001 Alessandro Rubini
|
|
|
|
BEGIN {IN=0}
|
|
|
|
/^%MANPAGE END/ {IN=0; next}
|
|
/^%MANPAGE/ {IN=1; USELP=NEEDLP=INTABLE=0; NAME=$2; next}
|
|
IN==0 {next}
|
|
|
|
/^%MSKIP/ {SKIP=1;next}
|
|
/^%M/ {SKIP=0}
|
|
|
|
/^@menu/ {SKIP=1;next}
|
|
/^@end menu/ {SKIP=0;next}
|
|
|
|
SKIP==1 {next}
|
|
/^%M$/ {next}
|
|
/^@ignore/ {next}
|
|
/^@end ign/ {next}
|
|
|
|
#now perform all the substitutions needed
|
|
|
|
{ gsub("^%M ?",""); }
|
|
|
|
# Use gensub for converting tags: itz Sep 30 1998
|
|
#
|
|
# However, the gensub function is gawk-specific, and we want things
|
|
# to work with original-awk too (for portability).
|
|
# Therefore, use a normal gsub, even though it's a subobptimal solution
|
|
# as it may step in extra braces. The good solution will be piping to sed,
|
|
# or match, extract subesxpression, replace, reinsert -- bleah...
|
|
# (ARub, Oct 10 2000)
|
|
/@b\{/ {
|
|
#$0 = gensub(/@b\{([^}]+)\}/, "\\\\fB\\1\\\\fP","g");
|
|
gsub("@b\{","\\fB");
|
|
gsub("\}","\\fP");
|
|
}
|
|
|
|
/@var\{/ {
|
|
#$0 = gensub(/@var\{([^}]+)\}/, "\\\\fI\\1\\\\fP","g");
|
|
gsub("@var\{","\\fB");
|
|
gsub("\}","\\fP");
|
|
}
|
|
|
|
/@(samp|code|file)\{/ {
|
|
#$0 = gensub(/@(samp|code|file)\{([^}]+)\}/, "`\\2'","g");
|
|
gsub("@(samp|code|file)\{","");
|
|
gsub("\}","");
|
|
}
|
|
|
|
|
|
/@xref\{.*\}\./ {
|
|
gsub(/@xref\{.*\}\./,"");
|
|
}
|
|
|
|
/@ref\{.*\}/ {
|
|
gsub("@ref\{","");
|
|
gsub("\}","");
|
|
}
|
|
|
|
/@\*/ {
|
|
gsub(/@\* */,"\n.br\n");
|
|
}
|
|
|
|
/@[a-z]+\{/ {
|
|
gsub("@[a-z]+\\{","");
|
|
gsub("}","");
|
|
}
|
|
|
|
/^@table/ { TABLE=1; }
|
|
/^@itemize/ { TABLE=1; next}
|
|
|
|
/^@item/ {
|
|
gsub("^@item *","");
|
|
printf ".TP\n%s\n",$0 > NAME;
|
|
NEEDLP=0; next;
|
|
}
|
|
|
|
/^@end table/ {TABLE=0}
|
|
/^@end itemize/ {TABLE=0}
|
|
|
|
# discard other texinfo commands
|
|
|
|
/^@/ {next}
|
|
|
|
# manage comments and '%'
|
|
|
|
/^%/ {next}
|
|
|
|
|
|
{
|
|
gsub("[^\\\\]%.*$","");
|
|
gsub("\\%","%");
|
|
}
|
|
|
|
|
|
# remove leading blanks
|
|
|
|
/^[ \t]/ {gsub("^[ \t]","");}
|
|
|
|
# put a .LP at blank lines
|
|
|
|
/^.nf/ {USELP=0}
|
|
/^.fi/ {USELP=1}
|
|
|
|
/^$/ {if (USELP) {NEEDLP++; next;} }
|
|
|
|
|
|
/./ { if (NEEDLP) { printf "\n.LP\n" > NAME; NEEDLP=0; } }
|
|
|
|
/^.TH/ {USELP=1}
|
|
|
|
# Escape single slashes (e.g. in documentation for `-l' command line option)
|
|
|
|
{gsub("\\\\ ", "\\\\ ");}
|
|
|
|
{gsub("~", "~~");}
|
|
|
|
{print > NAME}
|
|
|
|
|