> >>>>> "Bruce" == Bruce Momjian <[EMAIL PROTECTED]> writes: > > Bruce> I wanted to give the list a status on my efforts to convert to > Bruce> lyx from troff. > > Bruce> After downloading tr2latex, reworking some items that cause > Bruce> reLyX trouble, and mapping my custom troff macros to latex > Bruce> macros, I am now getting 98% conversion of my troff documents. > > That's great. If you have a package or a page explaining how to do > that, we'll link to it from the web page. > > JMarc > Here is the info you requested. You can add it as a page on your web site if you wish. -- Bruce Momjian | http://www.op.net/~candle [EMAIL PROTECTED] | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026 ................................................................... The attached document is in both web page and text formats. View the one which looks best.
Converting Troff to Lyx
Because troff is limited, I had written my own troff macros for bullets and computer source text. LaTeX/LyX has these capabilities, so the script maps my custom macros to the LaTeX/LyX versions. The script also does some cleanups to workaround problems with tr2latex and reLyX.
#!/bin/sh trap "rm -f /tmp/$$.tex /tmp/$$.lyx /tmp/$$.relyx*" 0 1 2 3 15
cat "$@" |
sed 's;^\.so .*/groff_macros/macros;;g' | # custom macros
sed 's;^\.so .*/groff_macros/bap;;g' |
sed 's;^\.so .*/groff_macros/calendar;;g' |
sed 's/^\.Th *\([^ ]*\)/\1@latexob@@latexbs@small th@latexcb@/g' |
sed 's/^\.Am */@latexob@@latexbs@small AM@latexcb@/g' |
sed 's/^\.Am *\([^ ]*\)/\1@latexob@@latexbs@small AM@latexcb@/g' |
sed 's/^\.Pm */@latexob@@latexbs@small PM@latexcb@/g' |
sed 's/^\.Pm *\([^ ]*\)/\1@latexob@@latexbs@small PM@latexcb@/g' |
sed 's/^\.Bb */@latexbs@begin@latexob@itemize@latexcb@\
@latexbs@item /g' |
sed 's/^\.Bc */@latexbs@item /g' |
sed 's/^\.Be */@latexbs@end@latexob@itemize@latexcb@/g' |
sed 's/^\.Tb */@latexbs@begin@latexob@lyxcode@latexcb@\
.nf/g' |
sed 's/^\.Te */@latexbs@end@latexob@lyxcode@latexcb@\
.fi/g' |
sed 's/^\.Tb1 */@latexbs@texttt@latexob@/g' |
sed 's/^\.Te1 */@latexbs@@latexcb@/g' |
sed 's/^\.St .*$/.\\"/g' |
sed 's/^\.Co .*$/.\\"/g' |
sed 's/^\.AI *$/.AU/g' | # no organization in lyx
sed 's/^\.sp 0.5v\?$/.\\"/g' | # handle this .sp
sed 's/^\.LP *//g' | # this is lyx equivalent
sed 's/^\.sp *$//g' | # want blank line
# handle nofill(.nf) by adding newlines
awk '
BEGIN {nofill = "N"}
{ if ($1 == ".nf")
nofill = "Y";
else if ($1 == ".fi")
{
printf "\n";
nofill = "N";
}
else {print $0}
if (nofill == "Y")
printf "\n";
}' |
tr2latex |
sed 's/@latexbs@/\\/g' | # translate inserted latex stuff
sed 's/@latexob@/{/g' |
sed 's/@latexcb@/}/g' |
sed 's/\\bs \?/\\textbackslash{}/g' | #convert this properly
sed 's;\\input \([a-zA-Z_0-9/\.]*\);\\input {\1};g' | #reLyX needs {}
sed 's/\\shead/\\section\*/g' | # map to LyX macros
sed 's/{IPlist}/{enumerate}/g' |
sed 's/\\IPitem{{[0-9\.]*}}/\\item/g' |
sed 's/\\IPitem{?{?[0-9]?\.?}?}?/\\item/g' >/tmp/$$.tex
#cat /tmp/$$.tex # uncomment for testing
#exit
reLyX /tmp/$$.tex
cat /tmp/$$.lyx
Converting Troff to Lyx
I have found it easy to convert existing troff documents to LyX.
First, get tr2latex, the Troff-to-TeX translator by Christian Engel,
from the nearest CTAN site. Second, I am attaching a shell script I
used for this purpose.
Because troff is limited, I had written my own troff macros for
bullets and computer source text. LaTeX/LyX has these capabilities, so
the script maps my custom macros to the LaTeX/LyX versions. The script
also does some cleanups to workaround problems with tr2latex and
reLyX.
#!/bin/sh
trap "rm -f /tmp/$$.tex /tmp/$$.lyx /tmp/$$.relyx*" 0 1 2 3 15
cat "$@" |
sed 's;^\.so .*/groff_macros/macros;;g' | # custom macros
sed 's;^\.so .*/groff_macros/bap;;g' |
sed 's;^\.so .*/groff_macros/calendar;;g' |
sed 's/^\.Th *\([^ ]*\)/\1@latexob@@latexbs@small th@latexcb@/g' |
sed 's/^\.Am */@latexob@@latexbs@small AM@latexcb@/g' |
sed 's/^\.Am *\([^ ]*\)/\1@latexob@@latexbs@small AM@latexcb@/g' |
sed 's/^\.Pm */@latexob@@latexbs@small PM@latexcb@/g' |
sed 's/^\.Pm *\([^ ]*\)/\1@latexob@@latexbs@small PM@latexcb@/g' |
sed 's/^\.Bb */@latexbs@begin@latexob@itemize@latexcb@\
@latexbs@item /g' |
sed 's/^\.Bc */@latexbs@item /g' |
sed 's/^\.Be */@latexbs@end@latexob@itemize@latexcb@/g' |
sed 's/^\.Tb */@latexbs@begin@latexob@lyxcode@latexcb@\
.nf/g' |
sed 's/^\.Te */@latexbs@end@latexob@lyxcode@latexcb@\
.fi/g' |
sed 's/^\.Tb1 */@latexbs@texttt@latexob@/g' |
sed 's/^\.Te1 */@latexbs@@latexcb@/g' |
sed 's/^\.St .*$/.\\"/g' |
sed 's/^\.Co .*$/.\\"/g' |
sed 's/^\.AI *$/.AU/g' | # no organization in lyx
sed 's/^\.sp 0.5v\?$/.\\"/g' | # handle this .sp
sed 's/^\.LP *//g' | # this is lyx equivalent
sed 's/^\.sp *$//g' | # want blank line
# handle nofill(.nf) by adding newlines
awk '
BEGIN {nofill = "N"}
{ if ($1 == ".nf")
nofill = "Y";
else if ($1 == ".fi")
{
printf "\n";
nofill = "N";
}
else {print $0}
if (nofill == "Y")
printf "\n";
}' |
tr2latex |
sed 's/@latexbs@/\\/g' | # translate inserted latex stuff
sed 's/@latexob@/{/g' |
sed 's/@latexcb@/}/g' |
sed 's/\\bs \?/\\textbackslash{}/g' | #convert this properly
sed 's;\\input \([a-zA-Z_0-9/\.]*\);\\input {\1};g' | #reLyX needs {}
sed 's/\\shead/\\section\*/g' | # map to LyX macros
sed 's/{IPlist}/{enumerate}/g' |
sed 's/\\IPitem{{[0-9\.]*}}/\\item/g' |
sed 's/\\IPitem{?{?[0-9]?\.?}?}?/\\item/g' >/tmp/$$.tex
#cat /tmp/$$.tex # uncomment for testing
#exit
reLyX /tmp/$$.tex
cat /tmp/$$.lyx
