diff --git a/Makefile b/Makefile index e5cfe7b3fb9e..603124a03ae0 100644 --- a/Makefile +++ b/Makefile @@ -127,7 +127,7 @@ TGTS= all all-man buildenv buildenvvars buildkernel buildworld \ installworld kernel-toolchain libraries lint maninstall \ obj objlink rerelease showconfig tags toolchain update \ _worldtmp _legacy _bootstrap-tools _cleanobj _obj \ - _build-tools _compiler-metadata _cross-tools _includes _libraries \ + _build-tools _build-metadata _cross-tools _includes _libraries \ build32 distribute32 install32 buildsoft distributesoft installsoft \ builddtb xdev xdev-build xdev-install \ xdev-links native-xtools stageworld stagekernel stage-packages \ diff --git a/Makefile.inc1 b/Makefile.inc1 index bde0d7b0f342..71b6db35a501 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -643,6 +643,51 @@ LIBCOMPAT= SOFT .include "Makefile.libcompat" .endif +# META_MODE normally ignores host file changes since every build updates +# timestamps (see NO_META_IGNORE_HOST in sys.mk). There are known times +# when the ABI breaks though that we want to force rebuilding WORLDTMP +# to get updated host tools. +.if ${MK_META_MODE} == "yes" && defined(NO_CLEAN) && \ + !defined(NO_META_IGNORE_HOST) && !defined(NO_META_IGNORE_HOST_HEADERS) +# r318736 - ino64 major ABI breakage +META_MODE_BAD_ABI_VERS+= 1200031 + +.if !defined(OBJDIR_HOST_OSRELDATE) +.if exists(${OBJTREE}${.CURDIR}/host-osreldate.h) +OBJDIR_HOST_OSRELDATE!= \ + awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ + ${OBJTREE}${.CURDIR}/host-osreldate.h +.else +OBJDIR_HOST_OSRELDATE= 0 +.endif +.export OBJDIR_HOST_OSRELDATE +.endif + +# Note that this logic is the opposite of normal BOOTSTRAP handling. We want +# to compare the WORLDTMP's OSRELDATE to the host's OSRELDATE. If the WORLDTMP +# is older than the ABI-breakage OSRELDATE of the HOST then we rebuild. +.for _ver in ${META_MODE_BAD_ABI_VERS} +.if ${OSRELDATE} >= ${_ver} && ${OBJDIR_HOST_OSRELDATE} < ${_ver} +_meta_mode_need_rebuild= ${_ver} +.endif +.endfor +.if defined(_meta_mode_need_rebuild) +.info META_MODE: Rebuilding host tools due to ABI breakage in __FreeBSD_version ${_meta_mode_need_rebuild}. +NO_META_IGNORE_HOST_HEADERS= 1 +.export NO_META_IGNORE_HOST_HEADERS +.endif +.endif +# This is only used for META_MODE+filemon to track what the oldest +# __FreeBSD_version is in WORLDTMP. This purposely does NOT have +# a make dependency on /usr/include/osreldate.h as the file should +# only be copied when it is missing or meta mode determines it has changed. +# Since host files are normally ignored without NO_META_IGNORE_HOST +# the file will never be updated unless that flag is specified. This +# allows tracking the oldest osreldate to force rebuilds via +# META_MODE_BADABI_REVS above. +host-osreldate.h: # DO NOT ADD /usr/include/osreldate.h here + @cp -f /usr/include/osreldate.h ${.TARGET} + WMAKE= ${WMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 DESTDIR=${WORLDTMP} IMAKEENV= ${CROSSENV} @@ -820,12 +865,13 @@ _cross-tools: @rm -f ${.OBJDIR}/compiler-metadata.mk ${_+_}cd ${.CURDIR}; ${XMAKE} cross-tools ${_+_}cd ${.CURDIR}; ${XMAKE} kernel-tools -_compiler-metadata: +_build-metadata: @echo @echo "--------------------------------------------------------------" - @echo ">>> stage 3.1: recording compiler metadata" + @echo ">>> stage 3.1: recording build metadata" @echo "--------------------------------------------------------------" ${_+_}cd ${.CURDIR}; ${WMAKE} compiler-metadata.mk + ${_+_}cd ${.CURDIR}; ${WMAKE} host-osreldate.h _includes: @echo @echo "--------------------------------------------------------------" @@ -864,7 +910,7 @@ WMAKE_TGTS+= _cleanobj WMAKE_TGTS+= _obj .endif WMAKE_TGTS+= _build-tools _cross-tools -WMAKE_TGTS+= _compiler-metadata +WMAKE_TGTS+= _build-metadata WMAKE_TGTS+= _includes .endif .if !defined(NO_LIBS) @@ -1964,7 +2010,7 @@ NXBMAKE= ${NXBENV} ${MAKE} \ MACHINE=${TARGET} MACHINE_ARCH=${TARGET_ARCH} \ MK_GDB=no MK_TESTS=no \ SSP_CFLAGS= \ - MK_HTML=no NO_LINT=yes MK_MAN=no \ + MK_HTML=no NO_LINT=yes MK_MAN=no MK_MAN_UTILS=yes \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ @@ -2038,6 +2084,8 @@ native-xtools: .PHONY usr.bin/lex \ usr.bin/limits \ usr.bin/lorder \ + ${_libopenbsd} \ + ${_makewhatis} \ usr.bin/mktemp \ usr.bin/mt \ usr.bin/patch \ @@ -2528,8 +2576,8 @@ check-old: check-old-files check-old-libs check-old-dirs .PHONY # showconfig - show build configuration. # showconfig: .PHONY - @(${MAKE} -n -f ${.CURDIR}/sys/conf/kern.opts.mk -V dummy -dg1; \ - ${MAKE} -n -f ${.CURDIR}/share/mk/src.opts.mk -V dummy -dg1) 2>&1 | grep ^MK_ | sort -u + @(${MAKE} -n -f ${.CURDIR}/sys/conf/kern.opts.mk -V dummy -dg1 UPDATE_DEPENDFILE=no NO_OBJ=yes; \ + ${MAKE} -n -f ${.CURDIR}/share/mk/src.opts.mk -V dummy -dg1 UPDATE_DEPENDFILE=no NO_OBJ=yes) 2>&1 | grep ^MK_ | sort -u .if !empty(KRNLOBJDIR) && !empty(KERNCONF) DTBOUTPUTPATH= ${KRNLOBJDIR}/${KERNCONF}/ diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 181bdc87ebbd..b2c2884aa3c5 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -150,6 +150,492 @@ OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_ OLD_DIRS+=usr/lib/clang/4.0.0/lib/freebsd OLD_DIRS+=usr/lib/clang/4.0.0/lib OLD_DIRS+=usr/lib/clang/4.0.0 +# 20170609: drop obsolete manpage link (if_rtwn.ko -> rtwn.ko) +OLD_FILES+=usr/share/man/man4/if_rtwn.4.gz +# 20170531: removal of groff +OLD_FILES+=usr/bin/addftinfo +OLD_FILES+=usr/bin/afmtodit +OLD_FILES+=usr/bin/checknr +OLD_FILES+=usr/bin/colcrt +OLD_FILES+=usr/bin/eqn +OLD_FILES+=usr/bin/grn +OLD_FILES+=usr/bin/grodvi +OLD_FILES+=usr/bin/groff +OLD_FILES+=usr/bin/grog +OLD_FILES+=usr/bin/grolbp +OLD_FILES+=usr/bin/grolj4 +OLD_FILES+=usr/bin/grops +OLD_FILES+=usr/bin/grotty +OLD_FILES+=usr/bin/hpftodit +OLD_FILES+=usr/bin/indxbib +OLD_FILES+=usr/bin/lkbib +OLD_FILES+=usr/bin/lookbib +OLD_FILES+=usr/bin/mmroff +OLD_FILES+=usr/bin/neqn +OLD_FILES+=usr/bin/nroff +OLD_FILES+=usr/bin/pfbtops +OLD_FILES+=usr/bin/pic +OLD_FILES+=usr/bin/post-grohtml +OLD_FILES+=usr/bin/pre-grohtml +OLD_FILES+=usr/bin/psroff +OLD_FILES+=usr/bin/refer +OLD_FILES+=usr/bin/tbl +OLD_FILES+=usr/bin/tfmtodit +OLD_FILES+=usr/bin/troff +OLD_FILES+=usr/bin/vgrind +OLD_FILES+=usr/libexec/vfontedpr +OLD_FILES+=usr/share/dict/eign +OLD_FILES+=usr/share/groff_font/devX100-12/CB +OLD_FILES+=usr/share/groff_font/devX100-12/CBI +OLD_FILES+=usr/share/groff_font/devX100-12/CI +OLD_FILES+=usr/share/groff_font/devX100-12/CR +OLD_FILES+=usr/share/groff_font/devX100-12/DESC +OLD_FILES+=usr/share/groff_font/devX100-12/HB +OLD_FILES+=usr/share/groff_font/devX100-12/HBI +OLD_FILES+=usr/share/groff_font/devX100-12/HI +OLD_FILES+=usr/share/groff_font/devX100-12/HR +OLD_FILES+=usr/share/groff_font/devX100-12/NB +OLD_FILES+=usr/share/groff_font/devX100-12/NBI +OLD_FILES+=usr/share/groff_font/devX100-12/NI +OLD_FILES+=usr/share/groff_font/devX100-12/NR +OLD_FILES+=usr/share/groff_font/devX100-12/S +OLD_FILES+=usr/share/groff_font/devX100-12/TB +OLD_FILES+=usr/share/groff_font/devX100-12/TBI +OLD_FILES+=usr/share/groff_font/devX100-12/TI +OLD_FILES+=usr/share/groff_font/devX100-12/TR +OLD_DIRS+=usr/share/groff_font/devX100-12 +OLD_FILES+=usr/share/groff_font/devX100/CB +OLD_FILES+=usr/share/groff_font/devX100/CBI +OLD_FILES+=usr/share/groff_font/devX100/CI +OLD_FILES+=usr/share/groff_font/devX100/CR +OLD_FILES+=usr/share/groff_font/devX100/DESC +OLD_FILES+=usr/share/groff_font/devX100/HB +OLD_FILES+=usr/share/groff_font/devX100/HBI +OLD_FILES+=usr/share/groff_font/devX100/HI +OLD_FILES+=usr/share/groff_font/devX100/HR +OLD_FILES+=usr/share/groff_font/devX100/NB +OLD_FILES+=usr/share/groff_font/devX100/NBI +OLD_FILES+=usr/share/groff_font/devX100/NI +OLD_FILES+=usr/share/groff_font/devX100/NR +OLD_FILES+=usr/share/groff_font/devX100/S +OLD_FILES+=usr/share/groff_font/devX100/TB +OLD_FILES+=usr/share/groff_font/devX100/TBI +OLD_FILES+=usr/share/groff_font/devX100/TI +OLD_FILES+=usr/share/groff_font/devX100/TR +OLD_DIRS+=usr/share/groff_font/devX100 +OLD_FILES+=usr/share/groff_font/devX75-12/CB +OLD_FILES+=usr/share/groff_font/devX75-12/CBI +OLD_FILES+=usr/share/groff_font/devX75-12/CI +OLD_FILES+=usr/share/groff_font/devX75-12/CR +OLD_FILES+=usr/share/groff_font/devX75-12/DESC +OLD_FILES+=usr/share/groff_font/devX75-12/HB +OLD_FILES+=usr/share/groff_font/devX75-12/HBI +OLD_FILES+=usr/share/groff_font/devX75-12/HI +OLD_FILES+=usr/share/groff_font/devX75-12/HR +OLD_FILES+=usr/share/groff_font/devX75-12/NB +OLD_FILES+=usr/share/groff_font/devX75-12/NBI +OLD_FILES+=usr/share/groff_font/devX75-12/NI +OLD_FILES+=usr/share/groff_font/devX75-12/NR +OLD_FILES+=usr/share/groff_font/devX75-12/S +OLD_FILES+=usr/share/groff_font/devX75-12/TB +OLD_FILES+=usr/share/groff_font/devX75-12/TBI +OLD_FILES+=usr/share/groff_font/devX75-12/TI +OLD_FILES+=usr/share/groff_font/devX75-12/TR +OLD_DIRS+=usr/share/groff_font/devX75-12 +OLD_FILES+=usr/share/groff_font/devX75/CB +OLD_FILES+=usr/share/groff_font/devX75/CBI +OLD_FILES+=usr/share/groff_font/devX75/CI +OLD_FILES+=usr/share/groff_font/devX75/CR +OLD_FILES+=usr/share/groff_font/devX75/DESC +OLD_FILES+=usr/share/groff_font/devX75/HB +OLD_FILES+=usr/share/groff_font/devX75/HBI +OLD_FILES+=usr/share/groff_font/devX75/HI +OLD_FILES+=usr/share/groff_font/devX75/HR +OLD_FILES+=usr/share/groff_font/devX75/NB +OLD_FILES+=usr/share/groff_font/devX75/NBI +OLD_FILES+=usr/share/groff_font/devX75/NI +OLD_FILES+=usr/share/groff_font/devX75/NR +OLD_FILES+=usr/share/groff_font/devX75/S +OLD_FILES+=usr/share/groff_font/devX75/TB +OLD_FILES+=usr/share/groff_font/devX75/TBI +OLD_FILES+=usr/share/groff_font/devX75/TI +OLD_FILES+=usr/share/groff_font/devX75/TR +OLD_DIRS+=usr/share/groff_font/devX75 +OLD_FILES+=usr/share/groff_font/devascii/B +OLD_FILES+=usr/share/groff_font/devascii/BI +OLD_FILES+=usr/share/groff_font/devascii/CW +OLD_FILES+=usr/share/groff_font/devascii/DESC +OLD_FILES+=usr/share/groff_font/devascii/I +OLD_FILES+=usr/share/groff_font/devascii/L +OLD_FILES+=usr/share/groff_font/devascii/R +OLD_FILES+=usr/share/groff_font/devascii/S +OLD_DIRS+=usr/share/groff_font/devascii +OLD_FILES+=usr/share/groff_font/devcp1047/B +OLD_FILES+=usr/share/groff_font/devcp1047/BI +OLD_FILES+=usr/share/groff_font/devcp1047/CW +OLD_FILES+=usr/share/groff_font/devcp1047/DESC +OLD_FILES+=usr/share/groff_font/devcp1047/I +OLD_FILES+=usr/share/groff_font/devcp1047/L +OLD_FILES+=usr/share/groff_font/devcp1047/R +OLD_FILES+=usr/share/groff_font/devcp1047/S +OLD_DIRS+=usr/share/groff_font/devcp1047 +OLD_FILES+=usr/share/groff_font/devdvi/CW +OLD_FILES+=usr/share/groff_font/devdvi/CWEC +OLD_FILES+=usr/share/groff_font/devdvi/CWI +OLD_FILES+=usr/share/groff_font/devdvi/CWIEC +OLD_FILES+=usr/share/groff_font/devdvi/CWITC +OLD_FILES+=usr/share/groff_font/devdvi/CWTC +OLD_FILES+=usr/share/groff_font/devdvi/CompileFonts +OLD_FILES+=usr/share/groff_font/devdvi/DESC +OLD_FILES+=usr/share/groff_font/devdvi/EX +OLD_FILES+=usr/share/groff_font/devdvi/HB +OLD_FILES+=usr/share/groff_font/devdvi/HBEC +OLD_FILES+=usr/share/groff_font/devdvi/HBI +OLD_FILES+=usr/share/groff_font/devdvi/HBIEC +OLD_FILES+=usr/share/groff_font/devdvi/HBITC +OLD_FILES+=usr/share/groff_font/devdvi/HBTC +OLD_FILES+=usr/share/groff_font/devdvi/HI +OLD_FILES+=usr/share/groff_font/devdvi/HIEC +OLD_FILES+=usr/share/groff_font/devdvi/HITC +OLD_FILES+=usr/share/groff_font/devdvi/HR +OLD_FILES+=usr/share/groff_font/devdvi/HREC +OLD_FILES+=usr/share/groff_font/devdvi/HRTC +OLD_FILES+=usr/share/groff_font/devdvi/MI +OLD_FILES+=usr/share/groff_font/devdvi/Makefile +OLD_FILES+=usr/share/groff_font/devdvi/S +OLD_FILES+=usr/share/groff_font/devdvi/SA +OLD_FILES+=usr/share/groff_font/devdvi/SB +OLD_FILES+=usr/share/groff_font/devdvi/SC +OLD_FILES+=usr/share/groff_font/devdvi/TB +OLD_FILES+=usr/share/groff_font/devdvi/TBEC +OLD_FILES+=usr/share/groff_font/devdvi/TBI +OLD_FILES+=usr/share/groff_font/devdvi/TBIEC +OLD_FILES+=usr/share/groff_font/devdvi/TBITC +OLD_FILES+=usr/share/groff_font/devdvi/TBTC +OLD_FILES+=usr/share/groff_font/devdvi/TI +OLD_FILES+=usr/share/groff_font/devdvi/TIEC +OLD_FILES+=usr/share/groff_font/devdvi/TITC +OLD_FILES+=usr/share/groff_font/devdvi/TR +OLD_FILES+=usr/share/groff_font/devdvi/TREC +OLD_FILES+=usr/share/groff_font/devdvi/TRTC +OLD_FILES+=usr/share/groff_font/devdvi/ec.map +OLD_FILES+=usr/share/groff_font/devdvi/msam.map +OLD_FILES+=usr/share/groff_font/devdvi/msbm.map +OLD_FILES+=usr/share/groff_font/devdvi/tc.map +OLD_FILES+=usr/share/groff_font/devdvi/texb.map +OLD_FILES+=usr/share/groff_font/devdvi/texex.map +OLD_FILES+=usr/share/groff_font/devdvi/texi.map +OLD_FILES+=usr/share/groff_font/devdvi/texmi.map +OLD_FILES+=usr/share/groff_font/devdvi/texr.map +OLD_FILES+=usr/share/groff_font/devdvi/texsy.map +OLD_FILES+=usr/share/groff_font/devdvi/textex.map +OLD_FILES+=usr/share/groff_font/devdvi/textt.map +OLD_DIRS+=usr/share/groff_font/devdvi +OLD_FILES+=usr/share/groff_font/devhtml/B +OLD_FILES+=usr/share/groff_font/devhtml/BI +OLD_FILES+=usr/share/groff_font/devhtml/CB +OLD_FILES+=usr/share/groff_font/devhtml/CBI +OLD_FILES+=usr/share/groff_font/devhtml/CI +OLD_FILES+=usr/share/groff_font/devhtml/CR +OLD_FILES+=usr/share/groff_font/devhtml/DESC +OLD_FILES+=usr/share/groff_font/devhtml/I +OLD_FILES+=usr/share/groff_font/devhtml/R +OLD_FILES+=usr/share/groff_font/devhtml/S +OLD_DIRS+=usr/share/groff_font/devhtml +OLD_FILES+=usr/share/groff_font/devkoi8-r/B +OLD_FILES+=usr/share/groff_font/devkoi8-r/BI +OLD_FILES+=usr/share/groff_font/devkoi8-r/CW +OLD_FILES+=usr/share/groff_font/devkoi8-r/DESC +OLD_FILES+=usr/share/groff_font/devkoi8-r/I +OLD_FILES+=usr/share/groff_font/devkoi8-r/L +OLD_FILES+=usr/share/groff_font/devkoi8-r/R +OLD_FILES+=usr/share/groff_font/devkoi8-r/S +OLD_DIRS+=usr/share/groff_font/devkoi8-r +OLD_FILES+=usr/share/groff_font/devlatin1/B +OLD_FILES+=usr/share/groff_font/devlatin1/BI +OLD_FILES+=usr/share/groff_font/devlatin1/CW +OLD_FILES+=usr/share/groff_font/devlatin1/DESC +OLD_FILES+=usr/share/groff_font/devlatin1/I +OLD_FILES+=usr/share/groff_font/devlatin1/L +OLD_FILES+=usr/share/groff_font/devlatin1/R +OLD_FILES+=usr/share/groff_font/devlatin1/S +OLD_DIRS+=usr/share/groff_font/devlatin1 +OLD_FILES+=usr/share/groff_font/devlbp/CB +OLD_FILES+=usr/share/groff_font/devlbp/CI +OLD_FILES+=usr/share/groff_font/devlbp/CR +OLD_FILES+=usr/share/groff_font/devlbp/DESC +OLD_FILES+=usr/share/groff_font/devlbp/EB +OLD_FILES+=usr/share/groff_font/devlbp/EI +OLD_FILES+=usr/share/groff_font/devlbp/ER +OLD_FILES+=usr/share/groff_font/devlbp/HB +OLD_FILES+=usr/share/groff_font/devlbp/HBI +OLD_FILES+=usr/share/groff_font/devlbp/HI +OLD_FILES+=usr/share/groff_font/devlbp/HNB +OLD_FILES+=usr/share/groff_font/devlbp/HNBI +OLD_FILES+=usr/share/groff_font/devlbp/HNI +OLD_FILES+=usr/share/groff_font/devlbp/HNR +OLD_FILES+=usr/share/groff_font/devlbp/HR +OLD_FILES+=usr/share/groff_font/devlbp/TB +OLD_FILES+=usr/share/groff_font/devlbp/TBI +OLD_FILES+=usr/share/groff_font/devlbp/TI +OLD_FILES+=usr/share/groff_font/devlbp/TR +OLD_DIRS+=usr/share/groff_font/devlbp +OLD_FILES+=usr/share/groff_font/devlj4/AB +OLD_FILES+=usr/share/groff_font/devlj4/ABI +OLD_FILES+=usr/share/groff_font/devlj4/AI +OLD_FILES+=usr/share/groff_font/devlj4/ALBB +OLD_FILES+=usr/share/groff_font/devlj4/ALBR +OLD_FILES+=usr/share/groff_font/devlj4/AOB +OLD_FILES+=usr/share/groff_font/devlj4/AOI +OLD_FILES+=usr/share/groff_font/devlj4/AOR +OLD_FILES+=usr/share/groff_font/devlj4/AR +OLD_FILES+=usr/share/groff_font/devlj4/CB +OLD_FILES+=usr/share/groff_font/devlj4/CBI +OLD_FILES+=usr/share/groff_font/devlj4/CI +OLD_FILES+=usr/share/groff_font/devlj4/CLARENDON +OLD_FILES+=usr/share/groff_font/devlj4/CORONET +OLD_FILES+=usr/share/groff_font/devlj4/CR +OLD_FILES+=usr/share/groff_font/devlj4/DESC +OLD_FILES+=usr/share/groff_font/devlj4/GB +OLD_FILES+=usr/share/groff_font/devlj4/GBI +OLD_FILES+=usr/share/groff_font/devlj4/GI +OLD_FILES+=usr/share/groff_font/devlj4/GR +OLD_FILES+=usr/share/groff_font/devlj4/LGB +OLD_FILES+=usr/share/groff_font/devlj4/LGI +OLD_FILES+=usr/share/groff_font/devlj4/LGR +OLD_FILES+=usr/share/groff_font/devlj4/MARIGOLD +OLD_FILES+=usr/share/groff_font/devlj4/OB +OLD_FILES+=usr/share/groff_font/devlj4/OBI +OLD_FILES+=usr/share/groff_font/devlj4/OI +OLD_FILES+=usr/share/groff_font/devlj4/OR +OLD_FILES+=usr/share/groff_font/devlj4/S +OLD_FILES+=usr/share/groff_font/devlj4/SYMBOL +OLD_FILES+=usr/share/groff_font/devlj4/TB +OLD_FILES+=usr/share/groff_font/devlj4/TBI +OLD_FILES+=usr/share/groff_font/devlj4/TI +OLD_FILES+=usr/share/groff_font/devlj4/TNRB +OLD_FILES+=usr/share/groff_font/devlj4/TNRBI +OLD_FILES+=usr/share/groff_font/devlj4/TNRI +OLD_FILES+=usr/share/groff_font/devlj4/TNRR +OLD_FILES+=usr/share/groff_font/devlj4/TR +OLD_FILES+=usr/share/groff_font/devlj4/UB +OLD_FILES+=usr/share/groff_font/devlj4/UBI +OLD_FILES+=usr/share/groff_font/devlj4/UCB +OLD_FILES+=usr/share/groff_font/devlj4/UCBI +OLD_FILES+=usr/share/groff_font/devlj4/UCI +OLD_FILES+=usr/share/groff_font/devlj4/UCR +OLD_FILES+=usr/share/groff_font/devlj4/UI +OLD_FILES+=usr/share/groff_font/devlj4/UR +OLD_FILES+=usr/share/groff_font/devlj4/WINGDINGS +OLD_DIRS+=usr/share/groff_font/devlj4 +OLD_FILES+=usr/share/groff_font/devps/AB +OLD_FILES+=usr/share/groff_font/devps/ABI +OLD_FILES+=usr/share/groff_font/devps/AI +OLD_FILES+=usr/share/groff_font/devps/AR +OLD_FILES+=usr/share/groff_font/devps/BMB +OLD_FILES+=usr/share/groff_font/devps/BMBI +OLD_FILES+=usr/share/groff_font/devps/BMI +OLD_FILES+=usr/share/groff_font/devps/BMR +OLD_FILES+=usr/share/groff_font/devps/CB +OLD_FILES+=usr/share/groff_font/devps/CBI +OLD_FILES+=usr/share/groff_font/devps/CI +OLD_FILES+=usr/share/groff_font/devps/CR +OLD_FILES+=usr/share/groff_font/devps/DESC +OLD_FILES+=usr/share/groff_font/devps/EURO +OLD_FILES+=usr/share/groff_font/devps/HB +OLD_FILES+=usr/share/groff_font/devps/HBI +OLD_FILES+=usr/share/groff_font/devps/HI +OLD_FILES+=usr/share/groff_font/devps/HNB +OLD_FILES+=usr/share/groff_font/devps/HNBI +OLD_FILES+=usr/share/groff_font/devps/HNI +OLD_FILES+=usr/share/groff_font/devps/HNR +OLD_FILES+=usr/share/groff_font/devps/HR +OLD_FILES+=usr/share/groff_font/devps/Makefile +OLD_FILES+=usr/share/groff_font/devps/NB +OLD_FILES+=usr/share/groff_font/devps/NBI +OLD_FILES+=usr/share/groff_font/devps/NI +OLD_FILES+=usr/share/groff_font/devps/NR +OLD_FILES+=usr/share/groff_font/devps/PB +OLD_FILES+=usr/share/groff_font/devps/PBI +OLD_FILES+=usr/share/groff_font/devps/PI +OLD_FILES+=usr/share/groff_font/devps/PR +OLD_FILES+=usr/share/groff_font/devps/S +OLD_FILES+=usr/share/groff_font/devps/SS +OLD_FILES+=usr/share/groff_font/devps/TB +OLD_FILES+=usr/share/groff_font/devps/TBI +OLD_FILES+=usr/share/groff_font/devps/TI +OLD_FILES+=usr/share/groff_font/devps/TR +OLD_FILES+=usr/share/groff_font/devps/ZCMI +OLD_FILES+=usr/share/groff_font/devps/ZD +OLD_FILES+=usr/share/groff_font/devps/ZDR +OLD_FILES+=usr/share/groff_font/devps/afmname +OLD_FILES+=usr/share/groff_font/devps/dingbats.map +OLD_FILES+=usr/share/groff_font/devps/dingbats.rmap +OLD_FILES+=usr/share/groff_font/devps/download +OLD_FILES+=usr/share/groff_font/devps/freeeuro.pfa +OLD_FILES+=usr/share/groff_font/devps/lgreekmap +OLD_FILES+=usr/share/groff_font/devps/prologue +OLD_FILES+=usr/share/groff_font/devps/symbol.sed +OLD_FILES+=usr/share/groff_font/devps/symbolchars +OLD_FILES+=usr/share/groff_font/devps/symbolsl.afm +OLD_FILES+=usr/share/groff_font/devps/symbolsl.pfa +OLD_FILES+=usr/share/groff_font/devps/text.enc +OLD_FILES+=usr/share/groff_font/devps/textmap +OLD_FILES+=usr/share/groff_font/devps/zapfdr.pfa +OLD_DIRS+=usr/share/groff_font/devps +OLD_FILES+=usr/share/groff_font/devutf8/B +OLD_FILES+=usr/share/groff_font/devutf8/BI +OLD_FILES+=usr/share/groff_font/devutf8/CW +OLD_FILES+=usr/share/groff_font/devutf8/DESC +OLD_FILES+=usr/share/groff_font/devutf8/I +OLD_FILES+=usr/share/groff_font/devutf8/L +OLD_FILES+=usr/share/groff_font/devutf8/R +OLD_FILES+=usr/share/groff_font/devutf8/S +OLD_DIRS+=usr/share/groff_font/devutf8 +OLD_DIRS+=usr/share/groff_font +OLD_FILES+=usr/share/man/man1/addftinfo.1.gz +OLD_FILES+=usr/share/man/man1/afmtodit.1.gz +OLD_FILES+=usr/share/man/man1/checknr.1.gz +OLD_FILES+=usr/share/man/man1/colcrt.1.gz +OLD_FILES+=usr/share/man/man1/eqn.1.gz +OLD_FILES+=usr/share/man/man1/grn.1.gz +OLD_FILES+=usr/share/man/man1/grodvi.1.gz +OLD_FILES+=usr/share/man/man1/groff.1.gz +OLD_FILES+=usr/share/man/man1/grog.1.gz +OLD_FILES+=usr/share/man/man1/grolbp.1.gz +OLD_FILES+=usr/share/man/man1/grolj4.1.gz +OLD_FILES+=usr/share/man/man1/grops.1.gz +OLD_FILES+=usr/share/man/man1/grotty.1.gz +OLD_FILES+=usr/share/man/man1/hpftodit.1.gz +OLD_FILES+=usr/share/man/man1/indxbib.1.gz +OLD_FILES+=usr/share/man/man1/lkbib.1.gz +OLD_FILES+=usr/share/man/man1/lookbib.1.gz +OLD_FILES+=usr/share/man/man1/mmroff.1.gz +OLD_FILES+=usr/share/man/man1/neqn.1.gz +OLD_FILES+=usr/share/man/man1/nroff.1.gz +OLD_FILES+=usr/share/man/man1/pfbtops.1.gz +OLD_FILES+=usr/share/man/man1/pic.1.gz +OLD_FILES+=usr/share/man/man1/psroff.1.gz +OLD_FILES+=usr/share/man/man1/refer.1.gz +OLD_FILES+=usr/share/man/man1/tbl.1.gz +OLD_FILES+=usr/share/man/man1/tfmtodit.1.gz +OLD_FILES+=usr/share/man/man1/troff.1.gz +OLD_FILES+=usr/share/man/man1/vgrind.1.gz +OLD_FILES+=usr/share/man/man5/groff_font.5.gz +OLD_FILES+=usr/share/man/man5/groff_out.5.gz +OLD_FILES+=usr/share/man/man5/groff_tmac.5.gz +OLD_FILES+=usr/share/man/man5/lj4_font.5.gz +OLD_FILES+=usr/share/man/man5/tmac.5.gz +OLD_FILES+=usr/share/man/man5/vgrindefs.5.gz +OLD_FILES+=usr/share/man/man7/ditroff.7.gz +OLD_FILES+=usr/share/man/man7/groff.7.gz +OLD_FILES+=usr/share/man/man7/groff_char.7.gz +OLD_FILES+=usr/share/man/man7/groff_diff.7.gz +OLD_FILES+=usr/share/man/man7/groff_man.7.gz +OLD_FILES+=usr/share/man/man7/groff_mdoc.7.gz +OLD_FILES+=usr/share/man/man7/groff_me.7.gz +OLD_FILES+=usr/share/man/man7/groff_mm.7.gz +OLD_FILES+=usr/share/man/man7/groff_mmse.7.gz +OLD_FILES+=usr/share/man/man7/groff_ms.7.gz +OLD_FILES+=usr/share/man/man7/groff_trace.7.gz +OLD_FILES+=usr/share/man/man7/groff_www.7.gz +OLD_FILES+=usr/share/man/man7/mdoc.samples.7.gz +OLD_FILES+=usr/share/man/man7/me.7.gz +OLD_FILES+=usr/share/man/man7/mm.7.gz +OLD_FILES+=usr/share/man/man7/mmse.7.gz +OLD_FILES+=usr/share/man/man7/ms.7.gz +OLD_FILES+=usr/share/man/man7/orig_me.7.gz +OLD_FILES+=usr/share/man/man7/roff.7.gz +OLD_FILES+=usr/share/me/acm.me +OLD_FILES+=usr/share/me/chars.me +OLD_FILES+=usr/share/me/deltext.me +OLD_FILES+=usr/share/me/eqn.me +OLD_FILES+=usr/share/me/float.me +OLD_FILES+=usr/share/me/footnote.me +OLD_FILES+=usr/share/me/index.me +OLD_FILES+=usr/share/me/letterhead.me +OLD_FILES+=usr/share/me/local.me +OLD_FILES+=usr/share/me/null.me +OLD_FILES+=usr/share/me/refer.me +OLD_FILES+=usr/share/me/revisions +OLD_FILES+=usr/share/me/sh.me +OLD_FILES+=usr/share/me/tbl.me +OLD_FILES+=usr/share/me/thesis.me +OLD_DIRS+=usr/share/me +OLD_FILES+=usr/share/misc/vgrindefs +OLD_FILES+=usr/share/misc/vgrindefs.db +OLD_FILES+=usr/share/tmac/X.tmac +OLD_FILES+=usr/share/tmac/Xps.tmac +OLD_FILES+=usr/share/tmac/a4.tmac +OLD_FILES+=usr/share/tmac/an-old.tmac +OLD_FILES+=usr/share/tmac/an.tmac +OLD_FILES+=usr/share/tmac/andoc.tmac +OLD_FILES+=usr/share/tmac/composite.tmac +OLD_FILES+=usr/share/tmac/cp1047.tmac +OLD_FILES+=usr/share/tmac/devtag.tmac +OLD_FILES+=usr/share/tmac/doc.tmac +OLD_FILES+=usr/share/tmac/dvi.tmac +OLD_FILES+=usr/share/tmac/e.tmac +OLD_FILES+=usr/share/tmac/ec.tmac +OLD_FILES+=usr/share/tmac/eqnrc +OLD_FILES+=usr/share/tmac/europs.tmac +OLD_FILES+=usr/share/tmac/html-end.tmac +OLD_FILES+=usr/share/tmac/html.tmac +OLD_FILES+=usr/share/tmac/hyphen.ru +OLD_FILES+=usr/share/tmac/hyphen.us +OLD_FILES+=usr/share/tmac/hyphenex.us +OLD_FILES+=usr/share/tmac/koi8-r.tmac +OLD_FILES+=usr/share/tmac/latin1.tmac +OLD_FILES+=usr/share/tmac/latin2.tmac +OLD_FILES+=usr/share/tmac/latin9.tmac +OLD_FILES+=usr/share/tmac/lbp.tmac +OLD_FILES+=usr/share/tmac/lj4.tmac +OLD_FILES+=usr/share/tmac/m.tmac +OLD_FILES+=usr/share/tmac/man.local +OLD_FILES+=usr/share/tmac/man.tmac +OLD_FILES+=usr/share/tmac/mandoc.tmac +OLD_FILES+=usr/share/tmac/mdoc.local +OLD_FILES+=usr/share/tmac/mdoc.tmac +OLD_FILES+=usr/share/tmac/mdoc/doc-common +OLD_FILES+=usr/share/tmac/mdoc/doc-ditroff +OLD_FILES+=usr/share/tmac/mdoc/doc-nroff +OLD_FILES+=usr/share/tmac/mdoc/doc-syms +OLD_FILES+=usr/share/tmac/mdoc/fr.ISO8859-1 +OLD_FILES+=usr/share/tmac/mdoc/ru.KOI8-R +OLD_DIRS+=usr/share/tmac/mdoc +OLD_FILES+=usr/share/tmac/me.tmac +OLD_FILES+=usr/share/tmac/mm/0.MT +OLD_FILES+=usr/share/tmac/mm/4.MT +OLD_FILES+=usr/share/tmac/mm/5.MT +OLD_FILES+=usr/share/tmac/mm/locale +OLD_FILES+=usr/share/tmac/mm/mm.tmac +OLD_FILES+=usr/share/tmac/mm/mmse.tmac +OLD_FILES+=usr/share/tmac/mm/ms.cov +OLD_FILES+=usr/share/tmac/mm/se_locale +OLD_FILES+=usr/share/tmac/mm/se_ms.cov +OLD_DIRS+=usr/share/tmac/mm +OLD_FILES+=usr/share/tmac/ms.tmac +OLD_FILES+=usr/share/tmac/mse.tmac +OLD_FILES+=usr/share/tmac/papersize.tmac +OLD_FILES+=usr/share/tmac/pic.tmac +OLD_FILES+=usr/share/tmac/ps.tmac +OLD_FILES+=usr/share/tmac/psatk.tmac +OLD_FILES+=usr/share/tmac/psold.tmac +OLD_FILES+=usr/share/tmac/pspic.tmac +OLD_FILES+=usr/share/tmac/s.tmac +OLD_FILES+=usr/share/tmac/safer.tmac +OLD_FILES+=usr/share/tmac/tmac.orig_me +OLD_FILES+=usr/share/tmac/tmac.vgrind +OLD_FILES+=usr/share/tmac/trace.tmac +OLD_FILES+=usr/share/tmac/troffrc +OLD_FILES+=usr/share/tmac/troffrc-end +OLD_FILES+=usr/share/tmac/tty-char.tmac +OLD_FILES+=usr/share/tmac/tty.tmac +OLD_FILES+=usr/share/tmac/unicode.tmac +OLD_FILES+=usr/share/tmac/www.tmac +OLD_DIRS+=usr/share/tmac +# 20170607: remove incorrect atf_check(1) manpage link +OLD_FILES+=usr/share/man/man1/atf_check.1.gz # 20170601: remove stale manpage OLD_FILES+=usr/share/man/man2/cap_rights_get.2.gz # 20170601: old libifconfig and libifc @@ -177,60 +663,109 @@ OLD_FILES+=usr/share/doc/papers/newvm.ascii.gz OLD_FILES+=usr/share/doc/papers/releng.ascii.gz OLD_FILES+=usr/share/doc/papers/sysperf.ascii.gz OLD_FILES+=usr/share/doc/papers/timecounter.ascii.gz +OLD_DIRS+=usr/share/doc/papers OLD_FILES+=usr/share/doc/psd/01.cacm/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/01.cacm OLD_FILES+=usr/share/doc/psd/02.implement/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/02.implement OLD_FILES+=usr/share/doc/psd/03.iosys/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/03.iosys OLD_FILES+=usr/share/doc/psd/04.uprog/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/04.uprog OLD_FILES+=usr/share/doc/psd/05.sysman/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/05.sysman OLD_FILES+=usr/share/doc/psd/06.Clang/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/06.Clang OLD_FILES+=usr/share/doc/psd/12.make/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/12.make OLD_FILES+=usr/share/doc/psd/13.rcs/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/13.rcs OLD_FILES+=usr/share/doc/psd/13.rcs/rcs_func.ascii.gz +OLD_DIRS+=usr/share/doc/psd/13.rcs OLD_FILES+=usr/share/doc/psd/15.yacc/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/15.yacc OLD_FILES+=usr/share/doc/psd/16.lex/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/16.lex OLD_FILES+=usr/share/doc/psd/17.m4/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/17.m4 OLD_FILES+=usr/share/doc/psd/18.gprof/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/18.gprof OLD_FILES+=usr/share/doc/psd/20.ipctut/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/20.ipctut OLD_FILES+=usr/share/doc/psd/21.ipc/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/21.ipc OLD_FILES+=usr/share/doc/psd/22.rpcgen/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/22.rpcgen OLD_FILES+=usr/share/doc/psd/23.rpc/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/23.rpc OLD_FILES+=usr/share/doc/psd/24.xdr/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/24.xdr OLD_FILES+=usr/share/doc/psd/25.xdrrfc/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/25.xdrrfc OLD_FILES+=usr/share/doc/psd/26.rpcrfc/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/26.rpcrfc OLD_FILES+=usr/share/doc/psd/27.nfsrfc/paper.ascii.gz +OLD_DIRS+=usr/share/doc/psd/27.nfsrfc OLD_FILES+=usr/share/doc/psd/Title.ascii.gz OLD_FILES+=usr/share/doc/psd/contents.ascii.gz +OLD_DIRS+=usr/share/doc/psd/ OLD_FILES+=usr/share/doc/smm/01.setup/paper.ascii.gz +OLD_DIRS+=usr/share/doc/smm/01.setup OLD_FILES+=usr/share/doc/smm/02.config/paper.ascii.gz +OLD_DIRS+=usr/share/doc/smm/02.config OLD_FILES+=usr/share/doc/smm/03.fsck/paper.ascii.gz +OLD_DIRS+=usr/share/doc/smm/03.fsck OLD_FILES+=usr/share/doc/smm/04.quotas/paper.ascii.gz +OLD_DIRS+=usr/share/doc/smm/04.quotas OLD_FILES+=usr/share/doc/smm/05.fastfs/paper.ascii.gz +OLD_DIRS+=usr/share/doc/smm/05.fastfs OLD_FILES+=usr/share/doc/smm/06.nfs/paper.ascii.gz +OLD_DIRS+=usr/share/doc/smm/06.nfs OLD_FILES+=usr/share/doc/smm/07.lpd/paper.ascii.gz +OLD_DIRS+=usr/share/doc/smm/07.lpd OLD_FILES+=usr/share/doc/smm/08.sendmailop/paper.ascii.gz +OLD_DIRS+=usr/share/doc/smm/08.sendmailop OLD_FILES+=usr/share/doc/smm/11.timedop/paper.ascii.gz +OLD_DIRS+=usr/share/doc/smm/11.timedop OLD_FILES+=usr/share/doc/smm/12.timed/paper.ascii.gz +OLD_DIRS+=usr/share/doc/smm/12.timed OLD_FILES+=usr/share/doc/smm/18.net/paper.ascii.gz +OLD_DIRS+=usr/share/doc/smm/18.net OLD_FILES+=usr/share/doc/smm/Title.ascii.gz OLD_FILES+=usr/share/doc/smm/contents.ascii.gz +OLD_DIRS+=usr/share/doc/smm OLD_FILES+=usr/share/doc/usd/04.csh/paper.ascii.gz +OLD_DIRS+=usr/share/doc/usd/04.csh OLD_FILES+=usr/share/doc/usd/05.dc/paper.ascii.gz +OLD_DIRS+=usr/share/doc/usd/05.dc OLD_FILES+=usr/share/doc/usd/06.bc/paper.ascii.gz +OLD_DIRS+=usr/share/doc/usd/06.bc OLD_FILES+=usr/share/doc/usd/07.mail/paper.ascii.gz +OLD_DIRS+=usr/share/doc/usd/07.mail OLD_FILES+=usr/share/doc/usd/10.exref/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/10.exref/summary.ascii.gz +OLD_DIRS+=usr/share/doc/usd/10.exref OLD_FILES+=usr/share/doc/usd/11.edit/paper.ascii.gz +OLD_DIRS+=usr/share/doc/usd/11.edit OLD_FILES+=usr/share/doc/usd/12.vi/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/12.vi/summary.ascii.gz OLD_FILES+=usr/share/doc/usd/12.vi/viapwh.ascii.gz +OLD_DIRS+=usr/share/doc/usd/12.vi OLD_FILES+=usr/share/doc/usd/13.viref/paper.ascii.gz +OLD_DIRS+=usr/share/doc/usd/13.viref OLD_FILES+=usr/share/doc/usd/18.msdiffs/paper.ascii.gz +OLD_DIRS+=usr/share/doc/usd/18.msdiffs OLD_FILES+=usr/share/doc/usd/19.memacros/paper.ascii.gz +OLD_DIRS+=usr/share/doc/usd/19.memacros OLD_FILES+=usr/share/doc/usd/20.meref/paper.ascii.gz +OLD_DIRS+=usr/share/doc/usd/20.meref OLD_FILES+=usr/share/doc/usd/21.troff/paper.ascii.gz +OLD_DIRS+=usr/share/doc/usd/21.troff OLD_FILES+=usr/share/doc/usd/22.trofftut/paper.ascii.gz +OLD_DIRS+=usr/share/doc/usd/22.trofftut OLD_FILES+=usr/share/doc/usd/Title.ascii.gz OLD_FILES+=usr/share/doc/usd/contents.ascii.gz +OLD_DIRS+=usr/share/doc/usd # 20170523: 64-bit inode support, library version bumps OLD_LIBS+=lib/libzfs.so.2 OLD_LIBS+=usr/lib/libarchive.so.6 diff --git a/UPDATING b/UPDATING index ce32b102ed3d..75611981754a 100644 --- a/UPDATING +++ b/UPDATING @@ -81,6 +81,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: For further comments/feedback, poke adrian@ . +20170531: + The GNU roff toolchain has been removed from base. To render manpages + which are not supported by mandoc(1), man(1) can fallback on GNU roff + from ports (and recommends to install it). + To render roff(7) documents, consider using GNU roff from ports or the + heirloom doctools roff toolchain from ports via pkg install groff or + via pkg install heirloom-doctools. + 20170523: The "ino64" 64-bit inode project has been committed, which extends a number of types to 64 bits. Upgrading in place requires care and diff --git a/bin/cat/tests/Makefile b/bin/cat/tests/Makefile index 92e358245077..92e16aea1732 100644 --- a/bin/cat/tests/Makefile +++ b/bin/cat/tests/Makefile @@ -6,8 +6,14 @@ NETBSD_ATF_TESTS_SH= cat_test ${PACKAGE}FILES+= d_align.in ${PACKAGE}FILES+= d_align.out +${PACKAGE}FILES+= d_b_output.in +${PACKAGE}FILES+= d_b_output.out ${PACKAGE}FILES+= d_se_output.in ${PACKAGE}FILES+= d_se_output.out +${PACKAGE}FILES+= d_s_output.in +${PACKAGE}FILES+= d_s_output.out +${PACKAGE}FILES+= d_vt_output.in +${PACKAGE}FILES+= d_vt_output.out .include diff --git a/bin/chmod/Makefile b/bin/chmod/Makefile index 58b1afc0aff1..3b2c2d1ecac6 100644 --- a/bin/chmod/Makefile +++ b/bin/chmod/Makefile @@ -1,7 +1,11 @@ # @(#)Makefile 8.1 (Berkeley) 5/31/93 # $FreeBSD$ +.include + PACKAGE=runtime PROG= chmod +SUBDIR.${MK_TESTS}+= tests + .include diff --git a/bin/chmod/tests/Makefile b/bin/chmod/tests/Makefile new file mode 100644 index 000000000000..1cf107f9d35b --- /dev/null +++ b/bin/chmod/tests/Makefile @@ -0,0 +1,5 @@ +# $FreeBSD$ + +ATF_TESTS_SH+= chmod_test + +.include diff --git a/bin/chmod/tests/chmod_test.sh b/bin/chmod/tests/chmod_test.sh new file mode 100755 index 000000000000..4a6a6a3d21ef --- /dev/null +++ b/bin/chmod/tests/chmod_test.sh @@ -0,0 +1,160 @@ +# +# Copyright (c) 2017 Dell EMC +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ + +atf_test_case RH_flag +RH_flag_head() +{ + atf_set "descr" "Verify that setting modes recursively via -R doesn't " \ + "affect symlinks specified via the arguments when -H " \ + "is specified" +} +RH_flag_body() +{ + atf_check mkdir -m 0777 -p A/B + atf_check ln -s B A/C + atf_check chmod -h 0777 A/C + atf_check -o inline:'40755\n40777\n120777\n' stat -f '%p' A A/B A/C + atf_check chmod -RH 0700 A + atf_check -o inline:'40700\n40700\n120700\n' stat -f '%p' A A/B A/C + atf_check chmod -RH 0600 A/C + atf_check -o inline:'40700\n40600\n120700\n' stat -f '%p' A A/B A/C +} + +atf_test_case RL_flag +RL_flag_head() +{ + atf_set "descr" "Verify that setting modes recursively via -R doesn't " \ + "affect symlinks specified via the arguments when -L " \ + "is specified" +} +RL_flag_body() +{ + atf_check mkdir -m 0777 -p A/B + atf_check ln -s B A/C + atf_check chmod -h 0777 A/C + atf_check -o inline:'40755\n40777\n120777\n' stat -f '%p' A A/B A/C + atf_check chmod -RL 0700 A + atf_check -o inline:'40700\n40700\n120777\n' stat -f '%p' A A/B A/C + atf_check chmod -RL 0600 A/C + atf_check -o inline:'40700\n40600\n120777\n' stat -f '%p' A A/B A/C +} + +atf_test_case RP_flag +RP_flag_head() +{ + atf_set "descr" "Verify that setting modes recursively via -R doesn't " \ + "affect symlinks specified via the arguments when -P " \ + "is specified" +} +RP_flag_body() +{ + atf_check mkdir -m 0777 -p A/B + atf_check ln -s B A/C + atf_check chmod -h 0777 A/C + atf_check -o inline:'40755\n40777\n120777\n' stat -f '%p' A A/B A/C + atf_check chmod -RP 0700 A + atf_check -o inline:'40700\n40700\n120700\n' stat -f '%p' A A/B A/C + atf_check chmod -RP 0600 A/C + atf_check -o inline:'40700\n40700\n120600\n' stat -f '%p' A A/B A/C +} + +atf_test_case f_flag cleanup +f_flag_head() +{ + atf_set "descr" "Verify that setting a mode for a file with -f " \ + "doesn't emit an error message/exit with a non-zero " \ + "code" +} + +f_flag_body() +{ + atf_check truncate -s 0 foo bar + atf_check chmod 0750 foo bar + atf_check chflags uchg foo + atf_check -e not-empty -s not-exit:0 chmod 0700 foo bar + atf_check -o inline:'100750\n100700\n' stat -f '%p' foo bar + atf_check -s exit:0 chmod -f 0600 foo bar + atf_check -o inline:'100750\n100600\n' stat -f '%p' foo bar +} + +f_flag_cleanup() +{ + atf_check chflags 0 foo +} + +atf_test_case h_flag +h_flag_head() +{ + atf_set "descr" "Verify that setting a mode for a file with -f " \ + "doesn't emit an error message/exit with a non-zero " \ + "code" +} + +h_flag_body() +{ + atf_check truncate -s 0 foo + atf_check chmod 0600 foo + atf_check -o inline:'100600\n' stat -f '%p' foo + umask 0077 + atf_check ln -s foo bar + atf_check -o inline:'100600\n120700\n' stat -f '%p' foo bar + atf_check chmod -h 0500 bar + atf_check -o inline:'100600\n120500\n' stat -f '%p' foo bar + atf_check chmod 0660 bar + atf_check -o inline:'100660\n120500\n' stat -f '%p' foo bar +} + +atf_test_case v_flag +v_flag_head() +{ + atf_set "descr" "Verify that setting a mode with -v emits the file when " \ + "doesn't emit an error message/exit with a non-zero " \ + "code" +} +v_flag_body() +{ + atf_check truncate -s 0 foo bar + atf_check chmod 0600 foo + atf_check chmod 0750 bar + atf_check -o 'inline:bar\n' chmod -v 0600 foo bar + atf_check chmod -v 0600 foo bar + for f in foo bar; do + echo "$f: 0100600 [-rw------- ] -> 0100700 [-rwx------ ]"; + done > output.txt + atf_check -o file:output.txt chmod -vv 0700 foo bar + atf_check chmod -vv 0700 foo bar +} + +atf_init_test_cases() +{ + atf_add_test_case RH_flag + atf_add_test_case RL_flag + atf_add_test_case RP_flag + atf_add_test_case f_flag + atf_add_test_case h_flag + atf_add_test_case v_flag +} diff --git a/bin/dd/tests/dd2_test.sh b/bin/dd/tests/dd2_test.sh index 80b9fe224de5..c0b33fc17226 100755 --- a/bin/dd/tests/dd2_test.sh +++ b/bin/dd/tests/dd2_test.sh @@ -26,6 +26,27 @@ # $FreeBSD$ +atf_test_case max_seek +max_seek_head() +{ + atf_set "descr" "dd(1) can seek by the maximum amount" +} +max_seek_body() +{ + case `df -T . | tail -n 1 | cut -wf 2` in + "ufs") + atf_skip "UFS's maximum file size is too small";; + "zfs") ;; # ZFS is fine + "tmpfs") + atf_skip "tmpfs can't create arbitrarily large spare files";; + *) atf_skip "Unknown file system";; + esac + + touch f.in + seek=`echo "2^63 / 4096 - 1" | bc` + atf_check -s exit:0 -e ignore dd if=f.in of=f.out bs=4096 seek=$seek +} + atf_test_case seek_overflow seek_overflow_head() { @@ -33,14 +54,7 @@ seek_overflow_head() } seek_overflow_body() { - atf_expect_fail "fails with 'dd: truncating f.out: File too large' - bug 219757" - touch f.in - # Positive tests - seek=`echo "2^63 / 4096 - 1" | bc` - atf_check -s exit:0 -e ignore dd if=f.in of=f.out bs=4096 seek=$seek - - # Negative tests seek=`echo "2^63 / 4096" | bc` atf_check -s not-exit:0 -e match:"seek offsets cannot be larger than" \ dd if=f.in of=f.out bs=4096 seek=$seek @@ -50,5 +64,6 @@ seek_overflow_body() atf_init_test_cases() { - atf_add_test_case seek_overflow + atf_add_test_case max_seek + atf_add_test_case seek_overflow } diff --git a/bin/echo/Makefile b/bin/echo/Makefile index 5d48e2146d98..4b5917d912eb 100644 --- a/bin/echo/Makefile +++ b/bin/echo/Makefile @@ -1,7 +1,13 @@ # @(#)Makefile 8.1 (Berkeley) 5/31/93 # $FreeBSD$ +.include + PACKAGE=runtime PROG= echo +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif + .include diff --git a/bin/echo/tests/Makefile b/bin/echo/tests/Makefile new file mode 100644 index 000000000000..5957ecbc1fa1 --- /dev/null +++ b/bin/echo/tests/Makefile @@ -0,0 +1,5 @@ +# $FreeBSD$ + +ATF_TESTS_SH+= echo_test + +.include diff --git a/share/me/strip.sed b/bin/echo/tests/echo_test.sh similarity index 54% rename from share/me/strip.sed rename to bin/echo/tests/echo_test.sh index 3d80bf7cf873..ddfd8903beac 100644 --- a/share/me/strip.sed +++ b/bin/echo/tests/echo_test.sh @@ -1,7 +1,6 @@ -#! /bin/sed -f # -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. +# Copyright 2017 Shivansh Rai +# All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -11,18 +10,11 @@ # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. -# 3. All advertising materials mentioning features or use of this software -# must display the following acknowledgement: -# This product includes software developed by the University of -# California, Berkeley and its contributors. -# 4. Neither the name of the University nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. # -# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) @@ -31,14 +23,33 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# @(#)strip.sed 8.1 (Berkeley) 6/5/93 +# $FreeBSD$ # -/%beginstrip%/{ - h - s/.*/.\\" This version has had comments stripped; an unstripped version is available./p - g +atf_test_case n_output +n_output_head() { + atf_set "descr" "Verify that echo(1) does not print the trailing " \ + "newline character with option '-n'" +} + +n_output_body() { + atf_check -s ignore -o inline:"Hello world" \ + /bin/echo -n "Hello world" +} + +atf_test_case append_c_output +append_c_output_head() { + atf_set "descr" "Verify that echo(1) does not print the trailing newline " \ + "character when '\c' is appended to the end of the string" +} + +append_c_output_body() { + atf_check -s ignore -o inline:"Hello world" \ + /bin/echo "Hello world\c" +} + +atf_init_test_cases() +{ + atf_add_test_case n_output + atf_add_test_case append_c_output } -/%beginstrip%/,$s/[. ][ ]*\\".*// -/^$/d -/\\n@/d diff --git a/bin/ln/Makefile b/bin/ln/Makefile index d7c8b46fb0a0..48ef284b4f1b 100644 --- a/bin/ln/Makefile +++ b/bin/ln/Makefile @@ -1,6 +1,8 @@ # @(#)Makefile 8.2 (Berkeley) 5/31/93 # $FreeBSD$ +.include + PACKAGE=runtime PROG= ln MAN= ln.1 symlink.7 @@ -8,4 +10,8 @@ MAN= ln.1 symlink.7 LINKS= ${BINDIR}/ln ${BINDIR}/link MLINKS= ln.1 link.1 +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif + .include diff --git a/bin/ln/tests/Makefile b/bin/ln/tests/Makefile new file mode 100644 index 000000000000..7ac99a947560 --- /dev/null +++ b/bin/ln/tests/Makefile @@ -0,0 +1,5 @@ +# $FreeBSD$ + +ATF_TESTS_SH+= ln_test + +.include diff --git a/bin/ln/tests/ln_test.sh b/bin/ln/tests/ln_test.sh new file mode 100644 index 000000000000..f059f56c950a --- /dev/null +++ b/bin/ln/tests/ln_test.sh @@ -0,0 +1,217 @@ +# +# Copyright 2017 Shivansh Rai +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +set_umask() +{ + if ! umask 022; then + atf_fail "setting umask failed" + fi +} + +atf_test_case L_flag +L_flag_head() +{ + atf_set "descr" "Verify that when creating a hard link to a " \ + "symbolic link, '-L' option creates a hard" \ + "link to the target of the symbolic link" +} + +L_flag_body() +{ + set_umask + atf_check touch A + atf_check ln -s A B + atf_check ln -L B C + stat_A=$(stat -f %i A) + stat_C=$(stat -f %i C) + atf_check_equal "$stat_A" "$stat_C" + atf_check -o inline:'B: symbolic link to A\n' file B +} + +atf_test_case P_flag +P_flag_head() +{ + atf_set "descr" "Verify that when creating a hard link to a " \ + "symbolic link, '-P' option creates a hard " \ + "link to the symbolic link itself" +} + +P_flag_body() +{ + set_umask + atf_check touch A + atf_check ln -s A B + atf_check ln -P B C + stat_B=$(stat -f %i B) + stat_C=$(stat -f %i C) + atf_check_equal "$stat_B" "$stat_C" +} + +atf_test_case f_flag +f_flag_head() +{ + atf_set "descr" "Verify that if the target file already exists, " \ + "'-f' option unlinks it so that link may occur" +} + +f_flag_body() +{ + set_umask + atf_check touch A B + atf_check ln -f A B + stat_A=$(stat -f %i A) + stat_B=$(stat -f %i B) + atf_check_equal "$stat_A" "$stat_B" +} + +atf_test_case target_exists_hard +target_exists_hard_head() +{ + atf_set "descr" "Verify whether creating a hard link fails if the " \ + "target file already exists" +} + +target_exists_hard_body() +{ + atf_check touch A B + atf_check -s exit:1 -e inline:'ln: B: File exists\n' \ + ln A B +} + +atf_test_case target_exists_symbolic +target_exists_symbolic_head() +{ + atf_set "descr" "Verify whether creating a symbolic link fails if " \ + "the target file already exists" +} + +target_exists_symbolic_body() +{ + atf_check touch A B + atf_check -s exit:1 -e inline:'ln: B: File exists\n' \ + ln -s A B +} + +atf_test_case shf_flag_dir +shf_flag_dir_head() { + atf_set "descr" "Verify that if the target directory is a symbolic " \ + "link, '-shf' option prevents following the link" +} + +shf_flag_dir_body() +{ + atf_check mkdir -m 0777 A B + atf_check ln -s A C + atf_check ln -shf B C + atf_check -o inline:'C: symbolic link to B\n' file C +} + +atf_test_case snf_flag_dir +snf_flag_dir_head() { + atf_set "descr" "Verify that if the target directory is a symbolic " \ + "link, '-snf' option prevents following the link" +} + +snf_flag_dir_body() +{ + atf_check mkdir -m 0777 A B + atf_check ln -s A C + atf_check ln -snf B C + atf_check -o inline:'C: symbolic link to B\n' file C +} + +atf_test_case sf_flag +sf_flag_head() +{ + atf_set "descr" "Verify that if the target file already exists, " \ + "'-sf' option unlinks it and creates a symbolic link " \ + "to the source file" +} + +sf_flag_body() +{ + atf_check touch A B + atf_check ln -sf A B + atf_check -o inline:'B: symbolic link to A\n' file B +} + +atf_test_case s_flag +s_flag_head() +{ + atf_set "descr" "Verify that '-s' option creates a symbolic link" +} + +s_flag_body() +{ + set_umask + atf_check touch A + atf_check ln -s A B + atf_check -o inline:'B: symbolic link to A\n' file B +} + +atf_test_case s_flag_broken +s_flag_broken_head() +{ + atf_set "descr" "Verify that if the source file does not exists, '-s' " \ + "option creates a broken symbolic link to the source file" +} + +s_flag_broken_body() +{ + atf_check ln -s A B + atf_check -o inline:'B: broken symbolic link to A\n' file B +} + +atf_test_case sw_flag +sw_flag_head() +{ + atf_set "descr" "Verify that '-sw' option produces a warning if the " \ + "source of a symbolic link does not currently exist" +} + +sw_flag_body() +{ + atf_check -s exit:0 -e inline:'ln: warning: A: No such file or directory\n' \ + ln -sw A B + atf_check -o inline:'B: broken symbolic link to A\n' file B +} + +atf_init_test_cases() +{ + atf_add_test_case L_flag + atf_add_test_case P_flag + atf_add_test_case f_flag + atf_add_test_case target_exists_hard + atf_add_test_case target_exists_symbolic + atf_add_test_case shf_flag_dir + atf_add_test_case snf_flag_dir + atf_add_test_case sf_flag + atf_add_test_case s_flag + atf_add_test_case s_flag_broken + atf_add_test_case sw_flag +} diff --git a/bin/pkill/pkill.1 b/bin/pkill/pkill.1 index 70b791213895..44df82f1e53b 100644 --- a/bin/pkill/pkill.1 +++ b/bin/pkill/pkill.1 @@ -29,7 +29,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd August 21, 2015 +.Dd June 5, 2017 .Dt PKILL 1 .Os .Sh NAME @@ -176,6 +176,8 @@ Select only the newest (most recently started) of the matching processes. .It Fl o Select only the oldest (least recently started) of the matching processes. .It Fl q +For +.Nm pgrep , Do not write anything to standard output. .It Fl s Ar sid Restrict matches to processes with a session ID in the comma-separated diff --git a/bin/sh/builtins.def b/bin/sh/builtins.def index 7d170f349947..a3cea9f6e441 100644 --- a/bin/sh/builtins.def +++ b/bin/sh/builtins.def @@ -41,6 +41,9 @@ # without job control. # The -h flag specifies that this command is to be excluded from systems # based on the NO_HISTORY compile-time symbol. +# The -n flag specifies that this command can safely be run in the same +# process when it is the only command in a command substitution. Some +# commands have special logic defined in safe_builtin(). # The -s flag specifies that this is a POSIX 'special built-in' command. # The rest of the line specifies the command name or names used to run the # command. The entry for bltincmd, which is run when the user does not specify @@ -48,43 +51,43 @@ # # NOTE: bltincmd must come first! -bltincmd builtin +bltincmd -n builtin aliascmd alias bgcmd -j bg bindcmd bind breakcmd -s break -s continue cdcmd cd chdir -commandcmd command +commandcmd -n command dotcmd -s . -echocmd echo +echocmd -n echo evalcmd -s eval execcmd -s exec exitcmd -s exit letcmd let exportcmd -s export -s readonly #exprcmd expr -falsecmd false +falsecmd -n false fgcmd -j fg freebsd_wordexpcmd freebsd_wordexp getoptscmd getopts hashcmd hash histcmd -h fc -jobidcmd jobid -jobscmd jobs -killcmd kill +jobidcmd -n jobid +jobscmd -n jobs +killcmd -n kill localcmd local -printfcmd printf -pwdcmd pwd +printfcmd -n printf +pwdcmd -n pwd readcmd read returncmd -s return setcmd -s set setvarcmd setvar shiftcmd -s shift -testcmd test [ -timescmd -s times +testcmd -n test [ +timescmd -n -s times trapcmd -s trap -truecmd -s : true -typecmd type +truecmd -n -s : true +typecmd -n type ulimitcmd ulimit umaskcmd umask unaliascmd unalias diff --git a/bin/sh/error.h b/bin/sh/error.h index 7743a2ae2bd3..1872e8377333 100644 --- a/bin/sh/error.h +++ b/bin/sh/error.h @@ -73,7 +73,7 @@ extern volatile sig_atomic_t intpending; #define INTOFF suppressint++ #define INTON { if (--suppressint == 0 && intpending) onint(); } #define is_int_on() suppressint -#define SETINTON(s) suppressint = (s) +#define SETINTON(s) do { suppressint = (s); if (suppressint == 0 && intpending) onint(); } while (0) #define FORCEINTON {suppressint = 0; if (intpending) onint();} #define SET_PENDING_INT intpending = 1 #define CLEAR_PENDING_INT intpending = 0 diff --git a/bin/sh/eval.c b/bin/sh/eval.c index 9386b16f0b82..7898693c968c 100644 --- a/bin/sh/eval.c +++ b/bin/sh/eval.c @@ -470,6 +470,7 @@ evalredir(union node *n, int flags) if (e == EXERROR || e == EXEXEC) { if (in_redirect) { exitstatus = 2; + FORCEINTON; return; } } @@ -799,11 +800,8 @@ xtracecommand(struct arglist *varlist, int argc, char **argv) static int safe_builtin(int idx, int argc, char **argv) { - if (idx == BLTINCMD || idx == COMMANDCMD || idx == ECHOCMD || - idx == FALSECMD || idx == JOBIDCMD || idx == JOBSCMD || - idx == KILLCMD || idx == PRINTFCMD || idx == PWDCMD || - idx == TESTCMD || idx == TIMESCMD || idx == TRUECMD || - idx == TYPECMD) + /* Generated from builtins.def. */ + if (safe_builtin_always(idx)) return (1); if (idx == EXPORTCMD || idx == TRAPCMD || idx == ULIMITCMD || idx == UMASKCMD) diff --git a/bin/sh/histedit.c b/bin/sh/histedit.c index b6ea93e97848..8e2f927cfe06 100644 --- a/bin/sh/histedit.c +++ b/bin/sh/histedit.c @@ -376,10 +376,10 @@ histcmd(int argc, char **argv __unused) char *editcmd; fclose(efp); + INTON; editcmd = stalloc(strlen(editor) + strlen(editfile) + 2); sprintf(editcmd, "%s %s", editor, editfile); evalstring(editcmd, 0); /* XXX - should use no JC command */ - INTON; readcmdfile(editfile); /* XXX - should read back - quick tst */ unlink(editfile); } diff --git a/bin/sh/mkbuiltins b/bin/sh/mkbuiltins index f449de4b1edc..fb77f509b0ba 100755 --- a/bin/sh/mkbuiltins +++ b/bin/sh/mkbuiltins @@ -66,6 +66,9 @@ const unsigned char builtincmd[] = {' awk '{ for (i = 2 ; i <= NF ; i++) { if ($i == "-s") { spc = 1; + } else if ($i == "-n") { + # Handled later for builtins.h + continue } else { printf "\t\"\\%03o\\%03o%s\"\n", length($i), (spc ? 128 : 0) + NR-1, $i spc = 0; @@ -90,4 +93,45 @@ extern int (*const builtinfunc[])(int, char **); extern const unsigned char builtincmd[]; ' awk '{ printf "int %s(int, char **);\n", $1}' $temp + +# Build safe_builtin_always() +cat < diff --git a/bin/sh/tests/errors/redirection-error8.0 b/bin/sh/tests/errors/redirection-error8.0 new file mode 100644 index 000000000000..91595457831e --- /dev/null +++ b/bin/sh/tests/errors/redirection-error8.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +$SH -c '{ { :; } /dev/null || kill -INT $$; echo continued' +r=$? +[ "$r" -gt 128 ] && [ "$(kill -l "$r")" = INT ] diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.stddev.normalize.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.stddev.normalize.d new file mode 100644 index 000000000000..50c14d3cedb0 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.stddev.normalize.d @@ -0,0 +1,46 @@ +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright 2017 Panzura. All rights reserved. + */ + +/* + * ASSERTION: + * Positive test for normalization() of stddev() + * + * SECTION: Aggregations/Normalization + * + */ + +#pragma D option quiet +#pragma D option aggrate=1ms +#pragma D option switchrate=50ms + +BEGIN +{ + i = 0; +} + +tick-100ms +/i < 11/ +{ + @ = stddev(i * 100); + i++; +} + +tick-100ms +/i == 11/ +{ + printf("normalized data:\n"); + normalize(@, 10); + exit(0); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.stddev.normalize.d.out b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.stddev.normalize.d.out new file mode 100644 index 000000000000..a629b1fdb5c2 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.stddev.normalize.d.out @@ -0,0 +1,3 @@ +normalized data: + + 31 diff --git a/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 b/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 index 2b1d7218ca64..9766a18a8aab 100644 --- a/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 +++ b/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 @@ -23,7 +23,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 31, 2016 +.Dd June 7, 2017 .Dt ZPOOL-FEATURES 7 .Os .Sh NAME @@ -48,13 +48,15 @@ to send file systems between pools. Since most features can be enabled independently of each other the on\-disk format of the pool is specified by the set of all features marked as .Sy active -on the pool. If the pool was created by another software version this set may +on the pool. +If the pool was created by another software version this set may include unsupported features. .Ss Identifying features Every feature has a guid of the form .Sy com.example:feature_name . The reverse DNS name ensures that the feature's guid is unique across all ZFS -implementations. When unsupported features are encountered on a pool they will +implementations. +When unsupported features are encountered on a pool they will be identified by their guids. Refer to the documentation for the ZFS implementation that created the pool for information about those features. @@ -283,7 +285,8 @@ configuration. .El .Pp This features allows ZFS to maintain more information about how free space -is organized within the pool. If this feature is +is organized within the pool. +If this feature is .Sy enabled , ZFS will set this feature to @@ -337,7 +340,8 @@ All bookmarks in the pool can be listed by running .El .Pp Once this feature is enabled ZFS records the transaction group number -in which new features are enabled. This has no user-visible impact, +in which new features are enabled. +This has no user-visible impact, but other features may depend on this feature. .Pp This feature becomes @@ -493,10 +497,6 @@ and will return to being once all filesystems that have ever had their checksum set to .Sy sha512 are destroyed. -.Pp -Booting off of a pools utilizing SHA-512/256 is -.Em NOT -yet supported. .It Sy skein .Bl -column "READ\-ONLY COMPATIBLE" "org.illumos:skein" .It GUID Ta org.illumos:skein @@ -539,12 +539,6 @@ and will return to being once all filesystems that have ever had their checksum set to .Sy skein are destroyed. -.Pp -Booting off of pools using -.Sy skein -is -.Em NOT -supported. .El .Sh SEE ALSO .Xr zpool 8 diff --git a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c index f25b744a0207..6df8cd02b8fb 100644 --- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c +++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c @@ -3316,6 +3316,7 @@ zfs_create(libzfs_handle_t *hdl, const char *path, zfs_type_t type, char errbuf[1024]; uint64_t zoned; enum lzc_dataset_type ost; + zpool_handle_t *zpool_handle; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot create '%s'"), path); @@ -3355,7 +3356,8 @@ zfs_create(libzfs_handle_t *hdl, const char *path, zfs_type_t type, if (p != NULL) *p = '\0'; - zpool_handle_t *zpool_handle = zpool_open(hdl, pool_path); + if ((zpool_handle = zpool_open(hdl, pool_path)) == NULL) + return (-1); if (props && (props = zfs_valid_proplist(hdl, type, props, zoned, NULL, zpool_handle, errbuf)) == 0) { diff --git a/cddl/usr.sbin/dtrace/tests/common/aggs/Makefile b/cddl/usr.sbin/dtrace/tests/common/aggs/Makefile index 02201577bacb..b5e95bc8fd67 100644 --- a/cddl/usr.sbin/dtrace/tests/common/aggs/Makefile +++ b/cddl/usr.sbin/dtrace/tests/common/aggs/Makefile @@ -169,6 +169,8 @@ ${PACKAGE}FILES= \ tst.sizedkeys.d.out \ tst.stddev.d \ tst.stddev.d.out \ + tst.stddev.normalize.d \ + tst.stddev.normalize.d.out \ tst.subr.d \ tst.sum.d \ tst.sum.d.out \ diff --git a/contrib/groff/BUG-REPORT b/contrib/groff/BUG-REPORT deleted file mode 100644 index 293101e34e58..000000000000 --- a/contrib/groff/BUG-REPORT +++ /dev/null @@ -1,55 +0,0 @@ - Groff Bug Report - -Please read the PROBLEMS file before sending in a bug report. - -Please fill in all fields, even if you think they are not relevant. - -Please delete the text in brackets before sending it in. - -Please report separate bugs separately. - -Send the completed form to bug-groff@gnu.org - -GROFF VERSION: -[The version of groff you are using. For example, `1.05'] - -MACHINE: -[The machine you are using. For example, `Sun SPARCstation 2'] - -OS: -[The operating system you are using. For example, `SunOS 4.1.1'] - -COMPILER: -[The compiler you are used to compile groff. For example, `g++ 1.40.3'] - -INPUT FILES: -[Include all the files necessary to reproduce the problem that are not -part of the standard groff distribution. This includes font -description files, DESC files and macro files (with the exception of -the -ms and -mm macros: we have them). Send them as a shell archive or -as a uuencoded, compressed tar file. - -It's easier for us if you can provide an example that doesn't depend on -any macro package, but obviously if you're reporting a problem with a -macro package that won't be possible. Also a short example is more -convenient than a long one, but don't worry if you can't find a short -example. Don't say something like ``any file that X'': Always send a -definite example.] - -COMMAND LINE: -[The command line that we should run in order to observe the bug. For -example, `gtroff -Tps bug.tr'. If the command line uses -ms or -mm, -say whether these refer to the groff versions or the Unix versions of -the macros.] - -DESCRIPTION OF INCORRECT BEHAVIOUR: -[What goes wrong when that command line is run? For example, `gtroff -gets a segmentation fault', or `The output looks bad because the bar -over the x is too long and is too far over to the left.' If you get an -error message, include it here without modification: Don't edit it to -make it more readable.] - -SUGGESTED FIX [optional]: -[If you can suggest a fix for the problem, include a context diff here. -But don't delay sending in a bug report in the hope of finding a fix. -Guesses about the cause of the bug are not usually helpful.] diff --git a/contrib/groff/COPYING b/contrib/groff/COPYING deleted file mode 100644 index b2fe7b6af353..000000000000 --- a/contrib/groff/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/contrib/groff/ChangeLog b/contrib/groff/ChangeLog deleted file mode 100644 index 2155a818a6bf..000000000000 --- a/contrib/groff/ChangeLog +++ /dev/null @@ -1,5253 +0,0 @@ -2005-09-04 Werner LEMBERG - - * tmac/groff_ms.man, doc/groff.texinfo: Synchronize. - - * doc/webpage.ms: Updated. - - * install-sh, mkinstalldirs: New versions; taken from texinfo CVS. - -2005-09-04 Jörgen Grahn - - * tmac/groff_ms.man: Document `PO' better. - -2005-09-03 Werner LEMBERG - - * NEWS: Document grotty changes. - -2005-09-01 Keith Marshall - - Backward compatibility support for `man' program. - - * tmac/an-old.tmac (LL): Initialize it to respect prior LL register - assignment, prior `.ll' request and then package defaults, in this - specified order of decreasing priority. - - * tmac/groff_man.man, doc/groff.texinfo: Document altered `LL' - register initialization priorities. - -2005-08-29 Gary W. Swearingen - - * tmac/groff_mdoc.man: Go into more details how the `AUTHORS' - section should look like. - -2005-08-29 Werner LEMBERG - - * tmac/groff_mdoc.man: The month's name in a call to .Dd shouldn't - be abbreviated. - -2005-08-27 Bernd Warken - - * tmac/groff_man.man: Add man(7) too SEE ALSO and more minor - fixes. - -2005-08-11 Bernd Warken - - * tmac/www.tmac (URL, MTO): Handle empty \\$1 better. - -2005-08-09 Bernd Warken - - * tmac/www.tmac (URL, MTO): Use bold series if color support is - deactivated. - -2005-08-02 Bernd Warken - - * doc/Makefile.sub (uninstall_sub): Use --remove, not --delete - as argument to $(INSTALL_INFO). The latter isn't portable. - Remove $(HTMLEXAMPLEFILES) too. - - * Makefile.in (uninstall_dirs): Remove $(datadir)/doc/groff and - $(datadir)/doc too. - Suppress warning messages and return always true. - - * tmac/Makefile.sub (uninstall_sub): Remove www.tmac too. - -2005-07-02 Bernd Warken - - * src/devices/xditview/gxditview.man: Change many `.I' to `.B'. - * man/groff_out.man: More markup and minor improvements. - * src/roff/groff/groff.man: Minor improvements. - -2005-06-28 Werner LEMBERG - - * ChangeLog: Split off older entries into... - * ChangeLog.115 ChangeLog.116, ChangeLog.117, ChangeLog.118: New - files. - -2005-06-26 Bernd Warken - - * src/devices/xditview/gxditview.man: More minor fixes. - -2005-06-24 Werner LEMBERG - - * src/preproc/pic/troff.cpp (troff_output::set_fill, - troff_output::set_color, troff_output::reset_color): Use .bcolor and - .fcolor instead of \m and \M, respectively. - -2005-06-23 Bernd Warken - - * src/devices/xditview/gxditview.man: More minor fixes. - * README: Formatting issues. - Mention some problems with Debian. - -2005-06-23 Bernd Warken - - * src/devices/xditview/gxditview.man: Revised and improved. - -2005-06-22 Werner LEMBERG - - Another round in fixing getopt problems. Hopefully the last one! - This time we use the getopt stuff from gnulib and define a prefix - unconditionally so that there are no collisions with any other - getopt implementations. This is a slight waste of space in case - we already use a GNU getopt implementation, but on - the other hand it really simplifies life. - - * src/include/getopt.h: Use gnulib version. - - * src/include/getopt_int.h: Use gnulib version. - - * src/include/groff-getopt.h: Removed. Obsolete now. - - * src/include/lib.h: Regarding getopt, don't handle any platform - specially; just include getopt.h. - (__GETOPT_PREFIX): Define (before getopt.h). - - * src/include/Makefile.sub (HDRS): Updated. - - * src/libs/libgroff/getopt1.c, src/libs/libgroff/getopt.c: Use - gnulib version. - - * src/libs/libgroff/Makefile.sub (EXTRA_CFLAGS): Set - __GETOPT_PREFIX. - - * src/utils/pfbtops/pfbtops.c, src/utils/xtotroff/xtotroff.c - (__GETOPT_PREFIX): Define (before getopt.h). - -2005-06-21 Werner LEMBERG - - * src/include/lib.h: Provide a fix for Mac OS X to not include - groff-getopt.h. - -2005-06-20 Denis M. Wilson - - * font/devps/prologue.ps (EP): Dont' use `bind'. Reason: Using - `bind' to define a procedure which contains `showpage' means that an - invocation of `showpage' may execute wrongly (the exact effect - depending on the interpreter). Not usually a problem except under - transformations, such as combining pages. - (PEND): Don't call `clear'. Reason: Using `clear' in the definition - of /PEND means that stack underflow will occur if the stack is - deliberately non-empty before document inclusion. If included - files are found to be generally badly behaved, we could replace the - `clear' with `mark' in /PBEGIN and `cleartomark' in /PEND (I've - never found this necessary). - -2005-06-20 Jörgen Grahn - - * src/preproc/soelim/soelim.cpp (do_file): Append trailing zero - earlier to get correct error message. - -2005-06-16 Bernd Warken - * src/roff/nroff/nroff.sh: Add support for iso-8859-15. - -2005-06-15 Werner LEMBERG - - Another try to update getopt files. This time we add a dummy - gettext.h file to satisfy the dependency. - - * src/include/getopt.h, src/libs/libgroff/getopt.c, - src/libs/libgroff/getopt1.c: Updated from GNU libc CVS. - - * src/include/getopt_int.h: New file (from GNU libc CVS). - - * src/include/gettext.h: Dummy file which just defines a gettext() - macro. - - * src/include/groff-getopt.h: Updated. - - * src/include/Makefile.sub (HDRS): Add getopt_int.h and gettext.h. - - - * src/libs/libdriver/input.cpp (IntArray): Remove superfluous - `const' keywords in return value. - - * src/preproc/html/pushback.cpp (pushBackBuffer::~pushBackBuffer): - Remove redundant variable `old'. - (pushBackBuffer::skipToNewline): Remove redundant variable `ch'. - - * src/preproc/tbl/main.cpp (process_table): Remove redundant - variable `c'. - - - Fix more friend name injection problems since modern C++ compilers - fail otherwise. We simply provide (global) declarations for all - functions declared as friends. This is not really necessary but - doesn't harm. - - * src/preproc/eqn/lex.cpp: Provide declarations for get_char, - peek_char, and get_location. - - * src/preproc/refer/ref.h: Provide declarations for - compare_reference, same_reference, same_year, same_date, - same_author_last_name, and same_author_name. - - * src/roff/troff/div.h: Provide declarations for do_divert and - page_offset. - - * src/roff/troff/env.h: Provide declarations for title_length, - space_size, fill, no_fill, adjust, no_adjust, center, right_justify, - vertical_spacing, post_vertical_spacing, line_spacing, line_length, - indent, temporary_indent, do_underline, do_input_trap, set_tabs, - margin_character, no_number, number_lines, leader_character, - tab_character, hyphenate_request, no_hyphenate, - hyphen_line_max_request, hyphenation_space_request, - hyphenation_margin_request, line_width, tabs_save, tabs_restore, - line_tabs_request, widow_control_request, and do_divert. - - * src/roff/troff/input.cpp: Provide declaration for chop_macro. - - * src/roff/troff/node.cpp: Provide declarations for class - tfont_spec. - Provide declaration for make_tfont. - -2005-05-29 Werner LEMBERG - - * doc/fdl.texi: Updated to version 1.2. Reported by Bernd Warken. - -2005-05-28 Werner LEMBERG - - * contrib/pdfmark/Makefile.sub (.ms.pdf): Use `--stylesheet', not - `--style'. - - * src/devices/grolbp/lbp.cpp, src/devices/grolbp/lbp.h: Remove - redundant semicolons. - - * src/preproc/eqn/Makefile.sub, src/preproc/html/Makefile.sub, - src/preproc/soelim/Makefile.sub, src/preproc/tbl/Makefile.sub: - Define `MLIB'. Some compilers need this for linking with libgroff. - -2005-05-27 Werner LEMBERG - - * MANIFEST, README, doc/webpage.ms: Updated. - -2005-05-26 Werner LEMBERG - - * All affected files: Update postal address of FSF. - -2005-05-25 Keith Marshall - Bernd Warken - - * README: More fixes. - - * README.CVS: Removed. Its contents is now part of the README file. - -2005-05-21 Werner LEMBERG - - * README: Updated. Based on a patch from Bernd Warken. - -2005-05-16 Keith Marshall - - Miscellaneous script portability enhancements. - - * aclocal.m4: (GROFF_CSH_HACK): Add space in shebang prototype for - generated conftest.sh script, conforming to portability - recommendation in autoconf docs. - * configure: Likewise, for code generated by GROFF_CSH_HACK. - * contrib/eqn2graph/eqn2graph.sh: Add space in shebang, conforming - to portability recommendation in autoconf docs. - * contrib/gdiffmk/gdiffmk.sh: Likewise. - * contrib/gdiffmk/tests/runtests.in: Likewise. - * contrib/grap2graph/grap2graph.sh: Likewise. - * contrib/groffer/groffer.sh: Likewise. - * contrib/mm/mmroff.pl: Likewise. - * contrib/mom/momdoc/appendices.html: Likewise. - * contrib/pic2graph/pic2graph.sh: Likewise. - * font/devps/generate/afmname: Likewise. - * src/devices/xditview/ad2c: Likewise. - * src/preproc/eqn/neqn.sh: Likewise. - * src/roff/grog/grog.pl: Likewise. - * src/roff/grog/grog.sh: Likewise. - * src/roff/nroff/nroff.sh: Likewise. - * PROBLEMS: Likewise, in embedded script examples. - -2005-05-16 Keith Marshall - - Improve portability of `pdfroff' shell script. - - * arch/misc/shdeps.sh: Add space in shebang, conforming to - portability guidelines in `autoconf' docs. - (PATH_SEARCH_SETUP): New substitution; emits PATH_SEPARATOR - initialization code. Used by contrib/pdfmark/pdfroff.sh's - `searchpath' function. - -2005-05-14 Werner LEMBERG - - * contrib/pic2graph/pic2graph.sh, contrib/graph2graph.sh, - contrib/eqn2graph.sh: Add option `-trim' to `convert' which is - needed for newer ImageMagick versions. - -2005-05-07 Werner LEMBERG - - * src/preproc/refer/refer.man: Many small typographic fixes. - -2005-05-06 Jeff Conrad - - * src/devices/grohtml/post-html.cpp (assert_state::~assert_state): - Use `char *' cast for a_delete. - -2005-05-03 Werner LEMBERG - - * src/libs/libgroff/maxpathname.cpp: Include stdlib.h. - src/libs/libgroff/relocate.cpp: Use path_name_max everywhere. - -2005-05-03 Jeff Conrad - - * src/devices/grohtml/post-html.cpp: Use casts to `char *' if using - `a_delete' for `const char *'. - -2005-05-03 Werner LEMBERG - - * src/devices/grohtml/post-html.cpp, - src/devices/grohtml/html-table.cpp, - src/devices/grohtml/html-text.cpp, src/devices/grohtml/output.cpp: - Replace malloc/free with new/delete/a_delete. - - * src/devices/grolbp/lbp.h: Remove superfluous semicolons which - are prohibited with ANSI C++. - (lbpprintf, vdmprintf): Remove useless `inline' keyword (since the - function has a variable number of arguments). - - * src/preproc/grn/main.cpp (doinput): Change return type to `int'. - Simplify function and update all callers. - -2005-05-02 Werner LEMBERG - - Undo getopt changes from 2005-04-30. We don't want a dependency - on gettext. - - * src/include/getopt_int.h: Removed. - - * src/include/getopt.h, src/include/groff-getopt.h, - src/include/Makefile.sub, src/libs/libgroff/getopt.c, - src/libs/libgroff/getopt1.c: Revert to previous version. - - - * src/include/nonposix.h (access) [_MSC_VER]: New macro. - - * src/include/posix.h (F_OK): Define conditionally. - - * src/devices/grotty/tty.cpp (tty_printer::make_underline): Use - different variable name in second `for' loop to avoid MSVC compiler - problem. - -2005-04-30 Werner LEMBERG - - AC_TYPE_SIGNAL from current autoconf can fail if CC=g++. - - * aclocal.m4 (GROFF_TYPE_SIGNAL): New function. - * configure.ac: Use GROFF_TYPE_SIGNAL, not AC_TYPE_SIGNAL. - * configure, src/include/config.hin: Regenerated. - - * PROBLEMS: Updated. - - - Update getopt files. - - * src/include/getopt.h, src/libs/libgroff/getopt.c, - src/libs/libgroff/getopt1.c: Updated from GNU libc CVS. - - * src/include/getopt_int.h: New file (from GNU libc CVS). - - * src/include/groff-getopt.h: Updated. - - * src/include/Makefile.sub (HDRS): Add getopt_int.h. - - - * font/devutf8/NOTES: Updated. - -2005-04-28 Werner LEMBERG - - Bug fix for Win32 relocatable code. Based on a patch from Keith - Marshall. - - * src/libs/libgroff/maxpathname.cpp (PATH_MAX): Test for `_MAX_PATH' - also. - - * src/libs/libgroff/relocate.c (DEBUG): Define it conditionally. - (searchpath) [_WIN32]: Use `_fullpath', not `realpath'. - -2005-04-28 Keith Marshall - - Correct `gnu.eps' handling for build from distribution tarball, with - separate source and build directories. - - * doc/Makefile.sub: (examples.stamp): New target; forces copy of - grnexmpl.g, groff.css and gnu.eps from source to build directory; - generate gnu.eps from gnu.xpm if required; touch examples.stamp. - (prepare_examples): Make it depend on examples.stamp. - (CLEANADD): Add examples.stamp. - -2005-04-27 Werner LEMBERG - - Implement the rule - - position: '(' position ')' - - in pic. - - * src/preproc/pic/pic.y (position, position_not_place): Handle - additional parentheses. - - * doc/pic.ms: Updated. - -2005-04-23 Larry Jones - - * src/utils/xtotroff/xtotroff.c (MapFont): Fix variable declaration. - -2005-04-18 Werner LEMBERG - - * src/roff/groff/pipeline.c: Don't include ctype.h. - -2005-04-13 Werner LEMBERG - - * src/roff/nroff/nroff.man: Document option `-M'. - -2005-04-13 Bruce Lilly - - * src/roff/nroff/nroff.sh: Make the script accept option `-M'. - -2005-04-01 Kees Zeelenberg - Werner LEMBERG - - Add binary relocation support for Windows platforms. - - * src/include/Makefile.sub (defs.h): Add `INSTALLPATH'. - - * src/include/relocate.h, src/libs/libgroff/relocate.cpp: New files. - - * src/libs/libgroff/searchpath.cpp: Handle `relocate'. - (search_path::search_path, search_path::open_file_cautious): Use - `relocate'. - - * src/libs/libgroff/Makefile.sub (OBJS, CCSRCS), - src/include/Makefile.sub (HDRS): Updated. - -2005-04-01 Werner LEMBERG - - * src/devices/grohtml/post-html.cpp: Don't use strdup/free but - strsave/a_delete. - - * src/libs/libgroff/font.cpp: Replace strdup with strsave. - - * src/libs/libgroff/maxfilename.cpp: Don't include limits.h since - lib.h already does it. - - * src/libs/libgroff/maxpathname.cpp: New file, defining - path_name_max. - - * src/include/lib.h: Add prototype for path_name_max. - - * src/libs/libgroff/Makefile.sub (OBJS, CCSRCS): Updated. - - * src/include/nonposix.h (PATH_EXT): New macro. - -2005-03-28 Werner LEMBERG - - Add support for double- and zero-width characters in grotty. - - * src/devices/grotty/tty.cpp (glyph): Add width. - (tty_printer::make_underline, tty_printer::make_bold, - tty_printer::add_character): Add parameter to pass character width. - Update all callers. - (tty_printer::end_page): Increase hpos by actual character width. - - * font/devutf8/R.proto: Specify zero width for non-spacing - characters. - - * tmac/unicode.tmac: Remove definitions for non-spacing entities. - - * Makefile.comm (extraclean): Remove more junk files. - -2005-03-25 Werner LEMBERG - - * configure.ac: Undo change from 2005-03-24. - * configure: Regenerated. - -2005-03-24 Werner LEMBERG - - * Makefile.in (NOMAKEDIRS): Add contrib/gdiffmk/tests. - (dist): Search Makefile while descending into $(EXTRADIRS). - - * doc/Makefile.in (.PHONY): Add. - (clean): Don't remove *.png and *.eps. - Don't handle *.gif. - (realclean): Remove *.png and *.eps. - (extraclean): Depend on distclean. - - * configure.ac: Add copyright. - Handle contrib/pdfmark/Makefile. - - * configure: Regenerated. - -2005-03-18 Larry Kollar - - Add numbered and definition lists to www.tmac. - - * tmac/www.tmac (www-ul-level1, www-ul-level2, www-ul-level3, - www-ol-level1, www-ol-level2, www-ol-level3, www-ol-tmp): New - auxiliary string registers. - (www-ul-level, www-ol-level, www-dl-level, www-ol-ctr1, www-ol-ctr2, - www-ol-ctr3, www-dl-shift): New auxiliary number registers. - (www-level): Removed. - (www-level1, www-level2, www-level3): Initialize to empty. - (www-level0, www-level4, www-level5, www-level6, www-level7, - www-level8, www-level9): New string registers. - (www-push-li, www-pop-li): New macros. - (www-push-level, www-pop-level): Renamed to... - (www-push-ul-level, www-pop-ul-level): This. - Updated. - (www-push-ol-level, www-pop-ol-level): New macros. - (ULS, ULE): Updated. - (OLS, OLE, DLS, DLE): New user macros. - (LI): Removed. It is aliased to one of... - (www-li-ul, www-li-ol, www-li-dl): New macros. - - * tmac/groff_www.man: Document new macros. - - * NEWS: Updated. - -2005-03-18 Werner LEMBERG - - * tmac/doc-common (doc-operating-system-NetBSD-2.0.1, - doc-operating-system-NetBSD-2.0.2): New strings. - - * tmac/groff_mdoc.man: Updated. - -2005-03-17 Werner LEMBERG - - * doc/Makefile.sub (CLEANADD): Add `groff.html'. - -2005-03-17 Werner LEMBERG - - * src/libs/libgroff/hypot.c: Renamed to... - * src/libs/libgroff/hypot.cpp: This. Updated to C++. - - * src/libs/libgroff/Makefile.sub (CCSRCS, CSRCS): Updated. - - * src/include/lib.h: Updated. - -2005-03-16 Werner LEMBERG - - Add workaround for broken hypot() on Interix. - - * src/libs/libgroff/hypot.c: New wrapper file for `hypot'. - - * src/libs/libgroff/Makefile.sub (OBJS): Add `hypot.o'. - (CSRCS): Add `hypot.c'. - - * src/include/lib.h: Declare `groff_hypot'. - - * src/preproc/grn/hgraph.cpp: Don't declare `hypot'. - Use `groff_hypot'. - - * src/preproc/pic/pic.h: Don't declare `hypot'. - - * src/preproc/pic/object.cpp (hypot): Use `groff_hypot'. - -2005-03-15 Gaius Mulley - - * src/devices/grohtml/post-html.cpp - (html_printer::lookahead_for_tables): End .ce properly to avoid a - segfault. - -2005-03-15 Werner LEMBERG - - makeinfo 4.8 doesn't produce good HTML output from groff.texinfo. - - * doc/fixinfo.sh: New script to postprocess makeinfo's HTML output. - - * doc/Makefile.in (.texinfo.html): Call fixinfo.sh. - -2005-03-14 Werner LEMBERG - - Add Cyrillic support to devutf8 and devhtml. - - * font/devutf8/R.proto, font/devhtml/R.proto: Add Cyrillic blocks. - - * tmac/unicode.tmac: New file. - - * tmac/tty.tmac: Include unicode.tmac if device is utf8. - - * tmac/Makefile.sub (NORMALFILES): Add unicode.tmac. - - * NEWS: Updated. - -2005-03-02 Keith Marshall - - * src/libs/libdriver/printer.cpp (check_for_output_error): New - function. It has been introduced to catch peculiar error contexts - on MS-Windows platforms. - -2005-02-28 Werner LEMBERG - - * src/roff/troff/input.cpp (string_iterator::fill): Protect against - null pointer. - - * tmac/papersize.tmac: Convert `paper' string contents to lowercase. - - * configure: Regenerated. - - * NEWS: Updated. - -2005-02-28 Keith Marshall - - Integrate `pdfmark' into normal groff build system; - install macro `pdfmark' packages, build and install `pdfroff', - and PDF format documentation. - - * Makefile.comm: Add PDFDOCDIR. - - * Makefile.in: (MDEFINES) ALT_AWK_PROGS, ALT_GHOSTSCRIPT_PROGS, - pdfdocdir, make_pdfdoc, make_install_pdfdoc: New variables. - (unstall_dirs): Add pdfdocdir. - - * aclocal.m4: (GROFF_GHOSTSCRIPT_PREFS): New function; support - `--with-alt-gs' option, set ALT_GHOSTSCRIPT_PROGS. - (GROFF_GHOSTSCRIPT_PATH): Support `--with-gs' option, force use of - GROFF_GHOSTSCRIPT_PREFS, set GHOSTSCRIPT. - (GROFF_HTML_PROGRAMS): Force use of GROFF_GHOSTSCRIPT_PATH; tidy up. - (GROFF_AWK_PREFS): New function; support `--with-alt-awk' option, - set ALT_AWK_PROGS. - (GROFF_AWK_PATH): New function; support `--with-awk' option, force - use of GROFF_AWK_PREFS. - (GROFF_PDFDOC_PROGRAMS): New function; force use of GROFF_AWK_PATH - and GROFF_GHOSTSCRIPT_PATH, set make_pdfdoc and make_install_pdfdoc. - - * configure.ac: Add AC_PREREQ(2.59), GROFF_PDFDOC_PROGRAMS. - Remove GROFF_GHOSTSCRIPT_PATH, (forced by GROFF_PDFDOC_PROGRAMS, and - also by modified GROFF_HTML_PROGRAMS). - -2005-02-27 Gaius Mulley - - * src/devices/grohtml/html-text.cpp (html_text::do_pre): Preserve - paragraph spacing. - (html_text::done_para): Unset `start_space'. - (html_text::remove_para_align): Call `retrieve_para_space' for the - spacing. - - * src/devices/grohtml/post-html.cpp (html_printer::emit_raw): Unset - `seen_space'. - (html_printer::do_check_center): Emit vertical space if necessary. - - * src/roff/troff/env.cpp (environment_switch): Preserve - `seen_space', `seen_eol', and `suppress_next_eol' while switching - environments. - - * src/roff/troff/node.cpp (suppress_node::suppress_node): Set - `is_special'. - -2005-02-20 Werner LEMBERG - - * src/preproc/eqn/eqn.man, NEWS: Document various extensions of - eqn. - -2005-02-17 Werner LEMBERG - - * doc/pic.ms, man/groff.man: Fix typos. - - * doc/groff.texinfo: Fix typos. - (\LEmacro): Get proper mathematical spacing. - -2005-02-16 Werner LEMBERG - - * aclocal.m4 (GROFF_APPRESDIR_CHECK): Improve warning message. - * configure: Regenerated with autoconf 2.59b. - -2005-02-16 Gaius Mulley - - * src/devices/grohtml/post-html.cpp (html_printer::is_line_start, - html_printer::start_font): Fix handling of preformatted text. - -2005-02-15 Gaius Mulley - - These patches modify the indentation implementation to use `

'. Many thanks to Peter and Larry for - suggesting this solution. Grohtml only uses tables for `.IP' and - related tags when the first operand has a short width. - - Similarly, they modify all vertical space code. By default, grohtml - sets up a style sheet which uses no vertical space between `table', - `pre', and `p' tags. It forces spaces when it needs them using - `style="margin-top: 1em"'. - - * src/devices/grohtml/html-table.cpp: Include `html-text.h'. - (html_table::emit_table_header, html_table::emit_new_row): - Rewritten. - (html_table::set_space): New function. - (html_indent::html_indent): Don't set `is_used'. - (html_indent::begin): Rewritten. - (html_indent::end): Remove code in function. - - * src/devices/grohtml/html-table.h: Updated. - (html_table): Make `out' public. - - * src/devices/grohtml/html-text.cpp (html_text::html_text): - Initialize `start_space' with FALSE. - (html_text::end_tag) : Updated. - (html_text::issue_tag): Add argument to handle space style. - (html_text::start_tag) : Updated. - (html_text::flush_text): Don't set `start_space'. - (html_text::push_para): Don't set `p->really_issued'. - (html_text::do_emittext): Updated. - (html_text::do_para): Add paremeter to handle space. - Update all callers. - (html_text::retrieve_para_space): New function. - - * src/devices/grohtml/html-text.h (STYLE_VERTICAL_SPACE): New macro. - (tag_definition): Remove `really_issued'. - (html_text): Updated. - - * src/devices/grohtml/post-html.cpp (html_printer): Add variables - `current_column' and `row_space'. - Update constructor. - (html_printer::emit_raw, html_printer::write_header, - html_printer::do_indent, html_printer::do_check_center, - html_printer::do_tab_ts): Handle vertical space. - (html_printer:do_tab_te, html_printer::do_end_para): Call - `remove_para_space'. - (html_printer::do_col): Rewritten. - (html_printer::flush_globs): Remove debugging code. - (html_printer::is_line_start): New function. - (html_printer::start_font): Use `is_line_start'. - (html_printer::writeHeadMetaStyle): New function. - (html_printer::do_file_components, html_printer::~html_printer): - Call `writeHeadMetaStyle'. - - * tmac/www.tmac (www-handle-percent): New macro. - (MPIMG): Handle percent values for width and height parameters. - (DC): Updated. - - * tmac/groff_www.man: Updated. - -2005-02-14 Werner LEMBERG - - * src/utils/afmtodit/afmtodit.pl: Remove an incorrect `my' from - $psname and $italic_angle. - Immediately restart file input loops if `split' returns an empty - array. - -2005-02-13 Michail Vidiassov - Werner LEMBERG - - Update afmtodit to better support Unicode (Michail). - Update afmtodit to use Perl 5 syntax (Werner). - - * src/utils/afmtodit/afmtodit.pl: Don't use `getopts.pl' but - `Getopts::Std'. - Decorate variables with `my' where necessary. - Use `defined' where necessary to avoid warnings. - Don't use `do' for subroutine calls. - Other minor syntax updates. - Check for both `uXXXX[X[X]]' and `uniXXXX'. - Handle glyph variants properly. - (%unicode_decomposed, %AGL_to_unicode): Don't use `u' prefix in - strings. - - * src/utils/afmtodit/afmtodit.man: Updated. - -2005-02-13 Werner LEMBERG - - Make groff.texinfo work with texinfo 4.8. - - * doc/groff.texinfo (@Var): Use @r and @slanted. - (@defdummy, @Def*): Use @c to avoid empty lines. - (\angles): Replaced with... - (\Langlemacro, \Ranglemacro): New TeX macros. - (@Langlemacro, @Ranglemacro): New variables defined with @set. - (@angles): Use @Langlemacro and @Ranglemacro. - (\LE): Replaced with... - (\LEmacro): New TeX macro. - (@LEmacro): New variable defined with @set. - (@LE): Use @LEmacro. - (@Lparenmacro, @Rparenmacro, @Lbrackmacro, @Rbrackmacro): New - variables defined with @set. - (@lparen, @rparen, @lbrack, @rbrack): Replaced with... - (@Lparen, @Rparen, @Lbrack, @Rbrack): New macros. - Update all callers. - - Other minor updates. - - * doc/texinfo.tex: Update to texinfo version 4.8. - - * README.CVS: Updated. - -2005-02-09 Alejandro López-Valencia (tiny change) - - * doc/groff.texinfo (ms Document Control Registers): Document `HY' - and `FAM' registers. - -2005-02-05 Werner LEMBERG - - * tmac/groff_mdoc.man, tmac/doc-common, tmac/doc-ditroff, - tmac/doc-nroff, tmac/doc-old.tmac, tmac/doc-syms, tmac/doc.tmac: - Update BSD license. - -2005-02-01 Werner LEMBERG - - * src/roff/groff/groff.man: Add information about paper size. - -2005-01-25 Werner LEMBERG - - * src/roff/nroff/nroff.sh: Handle `*.ISO8859-1' in locale. From - NetBSD bin/29114. - -2005-01-22 Ruslan Ermilov - - * tmac/doc.tmac (Sm): Improved. It didn't work properly in many - cases. - (Re): Emit a warning if called without `.Rs'. - (doc-finish-reference): Use parameter for decreasing - `doc-reference-count'. - (doc-print-reference): Pass specific count parameters to - `doc-finish-reference'. - -2005-01-21 Werner LEMBERG - - * src/libs/libdriver/input.cpp (delete_current_env, do_file): - Reset pointers to zero after deallocation. This fixes a crash - if a driver is called with multiple input files. Reported by - Ken Chilton . - - * src/devices/grops/grops.man: Add more info on DSC. - -2005-01-17 Ruslan Ermilov - - * tmac/doc-common (Dd), tmac/doc-ditroff (gX, doc-setup-header): - Remove dead code. - -2005-01-17 Werner LEMBERG - - * src/roff/troff/div.cpp (top_level_diversion::space): Protect - against division by zero. - -2005-01-13 Ruslan Ermilov - - * tmac/doc.tmac (Ef): Restore doc-curr-font and doc-curr-size. - -2004-12-19 Werner LEMBERG - - * install-sh: New version; taken from texinfo CVS. - -2004-12-17 Werner LEMBERG - - * tmac/devtag.tmac: Protect against loading twice. - Protect agains compatibility mode. - * tmac/www.tmac: Protect against loading twice. - Load `devtag.tmac' before switching off compatibility mode. - * tmac/an-old.tmac, tmac/s.tmac: Load `devtag.tmac'. - -2004-12-16 Mike Bianchi - - * configure.ac: Produce `contrib/gdiffmk/tests/runtests'. - * configure: Updated. - -2004-12-15 Thomas Klausner - - * tmac/doc-syms, tmac/groff_mdoc.man: Add `libpam' library. - -2004-12-15 Werner LEMBERG - - Make `test-groff' work again -- previously, wrong paths have been - used. Additionally, it can now be called from anywhere. - - * test-groff.in: Don't test for groff binary. This is no longer - necessary since the proper paths are determined by `configure'. - (EXEEXT): Removed. No longer used. - (srcdir, builddir): Use values provided by the configure script. - (XENVIRONMENT): Updated. - - * INSTALL: Updated. - -2004-12-14 Gaius Mulley - - Make .tag and .taga work for all devices (but only grohtml actually - handles them). - - * src/devices/grohtml/post-html.cpp: s/html-tag/devtag/. - (text_glob::is_br, page::add_tag, html_printer::troff_tag, - html_printer::handle_assertion): Don't use hard-coded string - lengths. - (html_printer::lookahead_for_table): Reset `tbl' properly if - necessary. - (html_printer::devtag): New function, handling `devtag'. - (html_printer::special): Don't handle `html-tag'. - - * src/include/printer.h, src/libs/libdriver/printer.cpp - (printer::devtag): New virtual function. - - * src/libs/libdriver/input.cpp (parse_x_command) <'X'>: Handle - `devtag'. - - * src/roff/troff/env.cpp, src/roff/troff/mtsm.cpp, - src/roff/troff/node.cpp: s/html-tag/devtag/. - - * src/roff/troff/input.cpp (tag, taga): Always call - curenv->add_node. - - * tmac/an-old.tmac, tmac/s.tmac, tmac/troffrc-end: Use DEVTAG* - macros instead of HTML-TAG*. - - * tmac/devtag.tmac: New file, defining the DEVTAG-* macros. - - * tmac/www.tmac: Load devtag.tmac. - Replace HTML-TAG* macros with DEVTAG* macros. - (HTML, HTML-NS): Changed definitions. - (URL): Use HTML-NS. - (HTML-TAG, HTML-TAG-NS, HTML-TAG-NEXT): Removed. - - * tmac/Makefile.sub (NORMALFILES): Add devtag.tmac. - -2004-12-10 Werner LEMBERG - - Import Mike's `gdiffmk' package. - - * contrib/gdiffmk/*: New files. - * Makefile.in (OTHERDIRS): Add contrib/gdiffmk. - * NEWS: Updated. - -2004-12-08 Werner LEMBERG - - Import Keith's `pdfmark' package. Integration is very preliminary. - - * contrib/pdfmark/*: New files. - * Makefile.in (OTHERDIRS): Add contrib/pdfmark. - * NEWS: Updated. - -2004-12-07 Gaius Mulley - - Fix a bug with title handling in HTML. - - * src/devices/grohtml/post-html.cpp (text_glob::is_nf, - text_glob::is_fi, text_glob::is_ce): Use strlen to compute string - length. - (html_printer::handle_tag_within_title): New function. - (html_printer::do_title): Use it. - - * tmac/s.tmac (TL): Don't set `need_eo_tl'. - (cov*tl-au-print): Emit `.eo.tl' tag. - -2004-12-05 Alejandro López-Valencia - - * man/groff_char.man: Minor imrovements. - -2004-12-04 Werner LEMBERG - - * src/preproc/eqn/eqn.man: Revised. - -2004-11-25 Werner LEMBERG - - * src/utils/xtotroff/xtotroff.c: Reformat to be similar to other - groff source files. - Include config.h. - Include limits.h. - Remove X_NOT_STDC_ENV conditional. - (Version_string, program_name): New global variables. - (groff_flag): Removed. - (MapFont): Updated. - (usage): Take a stream as argument. - Use `program_name'. - Update all callers. - (main): Add `long_options' array for `--help' and `--version'. - Make `-g' a dummy option. - Handle `-v' and unknown options. - Remove unused `position' variable. - - * src/utils/xtotroff/Makefile.sub (MAN1): Define. - (XLIBS): Add LIBGROFF. - - * src/utils/xtotroff/xtotroff.man, src/utils/xtotroff/Makefile.in: - New files. - - * src/devices/xditview/Dvi.c (default_font_map): Split into three - parts to avoid compiler warning. - (resources): Don't initialize with `default_font_map'. - (ClassInitialize): Initialize first element of `resources'. - - * src/devices/xditview/Makefile.sub (devdir, xtotroff, DPIS, fonts): - Removed. - - * src/utils/lkbib/lkbib.man, src/utils/lookbib/lookbib.man, - src/utils/pfbtops/pfbtops.man: Revised, updated. - - * configure.ac: Generate src/utils/xtotroff/Makefile. - * configure: Regenerated. - -2004-11-24 Werner LEMBERG - - First fixes to get produce HTML. - - * src/devices/grohtml/post-html.cpp (generate_img_src): Add `alt' - attribute. - - * tmac/www.tmac (IMG, PIMG, MPIMG): Add `alt' attribute. - (HR, LI): Use `HTML

', not `HTML'. - - * doc/webpage.ms: Minor updates. - -2004-11-23 Larry Kollar - - Add option -S grohtml to determine the file split level. - - * src/devices/grohtml/post-html.cpp (split_level): New global - variable. - (html_header::determine_header_level): Use split_level. - (main): Handle `-S' command line option. - Sort options. - - * src/preproc/html/pre-html.cpp (scanArguments): Updated. - - * src/devices/grohtml/grohtml.man: Document it. - Sort options. - - * NEWS: Document it. - -2004-11-23 Y T - - * tmac/s.tmac (ref*add-V, ref*add-N): New macros for handling - the volume and number refer entries. - -2004-11-22 Werner LEMBERG - - * src/devices/grohtml/html-table.cpp - (html_table::emit_table_header): Don't emit `cols' attribute which - doesn't exist in HTML 4.0 and is thus invalid. - - * NEWS: More minor fixes and updates. - -2004-11-18 Werner LEMBERG - - * tmac/www.tmac (HTML-NS, HTML-TAG-NS, HTML-TAG-NEXT): Simplified. - (HTML

): Minor clean-up. - - * tmac/groff_www.man: Updated. - - * src/devices/grohtml/grohtml.man: Revised and updated. - - * NEWS: Updated. - -2004-11-18 Gaius Mulley - - * src/devices/grohtml/post-html.cpp (html_printer::do_heading): - Fix space insertion. - (html_printer::do_links): Fix rules generation around automatic - heading links. - - * tmac/www.tmac (LK): Use HTML-TAG-NS. - (HR): Simplify. - No longer emit empty line for non-HTML devices. - -2004-11-17 Werner LEMBERG - - * doc/Makefile.in (prepare_examples, webpage.html): Handle - `groff.css'. - - * doc/Makefile.sub (EXAMPLEFILES, CLEANNOTSRCDIRADD, - prepare_examples, webpage.html): Handle `groff.css'. - -2004-11-15 Werner LEMBERG - - * NEWS, README, doc/webpage.ms: Updated. - - * tmac/www.tmac (HTML, HTML-TAG): Minor clean-ups. - -2004-10-30 Gaius Mulley - - * src/include/printer.h (printer): Remove virtual function - `round_width'. - Update all source files. - - * src/devices/grohtml/post-html.cpp (html_printer): New member - function `round_width'. - -2004-10-20 Tadziu Hoffmann - - * src/preproc/tbl/table.cpp (table::do_row): Fix handling of the `d' - column key letter suffix. - -2004-10-14 Werner LEMBERG - - * Makefile.in (check): Depend on `site.exp' and `docheck'. - (docheck): Run dejagnu's `runtest' if it exists. - (site.exp): Create dejagnu configuration file. - - * Makefile.sub (DISTCLEANFILES): Add files related to dejagnu. - -2004-10-13 Werner LEMBERG - - * src/devices/grohtml/html-text.cpp (html_text_get_alignment), - src/devices/grohtml/post-html.cpp (make_val, - html_printer::handle_state_assertion): Fix compiler warnings. - - * src/roff/troff/div.cpp: Include `stringclass.h' and `mtsm.h'. - (diversion::diversion): Fix order of initializers. - - * src/roff/troff/div.h: Don't include `mtsm.h'. - - * src/roff/troff/env.cpp: Include `stringclass.h' and `mtsm.h'. - (environment::environment): Fix order of initializers. - (environment::make_tag, environment::construct_format_state): Fix - compiler warnings. - - * src/roff/troff/input.cpp: Include `stringclass.h' and `mtsm.h'. - (input_iterator::input_iterator, macro::macro): Fix order of - initializers. - - * src/roff/troff/mtsm.cpp: Include only necessary header files. - (state_set::add, state_set::val): Fix compiler warnings. - - * src/roff/troff/mtsm.h: Don't include `stringclass.h'. - (bool_value_state, int_value_state, units_value_state, - string_value_state): Remove comma after last element which causes - an error with g++ 3.3.3. - - * src/roff/troff/node.cpp: Include `stringclass.h'. - (hline_node::hline_node, vline_node::vline_node, - space_char_hmotion_node, left_italic_corrected_node): Fix compiler - warnings. - (zero_width_node::zero_width_node): Fix order of initializers. - - * src/roff/troff/node.h: Don't include `mtsm.h'. - (hmotion_node): Fix compiler warnings. - - * src/roff/troff/number.cpp: Include `stringclass.h' and `mtsm.h'. - -2004-10-12 Gaius Mulley - - * doc/groff.css: New file. - - * doc/webpage.ms: Use `groff.css'. - Other small fixes. - - * tmac/an-old.tmac (need_eo_h): New number register. - (TH): Emit `.eo.tl' tag after title. - (SH): Set `need_eo_h'. - (an-trap): Handle `need_eo_h'. - (an-do-tag): s/HTML-TAG-NS/HTML-TAG-NEXT/. - - * tmac/s.tmac (need_eo_h, need_eo_tl): New number registers. - (TL): Always start diversion. - Updated. - (@AI): Always call `par@reset'. - (@AB): Update code for -Thtml. - (cov*tl-au-print): Handle -Thtml. - (par@reset): Handle `need_eo_tl', `need_eo_h'. - (@IP): Simplified. - (@IT-html): Removed. - (@SH): Set `need_eo_h' for -Thtml. - (par@TL): s/HTML-TAG/HTMl-TAG-NS/. - Set `need_eo_tl'. - (@NH): s/HTML-TAG/HTMl-TAG-NS/. - Set `need_eo_h' for -Thtml. - (@EQ, @EN): Don't handle -Thtml specially. - (par@load-init): Don't handle -Thtml specially. - - * tmac/www.tmac (www:paraspace): New macro. - (HTML-NS, HTML-TAG-NS): Use new `tag' request. - (HTML

, HTML-TAG-NEXT): New macros. - (HnE): Emit tag `.eo.h' instead of break. - (HR): s/HTML-NS/HTML/. - (www-end-nowhere): End diversion only if `www-html' not set. - Emit `.eo.tl' tag. - (ULS, ULE): s|HTML|HTML

|. - (LI): Call `www:paraspace'. - (HEAD): New macro. - -2004-10-11 Gaius Mulley - - * src/roff/troff/request.h (macro): Make `p' public. - New variable `is_a_diversion'. - New member function `is_diversion'. - - - * src/devices/grohtml/html.h (simple_output): New member function - `force_nl'. - - * src/devices/grohtml/html-table.cpp (tabs::compatible): Fix - computation of `total'. - (tabs::check_init): New function. - (html_table::emit_table_header): Emit style data. - (html_table::insert_column): Improved. - - * src/devices/grohtml/html-table.h: Updated. - - * src/devices/grohtml/html-text.cpp (html_text::html_text): - Initialize `start_space' with TRUE. - (html_text::end_tag, html_start_tag): Fix `P_TAG' and `PRE_TAG' - cases. - (html_text::flush_text): Set `start_space' flag. - (html_text::uses_indent, html_text::remove_para_space, - html_text::get_alignment): New functions. - (html_text::push_para): Updated. - (html_text::do_para): Check for empty argument. - Don't set `space_emitted'. - (html_text::do_space, html_text::emit_space): Updated. - - * src/devices/grohtml/html-text.h (tag_definition): New variable - `really_issued'. - (html_text): New member function `uses_indent', `remove_para_space', - `get_alignment'. - - * src/devices/grohtml/output.cpp (simple_output::force_nl): New - function. - (simple_output:nl): Always emit `\n'. - - * src/devices/grohtml/post-html.cpp: Include `string.h'. - (BASE_POINT_SIZE): Removed. - (base_point_size, head_info): New global variables. - (text_glob): New member functions `is_ll', `is_tl', `is_eo_tl', - `is_eo_h'. - (text_glob::is_nf, text_glob::is_fi): Handle `.fi 0' and `.fi 1' - tags, respectively. - (page::add_and_encode): Pass additional parameter for tag flag. - (assert_pos): New structure. - (assert_state): New class. - (html_printer): Remove `indentation', `prev_indent'. - Add variables `troff_indent', `device_indent', `temp_indent'. - Add variables `seen_indent', `next_indent', `seen_pageoffset', - `next_pageoffset', `seen_linelenght', `next_linelength', - `seen_center', `next_center', `seen_space', `seen_break', `as'. - Add member functions `do_check_center', `do_space', `do_head', - `get_troff_indent', `restore_troff_indent', `handle_assertion', - `handle_state_assertion', `do_end_para', `set_char_and_width'. - Change argument to `do_fill' to `char *'. - Update constructor. - (html_printer::emit_raw): Call `shutdown_table'. - Use new functions. - (html_printer::do_center): Simplified. - (html_printer::do_title): Improved. - (html_printer::write_header): Emit one more newline. - Use new functions. - (html_printer::do_heading, html_printer::do_indent, - html_printer::do_eol, html_printer::do_tab_ts, - html_printer::do_tab, html_printer::do_tab0, - html_printer::calc_po_in, html_printer::next_horiz_pos, - html_printer::remove_courier_tabs, - html_printer::insert_tab0_foreach_tab, html_printer::begin_page): - Updated. - (html_printer::do_linelength, html_printer::do_pageoffset, - html_printer::do_indentation, html_printer::do_tempindent, - html_printer::do_tab_te): Simplified. - (html_printer::do_pointsize): Check whether point size is really - associated a `.tl' tag. - (html_printer::do_break): Rewritten. - (html_printer::troff_tag): Improved. - (html_printer::flush_globs): Updated. - (html_printer::lookahead_for_tables): Handle `is_br'. - Use new functions. - (html_printer::set_char): Check `sbuf_style.f'. - (html_printer::write_navigation): Use string comparison. - (html_printer::~html_printer): Emit `head_info'. - (html_printer::special): Rewritten. - (get_str, make_val): New functions. - (main): New option `s' to set the base point size. - - * src/preproc/html/pre-html.cpp (scanArguments): Handle option `s'. - -2004-10-10 Gaius Mulley - - * src/roff/troff/node.cpp: New extern `debug_state'. - Include `stringclass.h' and `mtsm.h'. - Implement new classes and class members from `node.h'. - (real_output_file): Make `fp' public. - (troff_output_file): New variables `cur_div_level' and `tag_list'. - Update constructors. - (troff_output_file::really_print_line): Check whether we should push - the current troff state and use the state at the start of the - invocation of this diversion. - (troff_output_file::add_to_tag_list): New member function. - (node::add_char): Handle `glyph_comp_np'. - - * src/roff/troff/node.h: Include `mtsm.h'. - (node): New variables `state', `push_state', `div_nest_level', - `is_special'. Update constructors, all descendants. - Pass additional argument to `add_char' member function. - New virtual member functions `is_tag', `debug_node', - `debug_node_list'. Update all descendants. - (tag_node): New class for handling tags. - (output_file): Add variable `state'. - -2004-10-09 Gaius Mulley - - * src/roff/troff/mtsm.cpp, src/roff/troff/mtsm.h: New files, - providing a minimal troff state machine to emit meta tags for the - post-grohtml device driver. - - * src/roff/troff/Makefile.sub (OBJS, CCSRCS, HDRS): Handle new - files. - -2004-10-09 Werner LEMBERG - - * tmac/trace.tmac: Fix handling of `am' and `am1' calls. - -2004-10-06 Gaius Mulley - - * src/roff/troff/column.cpp (vjustify_node::copy): Updated. - - * src/roff/troff/div.h: Include `mtsm.h'. - (diversion): New variables `any_chars_added', `needs_push', - `saved_seen_break', `saved_seen_space', `saved_seen_eol', - `saved_suppress_next_eol', `modified_tag'. - New virtual member function `is_diversion'. Update all descendants. - - * src/roff/troff/div.cpp (diversion::diversion, - macro_diversion::macro_diversion): Updated. - (do_divert): Handle `seen_break', `seen_space', `seen_eol', - `suppress_next_eol'. - (top_level_diversion::space): Handle `curenv->seen_space'. - (page_offset): Update tag handling. - (space_request, blank_line, flush_output): Don't call `add_html_tag'. - - * src/roff/troff/env.h (environment): Make `tabs' public. - Remove `ignore_next_eol', `emitted_node'. - Update `output_line', `output'. - New variables `seen_space', `seen_eol', `suppress_next_eol', - `seen_break'. - New member functions `construct_state', `make_tag', - `construct_format_state, `construct_new_line_state, - `dump_troff_state'. - Remove `add_html_tag', `make_html_tag'. - - * src/roff/troff/env.cpp: New externs `suppress_push', - `get_diversion_state', `global_diverted_space'. - (pending_output_line): New variable `was_centered'. - Update constructor and all callers. - (pending_output_line::output): Call `curenv->construct_format_state'. - (environment::environment, environment::copy): Updated. - (environment::output): Handle `was_centered'. - (environment::add_char): Handle construct and diversion state. - (environment::add_node): Handle construct state. - (environment::newline): Handle `was_centered'. - (environment::output_line): Updated. - (environment::possibly_break_line): Updated. - Update tag handling. - (environment::add_html_tag): Replaced with... - (environment::make_tag): New function. - (environment::add_html_tag_tabs, environment::make_html_tag): Removed. - (environment::dump_troff_state): New debugging function. - (environment::construct_state, environment::construct_format_state, - environment::construct_new_line_state): New functions. - (environment::do_break): Updated. - Handle `global_diverted_space'. - (environment::handle_tag): Update tag handling. - (point_size, fill, do_break_request): Don't call `add_html_tag'. - (no_fill): Don't call `add_html_tag'. - Set `suppress_next_eol'. - (center, right_justify, line_length, indent, temporary_indent, - set_tabs): - Update tag handling. - - * src/roff/troff/input.cpp: Don't include `stringclass.h'. - (input_iterator): New variables `is_diversion', `diversion_state'. - Update constructors. - (input_stack): New member functions `get_div_level', - `get_diversion_state', `check_end_diversion'. - New variables `div_level', `diversion_state'. Initialize them. - (suppress_push, global_diverted_space): New global variables. - (input_stack::finish_get, input_stack::finish_peek, - input_stack::remove_boundary, input_stack::end_file, - input_stack::clear, input_stack::pop_macro): Call - `check_end_diversion'. - (input_stack::push): Handle `div_level' and `diversion_state'. - (get_diversion_state): New function. - (diverted_space_node::reread): Handle `global_diverted_space'. - (macro::macro): Update constructors. - (macro::is_diversion): New function. - (macro::operator=): Set `is_a_diversion'. - (string_iterator): New member function `is_diversion'. - (string_iterator::string_iterator): Update constructors. - (string_iterator::fill): Set `div_nest_level'. - (macro_iterator): New member function `is_diversion'. - (do_if_request): Handle `suppress_push'. - (tag, taga): New functions. - (init_input_requests): Add `tag' and `taga' requests. - -2004-10-05 Gaius Mulley - - * src/include/font.h (font): New member function - `get_image_generator'. - New variables `unscaled_charwidths' and `image_generator'. - - * src/libs/libgroff/font.cpp (font::get_width): Always return the - character's unscaled width if `font::unscaled_charwidths' is set. - (font::get_image_generator): New function. - (font::load_desc): Check the `unscaled_charwidths' and - `image_generator' keywords. - - * src/libs/libgroff/fontfile.cpp: Initialize - `font::unscaled_charwidths' and `font::image_generator'. - - * font/devhtml/DESC.proto: s/html/unscaled_charwidths/. - - * font/devhtml/Makefile.sub (DESC): Set `image_generator' keyword. - - * man/groff_font.man: Document `unscaled_charwidths' and - `image_generator'. - - * src/preproc/html/pre-html.cpp: Include `device.h'. - (image_gen): New global variable. - (imageList::createPage): Use `image_gen'. - (main): Use `image_generator' keyword. - -2004-10-04 Gaius Mulley - - * tmac/html.tmac: Handle \[sqrtex]. - -2004-10-04 Gaius Mulley - - * src/include/printer.h (printer): New virtual method `round_width'. - - * src/devices/grodvi/dvi.cpp, src/devices/grolbp/lbp.cpp, - src/devices/grolj4/lj4.cpp, src/devices/grops/ps.cpp, - src/devices/grotty/tty.cpp (printer::round_width): New function - member. - - * src/devices/grohtml/post-html.cpp (printer::round_width): New - function member. - (html_printer::set_numbered_char): Use it. - -2004-10-03 Gaius Mulley - - * aclocal.m4 (GROFF_GHOSTSCRIPT_PATH): New macro. - - * configure.ac: Call GROFF_GHOSTSCRIPT_PATH. - - * configure: Regenerated. - - * Makefile.in (GHOSTSCRIPT): New variable. - (MDEFINES): Add GHOSTSCRIPT. - -2004-10-03 Werner LEMBERG - - * INSTALL.gen: Updated (taken from texinfo CVS). - -2004-09-28 Werner LEMBERG - - * NEWS: Updated. - -2004-09-28 Heinz-Jürgen Oertel - - * tmac/groff_www.man: Revised and updated. - -2004-09-26 Werner LEMBERG - - Fix \$@ and \$* to handle any number of arguments. - - * src/roff/troff/input.h (BEGIN_QUOTE, END_QUOTE): New special - characters. - - * src/roff/troff/input.cpp (input_iterator::internal_level): - Removed. - (input_stack): New member functions `increase_level' and - `decrease_level'. - (input_stack::get_level): Don't use `internal_level'. - (get_copy, token::next): Handle BEGIN_QUOTE and END_QUOTE. - (end_quote_iterator): Completely removed. - (interpolate_arg): Build string for \$@ and \$* which is then - pushed onto the input stack. - -2004-09-23 Keith Marshall - - * tmac/groff_ms.man, doc/groff.texinfo: Document changes from - 2004-09-19. - -2004-09-23 Werner LEMBERG - - * tmac/an-old.tmac (ne): Using default scaling operator. - -2004-09-19 Keith Marshall - - This change implements the following features: - - PORPHANS - New numeric register: Defines number of lines following LP, PP, - QP, IP or XP, which must be kept together, before any automatic - page break. If insufficient space remains on the current page, a - page break is forced before the new paragraph begins. - - HORPHANS - New numeric register: Sets number of lines of following paragraph - which must be kept with a heading, defined by NH or SH, before any - automatic page break. If insufficient space remains on the - current page, a page break is forced before the heading. - - GROWPS - (Thanks to Joerg van den Hoff, for this idea). - - New numeric register: Sets the first level of heading (set with - NH), which will keep the same point size as body text; e.g. if - GROWPS is set to 3, .NH 3, .NH 4, ... will produce headings at the - point size specified by \n[PS], but .NH 2 and .NH 1 will have - progressively larger point sizes, determined by \n[PSINCR] (see - below). - - PSINCR - New numeric register: Sets the point size increment for each level - of heading, (set with NH), below the threshold level set by - GROWPS; e.g. if \n[PS] = 10, \n[GROWPS] = 3 and \n[PSINCR] = 2.0p, - then .NH 1 will produce 14pt headings, .NH 2 will produce 12pt, - and all other levels will remain at 10pt, (because \n[PS] = 10). - - SH - Existing macro now accepts a numeric argument, to make heading - size match that of NH with same argument value, when the - GROWPS/PSINCR feature is enabled. - - SN-DOT - New string, set by NH macro, replaces the existing (undocumented) - use of SN, to represent the assigned section number. - - SN-NO-DOT - New string, set by NH macro, represents the assigned section - number, but omits the terminal period (periods at intermediate - levels are retained). - - SN - String set by NH macro, originally undocumented, now implemented - as an alias for SN-DOT (which reproduces original behaviour). - - * tmac/s.tmac (PORPHANS): New register. - (par*start): Use it. - (HORPHANS, GROWPS, PSINCR): New registers. - (SH-NO-TAG, @SH): Use them. - (@NH): Improved. - -2004-09-19 Keith Marshall - - * NEWS, doc/groff.texinfo, tmac/groff_ms.man: Document the deletion - of `Ds' and `De' macros. - -2004-09-10 Werner LEMBERG - - In tbl, handle \a as an interpreted leader character if in - compatibility mode. - - * src/preproc/tbl/table.h (PREFIX, PREFIX_CHAR, LEADER, - LEADER_CHAR): New macros. - (compatible_flag): New declaration. - - * src/preproc/tbl/main.cpp (table_input): Add LEADER_1, LEADER_2, - LEADER_3, and LEADER_4 to `state'. - (table_input::get): Handle `\a'. - - * src/preproc/tbl/table.cpp (PREFIX): Removed. - (LEADER_REG): New macro. - (table::init_output): Define LEADER_REG string register if in - compatibility mode. - - * src/preproc/tbl/tbl.man: Document it. - -2004-08-18 Werner LEMBERG - - * tmac/doc.tmac (An): Fix error message. - -2004-08-06 Werner LEMBERG - - * src/preproc/tbl/main.cpp (main): Call `fatal' not `error' if a - file can't be opened. UNIX tbl has the same behaviour. - -2004-08-05 Y T - - * src/preproc/grn/hdb.cpp (compatibility_flag): Add declaration. - (DBRead): If in compatibility mode, take into account the text - when computing figure boundaries. - -2004-08-05 Werner LEMBERG - - * src/preproc/soelim/soelim.man: Improved. Based on suggestions - from Tadziu Hoffmann. - -2004-08-03 Werner LEMBERG - - * doc/meref.me: Document `_M' register. - -2004-08-03 Martin Husemann - - Make hpftodit work correctly on big-endian systems. - - * src/utils/hpftodit/hpftodit.cpp (File): New method - `get_uint32(char *)'. - (entry): New member `orig_value'. - (read_tags): Use new method. - (output_font_name, read_and_output_pcltypeface, dump_ascii): - Updated. - -2004-08-01 Werner LEMBERG - - * tmac/s.tmac: Undo change 2003-06-29. The proper macro definitions - are already in X11's `macros.t' file. - -2004-08-01 Jeff Conrad - - * src/utils/hpftodit/hfptodit.cpp (output_font_name, dump_ascii): - Fix casting bug. - (read_and_output_pcltypeface): Handle strings with length <= 4. - -2004-07-27 Egil Kvaleberg - - * tmac/s.tmac (pg@top): Don't save `PO' register. - (pg*end-col, pg*end-page): Directly use `PO' register. - -2004-07-27 Werner LEMBERG - - * man/groff_tmac.man: Mention `trace' and `pic' macro packages. - - * src/preproc/refer/refer.cpp (output_references): Check for - empty hash table. - * src/preproc/refer/refer.man: Improve documentation of - `bibliography' command. - -2004-07-26 Werner LEMBERG - - Add requests `fcolor' and `gcolor'. - - * src/roff/troff/env.cpp (fill_color_change, glyph_color_change): - New functions. - (init_env_requests): Add `fcolor' and `gcolor'. - - * src/roff/troff/input.h: Export do_glyph_color and do_fill_color. - - * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: - Document new requests. - -2004-07-24 Werner LEMBERG - - Add support for fractional point sizes in ms macros. A value for - PS, VS, FPS, and FVS greater than or equal to 1000 is always divided - by 1000. For example, `.nr PS 10250' sets the font size to 10.25p. - - * tmac/s.tmac (@AU, @AI, par@load-init, par@init, par@reset, NL, - PX): Handle fractional point sizes for PS, VS, FPS, and FVS. - - * tmac/groff_ms.man, docs/groff.texinfo, NEWS: Document it. - -2004-07-19 Werner LEMBERG - - * src/preproc/pic/lex.cpp (for_input): Add member `from'. - Update constructor. - (do_for, for_input::get, for_input::peek): Handle negative `by'. - * src/preproc/pic/pic.man, doc/pic.ms, NEWS: Document it. - -2004-07-08 Thomas Klausner - - * tmac/doc-syms (doc-str-St--p1003.1-2004): New string. - * tmac/groff_mdoc.man: Updated. - -2004-07-05 Werner LEMBERG - - * doc/groff.texinfo: Further improve documentation of `hcode'. - -2004-07-04 Sang Dae Yu - - Improve appearance of arrows in pic. - - * src/preproc/pic/object.cpp (draw_arrow): Make outline of filled - arrow head thin. - Use two line segments for drawing non-filled arrow head. - (line_object::print, spline_object::print): Shorten line length to - avoid arrow sticking. - (arc_object::print): Take arrow direction into account. - -2004-07-03 Heinz-Jürgen Oertel - - * tmac/groff_www.man: Update documentation of .MPIMG. - -2004-07-03 Werner LEMBERG - - * tmac/an-old.tmac (RI): Always start with font `R'. - (RI, IR): Properly end with font `R'. - -2004-07-02 Paul Eggert - - * man/ditroff.man, man/groff_font.man, man/groff_out.man, - src/devices/grohtml/grohtml.man, src/preproc/grn/grn.man, - src/preproc/pic/pic.man, tmac/groff_man.man, tmac/groff_ms.man: - Don't pass more than six arguments to .R, .I, .B, etc., for - compatibility with traditional troff macros. - -2004-07-02 Werner LEMBERG - - * src/roff/troff/input.h: s/COMPATIBLE_SAVE/PUSH_GROFF_MODE/. - s/COMPATIBLE_RESTORE/POP_GROFFCOMP_MODE/. - Update all users. - (PUSH_COMP_MODE): New internal character constant. - Update all users. - - * src/roff/troff/input.cpp (get_copy): Handle PUSH_GROFF_MODE, - PUSH_COMP_MODE, and POP_GROFFCOMP_MODE. - (token::next, macro::append): Handle PUSH_COMP_MODE. - (decode_args): Add PUSH_GROFF_MODE or PUSH_COMP_MODE before and - POP_GROFFCOMP after each of the decoded arguments to make them - independent from the compatibility mode status. - (comp_mode): Add `COMP_ENABLE'. - (do_define_string, do_define_macro): Handle COMP_ENABLE. - (define_string, append_string, define_macro, define_indirect_macro, - append_macro, append_indirect_macro): Handle `compatible_flag'. - (chop_macro, substring_request, asciify): Handle PUSH_COMP_MODE. - - * man/groff_diff.man, doc/groff.texinfo: Updated. - -2004-07-01 Werner LEMBERG - - * doc/groff.texinfo: Improve documentation of `hcode'. - Use @documentencoding and convert document to latin-1; to do that - make latin characters active and assign proper macros (within a - @tex...@end tex environment). - * doc/Makefile.in (.texinfo.html, groff): Use --enable-encoding. - * doc/Makefile.sub (groff): Ditto. - -2004-06-29 Werner LEMBERG - - Implement two new conditional operators `F ' and `S ' - which check whether is a valid font or style, respectively. - - * src/libs/libgroff/font.cpp (text_file): Add `silent' member. - (text_file::text_file): Updated. - (text_file::error): Don't emit message if `silent' is set. - (font::load_font): Add optional third argument (which is directly - passed to `load'. - (font::load): Add optional second argument to check the header of - a font only, without emitting warning or error messages. - * src/include/font.h (font): Updated. - - * src/roff/troff/input.cpp (do_if_request): Implement `S' and `F' - conditionals. - * src/roff/troff/node.cpp (mount_font_no_translate): Add optional - fourth argument to check a font without mounting. - (check_font, check_style): New functions. - * src/roff/troff/node.h: Updated. - - * man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo: - Updated. - -2004-06-27 Werner LEMBERG - - Implement new string-valued register `.sty' to return the current - style name. - - * env.cpp (environment::get_style_name_string): New function. - (init_env_requests): Add `.sty' register. - * env.h (environment): Updated. - * node.cpp (font_info): Make `get_style_name' a friend. - (get_style_name): New function. - * node.h: Updated. - - * man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo: - Updated. - -2004-06-15 Werner LEMBERG - - * src/preproc/tbl/main.cpp (process_data) : Handle - `nospaces' option. - -2004-06-10 Colin Percival - - * doc/meintro.me, doc/meref.me: Don't use \*[td], \n[dy], \*[mo], - and \n[mo] to avoid dependency on current date. - -2004-06-08 Werner LEMBERG - - * Makefile.sub (install_data): New target. - -2004-06-04 Werner LEMBERG - - * src/libs/libxutil/Makefile.sub (EXTRA_CFLAGS): Define. - -2004-06-03 Werner LEMBERG - - * src/devices/xditview/Makefile.sub (EXTRA_LDFLAGS): Fix typo and - order of libraries. - (install_data): Add $(srcdir). - - * src/utils/xtotroff/Makefile.sub (EXTRA_LDFLAGS): Fix order of - libraries. - -2004-06-02 Werner LEMBERG - - * aclocal.m4 (GROFF_X11): s/have_no_x/groff_no_x/. - Add X11 stuff to CFLAGS, LDFLAGS, and LIBS temporarily. - Add test for Xmu library. - (GROFF_APPRESDIR_OPTION, GROFF_APPRESDIR_CHECK, - GROFF_APPRESDIR_DEFAULT): New macros. - - * configure.ac: Call GROFF_APPRESDIR_OPTION, GROFF_APPRESDIR_CHECK, - and GROFF_APPRESDIR_DEFAULT. - - * configure: Regenerated. - - * Makefile.in (appresdir): New variable. - (MDEFINES): Add appresdir. - - * src/devices/xditview/Makefile.sub (EXTRA_LDFLAGS): Add -Xmu and - -Xt. - (install_data, uninstall_sub): New targets to handle GXditview.ad. - - * src/utils/indxbib/Makefiles.ub (install_data): Depend on - `$(srcdir)/eign', not `eign'. - - * MANIFEST, INSTALL, NEWS, PROBLEMS: Updated. - - * man/groff_out.man, man/roff.man, src/devices/grops/grops.man, - src/devices/xditview/gxditview.man, src/roff/groff/groff.man: - Protect (g)xditview with `\%' to avoid hyphenation. - Other minor formatting. - -2004-06-01 Werner LEMBERG - - Integrate gxditview into groff's standard directory hierarchy. - - * src/xditview/*: Moved to ... - * src/devices/xditview/*: Here. - Moved DviChar.h and XFontName.h to src/include. - Moved DviChar.c and XFontName.c to new directory src/libs/libxutil. - Split off `xmalloc' into new file src/libs/libxutil/xmalloc.c. - Moved xtotroff.c to new directory src/utils/xtotroff. - Provide proper Makefile.sub files (reusing the stuff from - Imakefile.in). - DESC renamed to DESC.in. - Removed GXDitview-ad.h, INSTALL, Imakefile.in. - Converted everything from K&R to ANSI C. - Decorated with const where appropriate. - Cast string constants with `String' and `char *' where appropriate. - Made it compile with C++ (used as a C compiler). - Removed other minor compiler warnings. - - * src/devices/xditview/device.c: Include config.h, string.h, and - defs.h. - Don't declare `exit', `strtok', `strchr', and `getenv'. - (FONTPATH): Remove. - - * src/devices/xditview/font.c: Don't declare `XParseFontName' and - `XFormatFontName'. - - * src/devices/xditview/xditview.c: Include config.h. - Include stdio.h earlier. - Protect declaration of `popen' and `pclose' with - NEED_DECLARATION_POPEN and NEED_DECLARATION_PCLOSE. - Replace `caddr_t' with `XtPointer'. - (MakePromptFunc): New typedef. - (DoPrint): Use RETSIGTYPE. - (promptfunction): Change type to MakePromptFunc. - (MakePrompt): Use MakePromptFunc for third argument. - (xmalloc): Removed. - - * src/devices/xditview/ad2c: Add casts to `String'. - - * src/include/XFontName.h (XFontNameString): Don't use array - notation. - Add prototypes for `XParseFontName', `XFormatFontName', - `XCompareFontName', and `XCopyFontName'. - - * src/include/Makefile.sub (HDRS): Add `DviChar.h' and - `XFontName.h'. - - * src/utils/xtotroff/xtotroff.c: Include getopt.h. - Don't declare `XParseFontName' and `XFormatFontName'. - (xmalloc): Removed. - (main): Remove `optind' and `optarg'. - - * Makefile.in (XDEVDIRS, XPROGDIRS, XLIBDIRS): New variables - (to select programs which need X). - Make XDEVIDIRS depend on `FORCE'. - (X_CFLAGS, X_LIBS, X_EXTRA_LIBS, X_PRE_LIBS): New variables (for - X support). - (MDEFINES): Updated. - (LIBDIRS): Use XLIBDIRS. - (CPROGDIRS): Use XPROGDIRS. - (DEVDIRS): Remove font directories for gxditview. - (ALLDIRS, DISTDIRS): Add XDEVDIRS. - (EXTRADIRS): Remove src/xditview. - - * Makefile.sub (DISCLEANFILES): Updated. - - * Makefile.comm (LIBXUTIL): New variable. - (.cpp.o, .cpp.obj): Handle EXTRA_CCFLAGS. - (.c.o, .c.obj, .y.o): Handle EXTRA_CFLAGS. - - * Makefile.cpg, Makefile.ccpg ($PROG): Handle EXTRA_LDFLAGS. - - * aclocal.m4 (GROFF_X11): New function. - - * configure.ac: Call GROFF_X11. - Don't create src/xditview/Imakefile. - Don't emit notice how to build gxditview. - - * configure: Regenerated. - - * test-groff.in (GROFF_BIN_PATH, XENVIRONMENT): Updated. - -2004-05-28 Akihiro Sagawa - - * Makefile.in (CPPFLAGS): Define. - (MDEFINES): Add CPPFLAGS. - -2004-05-27 Werner LEMBERG - - * arch/misc/Makefile.sub (shdeps.sed): Use $(srcdir). - -2004-05-26 Niklas Edmundsson - - Fix problems with `friend name injections'. - - * src/preproc/eqn/box.h (make_mark_box, make_lineup_box, - make_script_box), src/roff/troff/div.h (end_diversions), - src/roff/troff/env.h (title), input.cpp (process_input_stack): Undo - change 2004-04-08. - -2004-05-25 Bernd Warken - - * src/preproc/pic/pic.man, doc/pic.ms: Add example for `command'. - -2004-05-25 Werner LEMBERG - - * src/libs/libgroff/cset.cpp, src/libs/libgroff/lf.cpp, - src/libs/libgroff/color.cpp: Include lib.h. - -2004-05-25 Paul Eggert - - * PROBLEMS: Update documentation for problems with Sun C++ 5.0 - through Forte 6u1, and for how to get GNU make on Solaris. - -2004-05-24 Werner LEMBERG - - * PROBLEMS: Document problems with gcc 3.4.0 on Sun. Reported - by Paul Eggert. - -2004-05-15 Keith Marshall - - * arch/misc/Makefile.sub (shdeps.sed): Don't use `$<' in explicit - rule. - -2004-05-14 Werner LEMBERG - - * REVISION: Set to 2. - - * aclocal.m4 (GROFF_STDINT_H): Removed. - (GROFF_INTTYPES_H): Define HAVE_CC_INTTYPES_H. - - * configure.ac: Updated. - * configure, src/include/config.hin: Regenerated. - - * src/libs/libgroff/tmpname.cpp: Don't include stdint.h but - inttypes.h conditionally. - -2004-05-13 Werner LEMBERG - -Version 1.19.1 released -======================= - -2004-05-10 Stephen Gildea - - * src/preproc/refer/label.y (same_author_last_name, - same_author_name): Handle empty sort keys. - -2004-05-10 Werner LEMBERG - - * NEWS, README, TODO, PROJECTS, PROBLEMS, MANIFEST, doc/webpage.ms, - tmac/TODO: Updated. - - * tmac/doc-syms (doc-str-Lb-libposix, doc-str-Lb-libpthread, - doc-str-Lb-librt): Reset font. - (Lb): Rename `doc-str-Lb' to `doc-str-Lb1'. - Provide `doc-str-Lb' to reset font. - * tmac/groff_mdoc.man: Updated. - -2004-05-08 Jan Schaumann - - * src/preproc/html/pre-html.cpp (make_message): Make it work for - snprintf versions which don't conform to ANSI C 99 (this is, - counting the string's trailing null byte in the return value). - -2004-05-07 Keith Marshall - - * src/roff/troff/node.cpp (suppress_node::tprint): Don't expect - that all implementations of sprintf handle null pointers correctly. - -2004-05-04 Werner LEMBERG - - * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: - Document `.U' register. - - * src/roff/troff/env.cpp (environment::mark_last_line) - [WIDOW_CONTROL]: Fix scope of `p' for new C++ compilers. - -2004-05-04 Larry Kollar - - New read-only register `.U'; it returns 1 in safer mode and 0 - otherwise. - - * src/roff/troff/input.cpp (init_input_requests): Implement `.U' - register. - -2004-05-03 Werner LEMBERG - - * install-sh, mkinstalldirs: New versions; taken from texinfo CVS. - -2004-04-17 Werner LEMBERG - - * src/include/font.h (font): Use `int' for ch_index. - * src/libs/libgroff/font.cpp (font::alloc_ch_index, - font::compact): Updated. - - * src/roff/groff/pipeline.c (run_pipeline) [_WIN32]: Fix compiler - warnings. - - * src/roff/troff/div.cpp (begin_page), src/roff/troff/env.cpp - (hyphen_word): Fix compiler warnings. - * src/roff/troff/input.cpp (get_char_for_escape_name): Return - `char'. - Update all callers. - (get_delim_number, get_line_arg): Change second argument type to - `unsigned char'. - (macro_header::copy, token::next, do_define_string, - do_define_character, substring_request, asciify_macro, - unformat_macro, read_size, non_interpreted_node::interpret, - while_request, main: Fix compiler warnings. - (read_color_draw_node): Initialize `col'. - - * src/preproc/tbl/table.cpp (horizontal_span, table_entry): Make - `start_col' and `end_col' of type `int'. - (vertical_rule): Make `col' of type `int'. - - * src/preproc/grn/hdb.cpp (DBRead): Protect call to getc with check - for EOF. - - * src/preproc/refer/label.y (uppercase_array, lowercase_array): - New arrays. - (format_serial): Use them to remove dependency on ASCII. - - * src/devices/grops/ps.cpp (ps_printer::define_encoding): Fix - compiler warning. - * src/devices/grops/psrm.cpp (resource_manager::supply_resource): - Ditto. - - * src/devices/grotty/tty.cpp (tty_font::load_tty_font): Fix - compiler warnings. - (glyph): Change type of `hpos' to `int'. - - * src/devices/lbp/lbp.cpp (strsep): Removed. Unused. - * src/devices/lbp/lbp.h (splinerel): Fix compiler warnings. - - * src/utils/tfmtodit.cpp (gf::load): Fix compiler warnings. - - * src/utils/pfbtops/pfbtops.c (get_text): Fix compiler warning. - -2004-04-16 Werner LEMBERG - - * src/devices/grolbp/lbp.h, src/preproc/grn/gprint.h, - src/preproc/grn/hgraph.cpp, src/preproc/grn/hpoint.cpp, - src/preproc/html/pushback.cpp, src/preproc/html/pushback.h: Use - `double' instead of `float' everywhere. - * src/preproc/grn/main.cpp: Use `double' instead of `float' - everywhere. - (main): Add return value. - * src/preproc/grn/hdb.cpp: Use `double' instead of `float' - everywhere. - Update all user functions. - - * src/include/search.h, src/include/ptable.h, src/include/printer.h, - src/preproc/eqn/box.h, src/preproc/pic/object.h, - src/preproc/refer/refer.h, src/preproc/tbl/table.h, - src/preproc/tbl/table.cpp, src/roff/troff/env.h, - src/roff/troff/div.h, src/roff/troff/token.h, src/roff/troff/node.h, - src/roff/troff/input.cpp, src/roff/troff/request.h, - src/roff/troff/node.cpp: Don't mix `struct' and `class' in forward - declarations. - - * src/utils/indxbib/signal.c: Include stdlib.h. - -2004-04-14 Keith Marshall - - * tmac/s.tmac (@init, RP): Allow initialization of the PO register - before the first page. - -2004-04-14 Thomas Klausner - - * tmac/doc-common (doc-volume-as-*): Use lowercase names. - (doc-operating-system-*): Updated. - * tmac/doc-syms (doc-str-St-*): Various small fixes. - (doc-str-Lb-*): Add more library names. - -2004-04-10 Art Haas - - * src/utils/hpftodit/hpuni.cpp (hp_msl_to_unicode_list): Don't - use anonymous type. - -2004-04-09 Art Haas - - * src/utils/tfmtodit.cpp (lig_chars): Don't use anonymous type. - -2004-04-09 Keith Marshall - - * arch/misc/shdeps.sh: Generate better comment for sed script. - -2004-04-08 Art Haas - - * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list), - src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list), - src/libs/libgroff/uniuni.cpp (unicode_decompose_list), - src/preproc/eqn/box.cpp (param_table), src/preproc/grn/hgraph.cpp - (polyfill), src/preproc/grn/main.cpp (polyfill), - src/preproc/refer/command.cpp (command_table), - src/utils/tfmtodit.cpp (lig_table): Don't use anonymous types (which - gcc 3.5 doesn't like). - -2004-04-08 Werner LEMBERG - - Removing many compiler warnings. groff should now compile with - a C++ compiler used for C files also. [Simple variable renamings - to avoid shadowing aren't logged in detail.] - - * src/devices/grodvi/dvi.cpp: Some local variable renamings. - (draw_dvi_printer::draw) ['c']: Enclose in block. - - * src/devices/grohtml/post-html.cpp: Some local variable renamings. - (page::add_line): Fix typos. - * src/devices/grohtml/html-text.cpp: Some local variable renamings. - - * src/devices/grolbp/lbp.cpp: Don't define _GNU_SOURCE. - Some local variable renamings. - * src/devices/grolbp/lbp.h: Some local variable renamings. - - * src/devices/grolj4/lj4.cpp, src/devices/grotty/tty.cpp: Some local - variable renamings. - - * src/libs/libbib/index.cpp (index_search_item_iterator::get_tag): - Remove redundant local variable declaration. - * src/libs/libbib/map.c (mapread, unmap): Don't use K&R style. - Don't use `caddr_t' but `void *'. - Enclose functions with `extern "C"' for C++. - - * src/libs/libdriver/input.cpp (remember_filename, - remember_source_filename): Use cast for string constant. - - * src/libs/libgroff/font.cpp, src/libs/libgroff/fontfile.cpp, - src/libs/libgroff/nametoindex.cpp, src/libs/libgroff/paper.cpp, - src/libs/libgroff/geometry.cpp: Some local variable renamings. - * src/libs/libgroff/iftoa.c, src/libs/libgroff/itoa.c: Don't use K&R - style. - Enclose functions with `extern "C"' for C++. - * src/libs/libgroff/quotearg.c (TRUE,FALSE): Define as macros. - (needs_quoting): Return `int'. - (quote_arg): Add proper casts to malloc and realloc. - * src/libs/libgroff/spawnvp.c: Compile code only for MS-DOS and - various MS Windows environments. - (spawnvp_wrapper): Add proper cast to malloc. - - * src/preproc/eqn/box.h: Remove redundant declarations of - `make_script_box', `make_mark_box' and `make_lineup_box'. - * src/preproc/eqn/eqn.y: Remove redundant declaration of `strsave'. - * src/preproc/eqn/script.cpp, src/preproc/eqn/pile.cpp: Some local - variable renamings. - - * src/preproc/grn/hpoint.cpp: Some local variable renamings. - * src/preproc/grn/hgraph.cpp: Some local variable renamings. - (dx, dy): Renamed functions to... - (deltax, deltay): This. - * src/preproc/grn/main.cpp: Some local variable renamings. - (deffont): Add `const'. - (initpic, conv): Use cast for string constant. - - * src/preproc/html/pre-html.cpp: Some local variable renamings. - (makeFileName, alterDeviceTo, addZ): Use cast for string constant. - (char_buffer::run_output_filter): Second argument is unused. - * src/preproc/html/pushback.cpp: Some local variable renamings. - - * src/preproc/pic/pic.y: Remove redundant declaration of `do_copy'. - * src/preproc/pic/object.cpp: Some local variable renamings. - - * src/preproc/refer/label.y (lookup_label): Remove redundant - declaration of local variable. - - * src/preproc/soelim.cpp: Remove redundant declaration of - `interpret_lf_args'. - - * src/preproc/tbl/main.cpp: Some local variable renamings. - - * src/roff/groff/groff.cpp (main): Use cast for string constant. - * src/roff/groff/pipeline.c: Enclose declarations of `error', - `c_fatal', and `i_to_a' with `extern "C"' for C++. - Don't use C++-style comments. - - * src/roff/troff/env.h: Remove redundant declaration of `title'. - * src/roff/troff/node.h, src/roff/troff/env.cpp, - src/roff/troff/div.cpp, src/roff/troff/node.cpp: Some local variable - renamings. - * src/roff/troff/div.h: Remove redundant declaration of - `end_diversions'. - * src/roff/troff/troff.h: Remove redundant declaration of - `cleanup_and_exit' - * src/roff/troff/input.cpp: Remove redundant declaration of - `handle_first_page_transition' and `process_input_stack'. - - * src/utils/hpftodit.cpp: Some local variable renamings. - - * src/utils/indxbib/signal.c: Enclose functions with `extern "C"' - for C++. - Don't define RETSIGTYPE. - * src/utils/indxbib/indxbib.cpp: Some local variable renamings. - - * src/utils/pfbtops/pfbtops.cpp: Don't use K&R style. - (error): Use `const' in argument. - (main): Remove redundant declaration of `optind'. - Move declaration of `Version_string' to top-level. - - * PROBLEMS: Document difficulties compiling signal.c if a C++ - compiler is used for C. - -2004-04-07 Werner LEMBERG - - * Makefile.sub (DISTCLEANFILES): Add `test-groff'. - -2004-04-06 Keith Marshall - - Make scripts like nroff.sh and neqn.sh portable across various - (Unix-like) shell implementations from Cygwin, MSYS, etc., which use - non-POSIX path separators. The idea is to extend those scripts to - decide at run-time (of the script) which path separator to use. - - * arch/misc/Makefile.sub: New file. - * arch/misc/shdeps.sh: New file, generating OS dependency fixups. - This script handles @GROFF_BIN_PATH_SETUP@, replacing it with - a proper definition of the variable `GROFF_RUNTIME'. - - * Makefile.in (SH_DEPS_SED_SCRIPT): New variable. - (MDEFINES): Add SH_DEPS_SED_SCRIPT. - (PROGDEPDIRS): New variable. - `FORCE' it. - (PROGDIRS): Add PROGDEPDIRS. - - * src/preproc/eqn/Makefile.sub (neqn): Call SH_DEPS_SED_SCRIPT. - Don't substitute @SEP@ and @BINDIR@. - * src/preproc/eqn/neqn.sh: Use @GROFF_BIN_PATH_SETUP@. - (PATH): Use GROFF_RUNTIME. - - * src/roff/nroff/Makefile.sub (nroff): Call SH_DEPS_SED_SCRIPT. - Don't substitute @SEP@ and @BINDIR@. - * src/roff/nroff/nroff.sh: Use @GROFF_BIN_PATH_SETUP@. - (PATH): Use GROFF_RUNTIME. - -2004-04-05 Keith Marshall - - * src/roff/nroff/nroff.sh: Implement work-around for sh.exe from - Cygwin which doesn't handle stderr correctly. - -2004-03-08 Werner LEMBERG - - * Makefile.comm (install_dev, uninstall_dev): Protect `for' loops - against empty argument. Problem reported by . - -2004-03-05 Keith Marshall - - * Makefile.in (SEP): Replaced with... - (RT_SEP, SH_SEP): Separators for the target platform's native path - separator and the build environment, respectively. - (fontpath, tmacpath): Use RT_SEP. - (MDEFINES): Updated. - - * contrib/mom/Makefile.sub (GROFF_BIN_PATH): Use SH_SEP. - * doc/Makefile.sub (GROFF_BIN_PATH): Use SH_SEP. - * src/preproc/eqn/Makefile.sub (neqn): Use SH_SEP. - * src/roff/nroff/Makefile.sub (nroff): Use SH_SEP. - -2004-03-05 Werner LEMBERG - - * fonts/devlj4/Makefile.sub (LJ4RES): Set to 1200. This helps to - reduce alignment problems with newer printers which use built-in - TrueType fonts (instead of the older Intellifonts). The ideal - solution is to provide a second set of groff metric files, but this - is extremely time-consuming to produce, given that HP's metric - files are very rudimentary. - -2004-03-01 Werner LEMBERG - - * src/devices/grolj4/lj4.cpp (main): Fix argument of getopt_long. - s/operand/argument/ in error message. - -2004-03-01 Keith Marshall - - * src/roff/groff/groff.cpp (main): Don't allow option -o if -Thtml - is in use. - -2004-03-01 Antti Kantee - - * tmac/s.tmac (XE): Fix error message. - -2004-02-27 Jeff Conrad - - * src/include/nonposix.h (write, dup, dup2, close) [_MSC_VER]: - New macros. - - * src/roff/groff/pipeline.c: Declare strcasecmp. - (run_pipeline) [_WIN32]: Use function name variants which don't - start with `_'. - Fix stream handling. - -2004-02-27 Keith Marshall - - * src/include/nonposix.h: Fix declaration of `system_shell_name'. - Declare `spawnvp_wrapper' and macro definitions of spawnvp only - for platforms which use the native Win32 runtime libraries. - (FLUSH_INPUT_PIPE) [_UWIN]: Provide non-empty version. - - * src/libs/libgroff/quotearg.c (QUOTE_ARG_MALLOC_ERROR, - QUOTE_ARG_REALLOC_ERROR): Fix string. - - * src/preproc/html/pre-html.cpp: Remove declaration of - `spawnvp_wrapper'. - Don't use __MINGW32__. - s/DEBUG_FILE/DEBUG_FILE_DIR/. - (DEBUG_TEXT, DEBUG_NAME, DEBUG_FILE) [DEBUGGING]: New macros. - (OUTPUT_STREAM, PS_OUTPUT_STREAM, REGION_OUTPUT_STREAM): New macros. - (char_buffer::run_output_filter) [MAY_FORK_CHILD_PROCESS]: Fix - calls to `set_redirection' and `WAIT'. - [MAY_SPAWN_ASYNCHRONOUS_CHILD]: Remove unused variable `i' and `j'. - Fix calls to `set_redirection' and `save_and_redirect'. - (char_buffer::do_html, char_buffer::do_image) [DEBUGGING]: Fix calls - to `set_redirection' and `save_and_redirect'. - (usage): Fix message. - (makeTempFiles, main): Use `DEBUG_FILE'. - -2004-02-21 Werner LEMBERG - - * src/roff/troff/troff.h (WARN_TOTAL): Fix value. - -2004-02-21 Keith Marshall - - * src/libs/libgroff/quotearg.c: New file, providing proper argument - quoting for MSVC's spawn* and exec* functions. - * src/libs/libgroff/spawnvp.c: New file, providing a wrapper around - spawnvp with proper quoting for MSVC. - - * src/libs/libgroff/assert.cpp (program_name), - src/libs/libgroff/new.cpp (program_name): Declare as `extern "C"'. - * src/libs/libgroff/Makefile.sub (OBJS, CSRCS): Updated. - - * src/roff/troff/input.cpp (program_name): Declare as `extern "C"'. - - * src/include/error.h (program_name): Declare as `extern "C"'. - * src/include/nonposix.h [__MSDOS__ ...]: Handle spawnvp. - -2004-02-21 Jeff Conrad - - * src/preproc/html/pre-html.cpp [__CYGWIN__ ...]: Declare - spawnvp_wrapper. - [MAY_SPAWN_ASYNCHRONOUS_CHILD]: Declare i and j. - -2004-02-20 Jeff Conrad - - * src/roff/groff/pipeline.c (cmd) [__MSDOS__ || ...]: New global - variable. - (sbasename) [__MSDOS__ || ...]: New function. - (system_shell_name) [__MSDOS__ || ...]: Use a different, more - generic algorithm. - (system_shell_dash_c, is_system_shell) [__MSDOS__ || ...]: Updated. - (run_pipeline) [_WIN32]: Use _XXX variants for some macros instead - of XXX. - Use STDOUT_FILENO instead of hardcoded file handle. - (signal_catcher) [__MSDOS__]: Moved to non-_WIN32 section. - -2004-02-19 Werner LEMBERG - - * src/roff/troff/div.cpp: Include nonposix.h after troff.h to - avoid warnings w.r.t. redefinition of P_tmpdir for some compilers. - -2004-02-18 Werner LEMBERG - - * font/devlj4/Makefile.sub (DEVFILES): Updated to contain all - new font and mapping files. - -2004-02-18 Jeff Conrad - Keith Marshall - - * src/include/nonposix.h (FLUSH_INPUT_PIPE): New macro to empty - an input pipe. This is needed for the MSVC compiler to make troff's - `-o' option work. - - * src/roff/troff/div.cpp: Include nonposix.h. - (cleanup_and_exit): Call FLUSH_INPUT_PIPE. - -2004-02-17 Werner LEMBERG - - * font/devlj4/generate/special.awk: New script. - * font/devlj4/generate/Makefile (S): Use special.awk. - * font/devlj4/*: Regenerated, including the following new files: - Arial (AR, AB, AI, ABI), Times New Roman (TNRR, TNRB, TNRI, TNRBI), - MS Symbol (SYMBOL), Wingdings (WINGDINGS). - * NEWS: Document new lj4 fonts and revised hpftodit. - -2004-02-17 Paco Andrés Verdú - - * src/devices/grolbp/lbp.h (vmdvarc): Fix formatting string. - -2004-01-25 Werner LEMBERG - - * src/libs/libgroff/progname.cpp: Replaced with... - * src/libs/libgroff/progname.c: New file. - * src/libs/libgroff/Makefile.sub: Updated accordingly. - -2004-01-17 Werner LEMBERG - - * font/devlj4/generate/Makefile (SYMBOL): Use 9nb28703.tfm. - -2004-01-16 Jeff Conrad - - * font/devlj4/generate/wingdings.map, - font/devlj4/generate/symbol.map: Include unnamed glyphs. - Use groff glyph names where possible. - * src/devices/grolj4/lj4_font.man: Minor updates. - -2004-01-13 Werner LEMBERG - - * tmac/www.tmac (DC): Handle TTY devices. - - * doc/webpage.ms: Document viewCVS from ffii.org. - * NEWS, README: Updated. - - * src/roff/groff/groff.man: Mention lj4_font man page. - - * font/devlj4/generate/Makefile (SYMBOLMAP, WINGDINGSMAP): New - variables. - (FONTS): Add SYMBOL and WINGDINGS. - (SYMBOL, WINGDINGS): New targets. - -2004-01-13 Jeff Conrad - - * src/devices/grolj4/lj4_font.man: New man page. - * src/devices/grolj4/Makefile.sub (MAN5): New variable. - * src/devices/grolj4.man: Mention lj4_font man page. - - * src/utils/hpftodit/hpftodit.cpp (read_map): Handle line comments. - * src/utils/hpftodit/hpftodit.man: Document it. - (CW): New macro. - Remove details about fonts (which are now in lj4_font.man). - - * font/devlj4/generate/symbol.map, - font/devlj4/generate/wingdings.map: New files. - -2004-01-12 Werner LEMBERG - - * README: Mention ffii's viewcvs access. - -2004-01-09 Werner LEMBERG - - * font/devlj4/generate/special.map: Map MSL 228 to U+221F. - -2004-01-09 Jeff Conrad - - Revert most of the change from 2004-01-03 to better control used - symbol sets. - - * src/utils/hpftodit/hpftodit.cpp (symbol_set): New structure. - (text_symbol_sets, special_symbol_sets): New arrays. - (symbol_set_table): New global variable. - (read_symbol_sets): Use search order given in the text_symbol_sets - and special_symbol_sets arrays. If command line flag -a is not - given, search both arrays. - (output_charset): Require x_height_tag only for command line flag -i. - -2004-01-06 Werner LEMBERG - - Implement string-valued registers \n[.m] and \n[.M] to return the - name of the current drawing and background color, respectively. - - * src/roff/troff/symbol.h: Moved to... - * src/include/symbol.h: Here. - Small fixes to make it work outside of the `troff' directory. - * src/roff/troff/symbol.cpp: Moved to... - * src/libs/libgroff/symbol.cpp: Here. - Small fixes to make it work outside of the `troff' directory. - - * src/include/Makefile.sub (HDRS), src/libs/libgroff/Makefile.sub - (OBJS, CCSRCS), src/roff/troff/Makefile.sub (OBJS, CCSRCS, HDRS): - Updated. - - * src/include/color.h: Include symbol.h. - (color): Add new field `nm'. - * src/libs/libgroff/color.cpp (color::color): Updated. - - * src/roff/troff/dictionary.cpp, src/roff/troff/div.cpp, - src/roff/troff/node.cpp, src/roff/troff/number.cpp, - src/roff/troff/reg.cpp: Don't include symbol.h. - - * src/roff/troff/env.cpp: Don't include symbol.h. - (environment::get_glyph_color_string, - environment_get_fill_color_string): New member functions. - (init_env_requests): Handle `.m' and `.M' registers. - * src/roff/troff/input.cpp: Don't include symbol.h. - (default_symbol): Moved to symbol.cpp/symbol.h. - (do_glyph_color, do_fill_color, define_color): Pass symbol name - to color constructor. - * src/roff/troff/env.h: Updated. - - * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: - Document new registers. - -2004-01-05 Werner LEMBERG - - * src/roff/troff/node.cpp (space_node::get_breakpoints, - space_node::nbreaks): Protect against zero `next' field. - -2004-01-03 Jeff Conrad - - In hpftodit, use the symbol sets offered in the TFM. - - * src/utils/hpftodit/hpftodit.cpp (NO_GLYPH): New constant. - (symbol_set, text_symbol_sets, special_symbol_sets, - symbol_set_table): Removed. - (get_printcode): Removed. - (read_symbol_sets): Initialize `symbol_set' field with - `NO_SYMBOL_SET'. - Simplify code to just use the `kind' value. - (output_charset): Improve output formatting. - (dump_symbols): Simplified. - -2004-01-02 Werner LEMBERG - - * font/devlj4/generate/text.map: Add more MSL numbers. - -2004-01-02 Jeff Conrad - - * src/utils/hpftodit/hpftodit.cpp (is_decomposed): New macro. - (text_symbol_sets): Add more symbol sets. - (debug_flag): New static variable (moved from `main'). - (get_printcode, show_symset): New functions. - (main): Remove `debug_flag'. - (output_charset): Use `show_symset'. - (dump_symbols): Use `show_symset'. - Print symsets for all glyphs. - (read_map): Actually call `unicode_to_ucode_make' but this time - correctly. - -2004-01-01 Werner LEMBERG - - * font/devlj4/generate/text.map, font/devlj4/generate/special.map: - Fix placement of comments. - -2004-01-01 Jeff Conrad - - * src/utils/hpftodit/hpftodit.cpp (main): Read map file also if - option `-d' is given. - (output_charset): Improve warning messages to give more information. - (dump_symbols): Make information more precise. - (usage): Updated. - (read_map): Don't call unicode_to_ucode_name; the glyph names must - appear as-is and shouldn't be decomposed. - -2003-12-31 Werner LEMBERG - - * src/utils/hpftodit/hpftodit.cpp (dump_tags): Handle posture_tag. - * font/devlj4/generate/Makefile (IFLAG): Updated to new units. - (FONTS): Add TrueType font families Arial and Times New Roman. - (TNRR, TNRB, TNRI, TNRBI, AR, AB, AI, ABI): New targets. - * font/devlj4/generate/text.map: Fix Unicode values of `fi' and - `fl'. - -2003-12-31 Jeff Conrad - - * test-groff.in (SEP): Quote value. - * src/roff/troff/node.cpp (suppress_node::tprint): Change type of - `tem' to `char*' to avoid deallocation of a pointer to a constant - object which some compilers don't like. - -2003-12-31 Werner LEMBERG - - * font/devlj4/generate (text.map, special.map): Rewritten to work - with the new hpftodit version. - -2003-12-30 Jeff Conrad - - * src/utils/hpftodit/hpftodit.cpp (output_charset): Emit HP symbol - set and 8bit character code for all glyphs also. - -2003-12-30 Werner LEMBERG - - * src/libs/libgroff/strcasecmp.c: Updated from gnulib. - -2003-12-29 Werner LEMBERG - - More fixes for MSVC compiler. - - * doc/Makefile.sub, contrib/mom/Makefile.sub (GROFF_BIN_PATH): Use - $(SEP). - - * src/include/nonposix.h (STDIN_FILENO, STDOUT_FILENO, - STDERR_FILENO) [_MSC_VER]: Define conditionally. - (getpid) [_MSC_VER]: Remove. - Include direct.h and process.h conditionally. - - * src/roff/troff/node.cpp (suppress_node::tprint): Don't use - parentheses for a_delete. - - * src/utils/lookbib/lookbib.cpp: Include nonposix.h. - - * test-groff: Replaced with... - * test-groff.in: This new template to handle path separator - properly. - - * configure.ac: Check for direct.h and process.h. - Generate test-groff script. - * configure, src/include/config.hin: Regenerated. - -2003-12-28 Werner LEMBERG - - Add integral extension glyph. - Add new option `-x' to afmtodit to suppress use of built-in AGL. - - * font/devhtml/R.proto, font/devutf8/R.proto: Add `u23AE'. - - * font/devps/generate/textmap: Provide entry for `integralex' to - override (old) PUA value of the AGL. - * font/devps/generate/Makefile (SS): Add afmtodit option `-x'. - * font/devps/*: Regenerated. - - * src/utils/afmtodit/afmtodit.pl: Add option `-x'. - * src/utils/afmtodit/afmtodit.man, NEWS: Updated. - -2003-12-27 Werner LEMBERG - - Add forgotten `coproduct' symbol (already available for DVI). - - * font/devhtml/R.proto, font/devps/generate/textmap, - font/devps/symbolmap, font/devutf8/R.proto, man/groff_char.man, - src/libs/libgroff/uniglyph.cc, src/libs/libgroff/glyphuni.cpp: Add - U+2210 (\[coproduct]). - -2003-12-26 Jeff Conrad - - hpftodit has been extended to handle TrueType metric files and - more glyphs. See hpftodit.man for more details. - - * src/utils/hpftodit/hpftodit.cpp: Include stdio.h, string.h, - ctype.h, and unicode.h. - s/msl/charcode/ everywhere since we now handle Unicode values also. - (equal, NO, YES, MSL, SYMSET, UNICODE, UNICODE): New macros. - Use it where appropriate. - (MULTIPLIER): Replaced with... - (multiplier): New global static variable. - (scale): Updated. - (tag_type): Add more TFM tags. - (tag_name): New array. - (ENUM_TYPE, FLOAT_TYPE): Removed. - (BYTE_TYPE): New value assigned. - (ASCII_TYPE, RATIONAL_TYPE): New enumeration values. - (text_symbol_sets, special_symbol_sets): Extended to cover more - sets. - (check_type): Add return value. - (check_units): Add parameters to get ppi and upem values. - Handle TrueType TFM data. - (output_font_name): New function. - (output_charset): Add parameter to handle TFM type. - Handle TrueType TFMs also. - (em_fract): New macro. - (dump_tags): Be much more verbose and handle more tags. - (dump_ascii, dump_symbol_sets, dump_symbols): New functions. - (hp_msl_to_ucode_name, unicode_to_ucode_name, is_uname): New - functions. - (read_map): Add parameter to handle TFM type. - Handle both MSL and Unicode mappings. - (main): Add two new command line options `-a' and `-q'. - Updated to make use of new functions. - (usage): Updated. - - * src/utils/hpftodit/hpuni.cpp: New file. - - * src/utils/hpftodit/Makefile.sub, src/utils/hpftodit/hpftodit.man: - Updated. - -2003-12-25 Werner LEMBERG - - * src/include/nonposix.h (read) [_MSC_VER]: Define. - -2003-12-24 Werner LEMBERG - - * src/utils/afmtodit/afmtodit.man: Some reformulations as suggested - by Michail Vidiassov . - -2003-12-20 Werner LEMBERG - - * font/devhtml/R.proto: Add u00{47,67}_0306, u00{53,73}_0327, - and u0049_0307. - Add missing latin-2 glyphs. - * font/devutf8/R.proto: Add missing latin-2 glyphs. - - * tmac/troffrc: Load `composite.tmac' earlier. - - * tmac/dvi.tmac, tmac/ps.tmac, tmac/lbp.tmac: Add u00{47,67}_0306, - u00{53,73}_0327, and u0049_0307. - * tmac/X.tmac: Add u00{47,67}_0306. - * tmac/tty-char.tmac: Use composite glyph names for readability. - - * NEWS: Updated. - - * src/include/unicode.h: Remove `extern' keywords. - -2003-12-20 Nilgün Belma Bugüner - - * tmac/latin5.tmac: New file. - -2003-12-19 Werner LEMBERG - - Add some glyphs needed for Turkish. - - * font/devutf8/R.proto: Add u00{47,67}_0306, u00{53,73}_0327, - and u0049_0307. - - * tmac/composite.tmac: Add `,' as a synonym for `ac' accent. - * tmac/tty-char.tmac: Add representations for u00{47,67}_0306, - u00{53,73}_0327, and u0049_0307. - -2003-12-18 Werner LEMBERG - - * src/devices/grops/ps.cc (ps_output::put_float): Revert change - from 2001-10-04. - Remove trailing zeros. - -2003-12-17 Werner LEMBERG - - Make \? transparent to end-of-sentence recognition. - - * src/roff/troff/input.cc (non_interpreted_node): Add - `ends_sentence' member function. - -2003-12-16 Werner LEMBERG - - * doc/groff.texinfo: Document `dt' request correctly. - Other minor typographical improvements. - -2003-12-10 Michail Vidiassov - - * src/utils/afmtodit/Makefile.sub (afmtodit): Fix typo. - -2003-12-10 Richard Stallman - - * LICENSE: Better wording. - -2003-12-09 Werner LEMBERG - - * aclocal.m4 (GROFF_BROKEN_SPOOLER_FLAGS): Set default value to 0. - * configure, NEWS: Updated. - -2003-12-08 Werner LEMBERG - - * FDL: Updated to version 1.2 (from www.gnu.org/copyleft). - -2003-12-07 Bernd Warken - - * LICENSE: Updated. - -2003-12-07 Werner LEMBERG - - * INSTALL: Improved. - -2003-12-05 Keith Marshall - - Use path separator character of target platform for compiled-in - default paths. - - * aclocal.m4 (GROFF_TARGET_PATH_SEPARATOR): New macro. - * configure.ac: Use GROFF_TARGET_PATH_SEPARATOR. - * configure: Regenerated. - * Makefile.in (SEP): Use GROFF_PATH_SEPARATOR. - -2003-12-05 Werner LEMBERG - - * src/include/nonposix.h (PATH_SEP_CHAR): New definition. - Replace `PATH_SEP[0]' with `PATH_SEP_CHAR' everywhere. - -2003-12-04 Bernd Warken - - * LICENSE: New file. - -2003-12-03 Werner LEMBERG - - * src/utils/afmtodit/afmtodit.pl: Comment out code which handles - ligatures present in AFM files since groff currently only - understands some standard ligatures and nothing else. - -2003-12-03 Jeff Conrad - - * src/roff/groff/groff.cpp (main): Don't run the spooler if - option -v is given. - - * src/roff/groff/pipeline.c (run_pipeline) [_WIN32]: Fix error - messages. - Close stdout copy. - Don't use Unix wait flags. - -2003-12-02 Werner LEMBERG - - * src/roff/troff/glyphuni.cpp, src/roff/troff/unicode.cpp, - src/roff/troff/unicode.h, src/roff/troff/uniglyph.cpp, - src/roff/troff/uniuni.cpp: Moved to... - * src/libs/libgroff/glyphuni.cpp, src/libs/libgroff/unicode.cpp, - src/libs/libgroff/unicode.h, src/libs/libgroff/uniglyph.cpp, - src/libs/libgroff/uniuni.cpp: Here. - - * src/include/Makefile.sub.old (HDRS), - src/libs/libgroff/Makefile.sub (OBJS, CCSRCS), - src/roff/troff/Makefile.sub (HDRS, PBJS, CCSRCS): Updated. - -2003-12-01 Keith Marshall - - * src/preproc/htlp/pre-html.cpp (__tmpfile): Renamed to - `DEBUG_FILE'. - Updated all users. - -2003-12-01 Werner LEMBERG - - * groff.texinfo: Document special behaviour of `.vs 0'. - Improve documentation of `cflags' request. - * NEWS: Updated. - -2003-11-29 Werner LEMBERG - - * font/devlj4/generate/Makefile (CORONET): Use correct TFM. - * font/devlj4/CORONET: Regenerated. - -2003-11-24 Werner LEMBERG - - * src/roff/troff/env.cpp (hyphen_trie::read_patterns_file): Fix loop - if processing hyphenation patterns in traditional mode. - Improve error messages. - -2003-11-20 Werner LEMBERG - - * src/roff/troff/node.cpp (troff_output_file::put_char_width, - troff_output_file::put_char): Fix type of local variable `c'. - -2003-11-19 Werner LEMBERG - - * src/roff/groff/pipeline.c (P): Removed. Updated all function - declarations. - (i_to_a): Removed. libgroff already provides this function. - (run_pipeline) [_WIN32]: Don't use itoa but i_to_a. - -2003-11-18 Keith Marshall - - * src/roff/groff/pipeline.c (xstrsignal): Fix usage of - HAVE_DECL_SYS_LIST. - -2003-11-17 Werner LEMBERG - - * COPYING: Use correct version. - -2003-11-11 Werner LEMBERG - - LynxOS 4.0.0 doesn't declare vfprintf. - - * configure.ac: Check for vfprintf. - * configure: Regenerated. - * src/include/lib.h: Handle `NEED_DECLARATION_VFPRINTF'. - * src/include/config.hin: Regenerated. - -2003-11-10 Werner LEMBERG - - LynxOS 4.0.0 has snprintf (without declaration) but no vsnprintf. - - * configure.ac: Check for vsnprintf. - * configure: Regenerated. - * src/include/lib.h: Handle `NEED_DECLARATION_VSNPRINTF' and - `HAVE_VSNPRINTF'. - * src/include/config.hin: Regenerated. - -2003-11-09 Werner LEMBERG - - * aclocal.m4: Updated syntax to autoconf 2.59. - (GROFF_HTML_PROGRAMS): Use AC_FOREACH. - Don't check for gsos2. - (GROFF_SRCDIR, GROFF_BUILDDIR): Removed. autoconf 2.59 provides - working abs_top_srcdir and abs_top_builddir. - - * configure.ac: Updated syntax to autoconf 2.59. - Don't call GROFF_SRCDIR and GROFF_BUILDDIR. - Replace call to AC_DECL_SYS_SIGLIST with call to AC_CHECK_DECLS. - * configure: Regenerated. - - * Makefile.in, doc/Makefile.in: s/@top_srcdir@/@abs_top_srcdir@/, - s/@groff_top_builddir@/@abs_top_builddir@/. - - * src/roff/groff/pipeline.c (xstrsignal): - s/SYS_SIGLIST_DECLARED/HAVE_DECL_SYS_SIGLIST/. - -2003-11-07 Werner LEMBERG - - * src/devices/grodvi/dvi.cpp (draw_dvi_printer::draw) ['a']: Always - make start angle smaller than end angle to circumvent a bug in tpic - handling of some versions of dvipdfm (and dvipdfmx). - -2003-10-30 Werner LEMBERG - - * src/devices/grops/grops.man: Improve section on creating EPS. - -2003-10-29 Werner LEMBERG - - * contrib/pic2graph/pic2graph.sh: Fix typo (-P-letter -> - -P-pletter). - -2003-10-28 Werner LEMBERG - - * doc/groff.texinfo: Fix documentation of `.if'. - -2003-10-27 Michail Vidiassov - - * src/utils/afmtodit/afmtodit.pl: Handle unmapped characters of - the form `uniXXXX' also. - -2003-10-27 Werner LEMBERG - - * contrib/eqn2graph/eqn2graph.sh, contrib/grap2graph/grap2graph.sh, - contrib/pic2graph/pic2graph.sh: Implement secure management of - temporary files. - Pass `-P-pletter' to groff to avoid data outside of the converted - area -- some versions of `convert' (for example 5.3.8) don't check - the bounding box of the image but always use a fixed image size - (letter paper format). - * contrib/eqn2graph/eqn2graph.man, contrib/grap2graph/grap2graph.man, - contrib/pic2graph/pic2graph.man: Updated. - - * src/roff/groff/groff.man: Document $TMP and $TEMP. - -2003-10-26 Werner LEMBERG - - * src/preproc/pic/troff.cpp (troff_output::simple_circle, - troff_output::simple_ellipse, troff_output::simple_arc, - troff_output::simple_line, troff_output::simple_spline, - troff_output::simple_polygon): Insert a space before arguments. - (troff_output::set_fill): Emit `\&' before `\D'Fg...' since the - latter doesn't produce a node, so the following `.sp -1' would do - the wrong thing. - Don't emit `.sp -1' after \M. This also doesn't produce a token - (and we don't have to care about compatibility mode). - (troff_output::set_color, troff_output::reset_color): Don't emit - `.sp -1' after \M and \m. - - * src/roff/troff/input.cpp (old_have_input): New global variable. - (input_stack::get): Handle `old_have_input'. - (process_input_stack) : Call - `trapping_blank_line' depending on `old_have_input', not - `have_input'. - -2003-10-20 Keith Marshall - - * src/libs/libgroff/tmpfile.cpp [__MSDOS__, _Win32] - (WIN32_TMPDIR_ENVVAR, MSDOS_TMPDIR_ENVVAR): New macros, providing - default directory names for temporary files. - [__MSDOS__, _Win32] (temp_init::temp_init): Use them. - - * src/roff/groff/pipeline.c [__MSDOS__]: Include stdlib.h. - [__MSDOS__] (run_pipeline): Honour environment variables. - Don't use `tmpnam' but `tempnam' to work around messy - implementation. - - * README.MinGW: New file. - -2003-10-16 Werner LEMBERG - - * src/preproc/html/pre-html.cpp (write_upto_newline): Don't use - `(*t)->next' without testing validity of `*t'. - (usage): Make it more readable. - -2003-10-16 Keith Marshall - - Make html device run under both MS-DOS and Win32. - - * src/preproc/html/pre-html.cpp (MAY_FORK_CHILD_PROCESS, - MAY_SPAWN_ASYNCHRONOUS_CHILD): New macros to control whether - spawn or fork+exec has to be used, and whether parent must sleep - until the child process terminates. Used in - `char_buffer::run_output_filter'. - (copyofstdoutfd): Removed. - (char_buffer): Replace `write_file_html' and `write_file_troff' - member functions with `emit_troff_output' and `run_output_filter'. - (DEVICE_FORMAT, HTML_OUTPUT_FILTER, IMAGE_OUTPUT_FILTER): New - macros. - (replaceFd): Replaced with... - (set_redirection): New auxiliary function. - (waitForChild): Replaced with... - (save_and_redirect): New auxiliary function for. - - (char_buffer::do_html, char_buffer::do_image): Simplified, using new - functions. - -2003-10-14 Keith Marshall - - * aclocal.m4 (GROFF_SYS_NERR): Check stdlib.h also. - (GROFF_LIBC): New function. - * configure.ac: Call GROFF_LIBC. - Check for `kill'. - * configure: Regenerated. - - * src/include/lib.h: Handle __MINGW32__. - * src/include/nonposix.h [_MSC_VER]: Handle __MINGW32__. - Add macro for `pipe'. - Define P_tmpdir. - - * src/roff/groff/pipeline.c (run_pipeline): Handle `no_pipe' - correctly. - - * src/utils/indxbib/signal.c (handle_fatal_signal) [!HAVE_KILL]: - Implement. - -2003-10-13 Werner LEMBERG - - Finally fix change 2003-08-26, based on ideas from Chuck Silvers - . - - * contrib/mom/Makefile.sub: Use a stamp file in the `examples' - directory. - -2003-10-12 Werner LEMBERG - - * src/roff/groff/groff.cpp (help), src/devices/grops/ps.cpp (usage), - src/roff/troff/input.cc (usage): Updated. - - * NEWS, doc/groff.texinfo: Updated. - -2003-10-12 Peter Miller - - * src/libs/libgroff/searchpath.cpp - (search_path::open_file_cautious): New function which also handles - `-' as stdin and stdout depending on the access mode. - * src/include/searchpath.h (search_path): Updated. - - * src/devices/grops/ps.cpp (main): Handle new `-I' switch. - * src/devices/grops/ps.h: Include `searchpath.h'. - * src/devices/grops/psrm.cpp (resource_manager::supply_resource): - Open resource file with `include_search_path.open_file_cautious'. - * src/devices/grops/grops.man: Document new `-I' switch. - - * src/devices/grodvi/dvi.cpp (main), src/devices/grolbp/lbp.cpp - (main), src/devices/grolj4/lj4.cpp (main), - src/devices/grotty/tty.cpp (main): Ignore new `-I' switch. - - * src/preproc/soelim/soelim.cpp (include_list_length, include_list): - Replaced with... - (include_search_path): New global variable. - (include_path_append): Removed. - (main): Use `include_search_path.command_line_dir' to handle `-I'. - (do_file): Simplify, using new - `include_search_path.open_file_cautious'. - - * src/roff/groff/groff.cpp (print_commands): Accept file handle as - parameter. - (main): Pass arguments to `-I' to both troff and devices. - Improve handling of `-V'. - * src/roff/groff/groff.man: Document changes to -I and -V. - - * src/roff/troff/input.cpp (include_search_path): New global - variable. - (next_file, source, ps_bbox_request, transparent_file, - process_input_file): Use new - `include_search_path.open_file_cautious'. - (main) Handle `-I' switch. - * src/roff/troff/node.cpp (troff_output_file::really_copy_file): - Use new `include_search_path.open_file_cautious'. - * src/roff/troff/node.h: New extern symbol `include_search_path'. - * src/roff/troff/troff.man: Document new `-I' switch. - -2003-09-15 Ruslan Ermilov - - Support multiple calls of .Lb in LIBRARY section. - - * tmac/doc-common (doc-in-library-section): New register. - (doc-section-library): New string. - (Sh): Set `doc-in-library-section'. - (Rd): Updated. - * tmac/doc-syms (Lb): Insert breaks before and after arguments - if in LIBRARY section. - * tmac/doc.tmac (doc-save-global-vars): Updated. - * NEWS, tmac/groff_mdoc.man: Updated. - -2003-09-14 Ruslan Ermilov - - * tmac/doc-common (doc-default-operating-system): New variable. - (Os): Use it. - -2003-09-08 Werner LEMBERG - - * tmac/doc.tmac (doc-reset-reference): Handle data for `%I' also. - -2003-08-31 Werner LEMBERG - - * contrib/mom/Makefile.sub: Fix last change to make it really work. - * Makefile.comm: Use `test ... ||' in favor of `if test ...; then'. - (install_dev, uninstall_dev): Check whether $(DEVSCRIPTS) and - $(DEVFILES) are not empty. - * Makefile.in: Use `test ... ||' in favor of `if test ...; then'. - -2003-08-26 Chuck Silvers - - * contrib/mom/Makefile.sub (prepare_make_examples): Make it work - with parallel runs of `make'. - -2003-08-23 Stephen Gildea - - * src/preproc/ref/ref.cpp (reference::compute_sort_key): Always - insert SORT_SEP. With certain combinations of sort specifications, - refer sorted entries in the wrong order. In particular, entries - with a missing field should be be sorted before all entries that - have that field, before refer looks to the next field. - -2003-08-23 Werner LEMBERG - - * src/utils/pfbtops/Makefile.sub (LINK.c): Define it so that the - g++ linker is used. Reported by Mark J. Reed - . - -2003-08-16 Heinz-Jürgen Oertel - - Add key character `x' to tbl which makes tbl call a user-defined - macro on a table cell. - - * src/preproc/tbl/table.h (entry_modifier): Add `macro'. - * src/preproc/tbl/table.cpp (block_entry::do_divert): Call - `set_modifier' after printing the compatibility request. - (set_modifier): Print call to `m->macro' if not empty. - * src/preproc/tbl/main.cpp (entry_format::debug_print): Handle - `macro'. - (process_format): Implement cases `x' and `X'. - * src/preproc/tbl/tbl.man, NEWS: Updated. - -2003-08-15 Werner LEMBERG - - * doc/groff.texinfo: Minor fixes. - -2003-08-09 Werner LEMBERG - - * tmac/an-old.tmac [cR]: Fix redefinition of `bp'. - -2003-08-07 Werner LEMBERG - - * doc/Makefile.sub: Not all shells expand wildcards in the `for' - argument list to nothing if there is no file to match. Use `ls' as - a protection, similar to autoconf. - - * Makefile.comm (install_dev, uninstall_dev): Protect `for' against - empty argument lists. - - * doc/groff.texinfo: Improve documentation how vertical spacing - and line breaks interact. - Other minor fixes. - - * tmac/www.tmac: Initialize `www-htmlimage-gap'. - -2003-08-03 Werner LEMBERG - - * NEWS, src/devices/grops/grops.man: -b16 is necessary to produce - EPS (using eps2eps or similar programs to compute the bounding box). - -2003-07-24 Werner LEMBERG - - * doc/groff.texinfo: Use the new @/ command to avoid overlong lines. - * doc/texinfo.tex: Updated from texinfo 4.6. - * README.CVS: From now on we need texinfo 4.6. - -2003-07-23 Werner LEMBERG - - Add requests `dei1' and `ami1' for completeness. - - * src/roff/troff/input.cc (calling_mode): Remove - CALLING_DISABLE_COMP. - (comp_mode): New enumeration. - (do_define_string, define_string, define_nocomp_string, - append_string, append_nocomp_string): Updated. - (do_define_macro): Add third parameter. - (define_macro, define_nocomp_macro, define_indirect_macro, - append_macro, append_nocomp_macro, append_indirect_macro): Updated. - (define_indirect_nocomp_macro, append_indirect_nocomp_macro): New - functions. - (ignore): Updated. - (init_input_requests): Add `dei1' and `ami1'. - - * tmac/trace.tmac: Handle de1 and am1. - (de): Improve tracing message. - (am): Add missing `do'. - (return): Use de1. - - * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: - Document new requests. - -2003-07-22 Heinz-Jürgen Oertel - - Add option -G to .MPIMG to insert a gap between text and the image. - - * tmac/www.tmac (www-finish-left-po, www-finish-right-ll, - www-finish-left-ll): Updated. - (www-image-just, www-image-gap, www-htmlimage-gap): New variables. - (MPIMG): Make option -L and -R optional. - Implement option -G. - -2003-07-22 Gaius Mulley - - * src/devices/grohtml/post-html.cpp - (html_printer::do_file_components): Don't use `stdout' as lvalue - since it can be a macro. - -2003-07-22 Werner LEMBERG - - * src/libs/libgroff/strerror.c: Include errno.h to be in sync with - the corresponding test in aclocal.m4. - -2003-07-21 Werner LEMBERG - - * src/preproc/html/pre-html.cpp (TRANSPARENT): Don't use colour - names but RGB values directly. Otherwise pnmtopng depends on - an external file `rgb.txt' which maps colour names to values. - -2003-07-20 Werner LEMBERG - - * aclocal.m4 (GROFF_SYS_ERRLIST): Include stdlib.h for MinGW. - * configure, src/include/config.hin: Regenerated. - - * src/libs/libgroff/strerror.c: Include stdlib.h for MinGW. - -2003-07-19 Werner LEMBERG - - * PROBLEMS: Add solution for UTF-8 problem with hyphens. - -2003-07-18 Werner LEMBERG - - * *.man: Switch to non-compatibility mode temporarily if GNU - syntax extensions are used in the particular man page. - - * PROBLEMS: Add solutions for SGR problems. - -2003-07-17 Werner LEMBERG - - Don't ignore grotty's command line options if \X'tty: sgr ...' is - used to change the drawing scheme. - - * src/devives/grotty/tty.cpp (bold_flag_option, - underline_flag_option, italic_flag_option, reverse_flag_option, - bold_underline_mode_option): New global variables. - (update_options): New function. - (tty_printer::special): Call update_options. - (main): Don't set xxx_flag but xxx_flag_option, then call - update_options. - -2003-07-14 Werner LEMBERG - - Make grotty emit proper Unicode box drawing characters for -Tutf8. - - * src/devices/grotty/tty.cpp (START_LINE, END_LINE): New enum - values. - (hline_char, vline_char): New global variables. - (tty_printer::tty_printer): Initialize them. - (tty_printer::draw): Emit START_LINE and END_LINE flags for both - horizontal and vertical lines. - (crossings): New global array. - (tty_printer::end_page): Use it to determine the proper crossing - character for -Tutf8. - -2003-07-12 Werner LEMBERG - - * doc/Makefilesub (HTMLDOCFILESALL): New macro. - (HTMLDOCFILES): Revert to `pic.html'. - (CLEANADD, install_html, uninstall_sub): Use HTMLDOCFILESALL. - -2003-07-11 Werner LEMBERG - - * doc/pic.ms: Improve documentation of absolute coordinates. - Document absolute positioning of pictures. - - * NEWS: Add new pic capability. - -2003-07-09 Hartmut Henkel - - * src/libs/libgroff/geometry.cpp (check_output_arc_limits): - Rewritten. - -2003-07-07 Werner LEMBERG - - Implement support for dashed and dotted ellipses in pic. Based on - a patch from Hartmut Henkel . - - * src/preproc/pic/common.cpp (common_output::ellipse_arc, - common_output::dashed_ellipse, common_output::dotted_ellipse): New - functions. Ellipse arcs are approximated with circle arcs. - * src/preproc/pic/common.h (common_output): Updated. - * src/preproc/pic/tex.cpp (tex_output::ellipse): Use new ellipse - functions. - * src/preproc/pic/troff.cpp (simple_output::ellipse): Ditto. - - * src/preproc/pic/TODO, src/preproc/pic/pic.man: Updated. - -2003-07-06 Werner LEMBERG - - Make grotty work on platforms which have unsigned char as the - default for char. Based on a patch by Thomas Klausner - . - - * src/devices/grotty/tty.cpp (schar): New typedef. - Updated calls to declare_ptable and implement_ptable. - (glyph): Use schar for back_color_idx and fore_color_idx. - (tty_printer): Use schar for curr_fore_idx and curr_back_idx. - (tty_printer::tty_color, tty_printer::tty_printer, - tty_printer::color_to_idx, tty_printer::put_color): Updated. - -2003-07-06 Ruslan Ermilov - - * src/roff/nroff/nroff.sh: Add option -d for completeness. - * src/roff/nroff/nroff.man: Updated. - -2003-07-05 Werner LEMBERG - - * NEWS, tmac/groff_www.man: Updated. - * doc/Makefile.sub: Updated. - -2003-07-05 Gaius Mulley - - Implement support for multiple HTML output files. - - * src/preproc/html/pre-html.cpp (scanArguments): Dummy handling for - -j command line option. - - * src/devices/grohtml/post-html.cpp (job_name, multiple_files): New - global variables. - (file): New fields `new_output_file', `require_links', - `output_file_name'. - (file::file): Updated. - (files::set_file_name, files::set_links_required, - files::are_links_required, files::is_new_output_file, - files::file_name, files::next_file_name): New functions. - (header_desc): New fields `no_of_level_one_headings', - `header_filename'. - (header_desc::header_desc): Updated. - (header_desc::write_headings): Handle multiple files. - (html_printer::write_header): Save file name in which header occurs. - (html_printer::determine_header_level): Possibly split files on - level one headings. - (html_printer::do_links, html_printer::troff_tag): Updated. - (html_printer::insert_split_file, html_printer::do_job_name, - html_printer::emit_link, html_printer::write_navigation, - html_printer::do_file_components): New functions. - (html_printer::~html_printer): Handle multiple files. - (main): Handle command line option `-j'. - - * src/devices/grohtml/grohtml.man: Updated. - - * doc/Makefile.sub (pic.html), doc/Makefile.in (pic.html): New rule - which splits file. - - * tmac/www.tmac (JOBNAME): New macro. - * tmac/s.tmac (SH-NO-TAG): New macro. - (@SH): Call SH-NO-TAG. - (@NH): Updated. - -2003-07-05 Ruslan Ermilov - - * tmac/groff_mdoc.man: Improve documentation of punctuation - characters. - -2003-07-04 Ruslan Ermilov - - * tmac/doc.tmac (Bd): Change to doc-Li-font later. - -2003-07-03 Werner LEMBERG - - * tmac/an-old.tmac [cR]: Redefine `bp' to avoid empty lines. - -2003-07-01 Ruslan Ermilov - - * tmac/doc.tmac (doc-do-func, doc-do-func-args): Don't print a comma - after `/*' and `*/'. - Fix spacing. - (Fn, Fo): Reduce indentation in synopsis. - - * tmac/doc-common (doc-check-depth): New macro. - (doc-end-macro, Sh, Ss): Use it. - (Cd): Fix behaviour in synopsis. - (In): Make it parsed and callable. - If not in the synopsis, represent the C header file enclosed in - angle brackets. - (doc-str-Rv-std-suffix, doc-str-Rv-stds-suffix, doc-str-Rv-std0): - Use minus, not hyphen. - - * tmc/groff_mdoc.man: Updated. - -2003-07-01 Werner LEMBERG - - Integrated grap2graph, contributed by Eric S. Raymond. - - * contrib/grap2graph/{Makefile.sub, grap2graph.sh, grap2graph.man}: - New files. - * Makefile.in, NEWS, MANIFEST, contrib/eqn2graph.man, - contrib/pic2graph.man, src/roff/groff/groff.man: Updated. - -2003-07-01 Colin Watson - - * src/xditview/*.c: Add prototypes, fix return types, add includes. - Based on work by Fumitoshi UKAI . - -2003-06-31 Ruslan Ermilov - - * tmac/tty-char.tmac: Provide `lb', `rb', `lk', `rk', `lt', `rt'. - -2003-06-31 Werner LEMBERG - - * doc/Makefile.sub (CLEANADD): Remove all files created by - running `make groff.{pdf,dvi}'. - - * Makefile.sub (DISTCLEANFILES): Remove all non-source files from - src/xditview also. - -2003-06-30 Werner LEMBERG - - * Makefile.in (SHELL): Define as @SHELL@. - (mkinstalldirs): Use $(SHELL). - (MDEFINES): Add $(SHELL). - * Makefile.comm (SHELL): Removed. - -2003-06-29 Werner LEMBERG - - * tmac/s.tmac (De, Ds): New aliases for .DE and .DS, respectively. - The X11 documentation files use them. - * tmac/groff_ms.man, doc/groff.texinfo: Document them. - -2003-06-15 Robert Goulding - - * tmac/e.tmac (@C): Handle .ad also. - -2003-06-12 Werner LEMBERG - - * src/preproc/tbl/tbl.man: Document formatting of text blocks. - - * src/roff/troff/input.cc (token::next) : - Assign `n' even here. It is possible to construct a node - immediately following an escape character: - - .di xx - \?\\\?a - .br - .di - .xx - -2003-06-10 Werner LEMBERG - - * README.WIN32: Removed. - * MANIFEST: Updated. - -2003-06-07 Werner LEMBERG - - * src/roff/nroff/nroff.sh: Don't emit SGR for option -u. - -2003-06-05 Werner LEMBERG - - * src/preproc/pic/pic.y : Implement workaround for bug - in Compaq C++ V6.5-033 for Compaq Tru64 UNIX V5.1A (Rev. 1885). - -2003-06-03 Werner LEMBERG - - * src/preproc/grn/hdb.cpp (DBRead): Don't close file handle; this - is done by the calling function. - -2003-05-22 Ruslan Ermilov - - * tmac/X.tmac: Fix definition of `em'. - -2003-05-22 Werner LEMBERG - - * src/roff/troff/input.cc (return_macro_request): Fix detection of - argument. - -2003-05-18 Werner LEMBERG - - * tmac/doc.tmac (doc-tag-list): Force horizontal mode after tag - to make items work which consist only of a tag. - -2003-05-17 Werner LEMBERG - - * tmac/doc.tmac (doc-tag-list): Don't use \Z to assure that spaces - aren't stretched in a tag (this can fail with unformatted boxes). - Instead, insert a break and go back one line. - -2003-05-16 Werner LEMBERG - - * src/roff/troff/input.cc (return_macro_request): If called with - argument pop macro twice. We need this to trace `return'. - - * tmac/trace.tmac: Handle `return'. - Fix typos. - - * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: - Document. - -2003-05-15 Larry Kollar - - * tmac/groff_ms.man, doc/groff.texinfo: Improve documentation of - registers `FPS', `FVS', and `FPD'. - -2003-05-15 Werner LEMBERG - - * src/utils/pfbtops/pfbtops.c (get_text): Handle loop counter - correctly. - -2003-05-03 Ruslan Ermilov - - * tmac/groff_mdoc.man: Slight improvements. - -2003-05-03 Werner LEMBERG - - * tmac/doc-common (doc-header): Emit vertical space of 1v instead of - `doc-header-space' after header line if register `cR' is set. - -2003-05-02 Werner LEMBERG - - * TODO: Updated. - -2003-05-01 Ruslan Ermilov - - * tmac/doc-common (Nd): Use \[em]. - -2003-05-01 Werner LEMBERG - - * tmac/doc-ditroff, tmac/doc-nroff (doc-header-space, - doc-footer-space): Initialize to 0.5i. - (doc-setup-page-layout): Don't set doc-header-space and - doc-footer-space. - -2003-04-30 Werner LEMBERG - - * REVISION: Set to 1. - - * doc/pic.ms: Document possible problems with `figname'. - -2003-04-29 Werner LEMBERG - -Version 1.19 released -===================== - - * VERSION: Set to 1.19. - * REVISION: Set to 0. - * doc/groff.texinfo, doc/webpage.ms, NEWS: Updated. - - * src/devices/grohtml/post-html.cpp (html_printer::~html_printer): - Define charset as `US-ASCII' in html output. - - * tmac/www.tmac (ULE): Add missing scaling indicator. - - * win32-diffs: Removed. - -2003-04-28 Werner LEMBERG - - * doc/groff.texinfo: Document `dn' and `dl' registers if used with - `.da' and `.boxa'. - Document how to insert discardable whitespace with `.ss'. - -2003-04-27 Werner LEMBERG - - * src/preproc/pic/tex.cpp (tex_output::start_picture): Make code - work with plain TeX also. - - * src/preproc/pic/pic.man, doc/pic.ms: Fix TeX code example. - -2003-04-25 Gaius Mulley - - * src/devices/grohtml/post-html.cpp (html_printer::~html_printer): - Use a loose DTD. - -2003-04-24 Werner LEMBERG - - * src/preproc/pic/pic.man, doc/pic.ms: Explain how to get a - vbox with positive height and zero depth if in TeX mode. - - * NEWS: Document glyph name changes for grodvi and grolj4. - -2003-04-23 Werner LEMBERG - - * src/preproc/pic/tex.cpp (tex_output::start_picture): Fix TeX code. - * doc/pic.ms: Fixed. - -2003-04-21 Werner LEMBERG - - HP-UX 10.20 has `snprintf' but it isn't declared. - - * configure.ac: Add declaration test for snprintf. - * configure: Regenerated. - * src/include/lib.h: Handle `NEED_DECLARATION_SNPRINTF'. - * src/include/config.hin: Regenerated. - -2003-04-19 Werner LEMBERG - - Add keyword `figname' to pic, specifying the name of the picture - box in TeX mode. Based on a patch from William J Poser - . - - * src/preproc/pic/pic.y: New token `FIGNAME'. - (macro_name): New rule of type . - (placeless_element): Handle `FIGNAME'. - * src/preproc/pic/lex.cpp (lookup_keyword): Add `figname'. - * src/preproc/pic/main.cpp (graphname): New global variable. - (do_picture): Initialize `graphname'. - * src/preproc/pic/pic.h: Updated. - * src/preproc/pic/tex.cpp (tex_output::start_picture): Use - `graphname'. - Simplify TeX code. - (tex_output::text): Beautify output. - * src/preproc/pic/object.cpp (object_spec::~object_spec): Deallocate - `shaded' and `outlined' unconditionally. - * NEWS, src/preproc/pic/pic.man, doc/pic.ms: Updated. - Minor improvements. - - * PROBLEMS, README.CVS: Mention that bison version 1.875b or - greater is necessary. - -2003-04-17 Hartmut Henkel - - Add option -r to soelim to avoid emission of `.lf' lines. - Add option -t to produces TeX comment lines instead of `.lf' lines. - - * src/preproc/soelim/soelim.cpp: New global variables `raw_flag' - and `tex_flag'. - (usage): Updated. - (main): Handle `-r' and `-t'. - (set_location): Handle `raw_flag' and `tex_flag'. - * src/preproc/soelim/soelim.man, NEWS: Updated. - -2003-04-17 Werner LEMBERG - - * tmac/hyphenex.sh: Replaced with... - * tmac/hyphenex.pl: This perl script to avoid sed compatibility - nightmares. - - * aclocal.m4 (GROFF_HTML_PROGRAMS): Emit useful warning message - if --quiet is used for the configure script. - * configure: Regenerated. - -2003-04-16 Werner LEMBERG - - * src/devices/grohtml/post-html.cpp (text_glob::text_glob): - Add `const' to second argument. - (html_printer::add_table_end): Add `const' to argument. - * src/devices/grohtml/html-text.cpp (html_text::issue_tag): Add - `const' to arguments. - * src/devices/grohtml/html-text.h: Updated. - - * src/devices/grolbp/charset.h (symset): Use `unsigned char'. - * src/devices/grolbp/lbp.h (lbpputc): Use `unsigned char' for - argument. - - * src/devices/grotty/tty.cpp (tty_printer::make_rgb_string): Use - cast for integer constant. - - * src/preproc/html/pre-html.cpp (image_device): Use `const'. - (writeNbytes): Add `const' to first argument. - (writeString): Add `const' to argument. - (char_buffer::can_see): Add `const' to third argument. - * src/preproc/html/pushback.cpp (pushBackBuffer::isString): Add - `const' to argument. - * src/preproc/html/pushback.h: Updated. - - * src/preproc/soelim/soelim.cpp (include_list): Add `const'. - (include_path_append): Add `const' to argument. - (do_file): Updated. - - * src/roff/troff/uniglyph.cpp (unicode_to_glyph_list): Use `const' - for `value'. - (unicode_to_glyph_init::unicode_to_glyph_init): Updated. - * src/roff/troff/uniuni.cpp (unicode_decompose_list): Use `const' - for `value'. - (unicode_decompose_init::unicode_decompose_init): Updated. - * src/roff/troff/glyphuni.cpp (glyph_to_unicode_list): Use `const' - for `value'. - (glyph_to_unicode_init::glyph_to_unicode_init): Updated. - * src/roff/troff/input.cc (process_startup_file): Add `const' to - argument. - - * tmac/hyphenex.sh: Make script more portable by using a here - document. - -2003-04-15 Werner LEMBERG - - Renamed all `*.cc' files to `*.cpp'. - Updated all configuration files, makefiles, and documentation. - -2003-04-14 Werner LEMBERG - - * tmac/hyphenex.sh: Slight improvements. - -2003-04-13 Werner LEMBERG - - * font/devascii/R.proto, font/devcp1037/R.proto, - font/devlatin1/R.proto, font/devutf8/R.proto: Fill up remaining - character slots with unnamed glyphs. - - * tmac/an-old.tmac: Fix hyphenation value if `cR' is active. - (an-first): New global variable. - (an-header): Emit vertical space between multiple man pages. - -2003-04-11 Werner LEMBERG - - * doc/groff.texinfo, man/groff_out.man: \S only accepts integer - values. - -2003-04-10 Werner LEMBERG - - * PROBLEMS: Revised. - -2003-04-10 Bernd Warken - - * doc/webpage.ms: Improved. - -2003-04-09 Werner LEMBERG - - Add register \n[.height] which returns the value of \H. - Add register \n[.slant] which returns the value of \S. - - * src/roff/troff/env.cc (init_env_requests): Implement. - * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: - Document. - -2003-04-08 Werner LEMBERG - - * tmac/html.tmac: Move some of the data into html-end.tmac. - Remove most of the character translations for eqn since html fonts - now cover those characters. - Load www.tmac. - * tmac/html-end.tmac: New file. - * tmac/troffrc: Load html.tmac not www.tmac for -Thtml. - * tmac/troffrc-end: Load html-end.tmac not html.tmac for -Thtml. - * tmac/Makefile.sub (NORMALFILES): Add html-end.tmac. - -2003-04-07 Werner LEMBERG - - * man/groff_out.man: Document negative values of `N' if -Thtml is - used. - -2003-04-06 Werner LEMBERG - - * Makefile.comm (depend.temp): Check location of YTABC. - -2003-04-05 Maciej W. Rozycki - - * contrib/mom/Makefile.sub (GROFFBIN): New variable for groff - binary path. - (groff_bin_path): Rename to GROFF_BIN_PATH. - (GROFF): Use GROFFBIN and GROFF_BIN_PATH. - * doc/Makefile.in (TROFFBIN): New variable for troff - binary path. - (GROFFBIN): New variable for groff binary path. - (groff_bin_path): Rename to GROFF_BIN_PATH. - (TROFF): Use TROFFBIN. - (GROFF): Use GROFFBIN and GROFF_BIN_PATH. - * doc/Makefile.sub (GROFFBIN): New variable for groff - binary path. - (groff_bin_path): Rename to GROFF_BIN_PATH. - (GROFF): Use GROFFBIN and GROFF_BIN_PATH. - - * Makefile.comm (install_dev): Install scripts from DEVSCRIPTS - with INSTALL_SCRIPT. - (uninstall_dev): Uninstall scripts from DEVSCRIPTS. - * Makefile.dev (all): Depend on DEVSCRIPTS. - (install_dev): Likewise. - * font/devdvi/Makefile.sub (DEVSCRIPTS): New variable to hold - scripts. - * font/devps/Makefile.sub (DEVSCRIPTS): Likewise. - (DEVGENSCRIPTS): New variable to hold generated scripts. - -2003-04-05 Werner LEMBERG - - * src/libs/libdriver/input.cc (IntArray::operator[], - IntArray::get_data): Remove meaningless `const' in return value. - - * README.CVS: New file. - -2003-04-04 Werner LEMBERG - - Check for stdint.h in C++, not in C. - - * aclocal.m4 (GROFF_STDINT_H): New function, - * configure.ac: Check for stdint.h with GROFF_STDINT_H instead of - AC_CHECK_HEADERS. - * configure, src/include/config.hin: Regenerated. - * src/libs/libgroff/tmpname.cc: Use HAVE_CC_STDINT_H. - - - Fix handling of   in grohtml. To do this, troff emits `N' - with a negative value, representing the width of the unbreakable - space (only for -Thtml). grohtml then converts this back to -   and uses the value of N as its width. - - * src/roff/troff/node.cc (space_char_hmotion_node::tprint, - unbreakable_space_node::tprint): Emit `N-'. - * src/include/printer.h (printer::set_numbered_char): Make it - virtual. - Make members `font_table' and `nfonts' protected instead of private. - * src/devices/grohtml/post-html.cc - (html_printer::set_numbered_char): New member function. - - - * src/libs/libgroff/maxfilename.cc: - s/HAVE_LIMITS_H/HAVE_CC_LIMITS_H/. - - * src/roff/troff/node.cc (unbreakable_space_node::tprint): Don't - emit word marker. - -2003-04-03 Sergey A. Osokin - - * man/roff.man: Small fixes. - -2003-04-03 Werner LEMBERG - - Make groff independent from locale's numeric settings. - - * configure.ac: Check for `setlocale'. - * configure, src/include/config.hin: Regenerated. - - * src/include/lib.h: Handle HAVE_SETLOCALE. - - * src/devices/grodvi/dvi.cc (main), src/devices/grolj4/lj4.cc - (main), src/devices/grops/ps.cc (main), src/preproc/grn/main.cc - (main), src/preproc/pic/main.cc (main): Call `setlocale'. - - - * doc/groff.texinfo: Change dir category to `Typesetting'. - (Man font macros): Mention that there is no space between arguments - of .BI and friends. - - * src/libs/libdriver/printer.cc, src/devices/grotty/tty.cc - (*printer::change_color, *printer::change_fill_color): Add missing - `const'. - -2003-04-02 Werner LEMBERG - - * src/devices/grohtml/html-table.cc (html_table::emit_col, - html_table::is_gap): Compute table widths after converting border - positions to avoid rounding errors. - -2003-04-01 Werner LEMBERG - - * src/devices/grohtml/html-text.cc (html_text::do_space): Handle - `space_emitted' properly. - -2003-03-31 Werner LEMBERG - - * src/devices/grohtml/html-table.cc: Fix column width calculation. - (html_table::set_linelength): Don't add 1. - (html_table::add_indent): Don't subtract 1. - - * tmac/html.tmac: Set default page offset to zero. - -2003-03-30 Werner LEMBERG - - Make groff emit ` ' for `\ ' and `\~' if `-Thtml' is used. - - * src/roff/troff/node.cc (space_char_hmotion_node::tprint, - unbreakable_space_node::tprint): New functions. - (troff_output_file): Make space_char_hmotion_mode::tprint and - unbreakable_space_node::tprint to friends. - * src/roff/troff/node.h: Updated. - - * font/devhtml/R.proto: Add ` ' at position 0xA0 (as defined - in the HTML standard). - -2003-03-29 Werner LEMBERG - - * src/roff/troff/env.cc (point_size): Fix emission of html tag. - Otherwise, the following code - - .di xxx - .ps 10 - a - .br - .di - x\*[xxx] - - produces `x a' instead of `xa'. This is a temporary fix, disabling - font changes in diversions for -Thtml. - - * tmac/an-old.tmac (TH, SH): Use `HTML-TAG-NS' instead of - `HTML-TAG'. - (an-do-tag-html): Merge with ... - (an-do-tag): This macro. - Change code slightly to circumvent grohtml bug. - * tmac/troffrc-end: Define dummy for HTML-TAG-NS. - - * src/devices/grohtml/html-table.cc (html_table::emit_col, - html_table::is_gap): Round `width' properly. - - * tmac/html.tmac: Provide some default layout parameters for - grohtml. - - * font/devhtml/DESC.proto: Don't use discrete values for `sizes' - command. - -2003-03-28 Werner LEMBERG - - src/devices/grops/ps.cc (ps_printer::do_import): Fix error message. - -2003-03-27 Werner LEMBERG - - * tmac/an-old.tmac (BT): Don't call .tl if register `ps4html' is - defined. - -2003-03-20 Werner LEMBERG - - * src/roff/troff/env.cc (vertical_spacing): Allow zero value for - `.vs'. - * doc/groff.texinfo: Updated. - -2003-03-19 Werner LEMBERG - - * src/roff/troff/input.cc (process_input_stack) : Reset `have_input'. - -2003-03-18 Werner LEMBERG - - * src/roff/groff/groff.man: Mention groff_trace man page. - -2003-03-16 Werner LEMBERG - - * Makefile.in (LIBEXT): New variable to indicate the file extension - of library files. Computed heuristically from $(OBJEXT). - (MDEFINES): Add $(LIBEXT). - * Makefile.lib, Makefile.comm: Use it. - - * src/utils/pfbtops/pfbtops.c (get_text): New function. Split - overlong lines into smaller chunks. - (get_binary): New function. - (main): Use them. - * src/utils/pfbtops/pfbtops.man: Updated. - -2003-03-15 Colin Watson - - * src/roff/groff/groff.man: Minor syntax fix. - -2003-03-14 Egil Kvaleberg - - * src/devices/grops/ps.cc (ps_printer::media_set, - ps_printer::~ps_printer): Handle zero paper width and length. - -2003-03-13 Werner LEMBERG - - Add options -p and -l to grodvi. - - * src/devices/grodvi/dvi.cc: Include paper.h. - (landscape_flag, user_paper_length, user_paper_width): New global - variables. - (dvi_printer::begin_page): Emit `papersize' special. - Set color after initialization of `cur_h' and `cur_v'. - (main): Add options `-l' and `-p'. - * font/devdvi/Makefile.sub (DESC): Set `papersize'. - * src/devices/grodvi/grodvi.man, NEWS: Updated. - - * src/devices/grops/psrm.cc (valid_input_table): Fixed. - -2003-03-12 Werner LEMBERG - - * src/devices/grops/grops.man: Move documentation of .PSPIC to... - * man/groff_tmac.man: This man page. - * man/groff_font.man: Declare `paperwidth' and `paperlength' as - deprecated. - - * tmac/X.tmac: Don't load pspic.tmac. - -2003-03-11 Werner LEMBERG - - Make variable `pr' local to libdriver/input.cc. Based on a patch - by Bernd Warken . - - * src/include/driver.h (pr): Removed. - - * src/libs/libdriver/input.cc (pr): New global variable. - (do_file): Deallocate `pr'. - * src/libs/libdriver/printer.cc (pr): Removed. - - * src/devices/grodvi/dvi.cc (main), src/devices/grohtml/post-html.cc - (main), src/devices/grolbp/lbp.cc (main), src/devices/grolj4/lj4.cc - (main), src/devices/grops/ps.cc (main), src/devices/grotty/tty.cc - (main): Don't delete `pr'. - -2003-03-10 Werner LEMBERG - - * tmac/a4.tmac, tmac/composite.tmac: Use `.do'. - * tmac/papersize.tmac: New file. - * tmac/troffrc: Include `papersize.tmac'. - * tmac/Makefile.sub (NORMALFILES): Add `papersize.tmac'. - * tmac/an-old.tmac: Set LT to LL by default. - - * NEWS, MANIFEST, tmac/groff_man.man, man/groff_tmac.man, - doc/groff.texinfo: Updated. - - * src/libs/libgroff/paper.cc (add_iso_paper): Fix very embarassing - bug which caused all odd iso papers to have wrong dimensions. - - * src/devices/grops/ps.cc (user_paper_width): New global variable. - (main) <'p'>: Set `user_paper_width' also. - (ps_printer::media_width, ps_printer::media_height): Use values - given with option `-p'. - -2003-03-09 Werner LEMBERG - - * src/include/nonposix.h: Provide default for SET_BINARY. - - * src/devices/grodvi/dvi.cc, src/devices/grolbp/lbp.cc, - src/devices/grolj4/lj4.cc, src/devices/grops/ps.cc: Call SET_BINARY - unconditionally. - - * src/utils/pfbtops/pfbtops.c: Call SET_BINARY unconditionally. - (main): Treat \r\n as \n. - -2003-03-08 Werner LEMBERG - - * tmac/an-old.tmac: Use register `HY' to control hyphenation. - * NEWS, tmac/groff_man.man, doc/groff.texinfo: Document it. - -2003-03-07 Werner LEMBERG - - Added support to access more than 256 glyphs in Type 1 fonts. - - * src/devices/grops/ps.cc (subencoding): New structure. - (style): Add `sub' field. - Updated all users. - (ps_printer): Add `subencodings' and `next_subencoding_index' fields. - Add `set_subencoding', `get_subfont' and `encode_subfont' member - functions. - Updated all users. - (ps_printer::set_char): Use `set_subencoding'. - (make_subencoding_name): New function. - (ps_printer::set_style): Handle case where `sty.sub' is not zero. - (ps_printer::~ps_printer): Emit subencoding definitions. - - * src/devices/grops/psrm.cc (valid_input_table): New array to - properly support EBCDIC. - (white_space): Add `\f'. - (ps_get_line): Change first argument to be of type `string &'. - Updated all callers. - This allows to get lines of arbitrary length. - Use `valid_input_table'. - Remove warning about non-conforming PS line length. This seems - not to be of great importance -- for example, dvips don't emit - a warning either. - (PS_LINE_MAX): Removed. - (matches_comment): Change first argument to be of type `string &'. - - * src/devices/grops/grops.man, src/devices/grops/TODO: Updated. - - * src/utils/afmtodit/afmtodit.pl (%unicode_decomposed, - %AGL_to_unicode, %default_ligatures): New hash tables. - Read all map entries. - Add unencoded characters. - Check for default ligatures if there are no `L' entries. - Print all kern entries. - Print all characters in charset. - * src/utils/afmtodit/afmtodit.man: Updated. - - * font/devps/*: Regerated all fonts. - - * tmac/latin[129].tmac, tmac/cp1047.tmac: Don't test for existence - of characters, just use `.trin'. Otherwise the mapping depends - on the font encoding. - * tmac/ps.tmac: Add `fi' and `fl'. - Improve `Fi' and `Fl'. - * tmac/X.tmac, tmac/lbp.tmac, tmac/tty.tmac: Improve `Fi' and `Fl'. - * tmac/Xps.tmac: Fix `em'. - - * NEWS: Updated. - -2003-03-04 Werner LEMBERG - - * src/roff/troff/input.cc (charinfo_to_node_list): Reset - `have_input'. - -2003-03-03 Werner LEMBERG - - * Makefile.sub (DISTCLEANFILES): Add gxditview._man. - - * font/devps/generate/textmap: Remove entry `similarequal'. - * font/devps/symbolmap: Updated. - -2003-03-02 Werner LEMBERG - - * src/libs/libgroff/font.cc (font::load): Fix error message for - bad character type. - - * src/devices/grops/grops.man: Improve documentation of the -b - flag. - - * tmac/tty.tmac: Load latin1.tmac for all TTY devices except - `ascii' and `cp1047'. - -2003-03-01 Werner LEMBERG - - Document composite glyphs and the `composite' request. - - * man/groff.man, man/groff_diff.man, doc/groff.texinfo: Do it. - -2003-02-28 Werner LEMBERG - - * font/devdvi/generate/ec.map: Add some more Unicode entities. - * font/devdvi/*EC: Updated. - - * tmac/composite.tmac, tmac/latin2.tmac, tmac/latin9.tmac: New files. - * tmac/latin1 (latin1-tr): Undo any previous mapping. - * tmac/troffrc: Load `composite.tmac'. - * tmac/Makefile.sub (NORMALFILES): Updated. - - * doc/groff.texinfo (Input Encodings): New section. - * NEWS: Updated. - -2003-02-27 Werner LEMBERG - - * doc/texinfo.tex: New version 2003-02-11.06. - - * tmac/doc-common (Dt): Don't emit warning for unknown section. - * tmac/groff_mdoc.man: Fix description of `Dt'. - -2003-02-26 Egil Kvaleberg - - * font/devps/prologue.ps: Fix for included Postscript that does - a setpagedevice -- which is now safely ignored. - - * NEWS: Updated. - - * src/devices/grops/ps.cc: Now sets the page size in the generated - document. This is done in two ways: Via a %%-comment for gv and - the like, and via a PageSize and setpagedevice for programs that - understands Postscript proper, like ps2pdf. - - * src/devices/grops/ps.h: New broken-flag to avoid page size - definition, if required. - - * src/devices/grops/grops.man: New broken-flag 16 mentioned. - - * doc/Makefile.in: Added -nosetpage flag (via @pnmtops_nosetpage@). - Not really necessary due to the fix in prologue.ps, but cleaner: - Such information does not belong in an .eps file. - - * doc/Makefile.sub: See doc/Makefile.in. - -2003-02-26 Ralph Corderoy - - * aclocal.m4 (GROFF_PNMTOPS_NOSETPAGE): Use P2 format for testing - instead of P1 since the latter is broken in some versions of netpbm. - * configure: Updated. - -2003-02-26 Larry Kollar - - Make man pages more customizable. - - * tmac/an-old.tmac (FT): New register holding footer distance from - bottom. - (HF): New string holding the default heading font. - (TH): Handle registers `IN' and `SN' set on the command line. - Use `FT'. - (PT, BT): New strings to customize header and footer lines. - (an-header, an-footer): Use them. - (SH, SS): Use `HF'. - * tmac/groff_man.man: Document changes. - - * doc/groff.texinfo: Document man changes. - Document Ultrix extensions of man. - -2003-02-26 Werner LEMBERG - - * src/roff/troff/input.cc (do_width, do_if_request): Reset - `have_input' after changing back to old environment. - - * src/devices/grolbp/lbp.cc (lbp_printer::set_line_thickness): Move - function up to be defined before first call. This is necessary to - avoid a compilation problem with Sun's WorkShop 6 C++ compiler. - - * src/utils/afmtodit/afmtodit.pl: Make script search for files in - the default font directory also. Based on a patch from James - J. Ramsey . - * src/utils/afmtodit/Makefile.sub (afmtodit): Handle @FONTDIR@. - * src/utils/afmtodit/afmtodit.man: Document it. - - * NEWS: Updated. - - * tmac/groff_man.man, doc/groff.texinfo: Many minor fixes. - -2003-02-25 Gaius Mulley - - * aclocal.m4 (GROFF_HTML_PROGRAMS): Add test for pnmtops. - (GROFF_PNMTOPS_NOSETPAGE): New macro. - * configure.ac: Use it. - * configure: Regenerated. - * Makefile.in: Updated. - - * tmac/Makefile.sub (NORMALFILES): Remove www.tmac. - (CLEANADD): Add www.tmac-sed. - (pnmtops_nosetpage): Define default. - (install_data): Handle www.tmac-sed and substitute - @PNMTOPS_NOSETPAGE@. - (stamp-sed): Add www.tmac. - * tmac/www.tmac: Rewritten, based on a patch by Bernd Warken. - It now breaks URLs at suitable places. - (www:substring_ok): New register set by... - (www:@test_substring): New macro. - (www:error): New alias to www-error. - (www:lenstr, www:splitstr, www:url_breaks, www:url_breaks_splitted): - New macros. - (URL): Use www:url_breaks. - (PIMG, MPIMG): Use @PNMTOPS_NOSETPAGE@. - (CDS, CDE): New macros. - -2003-02-25 Werner LEMBERG - - * src/devices/grops/ps.cc (ps_printer::define_encoding): Avoid - buffer overflow. - -2003-02-24 Werner LEMBERG - - Contrary to the PCL5 Developer's Guide, the ascenders in TFM files - can be negative also. - - * src/utils/hpftodit/hpftodit.cc (char_info): `ascent' must be - `int16'. - (read_char_table): Avoid negative ascenders. - (output_charset): Add cast. - * font/devlj4/*: Regenerated. - - Replace unnamed glyphs for DVI fonts with `uXXXX' glyph names where - possible. - - * font/devdvi/generate/{tc,texttt,ec,texmi,texsy,textex}.map: Do it. - * font/devdvi/generate/textex.map: Map glyph 23 to `u21C6' instead - of `<>'. - * font/devdvi/*: Regenerated. - - Map `la' and `ra' to U+27E8 and U+27E9. These two characters have - normal width, while the previously used characters (U+2329 and - U+232A) are classified as wide due to canonical equivalence with the - CJK punctuation characters U+3008 and U+3009. - - * font/devutf8/R.proto: Updated. - * src/roff/troff/uniglyph.cc, src/roff/troff/glyphuni.cc: Ditto. - - * man/groff_char.man: Simplify handling of table traps by - introducing `start block' and `end block' macros. - (Ns, Ne, 2s, 2e, Ds, De): New macros. - (DL): Make it work with Unix troff also. - Fix code values of `la' and `ra'. - - * tmac/dvi.tmac: Define `<>' for CW and CWI. - -2003-02-23 Gaius Mulley - - * src/devices/grohtml/post-html.cc (element_list::~element_list): - New destructor, fixing a major memory leak. - -2003-02-22 Werner LEMBERG - - * font/devhtml/R.proto, font/devutf8/R.proto: Flip `*f' and `+f' - to be in conformance with Unicode 3.0 and newer. - - * font/devlj4/generate/text.map: Add `Eu'. - * font/devlj4/generate/special.map: Flip `*e' and `+e'. - * font/devlj4/S: Regenerated. - - * man/groff_char.man: Completely rewritten. - - * doc/groff.texinfo: Fix description of request and macro arguments. - -2003-02-20 Gaius Mulley - - Valgrind fixes. - - * src/devices/grohtml/html-table.cc (html_table::~html_table): - Deallocate `columns' list. - * src/devices/grohtml/post-html.cc (char_block::~char_block): - New destructor. - (text_glob::text_glob_html, text_glob::text_glob_special, - text_glob::text_glob_line, text_glob::text_glob_auto_image, - text_glob::text_glob_tag): Avoid memory leaks. - (text_glob::remember_table): Free memory before reassigning. - -2003-02-19 Werner LEMBERG - - Add glyph `+e', greek lunate epsilon symbol, and `-h' (with the - alias `hbar'), the Planck constant over two pi. - - * font/devdvi/generate/texmi.map: Use `*e' for position 15 and - `+e' for position 34. - * font/devdvi/generate/texsy.map: Replace `DI' and `HE' with - `u2662' and `u2661'. - * font/devdvi/{MI,S}: Regenerated. - * font/devhtml/R.proto, font/devutf8/R.proto: Add `+e', `-h', `hbar'. - * font/devlbp/*: Add `hbar' alias. - * font/devlj4/generate/special.map: Ditto. - * font/devlj4/S: Regenerated. - * font/devps/generate/symbolchars: Add `+e'. - * font/devps/generate/textmap: Fix PS name for `-h'. - Add `hbar' alias. - * font/devps/symbolmap: Regenerated. - - * src/devices/grops/ps.cc (transform_fill): Removed since unused. - - * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `+e', - `-h', `hbar'. - * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `+e', - `-h'. - - * tmac/X.tmac, tmac/ps.tmac: Provide definitions for `-h' and - `hbar'. - * tmac/tty-char.tmac: Add `+e'. - -2003-02-17 Werner LEMBERG - - Another round trying to really fix problems with `have_input'. - - * src/roff/troff/input.cc (input_stack::get): Handle `have_input'. - (token::next) <'\n'>, <\'\n'>: Don't handle `have_input'. - - * src/devices/grotty/tty.cc (tty_printer::put_color): Fix color - handling if both foreground and background colors are default. - - * doc/groff.texinfo (Debugging): Document .lf differences to - AT&T troff. - -2003-02-16 Werner LEMBERG - - * src/devices/grotty/tty.cc (tty_printer::make_rgb_string): Avoid - null-bytes in created string. - - * src/roff/troff/input.cc (lookup_color, interpolate_macro, - alias_macro, lookup_request): Improve warning messages. - - * src/roff/troff/node.cc (suppress_node::tprint): Use `strsave', - not `strdup'. - Free `last_image_filename'. - - * src/preproc/html/pre-html.cc (char_block::char_block): Initialize - `buffer'. - (imageList::createPage, imageList::createImage): Use `free', not - `a_delete'. - (imageItem::~imageItem): Free `imageName'. - (addRegDef): Use `strsave', not `strdup'. - (get_resolution): Free `pathp'. - -2003-02-15 Werner LEMBERG - - * src/devices/grotty/tty.cc (tty_printer::tty_printer): Fix pointer - to `dummy'. - -2003-02-14 Werner LEMBERG - - Add memory management for colors to deallocate unnamed colors - properly. - - * src/include/color.h (color): New members `free_list' and `next'. - New member functions `new' and `delete'. - Add destructor. - * src/libs/libgroff/color.cc: Implement it. - - * src/libs/libgroff/font.cc (font::add_kern): Use integer cast - for array size of new operator. - - * src/libs/libdriver/input.cc (IntArray::operator[]): Remove - redundant comparison. - - * src/roff/troff/input.cc (word_space_node::reread, - hmotion_node::reread): Avoid warning about unused parameter. - (reset_output_registers): Remove redundant parameter. - (define_color): Undo change 2003-02-12. - - * src/roff/troff/reg.h: Updated. - - * src/roff/troff/node.cc (troff_output_file::really_print_line, - output_file::put_filename, real_output_file::really_put_filename, - ascii_output_file::really_print_line, - break_char_node::get_hyphen_list): Avoid warning about unused - parameter. - (suppress_node::tprint): Updated. - - * configure.ac: Check declaration for rand() and srand(). - * configure: Regenerated. - - * src/preproc/pic/pic.h: Declare fmod(), rand(), and srand() - conditionally. - * src/preproc/pic/pic.y: Remove declaration of fmod(), rand(), - and srand(). - - * src/preproc/eqn/delim.cc (delim_table): Add missing initializers - to avoid compiler warnings. - - * src/preproc/grn/hgraph.cc (HGPrintElt): Second parameter is - unused. - - * src/devices/grops/ps.cc (ps_printer::set_char): Last parameter - is unused. - * src/devices/grops/psrm.cc (skip_possible_newline): Remove first - (unused) parameter. - Updated all callers. - - * src/devices/grotty/tty.cc (tty_printer::set_char): Last parameter - is unused. - * src/devices/grodvi/dvi.cc (dvi_printer::set_char): Ditto. - * src/devices/grolj4/lj4.cc (lj4_printer::set_char): Ditto. - - * src/devices/grohtml/post-html.cc (html_printer::emit_line): - Parameter is unused. - (html_printer::add_table_end): Define parameter conditionally. - * src/devices/grohtml/output.cc (simple_output::special): Parameter - is unused. - - * src/devices/grolbp/lbp.cc: Define _GNU_SOURCE conditionally. - (lbp_printer::set_char): Last parameter is unused. - - * src/utils/indxbib/indxbib.cc (main): Remove redundant comparison. - -2003-02-13 Werner LEMBERG - - New commands \D'Fr ...', \D'Fc ...', etc. for orthogonality. - Make \D'f ...' move horizontally again for backwards compatibility. - Replace it with \D'Fg ...' where appropriate to avoid dependency - on horizontal resolution. - - * src/roff/troff/input.cc (do_get_long_name): New function. - (get_long_name): Call it. - - (read_draw_node): Handle `\D'Fx ...' by calling ... - (read_color_draw_node): New function. - - (read_rgb, read_cmy, read_cmyk, read_gray): New optional argument - `end'. - Pass it to `do_get_long_name' which is used instead of - `get_long_name'. - - * src/libs/libdriver/input.cc (color_from_Df_command): Remove - unnecessary value guard. - (parse_D_command) <'f'>: Add horizontal shift. - - * src/preproc/grn/hgraph.cc (HGPrintElt) : Use \D'Fg ...'. - * src/preproc/pic/troff.cc (troff_output::set_fill): Ditto. - (FILL_MAX): Removed. - - * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: - Updated. - -2003-02-12 Werner LEMBERG - - * src/roff/troff/input.cc (do_name_test, do_expr_test, - do_zero_width): Push `\n' if closing delimiter is missing. - - (token::next) , <'\n'>, <\'\n'>: Reset `have_input'. - <'F'>: Make \F non-transparent at the beginning of line. - (process_input_stack) : Don't handle - `have_input'. - - (define_color): Free color in case of reassignment. - - * doc/groff.texinfo (@Defesc, @DefescList, @DefescItem, - @DefescListEnd): Use @Var, not @var. - Fix all calls. - - * src/preproc/grn/hgraph.cc (HGPrintElt): Fix typo. - - * src/preproc/pic/object.cc (object_spec::~object_spec): Free - `shaded' and `outlined' arrays. - (object_spec::object_spec): Initialize `shaded' and `outlined'. - (graphic_object::set_fill_color, graphic_object::set_outline_color): - Use strsave. - (closed_object::set_fill_color): Ditto. - * src/preproc/pic/troff.cc (troff_output::set_color): Use strsave - instead of strdup. - (troff_output::reset_color): Use a_delete instead of free. - * src/preproc/pic/main.cc (do_file): Free `out' in case of error. - -2003-02-11 Werner LEMBERG - - * doc/groff.texinfo: Improve documentation of `ad'. - Document that \D'f...' is dependent on the horizontal resolution. - * man/groff_diff.man: Improve documentation of \D'f...'. - - * src/preproc/grn/hgraph.cc (HGPrintElt) : Don't emit - compensating \h'...' for \D'f ...' since the latter no longer moves - current position. - * src/preproc/pic/troff.cc (troff_output::set_fill): Ditto. - -2003-02-10 Werner LEMBERG - - Improve error messages for `x F' (and `F') commands. - - * src/include/error.h: Add declaration for - `current_source_filename'. - * src/libs/libgroff/filename.cc: Add `current_source_filename'. - * src/libs/libgroff/error.cc (do_error_with_file_and_line): Add - parameter for source file string. - Updated all callers. - - * src/libs/libdriver/input.cc: Add `current_source_filename'. - (remember_source_filename): New function. - (parse_x_command <'F'>, do_file <'F'>): Use it. - -2003-02-09 Werner LEMBERG - - Make grotty not emit warnings about unknown colors more than - necessary. - - * src/devices/grotty/tty.cc: Include `ptable.h'. - (TTY_MAX_COLORS): Removed. - (DEFAULT_COLOR_IDX): Defined to -1. - (glyph): Change `back_color_idx' and `fore_color_idx' to `char'. - (tty_printer): Change `curr_back_idx' and `curr_fore_idx' to `char'. - Change `tty_colors' to be a ptable. - First arg of `put_color' is now `char'. - New functions `make_rgb_string' and `tty_color'. - (tty_printer::tty_printer): Use `tty_color'. - (tty_printer::color_to_idx): Return value is now `char'. - Use `tty_color'. - - * src/include/color.h (color): Add `print_color' member function. - * src/libs/libgroff/color.cc (color::print_color): Implement it. - -2003-02-08 Werner LEMBERG - - Valgrind fixes. - - * src/devices/grops/ps.cc (ps_printer::define_encoding): Close - encoding file. - - * src/include/ptable.h (PTABLE::~PTABLE, PTABLE::define): Always - assume that value has been allocated with `new[]', thus use - `a_delete' for deallocation. - - * src/libs/libdriver/input.cc (get_integer_arg, - get_possibly_int_args, parse_x_command, do_file): Use `a_delete' - where appropriate. - - * src/libs/libgroff/new.cc (delete) [!COOKIE_BUG]: Define. - * src/libs/libgroff/nametoindex.cc - (character_indexer::named_char_index): Use `new [1]'. - - * src/preproc/eqn/lex.cc (init_table, do_definition): Use `new - [1]'. - * src/preproc/eqn/text.cc (set_special_char_type): Ditto. - (split_text): Use `a_delete'. - - * src/preproc/pic/pic.y (define_label, define_variable): Use `new - [1]'. - - * src/roff/troff/env.cc (environment::choose_breakpoint): Avoid - harmless memory leak. - (hyphen_trie::read_patterns_file): Initialize `buf'. - * src/roff/troff/node.cc (troff_output_file::troff_output_file): - Initialize `current_fill_color'and `current_glyph_color'. - * src/roff/troff/glyphuni.cc - (glyph_to_unicode_init::glyph_to_unicode_init): Use `new [1]'. - * src/roff/troff/uniuni.cc - (unicode_decompose_init::unicode_decompose_init): Ditto. - * src/roff/troff/uniglyph.cc - (unicode_to_glyph_init::unicode_to_glyph_init): Ditto. - -2003-01-26 Werner LEMBERG - - * src/utils/indxbib/indxbib.cc (main) [__EMX__]: Check with - `access' before calling `unlink'. - (do_file): Handle __EMX__. - - * src/include/nonposix.h: Handle __EMX__. - - * Makefile.in (SEP): New variable; set to @PATH_SEPARATOR@. - (fontpath,tmacpath): Use it. - (MDEFINES): Add it. - Sorted alphabetically. - - * src/preproc/eqn/neqn.sh, src/roff/nroff/nroff.sh: Use - @SEP@. - * src/preproc/eqn/Makefile.sub, src/roff/nroff/Makefile.sub: Handle - @SEP@. - -2003-01-27 Werner LEMBERG - - * src/libs/libgroff/strcasecmp.c, src/libs/libgroff/strncasecmp.c: - New files, copied from gnulib. - * src/libs/libgroff/Makefile.sub (CSRCS): Add them. - * configure.ac: Updated. - * configure: Regenerated. - - * src/include/config.hin: Regenerated. - * src/include/lib.h [!HAVE_STRCASECMP]: Declare `strcasecmp'. - Don't define `strcasecmp' as `strcmp'. - [!HAVE_STRNCASECMP]: Declare `strncasecmp'. - Dont define `strncasecmp' as `strncmp'. - - * src/roff/groff/pipeline.c [!HAVE_STRCASECMP, !HAVE_STRNCASECMP]: - Removed. - -2003-01-26 Werner LEMBERG - - * src/utils/indxbib/indxbib.cc (main) [__EMX__]: Fix typo: - s/unline/unlink/. - -2003-01-25 Werner LEMBERG - - * doc/groff.texinfo (Ligatures and Kerning): Mention limitations. - -2003-01-24 Werner LEMBERG - - Add US-english hyphenation exceptions (converted from Barbara - Beeton's hyphenation exception log reports which appear irregularly - in TUGBoat). - - * tmac/hyphen.us: Updated to latest version. - * tmac/README: Updated. - * tmac/hyphenex.us, tmac/hyphenex.sh: New files. - * tmac/troffrc: Load `hyphenex.us'. - * tmac/Makefile.sub (NORMALFILES): Add `hyphenex.us'. - * doc/groff.texinfo: Updated. - -2003-01-23 Werner LEMBERG - - Improve hyphenation slightly. This is a first step in redesigning - the hyphenation algorithm to make it more flexible (e.g. allowing - kerns and ligatures between the hyphenation character and the - following character -- while not used normally in English, other - languages like German would benefit). - - * src/roff/troff/env.cc (environment::hyphenate_line): Use - assertion instead of if-clause. - Let `get_hyphen_list' return the number of involved characters in - the hyphenation pattern instead of computing it directly (which - often yields too small values). - * src/roff/troff/node.h (*::get_hyphen_list): Add second parameter. - * src/roff/troff/node.cc (*::get_hyphen_list): Handle new second - parameter. - -2003-01-22 Werner LEMBERG - - Fixing a bug which caused groff to hang if the hyphenation exception - dictionary tried to grow. - - * src/roff/troff/env.cc (hyphen_trie::insert_hyphenation, - hyphen_trie::read_patterns_file, do_hyphenation_patterns_file): Use - pointer to dictionary. - -2003-01-20 Werner LEMBERG - - * src/utils/afmtodit/afmtodit.pl: Add switch `-m' to suppress - negative left italic correction. - * src/utils/afmtodit/afmtodit.man: Document it. - - * font/devps/generate/Makefile (RFLAG): Add `-m'. - * font/devps/{AB,AR,BMB,BMR,CB,CR,EURO,HB,HR,HNB,HNR,NB,NR,PB,PR, - S,TB,TR,ZD,ZDR}: Regenerated with afmtodit options `-i 0 -m'. - - * NEWS: Updated. - -2003-01-16 Werner LEMBERG - - * NEWS: Updated. - -2003-01-16 Jörgen Grahn - - * src/preproc/refer/refer.man: Mention REFER environment variable. - -2003-01-05 Werner LEMBERG - - Similar to \[is], the square root glyph (\[sr]) and the square root - extension glyph (\[radicalex]) are now text symbols. The new - mathematical versions are called \[sqrt] and \[sqrtex], - respectively. - - * font/devX*/S: Regenerated. - * font/devdvi/generate/texex.map: Rename `sr[0123]' to `sqrt[0123]'. - * font/devdvi/generate/texsy.map: Rename `sr' to `sqrt'. - * font/devdvi/EX, font/devdvi/S: Regenerated. - * font/devhtml/R.proto, font/devutf8/R.proto: Add `sqrt'. - * font/devlj4/generate/special.map: Add `sqrt'. - * font/devlj4/S: Regenerated. - * font/devps/generate/textmap: Add `sqrt'. - * font/devps/S, font/devps/symbolmap: Regenerated. - - * src/preproc/eqn/sqrt.cc (SQRT_CHAR, RADICAL_EXTENSION_CHAR, - SQRT_CHAIN, BAR_CHAIN): Use `sqrt*' and `sqrtex*'. - * src/roff/troff/input.cc (init_charset_table): Make `sqrtex' - overlap horizontally. - - * tmac/X.tmac, tmac/ps.tmac, tmac/lj4.tmac: Add `sqrtex'. - * tmac/dvi.tmac: Add `sr', and `sqrtex'. - Fix `radicalex'. - - * doc/groff.texinfo, man/groff_diff.man: Document that `radicalex' - and `sqrtex' are overlapping glyphs. - -2003-01-04 Werner LEMBERG - - * font/devdvi/generate/texsy.map: Add `is'. - * font/devps/symbolmap: Regenerated. - * font/devdvi/*TC, MI, S: Regenerated. - - * tmac/dvi.tmac: Remove `is'. - -2003-01-03 Werner LEMBERG - - `is' is now a text symbol (only relevant for dvi). The math variant - can be accessed with `integral'. - - * font/devX*/S: Regenerated. - * font/devdvi/generate/texex.map: Remove `is'. - * font/devdvi/EX: Updated. - * font/devhtml/R.proto, font/devutf8/R.proto: Add `integral'. - * font/devlj4/generate/special.map: Ditto. - * font/devlj4/S: Regenerated. - * font/devps/generate/textmap: Add `integral'. - * font/devps/S: Regenerated. - - * tmac/dvi.tmac: Define `is'. - - * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `integral'. - - * src/preproc/tbl/main.cc (process_format): Fix error message. - -2003-01-02 Werner LEMBERG - - * font/devhtml/R.proto, font/devutf8/R.proto: Add `ne' and `nc'. - * font/devps/textmap: Fix entries for `ne' and `nc'. - * font/devps/symbolmap: Regenerated. - - * src/roff/troff/glyphuni.cc (glyph_to_unicode_list), - src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `18', - `38', `58', `78', `-+', `|=', `nc', `ne'. - - * tmac/dvi.tmac: Add `nm', `ne', `nc'. - Use `schar' for `aq'. - * tmac/ps.tmac, tmac/X.tmac: Add `nc' and `ne'. - * tmac/ec.tmac: Add `SC' to special fonts for `CW' and `CWI'. - * tmac/tty.tmac: Add `ne'. - - * src/roff/troff/node.cc (make_glyph_node): Test with `get_macro' - for fallback glyphs. - -2002-12-29 Werner LEMBERG - - Add glyph `|='. - - * font/devX*/*: Regenerated. - * font/devdvi/generate/ec.map: Remove `eq'. - * font/devdvi/generate/texsy.map: Make `~=' the same as `~~'. - Assign `|=' to position 39. - * font/devdvi/*EC, S: Regenerated. - * font/devhtml/R.proto, font/devutf8/R.proto: Add `|='. - * font/devlj4/generate/special.map: Make `~=' the same as `~~'. - Assign `|=' to position 549. - * font/devps/generate/textmap, font/devps/enerate/symbolmap: Remove - `equalmath'. - Add `uni2243' for `|='. - - * tmac/ec.tmac: Add `eq'. - * tmac/dvi.tmac: Add `=~'. - * tmac/tty-char.tmac, tmac/ps.tmac, tmac/X.tmac, tmac/lbp.tmac: Add - `|='. - -2002-12-21 Werner LEMBERG - - * font/devdvi/generate/tc.map: Remove `**'. - * font/devdvi/*TC: Regenerated. - * font/devhtml/R.proto, font/devutf8/R.proto: Add `18', `38', `58', - `78', `<<', `>>'. - * font/devutf8/NOTES: Updated. - - * src/roff/troff/charinfo.h (charinfo): Add `setx_macro' function. - Don't give default parameter to `set_macro'. - * src/roff/troff/input.cc (do_define_character): Use `setx_macro' - instead of `set_macro'. - (charinfo::setx_macro): Implement it. - (charinfo::set_macro): Don't change `mode'. - - * tmac/tty.tmac: Add `18', `38', `58', `78', `<<', `>>'. - * tmac/ps.tmac, tmac/X.tmac: Add `<<', `>>'. - * tmac/dvi.tmac: Define `!=' with `.schar'. - -2002-12-20 Werner LEMBERG - - * font/devX*/S: Regenerated. - * font/devdvi/generate/ec.map: Remove `pl'. - * font/devdvi/generate/tc.map: Remove `mi', `14', `12', `34'. - * font/devdvi/*{TC,EC}: Regenerated. - * font/devhtml/R.proto: Add `-+'. - Remove double entries for `rk', `lk', `lt', `rt', `rb', `lb'. - * font/devlbp/*: Remove `or'. - * font/devlj4/generate/special.map: Remove `or'. - * font/devlj4/S: Regenerated. - * font/devps/generate/textmap: Add `fiveeighths', `oneeighth', - `seveneighths', `threeeighths'. - Remove `plusmath'. - Replace `minusplus' with `uni2213'. - * font/devps/symbolmap: Regenerated. - * font/devutf8/R.proto: Replace `shc' with unnamed glyph. - Add `-+'. - - * src/roff/troff/charinfo.h (charinfo): Add `is_normal' inline - function. - * src/roff/troff/node.cc (troff_output_file::put_char_width): - Call glyph_color and fill_color even if tcommand_flag isn't set. - (make_node, node::add_char): Check not ci->is_fallback but - ci->is_normal. - - * tmac/lj4.tmac, tmac/lbp.tmac: Define `or'. - * tmac/ec.tmac: Add .rchar entry for `f/'. - Don't remove `12', `14', `34'. - Define `pl' to be always roman. - * tmac/ps.tmac (ps-frac, ps-frac-mono): New macros. - Define `18', `38', `58', `78'. - * tmac/tty.tmac: Add `-+'. - * tmac/dvi.tmac: Define `f/'. - (dvi-frac): Use `f/'. - * tmac/X.tmac (X-frac, X-frac-mono): New macros. - Define `18', `38', `58', `78'. - -2002-12-15 Colin Watson - - * contrib/pic2graph/pic2graph.sh: Add missing `;;'. - -2002-12-10 Werner LEMBERG - - Add glyph `tno', a textual variant of `no'. - - * font/devX*/*: Regenerated. - * font/{devcp1047,devlatin1,devutf8,devhtml}/R.proto: Add `tno'. - * font/devdvi/generate/{tc.map: Replace `no' with `tno'. - * font/devdvi/generated/{texsy,textex}.map: Add `tno'. - * font/devdvi/*: Regenerated. - * font/devlbp/*: Add `tno'. - * font/devlj4/generate/tex.map: Replace `no' with `tno'. - * font/devlj4/*: Regenerated. - * font/devps/generate/textmap: Replace `no' with `tno'. - * font/devps/generate/symbolchars: Add `no'. - * font/devps/*: Regenerated. - - * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `tno'. - - * tmac/cp1047.tmac, tmac/latin1.tmac: Replace `no' with `tno'. - * tmac/tty-char.tmac: Add entry for `tno' and `3d'. - - * NEWS: Updated. - - * tmac/dvi.tmac: Replace most `\\' with `\E'. - Add definition for `sd'. - * tmac/X.tmac, tmac/ps.tmac: Replace most `\\' with `\E'. - - * tmac/eqnrc : Use `integral' instead of `is' glyph. - -2002-12-08 Werner LEMBERG - - * tmac/an-old.tmac (TH): Use integer value for `IN' if in nroff - mode to avoid rounding errors. - (an-do-tag, an-do-tag-html, RS, RE): Remove redundant `.br'. - - * src/roff/groff/groff.man, src/roff/nroff/nroff.man, - src/roff/troff/troff.man: Improve documentation of -T. - -2002-12-07 Jeff Conrad - - * src/roff/groff/pipeline.c: Don't define `const' for _WIN32. - (run_pipeline) [_WIN32]: Provide working function without `fork'. - -2002-12-06 Werner LEMBERG - - * font/devps/generate/freeeuro.sfd: Make dimensions of Euro.symbol - glyphs compatible to Adobe's Euro fonts (scaling them down a bit). - Scaling Euro.sansserif glyphs down to have the same height as - digits. - Removed unnecessary points; added some extrema. - - * font/devps/EURO, font/devps/freeeuro.afm, font/devps/freeeuro.pfa: - Regenerated. - -2002-12-04 Werner LEMBERG - - * font/devps/generate/freeeuro.sfd: Add glyphs `Euro.symbol.slanted' - and `Euro.symbol.bold.slanted'. - Improve some glyph offsets and widths. - * font/devps/EURO, font/devps/freeeuro.afm, font/devps/freeeuro.pfa: - Regenerated. - * font/devps/generate/Makefile (freeeuro.afm freeeuro.pfa): Fix - typo. - * font/devps/generate/sfdtopfa.pe: Generate PFA in current - direcory. - - * tmac/europs.tmac: Updated to new glyph indices. - Use Euro.symbol for font familiy `A'. - - * doc/groff.texinfo: Minor improvements. - -2002-12-02 Werner LEMBERG - - * font/devdvi/generate.tc.map: s/%O/%0/. - * font/devdvi/*TC: Regenerated. - - * src/roff/troff/div.cc (init_div_requests): Sorted. - - * tmac/dvi.tmac: Remove `Ye'. - * tmac/ec.tmac: Remove `Ye'. - Add .rchar entry for `de'. - - * man/groff.man, man/groff_diff.man: Document register `.pe'. - * doc/groff.texinfo: Document registers `.pe', `.n', and `.w'. - * NEWS: Updated. - -2002-11-30 Werner LEMBERG - - Add PS font for various Euro glyphs. - - * font/devps/generate/freeeuro.sfd: New master font file for - pfaedit. - * font/devps/generate/sfdtopfa.pe: New conversion script for - pfaedit. - * font/devps/generate/Makefile (FONTS): Add `EURO'. - (EURO, freeeuro.afm, freeeuro.pfa): New rules. - * font/devps/freeeuro.pfa, font/devps/freeeuro.afm: Generated from - `freeeuro.sfd'. - * font/devps/EURO: Generated from `freeeuro.afm'. - * font/devps/download: Add `freeuro.pfa'. - * font/devps/Makefile.sub (NORMALFILES): Adde `EURO' and - `freeeuro.pfa'. - - * tmac/europs.tmac: New file. - * tmac/ps.tmac: Include `europs.tmac'. - * tmac/Makefile.sub (DISTFILES): Add `europs.tmac'. - -2002-11-29 Werner LEMBERG - - * font/devdvi/generate/texsy.map: Remove `lh' and `rh'. - * font/devdvi/S: Regenerated. - * font/devhtml/R.proto: Fix `CR' and `ci'. - Add `OK'. - * font/devps/generate/textmap: Fix `lh', `rh', and `sq'. - Remove `bs'. - * font/devps/symbolmap: Regenerated. - * font/devutf8/R.proto: Fix `CR' and `ci'. - Add `OK'. - * font/devutf8/NOTES: Updated. - - * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Fix `CR' and - `ci'. - Add `OK'. - * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Ditto. - - * tmac/dvi.tmac: Add `lh' and `rh'. - * tmac/Xps.tmac: Fix `lh' and `rh'. - * tmac/X.tmac: Add `OK'. - * tmac/lj4.tmac: Ditto. - -2002-11-24 Werner LEMBERG - - * font/devX*/S: Regenerated. - * font/devascii/R.proto, font/devcp1047/R.proto: Remove glyphs `lb', - `lc', `lf', `lk', `lt', `rb', `rc', `rf', `rk', and `rt'. - * font/devdvi/generate/texsy.map: Remove `or' glyph. - * font/devdvi/S: Regenerated. - * font/devhtml/R.proto, font/devutf8/R.proto: Add/fix glyphs - `parenlefttp', `parenleftex', `parenleftbt', `parenrighttp', - `parenrightex', `parenrightbt', `bracketlefttp', `bracketleftex', - `bracketleftbt', `bracketrighttp', `bracketrightex', - `bracketrightbt', `bracelefttp', `braceleftmid', `braceleftbt', - `braceex', `braceleftex', `bracerightex', `bracerighttp', - `bracerightmid', `bracerightbt', `lt', `lk', `lb', `rt', `rk', - `rb', and `bv'. - * src/roff/troff/glyphuni.cc, src/roff/troff/uniglyph.cc: Ditto. - * font/devutf8/NOTES: Updated. - * font/devlj4/generate/special.map: Add glyph `braceex'. - * font/devlj4/S: Regenerated. - - * tmac/tty-char.tmac: Add glyphs `lf', `rf', `lc', and `rc'. - -2002-11-14 Werner LEMBERG - - * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `va' - and `vA'. - Fix code for `an'. - * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Ditto. - - * doc/texinfo.tex: New version from texinfo 4.3. - * doc/groff.texinfo: Updated for texinfo 4.3. - Use @tie{} where appropriate. - * font/devdvi/generate/ec.map: Don't include `or' and `bv'. - * font/devdvi/generate/tc.map: Remove `rn'. - * font/devdvi/*TC, font/devdvi/*EC: Regenerated. - * font/devhtml/R.proto, font/devutf8/R.proto: Add `vA'. - Fix code for `an'. - * font/devX100/*, font/devX100-12/*, font/devX75/*, - font/devX75-12/*: Regenerated. - - * tmac/dvi.tmac: Add special fonts `SA' and `SB'. - Use .char (again) for `br', `ul', `rn', `or', and `ru'. - Improve definition of `an'. - * tmac/ps.tmac: Use .char (again) for `br', `ul', `rn', `or', and - `ru'. - * tmac/lj4.tmac: Use .char (again) for `br', `ul', `rn', and `ru'. - * tmac/X.tmac: Add definition for `or'. - * tmac/Xps.tmac: Undo change 2002-11-05. - * tmac/lbp.tmac: Add definitions for `br', `rn', `ul', and `ru'. - -2002-11-11 Werner LEMBERG - - * src/roff/troff/node.cc (troff_output_file::put_char): Always - call flush_tbuf. - -2002-11-10 Werner LEMBERG - - Added three new requests `schar', `fschar', and `rfschar'. `schar' - defines a glyph which is searched after the check for fonts declared - with `.special' (and before the check for all mounted special - fonts). `fschar' defines a glyph for a particular font which is - searched after the check for fonts declared with `.fspecial' (and - before the check for fonts declared with `.special'). `rfschar' - removes glyphs defined with `fschar'. - - * src/roff/troff/token.h (char_mode): New enum. - Declare do_define_character. - * src/roff/troff/charinfo.h (charinfo): Replace `fallback' with - `mode'. - (charinfo::is_fallback): Updated. - (charinfo::is_special): New method. - * src/roff/troff/input.cc (do_define_character): Add and use - optional second parameter used as a prefix for font-specific glyph - names. - (define_character, define_fallback_character): Updated. - (define_special_character): New function. - (init_input_requests): Add `schar'. - (charinfo::charinfo, charinfo::set_macro): Updated. - * src/roff/troff/node.cc: Include `stringclass.h'. - (make_glyph_node): Handle special glyphs defined with `.schar' and - `.fschar'. - (define_font_special_character, remove_font_special_character): New - functions. - (init_node_requests): Sorted. - Add `fschar' and `rfschar'. - * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: - Document new requests. - - * font/devhtml/R.proto, font/devutf8/R.proto: Add `va'. - * tmac/dvi.tmac: Add `va' for CW and CWI (using `.fschar'). - -2002-11-08 Werner LEMBERG - - Added new font `SC' (cmtex10) to devdvi. - - * devdvi/generate/Makefile (FONTS): Add `SC'. - (SC): New rule. - * devdvi/generate/textex.map: New map file for cmtex. - * devdvi/SC: New. - * devdvi/Makefile.sub (DEVFILES): Updated. - * tmac/dvi.tmac: Add fspecial entries for SC. - Add `MI', `S' and `CW' to the `special' call. Otherwise, `SC' is - found before `S' since the font position of `SC' is lower due to the - gaps in DESC's `font' line. - * tmac/ec.tmac: Add a `special' call. - * NEWS: Updated. - - * font/devhtml/R.proto: Remove double entry for `ti'. - * tmac/tty.tmac: Add entries for `IJ', `ij', and `bq'. - * tmac/tty-char.tmac: Remove entry for `bq'. - * tmac/lbp.tmac: Add entries for `lq', `rq', `fo', `fc', and `em'. - * tmac/ec.tmac: Don't remove `aq' glyph. - * tmac/X.tmac: Fix entry for `em'. - Add entries for `fo' and `fc'. - * tmac/dvi.tmac: Add entries for `em', `en', `hy', `fo', and `fc'. - - * doc/groff.texinfo, man/groff.man, man/groff_diff.man: Fix - documentation of `special' and `fspecial' requests. - -2002-11-05 Werner LEMBERG - - * font/devascii/R.proto, font/devcp1047/R.proto, - font/devlatin1/R.proto: Remove entry for `.i'. - * font/devdvi/generate/textt.map: Add entry for `ad'. - * font/devdvi/generate/texr.map, font/devdvi/generate/texb.map, - font/devdvi/generate/texi.map: Add dummy glyph name `slash@for@l'. - We need this for getting kerning values to compose `/l' and `/L'. - * font/devdvi: Regenerated font definition files for CM fonts. - * font/devhtml/R.proto: Add entries for "'C", "'c", `IJ', and `ij'. - * font/devutf8/R.proto: Ditto. - Remove double entry for `ti'. - - * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Fix entries - for (groff) ligatures, `la', and `ra'. - Add "'C", "'c", `IJ', and `ij'. - Remove double entry for `ti'. - * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Remove all - double entries. - Add "'C", "'c", `IJ', and `ij'. - Fix entries for (groff) ligatures, `la', and `ra'. - - * tmac/ps.tmac (ps-achar): New macro. - Define "'c" and "'C". - * tmac/tty.tmac: Add entry for `.i'. - * tmac/X.tmac (X-achar): New macro. - Define "'c", "'C", and `:Y'. - Add entries for `IJ' and `ij'. - * tmac/Xps.tmac (Xps-achar): New macro. - Define "'c" and "'C". - Add entries for `IJ' and `ij'. - * tmac/lbp.tmac (lbp-achar): New macro. - Add fallback characters for all groff ligatures and many other - glyphs. - * tmac/dvi.tmac: Fix definitions of `_' and `ul'. - Add entries for `/l' and `/L'. - Define "'c" and "'C". - Add entries for `IJ' and `ij'. - -2002-11-02 Larry Kollar - - * PROBLEMS: Document how to solve Mac OS X compilation problems. - -2002-11-02 Werner LEMBERG - - Adding support for composite glyphs: \[xxx yyy ...] and the - `composite' request. - - * src/roff/troff/glyphuni.cc: New file for mapping groff glyph names - to Unicode-based glyph names. - * src/roff/troff/uniglyph.cc: New file for mapping Unicode-based - glyph names to groff glyph names. - * src/roff/troff/uniuni.cc: New file for canonically decomposing - Unicode-based glyph names. - * src/roff/troff/unicode.cc, src/roff/troff/unicode.h: New files - for handling Unicode glyph names. - * src/roff/troff/input.cc: Include unicode.h. - (composite_glyph_name): New function. - (token::next) <'['>: Handle Unicode glyph names and composite - glyphs. - (composite_dictionary): New dictionary for the `composite' request. - (composite_request): Implement `composite' request. - (init_input_requests): Add `composite'. - Alphabetically sorted. - * src/roff/troff/env.cc (tabs_save, tabs_restore): Removed (already - commented out). - (init_env_requests): Alphabetically sorted. - Removed `tas' and `tar' (already commented out). - * src/roff/troff/Makefile.sub: Updated. - -2002-10-31 Ruslan Ermilov - - * src/roff/nroff/nroff.man, src/roff/nroff/nroff.sh: Fix description - of options. - -2002-10-29 Werner LEMBERG - - Fix computation of .trunc register. Additionally, its value (and - the value of the .ne register) is now always set before entering the - trap. - - * src/roff/troff/div.cc (diversion::need): Set `truncated_space' and - `needed_space' before calling `space'. - (top_level_diversion::space): Remove special code for 'sp before the - first page. - Call `begin_page' with the discarded space as a parameter. - (top_level_diversion::begin_page): Add optional parameter to set - `truncated_space'. - * src/roff/troff/div.h: Updated. - - * doc/groff.texinfo: Improve documentation of .sp, \n[.trunc], and - \n[.ne]. - - * tmac/an-old.tmac (SH, SS, TP, IP, HP, TS): Undo change 2002-10-26. - (LP): Remove superfluous call to `br'. - * tmac/doc-common (doc-paragraph): Undo change 2002-10-26. - * tmac/doc.tmac (Bd, Bl, doc-set-vertical-and-indent): Ditto. - -2002-10-26 Werner LEMBERG - - * tmac/doc-ditroff: Remove useless switch/variable -rC. - (doc-setup-header): Don't set page register `%'. - * tmac/doc-nroff: Remove variable `C'. - (doc-setup-page-layout): Set doc-header-space to .5i unconditionally. - (doc-setup-header): Don't set page register `%'. - Don't call `bp'. - * tmac/doc-common (doc-header): Call `ns'. - (doc-paragraph): Protect .sp with .br so that it survives traps - possibly set by the user. - * tmac/doc.tmac (Bd, Bl, doc-set-vertical-and-indent): Ditto. - - * tmac/doc*: Replace ' with . for consistency if no effect. - -2002-10-26 Werner LEMBERG - - * tmac/an-old.tmac (SH, SS, TP, IP, HP, TS): Protect .sp with .br - so that it survives traps possibly set by the user. - - * src/roff/troff/node.cc: Fix the changes from 2002-10-23. - (troff_output_file::set_font): Call flush_tbuf if necessary. - (troff_output_file::fill_color, troff_output_file::glyph_color): Call - flush_tbuf and do_motion only if necessary. - (troff_output_file::start_special, - troff_output_file::put_char_width, troff_output_file::put_char, - troff_output_file::draw): Updated. - (word_space_node::tprint, space_node::tprint, hmotion_node::tprint, - vmotion_node::tprint): Undo change 2002-10-23. - -2002-10-25 Werner LEMBERG - - * tmac/www.tmac (DC): Fix case of overlapping images. - -2002-10-23 Werner LEMBERG - - * src/roff/troff/node.cc (troff_output_file::fill_color, - troff_output_file::glyph_color): Set current color before testing - color_flag. - (troff_output_file::put_char_width, troff_output_file::put_char, - troff_output_file::draw): Don't call flush_tbuf and/or do_motion - before glyph_color. - (troff_output_file::file_color, troff_output_file::glyph_color): - Call do_motion. - (word_space_node::tprint, space_node::tprint, hmotion_node::tprint, - vmotion_node::tprint): Move first, then call fill_color. - -2002-10-20 Werner LEMBERG - - * doc/groff.texinfo, man/groff_tmac.man: Document that it is not - possible to use multiple main macro packages. - -2002-10-19 Werner LEMBERG - - * src/devices/grops/ps.cc (cmyk_flag): New global variable. - (ps_printer::set_color): Set `cmyk_flag' for CMY and CMYK colors. - (ps_printer::~ps_printer): Emit `%%Extensions: CMYK' if `cmyk_flag' - is set. - * font/devps/prologue.ps (Fk, Ck): Enclose definitions with a - `where' construction since `cmyksetcolor' is a PS Level 2 operator. - -2002-10-16 Werner LEMBERG - - * NEWS, doc/webpage.ms: Updated. - -2002-10-14 Werner LEMBERG - - * src/roff/troff/node.cc (troff_output_file::put_char_width, - troff_output_file::put_char, troff_output_file::fill_color, - troff_output_file::glyph_color): Handle case where color pointer - is null. - -2002-10-13 Ruslan Ermilov - - Add the new -r option to grotty. It is similar to the -i option - except it tells grotty(1) to use the "reverse video" attribute to - render italic fonts. - - * src/devices/grotty/tty.cc (reverse_flag): New global variable. - (SGR_REVERSE, SGR_NO_REVERSE): New macros. - (tty_printer::make_underline, tty_printer::put_color, - tty_printer::end_page): Use it. - (main): Add -r switch. - (usage): Updated. - * src/devices/grotty/grotty.man: Document it. - -2002-10-11 Ruslan Ermilov - - * src/roff/troff/env.cc (hyphen_trie::read_patterns_file): Add - cast to `unsigned char' to properly read patterns with 8bit - characters. - -2002-10-08 Werner LEMBERG - - * REVISION: Increased to 2. - -Local Variables: -version-control: never -coding: latin-1 -End: diff --git a/contrib/groff/ChangeLog.115 b/contrib/groff/ChangeLog.115 deleted file mode 100644 index 1d994f3526c7..000000000000 --- a/contrib/groff/ChangeLog.115 +++ /dev/null @@ -1,6147 +0,0 @@ - -Version 1.15 released -===================== - -1999-12-28 Werner LEMBERG - - * NEWS, VERSION: Changed to 1.15 - -1999-12-27 Paul Eggert - - * nroff/nroff.man: -S is safer, not safe. - - * groff/groff.cc (main): Use `safer', not `safe', in variable - names. This does not change the behavior. - - * troff/input.cc (main): Likewise. - - * nroff/nroff.sh: Likewise. - - * troff/input.cc (prepend_string): New function. - (main): Prepend -msafer, so that we check macro libraries for - safety. - - * PROBLEMS: Report problem with Sun C++ 5.0 and 5.1. - -Version 1.14 released -===================== - -1999-12-26 Werner LEMBERG - - * NEWS, VERSION: Changed to 1.14. - -1999-12-24 Werner LEMBERG - - * refer/refer.cc: Fixing the last fix. - -Version 1.13 released -===================== - -1999-12-23 Werner LEMBERG - - * tmac/tmac.an: A typo (`.if' instead of `.ie') made the page - number disappear. - - * NEWS: Updated. - - * tmac/tmac.safer: Forgot to remove `so' from the `rm' request. - - * VERSION: Changed to 1.13 -- to be compliant with the Adobe 3.0 - document conventions, the version number must be a real. - -Version 1.12.1 released -======================= - -1999-12-22 Werner LEMBERG - - * VERSION: Changed to 1.12.1. - -1999-12-22 Alan Rooks - - * refer/refer.cc (do_file): Slight modification to satisfy the - `Standard system CC - C++ Compilation System 3.1 03/03/99' on SCO - UnixWare 7.1. - -1999-12-20 Werner LEMBERG - - * changed prep.ai.mit.edu -> ftp.gnu.org; updated copyright - notices. - - * tmac/tmac.safer, tmac/groff_msafer.man: Remove `so' (again) from - list of unsafe requests. - - * pic/pic.man: Fixed a typo. - - * man/groff_out.man: Fixed a typo. - -1999-12-18 Werner LEMBERG - - * Makefile.in: Doc fixes. - -1999-12-17 Fabrizio Polacco - - * groff/groff.cc: Missing `U' option added to getopt(). - - * troff/troff.man: Missing `U' option added to synopsis. - -Version 1.12 released -===================== - -1999-12-14 Werner LEMBERG - - * troff/input.cc (usage), groff/groff.cc (synopsis): Added -U flag - to the synopsis. - - * nroff/nroff.sh, nroff/nroff.man: Replaced `secure', `unsecure' - with the more appropriate terms `safer' and `unsafe'. - - * libgroff/strerror.c, aclocal.m4, configure.in: Added checks for - sys_nerr and sys_errlist[]. - - * pic/pic.h, aclocal.m4, configure.in: Added check for hypot(). - - * pic/pic.y, pic/pic.cc: Added check for fmod(). - -1999-12-13 Werner LEMBERG - - * VERSION: Changed to 1.12. - - Here some patches from various sources; most of them taken from - the Debian distribution. - - * tmac/groff_mdoc.man, tmac/groff_mdoc.samples.man, - tmac/Makefile.sub: New files copied directly from the NetBSD - distribution. Probably, some additional adaptation later on is - necessary... - - * tmac/tmac.safer, tmac/groff_msafer.man: Added `so' to the list - of unsafe requests. - - * groff/groff.cc, groff/groff.man, nroff/nroff.sh, - nroff/nroff.man, pic/main.cc, pic/pic.man, troff/input.cc, - troff/troff.man: Added option `-U' for unsafe mode. Safe mode - (`-S') is now the default. - - * README, NEWS: Updated. - -1999-12-09 Werner LEMBERG - - * doc/groff.texinfo: Regenerated nodes and menus with emacs. - - * doc/Makefile (clean): Added cleaning commands for groff.texinfo. - -1999-12-06 Werner LEMBERG - - * configure.in: Removed AC_PREFIX_PROGRAM since it causes more - grief than relief today. Additionally, it is against the GNU - coding standards. - - * configure: Recreated. - -1999-12-05 Werner LEMBERG - - * configure.in: Added GROFF_LIBM. - - * configure: Recreated. - - * aclocal.m4 (GROFF_LIBM): New function which tests whether -lm is - necessary. - - * Makefile.in: Added definition of $(LIBM). - - * Makefile.comm (LIBM): Removed. - - * pfbtops/Makefile.sub: On AIX, -lm is needed also. - -1999-12-03 Gaius Mulley - - * doc/Makefile: Added rule for generation pic.html. - - (clean): Files produced by grohtml will be removed also. - - * doc/pic.ms: Small fix. - - * tmac/tmac.html: Fixed suppression of headers. - -1999-11-16 Gaius Mulley - - * tmac/tmac.html: Fixing horizontal arrows. - - Turning off hyphenation. - - * tmac/tmac.an: Improved support for grohtml; better indentation, - no footers/headers. - -1999-10-31 Gaius Mulley - - * tmac/tmac.arkup: Added CDFTP macro - - * tmac/tmac.html: All headers are turned off for ms, me, and mm - macros. - - * tmac/troffrc: Some additions for HTML stuff. - -1999-10-06 Gaius Mulley - - * tmac/tmac.html: Small changes. - -1999-09-26 Werner LEMBERG - - * doc/groff.texinfo: Minor fixes. - -1999-09-26 Gaius Mulley - - * devhtml/TR: Changed spacewidth to 3. - - * tmac/Makefile.sub (NORMALFILES): Added tmac.arkup. - - * tmac/tmac.html: Moved markup macros to tmap.arkup. - - * tmac/tmac.arkup: New file. - - * grohtml/ChangeLog: New file. - -1999-09-16 Werner LEMBERG - - * doc/groff.texinfo (Common Features): Added Copying chapter. - Changed format to @smallbook. - -1999-09-15 Werner LEMBERG - - * NEWS: Added info about groff.texinfo. - - * doc/groff.texinfo: Will now compile (using texi2dvi) without - warning messages. - -1999-09-14 Werner LEMBERG - - * groff/groff.man: More updates. - -1999-09-13 Werner LEMBERG - - * doc/groff.texinfo: New file. This manual is still very - rudimentary. It has been originally contributed by Trent - A. Fisher with first corrections and - additions by me. - - * INSTALL: Added information about the `doc' subdir - - * troff/troff.man: Minor fixes. - - * groff/groff.man: Added missing `-L arg' to SYNOPSIS section; - reordered options. - - * troff/input.cc (usage): Added missing `-ffam' to usage message. - - * Makefile.in (dist): groff-$(version).tar.gz must be removed - also, otherwise it is included itself in another call of `make - dist'. - - * groff/groff.cc (synopsis): Removed superfluous space. - - * PROJECTS, PROBLEMS, NEWS: Updated. - - * VERSION: Updated to 1.12beta. - - * BUG-REPORT: Some cosmetic fixes. Corrected email address. - - * README: Updated: Included documentation about CVS repository, - mailing lists, and daily snapshots. - - * tmac/Makefile.sub: Fixed $(tmap_wrap) finally. - -1999-09-12 Bjarni Ingi Gislason - - * tmac/tmac.an: If the tag didn't fit into the space that the - macro `TP' specifies, the rest of the tag went into the space for - the next line. - -1999-09-12 Jeffrey Copeland - - * grolj4/lj4.cc: Added duplex printing (option `-d'). - - * grolj4/grolj4.man: Document duplex printing. - -1999-09-12 Werner LEMBERG - - * doc/Makefile (pic.ps): Fixed rule which caused problems with - non-GNUish sed programs. - - * tmac/doc-syms: Removed extra space from -iso8802-3 macro - definition. - - * configure.in (LIBS): Added `-lc' - - * Makefile.comm (.man.n): Added substitution for @TMAC_AN_PREFIX@. - - * pic/tex.cc (solid_arc): Casting M_PI to double. - - * libgroff/putenv.c (putenv): Changed function header to ANSI C. - - * groff/groff.man, tmac/Makefile.sub (MAN7), tmac/groff_msafer.man - (new file), tmac/msafer.man (deleted), tmac/groff_me.man (new - file), tmac/me.man (deleted): {me,msafer} -> groff_{me,msafer}. - - * groff/groff_man.man: New file. This manual page was originally - written for the Debian GNU/Linux system by Susan G. Kleinmann - . - - * eqn/list.cc (list_box::compute_metrics, - list_box::compute_sublist_width): Removed variable declaration to - avoid shadowing warnings. - - * grops/psrm.cc (resource_manager::process_file): Ditto. - - * tfmtodit/tfmtodit.cc (main): Ditto. - - * libgroff/font.cc (font::load_desc): Renamed auxiliary variable - to avoid shadowing warnings. - - * tbl/table.cc (block_entry::do_divert, table::do_row): Renamed - shadowing loop variable. - - * groff/groff.man, troff/troff.man: Added doc about grohtml. - -1999-09-12 Gaius Mulley - - New grohtml frontend to convert groff input to html. - - * Makefile.in (CCPROGDIRS, DEVDIRS): Added html device. - - * tmac/Makefile.sub (NORMALFILES): Added tmac.html. - - * tmac/eqnrc: Added html device. - - * tmac/tmac.html: New file. - - * eqn/main.cc (do_file, inline_equation), pic/troff.cc - (troff_output::start_picture, troff_output::finish_picture), - tbl/main.cc (process_input_file): - Surrounded output with `graphics_start' and `graphics_end' so that - the html driver can identify non-text portions. - - * grodvi/dvi.cc (dvi_printer::set_char), grolj4/lj4.cc - (lj4_printer::set_char), grops/ps.cc (ps_printer::set_char), - grotty/tty.ps (tty_printer::set_char): Additional parameter - `name'. - - * include/printer.h: Class printer: New function - set_char_and_width; new variables (is_char_named, is_named_set, - named_command, named_char_s, named_char_n) to hold information - about named characters -- needed by the html driver. - - * libdriver/printer.cc (printer::set_ascii_char, - printer::set_special_char): Use set_char_and_width. - - * devhtml/*: New device files for html driver. - - * grohtml/*: New driver grohtml. - -1999-09-11 Wilfredo Sanchez - - * tmac/doc-common, tmac/tmac.an: Removed the word `UNIX' in - default strings. - -1999-09-11 Luke Mewburn - - * libgroff/string.cc (search): Small fix to test against NULL - pointer. - -1999-09-11 Jeff Conrad - - * troff/node.cc (copy): The characters in a bracket escape (e.g., - \b'abc') were stacked in reverse order when processed in a - diversion. - - * troff/node.h: Added `*last' to struct `node' to make the above - fix work. - - * troff/input.cc (read_draw_node), libdriver/input.cc (do_file): - The default scale for the 'f' and 't' graphics functions were 'm' - rather than 'u' (i.e., no scaling). - -1999-09-11 Peter Miller - - * groff/groff.cc (main), groff.man, soelim/soelim.cc (main, - do_file), soelim/soelim.man: Added `-I file' option to soelim, - defining include paths. - - * soelim/soelim.cc (include_path_append): New function. - -1999-09-11 Larry Jones - - * tbl/main.cc (process_options): Unix (at least Documenter's - Workbench) tbl allows arbitrary non-alpha characters between - options. - -1999-09-11 Paul Eggert - - Y2k fixes. Don't assume that the current year precedes 2000. - - * doc/meref.me: Add \n(y2, \n(y4. - - * tmac/doc-common (Yr): New number register. - (Dd): Don't assume current year precedes 2000. - - * tmac/tmac.e (td): Likewise. - (y2, y4): New number registers. - - * pic/pic.man: Update reference for pic paper to May, 1991 - version. - -1999-09-11 Werner LEMBERG - - * tmac/Makefile.sub (install_data, stamp-wrap, uninstall_sub): - Removed quotation marks which prevented correct expansion of - $(tmac_wrap). - - * devlj4/Makefile.sub (LJ4RES): Fixed value (600 instead of 300). - -1999-09-10 Werner LEMBERG - - * Makefile.sub (DISTCLEANFILES): Added `config.log' and - `config.cache'. - - * Removed configure.old. - -1999-08-31 Werner LEMBERG - - * VERSION: Updated to 1.11.1 - -1999-05-27 Werner LEMBERG - - * doc/Makefile: changed `.PS' postfix to `.ps' for consistency. - - * tmac/Makefile.sub (install_data, stamp-wrap, uninstall_sub): - added quotations around $(tmac_wrap) to avoid syntax error if - variable is empty. - - * configure: Newly generated using autoconf 2.13. - - * Makefile.in (LDFLAGS): Set variable to @LDFLAGS@. - -Fri Aug 15 08:51:47 1997 Eric S. Raymond - - * README, PROJECTS, NEWS, INSTALL, VERSION, - doc/Makefile. doc/pic.ms, groff/groff.man: - Prepare for 1.11 release. No code changes. - Documentation for pic added (doc/pic.ms). - -Sun Nov 26 11:45:13 1995 James Clark - - * Version 1.10 released. - -Fri Nov 24 09:56:16 1995 James Clark - - * afmtodit/afmtodit.pl: Avoid comment on first line. - -Mon Nov 20 11:13:49 1995 James Clark - - * aclocal.m4 (GROFF_INSTALL_SH): New macro. - * configure.in: Call it. - - * Makefile.sub (configure): Depends on aclocal.m4 not acgroff.m4. - (distfiles): Doesn't depend on config.log or config.cache. - -Sun Oct 1 08:45:36 1995 James Clark - - * grog/grog.sh: Use print "" rather than print in END rule. - -Wed Aug 23 13:30:52 1995 James Clark - - * tbl/main.cc (process_data): Don't give error for excess data - entries that are comments. - -Fri Jul 28 11:00:27 1995 James Clark - - * tbl/main.cc (process_data): Fix case where new for-scope rules - silently change meaning of code. - -Tue Jul 4 23:39:51 1995 James Clark - - * troff/env.cc (hyphenate): Loop over all consecutive sequences - of non-zero hyphenation codes. - -Sat Jul 1 00:42:15 1995 James Clark - - * aclocal.m4 (GROFF_POSIX): Use conflicting declaration technique. - -Thu Jun 29 13:58:36 1995 James Clark - - * tmac/tmac.e (ip): Divert the tag so as to freeze the spaces. - -Tue Jun 27 12:30:16 1995 James Clark - - * tmac/tmac.andoc: Make it work in compatibility mode. - - * refer/token.h (token_info::is_range_sep): New function. - * refer/token.cc (init_special_chars): Make \(en a RANGE_SEP. - * refer/ref.cc (reference::output): More sophisticated check for - multiple pages. - - * devps/prologue.ps (MANUAL): New procedure. - * grops/ps.cc (main): New -m option. - (usage): Include -m. - (ps_printer::~ps_printer): Implement -m. - - * aclocal.m4 (GROFF_G): New macro. - * configure.in: Call it. - * Makefile.in (g): Provided by configure. - - * hpftodit/hpftodit.cc (basename): Rename to xbasename. - - * tmac/tmac.tty: Disable warning about bad fonts. Remove font - translations. - - * Makefile.in (tmacpath): Don't include /usr/lib/tmac. - (tmac_m, tmac_s): Deleted. - (sys_tmac_prefix, tmac_wrap, tmac_prefix, tmac_an_prefix, - tmac_s_prefix): New variables. - (MDEFINES): Change accordingly. - * Makefile.comm (.man.n): Use new TMAC_* variables. - * configure.in (GROFF_TMAC): Call. - * aclocal.m4 (GROFF_TMAC): Define. - * tmac/Makefile.sub (stamp_wrap): New target. - (install_data, uninstall_sub): Handle macro wrapping. - -Mon Jun 26 14:54:39 1995 James Clark - - * tbl/main.cc (main): Ignore -T option. - -Thu Jun 22 09:08:06 1995 James Clark - - * devlj4/generate/special.map: Add definition of \(nb. - - * tmac/tmac.dvi: Add definition of \(nb. - - * troff/dictionary.c (dictionary::dictionary): association::v gets - initialized by association::association. - - * tmac/Makefile.sub: Avoid using temporary files when installing. - - * troff/env.cc (environment::set_font): Make bad font number a - warning. - - * Makefile.in (fontpath): Remove $(prefix)/lib/font from fontpath. - - * Makefile.in (datadir): Use share rather than lib. - - * groff/groff.cc (basename): Rename to xbasename. - -Wed Jun 21 16:59:46 1995 James Clark - - * Makefile (CCLIBS): Don't use. - * Makefile.ccpg: Likewise. - - * acgroff.m4: Rename to... - * aclocal.m4: Modify extensively for autoconf 2. - * configure.in: Likewise. - * Makefile.in: Likewise. - - * groff/pipeline.c (const): Declare as empty if __STDC__ not - defined. - (xstrsignal): Check for definition of NSIG. Conditionalize - on SYS_SIGLIST_DECLARED. Make return type const. - -Sat Jun 10 12:28:16 1995 James Clark - - * troff/input.cc (interpolate_macro): Rephrase missing space - warning. - -Thu May 11 01:07:16 1995 Jason Merrill - - * addftinfo/addftinfo.cc, eqn/delim.cc, eqn/lex.cc, eqn/list.cc, - grodvi/dvi.cc, groff/groff.cc, grops/ps.cc, grops/psrm.cc, - grotty/tty.cc, include/ptable.h indxbib/indxbib.cc, - libbib/index.cc, libbib/linear.cc, libbib/search.cc, - libdriver/input.cc, libdriver/printer.cc, libgroff/font.cc, - libgroff/lf.cc, libgroff/nametoindex.cc, libgroff/ptable.cc, - libgroff/string.cc, lkbib/lkbib.cc, lookbib/lookbib.cc, - pic/lex.cc, pic/object.cc, pic/pic.y refer/label.y refer/ref.cc, - refer/refer.cc, refer/token.cc, tbl/main.cc, tbl/table.cc, - tfmtodit/tfmtodit.cc, troff/dictionary.cc, troff/div.cc, - troff/env.cc, troff/input.cc, troff/node.cc, troff/symbol.cc: - Fix 'for' scoping. - -Wed Apr 19 21:15:11 1995 James Clark - - * troff/input.cc (spring_trap): Push a macro_iterator rather than a - string_iterator. - (spring_trap, postpone_traps, unpostpone_traps): Move to later in - file. - (macro_iterator::macro_iterator): Add additional argument. - -Mon Apr 10 12:06:02 1995 James Clark - - * troff/div.cc (vertical_size::vertical_size): In place of integer - specifying line spacing use cunits specifying post vertical - space. - (macro_diversion::output, top_level_diversion::output): Likewise. - * troff/div.h: Change declarations accordingly. - * troff/env.cc (pending_output_line): Replace ls field by post_vs - field. - (pending_output_line::pending_output_line, - pending_output_line::output, environment::output, - environment::output_line, environment::output_title, - environment::hyphenate_line): In place of - integer specifying line spacing use cunits specifying post vertical - space. - (environment::environment): Add post_vertical_spacing and - prev_post_vertical_spacing arguments. - (environment::get_post_vertical_spacing): New function. - (environment::total_post_vertical_spacing): New function. - (environment::post_vertical_spacing): New function. - (init_env_requests): Initialize pvs request and .pvs register. - * troff/env.h: Change declarations. - -Tue Mar 28 09:52:07 1995 James Clark - - * tmac/tmac.pspic: Immediately remove the temporary file. - -Sat Mar 25 10:43:11 1995 James Clark - - * tmac/tmac.pspic (PSPIC): Scale graphic uniformly even when - height is specified. - -Thu Jan 26 16:20:13 1995 James Clark - - * tbl/table.c (struct vertical rule, class table_entry): Use int - not short for start_row and end_row. - -Fri Jan 13 13:53:05 1995 James Clark - - * troff/input.cc (trapping_blank_line, blank_line_macro): New - functions. - (diverted_space_node::reread, process_input_stack): Call - trapping_blank_line() rather than blank_line(). - (init_input_requests): Bind "blm" to blank_line_macro(). - - * tmac/tmac.s (XA): Use .br and par@reset rather than XA. - -Tue Jan 10 11:40:35 1995 James Clark - - * troff/env.cc (environment::possibly_break_line): Require that - width total excluding width of final space node be greater than - the target text length. - -Tue Jan 3 09:13:37 1995 James Clark - - * troff/node.cc (kern_pair_node::vertical_extent): New function. - -Sun Dec 4 13:19:07 1994 James Clark - - * troff/node.cc (charinfo_node): New class. - (glyph_node, composite_node): Derive from charinfo_node. Change - member functions accordingly. - -Wed Nov 30 10:29:29 1994 James Clark - - * nroff/nroff.sh: Use -Tlatin1 not -TLatin1. - -Mon Aug 8 10:17:59 1994 James Clark (jjc@jclark.com) - - * tmac/tmac.tty-char: Add definitions for \(ab and \[arrowvertex]. - - * devps/generate/textmap (notsubset): Add. - - * tmac/tmac.a4: New file. - -Sun Jul 24 20:08:42 1994 James Clark (jjc@jclark.com) - - * pic/main.cc (had_parse_error): New variable. - (do_picture, do_whole_file): Set had_parse_error if yyparse() - returns non-zero. - (main): Return 1 if had_parse_error is true. - -Tue Jul 19 13:40:31 1994 James Clark (jjc@jclark.com) - - * grolj4/lj4.cc (main): Avoid use of strtoul. - -Mon Jul 18 15:03:02 1994 James Clark (jjc@jclark.com) - - * nroff/nroff.sh: Default device is -Tlatin1 if $LC_CTYPE is - iso_8859_1 or $LESSCHARSET is latin1. - -Sun Jul 10 13:38:35 1994 James Clark (jjc@jclark.com) - - * hpftodit: New directory. - * Makefile.in (CCPROGDIRS): Add hpftodit. - * devlj4/generate: New directory. - -Thu Jul 7 23:49:48 1994 James Clark (jjc@jclark.com) - - * configure.in: Don't use AC_VFORK. - * groff/pipeline.c (run_pipeline): Use fork() always. - -Wed Jul 6 11:13:17 1994 James Clark (jjc@jclark.com) - - * grops/ps.cc (main): Use %1 not %s in error message for -w. - - * Makefile.in (CCPROGDIRS): Add grolj4. - (DEVDIRS): Add devlj4. - * grolj4, devlj4: New directories. - * tmac/troffrc: Handle lj4. - * tmac/tmac.lj4: New file. - -Fri Jun 17 18:02:53 1994 James Clark (jjc@jclark.com) - - * tmac/tmac.e (@n): Set indent to 0 before calling |h. - -Wed Jun 1 07:33:47 1994 James Clark (jjc@jclark.com) - - * troff/input.cc (do_if_request): At end of second string, switch - environments before getting next token. - -Fri May 20 07:39:18 1994 James Clark (jjc@jclark.com) - - * devps/psstrip.sed: Split rule that strips whitespace on either - side of delimiters. - -Wed May 18 08:13:47 1994 James Clark (jjc@jclark.com) - - * troff/node.h (font_family::make_definition): Add return value to - declaration. * troff/symbol.h (symbol::operator==, - symbol::operator!=): Likewise. - -Tue May 17 20:46:06 1994 James Clark (jjc@jclark.com) - - * groff/groff.cc (main, help, synopsis): Handle -S. - (possible_command::insert_arg): New function. - - * tmac/tmac.safer: New file. - * tmac/msafer.man: New file. - * tmac/Makefile.sub (FILES): Add tmac.safer and msafer.man. - -Thu Mar 10 01:58:30 1994 Paul Eggert (eggert@twinsun.com) - - * pic/pic.h, pic/main.cc (safer_flag): New variable. - * pic/pic.y (placeless_element): Avoid unsafe operations if - `safer_flag' is set. - * pic/main.cc (main): Add -S option, which sets `safer_flag'. - -Tue May 10 13:02:31 1994 James Clark (jjc@jclark.com) - - * eqn/lex.cc (get_token): Put call to add_context() in block to - work around Sun C++ 4.0 bug. - - * include/stringclass.h (operator +): Use ?: instead of `if' to - work around Sun C++ 4.0 bug. - -Thu May 5 11:18:03 1994 James Clark (jjc@jclark.com) - - * tbl/main.cc (process_format): Accept - as a synonym for the _ - key letter. - - * libbib/index.cc (minus_one): Don't declare as const. - -Fri Apr 29 09:32:48 1994 James Clark (jjc@jclark.com) - - * troff/input.cc (get_char_for_escape_name): Push back a newline. - -Wed Apr 27 21:14:18 1994 James Clark (jjc@jclark.com) - - * troff/input.cc (write_macro_request): New function. - (init_input_requests): Bind write_macro_request to writem. - -Sun Apr 17 11:15:38 1994 James Clark (jjc@jclark.com) - - * tmac/tmac.s (@EN): Turn filling back on even if there was no - equation. - - * eqn/lex.cc (do_space): Supply missing argument to lex_error. - - * tmac/tmac.s (@TS): Renamed from TS. - (TS): Call LP then TS again. - (cov*ab-init): Alias @TS to TS. - - * tmac/tmac.s: Allow QP or RS to initialize. - - * tmac/tmac.s (par@load-init): New macro. Call at end of file. - Move initializations of PS and LL here. - (par@init): Don't initialize HY. Avoid changing environment 0. - (par*env-init): Don't all par@reset. - -Thu Apr 14 19:15:45 1994 James Clark (jjc@jclark.com) - - * include/posix.h: Include only if not using . - -Sun Apr 10 09:54:44 1994 James Clark (jjc@jclark.com) - - * Makefile.in (MDEFINES): Add LDFLAGS. - (LDFLAGS): Add definition line. - -Thu Apr 7 22:22:22 1994 James Clark (jjc@jclark.com) - - * troff/input.cc (get_optional_char): Split off error check into... - (check_missing_character): New function. - * troff/token.h: Declare it. - * troff/env.cc (margin_character): Don't call get_optional_char. - Only call tok.next() after making the node. - - * include/lib.h (getopt): Make 2nd argument char *const *. - -Fri Mar 11 07:28:03 1994 James Clark (jjc@jclark.com) - - * nroff/conftest.sh: Deleted. - -Fri Mar 4 10:51:36 1994 James Clark (jjc@jclark.com) - - * pic/make-dos-dist: Deleted. - -Wed Mar 2 20:59:16 1994 James Clark (jjc@jclark.com) - - * devps/psstrip.sed: Strip comments before stripping trailing - white space. - -Sat Feb 19 13:07:16 1994 James Clark (jjc@jclark.com) - - * Version 1.09 released. - -Wed Feb 16 16:53:49 1994 James Clark (jjc@jclark.com) - - * tmac/doc-ditroff (hK): Don't reset page number if \nC is > 0. - -Mon Feb 14 08:26:40 1994 James Clark (jjc@jclark.com) - - * libgroff/font.cc (font::load_desc): Fix typo in error message. - -Sun Feb 13 09:37:38 1994 James Clark (jjc@jclark.com) - - * libgroff/new.cc (operator new): Rewrite so as to avoid warning - about returning without a value. - - * troff/charinfo.h (charinfo::get_special_translation): Cast - TRANSLATE_NONE to int. - - * refer/token.cc (lookup_token, store_token): Remove bogus loop - test. Fix test so that it works with n unsigned. - - * pic/pic.y (defaults_table): Fully bracket initializer. - * pic/lex.cc (lookup_keyword): Likewise. - * eqn/lex.cc (token_table, def_table): Likewise. - * eqn/box.cc (param_table): Likewise. - * troff/input.cc (warning_table): Likewise. - * libgroff/font.cc (table): Likewise. - * grops/ps.cc (ps_printer::special): Likewise. - * grops/psrm.cc (resource_manager::process_file): Likewise. - * tfmtodit/tfmtodit.cc (lig_chars, lig_table): Likewise. - * refer/command.cc (command_table): Likewise. - * addftinfo/addftinfo.cc (param_table): Likewise. - - * troff/symbol.cc (symbol::symbol): Prevent compiler warnings - about temp's being unused. - (unused): New function. - - * groff/pipeline.cc: Declare c_fatal. - - * libbib/linear.cc (bmpattern::search): Cast patterrn[--j] to - uchar. - - * libbib/index.cc (index_search_item::load): Prevent compiler - warnings about fd_closer's being unused. - (unused): New function. - -Sat Feb 12 10:31:59 1994 James Clark (jjc@jclark.com) - - * troff/input.cc (copy_mode_error): Make `prefix' static. - Fix typo. - - * include/posix.h: Include is HAVE_CC_OSFCN_H is - defined. - * acgroff.m4, configure.in, Makefile: Rename HAVE_CC_UNISTD_H to - HAVE_CC_OSFCN_H and modify accordingly. - - * troff/input.cc (init_charset_table): radicalex overlaps - horizontally. - - * groff/acgroff.m4 (GROFF_ISC_SYSV3): New macro (from - udodo!hans@relay.NL.net). - * groff/configure.in: Call it. - - * groff/acgroff.m4 (GROFF_PCLOSE): New macro. - * groff/configure.in: Call it. - * include/lib.h: Conditionalize declaration of pclose. - - * troff/div.cc (last_page_number): New global variable. - (top_level_diversion::begin_page): Exit if we just printed the - last page. - * troff/div.h (last_page_number): Declare it. - * troff/input.cc (parse_output_page_list): Set last_page_number. - - * eqn/sqrt.cc: Rename \(rn to \[radicalex]. - * devps/S, devps/textmap, tmac/tmac.ps, tmac/tmac.dvi, - tmac/tmac.X: Likewise. - * tmac/tmac.ps, tmac/tmac.X, tmac.dvi: Add definitions of \(rn. - * tmac.dvi: Make \(ru and \(ul extend beyond their width by .04m. - -Fri Feb 11 11:45:40 1994 James Clark (jjc@jclark.com) - - * tmac/doc-ditroff (hK): Remove groff specific code which - prevented page-breaks between separate manual entries. If this is - the first page, don't set the page number to 1. - - * acgroff.m4 (GROFF_POSIX): New macro. - * configure.in: Use it. - - * troff/node.cc (class real_output_file, - real_output_file::real_output_file, - real_output_file::~real_output_file): Conditionalize use of - popen/pclose on POPEN_MISSING. - * troff/node.h: Conditionalize pipe_command on POPEN_MISSING. - * troff/input.cc (pipe_command): Give an error if POPEN_MISSING. - (pipe_source): Similarily. - - * acgroff.m4 (GROFF_PROG_CCC): Update message about libg++. - - * acgroff.m4 (GROFF_GETOPT, GROFF_PUTENV, GROFF_POPEN): Detect - presence of declarations by trying to compile example with - conflicting declarations. (gcc only gives a warning for missing - declarations.) - -Wed Feb 9 09:12:23 1994 James Clark (jjc@jclark.com) - - * tmac/tmac.pspic (PSPIC): Allow options to specify alignment - (from Ulrich Lauther). - -Tue Feb 8 03:56:40 1994 James Clark (jjc@jclark.com) - - * libbib/linear.cc (file_buffer::load): Use S_ISREG macro. - -Thu Feb 3 09:34:35 1994 James Clark (jjc@jclark.com) - - * indxbib/indxbib.cc (write_hash_table): Add code for case where - pointers and ints have different sizes. - -Sun Jan 9 16:17:51 1994 James Clark (jjc@jclark.com) - - * tmac/tmac.s (par*env-init): Call par@reset. - -Fri Jan 7 10:24:27 1994 James Clark (jjc@jclark.com) - - * tmac/tmac.s (@IP): Switch to a new environment when diverting - tag. - (par*push-tag-env, par*pop-tag-env): New macros. - -Wed Jan 5 21:18:34 1994 James Clark (jjc@jclark.com) - - * grops/ps.cc (ps_printer::ps_printer): Use MAX_LINE_LENGTH for - initializing `out'. Reduce MAX_LINE_LENGTH from 79 to 72. - - * grops/ps.cc (ps_printer::~ps_printer): Output %%CreationDate - comment. Include . - -Wed Dec 15 14:14:00 1993 James Clark (jjc@jclark.com) - - * grops/ps.cc (is_small_h, is_small_v): Deleted. - (ps_printer::flush_sbuf): Use absolute motion only at beginning of - lines. - -Tue Dec 14 10:06:34 1993 James Clark (jjc@jclark.com) - - * troff/input.cc (read_request): Only print a prompt if reading - from the terminal. Also clearerr on EOF if reading from the - terminal. Declare isatty. - -Mon Nov 29 08:38:15 1993 James Clark (jjc@jclark.com) - - * refer/label.y: Rename map_t to map_func and extractor_t to - extractor_func. - -Sat Oct 30 06:38:12 1993 James Clark (jjc@jclark.com) - - * include/assert.h: Don't use volatile. - * libgroff/assert.cc: Likewise. - -Fri Oct 29 15:00:23 1993 James Clark (jjc@jclark.com) - - * troff/input.cc (abort_request): Look at character in tok before - calling get_copy(). - -Thu Oct 28 14:09:48 1993 James Clark (jjc@jclark.com) - - * troff/troff.h (NO_RETURN): Deleted. - * troff/div.cc (cleanup_and_exit): Don't declare aas NO_RETURN. - * troff/input.cc (exit_troff): Likewise - - * Makefile.in: Remove `Making ...' messages since GNU make now - gives these. - - * configure.in: Use AC_HAVE_HEADERS(unistd.h) instead of AC_UNISTD_H. - -Wed Oct 27 11:12:51 1993 James Clark (jjc@jclark.com) - - * tmac/tmac.s (@init): Initialize PO to \n(.o here, rather than - to constant 1 inch. - -Sat Oct 23 10:03:52 1993 James Clark (jjc@jclark.com) - - * tmac/tmac.e (hl): Use \n[.in] rather than \n(.i. - -Thu Oct 14 12:09:45 1993 James Clark (jjc@jclark.com) - - * eqn/delim.cc (delim_box::compute_metrics): Don't increase - MARK_REG if there was no left delimiter. - -Sat Oct 2 19:54:47 1993 James Clark (jjc@jclark.com) - - * pic/troff.cc (troff_output::text): Set line thickness to - relative before outputting text. - - * tmac/tmac.e (@k): Don't zero ?T. - ((z): Likewise. - -Sat Sep 25 11:08:43 1993 James Clark (jjc@jclark.com) - - * tmac/tmac.e ($p): Handle possibility that $3 is empty. - -Wed Aug 18 08:51:41 1993 James Clark (jjc@jclark.com) - - * troff/input.cc (decode_args): Warn about unquoted tabs (from - Paul Eggert). - -Tue Aug 10 08:38:32 1993 James Clark (jjc@jclark.com) - - * troff/input.cc (ignoring): New variable. - (ignore): Set ignoring during call to do_define_macro. - (do_define_macro): Clear ignoring before interpolating terminating - macro. - (copy_mode_error): New function. - (get_char_for_escape_name, read_long_escape_name, - interpolate_arg): Use copy_mode_error. - (warning_table): Add WARN_IG. - * troff/troff.h (WARN_IG): Declare. - (WARN_TOTAL): Change accordingly. - - * groff/pipeline.c (strsignal): Rename to xstrsignal. - * groff/groff.cc (strsignal): Delete declaration. - -Fri Jul 16 01:43:12 1993 James Clark (jjc@jclark.com) - - * troff/div.cc (page_offset): Use 'm' as default scaling. - -Sat Jul 3 09:11:38 1993 James Clark (jjc@jclark.com) - - * nroff/nroff.sh: Ignore -u. - -Wed Jun 9 12:17:27 1993 James Clark (jjc@jclark.com) - - * Makefile.in (MDEFINES): Pass down MAKEOVERRIDES. - -Fri Jun 4 17:35:47 1993 James Clark (jjc@jclark.com) - - * tmac/tmac.s (par*box-draw): Set adjustment mode to l while - drawing box. - (B2): With -Tascii, leave additional vertical space before - and after. Ensure that the left and right indent is restored to - what it was even if the point size changes. Don't call - par@finish. Change the indent, line length and title length - directly. With -Tascii, make the width of the box 1n less. - (B1): Remember 1n at the current point size. Don't call - par@reset. Change the indent, line length and title length - directly. Ensure that the temporary indent is preserved. - (par*box-mark-top): Turn off no spacing mode. - -Thu Jun 3 17:47:14 1993 James Clark (jjc@jclark.com) - - * Makefile.in (dist): Use .gz suffix. - -Thu May 27 20:04:59 1993 James Clark (jjc@jclark.com) - - * troff/input.cc (main): Add return 0. - * pic/main.cc (main): Use return instead of exit. - * tbl/main.cc (main): Likewise. - * eqn/main.cc (main): Likewise. - * grops/ps.cc (main): Likewise. - * grotty/tty.cc (main): Likewise. - * groff/groff.cc (main): Likewise. - * grodvi/dvi.cc (main): Likewise. - * refer/refer.cc (main): Likewise. - * indxbib/indxbib.cc (main): Likewise. - * lkbib/lkbib.cc (main): Likewise. - * soelim/soelim.cc (main): Likewise. - * addftinfo/addftinfo.cc (main): Likewise. - * acgroff.m4 (GROFF_PROG_CCC, GROFF_CC_COMPILE_CHECK, - GROFF_COOKIE_BUG, GROFF_CC_ANSI_BUG): Likewise. - - * troff/token.h (process_input_stack): Don't declare as static. - * troff/input.cc: Likewise. - - * troff/node.c (invalidate_fontno): Make it a static member of - class font_family. Change callers. - * troff/node.c: Change declaration. - - * tbl/main.cc (struct input_entry_format): Add explicit public - specifier. - * tbl/table.cc (struct text_stuff, struct single_hline_stuff, - struct double_hline_stuff): Likewise. - * tbl/table.h (struct entry_format): Likewise. - * pic/object.h (struct saved_state): Likewise. - - * include/stringclass.h: Add forward declarations of friend - functions that are later declared as inline. Don't include inline - specifier in friend declaration. - - * libgroff/lib.h: Declare popen and pclose. - * acgroff.m4 (GROFF_POPEN): New macro. - * configure.in: Call it. - - * include/lib.h (PI): New constant. Undef first if necessary. - * tfmtodit/tfmtodit.cc (main): Use PI rather than M_PI. - * grops/ps.cc (degrees, radians): Likewise. - * libgroff/font.cc (font::get_skew): Likewise. - - * grops/ps.cc (is_ascii): New function. - (ps_output::put_string): Use is_ascii. Use csprint rather than - isprint. - (ps_printer::define_encoding): Use csspace. - * libgroff/strtol.c (ISASCII): New macro. - (strtol): Cast arguments to is*() and tolower() to unsigned char. - Use ISASCII rather than isascii. - * libgroff/cmap.cc: Use isascii() only if defines it. - * libgroff/cset.cc: Likewise. - * libdriver/input.cc: Include cset.h. - (do_file, get_integer, possibly_get_integer): Use csdigit() rather - than isdigit(). - - * refer/refer.cc (main): Use %ld rather than %d for longs. - - * libbib/index.cc (index_search_item_iterator::get_tag): Use - S_ISREG macro. - - * addftinfo/addftinfo.cc (param_t): Add explicit `int'. - -Mon May 24 08:51:37 1993 James Clark (jjc@jclark.com) - - * troff/input.cc (hyphenation_code): Skip white space between - char/code pairs. - -Sun May 16 08:15:52 1993 James Clark (jjc at jclark.com) - - * tbl/table.h (table::entry_list_tailp): New member. - (table::table): Initialize it. - (table::add_entry): Use entry_list_tailp to avoid O(n^2) - behaviour. - -Sat May 15 17:26:00 1993 James Clark (jjc at jclark.com) - - * grotty/tty.cc (tty_printer::add_char): Don't discard characters - with negative horizontal positions. Remove casts of glyph::hpos to - int. - (USHRT_MAX): Delete definition. - (SHRT_MAX, SHRT_MIN): New definitions. - (glyph::hpos): Change type to short. - (tty_printer::end_page): Output multiple backspaces if necessary. - Remove casts of glyph::hpos to int. - -Fri May 7 12:14:37 1993 James Clark (jjc at jclark.com) - - * tmac/tmac.s (@RT): New definition. - -Thu May 6 21:36:54 1993 James Clark (jjc at jclark.com) - - * refer/refer.cc (do_file): Make sure current_filename is set when - filename is "-". - - * pic/common.cc (common_output::dot_line): Handle zero length - lines. - -Sun May 2 19:54:16 1993 James Clark (jjc at jclark.com) - - * tmac/tmac.s (par@reset): Get value for .hy for \n[HY]. - (par@init): Initialize \n[HY]. - -Mon Apr 26 11:43:16 1993 James Clark (jjc at jclark.com) - - * troff/dictionary.cc (dictionary::remove): Continue when - r < j < i. - -Sun Apr 25 11:03:00 1993 James Clark (jjc at jclark.com) - - * Makefile.com (.y.cc): Avoid ending up with two versions of - $(YTABH). - -Thu Apr 22 21:03:45 1993 James Clark (jjc at jclark.com) - - * tmac/tmac.dvi (\(,c): Define only if it does not exist. - (\(,C): Likewise. Also fix typo. - -Wed Apr 21 08:47:32 1993 James Clark (jjc at jclark.com) - - * lib.h: Delete extraneous semi-colon. - - * Add pso request: `so' from a pipe. - * troff/input.c (file_iterator::file_iterator): Add 3rd argument. - (file_iterator::close): New function. - (file_iterator::~file_iterator, file_iterator::next_file): Use - file_iterator::close. - (file_iterator::backtrace): Say `process' rather than `file' when - the stream is popened. - (pipe_source): New function. - (init_input_requests): Bind ".pso" to pipe_source. - -Tue Apr 20 00:02:26 1993 James Clark (jjc at jclark.com) - - * afmtodit/afmtodit.pl: Avoid single quotes in comments. - - * pfbtops/pfbtops.c: Output 64 characters per line. Output hex - digits in lower case. - -Mon Apr 19 09:55:57 1993 James Clark (jjc at jclark) - - * Version 1.08 released. - - * Makefile.in (dist): Insert || true after ln -s commands that - might fail. - - * mm: Update to mm 1.16. - - * acgroff.m4 (GROFF_CSH_HACK): New macro. - * configure.in: Call GROFF_CSH_HACK. Substitute for - SH_SCRIPT_SED_CMD. - * Makefile.in (SH_SCRIPT_SED_CMD): New variable. Include in - MDEFINES. - * nroff/Makefile.sub (nroff): New target. - (install_data): Install nroff. - * eqn/Makefile.sub (neqn): Sed with SH_SCRIPT_SED_CMD. - * grog/Makefile.sub (grog): Sed grog.sh with SH_SCRIPT_SED_CMD. - -Sat Apr 17 08:24:28 1993 James Clark (jjc at jclark) - - * eqn/Makefile.sub (neqn): Add chmod +x. - - * grog/Makefile.sub (grog): Remove spurious semi-colon. - -Fri Apr 16 22:41:57 1993 James Clark (jjc at jclark) - - * troff/input.cc (string_iterator::string_iterator()): Initialize - lineno and count. - -Tue Apr 13 10:22:28 1993 James Clark (jjc at jclark) - - * troff/div.cc (macro_diversion::space, - top_level_diversion::space): Don't set high_water_mark. - (macro_diversion::output, top_level_diversion::output): Don't - include post line space in high water mark. - -Wed Apr 7 12:48:18 1993 James Clark (jjc at jclark) - - * eqn/eqn.y: Don't define YYDEBUG. - * pic/pic.y: Likewise. - -Mon Apr 5 10:15:15 1993 James Clark (jjc at jclark) - - * tmac/tmac.e ([3): Add space after comma following editors. - Change double spaces to single spaces. - ([4): Change double spaces to single spaces. - - * grops/ps.h (USE_PS_ADOBE_2_0): New flag for broken_flags. - * grops/ps.cc (ps_printer::~ps_printer): If the USE_PS_ADOBE_2_0 - bit is set in broken_flags, use 2.0 rather than 3.0 as the version - after %!PS-Adobe- (for Newsprint). - - * troff/div.cc (top_level_diversion::begin_page): When - before_first_page is 1, set page_number to 1. - -Sun Apr 4 14:28:53 1993 James Clark (jjc at jclark) - - * eqn/box.cc (box::top_level): Protect equation with \&. - -Sat Apr 3 23:27:25 1993 James Clark (jjc at jclark) - - * groff/groff.cc (possible_command::set_name): Delete old name. - - * groff/groff.cc (possible_command::~possible_command): Use - a_delete. - - * troff/node.cc (troff_output_file::begun_page): New member. - (troff_output_file::troff_output_file): Initialize it. - (troff_output_file::really_begin_page): Only output V command if a - page has been begun. - - * pic/pic.y (placeless_element): Delete argument to PRINT after - use. - -Fri Apr 2 11:31:02 1993 James Clark (jjc at jclark) - - * Make wrapman work. - * troff/div.h (class top_level_diversion): Replace - first_page_begun by before_first_page (with opposite sense). - * Change first_page_begun to before_first_page inverting sense. - * troff/div.cc (class nl_reg): New class. - (init_div_requests): Use class nl_reg for \n(nl. - (top_level_diversion::begin_page): Don't call - output_file::begin_page if before_first_page is 2; - reset before_first_page afterwards. If have_next_page_number is - false, then always increment page_number. - * tmac/tmac.an: Set traps within TH rather than at the top-level. - Restore compatibility mode after loading, and then disable - compatibility mode in TH. - -Thu Apr 1 11:09:34 1993 James Clark (jjc at jclark) - - * grotty/tty.cc (tty_printer::end_page): Don't discard characters - past last line. - * troff/node.h (output_file::trailer): Declare. - * troff/div.cc (cleanup_and_exit): Call output_file::trailer(). - * troff/node.cc (output_file::trailer): New function. - (troff_output_file::~troff_output_file): Move most code into... - (troff_output_file::trailer): New function. - (class troff_output_file): Delete page_length member. Declare - trailer(). - (troff_output_file::really_begin_page): Use current page length - for final V command. - - * tbl/main.cc (struct options): New decimal_point_char member. - (options::options): Initialize this. - (process_options): Implement decimalpoint option. - (process_data): Pass decimal_point_char option to table::table. - * tbl/table.h (class table): New decimal_point_char member. - (table::table): Add additional argument. - * tbl/table.cc (find_dot): Rename to find_decimal_point. Add - second argument specifying decimal point character. Use this - instead of '.'. - (table::table): Initialize decimal_point_char. - (table::add_entry): Change call to find_dot. - - * troff/input.cc (get_copy, token::next): Implement \V. - (interpolate_environment_variable): New function. - -Tue Mar 30 14:41:39 1993 James Clark (jjc at jclark) - - * pic/lex.cc (lookup_keyword): Rename MIN to K_MIN, MAX to K_MAX. - * pic/pic.y: Likewise. - - * grotty/tty.cc (tty_printer::add_char, tty_printer::end_page): - Add casts to int. - * refer/ref.cc (reference::insert_field, reference::delete_field): - Likewise. - * troff/number.cc (parse_term): Likewise. - - * acgroff.m4 (GROFF_PROG_YACC): New macro. - * configure.in: Use GROFF_PROG_YACC. - - * acgroff.m4 (GROFF_PROG_CCC): Don't add -O automatically for gcc - and g++. - * Makefile.in (OPTIMIZE): New define. - (DEBUG): Empty by default. - (CCFLAGS, CFLAGS): Include $(OPTIMIZE). - - * acgroff.m4 (GROFF_SYS_SIGLIST): Don't quote program. - (GROFF_ARRAY_DELETE): Likewise. - (GROFF_CC_COMPILE_CHECK): Quote use of $2 and $3. - - * troff/env.cc (trie::~trie): Make virtual to shut up g++. - - * devps/psstrip.sed: Use different delimiter on last line (so that - it works with BSD 4.4 sed.) - -Mon Mar 29 17:07:14 1993 James Clark (jjc at jclark) - - * devps/psstrip.sed: Delete comments. - - * acgroff.m4 (AC_GETOPT): Don't test whether declares - optind, opterr, optarg. - * lib.h: When UNISTD_H_DECLARES_GETOPT is defined, declare optind, - opterr, optarg. - -Sun Mar 28 17:44:25 1993 James Clark (jjc at jclark) - - * Makefile.in (check): Dummy target. - -Wed Mar 3 04:53:38 1993 James Clark (jjc at jclark) - - * Version 1.07 released. - - * Integrate mm 1.11. - - * tbl/table.cc (alphabetic_block_entry::print): start_row was used - where start_col was meant. - -Thu Feb 25 07:55:36 1993 James Clark (jjc at jclark) - - * grog/grog.sh, grog/grog.pl: Recognize PH and SA as -mm macros. - -Wed Feb 24 10:15:34 1993 James Clark (jjc at jclark) - - * troff/input.cc (token::next): Make \z\o'...' and similar things - work. - - * env.h (MARGIN_CHARACTER_ON, MARGIN_CHARACTER_NEXT): New - constants. - (environment): Add margin_character_flags member. - * env.cc (environment::environment(symbol), - environment::environment(const environment *): Initialize - margin_character_flags. - (margin_character): Rewrite. - (environment::output_line): Add a margin character if - margin_character_flags is non-zero. Turn off the - MARGIN_CHARACTER_NEXT bit. If that makes margin_character_flags - zero, use margin_character_node without copying and then set - margin_character_node to 0. - - * devps/DESC.in: Change minimum size to 1000. - -Tue Feb 23 14:57:49 1993 James Clark (jjc at jclark) - - * troff/symbol.h (symbol::hash): Change return type to unsigned - long. - * troff/dictionary.cc (dictionary::lookup, dictionary::remove): - Add casts to int. - - * test-groff: Use -r rather than -x. - - * grops/psfig.diff: Include in distribution again. - -Mon Feb 22 09:10:44 1993 James Clark (jjc at jclark) - - * Makefile.in (dist): Use gzip. - -Sun Feb 21 11:12:53 1993 James Clark (jjc at jclark) - - * acgroff.m4 (GROFF_GETOPT): Check for declaration of getopt() in - unistd.h as well as in stdlib.h. - * include/lib.h: Include is STDLIB_H_DECLARES_GETOPT is - defined; otherwise include and if - UNISTD_H_DECLARES_GETOPT is defined. - - * configure.in: use builtin(include, ... rather than include(... - * configure: Regenerate with autoconf 1.3. - - * libdriver/print.cc (printer::adjust_arc_center): Use new - algorithm suggested by Andy Fyfe. - - * libdriver/printer.cc (printer::adjust_arc_center): New function. - * include/printer.h: Declare this. - * grops/ps.cc (ps_printer::draw): Use it. - * grodvi/dvi.cc (dvi_printer::draw): Use it. - -Fri Feb 19 23:13:51 1993 James Clark (jjc at jclark) - - * Makefile.comm (.man.n): Replace macrodir by tmacdir. - -Thu Feb 11 16:46:59 1993 James Clark (jjc at jclark) - - * eqn/main.cc (main): Handle "eqn -". - -Mon Jan 4 20:29:56 1993 James Clark (jjc at jclark) - - * tmac/tmac.e (++): Install fix from comp.bugs.4sd. - - * mm: Integrate version 1.08. - - * pic/troff.cc (troff_output::finish_picture): Set - EQN_NO_EXTRA_SPACE reg to 0 rather than removing it. - * eqn/box.cc (box::extra_space): Set EQN_NO_EXTRA_SPACE_REG to 0 - if it's not defined. Check whether the register is non-zero rather - than whether it's not defined. - * tmac.e ({, <): Make argument to \x zero if \n(0x is non-zero. - - * indxbib/indxbib.cc: Move all signal handling into... - * indxbib/signal.c: New file. - * configure.in: Call AC_RETSIGTYPE. - - * acgroff.m4 (GROFF_STRUCT_EXCEPTION): New macro. - * configure.in: Call GROFF_STRUCT_EXCEPTION. - * libgroff/matherr.c: Protect with ifdef HAVE_STRUCT_EXCEPTION. - - * troff/input.cc (token::token, token::operator=): Work round SGI - C++ bug. - * pic/object.cc (position::position): Likewise. - -Mon Dec 28 21:50:21 1992 James Clark (jjc at jclark) - - * pic/pic.h: Move declaration of hypot(). - -Wed Dec 16 12:28:29 1992 James Clark (jjc at jclark) - - * pic/pic.h: Declare hypot(). - - * pic/pic.h: Define M_PI if necessary. - -Thu Dec 10 12:03:29 1992 James Clark (jjc at jclark) - - * tmac/tmac.e (re): Add alternative version that doesn't use groff - `.ta T' feature. - - * devps/prologue.ps (RE): Handle the possibility that the old font - doesn't have a FontName entry. - -Wed Dec 2 10:25:29 1992 James Clark (jjc at jclark) - - * tmac/tmac.e (fam): Redefine to set family in environment 2. - (@C): Use @fam not fam. - -Thu Nov 26 16:01:25 1992 James Clark (jjc at jclark) - - * lookbib/lookbib.cc (main): Change type of start to const char *. - * lkbib/lkbib.cc (main): Likewise. - - * eqn/lex.cc (definition::definition): Don't use member - initializer syntax for members of anonymous unions. - - * troff/input.cc (input_stack::backtrace): Change type of to const - char *. - -Wed Nov 25 13:43:09 1992 James Clark (jjc at jclark) - - * include/stringclass.h (class string): Declare inline friend - functions as inline in class declaration. - * troff/hvunits.h (class hunits, class vunits): Likewise. - * include/refid.h (class reference_id): Likewise - * troff/troff.h (points_to_units(units), scale(units, double)): - Delete declarations. - * libdriver/input.cc (get_char): Delete declaration. - * include/lib.h: Change 2nd argument of getopt from const char ** - to char **. - * troff/symbol.cc (symbol::symbol): Cast `new char *[n]' to `const - char **' before assigning to a `const char **'. - * tbl/table.cc: Delete extra declarations of prints(). - -Tue Nov 24 14:33:13 1992 James Clark (jjc at jclark) - - * libgroff/font.cc (font::load_desc): Cast `new char *[n]' to `const - char **' before assigning to a `const char **'. - - * libgroff/errarg.cc (errarg::errarg): Don't use member - initializer syntax for members of anonymous unions. - -Sat Nov 21 05:02:23 1992 James Clark (jjc at jclark) - - * mm: Integrate version 1.07. - -Tue Nov 17 16:44:27 1992 James Clark (jjc at jclark) - - * troff/input.c (translate2): Rename to - (translate_no_transparent). - (init_input_requests): Rename tr2 to trnt. - -Mon Nov 16 09:49:32 1992 James Clark (jjc at jclark) - - * troff/charinfo.h (class charinfo): Add transparent_translate field. - (charinfo::set_translation, charinfo::set_special_translation): - Add second argument that specifies value for - transparent_translate. - (charinfo::get_translation, charinfo::get_special_translation): - Add optional second argument that specifies whether translation is - being used for transparent throughput. - * troff/input.cc (charinfo::set_translation, - charinfo::set_special_translation): Handle second argument. - (charinfo::charinfo): Initialize transparent_translate. - (translate): Split main part off into - (do_translate): New function. Pass argument saying whether - translation applies to transparent throughput. - (translate2): New request. - (init_input_requests): Bind translate2 to `tr2'. - -Wed Nov 11 11:43:20 1992 James Clark (jjc at jclark) - - * tbl/table.h (class table): Add `nokeep' flag. - * tbl/main.cc (process_options): Handle `nokeep' option. - * tbl/table.cc (table::init_output, table::do_row, table::do_top, - table::do_bottom): Don't output keep/release macro definitions or - calls when `nokeep' option has been specified. - -Sat Nov 7 01:28:33 1992 James Clark (jjc at jclark) - - * tmac/tmac.Xps (Xps-char): Use " as delimiter for \Z. - -Wed Nov 4 16:29:04 1992 James Clark (jjc at jclark) - - * tbl/table.cc (table_entry::divert, block_entry::do_divert, - block_entry::divert, alphabetic_block_entry::divert): Add extra - argument giving column separation. - (table::compute_widths): Pass column separation to - table_entry::divert(). - (block_entry::do_divert): If an entry spans multiple columns and a - minimumum width has been specified for each column, then set the - line length to the sum of the widths (plus possibly the column - separations). - - * troff/input.cc (set_escape_char): Don't set the escape_char - until after calling has_arg(). - -Tue Nov 3 11:23:27 1992 James Clark (jjc at jclark) - - * tbl/table.cc (table::do_top): Add missing \s0 for double box - case. - - * tbl/table.cc (table::print_double_hline): Avoid extra new line - in case where r > nrows - 1. - - * tbl/table.cc (BODY_HEIGHT): Deleted. - (LINE_SEP): New definition. - (table::print_single_hline, table::print_double_hline, - table::compute_vrule_top_adjust, table::compute_vrule_bot_adjust, - table::do_row, table::do_top): Use LINE_SEP space before a line - instead of \n[.v]-BODY_HEIGHT-BODY_DEPTH. - - * tbl/table.cc (text_entry::print_contents): New function. - (text_string_name, right_text_string_name): Deleted. - (TEXT_STRING, RIGHT_TEXT_STRING): Deleted. - (simple_text_entry::do_width, numeric_text_entry::do_width, - alphabetic_text_entry::do_width): Don't store the contents of the - entry in a string. - (left_text_entry::simple_print, right_text_entry::simple_print, - center_text_entry::simple_print, - alphabetic_text_entry::simple_print, - numeric_text_entry::simple_print): Print the entry directly - instead of using the stored string. - -Fri Oct 30 10:39:32 1992 James Clark (jjc at jclark) - - * devps/Makefile: Strip PostScript files. - * devps/prologue: Rename to... - * devps/prologue.ps. - * devps/psstrip.sed: New file. - * devps/download: Use .pfa rather than .ps for installed versions - of fonts. - -Thu Oct 29 09:14:43 1992 James Clark (jjc at jclark) - - * troff/env.cc (input_trap): Give a warning if the argument is out - of range. - - * troff/env.cc (adjust): Treat negative argument as missing. Round - argument > 5 down to 5. - - * troff/env.cc (center, right_justify): Make negative argument zero. - - * troff/div.cc (page_offset, vertical_position_traps): Treat - invalid argument as missing. - * troff/env.cc (line_spacing, line_length, title_length, indent, - underline, hyphen_line_max_request, control_char, - no_break_control_char, widow_control_request, adjust, input_trap, - point_size): Likewise. - * troff/node.cc (ligature, kern_request, bold_font, track_kern, - constant_space): Likewise. - * troff/input.cc (compatible, shift, warn_request, - set_escape_char): Likewise. - - * tbl/main.cc (format::format): Avoid doing `new int[0]'. - * tbl/table.cc (table::table): Likewise. - - * Makefile.dev (install_dev): depends on $(DEVFILES). - -Wed Oct 28 08:30:57 1992 James Clark (jjc at jclark) - - * devX75, devX75-12, devX100, devX100-12: New directories. - * Makefile.in: Add these to DEVDIRS. - - * troff/Makefile.sub, eqn/Makefile.sub, indxbib/Makefile.sub, - afmtodit/Makefile.sub, tmac/Makefile.sub, nroff/Makefile.sub, - grog/Makefile.sub, mm/Makefile.sub (uninstall_sub): New target. - * Makefile.in (uninstall, uninstall_sub, uninstall_dirs): New - targets. - * Makefile.ccpg, Makefile.cpg, Makefile.dev, Makefile.man - (uninstall): New target. - * Makefile.comm (uninstall, uninstall_sub, uninstall_man, - uninstall_prog, uninstall_dev): New targets. - - * troff/div.cc (return_request): Treat an invalid argument as - missing. - -Mon Oct 26 11:33:47 1992 James Clark (jjc at jclark) - - * tmac/tmac.e ((f): Set up the environment even when there's a - current diversion. Transperently throughput a call to @N. - (@N): New macro. - -Thu Oct 22 05:05:59 1992 James Clark (jjc at jclark) - - * tbl/table.cc (table::compute_vrule_top_adjust): Round adjustment - up to vertical resolution. - - * tbl/table.cc (table::do_row): Change row number after printing - stuff list. - - * pic/lex.cc (get_token_after_dot): Make .left and .right work. - -Wed Oct 21 14:46:45 1992 James Clark (jjc at jclark) - - * Rename CHANGES to NEWS. - -Tue Oct 20 23:25:21 1992 James Clark (jjc at jclark) - - * libgroff/new.cc (operator new): Avoid calling malloc(0). - -Mon Oct 19 09:10:13 1992 James Clark (jjc at jclark) - - * man.ultrix: Removed. - -Sun Oct 18 06:35:15 1992 James Clark (jjc at jclark) - - * Makefile.comm (extraclean): Delete files whose names begin with - `='. - - * pic/troff.cc (troff_output::text): Fix typo in implementation of - aligned text. - -Sat Oct 10 09:32:29 1992 James Clark (jjc at jclark) - - * troff/env.cc (hyphenate_request, vertical_spacing, no_number): - * troff/div.cc (page_length, need_space, space_request): Treat - invalid optional argument as missing. - * troff/env.cc (number_lines): If the first argument is present - but not a number, turn on line numbering, don't change the next - line number and parse the remaining arguments. - - * tmac/tmac.e (@q): Do the `ne' before changing to environment 2. - -Thu Oct 8 10:24:40 1992 James Clark (jjc at jclark) - - * eqn/box.h: Change declaration accordingly. - * eqn/box.cc (set_gsize): Change return type to int. Return 0 if - the specified size was bad but don't give an error. Check for - overflow. - * eqn/main.cc (main): Change caller. Leave validation to set_gsize. - * eqn/lex (do_size): Likewise. - -Wed Oct 7 09:48:59 1992 James Clark (jjc at jclark) - - * acgroff.m4 (GROFF_PROG_CCC): Use fopen when checking for C++ - compatible headers. - -Sun Oct 4 18:24:02 1992 James Clark (jjc at jclark) - - * tbl/table.cc (table::init_output): Improve error message when - table won't fit on one page. - -Fri Oct 2 10:41:40 1992 James Clark (jjc at jclark) - - * pic/troff.cc (troff_output::start_picture): Generate line - containing a horizontal motion equal to the width of the picture. - - * groff/groff.cc (main): Allow PROG_PREFIX to be set at runtime - using GROFF_COMMAND_PREFIX environment variable. - -Fri Sep 25 11:40:40 1992 James Clark (jjc at jclark) - - * mdate.sh: Use $NF rather than $(NF). - -Tue Sep 22 09:47:24 1992 James Clark (jjc at jclark) - - * pic/main.cc (main): Use %1 not %c in argument to warning. - - * eqn/main.cc (main): Output code to check that geqn was given the - correct -T option. - -Mon Sep 21 10:59:16 1992 James Clark (jjc at jclark) - - * Makefile.in (dist): Instead of doing `make -f ../Makefile', do - `ln -s ../Makefile .; make; rm -f Makefile'. - - * troff/hyphen: Rename to... - * troff/hyphen.us: - * troff/input.cc (main): Delete -H option. Don't call - read_hyphen_file(). - * troff/env.cc: Include searchpath.h and macropath.h. - (exception_dictionary): Deleted. - (ht): Deleted. - (read_hyphen_file): Deleted. - (hyphenation_language): New struct. - (class trie, class hyphen_trie): Move declarations up. - (trie_node::~trie_node): Deleted. - (trie::delete_trie_node): New function. - (trie::do_delete): New pure virtual function. - (hyphen_trie::do_delete): New function. - (trie::~trie): New function. - (hyphen_trie::~hyphen_trie): New function. - (trie::clear): No need to chcek that tp is not 0. - (current_language, language_dictionary): New variables. - (hyphen_word): Give an error if no current language. Use - exceptions dictionary in current language. - (hyphen_trie::read_patterns_file): Find file using macro_path. - Allow comments (starting with %) in patterns file. Don't make it - a fatal error if the file can't be found. - (hyphenate): Return if no current language. Get the exceptions - dictionary and the hyphenation patterns from the current language. - (set_hyphenation_language): New variable. - (hyphenation_patterns_file): New function. - (hyphenation_language_reg): New class. - (hyphenation_language_reg::get_string): New function. - (init_hyphen_requests): Bind "hla" to set_hyphenation_language and - "hpf" to hyphenation_patterns_file. Initialize `.hla' number - register. - * groff/groff.cc (main, help, synopsis): Delete -H option. - * include/Makefile.sub: Don't define HYPHENFILE. - * Makefile.in: Delete hyphenfile variable and remove from MDEFINES. - * Makefile.comm (.man.n): Don't substitute for HYPHENFILE. - * tmac/troffrc: Set hyphenation language to `us'. Load `hyphen.us' - hyphenation patterns. - -Sun Sep 20 09:33:02 1992 James Clark (jjc at jclark) - - * eqn/neqn.sh: New file. - * eqn/Makefile.sub: Handle neqn.sh. - - * eqn/eqn.h: Declare `nroff' variable. - * eqn/box.cc (param_table): Add `nroff' param. - (nroff): Define it. - * eqn/lex.cc (yylex): Handle TDEFINE and NDEFINE using `nroff' - variable. - * tmac/eqnrc: Set `nroff' to 1 for -Tascii or -Tlatin1. - - * troff/troff.h (WARN_FONT): New warning. - (WARN_TOTAL): Change accordingly. - * troff/input.cc (DEFAULT_WARNING_MASK): Include WARN_FONT. - (warning_table): Add WARN_FONT. - * troff/node.cc (mount_font_no_translate): Pass argument to - font::load_font. If this is non-zero, give a warning. - Don't give an error message when accessing a font that has already - been found to be invalid. - * include/font.h (font::load, font::load_font): Add additional - optional argument which suppresses error message if the font is - not found. - * libgroff/font.cc (font::load_font): Handle additional argument. - (font::load): Add additional argument. If this is non-null, set it - to 1 and don't give error message. - - * include/printer.h (printer::end_page): Add argument giving - length of page. - * libdriver/input.cc (do_file): Pass this. - * grops/ps.cc (ps_printer::end_page): Add argument. - * grodvi/dvi.cc (dvi_printer::end_page, - draw_dvi_printer::end_page): Add argument. - * grotty/tty.cc (class tty_printer): Remove lines_per_page and - columns_per_page members. New member nlines. - (DEFAULT_LINES_PER_PAGE): Deleted. - (tty_printer::tty_printer): Don't compute lines_per_page from - font::paperlength. Don't compute columns_per_page from - font::paperwidth. - (tty_printer::add_char): Don't check horizontal position against - columns_per_page. Grow glyphs vector if neccessary. - (tty_printer::end_page): Add argument giving page_length in units. - Discard lines past end of page. - -Wed Sep 16 06:29:52 1992 James Clark (jjc at jclark) - - * tmac/tmac.tty-char: Fix definition of \(/l. - - * tmac/tmac.X: Define \(en. - -Tue Sep 15 10:37:13 1992 James Clark (jjc at jclark) - - * acgroff.m4 (GROFF_PRINT): If a system has lpr and lp but not - lpq, then use lp rather than lpr. - - * tmac/tmac.s (par@reset): Don't call `ad'. - (par*env-init): Call `ad'. - -Sun Sep 13 18:48:20 1992 James Clark (jjc at jclark) - - * mdate.sh: Use $(NF) instead of $6 to extract year from output of - date. - - * troff/symbol.cc: #undef BLOCK_SIZE if it's defined. - * indxbib/indxbib.cc: Likewise. - -Sun Sep 6 09:44:46 1992 James Clark (jjc at jclark) - - * libgroff/putenv.c: New file. - * libgroff/Makefile.sub: Add putenv.c to CSRCS. - * Makefile.in: Say that putenv.o can be one of LIBOBJS. - * configure.in: Test for putenv with AC_REPLACE_FUNCS. Test for - stdlib.h with AC_HAVE_HEADERS. - -Sat Sep 5 18:11:52 1992 James Clark (jjc at jclark) - - * indxbib/dirnamemax.c: Include only if - does not exist. - -Fri Sep 4 09:43:26 1992 James Clark (jjc at jclark) - - * eqn/box.cc (gsize): Make it an int. - (set_gsize): Parse argument handling increment or decrement. - (box::top_level): Convert gsize to a string. - - * troff/input.cc (exit_troff): Make buf unsigned char []. - Call to make_temp_iterator casts buf to char*. - - * Makefile.in ($(TARGETS), dot): Pass $(MDEFINES) to recursive makes. - - * Makefile.ccpg (depend.temp): Depends on $(YTABC). - * Makefile.cpg (depend.temp): Likewise. - - * Makefile.dep: Remove Makefile.dep from $(REALCLEANFILES). - - * Makefile.comm: Add y.output to MOSTLYCLEANFILES. - -Thu Sep 3 08:01:55 1992 James Clark (jjc at jclark) - - * tmac/tmac.s (B, I, BI, CW): Rewrite avoiding aliases. - -Tue Sep 1 18:24:53 1992 James Clark (jjc at jclark) - - * Version 1.06 released. - - * Integrate mm 1.04. - -Fri Aug 28 11:28:19 1992 James Clark (jjc at jclark) - - * Makefile.comm, Makefile.ccpg, Makefile.cpg: Fix TAGS target. - -Thu Aug 27 11:03:33 1992 James Clark (jjc at jclark) - - * afmtodit/afmtodit.pl: Add -n option that disables generation of - ligatures command. - * devps/generate/Makefile (CR, CB, CI, CBI): Pass -n flag to - afmtodit. Regenerate. - - * tmac/tmac.e ()z): Adjust _b if necessary so as to avoid moving - @f back past the current position. - - * tmac/tmac.e: Change calls to @R so that comments are not part of - arguments. - -Tue Aug 25 10:42:07 1992 James Clark (jjc at jclark) - - * configure.in: Check for mkstemp with AC_HAVE_FUNCS. - - * acgroff.m4 (GROFF_PROG_CCC): Don't check for . Instead - check that we can link a call to a function declared in . - (GROFF_UNISTD_H): New macro. - * configure.in: Call it. - * Makefile.in: Document it. - * include/posix.h: New file. - * troff/troff.h: Don't include - * troff/input.cc: Include posix.h. - * libgroff/new.cc, libgroff/tmpfile.cc: Include posix.h rather than - osfcn.h. - * indxbib/indxbib.cc, libbib/{search.cc,linear.cc,index.cc}: - Include posix.h rather , , , - . - * indxbib/indxbib.cc (S_IRUSR, S_IRGRP, S_IROTH): Delete definitions. - * libbib/index.cc (S_ISREG, O_RDONLY): Delete definitions. - * libbib/search.cc (O_RDONLY): Delete definition. - * refer/refer.cc, include/driver.h, pic/pic.h, groff/groff.cc: - Don't include . - - * acgroff.m4 (GROFF_TIME_T): New macro. - * configure.in: Call it. - * Makefile.in: Document it. - - * acgroff.m4 (GROFF_TRADITIONAL_CPP): New macro. - * configure.in: Call it. - * Makefile.in: Document -DTRADITIONAL_CPP. - * include/ptable.h: Don't include generic.h. - (name2): Define it. - - * tmac/tmac.s (][): Make [T1 and [T2 aliases for [T. - Afterwards remove [T1 and [T2. - (ref*spec!0, ref*spec!2): Use T1 rather than T. - (ref*spec!1, ref*spec!4, ref*spec!4): Use T2 rather than T. - (ref*add-T2): Renamed from ref*add-T. - (ref*add-T1): New macro. - -Mon Aug 24 11:11:11 1992 James Clark (jjc at jclark) - - * acgroff.m4 (AC_PROG_CCC): Use GROFF_EXIT rather than exit 1. - - * libbib/index.cc: Include . - (O_RDONLY): Define if necessary. - (make_index_search_item, index_search_item_iterator::get_tag, - index_search_item::check_files): Use O_RDONLY. - * libbib/seach.cc: Include , , . - (O_RDONLY): Define if necessary. - (search_list::add_file): Use O_RDONLY. - * indxbib/indxbib.cc: Include , , - . - (S_IRUSR, S_IRGRP, S_IROTH): Define if necessary. - (main): Use these. - - * libbib/index.cc (S_ISREG): Define it if necessary. - (index_search_item::load): Use S_ISREG. - - * include/driver.h: Include . - -Sun Aug 23 11:32:18 1992 James Clark (jjc at jclark) - - * eqn/box.cc (body_height): Increase default value to 85. - (body_depth): Increase default value to 35. - -Fri Aug 21 05:34:42 1992 James Clark (jjc at jclark) - - * eqn/pbox.h (SAVE_FONT_STRING): Define it. - * eqn/box.cc (box::top_level): Hide use of \R in a string that is - protected from expansion with \E. - - * acgroff.m4 (GROFF_PAGE): Use `case' to test domain. - - * Makefile (Makefile): New target. - - * Makefile.sub (configure, distfiles): New targets. - - * acgroff.m4 (GROFF_BROKEN_SPOOLER_FLAGS): Avoid using ${var:-val} - construct. - -Thu Aug 20 12:27:26 1992 James Clark (jjc at jclark) - - * eqn/box.cc (param_table): Add body_height and body_depth. - - * eqn/lex.cc (def_table): Make circumflex in hat_def roman. - -Tue Aug 18 16:24:25 1992 James Clark (jjc at jclark) - - * psbb/Makefile.sub: Don't link with libgroff.a. - - * acgroff.m4 (GROFF_PUTENV): New macro. - * configure.in: Call GROFF_PUTENV. - * Makefile.in: Document STDLIB_H_DECLARES_PUTENV. - * groff/groff.cc: Don't declare putenv if STDLIB_H_DECLARES_PUTENV - is defined. - - * troff/env.cc (distribute_space): Rename force_forward argument - to force_reverse. Reverse the list if force_reverse is true. - -Mon Aug 17 17:49:05 1992 James Clark (jjc at jclark) - - * tmac/tmac.an: Don't define a string `T'. Just define Tm. - - * eqn/pile.cc (matrix_box::compute_metrics): Don't allow computed - height or depth to be negative. Guard against SUP_RAISE quantity - being negative. - -Sat Aug 15 08:18:54 1992 James Clark (jjc at jclark) - - * devps/generate/textmap: Add `an' (arrowhorizex). - * tmac/tmac.ps: \(an overlaps horizontally. - * tmac/tmac.dvi, tmac/tmac.tty: Add `an'. - - * devps/symbolchars: Add arrowverttp, arrowvertbt. - * devps/textmap: Add arrowvertex. - * eqn/delim.cc (delim_table): Add uparrow, downarrow and - updownarrow delimiters. - * tmac/tmac.ps, tmac/tmac.X: Add definition of \(va. - - * tbl/table.cc (simple_entry::position_vertically, - block_entry::position_vertically): For a centered entry, perform - the motion in two stages. - - * refer/refer.cc (split_punct): Don't call lookup_token if there - is no token. - -Fri Aug 14 11:14:58 1992 James Clark (jjc at jclark) - - * troff/input.cc (token::next): Delete token_node after copying - token. - - * grodvi/grodvi.cc (dvi_printer::dvi_printer): Initialize - cur_point_size. - - * libdriver/printer.cc (printer::load_font): Delete old_font_table. - - * grops/ps.cc (ps_printer::define_encoding): Delete elements of vec. - -Tue Aug 11 13:50:38 1992 James Clark (jjc at jclark) - - * grops/ps.cc (usage): -b option takes an argument. - - * devps/prologue (PLG): New procedure. - * grops/ps.cc (main, usage): New -g option. - (ps_printer::~ps_printer): If guess_flag is set, guess the paper - length using PLG. - -Mon Aug 10 11:17:53 1992 James Clark (jjc at jclark) - - * include/cset.h: Include if we have it. - - * libgroff/illegal.cc: New file. - * include/lib.h (illegal_input_char): Use table. - * troff/input.cc (ESCAPE_RIGHT_PARENTHESIS): Renumber to 0206. - * pic/lex.cc (ARG1): Renumber to 14. - * eqn/lex.cc (ARG1): Likewise. - - * troff/Makefile.sub (majorminor.cc): Handle 3 part versions - (eg 1.05.90) correctly. - -Sun Aug 9 13:35:43 1992 James Clark (jjc at jclark) - - * tmac/tmac.e (sr): Deleted. Set $r and $R directly. - Rename $r and $R registers to $v and $V. - ($r, $R): Initialize to 0. - (@v, @V): New macros. - (sz): Call @v. - (@M): Call @V. - - * troff/input.cc (main, usage): Add -R option that says not to - load troffrc. - * eqn/main.cc (main, usage): Rename -n to -R. - -Sat Aug 8 00:16:00 1992 James Clark (jjc at jclark) - - * devps/DESC.in: Leave font positions 5-9 blank. - * devdvi/DESC.in: Likewise. - - * grog/grog.pl: Handle `.PS 0. - - * macros/tmac.e (@R, @S): New macros. - Declare @, po, $0, $i, $p, df, so, fu, bt, *, ?a, ?b, ?C, ?e, ?H, - ?I, ?n, ?o, ?R, ?s, ?T, ?W, ?w registers with @R. - Declare $H, $[0-9], .. macros with @S. - Declare |0, |1, |2, |3 strings with @S. - - * macros/tmac.e (@S): Rename to @U. - - * macros/tmac.e (@z): Define @b and bp as empty instead of - deleting them, - - * macros/tmac.e (@m): Deleted. - (@h): Don't call @m. - (@z): Don't set @m trap. - - * macros/tmac.e ($h, $f): Define |z as empty string. - - * macros/tmac.e (@D): Rework to avoid unbalanced .el requests. - (@q): Likewise. - - * macros/tmac.e (@h): Set ?H, ?C , ?s registers to 0 rather than - removing them. - ()f): Likewise for * register. - - * macros/tmac.e (sr): Don't ever scale the arguments. If the third - argument is missing, don't change $R. Call sr with three - arguments when initializing. - -Thu Jul 16 12:17:12 1992 James Clark (jjc at jclark) - - * macros/tmac.e (sr): New macro. - Initialize $r and $R using sr. - - * macros/tmac.e (,): Delete \*(#[. - - * troff/env.c (set_tabs): Read the tab type even if the position - is bad. Allow the position of the first tab stop to be negative. - -Wed Jul 15 13:14:37 1992 James Clark (jjc at jclark) - - * refer/dirnamemax.c: Use pathconf() if defines - _POSIX_VERSION. - * refer/Makefile: Compile dirnamemax.c using -DHAVE_UNISTD_H - rather than -DPATHCONF_MISSING. - * Makefile: Get rid of PATHCONF_MISSING. - - * refer/map.c: New file. - * refer/index.c: Interface to mmap through map.c. Rename map_size - to map_len. - * refer/Makefile: Handle map.c. - * Makefile: Include -DHAVE_MMAP in OLDCFLAGS rather than CFLAGS. - -Tue Jul 14 14:15:20 1992 James Clark (jjc at jclark) - - * Makefile: RANLIB should be `true' if there is no ranlib. - * lib/Makefile (libgroff.a): Simplify. - * driver/Makefile (libdriver.a): Simplify. - - * Makefile: Change -DWAIT_COREDUMP_0200 to -DWCOREFLAG=0200. - * groff.c (WCOREDUMP): Use WCOREFLAG. Define only if not already - defined. - -Sat Jul 11 09:19:17 1992 James Clark (jjc at jclark) - - * troff/env.c (compare_ranges): Declare as extern "C". - - * troff/input.c (init_registers): Use `struct tm' instead of `tm'. - - * macros/tmac.s, macros/tmac.e: Change .nx /dev/null to .nx. - -Wed Jul 8 11:52:27 1992 James Clark (jjc at jclark) - - * pic/troff.c (troff_output::text): Merge in grops_output::text, - but conditionalize use of \X based on \*(.T. - (grops_output::*): Deleted. - * pic/output.h: Delete declaration of make_grops_output. - * pic/main.c (main): Ignore -p and -x. driver_extension_flag is 1 - by default. -n sets it to 0. - (usage): Corresponding changes. - * groff.c (main): Don't pass -x or -p to pic. - * groff.sh: Likewise. - - * ps/ps.c (ps_printer::do_exec, ps_printer::do_file): Force ndefs - to be non-zero. - - * ps/devps/afmtodit: Change calculation of asc_boundary and - desc_boundary. Make these bounds inclusive. - * ps/devps: Regenerate font files. - -Tue Jul 7 13:14:15 1992 James Clark (jjc at jclark) - - * macros/tmac.latin1: New file. - * macros/tmac.tty-char: Use tmac.latin1. - (tmac.tty-tr): Deleted. - * macros/Makefile: Install tmac.latin1. - * macros/tmac.dvi: Use tmac.latin1. - * macros/troffrc: Translate \[char160] onto no-break space here. - * macros/{tmac.dvi,tmac.ps,tmac.tty,tmac.X75}: Don't do it here. - -Mon Jul 6 11:06:52 1992 James Clark (jjc at jclark) - - * macros/tmac.Xps: Use `do' request. - - * macros/tmac.ps: Use `do' request. - - * macros/tmac.e (@C): Use `do' request. - - * macros/tmac.X, macros/tmac.Xps: Moved from xditview. - * macros/Makefile: Install tmac.X*. - - * tty/tmac.tty, tty/tmac.tty-char: Move to macros. - * tty/Makefile: Don't install tmac.tty*. - * macros/Makefile: Install tmac.tty*. - - * dvi/tmac.dvi: Move to macros. - * dvi/Makefile: Don't install tmac.dvi. - * macros/Makefile: Install tmac.dvi. - - * ps/tmac.ps*: Move to macros. - * ps/Makefile: Don't install tmac.ps*. - * macros/Makefile: Install tmac.ps*. - - * eqn/box.c: Provide draw_lines parameter corresponding to -D - option. - * macros/eqnrc: Set draw_lines parameter based on device. - * groff.c: Don't pass -D flag to eqn. - * groff.sh: Likewise. - * eqn/main.c: Warn about use of -D. - - * troff/input.c (process_startup_file): New function. - (main): Call process_startup_file(). - * macros/troffrc: New file. - * macros/Makefile: Install troffrc. - * groff.c (main): Don't pass extra -m option to troff. For a - pseudo device pass the name of the pseudo device to troff using - -d. - * groff.sh: Likewise. - * groff.c (possible_command::prepend_arg): Deleted. - - * troff/input.c (do_request): New function. - (init_input_requests): Bind "do" to do_request. - - * eqn/main.c (main): Instead of loading eqnchar from device directory, - load eqnrc from macro directory. - * macros/eqnrc: New file. - * macros/Makefile: Install eqnrc. - * ps/devps/eqnchar: Deleted. - * ps/devps/Makefile: Don't install eqnchar. - * dvi/devdvi/eqnchar: Deleted. - * dvi/devdvi/Makefile: Don't install eqnchar. - * groff.c (main): Pass -M to eqn. Don't pass -F to eqn. New - variable optM. - - * lib/device.[ch]: New files. - * lib/font.h (font::set_device_name, font::get_device_name): - Deleted. - * lib/fontfile.c: Use device.h. - * lib/Makefile: Handle device.[ch]. Make paths.h define DEVICE. - * troff/input.c: Delete definition of `device'. - (main): Don't initialize device. - * troff/troff.h: Include device.h rather than declaring device. - * troff/Makefile: No need to handle DEVICE. - * driver/input.c: Include device.h. Don't use - font::{set,get}_device_name. - * groff.c, Makefile: Rename device.h to config.h. - * groff.c: Use library device variable. - * eqn/main.c: Use library device variable. - * eqn/Makefile: No need to handle DEVICE. - - * lib/searchpath.[ch]: New files. - * lib/Makefile: Handle searchpath.[ch]. - * troff/input.c (open_file, init_dirs): Deleted. - (macro_dirs): Deleted. - (open_mac_file, macro_source): Use class search_path. - (add_string, struct string_list): Move definition. - (main): Change -M option to use macro_path. Delete call to - init_dirs(). - * lib/fontfile.c (font::command_line_font_dir, font::open_file): - Rewrite to use class search_path. - * lib/font.h, lib/fontfile.c (font::cl_font_dirs): Deleted. - * lib/Makefile: fontfile.c depends on searchpath.h. - * lib/Makefile: Rename fontpath.h to paths.h. Make paths.h define - MACROPATH. - * lib/macropath.[ch]: New files. - * troff/Makefile: No need to handle MACROPATH. - - * troff/input.c: Delete DUMP code. - * lib/fontfile.c, lib/font.h: Delete - font::forget_command_line_font_dirs. - - * troff/input.c (push_token): New function. - (handle_first_page_transition): Use push_token(). - (process_input_stack): Change handling of a space at the beginning - of the line. - -Sun Jul 5 17:11:09 1992 James Clark (jjc at jclark) - - * troff/input.c (font_dirs): Delete unused variable. - - * eqn/lex.c (do_set): Correct error messages. - -Sat Jul 4 10:20:55 1992 James Clark (jjc at jclark) - - * troff/input.c (do_define_string): Allow the string name to be - followed immediately by a tab. - (define_character): Likewise. - -Thu Jul 2 10:59:15 1992 James Clark (jjc at jclark) - - * ps/ps.c (ps_printer::draw): When drawing an arc, don't allow k to - be negative. - - * troff/input.c (input_iterator::is_file): New virtual function. - (file_iterator::is_file): New function. - (input_stack::end_file): New function. - (input_stack::next_file): Handle the situation where there is no - file on the input stack correctly. Avoid making two passes over - the input stack. - (next_file): Make the filename optional; in this case call - input_stack::end_file(). - -Wed Jul 1 10:17:25 1992 James Clark (jjc at jclark) - - * dvi/tmac.dvi: Change the definitions of \(ul and _ so that they - produce a real _ charater when the current font is CW and _ - otherwise. - - * lib/errarg.c (errarg::errarg(const char *)): Invert conditional - expression to work around gcc 2.2 bug. - -Wed Jun 24 08:12:24 1992 James Clark (jjc at jclark) - - * eqn/main.c (main): Don't give an error if we can't find eqnchar. - - * troff/env.c (environment::add_padding): New function. - (environment::add_char): Use add_padding(). - (environment::space): Likewise. - (environment::wrap_up_field): Add some padding if there is none - and there's no current tab. - * troff/env.h: Declare environment::add_padding. - -Mon Jun 22 08:37:45 1992 James Clark (jjc@jclark) - - * pic/pic.y: undef fmod and rand before declaring them. - -Sun Jun 14 11:40:18 1992 James Clark (jjc@jclark) - - * troff/input.c (main): If the DESC file specifies a font name of - 0, then leave the corresponding font position empty. - - * nroff.sh: New file. - * Makefile (install.nobin): Install nroff.sh. - - * tty/devlatin1/R.proto: Add ao as synonym for de. - * tty/tmac.tty-char: Define ao as o. - - * tty/dev{ascii,latin1}/R.proto: Add aq. - * tty/tmac.tty-char: Delete definition of aq. - -Mon Jun 8 11:43:20 1992 James Clark (jjc@jclark) - - * troff/input.c (init_charset_table): Don't translate 0240. - * ps/tmac.ps: Translate char160 to space. - * dvi/tmac.dvi: Likewise. - * tty/tmac.tty: Likewise. - -Sun Jun 7 10:52:35 1992 James Clark (jjc@jclark) - - * dvi/tmac.dvi: Add support for all Latin-1 characters. - - * macros/tmac.s: Delete definitions of \(rg, \(ah, \(ad, \(a-, - \(ao, \(ac, \(ho, \(-D, \(Sd, \(TP, \(Tp, \(ss, \(AE, \(ae, \(OE, - \(oe, \(r?, \(r!. - - * tty/tmac.tty-char: Add \(ah. - - * dvi/tmac.dvi: Add definitions of Tp, TP, Sd, -D, ho. - No need to define \(FM and \(!/. Conditionalize all character - definitions. - - * ps/devps/lgreekmap: Add +h, +f, +p. - - * ps/tmac.psnew: New file. - * ps/Makefile: Install tmac.psnew. - - * troff/input.c (charinfo_to_node_list): Don't ever interpret - character definitions in compatible mode. - - * troff/input.c (remove_character): New function. - (init_input_requests): Bind remove_character to "rchar". - - * ps/tmac.psold: New file. - * ps/Makefile: Install tmac.psold. - * ps/tmac.ps: Load tmac.psold. Move definitions of ISO Latin-1 - characters into tmac.psold. Make these definitions unconditional. - - * tty/tmac.tty-char: Define \n(_C only if it is not already defined. - - * ps/tmac.ps: Don't define \('c and \('C. - - * ps/devps/textmap: Move Greek characters to... - * ps/devps/symbolchars: - -Sat Jun 6 16:41:17 1992 James Clark (jjc@jclark) - - * ps/devps/text.enc: Add quotesingle. - * ps/devps/textmap: Add +h, +f, +p, Fn, Bq, bq, aq, lz. - * tty/tmac.tty-char: Likewise. - * dvi/devdvi/texmi.map: Add +h, +f, +p. - * dvi/devdvi/texi.map: Add Fn. - * dvi/devdvi/msam.map: Add lz. - * dvi/tmac.dvi: Handle Bq, bq, aq. - - * pic/lex.c (get_token): Recognize 'th. - * pic/map.y: Allow `expr'th in contexts where ORDINAL was allowed. - -Fri Jun 5 11:20:46 1992 James Clark (jjc@jclark) - - * ps/devps/textmap: Move di, mu, +- to... - * ps/devps/symbolchars: - - * macros/tmac.s (@XS): Don't call par@reset or fi. - (XA): Call LP. Turn off adjustment. Reduce line length. - - * macros/tmac.s: Initially alias XS to LP. - (XS): Rename to @XS. - (cov*ab-init): Alias XS to @XS. - -Thu Jun 4 09:12:05 1992 James Clark (jjc@jclark) - - * troff/token.h: Delete TOKEN_CHAR_HEIGHT, TOKEN_CHAR_SLANT, - TOKEN_FONT_NAME, TOKEN_FONT_POSITION, TOKEN_SIZE tokens. - (token::is_size, token::changes_env): Deleted. - * troff/number.c (parse_term): No need to process \s explicitly. - Call tok.next() only after scale indicator has been processed. - * troff/input.c (do_overstrike, do_bracket): No need to process \s, - \f etc explicitly. - (token::next): Handle \s, \f, \S, \H immediately rather than - returning them as tokens. - (token::operator==, token::description, token::add_to_node_list, - token::process): Remove handling of deleted tokens. - - * troff/env.c (environment::add_char): When adding padding - indicator character, call start_line() if necessary. - -Wed Jun 3 09:55:50 1992 James Clark (jjc@jclark) - - * ps/devps/afmtodit: Don't output 0 kerns. - - * ps/devps/afmtodit: Remove directory from name of encoding in - font description file. - - * ps/devps/afmtodit: Improve error messages. - - * ps/devps/afmtodit: Allow DESC file to be specified with -d. - - * ps/devps/Makefile: Incorporate FontMakefile. Rework. - * ps/devps/FontMakefile: Deleted. - * ps/devps/afmname: New file. - - * ps/devps/symbol.sed: New file. - * ps/devps/symbol.diff: Deleted. - * ps/devps/FontMakefile: Generate symbol.afm using symbol.sed. - Generate zapfdr.afm from zapfd.afm. - - * tty/tmac.tty (tty-char): Prefix definition with ". - - * macros/tmac.an (TP): Don't start a diversion if one has already - been started. - - * tty/tmac.tty-char: Add Latin-1 characters. - - * tty/tmac.tty-char: Incorporate suggestions from Paul Eggert. - -Tue Jun 2 00:54:34 1992 James Clark (jjc@jclark) - - * tbl/table.c (table::allocate): Delete old_vline, old_entry. - Move declaration of struct horizontal_span. - - * tbl/table.c (table::table): Initialize span_list. - (table::~table): Delete span_list. - - * lib/ptable.h (PTABLE(T)::~PTABLE(T)): Delete v. - - * ps/devps/Makefile: Avoid dependency on GNU make. - - * ps/tmac.ps: Check that character does not already exist before - defining it. - - * tty/tmac.tty: Add definitions of \(ff, \(!=, \(==, \(~=, \(sq, - \(OE, \(oe, \(AE, \(ae, \(lh, \(rh. Delete definitions of \(en, - \(ru, \(ul, \(br, \(bv, \(sl which are in the font description - files. - - * tty/tmac.tty-char: New file. - * tty/Makefile: Install tmac.tty-char. - * tty/tmac.tty: Move definitions of \(ua, \(da, \(uA, \(dA into - tmac.tty-char. - - * tty/tmac.tty: Fix definition of \(34. - - * tty/dev{ascii,latin1}/R.proto: Add ha and ti. Map - bracket-drawing characters onto |. Add *o. - - * troff/env.c (environment::wrap_up_tab): Increment field_spaces - only if current_field. - - * troff/dictionary.c (dictionary::lookup): Free old_table after - rehashing. - -Mon Jun 1 10:15:22 1992 James Clark (jjc@jclark) - - * tty/dev{ascii,latin1}/R.proto: Add uppercase Greek characters - whose glyphs are identical to glyphs of some Roman character. - - * tty/devlatin1/R.proto (bu): Deleted. - * tty/devascii/R.proto (bu): Deleted. - * tty/tmac.tty: Add definition of \(bu. - - * eqn/main.c (do_file): Pass FILE as argument. - (main): Automatically load eqnchar. New options -F and -n. - Pass do_file an opened FILE. - * groff.c: Don't pass eqnchar to eqn. Pass -F options onto eqn. - No need to include font.h. - * groff.sh: Likewise. Don't need to use - for standard input. - Prefix files with -- if first file starts with -. - - * macros/tmac.e: Conditionalize use of \$* on \n(.g. - - * troff/env.c (environment::possibly_break_line): Don't set line - to 0 across call to output_line(). Don't call output_line() until - after discarding nodes after break. - -Sun May 31 10:45:29 1992 James Clark (jjc@jclark) - - * request.h (macro::empty): Declare it. - * input.c (macro::empty): New method. - (interpolate_macro): Don't give a WARN_SPACE if the two-character - macro is empty. - -Sat May 30 10:27:15 1992 James Clark (jjc@jclark) - - * troff/env.c (environment::start_field): Decrement space_total - when a space is frozen. - -Fri May 22 14:34:38 1992 James Clark (jjc@jclark) - - * macros/tmac.an (R): Delete macro. - - * troff/input.c (get_copy, token::next): Support \# (like \" but - newline is ignored). - - * troff/input.c (token::next): Fix error message in 'Y' case. - -Thu May 21 09:26:24 1992 James Clark (jjc@jclark) - - * eqn/delim.c (define_extensible_string): Recognize any prefix of - a delimiter name. - -Fri May 15 10:20:41 1992 James Clark (jjc at jclark) - - * c++test.c: Include . - - * lib/strtol.c, lib/getcwd.c, ps/psbb.c: Declare errno in case - doesn't. - -Fri May 8 09:37:19 1992 James Clark (jjc at jclark) - - * tbl/table.c (table::divide_span): Don't count column separation - if expand was specified. - - * tbl/main.c (process_format): Don't ignore width specs in - continued format. Give warning for changing equal widths or - column separation in continued format. - (process_data): Set column separation, minimum width, equal - columns at end of table. - -Thu May 7 08:50:40 1992 James Clark (jjc at jclark) - - * troff/node.c (kern_pair_node::add_discretionary_hyphen, - node::add_discretionary_hyphen): Use soft_hyphen_char. - (set_soft_hyphen_char): New function. - (init_node_requests): Bind to shc. Initialize soft_hyphen_char. - - * Makefile (c++tested): Give more helpful message if test fails. - -Tue May 5 10:58:39 1992 James Clark (jjc at jclark) - - * troff/input.c (init_charset_table): Translate 0240 to - an unbreakable space. - - * troff/token.h (token::hyphen_indicator): New function. - * troff/charinfo.h (TRANSLATE_HYPHEN_INDICATOR): New special - translation. - * troff/input.c (translate): Allow translation to \%. - * troff/node.c (node::add_char): Handle - TRANSLATE_HYPHEN_INDICATOR. - (make_node): Don't allow TRANSLATE_HYPHEN_INDICATOR here. - - * troff/input.c (init_charset_table): Don't set BREAK_AFTER flag - for \(hy. - - * tty/devlatin1/R.proto: \(hy and - should print as 055. - -Tue Apr 21 09:24:42 1992 James Clark (jjc at jclark) - - * groff.c (run_commands): If the last command gets a SIGPIPE send - a SIGPIPE to all children than haven't yet terminated. When - command terminates, set pid field to -1. - -Fri Apr 17 11:20:48 1992 James Clark (jjc at jclark) - - * groff.c (main): Pass an appropriate -filename option to gxditview. - -Thu Apr 16 15:11:40 1992 James Clark (jjc at jclark) - - * Makefile.bd (install): Remove existing program before copying. - - * Makefile, */Makefile, Makefile.bd, groff.sh, groff.c: Allow - programs which have Unix counterparts to be installed with - user-specified prefix. - - * troff/input.c (exit_troff): Don't check if exit_started. - (exit_request): Don't call exit_troff if exit_started. - - * Makefile.bd (install.mm): Rename to install.dwbmm. - -Tue Apr 14 10:05:10 1992 James Clark (jjc at jclark) - - * driver/input.c (do_file): Add missing break for '#' case. - -Mon Apr 13 10:11:02 1992 James Clark (jjc at jclark) - - * troff/input.c (input_stack::clear): Clear past any boundaries and - then add the boundaries back. - - * troff/input.c (exit_troff): Return immediately if already - exiting. - - * macros/tmac.s (pg@end-text): New macro. Use pg@end-text for the - end macro. - (pg*end-page): If the text has ended and there are no more - footnotes or keeps, exit. - - * macros/doc-ditroff (Lq, Rq): Define as \(lq and \(rq. - - * troff/input.c (init_charset_table): Make \(rq transparent by - default. - - * macros/tmac.an: Define lq and rq strings. - - * macros/tmac.s (Q, U): Define as \(lq and \(rq. - -Sun Apr 12 12:54:37 1992 James Clark (jjc at jclark) - - * troff/env.c (environment::final_break): New function. - (environment::newline): Set prev_line_interrupted to 2 if - exit_started. - * troff/env.h: Declare environment::final_break. - * troff/input.c (exit_troff): Call environment::final_break() - instead of environment::do_break(). - - * macros/Makefile: Install man.local if $(MACRODIR)/man.local - doesn't already exist. - * macros/man.local: New file. - * macros/tmac.an: Load man.local. - * macros/man.ultrix: New file. - -Sat Apr 11 17:32:04 1992 James Clark (jjc at jclark) - - * troff/input.c (exit_groff): Rename to... - (exit_troff): New function. - - * troff/div.c (exit_started, done_end_macro, - seen_last_page_ejector): New global variables. - (began_page_in_end_macro): New static variable. - (exit_flag): Deleted. - (top_level_diversion::top_level_diversion): Initialize - last_page_count. - (top_level_diversion): More elaborate test for whether - cleanup_and_exit() should be called. - Set began_page_in_end_macro if the end macro isn't yet finished. - * troff/div.h (top_level_diversion::last_page_count): New data - member. - (top_level_diversion::set_last_page): New function. - (exit_started, done_end_macro, seen_last_page_ejector): Declare. - * troff/env.c (do_break): Zero prev_line_interrupted. - * troff/input.c (exit_flag): Delete declaration. - (LAST_PAGE_EJECTOR): New magic cookie. - (token::next): Handle LAST_PAGE_EJECTOR. - (exit_groff): Set exit_started and done_end_macro instead of - exit_flag. Call top_level_diversion::set_last_page. Push a - LAST_PAGE_EJECTOR instead of calling push_page_ejector(). Do - another ejection after setting seen_last_page_ejector. - -Thu Apr 9 04:37:11 1992 James Clark (jjc at jclark) - - * etc/grog.sh, etc/grog.sh: Recognize -me sh macro. - - * macros/tmac.e (TH): Make sure there's room for the initial - header. - - * macros/tmac.s (par@init): Make PD and DD at least \n(.V. - Set FVS in points rather than units. - -Mon Apr 6 11:21:32 1992 James Clark (jjc at jclark) - - * troff/div.c (top_level_diversion::add_trap): Don't consider the - position of empty slots. - -Fri Apr 3 10:46:45 1992 James Clark (jjc at jclark) - - * ps/devps/S: Fix height and depth of parenrightex. - * ps/devps/symbol.diff: Regenerate. - -Sat Mar 28 21:17:52 1992 James Clark (jjc at jclark) - - * tmac.e (u): Do underlining as in -mgs. - -Fri Mar 27 09:23:44 1992 James Clark (jjc at jclark) - - * tty/tty.c (tty_printer::end_page): If overstriking is - suppressed, still turn overstruck horizontal and vertical lines - into +. - - * lib/new.c: Back out Feb 24 change; no longer needed with gcc - 2.1. - - * refer/label.y (format_expr::evaluate): Avoid use of %0*d. - -Wed Mar 18 09:29:10 1992 James Clark (jjc at jclark) - - * Version 1.05 released. - -Tue Mar 17 16:50:45 1992 James Clark (jjc at jclark) - - * tty/tty.c: Instead of keeping an array of glyphs and then - sorting it, keep a ordered linked list of glyphs for each line. - - * driver/driver.h: Include stddef.h. - - * tty/tty.c (compare_glyph): - * refer/refer.c (rcompare): - * troff/env.c (compare_ranges): Arguments of qsort comparison - function should be const void *. - - * troff/number.c (parse_term): - * dvi/dvi.c (draw_dvi_printer::draw): Avoid initialization in - switch statement. - - * refer/label.y (consider_authors): Don't access variables - constructed under a condition outside that condition: put braces - round for statement containing declaration; redeclare use of same - variable later. - - * pic/pic.y (text_expr): Delete production that allows - parenthesised text_expr. - (expr): Allow a conditional_expr to appear in parentheses. - (conditional_expr): Rename to any_expr. - - * mm: Install new version 1.01 from jh. - - * lib/font.c (font::get_width): Cache scaled widths. - (font::font): Initialize widths_cache. - (font::~font): Destroy widths_cache. - * lib/font.h: Add font::widths_cache. Declare font_widths_cache. - -Mon Mar 16 10:16:10 1992 James Clark (jjc at jclark) - - * c++test.c, c++test.ref: New files. - * Makefile: Check that the C++ compiler works. - - * ps/tmac.pspic (PSPIC): Do a break. - - * ps/tmac.ps: Move definition of PSPIC into... - * ps/tmac.pspic: New file. - (PSPIC): Draw box around picture, but make it invisible to grops. - * ps/tmac.ps: Load tmac.pspic. - * ps/Makefile: Install tmac.pspic. - -Sun Mar 15 14:18:08 1992 James Clark (jjc at jclark) - - * lib/font.c (scale_round): If n is negative, - subtract .5 before truncating floating point result. - - * lib/fontfile.c: Include . - -Tue Mar 10 14:17:03 1992 James Clark (jjc at jclark) - - * driver/input.c (get_char): Inline. Don't update current_lineno. - Change callers to up date current_lineno if necessary. - Use get_char() instead of getc(current_file). - -Sun Mar 8 18:05:28 1992 James Clark (jjc at jclark) - - * ps/tmac.ps: Fix up spacing of \(mo and \(nm. - -Fri Mar 6 19:38:58 1992 James Clark (jjc at jclark) - - * tty/tty.c (tmac.tty): Define \(rg as (R). - -Tue Mar 3 10:11:25 1992 James Clark (jjc at jclark) - - * lib/lib.h: New define a_delete. - * Use a_delete instead of delete when deleting an array of objects - without destructors. - - * lib/lib.h: Rename adelete to ad_delete. - * Change uses of adelete. - -Mon Mar 2 12:41:05 1992 James Clark (jjc at jclark) - - * eqn/eqn.y: Include lib.h. - - * troff/node.c (grow_font_table): Delete old_font_table. - - * mm: Install new version from jh. - -Fri Feb 28 10:42:23 1992 James Clark (jjc at jclark) - - * tbl/table.h (format_type): Make global instead of local to class - entry_format. Prefix enumerators with FORMAT_. - * tbl/table.c, tbl/main.c: Corresponding changes. - * refer/token.h (token_type): Make global. Prefix enumerators - with TOKEN_. - * refer/token.[ch]: Corresponding changes. - * Makefile: Get rid of -DNO_NESTED_TYPES configuration option. - - * troff/div.c (node::set_vertical_size): Don't name argument. - -Thu Feb 27 10:29:19 1992 James Clark (jjc at jclark) - - * Makefile: New configuration option ARRAY_DELETE_NEEDS_SIZE. - * lib/lib.h: Define adelete accordingly. - * pic/object.c (graphic_object::graphic_object): - * tbl/main.c (format::~format): - * tbl/table.c (table::~table): - * refer/ref.c (reference::~reference, reference::merge, - reference::insert_field, reference::delete_field): Use adelete. - - * Makefile: Change NESTED_TYPES to NO_NESTED_TYPES. - * refer/token.h: - * tbl/table.h: Corresponding changes. - - * common.c (common_output::dashed_arc, common_output::dotted_arc): - Ensure total_angle is positive. - -Wed Feb 26 08:49:26 1992 James Clark (jjc at jclark) - - * refer/ref.c (reference::merge, reference::insert_field, - reference::delete_field): Avoid delete[0]. - - * refer/token.c (init_special_chars): Move calls to cmupper - outside calls to init_two_char_letter to work around bug in gcc - 2.0. - -Mon Feb 24 14:20:00 1992 James Clark (jjc at jclark) - - * lib/new.c (operator new): Use __builtin_new for g++. - - * pic/object.c (graphic_object::~graphic_object): Don't use - delete [] on 0. - - * pic/object.c (output::compute_scale): Initialize max_width and - max_height. - -Sat Feb 15 09:55:20 1992 James Clark (jjc at jclark) - - * troff/input.c (write_request): Call fflush. - - * troff/node.h (class composite_node): Move declaration to node.c - * troff/input.c (charinfo_to_node): Rename to ... - (charinfo_to_node_list): Return node list rather than composite - node. - * troff/node.c (make_composite_node): New function. - (make_node, add_char): Call make_composite_node instead of - charinfo_to_node. - (class composite_node): Add a tfont * member. Delete font_size - member. - (composite_node::composite_node, composite_node::copy, - composite_node::size): Corresponding changes. - (composite_node::tprint): Provide constant spacing, emboldening - and track kerning as specified in tfont. - (composite_node::width): Change width calculation accordingly. - * troff/env.h (environment::composite): New member. - (environment::is_composite, environment::set_composite): New - functions. - * troff/env.c (environment::environment): Initialize composite. - * troff/input.c (charinfo_to_node): Call - environment::set_composite. - * troff/node.c (make_composite_node, make_glyph_node): Use the - plain version of the tfont if the environment is composite. - - * troff/node.c (font_info::get_space_width): Additional argument - giving space_size. Handle constant space correctly. Scale by - space_size unless constant spaced. - (env_sentence_space_width): New function. - * troff/node.h: Declare it. - * troff/env.h (environment::get_space_size, - environment::get_sentence_space_size, - environment::get_narrow_space_width, - environment::get_half_narrow_space_width): Make inline. - (environment::get_space_width): Make inline. Just call - env_space_width. - * troff/env.c: Delete definitions for funtions made inline. - (environment::space_newline, environment::space): Use - env_sentence_space_width(). Don't scale by space_size. - * troff/node.h: Move declarations of env*space_width() functions - into env.h. - -Sat Feb 8 09:30:22 1992 James Clark (jjc at jclark) - - * macros/tmac.s (PS): Don't try to set negative indent. - -Thu Feb 6 09:00:35 1992 James Clark (jjc at jclark) - - * pic/pic.y: Fix min function. - -Tue Jan 28 07:52:29 1992 James Clark (jjc at jclark) - - * man/mdate.sh: Clear LANGUAGE. - -Sun Jan 19 13:02:41 1992 James Clark (jjc at jclark) - - * pic/pic.y, pic/lex.c: Rename COMMAND token to COMMAND_LINE. - * pic/lex.c: New COMMAND keyword. - * pic/pic.y (print_args, print_arg): New rules. - (placeless_element): Use print_args for PRINT. - New COMMAND element. - -Tue Jan 7 13:14:31 1992 James Clark (jjc at jclark) - - * troff/input.c (terminal): Handle missing argument correctly. - - * pic/pic.y (text_expr): New rule. - - * pic/pic.y: Implement := operator. - -Sun Jan 5 10:23:02 1992 James Clark (jjc at jclark) - - * etc/grog.pl, etc/grog.sh: Distinguish old and new versions of - mdoc. - -Sat Jan 4 14:42:26 1992 James Clark (jjc at jclark) - - * ps/devps/dingbatsrmap: Include this in the distribution. - - * macros/tmac.doc: Replace with new version from 2nd Networking - Release. Fix loading of doc-* files. - * macros/{doc-common,doc-ditroff,doc-nroff,doc-syms}: New files. - * macros/tmac.doc.old: New file. Apply fixes that had been - applied to old tmac.doc. - * macros/tmac.andoc: Check that we're running under groff. - * macros/Makefile: Rework. - -Fri Jan 3 13:27:51 1992 James Clark (jjc at jclark) - - * tbl/table.h (format_type): - * refer/token.h (token_type): If NESTED_TYPES is defined, use - typedef to make these types visible at file scope. - * Makefile: Add NESTED_TYPES configuration option. - - * troff/div.c (mark): At the top level use the value of - nl_reg_contents rather than the current vertical position. - -Thu Jan 2 10:34:51 1992 James Clark (jjc at jclark) - - * tty/tty.c: Implement \D for horizontal or vertical lines. - (tty_printer::set_char): Use vec_used+2 as serial number. - Don't allow size of vector to exceed USHRT_MAX-2. - Split off part into... - (tty_printer::add_char): New function. - (tty_printer::draw): New function. - (compare_glyph): Handle equal serial numbers. - (tty_printer::end_page): Handle overstruck characters from \D. - (main, usage): Implement -d option. - -Mon Dec 23 10:37:51 1991 James Clark (jjc at jclark) - - * tbl/main.c (process_format): - * eqn/text.c (split_text): - * troff/input.c (token::next): Use inner block for declarations - with initializers in switch statement. - -Mon Dec 16 20:52:03 1991 James Clark (jjc at jclark) - - * pic/common.c (common_output::dash_line): Cope with zero-length - lines. - -Sun Nov 17 12:04:08 1991 James Clark (jjc at jclark) - - * Version 1.04 released. - -Wed Nov 13 05:27:21 1991 James Clark (jjc at jclark) - - * macros/tmac.an (TH): Define a macro an-init to define variables - based on command line arguments. - (an-header): Call it. - -Sun Nov 3 12:07:34 1991 James Clark (jjc at jclark) - - * Makefile (install.mm): Rename to install.dwbmm. - - * Makefile: Integrate mm. - * mm: New directory. - -Wed Oct 30 10:11:34 1991 James Clark (jjc at jclark) - - * refer/dirnamemax.c: If PATHCONF_MISSING is defined, include - . - - * pic/troff.c (troff_output::simple_spline, - troff_output::simple_polygon): Rename variable `v' to `d' to avoid - shadowing parameter. - - * lib/tmpfile.c (xtmpfile): Declare dir as const char *. - - * lib/ptable.h: Add explicit casts when converting from unsigned - long to unsigned. - - * dvi/devdvi/{SA,SB,msam.map,msbm.map}: New files. - * dvi/devdvi/Makefile: Install SA, SB. - - * refer/indxbib.c: Add declaration of mktemp. - - * refer/lookbib.c: Add declaration of isatty. - -Fri Oct 25 09:00:17 1991 James Clark (jjc at jclark) - - * pic/lex.c (interpolate_macro_with_args): While collecting - arguments, keep track of whether we're in a string. - -Wed Oct 23 08:42:48 1991 James Clark (jjc at jclark) - - * ps/tmac.ps (PSPIC): Do the .sp after the \X, and move the \X - down with \v, so as to avoid problems with top of page trap - setting no space mode. - -Tue Oct 22 17:38:49 1991 James Clark (jjc at jclark) - - * eqn/lex.c (get_delimited_text): Allow tab before macro body. - -Tue Oct 15 17:24:53 1991 James Clark (jjc at jclark) - - * ps/psrm.c (ps_get_line): Fix bug when lines longer than 255. - Improve error message. - -Fri Oct 11 11:09:38 1991 James Clark (jjc at jclark) - - * ps/psrm.c (print_ps_string): Don't pass negative numbers to - printf("%03o"); - -Wed Oct 9 17:50:14 1991 James Clark (jjc at jclark) - - * groff.c (possible_command::execp): Always use _exit() after a - failed exec. - - * Makefile: Add HAVE_UNION_WAIT, HAVE_PID_T, WAIT_COREDUMP_0200, - NO_SYS_WAIT_H configuration options. - * groff.c: Use these options. Use POSIX-style macros to extract - fields from the status returned by wait(). - -Fri Oct 4 12:12:27 1991 James Clark (jjc at jclark) - - * tbl/table.c (table::compute_separation_factor): Allow the - separation factor to drop to 0. - -Tue Oct 1 18:12:38 1991 James Clark (jjc at jclark) - - * refer/search.c: Include . - -Sun Sep 29 08:40:57 1991 James Clark (jjc at jclark) - - * pic/pic.y (YYDEBUG): Don't define for Borland C++. - - * lib/lib.h: #ifdef out declarations of itoa and iftoa for Borland - C++. - - * pic/lex.c (input_stack::bol): Move definition out of class body. - - * pic/main.c: On MSDOS munge argv[0]. - - * lib/ptable.h: Define name2 as _Paste2 for Borland C++. - - * lib/ptable.c (hash_string): Use unsigned long rather than - unsigned. - (next_ptable_size): Use unsigned rather than int. Give an error - message if we've hit the largest table size. - * lib/ptable.c: Corresponding changes. Also use unsigneds for the - table size. - - * pic/object.h (object_spec): Make flags unsigned long. Declare - flags as const unisgned long rather than as enums. - - * pic/output.c: Deleted. - - * pic/troff.c (troff_output::simple_ellipse): Remove spurious %. - - * tbl/table.c (simple_entry::note_double_vrule_on_{left,right}): - Add additional argument. - (line_entry::note_double_vrule_on_{left,right}): Set value of - douvle_vrule_on_{right,left} flag according to argument. - (simple_line_entry::simple_print, - simple_line_entry::double_line_print): If adjacent to double vrule - on a corner extend rather than shorten the rule by half the double - vrule sep. - - * troff/number.c (parse_term): In checking for overflow, handle the - case where the current horizontal position is negative. - -Thu Sep 12 08:26:09 1991 James Clark (jjc at jclark) - - * pic/object.c (draw_arrow): Check for object having zero length. - -Wed Sep 11 10:32:38 1991 James Clark (jjc at jclark) - - * eqn/main.c (do_file): Split off inline equation handling into... - (inline_equation): New function. Search for starting delimiter - using... - (delim_search): New function. Don't recognize a delimiter that - occurs in the name of an escape sequence, number register, string - etc. - -Tue Sep 10 04:01:11 1991 James Clark (jjc at jclark) - - * eqn/delim.c (delim_box::compute_metrics): Don't call - define_extensible_string if left is 0. - (delim_box::output): Don't print the left delimiter if left is 0. - (delim_box::debug_print): Check for left == 0 before calling printf. - -Fri Aug 23 13:02:30 1991 James Clark (jjc at jclark) - - * troff/Makefile (majorminor.c): Include only digits in - minor_version. - -Thu Aug 22 09:35:37 1991 James Clark (jjc at jclark) - - * refer/dirnamemax.c: new file. - * refer/genlimits.c: Deleted. - * refer/indxbib.c (main): Use dir_name_max() instead of NAME_MAX. - Don't check path length. - * refer/Makefile: Add dir_name_max.o; delete genlimits. - * Makefile: Add PATHCONF_MISSING option. - - * refer/indxbib.c (get_cwd): New function. - (main): Use get_cwd(). - * lib/getcwd.c: New file. - * Makefile: Delete -DHAVE_GETWD. Include GETCWD variable. Pass - GETCWD in SUBFLAGS. - * lib/Makefile: Compile getcwd.o. - - * ps/tmac.psatk (psatk-defs): Define showpage after pushing - userdict. - - * refer/indxbib.c (main): Check success of mktemp. - - * lib/tmpfile.c: New file. - * lib/Makefile: Add tmpfile.c. - * lib/lib.h: Declare xtmpfile(); include . - * ps/ps.h: Delete declaration of mktemp(). - * ps/ps.c (ps_printer::ps_printer): Use xtmpfile(). - * refer/refer.c (divert_to_temporary_file): Use xtmpfile(). - * driver/driver.h: No need now to include errno.h. - - * everywhere: Set errno to 0 before calling fopen(). - - * eqn/eqn.h, etc/soelim.c, driver/driver.h, etc/addftinfo.c, - dvi/tfmtodit.c, groff.c, refer/index.c, refer/linear.c, - refer/lookbib.c, refer/refer.h, ps/psbb.c: Include . - -Mon Aug 19 10:52:18 1991 James Clark (jjc at jclark) - - * troff/env.h (translate_space_to_dummy): Declare it. - * troff/env.c (environment::space_newline, environment::space): - If translate_space_to_dummy is set then make the width of spaces 0. - * troff/input.c (translate): If the second character of a - translation is a space, translate to unbreakable space. If the - first character is a space, set or clear translate_space_to_dummy - according to whether the second character is \&. Weird! - -Tue Jul 30 10:03:56 1991 James Clark (jjc at jclark) - - * groff.c (run_commands): Don't use non-zero exit code because a - command gets SIGPIPE. - - * groff.c, groff.sh: Use -mXps with -TXps. - - * ps/ps.c (ps_printer::special): Move call to flush_sbuf() into... - (ps_printer::do_exec, ps_printer::do_file, ps_printer::do_def, - ps_printer::do_mdef, ps_printer::do_import): Call flush_sbuf(). - (ps_printer::special): New specials invis and endinvis. - (ps_printer::do_invis, ps_printer::do_endinvis): New functions. - (ps_printer::set_char, ps_printer::draw): Return if invis_count>0. - (ps_printer::end_page): Check that invis_count == 0. - (ps_printer::invis_count): New member. - (ps_printer::ps_printer): Initialize invis_count to 0. - - * troff/env.c (environment::hyphenate_line): Hyphenation - indicator at beginning of word inhibits splitting after -, \(em - etc. - - * pic/pic.y (element): Allow another element to follow } without - any intervening separator. - -Mon Jul 22 12:27:37 1991 James Clark (jjc at jclark) - - * pic/lex.c (get_delimited): Allow tabs before delimiter. - -Wed Jul 17 10:59:08 1991 James Clark (jjc at jclark) - - * groff.c: Get rid of HAVE_UNION_WAIT stuff. Instead suppress - declaration of wait() in header files. - * Makefile: Get rid of -DHAVE_UNION_WAIT. - - * tbl/table.c (alphabetic_text_entry::add_tab): New function. - - * lib/lib.h: Declare return type of strerror as char *. - - * man/Makefile: Add g flag to sed substitutions. - * Makefile (shgroff, bindist): Likewise. - -Sun Jul 14 11:57:02 1991 James Clark (jjc at jclark) - - * ps/ps.c (ps_printer::do_import): Move push of userdict into... - * ps/devps/prologue (PBEGIN): Define showpage after pushing - userdict. - -Sat Jul 13 20:53:04 1991 James Clark (jjc at jclark) - - * ps/devps/prologue (PBEGIN): Zap any definition of showpage in - userdict. - -Fri Jul 12 07:10:09 1991 James Clark (jjc at jclark) - - * man/mdate.sh: Handle the fact that BSD ls -l does not print the - group. - -Sun Jul 7 08:00:23 1991 James Clark (jjc at jclark) - - * troff/input.c (define_number_reg): If currently undefined, - don't define it if the argument is an invalid expression. - - * Makefile: Ignore return value of `if' commands without `else' - parts. - - * Makefile: Split up CPPDEFINES into a series of separate - configuration options. - - * troff/input.c (init_registers): Use time_t instead of long - unless LONG_FOR_TIME_T is defined. Use returned result rather - than passing pointer. - * Makefile: Document LONG_FOR_TIME_T as a CPPDEFINE. - - * lib/Makefile (fontpath.h): Use gendef. - -Thu Jul 4 09:48:05 1991 James Clark (jjc at jclark) - - * troff/input.c (input_iterator::shift): Delete argument name. - * troff/node.c (suppress_output_file::really_begin_page, - suppress_output_file::really_transparent_char, node::ascii_print, - node::tprint): Delete names of unused arguments. - -Wed Jul 3 17:34:57 1991 James Clark (jjc at jclark) - - * refer/label.y (string): Pass $4 to command_error. - -Tue Jul 2 15:06:01 1991 James Clark (jjc at jclark) - - * Version 1.03 released. - -Sat Jun 29 08:14:01 1991 James Clark (jjc at jclark) - - * Makefile: Pass definition of SHELL in SUBFLAGS. - - * gendef: New file. - * Makefile, eqn/Makefile, refer/Makefile, troff/Makefile, - ps/Makefile: Use gendef to construct header files that are - constructed from the Makefile. - - * macros/Makefile: make all should build stripped version of tmac.e. - - * refer/Makefile (clean): Remove y.output. - -Fri Jun 28 09:44:36 1991 James Clark (jjc at jclark) - - * ps/pfbtops.c (main): Add -v option which prints out a version - number. - * ps/Makefile (pfbtops): Link with libgroff.a. - -Fri Jun 21 07:43:23 1991 James Clark (jjc at jclark) - - * refer/search.h (linear_searcher::get_nkeys): Delete declaration. - * refer/linear.c (linear_searcher::get_nkeys): Delete definition. - - * refer/lkbib.c (main): Always terminate reference with blank - line. - * refer/lookbib.c (main): Likewise. - - * refer/linear.c (file_buffer::load): Check that the file is not a - binary file. - - * refer/Makefile (genlimits): Possibly add -DHAVE_SYS_DIR_H. - (genlimits.c): Include if HAVE_SYS_DIR_H is defined. - Delete second inclusion of . - -Tue Jun 18 01:32:26 1991 James Clark (jjc at jclark) - - * troff/token.h (token::special): Deleted. - - * tbl/main.c (process_format): Rework so that opt->tab_char is - recognized only when appropriate. - - * ps/Makefile (clean): Remove pfbtops. - -Sun Jun 16 09:37:19 1991 James Clark (jjc at jclark) - - * lib/font.c (text_file::next): Don't return if we have got a - blank line. - -Fri Jun 14 09:52:26 1991 James Clark (jjc at jclark) - - * refer/refer.c (store_reference): Get hash code from old_table[i] - when rehashing the table. - -Thu Jun 13 01:26:43 1991 James Clark (jjc at jclark) - - * eqn/box.c (box::top_level): Save size and prev size using \R and - restore it afterwards. Set the size to the size at the beginning - of the line. - * eqn/pbox.h: Declare SAVED_INLINE_PREV_SIZE_REG, - SAVED_INLINE_SIZE_REG, and SAVED_SIZE_REG. - - * refer/Makefile (limits.h): Use ./genlimits. - -Wed Jun 12 16:05:34 1991 James Clark (jjc at jclark) - - * refer/index.c: Delete declarations of stat() and fstat(). - -Tue Jun 11 14:52:49 1991 James Clark (jjc at jclark) - - * tty/tmac.tty: Add character definitions for \(>= and \(<=. - -Mon Jun 10 22:49:48 1991 James Clark (jjc at jclark) - - * etc/grog.sh, etc/grog.pl: Change regex for .PS. - -Fri Jun 7 09:13:06 1991 James Clark (jjc at jclark) - - * troff/input.c (token::get_char): Handle \e. - - * refer/linear.c: Delete declarations of fstat() and stat(). - -Wed Jun 5 09:11:59 1991 James Clark (jjc at jclark) - - * troff/node.c, troff/env.c, troff/input.c, Makefile: Remove - OP_DELETE_BROKEN stuff, since we now have a fix for g++. - -Mon Jun 3 13:41:32 1991 James Clark (jjc at jclark) - - * troff/input.c (do_define_macro): Improve error handling for end - of file while defining macro. - -Sun Jun 2 10:20:24 1991 James Clark (jjc at jclark) - - * eqn/box.h: Fix declaration of set_gsize. - * eqn/box.c (set_gsize): Make argument const char *. - (gsize): Declare as char *. - * eqn/main.c (main): Don't convert gsize to int. - * eqn/lex.c (do_gsize): Pass char * to set_gsize. - - * Version 1.02 released. - -Sat Jun 1 12:19:46 1991 James Clark (jjc at jclark) - - * macros/tmac.andoc: New file. - * macros/Makefile: Install tmac.andoc. - - * troff/node.c, troff/env.c, troff/input.c: Conditionalize use of - operator new and delete on OP_DELETE_BROKEN not being defined. - * Makefile: Mention OP_DELETE_BROKEN. - -Mon May 27 13:49:07 1991 James Clark (jjc at jclark) - - * Makefile (bindist): Pass SUBFLAGS. - -Sun May 26 14:13:22 1991 James Clark (jjc at jclark) - - * Makefile, groff.c: Pass definitions to groff.c via device.h. - - * tty/tty.c (tty_font::load_tty_font): Avoid shadowing - parameter. - - * ps/Makefile, ps.c: Pass BROKEN_SPOOLER_FLAGS via broken.h. - - * ps/ps.h, ps/psrm.c: Make comment_table and - header_comment_table local to resource_manager::process_file. - - * groff.sh: With -TXps pass -printCommand option to gxditview. - - * groff.c (possible_command::print): Implement using - append_arg_to_string. - - * xditview: Merge in new implementation with own ChangeLog. - -Sat May 25 18:33:20 1991 James Clark (jjc at jclark) - - * groff.c (main): Implement PRINT_OPTION. - (append_arg_to_string): New command. - (device_table): Set PRINT_OPTION flag for Xps. - -Fri May 24 09:48:58 1991 James Clark (jjc at jclark) - - * troff/groff.h: Rename to troff.h. - - * pic/lex.c (lookup_keyword, docmp): New functions. - (get_token): Use new lookup_keyword. - Don't include key.h. - * pic/key.[ch], pic/pic.gperf: Deleted. - * pic/Makefile: Remove gperf stuff. - - * pic/Makefile, pic/output.h: Move definition of TEX_SUPPORT - into output.h. - * pic/tex.c: Move include of pic.h before test of TEX_SUPPORT. - - * troff/Makefile, troff/node.c: Move definition of - STORE_WIDTH into node.c. - - * etc/grog.pl, etc/grog.sh: Support -mdoc. - -Thu May 23 12:30:49 1991 James Clark (jjc at jclark) - - * dvi/devdvi/texr.map, dvi.devdvi/texi.map, - dvi/devdvi/texb.map: Add lq and rq. - dvi/devdvi: Regenerate fonts. - * ps/devps/textmap: Add lq and rq. - * ps/devps: Regenerate fonts. - * tty/devascii/R.proto, tty/devlatin1/R.proto: Add lq and rq. - * macros/tmac.e: Define \*(lq and \*(rq to be \(lq and \(rq. - - * pic/object.c (position_rectangle): When checking radius - cope with possiblity that width or height is negative. - (box_object::box_object): Have separate xrad and yrad with - signs matching signs of dim components. - (box_object::{north,south}_{east,west}): Use xrad and yrad. - (box_object::print): With rounded boxes use absolute values - for dim and rad arguments. - - * lib/Makefile, lib/fontfile.o: Pass definition of FONTPATH - in fontpath.h. - - * eqn/Makefile, eqn/main.c: Pass definition of DEVICE in device.h. - - * various files: Add explicit destructors to keep Saber CC +d - happy. - -Wed May 22 11:37:11 1991 James Clark (jjc at jclark) - - * eqn/box.c (box::top_level): Restore fonts correctly after - font changes in line containing inline equation. Also - restore previous font as well as current font. - * eqn/pbox.h: Define necessary string and register names. - - * troff/input.c (token::next): Case 'R' calls do_register. - (do_register): New function. - -Tue May 21 11:28:23 1991 James Clark (jjc at jclark) - - * groff.c, groff.sh: Support Xps device. Allow each device - to have a pseudo_name and a real_name. - - * groff.c (run_commands): Don't print `Broken pipe' messages. - - * ps/pfbtops.c: New file. - * ps/Makefile: Add pfbtops. - - * troff/number.c (parse_term): Improved error message. - -Mon May 20 11:22:14 1991 James Clark (jjc at jclark) - - * groff.c, groff.sh, etc/grog.sh, etc/grog.pl: Support grefer. - - * Makefile: Integrate refer. - * refer: New directory. - * man/grefer.man, man/glookbib.man, man/gindxbib.man, - man/lkbib.man: New files. - * man/Makefile: Support refer man pages. - - * lib/lib.h: Declare is_prime. - * lib/prime.c: New file. - - * troff/input.c (macro_source): New function. - (init_input_requests): Bind "mso" to macro_source. - - * troff/env.c (environment::possibly_break_line): Maintain - pointer to pointer to node to be split in ndp so as to avoid - using address of freed node. - - * troff/env.c (environment::hyphenate_line): Maintain pointer to - pointer to first node to be hyphenated in startp so as to - avoid using address of freed node. - - * troff/env.c (class trie, class hyphen_trie): Make the - elements of the trie be of type char not unsigned char. - Declare arguments to be const char* instead of unsigned char *. - - * troff/env.c (hyphenate): Initialize hbuf[0]. - - * troff/input.c (set_string): Declare p to be char * and cast - *p to unsigned char when necessary. - - * troff/input.c (do_define_macro): Declare s to be const - char*. Cast element to unisgned char when necessary, Declare - d to be an int. Handle EOF better. - - * troff/Makefile, troff/input.c: Different scheme for passing - definitions of MACROPATH, HYPHENFILE and DEVICE. - -Tue May 14 13:41:36 1991 James Clark (jjc at jclark) - - * tty/devascii/R.proto: Delete entry for em. - * tty/devlatin1/R.proto: Likewise. - -Sat May 11 11:13:28 1991 James Clark (jjc at jclark) - - * troff/input.c (translate): Stop when we get a space. Treat eof - like newline. - - * macros/tmac.an (IP): Only pass quoted argument to TP when \n(.$>1. - -Wed Apr 24 19:24:33 1991 James Clark (jjc at jclark) - - * tbl/main.c (process_format): A font name following a `f' - modifier that starts with a digit can be only one character long. - Also deal with EOF on the second character of the font name. - -Wed Apr 17 11:23:43 1991 James Clark (jjc at jclark) - - * troff/input.c (token::next): Turn \~ into an - unbreakable_space_node. - * troff/node.c (unbreakable_space_node): New class. - * troff/node.h: Declare it. - -Tue Apr 16 10:47:12 1991 James Clark (jjc at jclark) - - * dvi/dvi.c (dvi_printer::set_char): Make code an int. Check that - it's >= 0, before outputting it as a single byte. - -Mon Apr 15 11:20:23 1991 James Clark (jjc at jclark) - - * lib/font.c: Make font_char_metric::code an int. - (font::get_code): Change return type to int. - (font::load): Allow code to be arbitrary integer. - * lib/font.h (font::get_code): Change return type to int. - (font::number_to_index): Change argument type to int. - * troff/input.c (token::next): In case 'N', allow any value. - Store value in token::val. - (token::operator==): For TOKEN_NUMBERED_CHAR test equality of val. - (token::get_char, token::add_to_node_list, token::process): Get - number from val. - (charinfo::set_number): Change argument to int. - (charinfo::get_number): Require that NUMBERED flag be set. - (get_charinfo_by_number): Store numbered characters not between 0 - and 255 in a dictionary. - * troff/charinfo.h (get_charinfo_by_number): Change argument type - to int. - (charinfo::number): Change type to int. - (charinfo::set_number): Change type of set_number to int. - * troff/node.c (troff_output_file::put_char_width, - troff_output_file::put_char): Test whether character is numbered - using charinfo::numbered(). - * driver/printer.c (printer::set_numbered_char): Allow arbitrary - values of num. - * lib/nametoindex.c: New implementation to cope with arbitrary - number characters. - - * troff/input.c (token::operator==): Test val for - TOKEN_CHAR_HEIGHT, TOKEN_CHAR_SLANT, TOKEN_FONT_POSITION, and - TOKEN_SIZE. - - * man/Makefile: Add definiton of BROKEN_SPOOLER_FLAGS. - (.man.n): sed out @BROKEN_SPOOLER_FLAGS@. - -Sun Apr 14 12:57:00 1991 James Clark (jjc at jclark) - - * ps/devps/zapfdr.ps: Don't copy UniqueID. Avoid use of newdict - variable. - - * all Makefiles: rm targets of cp and >. - - * xditview/xtotroff.c (MapFont): Unlink troff_name before opening - it. - - * eqn/lex.c (def_table): Add dollar. - -Sat Apr 13 13:02:44 1991 James Clark (jjc at jclark) - - * troff/input.c (do_width): Push back newline before closing delim - like do_bracket. - -Fri Apr 12 15:16:03 1991 James Clark (jjc at jclark) - - * groff.c (possible_command::prepend_arg): New function. - (main): Prepend device -m option. - * groff.sh: Put device -m options before command-line options. - -Tue Apr 9 10:24:43 1991 James Clark (jjc at jclark) - - * macros/tmac.an (IP): Quote argument to TP. - - * ps/ps.c (main): New option -b, which sets... - (broken_flags): New variable. - (ps_printer::~ps_printer): Incorporate the setup section in the - prolog if (broken_flags & NO_SETUP_SECTION). - (ps_printer::begin_page): Generate {Begin,End}PageSetup comments. - (ps_printer::merge_download_fonts, ps_printer::merge_import_fonts, - ps_printer::merge_ps_fonts, ps_printer::print_font_comment, - ps_printer::print_needed_font_comment, - ps_printer::print_supplied_font_comment, - ps_printer::print_include_font_comments, - ps_printer::lookup_doc_font, ps_printer::download_fonts, - ps_printer::read_download_file, read_document_fonts, add_font, - skip_line, parse_fonts_arg, document_font::document_font, - document_font::~document_font, document_font::download, - ps_output::include_file): Deleted. - (ps_printer::~ps_printer): Generate %%EOF. Generate %!PS-Adobe-3.0 - rather than %!PS-Adobe-2.0. Make calls to - resource_manager::need_font for each font that we used. Replace - calls to merge_ps_fonts, merge_download_fonts, print_font_comment, - print_supplied_font_comment, print_needed_font_comment by call to - resource_manager::print_header_comments. Output %%Orientation - comment. Output %%Requirements: numcopies comment if ncopies > 1. - Don't output the prolog directly. Instead call - resource_manager::output_prolog. Only define #copies when ncopies - > 1. Delete calls to print_include_font_comments and - download_fonts. Add call to resource_manager::document_setup. - (ps_printer::do_file): Call resource_manager::import_file instead - of including it ourselves. - (ps_printer::do_import): Likewise. Also don't call - merge_import_fonts. Push userdict on the dictionary stack before - and pop it afterwards. - Move declaration of ps_output into ps.h. - * ps/psrm.c: New file implementing resource_manager class. - * ps/ps.h: New file declaring ps_output and resource_manager - classes. - * ps/devps/zapfdr.ps: - * ps/devps/symbolsl.ps: - * ps/devps/prologue: Use 3.0 conventions. - * ps/Makefile: Pass definition of BROKEN_SPOOLER_FLAGS in DEFINES. - Add default definition of BROKEN_SPOOLER_FLAGS. - * Makefile: New variable BROKEN_SPOOLER_FLAGS. Add - BROKEN_SPOOLER_FLAGS to SUBFLAGS. - -Mon Apr 8 09:26:54 1991 James Clark (jjc at jclark) - - * etc/grog.pl: New file. - * Makefile (GROG): New variable. - Add GROG to SUBFLAGS. - * etc/Makefile (GROG): New variable. - (install.nobin): Install $(GROG) rather than grog.sh. - -Thu Apr 4 11:36:45 1991 James Clark (jjc at jclark) - - * eqn/special.c (special_box::compute_metrics): Make the input and - output strings the same. Get the new height and depth from the - predefined height and depth registers. Also make subscript kern - and skew available. - (special_box::compute_subscript_kern, special_box::compute_skew): - New functions. - - * eqn/box.c (pointer_box::compute_skew, - simple_box::compute_metrics, box::top_level) - * eqn/text.c (prime_box::compute_metrics, - prime_box::comput_subscript_kern) - * eqn/limit.c (limit_box::compute_metrics): - * eqn/delim.c (build_extensible, delim_box::compute_metrics): - * eqn/sqrt.c (sqrt_box::compute_metrics): Protect possibly - negative numbers in `nr' requests with a leading 0. - -Wed Apr 3 15:58:23 1991 James Clark (jjc at jclark) - - * eqn/special.c: New file. - * eqn/eqn.y: Declare token SPECIAL. Make it right associative. - Add new rule for simple. - * eqn/lex.c (token_table): Add SPECIAL. - * eqn/box.h: Declare make_special_box. - * eqn/Makefile: Add special.[co]. - -Sat Mar 30 10:57:53 1991 James Clark (jjc at jclark) - - * ps/devps/prologue: Possibly set packing to true while defining. - Create grops dictionary here. Initialize local variables before - defining procedures. - (PICTURE): Rename to PBEGIN. Also do save, noop showpage, count - the dictionary stack. Set strokeadjust and overprint to false if - the relevant operators are defined. - (PEND): New procedure. - * ps/ps.c (ps_printer::~ps_printer): In the prolog just include - prologue. Do everything else in the setup section. - (ps_printer::do_import): Just call PBEGIN and PEND around the - picture. Also push userdict before, and pop it afterwards. - -Wed Mar 27 07:59:50 1991 James Clark (jjc at jclark) - - * troff/node.c (bracket_node::tprint): Brackets were being printed - 1m too low. - - * macros/tmac.an (SH, SS): Set fill mode. - -Tue Mar 26 07:46:31 1991 James Clark (jjc at jclark) - - * troff/div.c (top_level_diversion::begin_page): Set - high_water_mark to 0. - -Fri Mar 22 09:19:46 1991 James Clark (jjc at jclark) - - * man/mdate.sh: New file. - * man/mdate.c: Deleted. - * man/Makefile: Use mdate.sh instead of mdate. - (mdate): Deleted. - - * eqn/lex.c (do_gsize): Supply missing argument to error message. - -Tue Mar 19 11:06:50 1991 James Clark (jjc at jclark) - - * man/mdate.c: New file. - * man/*.man: Replace modification date by @MDATE@. - * man/Makefile (.man.n): Replace @MDATE@ by `mdate $<`. - (mdate): New target. - - * lib/font.c (text_file::next): Deal with arbitrarily long lines. - Remove illegal input characters. - -Mon Mar 18 08:32:25 1991 James Clark (jjc at jclark) - - * macros/tmac.s (pg*start-col): Do .ns *after* running the hooks. - -Sat Mar 16 03:52:25 1991 James Clark (jjc at jclark) - - * troff/div.c (begin_page): Change behaviour when - !first_page_begun and !break_flag. - - * troff/input.c (do_name_test): Return 0 if argument is empty. - - * troff/input.c (read_long_escape_name): Require closing ] to be - at same input level as opening [. - - * troff/input.c (read_increment_and_escape_name): New function. - (get_copy, process_input_stack): Use this for \n. - -Fri Mar 15 00:31:48 1991 James Clark (jjc at jclark) - - * troff/div.c (top_level_diversion::begin_page): Ignore the - current value of page_number if !first_page_begun. - - * groff.c (main): Fix declaration of buf. - - * troff/input.c (do_name_test): New function. - (token::next): Implement \A. - (token::next): Implement \e by turning it into a TOKEN_ESCAPE. - (token::description, token::add_to_node_list, token::process): - Handle TOKEN_ESCAPE. - * troff/token.h: New token TOKEN_ESCAPE. - -Thu Mar 14 10:22:26 1991 James Clark (jjc at jclark) - - * pic/main.c (do_picture): Allow space before and after filename - following `<'. Check that the filename is not empty. - -Wed Mar 13 12:49:40 1991 James Clark (jjc at jclark) - - * Version 1.01 released. - - * dvi/devdvi/CompileFonts: Add cm*ss10 fonts. - - * dvi/tmac.dvi: ftr HR to H. - - * macros/tmac.e: Round up computation of $r. - - * xditview/tmac.X: Don't give up completely in compatibility mode. - Use \n(.s instead of \n[.s]. - - * dvi/tmac.dvi: Don't give up completely in compatibility mode. - Use \(ci instead of \[ci]. Use \n(.s instead of \n[.s]. - Add u to factors inside \s[...]. Rename frac to dvi-frac. - Translate \(FM onto \[prime] and \(!/ onto \[slashnot]; use these - short names in the char definitions. - - * ps/tmac.ps: Don't give up completely in compatibility mode. - Fix the fraction definitions to use \n(.s and \(f/. Add an extra - quote in front of \n(.s. Add u to factors inside \s[...]. - -Mon Mar 11 12:01:20 1991 James Clark (jjc at jclark) - - * tty/tmac.tty: Call the nroff request. - - * macros/tmac.e ((x, )x): Better definitions that work properly - in a diversion. - (@0, @1): Helper macros for (x. - - * macros/tmac.e ($s, hl): Use \l rather than \D. - - * tty/tmac.tty: Make it work better in compatibility mode. - (pchar): Rename to tty-char. - - * macros/tmac.e (@E): New macro. - (r, i, b, rb, bi): Use @E. - - * macros/tmac.e (@F): Don't use (;...) syntax. - - * macros/tmac.e: Remove mention of \*(||/revisions. Mention that - it was modified for groff. - - * macros/tmac.e: Make sure \n(ps and \n(es are >= \n(.V. - - * macros/tmac.e (<., .>): Removed. - ([., .]): If \n(.V>=1v, use [] instead of superscripting. - - * macros/tmac.e: Remove check that groff is being used. - - * macros/tmac.e (@C): Change families only if using groff; turn - compatibility mode off while changing familes. Save compatibility - mode before changing families and restore it afterwards. - - * macros/tmac.e (@h): Remove test for offset + line length. - - * macros/tmac.e (sorry): Rename to @S. Use \$1 instead of \$0 - (lo, th, ac): Define to call @S instead of using als. - - * macros/tmac.e: Make $r and $R now contain \n(.v*100/\n(.sp, ie - the ratio of the vertical spacing to the point size in units - expressed as a percentage. Use these instead of $10r and $10R, - Delete $10r and $10R. - - * lib/font.c (font::load): In default computation of space_width, - divide by sizescale. Use scale_round. - - * macros/tmac.an (TP): Don't call `nf'. - (an-do-tag): Don't call `fi'. - -Sun Mar 10 09:52:35 1991 James Clark (jjc at jclark) - - * troff/input.c (process_input_stack): Handle the case where - spaces at the beginning of an input line are followed by a - newline. - -Thu Mar 7 20:18:07 1991 James Clark (jjc at jclark) - - * groff.c (device_table): Add PIC_X_OPTION for dvi device. - * groff.sh: Use pic -x with the dvi device. - - * dvi/devdvi/FontMakefile (H): Don't use -s. - - * dvi/devdvi/HI, dvi/devdvi/HB: New files. - * dvi/devdvi/Makefile: Add HI and HB to FONTS. - * dvi/devdvi/FontMakefile: Add rules for HI and HB. Include these - in FONTS. - -Mon Mar 4 13:20:14 1991 James Clark (jjc at jclark) - - * ps/psfig.diff: New file. - * ps/tmac.psfig: New file. - -Sat Mar 2 00:15:09 1991 James Clark (jjc at jclark) - - * macros/tmac.s (]=, ref*do-tl, ref*bib-print): Deleted. - (]-): Don't call ref*do-tl. - - * macros/tmac.s (ref*end-print): Use XP if [F not defined. - - * macros/tmac.s (ref*normal-print): Call FS rather than fn@do-FS. - (fn@do-FS): Rename to fn*do-FS. - - * troff/input.c (transparent_translate): New function. - (process_input_stack): Apply transparent_translate before calling - diversion::transparent_output(unsigned char). - -Wed Feb 27 00:13:25 1991 James Clark (jjc at jclark) - - * troff/input.c (do_define_macro): Define the macro before calling - skip_line. - - * xditview/Makefile: Add DEVICES variable. Change install target - to use this. - -Tue Feb 26 10:46:22 1991 James Clark (jjc at jclark) - - * groff.c (run_commands): Handle the possibility that there are - child processes other than those forked by us. - -Sun Feb 24 21:32:30 1991 James Clark (jjc at jclark) - - * lib/string.c (string::append): New function. - * lib/stringclass.h: Declare it. - -Thu Feb 21 11:49:26 1991 James Clark (jjc at jclark) - - * eqn/main.c (main): New option -N which sets - no_newline_in_delim_flag. - (do_file): If no_newline_in_delim_flag is set don't allow newlines - in delimiters. - * groff.c (main): Pass -N on to eqn. - (help, synopsis): Mention -N. - * groff.sh: Implement -N. - -Wed Feb 20 15:16:10 1991 James Clark (jjc at jclark) - - * macros/tmac.s (]=, ref*bib-print, ref*do-tl): New macros. - (]-): Call ref*do-tl if ref*need-tl is non-zero. - (XP): Allow as initializer. - -Tue Feb 19 14:09:06 1991 James Clark (jjc at jclark) - - * troff/env.c (environment::wrap_up_field): If field_spaces are - non-zero and we have a current_tab, subtract padding from - tab_distance. If this makes tab_distance <= 0, use the next tab - stop instead. If there isn't any next tab or it's a left tab, - wrap up the current tab. - (environment::start_field): Initialize tab_precedes_field. - (environment::wrap_up_tab): If there's a current field, update - pre_field_width, field_distance and tab_precedes_field. - * troff/env.h (environment::tab_precedes_field): New member. - -Fri Feb 15 01:24:00 1991 James Clark (jjc at jclark) - - * ps/ps.c (ps_printer::do_file): New function. - (ps_printer::special): Bind to `file' special. - (ps_printer::do_exec): Set ndefined_styles to 0. - -Sat Feb 9 03:03:04 1991 James Clark (jjc at jclark) - - * eqn/text.c (split_text): Grok \* and similar escapes sequences. - Avoid stripping first character from the start of unrecognized - escapes. Use lex_error instead of error to report errors. - * eqn/lex.c (get_token): Rework handling of escapes. - (lex_error): Move declaration into... - * eqn/eqn.h. - - * xditview/xditview.c (main): Make -page option work. - - * Makefile: Correct comment about -DBROKEN_SPOOLER and pageview. - -Wed Feb 6 12:28:43 1991 James Clark (jjc at jclark) - - * macros/tmac.s (B2): Correct size of box. - -Tue Feb 5 00:37:35 1991 James Clark (jjc at jclark) - - * macros/tmac.s (B2): Postpone drawing the box until in the - top-level diversion. - - * tty/tmac.tty: Add font translations for C, CR, CW. - - * groff.c (synopsis, help): Document -i. - * groff.sh: Implement -i. - - * macros/tmac.s (@NH): Put a `.' after multi-part numbers. - Simplify the construction of SN. - - * troff/number.c (parse_term): Give `|' a higher precedence. - * tbl/table.c (numeric_text_entry::simple_print): Parenthesise - accordingly. - - * macros/tmac.s (B2): Use par@finish instead of par@reset. - -Mon Feb 4 12:36:09 1991 James Clark (jjc at jclark) - - * lib/string.c (string::move): New function. - * lib/stringclass.h: Declare it. - -Sat Feb 2 16:02:16 1991 James Clark (jjc at jclark) - - * troff/env.c (distribute_space): Add optional argument - `force_forward'. - (environment::wrap_up_field): Call distribute_space with - `force_forward' argument of 1. - -Fri Feb 1 19:36:33 1991 James Clark (jjc at jclark) - - * lib/string.c, lib/stringclass.h (string::operator+=(char)): - Inline it. Move reallocation into... - (string::grow1): New function. - * pic/Makefile, tbl/Makefile, eqn/Makefile, ps/Makefile: Redo - dependencies to include library header files. - * lib/Makefile: Make string.c and lf.c depend on stringclass.h. - -Thu Jan 31 15:02:27 1991 James Clark (jjc at jclark) - - * macros/tmac.s (@NH): Use the same number registers than -ms does - for the heading level counters. Use the same string that -ms does - for the number for this heading. - -Wed Jan 30 14:25:40 1991 James Clark (jjc at jclark) - - * lib/new.c (operator new): Cast result of malloc to char *. - - * troff/input.c (spring_trap, lookup_request): Add assert that nm - is not null. - -Tue Jan 29 18:08:05 1991 James Clark (jjc at jclark) - - * groff.c (main): Support -i. - -Sun Jan 27 13:23:17 1991 James Clark (jjc at jclark) - - * pic/pic.h: Include . - - * ps/ps.c: Add declaration of mktemp. - - * Makefile: Add -DHAVE_UNION_WAIT option for CPPDEFINES. - * groff.c: If HAVE_UNION_WAIT is defined, declare wait()'s - argument as union wait *. - (run_commands): If HAVE_UNION_WAIT is defined cast wait()'s - argument to union wait *. - -Sat Jan 26 12:04:52 1991 James Clark (jjc at jclark) - - * tty/tmac.tty: Add definition of \(co. - - * pic/object.c (make_arc): Only increase radius when radius - strictly less than d. - (arc_object::update_bounding_box): May need to add 4.0 to end_quad - more than once. - - * troff/env.c (environment::environment(symbol), - environment::environment(const environment *)): Initialize - input_trap_count. - -Sat Jan 19 08:18:35 1991 James Clark (jjc at jclark) - - * tbl/main.c (main): Add exit(0). - - * ps/ps.c (ps_printer::~ps_printer): Use fseek instead of rewind. - - * pic/main.c (main): - * eqn/main.c (main): - * tbl/main.c (main): - * etc/soelim.c (main): - * driver/printer.c (printer::~printer): - * troff/node.c (real_output_file::~real_output_file, - real_output_file::flush): Check for errors on stdout. - - * most files: Add 1991 to copyright notice. - - * macros/tmac.s: Don't test \n(.x and \n(.y. - - * troff/input.c (token::next): Rename `escape_char' label to - `handle_escape_char' and `normal_char' label to - `handle_normal_char'. - -Thu Jan 17 15:46:35 1991 James Clark (jjc at jclark) - - * groff.c (main, synopsis, help): Support -a option. - * groff.sh: Likewise. Also eliminate Zflag variable by adding -z - to trflags while parsing options. - -Tue Jan 15 13:07:27 1991 James Clark (jjc at jclark) - - * troff/number.c (parse_term): With `m', `M' and `n' scale - indicators, convert scale factor to hunits before scaling. - -Mon Jan 14 12:39:12 1991 James Clark (jjc at jclark) - - * lib/font.c (scale_round): Better test for overflow when n is - negative. - -Thu Jan 10 11:10:56 1991 James Clark (jjc at jclark) - - * tbl/main.c (process_format): Add second argument of type - options*. Change callers. Allow opt->tab_char as well as '\t' - between format items. - -Mon Jan 7 12:30:18 1991 James Clark (jjc at jclark) - - * macros/tmac.an (PD): With no arguments, make sure register PD is - at least \n[.V]. - (TH): Call PD with no argument, instead of setting register PD - directly. - -Sun Jan 6 11:18:39 1991 James Clark (jjc at jclark) - - * Version 1.00 released. - -Sat Jan 5 08:44:30 1991 James Clark (jjc at jclark) - - * ps/tmac.ps, xditview/tmac.X: Add font translation of C to CR. - - * dvi/devdvi/DESC: Mount CW instead of CR. - - * dvi/tmac.dvi: Add definition of \(tm. - - * dvi/devdvi/texsy.map: Add lh, and rh. - * dvi/devdvi/texex.map: Add lt, rt, lb, rb, lk, rk. - * dvi/devdvi/texmi.map: Add *o. Regenerate fonts. - - * dvi/devdvi/FontMakefile: Generate H from cmss10. - * dvi/devdvi/Makefile: Install H. - * dvi/devdvi/H: New file. - -Fri Jan 4 15:04:57 1991 James Clark (jjc at jclark) - - * troff/env.c (vertical_spacing): Don't allow vertical spacing to - be 0. - -Thu Jan 3 13:41:19 1991 James Clark (jjc at jclark) - - * macros/tmac.s (@EN): Add \n(.V to the argument to ds@need. - - * macros/tmac.pic (PS): Avoid attempting to set negative indent. - - * macros/tmac.s (@EN): Handle the case where the equation is empty - but the label is not. - -Wed Jan 2 10:31:44 1991 James Clark (jjc at jclark) - - * troff/groff.h: New warning category WARN_SPACE. - * troff/input.c: Add WARN_SPACE to DEFAULT_WARNING_MASK. Add - WARN_SPACE to warning_table. - (interpolate_macro): Give a warning of type WARN_SPACE if the name - is longer than two characters and is not defined, but the first - two characters do make a defined name. - - * PROBLEMS: New file. - - * CHANGES: New file. - * README-0.6, README-1.00: Deleted. - - * groff.c, groff.sh: Add X75-12 and X100-12 devices. - * xditview/devX75/Makefile: Make devX75-12. - * xditview/devX100/Makefile: Make devX100-12. - - * xditview/devX100/eqnchar, xditview/devX75/eqnchar, - dvi/devdvi/eqnchar, ps/devps/eqnchar: Remove use of \R. - -Tue Jan 1 19:24:01 1991 James Clark (jjc at jclark) - - * README-0.7: Rename to README-1.00. - - * macros/tmac.pic: New file. - * macros/Makefile (install.nobin): Install tmac.pic. - -Mon Dec 31 10:40:53 1990 James Clark (jjc at jclark) - - * troff/env.c (hyphen_word): Correct the test for whether the - token is a hyphen. Reset npos to 0. - - * macros/tmac.s (par@sup-start, par@sup-end): New implementations. - -Sun Dec 30 15:53:13 1990 James Clark (jjc at jclark) - - * macros/tmac.s (ds*common-end): Call par*reset. - (PE): Likewise. - (par@reset-indent): Deleted. - - * macros/tmac.s (@IP): Divert the label. - -Sat Dec 29 14:33:32 1990 James Clark (jjc at jclark) - - * xditview/draw.c (setGC): Use a line width of .1m rather than - .04m by default; round rather than truncate value. - - * tbl/table.c (class empty_entry): New class. - (empty_entry::empty_entry, empty_entry::line_type): New functions. - (table::add_entry): Represent empty entries by objects of type - empty_entry. - (table_entry::line_type): Return -1. - (table::determine_row_type): Ignore entries with line_type 0. - Treat type -1 as non-lines. - -Fri Dec 28 15:04:41 1990 James Clark (jjc at jclark) - - * ps/devps/textmap, xditview/libXdvi/DviChar.c, tty/devlatin1/R.proto, - macros/tmac.s: Rename \(-d to \(Sd. - -Thu Dec 27 12:35:47 1990 James Clark (jjc at jclark) - - * ps/devps/textmap: Add `sd', `/_' and `3d' characters. - * xditview/libXdvi/DviChar.c: Likewise. - * dvi/devdvi/texsy.map: Add `<<', `>>'. - -Wed Dec 26 13:33:23 1990 James Clark (jjc at jclark) - - * troff/div.c (top_level_diversion::begin_page): Call - init_output() if the_output is 0. - -Sat Dec 22 12:35:29 1990 James Clark (jjc at jclark) - - * troff/input.c: Replace ESCAPE_E by ESCAPE_e and ESCAPE_C by - ESCAPE_c. - (get_copy): Turn \E into ESCAPE_E. - (token::process, asciify): Handle ESCAPE_E. - - * macros/tmac.s (ds*common-end, par@reset): Add `.rj 0'. - (RD): New macro. - (DS): Implement `.DS R'. - -Fri Dec 21 11:41:53 1990 James Clark (jjc at jclark) - - * macros/tmac.s (FS): New macro. - - * macros/tmac.s (fn@do-FS): Use @LP instead of LP. - - * macros/tmac.s (cov*tl-init): Remove after first execution - instead of aliasing to @nop. Call top of page macro explicitly - instead of setting trap; call @init first. Set pg@top as top of - page macro. - (cov*auto-init): Deleted. Set cov*tl-init instead of - cov*auto-init as top of page trap. - (TL, LP): Do a break instead of calling cov*tl-init. - (cov*print): With RP format but no TL, alias FS and FE to @FS and - @FE; in this case also give a warning and always start another - page. No need to set pg@top here. - (cov*tl-init): Rename to cov*first-page-init. - - * macros/tmac.s (RP): Do `.pn 0'. - (cov*tl-init): With RP format don't do `.pn 0'. - - * macros/tmac.s (pg@cs-top): Set no space mode. - - * macros/tmac.s (par@TL, par@AU, par@AI): New macros. - (cov*ab-init): Alias TL, AU and AI to these. - -Thu Dec 20 10:10:50 1990 James Clark (jjc at jclark) - - * macros/tmac.s (@EQ): Move the space before the equation into @EN - (@EN): Do nothing unless \n[dl] is > 0. - -Tue Dec 18 12:20:47 1990 James Clark (jjc at jclark) - - * pic/object.c (ellipse_object::radius): New function. - - * VERSION: Change version to 0.7. - - * tbl/table.c (block_entry::do_divert): Declare return type as - void. - (block_entry::divert, alphabetic_block_entry::divert): Return 1. - -Mon Dec 17 12:30:34 1990 James Clark (jjc at jclark) - - * troff/column.c: New file. - * troff/Makefile: Corresponding changes. - - * troff/hvunits.c (scale(vunits, vunits, vunits)): New function. - Friend of vunits. - - * troff/div.c (top_level_diversion::space): If the space causes - the first-page transition and springs a trap, truncate the space - to 0. - -Fri Dec 14 12:30:02 1990 James Clark (jjc at jclark) - - * ps/ps.c (ps_printer::do_import): Add a `clear' after including - the document. - - * pic/troff.c (troff_output::line_thickness, - troff_output::set_fill): Do a horizontal motion to compensate for - the width of the \D escape sequence. - -Thu Dec 13 10:17:14 1990 James Clark (jjc at jclark) - - * xditview/tmac.X: Reinstate definition of \(rn, but only for X100 - (not X75). - - * eqn/sqrt.c (sqrt_box::compute_metrics): Supply missing argument - to printf. - - * tbl/table.c (simple_entry::simply_print): Don't declare as pure. - Supply empty definition. - (text_entry::simple_print, simple_text_entry::simple_print): - Delete declarations. - (table::add_entry): Represent empty entries by objects of type - `simple_entry'. - -Wed Dec 12 08:50:48 1990 James Clark (jjc at jclark) - - * troff/Makefile: Remove -DHYPHEN_CONTROL from DEFINES. - - * tbl/table.c (left_text_entry::add_tab): New function. - - * macros/tmac.s: Make @RT an alias for par@reset. Make RT - initialize like LP. - -Mon Dec 10 11:19:55 1990 James Clark (jjc at jclark) - - * troff/env.c (environment::start_field): Give an error message if - there is no next tab. - -Sun Dec 9 11:46:40 1990 James Clark (jjc at jclark) - - * troff/env.c (hyphenate): Skip initial elements with zero - hyphenation code. - - * macros/tmac.s (par@init): Keep VS in points rather than units. - -Sat Dec 8 23:00:27 1990 James Clark (jjc at jclark) - - * pic/main.c (main): Implement `-c' option. - * pic/output.h: Declare make_tpic_output(). - * pic/tex.c (tex_output::set_pen_size): Make it virtual and - protected. - (tpic_output): New class. - (tpic_output::tpic_output, tpic_output::set_pen_size, - tpic_output::command, make_tpic_output): New functions. - -Fri Dec 7 11:57:41 1990 James Clark (jjc at jclark) - - * tbl/main.c (main): Call `.ab' if \n(.g is false. Define TS/TE - if they're not already defined. - * tbl/table.c (init_output): Don't test \n(.g. - - * troff/input.c (do_if_request): Delete `g' condition. Recognize - `d', `r' and `c' conditions even in compatibility mode. - -Tue Dec 4 09:13:47 1990 James Clark (jjc at jclark) - - * ps/tmac.ps (ps-bb): Protect against negative numbers in bounding - box. - -Mon Dec 3 07:18:26 1990 James Clark (jjc at jclark) - - * troff/env.h (environment::prev_line_interrupted): New member. - (environment::get_prev_line_interrupted): New function. - * troff/env.c (environment::newline): Set prev_line_interrupted. - (environment::environment(const environment *), - environment::environment(symbol)): Initialize - prev_line_interrupted. - * troff/input.c (process_input_stack): Don't give special - treatment to space and newline at the beginning of the line if the - previous line was interrupted. - -Sat Dec 1 15:48:37 1990 James Clark (jjc at jclark) - - * eqn/eqn.y: Disallow PRIME by itself. - * eqn/lex.c (token_table): Bind `opprime' instead of `prime' to - PRIME. - (def_table): Remove definition of '. Define prime to be `. - - * eqn/eqn.y: Split off part of rule `script' into a new rule - `nonsup'. - -Fri Nov 30 10:23:44 1990 James Clark (jjc at jclark) - - * macros/tmac.s ({, }): New string aliases. - -Thu Nov 29 11:34:40 1990 James Clark (jjc at jclark) - - * README-0.7: New file. - -Wed Nov 28 10:09:57 1990 James Clark (jjc at jclark) - - * macros/tmac.s: New file. - * man/groff_ms.man: New file. - * Makefile: Add definition of TMAC_S. Pass TMAC_S in SUBFLAGS. - * Makefile.bd: Similarily. - * man/Makefile: Add groff_ms.n to MAN7PAGES. Replace @TMAC_S@. Add - definition of TMAC_S. - * macros/Makefile: Add definition of TMAC_S. Install tmac.s. - * macros/TODO: New file. - -Sat Nov 24 20:04:54 1990 James Clark (jjc at jclark) - - * troff/env.c (right_justify): New function. - (init_env_requests): Bind this to request "rj". - (center_lines): Set right_justify_lines to 0. If we get a bad - integer, center 1 line. - (environment::environment(symbol), environment::environment(const - environment *)): Initialize right_justify_lines. - (environment::get_right_justify_lines): New function. - (init_env_requests): Bind this to number_register ".rj". - - * troff/env.c (environment::choose_breakpoint): Implement - hyphenation_margin and hyphenation_space. - (environment::get_hyphenation_space, - environment::get_hyphenation_margin): New functions. - (init_env_requests): Bind these to .hys and .hym. - (hyphenation_space_request, hyphenation_margin_request): New - functions - (init_env_requests): Bind these to hys and hym. - (environment::environment(symbol), environment::environment(const - environment *)): Initialize hyphenation_margin and - hyphenation_space. - * troff/env.h: Corresponding changes to class environment. - -Fri Nov 23 09:08:16 1990 James Clark (jjc at jclark) - - * troff/div.c (blank_line): Always do a break. - - * eqn/box.c (do_text): Turn off escapes while appending text to - string. - -Thu Nov 22 10:58:59 1990 James Clark (jjc at jclark) - - * troff/input.c (while_break_request, while_continue_request): New - functions. - (init_input_requests): Bind these to "break" and "continue". - (while_depth, while_break_flag): New variables. - (while_request): Update while_depth. Break out of loop if - while_break_flag is set. - -Wed Nov 21 10:54:40 1990 James Clark (jjc at jclark) - - * tbl/table.c (init_span_reg): Initialize span_width_reg to \n(.H - rather than 0. - -Mon Nov 19 00:45:03 1990 James Clark (jjc at jclark) - - * Makefile: Include -DBROKEN_SPOOLER by default. Expand comment. - - * stringify: New file. - * Makefile (groff.o): Use stringify. - - * xditview/tmac.X: Remove definition of \(rn. - * xditview/libXdvi/DviChar.c: Remove radicalex from - Adobe_symbol_map. - -Sat Nov 17 10:44:58 1990 James Clark (jjc at jclark) - - * tbl/table.c (table::add_entry): Allow alphabetic text blocks. - (alphabetic_block_entry::alphabetic_block_entry, - alphabetic_block_entry::divert, alphabetic_block_entry::print): - New functions. - (block_entry::divert): Split off body into ... - (block_entry::do_divert): If the block is alphabetic, subtract 2n - from the line length; also update the span width to dl+2n, and the - alphabetic span width to dl. - - * driver/input.c (do_file): While reading argument to D command, - when expanding buffer, multiply szp by sizeof(int) rather than 2 - in the argument to memcpy. - - * tbl/table.c (compute_span_width): Add 2n rather than 1n to the - width of alphabetic columns. - -Fri Nov 16 06:34:27 1990 James Clark (jjc at jclark) - - * troff/node.c (lookup_family): Supply second argument to lookup. - - * troff/dictionary.c (dictionary::lookup): After an unsuccesful - search, return immediately if v is 0. - - * pic/troff.c: Define EQN_NO_EXTRA_SPACE_REG. - (troff_output::start_picture): Set this reg. - (troff_output::end_picture): Remove this reg - * eqn/box.c (box::extra_space): Don't produce `\x's if - EQN_NO_EXTRA_SPACE_REG is defined. - - * eqn/eqn.y: Allow just a PRIME to be a `simple'. - * eqn/text.c (split_text): Map ' to \(fm when it's the first - character. - -Thu Nov 15 10:35:06 1990 James Clark (jjc at jclark) - - * macros/tmac.e: Use font 3 instead of B in $c. Remove `bd' - requests. - - * troff/div.c (top_level_diversion::top_level_diversion): - Initialize page_number to 0. - -Wed Nov 14 21:41:58 1990 James Clark (jjc at jclark) - - * groff/troff (environment::environment(const environment *)): - Initialize name to e->name, rather than "anonymous". - -Sat Nov 10 01:59:37 1990 James Clark (jjc at jclark) - - * xditview/libXdvi/Dvi.c (ShowDvi): If eof is encountered, reset - requested_page. Split middle part into ... - (FindPage): New function. - (SetValues): If we don't yet know the last page, and the requested - page is greater than the current page, call FindPage. - Update the font_map_string before doing this. - - * xditview/tmac.X: Add definitions of \(sq, \(ga, \(dg and \(dd. - Translate \(lh and \(rh into left and right double arrows. - - * troff/node.c (class hyphen_inhibitor_node): New class. - (hyphen_inhibitor_node::hyphen_inhibitor_node, - hyphen_inhibitor_node::copy, hyphen_inhibitor_node::same, - hyphen_inhibitor_node::type, - hyphen_inhibitor_node::get_hyphenation_type): New functions. - (node::add_discretionary_hyphen): Use hyphen_inhibitor_node rather - than dbreak_node(0, 0) to represent a `\%' at the beginning of a - word. - -Fri Nov 9 16:05:38 1990 James Clark (jjc at jclark) - - * troff/node.h (dummy_node::get_hyphenation_type, - transparent_dummy_node::get_hyphenation_type): Declare them. - * troff/node.c: (dummy_node::get_hyphenation_type, - transparent_dummy_node::get_hyphenation_type): New functions. - -Wed Nov 7 10:09:06 1990 James Clark (jjc at jclark) - - * xditview/libXdvi/draw.c: If M_PI not defined after including - math.h, then define it. - - * xditview/Makefile: Add definition of AR. Pass it to the submake - in libXdvi. - * xditview/libXdvi/Makefile: Add definitions of AR and RANLIB. - -Tue Nov 6 10:14:27 1990 James Clark (jjc at jclark) - - * troff/dictionary.h (object_dictionary::alias): Declare return - value as int. - * troff/dictionary.c (object_dictionary::alias): Return non-zero - if the old name was defined. - * troff/input.c (alias_macro): Give a warning if the old name was - not defined. - * troff/reg.c (alias_reg): Likewise. - -Mon Nov 5 00:31:39 1990 James Clark (jjc at jclark) - - * troff/input.c (token::next): Delete implementation of \R. - - * macros/Makefile: Strip comments from tmac.e while installing it. - - * troff/input.c: New variable `nroff_mode'. - (troff_request, nroff_request): New functions. - (init_input_requests): Bind `troff' and `nroff' to troff_request - and nroff_request. - (do_if_request): Compute results of t and n conditions from - nroff_mode. - - * text/text.c (split_text): Fix typo in >=. - - * eqn/lex.c: Add definition of `==' to def_table. - -Fri Nov 2 02:49:09 1990 James Clark (jjc at jclark) - - * pic/tex.c (tex_output::start_picture): Change the definitions of - \graph and \graphtemp so that they work properly with Plain TeX. - - * pic/tex.c (tex_output::solid_arc): Ensure that the second angle - argument to `ar' is not less than the first. - - * pic/pic.y: Allow a comma between elements of the variable list - in the argument to `reset'. - - * pic/object.c (arc_object::arc_object): Fix computation of - radius. - - * eqn/main.c (main): Add exit(0). - -Thu Nov 1 02:03:50 1990 James Clark (jjc at jclark) - - * troff/div.c (begin_page): Test no_space_mode after doing the - break, but still push the page ejector cookie before doing the - break. Also set the next page number after doing the break. - - * xditview/xditview.c (NewFile): Don't set the title and icon name - if this is the first file and its name is `-'. - * groff/groff.c: Define a new device flag XT_OPTION. Set it for - the X75 and X100 devices. - (main): If a device has the XT_OPTION flag set and there's exactly - one file argument, pass the driver -xrm and -title options to set - the icon name and window title to the name of the file. - - * troff/env.c (environment_switch): If there was an argument but - it wasn't a valid number or name, then pop an environment but - don't give an error message on underflow. - - * troff/number.c (start_number): Correct spelling in error message. - - * troff/input.c (token::delimiter): Don't print an error message - if err is false. - - * xditview/libXdvi/parse.c (ParseInput): In case 'D', only call - ParseDrawFunction if dw->display_enable is true. - -Wed Oct 31 05:49:50 1990 James Clark (jjc at jclark) - - * pic/pic.y: Parse text positioning like normal attributes, so as - to allow `"text" at 0,0 ljust'. Don't allow `center' as a - positioning attribute. - -Mon Oct 29 22:50:38 1990 James Clark (jjc at jclark) - - * tbl/main.c (process_data): When in state START while reading a - text block, don't change to state MIDDLE if c is a newline. - -Sun Oct 28 21:59:56 1990 James Clark (jjc at jclark) - - * dvi/dvi.c (dvi_printer::begin_page): Rename `i' variable to `j' - so as to avoid shadowing parameter. - -Wed Oct 24 18:35:39 1990 James Clark (jjc at jclark) - - * tbl/table.c (trim_space): Deleted. - (table::add_entry): Don't call trim_space. - -Mon Oct 22 03:48:39 1990 James Clark (jjc at jclark) - - * VERSION: Change version to 0.6. - - * troff/number.c (parse_expr): Make == work. - -Sat Oct 20 11:28:17 1990 James Clark (jjc at jclark) - - * man/grog.man: New file. - * man/Makefile: Add grog.n to MAN1PAGES. - * etc/grog.sh: New file. - * etc/Makefile: Install grog.sh as grog. - -Fri Oct 19 11:17:15 1990 James Clark (jjc at jclark) - - * troff/input.c (token::next): Implement \E. - -Thu Oct 18 11:56:24 1990 James Clark (jjc at jclark) - - * xditview/tmac.X: Change font translations to match tmac.ps. - - * troff/input.c (non_empty_name_warning): Don't give a warning if - `\{' terminates the name. - -Tue Oct 16 10:04:23 1990 James Clark (jjc at jclark) - - * ps/devps/symbol.diff: New file. - * ps/devps/FontMakefile: Mention symbol.diff. - -Sun Oct 14 11:46:46 1990 James Clark (jjc at jclark) - - * troff/node.c (font_position): Use get_long_name to read the - external_name. - - * troff/env.c (environment_switch): If we get a number that's < 0 - or >= NENVIRONMENTS, treat it like a name. - Change NENVIRONMENTS to 10. - - * troff/groff.h: Remove definition of FONTS_MAX. - * troff/node.h (class font_family): Make map a pointer instead of - an array. Add a map_size member. Make it a class. Make nm const - and public. Make invalidate_fontno a friend. - * troff/node.c: Define font_table_size. Make font_info a pointer - rather than an array. - (class troff_output_file): Allocate font_position dynamically. Add - nfont_positions member. - (troff_output_file::set_font): Grow font_position if necessary. - (troff_output_file::~troff_output_file): Delete font_position. - (troff_output_file::troff_output_file): Allocate font_position. - (grow_font_table): New function. - (troff_output_file::really_begin_page, - troff_output_file:really_copy_page): Use nfont_positions rather - than FONTS_MAX. - (mount_font_no_translate, mount_style): Call grow_font_table if - necessary. - (font_family::font_family): Allocate map. - (font_family::make_definite): Grow map if necessary. Use - font_table_size instead of FONTS_MAX. - (font_family::~font_family): New function. - (invalidate_fontno): Use font_family::map_size. - (get_fontno, env_space_width, env_half_narrow_space_width, - env_narrow_space_width, symbol_fotno, is_good_fontno, - get_bold_fontno, make_glyph_node): Use font_table_size rather than - FONTS_MAX. - (next_available_font_position): Never return 0. - -Fri Oct 12 10:17:52 1990 James Clark (jjc at jclark) - - * ps/tmac.ps: Add font translations for compatibility with dpost. - -Thu Oct 11 12:09:03 1990 James Clark (jjc at jclark) - - * eqn/pile.c: Rename default_baseline_sep to baseline_sep. - Move BASELINE_SEP_FORMAT and COLUMN_WIDTH_FORMAT into pbox.h. - Move definitions baseline_sep, shift_down, column_sep, - matrix_side_sep into... - * eqn/box.c: Add them to param_table. - * eqn/pbox.h: Add declarations to pbox.h. - - * troff/input.c (set_string): Cast value to unsigned char *. - - * troff/token.h (process_input_stack): Declare it static before - declaring it a friend. - -Wed Oct 10 09:59:13 1990 James Clark (jjc at jclark) - - * dvi/devdvi/texex.map: Fix positions of extensible brace middle - and bottom. - * dvi/devdvi/EX: Regenerate. - - * troff/input.c (init_charset_table): Make ", ', ), ], *, \(dg - transparent. - -Tue Oct 9 08:34:02 1990 James Clark (jjc at jclark) - - * eqn/lex.c: In defaults_table, make definition of `dot' call - `dot_def'. Don't explicitly make it roman. Similarily for other - accents. - - * pic/lex.c (for_input::for_input): Add by_is_multiplicative - argument. - (for_input::get, for_input::peek): Use this. - (do_for): Add by_is_multiplicative argument. - * pic/pic.y: Change optional_by clause to allow '*' after `by'. - Change semantic value of optional_by to be a double plus a flag - saying whethet the by clause is multiplicative. - - * eqn/lex.c (get_delimited_text): Remember location of start of - definition. Improve error handling when EOF is encountered. - - * lib/font.h: Rename handle_x_command to - handle_unknown_font_command. - * lib/font.c (font::load): Call handle_unknown_font_command for - any unknown command in the font description file. Don't call - handle_x_command. Include the name of the command in the argv. - Improve message for unknown command after kernpairs or charset - command. - * ps/ps.c (ps_font::handle_x_command): Rename to - handle_unknown_font_command. Remove message about `x download' - command. Give error message for wrong number of arguments. - * ps/devps/afmtodit: Generate `encoding' instead of `x encoding'. - * dvi/dvi.c (dvi_font::handle_x_command): Rename to - handle_unknown_font_command. Give an error message for wrong - number of arguments. Rename design_size to designsize. - * dvi/tfmtodit.c (main): Generate `checksum' instead of `x - checksum', `designsize' instead of `design_size'. - -Mon Oct 8 00:38:55 1990 James Clark (jjc at jclark) - - * eqn/*.[chy]: Change underaccent to uaccent. - - * eqn/eqn.y: Add rule for underaccent. Declare UNDERACCENT token; - give it the same precedence as ACCENT. - * eqn/other.c (make_underaccent_box): New function. - * eqn/box.h: Declare it. - * eqn/lex.c: Add UNDERACCENT to token_table. Add utilde to - def_table. - -Sun Oct 7 11:25:16 1990 James Clark (jjc at jclark) - - * pic/pic.y (reset_all): New function. Called in rule for RESET. - (parse_init): Call reset_all. - (define_variable): When defining scale reset only those - pre-defined variables that are scaled. - (defaults_table): Add `scale' as non-scaled value. - - * pic/pic.y: Redo parsing of text adjustments: parse adjustments - together with the text; allow any number of positioning words; - allow center as a positioning word. - - * pic/object.c (output::compute_scale): Get picture maximum height - and width from variables called maxpswid and maxpsht. - * pic/pic.y: Add maxpswid and maxpsht to defaults_table. - -Sat Oct 6 10:16:56 1990 James Clark (jjc at jclark) - - * pic/object.c (object_spec::make_text): Multiply textht by number - of text items. - - * pic/pic.y: Allow `sprintf("string", expr,...)' wherever text can - occur. - (do_sprintf): New function. - (pic.gperf): Add sprintf token. - (text, sprintf): New rules. - - * pic/pic.y: `rand()' with no arguments returns a random number - in the range [0,1). - - * pic/pic.y: Allow a bare expression to be an attribute: change - precedences to support this. Change optional_ordinal rule to - optional_ordinal_last to avoid reduce/reduce conflict. - * pic/object.c (object_spec::object_spec): Initialize direction. - - * pic/pic.y: Implement ^ operator meaning exponentiation. - - * troff/node.h: Add default argument to mount_font. - * troff/node.c (font_position): Read an optional third argument - giving the external_name. - (mount_font): Add optional argument giving the external_name. - (mount_font_not_translate): Have additional argument giving - external name. Use this name to load the font. Pass both names - to font_info::font_info. - (font_info::font_info): Have additional argument giving - external_name. - (class tfont): New member external_name. - (font_info::get_tfont): Use external name to construct tfont_spec. - -Fri Oct 5 04:03:13 1990 James Clark (jjc at jclark) - - * eqn/lex.c (init_table): Add argument giving device. Define - name of device to be "1". - (do_ifdef): Counts as true if the argument has been defined with - `define'. - * eqn/main.c (main): Call init_table with device argument. Make - device local to main. - * eqn/eqn.h: Change declaration of init_table. Remove declaration - of device. - - * pic/lex.c (get_delimited): Allow text to be delimited by - matching {}s. Don't recognize ending delimiter within a string. - - * troff/input.c (get_delim_name): New function. - (token::next): Implement \C. - - * lib/font.c (font::load): Grok ---. Add an alias for each - character based on its code. - (font::get_code_width): Deleted. - * lib/font.h (class font): Declare font::number_to_index(). - Remove declaration of font::get_code_width. - * lib/nametoindex.c (font::name_to_index): Add 512 rather than 256 - to indices of named characters. - (font::number_to_index): New function. - * troff/input.c (font::number_to_index): New function. - (get_charinfo_by_number, charinfo::get_number, - charinfo::set_number): New functions. - (token::next): Turn \N into a TOKEN_NUMBERED_CHAR. - (token::process, token::description, token::get_char, - token::add_to_node_list, token::operator==): Handle - TOKEN_NUMBERED_CHAR. - * troff/charinfo.h: Declare get_charinfo_by_number, - charinfo::get_number, charinfo::set_number. Add NUMBERED flag to - charinfo class. - (charinfo::numbered): New function. - * troff/token.h: Add TOKEN_NUMBERED_CHAR. - * troff/env.h (class environment): Remove declaration of ... - * troff/env.c (environment::make_numbered_char_node): Deleted. - * troff/node.c (make_numbered_node): Deleted. - (class numbered_glyph_node): Remove. - (troff_output_file::put_char_width, troff_output_file::put_char): - Handle numbered chars. - (troff_output_file::numbered_char): Removed. - (tfont::get_code_width): Removed. - (make_glyph_node): Don't search special fonts for numbered - characters. - * troff/node.h: Remove declaration of make_numbered_node. - * driver/input.c (do_file): Handle N command. - * driver/printer.h: Add declaration of ... - * driver/printer.c (printer::set_numbered_char): New function. - * dvi/tfmtodit.c (main): Generate unnamed entries. - * ps/devps/afmtodit: Likewise. - * xditview/xtotroff.c (MapFont): Likewise. - * xditview/libXdvi/parse.c (ParseInput): Grok N command. - - * tbl/main.c (process_format): If multiple widths are specified - for a column but all the widths are the same, don't give an error - message. - - * tbl/table.c (table::do_row): If the current row is all lines and - the stuff doesn't contains a line, mark the top of the row after - printing stuff before the row. If the current row is not all - lines and the stuff doesn't contain a line, don't unnecessarily - mark the top of the row before printing the stuff. - -Mon Oct 1 11:42:00 1990 James Clark (jjc at jclark) - - * troff/groff.h: Remove MAX_PATH. - * troff/input.c (open_file): Dynamically allocate space for the - path. - (open_mac_file, process_macro_file): Corresponding changes. - -Sun Sep 23 18:56:26 1990 James Clark (jjc at jclark) - - * troff/node.h (class output_file): Make copy_file pure. Add - vspace method ifdef COLUMN. Add is_printing method. - * troff/node.c: Add class printing_reg. Add class - real_output_file. Derive other output_file classes from - real_output_file; in these classes rename begin_page to - really_begin_page, print_line to really_print_line, copy_file to - really_copy_file, transparent_char to really_transparent_char. - Move output_file::flush to real_output_file. Add printing member - to class output_file. - * troff/div.h: Remove printing member from top_level_diversion. - Add vspace member function to class diversion ifdef COLUMN. Add - some declarations ifdef COLUMN. - * troff/div.c (top_level_diversion::copy_file, - top_level_diversion::transparent_output, - top_level_diversion::output): Don't test printing member before - output. - * troff/input.c: Handle initial variable_space_request ifdef - COLUMN. - * troff/Makefile: Add column.c but comment it out. Add -DCOLUMN - but comment it out. - -Sat Sep 22 11:32:22 1990 James Clark (jjc at jclark) - - * troff/div.c (diversion::need): Make any space forced. If we - sprung a trap, set truncated_space to minus the distance to the - trap and set needed_space to the amount that was needed. - (top_level_diversion::space): A forced space turns no_space_mode - off. - (class constant_vunits_reg): New class. - (init_div_requests): Implement number registers .trunc and .ne - using constant_vunits_reg. - (class truncated_space_reg): Deleted. - - * troff/div.h: Don't have a no_space_mode member in diversion. - Instead have it in top_level_diversion. - * troff/div.c (diversion::diversion): Don't initialize - no_space_mode. - (top_level_diversion::top_level_diversion): Initialize - no_space_mode. - (no_space, restore_spacing): Do nothing if curdiv != topdiv. - (macro_diversion::output): Don't clear no_space_mode. - - * troff/input.c (diverted_space_node::reread): Don't call - environment::do_break. In fill mode, act like a blank line. - (diverted_copy_file_node::reread): Don't call - environment::do_break. - - * troff/div.c (blank_line): New function. - * troff/div.h: Declare it. - * troff/input.c (process_input_stack): Call it. - - * troff/div.c (truncated_space_reg::get_string): New function. - (init_div_requests): Bind to .trunc. - (space_request, top_level_diversion::space, - top_level_diversion::output, macro_diversion::space, - macro_diversion::output): Update truncated_space. - (macro_diversion::output): Redo calculations when trap sprung. - (macro_diversion::output, macro_diversion::space): No need for - trap_flag. - - * troff/div.c (top_level_diversion::output): Set nl_reg_contents - after truncating post line spacing. - -Fri Sep 21 11:27:25 1990 James Clark (jjc at jclark) - - * ps/devps/prologue (MF, SF): Make them work even if setfont is - defined as a procedure rather than as an operator. - -Thu Sep 20 12:55:05 1990 James Clark (jjc at jclark) - - * troff/div.c (macro_diversion::space): Ignore no_space_mode. - -Wed Sep 19 10:54:37 1990 James Clark (jjc at jclark) - - * troff/div.c (top_level_diversion::output): Merge - output_file::print_line and output_file::end_of_line member - functions. - * troff/div.h (class output_file): - * troff/node.c (troff_output_file::print_line, - troff_output_file::end_of_line, output_file::end_of_line, - ascii_output_file::print_line, suppress_output_file::print_line): - Corresponding changes. - -Tue Sep 18 11:31:47 1990 James Clark (jjc at jclark) - - * troff/input.c (token::next): Don't give a warning for `\.'. - - * troff/env.c (environment::get_center_lines): New function. - (init_env_requests): Bind number register .ce to it. - * troff/env.h: Declare it. - * tbl/table.c (table::init_output): Define reset macro to restore - .ce. If center option not given, store .ce in SAVED_CENTER_REG. - Then do .ce 0. - (table::print): If center option not given, then imply center - option if SAVED_CENTER_REG > 0. - -Mon Sep 17 09:19:19 1990 James Clark (jjc at jclark) - - * ps/devps/Makefile: Remove T from FONTS. Remove TSymbol.ps and - Troff.ps from DOWNLOAD. - - * troff/Makefile: Change comment in DEFINES to avoid confusing - System V make. - - * ps/ps.c (ps_printer::do_exec): Allow newlines within PostScript - code. Don't try to catch errors with stopped. - (check_line_lengths): New function. - * ps/devps/prologue (EXEC): Deleted. - (EBEGIN, EEND): New procedures. - -Sun Sep 16 14:51:15 1990 James Clark (jjc at jclark) - - * troff/input.c: Include request.h before node.h. - * troff/node.c: Likewise. - * troff/env.c: Likewise. - * troff/div.c: Likewise. - * troff/node.h (class special_node): Store argument as a macro - rather than a char *. - * troff/node.c (special_node::special_node, special_node::copy): - Grok this. - (special_node::~special_node): Deleted. - (special_node::tprint): Deleted. - (special_node::tprint_start, special_node::tprint_end, - special_node::tprint_char): New functions. - (troff_output_file::special): Deleted. - (troff_output_file::start_special, troff_output_file::end_special, - troff_output_file::special_char): New functions. - * troff/input.c (special_node::tprint): New function. - (do_special): Use macro not char *. - (do_transparent_macro): Deleted. - (token::next): Don't call do_transparent_macro. - - * troff/input.c (token::next): Add 'Y' case. - (do_transparent_macro): New function. - * troff/node.c (troff_output_file::special): Handle newlines with - argument using new continuation convention. - * driver/input.c (get_string): Cope with continuation convention. - (do_file): Don't call skip_line after calling get_string(1). - * ps/ps.c (ps_printer::special, ps_printer::do_import, - ps_printer::do_def, ps_printer::do_exec): Cope with newlines in - arg. - * xditview/libXdvi/parse.c (ParseInput): Ignore lines starting - with +. - -Sat Sep 15 19:00:10 1990 James Clark (jjc at jclark) - - * troff/input.c (asciify): By default, illegal input characters - should return empty string. - - * troff/input.c (copy_file): Handle first page transition like title. - (token::next, process_input_stack): Grok COPY_FILE_REQUEST. - - * troff/input.c (token::next): Improve error message for EOF after - escape character. - (input_char_description): New function. - (get_char_for_escape_name): Use input_char_description. - (token::next): Warn about unrecognized escape sequences. - (warning_table): Add WARN_ESCAPE. - * troff/groff.h: Declare WARN_ESCAPE. Change WARN_TOTAL - accordingly. - - * troff/token.h: Remove declaration of process_input_stack. - - * troff/input.c: Remove declaration of init_hyphen_requests. - * troff/request.h: Correct spelling in declaration of same. - - * troff/input.c (token::next): Check whether escape_char is 0. - -Fri Sep 14 12:09:25 1990 James Clark (jjc at jclark) - - * groff.c (main, usage, help): Implement -P and -L options. - * groff.sh: Likewise. - - * troff/input.c (token::next): Use some gotos to avoid code - duplication. - - * troff/input.c (get_long_name, get_name, read_long_ecsape_name): - Avoid calling symbol::symbol if name empty. - -Thu Sep 13 06:21:45 1990 James Clark (jjc at jclark) - - * troff/input.c (init_input_requests): Make \n(.x return the major - version number and \n(.y return the minor version number. - * troff/Makefile: Construct file majorminor.c defining - major_version and minor_version automatically from ../VERSION. - - * troff/node.c (class glyph_node): Make operator new and operator - delete public. - (class ligature_node): Similarily. - - * troff/input.c (operator==(const macro &, const macro &)): New - function. - (non_interpreted_node::same): Use this. - (string_iterator::string_iterator): Make macro& argument const. - - * troff/input.c (input_iterator::get): New function. Don't make - asciify_macro or class non_interpreted_node friends of class - input_iterator. - (non_interpreted_node::interpret): Use input_iterator::get. - (asciify_macro): Likewise. - - * troff/input.c (~token_node, ~string_iterator, ~arg_list, - ~non_interpreted_node): Deleted. - * troff/node.c: (~suppress_output_file, ~ascii_output_file): - Deleted. - - * troff/symbol.h: Make all symbol member functions const. - - * lib/strtol.c: New file. - * lib/Makefile: Add strtol.c. - * Makefile: Define STRTOL as strtol.o to include strtol in - libgroff.a. - -Wed Sep 12 10:00:49 1990 James Clark (jjc at jclark) - - * pic/troff.c (troff_output::simple_circle): Divide by scale. - -Tue Sep 11 14:17:16 1990 James Clark (jjc at jclark) - - * troff/input.c (do_special): Use input_level. - - * troff/token.h (TOKEN_BACKSPACE): New token. - (token::backspace): New function. - * troff/input.c (token::description, token::next, token::process): - Grok TOKEN_BACKSPACE. - (do_special): Turn TOKEN_BACKSPACE back into \b. - - * troff/token.h (token::leader): New function. - * troff/input.c (do_special): Turn TOKEN_LEADER back into \001. - - * troff/input.c (do_special): Turn TOKEN_TAB back into \t. - - * troff/input.c (do_special): Use token::description in error - message. - -Mon Sep 10 11:06:27 1990 James Clark (jjc at jclark) - - * troff/input.c (decode_args): Combine quoted and - quote_input_level variables. Make it a for (;;) loop. - - * troff/input.c (get_char_for_escape_name): Check for \001 and \b. - - * troff/input.c (read_long_escape_name): The test for whether to - expand buffer was off by 1. - (read_string): Similarily. - -Fri Sep 7 11:45:50 1990 James Clark (jjc at jclark) - - * troff/input.c: Use `const int' rather than `static const int'. - - * troff/div.h (diversion::copy_file): Declare as pure virtual. - (macro_diversion::copy_file): New function. - * troff/node.h: New class diverted_copy_file_node. - * troff/node.c: Implement it. - * troff/input.c (copy_file): Use diversion::copy_file. Handle - first page transition by pushing a diverted_copy_file_node. - * troff/input.c (token::next, process_input_stack): Don't handle - COPY_FILE_REQUEST. - -Thu Sep 6 13:29:10 1990 James Clark (jjc at jclark) - - * ps/ps.c (flush_sbuf): Remember to add sbuf_kern when checking - whether space widths need adjusting. - - * troff/charinfo.h: Generalize translated_to_space to - special_translation so as to allow translation to \&. - * troff/input.c (translate): Allow translation to \&. - (charinfo::*): Corresponding changes. - * troff/node.c (make_node, node::add_char): Corresponding changes. - * troff/node.h (dummy_node::dummy_node): Allow optional first - argument. - - * lib/lib.h: Make codes 0200 to 0237 illegal input characters. - * troff/token.h: Remove TOKEN_TITLE. Remove token::title. Add - TOKEN_REQUEST. - * troff/input.c (token::next): Turn a TITLE_REQUEST into a - TOKEN_REQUEST with an argument of TITLE_REQUEST. - (token::process): Grok that. - * troff/input.c (copy_file): Handle first page transition like - title by pushing a COPY_FILE_REQUEST cookie. - (token::next, process_input_stack): Grok that. - * troff/node.h (output_file::copy_file): Add x and y arguments. - Make it non-pure. - * troff/div.c (top_level_diversion::copy_file): Supply them. - * troff/node.c (troff_output_file::copy_file): Add x and y - arguments; moveto specified position. Invalidate font_position - array after copying file. - (output_file::copy_file): New function. - (suppressed_output_file::copy_file, ascii_output::copy_file): - Removed. - * troff/input.c (transparent_file): New function. - (init_input_requests): Bind to "trf". - (token::next): Handle TRANSPARENT_FILE_REQUEST cookie. - (process_input_stack): Likewise. - - * troff/Makefile: Add ../lib/lib.h to GROFF_H. - - * troff/node.c (init_node_requests): New number registers .kern - pointing to global_kern_mode, and .lg pointing to - global_ligature_mode. - - * troff/node.c (ligature): Don't change it if we get a bad - integer. - - * troff/input.c (do_define_string): Don't strip tabs. - - * troff/input.c (asciify_macro): Make the string_iterator auto. - - * troff/node.c (init_font_requests): Rename to... - (init_node_requests): - * troff/node.h: Change declaration. - * troff/input.c (main): Change call. - - * troff/input.c (node::reread, diverted_space_node::reread): New - methods. - (process_input_stack): Call reread rather than - get_diverted_space_node. - * troff/node.c (node::get_diverted_space_node, - diverted_space_node::get_diverted_space_node): Removed. - * troff/node.h: Declare reread methods instead of - get_diverted_space_node methods. Make `n' member private. - * troff/input.c: (token::diverted_space): Removed. - * troff/token.h: Removed declaration. - - -Tue Sep 4 00:48:04 1990 James Clark (jjc at jclark) - - * eqn/script.c (script_box::compute_metrics): Don't let - SUP_RAISE_FORMAT become negative. - - * tbl/table.c (table::do_row): Entries that don't end in the - this row shouldn't make the row non-blank. - - * tbl/table.c (table::make_columns_equal): Only set the width of - columns which are marked as equal. - - * tbl/main.c (process_data): Before issuing excess data error, - if last character was a newline unget it; then get it again after - the error. Also include the contents of the entry in the message. - - * groff.c: New file. - * Makefile: Build groff from groff.c. Make it possible to use - either groff.sh or groff.c as groff. - * Makefile.bd: Similarily. - -Mon Sep 3 09:39:49 1990 James Clark (jjc at jclark) - - * groff.sh: Don't delay expansion of $@ in assignment to files. - Remove occurrences of \". - -Sun Sep 2 09:56:59 1990 James Clark (jjc at jclark) - - * all Makefiles: Simplify and rearrange. - - * Makefile: Handle fmod like malloc. - * lib/Makefile: Similarily. - * lib/fmod.c: Remove #ifdef NEED_FMOD. - - * Makefile: Rename OPTIMISE to OPTIMIZE. - - * groff.sh: Remove assignment to PATH. - * Makefile: Remove SHPATH variable. - * Makefile.bd: Similarily. - - * groff.sh: Add -V option to print the pipeline instead of - executing it. - -Fri Aug 31 00:56:46 1990 James Clark (jjc at jclark) - - * lib/font.c: Split off file searching into ... - * lib/fontfile.c: New file. - - * lib/strerror.c (strerror): Use `Error %d' for unknown errors. - -Thu Aug 30 13:13:55 1990 James Clark (jjc at jclark) - - * tbl/table.c (table::do_hspan): Delete assertion that e != 0. - Also change misleading comment. - (table::do_vspan): Change similarily misleading comment. - * tbl/main.c (process_data): A format row with an explicit `s' - uses up a data line, even if all the other columns are `_' or `='. - - * troff/input.c (token::description): Fix description of - TOKEN_DUMMY and TOKEN_EMPTY. - -Wed Aug 29 04:12:08 1990 James Clark (jjc at jclark) - - * groff.sh: Fix description of -Z in help message. - -Tue Aug 28 07:28:33 1990 James Clark (jjc at jclark) - - * pic/object.c (object_spec::make_object): Allow negative and zero - line thicknesses. - * pic/pic.y: Give linethick default value of -1.0. - * pic/troff.c (troff_output::troff_output): Initialize - last_line_thickness to BAD_THICKNESS. - (troff_output::finish_picture): Set thickness to BAD_THICKNESS. - (troff_output::line_thickness): Canonicalize negative thicknesses - to RELATIVE_THICKNESS. - * pic/tex.c (tex_output::set_pen_size): Silently map negative line - thicknesses to DEFAULT_PEN_SIZE. Canonicalize negative pen sizes - to -1.0. - (tex_output::start_picture): Set pen_size to -2.0. - - * ps/ps.c (ps_printer::set_line_thickness): If line_thickness is - 0, then use 0 linewidth. - (ps_printer::ps_printer): Initialize line_thickness to -1. - - * pic/troff.c (troff_output::simple_ellipse): Divide by scale. - - * ps/devps/symbolchars: Remove `or'. - * ps/tmac.ps: Implement \(or with .char. - - * ps/devps/symbolchars: Move most characters into textmap. - * ps/devps/textmap: Add names for troff bracket characters. Remove - ul, ru, br, bv. - - * ps/devps/TSymbol.ps: Removed. - * ps/devps/FontMakefile: Make S from Symbol not TSymbol. - * ps/tmac.ps: Do with .char what TSymbol did. - * ps/devps/download: Remove TSymbol. - - * ps/devps/T: Removed. - * ps/devps/Troff.ps: Removed. - * ps/devps/Troff.afm: Removed. - * ps/tmac.ps: Implement \(ru, \(ul, and \(br with .char. - * ps/devps/download: Remove Troff. - * ps/devps/FontMakefile: Remove T target. - * ps/devps/DESC-A4: Remove T from font list. - * ps/devps/DESC-letter: Likewise. - - * troff/input.c (macro_to_node): Rename to ... - (charinfo_to_node): Don't pass mac argument. Temporarily remove the - character's definition while processing it. - * troff/node.c (node::add_char, make_node): Change calls to - macro_to_node accordingly. - - * troff/input.c (token::next): Translate \_ to \(ul. - - * tty/devascii/R.proto: Add `|'. - * tty/devlatin1/R.proto: Likewise. - -Mon Aug 27 11:25:41 1990 James Clark (jjc at jclark) - - * man: Put the version number in all the man pages. - -Sun Aug 26 11:40:05 1990 James Clark (jjc at jclark) - - * Makefile.bd: New file. - * README.bd: New file. - - * VERSION: New file. - * lib/version.c: Removed. - * lib/Makefile: Create version.c from ../VERSION. Remove version.c - in clean target. - - * troff/input.c (main): Get hyphen_file from GROFF_HYPHEN - environment variable. - - * all Makefiles: Split install target into install.bin for - binaries, and install.nobin for everything else. - * Makefile: Add bindist target. - - * man/afmtodit.man: New file. - * man/Makefile: Add afmtodit.n to MAN1PAGES. - * ps/devps/Makefile: Add textmap to DEVICEFILES. Install afmtodit - in BINDIR. - * ps/Makefile: Pass BINDIR to make install in devps. - - * ps/ps.c (ps_printer::set_char): Do nothing if the character is - the space character. - - * ps/devps/FontMakefile: Rename symbol.afm to tsymbol.afm. - -Sat Aug 25 15:39:03 1990 James Clark (jjc at jclark) - - * ps/ps.c: Redo font downloading. - * ps/devps/download: New file. - * ps/devps/Makefile: Add download to DEVICEFILES. - * ps/devps/afmtodit: Remove -d option. - * ps/devps/FontMakefile: Don't use -d option with afmtodit. - * ps/devps/symbosl.ps: Add %%DocumentFonts comment. - * ps/devps/zapfdr.ps: Likewise. - * ps/devps/TSymbol.ps: Likewise. - -Fri Aug 24 20:10:30 1990 James Clark (jjc at jclark) - - * groff.sh: Initialize dev to ${GROFF_TYPESETTER:-@DEVICE@}. - -Thu Aug 23 10:03:47 1990 James Clark (jjc at yquem) - - * ps/ps.c (ps_output::include_file): If BROKEN_SPOOLER is defined, - then strip the first line if it starts with %. - * Makefile: Add a comment about this. - - * man/tfmtodit.man: New file. - * man/Makefile: Add tfmtodit.n to MAN1PAGES. - * dvi/Makefile: Install tfmtodit in BINDIR. - - * dvi/tfmtodit.c (usage): Mention -v option. - -Wed Aug 22 09:56:36 1990 James Clark (jjc at yquem) - - * troff/node.c (troff_output_file::end_of_line): Call do_motion. - * troff/node.c (troff_output_file::transparent_char): Don't call - flush_tbuf. - - * eqn: Add check_tabs method to most box classes. - * eqn/box.c (box::top_level): Call check_tabs. - - * eqn/script.c (script_box::output): Use \Z. - * eqn/limit.c (limit_box::output): Use \Z. - - * eqn/box.c (box::top_level): Use itoa. - -Tue Aug 21 09:29:28 1990 James Clark (jjc at yquem) - - * dvi/tmac.dvi: Add font translations for CR, C, TT. - * dvi/devdvi/Makefile: Don't make links to CW. - - * ps/tmac.ps: Add font translations for C, CW, CO, CX, CD, H, HO, - HX, HD. - * xditview/tmac.X: Likewise. - - * troff/node.c: Add font translation feature. - (get_font_translation): New function. - (symbol_fontno): Translate the font name. - (mount_font_no_translate): Rename to mount_font to this. - (mount_font): New function. - (font_family::make_definite): Call mount_font_no_translate instead - of mount_font. - (mount_style): Translate the font name. - (font_translate): New function. - (init_font_requests): Bind "ftr" to font_translate. - - * ps/devps/prologue (SN): New procedure that rounds a position to - the nearest (pixel + (.25,.25)). - (DL): Use SN to round endpoints. - - * lib/version.c: Changed version to 0.5. - -Sat Aug 18 04:43:21 1990 James Clark (jjc at yquem) - - * Makefile: Move definition of PAGE to the very beginning, so that - people are less likely to miss it. - -Fri Aug 17 02:15:11 1990 James Clark (jjc at yquem) - - * man/Makefile: Don't need to sed out @UPCASE_PROG_PREFIX@. - - * troff/env.c (environment::choose_breakpoint): Make `can't find - breakpoint' error a warning of type WARN_BREAK. Change message to - `can't break line'. - * troff/groff.h: Declare WARN_BREAK with code 4; change WARN_INPUT to - code 040000. - * troff/input.c: Add WARN_BREAK to warning_table. Include - WARN_BREAK in DEFAULT_WARNING_MASK. - - * tty/tmac.tty: Add definition of \(+-. - - * groff.sh: Remove `--' option to set command. - - * dvi/devdvi/texsy.map: Remove duplicate md entry. - - * ps/devps/eqnchar: Better definition of cdot using md. - * dvi/devdvi/eqnchar: Likewise. - * xditview/devX100/eqnchar: Likewise. - * xditview/devX75/eqnchar: Likewise. - * eqn/lex.c: Add definition of cdot. - -Thu Aug 16 09:33:57 1990 James Clark (jjc at yquem) - - * troff/input.c (get_optional_char): New function. - * troff/input.c (set_page_character): Use get_optional_char(), - rather than has_arg() and tok.get_char(1). - * troff/env.c (tab_character, leader_character, hyphen_char, - field_characters): Likewise. - (margin_character): Likewise. Also always delete the - margin_character_node. - - * troff/input.c (token::get_char): Use token::description. - - * troff/input.c (has_arg): Don't skip over tab and \}. - * troff/number.c (start_number): Give a warning if the number - starts with \} (WARN_RIGHT_BRACE) or tab (WARN_TAB). - -Wed Aug 15 10:04:37 1990 James Clark (jjc at yquem) - - * troff/input.c (empty_name_warning, non_empty_name_warning): New - functions. - (get_name, get_long_name): Use these. Rename `warn' argument to - `required'. - - * troff/node.c (get_fontno): Test that the symbol is not null. - - * troff/input.c (token::description): New function. - * troff/number.c (parse_term): Use token::description in `numeric - expression expected' message. - * troff/groff.h: Add WARN_MISSING. - * troff/number.c (start_number): New function. - * troff/number.c (get_vunits, get_hunits, get_number, get_integer, - get_incr_number): Use start_number(). - * troff/input.c (DEFAULT_WARNING_MASK): Enable WARN_NUMBER by - default. - * troff/input.c (get_name, get_long_name): Use WARN_MISSING. - * troff/reg.c (alter_format): Use WARN_MISSING. Also use - token::descripion. - * troff/input.c (token::get_char): Use WARN_MISSING. - * troff/input.c (token::delimiter): Use token::description. - * troff/env.c (environment_switch): Back out Aug 3 change. - * troff/input.c (has_arg): Skip over \}s and tabs but give a - warning. - * troff/token.h (token::tab): New function. - * troff/node.c (get_fontno): Use tok.skip() rather than has_arg(). - * troff/reg.c (alter_format): Likewise. - * troff/node.c (bold_font): Use has_arg() rather than tok.skip(). - -Tue Aug 14 10:11:21 1990 James Clark (jjc at yquem) - - * troff (most files): Redo warnings. Divide warnings into various - categories; warning() has an additional first argument indicating - the category it falls into. - * troff/input.c (main): -w now takes an argument. New option -W. - (enable_warning, disable_warning): New functions. - - * ps/devps/afmtodit: Add -a option to lie about the italic angle. - * ps/devps/FontMakefile: Pretend TI has an angle of 7. - -Mon Aug 13 10:11:16 1990 James Clark (jjc at yquem) - - * ps/devps/eqnchar: Better definitions of dotdot, vec, dyad, inf. - * xditview/devX100/eqnchar: Likewise. Remove definition of dot. - * xditview/devX75/eqnchar: Likewise. - * dvi/devdvi/eqnchar: Better definitions of vec, dyad, dotdot. - - * eqn/other.c: When bar or over applies to a single character - don't produce an overline_box or an underline_box. Instead produce - an accent_box or an underaccent_box, with the accent a line - whose width is accent_width. New classes underaccent_box, - overline_char_box and underline_char_box. - * eqn/box.h: Move overline_box, underline_box, accent_box class - declarations into eqn/other.c. Add declarations of - make_underline_box, make_overline_box, make_accent_box. - * eqn/eqn.y: Call make_overline_box, make_underline_box - make_accent_box instead of constructors. - * eqn/pbox.h, eqn/box.c: Add accent_width parameter. - - * eqn/other.c: Add accent_box::~accent_box. - * eqn/box.h: Declare it. - - * groff.sh: With -Tps, use eqn -D. - - * eqn/other.c (overline_box::output): Use \Z. If draw_flag use \D - rather than \l. - (underline_box::output): Similarily. - (accent_box::output): Use \Z. - - * xditview/tmac.X: Add definitions of ~ and ^ (so that they are a - bit smaller.) - -Sun Aug 12 09:41:15 1990 James Clark (jjc at yquem) - - * troff/div.c (top_level_diversion::transparent_output(unsigned - char)): Use asciify. - * troff/input.c (asciify): Don't make it static. - * troff/token.h (asciify): Declare it. - - * troff/input.c (get_name, get_long_name, token::get_char, - token::delimiter): Add an extra default argument which says - whether a warning should be printed. - * troff: Pass a non-zero argument to one of these rather than - printing a warning directly. - -Sat Aug 11 09:02:21 1990 James Clark (jjc at yquem) - - * troff: Consistently use symbol::is_null. - - * troff/dictionary.h: Move some inline functions into - dictionary.c. - - * troff/request.h: Move inline functions into input.c. - (request_or_macro::invoke): Make it pure. - - * troff/input.c, troff/reg.h: New class `constant_int_reg'. - * troff/input.c (init_input_requests): Use class constant_int_reg. - (class compatible_reg): Deleted. - * troff/div.c (init_div_requests): Use class constant_int_reg. - (class last_post_line_extra_space_reg): Deleted. - - * troff/env.c (tab_character): Don't change the tab character if - we get an invalid argument. - (hyphen_char): Similarily. - - * troff/reg.c (alter_format): Check that nm is not null. - - * Makefile, groff.sh: Make it possible to customize the commands - used for printing PostScript and dvi files. Also make it possible - to customize the path used by groff.sh. - - * eqn/eqn.y: Make `left' right associative. - -Fri Aug 10 18:20:39 1990 James Clark (jjc at yquem) - - * pic/pic.h: Added definition of M_SQRT2 for those systems that - don't have it. - - * pic/pic.h: Removed definition of INT_MAX. - - * troff/node.c (italic_corrected_node::vertical_extent): Omit - `return'. - - * troff/input.c (token::next): Handle \R like \n. - -Tue Aug 7 09:46:33 1990 James Clark (jjc at yquem) - - * ps/tmac.pc (PSPIC): Simplify. - - * troff/env.c (tab_stops::to_string): - * pic/pic.y (object_type_name): - * pic/troff.c (simple_output::line): - * pic/tex.c (tex_output::spline): - * pic/object.c (object_spec::make_object): - * tbl/main.c (process_data): Add cases to switch statements to - avoid cfront warnings. (Some of these are spurious, since the - switch already has a default case.) - - * ps/tmac.ps (PSPIC): Reformatted. Prefix all local names with - `ps-'. Don't test systat; instead check number of arguments to - ps-bb. - -Mon Aug 6 00:13:07 1990 James Clark (jjc at yquem) - - * macros/tmac.e: Do not decrease the page offset by 0.5i. - - * ps/ps.c (ps_printer::ps_printer): Use mktemp instead of tempnam. - Unlink the file as soon as we have opened it, so that we don't - have to bother with signal handlers. - (handler): Deleted. - (fatal_error_exit): Deleted. - (main): Don't call signal. - - * dvi/tfmtodit.c: Add -k option so that kerns with the skewchar - can be ignored. - * dvi/devdvi/Makefile: Use the -k option with S and MI. - - * pic/pic.y: If there is a label, or an nth construction before - the first `.' in the argument to `with', ignore it and generate a - warning. - * pic/lex.c (lex_warning): New function. - - * tbl/table.c (table::init_output): In section keep and release - macro, use 0 indent when diverting and the correct indent when - rereading. - - * troff/input.c (interpolate_number_format): Do not interpolate - anything if the number register is not defined. - - * tbl/main.c (process_data): Don't add entry when col >= ncolumns. - -Sat Aug 4 08:12:05 1990 James Clark (jjc at yquem) - - * ps/devps/prologue (PICTURE): Set components of graphics state to - their default values. - - * ps/devps/text.enc: Add trademark - * ps/devps/textmap: Add names for club, spade, heart, diamond, - carriagereturn, suchthat. Use Upsilon1 rather than Upsilon. - * ps/devps/symbolchars: Add names for summation and product. - - * dvi/devdvi/texsy.map: Add names for club, spade, heart, diamond, - suchthat. Add pp. Add upper-case letters. - - * xditview/libXdvi/DviChar.c: Add names for club, spade, heart, - diamond, carriagereturn, suchthat. Use Upsilon1 rather than - Upsilon. - - * dvi/devdvi/texsy.map: Rename lA (left angle bracket) to la, and - rA (right angle bracket) to ra. Introduce names for double-headed - arrows and double-barred arrows: <>, va, lA, rA, hA, uA, dA, vA. - * ps/devps/textmap: Likewise for ps device. - * xditview/libXdvi/DviChar.c: Likewise for X100 and X75 devices. - * tty/devascii/R.proto: Rename lA to la and rA to ra. - * tty/devascii/R.proto: Likewise. - * tty/tmac.tty: Provide definitions for \(<>, \(lA, \(rA, \(hA, - \(uA, \(dA. - * eqn/delim.c: In delim_table, rename \(lA to \(la and \(rA to \(ra. - - * xditview/tmac.X: Add definitions for \(fi \(fl \(ff \(Fi \(Fl. - - * eqn/lex.c: Added definitions of `approx', `grad' and `del' to - def_table. - -Fri Aug 3 09:59:27 1990 James Clark (jjc at yquem) - - * troff/div.c (when_request): Use symbol::is_null rather than - has_arg to determine whether we have an argument. - (change_trap): Remove the trap if we get an invalid number. Give - an error if we don't get at least the macro name. - (diversion_trap): Remove trap if we get an invalid name or number. - - * troff/env.c (environment_switch): Pop if we get an invalid - symbol or numeric expression. - - * troff/input.c (do_define_macro): If EOF is encoutered while - defining the macro, do tok.next() before returning. - - * troff/token.h (has_arg): Move definition from here, to ... - * troff/input.c (has_arg): ... here - - * troff/env.c (space_size): Do nothing if we get an invalid argument. - * troff/input.c (shift): Likewise. - - * pic/lex.c (get_token_after_dot): Accept `.center' as a synonym - for `.c'. - - * pic/troff.c (troff_output::start_picture): Comment out calls to - `..'. - - * eqn/main.c (do_file): Subtract 1 from current_lineno if - interpret_lf_args succeeds. - - * eqn/main.c (do_file): Don't recognize delimiter if preceded by - \\. This avoids problems with \$N. - - * groff.sh: Pass -C to preprocessors. - - * lib/lf.c (interpret_lf_args): Be more flexible. - - * tbl/main.c (main): Add -C option. - (table_input::get): Do not recognize TE if followed by character - other than a space or newline unless -C option given. - (process_input_file): Likewise for lf, TS. - (process_data): Likewise for lf in text blocks. - - * eqn/main.c (main): Add -C option. - (do_file): Don't recognize EQ, EN or lf if followed by character - other than space or newline unless -C option given. - * eqn/lex.c (file_input::read_line): Similarily. - * eqn/eqn.h: Declare compatible_flag. - - * etc/soelim.c (main): Add -C option. - (interpret_lf_args): Use version in libgroff. - (do_file): - - * pic/main.c (main): Add -C option, which sets compatible_flag. - (top_input::get), (top_input::peek): If -C option not given, - do not recognize .PS/.PE/.PF/.lf if followed by a character - other than space or newline. - * pic/lex.c (file_input::read_line): Similarily. - * pic/pic.h: Add declaration of compatible_flag. - -Thu Aug 2 11:11:27 1990 James Clark (jjc at yquem) - - * ps/tmac.ps (PSPIC): Avoid use of `echo -n'. - - * troff/node.c, troff/node.h: Add `asciify' methods to classes - derived from node. New class space_char_hmotion_node. - * troff/input.c (asciify_macro): New function. - * troff/input.c (init_input_requests): New request `asciify' bound - to asciify_macro. - * macros/mm.diff: New file. - * Makefile: In install.mm target use `patch' to apply - macros/mm.diff. - - * troff/input.c (macro::print_size): Just print the size in bytes. - - * troff/div.c (return_request): Correct the argument - interpretation. - -Wed Aug 1 12:38:36 1990 James Clark (jjc at yquem) - - * troff/node.h (class composite_node): Add sz member. - * troff/node.c (composite_node::size): Return sz. - * troff/input.c (macro_to_node): Use the initial size in the - environment as the size of the composite_node. - - * troff/node.c (node::zero_width_tprint): Provide a reasonable - default. - -Tue Jul 31 10:07:10 1990 James Clark (jjc at yquem) - - * troff/div.c (change_trap): If we get a bad number expression, - do nothing. - -Mon Jul 30 10:30:49 1990 James Clark (jjc at yquem) - - * lib/matherr.c (matherr): Define this only if math.h defines - TLOSS. - -Sun Jul 29 10:34:27 1990 James Clark (jjc at yquem) - - * troff/div.c (macro_diversion::distance_to_next_trap): If there - no diversion trap return vunits(INT_MAX - vresolution). - -Sat Jul 28 14:28:14 1990 James Clark (jjc at yquem) - - * troff/input.c (do_zero_width): New implementation that doesn't - use a temporary environment. Use instead: - (token::add_to_node_list): New function. - * troff/env.c (environment::get_prev_char_height), - (environment::get_prev_char_height), - (environment::get_prev_char_skew): New functions. - (environment::get_prev_char): New function. - (environment::get_prev_char_width): Change to use get_prev_char. - (init_env_request): Implement new registers .cht, .cdp, .csk. - * eqn/sqrt.c (sqrt_box::output): Don't rely upon the argument to - \Z being processed in a separate environment. - -Fri Jul 27 10:21:25 1990 James Clark (jjc at yquem) - - * tbl/table.c: Removed TABLE_BOTTOM_REG. - - * tbl/table.c (table::init_output): In the section release macro, - give a warning message if the section won't fit on one page. - - * tbl/table.c (table::do_top): Emit table keep only if table is - boxed. - (table::do_bottom): Likewise for table release. - (table::table), (table::add_vertical_rule): Remove reference to - keep member. - * tbl/table.h: Remove keep member. - - * tbl/table.c: New register SUPPRESS_BOTTOM_REG. In - SECTION_RELEASE_MACRO, if there's not enough space before the next - trap to output the diversion, call T# ourselves, set - SUPPRESS_BOTTOM_REG to 1, spring the trap, then set - SUPPRESS_BOTTOM_REG back to 0. In T#, do nothing if - SUPPRESS_BOTTOM_REG is non-zero. In T#, always mark the current - vertical position and return to it before turning traps on again. - -Thu Jul 26 02:54:32 1990 James Clark (jjc at yquem) - - * troff/node.c, troff/node.h: In classes derived from node, - replace prev_char_width method by last_char_node method. - * troff/env.c (environment::get_prev_char_width): Use - node::last_char_node rather than node::get_prev_char_width. - - * Makefile: Added comment about -fno-inline on 68030-based - Apollos. - - * troff/reg.c (number_format_to_ascii), eqn/delim.c (DELIM_TABLE_SIZE), - tty/tty.c (tty_font::load_tty_font), dvi/tfmtodit.c (main): Cast - expressions using sizeof to int. - * dvi/dvi.c (dvi_font::handle_x_command): Avoid long->int warnings. - - * macros/tmac.e (TS): Don't move @f back past the current - position. - -Wed Jul 25 09:11:08 1990 James Clark (jjc at yquem) - - * ps/ps.c (main): Buffer stderr. - * dvi/dvi.c (main): Likewise. - * tty/tty.c (main): Likewise. - - * ps/ps.c (ps_printer::do_import): Improve error handling. - - * troff/input.c (abort_request): Use asciify. - - * driver/printer.h (printer::draw), driver/printer.c (printer::draw), - ps/ps.c (ps_printer::draw), dvi/dvi.c (dvi_printer::draw): Make - type of first argument int rather than char. This works around a - bug on the 68030 based Apollo using g++ 1.37.1. - - * tbl/table.h (class table): Add `keep' member. - * tbl/table.c (table::table): Initialize `keep'. - (table::add_vertical_rule): Set `keep' to 1. - (table::do_top): Only emit table keep macro is `keep' is non-zero. - (table::do_bottom): Likewise for table release macro. - (table::do_row): Emit section keep macro even if the row is 0. - -Tue Jul 24 08:35:07 1990 James Clark (jjc at yquem) - - * macros/tmac.e (@C): Preserve the font family across the change - in environments. - -Mon Jul 23 10:15:23 1990 James Clark (jjc at yquem) - - * lib/font.c: Initialize font::hor and font::vert to 1. - (font::load_desc): Check the values of font::hor and font::vert. - - * lib/lib.h: Added definition of INT_DIGITS. Fix it so that it can - be included in a C compilation. - (iftoa): Use INT_DIGITS. Include lib.h. - (itoa): Likewise. - (as_string): Likewise. - * tbl/table.c: Removed definition of INT_DIGITS. - * eqn/box.c (box::top_level): Use INT_DIGITS + 1 instead of 12. - * troff/input.c (input_input_requests): Likewise. - * ps/ps.c (make_encoding_name): Likewise. - (ps_printer::set_style): Likewise. - (ps_output::put_number): Use 1 + INT_DIGITS + 1 instead of 12. - - * tty/devascii/R.proto: Map fm onto '. - * tty/devlatin1/R.proto: Likewise. - -Sat Jul 21 12:45:07 1990 James Clark (jjc at yquem) - - * tbl/table.c: Use ' instead of DELIMITER_CHAR in places where the - argument to \w is at a different input level. - - * tbl/table.c (table::init_output): Define a new macro - REPEATED_VPT_MACRO, like vpt but if in a diversion also - transparently outputs itself. - (table::define_bottom_macro): Use REPEATED_VPT_MACRO instead of - vpt. - (table::do_row): Likewise. - - * tbl/table.c (vertical_rule::print): Prefix the .sp -1 line with - TRANSPARENT_STRING_NAME. - - * tbl/table.c (table::init_output): In the table release macro - print an error message and don't produce any output if after - issuing the need request the table still will not fit. Also - remove the diversion after bringing it back. - - * tbl/table.c (table::init_output): Define a new macro - REPEATED_MARK_MACRO, like mk but if in a diversion also - transparently outputs itself. - (table::do_row): Mark row_top_reg using REPEATED_MARK_MACRO. This - is necessary because .TH might not call .T#. - (table::do_top): Likewise TOP_REG. - (table::define_bottom_macro): If TOP_REG is no longer valid, use - #T - DOUBLE_LINE_SEP rather than #T. This is necessary because the - table header might contain just the two top rules. - -Fri Jul 20 10:51:42 1990 James Clark (jjc at yquem) - - * troff/div.c: Implement new request `ptr' to print all traps. - - * troff/env.c (init_env_requests): Implement `.tabs' reg with - init_string_env_reg. - * troff/env.c (class tab_reg): Deleted. - -Thu Jul 19 12:07:16 1990 James Clark (jjc at yquem) - - * troff/div.c: New number register .pn returns the number of the - next page as set by the pn request. - - * macros/tmac.an: Redid headers and footers. Number each manual - entry starting from 1 unless \nC is > 0, like Sun. Added an - optional 5th argument to .TH which specifies the manual name and - appears in the center of the header. Understand the X, P and D - registers like Sun. - -Wed Jul 18 10:23:31 1990 James Clark (jjc at yquem) - - * troff/env.c (init_env_requests): New number register `.lt' to - return the title length. - - * troff/node.h (class transparent_dummy_node): New class. - * troff/node.c (class transparent_dummy_node): Provide member - functions. - * troff/env.c (interrupt): Add a transparent_dummy_node, rather - than a dummy_node. - - * troff/input.c (token::next): New escape sequence \). - * troff/input.c (get_copy): Recognize \) in copy mode. - - * troff/input.c (input_stack::clear): New function. - * troff/input.c (exit_request): Use input_stack::clear. - - * troff/token.h: Removed TOKEN_NO_PRINT_CHAR. - * troff/input.c (token::process): Removed case TOKEN_NO_PRINT_CHAR. - - * troff/env.c: Move set_page_character to input.c. Move - page_character to input.c also. - * troff/env.c (title): Split off the reading of the parts of the - title into read_title_parts. - * troff/input.c (read_title_parts): New function. Check the - input_level when testing whether a token matches the delimiter. - - * troff/input.c (exit_request): New function. - * troff/input.c (init_input_requests): Bind ex request to - exit_request rather than exit_groff. - - * troff/input.c (exit_groff): Call tok.next() before - process_input_stack(). - -Mon Jul 16 09:47:23 1990 James Clark (jjc at yquem) - - * troff/env.c: ifdef widow control support on WIDOW_CONTROL. - * troff/env.h: ditto. - * troff/input.c: ditto. - - * troff/env.c (environment::is_empty): Test pending_lines. - - * troff/env.c (environment::have_pending_lines): Removed. - - * troff/input.c: Add request to flush pending lines from the - environment. - - * troff/env.c, troff/env.h: Add automatic widow control feature. - - * troff/input.c (exit_groff): Do process_input_stack() after - do_break() but before setting exit_flag to 2. - - * troff/input.c: Remove FLUSH_PENDING_LINES and - TOKEN_FLUSH_PENDING_LINES. Instead, flush pending lines from - environment after END_TRAP token seen, but only if there aren't - any more traps still unfinished. - * troff/token.h: Remove TOKEN_FLUSH_PENDING_LINES. - -Sun Jul 15 10:50:08 1990 James Clark (jjc at yquem) - - * troff/env.c: Rename the `retain_size' member of class - pending_output_line to `no_fill'. - - * troff/env.c (title): When the line is output, make the - retain_size argument !fill. - - * troff/node.h: Add `hyphenated' member to struct breakpoint. - * troff/node.c (space_node::get_breakpoints), - (dbreak_node::get_breakpoints): Fill this in. - * troff/env.c: Allow specification of maximum number of - consecutive hyphenated lines. - - * troff/env.c (environment::is_empty): Add test for !current_tab. - -Sat Jul 14 11:23:01 1990 James Clark (jjc at yquem) - - * troff/env.c (environment::hyphenate_line): Don't completely give - up if the word is not to be hyphenated; continue so that breaks - can be made at break_char_node's. - - * lib/lib.h: Only define INT_MAX if it's not already defined; - undef INT_MIN if it's already defined. - - * Makefile: Make it easy to define CFRONT_ANSI_BUG. - - * lib/lib.h: If CFRONT_ANSI_BUG is defined, cast INT_MIN to long. - This works around a bug in AT&T C++ 2.0 used with an ANSI C - compiler. - - * macros/tmac.an (an-header): Set no-space mode. - - * macros/tmac.an (TH): Start a new page if necessary. - - * Started using ChangeLog at version 0.4. - -Local Variables: -version-control: never -coding: latin-1 -End: diff --git a/contrib/groff/ChangeLog.116 b/contrib/groff/ChangeLog.116 deleted file mode 100644 index ddbf22c2072d..000000000000 --- a/contrib/groff/ChangeLog.116 +++ /dev/null @@ -1,1388 +0,0 @@ - -Version 1.16.1 released -======================= - -2000-07-31 Werner LEMBERG - - Preparing release 1.16.1. - - * REVISION: Revision number set to 1. - * MORE.STUFF: Added info about port to DOS. - * NEWS, win32-diffs: Updated. - - * src/include/nonposix.h: Remove first line -- this file is used - in C also. - - * Makefile.in (dist): Delete Imakefile earlier to avoid a soft - link to it. - -2000-07-30 Werner LEMBERG - - * doc/texinfo.tex: Update to latest version. - -2000-06-28 Paul Eggert - - * Makefile.in (ENVSETUP): Don't assume POSIX make semantics for - commands that fail. Don't assume that "export a=b" is valid shell - syntax. This is needed for Solaris 2.5.1. - - * src/libs/libgroff/tmpfile.cc, src/utils/indxbib/indxbib.cc: Fix - comment about missing Solaris headers. - - * PROBLEMS: Add section about problems with Sun Make and VPATH. - -2000-06-25 Werner LEMBERG - - * src/devics/grodvi/dvi.cc: Replace _setmode() (for MSC) with - SET_BINARY(). - - * src/include/posix.h: Use HAVE_UNISTD instead of _MSC_VER. - - * win32-diffs: Updated. - * README.WIN32: Added CRs to make all Windows editors happy. - - * src/roff/troff/node.cc: Added WIFSIGNALED() macro (copied from - src/roff/groff/pipeline.c). - -2000-06-23 Eli Zaretskii - - * src/roff/grog/Makefile.sub (grog): Prepend `-e' to - $(SH_SCRIPT_SED_CMD), for the case where its value is empty. - -2000-06-17 Eli Zaretskii - - * src/utils/tfmtodit/tfmtodit.cc: #include nonposix.h. - (tfm::load, gf::load): Open tfm and gf files in binary mode: these - are binary files. - (main): Support non-Posix systems with several different styles of - slash characters in file names. - - * src/utils/pfbtops/pfbtops.c: #include nonposix.h. - (main) [SET_BINARY]: Switch stdin into binary mode. - - * src/utils/indxbib/indxbib.cc: #include nonposix.h. - (main): Support file names with several possible slash-type - characters, as given by DIR_SEPS[] in nonposix.h. - (main) [__MSDOS__]: If renaming the temporary index file fails - because it has more than one dot in its trunk, replace the dot - with an underscore and try again. - (do_file): Use FOPEN_RB instead of "r". Skip every CR before a - Newline. - [__MSDOS__ || _MSC_VER]: Stop at the first ^Z character. - - * src/utils/hpftodit/hpftodit.cc: #include nonposix.h. - (File::File): Open the input file in binary mode. Strip CR - characters from each CR-LF pair. - (xbasename): Support file names with several possible slash-type - characters, as given by DIR_SEPS[] in nonposix.h. - - * src/include/Makefile.sub (HDRS): Add nonposix.h. - - * src/roff/troff/node.cc [HAVE_UNISTD_H]: Include . - (WIFEXITED, WEXITSTATUS, WTERMSIG, WIFSTOPPED, WSTOPSIG) - [!_POSIX_VERSION]: Define for traditional Unix systems. - (real_output_file::real_output_file): Remove the MSVC-specific - call to popen, use instead POPEN_WT, appropriately defined on - nonposix.h. #include nonposix.h. - (real_output_file::~real_output_file): Remove the MSVC-specific - call to pclose, a suitable macro is now defined on nonposix.h. - Use the portable macros WIFEXITED, WIFSIGNALED, WTERMSIG, WSTOPSIG - and WEXITSTATUS instead of assuming traditional Unix - interpretation of the status returned by pclose. - - * src/roff/troff/input.cc (pipe_source): Remove the MSVC-specific - call to popen, use POPEN_RT instead (appropriately defined on - nonposix.h). #include nonposix.h. - (ps_bbox_request): Open the PostScript file in binary mode. - Close the file after processing it. - (getpid) [_MSC_VER]: Remove; a suitable macro is now defined on - nonposix.h. - - * src/roff/groff/pipeline.c (run_pipeline) [__MSDOS__ || _WIN32]: - A version of run_pipeline that doesn't use `fork'. - (signal_catcher) [__MSDOS__ || _WIN32]: New function. - (system_shell_name, system_shell_dash_c) - (is_system_shell) [__MSDOS__ || _WIN32]: New functions, to hide - the ugliness of testing DOS/Windows file names for equality, and - support both stock shells and ports of Unix shells. - - * src/roff/groff/groff.cc: #include nonposix.h. - (BSHELL): Definition moved to nonposix.h. - (main): Use PATH_SEP[0] instead of literal ':'. Use BSHELL_DASH_C - instead of a literal "-c". - (xbasename): Support file names with several possible slash-type - characters, as given by DIR_SEPS[] in nonposix.h. - (possible_command::print): Use BSHELL_DASH_C and IS_BSHELL instead - of literal strings. - - * src/preproc/soelim/soelim.cc: #include nonposix.h. - (do_file): Use IS_ABSOLUTE instead of testing for a literal '/'. - - * src/preproc/pic/Makefile.sub (YTABH): Change pic.tab.h to - pic_tab.h. - - * src/preproc/pic/lex.cc: Change pic.tab.h to pic_tab.h. - - * src/preproc/eqn/Makefile.sub (YTABH): Rename eqn.tab.h to - eqn_tab.h. - - * src/preproc/eqn/lex.cc: #include eqn_tab.h, not eqn.tab.h. - - * src/libs/libgroff/tmpfile.cc (DEFAULT_TMPDIR) [P_tmpdir]: If - P_tmpdir is defined, use it instead of the literal "/tmp". - (remove_tmp_files, add_tmp_file): New functions. - (xtmpfile): Record temporary files and register an atexit function - to delete them explicitly, instead of relying on the OS to do - that, which doesn't work on non-Unix systems. - - * src/libs/libgroff/searchpath.cc: #include nonposix.h. - (search_path::search_path): Use PATH_SEP instead of a literal - colon. - (search_path::command_line_dir): Ditto. - (search_path::open_file): Use IS_ABSOLUTE, PATH_SEP and DIR_SEPS, - to support non-Posix systems. - - * src/libs/libbib/search.cc: #include nonposix.h. - (search_list::add_file): Open the file in binary mode. - - * src/libs/libbib/linear.cc: #include nonposix.h. - (file_buffer::load): Remove \r characters preceding \n from the - loaded buffer. - - * src/libs/libbib/index.cc: #include nonposix.h. - (make_index_search_item): Open index_filename in O_BINARY mode. - (index_search_item_iterator::get_tag): Ditto. Remove \r - characters before \n characters. - (index_search_item::check_files): Open files in binary mode. - (index_search_item::munge_filename): Support DOS-style file names - with backslashes and drive letters, use IS_ABSOLUTE. - - * src/devices/grops/ps.cc: #include nonposix.h. - (main) [SET_BINARY]: Switch stdout to binary mode. - - * src/devices/grolj4/lj4.cc: #include nonposix.h. - (main) [SET_BINARY]: Switch stdout to binary mode. - - * src/devices/grolbp/lbp.cc: #include nonposix.h - (fill_pattern) [SET_BINARY]: Switch stdout to binary mode. - - * src/devices/grodvi/dvi.cc: #include nonposix.h. - [_MSC_VER]: Remove inclusion of Windows-specific headers (done by - nonposix.h). - (main) [SET_BINARY]: Switch stdout to binary mode. - [_MSC_VER]: Remove an explicit call to _setmode. - - * src/include/nonposix.h: New file. - - * Makefile.in (ENVSETUP): New variable, to set up case-sensitive - operation when building with DJGPP. - ($(TARGETS), dot, $(LIBDIRS), $(CPROGDIRS), $(CCPROGDIRS)) - ($(DEVDIRS), $(TTYDEVDIRS), $(INCDIRS), $(OTHERDIRS)): Use - ENVSETUP. - - * Makefile.comm: mv y.tab.[ch] to y_tab.[ch], to make it work on - MS-DOS. - (.man.n): Replace `;' with `|', since FONTPATH, MACROPATH, - etc. can include a semi-colon on DOS/Windows. - (depend.temp): Use depend1.temp instead of depend.temp1, to - prevent files from overerwiting each other on 8+3 filesystems. - - * gendef.sh (t): Change definition to work with DOS/Windows. - - doc/groff.texinfo: Apart of some typo corrections, I also changed - some index entris, to make them more non-ambiguous, and also put - @ignore around some parts that are not yet written, to allow the - Info output be readable. - -2000-06-10 Gael Queri - - Replaced specific checks for function declarations with a generic - routine taken from GNU bfd. - - * aclocal.m4 (GROFF_NEED_DECLARATION): New function. - GROFF_PUTENV, GROFF_POPEN, GROFF_PCLOSE, GROFF_HYPOT: Removed. - * configure.in: Use it. - * src/devices/grolbp/lbp.cc, src/include/lib.h, - src/preproc/grn/hgraph.cc, src/preproc/pic/pic.h, - src/roff/groff/groff.cc: Use it. - * Makefile.in, configure: Updated. - -2000-06-07 Paco Andrés Verdú - - * src/devides/grolbp/lbp.h: Removed unused variables. - -2000-05-31 Keith Thompson - - * src/devices/grolbp/lbp.cc (set_papersizes): Add declaration of - strncasecmp(). - -2000-05-31 Werner LEMBERG - - * aclocal.m4 (GROFF_SRAND): New function to test the return value - of srand() -- at least SunOS 4.1.3 uses `int' instead of `void'. - * configure.in: Use it. - * src/preproc/pic/pic.y, src/preproc/pic/pic.cc: Use it. - * configure, Makefile.in: Updated. - - * configure.in: Add test for strncasecmp(). - * src/include/lib.h: Use it. - -2000-05-29 Andrej Borsenkow - - * src/preproc/grn/Makefile.sub: Add MLIB. - -2000-05-29 Nix - - * Makefile.in: Use @datadir@ and @mandir@ appropriately. - -2000-05-29 Werner LEMBERG - - * src/roff/grog/Makefile.sub, src/roff/grog/grog.sh: Add `@g@'. - - * PROBLEMS: Small update. - - * src/devices/grolbp/lbp.cc: Various small fixes. - -2000-05-28 Keith Thompson - - * src/roff/nroff/nroff.sh: Fix main loop syntax. - - * src/utils/indxbib/indxbib.cc: Add declaration of mkstemp(). - -2000-05-25 Werner LEMBERG - - * man/roff.man: Removed unused macro. - -2000-05-24 Werner LEMBERG - - * Makefile.in (dist): Remove src/xditview/Imakefile explicitly. - This is needed e.g. if you do - `make distclean; ./configure; make dist'. - -Version 1.16 released -===================== - -2000-05-23 Werner LEMBERG - - Adding font CWI (constant width italic) to devdvi. - - * font/devdvi/CWI: New file. - * font/devdvi/generate/Makefile: Add generating rule. - * font/devdvi/DESC.in, font/devdvi/Makefile.sub, win32-diffs, - tmac/tmac.dvi: Use it. - * NEWS: Announce it. - - * font/devlj4/*: Regenerated (only adding kernings for `cq' glyph). - * font/devlj4/generate/Makefile: Cosmetic changes only. - - * man/groff.man: Removed most of the redundant description of - special characters (which is in groff_char.man). Added font - translation CB->CR for devdvi. Other minor fixes. - - * tmac/tmac.dvi: Improved appearance of \(co (copyright) and \(rg - (registered) symbols. - -2000-05-22 Werner LEMBERG - - * doc/Makefile: Added rule for creating info files. - - * font/devdvi/*: Added kernings for `cq' glyph. Updated to latest - AMS font metrics. - * font/devdvi/generate/Makefile: Fixed dependencies. - - * font/devps/*: Regenerated. Heavy changes for Bookman and - NewCentury Schoolbook! - * font/devps/generate/afmname: Will now run with GNU awk. - * font/devps/generate/textmap: Added forgotten `cq' glyph name. - * font/devps/generate/Makefile: Cosmetic changes only. - -2000-05-21 Werner LEMBERG - - * tmac/tmac.an: Added a new command line option `-rSxx' (`xx' can be - 10, 11, or 12) to support output with 11pt and 12pt base font sizes. - `.SS' now produces a heading with a smaller size than `.SH'. - Completely formatted. - * doc/groff.texinfo, tmac/groff_man.man, NEWS: Document it. - - * man/groff.man: Improved table appearance. Use of `eo' request - to reduce number of doubled backslashes in macro definitions. - Replacing `\e' with `\(rs'. Other minor fixes. - - * src/preproc/tbl/main.cc: Insert HTML table end tag before `lf' - to have correct line number. - - * INSTALL: Small improvement. - -2000-05-20 Bernd Warken - - * man/roff.man, tmac/groff_tmac.man: Updates (with corrections by - WL). - -2000-05-19 Bernd Warken - - * man/groff.man: Complete update (with a lot of corrections by WL). - -2000-05-18 Werner LEMBERG - - Adding `cq' (PS name `quoteright') glyph name as an alias for "'". - - * font/*/*: Implement it. - * man/groff_char.man, NEWS: Document it. - - * src/include/unix.h: Removed. It isn't used. - - * doc/groff.texinfo: Slight improvements. - -2000-05-17 Werner LEMBERG - - * README, win32-diffs: Small fixes and improvements. - -2000-05-16 Werner LEMBERG - - * FDL: New file (the Free Documentation License version 1.1). - - * doc/groff.texinfo: Added many start-up values for gtroff. - Some structural improvements of the source code. - -2000-05-15 Werner LEMBERG - - * src/roff/troff/input.cc: Added small comment about troffrc-end. - * src/roff/troff/troff.man: Added info about troffrc-end. - -2000-05-14 Werner LEMBERG - - * Makefile.in (EXTRADIRS): Fix typos. - (dist): Handle deletion of old .tar.gz file correctly. - (DISTDIRS): Include all tty output devices. - - * doc/groff.texinfo: Adding more cross references; countless other - fixes. - -2000-05-13 Werner LEMBERG - - * MORE.STUFF: Added Robert Marks's utilities. - -2000-05-12 Werner LEMBERG - - Added win32 port contributed by Blake McBride - . - - * README.WIN32, win32-diffs: New files. - * NEWS: Updated. - - * src/preproc/grn/hgraph.cc (HGSetBrush): Replace `%lf' with `%f'. - (tmove, tmove2): Added parentheses to avoid compiler warnings. - (change): Removed unused variables. - - * src/preproc/grn/main.cc (main, conv): Removed unused variables. - (savebounds): Changed return value from `int' to `void'. - * src/preproc/grn/hdb.cc: Ditto. - - * src/devices/grolbp/lbp.cc (lbp_printer::draw): Removed superfluous - final backslash in comment to avoid compiler warning. - - * src/utils/pfbtops/pfbtops.c: Added `getopt.h'. - - * doc/groff.texinfo: More fixes. - -2000-05-11 OKAZAKI Tetsurou - - * tmac/tmac.doc: Documentation fix. - -2000-05-11 Werner LEMBERG - - * doc/groff.texinfo: Reading the source code shows up a lot of - omissions and incorrect data... More conversion to @Deffn macros. - -2000-05-10 Werner LEMBERG - - * src/roff/troff/reg.cc (number_value_to_ascii): Remove ASCII - dependency. - - * src/roff/troff/request.h: Removing unused `no_break_flag'. - -2000-05-09 Werner LEMBERG - - * man/groff.man, man/roff.man, tmac/groff_tmac.man: Minor - improvements. - - * doc/groff.texinfo: Extended history section. More conversion to - @Deffn macros. More .tr documentation. - -2000-05-07 Werner LEMBERG - - * doc/groff.texinfo: Completed tab section. Added info about - fields. - -2000-05-06 Mike MacIsaac - - * PROBLEMS: Describe configure script fix for OS/390 Unix. - -2000-05-05 Werner LEMBERG - - * font/devdvi/DESC.in: Change size 11pt to 10.95pt (as used in - LaTeX 2e). - * NEWS: Document it. - - * man/troff.man: Minor optical improvements. - -2000-05-03 Werner LEMBERG - - Adding `dq' (PS name `quotedbl') glyph name as an alias for `"'. - - * font/*/*: Implement it. - * man/groff_char.man, NEWS: Document it. - -2000-05-02 Werner LEMBERG - - * tmac/groff_tmac.man, man/groff.man, man/roff.man: Fixing @MANxEXT@ - expansion. - * NEWS: Document the three new man pages. - - * aclocal.m4 (GROFF_CXX_CHECK): Removing obsolete AC_C_CROSS call. - * configure: Updated. - - * font/devcp1047/R.proto: Fixing fatal bug (a missing `"' character). - -2000-05-01 Werner LEMBERG - - Added grap support to grog. - - * src/roff/grog/grog.sh, src/roff/grog/grog.pl: Implement it. - * src/roff/grog/grog.man: Document it. - - * doc/groff.texinfo, NEWS: Add info about grap support. - - Add new man pages comptributed by Bernd Warken - (with slight fixes by me). - - * tmac/groff_tmac.man: New file documenting tmac mechanism. - * tmac/Makefile.sub: Add groff_tmac.man. - * man/roff.man: New file giving overview of roff system. - * man/troff.man: A short reference of troff. - * man/Makefile.sub: Add roff.man and troff.man. - -2000-04-30 Werner LEMBERG - - Added grap support to groff. - - * src/roff/groff/groff.cc: Implement it. - * src/roff/groff/groff.man: Document it. - - * src/devices/grotty/grotty.man: Add cp1047 device. - * src/preproc/eqn/eqn.man, src/preproc/eqn/neqn.sh, tmac/eqnrc: - Ditto. - * src/roff/groff/groff.man: Ditto. - * src/roff/nroff/nroff.sh, src/roff/nroff/nroff.man: Ditto. - * doc/groff.texinfo: Ditto. - - * tmac/troffrc: Fix mapping of latin-1 char 160 (non-breakable space) - for cp1047. - -2000-04-29 Werner LEMBERG - - * man/groff_char.man: Add `pc' glyph. - * tmac/tmac.latin1: Replacing `md' glyph with `pc'. - * tmac/tmac.tty: Add `pc' glyph. - * tmac/tmac.tty-char: Use/add `pc' glyph. Don't call tmac.latin1 if - we use cp1047 output device. - - * Makefile.in, aclocal.m4: Don't build utf8 on EBCDIC hosts since - there are still hardcoded latin1->unicode values in utf8's font - definition files. - * configure: Updated. - * NEWS: Minor clarification. Updated. - - * PROBLEMS: Formatted. Added info about C++ fix pack for OS/390 - Unix. - -2000-04-28 Werner LEMBERG - - Adding EBCDIC code page 1047. - - * font/devcp1047/R.proto, font/devcp1047/Makefile.sub, - font/devcp1047/DESC.proto: New files. - - * aclocal.m4 (GROFF_EBCDIC): Introduce TTYDEVDIRS which can be - either ascii/latin1 or cp1047. - * Makefile.in: Use it. - * configure: Updated. - - Replacing and/or adding `md' (mathdot) glyph with `pc' - (periodcentered) in all text fonts. - - * font/*/*: Change it. - -2000-04-27 Werner LEMBERG - - * aclocal.m4 (GROFF_OS390): Fixing compiler flags. - - * configure.in: Add check for strings.h. - * src/include/driver.h: Use HAVE_STRINGS_H. - * src/devices/grolbp/lpb.cc: Remove string.h. - - * src/include/groff-getopt.h: New file. It will be used instead of - getopt.h (to be included in lib.h) to avoid endless problems with - picky C++ compilers. - * src/include/lib.h: Use groff-getopt.h. - * src/include/Makefile.sub: Updated. - - * configure: Updated. - * Makefile.in: Updated. - - * NEWS: Mention EBCDIC support. - -2000-04-26 Werner LEMBERG - - * TODO: Some additions. - -2000-04-25 Werner LEMBERG - - * src/roff/troff/troff.man, doc/groff.texinfo: Fixing documentation - of mso request. - -2000-04-23 Werner LEMBERG - - * src/roff/troff/troff.man: Minor fixes. - -2000-04-22 Werner LEMBERG - - * src/roff/troff/troff.man, doc/groff.texinfo, NEWS: Document the - `.T' string register and the incompatible definition of the `.T' - number register (compared to Unix troff). - - * man/groff_char.man: Add some missing characters. - * font/devutf8/NOTES: Update. - -2000-04-21 Werner LEMBERG - - * src/include/htmlindicate.h, src/include/lib.h, - src/include/posix.h: Fix copyright. - - * src/include/Makefile.sub: Update. - -2000-04-20 Werner LEMBERG - - * src/roff/troff/input.cc (input_char_description): Removing - superfluous space char. - - * tmac/tmac.X: Fix typo \(bq -> \(Bq. - - * doc/groff.texinfo: Document EBCDIC. - -2000-04-19 Werner LEMBERG - - Introducing `shc' as the glyph name for the soft hyphen character. - - * tmac/tmac.tty, tmac/tmac.latin1, tmac/tmac.html, - font/devlatin1/R.proto: Use it. - - * NEWS: Updated. - -2000-04-18 Werner LEMBERG - - * src/devices/grops/ps.cc (ps_printer::flush_sbuf): Removing - dependency on ASCII order. - -2000-04-16 Sandor BARANY - - * src/libs/libgroff/illegal.c: Added EBCDIC table. - * src/roff/troff/input.cc: Added adaptation to EBCDIC. - - * src/preproc/refer/refer.cc, src/roff/troff/env.cc: Minor changes - to increase portability. - -2000-04-15 Werner LEMBERG - - * aclocal.m4: Added GROFF_EBCDIC and GROFF_OS390 tests. - Redefined AC_OUTPUT_MAKE_DEFS to replace ASCII character `012' with - the generic `\n' if under OS/390 Unix. - - * configure.in: Call GROFF_EBCDIC and GROFF_OS390. - - * configure: Regenerated. - -2000-04-14 Werner LEMBERG - - * doc/groff.texinfo: More conversions to @Deffn. - -2000-04-12 Werner LEMBERG - - * tmac/tmac.psfig: Fix incorrect use of `&' operator by replacing it - with `:'. - - * src/roff/nroff/nroff.man: Add note about tmac.tty-char. - -2000-04-10 Werner LEMBERG - - * doc/groff.texinfo: More conversions to @Deffn. - -2000-04-08 Werner LEMBERG - - * src/libs/libgroff/{getopt.c,getopt1.c}, src/include/getopt.h: - Updated to latest version (glibc 2.1.3). - -2000-04-07 Werner LEMBERG - - * doc/Makefile (clean): Include more index files. - Add rule texinfo->dvi. - -2000-04-05 Werner LEMBERG - - * doc/groff.texinfo: Added new index `op' for operators. More - info on end of sentence characters. More use of @Deffn. - -2000-03-30 Werner LEMBERG - - * */*.man: Adding a note that a whitespace can be inserted between - a command line option and its parameter -- we are using GNU getopt. - - * src/roff/groff/groff.man: Add example of `-m mandoc'. - -2000-03-28 Werner LEMBERG - - Correct anachronism of calling the man macro file with `-man' - instead of `-m man' etc. - - * tmac/tmac.man, tmac/tmac.mandoc, tmac/tmac.markup, tmac/tmac.mdoc, - tmac/tmac.me, tmac/tmac.ms: New files tmac.m which simply - load tmac.. - - * tmac/Makefile.sub: Updated. Take care of $(tmac_an_prefix) etc. - - * NEWS: Updated. - - * doc/groff.texinfo: Updated. - - * tmac/groff_man.man: Copyright added. - -2000-03-27 Werner LEMBERG - - * doc/groff.texinfo: Introducing macros `Deffn' and `Defmac' to - typeset the request resp. escape name with a tt font -- due to a - bug in texinfo.tex it is necessary to use the `-e' switch with - texi2dvi. - - Improving info about usage of groff units. - - Other minor fixes. - -2000-03-20 Werner LEMBERG - - * doc/groff.texinfo: Added section about man macro package - (I've basically taken groff_man.man). Introducing new indices `ma' - for macros/strings and `gl' for glyph names. Other minor fixes. - - * tmac/groff_man.man: Fixed some typos. - -2000-03-19 Werner LEMBERG - - * doc/groff.texinfo: Removed all occurrences of `you', `we', etc. - Other minor fixes. - - * doc/texinfo.tex: New file. - -2000-03-18 Werner LEMBERG - - * doc/groff.texinfo: Improved section on number registers. Other - minor updates. - -2000-03-16 Werner LEMBERG - - * src/roff/groff/groff.man: Added info about grolbp. Make nicer - synopsis. - - * src/devices/grolbp/grolbp.man, src/roff/nroff/nroff.man, - src/devices/grolj4/grlj4.man, src/devices/grops/grops.man, - src/preproc/eqn/eqn.man, src/utils/afmtodit/afmtodit.man, - src/utils/tfmtodit/tfmtodit.man: Make nicer synopsis. - - * src/preproc/grn/grn.man: Better synopsis; added copyright. - - * src/roff/grog/grog.man: Updated copyright date. - -2000-03-14 Francisco Andrés Verdú - - * configure.in: Added test for strdup. - - * src/devices/grolbp/lbp.cc: Added a strdup() version in case none - is available. - - Replaced dynamic allocation of arrays `[...]' with `new' operator. - - Other minor fixes. - -2000-03-12 OKAZAKI Tetsurou - - * Makefile.comm: Add $(INCLUDES) to $(ALL_CFLAGS). - -2000-03-11 Werner LEMBERG - - * src/preproc/grn/hdb.cc (DBGetType): Added return value to make - compilers silent. - * src/preproc/grn/hgraph.cc: Add #ifdef for hypot(). - * src/include/lib.h: Remove some spaces. - -2000-03-10 Werner LEMBERG - - * src/libs/libgroff/tmpfile.cc (xtmptemplate, xtmpfile): Removing - initializers from arguments (some compilers don't like this). - -2000-03-09 Gaius Mulley - - * src/libs/libgroff/htmlindicate.cc: Added library file which is now - used by pic and eqn to tell grohtml where the graphic regions start - and end. - * src/libs/libgroff/Makefile.sub: Use it. - * src/preproc/eqn/main.cc, src/preproc/pic/troff.cc: Altered to use - graphic_start() and graphic_end() from htmlindicate.cc. - -2000-03-09 Werner LEMBERG - - * tmac/tmac.safer: Will now work correctly in compatibility mode. - * tmac/groff_man.man: More fixes. - -2000-03-08 Werner LEMBERG - - * doc/Makefile: Added texput.log to the `clean' target. - * doc/groff.texinfo: Added info about delimiters for escapes. - -2000-03-08 Bernd Warken - - * src/preproc/pic/pic.man: Add info on conversion of pic images to - other graphic formats. - -2000-03-07 OKAZAKI Tetsurou - - * Makefile.in, Makefile.sub, src/preproc/eqn/Makefile.sub, - src/roff/groff/Makefile.sub, src/roff/nroff/Makefile.sub, - src/utils/afmtodit/Makefile.sub: Use $(INSTALL_SCRIPT) for script - files. - -2000-03-07 Werner LEMBERG - - * doc/groff.texinfo: Spelling fixes. - -2000-03-06 Werner LEMBERG - - * tmac/groff_man.man: Completely revised to cover everything in - tmac.an. - - * doc/groff.texinfo, src/roff/troff/troff.man: Document evc request. - Other minor fixings. - * src/roff/troff/env.cc (environment_copy): Improve error message and - fix itoa->i_to_a. - * src/roff/troff/TODO: Updated. - - * doc/Makefile: Bug fixes -- this is still provisional, though... - - * tmac/eqnrc: Small fixes. - -2000-03-05 Abramo Bagnara - - Adding a request `evc' to copy environments. - - * src/roff/troff/env.cc (environment::copy, environment_copy): - Implement it. - * src/roff/troff/env.h: Add prototype. - -2000-03-05 Francisco Andrés Verdú - - Adding strsep() -- Solaris 8 doesn't have it. - - * configure.in: Test it. - * src/devices/grolbp/lbp.cc: Add code. - -2000-03-05 Werner LEMBERG - - * src/roff/troff/div.cc (macro_diversion::output, - top_level_diversion::output): Fixing an incompatibility with - original troff: \x'0' updates the .a register also. Thanks to - for pointing this out. - * doc/groff.texinfo: Document it. - - * Makefile.in: Create Makefile.dep if necessary before calling the - submake process to avoid warning about nonexistent file. - - * NEWS, PROJECTS: Updated. - -2000-03-04 Werner LEMBERG - - * tmac/troffrc: Add tmac.lbp. - -2000-03-03 Francisco Andrés Verdú - - * tmac/tmac.lbp: New file. - * src/devices/grolbp/grolbp.man: Add documentation of `lbpname' - command. - -2000-03-03 Werner LEMBERG - - * Makefile.in: Fixing $(subdir). - - * README, NEWS: Small fixes. - - * test-groff: Adding path to grolbp. - - * configure.in: The (new) file src/xditview/Imakefile.in will be - also configured -- it is now possible to build gxditview in a - directory different from $srcdir. - -2000-03-02 Blake McBride - - * src/libs/libgroff/searchpath.cc (open_file): Adapting to WinNT. - - * MORE.STUFF: Added website of bell labs and info about plot2dev. - -2000-03-01 Colin Phipps - - * src/utils/indxbib/indxbib.cc (main): Use mkstemp() for temporary - files. - -2000-02-29 Werner LEMBERG - - Adding GNU getopt to the groff distribution. - - * src/include/getopt.h, src/libs/libgroff/{getopt.c,getopt1.c}: - New files. - * src/include/Makefile.sub, src/libs/libgroff/Makefile.sub: Update. - * aclocal.a4: Remove GROFF_GETOPT function. - * configure.in, Makefile.in, PROBLEMS: Update. - * src/include/lib.h: Replace getopt tests with getopt.h. - * src/devices/grolbp/lpb.cc: Remove inclusion of getopt.h. - - * doc/groff.texinfo: Further checking/updating. Adding more index - entries. - - * man/groff_out.man: Fix nroff mode activation (for emacs). - * man/groff_font.man: Add missing ligature. - -2000-02-28 Werner LEMBERG - - * doc/groff.texinfo: Further checking/updating. Adding more index - entries. - - * src/devices/grolbp/grolbp.man: Added a comment line at the - beginning of the file (similar to shell scripts) which indicates - that `tbl' should be used as a preprocessor. - -2000-02-27 Blake McBride - - Adapting groff to MS Visual C++ 6.0 compiler (tested with - Windows NT 4.0). Uses _MSC_VER define where necessary. - - * src/devices/grodvi/dvi.cc: Making stdout a binary stream. - * src/devices/grolj4/lj4.cc: Making getopt variables `extern "C"'. - * src/devices/grohtml/html.cc, src/devices/grops/ps.cc, - src/include/lib.h, src/libs/libgroff/errarg.cc, - src/libs/libgroff/itoa.c, src/libs/libgroff/nametoindex.cc, - src/preproc/refer/label.y, src/preproc/refer/label.cc, - src/roff/groff/pipeline.c, src/roff/troff/column.cc, - src/roff/troff/div.cc, src/roff/troff/env.cc, - src/roff/troff/input.cc, src/roff/troff/node.cc, - src/roff/troff/reg.cc: Renaming itoa() to i_to_a() and iftoa() to - if_to_a() to avoid name clashes. - * src/include/posix.h: Don't use unistd.h. - * src/libs/libgroff/tmpfile.cc: Use `#ifndef...#else...#endif' - clause for integrating non-Unix xtmpfile() code. - * src/roff/troff/input.cc: Adding `public' keyword to macro_header - structure; use "rt" for popen() in pipe_source(); add getpid() - dummy function. - * src/roff/troff/node.cc: Use special versions of popen() in - real_output_file() and pclose() in ~real_output_file(). - -2000-02-27 Werner LEMBERG - - Adding a new driver, grolbp, for Canon CAPSL printers (LBP-4 and - LBP-8 series laser printers). This code has been contributed by - Francisco Andrés Verdú . - - * src/devices/grolbp/*: The grolbp output device. - * font/devlpb/*: The font description files. - * Makefile.in: Add grolpb and devlbp subdirectories. - - * src/devices/grodvi/grodvi.man, src/devices/grolj4/grolj4.man, - src/devices/grotty/grotty.man,src/roff/troff/troff.man: Minor - typographic fixes. - - * doc/groff.texinfo: Further checking/updating. Adding more index - entries. - - * NEWS: Updated. - - * src/devices/grolbp/Makefile.sub: Adding $(srcdir). - - * man/groff_font.man: Adding info about obsolete DESC keywords. - * src/devices/grolj4/grolj4.man: Documenting additional DESC - keywords. - -2000-02-26 Werner LEMBERG - - * src/preproc/grn/grn.man: Added info about the gremlin file format - (contributed by Daniel Senderowicz ). - -2000-02-25 Werner LEMBERG - - * src/preproc/grn/main.cc: Allow values of `narrow' parameter and - friends to be non-integer. - - * src/preproc/grn/grn.man: Document it. - - * doc/groff.texinfo: Further checking/updating. Adding more index - entries. - -2000-02-24 Werner LEMBERG - - * src/preproc/grn/main.cc: Introduce BASE_THICKNESS, defining - line thicknesses to be integer multiples of this value. - - * src/preproc/grn/grn.man: Commenting out the -s option -- the - corresponding code doesn't work (yet). - - * doc/groff.texinfo: Further checking/updating. Adding more index - entries. - -2000-02-23 Werner LEMBERG - - * src/preproc/grn/{main.cc, hgraph.cc}: Using point units to - specify line thickness instead of base units. The new default - values are now 0.15,pt 0.45pt, and 0.75pt for thin, middle, and - thick lines respectively. - - Removed unused variable `prevval'. - - * src/preproc/grn/grn.man: Updated. - -2000-02-22 Werner LEMBERG - - * src/preproc/grn/main.cc: Slight formatting. - - * src/roff/groff/groff.man: Formatting fix. - * src/preproc/grn/grn.man: Ditto. - - * src/roff/grog/grog.pl: Fixing two embarassing bugs. - - * doc/groff.texinfo: Further checking/updating. - -2000-02-21 Werner LEMBERG - - * README, INSTALL, PROJECT, PROBLEMS, BUGREPORT: Updated. - - * test-groff: Added grn subdir to path. - - * doc/groff.texinfo: Some restructing and other small improvements. - - * src/roff/groff/groff.cc (help): Fixed info string. - -2000-02-20 Werner LEMBERG - - * doc/meref.me: Fix description of .GS request. - - * src/roff/troff/troff.man: Fixing typo. - - Adding the `grn' preprocessor for gremlin graphic files. - - * src/preproc/grn/*: This is the Berkeley distribution written by - David Slattengren and Barry Roitblat, adapted to groff by Daniel - Senderowicz and Werner Lemberg. - - * doc/grnexampl.{me,g}: A sample for grn. - - * Makefile.in: Added subdirectory entry for grn. - - * src/roff/groff/groff.cc: Added support for grn. It can be now - called with the switch `-g'. - - * src/roff/groff/groff.man: Updated. - - * src/roff/grog/grog.{man,pl,sh}: Updated. - - * NEWS: Updated. - -2000-02-11 Gaius Mulley - - * src/include/lib.h: Added xtmptemplate and made xtmpfile - parametrically polymorphic. - - * src/libs/libgroff/tmpfile.cc: Implemented xtmptemplate - and the alterations to xtmpfile. - xtmpfile can be requested to return the filename created - and asked not to unlink the temp file. The default behaviour - if parameters are absent is exactly the same as before. - -2000-02-11 Abramo Bagnara - - A new request `length' is available which returns the length of a - string in a number register: - - * src/roff/troff/input.cc (length_macro): Implement it. - * src/roff/troff/input.cc (init_input_requests): Register it. - -2000-02-11 Werner LEMBERG - - * doc/groff.texinfo, src/roff/troff/troff.man: Add documentation - of the `substring' request. - - * src/roff/troff/troff.man, doc/groff.texinfo: Document `length' - request. - - * src/roff/troff/TODO, NEWS: Updated. - -2000-02-09 Werner LEMBERG - - * src/roff/groff/groff.man: Added an example. - -2000-02-06 Werner LEMBERG - - I've considerably modified the directory structure of the - distribution to get a more vertical layout. For example, the number - of top level directories has been reduced from 42 to 6. - - As a consequence, many changes, especially to the makefiles, were - necessary: - - * The makefile variables `top_builddir' and `top_srcdir' have been - introduced. Virtually all relative paths have been replaced with - absolute ones using these two variables. - - * Dependencies (in the files `Makefile.dep') are no longer part of - the distribution. Instead, they are created during a `make install' - in the build directory. - - * aclocal.m4 (GROFF_SRCDIR, GROFF_BUILDDIR): Two new functions to - make `top_srcdir' and `top_builddir' absolute. - - Some other changes: - - * Man pages now depend on the files `VERSION' and `REVISION'. - - * The added shell script `mkinstalldirs' will replace `mkdir' in - almost all cases. - - * VERSION: Version number increased to 1.16. - -2000-02-04 Werner LEMBERG - - * grops/psrm.cc (read_one_of): Fixed pointer incrementation. - - * Makefile.in: Removed $(tmac_m) since it is no longer needed - (after an update of the mm stuff). - - * troff/Makefile.sub (majorminor.cc): Fix dependencies. - -2000-02-03 Werner LEMBERG - - The .psbb request will now also accept Mac PS images (i.e. using LF - as the EOL character). - - * troff/input.cc (ps_get_line): New function, taken from psrm.cc - (with slight modifications). - * troff/input.cc (do_ps_file): Use it. - - * test-groff: Add grohtml and grolj4 output devices to PATH. - -2000-01-30 Werner LEMBERG - - * NEWS, MORE.STUFF: Updated. - -2000-01-30 Cary D. Renzema - - Add the `srand' command to pic. - - * pic/lex.cc, pic/pic.y: Implement it. - * pic/pic.man: Document it. - * pic/pic.cc, pic/pic.tab.h: Regenerated (with yacc). - -2000-01-30 Werner LEMBERG - - Add a new request `.psbb'. This does exactly what the external - program psbb did. It scans a PostScript image file for a - %%BoundingBox comment and extracts the bounding box values (in - PostScript units) which are then stored in the four new (read-only) - number registers `llx', `lly', `urx', and `ury'. - - This will allow the usage of the .PSPIC macro without worrying - about unsafe behaviour of groff, i.e., it will work without the - `-U' switch of groff. - - * troff/input.cc: Implement it. - * tmac/tmac.pspic: Use it. - * troff/troff.man, grops/grops.man, NEWS: Document it. - * psbb/*, Makefile.in: Remove it since it is no longer needed. - - This is bloody C code simply adapted from psbb.c! Any improvements - welcome. - -2000-01-29 Werner LEMBERG - - * man/groff_font.man: Minor clarifications. - - * NEWS: Updated. - -2000-01-28 Werner LEMBERG - - * afmtodit/afmtodit.pl: Use new `--' comment delimiter. - -2000-01-28 Gaius Mulley - - * man/groff_font.man: Brought up to date regarding tcommand - extensions. - * libgroff/font.cc: Handle everything after `--' as a comment - in the font files. - * devps/*: Added comment delimiter inside devps font files. - -2000-01-28 Werner LEMBERG - - * tmac/tmac.arkup, tmac/groff_markup.man: Replace \fC...\fR with - \fC...\fP (which now works as expected). - - * troff/troff.man: Fix typo. - -2000-01-27 Gaius Mulley - - Completed the pass_filenames implementation in troff. - - * libdriver/input.cc: Will read the new `F' tcommand. - * troff/node.cc, troff/node.h: Will issue the new `F' tcommand. - * troff/input.cc: Use it. - -2000-01-26 Werner LEMBERG - - * troff/env.cc (set_font): Fix the behaviour of \fP. The previous - font will now be updated even if an invalid font is selected. - -2000-01-24 Werner LEMBERG - - * doc/homepage.ms: Updated for new tmac.arkup. - - * tmac/tmac.html: Disable line breaks after hyphen-like characters. - - * tmac/tmac.arkup: Cleanup. - - Added `\&' to .HTML macro to `leave vertical mode', so to say. - - Removed obsolete .LINK macro completely. - - The macros .URL, .FTP, and .MAILTO now accept a third argument which - will be immediately appended to the second argument (to be used with - punctuation, for example). - - Disabled .CDFTP macro temporarily for security reasons. - - * tmac/groff_markup.man: Complete revision for latest changes in - tmac.arkup -- note that it does not yet format correctly with - grohtml :-( - -2000-01-23 Bruno Haible - - * nroff/nroff.sh: Accept -Tutf8 option and pass it through. - * devutf8/R.proto: Add mappings for wp, lh, rh. - * devutf8/NOTES: Updated. - -2000-01-23 Werner LEMBERG - - * doc/groff.texinfo: Updated version/copyright info. - -2000-01-21 Gaius Mulley - - Added support for two new directives in device descriptions: - `pass_filenames' (to pass the input file name to the output device) - and `use_charnames_in_special' (to support e.g. accented characters - in the `X' request). - - * include/font.h, troff/charinfo.h: Declare it. - - * libgroff/font.cc, libgroff/fontfile.cc: Set it. - - * devhtml/DESC: Use it. - - * troff/input.cc: New function encoded_char. - - * troff/token.h: Add test for `specialness'. - -2000-01-21 Werner LEMBERG - - * tmac/Makefile.sub: tmac.a4 and tmac.trace have been removed by - mistake from the list of files to be installed. - -2000-01-18 Werner LEMBERG - - * README: Added info how to apply patches. - -2000-01-15 Jan Echternach - - * troff/node.cc (ligature_note::operator delete): Fix g++ warning. - -2000-01-15 Gaius Mulley - - * troff/input.cc: Add support for troffrc-end. - - * tbl/main.cc: Altered to issue table-start and table-end special - characters if using the html device. - - * devhtml/*: Modified font files to incorporate html encoding of - characters. - - * tmac/groff_markup.man: New file documenting tmac.arkup. - - * tmac/troffrc-end: New file. This is invoked after all user - specified macros. Currently used by the html device to include - tmac.html. Thus no need for users to specify -mhtml anymore. - - * tmac/Makefile.sub (NORMALFILES): Add troffrc-end. - (MAN7): Add groff_markup.man. - - * tmac/tmac.an, tmac/tmac.html: Small html updates. - - * tmac/troffrc: tmac.arkup will now be called for the html device. - - * libgroff/font.cc, libgroff/font.h: Altered to include reading of - extra device specific information about fonts. - - * doc/homepage.ms: New file. It is an example how an HTML home page - could look like with grohtml. - - * doc/Makefile: Add homepage.ms. Remove rule for pic.html. - -2000-01-12 Bruno Haible - - * devutf8/R.proto: Add mappings for ti, Fn, st, an. Change mappings - of Im, Re. - - * devutf8/NOTES: Updated. - -2000-01-08 Bruno Haible - - * eqn/box.cc, eqn/lex.cc, eqn/other.cc, eqn/over.cc, eqn/special.cc, - eqn/text.cc, grodvi/dvi.cc, grops/ps.cc, grops/psrm.cc, - libbib/index.cc, libbib/linear.cc, libbib/search.cc, - libdriver/printer.cc, libgroff/font.cc, libgroff/string.cc, - pic/lex.cc, pic/object.cc, refer/label.y, refer/ref.cc, tbl/main.cc, - tbl/table.cc, tfmtodit/tfmtodit.cc, troff/dictionary.cc, - troff/div.cc, troff/env.cc, troff/input.cc, troff/node.cc, - troff/node.h, troff/reg.cc: Avoid most "g++ -Wall -Wno-sign-compare" - warnings. - - * troff/node.cc (bracket_node::copy): Initialize last to NULL. - -2000-01-12 Fabrizio Polacco - - grolj4: Paper size will be searched case-insensitively. - - * include/lib.h: Add check for strcasecmp(). - * grolj4/li4.cc (lookup_paper_size): Use strcasecmp(). - * configure.in: Check for strcasecmp(). - -2000-01-11 Werner LEMBERG - - * troff/Makefile.sub (majorminor.cc): Fix incorrect path to - `REVISION'. - -2000-01-10 Werner LEMBERG - - * Makefile.comm, Makefile.in, doc/Makefile: More fixes for the - revision scheme. - - Add a new read-only register, `.Y', which contains the groff - revision. - - * troff/input.cc (init_input_requests): Define it. - * troff/Makefile.sub (majorminor.cc): Define `revision' string. - * doc/groff.texinfo, troff/troff.man: Document it. - - * libgroff/Makefile.sub (version.cc): Add definition of - `Version_string[]', consisting of `..' - * eqn/main.cc, grodvi/dvi.cc, grolj4/lj4.cc, grops/ps.cc, - grotty/tty.cc, hpftodit/hpftodit.cc, indxbib/indxbib.cc, pic/main.cc, - refer/refer.cc, soelim/soelim.cc, tbl/main.cc, tfmtodit/tfmtodit.cc, - troff/input.cc, pfbtops/pfbtops.c: Use it. - -2000-01-10 Fabrizio Polacco - - Add a revision scheme to the groff package. - - * REVISION: New file. - * libgroff/Makefile.sub (version.cc): Use it to define - `revision_string[]'. - * grops/psrm.cc: Use revision_string (converted to an unsigned - integer) in constructor of resource_manager. - -2000-01-10 Bruno Haible - - * devutf8/Makefile.sub, devutf8/DESC.proto, devutf8/R.proto: New - files. - * Makefile.in (DEVDIRS): Add devutf8. - * grotty/tty.cc: Include device.h. - (glyph): Change type of `code' to `unsigned int'. - (tty_printer): New field is_utf8. Constructor takes device argument. - (tty_printer::tty_printer): If device if `utf8', set is_utf8. - (tty_printer::add_char): Change type of first arg to `unsigned int'. - (tty_printer::put_char): New function. - (tty_printer::end_page): Use put_char() instead of ::putchar(). - (make_printer): Pass device to tty_printer constructor. - * nroff.sh: Determine default device by calling 'locale'. As a - fallback, look at all of $LC_ALL, $LC_CTYPE, $LANG, $LESSCHARSET. - Recognize UTF-8 locales. - * tmac/eqnrc: Recognize utf8 like latin1. - * tmac/troffrc: Device utf8 needs tmac.tty. - -2000-01-07 Werner LEMBERG - - * tmac/Makefile.sub: tmac.a4 and tmac.trace will now be installed. - -2000-01-07 Paul Eggert - - Add a new predefined writeable number register, `year', - which contains the current year. - - * doc/groff.texinfo, PROBLEMS, troff/troff.man: Document it. - * tmac/tmac.s: Use it. - * troff/input.cc (init_registers): Initialize it. - -2000-01-06 Werner LEMBERG - - * PROBLEMS: Fixed typo. - -2000-01-04 Paul Eggert - - * PROBLEMS: Add Y2k advice for the yr number register. - -2000-01-03 Paul Eggert - - * doc/groff.texinfo: Fix Y2k bug in documentation of \n(yr. - -2000-01-02 Werner LEMBERG - - * tmac/tmac.arkup: Slight modification of macros to provide better - appearance for non-HTML formats. - -2000-01-01 Charles Levert - - * soelim/soelim.cc (include_path_append): realloc(NULL, n) - does not automatically translate to malloc(n) on all OSes - (e.g., SunOS) so do it explicitly. Also, check the returned - value. - -2000-01-01 Werner LEMBERG - - * tmac/tmac.arkup: Added .LINE macro. Some formatting. - - * Makefile.in: Added $(tmac_m) again since the Makefile in `mm' - expects this variable - -2000-01-01 Gaius Mulley - - * doc/Makefile: Added instructions to create HTML and text - versions of some files. - -1999-12-31 Werner LEMBERG - - * Updated INSTALL.gen. - - * tmac/tmac.arkup: Added fixes so that .FTP and .MAILTO works - better resp. correctly with non-HTML devices. - -Local Variables: -version-control: never -coding: latin-1 -End: diff --git a/contrib/groff/ChangeLog.117 b/contrib/groff/ChangeLog.117 deleted file mode 100644 index 609eaa7595fe..000000000000 --- a/contrib/groff/ChangeLog.117 +++ /dev/null @@ -1,2190 +0,0 @@ - -Version 1.17.2 released -======================= - -2001-07-07 Werner LEMBERG - - * src/utils/indxbib/indxbib.cc (main): Change type of `name_max' - to size_t. - -2001-07-06 Ruslan Ermilov - - * tmac/doc.tmac (Rv): Make `Rv' really not parseable. - Fix synopsis. - * tmac/groff_mdoc.man: Fix synopsis. - -2001-07-05 Ruslan Ermilov - - * tmac/doc.tmac (doc-inset-list, doc-hang-list, doc-ohang-list): - Restore `doc-Pa-font'. - -2001-07-04 Werner LEMBERG - - * src/utils/indxbib/dirnamemax.c: Moved to ... - * src/libs/libgroff/maxfilename.cc: Here. - s/dir_name_max/file_name_max/. - Add copyright. - * src/include/lib.h: Add file_name_max. - * src/utils/indxbib/indxbib.cc: Updated. - * src/utils/indxbib/Makefile.sub, src/libs/libgroff/Makefile.sub: - Updated. - - * src/libs/libgroff/tmpfile.cc (TMPFILE_PREFIX) [__MSDOS__]: Define - as empty. - (xtmpfile) [_MSC_VER]: Removed -- MSVC has mktemp(). - - * src/preproc/html/pre-html.cc (PAGE_TEMPLATE, PS_TEMPLATE, - REGION_TEMPLATE): New macros. - (createAllPages, makeTempFiles): Use them. - Include `nonposix.h'. - (html_system): New function. - (createAllPages, createImage): Use it. - Use EXE_EXT. - - * tmac/www.tmac: Fix typos. - -2001-07-03 Werner LEMBERG - - * tmac/www.tmac: Disable hyphenation in normal text only if output - device is html. - (URL, FTP, MAILTO): Disable hyphenation of actual URL with `\%'. - * tmac/groff_mwww.man, NEWS: Updated. - -2001-07-03 Gaius Mulley - - * tmac/www.tmac (.IMAGE): Add fourth parameter to specify vertical - image location. - -2001-07-02 Ruslan Ermilov - - * tmac/doc-common, tmac/doc.tmac (doc-display-ft-stack, - doc-display-ps-stack): Implement font and font size stack for - displays. - -2001-07-02 Werner LEMBERG - - * REVISION: Increased to 2. - * src/roff/troff/input.cc (read_size): Fix special case `\s[0]'. - - * src/groff/grog/grog.pl (process): Handle `Oo' and `Oc' not at the - beginning of a line. - * src/groff/grog/grog.sh: Ditto. - -2001-06-29 Peter Marquardt - - * src/preproc/eqn/neqn.sh: Put `export' keyword in a new line to - make it portable. - -2001-06-27 Werner LEMBERG - - Fix problems with preprocessor string for `man' program. - - * *.man: Don't use `s' in preprocessor string -- it doesn't exist. - Updated/added copyright. - Moved Emacs's local variable to identify nroff mode to the end of - the file; add local variable if missing. - -2001-06-26 Andras Salamon - - * aclocal.m4: Replace AC_LANG_SAVE + AC_LANG_CPLUSPLUS with - AC_LANG_PUSH(C++) and AC_LANG_RESTORE with AC_LANG_POP(C++). - * configure: Regenerated. - -2001-06-25 Andras Salamon - - * aclocal.m4 (GROFF_PAGE): Fix page detection code. - * configure: Regenerated. - -2001-06-24 Werner LEMBERG - - * doc/homepage.ms: Don't include arkup.tmac (which no longer exists) - but www.tmac. - * doc/pic.ms: Fix typos. - -Version 1.17.1 released -======================= - -2001-06-21 Golubev I. N. - - * aclocal.m4 (GROFF_NEED_DECLARATION): Fix inclusion of strings.h. - * configure: Updated. - -2001-06-20 Gaius Mulley - - * src/roff/preproc/html/pre-html.cc (make_message): Fix incorrect - image names. - * src/roff/troff/dic.cc (blank_line): Add html tag. - -2001-06-19 Gaius Mulley - - * src/roff/troff/input.cc (do_suppress): Fix typo. - -2001-06-18 Gaius Mulley - - Added two new options (-D and -I) to specify image names and a - subdirectory to place the images in. - - Change syntax from \\Ox to \\O[x]. - - * src/devices/grohtml/post-html.cc (main): Add options. - (usage): Updated. - * src/preproc/html/pre-html.cc: Include `stdarg.h'. - Use `NULL' instead of `0' for null string pointers. - (MAX_RETRIES): New macro. - (lengthOfintToStr, intToStr, make_message): New functions. - (makeFileName): Make function static. - Implement -D and -I options. - (checkImageDir): New function. - (write_end_image, write_start_image): Use new syntax of \O. - (createAllPages, removeAllPages): Implement -D and -I options. Use - make_message(). - (createImage): Use make_message(). - (addps4html): Add guard for malloc(). - (usage, scanArguments): Updated. - (makeTempFiles): Use mkstemp(). - (removeTempFiles): Use unlink(). - (findPrefix): Add guard for malloc(). - (main): Updated. - * src/roff/troff/input.cc (get_delim_file_name): New function to - parse \O. - (do_suppress): Updated to parse new syntax. - * src/devices/grohtml/grohtml.man: Updated. - * tmac/www.tmac: Updated to new syntax. - - * NEWS: Updated. - -2001-06-15 Werner LEMBERG - - * src/roff/grog/Makefile.sub: Remove NAMEPREFIX. - - * src/devices/grohtml/grohtml.man: Minor improvements. - -2001-06-14 Werner LEMBERG - - * src/preproc/html/Makefile.sub: Remove NAMEPREFIX. - -2001-06-11 Werner LEMBERG - - * man/roff.man, mann/groff.man: Use '\" instead of .\" in the first - line to specify preprocessor options -- mandb 2.3.1 only recognizes - the former. - * src/preproc/grn/grn.man: Add proper '\" string. - -2001-06-11 OKAZAKI Tetsurou - - * test-groff: Don't use PATH but GROFF_BIN_PATH. - -2001-06-08 Werner LEMBERG - - Updated to autoconf 2.50. - - * configure.in: Renamed to... - * configure.ac: This. - * aclocal.m4 (AC_OUTPUT_MAKE_DEFS): Removed. - (GROFF_OS390): Updated. - * configure: Regenerated. - -2001-05-18 Werner LEMBERG - - * src/roff/troff/env.c, src/roff/troff/env.h, - src/roff/troff/input.cc, src/roff/troff/troff.man: Undo `ss' change - from 2000-12-21. - -2001-05-17 Jeffrey Friedl - - * src/roff/troff/input.cc (read_size): Fix special case `\s0'. - -2001-05-16 Werner LEMBERG - - * src/roff/troff/input.cc (read_size): Emit warning if value becomes - less than or equal zero; set it to 1 then. - * src/roff/troff/node.h (node::node): Initialize `last'. - -2001-05-08 Werner LEMBERG - - * tmac/an-old.tmac: Make predefined strings work in compatibility - mode. - Add troff version guard. - * tmac/doc.tmac: Simplify version guard. - -2001-05-07 Werner LEMBERG - - The .ns and .rs requests are now honoured not only in the top-level - but in all diversions (similar to UNIX troff). - - This change is based on a patch from Tadziu Hoffmann - . - - * src/roff/troff/div.h (diversion): Add `no_space_mode' member. - (top_level_diversion): Remove `no_space_mode' member. - * src/roff/troff/div.cc (diversion::diversion, - top_level_diversion::top_level_diversion): Updated. - (macro_diversion::output): Reset `no_space_mode'. - (no_space, restore_spacing): Use `curdiv' unconditionally. - (space_request, blank_line): Check `curdiv->no_space_mode'. - (no_space_mode_reg::get_value, no_space_mode_reg::get_string): Use - `curdiv' unconditionally. - * NEWS, src/roff/troff/troff.man, man/groff.man, doc/groff.texinfo: - Updated. - -2001-05-06 Werner LEMBERG - - Added two new requests `de1' and `am1' which are similar to `de' and - `am' with the difference that compatibility mode is saved on entry, - switched off during macro execution, and restored on exit. - - * src/roff/troff/input.h: Added two new special characters - (COMPATIBLE_SAVE, COMPATIBLE_RESTORE). - * src/roff/troff/input.cc (input_iterator): Added two member - functions `save_compatible_flag' and `get_compatible_flag'. - (input_stack): Ditto. - (string_iterator): Ditto. Also add private member - `saved_compatible_flag'. - (token::next): Use COMPATIBLE_SAVE and COMPATIBLE_RESTORE. - (calling_mode): New enumeration. - (do_define_macro): Use it. Insert COMPATIBLE_SAVE and - COMPATIBLE_RESTORE at the beginning and end of macro, respectively. - (define_macro, define_indirect_macro, append_macro, ignore): Use - `calling_mode'. - (define_nocomp_macro, append_nocomp_macro): New functions. - (init_input_requests): Updated. - (do_request): Rename local variable `saved_compatible_flag' to - `old_compatible_flag'. - * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. - - * tmac/an-old.tmac: Use `de1' instead of `de' request for all - public and trap-invoked macros. As a consequence, the man macros - work in compatibility mode also. - -2001-05-06 Solar Designer - - * Makefile.in: Use $(mandir). - -2001-05-06 Alexios Zavras - - * src/utils/afmtodit/afmtodit.pl: Fix serious typo. - -2001-05-05 Werner LEMBERG - - Added `.ns' number register: Returns 1 in no-space mode (if in - top-level diversion), 0 otherwise. - - * src/roff/troff/div.cc (no_space_mode_reg): New class. - (init_div_requests): Updated. - * NEWS, src/roff/troff/troff.man, man/groff.man, doc/groff.texinfo: - Document it. - -2001-05-04 Werner LEMBERG - - * src/roff/nroff/nroff.man: Improved documentation (especially - locales). - -2001-05-02 Werner LEMBERG - - Added `brp' request: This is \p as a request. - - * src/roff/troff/env.cc (environment::do_break): Add parameter - `spread'. - (do_break_request): New function (was `break_request'). - (break_request): Calls `do_break_request'. - (break_spread_request): New; calls `do_break_request'. - (init_env_requests): Updated. - * src/roff/troff/env.h: Updated. - * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. - - * REVISION: Increased to 1. - * win32-diffs: Updated. - -2001-05-01 Werner LEMBERG - - * tmac/an-old.tmac: Fix minor compatibility mode issue. - * tmac/troffrc-end: Make it really work in compatibility mode. - -2001-04-27 Werner LEMBERG - - * src/utils/lkbib/lkbib.cc: Switch inclusion order of stdio.h and - stdlib.h. - -2001-04-22 Werner LEMBERG - - * src/libs/libgroff/getopt.c, src/include/getopt.h: Updating to - latest versions from glibc CVS archive. - - * MORE.STUFF: Updated, using a patch from Kees Zeelenberg - . - -2001-04-21 Werner LEMBERG - - * configure.in: Move check for mkstemp() to... - * aclocal.m4 (GROFF_MKSTEMP): This new function. - * configure: Regenerated. - - * src/include/groff-getopt.h: Don't use variable names in - declarations. - - * src/devices/grohtml/html-chars.h: Removed. It isn't used. - * src/devices/grohtml/Makefile.sub, - src/devices/grohtml/post-html.cc: Updated. - -2001-04-21 Albert Chin-A-Young - - * configure.in: Add special check for mkstemp(). - * src/libs/libgroff/tmpfile.cc: Use it. - * src/utils/indxbib/indxbib.cc: Ditto. - * src/utils/pfbtops/pfbtops.c (main): Don't use C++ comment style. - * src/devices/grolbp/lbp.h (lbpprintf, lbpputs, vdmprintf): Use - `const'. - -2001-04-20 Bruce Lilly - - `Version_string' as C++ object was not visible to linker from C - object files. - Add `const' to `Version_string'. - - * src/utils/pfbtops/pfbtops.c (main), src/roff/groff/groff.cc - (main), src/roff/troff/input.cc (main), src/preproc/tbl/main.cc - (main), src/preproc/pic/main.cc (main), src/preproc/eqn/main.cc - (main), src/preproc/grn/main.cc (main), src/preproc/html/pre-html.cc - (scanArguments), src/preproc/refer/refer.cc (main), - src/preproc/soelim/soelim.cc (main), src/devices/grotty/tty.cc - (main), src/devices/grodvi/dvi.cc (main), src/devices/grolj4/lj4.cc - (main), src/devices/grohtml/post-html.cc (main), - src/devices/grolbp/lbp.cc (main), src/utils/tfmtodit/tfmtodit.cc - (main), src/utils/hpftodit/hpftodit.cc (main), - src/utils/lookbib/lookbib.cc (main), src/utils/indxbib/indxbib.cc - (main), src/utils/lkbib/lkbib.cc (main), - src/utils/addftinfo/addftinfo.cc (main): Implement it. - - * src/roff/groff/pipeline.c: Add _UWIN. - * src/include/nonposix.h: Ditto. - -2001-04-20 Werner LEMBERG - - * src/include/lib.h: Use HAVE_STRERROR. - * src/roff/groff/pipeline.c: Ditto. - * src/preproc/html/pre-html.cc: Remove declaration of `strerror'. - * src/libs/libgroff/Makefile.sub (version.cc): Add `extern "C"'. - * src/utils/pfbtops/pfbtops.c: Add copyright notice. - * win32-diffs: Updated. - * src/utils/hpftodit/hpftodit.cc (read_map): Fix compiler warning. - -2001-04-19 Werner LEMBERG - - * src/preproc/html/pre-html.cc (scanArguments): Use `troff_command' - instead of hardwired `"troff"'. - (char_buffer::read_file): Remove unused variables. - (char_buffer::write_file_troff): Ditto. - (char_buffer::write_file_html): Ditto. - (generateImages): Ditto. - (abs): Removed. - * src/utils/addftinfo/addftinfo.cc (main): Fix compilation problem. - - * src/include/lib.h: Don't include `groff-getopt.h' for UWIN. - - * src/libs/libgroff/font.cc (font::load_desc): Fix compiler warning. - * src/libs/libbib/index.cc (index_search_item_iterator::get_tag, - index_search_item::search1): Ditto. - * src/roff/troff/node.h (width_list): Reorder members. - * src/roff/troff/input.cc (do_define_macro): Fix compiler warning. - (lookup_warning): Ditto. - (prepend_string): Commented out. - * src/roff/troff/dictionary.cc (is_good_size): Fix compiler warning. - * src/roff/troff/reg.cc (number_value_to_ascii): Ditto. - * src/preproc/tbl/main.cc (process_format): Ditto. - * src/preproc/pic/pic.y (define_variable, reset, reset_all): Fix - compiler warnings. - * src/preproc/pic/pic.cc: Updated. - * src/preproc/eqn/lex.cc (init_table): Fix compiler warnings. - * src/preproc/eqn/over.cc (over_box::compute_metrics): Ditto. - * src/preproc/refer/command.cc (execute_command): Ditto. - * src/preproc/refer/ref.cc (sortify_title, find_month): Ditto. - * src/preproc/refer/token.cc (lookup_token): Ditto. - * src/preproc/soelim/soelim.cc: Ditto. - * src/preproc/html/pushbackbuffer.cc (ERROR): Ditto. - (isHexDigit): Commented out. - (pushBackBuffer::isString): Remove unused variable. - * src/devices/grops/ps.cc (ps_printer::special): Fix compiler - warning. - * src/devices/grops/psrm.cc (resource_manager::lookup_font, - resource_manager::read_resource_arg, read_one_of, parse_extensions): - Ditto. - * src/devices/grodvi/dvi.cc (dvi_printer::draw): Ditto. - * src/devices/grolj4/lj4.cc (lj4_font::handle_unknown_font_command, - lookup_paper_size): Ditto. - * src/devices/grohtml/post-html.cc (is_subsection): Commented out. - (text_glob, element_list): Reorder members. - * src/devices/grohtml/html-text.cc (html_text::do_pre): Remove - compiler warning. - * src/devices/grohtml/html-text.h (html_text::emit_space): Change - return value to `void'. - * src/devices/grohtml/output.cc (word_list::word_list): Fix order - of initializers. - * src/devices/grohtml/html.h (simple_output::check_newline, - simple_output::space_or_newline, simple_output::enable_newlines): - Add return value. - * src/devices/grolbp/lbp.cc (wp54charset, set_papersize): Remove - compiler warnings. - * src/utils/tfmtodit/tfmtodit.cc (tfm::load, gf::load, main): Ditto. - * src/utils/hpftodit/hpftodit.cc (File::seek, read_symbol_sets, - output_ligatures, output_charset, read_map): Ditto. - * src/utils/lookbib/lookbib.cc (main): Ditto. - * src/utils/indxbib/indxbib.cc (main, fwrite_or_die): Ditto. - (do_file): Fix typo (`=' -> `=='). - * src/utils/lkbib/lkbib.cc (main): Remove compiler warning. - * src/utils/addftinfo/addftinfo.cc (main): Ditto. - -2001-04-18 Ruslan Ermilov - - * src/roff/nroff/nroff.sh: Adding -p (pic) and -t (tbl) options. - Fix usage of GROFF_BIN_PATH. - * src/roff/nroff/nroff.man: Updated. - -2001-04-18 Werner LEMBERG - - * NEWS: Fixing typos. - Updated. - -Version 1.17 released -===================== - -2001-04-17 Werner LEMBERG - - * tmac/Makefile.sub (install-data): mdoc.local-s is in current - directory, not in $(srcdir). - -2001-04-16 Werner LEMBERG - - * doc/groff.texinfo: More info on conditionals. - -2001-04-15 Werner LEMBERG - - * doc/groff.texinfo: Added some info about groff internals. - - * src/roff/troff/node.cc (make_glyph_node): Emit warning message - about missing special character only if the name is non-null. - -2001-04-14 Werner LEMBERG - - Removing the grohtml-old device driver which is now obsolete. - - * src/devices/grohtml-old/*: Removed. - * font/devhtml-old/*: Removed. - * src/libs/libgroff/htmlindicate.cc (graphic_start, graphic_end): - Remove comments. - * Makefile.in (CCPROGDIRS, DEVDIRS): Updated. - * test-groff (PATH): Updated. - * tmac/Makefile.sub (NORMALFILES): Updated. - * tmac/an-old.tmac: Remove special code for html-old device. - Replace `html-or-html-old' register with `an-html'. - * tmac/eqnrc: Updated. - * tmac/html-old.tmac: Removed. - * tmac/troffrc, tmac/troffrc-end: Updated. - * tmac/www.tmac: Remove special code for html-old device. - Replace `html-or-html-old' register with `www-html'. - - * src/libs/libgroff/tmpfile.cc (remove_tmp_files), - src/libs/libgroff/htmlindicate.cc (graphic_end), - include/htmlindicate.h, src/preproc/grn/*.cc, - src/roff/groff/env.{cc,h}: Remove `void' parameter if used as a - single argument for consistency with rest of source code. - - * aclocal.m4, tmac/an-old.tmac: Fix copyright. - -2001-04-13 Ruslan Ermilov - - * src/roff/troff/troff.man: Fixing typos. - -2001-04-13 Werner LEMBERG - - * doc/pic.ms: Fixing many font switches. - * doc/groff.texinfo: Fixes, additions. - * MORE.STUFF: Updated. - -2001-04-12 Gaius Mulley - - * src/devices/grohtml/grohtml.man: Updated manual page regarding - simple anchor. - * src/preproc/html/pre-html.cc (createImage): Fixed right hand - cropping of images. - (removeTempFiles): New function to tidy up temporary files. - * src/preproc/html/pre-html.cc (main): Calls `removeTempFiles()'. - Many fixes to do with the new inline suppress node and image regions - are much tighter. - * src/devices/grohtml/post-html.cc: New method `is_auto_img'. - (generate_img_src): New function. - (html_printer::do_auto_image): Utilizes it. - (do_heading, do_title): Include inline images within their contents. - (html_printer::begin_page): Tidied up comments that are issued to - the html output file. - (html_printer::do_fill): Fixed so that `.nf' works with fonts other - than courier. - (text_glob::is_br): New method used by do_heading. - * tmac/s.tmac: If -Thtml then emit $1 in .IP rather than its - equivalent diversion. - * src/include/html-strings.h: Altered image tags to reflect the - inline image node. - * src/include/htmlindicate.h (html_end_suppress): Added `is_inline' - parameter. - * src/preproc/eqn/main.cc: Will suppress generation of image tags if - it is already inside a pic image. Only emit tags if the argument - `-Tps:html' is present. - * src/preproc/tbl/main.cc: Changes to reflect additional - `html_end_suppress' parameter. - * src/roff/troff/env.cc: Only emit eol tag if a node has been - emitted since the last eol tag was written. - * src/roff/troff/env.h: New boolean `emitted_node'. - * src/roff/troff/input.cc (do_suppress): Handles extra suppress - nodes \O3, \O4, \O5. No longer use `output_low_mark_miny'. - * src/roff/troff/node.cc (check_charinfo): New method. - (troff_output_file::determine_line_limits): Alterations to limit - checking. - * tmac/www.tmac: Changes to reflect new suppress nodes. - -2001-04-12 Bruno Haible - - * src/devices/grohtml/post-html.cc (html_printer::add_to_sbuf): - Escape the html_glyph in the buffer. - (str_translate_to_html): Output the unescaped escaped_char. - * src/devices/grohtml/html-text.cc (issue_table_begin): Set - `frame=void', not `frame=none'. Add `border=0'. - -2001-04-12 Werner LEMBERG - - * PROBLEMS: Add some words on how to avoid wrapper macros. - -2001-04-11 Blake McBride - - * src/include/nonposix.h (fileno) [_MSC_VER]: Removed. - -2001-04-11 Werner LEMBERG - - * font/devlbp/Makefile.sub (CLEANADD): Set it. - * tmac/Makefile.sub (CLEANADD): Add tmac.local-s. - * Makefile.in (dist): Don't remove src/xditview/Imakefile, but ... - * Makefile.sub (DISTCLEANFILES): Here. - - * libs/libgroff/new.cc: Include `nonposix.h'. - * win32-diffs: Updated. - -2001-04-10 Ruslan Ermilov - - Added skeleton macro for defunct macros. - - Updated documentation. - - When inside displays, an empty input line warning should be - suppressed. If another macro call is put inside a display, - all subsequent empty lines found in that display caused a - warning to be emitted. - - * tmac/doc.tmac (doc-defunct-macro): New macro. - (Db, Ds, Ex, Or, Sf): Reimplemented using this macro. - (doc-restore-global-vars): Fixed typo. - (doc-empty-line): Check the `doc-display-depth' register to - determine whether we are inside display or not. - - * tmac/doc-common: Removed `Or' and `Sf' registers. - Moved obsolete `Ds' macro to doc.tmac. - - * tmac/groff_mdoc.man: Bump document date. - Document `.Vt' under ``Variable Types''. - Removed documentation for obsolete `.Or' macro. - -2001-04-10 Werner LEMBERG - - * NEWS: Updated. - * doc/groff.texinfo: Many fixes, additions, clarifications, etc. - -2001-04-10 Bruno Haible - - * src/devices/grodvi/dvi.cc (main): Accept --help and --version. - (usage): Add stream argument. Don't exit. - * src/devices/grohtml/post-html.cc (main): Accept --help and --version. - Write --version output to stdout, not stderr. - (usage): Add stream argument. Don't exit. - * src/devices/grohtml-old/html.cc (main): Accept --help and --version. - (usage): Add stream argument. Don't exit. - * src/devices/grolbp/lbp.cc (long_options): Use symbolic getopt.h - constants. - (usage): Add stream argument. Don't exit. - (main): Write --help output to stdout, not stderr. - * src/devices/grolj4/lj4.cc (main): Accept --help and --version. - (usage): Add stream argument. Don't exit. - * src/devices/grops/ps.cc (main): Accept --help and --version. - (usage): Add stream argument. Don't exit. - * src/devices/grotty/tty.cc (main): Accept --help and --version. - (usage): Add stream argument. Don't exit. - * src/preproc/eqn/main.cc (usage): Add stream argument. Don't exit. - (main): Accept --help and --version. - * src/preproc/grn/main.cc (usage): Add stream argument. Don't exit. - (main): Accept --help and --version. - * src/preproc/html/pre-html.cc (usage): Add stream argument. - (scanArguments): Accept --help and --version. - * src/preproc/pic/main.cc (usage): Add stream argument. Don't exit. - (main): Accept --help and --version. - * src/preproc/refer/refer.cc (main): Accept --help and --version. - (usage): Add stream argument. Don't exit. - * src/preproc/soelim/soelim.cc (usage): Add stream argument. Don't - exit. - (main): Accept --help and --version. - * src/preproc/tbl/main.cc (usage): Add stream argument. Don't exit. - (main): Accept --help and --version. - * src/roff/groff/groff.cc (main): Accept --help and --version. - (synopsis): Add stream argument. - (help): Write --help output to stdout, not stderr. - (usage): Add stream argument. Don't exit. - * src/roff/grog/grog.pl: Accept --help and --version. - (help): New sub. - * src/roff/grog/grog.sh: Accept --help and --version. - * src/roff/nroff/nroff.sh: Accept --help and --version. - * src/roff/troff/input.cc (USAGE_EXIT_CODE): Remove macro. - (usage): Add stream argument. Don't exit. - (main): Accept --help and --version. - * src/utils/addftinfo/addftinfo.cc (main): Accept --help and --version. - (usage): New function with stream argument, doesn't exit. - * src/utils/hpftodit/hpftodit.cc (main): Accept --help and --version. - (usage): New function with stream argument, doesn't exit. - * src/utils/indxbib/indxbib.cc (main): Accept --help and --version. - (usage): Add stream argument. Don't exit. - * src/utils/lkbib/lkbib.cc (usage): Add stream argument. Don't exit. - (main): Accept --help and --version. - * src/utils/lookbib/lookbib.cc (usage): Add stream argument. Don't - exit. - (main): Accept --help and --version. - * src/utils/pfbtops/pfbtops.c (usage): Add stream argument. Don't exit. - (main): Accept --help and --version. - * src/utils/tfmtodit/tfmtodit.cc (main): Accept --help and --version. - (usage): Add stream argument. Don't exit. - -2001-04-10 Ruslan Ermilov - - Fix indentation in SYNOPSIS. - - Updated to include changes of latest BSD mdoc version (basically, - the only change is that `.Fn' and `.Fc' put a final semicolon after - a function declaration in the SYNOPSIS section). - - * tmac/doc.tmac (doc-in-synopsis-count): Replaced with ... - (doc-in-synopsis-section): New variable. Updated all related - functions. - (doc-indent-synopsis-active): New register. - (Nd, Fn, Fo): Use it. - (Cd): It requires manipulation of \n[doc-indent-synopsis] so that - `.Cd' with long argument line produces indented wrapped lines. - Also, the misplaced `.nop \*[doc-Nm-font]\c'' caused extra - undesirable line break to be output. - (doc-do-func-decl, Nm, Vt, Fn, Fo): Remove extraneous calls to - `.rs'. - (Fn, Fc): Add final `;' to output. - (doc-save-global-vars, doc-restore-global-vars): Updated. - * tmac/doc-common: Remove `Ex' register. - Updated. - * tmac/doc-ditroff, tmac/doc-nroff, tmac/doc-syms: Updated - copyright. - -2001-04-06 Ruslan Ermilov - - * tmac/doc.tmac (Cd): Simplify code. - * tmac/groff_mdoc.man: Document some behaviour of `Cd' request. - -2001-04-06 Werner LEMBERG - - Implement continuous underlining for nroff mode. To do that, a new - request in the ditroff language has been added: `x u N' (N is 0 - or 1). - - \X and \Y are now transparent to end-of-sentence recognition. - - * src/include/printer.h (printer): Add `type' parameter to `special' - method. - * src/libs/libdriver/printer.cc (printer::special): Updated. - * src/libs/libdriver/input.cc (do_file): Handle `x u N'. - - * src/devices/dvi/dvi.cc (dvi_printer::special): Handle only - specials of type `p'. - * src/devices/grohtml/post-html.cc (html_printer::special): Ditto. - * src/devices/grohtml-old/html.cc (html_printer::special): Ditto. - * src/devices/grops/ps.cc (ps_printer::special): Ditto. - * src/devices/grotty/tty.cc: Add new enum CU_MODE. - (glyph::order): New method. - (tty_printer::add_char): Use it. - (tty_printer::special): New method. - (tty_printer::end_page): Implement it. - - * src/roff/troff/node.h (special_node): Add `no_init_string' member. - * src/roff/troff/node.cc (special_node::special_node): Add parameter - to set `no_init_string'. - (special_node::tprint_start): Use it. - (special_node::same, special_node::copy): Updated. - (special_node::ends_sentence): New method. - (troff_output_file::start_special): Add parameter to include - inititialization of special conditionally. - - * src/roff/troff/env.h (environment): New member `underline_spaces'. - * src/roff/troff/env.cc (do_underline_special): New function. - (environment::set_font): Use it. - (do_underline): Use it. This was `underline()'. - (underline): Call `do_underline()'. - (continuous_underline): New function which calls `do_underline()'. - (environment::newline): Use `do_underline_special()'. - (init_env_requests): Updated. - - * NEWS, man/troff_out.man: Updated. - -2001-04-06 Bruno Haible - - * font/devutf8/R.proto: Fix code of 'shc'. - -2001-04-06 Ruslan Ermilov - - Many fixes. Diag lists can now be nested also; additionally, - `-compact' and `-offset' are supported. - - * tmac/doc.tmac (doc-have-indent): Replaced with ... - (doc-list-have-indent-stackXXX): A new register stack. - (doc-have-diag-list): Removed. - (Bl): Use `doc-list-have-indent-stackXXX'. - (El): Updated. - (doc-diag-list): Use `doc-compact-list-stackXXX'. - (doc-tag-list): Use `doc-list-have-indent-stackXXX'. - (doc-set-vertical-and-indent): Ditto. - (doc-next-list-depth): Removed. - (doc-increment-list-stack): Updated. - (doc-decrement-list-stack): Use `doc-list-depth' instead of - `doc-next-list-depth'. - (doc-end-list, doc-end-column-list): Don't use - `doc-increment-list-stack'. - (doc-set-column-tab): Don't use `doc-list-offset-stackXXX'. - (doc-save-global-vars, doc-restore-global-vars): Updated. - * tmac/doc-common: Updated. - * tmac/groff_mdoc.man: Updated. - * NEWS: Fix typo. - -2001-04-02 Werner LEMBERG - - * src/devices/grotty/grotty.man: Fix grammatical error. - -2001-03-30 Ruslan Ermilov - - Remove .Ld from mdoc package; replace it with special handling of - `...'. - - * tmac/doc-common: Remove `Ld' register. - Uncomment `doc-volume-ds-*' strings. - Remove `doc-operating-system-default'. - (Os): Updated. - * tmac/doc-syms (Ld): Removed. - * tmac/doc.tmac (doc-parse-args, doc-parse-arg-vector): Handle - `...' specially. - * NEWS: Updated. - - * tmac/groff_mdoc.man: Many fixes and updates. - -2001-03-29 Werner LEMBERG - - * tmac/troffrc-end: Protect data with `.do'. Reported by T. Kurt - Bond . - * tmac/www.tmac: Save compatibility mode. - -2001-03-28 Ruslan Ermilov - - * tmac/groff_mdoc.man: Many fixes. - -2001-03-28 Werner LEMBERG - - * src/preproc/soelim/soelim.man: Document that `.so' - isn't recognized. - -2001-03-27 Werner LEMBERG - - * tmac/an-old.tmac (TP, an-do-tag): Reduce line length while in - diversion. This fixes overlong tags. - -2001-03-26 Werner LEMBERG - - * doc/groff.texinfo: Fixed and improved documentation of fonts. - * tmac/doc-syms: Fix error messages. - * tmac/an-old.tmac: Remove incorrect double backslashes. - -2001-03-24 Ruslan Ermilov - - * tmac/Makefile.sub: Strip mdoc.local also - * tmac/strip.sed: Fixed. - -2001-03-24 Werner LEMBERG - - * tmac/doc-nroff, tmac/doc-ditroff: Implement -rSxx switch for - selecting the font size. - * tmac/groff_mdoc.man, NEWS: Document it. - -2001-03-23 Werner LEMBERG - - * src/roff/troff/div.cc (save_vertical_space): Add default argument - to `sv' request. - * src/roff/troff/env.cc (family_change): Make `.fam' accept no - argument to restore previous font family. - * src/roff/troff/troff.man, man/groff.man, NEWS: Updated. - - * doc/groff.texinfo: More fixes and additions (mainly for font - manipulating commands). - - * tmac/groff_mdoc.reference.man: Small updates and renamed to ... - * tmac/groff_mdoc.man: This. The quick reference has been removed. - * tmac/Makefile.sub, NEWS: Updated. - -2001-03-23 Werner LEMBERG - - Replaced mdoc implementation. The new version is `state of the - art', using almost all new features of groff 1.17 -- it won't run - with older versions. - - * tmac/doc.tmac: Completely rewritten. - * tmac/doc-common: Ditto. - * tmac/doc-nroff: Ditto. - * tmac/doc-ditroff: Ditto. - * tmac/doc-syms: Ditto. - * tmac/mdoc.local: New file. - * tmac/groff_mdoc.samples.man: Replaced with ... - * tmac/groff_mdoc.reference.man: New file, covering mdoc completely. - * tmac/strip.sed: Updated. - * tmac/Makefile.sub: Updated. - * INSTALL: Updated. - - * tmac/groff_man.man: Add `man.local' to the FILES section. - -2001-03-22 Werner LEMBERG - - * doc/groff.texinfo: Added many @noindent. - Replaced @end_Example -> @endExample. - Added info whether registers are r/o. - Many other additions and fixes. - -2001-03-21 Werner LEMBERG - - * doc/groff.texinfo: Added macro @Var (and some hacks due to bugs - in makeinfo of texinfo 4.0) to be used in @Def* macros. - Improved @Def* macros: Now the exact syntax of request, register, - and escapes is shown. - Added macros for parentheses and brackets to be used in @Def*. - Many fixes and improvements of the documentation. - -2001-03-20 Werner LEMBERG - - * doc/groff.texinfo: Added new index: `st' (for strings). - Added macros @Defstr(x). - Added macro @Example (adding @group). - Other minor improvements. - -2001-03-19 Werner LEMBERG - - * doc/groff.texinfo: Added two new indices: `es' (for escapes) and - `rq' for requests. `fn' is no longer used. - Added macros @Defreq(x), @Defreg(x), and @Defesc(x). - Removed @Deffn(x). - - * tmac/an-old.tmac (an-p-footer): If `cR' is set, replace page - number with name of man page. - -2001-03-19 Larry Kollar - - * doc/groff.texinfo: Complete revision. Added many @Deffn to gain - consistency. - -2001-03-19 Werner LEMBERG - - * man/groff_font.man: Document `prepro', `postpro', and `print'. - * src/roff/groff/groff.man: Improve documentation of `-l' and `-L'. - * src/devices/grohtml/grohtml.man: Fixing typos. - -2001-03-19 Gaius Mulley - - * tmac/s.tmac (@IP): Pass `.ip' html tag. - * tmac/groff_mwww.man: Remove .LINE macro - * tmac/www.tmac (LINE): Add `.ti'. - - * src/devices/grohtml/post-html.cc (html_printer): New member - `indent'. - (html_printer::emit_raw): Use it. - (html_printer::do_linelength): Ditto. - (html_printer::do_pageoffset): Ditto. - (html_printer::do_indentation): Ditto. - (html_printer::do_tempindent): Ditto. - (html_printer::do_break): Ditto. - (html_printer::begin_page): Ditto. - (html_printer::do_indentedparagraph): New function. - (html_printer::troff_tag): Handle `.ip'. - * src/devices/grohtml/html-text.cc (html_text::issue_table_begin): - Add `' handling. - (html_text::do_table): Add parameter. - (html_text::do_indent): Updated. - * src/devices/groohtml/html-text.h: Updated. - -2001-03-16 Gaius Mulley - - Introduced simple html tables to implement indentation. - - * src/devices/grohtml/html.h (word, word_list): New structures. - (simple_output): Use it. - * src/devices/grohtml/post-html.cc: Add `INDENTATION'. - (html_printer): Improve indentation handling. - (html_printer::emit_raw): Set `in_table' element. Handle - indentation if set. - (html_printer::write_header): Move conditional downwards. - Don't allow whitespace in tags. - (html_printer::do_linelength): Handle line length and indentation - conditionally. - (html_printer::do_pageoffset): Handle indentation conditionally. - (html_printer::do_indentation): Ditto. - (html_printer::do_tempindent): New function member. - (html_printer::do_fill): Take care of indentation. - (html_printer::do_flush): Finish table. - (html_printer::do_links): Ditto. - (html_printer::do_break): New function for handling `.br' and `.ti'. - (html_printer::troff_tag): Use it. - Handle `.ti'. - (html_printer::flush_globs): Fix. - (html_printer::flush_page): Finish table. - (html_printer::html_printer): Fix error message. Set up - `linelength'. - (html_printer::add_to_sbuf): Remove special handling of character - code 255. - (to_unicode): Remove `stop()'. - (html_printer::write_title): Cleanup. - (html_printer::begin_page): Use `put_string()'. Handle indentation. - (html_printer::~html_printer): Flush text and end the line. - Use `put_string()'. - * src/devices/grohtml/html_text.h: Add more *_TAG enum values. - * src/devices/grohtml/html_text.cc (html_text::end_tag): Fix - emission of tags. - (html_text::start_tag): Disable newlines. - (html_text::table_is_void): New function. - (html_text::issue_table_begin): Ditto. - (html_text::issue_table_end): Ditto. - (html_text::push_para): Better table handling. - (html_text::do_indent): New function. - (html_text::do_table): Ditto. - (html_text::done_table): Ditto. - (html_text::do_tt): Handle PRE_TAG. - (html_text::is_in_table): New function. - (html_text::check_emit_text): Handle tables. - (html_text::do_emittext): Use `nl()'. - (html_text::do_para): Handle table. - (html_text::remove_def): New function. - * src/devices/grohtml/output.cc (word, word_list): Implement - methods. - (simple_output::end_line): Flush last word. - (simple_output::simple_comment): Ditto. - (simple_output::begin_comment): Recoded. - (simple_output::end_comment): Ditto. - (simple_output::comment_arg): Removed. - (simple_output::check_newline): Improve test and flush last word. - (simple_output::space_or_newline): Improved. - (simple_output::write_newline): Replaced with... - (simple_output::nl): This. - (simple_output::put_raw_char): Flush last word. - (simple_output::check_space): Removed. - (simple_output::put_translated_string): Ditto. - (simple_output::put_string): Simplified. - (simple_output::put_number): Updated. - (simple_output::put_float): Ditto. - (simple_output::put_symbol): Removed. - (simple_output::enable_newlines): Add `check_newline()'. - (simple_output::flush_last_word): New function. - - * src/roff/troff/enc.cc (no_fill): Remove call to add_html_tag(). - * src/roff/troff/div.cc (page_offset): Add call to add_html_tag(). - - * tmac/s.tmac (@PP, @IP): Add html conditional code. - * tmac/an-old.tmac (TP): Ditto. - -2001-03-09 Ruslan Ermilov - - * mdate.sh: Make it POSIX compliant. - -2001-03-09 Werner LEMBERG - - Added the `return' request to end a macro immediately. It simply - pops iterators from the input stack until a macro iterator is found. - - * src/roff/troff/input.cc (input_iterator::is_macro, - macro_iterator::is_macro): New member. - (input_return_boundary): New class to signal an immediate return - to while_request(). - (input_stack::add_return_boundary, input_stack::is_return_boundary): - New functions. - (input_stack::clear): Use it. - (input_stack::pop_macro): New function. - (while_request): Use `is_return_boundary()'. - (return_macro_request): New function. - (init_input_requests): Use it. - - * src/roff/troff/TODO: Updated. - * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. - -2001-03-08 Werner LEMBERG - - * src/roff/troff/input.cc (input_iterator::is_boundary): Minor - cleanup. - -2001-03-07 Werner LEMBERG - - Make `\B' more rigid. - - * src/roff/troff/number.cc (parse_expr, parse_term): Add `rigid' - parameter. - (get_number_rigidly): New function. - * src/roff/troff/input.cc (do_expr_test): Use it. - * src/roff/troff/token.h: Updated. - - * src/roff/troff/request.h: Fix typo (init_html_request -> - init_markup_request). - -2001-03-04 Gaius Mulley - - Fixed grohtml handling of any named glyph for glyph indexes < 0x80. - Cosmetic changes to `.html-begin', `.html-end', `.html-image' which - are now `.begin', `.end', `.image'. - - * src/devices/grohtml/post-html.cc: Adding UNICODE_DESC_START. - (html_printer::add_to_sbuf): Changing type of `code' parameter. - Use add_char_to_sbuf(). - (to_unicode): New function. - (char_translate_to_html): Changing type of `ch' parameter. - Use `to_unicode()'. - (html_printer::~html_printer): Comment out doctype string. - * src/preproc/html/pre-html.cc (write_end_image): Use `.end' - instead of `.html-end'. - (write_start_image): Use `.begin' and `.image' instead of - `.html-begin' and `.html-image'. - * src/roff/troff/input.cc: Rename `html_level' to `begin_level'. - (html_begin): Renamed to ... - (begin): This. - (html_end): Renamed to ... - (end): This. - (html_image): Renamed to ... - (image): This. - (init_html_requests): Renamed to ... - (init_markup_requests): This. - * tmac/www.tmac: Updated. - -2001-02-28 Bram - - * src/libs/libgroff/font.cc (font_widths_cache): Fixing syntax of - constructor. - -2001-02-26 David Leonard - - * doc/meref.me: Fixing some typos. - -2001-02-16 Werner LEMBERG - - * src/roff/troff/node.cc (space_node::get_hyphenation_type): New - method. Return `HYPHEN_MIDDLE' if it was `\:'. - * src/roff/troff/node.h: Updated. - -2001-02-17 Ruslan Ermilov - - * tmac/groff_tmac.man: Fix typo. - -2001-02-16 Werner LEMBERG - - Fixing a bug which prevented proper end-of-sentence recognition - between an `unformatted' box and the following text. As a - consequence, vertical line distances are no longer preserved in - boxes after a call to `.unformat' -- because boxes aren't - line-oriented (contrary to diversions), this doesn't make sense - anyway. - - * src/roff/troff/node.cc (*node::set_unformat_flag): Add return - value. - (vertical_size_node::set_unformat_flag): New method. - * src/roff/troff/node.hh: Updated. - * src/roff/troff/input.cc (word_space_node::reread, - hmotion_node::reread): Reset `unformat' flag after usage. - (unformat_macro): Append only if `set_unformat_flag()' returns - non-zero. - * src/roff/troff/troff.man: Updated. - -2001-02-15 Werner LEMBERG - - * src/roff/troff/troff.man, NEWS, man/groff.man: Improved - documentation of `asciify' and `unformat' requests. - -2001-02-13 Werner LEMBERG - - Redesigned the `unformat' request. It is no longer connected with - `asciify' but rather uses new `reread()' methods if the `unformat' - flag is set. Additionally, the handling of space characters after - unformatting has been fixed so that they retain their width. - - * src/roff/troff/node.h (width_list): New structure to store - original widths of spaces. - (node): Added `unformat' member. - Replaced `num_spaces' variable with `orig_width' list. - * src/roff/troff/node.cc (*node::asciify, - asciify_reverse_node_list): Removed `unformat_only' flag and related - code. - (word_space_node::asciify, word_space_node::word_space_node): Use - `orig_width'. - (word_space_node::~word_space_node): New destructor. - (word_space_node::copy): Updated to handle `orig_width'. - (hmotion_node::copy, unbreakable_space_node::copy): Updated. - (*node::merge_space): Update `orig_width' list if necessary. - (*node::set_unformat_flag): New methods to set the `unformat' flag. - * src/roff/troff/enc.cc (environment::space_newline): Use - `width_list'. - (environment::space): Added method to handle space width and - sentence space width as parameters. Use `width_list'. - (environment::make_tab_node): Updated. - * src/roff/troff/env.h: Updated. - * src/roff/troff/input.cc (word_space_node::reread, - unbreakable_space_node::reread, hmotion_node::reread): New methods - to handle nodes specially if `unformat' flag is set. - (do_asciify_macro): Renamed back to ... - (asciify_macro): This. - (unformat_macro): New implementation to simply set the `unformat' - flag. - - * MORE.STUFF: Added more info about deroff. - -2001-02-08 Werner LEMBERG - - * src/roff/troff/node.h (unbreakable_space_node, hmotion_node, - space_char_hmotion_node, overstrike_node): Add `get_hyphen_list()' - and `add_self()' methods to avoid hyphenation. For example, the - hyphen list for `foo\0\0bar' was `foobar', causing insertion of a - soft hyphen after `foo'. Now the hyphen list is correctly - `foobar'. - -2001-02-05 Yoshiteru Kageyama - - * tmac/groff_tmac.man: Fix `BIR' macro. - -2001-02-04 Werner LEMBERG - - A new escape sequence `\:', inserting a zero-width break point. - - * src/roff/troff/input.h: Adding `ESCAPE_COLON'. - * src/roff/troff/input.cc (get_copy, token::next, asciify): - Implement it. - * src/roff/troff/node.h (node): Add `is_escape_colon()' virtual - method. - (space_node): Add `was_escape_colon' member. Add `is_escape_colon()' - and `asciify()' methods. - * src/roff/troff/node.cc (space_node::space_node): Updated. - (space_node::asciify): Handle `was_escape_colon'. - * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. - - Handle `\~' similar to other comparable requests. - - * src/roff/troff/input.cc (process_input_stack): Remove now obsolete - label. - (token::next): Move creation of an unbreakable_space_node to... - (token::add_to_node_list): Here. - - Fix a bug which sometimes prevented hyphenation of words connected - with `\~' or `\ ' (and other escape sequences handled as - TOKEN_NODE). This also fixes a hyphenation problem with boxes - (after a call to the `unformat' request). - - * src/roff/troff/env.h (environment::possibly_break_line, - environment::hyphenate_line): Introducing `start_here' parameter. - * src/roff/troff/env.cc (environment::space_newline, - environment::space): Use it. - (environment::possibly_break_line, environment::hyphenate_line): - Implement it. - * src/roff/troff/input.cc (process_input_stack): Use it. - * src/roff/troff/node.h (unbreakable_space_node, hmotion_node, - space_char_hmotion_node, overstrike_node): Add - `get_hyphenation_type()' method. - * src/roff/troff/node.cc (break_char_node::asciify): Don't asciify - if `unformat_only' is active. - -2001-01-30 Werner LEMBERG - - Implemented new read-only number register `.linetabs' which - returns 1 if in line-tabs mode, 0 otherwise. - - * src/roff/troff/env.h (environment): Add get_line_tabs() member. - * src/roff/troff/env.cc (get_line_tabs): New function. - (init_env_requests): Use it. - * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. - - * VERSION, REVISION: Changing to 1.17.0. - -2001-01-28 Werner LEMBERG - - Fixed a bug which prevented hyphenation of words which are finished - with `\)'. - - * src/roff/troff/token.h (token): Add enum type - `TOKEN_TRANSPARENT_DUMMY' and method `transparent_dummy()'. - * src/roff/troff/input.cc (token::next, token::description, - get_line_arg, token::add_to_node_list, token::process): Use it. - -2001-01-27 Werner LEMBERG - - * src/roff/troff/div.h (diversion): Add `saved_prev_line_interrupted'. - * src/roff/troff/div.cc (do_divert): Use it. - - * src/roff/troff/input.cc (asciify): Add ESCAPE_RIGHT_PARENTHESIS. - -2001-01-25 Werner LEMBERG - - Adding the `linetabs' request. If set, tab distances are not - computed relative to the input line but relative to the output line. - - * src/roff/troff/env.h (environment): New member `line_tabs'. - * src/roff/troff/env.cc (line_tabs_request): Implement request. - (environment::environment, environment::copy): Updated. - (environment::distance_to_next_tab): Use `line_tabs'. - (init_env_requests): Register request. - * src/roff/troff/troff.man, man/groff.man, NEWS: Document it. Other - fixes. - -2001-01-24 Werner LEMBERG - - Introducing a new read-only register `.int' which is set to a - positive value if the last output line is interrupted (i.e., if it - contains `\c'). - - * src/roff/troff/env.cc (init_env_requests): Add it. - * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. - -2001-01-23 Gaius Mulley - - * tmac/mwww.tmac: Call `www.tmac', not `arkup.tmac'. - * src/preproc/html/pre-html.cc (findPrefix): New function which - generates the troff executable name via the system prefix. - * src/preproc/eqn/main.cc: Modified warning message. - -2001-01-23 Werner LEMBERG - - troff's `box' and `boxa' requests didn't preserve temporary - indentation. - - * src/roff/troff/div.h (diversion): Add `saved_saved_indent' and - `saved_target_text_length' members. - * src/roff/troff/div.cc (do_divert): Use them. - - Tabs (but not yet leaders and fields) are now handled correctly by - `asciify' request. - - * node.h (hmotion_node): Add field `was_tab'. - * env.cc (environment::make_tab_node): Set it. - * node.cc (hmotion_node::copy, hmotion_node::asciify): Use it. - - Added new request `unformat' which will, contrary to `asciify', - preserve font information after unformatting (i.e., only nodes - dealing with horizontal space are converted back to input - characters). - - * input.cc (asciify_macro): Renamed to ... - (do_asciify_macro): this, having a new parameter `unformat_only'. - (asciify_macro, unformat_macro): New; using do_asciify_macro. - (init_input_requests): Added `unformat'. - * node.cc (*_node::asciify), asciify_reverse_node_list: Added - parameter to control asciification process. - * node.h (*_node::asciify): Ditto. - * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. - -2001-01-20 Werner LEMBERG - - * doc/groff.texinfo: Minor improvement of `.in' documentation. - -2001-01-18 Werner LEMBERG - - * tmac/ps.tmac: Remove call of psold.tmac. - * tmac/psold.tmac: Comment updated. - * tmac/psnew.tmac: Removed since no longer needed. - * tmac/Makefile.sub, NEWS, src/devices/grops/grops.man: Updated. - - * font/devutf8/R.proto: Adding `shc' glyph. - * font/devutf8/NOTES: Updated. - - * test-groff: Updated. - -2001-01-15 Gaius Mulley - - First cut of the new html device driver. Changes to pre-html and - the new grohtml are too numerous to be documented here. - - Stuff related to `html' has been renamed to `html-old' and `html2' - stuff has been renamed to `html' (including directories). The new - html device driver is therefore invoked as `-Thtml'. - - Added new `\O' escape to suppress output (needed by html driver). - - Added functions and code to pass info about input-level commands - (`.in', `.fl', etc.) to html driver. - - Three new functions (.html-begin, .html-end, and .html-image) for - better html handling: `html-begin' will execute the remaining line - if at the outermost nesting level, increasing an internal counter. - `html-end' does the same but decreases the internal counter. - `html_image' puts its arguments into a special node (suppress_node) - to define an image region. - - The `output' request has been removed. - - * tmac/html-tags.tmac: Removed. - * tmac/arkup.tmac: Updated and renamed to ... - * tmac/www.tmac: New file. - * tmac/markup.tmac Updated and renamed to ... - * tmac/mwww.tmac: New file. - * tmac/Makefile.sub: Updated. - * tmac/an-old.tmac: Updated. - * tmac/eqnrc: Updated. - * tmac/groff_man.man - * tmac/groff_markup.man: Updated and renamed to ... - * tmac/groff_mwww.man: New file. - * tmac/groff_tmac.man: Updated. - * tmac/html-old.tmac: Updated and Renamed from html.tmac. - * tmac/html.tmac: Updated and renamed from html2.tmac. - * tmac/pspic.tmac: Updated html support. - * tmac/s.tmac: Added html output support. - * tmac/troffrc, tmac/troffrc-end: Updated. - - * Makefile.in, doc/Makefile: Updated. - * doc/groff.texinfo: Added info about new `\O' escape. - * doc/homepage.ms: Use `MAILTO' macro. - - * font/devhtml/DESC.proto: Add `C' font. - * font/devhtml/Makefile.sub: Updated. - * font/devhtml/R.proto: Minor fixes. - * font/devhtml-old/Makefile.sub: Updated. - - * src/devices/grohtml-old/Makefile.sub: Updated. - - * src/libs/libdriver/printer.cc (printer::get_font_from_index): New - method. - * src/libs/libgroff/htmlindicate.cc (html_begin_suppress, - graphic_start): Add `inline' parameter. Update. - (html_end_suppress, graphic_end): Update. - - * src/include/html-strings.h: New file. - * src/include/htmlindicate.h: Comments updated. - * src/include/printer.h: Updated. - - * src/preproc/eqn/main.cc (do_file, main): Updated. - * src/preproc/pic/troff.cc (troff_output::start_picture, - troff_output::finish_picture): Updated. - * src/preproc/tbl/main.cc (process_input_file): Updated. - - * src/roff/groff/groff.cc (main): Updated. - Pass device arguments to predrivers also. - Use `ps' device for `eqn' preprocessor if `-Thtml' is given. - * src/roff/troff/env.h (environment): Updated. - New elements `need_eol' and `ignore_next_eol' (for html output). - * src/roff/troff/env.cc (environment::environment): Add initializers - for `need_eol' and `ignore_next_eol'. - (environment::add_html_tag_eol, environment::add_html_tag_tabs): New - functions. - (point_size, fill, no_fill, center, right_justify, line_length, - indent, temporary_indent, break_request, handle_tab): Use - `add_html_tag()'. - (set_tabs): Use `add_html_tag_tabs()'. - (environment::add_html_tag): Updated. - (environment::do_break): Updated. - * src/roff/troff/div.cc (space_request, flush_output): Use - `environment::add_html_tag()'. - * src/roff/troff/input.cc: Updated. - New variable `html_level' to indicate nested `html-begin' requests. - (file_iterator::fill): Use `environment::add_html_tag_eol()'. - (non_interpreted_char_node, token_node, non_interpreted_node): Add - `force_tprint()' method. - (token::next): Handle `\O'. - (do_suppress): Implement it. - (html_begin, html_end, html_image): New functions. - (init_output_requests): Renamed to ... - (init_html_requests): this. - (main): Use it. - (macro::append_str, macro::append_unsigned, macro::append_int): New - methods. - New variable `output_low_mark_miny' to limit minimal value of y. - (reset_output_registers): Use it. - (output_request): Removed. - (get_output_registers): New function. - * src/roff/troff/node.h (node): Make `force_tprint()' virtual. - (*_node): Added `force_tprint()' if necessary. - (special_node): New elements `tf' and `get_tfont()'. - (suppress_node): New class. - * src/roff/troff/node.cc: - New global variables `image_no' and `suppress_start_page'. - (real_output_file): New method `is_on()'. - (troff_output_file): New method `start_special(tfont)'. - (troff_output_file::really_print_line): Use `tprint' conditionally. - (real_output_file::print_line): Updated. - (real_output_file::on): Updated. - (*_node): Added `force_tprint()'. - (special_node::special_node): Initializer updated. - (special_node::same, special_node::copy, special_node::tprint_start): - Updated. - (get_reg_int, get_reg_str): New functions. - (suppress_node::*): New methods. - New global variables last_position, last_image_filename; - (min): New inline function. - * src/roff/troff/reg.h, src/roff/troff/request.h, - src/roff/troff/troff.h: Updated. - -2001-01-13 Werner LEMBERG - - * NEWS, src/roff/troff/troff.man, doc/groff.texinfo: Fix - documentation of `asciify' request. - -2001-01-12 Werner LEMBERG - - * src/roff/troff/input.cc: Move definition of special characters - like `ESCAPE_TILDE' to ... - * src/roff/troff/input.h: New file. - * src/roff/troff/Makefile.sub (HDRS): Add it. - - Extending the .asciify request to `unformat' space characters also. - - * src/roff/troff/node.h (word_space_node): Add `num_spaces' element - to count input space characters. - Update constructors to take care of it. - * src/roff/troff/node.cc (space_char_hmotion_node::asciify): Use - `ESCAPE_SPACE' instead of normal space. - (word_space_node::asciify): New method. - (unbreakable_space_node::asciify): New method. - (word_space_node::merge_space): New method. - * src/roff/troff/env.cc (environment::space_newline, - environment::space): Add code to initialize `num_spaces' (using the - constructor of `word_space_node'). - * NEWS, src/roff/troff/troff.man, man/groff.man, doc/groff.texinfo: - Document it. - -2001-01-09 Werner LEMBERG - - * man/groff_char.man: Use table header traps only conditionally. - -2001-01-09 Bjarni Ingi Gíslason - - * man/groff_char.man: Add `ý' and `Ý' to the `acute' group. - -2001-01-08 Werner LEMBERG - - Introducing the `box' and `boxa' requests which are similar to - `di' resp. `da' but omitting a partially filled line (which is - restored after ending the diversion). - - * src/roff/troff/div.h (diversion): Add elements to save partially - filled line. - * src/roff/troff/div.cc (do_divert): Add parameter `boxing' to save - partially filled line. - (divert, divert_append): Updated. - (box, box_append): New functions. - (init_div_requests): Use them. - * src/roff/troff/env.h (environment): do_divert() is now a friend. - * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. - - * doc/groff.texinfo: Fix documentation of `lf' request. - -2000-12-25 Werner LEMBERG - - * src/roff/troff/troff.man, NEWS: Document `writem' request. - -2000-12-21 Werner LEMBERG - - Ignore `ss' request if in compatibility mode. - - * src/roff/troff/input.cc: Make `compatible_flag' non-static. - * src/roff/troff/env.h: Added extern `compatible_flag' declaration. - * src/roff/troff/env.cc (space_size): Use it. - - * doc/groff.texinfo, src/roff/troff/troff.man: Fix documentation of - `ss' request in nroff mode. - - * tmac/an-old.tmac: Fixed some serious bugs introduced with latest - changes. - -2000-12-15 Ruslan Ermilov - - * tmac/troffrc, tmac/troffrc-end: Convert tmac.* to *.tmac. - -2000-12-13 Werner LEMBERG - - * src/preproc/eqn/Makefile.sub (MAN1): Added neqn.man. - * src/preproc/eqn/neqn.man: Small fixes and additions. - -2000-12-13 Ruslan Ermilov - - * src/utils/addftinfo/addftinfo.man, src/devices/grops/grops.man: - Fixing typo. - - * src/preproc/eqn/neqn.man: New file. - - * src/preproc/tbl/table.cc (table::print): Fix `indent cannot be - negative' warning. - - * tmac/e.tmac: Add `T&' macro. - Fix `indent cannot be negative' warning. - * tmac/s.tmac: Fix `indent cannot be negative' warning. - -2000-12-07 Werner LEMBERG - - * src/include/lib.h: Replaced __ALPHA with __alpha symbol. - -2000-12-06 Werner LEMBERG - - * PROBLEMS: Added info about adding -lPW on HP-UX to satisfy the - `alloca' symbol . - - * MORE.STUFF: Added info about deroff for djgpp. - - * tmac/an-old.tmac, tmac/groff_man.man, doc/groff.texinfo, NEWS: Fix - documentation of -rcR switch. - -2000-12-03 Werner LEMBERG - - * tmac/an-old.tmac: Implementing the -rcR switch (similar to mdoc); - if -rcR=1 (which is now the default in nroff mode), a single, very - long page is created instead of multiple pages: All `ne' and `wh' - requests are put into conditionals; a new macro `an-end' is added to - be called with `em'. - - Some other minor cleanups. - - * NEWS, tmac/groff_man.man, doc/groff.texinfo: Updated. - -2000-12-02 Werner LEMBERG - - Fixing a bug which prevented hyphenation in words followed - immediately by a TOKEN_NODE (e.g. `\ ', `\~', etc.). - - * src/roff/troff/input.cc (process_input_stack ): - Adding possibly_break_line(). - * src/roff/troff/env.h (environment): Make possibly_break_line() - public. - - Make `\~' usable in .tr request. - - * src/roff/troff/token.h (token_type): Add TOKEN_STRETCHABLE_SPACE. - (token): Add stretchable_space(). - * src/roff/troff/input.cc (token::next, token::delimiter, - token::description, process_input_stack, do_translate, - add_to_node_list, token::process): Use it. - * src/roff/troff/node.h (node): Add fourth parameter to add_char() - for adjusting the space. - * src/roff/troff/node.cc (node::add_char): Implement it. Add code - for stretchable space. - * src/roff/troff/input.cc (token::add_to_node_list): Use it. - (make_node): Add code for stretchable space. - * src/roff/troff/env.cc (environment::add_char): Use it. - * src/roff/troff/input.cc: Add ESCAPE_TILDE special character. - (get_copy, token::next, transparent_translate, asciify): Use it. - - * NEWS, src/roff/troff/troff.man, src/roff/troff/TODO, - doc/groff.texinfo: Updated. - * man/groff.man: Small reorderings. - -2000-11-23 Werner LEMBERG - - * NEWS: Fixes. - * src/preproc/eqn/main.cc (main): Use `config_macro_path' for -M - option. - * src/roff/troff/input.cc (main): Add `config_macro_path' and - `safer_macro_path' to -M option. - * src/roff/troff/troff.man: Fixes. - -2000-11-22 Werner LEMBERG - - Use safer path (except for config files) if -U isn't specified. Add - a special macro path (without home and current directory) for config - files. Add home directory to unsafe path for consistency. Don't - include the home directory in the font path. - - * src/libs/libgroff/macropath.cc: Add `config_macro_path', change - `macro_path'. - * src/include/macropath.h: Add `config_macrp_path'. - * src/libs/libgroff/fontfile.cc: Fix font path. - * src/roff/troff/input.cc (process_startup_file): Use - `config_macro_path'. - (main): Select unsafe path if -U is given. - - * src/preproc/eqn/main.cc (main): Fixing search path for - configuration file. - * src/preproc/eqn/eqn.man: Updated. - - * src/roff/troff/troff.man, man/roff.man, tmac/groff_tmac.man: - Updated. - - * src/preproc/grn/grn.man, src/devices/grodvi/grodvi.man, - src/devices/grohtml/grohtml.man, src/devices/grolbp/grplbp.man, - src/devices/grolj4/grolj4.man, src/devices/grops/grops.man, - src/devices/grotty/grotty.man: Updated. - - * Makefile.in: Fix comments. - -2000-11-17 Werner LEMBERG - - * tmac/safer.tmac: Empty file added (again) for compatibility - reasons. - * tmac/Makefile.sub: Updated. - -2000-11-16 Werner LEMBERG - - * src/devices/grodvi/dvi.cc (main), - src/devices/grohtml2/post-html.cc (main), - src/devices/grolbp/lbp.cc (main), src/devices/grolj4/lj4.cc - (main), src/devices/grops/ps.cc (main), src/devices/grotty/tty.cc - (main), src/preproc/eqn/main.cc (main), src/preproc/grn/main.cc - (main), src/preproc/html2/pre-html.cc (main), - src/preproc/pic/main.cc (main), src/preproc/refer/refer.cc (main), - src/preproc/soelim/soelim.cc (main), src/preproc/tbl/main.cc - (main), src/roff/groff/groff.cc (main), src/roff/troff/input.cc - (main), src/utils/hpftodit/hpftodit.cc (main), - src/utils/indxbib/indxbib.cc (main), src/utils/lkbib/lkbib.cc - (main), src/utils/lookbib/lookbib.cc (main), - src/utils/pfbtops/pfbtops.c (main), src/utils/tfmtodit/tfmtodit.cc - (main): Use stdout for -v. - * src/roff/groff/groff.cc (run_commands), - src/roff/groff/pipeline.c (run_pipeline): New parameter `no_pipe' - to make direct printing to stdout possible. - * src/roff/groff/pipeline.h: Updated. - - * src/utils/afmtodit/afmtodit.pl: Add -v switch. - * src/utils/afmtodit/Makefile.sub (afmtodit): Use @VERSION@. - * src/utils/afmtodit/afmtodit.man: Updated. - - * src/utils/addftinfo/addftinfo.cc (main): Add -v switch. - (version): New function. - (usage): Updated. - * src/utils/addftinfo/addftinfo.man: Updated. - - * src/devices/*/*, src/preproc/*/*, src/roff/*/*, src/utils/*/*: - Fixing copyright dates. - - * src/preproc/eqn/neqn.sh: Adding GROFF_BIN_PATH to path instead of - replacing it. - - * src/devices/grolbp/lbp.cc (main): Use Version_string instead of - version_string. - - * src/roff/nroff/Makefile.sub (nroff): Fix use of @VERSION@. - -2000-11-15 Werner LEMBERG - - In all programs, make -v return immediately with exit status 0 to - be compliant with the GNU standard. - - * src/devices/grodvi/dvi.cc (main), - src/devices/grohtml2/post-html.cc (main), - src/devices/grolbp/lbp.cc (main), src/devices/grolj4/lj4.cc - (main), src/devices/grops/ps.cc (main), src/devices/grotty/tty.cc - (main) src/preproc/eqn/main.cc (main), src/preproc/grn/main.cc - (main), src/preproc/html2/pre-html.cc (main), - src/preproc/pic/main.cc (main), src/preproc/refer/refer.cc (main), - src/preproc/soelim/soelim.cc (main), src/preproc/tbl/main.cc - (main), src/roff/groff/groff.cc (main), src/roff/troff/input.cc - (main): Implement it. - * NEWS: Updated. - - * src/roff/groff/groff.cc (main): Add copyright notice. Add refer - and postprocessors to the -v option. - - * src/roff/grog/grog.pl: Implement -v. - * src/roff/grog/Makefile.sub (grog): Use @VERSION@. - * src/roff/grog/grog.man, doc/groff.texinfo: Updated. - - * src/roff/nroff/nroff.sh: Implement -v. - * src/roff/nroff/Makefile.sub (nroff): Use @VERSION@. - * src/roff/nroff/nroff.man: Updated. - - * src/preproc/eqn/main.cc (main): Fix comment typo. - - * MORE.STUFF: Added info about djgpp port of grap. - -2000-11-14 Werner LEMBERG - - * src/roff/grog/grog.{pl,sh}: Implemented -C switch for compatibility - mode (or rather, implemented non-compatibility mode). - * NEWS, src/roff/grog/grog.man, doc/groff.texinfo: Updated. - - * src/roff/groff/groff.cc (main): Add BIN_PATH to PATH instead of - replacing it -- we don't find gxditview otherwise. - * NEWS, src/roff/groff/groff.man, doc/groff.texinfo: Updated. - - * src/preproc/pic/depend: Removed. Unnecessary. - - Implemented dummy keyword `solid' in pic for compatibility with - AT&T pic. - - * lex.cc (lookup_keyword): Added `solid'. - * pic.y: Added SOLID with dummy rule. - * pic.cc, pic_tab.h: Regenerated. - * doc/pic.ms: Updated. - -2000-11-13 Werner LEMBERG - - For security reasons, don't use the current directory but the home - directory while searching and scanning troffrc and troffrc-end. - Similarly, replace the current directory with the home directory - in the font path. - - * Makefile.in (fontpath, tmacpath): Remove current directory. - - * src/libs/libgroff/searchpath.cc (search_path::search_path): Add - two parameters `add_home' and `add_current'. - (search_path::~search_path, search_path::command_line_dir, - search_path::open_file): Remove tests for `dirs' being zero. - * src/include/searchpath.h: Adjust. - * src/libs/libgroff/macropath.cc, src/include/macropath.h: Add - `safer_macro_path'. - * src/libs/libgroff/fontfile.cc: Adjust `font_path'. - - * src/roff/troff/troff.h: Add `searchpath.h' and `mac_path'. - * src/roff/troff/input.cc: Use `mac_path', initialized with - `macro_path'. - (process_startup_file): Set `mac_path' to `safer_macro_path'. - * src/roff/troff/env.cc: Use `mac_path'. - - * src/preproc/eqn/main.cc (main): Use `safer_macro_path'. - - * NEWS, man/roff.man, src/roff/troff/troff.man, - src/roff/groff/groff.man, tmac/groff_tmac.man, arch/djgpp/README: - Updated. - -2000-11-12 Werner LEMBERG - - * src/include/lib.h: Don't include groff-getopt.h for OSF/1. - - * aclocal.m4 (GROFF_SYS_ERRLIST): Do test in C, not in C++. - * configure.in: Fix typo in comment. - * configure: Regenerated. - - * src/libs/libgroff/*, src/include/*, src/roff/troff/*: Fixing - copyright dates. - -2000-11-08 Werner LEMBERG - - Add system tmac directory (/usr/local/lib/groff/site-tmac). - - * Makefile.in: Add $(libdir), $(libprogramdir), and $(systemtmacdir). - (uninstall_dirs): Add $(libdir), $(libprogramdir), and - $(systemtmacdir). - Use @libdir@. - * Makefile.comm (.man.n): Add @SYSTEMMACRODIR@. - * tmac/Makefile.sub (install_data): Create - $(systemtmacdir) and $(localtmacdir). - (uninstall_sub): Use $(systemtmacdir) for wrapper macros. - * man/roff.man, src/roff/troff/troff.man, src/roff/groff/groff.man, - NEWS, doc/groff.texinfo: Updated and minor fixes. - - * Makefile.comm, Makefile.in: Added tmac_{s,an}_prefix stuff again. - * tmac/Makefile.sub: Added `wrap' stuff again, but installing into - $(systemtmacdir) since the wrapper files are platform-dependent. - -2000-11-01 Werner LEMBERG - - * doc/groff.texinfo: Fix typo. - -2000-10-26 Werner LEMBERG - - Convert macros `tmac.XXX' to `XXX.tmac'. Special cases: - tmac.doc.old -> doc-old.tmac - tmac.an.old -> an-old.tmac - - * tmac/tmac.*: Moved to ... - * tmac/*.tmac: this. - * tmac/man.local: Fix comment. - * tmac/groff_man.man, tmac/groff_markup.man, tmac/groff_mdoc.man, - tmac/groff_me.man, tmac/groff_ms.man, tmac/groff_tmac.man: Updated. - Added some `FILES' sections. More use of @...@ directives. Other - minor updates. - * arch/djgpp/README, font/devutf8/NOTES: Updated. - * doc/homepage.ms, doc/groff.texinfo: Updated. - * man/groff.man, man/roff.man: Updated. - * src/devices/grodvi/grodvi.man, src/devices/grolbp/grolbp.man, - src/devices/grolj4/grolj4.man, src/devices/grops/grops.man, - src/devices/grotty/grotty.man: Updated. - * src/preproc/pic/pic.man: Updated. - * src/roff/grog/grog.pl, src/roff/grog/grog.sh: Use -mdoc-old - instead of -mdoc.old. - * src/roff/grog/grog.man: Document -mdoc and -mdoc-old. - * src/roff/nroff/nroff.man: Updated. - * NEWS: Updated. - - * tmac/fixmacros.sed, tmac/strip.sed: Add explanatory comment. - - * tmac/mm.diff: Removed -- it has no use now since the mm package - is part of groff. - - * tmac/*: Removed trailing spaces. - - * arch/djgpp/t-groff.bat: Fix GROFF_TMAC_PATH (hyphen.us is now in - the tmac subdirectory also). - - * Makefile.comm, Makefile.in: Remove tmac_{s,an}_prefix stuff. - * tmac/Makefile.sub: Adapted to new macro names; removed `wrap' - stuff since it is no longer needed. - - * README, PROBLEMS: Updated. - -2000-10-25 Werner LEMBERG - - Invert current behaviour: Search first FOOBAR.tmac, then - tmac.FOOBAR. - - * src/roff/troff/input.cc: Introduce MACRO_POSTFIX. - (open_mac_file, macro_source): Implement it. - * src/roff/troff/troff.man, tmac/groff_tmac.man, man/roff.man, - doc/groff.texinfo, NEWS: Document it. - - * src/roff/nroff/nroff.man, src/roff/groff/groff.man, man/groff.man: - Small documentation improvements. - - * test-groff: Fix GROFF_TMAC_PATH (hyphen.us is now in the tmac - subdirectory also). - - * font/devps/Makefile.sub: Fix rules for dingbats.*map. - -2000-10-24 Werner LEMBERG - - Add local tmac directory (groff/site-tmac). - - * Makefile.in: Add $(localtmacdir). - (uninstall_dirs): Add $(localtmacdir). - * Makefile.comm (.man.n): Add @LOCALMACRODIR@. - * tmac/Makefile.sub (install_data, uninstall_sub): Handle man.local - in $(localtmacdir). Create $(localtmacdir). - * man/roff.man, src/roff/troff/troff.man, NEWS, doc/groff.texinfo: - Updated and minor fixes. - - Rename font/devps/generate/dingbats[r]map to dingbats.[r]map. - - * font/devps/generate/Makefile.sub, arch/djgpp/README: Adjust. - -2000-10-23 Werner LEMBERG - - Move hyphen.us to tmac directory. - - * src/roff/troff/hyphen.us: Removed. - * src/tmac/hyphen.us: Added. - * src/roff/troff/Makefile.sub, tmac/Makefile.sub: Updated. - - Change installation structure for data files from .../groff/... to - .../groff//... to be conform with other GNU - programs. - - * Makefile.in, Makefile.comm, src/utils/indxbib/Makefile.sub, - doc/Makefile: Implement it. - * aclocal.m4 (GROFF_PAGE): Add test for new directory structure. - * configure: Updated. - * arch/djgpp/README, font/devutf8/NOTES: Use it. - * NEWS: Document it. - * man/roff.man, tmac/groff_tmac.man: Use @FONTPATH@, @FONTDIR@, and - @MACRODIR@ instead of hard-coded directories. - -2000-10-22 Werner LEMBERG - - Implement $GROFF_BIN_PATH environment variable (which defaults to - $bindir) used for child programs of groff and similar wrappers. - - * gendefs.sh: Improve documentation. - * Makefile.comm (,man.n), src/include/Makefile.sub (defs.h), - src/preproc/eqn/Makefile.sub (neqn), - src/roff/nroff/Makefile.sub (nroff): Add $(bindir). - * src/preproc/eqn/neqn.sh, src/roff/nroff/nroff.sh: Implement - $GROFF_BIN_PATH. - * src/roff/groff/groff.cc (main): Implement $GROFF_BIN_PATH and - $GROFF_PATH__ (the latter for communication with troff). - * src/roff/troff/input.cc (main): Use $GROFF_PATH__ for $PATH if - set. - * NEWS, src/roff/nroff/nroff.man, src/roff/groff/groff.man, - doc/groff.texinfo: Document it. - - * doc/groff.texinfo: Improve documentation of troff's -a option. - -2000-10-17 Gaius Mulley - - * src/roff/troff/node.cc: Fixed calculation of opminx and fixed - non-intrusive eol marker. - (troff_output_file::determine_line_limits): New function. - (troff_output_file::draw): Use it. - * src/roff/troff/env.cc (environment::add_html_tag): Use output() + - output_pending_lines() instead of output_line(). - * src/preproc/eqn/main.cc (do_file): Fix graphic_end(). - * src/preproc/html2/pre-html.cc (char_buffer::write_file_troff, - createImage): Small fixes. - -2000-10-14 Werner LEMBERG - - Replace tmac.safer with a real secure solution. - - * src/roff/troff/input.cc (open_request, opena_request, pipe_source, - system_request, pipe_output): Disable requests if in safer mode. - * src/roff/groff/groff.cc (main): Remove reference to tmac.safer. - * tmac/tmac.safer, tmac/groff_msafer.man: Removed. - * tmac/Makefile.sub, NEWS, man/roff.man, tmac/groff_tmac.man, - doc/groff.texinfo, src/roff/groff/groff.man, - src/roff/troff/troff.man, arch/djgpp/README: Updated. - - * src/devices/grops/ps.cc (main), src/devices/grops/psrm.cc - (resource_manager::output_prolog): Replace setenv() with putenv(). - -2000-10-09 Werner LEMBERG - - * src/libs/libbib/map.c, src/libs/libgroff/getcwd.c, - src/libs/libgroff/strtol.c, src/preproc/html2/image.cc, - src/preproc/html2/pre-html.cc, src/preproc/html2/pushbackbuffer.cc, - src/roff/groff/pipeline.c: Removing `#ifndef errno' to avoid - compilation errors with some compilers. It seems that this code - is no longer necessary -- if yes, it is easy to add some #ifdef's - for that particular old-fashioned compiler. - - * MORE.STUFF: Added info about Meta-tbl. - - * doc/groff.texinfo: Added more info about `.if "..."..."'. - -2000-10-07 Werner LEMBERG - - Adding a new escape sequence \B'...': If the string between - the delimiters is a valid numeric expression, return the character - `1', and `0' otherwise. This is an analogon to \A. - - * src/roff/troff/input.cc (do_expr_test): Implement it. - (token::next): Use it. - * src/roff/troff/troff.man, NEWS, man/groff.man: Document it. - - * tmac/tmac.trace: Made independent from escape character. - -2000-10-06 Werner LEMBERG - - Adding a new request .dei: define indirect. The first and second - parameter of .dei are taken from string registers instead directly; - this very special request is needed to make tmac.trace independent - from the escape character (which might even be disabled). - - * src/roff/troff/input.cc (do_define_macro): Implement it. - (define_macro_indirect): New function. - (init_input_requests): Use it. - - Adding two requests .ecs and .ecr: Save and restore the escape - character. These two requests are needed to make tmac.trace - independent from the escape character (which might even be - disabled). - - * src/roff/troff/input.cc (save_escape_char, restore_escape_char): - Implement it. - (init_input_requests): Use it. - - * src/roff/troff/troff.man, NEWS, man/groff.man: Updated. - -2000-09-22 Ricardo Soares Guimarães - - Adding a new option -P and new environment variable GROPS_PROLOGUE - to grops, selecting a different prologue file (minor modifications - by WL). - - * src/devices/grops/psrm.cc (resource_manager::output_prolog), - src/devices/grops/ps.cc (main): Implement it. - * src/devices/grops/grops.man, NEWS: Document it. - -2000-09-22 Werner LEMBERG - - * INSTALL: Add info about selecting paper format. - -2000-09-21 Werner LEMBERG - - * src/roff/troff/input.cc (main): Fixing compiler warning. - * src/include/{driver.h, lib.h}: Move inclusion of string.h and - strings.h from the former to the latter. - * src/devices/grolbp/lpb.cc, src/include/lib.h: Move strncasecmp() - stuff from the former to the latter. - -2000-09-11 Werner LEMBERG - - Implementing two new requests .tm1 and .tmc: The former is similar - to .tm but can output leading spaces; its syntax is similar to - defining a string, i.e., a `"' can be used to mark the beginning of - the string to be written to stderr: `.tm1 " test'. The latter is - similar to .tm1 but doesn't write out a final newline character. - - * src/roff/troff/input.cc (terminal1, terminal_continue, - do_terminal): New functions. - (init_input_requests): Use them. - * src/roff/troff/troff.man, NEWS, man/groff.man: Updated. - -2000-09-09 Werner LEMBERG - - * tmac/groff_mdoc.samples.man: Small fixes. - -2000-09-08 Werner LEMBERG - - * tmac/groff_mdoc.man: Fixing typo. - -2000-09-02 Werner LEMBERG - - Implementing a .nop request which does nothing. - - * src/roff/troff/input.cc (nop_request): New function. - (init_input_requests): Use it. - * src/roff/troff/troff.man, NEWS, man/groff.man: Updated. - -2000-09-01 Werner LEMBERG - - * doc/groff.texinfo: Added some comments. - -2000-08-30 Werner LEMBERG - - * src/roff/troff/TODO: Updated. - -2000-08-25 Werner LEMBERG - - * doc/groff.texinfo: Fix comment how to compile the DVI file. - -2000-08-25 Eli Zaretskii - - * font/devps/generate/Makefile (SHELL): Define explicitly to - "/bin/sh", for non-Unix platforms. - (extraclean): Use a more portable "" quoting instead of a - backslash (which doesn't work on DOS/Windows). - - * font/devlj4/generate/Makefile (extraclean): Ditto. - - * font/devdvi/generate/Makefile (extraclean): Ditto. - -2000-08-25 Werner LEMBERG - - * NEWS, doc/groff.texinfo, tmac/groff_tmac.man, man/roff.man, - src/roff/troff/troff.man: Document Eli's latest changes. - -2000-08-25 Eli Zaretskii - - * src/roff/troff/input.cc (open_mac_file, macro_source): Support - macro file names of the form NAME.tmac as well as tmac.NAME. - -2000-08-25 Werner LEMBERG - - * src/include/posix.h: Remove definition of FILENAME_MAX. - - * src/preproc/html2/pre-html.h, pre-html.cc: Add return type to - `sys_fatal' and `stop' function(). - - * test-groff: Updated. - -2000-08-24 Gaius Mulley - - Added the new troff command .output to suppress output (while - still obeying motion) and also the opminx, opminy, opmaxx, opmaxy - registers (for passing the output dimensions to the output device). - - * src/roff/troff/div.cc (top_level_diversion::output): Use `width' - parameter. - * src/roff/troff/node.h, src/roff/troff/node.cc - (troff_output_file::really_print_line, - ascii_output_file::really_print_line, - supress_output_file::really_print_line): Use `width' parameter. - (troff_output_file::really_on, troff_output_file::really_off, - output_file::on, output_file::off, real_output_file::on, - real_output_file::off, real_output_file::really_on, - real_output_file::really_off): New functions. - (real_output_file:public output_file): New variable `output_on'. - (real_output_file::begin_page, real_output_file::copy_file, - real_output_file::transparent_char, real_output_file::print_line): - Use it. - (real_output_file::print_line): Use check_output_limits. - * src/roff/troff/reg.h, src/roff/troff/request.h, - src/roff/troff/input.cc (assign_registers): New function to remove - two `goto's. - (do_ps_file): Use it. - (check_output_limits, reset_output_registers, output_request, - init_output_requests): New functions. - (init_input_requests): Updated. - - Added new grohtml2 device and html2 preprocessor (coding - not yet finished) which will eventually replace grohtml. - - * Makefile.in, tmac/Makefile.sub, tmac/eqnrc, tmac/troffrc-end: - Updated. - * src/include/htmlindicate.h, src/include/htmlindicate - (html_begin_suppress, html_end_suppress): New functions. - * src/preproc/tbl/main.cc: Use it. - * src/roff/groff/groff.cc: Add support for html2 device (which will - automatically invoke the html2 preprocessor). - * src/roff/troff/input.cc (is_html2): New variable. - * src/roff/troff/troff.h, src/roff/troff/env.h, - src/roff/troff/env.cc (environment::add_html_tag): New function - (uses `is_html2'). - (environment::do_break): Use it. - * font/devhtml2/*: New files. - * src/devices/grohtml2: New device. - * src/preproc/html2: New preprocessor. - * tmac/tmac.html-tags, tmac/tmac.html2: New files. - -2000-08-23 Werner LEMBERG - - * src/devices/grolbp/lbp.cc: Same workaround for sinix as for AIX. - -2000-08-22 Werner LEMBERG - - * src/include/lib.h: Provide a fix for IRIX to not include - groff-getopt.h. - -2000-08-18 Werner LEMBERG - - * configure.in: Don't provide an empty value for SH_SCRIPT_SED_CMD - since some non-GNU sed programs can't handle null regexps. - * configure, src/preproc/eqn/Makefile.sub, - src/roff/grog/Makefile.sub, src/roff/nroff/Makefile.sub: Updated. - - * src/devices/grolbp/lbp.cc: Add an AIX workaround for an autoconf - bug (string.h and strings.h are both needed according to latest - POSIX standard). - - * MORE.STUFF: Added info about unroff and troffcvt. - -2000-08-08 Werner LEMBERG - - * tmac/tmac.a4: Will now work with ms macros also; -ma4 should be - used before -ms. - - * tmac/tmac.man.old: Remove unused number register. - - * tmac.doc: Minor documentation fix. - -2000-08-07 Paul Eggert - - * src/roff/groff/pipeline.c (is_system_shell): - Fix typo: "monocased_shell" no longer exists. - -2000-08-07 Paul Eggert - - Remove FILENAME_MAX limits. - - * src/roff/groff/pipeline.c (is_system_shell): Do not assume - that the argument length is less than FILENAME_MAX. - * src/libs/libgroff/tmpfile.cc (add_tmp_file): Likewise. - Use struct hack to allocate and free file name. - (struct xtmpfile_list): fname is now part of the structure, - not a pointer to another string. - -2000-08-07 Tom Schmidt - - * src/include/posix.h: Add a default value for FILENAME_MAX. - -2000-08-06 Paul Eggert - - Add support for new BSD-style man pages (with ".Dd" instead of - ".TH"), so that "groff -man" understands both styles, even - when running "groff -man" on a host whose system man page - macros don't support ".Dd". - - * tmac/Makefile.sub (NORMALFILES): Add tmac.an.old. - (stamp-wrap): Source tmac.andoc first when wrapping man macros, - in case the system man macros don't define Dd or TH. - - * tmac/tmac.an.old: Renamed from tmac/tmac.an. - * tmac/tmac.an: New one-line file. - * tmac/tmac.andoc (TH): Adjust to the tmac.an.old file renaming. - -2000-08-06 Werner LEMBERG - - * src/roff/troff/troff.man: Fixing typos. - -Local Variables: -version-control: never -coding: latin-1 -End: diff --git a/contrib/groff/ChangeLog.118 b/contrib/groff/ChangeLog.118 deleted file mode 100644 index 172a57f08320..000000000000 --- a/contrib/groff/ChangeLog.118 +++ /dev/null @@ -1,3794 +0,0 @@ - -Version 1.18.1 released -======================= - -2002-10-08 Werner LEMBERG - - * doc/webpage.ms, NEWS: Updated. - -2002-10-07 Werner LEMBERG - - * tmac/doc-common (Ss): Add final `.ns' (similar to `.Sh') to - suppress additional whitespace after the header. - - * tmac/doc-ditroff, tmac/doc-nroff (Am): New string to be in sync - with NetBSD. - - * src/preproc/grn/grn.man, tmac/groff_mdoc.man, NEWS: Updated. - -2002-10-07 Ruslan Ermilov - - * tmac/doc-common(doc-volume-operating-system-ateol): New flag. - (Dt): Use it to improve language localization (especially Russian - and French). - -2002-10-07 Daniel Senderowicz - - * src/preproc/grn/gprint.h (BSPLINE, BEZIER): New macros. - * src/preproc/grn/hdb.cc (DBGetType): Parse spline and bezier - drawing commands. - * src/preproc/grn/hgraph.cc (drawwig): Add parameter to control - curve type. - Call `picurve' for BSPLINE. - (HGPrintElt): Handle BSPLINE. - * src/preproc/grn/README: Document it. - -2002-10-03 Werner LEMBERG - - * src/roff/troff/node.cc (break_char_node::col): New variable. - Updated constructor. - (space_node::tprint, word_space_node::tprint): Call `fill_color' - unconditionally. - (space_node::space_node): Remove assertion. - (break_char_node::add_self): Pass color argument to space node. - * src/roff/troff/input.cc (token::add_to_node_list, token::process): - Ditto. - * src/roff/troff/env.cc (environment::do_break, - environment::add_padding): Ditto. - -2002-10-02 Werner LEMBERG - - Redesigning color support in troff. Colors are no longer - represented as separate nodes but are now part of glyph nodes and - friends. This fixes the current formatting misbehaviour due to the - changes introduced on 2002-09-20. Some extra code is necessary for - proper grotty support: Without adding color variables to - space-related nodes, the background color would be changed too late. - - * src/roff/troff/node.h, src/roff/troff/node.cc: - s/current_pagecolor/current_fill_color/. - s/current_glyphcolor/current_glyph_color/. - (glyph_color_node, fill_color_node): Removed. - (node::get_glyph_color, node::get_fill_color): New virtual member - functions. - (space_node::col): New variable. - Updated constructors of space_node and derived classes accordingly. - (hmotion_node::col): New variable. - Updated constructors of hmotion_node and space_char_hmotion_node - accordingly. - (vmotion_node::col): New variable. - Updated constructor accordingly. - (draw_node::gcol, draw_node::fcol): New variables. - Updated constructor accordingly. - (special_node::gcol, special_node::fcol): New variables. - Updated constructors accordingly. - (troff_output_file::put_char, troff_output_file::put_charwidth, - troff_output_file::draw): Set glyph and fill color. - (troff_output_file::start_special): Set glyph and fill color. - Always set current font. - (troff_output_file::fill_color, troff_output_file::glyph_color): - Don't call `do_motion'. - (glyph_node::gcol, glyph_node::fcol): New variables. - Updated constructors of glyph_node and ligature_node accordingly. - (glyph_node::get_glyph_color, glyph_node::get_fill_color): New - member functions. - (glyph_node::merge_glyph_node, - kern_pair_node::add_discretionary_hyphen, - node::add_discretionary_hyphen): Updated. - (break_char_node::merge_self): Updated. - (word_space_node::tprint, space_node::tprint, hmotion_node::tprint, - vmotion_node::tprint): Handle color. - (make_glyph_node, make_node, node::add_char): Updated. - - * src/roff/troff/env.cc (environment::space_newline, - environment::space, environment::output_line, environment::do_break, - environment::make_tab_node, environment::add_padding, title): - Updated. - (environment_switch, environment_copy): Don't add color nodes. - - * src/roff/troff/input.cc (do_glyph_color, do_fill_color): Return - nothing. - (token::next): Updated. - \m and \M now are as transparent as \s. - (process_input_stack, token::add_to_node_list, token::process, - read_draw_node): Updated. - (charinfo_to_node_list): Don't add color nodes. - - * doc/groff.texinfo: Updated. - -2002-09-27 Ruslan Ermilov - - * tmac/doc-common (ds-operating-system-FreeBSD-4.*): New version - strings. - -2002-09-27 Colin Watson - - * src/roff/troff/node.cc (bracket_node::copy): Check `list' != 0. - -2002-09-23 Werner LEMBERG - - * src/devices/grolbp/lbp.cc: Replace `300' with `font::res' where - appropriate. - (DEFAULT_LINEWIDTH_FACTOR): New macro. - (linewidth_factor): New global variable. - (lbp_printer::set_line_thickness): Fix case for size < 0, using - linewidth_factor. - (long_options): Add -w/--linewidth option. - (usage): Updated. - (main): Handle -w option to set linewidth_factor. - (lbp_printer::lbp_printer): Initialize req_linethickness, not - line_thickness. - - * src/devices/grolbp/grolbp.man, NEWS, doc/webpage.ms: Updated. - -2002-09-22 Paco Andrés Verdú - - Fixed a bug in the line thickness setting code. - - * src/devices/grolbp/lbp.cc (lbp_printer::req_linethickness): New - variable. - (lbp_printer::set_line_thickness): Pass environment as second - parameter. - Implement it actually. - (lpb_printer::set_char, lbp_printer::draw): Use `req_linethickness' - and `set_line_thickness, depending on the current font size. - -2002-09-21 Werner LEMBERG - - Some Debian patches. - - * src/roff/groff/pipeline.h (MAX_COMMANDS): Increase to 12. - * src/roff/troff/node.cc (bracket_node::copy): Initialize - `list->last'. - -2002-09-20 Werner LEMBERG - - * configure: Regenerated with autoconf 2.54. - -2002-09-20 Werner LEMBERG - - * src/roff/troff/env.h (environment): Rename cur_glyph_color to - glyph_color. - Rename cur_fill_color to fill_color. - * src/roff/troff/env.cc: Updated. - -2002-09-20 Werner LEMBERG - - * src/roff/troff/env.cc (title): Copy color status after processing - title. - * src/roff/troff/input.cc (charinfo_to_node_list): Emit glyph and - fill color nodes to reset colors properly. - - * tmac/www.tmac (DC): Fix color handling. - - * src/preproc/pic/pic.man, doc/pic.ms: Document some color issues. - * doc/groff.texinfo: Fixing documentation of `tl' request. - * doc/webpage.ms: Updated. - -2002-09-19 Werner LEMBERG - - * src/roff/troff/env.cc (environent_switch, environment_copy): - Emit glyph and fill color nodes to initialize colors properly. - -2002-09-17 Colin Watson - - * src/roff/troff/env.cc (environment::set_glyph_color, - environment::set_fill_color): Fix typo which prevented \m[] work - correctly. - -2002-09-17 Werner LEMBERG - - Add left and right italic correction to non-slanted PS fonts. This - is an experimental feature to improve image rendering of grohtml. - - * font/devps/generate/Makefile (RFLAG): New variable, set to `-i 0'. - ({T,H,C,P,N,BM,A,HN}{R,B}, ZD, S, ZDR): Use it. - * font/devps/*: All non-slanted fonts regenerated. - * NEWS: Updated. - -2002-09-16 Werner LEMBERG - - Add a site-specific font directory. - - * Makefile.in (localfontdir, legacyfontdir): New variables. - (fontpath): Use them. - (MDEFINES, uninstall_dirs): Updated. - * Makefile.comm (.man.n): Add `LOCALFONTDIR' and `LEGACYFONTDIR'. - Remove `FONTPATH' and `MACROPATH'. - - * src/roff/troff/troff.man, NEWS: Updated. - * doc/groff.texinfo (Font Directories): New section. - Other minor fixes. - - * src/devices/grodvi/grodvi.man, src/devices/grohtml/grohtml.man, - src/devices/grolbp/grolbp.man, src/devices/grolj4/grolj4.man, - src/preproc/grn/grn.man: Minor fixes. - - * src/devices/grohtml/post-html.cc (html_printer::do_tab_ts): - Remove unused variable. - -2002-09-11 Werner LEMBERG - - * doc/groff.texinfo, man/groff_font.man: Clarify argument of \N. - * man/groff_out.man: Fix documentation of 'N'. - -2002-09-09 Gaius Mulley - - * doc/Makefile.in (webpage.html): Depend on gnu.eps also. - * src/roff/troff/env.cc (indent): Emit html tag only if break_flag is - set. - * src/devices/grohtml/post-html.cc (text_glob::is_br_ni): Removed. - (text_glob::is_br, html_printer::lookahead_for_tables): Updated. - (html_printer::do_tab_ts): Call `emit_table_header' with `FALSE'. - * src/devices/grohtml/html-text.cc (html_text::start_tag) : Call `begin' with `FALSE'. - -2002-09-09 Ralph Corderoy - - * src/libs/libgroff/string.cc (string::extract): Fix position of - terminating null byte. - -2002-09-08 Werner LEMBERG - - Add global option `nospaces' to tbl so that leading and trailing - spaces in data items are ignored. - - * src/libs/libgroff/string.cc (string::remove_spaces): New member - function to remove leading and trailing spaces. - * src/include/stringclass.h: Updated. - - * src/preproc/tbl/table.h (table): Add flag `NOSPACES'. - - * src/preproc/tbl/main.cc (process_options): Handle `nospaces' - option. - Fix typo in error messages. - (process_data): Implement `nospaces' option. - * src/preproc/tbl/tbl.man, NEWS, doc/webpage.ms: Updated. - -2002-09-07 Werner LEMBERG - - * src/include/config.hin: Add `HAVE_ISATTY'. - * src/libs/libgroff/tmpfile.cc (xtmpfile_list): Drop `const' for - `fname' member. - * src/libs/libgroff/tmpname.cc: Include `time.h'. - * src/libs/libdriver/input.cc (Char): Add `operator==' and - `operator!=' for `char'. - * doc/groff.texinfo: Replace @ifnottex block for top node with - @ifhtml block. - -2002-09-06 Werner LEMBERG - - * doc/Makefile.in (.texinfo.html): Add -I switch. - * doc/groff.texinfo: Add @ifnottex block for top node to make - translation to HTML work. - -2002-09-05 Gaius Mulley - - * src/preproc/html/pre-html.cc (LETTER_LENGTH): Removed. - (get_papersize, determine_vertical_offset): Removed. - (char_buffer::do_image): Always specify letter size. - (main): Updated. - (imageList::createPage): Use -dDEVICEHEIGHTPOINTS instead of - -sPAPERSIZE. - -2002-09-05 Werner LEMBERG - - * doc/groff.texinfo, tmac/groff_man.man: Improve documentation of - default indentation. - -2002-09-04 Gaius Mulley - - * src/preproc/html/pre-html.cc (imageList::createPage): Use - -sPAPERSIZE for gs. - (generateImages): Clean up push-back buffer. - -2002-09-04 Ralph Corderoy - - * doc/groff.texinfo: Minor fixes. - -2002-08-21 Gaius Mulley - - * src/preproc/html/pre-html.cc (DEFAULT_LINE_LENGTH): New macro. - (MAX_WIDTH, A4_LENGTH, A4_OFFSET, LETTER_OFFSET): Removed. - (gsPaper): Removed. - (determine_vertical_offset): Use LETTER_LENGTH. - (createPage): Moved to ... - (imageList::createPage): This. - Call gs with -dDEVICEWIDTHPOINTS to avoid cropping. - (imageList::getMaxX): New function. - (createImage): Moved to ... - (imageList::createImage): This. - (imageList::createImages): New function. - (generateImages): Read `maxx' directly. - Updated. - (scanArguments): Don't specify `gsPaper' for `-o'. - (makeTempFiles): Call `xtmpfile' with the last argument set to - `TRUE'. - -2002-08-24 Werner LEMBERG - - * src/include/nonposix.h (mkdir, WAIT, creat) [_MSC_VER]: Define. - (WAIT, _WAIT_CHILD) [!_MSC_VER]: Define. - * src/preproc/html/pre-html.cc (waitForChild): Use WAIT. - * src/preproc/html/pushback.cc: Include nonposix.h. - * src/roff/groff/pipeline.c: Define strcasecmp and strncasecmp - conditionally. - -2002-08-23 Werner LEMBERG - - Use $(OBJEXT) for the object file extension. - - * Makefile.comm (.SUFFIXES): Add .obj. - (.cc.obj, .c.obj): New implicit rules. - * Makefile.in (OBJEXT): New variable, initialized from autoconf. - (MDEFINES): Add EXEEXT and OBJEXT. - * */Makefile.sub: s/.o/.$(OBJEXT)/. - -2002-08-22 Werner LEMBERG - - * INSTALL: Mention texinfo 4.2 as a prerequisite. - -2002-08-21 Gaius Mulley - - * src/devices/grohtml/post-html.cc (colType): Make enum global to - the file. - (html_printer::update_min_max, html_printer::add_table_end): New - methods. - (html_printer::lookahead_for_tables): Use them. - Reset page offset correctly. - (html_printer::~html_printer): Add creation of creator comment up. - -2002-08-20 Werner LEMBERG - - * tmac/an-old.tmac (T&): New dummy macro to avoid warning. - * man/groff_tmac.man: Fix typos. - * man/groff_font.man: Minor reordering. - * contrib/eqn2graph/eqn2graph.man (Tp): New macro. - -2002-08-18 Gaius Mulley - - Avoid endless loops while scanning for tables. - - * src/devices/grohtml/post-html.cc (list::insert): Set - ptr->right->left. - (html_printer::next_horiz_pos): Add `text_glob' argument; update - all callers. - Return immediately if that argument is NULL. - (html_printer::calc_nf): Don't test if `g' is NULL. - (html_printer::lookahead_for_tables): Use - `glyphs.move_right_get_data'. - Don't test if `g' is NULL. - -2002-08-18 Gaius Mulley - - A better fix, replacing fix 2002-08-15, for increasing SIZE. - - * src/devices/grohtml/post-html.cc (char_block): Make `buffer' - a pointer. - (char_block::char_block): Allocate `buffer'. - (char_buffer::add_string): Use it. - -2002-08-15 Werner LEMBERG - - * src/devices/grops/grops.man, src/devices/grolj4/grolj4.man, - src/devices/grodvi/grodvi.man: Document default line thickness. - -2002-08-15 Gaius Mulley - - * src/devices/grohtml/post-html.cc (char_block): Increase SIZE to - 8192. - -2002-08-14 Werner LEMBERG - - * doc/webpage.ms: Updated. - -2002-08-09 Werner LEMBERG - - * src/roff/troff/node.cc (node::add_char): Call `freeze_space' for - unbreakable space. - -2002-08-08 Aaron Campbell - - * src/preproc/pic/object.cc (object_spec::make_move): Fix typo - (&& -> &). - -2002-08-08 Werner LEMBERG - - * src/roff/troff/input.cc (read_rgb, read_cmy, read_cmyk): Call - tok.next(). - (read_gray): Ditto. - Don't push back a space but a newline onto the stack. - -2002-08-07 Gaius Mulley - - Add fonts `CI', `CB', and `CBI' to grohtml which have been omitted - inadvertently. - - * src/devices/grohtml/post-html.cc (html_printer::end_font, - html_printer::start_font): Handle them. - * src/devices/grohtml/html-text.cc (html_text::do_italic): Don't - reset bold and tt. - (html_text::do_bold): Don't reset italic and tt. - (html_text::do_tt, html_text::do_pre): Don't reset bold and italic. - * font/devhtml/DESC.proto: Add those fonts. - * font/devhtml/Makefile.sub (PROTOFONTS): Updated. - -2002-08-07 Werner LEMBERG - - * MORE.STUFF: Added gpresent. - - * tmac/trace.tmac: Show nesting level by a corresponding amount of - whitespace before printing the logging message. - -2002-07-31 Colin Watson - - * src/devices/grohtml/html-table.cc (html_table::finish_row): - Initialize `n' to zero. This fixes a segfault on ARM. - -2002-07-30 Werner LEMBERG - - * doc/grnexmpl.me: Remove calls to .st and .sc which are undefined. - -2002-07-29 Werner LEMBERG - - * src/preproc/pic/pic.y (print_arg, relative_path): Add missing - final semicolon. - -2002-07-28 Colin Watson - - * src/devices/grohtml/post-html (html_printer::troff_tag): Handle - `.ps'. - (html_printer::html_printer): Initialize `pointsize'. - -2002-07-26 Werner LEMBERG - - * doc/Makefile.sub (PROCESSEDEXAMPLEFILES): Remove gnu.eps and - gnu.png. - (CLEANNOTSRCDIRADD): Add gnu.eps and gnu.png. - (gnu.eps): Add -rle switch to pnmtops. - (distfiles): Add gnu.eps and gnu.png. - -2002-07-25 Petter Reinholdtsen - - * src/libs/libdriver/input.cc (Char): Add const to `operator=='. - Add `operator!='. - -2002-07-24 Werner LEMBERG - - * doc/Makefile.in, doc/Makefile.sub (groff_bin_path): Don't use - ' \+' but ' *' for sed. - (GROFF): Set GROFF_COMMAND_PREFIX to empty value. - -2002-07-23 Werner LEMBERG - - * doc/groff.texinfo: Document `papersize' keyword. - * NEWS, man/groff_font.man: Updated. - -2002-07-23 Colin Watson - - Extend papersize keyword to accept more than a single entry. The - first valid will be used. - - * src/libs/libgroff/font.cc (font::load_desc): Implement it. - (font::scan_papersize): Really skip final newline. - * src/preproc/html/pre-html.cc (get_papersize): Ditto. - -2002-07-23 Werner LEMBERG - - * configure.ac: Test for isatty. - * configure: Regenerated. - * src/include/posix.h: Check HAVE_ISATTY. - * src/roff/troff/input.cc [ISATTY_MISSING]: Removed. - * src/utils/lookbib/lookbib.cc: Include posix.h. - Don't declare isatty. - -2002-07-21 Werner LEMBERG - - * NEWS: Add `output' request. - - * REVISION: Increased to 1. - -Version 1.18.0 released -======================= - -2002-07-19 Gaius Mulley - - Allow internal glyph indices > 0xFF in grohtml for input characters. - - * src/devices/grohtml/post-html.cc (to_unicode): Use `unsigned int' - as parameter. - (html_printer::add_to_sbuf): Use `unsigned int' as first parameter. - Updated all callers. - (html_printer::sbuf_continuation, html_printer::overstrike): Ditto. - (html_printer): Updated. - -2002-07-19 Werner LEMBERG - - * font/devhtml/R.proto: Updated to HTML 4, adding many glyphs. - * font/devutf8/R.proto: Adding some missing glyphs. - * font/devutf8/NOTES: Updated. - - * tmac/dvi.tmac: Add more composite glyphs. - * tmac/html.tmac: Updated. - - * man/groff_char.man: Add `sum' and `product' entities. - - * NEWS: Updated. - -2002-07-18 Gaius Mulley - - Improved table, tab, and indenting support. - - * src/roff/troff/input.cc (file_iterator::suppress_newline_flag, - string_iterator::suppress_newline_flag): Removed. Updated all - function which have used it. - - * src/roff/troff/env.cc: Include `input.h'. - (environment::add_node): Accept 0 as parameter. - (environment::add_html_tag): Add `force' parameter. - Updated all callers. - (environment::add_html_tag_tabs): Ditto. - For the moment, support left-aligned tabs only. - (environment::make_html_tag): New function. - (fill, no_fill): Set .br html tag additionally. - (environment::newline): Emit `eol.ce' or `eol' tag for html. - (environment::add_html_tag_eol): Removed. - (tab_stops::distance_to_next_tab): Add variant for handling - nextpos'. - (environment::distance_to_next_tab): Ditto. - Updated all callers. - (environment::handle_tab): Handle tabs for html. - - * src/roff/troff/env.h: Updated. - - * src/roff/troff/div.cc: Updated all callers of - `environment::add_html_tag'. - - * src/devices/grohtml/html-table.cc, - src/devices/grohtml/html-table.h: New files. - - * src/devices/grohtml/html-text.cc (html_text): New members - `blank_para' and `start_space'. - (html_text::issue_tag): Don't emit TABLE_TAG. - Handle indentation for PRE_TAG and P_TAG. - (html_text::end_tag): Updated. - (html_text::table_is_void, html_text::issue_table_begin, - html_text::issue_table_end): Removed. - (html_text::do_push): Simplified. - [DEBUGGING]: Small fix. - (html_text::push_para): Add new parameter for indentation; updated - all callers. - Handle PRE_TAG. - (html_text::do_indent, html_text::do_table, html_text::done_table, - html_text::is_in_table): Removed. - (html_text::do_pre): Handle P_TAG also. - (html_text::shutdown): Handle p->indent. - (html_text::check_emit_text): Simplified. - (html_text::do_emittext): Reset `blank_para'. - (html_text::do_para): Add new parameter for indentation; updated - all callers. - (html_text::remove_indent): New function. - (html_text::do_space): Handle verbatim text properly. - (html_text::ever_emitted_text, html_text::starts_with_space, - html_text::remove_para_align): New functions. - (html_text::dump_stack_element, html_text::dump_stack): Updated. - - * src/devices/grohtml/html_text.h (HTML_TAG): Remove TABLE_TAG. - Updated. - - * src/devices/grohtml/post-html.cc: Include html-table.h. - (INDENTATION): Removed. - (text_glob): Added many `is_' functions. - Added table description `tab'. - Added `get_arg',`get_tab_args', `remember_table', and `get_table' - member functions. - (list): Add `insert' and `move_to' member functions. - (page): Add `insert_tag' member function. - (page::dump_page) [DEBUG_TABLES]: Improved. - (html_printer): Add `table' and `max_linelength' elements. - Add many `do_', `insert_', `next_horiz_pos', - `lookahead_for_tables', `shutdown_table', `calc_nf', `calc_po_in', - `remove_tabs', `remove_courier_tabs'. - (html_printer::emit_raw): Handle indentation. - (html_printer::do_center, html_printer::write_header): Updated. - (html_printer::is_courier_until_eol): Check for tag. - (html_printer::do_linelength): Handle max_linelength. - (html_printer::do_page_offset, html_printer::do_indentation): Handle - fill_on. - (html_printer::do_tempindent): Updated. - (html_printer::do_indentedparagraph): Removed. - (html_printer::do_indent): Simplified. - (html_printer::do_eol): Use `ever_emitted_text'. - (html_printer::do_flush, html_printer::do_links): Don't call - done_table. - (html_printer::do_break): Handle end_tempindent. - (html_printer::troff_tag): Get argument. - Don't handle `.ip'. - Handle `.tab-ts', `.tab-te', `.col', `tab', and `tab0' tags. - (html_printer::flush_page): Call `lookahead_for_tables'. - Don't call `done_table'. - (html_printer::add_to_sbuf): Always call do_indent. - - * src/devices/grohtml/Makefile.sub: Updated. - - * tmac/an-old.tmac (TP): Don't handle html device specially. - (an-do-tag-html): New function which will be used instead of - `an-do-tag' if html device is used. - - * tmac/html.tmac: Call .po to pass default page offset to grohtml. - - * tmac/s.tmac (@IP): Don't handle html device specially. - (@IP-html): New function which will be used instead of `@IP' if - html device is used. - - * tmac/www.tmac (HTML-NS, HTML-TAG-NS): New auxiliary macros -- this - is a hack which will eventually vanish again. - (PIMG): Handle `-C' option correctly if not html. - (HR): Use HTML-NS. - -2002-07-17 Werner LEMBERG - - * src/utils/afmtodit/afmtodit.pl: Don't use `-P-' for invoking perl. - -2002-07-14 Eric S. Raymond - - * contrib/pic2graph/pic2graph.*: Use convert(1). - * contrib/eqn2graph/eqn2graph.*: Minor fixes. - -2002-07-14 Bernd Warken - - * tmac/groff_trace.man: New file. - * tmac/Makefile.sub: Updated. - * NEWS: Updated. - -2002-07-13 Werner LEMBERG - - * src/roff/groff/groff.man: Add some cross references. - -2002-07-12 Werner LEMBERG - - * src/roff/troff/input.cc (substring_request): Add warnings for - string indices out of range. - -2002-07-11 Werner LEMBERG - - * font/devdvi/generate/ec.map: Fix typo (`(l' -> `/l'). - * font/devdvi/*EC: Regenerated. - -2002-07-10 Bernd Warken - - * man/groff_char.man: Updated and extended. - -2002-07-10 Werner LEMBERG - - * src/roff/troff/input.cc (length_macro): Renamed to... - (length_request): This. - Move call of `tok.next()' to the very end, otherwise the register - value hasn't been updated yet. - (init_input_requests): Updated. - -2002-07-09 Werner LEMBERG - - * src/roff/troff/input.cc (substring_macro): Renamed to... - (substring_request): This. - (init_input_requests): Updated. - * src/roff/troff/request.h: Updated. - -2002-07-08 Robert D. Goulding - - * src/roff/grog/grog.sh: Fix typo. - -2002-07-08 Werner LEMBERG - - * win32-diffs: Updated. - - Handle `papersize' keyword properly in DESC. - - * src/libs/libgroff/font.cc (font::scan_papersize): Fix argument - type. - Updated all callers. - * src/libs/libgroff/paper.cc: Add four more paper formats used by - grolj4. - * src/include/paper.h: Updated. - - * src/devices/grolbp/lbp.cc: Remove unnecessary semicolons. - Other minor C syntax fixes. - (papersize, paperlength, paperwidth): Renamed to `user_*'. - (lbp_printer): Add `papersize', `paperlength', and `paperwidth' - members. - (lbp_printer::lbp_printer): Pass three arguments. - Set paper dimensions properly. - (make_printer, main): Updated. - (handle_unknown_desc_command): Fix error messages. - (main): Handle papersize keyword in DESC properly. - - * src/devices/grolj4/lj4.cc (paper_size): Renamed to - `user_paper_size'. - (lbp_printer::lbp_printer): Pass an argument. - Set paper_size properly. - (handle_unknown_desc_command): Removed. - (make_printer, main): Updated. - * src/devices/grolj4/grolj4.man: Minor documentation fix. - - * man/groff_font.man, NEWS: Updated. - -2002-07-07 Werner LEMBERG - - Integrated eqn2graph, contributed by Eric S. Raymond. - - * contrib/eqn2graph/{Makefile.sub, eqn2graph.sh, eqn2graph.man}: New - files. - * Makefile.in, NEWS: Updated. - -2002-06-04 Werner LEMBERG - - Changing the substring request to make it fit better with other - string manipulation functions in other programming languages: - Index 0 is now the first character in the string, and index -1 - indicates the last character. Since this request didn't work - properly anyway in the last release, it doesn't harm too much to - change the syntax. - - * src/roff/troff/input.cc (substring_macro): Use loops to get - the real string length (ignoring COMPATIBLE_SAVE and - COMPATIBLE_RESTORE) and offsets. - Implement change described above. - - * man/groff_char.man, tmac/doc-common (doc-header), tmac/doc.tmac - (doc-do-Bd-args, doc-do-Bl-args): Changed accordingly. - - * NEWS, doc/groff.texinfo, man/groff_diff.man: Updated. - -2002-06-03 Werner LEMBERG - - Make .chop work with .de1 and friends. COMPATIBLE_SAVE and - COMPATIBLE_RESTORE are completely ignored. - - * src/roff/troff/input.cc (char_list::set, char_list::get): New - functions. - (macro): `length' field renamed to `len'. - Added new field `empty_macro' (1 if macro is empty), to be used - instead of checking `len'. - Updated all callers. - (macro::empty): Updated. - (macro::length, macro::set, macro::get): New functions. - (macro::append): Ignore COMPATIBLE_SAVE and COMPATIBLE_RESTORE. - Set `empty_macro'. - (chop_macro): Check and remove trailing COMPATIBLE_SAVE/ - COMPATIBLE_RESTORE pairs. - (asciify): Ignore COMPATIBLE_SAVE and COMPATIBLE_RESTORE. - * src/roff/troff/request.h: Updated. - - * doc/groff.texinfo: Document .chop's behaviour better. - -2002-06-02 Werner LEMBERG - - * doc/pic.ms: Fix documentation for the addition of positions. - - * tmac/doc.tmac, tmac/an-old.tmac: Need groff version 1.18. - -2002-06-29 Werner LEMBERG - - Implementation of string arguments of the form \*[foo arg1 arg2 ...] - - * src/roff/troff/input.cc (have_string_arg): New global variable. - (read_mode): New enumeration. - (read_escape_name): Use it. Update all calls. - (read_long_escape_name): Use it. Update all calls. - Set have_string_arg if appropriate. - (get_char_for_escape_name): Add parameter for handling space - character. - (interpolate_string_with_args, decode_string_args): New functions. - (get_copy, token::next): Call it if necessary. - (interpolate_string): Fix error message. - - * NEWS, doc/groff.texinfo, man/groff.man, man/groff_diff.man: - Document it. - -2002-06-24 Bernd Warken - - * man/groff_tmac.man: Updated and extended. - -2002-06-24 Werner LEMBERG - - * doc/pic.ms, src/preproc/pic/pic.man: Fix description of `:='. - -2002-06-23 Werner LEMBERG - - * doc/pic.ms: Improve documentation of composite block objects. - -2002-06-22 Werner LEMBERG - - * src/roff/troff/input.cc (init_registers): Add three registers - `seconds', `minutes', and `hours' to hold the current time. - - * NEWS, doc/groff.texinfo, man/groff.man, man/groff_diff.man: - Updated. - -2002-06-20 Werner LEMBERG - - Make \X accept both `\ ' and `\~', converting them to single space - characters. - - * src/roff/troff/token.h (token): Add TOKEN_UNSTRETCHABLE_SPACE. - (token::unstretchable_space): New inline function. - * src/roff/troff/input.cc (token::next, token::delimiter, - token::description, token::add_to_node_list, token::process): Handle - TOKEN_UNSTRETCHABLE_NODE. - (encode_char): Handle tok.stretchable_space and - tok.unstretchable_space. - - * NEWS, doc/groff.texinfo: Document it.. - -2002-06-19 Werner LEMBERG - - * src/devices/grops/ps.cc (ps_printer::special): Fix error message. - - * src/devices/grotty/tty.cc (tty_printer::special): Add `sgr' - keyword to enable/disable SGR output. - (tty_printer::change_fill_color): New function. - * NEWS, src/devices/grotty/grotty.man: Document `sgr' special. - - * src/roff/troff/input.cc (output_request): Add missing `tok.next()' - call. - -2002-06-18 Werner LEMBERG - - Add a `color' request and a `.color' register to control usage of - colours. - - * src/roff/troff/input.cc (disable_color_flag): Replaced with... - (color_flag): This (which is the inverse). - (activate_color): New function. - (main, init_input_requests): Updated. - * src/roff/troff/troff.h, src/roff/troff/node.cc - (troff_output_file::fill_color, troff_output_file::glyph_color): - Updated. - - * NEWS, doc/groff.texinfo, man/groff_diff.man, man/groff.man: - Document the changes. - -2002-06-17 Colin Watson - - Circumvent bug in autoconf 2.53 regarding top_builddir. - - * aclocal.m4 (GROFF_BUILDDIR): s/top_builddir/groff_top_builddir/. - * Makefile.in, doc/Makefile.in: - s/@top_builddir@/@groff_top_builddir@/. - * configure: Regenerated (with autoconf 2.53). - -2002-06-17 Werner LEMBERG - - * src/libs/libgroff/font.cc (font::load_desc): Fix computation of - `paperwidth' and `paperlength' for the `papersize' keyword. - -2002-06-16 P. Alejandro Lopez-Valencia - - * src/devices/grops/grops.man: Add info about Type 42 fonts. - -2002-06-15 Gaius Mulley - - * src/devices/grohtml/post-html.cc (html_printer::emit_raw, - html_printer::do_linelength, html_printer::do_pageoffset, - html_printer::do_indentation, html_printer::do_tempindent, - html_printer::do_break, html_printer::begin_page): Clear indented - text. - * tmac/html.tmac: Disable hyphenation. - -2002-06-15 Werner LEMBERG - - Don't produce HTML files if utility programs are missing. - - * Makefile.in (make_html, make_install_html): New variables. - (MDEFINES): Updated. - - * aclocal.m4 (GROFF_HTML_PROGRAMS): New function to test for HTML - utility programs. - * configure.ac: Use it. - * configure: Regenerated. - - * doc/Makefile.sub (PROCESSEDEXAMPLEFILES): Move webpage.html to... - (HTMLEXAMPLESFILES): This new variable. - (EXAMPLESIMAGEFILES): Renamed to... - (HTMLEXAMPLEIMAGEFILES): This. - (CLEANADD): Add HTMLEXAMPLEFILES. - (all): Use `make_html'. - (html): New target. - (install_data): Use `make_install_html'. - Move html stuff to... - (install_html): This new target. - (uninstall_sub): Updated. - -2002-06-14 Bernd Warken - - * src/roff/grog/Makefile.sub (grog): Renamed to... - (grog.old): This. - (grog): New rule to always install grog.sh as grog. - -2002-06-08 Bernd Warken - - * src/roff/grog/grog.pl: Fix typo. - -2002-06-07 Werner LEMBERG - - * doc/groff.texinfo: Add more info on .tr arguments. - -2002-06-05 Werner LEMBERG - - * NEWS, src/roff/grog/grog.man, doc/groff.texinfo: Updated. - - * aclocal.m4 (GROFF_MKSTEMP): Include unistd.h. - * configure: Regenerated. - -2002-06-05 Ralph Corderoy - - * src/roff/troff/symbol.cc (table_sizes): Add more values. - - * src/roff/grog/grog.pl, src/roff/grog/grog.sh: Recognize mom. - -2002-06-04 Werner LEMBERG - - * aclocal.m4 (GROFF_PAGE): Don't use `prefix' directly since it - is not initialized at the time we need it in case `--prefix' hasn't - been set. Check for `ac_default_prefix' also. - Test for `papersize' keyword also and generalize allowed whitespace. - * configure: Regenerated. - - * font/devps/Makefile.sub (DESC): Use `papersize' instead of - `paperlength'. - - * src/libs/libgroff/Makefile.sub (version, revision): Replaced - with... - (src_version, src_revision): New variables to avoid overwriting - from parent make process. - (version.cc): Updated. - - * src/preproc/html/pre-html.cc: Include paper.h and font.h. - (linebuf, linebufsize): New global variables. - (sys_fatal): Use `fatal' to abort properly. - (get_line): New function. - (get_resolution): Use it. - Improve error messages. - (get_papersize): Check `papersize' also. - Use `get_line'. - Improve error messages. - -2002-06-03 Werner LEMBERG - - * Makefile.comm (CLEANNOTSRCDIRADD): New target for files which - should be removed only if builddir is not srcdir. - (mostlyclean): Handle `CLEANNOTSRCDIRADD'. - (clean): Depend on `mostlyclean'. - (distclean): Depend on `clean'. - (realclean, extraclean): Depend on `distclean'. - (.y.cc, .y.o): Simplified. The output files are no longer written - to srcdir but to builddir. - * Makefile.in (MDEFINES): Add `version' and `revision'. - (uninstall_dirs): Fix order of directories. - * doc/Makefile.sub (version, revision): Removed. - (CLEANADD): Removed grnexmpl.g, groff, groff-*. - Added `HTMLDOCFILES'. - (CLEANNOTSRCDIRADD): New target for grnexmpl.h, groff, groff-*. - * src/preproc/eqn/Makefile.sub, src/preproc/pic/Makefile.sub, - src/preproc/refer/Makefile.sub (YTABC, YTABH): Don't use `srcdir' - as prefix. - - * doc/texinfo.tex (\authortt): New macro. - (\shortcontt): Define. - (\titlepage): Set \tt to \authortt while defining \authorfont. - (\appendixbox): New macro. - (\chapmacro, \appendixentry): Use \appendixbox to get even - indentation for letters. - (\summarycontents): Set \tt. - (\internalpagesize): Add two arguments for real paper width and - height as needed by pdfTeX. - (\letterpaper, \smallbook, \afourpaper, \afivepaper, \afourlatex): - Updated. - (\tempdima, \tempdimb): New temporary dimensions. - (\pagesizesyyy): Updated. - -2002-06-02 Werner LEMBERG - - Adding a new keyword `papersize' to the DESC file format (similar - but not completely identical to grolbp's extension). grops now has - a -p command line option to override `papersize'. Finally, grolbp - has been adapted to the new syntax. - - * src/libs/libgroff/paper.cc, src/include/paper.h: New files. It - defines and initializes the `papersizes[]' array with NUM_PAPERSIZES - elements. - * src/libs/libgroff/Makefile.sub (OBJS): Add `paper.o'. - (CCSRCS): Add `paper.cc'. - - * src/include/font.h (font): Add `papersize' element. - * src/libs/libgroff/font.cc (font::unit_scale): New helper function. - (font::scan_papersize): New function. - (font::load_desc): Use it for handling `papersize' keyword. - * src/libs/libgroff/fontfile.cc: Initialize `font::papersize'. - - * src/devices/grops/ps.cc: Include paper.h. - (user_paper_length): New global variable. - (ps_printer): Use paper length as initializer. - (make_printer): Updated. - (main): Handle new `-p' option. - * src/devices/grops/grops.man: Updated. - - * src/devices/grolbp/lbp.cc: Include paper.h. - s/papersizes/lbp_papersizes/. - (set_papersize): Use new `papersizes' array. - (handle_unknown_desc_command): Don't handle `papersize'. - (main): Use `font::scan_papersize' for handling `-p' option. - * src/devices/grolbp/grolbp.man: Updated. - - * man/groff_font.man: Document `papersize'. - * NEWS: Updated. - -2002-05-30 Werner LEMBERG - - * src/devices/grops/TODO: Updated. - * src/devices/grops/grops.man: More info on paper formats. - * man/groff_font.man: Document `paperheight' and `paperwidth'. - -2002-05-29 Werner LEMBERG - - * doc/Makefile.sub (CLEANADD): Add grnexmpl.g, groff, and groff-* - to list only if srcdir != currdir. - (distfiles): New target. - - * Makefile.in (EXTRADIRS): Add font/devlj4/generate. - (NOMAKEDIRS): New variable. - (DISTDIRS): Use it. - -2002-05-26 Werner LEMBERG - - Add .output request, similar to \! at top-level. - - * src/roff/troff/input.cc (transparent): Remove unused declaration. - (output_request): New function. - (init_input_requests): Add it. - Sorted. - * NEWS, doc/groff.texinfo, man/groff_diff.man, man/groff.man: - Document it. - - * Makefile.in (MDEFINES): Add INSTALL_INFO. - (prepare_examples): Fix typo. - * doc/groff.texinfo (@direntry): Fix it. - -2002-05-25 Werner LEMBERG - - Including the doc subdir into groff's Makefile system. - - * aclocal.m4 (GROFF_INSTALL_INFO): New function. - * configure.ac: Use it. - Generate `doc/Makefile'. - * configure: Regenerated. - - * Makefile.in (infodir, INSTALL_INFO): New variables. - (MDEFINES, uninstall_dirs): Updated. - (OTHERDIRS): Add `doc'. - * Makefile.comm (CLEANDIRADD): New variable. - (mostlyclean): Use it. - - * doc/Makefile.sub, doc/Makefile.in: New files. - * doc/Makefile: Removed. - - * NEWS, INSTALL: Updated. - -2002-05-24 Werner LEMBERG - - * doc/homepage.ms: Renamed to ... - * doc/webpage.ms: This. - Use `.NHR'. - -2002-05-23 Werner LEMBERG - - Integrating the `mom' macro package, contributed by Peter Schaffter - . - - * contrib/mom/*: New subdirectory tree. - * Makefile.in (docdir, exampledir, htmldocdir): New variables to - be used for documentation files. - (MDEFINES, uninstall_dirs): Use them. - (OTHERDIRS): Add contrib/mom. - * Makefile.comm (.man.n): Add @DOCDIR@, @EXAMPLEDIR@, and - @HTMLDOCDIR@. - * MANIFEST, NEWS: Updated. - -2002-05-22 Gaius Mulley - - Change syntax of \O: \O[0] suppresses output, \O[1] enables output - if at outer level; at start-up we are at outer level. - - * src/roff/troff/input.cc (do_suppress): Implement it. - Simplify \O[3]. - - Add option -p to show progress information. - pre-grohtml will now render only one page at a time, reducing the - size of needed disk resources enormously. - - * src/preproc/html/pre-html.cc (imagePageStem): Replaced with... - (imagePageName): New global variable. - (psPageName, show_progress, currentPageNo): New global variables. - (html_system): Close saved stderr and stdout handles. - (write_end_image): Accept a parameter to control \O escape. - (write_start_image): Adapted to new \O meaning. - (char_buffer::write_upto_newline): Updated. - (createAllPages): Replaced with... - (createPage): This new function to create a single page for images. - It uses `psselect' from the psutils package. - (removeAllPages): Removed. - (createImage): Updated. - Handle progress display. - (char_buffer::do_html, char_buffer::do_image) [DEBUGGING]: Removed. - (scanArguments): Add option -p. - (makeTempFiles): Updated to create temp files for psPageName and - imagePageName. - (removeTempFiles): Removed. - (main): Updated. - - * src/devices/grohtml/post-html.cc (header_desc::write_headings, - html_printer::write_header): Append `\0' to `buffer'. - (html_printer::do_eol): Depend on `current_paragraph->emitted_text'. - (main): Handle -p. - * src/devices/grohtml/html-text.cc (html_text::dump_stack_element): - Handle `text_emitted'. - (html_text::table_is_void): Slightly rewritten. - (stop): New external symbol. - (html_text::do_push) [DEBUGGING]: Use it and simplify. - (html_text::shutdown): Call `dump_stack'. - (html_text::do_space): Rewritten. - * src/devices/grohtml/grohtml.man: Document -p and the need of - `psselect'. - - * tmac/www.tmac (DC, HTML-DO-IMAGE, HTML-IMAGE-END): Updated to - new \O syntax. - Call \O[0] if `ps4html' is active. - * tmac/s.tmac (@EQ, @EN): Handle html better. - (@TS, TE): Ditto. - * tmac/html.tmac: Don't use black for background colour. - - * src/roff/troff/node.cc: Include `div.h'. - (troff_output_file::really_print_line): Don't use `is_on'. - (troff_output_file::word_marker, troff_output_file::flush_tbuf - troff_output_file::check_charinfo, - troff_output_file::put_char_width, troff_output_file::put_char, - troff_output_file::determine_line_limits, troff_output_file::draw, - real_output_file::begin_page, glyph_color_node::tprintf, - fill_color_node::tprint, hline_node::tprint, vline_node::tprint): - Use `is_on'. - (troff_output_file::really_on): Call `do_motion'. - (suppress_node::tprint): Use `get_page_number' instead of `%' - register. - Call `reset_output_registers' conditionally on `is_on'. - - * doc/groff.texinfo: Document new syntax of \O. - * NEWS, man/groff_diff.man: Updated. - -2002-05-22 Werner LEMBERG - - * MORE.STUFF: Add info about David Frey's deroff implementation. - Mention troff.org. - -2002-05-16 Werner LEMBERG - - Pic's `with' attribute now accepts positions. - - * src/preproc/pic/pic.y: Make `.', BOX, CIRCLE, ELLIPSE, ARC, LINE, - ARROW, SPLINE, and `[' left-associative tokens to fix shift/reduce - conflicts. - (object_spec): Add rule for `WITH' and `position'. - (relative_path): Give `corner' the precedence of `CHOP'. - * src/preproc/pic/object.h (path): New members `pos' and - `is_position'. - * src/preproc/pic/object.cc: Updated initializers of `path'. - (path::follow): Handle `is_position'. - - * doc/pic.ms: Completely updated grammar description. - Many typographical improvements. - -2002-05-15 Werner LEMBERG - - * src/roff/troff/env.cc(hyphen_trie::hpf_getc): Accept ^^x (char - code of x in range 0-127) also. - * doc/groff.texinfo, man/groff_diff.man: Updated. - - Added keywords `north', `south', `east', and `west' for corners - in pic. - - * src/preproc/pic/lex.cc (lookup_keyword): Add NORTH, SOUTH, EAST, - and WEST. - (yylex): Handle them. - * src/preproc/pic/pic.y: Add tokens NORTH, SOUTH, EAST, and WEST. - (corner): Handle them. - -2002-05-14 Werner LEMBERG - - * src/devices/grops/grops.man: Clarify handling of `download' file. - -2002-05-11 Werner LEMBERG - - Adding `warnscale' and `spreadwarn' requests, based on a patch from - Jeffrey Friedl . - - * src/roff/troff/input.cc (spread_limit, warn_scale, - warn_scaling_indicator): New global variables. - (warnscale_request, spreadwarn_requests): New functions. - (main): Initialize `warn_scale' and `warn_scaling_indicator'. - (init_input_requests): Updated. - (error_type): Add `OUTPUT_WARNING'. - (do_error): Handle it. - (output_warning): New warning function which shows output location. - * src/roff/troff/env.h (spread_limit): New external variable. - * src/roff/troff/env.cc (environment::choose_breakpoint): Use - `output_warning'. - (distribute_space): Emit warning if added space is larger than - `spread_limit'. - (environment::possibly_break_line): Emit warning if a line can't - be adjusted on both sides. - - * doc/groff.texinfo, man/groff_diff.man, man/groff.man: Document it. - -2002-05-08 Werner LEMBERG - - * src/roff/troff/node.cc (special_node::special_node): Use - env_definite_font(curenv) instead of curenv->get_font(). Otherwise - \X''\% crashes, for example. - - * doc/groff.texinfo: Document \! and \? used at top-level. - -2002-05-06 Werner LEMBERG - - * src/preproc/pic/pic.man: Fix some keyword syntax. - Other minor typographical fixes. - - * src/roff/groff/groff.man: Fix typos. - -2002-05-04 Werner LEMBERG - - * src/roff/groff/groff.man ([ShortOpt]): Renamed to... - (ShortOpt[]): This to avoid problems with refer. - - * doc/pic.ms: Fix typo. - Fix pic grammar description. - - * tmac/an-old.tmac (ne): Use de1, not de. - -2002-05-03 Werner LEMBERG - - * doc/groff.texinfo: Finished separation of glyphs and characters. - Don't use the string `Appendix' for appendix headers (both in - the text and the table of contents). - * man/groff_tmac.man, src/roff/troff/troff.man: Fix order of tmac - directories. - - Use registers LL and LT (similar to -ms) for controlling the - length of title and line, respectively, in the -man and -mdoc - macro packages. - - * tmac/doc-ditroff (doc-setup-page-layout), tmac/doc-nroff - (doc-setup-page-layout): Use \n[LL] and \n[LT]. - * tmac/an-old.tmac: Set \n[LL] and \n[LT] if not defined. - (TH): Use \n[LL]. - (an-header, an-p-footer): Use \n[LT]. - * NEWS, tmac/groff_man.man, tmac/groff_mdoc.man, - doc/groff.texinfo: Document it. - -2002-05-02 Werner LEMBERG - - * doc/fdl.texi: New file. - * doc/groff.texinfo: Include it. - Define and use @copying. - Starting with separating glyph, symbol, and character. - -2002-04-27 Werner LEMBERG - - * Makefile.in (EXEEXT): Set it. - * src/*/Makefile.sub (PROG): Add $(EXEEXT) for all non-script - programs. - - * src/include/nonposix.h: Define GS_NAME. - * src/preproc/html/pre-html.cc (createAllPages): Use GS_NAME. - - Some preliminary changes for EMX support under OS/2. - - * src/preproc/pic/main.cc (main), src/roff/groff/pipeline.c: Add - __EMX__ similar to __MSDOS__. - * src/utils/indxbib/indxbib.cc (main) [__EMX__]: Use `unlink'. - -2002-04-25 Werner LEMBERG - - * doc/groff.texinfo: Integrated groff_out.man. - Some macro fixes. - -2002-04-23 Werner LEMBERG - - * man/groff_out.man: Minor fixes. - -2002-04-23 Werner LEMBERG - - * doc/groff.texinfo: Moving @cindex entries after @Def* to get - correct page references. - Fixed many index entries. - -2002-04-23 Bernd Warken - - * man/roff.man: Enlarged. - -2002-04-22 Werner LEMBERG - - * doc/groff.texinfo: More examples, other fixes. - -2002-04-20 Werner LEMBERG - - * src/roff/troff/input.cc (pipe_output): Multiple calls to `pi' - will now form a chain, e.g. - - .pi foo - .pi bar - - is now the same as - - .pi foo | bar - - This is for compatibility with plan 9's troff. - - * tmac/tty.tmac: Set default tab values to 0.8i to be compatible - with UNIX troff. - * NEWS: Updated. - - * doc/groff.texinfo: Add documentation of remaining requests and - registers. - -2002-04-19 Werner LEMBERG - - * doc/groff.texinfo: Add documentation of remaining escapes. - - * font/devdvi/generate/tc.map: Remove entry for `sr'. - * font/devdvi/*TC: Regenerated. - -2002-04-18 Werner LEMBERG - - * src/roff/troff/input.cc (token::next): Make \H behave consistently - if not in compatibility mode, i.e., increment relative to the - previous height. - * doc/groff.texinfo: Updated accordingly. - -2002-04-17 Werner LEMBERG - - * doc/groff.texinfo: Document \\, \e, \E, \., and \c. - -2002-04-16 Bernd Warken - - * src/roff/groff/groff.man: Improve documentation of -P option. - Other minor fixes. - -2002-04-15 Werner LEMBERG - - Add new escape \F to switch font family. - - * src/roff/troff/input.cc (token::next): Handle \F. - * src/roff/troff/env.cc (environment::set_family): Handle - `interrupted' flag. - * NEWS, doc/groff.texinfo, man/groff_diff.man, man/groff.man: - Document it. - -2002-04-14 Werner LEMBERG - - * tmac/doc.tmac (doc-tag-list): Use \Z to avoid stretching of - spaces in tags. - -2002-04-13 Werner LEMBERG - - Implement \f[] as an alternative to \fP. Change \mP and \MP to - \m[] and \M[], respectively. - - * src/roff/troff/symbol.cc (EMPTY_SYMBOL): New global variable. - (symbol::symbol): Handle NULL string and empty string differently. - * src/roff/troff/symbol.h (symbol::is_empty): New inline function. - * src/roff/troff/input.cc (read_escape_name, read_long_escape_name): - Add optional parameter. - Updated calling functions. - (get_copy, do_glyph_color, do_fill_color, token::next): Use - `symbol::is_empty'. - * src/roff/troff/env.cc (environment::set_font): Ditto. - - * src/preproc/pic/troff.cc (troff_output::set_fill, - troff_output::reset_color: Updated. - - * tmac/www.tmac: Updated. - - * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo, - doc/homepage.ms, src/devices/grotty/grotty.man, tmac/groff_www.man: - Updated. - - * tmac/Xps.tmac: Remove some redundant code. - - * tmac/doc-common, tmac/doc-ditroff, tmac/doc-nroff, tmac/doc.tmac, - tmac/dvi.tmac, man/roff.man, man/groff_out.man, man/groff.man, - man/groff_diff.man, src/roff/groff/groff.man: Replace \f[P] with - \f[]. - -2002-04-13 Bernd Warken - - * src/include/printer.h, src/libs/libdriver/printer.cc - (printer::change_fill_color): New member function. - * src/libs/libdriver/input.cc (parse_D_command): Use it. - -2002-04-12 Werner LEMBERG - - * doc/groff.texinfo: Completed pass on gtroff reference. - -2002-04-11 Werner LEMBERG - - * doc/groff.texinfo: More fixes. - -2002-04-11 Bernd Warken - - * src/include/color.h: Decorate with `const'. - Use `size_t'. - Include `stddef.h'. - * src/libs/libgroff.color.cc: Decorate with `const'. - Use `size_t'. - (color::color): Initialize members. - * src/libs/libdriver/input.cc (parse_D_command): Handle `f' - command according to the documentation. - - * man/groff_out.man: Updated. - Minor fixes. - -2002-04-11 Gaius Mulley - - * src/preproc/html/pre-html.cc (write_start_image): Remove - redundant output. - * tmac/www.tmac (DC, HTML-DO-IMAGE): Ditto. - - * src/devices/grohtml/post-html.cc (page::add_and_encode): Using - \C'hy' caused an assertion failure. - - * src/roff/troff/env.cc (environment::environment): Initialize - `emitted_node'. - (environment::copy): Handle `ignore_next_eol' and `emitted_node'. - -2002-04-10 Werner LEMBERG - - * man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo: - Document pvs request and .pvs register. - -2002-04-09 Werner LEMBERG - - * doc/groff.texinfo: Improve and fix documentation of diversions - and environments. - -2002-04-08 Werner LEMBERG - - * doc/groff.texinfo: Fix documentation of drawing functions. - Other minor fixes. - -2002-04-07 Werner LEMBERG - - * doc/groff.texinfo: Better documentation of double quotes as - arguments. - Other minor fixes. - -2002-04-06 Werner LEMBERG - - * man/groff_font.man: Document names of special characters better. - * doc/groff.texinfo: Minor improvements. - - * tmac/lbp.tmac: Load latin1.tmac. - * tmac/X.tmac, tmac/Xps.tmac: Load latin1.tmac or cp1047.tmac. - - * font/devX*/*: Regenerated (all chars > 0x80 removed). - -2002-04-05 Werner LEMBERG - - * tmac/tty.tmac: Don't use shc request. - * tmac/latin1.tmac, tmac/cp1047.tmac: Translate soft hyphen to `\%'. - * NEWS: Updated. - - * man/groff_diff.man: Minor fixes. - - * font/devlbp/*: Remove all `charXXX' entities. - - * src/libs/libgroff/font.cc (font::~font): Deallocate - `special_device_coding'. - (font::load): Use `new' for allocating `special_device_coding'. - * src/libs/libgroff/nametoindex.cc (character_indexer::lookup_char): - Removed unused member. - -2002-04-05 Werner LEMBERG - - * src/drivers/grops/psrm.cc (skip_possible_newline): New function. - (resource_manager::do_begin_binary, - resource_manager::do_begin_data): Use it. - - * doc/texinfo.tex: Updated to version 4.2. - - * src/roff/troff/token.h: Add TOKEN_ZERO_WIDTH_BREAK for `\:'. - (token::zero_width_break): New inline function. - * src/roff/troff/input.cc (token::next): Use it. - (token::description): Updated. - (encode_char): Ignore `\%', `\&', `\)', and `\:'. - (token::add_to_node_list, token::process): Use it. - * NEWS, doc/groff.texinfo: Updated. - - * src/preproc/eqn/over.cc (over_box::output): Fix typo. - * tmac/tty.tmac: Add missing backslash. - -2002-04-04 Tadziu Hoffmann - - * src/preproc/eqn/box.cc (set_script_size, box::top_level): Use - `.ps' register instead of `.s' to handle fractional point sizes. - * src/preproc/eqn/limit.cc (limit_box::compute_metrics, - limit_box::output): Ditto. - * src/preproc/eqn/other.cc (size_box::compute_metrics, - size_box::output): Ditto. - * src/preproc/eqn/over.cc (over_box::compute_metrics, - over_box::output): Ditto. - * src/preproc/eqn/script.cc (script_box::compute_metrics, - script_box::output): Ditto. - * src/preproc/eqn/sqrt.cc (sqrt_box::compute_metrics, - sqrt_box::output): Ditto. - -2002-04-03 Michael Selway - - * src/drivers/grops/psrm.cc (resource_manager::do_begin_binary): - Fix typo. - -2002-04-03 Werner LEMBERG - - * doc/homepage.ms: Reduce title size. - * doc/groff.texinfo: Fix documentation of .t register. - Fix handling of colon. - Fix `\' vs. `\\'. - - * src/roff/troff/input.cc (exit_troff): Emit LAST_PAGE_EJECTOR - only if page length is positive to avoid a loop. - - * tmac/an-old.tmac (ne): Increase page length to avoid problems with - tbl. - -2002-04-02 P. Alejandro Lopez-Valencia - - * src/include/nonposix.h, src/roff/groff/pipeline.c: - s/__CYGWIN32__/__CYGWIN__/. - -2002-03-28 Gaius Mulley - - * doc/gnu.xpm: New image contributed by Emily Mulley. - * doc/Makefile (gnu.eps, gnu.png): Use pnmdepth. - (homepage.html): Be dependent on gnu.eps. - * doc/homepage.ms: Updated to new image. - - * src/devices/grohtml/post-html.cc (html_printer): New member - `sbuf_prev_hpos'. - (html_printer::flush_sbuf, html_printer::set_char): Set it. - (html_printer::sbuf_continuation): Use it. - -2002-03-28 Werner LEMBERG - - * src/libs/libgroff/getopt.c: Updated to latest version. - - * tmac/README: More on hyphen.tex license. - -2002-03-26 Larry Kollar - - * doc/groff.texinfo: Add documentation of most missing requests. - -2002-03-25 Werner LEMBERG - - Add three glyphs `t+-', `tmu', and `tdi' which are textual variants - of `+-', `mu', and `di', respectively. - - * font/devascii/R.proto, font/devutf8/R.proto, - font/devlatin1/R.proto, font/devhtml/R.proto, - font/devcp1047/R.proto, font/devlpb/*: Add them. - * font/devps/generate/textmap: Ditto. - * font/devps/*: Regenerated. - * font/devlj4/generate/text.map: Add them. - * font/devlj4/*: Regenerated. - * font/devdvi/generate/tc.map: Use them. - * font/devdvi/generate/texsy.map: Add them. - * font/devdvi/*: Regenerated. - * font/devX*/*: Regenerated. - - * tmac/latin1.tmac, tmac/cp1047.tmac, tmac/tty.tmac, - tmac/tty-char.tmac: Updated. - - * NEWS, man/groff_char.man: Updated. - -2002-03-24 Werner LEMBERG - - * tmac/dvi.tmac, tmac/X.tmac, tmac/ps.tmac, tmac/html.tmac, - tmac/lj4.tmac, tmac/tty.tmac: Replace most `.char' with `.fchar'. - * tmac/ec.tmac: Remove `.rchar' calls (no longer necessary since - we use `.fchar' in dvi.tmac. - * tmac/dvi.tmac: Improve definition of \[Fo] and \[Fc]. - * tmac/Xps.tmac: Simplify some char definitions. - Add definition for \[f/]. - * man/groff_char.man: Updated for new X.tmac. - - * tmac/README: New file. - -2002-03-23 Phil Lobbes - - * Makefile.comm (.y.o): New rule for make on Solaris 2.5.1 -- the - internal .y.o rule took precendence over the .y.cc rule, compiling - the yacc files with gcc instead of g++. - -2002-03-23 Werner LEMBERG - - * tmac/dvi.tmac: Add replacement font for `CB'. - - * tmac/doc.tmac: s/request/macro/ in messages. - (doc-generic-macro): Improve error message. - * tmac/groff_mdoc.man: Minor improvements. - -2002-03-22 Werner LEMBERG - - * doc/groff.texinfo: Document possible conflict between `tr' and - `char' requests. - -2002-03-21 Werner LEMBERG - - Improve handling of hyphenation patterns. It is now possible to - use most of TeX's pattern files unmodified. To make the process - more flexible, a new request `hpfcode' has been added which - provides a character code mapping for the `hpf' request. See - comment before hpf_getc() for more details. - - * src/roff/troff/env.cc (insert_hyphenation, hpf_getc): New - functions. - (read_patterns_file): Additional parameter for exception dictionary. - Extended to recognize \pattern, \hyphenation, and \endinput. - (do_hyphenation_patterns_file): Updated. - * src/roff/troff/env.h (hpf_code_table): New extern. - - * src/roff/troff/input.cc (hpf_code_table): New array. - (init_hpf_code_table, hyphenation_patterns_file_code): New - functions. - (hyphenation_code): Handle translation from `trin' correctly. - (main, init_input_requests): Updated. - (charinfo::set_translation): Handle hyphenation code also. - - * src/roff/troff/charinfo.h (charinfo::get_translation_input): New - inline function. - - * src/roff/troff/env.cc (WORD_MAX): Reduced to 256 since `unsigned - char' is used for offsets in hyphenation exceptions. - - * tmac/hyphen.us: Replace with contents of unmodified `hyphen.tex'. - - * NEWS, man/groff_diff.man, man/groff.man: Document it. - -2002-03-20 Larry Kollar - - * doc/groff.texinfo: Add documentation for `hpfa' and `trin' - requests. - -2002-03-18 Werner LEMBERG - - * tmac/html.tmac: Fix serious typo. - -2002-03-17 Larry Kollar - - * doc/groff.texinfo: Add documentation for `writec' request. - -2002-03-17 Werner LEMBERG - - Added request `hpfa' to append hyphenation patterns. - - * src/roff/troff/env.cc (hyphen_trie::read_patterns_file): Add - parameter `append'. - (hyphenation_patterns_file): Renamed to... - (do_hyphenation_patterns_file): This. - (hyphenation_patterns_file, hyphenation_patterns_file_append): New - functions. - (init_hyphen_requests): Updated. - * NEWS, man/groff.man, man/groff_diff.man: Document it. - -2002-03-16 Werner LEMBERG - - Added request `writec' in analogy to `tmc'. - - * src/roff/troff/input.cc (write_request): Renamed to... - (do_write_request): This. - Added one parameter. - (write_request, write_request_continue): New functions. - (init_input_requests): Updated. - * NEWS, man/groff.man, man/groff_diff.man: Document it. - - * font/devdvi/DESC.in (sizes): Allow all sizes in the range - 5-10000pt. - * NEWS: Document it. - -2002-03-15 Werner LEMBERG - - * man/groff.man: Add writem request. - - Add request `trin' (translate input) to make `.asciify' work - correctly. This is necessary since `charXXX' entity names are no - longer hardcoded in font definition files. - - * src/roff/troff/charinfo.h (charinfo): Add `asciify_code' and - `translate_input' members. - (charinfo::set_asciify_code, charinfo::get_asciify_code, - charinfo::set_translation_input): New methods. - (charinfo::set_translation): Add third argument. - * src/roff/troff/input.cc (charinfo:set_translation): Set - `asciify_code'. - (do_translate): Add second argument. - (translate_input): New function. - (init_input_requests): Updated. - * src/roff/troff/node.cc (glyph_node::asciify, - composite_node::asciify): Use `get_asciify_code'. - - * tmac/cp1047.tmac, tmac/latin1.tmac: Use `trin'. - - * NEWS, man/groff.man, man/groff_diff.man: Updated. - -2002-03-14 Larry Kollar - - * doc/groff.texinfo: Improve documentation of .RS and .RE. - -2002-03-14 Werner LEMBERG - - Add a new request `sizes' similar to the `sizes' command in DESC - files. - - * src/roff/troff/env.cc (override_sizes): New function. - (init_env_requests): Use it. - * src/roff/troff/token.h: Export `read_string'. - * NEWS, man/groff_diff.man, man/groff.man: Document it. - -2002-03-12 Werner LEMBERG - - * doc/groff.texinfo: More fixes for texinfo 4.1 and higher. - -2002-03-10 Werner LEMBERG - - * tmac/pspic.tmac: Add support for -Tdvi. - * tmac/dvi.tmac: Include pspic.tmac. - * src/devices/grodvi/grodvi.man: Document it. - * NEWS: Updated. - - * font/devlj4/generate/Makefile: Fix URL of metric files. - -2002-03-09 Werner LEMBERG - - * PROBLEMS: The static constructor bug has been fixed in z/OS V1R3. - -2002-03-09 Larry Kollar - - * tmac/groff_ms.man: Add documentation for RS and RE macros. - -2002-03-08 Werner LEMBERG - - * doc/groff.texinfo: Fixes for texinfo 4.1. - -2002-03-07 Werner LEMBERG - - * src/include/lib.h: Include getopt.h if groff-getopt.h can't be - included. - Handle CYGWIN properly. - -2002-03-07 Paco Andrés Verdú - - * font/devlbp/Makefile.sub (DEVFILES): Add some missing fonts. - * tmac/lbp.tmac: Add some font translations. - -2002-03-02 Werner LEMBERG - - * font/devcp1047/R.proto, font/devlatin1/R.proto, - font/devhtml/R.proto: Remove `charXXX' entries. - * tmac/tty.tmac, tmac/html.tmac: Load latin1.tmac or cp1047.tmac - where appropriate. - - * font/devlj4/generate/text.map: Remove `charXXX' entries. - * font/devlj4/*: Regenerated all font definition files. - * tmac/lj4.tmac: Load latin1.tmac. - - * src/utils/hpftodit/hpftodit.cc (do_file): Partially undo change - from 2000-06-17: LJ4 metric files are *not* text files. - - * tmac/troffrc, tmac/dvi.tmac, tmac/ps.tmac: Don't use .T string - register to test for EBCDIC. - -2002-03-01 Werner LEMBERG - - * src/utils/afmtodit/afmtodit.pl: Skip comment lines in encoding - files (as grops already does). - * src/utils/afmtodit/afmtodit.man: Document comment lines in map - files. - * src/devices/grops/grops.man: Document comment lines in encoding - files. - - * tmac/cp1047.tmac: New file. - * tmac/dvi.tmac, tmac/tty-char.tmac: Use it. - * tmac/ps.tmac: Load latin1.tmac or cp1047.tmac. - * tmac/Makefile.sub (NORMALFILES): Updated. - - * tmac/ec.tmac: Don't load latin1.tmac again. - - * font/devps/generate/lgreekmap, font/devps/generate/symbolchars, - font/devps/generate/dingbats.map, - font/devps/generate/dingbats.rmap, font/devps/text.enc, - font/devps/generate/Makefile (symbolmap): Add header comment. - * font/devps/generate/textmap: Ditto. - Remove `charXXX' entries. - * font/devps/symbolmap: Regenerated. - * font/devps/*: Regenerated all font definition files. - -2002-02-28 Werner LEMBERG - - Add color support to grodvi (for drawing colors are currently - translated to gray values). - - * src/devices/grodvi/dvi.cc (FILL_MAX): Removed. - (dvi_printer): Add `cur_color' member. - (dvi_printer::set_color): New function. - (draw_dvi_printer): Remove `fill'. - (draw_dvi_printer::fill_next): Pass environment as parameter. - Update code for new color support translated to gray. - (dvi_printer::set_char): Updated. - (dvi_printer::begin_page, dvi_printer::end_page): Handle color - changes crossing the page border. - (dvi_printer::draw): Updated. - Remove cases `f' and `F'. - * tmac/dvi.tmac: Add color definitions. - * NEWS, src/devices/grodvi/grodvi.man: Updated. - - * tmac/an-old.tmac (R): Make this a macro to emit a warning if - used incorrectly. - - * aclocal.m4 (GROFF_NEED_DECLARATION): Use test similar to recent - versions of autoconf. - * configure: Updated. - - * doc/homepage.ms: Use `.blm'. - * tmac/www.tmac (www-depth): New auxiliary variable. - (www-pop-level): Don't issue HTML tag. - (ULS, ULE, LI): Use absolute indentation. - - * src/devices/grops/ps.cc (ps_printer::begin_page, - ps_printer::end_page): Switch forth and back to default color while - starting a new page. - -2002-02-27 Werner LEMBERG - - Add EC and TC fonts to devdvi. - - * src/utils/tfmtodit/tfmtodit.man: Document patching of exbase.mf. - * font/devdvi/generate/cork.map: Renamed to... - * font/devdvi/generate/ec.map: This. - Remove entry for `aq'. - * font/devdvi/generate/tc.map: New file. - * font/devdvi/generate/Makefile (*EC, *TC): New creation rules for - EC and TC fonts. - (FONTS): Updated. - * font/devdvi/*EC, font/devdvi/*TC: New font definition files. - * font/devdvi/Makefile.sub (DEVFILES): Updated. - * tmac/ec.tmac: New file. - * tmac/Makefile.sub (NORMALFILES): Updated. - * NEWS, src/devices/grodvi/grodvi.man: Updated. - * man/groff_char.man: Check `ECFONTS' register. - - * font/devdvi/{TR,TI,TB,TBI,HR}: Fix `name' field. - -2002-02-26 Werner LEMBERG - - * font/devdvi/generate/*.map: Remove all `charXXX' entries. - * font/devdvi/generate/cork.map: Add 'y and 'Y. - * font/devdvi/*: Updated. - * tmac/dvi.tmac: Formatting. - - Add font `HBI' for the dvi output. - Add support for font families `T' and `H'. - - * font/devdvi/HBI: New file. - * font/devdvi/B: Renamed to ... - * font/devdvi/TB: This. - * font/devdvi/BI: Renamed to ... - * font/devdvi/TBI: This. - * font/devdvi/I: Renamed to ... - * font/devdvi/TI: This. - * font/devdvi/R: Renamed to ... - * font/devdvi/TR: This. - * font/devdvi/H: Renamed to ... - * font/devdvi/HR: This. - * font/devdvi/Makefile.sub (DEVFILES): Updated. - * font/devdvi/generate/Makefile (HBI): New rule. - (FONTS): Updated. - (R, I, B, BI, H): Renamed to ... - (TR, TI, TB, TBI, HR): This, respectively. - (srcdir): Fixed. - * NEWS, src/devices/grodvi/grodvi.man: Updated. - * font/devdvi/DESC.in: Don't mount R, I, B, BI, and CWI. - Add `styles' and `family' keywords. - * tmac/dvi.tmac: Alias `H' to `HR'. - Add some fspecial requests for italic fonts. - Add TR and TI as special. - Add support for `_' with font CWI. - - * src/roff/troff/number.cc (parse_expr): Add missing `break' for - operator `:'. Until now, the expression `0:1' would return 2 - instead of 1. - -2002-02-25 Werner LEMBERG - - * man/groff_char.man: Added some missing PS glyph names (from the - Adobe Glyph List). - * font/devps/generate/textmap, font/devps/symbolmap: Add - `arrowupdn'. - - * doc/groff.texinfo: Minor additions and fixes. - * man/groff_diff.man: Remove documentation of fp request. This - is already covered in the original troff manual. - Updated to be consistent with other doc files. - * NEWS: Updated. - -2002-02-24 Werner LEMBERG - - * aclocal.m4 (GROFF_EBCDIC): Don't include `font/devutf8' in - TTYDEVDIRS. - Define new variable OTHERDEVDIRS (containing `font/devlj4 - font/devlbp' if not EBCDIC). - * Makefile.in (TTYDEVDIRS): Always include `font/devutf8'. - (OTHERDEVDIRS): New variable. - (MDEFINES, DEVDIRS, ALLDIRS, DISTDIRS): Updated. - * configure: Regenerated. - - * NEWS, src/devices/grotty/grotty.man: Updated. - -2002-02-23 Werner LEMBERG - - * src/roff/troff/input.cc (do_overstrike, do_bracket, - get_line_arg): Honour input level. - - Add new symbol `mc' corresponding to U+00B5 MICRO SIGN. - - * font/*/*: Implement it in all font files. - * font/devps/generate/textmap, font/devps/generate/symbolchars, - * font/devps/symbolmap: Updated. - * font/devlj4/generate/text.map: Updated. - * font/devdvi/generate/CompileFonts (sizes): Add LaTeX sizes. - * font/devdvi/generate/texmi.map: Updated. - - * font/devutf8/R.proto: Remove all `charXXX' entries. - * font/devutf8/NOTES: Updated. - - * font/devX*/*: Regenerated with xtotroff, using fonts from XFree86 - version 4.1.0. - - * tmac/latin1.tmac, tmac/psold.tmac, tmac/tty-char.tmac: Updated. - - * NEWS, man/groff_char.man: Updated. - -2002-02-21 Phil Lobbes - - * src/include/lib.h [HAVE_SNPRINTF]: Include stdarg.h. - -2002-02-20 Ralph Corderoy - - * src/roff/grog/grog.pl: Fix computation of $refer. - -2002-02-19 Werner LEMBERG - - * src/include/lib.h [!HAVE_SNPRINTF]: Add declarations for - `snprintf' and `vsnprintf'. - - * src/include/htmlindicate.h: Renamed to... - * src/include/htmlhint.h: This. - * src/include/Makefile.sub: Updated. - * src/preproc/eqn/main.cc: Updated. - -2002-02-18 Werner LEMBERG - - * man/roff.man, man/groff_out.man, man/groff.man, - man/groff_diff.man, man/ditroff.man, src/roff/groff/groff.man, - src/roff/troff/troff.man: Updated to latest changes in www.tmac. - - * win32-diffs: Updated. - -2002-02-17 Werner LEMBERG - - * doc/Makefile (clean): Add *.eps. - (MEMACROS): Removed. - (TFLAG): New variable. - (TROFF): Use it. - Add -ww. - (GROFF): Use TFLAG, FFLAG, -U, -p, -e, -t, and -ww. - (.me.dit): Fixed. - (.ms.html, .ms.ascii, .ms.ps, homepage.html): Simplify. - - * tmac/www.tmac: Use dummy diversion while resetting and disabling - `.tl'. - * tmac/e.tmac: Inserted some more `\"' to remove warnings if used - unstripped. - * src/roff/troff/troff.man: Fix order of parameter description. - - * NEWS: Updated. - -2002-02-16 Gaius Mulley - - Simplify image handling for grohtml. - Fix

bug. - - * src/devices/grohtml/html-text.cc (DEBUGGING): Don't undefine but - comment out. - (html_text::dump_stack): Don't emit newline while debugging. - (html_text::do_push) [DEBUGGING]: Print more info. - (html_text::check_emit_text): Fix handling of

. - * src/devices/grohtml/html.h: Updated. - * src/devices/grohtml/output.cc (FPUTC, FPUTS, PUTC): New macros, - replacing `fputc', `fputs', `putc'. If DEBUGGING is defined, they - send its data to stderr also. - Update all callers. - (simple_output::space_or_newline) [DEBUGGING]: Removed. - * src/devices/grohtml/post-html.cc (html_printer::do_links, - html_printer::html_printer): Remove `DEBUGGING' conditionals. - - * src/include/html-strings.h (HTML_IMAGE_{CENTERED,LEFT,RIGHT,END}): - Removed. - * src/libs/libgroff/htmlhint.cc (is_in_graphic_start, - is_inline_image): Removed. - (html_begin_suppress, html_end_suppress): Don't take a parameter. - (graphic_start, graphic_end): Removed. - * src/include/htmlindicate.h: Updated. - * src/preproc/html/pre-html.cc (DEBUG_HTML): Removed. - (macroset_template): New global variable. - (makeFileName): Use `macroset_template'. - (write_end_image): Don't take a parameter. - Don't emit newline. - (write_start_image: Don't emit newline. - (char_buffer::write_upto_newline): Updated. - (char_buffer::skip_to_newline): Renamed to ... - (char_buffer::skip_until_newline): This. - Fix code. - (char_buffer::write_file_troff, char_buffer::write_file_html): - Simplified. - (createAllPages, createImage) [DEBUGGING]: Handle `debug' flag. - (removeAllPages): Remove `DEBUGGING' conditionals. - (addRegDef, dump_args): New functions. - (char_buffer::do_html, char_buffer::do_image): Handle - `www-image-template' command line variable. - Add more debugging code. - (addps4html): Removed. - (removeTempFiles) [DEBUGGING]: Handle `debug' flag. - - * src/preproc/eqn/main.cc: Include `ctype.h'. - (suppress_html): Removed. - (do_file): Updated. - (inline_equation): Use `html_begin_suppress' and - `html_end_suppress'. - * src/preproc/pic/troff.cc: Don't include `htmlindicate.h'. - (troff_output::start_picture, troff_output::finish_picture): - Updated. - * src/preproc/tbl/main.cc: Don't include `htmlindicate.h'. - (process_input_file): Updated. - - * src/roff/troff/div.cc (page_number): Set page number only if the - `ps4html' register isn't defined. - * src/roff/troff/input.cc (image_no): New external variable. - (do_suppress): Use it. - * src/roff/troff/node.h (suppress_node::image_id): New member. - * src/roff/troff/node.cc (image_no): Remove `static' keyword. - (suppress_node::suppress_node): Initialize `image_id' member. - (suppress_node::same): Handle `image_id' also. - (suppress_node::copy): Updated. - (last_image_id): New global variable. - (suppress_node::tprint): Use it. - - * tmac/an-old.tmac (TS, TE, EQ, EN): Use HTML-IMAGE and - HTML-IMAGE-END. - * tmac/pspic.mac (PSPIC): Fix html support. - * tmac/s.tmac (@EQ, @EN, @TS, TE, PS, PE): Ditto. - * tmac/www.tmac (www-image-template): Set up. - (HTMLINDEX): Renamed to... - (HX): This. - (BODYCOLOR): Renamed to... - (BCL): This. - (BACKGROUND): Renamed to... - (BGIMG): This. - (URL): Change order of parameters for consistency. - (MAILTO): Renamed to... - (MTO): This. - (IMAGE, PNG-IMAGE, MARGIN-PNG-IMAGE): Renamed to... - (IMG, PIMG, MPIMG): This. - (HTML-H-BEGIN, HTML-H-END): Renamed to... - (HnS, HnE): This. - (LINKS): Renamed to... - (LK): This. - (LINE): Renamed to... - (HR): This. - (NO-AUTO-RULE): Renamed to... - (NHR): This. - (HTML-TL): Renamed to... - (HTL): This. - (UL-BEGIN, UL-END): Renamed to... - (ULS, ULE): This. - (DROPCAP): Renamed to... - (DC): This. - (TS, TE, EQ, EN): Provide default definitions. - (www-make-unique-name): Updated. - (HTML-IMAGE-INLINE): Fix typo. - * tmac/groff_www.man: Updated. - - * doc/Makefile (homepage.html): Add option -r to grohtml. - Use shortened image name. - * doc/groff.texinfo: Updated info on grohtml strings and macros. - * doc/homepage.ms: Updated and extended. - -2002-02-14 Werner LEMBERG - - Don't use `CSI 39 m' and `CSI 49 m' but `CSI 0 m'. - - * src/devices/grotty/tty.cc (SGR_DEFAULT_COLOR, - SGR_BACK_DEFAULT_COLOR): Replaced with ... - (tty_printer::put_color): Use it. - (ttr_printer::end_page): Simplify. - -2002-02-13 Werner LEMBERG - - * tmac/groff_tmac.man: Moved to... - * man/groff_tmac.man: This place. - * tmac/Makefile.sub, man/Makefile.sub: Updated. - -2002-02-12 Werner LEMBERG - - * src/libs/libgroff/Makefile.sub (snprintf.o): Don't use - $(COMPILE.c) to not include groff's assert.h. - - * src/drivers/grotty/tty.cc (main): Add GROFF_NO_SGR environment - variable. - * NEWS, src/drivers/grotty/grotty.man: Document it. - -2002-02-11 Werner LEMBERG - - * src/libs/snprintf/snprintf.c: Updated to latest version - (2002-02-11). - - * src/roff/grog/grog.pl (process): Fix handling of `.['. We now - test whether there is `.]' also. - Don't check for spaces after `.['. - * src/roff/grog/grog.sh: Do the same. - -2002-02-10 Werner LEMBERG - - Illegal -> Invalid. - - * src/libs/libgroff/illegal.cc: Renamed to ... - * src/libs/libgroff/invalid.cc: This. - (illegal_char_table): Renamed to ... - (invalid_char_table): This. - * src/libs/libgroff/Makefile.sub: Updated. - * win32-diffs: Updated. - - * doc/groff.texinfo, src/devices/grops/psrm.cc (ps_get_line), - src/libs/libdriver/input.cc (fatal_command, parse_color_command, - parse_x_command), src/libs/libgroff/font.cc (text_file::next, - font::load), src/preproc/eqn/main.cc (read_line, main), - src/preproc/eqn/lex.cc (file_input::read_line), - src/preproc/pic/lex.cc (file_input::read_line, - simple_file_input::get, simple_file_input::peek), - src/preproc/pic/main.cc (top_input::get, top_input::peek), - src/preproc/pic/pic.man, src/preproc/refer/main.cc - (input_stack::push_file), src/preproc/refer/refer.cc (do_file, - do_bib), src/preproc/tbl/main.cc (table_input::get), - src/preproc/grn/grn.man, src/preproc/grn/main.cc (interpret), - src/roff/troff/input.cc (file_iterator::fill, file_iterator::peek, - do_zero_width, read_request, encode_char, ps_get_line, - transparent_file, get_char_for_escape_name, transparent_translate, - asciify, input_char_description, read_string, set_string), - src/roff/troff/env.cc (environment::add_html_tag), - src/roff/troff/troff.man, tmac/e.tmac (`@(', `(f'): Do it. - - * src/include/lib.h: Updated. - - * src/preproc/eqn/eqn.cc: Removed. - - * NEWS: Updated. - - * src/preproc/grn/hdb.cc (DBRead): Fix fscanf() fields. - -2002-02-09 Werner LEMBERG - - * doc/gnu.xpm: New image. - * doc/Makefile (DOCS): Add homepage.ps. - Add rules for converting xpm->png and xpm->eps. - Use `gnu.{xpm,eps}' as image names. - * doc/homepage.ms: Updated. - -2002-02-09 Gaius Mulley - - * tmac/www.tmac (www-error): New macro, replacing calls to `@error'. - (IMAGE): Change image position parameters to `-L', `-R', and `-C'. - Remove calls to `B1' and `B2' - (PNG-IMAGE): New macro for inclusion of images in PNG format. - (www-left-ll-trap, www-left-po-trap, www-right-ll-trap): New - auxiliary variables for MARGIN-PNG-IMAGE. - (www-finish-left-po, www-finish-right-ll, www-finish-left-ll): New - auxiliary macros for MARGIN-PNG-IMAGE. - (MARGIN-PNG-IMAGE): New macro to put an image in PNG format into - the margin. - (www-heading-no): New auxiliary variable for HTML-H-{BEGIN,END}. - (HTML-H-BEGIN, HTML-H-END): New macros to begin and end a heading. - (DROPCAP): New macro to produce dropcap characters. - (www-do-image): Renamed back to... - (HTML-DO-IMAGE): This. - Updated all callers. - - * doc/Makefile (gnubw.eps): Updated. - * doc/homepage.ms: Updated. - -2002-02-08 Werner LEMBERG - - * doc/pic.ms: Fixed typos (\(*tx -> \*(tx). - Added `linethick' to table in section `Style Variables'. - -2002-02-08 Gaius Mulley - - * src/libs/libdriver/input.cc (get_extended_arg): Fix conditional. - -2002-02-07 Werner LEMBERG - - Adding options -C (compatibility mode) and -c (grotty's old output - scheme) to nroff. - - * src/roff/nroff/nroff.sh: Implement it. - Remove `-Wall'. - * NEWS, src/roff/nroff/nroff.man: Updated. - - * PROBLEMS: Document bison 1.32 bug. - - Some fixes to make groff compile on z/OS 1.2 UNIX (was OS/390). - - * src/roff/troff/node.cc (make_tfont): Define it earlier. - * src/roff/troff/div.h: Add prototype for `end_diversions'. - * src/roff/troff/input.cc: Add prototype for `process_input_stack'. - * src/roff/troff/env.h: Add prototype for `title'. - - Adding EBCDIC support to grotty. - - * src/devices/grotty/tty.cc (CSI): New macro. - (SGR_*, tty_printer::put_color): Use it. - -2002-02-06 Werner LEMBERG - - Implementing color support in grotty. The new switch -c activates - the old drawing scheme, disabling color at the same time. The new - switch `-i' selects italic instead of underlining (SGR only). - - * src/devices/grotty/tty.cc (putstring): New define instead of - `fputs'. Updated all callers. - (old_drawing_scheme): New global variable. - (COLOR_CHANGE): New enum value. - (SGR_*): New defines containing color handling escape sequences. - (TTY_MAX_COLORS, DEFAULT_COLOR_IDX): New defines. - (glyph): New members `back_color_idx' and `fore_color_idx'. - (glyph::order): Add COLOR_CHANGE. - (tty_printer): New members `cur_fore_idx', `curr_back_idx', - `is_underline', `is_bold', `cu_flag', `tty_colors'. - New methods `make_underline', `make_bold', `color_to_idx', - `change_color', `put_color'. - (cu_flag): Moved into `tty_printer' class. - (tty_printer::tty_printer): Initialize colors. - (tty_printer::add_char, tty_printer::set_char, tty_printer::special, - tty_printer::draw, tty_printer::end_page): Handle colors also. - (main): Add options `-c' and `-i'. - (usage): Updated. - * NEWS, src/devices/grotty/grotty.man: Updated. - - * src/include/errarg.h (errarg): Add support for `unsigned int'. - * src/libs/libgroff/errarg.c: Implement it. - - * src/include/printer.h (printer): Add `change_color' method - (currently used by grotty only). - * src/libs/libdriver/printer.cc: Implement it. - * src/libs/libdriver/input.cc (parse_D_command, do_file): Add - call to `pr->change_color'. - - * src/roff/troff/node.cc (troff_output_file::fill_color, - troff_output_file::glyph_color): Call `do_motion'. - - * tmac/tty.tmac: Add color definitions. - - * src/roff/groff/groff.man: Minor fixes. - -2002-02-05 Bernd Warken - - * src/libs/libdriver/input.cc: Introduce `EnvInt' typedef and use - it. This is a preparation for future changes. - -2002-02-05 Werner LEMBERG - - * src/roff/troff/input.cc (process_input_stack): Fix the case - where leading spaces are followed by \f or \s; previously, an - incorrect space width has been used. - - * doc/roff.man (quoted_char): Fix argument. - (comment): Define string. - -2002-02-04 Larry Kollar - - * doc/groff.texinfo: More fixes. - -2002-02-04 Werner LEMBERG - - * src/preproc/eqn/box.cc (output_string): Don't use \\*[...]. - * src/preproc/eqn/main.cc (do_file, inline_equation): Call - `restore_compatibility' before `output_string' -- the LINE_STRING - register now already contains proper switches from and to - compatibility mode. - - * man/groff_char.man: Add Euro symbol. - * man/groff_diff.man: Improve documentation of `.am1' and `.as1'. - * tmac/tty.tmac: Add `EUR' as replacement for `eu' and `Eu'. - * doc/groff.texinfo (Defstr*): Print strings with full syntax. - Other minor fixes. - - * doc/Makefile (.SUFFIXES, .texinfo.pdf, clean): Add support for - texinfo->pdf. - (.texinfo.html): Add support for texinfo->html. - -2002-02-03 Werner LEMBERG - - Added three new requests `ds1', `as1', and `ami'. The former two - are equivalent to `ds' and `as' with the difference that - compatibility mode is saved on entry, switched off during string - expansion, and restored on exit. The latter is the pendant to `dei' - for `am'. - - (do_define_string): Use `define_mode' and `calling mode'. - Insert COMPATIBLE_SAVE and COMPATIBLE_RESTORE at the beginning and - end of string, respectively. - (define_string, append_string): Use `calling_mode'. - (define_nocomp_string, append_nocomp_string, - define_string_indirect): New functions. - (init_input_requests): Updated. - * NEWS, man/groff_diff.man, man/groff.man: Document it. - - * src/preproc/eqn/box.cc (box::top_level, box::extra_space): Use - `as1' for assigning LINE_STRING (this is `10' usually). Sun's - mm macro package accesses this string register directly. - * src/preproc/eqn/main.cc (inline_equation): Use `as1'. - - * tmac/trace.tmac: Trace calls to `am' also. Make it work in - compatibility mode. - -2002-02-02 Larry Kollar - - * doc/groff.texinfo, tmac/groff_ms.man: More fixes. - -2002-01-31 Werner LEMBERG - - * tmac/an-old.tmac (I): Use \, and \/ to improve spacing. - -2002-01-31 Bernd Warken - - * src/devices/grolbp/lbp.cc (main): Delete `pr'. - * man/groff_out.man: Revised and updated. - -2002-01-30 Bernd Warken - - * src/libs/libdriver/input.cc [USE_ENV_STACK]: New macro to comment - out the unused `{' and `}' commands. Undefined by default. - (IntArray): Make `data' private. - (IntArray::operator[], IntArray::get_data, IntArray::len): Use these - new methods instead. - (skip_line_D, skip_to_end_of_line): New functions. - (get_D_fixed_args): Use `skip_line_D'. - Changed to handle dummy odd arguments by ... - (get_D_fixed_args_odd_dummy): This new function. - (get_D_variable_args): Split some code into ... - (get_possibly_integer_args): This new function. - (send_draw): Use more `const'. - (delete_current_env): New function. - (position_to_end_of_args): Use `size_t'. - Updated. - (send_draw): Updated. - (parse_D_command): Handle `c', `C', and `t' better. - Updated. - (do_file): Updated. - -2002-01-29 Werner LEMBERG - - * NEWS: Revised. - * doc/groff.texinfo: Introduce @Def...List, @Def...Item, and - @Def...ListEnd which replaces @Def...x. This is necessary to get - proper HTML output -- see the comment in the file for more - information. - Updated all calls. - -2002-01-29 Gaius Mulley - - Fixes to make color changes of 2002-01-21 work with grohtml. - - * src/devices/grohtml/post-html.cc (style): Updated. - (html_printer): Remove unused methods. - (html_printer::do_font, html_printer::draw, html_printer::set_char, - html_printer::special): Updated. - * src/devices/grohtml/html-text.cc (debugStack, turnDebug, - html_text::dump_stack_element, html_text::dump_stack) [DEBUGGING]: - Added some debugging code. - (html_text::start_tag): Updated. - (html_text::do_push): New method. - (html_text::push_para): Call it. - Add method for handling color. - (html_text::do_color): Updated. - (html_text::shutdown): Handle color. - * src/devices/grohtml/html-text.h (tag_definition): New member - `col'. - Updated. - -2002-01-28 Werner LEMBERG - - * tmac/ps.tmac, tmac/html.tmac: Fix compatibility mode issues. - -2002-01-27 Gaius Mulley - - Add two switches -a and -g to control the antialiasing bits for - text and graphics, respectively. - - * src/devices/grohtml/post-html.cc (main): Dummy code for `-a' and - `-g'. - * src/devices/grohtml/grohtml.man: Document them. - * src/preproc/html/pre-html.cc (MIN_ALPHA_BITS, MAX_ALPHA_BITS): - New macros. - (textAlphaBits, graphicAlphaBits, antiAlias): New global variables. - (setupAntiAlias): New function. - (createAllPages): Updated. - (scanArguments): Handle `-a' and `-g'. - (main): Call `setupAntiAlias'. - * NEWS: Updated. - -2002-01-27 Werner LEMBERG - - * doc/groff.texinfo (Def*): Call index function after deffn. - - * tmac/html.tmac: Call `nroff' request. - -2002-01-26 Larry Kollar - - * tmac/groff_ms.man: Add some omissions. - -2002-01-25 Larry Kollar - - * tmac/groff_ms.man: Typographical improvements. - -2002-01-25 Werner LEMBERG - - * doc/groff.texinfo: Updated version and copyright. - * src/devices/grops/grops.man: Updated. - - * tmac/groff_tmac.man: Fix `ig' macro. - - * tmac/an-old.tmac (ne): Redefine `ne' request to be a no-op in - nroff mode. - Use `.ne' unconditionally everywhere. - (TS): Only insert some vertical space. Doing a page break is no - longer necessary due to the redefinition of the `ne' request. - - * src/libs/libdriver/input.cc (parse_D_command): Don't emit a - warning for unknown subcommands but parse and pass them to the - device driver. - -2002-01-24 Werner LEMBERG - - * tmac/groff_www.man, NEWS: Fix typos. - -2002-01-21 Werner LEMBERG - - Complete revision of color support: - - Adapt programs to the new libdriver/input.cc. - - Color spaces are no longer converted to RGB but transferred as-is - in the troff intermediate output format. - - Handle default color gracefully. troff now supports a `default' - color (which can't be changed). - - grops will now use the proper color space functions if available. - - Update pic. - - Note that currently grohtml doesn't handle colors properly. This - has to be fixed. - - * src/libs/libgroff/itoa.c (UINT_DIGITS): New macro. - (ui_to_a): New function. - * src/include/lib.h: Updated. - - * src/include/color.h (color_scheme): Replace `NONE' with `DEFAULT'. - (color): Simplified; removed all `double' members and methods. - A new array `components' now holds the color parameters. - (color::is_default, color::get_components): New methods. - (color::operator==, color:operator!=): New. - (Red, Green, Blue, Cyan, Magenta, Yellow, Black, Gray): New macros - to make access to the `components' array more comprehensible. - * src/libs/libgroff/color.cc: Implement new color support. - (atoh): Small fixes. - (color::read_encoding): Simplified for new troff intermediate color - output format. - (default_color): New global variable. - - * src/roff/troff/input.cc (default_symbol): New global variable. - (lookup_color): Use it. - (default_black): Removed. - (do_glyph_color, do_fill_color): Simplified. - (define_color): Handle default color. - Improve warnings. - (do_if_request): Handle default color. - * src/roff/troff/env.cc (environment::environment): Initialize - colors with `default_color'. - * src/roff/troff/node.cc (troff_output_file::put): Add method - for `unsigned int'. - (troff_output_file::hex): Removed. - (troff_output_file::fill_color, troff_output_file::glyph_color): - Updated to include/color.h and libdriver/input.cc. - - * src/preproc/pic/object.cc (draw_arrow): New parameter to set - fill color properly (identically to the outline color). \D'f...' - doesn't work any more. - All function calls to it updated. - - * src/devices/grohtml/post-html.cc (html_printer::do_body, main): - Updated. - * src/devices/grohtml/html-text.cc (html_text::issue_color_begin): - Updated. - - * src/devices/grops/ps.cc (ps_output::put_color): New method. - (ps_printer::sbuf_color): Make a real member instead of pointer. - (ps_printer::fill_color, ps_printer::output_color): Removed. - (ps_printer::ps_printer): Updated. - (ps_printer::set_char): Ditto. - (ps_printer::set_color): Use various color schemes. - Use `put_color' method. - (ps_printer::flush_sbuf): Don't set color. - (ps_printer::fill_path): Take `environment' as parameter. - Simplify color handling. - (ps_printer::set_line_thickness): Renamed to ... - (ps_printer::set_line_thickness_and_color): This (and updated). - (ps_printer::set_color): Change second parameter from `complete' - to `fill' which better describes what it does. - (ps_printer::draw): Call `flush_sbuf' to output graphic commands - and text in the right order. - Updated. - Remove branches for `f' and `F'; this is handled by - libdriver/input.cc. - * src/devices/grops/ps.h: Updated. - * font/devps/prologue (FL): Redefined. - ({F,C}r,k,g: New color functions (with and without filling). - - * doc/pic.ms, src/preproc/pic/pic.man: Small fixes. - * man/groff_diff.man, man/groff.man, man/groff_out.man, - doc/groff.texinfo, NEWS: Updated. - -2002-01-20 Bernd Warken - - * src/libs/libdriver/input.cc: Completely rewritten. See comments - in this file for what has been changed. - -2002-01-19 Werner LEMBERG - - * test-groff: Fix GROFF_FONT_PATH. - * tmac/andoc.tmac: Add dummy macros for equation support -- eqnrc - is read before .TH or .Dd is parsed. - -2002-01-18 Gaius Mulley - - * src/libs/libgroff/geometry.cc (check_output_arc_limits): Fix - quadrant boundaries. - -2002-01-18 Werner LEMBERG - - * devices/grops/ps.cc: Aargh! Fix the fix of the incorrectly - applied last patch. - -2002-01-17 Ruslan Ermilov - - * tmac/doc.common: Initialize %I register for the %I macro to - avoid (harmless) warning. - * tmac/doc.tmac (Bd): There is no reason to enforce -compact - when in the SYNOPSIS section. - -2002-01-17 Bruno Haible - - * src/preproc/pic/lex.cc (get_token): Fix typo. - -2002-01-17 Werner LEMBERG - - * devices/grops/ps.cc: Fix incorrectly applied last patch. - -2002-01-17 Larry Kollar - - * tmac/groff_ms.man: Completely rewritten. - -2002-01-16 Werner LEMBERG - - * tmac/an-old.tmac (TS): Force break, inserting some vertical space. - -2002-01-15 Gaius Mulley - - * devices/grops/ps.cc (ps_printer::fill_path): Fix handling of - fill colors. - (ps_printer::draw): Ditto. - -2002-01-14 Ruslan Ermilov - - * tmac/groff_mdoc.man: Minor fixes. - -2002-01-13 Werner LEMBERG - - * man/groff_out.man: Some fixes. - -2002-01-13 Gaius Mulley - - * doc/pic.ms: Fix typos. - -2002-01-12 Werner LEMBERG - - * doc/groff.texinfo, doc/groff.man: More on a printable backslash. - -2002-01-10 Werner LEMBERG - - * font/devutf8/R.proto, font/devhtml/R.prot: Add `Eu' and `eu' - symbols. - * NEWS: Updated. - -2002-01-09 Bernd Warken - - * man/groff_out.man: Revised. - * man/roff.man: Minor fixes. - * src/roff/troff/troff.man: Some reordering. - -2002-01-09 Werner LEMBERG - - * tmac/an-old.tmac: Add dummy macros for equation support. - -2002-01-07 Werner LEMBERG - - doc/groff.texinfo: Fix documentation of glyph searching algorithm. - - * tmac/an-old.tmac: Revert change 2001-12-23. This breaks too many - man pages. - * tmac/groff_man.man: Small improvements. - -2002-01-07 Bernd Warken - - * man/groff_diff.man: Revised. - -2002-01-06 Werner LEMBERG - - * tmac/www.tmac: Remove extraneous backslash. - -2002-01-06 Bernd Warken - - * man/ditroff.man, src/roff/groff/groff.man, man/groff.man: Revised. - -2002-01-05 Werner LEMBERG - - Integrated groffer, contributed by Bernd Warken. - - * contrib/groffer/*: New. - * Makefile.in, NEWS: Updated. - -2002-01-04 Werner LEMBERG - - * doc/groff.texinfo: Added macros `@Defmpreg' and `@Defmpregx' for - registers defined in macro packages. - Revising the ms part. - -2002-01-04 Larry Kollar - - * doc/groff.texinfo: Add documentation for ms macros. - -2002-01-02 Werner LEMBERG - - First step in adding PS support for the Euro symbol. `eu' is the - official Euro logo, `Eu' is a font-specific glyph variant. - - * font/devps/text.enc: Add `Euro' at position 9. - * font/devps/generate/textmap: Add `Euro' as symbol `Eu'. - * font/devps/symbolmap: Regenerated. - - * NEWS: Updated. - -2002-01-02 Bernd Warken - - * man/roff.man: Revised. - -2002-01-01 Bernd Warken - - * src/roff/groff/groff.man: Completely rewritten. - -2001-12-31 Werner LEMBERG - - * doc/Makefile: Updated. - -2001-12-30 Werner LEMBERG - - * tmac/www.tmac: Make all names of internal macros/registers/strings - lowercase, and prepend `www-'. - Other minor changes. - * src/roff/troff/troff.man: Add preprocessor string at BOF. - -2001-12-30 Gaius Mulley - - Implement option `-b' in grohtml to set the HTML background colour. - - * src/devices/grohtml/post-html.cc (default_background): New global - variable. - (html_printer::html_printer): Initialize `background' to - `default_background'. - (main): Implement option `-b'. - (usage): Updated. - * src/preproc/html/pre-html.cc (scanArguments): Add dummy handling - of `-b' option. - * src/devices/grohtml/grohtml.man: Updated. - * doc/Makefile (.ms.html): Use `-b'. - * tmac/html.tmac: Don't set background color. - - Add new grohtml tag `.html-tl'. - - * src/devices/grohtml/post-html.cc (title_desc): Add `with_h1' - member variable. - (title_desc::title_desc): Updated. - (html_printer::troff_tag): Handle `.html-tl'. - (html_printer::write_title): Use `with_h1'. - * tmac/www.tmac (www-end-nowhere): New auxiliary macro. - (HTML-TL): New macro. - - Add support for unordered lists in HTML. - - * tmac/www.tmac (www-level): New auxiliary register. - (www-level1, www-level2, www-level3): New auxiliary strings. - (www-push-level, www-pop-level): New auxiliary macros - (UL-BEGIN, UL-END, LI): User macros for unordered lists. - - Miscellaneous. - - * src/preproc/html/pre-html.cc (DEFAULT_IMAGE_RES): Increase to 100. - (DEFAULT_VERTICAL_OFFSET): Removed. - (IMAGE_BOARDER_PIXELS): Set to 0. - (A4_LENGTH, A4_OFFSET, LETTER_LENGTH, LETTER_OFFSET): New macros. - (vertical_offset): Initialize with 0. - (gsPaper): New global variable. - (get_resolution): Scan for and return unsigned int. - (get_papersize): New function to get paper length from devps/DESC. - (determine_vertical_offset): New function. - (createAllPages): Produce gray-level images and use proper page - length. - (createImage): Use `-quiet' option of pnmcrop. - (addZ): Fix passing of `-Z'. - (scanArguments): Fix handling of `-o'. - (main): Call `determine_vertical_offset'. - * src/devices/grohtml/post-html.cc (html_printer::draw): Comment out - code for `l'. - - * src/libs/libgroff/tmpfile.cc (add_tmp_file): Fix buffer length. - * src/roff/troff/node.cc (troff_output_file::check_charinfo): Handle - glyph descenders properly. - - * doc/homepage.ms: Include `gnubw.eps'. - * doc/Makefile (gnubw.eps): New rule. - (homepage.html): Depend on `gnubw.eps'. - -2001-12-25 Werner LEMBERG - - * src/roff/troff/input.cc (default_black): Fix return value. - -2001-12-24 Ruslan Ermilov - - * tmac/doc-common (Dt): Change output of architecture strings. - Do some syntax cleanup. - * tmac/groff_mdoc.man: Updated. - -2001-12-23 Werner LEMBERG - - Adding an `itc' request (input line trap accepting \c). - - * src/roff/troff/env.h (environment): New member - `continued_input_trap'. - Make `do_input_trap' a friend function instead of `input_trap'. - * src/roff/troff/env.cc (environment::environment, - environment::copy): Updated. - (environment::newline): Implement it. - (do_input_trap): New function. - (input_trap): Call `do_input_trap'. - (input_trap_continued): New function. - (init_env_requests): Updated. - * src/roff/troff/TODO: Updated. - - * tmac/an-old.tmac (SH, SS, B, I, SM, SB, TP): Use `.itc' instead of - `.it'. - - * src/preproc/grn/hdb.cc (DBRead): Really chop after 127 characters. - -2001-12-22 Ruslan Ermilov - - * tmac/doc-common, tmac/doc-syms: Small updates. - -2001-12-22 Colin Watson - - * tmac/an-old.tmac (an-p-footer): Set title length in environment 1. - -2001-12-22 Bernd Warken - - * MANIFEST: New file. - -2001-12-22 Werner LEMBERG - - * src/preproc/grn/grn.man: Updated. - -2001-12-22 Solar Designer - - * src/preproc/grn/hdb.cc (MAXSTRING_S): New macro. - (DBRead): Use it. - -2001-12-19 Werner LEMBERG - - Implement a fallback character request `.fchar'. - - * src/roff/troff/charinfo.h (charinfo): New flag `fallback'. - (is_fallback): New inline function. - * src/roff/troff/input.cc (do_define_character): New function. - (define_character): Call `do_define_character'. - (define_fallback_character): New function. - (init_input_requests): Add `fchar'. - (charinfo::charinfo): Updated. - (charinfo::set_macro): New argument to set `fallback' flag. - * src/roff/troff/node.cc (make_glyph_node, make_node, - node::add_char): Check `fallback' flag. - * NEWS, man/groff_diff.man, man/groff_man: Updated. - -2001-12-16 Werner LEMBERG - - * groff.texinfo: Document exact search algorithm for glyphs. - -2001-12-15 Werner LEMBERG - - * Makefile.cpg, Makefile.ccpg, Makefile.man: Add dummy file to - the left side of $(MANPAGES) rule to make it always non-empty. - -2001-12-14 Werner LEMBERG - - * src/roff/troff/input.cc (default_black): Define default color - `black' if not yet defined. - -2001-12-13 Werner LEMBERG - - Implement new string-valued register `.fn' to return the current - real (internal) font name. - - * env.cc (environment::get_font_name_string): New function. - (init_env_requests): Add `.fn' register. - * env.h (environment): Updated. - * node.cc (font_info): Make `get_font_name' a friend. - (get_font_name): New function. - * node.h: Updated. - - * man/groff_diff.man, man/groff.man, NEWS: Updated. - -2001-12-12 Ralph Corderoy - - * src/preproc/eqn/main.cc (inline_equation): Fix typos. - -2001-12-12 Werner LEMBERG - - * tmac/groff_man.man, doc/groff.texinfo: There is no .R macro. - -2001-12-10 Gaius Mulley - - * man/groff_diff.man: Adding documentation for \O. - -2001-12-10 Werner LEMBERG - - * src/preproc/html/pre-html.cc (TROFF_COMMAND): Removed. - (scanArguments): Use PROG_PREFIX for the name of the troff binary. - -2001-12-09 Werner LEMBERG - - * man/roff.man: Revised. - * src/roff/groff/groff.man: Replace man page references with a - pointer to roff.man. - -2001-12-09 Bernd Warken - - * man/roff.man: Completely rewritten. - -2001-12-06 Ralph Corderoy - - * src/preproc/eqn/main.cc (inline_equation): Improve error message. - -2001-12-05 Werner LEMBERG - - * src/roff/troff/input.cc (get_delim_file_name): Removed since no - longer used. - * src/devices/grohtml/post-html.cc (html_printer::html_printer): Fix - order of initializers. - * NEWS: Updated. - -2001-12-05 Gaius Mulley - - * doc/groff.texinfo: Fix documentation of \O. - - * src/devices/grohtml/html-text.cc (html_text::do_indent, - html_text::do_table, html_text::do_emittext, html_text::do_para): - Use `const' for first argument. - (html_text::do_table): Use cast. - * src/devices/grohtml/html-text.h: Updated. - * src/devices/grohtml/output.cc (simple_output::put_string): Add - method for `const string &s'. - * src/devices/grohtml/html.h: Updated. - * src/devices/grohtml/post-html.cc (MAX_STRING_LENGTH): Removed. - (ANCHOR_TEMPLATE): Modified. - (manufacture_headings): New global variable to handle `-h' option. - (is_subsection): Removed. - (char_buffer::add_string): Add `const' to first argument. - Protect against invalid string argument. - Add method for `const string &s'. - (text_glob): Completely redesigned. - (page): Use `const' for strings and remove string length variable. - (page::add_html): Removed. - (page::add_end_encode): New member function. - (to_unicode): Moved upwards. - (title_desc, header_desc): Updated. - (header_desc::write_headings): Updated to new ANCHOR_TEMPLATE - definition. - (html_printer::is_bold, html_printer::make_bold): New member - functions. - (html_printer::end_of_line): Updated. - (generate_img_src, html_printer::do_auto_image, - html_printer::do_title, html_printer::write_header, - html_printer::determine_header_level, html_printer::do_heading, - html_printer::do_linelength, html_printer::do_pageoffset, - html_printer::do_indentation, html_printer::do_tempindent, - html_printer::do_indentedparagraph, html_printer::do_break, - html_printer::flush_sbuf, get_html_translation, - html_printer::begin_page, html_printer::special): Rewritten to get - rid of static string length limit. - (html_printer::troff_tag): Added `.no-auto-rule'. - (html_printer::flush_globs): Small fix. - (html_printer::determine_space): Don't compute `space_width'. - (html_printer::translate_to_html): Renamed to ... - (html_printer::emit_html): This (with updates). - (html_printer::write_header): Implement `-h' option. - (html_printer::draw): Remove commented-out code. Handle `F' - command. - (html_printer::add_char_to_sbuf): Removed. - (html_printer::add_to_sbuf): Rewritten. - (html_printer::sbuf_continuation): Fixed. - (html_printer::seen_backwards_escape, reverse, - html_printer::remove_last_char_from_sbuf): Removed. - (char_translate_to_html, str_translate_to_html): Removed. - (html_printer::overstrike): New function member. - (html_printer::set_char): Use it. - (html_printer::do_body): New function member. - (html_printer::~html_printer): Use it. - (main): Handle `-h' option. - (usage): Updated. - * src/devices/grohtml/grohtml.man: Document -h switch. - - * src/preproc/html/pre-html.cc: Include searchpath.h - Replace `POSTSCRIPTRES' macro with `postscriptRes' variable. - (get_resolution): New function. - (checkImageDir): Use `0777' permissions in mkdir() - (write_start_image): Rewritten to use `\O[5...]'. - (createImage, generateImages): Updated. - (main): Handle `F' and `h' options. - Use `get_resolution'. - - * src/roff/troff/input.cc (begin, end, image): Removed. - (do_suppress): Take parameter. - Handle modified syntax of `\O'. - (token::next): Updated. - (init_markup_requests): Removed. - (main): Updated. - - * src/roff/troff/div.h: Add declaration for begin_page(). - - * tmac/color-html.tmac: Removed. Contents moved to... - * tmac/html.tmac: Here. Set background color. - * tmac/color.tmac: Removed. Contents moved to... - * tmac/ps.tmac: Here. - * tmac/www.tmac: Remove the title command when generating images - for html. - (NO_AUTO_RULE): New macro. - (HTML_DO_IMAGE): Use revised `\O' escapes. - * tmac/Makefile.sub, tmac/groff_www.man, tmac/troffrc: Updated. - -2001-12-02 Werner LEMBERG - - * tmac/groff_mdoc.man: Fix typo. - -2001-12-01 Colin Watson - - * man/roff.man: Fix typo. - -2001-11-29 Werner LEMBERG - - * src/libs/libbib/map.c, src/utils/pfbtops/pfbtops.c: Include - stdlib.h. - - * src/roff/troff/input.cc (read_draw_node): Emit error message if - more than one argument to \D'f ...'. - - * tmac/Makefile.sub (NORMALFILES): Add lbp.tmac. - -2001-11-28 Werner LEMBERG - - * tmac/an-old.tmac, tmac/doc.tmac: Assure that the macro package is - loaded only once. - - * tmac/groff_man.man: Minor cosmetic fix. - -2001-11-27 Werner LEMBERG - - * src/roff/groff/groff.man, tmac/groff_tmac.man, - tmac/groff_www.man: s/mwww/www/. - -2001-11-26 Werner LEMBERG - - * aclocal.m4 (GROFF_MKSTEMP): Implement test using C++ linkage. - * configure: Regenerated. - * win32-diffs: Updated. - - * tmac/groff_mwww.tmac: Renamed to ... - * tmac/groff_www.tmac: This. - * tmac/mwww.tmac: Removed. - * NEWS, tmac/Makefile.sub: Updated. - -2001-11-21 Werner LEMBERG - - * doc/groff.texinfo: Improve documentation of the `\v' escape. - Fix explanation of `\D' and `rt'. - -2001-11-20 Werner LEMBERG - - * tmac/an-old.tmac (an-header): Set header length equal to page - width. - * doc/groff.texinfo: Improve documentation of `ne' request. Other - minor fixes. - * NEWS: Small fix. - -2001-11-19 Werner LEMBERG - - * NEWS, man/Makefile.sub: Updated. - -2001-11-19 Bernd Warken - - * man/ditroff.man: New file. - -2001-11-17 Werner LEMBERG - - * man/groff_differences.man: Renamed to ... - * man/groff_diff.man: This. Updated. - * man/Makefile.sub, src/roff/troff/troff.man, NEWS: Updated. - - * src/preproc/html/pushbackbuffer.cc: Renamed to ... - * src/preproc/html/pushback.cc: This. Updated. - * src/preproc/html/pushbackbuffer.h: Renamed to ... - * src/preproc/html/pushback.h: This. - * src/preproc/html/Makefile.sub, src/preproc/html/pre-html.cc: - Updated. - - * src/libs/libgroff/htmlindicate.cc: Renamed to ... - * src/libs/libgroff/htmlhint.cc: This. - * src/libs/libgroff/Makefile.sub: Updated. - - * tmac/an-old.tmac (an-end): Fix page length. - -2001-11-16 Werner LEMBERG - - * NEWS, man/groff_differences.man, doc/groff.texinfo: Updated. - * man/Makefile.sub: Include groff_differences.man. - * VERSION: Set to 1.18. - * REVISION: Set to 0. - -2001-11-16 Bernd Warken - - * src/roff/troff/input.cc (do_define_macro): Allow whitespace before - the second dot (or ending macro name) to end a macro. - * doc/groff.texinfo: Doc fix. - -2001-11-16 Ruslan Ermilov - - * tmac/doc-common (doc-header): Handle very long document titles - better. - -2001-11-16 Werner LEMBERG - - * tmac/doc.tmac (doc-do-Bl-args): Fix .substring requests. - -2001-11-15 Werner LEMBERG - - * src/roff/troff/troff.man: Revised and split into troff.man and... - * man/groff_differences.man: New file. - * NEWS: Updated. - -2001-11-13 Werner LEMBERG - - * tmac/an-old.tmac (TS, TE): New macros for table support. - -2001-11-12 Werner LEMBERG - - * src/include/lib.h: Provide a fix for emx to not include - groff-getopt.h. - -2001-10-27 Werner LEMBERG - - * src/roff/troff/input.cc (substring_macro): Fix computation of - boundary values. - -2001-10-20 Werner LEMBERG - - Undo change from 2001-08-28. - - * src/roff/troff/input.cc (have_input): New global variable. - (token::next): Set `have_input' for \f, \H, \R, \s, and \S if not - in compatibility mode. - (process_input_stack): Use it. - -2001-10-19 Ruslan Ermilov - - * tmac/doc.tmac (doc-flag-recursion): Protect arguments against - being handled as end-of-sentence characters, - -2001-10-10 Gaius Mulley - - * src/roff/troff/input.cc (file_iterator): New members - `suppress_newline_flag' and `seen_escape'. - (file_iterator::next_file): Updated. - (file_iterator::fill): Use it. - (string_iterator): New member `suppress_newline_flag'. - (string_iterator::fill): Set it. - (get_color_element): Use MAX_COLOR_VAL. - * src/roff/troff/env.cc (environment): Remove `need_eol'. - (no_fill): Don't set `env->ignore_next_eol'. - (environment::newline): Handle `eol' tag properly. - Emit `eol.ce'. - (environment::add_html_tag): Set `env->ignore_next_eol'. - Don't handle `.ce'. - * src/roff/troff/env.h (environment): Updated. - - * src/devices/grohtml/post-html.cc (text_glob::is_eol_ce): New - member function. - (html_printer::outstanding_eol): New member function. - (html_printer::do_title): Use new functions. - (html_printer::troff_tag): Test `id_eol_ce'. - -2001-10-10 Werner LEMBERG - - * tmac/color.tmac, tmac/color-html.tmac: Use `.do' to make those - files work with -C also. - -2001-10-05 Werner LEMBERG - - * doc/pic.ms: Minor fix. - * src/preproc/html/pre-html.cc (scanArguments): Don't handle `-?' - as a valid command line switch. - * src/devices/grohtml/post-html.cc (main): Ditto. - (usage): Updated. - * src/devices/grohtml/grohtml.man: Updated. - * src/roff/groff/groff.cc (main): Pass `-v' to predriver also. - -2001-10-04 Werner LEMBERG - - Implementing color support in troff, pic, grops, and grohtml. These - changes are based on a major patch provided by Gaius Mulley - . - - New request: `defcolor', supporting rgb, cmy, cmyk, and gray - definitions with both hex values and fractions. - - New escapes: \m and \M for drawing and background color, - respectively. This corresponds to the troff output commands `m' - and `DF'. - - groff and troff accept command line switch `-c' to disable color - output (which is automatically disabled in compatibility mode). - - New scaling indicator `f' for fractions (1f = 65536u). - - New conditional operator `m' to test for defined colors with `if' - and `ie'. - - New keywords `color' (or `colour', `colored', `coloured'), `outline' - (or `outlined'), and `shaded' added to pic. - - * src/include/color.h: New file. - * src/include/driver.h: Include it. - * src/include/printer.h: Include color.h. - (environment): New members `col' and `fill'. - (printer): Remove `adjust_arc_center' member function. - * src/include/Makefile.sub: Updated. - - * src/libs/libdriver/input.cc (do_file): Initialize `env.col' and - `env.fill'. - Handle `m' and `DF' troff commands. - * src/libs/libgroff/color.cc: New file. - * src/libs/libgroff/Makefile.sub: Updated. - - * src/preproc/html/pre-html.cc (IMAGE_BORDER_PIXELS): Set to 2. - (stop): Removed. - (createImage): Fix computation of `y2'. - Use `pnmcrop' also. - (buffer::write_file_html): Remove calls to `stop'. - - * src/preproc/pic/common.h (common_output): New abstract function - members `set_color', `reset_color', `get_last_filled', and - `get_outline_color'. - * src/preproc/pic/object.h: Add `IS_SHADED' and `IS_OUTLINED'. - (object_spec): Add members `shaded' and `outlined'. - * src/preproc/pic/output.h (output): `command' is now abstract. - New function members `set_color', `reset_color', `get_last_filled', - and `get_outline_color'. - * src/preproc/pic/lex.cc (lookup_keyword): Recognize `colo[u]r[ed]', - `outline[d]', and `shaded'. - * src/preproc/pic/object.cc (output::command): Removed. - (output::set_location): Moved to output.h. - (graphic_object): Add protected members `outline_color' and - `color_fill'. - Add member functions `set_outline_color', `get_outline_color', and - `set_fill_color'. - (closed_object): Add member function `set_fill_color'. - Add member `color_fill'. - (graphic_object::print_text): Use `out->set_color' and - `out->reset_color'. - (box_object::print, ellipse_object::print, circle_object::print, - line_object::print, spline_object::print, arc_object::print): Ditto. - (object_spec::make_object): Implement `IS_OUTLINED' and `IS_SHADED'. - * src/preproc/pic/pic.y: Add tokens `COLORED', `OUTLINED', and - `SHADED', making them `%left'. - Add rules `object_spec [SHADED|COLORED|OUTLINED] text'. - * src/preproc/pic/tex.cc (tex_output): New dummy function members - `set_color', `reset_color', `get_last_filled', and - `get_outline_color'. - * src/preproc/pic/troff.cc (simple_output): New abstract function - members `set_color', `reset_color', and `get_last_filled'. - (simple_output::polygon, simple_output::circle, - simple_output::ellipse): Use `get_last_filled'. - (troff_output): New members `last_filled' and `last_outlined'. - New function members `set_color', `reset_color', `get_last_filled', - and `get_outline_color'. - (troff_output::finish_picture): Use `reset_color'. - (troff_output::set_fill): Test `last_filled'. - * src/preproc/pic/pic.man: Updated. - - * src/roff/groff/groff.cc (main): Implement `-c' option. - (synopsis, help): Updated. - src/roff/groff/groff.man: Updated. - - * src/roff/troff/troff.h: Include color.h. - (warning_type): Add WARN_COLOR. - * src/roff/troff/env.h (environment): New members - `{cur,prev}_{glyph,fill}_color'. - New member functions `get_{prev_,}{glyph,fill}_color'. - * src/roff/troff/env.cc: Initialize and implement them. - * src/roff/troff/input.cc: New global variable `disable_color_flag'. - Replace `NULL' with `0' everywhere for consistency. - (lookup_color, default_black, do_glyph_color, do_fill_color, - get_color_element, read_rgb, read_cmy, read_cmyk, read_gray, - define_color): New functions. - (token::next): Implement \M and \m escapes. - (do_if_request): Implement `m' operator. - (usage): Updated. - (main): Implement `-c' option. - (init_markup_requests): Add `defcolor' request. - (warning_table): Add `color' warning. - * src/roff/troff/node.h (glyph_color_node, fill_color_node): New - classes. - * src/roff/troff/node.cc (troff_output_file): New members - `current_{page,glyph}color'. New member functions `put_hex', - `glyph_color', and `fill_color'. - (glyph_color_node::*, fill_color_node::*): Implement it. - * src/roff/troff/number.cc (SCALE_INDICATOR_CHARS): Add `f'. - (parse_term): Add support for `f'. - * src/roff/troff/troff.man: Updated. - - * src/devices/grodvi/dvi.cc (draw_dvi_printer::draw): Add dummy - entry for `F'. - * src/devices/grolbp/lbp.cc (lbp_printer::draw): Ditto. - * src/devices/grolj4/lj4.cc (lj4_printer::draw): Ditto. - - * src/devices/grohtml/html-text.h (HTML_TAG): Add COLOR_TAG. - (tag_definition): Use `void *' for arg1. - (html_text): New member functions `do_color' and `done_color'. - Use `void *' for second parameter of `push_para' member function. - New `push_para' member function with a single parameter. - Use `char *' for parameter of `issue_table_begin' member funtion. - New `issue_color_begin' member function. - * src/devices/grohtml/html-text.cc (html_text::end_tag): Handle - COLOR_TAG. - (html_text::issue_color_begin): New function. - (html_text::issue_table_begin): Use `char *' for parameter. - (html_text::start_tag, html_text::shutdown, - html_text::check_emit_text): Updated. - (html_text::push_para): Use `void *' for second parameter. - Add same function with only one parameter. - (html_text::do_*): Updated. - (html_text::do_color, html_text::done_color): New functions. - * src/devices/grohtml/post-html.cc (style): New member `col'. - Mew member `style' with 6 parameters. - (style::style, style::operator==): Updated. - (html_printer::do_font): Use it. - (html_printer::draw): Add dummy entry for `F'. - (html_printer::set_char): Updated. - * src/devices/grohtml/grohtml.man: Updated. - - * src/devices/grops/ps.cc (ps_output::put_float): Use `%g' to have - trailing zeroes removed. - (ps_printer): New members `sbuf_color', `fill_color', and - `output_color'. - Removed member `fill'. - New member function `set_color'. - (ps_printer::ps_printer, ps_printer::set_char): Updated. - (ps_printer::flush_sbuf, ps_printer::set_line_thickness, - ps_printer::fill_path, ps_printer::draw): Use `set_color'. - - * tmac/color-html.tmac, tmac/color.tmac: New files. - * tmac/troffrc: Include them. - * tmac/www.tmac (URL, FTP, MAILTO): Use blue color. - * tmac/Makefile.sub: Updated. - - * NEWS, doc/groff.texinfo, doc/pic.ms, man/groff_out.man, - man/groff.man: Updated. - * font/devps/prologue.ps: Define FC and CO functions. - -2001-10-04 Gaius Mulley - - Fix incorrect cropping of images and incorrect handling of special - characters. Fix handling of file names in \O. - - * src/include/geometry.h: New file. - * src/libs/libgroff/geometry.cc: New file. - * src/libs/libdriver/printer.cc (printer::adjust_arc_center): Moved - to `geometry.cc'. - * src/roff/troff/input.cc (get_delim_file_name): Fixed problem with - initial spaces. - (do_suppress): Updated. - * src/roff/troff/node.cc: Include geometry.h. - (troff_output_file::flush_tbuf): Fixed parameters to - `check_output_limits'. - (troff_output_file::check_charinfo): Ditto. - (troff_output_file::determine_line_limits): Add support for `Da' - and `Dl' commands. - - * src/devices/grohtml/post-html.cc (str_translate_to_html): - Add new parameter `is_special' to decode special characters from - escape sequences. - (html_printer::do_title, html_printer::do_heading, - html_printer::do_indentedparagraph, - html_printer::translate_to_html, html_printer::special): Updated. - -2001-10-03 Werner LEMBERG - - * Makefile.sub (DISTCLEANFILES): Add stamp-h. - Fix entry for config.h. - * test-groff (GROFF_BIN_PATH): Add $builddir/roff/groff. - * tmac/troffrc: Translate nonbreakable space character to `\~'. - * src/preproc/eqn/eqn.man: Document -d command line option. - -2001-09-27 Werner LEMBERG - - * man/groff.man: Use - - .ev xxx - .na - .nh - - .ev - - instead of the old code (`.ad .hy' after the table) to suppress - incorrect hyphenation for grohtml output. - -2001-09-22 Werner LEMBERG - - * man/groff_font.man, man/groff_out.man: Minor fixes. - -2001-09-20 Werner LEMBERG - - * PROBLEMS: Updated, reordered. Improved EPS section (thanks to - Arnold Robbins ). - -2001-09-09 Werner LEMBERG - - * configure: Regenerated with autoconf 2.52. - - * doc/groff.texinfo: Complete revision of indices. - -2001-09-07 Werner LEMBERG - - * doc/Makefile (clean): Updated to delete all indices. - -2001-09-05 Werner LEMBERG - - * src/roff/troff/troff.man: Remove superfluous line. - - * tmac/s.tmac: Enable all warnings only if no -W or -w option is - given on the command line (or rather, if only the default warnings - are set). - -2001-09-03 Werner LEMBERG - - * man/groff.man, src/preproc/eqn/eqn.man, tmac/groff_mdoc.man: Don't - use .ne for TTY devices. - -2001-08-31 Werner LEMBERG - - * src/roff/troff/token.h, src/roff/troff/input.cc: - s/TOKEN_TRANSPARENT_ESCAPE/TOKEN_OPAQUE_ESCAPE/. - -2001-08-28 Werner LEMBERG - - * src/roff/troff/token.h (token_type): Add TOKEN_TRANSPARENT_ESCAPE. - * src/roff/troff/input.cc (token::next): Return - TOKEN_TRANSPARENT_ESCAPE for \f, \H, \R, \s, and \S if not in - compatibility mode. - (token::description): Updated. - (process_input_stack): Reset `bol' for TOKEN_TRANSPARENT_ESCAPE. - (token::add_to_node_list, token::process): Ignore - TOKEN_TRANSPARENT_ESCAPE. - -2001-08-27 Werner LEMBERG - - * tmac/an-old.tmac: Fix `S' string. - -2001-08-26 Werner LEMBERG - - * src/roff/troff/troff.man: Don't use .ne for TTY devices. - -2001-08-25 Werner LEMBERG - - * doc/pic.ms: Replace `\\' with `\e' (and fixing some single - backslashes). - Many other minor fixes. - - * configure.ac: Add message at end to inform how to compile - xditview. - * configure: Regenerated. - -2001-08-24 Werner LEMBERG - - * src/include/getopt.h, src/libs/libgroff/{getopt.c, getopt1.c}: - Updated to latest version of libc. - -2001-08-23 Werner LEMBERG - - * configure.ac: Don't create subdirectories before AC_CONFIG_FILES. - Autoconf 2.50 and newer can handle this. - * configure: Regenerated. - -2001-08-21 Werner LEMBERG - - * doc/pic.ms: Fix typo. - * src/preproc/tbl/tbl.man: Document case of global options. - -2001-08-21 Gaius Mulley - - * src/devices/grohtml/post-html.cc (html_printer::end_font): Fix - handling of `CR' font. - -2001-08-20 Werner LEMBERG - - Use a config.h file. - - * src/include/lib.h: Include config.h. - * All C files: Ditto (if necessary). - * All C++ source and header files: Include lib.h first (if - necessary). - - * src/include/config.hin: New file (autogenerated by autoheader). - * stamp-h.in: New file. - * configure.ac: Updated. - * aclocal.m4: Add third parameters to AC_DEFINE macros. - (GROFF_ARRAY_DELETE): Simplified. - * Makefile.sub (DISTCLEANFILES): Updated. - Added targets for remaking config.status, config.hin, config.h, - stamp-h.in, and stamp-h. - * configure: Regenerated. - -2001-08-19 Werner LEMBERG - - * NEWS: Updated. - -2001-08-18 Sebastian Krahmer - - * src/preproc/pic/pic.y (format_number): Use do_sprintf(). - (do_sprintf): Use snprintf(). - -2001-08-18 Werner LEMBERG - - * src/libs/snprintf/*: Added an snprintf module written by Mark - Martinec. - * src/libs/libgroff/Makefile.sub: Updated. - * configure.ac: Add test for snprintf(). - * Makefile.in: Updated. - * configure: Regenerated. - - * src/preproc/html/pre-html.cc (make_message): Reactivate code which - uses snprintf(). - -2001-08-14 Ruslan Ermilov - - * tmac/doc.tmac (Ex): New implementation. - * tmac/doc-common, tmac/groff_tmac.man: Updated. - -2001-08-13 Ruslan Ermilov - - * tmac/doc.tmac (Rv): Implement support for 0 or more than 1 - argument. - * tmac/groff_tmac.man: Updated. - -2001-08-13 Werner LEMBERG - - * src/preproc/tbl/tbl.man: Minor documentation update. - -2001-08-13 John David Anglin - - * src/libs/libgroff/tmpname.cc: Add prototype for gettimeofday(). - * configure.ac: Add declaration test for gettimeofday(). - * Makefile.in: Document NEED_DECLARATION_GETTIMEOFDAY defines. - * aclocal.m4: Include sys/time.h for gettimeofday declaration test. - * configure: Regenerated. - -2001-08-11 Werner LEMBERG - - * aclocal.m4 (GROFF_MKSTEMP): Define HAVE_MKSTEMP. - * configure.ac: Add declaration test for strcasecmp(). - * Makefile.in: Updated. - * configure: Regenerated. - * src/include/lib.h [!HAVE_MKSTEMP]: Add prototype for mkstemp() -- - this is necessary because groff's mkstemp.cc is C++. - Add declaration conditionally for strcasecmp(). - -2001-08-10 Werner LEMBERG - - Integrated pic2graph, contributed by Eric S. Raymond. - - * contrib/pic2graph/{Makefile.sub, pic2graph.sh, pic2graph.man}: New - files. - * Makefile.in, NEWS: Updated. - - * src/preproc/tbl/tbl.man: Revised. - -2001-08-09 Eric S. Raymond - - * src/preproc/tbl/tbl.man: Extended to cover all tbl features. - -2001-08-09 Werner LEMBERG - - * src/preproc/tbl/main.cc (process_data): Fix recognition of .lf - requests. - -2001-08-08 Paul Eggert - - * Makefile.sub (configure): Depend on configure.ac, not - configure.in. - * INSTALL.gen: Upgrade to autoconf 2.52's INSTALL. - -2001-08-07 Werner LEMBERG - - * src/utils/afmtodit/afmtodit.man, src/roff/groff/groff.man: Minor - fixes. - -2001-08-06 Werner LEMBERG - - * src/roff/troff/troff.man: Improve documentation of -E option. - -2001-07-28 Ralph Corderoy - - * src/preproc/html/pushbackbuffer.cc (pushBackBuffer::readNumber): - Simplified. - -2001-07-27 Werner LEMBERG - - * src/preproc/refer/refer.cc: Undo last change. - * src/devices/grohtml/post-html.cc: Ditto. - -2001-07-26 Werner LEMBERG - - * src/preproc/refer/refer.cc: Include `lib.h'. - * src/devices/grohtml/post-html.cc: Ditto. - -2001-07-25 Gaius Mulley - - * aclocal.m4 (GROFF_PAGE): Add `AC_DEFINE(PAGEA4)'. - * src/preproc/html/pre-html.cc: Use it for DEFAULT_VERTICAL_OFFSET. - * Makefile.in: Comment updated. - * configure: Regenerated. - -2001-07-25 Werner LEMBERG - - * src/preproc/pic/pic.cc: Removed. - * src/preproc/pic/pic_tab.h: Removed. - * src/preproc/refer/label.cc: Removed. - - * doc/Makefile (.ms.html): Don't use a file name extension in - argument to grohtml's -I option. - * Makefile.in (dist): Remove CVS directories. - Call `distfiles' target. - - * src/devices/grohtml/grohtml.man: Add information about valid - versions of pnmtopng. - * src/preproc/html/pre-html.cc (TRANSPARENT): Use `white' as colour - name instead of number. - -2001-07-24 Werner LEMBERG - - * doc/groff.texinfo: Minor fixes. - -2001-07-21 Gaius Mulley - - * doc/Makefile (.ms.html): Put image files into a subdirectory. - (clean): Updated. - -2001-07-20 Werner LEMBERG - - * src/libs/libgroff/tmpname.cc: New file, defining get_tempname(). - * src/libs/libgroff/mkstemp.cc: New file. - * src/libs/libgroff/mksdir.cc: New file. - * src/libs/libgroff/tmpfile.cc [HAVE_MKSTEMP_PROTO]: Removed. - (xtmpfile) [!HAVE_MKSTEMP]: Removed. - * src/libs/libgroff/Makefile.sub: Updated. - * src/include/lib.h: Add mksdir() prototype. - * src/include/posix.h: Define S_IXUSR if not yet defined. - - * src/preproc/html/pre-html.cc (MAX_RETRIES): Removed. - (createAllPages): Use mksdir() instead of current code. - * src/utils/indxbib/indxbib.cc [HAVE_MKSTEMP_PROTO]: Removed. - (main): [!HAVE_MKSTEMP]: Removed. - - * aclocal.m4 (GROFF_MKSTEMP): Updated to use new mkstemp.cc file. - (GROFF_INTTYPES_H, GROFF_UNSIGNED_LONG_LONG, GROFF_UINTMAX_T): New - macros. - * configure.ac: Add tests for stdint.h, sys/time.h, and - gettimeofday(). - Call new GROFF_xxx macros. - * configure: Regenerated. - * Makefile.in: Comments updated. - -2001-07-20 Gaius Mulley - - * src/preproc/html/pre-html.cc (scanArguments): Use getopt_long() - instead of current code. - * src/devices/grohtml/post-html.cc (main): Handle `-d' option. - * src/roff/groff/groff.cc (possible_command::insert_args): New - function. - (main): Use it for predriver handling instead of insert_arg(). - -2001-07-19 Werner LEMBERG - - * doc/Makefile: Added GROFF_BIN_PATH to make it work with uninstalled - groff also. - - * src/include/posix.h: Define S_IWUSR if not yet defined. - -2001-07-18 Werner LEMBERG - - * NEWS: Updated. - -2001-07-18 Ruslan Ermilov - - * tmac/groff_mdoc.man: Document new -width and -column syntax. - Some other minor fixes. - * tmac/an-old.tmac: Add `AT' and `UC' macros. - -2001-07-17 Gaius Mulley - - Replace call to `troff' with `groff -Z' to make it aware of - GROFF_BIN_PATH. - - * src/preproc/html/pre-html.cc (TROFF_COMMAND): New macro. - (troff_command, command_prefix): Removed. - (alterDeviceTo): Use groff. - (addZ): New function. - (char_buffer::do_html): Use it. - (scanArguments): Use TROFF_COMMAND. - (findPrefix): Removed. - (main): Updated. - * src/roff/groff/groff.cc (main): Handle zflag for preprocessors. - -2001-07-17 Eric S. Raymond - - * doc/pic.ms: Documentation fixes. - -2001-07-17 Werner LEMBERG - - Replace atexit() with global destructor. - - * src/libs/libgroff/tmpfile.cc (xtmpfile_list): Add constructor. - (xtmpfile_list_init): New global structure to deallocate - xtmpfile_list on exit. Its destructor inherits most code from - remove_tmp_files(). - (remove_tmp_files): Deleted. - (add_tmp_file): Simplified. - -2001-07-16 Werner LEMBERG - - Replace strdup() with strsave(). - - * src/devices/grolbp/lbp.cc [!HAVE_STRDUP]: Removed. - (set_papersize): Use strsave() and a_delete. - (main): Use strsave(). - * src/preproc/html/pre-html.cc (make_message, createAllPages, - removeAllPages): Use strsave() and a_delete. - - * configure.ac: Remove test for strdup. - * Makefile.in: Comment updated. - * configure: Regenerated. - -2001-07-15 Werner LEMBERG - - * win32-diffs: Updated. - -2001-07-14 Werner LEMBERG - - * src/preproc/html/pre-html.cc (makeTempFiles): Activate new code, - removing the old one. - * src/utils/indxbib/indxbib.cc (main): Remove compiler warning. - -2001-07-14 Ralph Corderoy - - * src/libs/libgroff/tmpfile.cc (xtmpfile): Fix guard for `namep'. - -2001-07-12 Ruslan Ermilov - - Merge -xwidth into -width. Add -xwidth functionality to -column - also. - - * tmac/doc.tmac (Bl): Add dummy doc-typeXXX and doc-spaceXXX to - avoid warning. - (doc-do-Bl-args): Merge -xwidth code with -width. Test whether - string immediately following a leading dot starts with a valid mdoc - argument. - Add similar code to the -column branch. - (doc-Bl-usage): Updated. - * groff_mdoc.man: s/-xwidth/-width/. - -2001-07-12 Gaius Mulley - - * src/devices/grohtml/post-html.cc (text_glob::is_br): Stop titles - running into centered or non-formatted text. - -2001-07-11 Werner LEMBERG - - Introduce short and long prefixes to have the selection at run-time - whether there is a 8+3 limit for names of temporary files. - - * src/libs/libgroff/tmpfile.cc (TMPFILE_PREFIX): Replaced with... - (TMPFILE_PREFIX_SHORT, TMPFILE_PREFIX_LONG): This. - (tmpfile_prefix, tmpfile_prefix_len, use_short_prefix): New - variables. - (temp_init): New global structure to initialize above three - variables. - (xtmptemplate): Use two parameters for long and short prefix. - Simplify code use above three variables. - (xtmpfile): Use long and short prefixes as parameters. - * src/include/lib.h: Updated. - - * src/preproc/html/pre-html.cc ({PAGE,PS,REGION}_TEMPLATE): Replace - with ... - ({PAGE,PS,REGION}_TEMPLATE_{SHORT,LONG}): This. - (createAllPages, makeTempFiles): Updated. - -2001-07-09 Werner LEMBERG - - * REVISION: Increased to 3. - -Local Variables: -version-control: never -coding: latin-1 -End: diff --git a/contrib/groff/FDL b/contrib/groff/FDL deleted file mode 100644 index 4a0fe1c8deeb..000000000000 --- a/contrib/groff/FDL +++ /dev/null @@ -1,397 +0,0 @@ - GNU Free Documentation License - Version 1.2, November 2002 - - - Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - -0. PREAMBLE - -The purpose of this License is to make a manual, textbook, or other -functional and useful document "free" in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - - -1. APPLICABILITY AND DEFINITIONS - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. - -A "Modified Version" of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A "Secondary Section" is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject -(or to related matters) and contains nothing that could fall directly -within that overall subject. (Thus, if the Document is in part a -textbook of mathematics, a Secondary Section may not explain any -mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The "Invariant Sections" are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. - -The "Cover Texts" are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. - -A "Transparent" copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input format, SGML -or XML using a publicly available DTD, and standard-conforming simple -HTML, PostScript or PDF designed for human modification. Examples of -transparent image formats include PNG, XCF and JPG. Opaque formats -include proprietary formats that can be read and edited only by -proprietary word processors, SGML or XML for which the DTD and/or -processing tools are not generally available, and the -machine-generated HTML, PostScript or PDF produced by some word -processors for output purposes only. - -The "Title Page" means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -A section "Entitled XYZ" means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. - - -2. VERBATIM COPYING - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - - -3. COPYING IN QUANTITY - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - - -4. MODIFICATIONS - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -A. Use in the Title Page (and on the covers, if any) a title distinct - from that of the Document, and from those of previous versions - (which should, if there were any, be listed in the History section - of the Document). You may use the same title as a previous version - if the original publisher of that version gives permission. -B. List on the Title Page, as authors, one or more persons or entities - responsible for authorship of the modifications in the Modified - Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has fewer than five), - unless they release you from this requirement. -C. State on the Title page the name of the publisher of the - Modified Version, as the publisher. -D. Preserve all the copyright notices of the Document. -E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. -F. Include, immediately after the copyright notices, a license notice - giving the public permission to use the Modified Version under the - terms of this License, in the form shown in the Addendum below. -G. Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice. -H. Include an unaltered copy of this License. -I. Preserve the section Entitled "History", Preserve its Title, and add - to it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section Entitled "History" in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence. -J. Preserve the network location, if any, given in the Document for - public access to a Transparent copy of the Document, and likewise - the network locations given in the Document for previous versions - it was based on. These may be placed in the "History" section. - You may omit a network location for a work that was published at - least four years before the Document itself, or if the original - publisher of the version it refers to gives permission. -K. For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the section all - the substance and tone of each of the contributor acknowledgements - and/or dedications given therein. -L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section titles. -M. Delete any section Entitled "Endorsements". Such a section - may not be included in the Modified Version. -N. Do not retitle any existing section to be Entitled "Endorsements" - or to conflict in title with any Invariant Section. -O. Preserve any Warranty Disclaimers. - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - - -5. COMBINING DOCUMENTS - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all sections -Entitled "Endorsements". - - -6. COLLECTIONS OF DOCUMENTS - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - - -7. AGGREGATION WITH INDEPENDENT WORKS - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included in an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. - - -8. TRANSLATION - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. - - -9. TERMINATION - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. - - -10. FUTURE REVISIONS OF THIS LICENSE - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. - - -ADDENDUM: How to use this License for your documents - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - - Copyright (c) YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled "GNU - Free Documentation License". - -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: - - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. - -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. diff --git a/contrib/groff/FREEBSD-Xlist b/contrib/groff/FREEBSD-Xlist deleted file mode 100644 index 4549878106ea..000000000000 --- a/contrib/groff/FREEBSD-Xlist +++ /dev/null @@ -1,3 +0,0 @@ -$FreeBSD$ -*/arch -*/src/libs/snprintf diff --git a/contrib/groff/FREEBSD-upgrade b/contrib/groff/FREEBSD-upgrade deleted file mode 100644 index bf4fe11a124c..000000000000 --- a/contrib/groff/FREEBSD-upgrade +++ /dev/null @@ -1,31 +0,0 @@ -$FreeBSD$ - -This directory contains virgin copies of the original distribution files -on a "vendor" branch. Do not, under any circumstances, attempt to upgrade -the files in this directory via patches and a cvs commit. - -To upgrade to a newer version of groff, when it is available: - 1. Unpack the new version into an empty directory. - [Do not make ANY changes to the files.] - - 2. Use the command: - cvs import -m 'Virgin import of FSF groff v' \ - src/contrib/groff FSF v - - For example, to do the import of version 1.19.2, I typed: - cvs import -m 'Virgin import of FSF groff v1.19.2' \ - src/contrib/groff FSF v1_19_2 - - 3. Follow the instructions printed out in step 2 to resolve any - conflicts between local FreeBSD changes and the newer version. - -Do not, under any circumstances, deviate from this procedure. - -To make local changes to groff, simply patch and commit to the main -branch (aka HEAD). Never make local changes on the FSF branch. - -All local changes should be submitted to Werner Lemberg or -Ted Harding for inclusion in the next -vendor release. - -ru@FreeBSD.org - 20 October 2005 diff --git a/contrib/groff/INSTALL b/contrib/groff/INSTALL deleted file mode 100644 index d540e5f0eb48..000000000000 --- a/contrib/groff/INSTALL +++ /dev/null @@ -1,50 +0,0 @@ -To install groff, follow the instructions in the file INSTALL.gen. - -This file contains information that supplements those instructions. - -(For instructions how to build groff with DJGPP tools for MS-DOS and -MS-Windows, see the file arch/djgpp/README.) - -(For instructions how to build groff with the MinGW tools for -MS-Windows, see the file README.MinGW.) - -groff is written in C++, so you will need a C++ compiler. The C++ -source files use a suffix of `.cpp', so your C++ compiler must be able -to handle this. If you don't already have a C++ compiler, I suggest -gcc 2.7.1 or later (gcc version 2 includes GNU C++ as well as GNU C). -From gcc 2.5, it is no longer necessary to install libg++: the C++ -header files needed by groff are created by the gcc installation -process. To override configure's choice of C++ compiler, you can set -the CXX environment variable. - -If you have a library that provides a faster malloc than your system's -usual malloc, it is good idea to include it in LIBS. For example, -using the malloc that comes with GNU Emacs version 20 can give a -worthwhile (and sometimes spectacular) performance improvement. - -If you want A4 or letter paper format and the configure script produces -an incorrect guess, say - - PAGE=xxx ./configure - -where `xxx' should be either `A4' or `letter'. Note that this will only -affect the paper selection of some device drivers like grops (which can -be still overridden on the command line). For compatibility with -ditroff, the default page length in gtroff is always 11 inches. The -page length can be changed with the `pl' request. - -When you have built groff, you can use the test-groff script to try -groff out on one of the man pages. (Use the .n files not the .man -files.) The test-groff script sets up environment variables to allow -groff to run without being installed. For example, you could do - - ./test-groff -man -Tascii src/roff/groff/groff.n | less - -To get a DVI, PDF, or HTML version of the groff texinfo manual, say `make -groff.dvi', `make groff.pdf', or `make groff.html', respectively, in the -`doc' subdirectory (after configuring the groff package). Note that you -need texinfo version 4.6 as a prerequisite. Neither older versions nor -texinfo 4.7 (due to a bug) will work. - -If you have problems, read the PROBLEMS file. If this doesn't help -send a bug report using the form in the file BUG-REPORT. diff --git a/contrib/groff/INSTALL.gen b/contrib/groff/INSTALL.gen deleted file mode 100644 index 095b1eb40635..000000000000 --- a/contrib/groff/INSTALL.gen +++ /dev/null @@ -1,231 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free -Software Foundation, Inc. - -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - -These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - -You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - -By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PREFIX'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PREFIX', the package will -use PREFIX as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - -Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - -Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - -`configure' recognizes the following options to control how it operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/contrib/groff/LICENSE b/contrib/groff/LICENSE deleted file mode 100644 index 0f67f4235178..000000000000 --- a/contrib/groff/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -LICENSE - -The groff program is a free software project. It is licensed under -the GNU General Public License (GNU GPL), version 2 or later. - -The file COPYING in the top directory of the groff source package -contains a copy of the GPL that was downloaded from the GNU web site -http://www.gnu.org/copyleft/gpl.txt at 1 dec 2003. - -All files of the groff source package are licensed under this version -of the GPL (or licenses which are compatible with the GPL). -You are free to choose version 2 or any subsequent version of the GPL. - -The GPL names an address where you can get the actual version by -normal post. Further information is found in the internet at -http://www.gnu.org/copyleft. - -The groff program is a GNU package, and the copyright of all files of -the groff source package which are under the GPL has been assigned to -the Free Sofware Foundation (FSF). Information on GNU and FSF is -found at http://www.fsf.org/. diff --git a/contrib/groff/MANIFEST b/contrib/groff/MANIFEST deleted file mode 100644 index f8d32d0e593f..000000000000 --- a/contrib/groff/MANIFEST +++ /dev/null @@ -1,164 +0,0 @@ -MANIFEST - -Last update: 26 May 2005 - -This file is part of groff, the GNU roff type-setting system. - -Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc. -written by Bernd Warken -maintained by Werner Lemberg - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or -any later version published by the Free Software Foundation; with the -Invariant Sections being this .ig-section and AUTHORS, with no -Front-Cover Texts, and with no Back-Cover Texts. - -A copy of the Free Documentation License is included as a file called -FDL in the main directory of the groff source package. - -######################################################################## - -This file gives an overview of the directories and the main files of -the groff source distribution. - - -1) The top directory. - - BUG-REPORT A template for bug-reports. - ChangeLog Log of the changes in the different groff versions. - COPYING The GNU General Public License (GPL). - FDL The Free Documentation License (FDL). - INSTALL Information on compiling and installing groff. - INSTALL.gen Generic information on configuration and compiling. - LICENSE Licensing information. - MANIFEST The file you are reading. - MORE.STUFF Useful stuff in other packages. - NEWS Recent user-visible changes in groff. - PROBLEMS Tips to handle known critical situations. - PROJECTS Long-term additions to groff. - README Availability and contact information for groff. - README.MinGW Build information for MinGW. - TODO Things planned for future groff versions. - - All other files in the top directory are related to the configuration, - compilation, and install processes. - - -2) The directory structure - -./arch Data that is special for different architectures. - djgpp Data special for the 32-bit DOS compiler djgpp. - misc Data needed for various platforms. - -./contrib Part of groff, but maintained by other people. - eqn2graph Convert equations created with EQN into different - graphical formats. - gdiffmk An improved implementation of the diffmk command to mark - differences between groff/nroff/troff files. - grap2graph Convert grap diagraps into different graphical formats. - groffer A wrapper to conveniently view roff files. - mm The groff mm macro package. - mom The groff mom macro package. - pdfmark A package to add PDF marks to groff documents, together - with a shell script (pdfroff) for easy creation of PDF - documents. - pic2graph Convert PIC diagrams into different graphical formats. - -./doc Manuals and tutorials to groff aspects. - -./font Device information and fonts. - devX100 100dpi device for X Window System. - devX100-12 100dpi device with narrower font (for 12pt base font). - devX75 75dpi device for X Window System. - devX75-12 75dpi device with narrower font (for 12pt base font). - devascii Text device for ASCII output. - devcp1047 EBCDIC device. - devdvi TeX DVI device. - devhtml HTML device. - devlatin1 Text device for latin-1 (ISO 8859-1) output. - devlbp Device for Canon CAPSL laser printers. - devlj4 Device for HP Laserjet 4, PCL 5, and compatible printers. - devps PostScript device. - devutf8 Text device for Unicode output. - -./man Some groff manual pages of more general character. - -./src Everything written in programming languages. - -./src/devices The postprocessors. - grodvi TeX DVI output. - grohtml HTML output. - grolbp Canon printers. - grolj4 HP Laserjet 4, PCL 5, and compatible printers. - grops PostScript output. - grotty Text output. - xditview A groff (pre)viewer for the X Window system. - -./src/include The *.h C/C++ include files. - -./src/libs C++ code common to several parts of the groff sources. - libbib Library of bibliographic functions. - libdriver Parser for intermediate output and postprocessor code. - libgroff Library for general support functions used everywhere. - libxutil Utility functions for xditview and xtotroff. - snprintf An implementation of snprintf() and friends. - -./src/preproc Preprocessors. - eqn Mathematical formulae. - grn Gremlin pictures. - html The preprocessor part of grohtml. - pic Diagram drawer. - refer Bibliographic references. - soelim File inclusion using tmac path. - tbl Tables. - -./src/roff Front-end programs. - groff Wrapper around troff. This is the main user program. - grog Guess groff command line options. - nroff Emulate classical nroff text formatter. - troff Main roff formatter program. - -./src/utils Utility programs around groff. - addftinfo Add information to old troff font files for use with groff. - afmtodit Create font description files for the PostScript device. - hpftodit Create font description files for the LJ4 device. - indxbib Make inverted index for bibliographic databases. - lkbib Search bibliographic databases. - lookbib Interactively search bibliographic databases. - pfbtops Translate a PostScript font in PFB format to PFA. - tfmtodit Create font description files for TeX DVI device. - xtotroff Create font description files for xditview. - -./tmac Macro files. - - -3) Documentation - -The groff documentation is scattered upon several places. - -- The main directory contains documents related to the groff source. - The README file contains the information needed to get the groff - package, report bugs, and contact the developers. - -- The man-page of each program (section 1) is kept in the source - directory of the program. - -- The man-pages for the other sections are found in `src/man'. - -- Documentation in other formats are located in the `doc' directory, - including the groff info file, tutorials, and manuals. - - -4) The roff parser - -The parsing of the roff language is done by troff. The input is converted -to tokens in `src/roff/troff/input.cpp' and transformed into `nodes' by -`src/roff/troff/env.cpp' and `src/roff/troff/node.cpp'. From these, the -intermediate output is generated (also in `node.cpp'). - - -5) Postprocessing - -The parser for the intermediate output and the postprocessing is in -`src/libs/libdriver/input.cpp'. This is used by all postprocessors. diff --git a/contrib/groff/MORE.STUFF b/contrib/groff/MORE.STUFF deleted file mode 100644 index b1c18f744b5d..000000000000 --- a/contrib/groff/MORE.STUFF +++ /dev/null @@ -1,198 +0,0 @@ -More stuff for groff -==================== - -Windows 32 ----------- - -Here two ports using the gcc compiler and other GNU tools: - -. Cygwin: - - http://sources.redhat.com/cygwin/ - - Look for a convenient mirror site in - - http://sources.redhat.com/cygwin/mirrors.html - - At any of those mirrors, groff can be found in the directory - latest/groff. - -. Kees Zeelenberg : - - http://gnuwin32.sourceforge.net/packages/groffl.htm - - This port includes recent versions of grap and deroff. - -dos ---- - -Binaries for Eli Zaretskii's port using the djgpp compiler are available -from - - ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/gro*b.zip - -and its mirrors; for installation details please read `arch/djgpp/README'. -This port also runs on Windows 32 systems, except Windows 2000. - -grap ----- - -An implementation of Kernighan & Bentley's grap language for typesetting -graphs. Written by Ted Faber . The actual version -can be found at - - http://www.lunabase.org/~faber/Vault/software/grap/ - -A djgpp port which runs on dos and most Windows 32 systems (Windows 95, -Windows 98, Windows NT) done by Kees Zeelenberg -is available from - - ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/ - -It is intended to be used with the djgpp port of groff. - -A Windows 32 port is included in the groff package available from - - http://gnuwin32.sourceforge.net/ - -plot2dev --------- - -This utility program can convert plot graphics to either pic or gremlin -files. It has been written by Richard Murphey -and Daniel Senderowicz (who has added the gremlin -driver). The actual version can be found as - - ftp://ftp.ffii.org/pub/groff/plot2dev-x.x.tar.gz - -troffcvt --------- - -From the web page: - - troffcvt is a translator that turns troff input into a form that can be - more easily processed. The troffcvt distribution comes with - postprocessors that turn troffcvt into various destination formats such - as HTML (Hypertext Markup Language), RTF (Rich Text Format) or plain - text. - -Note that you need a lot of additional packages to compile troffcvt; -everything is available from - - http://www.primate.wisc.edu/software/troffcvt/ - -unroff ------- - -From the README file: - - Unroff is a Scheme-based, programmable, extensible troff translator with - a back-end for the Hypertext Markup Language. Unroff is free software - and is distributed both as source and as precompiled binaries. - - http://www.informatik.uni-bremen.de/~net/unroff/unroff.html - -You need als Elk, the Scheme based Extension Language Kit, which is -available from - - http://www.informatik.uni-bremen.de/~net/elk - -deroff ------- - -Deroff removes roff constructs from documents for the purpose of indexing, -spell checking etc. - -Michael Haardt's implementation is a little smarter -than traditional implementations, because it knows about certain -man and --mm macros. It is able to generate a word list for spell checking tools -or omit headers for sentence analysis tools. It can further generate -cpp-style #line lines. - - http://www.moria.de/deroff/ - -Version 1.6 compiled with DJGPP (for MS-DOS and all Windows 32 systems, -i.e. Windows 95, Windows 98, Windows NT) is available from - - ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/ - -and its mirrors. - -A Windows 32 port of version 1.8 is available from - - http://gnuwin32.sourceforge.net/ - -David Frey has also written a deroff implementation -for Debian; it is available from - - ftp://ftp.debian.org/debian/pool/main/d/deroff/ - -miscellaneous -------------- - -. Ralph Corderoy's excellent page on troff: - - www.troff.org - - There are links for virtually everything related to troff. - -. Dr. Robert Hermann's groff gems are available from - - http://www.eas.slu.edu/People/RBHerrmann/GROFF/index.html - - At present there are examples for - - o creating business cards - o using groff to make large format posters for presentations - -. Robert Marks's collection of useful macros and scripts is available from - - http://www.agsm.edu.au/~bobm/odds+ends/scripts.html - - Description: - - o `polish': Is a sed (= the Unix stream editor) script that does many - things to ASCII text. Amongst other things, it breaks lines at new - sentences, reduces upper-case acronyms by one point size, adds - diacriticals, changes simple quotes into smart quotes, and makes a few - simple grammar checks. The best way to see what it does is to run it - as a sed script file (or files) on a text file and then compare the - output file with the original. - - o `DropCaps' is a troff script which replaces the initial letters of - paragraphs immediately after H1 and H2 headings with drop-capitals of - specified point size, and automatically flows the text around the new - drop cap. - - o `AJM Header' is a set of troff macros used in production of the - Australian Journal of Management. They use the Memorandum Macros (mm) - of AT&T, and so should be invoked with the UNIX troff -mm flag; they - should also work with the GNU troff -mm flag. - -. Thomas Baruchel has developed Meta-tbl, a tbl - postprocessor to manipulate table cells (like adding gray shades). The - latest version can be found at - - http://perso.libertysurf.fr/baruchel/ - -. gpresent, written by Bob Diertens . From the README - file: - - gpresent is a package for making presentation with groff and acroread. - It consist of a set of macros to be used with groff and a post-processor - for manipulating the PostScript output of groff. Without the use of the - PAUSE macro, it can also be used for making slides. - - It is available from - - www.science.uva.nl/~bobd/useful/gpresent/ - - -documentation -------------- - -Many documents related to the original versions of troff, ditroff, pic, -and others can be accessed from the following web pages: - - http://www.cs.bell-labs.com/cm/cs/cstr.html - http://www.cs.bell-labs.com/cm/cs/papers.html diff --git a/contrib/groff/Makefile b/contrib/groff/Makefile deleted file mode 100644 index 2a44c85f69aa..000000000000 --- a/contrib/groff/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (C) 1989-2000 Free Software Foundation, Inc. -# Written by James Clark (jjc@jclark.com) -# -# This file is part of groff. -# -# groff is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free -# Software Foundation; either version 2, or (at your option) any later -# version. -# -# groff is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License along -# with groff; see the file COPYING. If not, write to the Free Software -# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. - -SHELL=/bin/sh - -.PHONY: all -all: - $(SHELL) configure - $(MAKE) all diff --git a/contrib/groff/Makefile.ccpg b/contrib/groff/Makefile.ccpg deleted file mode 100644 index 3110df248f5f..000000000000 --- a/contrib/groff/Makefile.ccpg +++ /dev/null @@ -1,33 +0,0 @@ -# Makefile.ccpg -MAKEFILEPARTS=\ - $(top_srcdir)/Makefile.comm \ - $(top_builddir)/Makefile.cfg \ - $(srcdir)/Makefile.sub \ - $(top_srcdir)/Makefile.ccpg \ - Makefile.dep - -all: $(PROG) $(MANPAGES) - -$(PROG): $(OBJS) $(XLIBS) - $(LINK.cpp) -o $@ $(OBJS) $(XLIBS) $(EXTRA_LDFLAGS) $(LIBS) $(MLIB) - -install_bin: install_prog -install_prog: $(PROG) -install_data: install_man -install_man: $(MANPAGES) -uninstall_sub: uninstall_prog uninstall_man -depend: depend_src -depend.temp: $(GENSRCS) $(YTABC) -distfiles: $(YTABC) -TAGS: TAGS_src -TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS) -Makefile: $(MAKEFILEPARTS) -Makefile.dep: - touch Makefile.dep -$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION $(top_srcdir)/REVISION - -pure: $(PROG).pure - -$(PROG).pure: $(OBJS) $(XLIBS) - $(PURIFY) $(PURIFYCCFLAGS) \ - $(LINK.cpp) -o $@ $(OBJS) $(XLIBS) $(LIBS) $(MLIB) diff --git a/contrib/groff/Makefile.comm b/contrib/groff/Makefile.comm deleted file mode 100644 index fc34a5689496..000000000000 --- a/contrib/groff/Makefile.comm +++ /dev/null @@ -1,304 +0,0 @@ -# Copyright (C) 1989-2000, 2002, 2003, 2004 Free Software Foundation, Inc. -# Written by James Clark (jjc@jclark.com) -# -# This file is part of groff. -# -# groff is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free -# Software Foundation; either version 2, or (at your option) any later -# version. -# -# groff is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License along -# with groff; see the file COPYING. If not, write to the Free Software -# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. -# -# Makefile.comm -# -INCLUDES=-I. -I$(srcdir) \ - -I$(top_builddir)/src/include -I$(top_srcdir)/src/include -ALL_CCFLAGS=$(INCLUDES) $(CCDEFINES) $(CCFLAGS) $(CPPFLAGS) -COMPILE.cpp=$(CCC) $(ALL_CCFLAGS) -c -ALL_CFLAGS=$(INCLUDES) $(CDEFINES) $(CFLAGS) $(CPPFLAGS) -COMPILE.c=$(CC) $(ALL_CFLAGS) -c -LINK.cpp=$(CCC) $(CCFLAGS) $(LDFLAGS) -LINK.c=$(CC) $(CFLAGS) $(LDFLAGS) -LIBGROFF=$(top_builddir)/src/libs/libgroff/libgroff.$(LIBEXT) -LIBBIB=$(top_builddir)/src/libs/libbib/libbib.$(LIBEXT) -LIBDRIVER=$(top_builddir)/src/libs/libdriver/libdriver.$(LIBEXT) -LIBXUTIL=$(top_builddir)/src/libs/libxutil/libxutil.$(LIBEXT) -MLIB= -XLIBS= -YTABH= -YTABC= -GRAM= -LIBCLEAN= -CLEANADD= -CLEANDIRADD= -CLEANNOTSRCDIRADD= -MOSTLYCLEANFILES=$(MANCLEAN) $(PROG) $(OBJS) $(GENSRCS) $(GENHDRS) \ - depend.temp core y.output $(CLEANADD) -CLEANFILES=$(LIBCLEAN) -DISTCLEANFILES=TAGS Makefile Makefile.dep -REALCLEANFILES=$(YTABC) $(YTABH) -NAMEPREFIX= -HDRS= -MANPAGES=$(MAN1) $(MAN5) $(MAN7) -MANCLEAN=$(MANPAGES) -fontsubdir=$(fontdir)/dev$(DEV) - -all install install_bin install_data TAGS depend distfiles uninstall_sub: - -install: prefix_must_exist install_bin install_data -uninstall: uninstall_sub -pure: - -.PHONY: all clean distclean mostlyclean realclean extraclean depend distfiles -.PHONY: install install_bin install_data prefix_must_exist -.PHONY: uninstall uninstall_sub -.PHONY: pure - -prefix_must_exist: - @test -d $(prefix) \ - || (echo ; \ - echo The prefix directory \`$(prefix)\' doesn\'t exist; \ - echo ; \ - exit 1) - -mostlyclean: - -rm -f $(MOSTLYCLEANFILES) - -rm -rf $(CLEANDIRADD) - -@if test `cd $(srcdir); pwd` = `pwd`; then \ - :; \ - else \ - rm -f $(CLEANNOTSRCDIRADD); \ - fi - -clean: mostlyclean - -rm -f $(CLEANFILES) - -distclean: clean - -rm -f $(DISTCLEANFILES) - -@if test `cd $(srcdir); pwd` = `pwd`; then \ - :; \ - else \ - rm -f $(YTABC) $(YTABH); \ - fi - -realclean: distclean - -rm -f $(REALCLEANFILES) - -extraclean: distclean - -rm -f \#* *~ =* core junk grot old temp tmp tem *.new *.old *.orig - -.SUFFIXES: -.SUFFIXES: .o .obj .cpp .c .y .man .n - -.cpp.o: - $(COMPILE.cpp) $(EXTRA_CCFLAGS) $< - -.c.o: - $(COMPILE.c) $(EXTRA_CFLAGS) $< - -.cpp.obj: - $(COMPILE.cpp) $(EXTRA_CCFLAGS) $< - -.c.obj: - $(COMPILE.c) $(EXTRA_CFLAGS) $< - -.y.cpp: - if test -n "$(YTABH)"; then \ - $(YACC) $(YACCFLAGS) -d $<; \ - else \ - $(YACC) $(YACCFLAGS) $<; \ - fi - -test -f y.tab.h && mv y.tab.h y_tab.h - -test -f y.tab.c && mv y.tab.c y_tab.c - mv y_tab.c $(YTABC) - test -z "$(YTABH)" || mv y_tab.h $(YTABH) - -# The next rule is needed for make of Solaris 2.5.1 to override its -# built-in .y.o rule (which takes precedence over the .y.cpp rule above). -.y.o: - if test -n "$(YTABH)"; then \ - $(YACC) $(YACCFLAGS) -d $<; \ - else \ - $(YACC) $(YACCFLAGS) $<; \ - fi - -test -f y.tab.h && mv y.tab.h y_tab.h - -test -f y.tab.c && mv y.tab.c y_tab.c - mv y_tab.c $(YTABC) - test -z "$(YTABH)" || mv y_tab.h $(YTABH) - $(COMPILE.cpp) $(EXTRA_CCFLAGS) $(YTABC) - -.man.n: - @echo Making $@ from $< - @-rm -f $@ - @sed -e "s|@BINDIR@|$(bindir)|g" \ - -e "s|@FONTDIR@|$(fontdir)|g" \ - -e "s|@LOCALFONTDIR@|$(localfontdir)|g" \ - -e "s|@LEGACYFONTDIR@|$(legacyfontdir)|g" \ - -e "s|@MACRODIR@|$(tmacdir)|g" \ - -e "s|@SYSTEMMACRODIR@|$(systemtmacdir)|g" \ - -e "s|@LOCALMACRODIR@|$(localtmacdir)|g" \ - -e "s|@DOCDIR@|$(docdir)|g" \ - -e "s|@EXAMPLEDIR@|$(exampledir)|g" \ - -e "s|@HTMLDOCDIR@|$(htmldocdir)|g" \ - -e "s|@PDFDOCDIR@|$(pdfdocdir)|g" \ - -e "s|@DEVICE@|$(DEVICE)|g" \ - -e "s|@DEFAULT_INDEX@|$(indexdir)/$(indexname)|g" \ - -e "s|@DEFAULT_INDEX_NAME@|$(indexname)|g" \ - -e "s|@INDEX_SUFFIX@|$(indexext)|g" \ - -e "s|@COMMON_WORDS_FILE@|$(common_words_file)|g" \ - -e "s|@MAN1EXT@|$(man1ext)|g" \ - -e "s|@MAN5EXT@|$(man5ext)|g" \ - -e "s|@MAN7EXT@|$(man7ext)|g" \ - -e "s|@TMAC_S_PREFIX@|$(tmac_s_prefix)|g" \ - -e "s|@TMAC_M_PREFIX@|$(tmac_m_prefix)|g" \ - -e "s|@TMAC_AN_PREFIX@|$(tmac_an_prefix)|g" \ - -e "s|@TMAC_MDIR@|$(tmacdir)/mm|g" \ - -e "s|@BROKEN_SPOOLER_FLAGS@|$(BROKEN_SPOOLER_FLAGS)|g" \ - -e "s|@VERSION@|$(version)$(revision)|g" \ - -e "s|@MDATE@|`$(SHELL) $(top_srcdir)/mdate.sh $<`|g" \ - -e "s|@g@|$(g)|g" \ - -e "s!@G@!`echo $(g) | tr [a-z] [A-Z]`!g" \ - $< >$@ - -.PHONY: install_man -install_man: - -test -d $(manroot) || $(mkinstalldirs) $(manroot) - -test -d $(man1dir) || $(mkinstalldirs) $(man1dir) - @-pages="$(MAN1)"; \ - for p in $$pages; do \ - prog=`basename $$p .n`; \ - target=$(man1dir)/$(NAMEPREFIX)$$prog.$(man1ext); \ - rm -f $$target; \ - echo $(INSTALL_DATA) $$p $$target; \ - $(INSTALL_DATA) $$p $$target; \ - done - -test -d $(man5dir) || $(mkinstalldirs) $(man5dir) - @-pages="$(MAN5)"; \ - for p in $$pages; do \ - target=$(man5dir)/`basename $$p .n`.$(man5ext); \ - rm -f $$target; \ - echo $(INSTALL_DATA) $$p $$target; \ - $(INSTALL_DATA) $$p $$target; \ - done - -test -d $(man7dir) || $(mkinstalldirs) $(man7dir) - @-pages="$(MAN7)"; \ - for p in $$pages; do \ - target=$(man7dir)/`basename $$p .n`.$(man7ext); \ - rm -f $$target; \ - echo $(INSTALL_DATA) $$p $$target; \ - $(INSTALL_DATA) $$p $$target; \ - done - -.PHONY: uninstall_man -uninstall_man: - @-pages="$(MAN1)"; \ - for p in $$pages; do \ - target=$(man1dir)/$(NAMEPREFIX)`basename $$p .n`.$(man1ext); \ - echo rm -f $$target; \ - rm -f $$target; \ - done - @-pages="$(MAN5)"; \ - for p in $$pages; do \ - target=$(man5dir)/`basename $$p .n`.$(man5ext); \ - echo rm -f $$target; \ - rm -f $$target; \ - done - @-pages="$(MAN7)"; \ - for p in $$pages; do \ - target=$(man7dir)/`basename $$p .n`.$(man7ext); \ - echo rm -f $$target; \ - rm -f $$target; \ - done - -.PHONY: install_prog -install_prog: - -test -d $(bindir) || $(mkinstalldirs) $(bindir) - rm -f $(bindir)/$(NAMEPREFIX)$(PROG) - $(INSTALL_PROGRAM) $(PROG) $(bindir)/$(NAMEPREFIX)$(PROG) - -.PHONY: uninstall_prog -uninstall_prog: - -rm -f $(bindir)/$(NAMEPREFIX)$(PROG) - -.PHONY: install_dev -install_dev: - -test -d $(datadir) || $(mkinstalldirs) $(datadir) - -test -d $(dataprogramdir) || $(mkinstalldirs) $(dataprogramdir) - -test -d $(datasubdir) || $(mkinstalldirs) $(datasubdir) - -test -d $(fontdir) || $(mkinstalldirs) $(fontdir) - -test -d $(fontsubdir) || $(mkinstalldirs) $(fontsubdir) - -if test -d $(srcdir)/generate; then \ - test -d $(fontsubdir)/generate \ - || $(mkinstalldirs) $(fontsubdir)/generate; \ - fi - -test -z "$(DEVFILES)" \ - || for f in ""$(DEVFILES); do \ - rm -f $(fontsubdir)/$$f; \ - if test -f $$f; then \ - $(INSTALL_DATA) $$f $(fontsubdir)/$$f; \ - else \ - $(INSTALL_DATA) $(srcdir)/$$f $(fontsubdir)/$$f; \ - fi; \ - done - -test -z "$(DEVSCRIPTS)" \ - || for f in ""$(DEVSCRIPTS); do \ - rm -f $(fontsubdir)/$$f; \ - if test -f $$f; then \ - $(INSTALL_SCRIPT) $$f $(fontsubdir)/$$f; \ - else \ - $(INSTALL_SCRIPT) $(srcdir)/$$f $(fontsubdir)/$$f; \ - fi; \ - done - -.PHONY: uninstall_dev -uninstall_dev: - -test -z "$(DEVFILES)$(DEVSCRIPTS)" \ - || for f in ""$(DEVFILES) $(DEVSCRIPTS); do \ - rm -f $(fontsubdir)/$$f; \ - done - -test -d $(fontsubdir)/generate && rmdir $(fontsubdir)/generate - -rmdir $(fontsubdir) - -.PHONY: depend_src -depend_src: depend.temp - mv depend.temp Makefile.dep - -depend.temp: FORCE - > depend.temp; - if test -f "$(srcdir)/$(YTABC)"; then \ - ytabc="$(srcdir)/$(YTABC)"; \ - else \ - ytabc="$(YTABC)"; \ - fi; \ - test -z "$(CCSRCS)$(YTABC)" \ - || $(CCC) $(ALL_CCFLAGS) -MM $(CCSRCS) $$ytabc >>depend.temp - test -z "$(CSRCS)" \ - || $(CC) $(ALL_CFLAGS) -MM $(CSRCS) >>depend.temp - test -z "$(YTABH)" \ - || (sed -e 's|$(YTABH)|$(YTABC)|g' depend.temp >depend1.temp; \ - mv depend1.temp depend.temp) - -.PHONY: TAGS_src -TAGS_src: - $(ETAGS) $(ETAGSFLAGS) $(CCSRCS) $(CSRCS) - test -z "$(GRAM)$(HDRS)" \ - || $(ETAGS) $(ETAGSFLAGS) -a $(ETAGSCCFLAG) $(GRAM) $(HDRS) - -# This rule is only considered for the subdir_Makefile target. -Makefile: - -rm -f Makefile - echo srcdir=$(srcdir) >>Makefile - echo VPATH=$(VPATH) >>Makefile - cat $(MAKEFILEPARTS) /dev/null >>Makefile - -FORCE: - -.NOEXPORT: diff --git a/contrib/groff/Makefile.cpg b/contrib/groff/Makefile.cpg deleted file mode 100644 index 1a6974ad5a83..000000000000 --- a/contrib/groff/Makefile.cpg +++ /dev/null @@ -1,27 +0,0 @@ -# Makefile.cpg -MAKEFILEPARTS=\ - $(top_srcdir)/Makefile.comm \ - $(top_builddir)/Makefile.cfg \ - $(srcdir)/Makefile.sub \ - $(top_srcdir)/Makefile.cpg \ - Makefile.dep - -all: $(PROG) $(MANPAGES) - -$(PROG): $(OBJS) $(XLIBS) - $(LINK.c) -o $@ $(OBJS) $(XLIBS) $(EXTRA_LDFLAGS) $(LIBS) $(MLIB) - -install_bin: install_prog -install_prog: $(PROG) -install_data: install_man -install_man: $(MANPAGES) -uninstall_sub: uninstall_prog uninstall_man -depend: depend_src -depend.temp: $(GENSRCS) $(YTABC) -distfiles: $(YTABC) -TAGS: TAGS_src -TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS) -Makefile: $(MAKEFILEPARTS) -Makefile.dep: - touch Makefile.dep -$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION $(top_srcdir)/REVISION diff --git a/contrib/groff/Makefile.dev b/contrib/groff/Makefile.dev deleted file mode 100644 index 6c70fff68107..000000000000 --- a/contrib/groff/Makefile.dev +++ /dev/null @@ -1,4 +0,0 @@ -all: $(DEVFILES) $(DEVSCRIPTS) -install_data: install_dev -uninstall_sub: uninstall_dev -install_dev: $(DEVFILES) $(DEVSCRIPTS) diff --git a/contrib/groff/Makefile.in b/contrib/groff/Makefile.in deleted file mode 100644 index 26d55dee11bd..000000000000 --- a/contrib/groff/Makefile.in +++ /dev/null @@ -1,776 +0,0 @@ -# Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# Written by James Clark (jjc@jclark.com) -# -# This file is part of groff. -# -# groff is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free -# Software Foundation; either version 2, or (at your option) any later -# version. -# -# groff is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License along -# with groff; see the file COPYING. If not, write to the Free Software -# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. - -SHELL=@SHELL@ - -srcdir=@srcdir@ -top_srcdir=@abs_top_srcdir@ -VPATH=@srcdir@ -top_builddir=@abs_top_builddir@ - -# `RT_SEP' is the operating system's native PATH SEPARATOR CHAR, which -# is to be used in runtime PATHs compiled into groff executables. -RT_SEP=@GROFF_PATH_SEPARATOR@ - -# `SH_SEP' is a alternative PATH SEPARATOR CHAR, to be used in shell -# scripts and makefile rules; it may be the same as `RT_SEP', but, -# particularly in some Microsoft environments, it may differ. -SH_SEP=@PATH_SEPARATOR@ - -version=`cat $(top_srcdir)/VERSION` -# No additional number if revision is zero. -revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION` - -# Define `page' to be letter if your PostScript printer uses 8.5x11 -# paper (USA) and define it to be A4, if it uses A4 paper (rest of the -# world). -PAGE=@PAGE@ - -# The name of the ghostscript program. Normally, gs, on GNU/Linux -# but it might be different on MS-DOS/MS-WIN32 systems. -GHOSTSCRIPT=@GHOSTSCRIPT@ - -# `ALT_GHOSTSCRIPT_PROGS' specifies a list alternative names, -# which can be tried if `GHOSTSCRIPT' cannot be found at run time. -ALT_GHOSTSCRIPT_PROGS=@ALT_GHOSTSCRIPT_PROGS@ - -# Similarly, `ALT_AWK_PROGS' specifies a list of alternative names, -# which can be tried at run time, to identify the awk program. -ALT_AWK_PROGS=@ALT_AWK_PROGS@ - -# Normally the Postscript driver, grops, produces output that conforms -# to version 3.0 of the Adobe Document Structuring Conventions. -# Unfortunately some spoolers and previewers can't handle such output. -# The BROKEN_SPOOLER_FLAGS variable tells grops what it should do to -# make its output acceptable to such programs. This variable controls -# only the default behaviour of grops; the behaviour can be changed at -# runtime by the grops -b option (and so by groff -P-b). -# Use a value of 0 if your spoolers and previewers are able to handle -# conforming PostScript correctly. -# Add 1 if no %%{Begin,End}DocumentSetup comments should be generated; -# this is needed for early versions of TranScript that get confused by -# anything between the %%EndProlog line and the first %%Page: comment. -# Add 2 if lines in included files beginning with %! should be -# stripped out; this is needed for the OpenWindows 2.0 pageview previewer. -# Add 4 if %%Page, %%Trailer and %%EndProlog comments should be -# stripped out of included files; this is needed for spoolers that -# don't understand the %%{Begin,End}Document comments. I suspect this -# includes early versions of TranScript. -# Add 8 if the first line of the PostScript output should be %!PS-Adobe-2.0 -# rather than %!PS-Adobe-3.0; this is needed when using Sun's Newsprint -# with a printer that requires page reversal. -BROKEN_SPOOLER_FLAGS=@BROKEN_SPOOLER_FLAGS@ - -# `DEVICE' is the default device. -DEVICE=ps - -# `XDEVDIRS' is either `font/devX{75,100}{,-12}' or empty. -XDEVDIRS=@XDEVDIRS@ - -# `XPROGDIRS' is either `src/devices/xditview src/utils/xtotroff' or empty. -XPROGDIRS=@XPROGDIRS@ - -# `XLIBDIRS' is either `src/libs/libxutil' or empty. -XLIBDIRS=@XLIBDIRS@ - -# `TTYDEVDIRS' is either `font/devascii font/devlatin1' (for -# ASCII) or `font/devcp1047' (for EBCDIC) plus font/devutf8. -TTYDEVDIRS=@TTYDEVDIRS@ font/devutf8 - -# `OTHERDEVDIRS' is either `font/devlj4 font/devlbp' (for ASCII) or -# empty (for EBCDIC). -OTHERDEVDIRS=@OTHERDEVDIRS@ - -# `PSPRINT' is the command to use for printing a PostScript file, -# for example `lpr'. -PSPRINT=@PSPRINT@ - -# `DVIPRINT' is the command to use for printing a TeX dvi file, -# for example `lpr -d'. -DVIPRINT=@DVIPRINT@ - -# Prefix for names of programs that have Unix counterparts. -# For example, if `g' is `g' then troff will be installed as -# gtroff. This doesn't affect programs like grops or groff that have -# no Unix counterparts. Note that the groff versions of eqn and tbl -# will not work with Unix troff. -g=@g@ - -# Common prefix for installation directories. -# Used in definitions of exec_prefix, datasubdir, fontpath, manroot. -# This must already exist when you do make install. -prefix=@prefix@ -exec_prefix=@exec_prefix@ - -# `bindir' says where to install executables. -bindir=@bindir@ - -# `libdir' says where to install platform-dependent data. -libdir=@libdir@ -libprogramdir=$(libdir)/groff - -# `datasubdir' says where to install platform-independent data files. -datadir=@datadir@ -dataprogramdir=$(datadir)/groff -datasubdir=$(dataprogramdir)/$(version)$(revision) - -# `infodir' says where to install info files. -infodir=@infodir@ - -# `docdir' says where to install documentation files. -docdir=$(datadir)/doc/groff/$(version)$(revision) - -# `exampledir' says where to install example files. -exampledir=$(docdir)/examples - -# `htmldocdir' says where to install documentation in HTML format. -htmldocdir=$(docdir)/html - -# `pdfdocdir' says where to install documentation in PDF format. -pdfdocdir=$(docdir)/pdf - -# `fontdir' says where to install dev*/*. -fontdir=$(datasubdir)/font - -# `localfontdir' says where local fonts will be installed (as dev*/*). -localfontdir=$(dataprogramdir)/site-font - -# `legacyfontdir' is for compatibility with non-GNU troff. -legacyfontdir=/usr/lib/font - -# `fontpath' says where to look for dev*/*. -fontpath=$(localfontdir)$(RT_SEP)$(fontdir)$(RT_SEP)$(legacyfontdir) - -# `tmacdir' says where to install macros. -tmacdir=$(datasubdir)/tmac - -# `systemtmacdir' says where to install platform-dependent macros. -systemtmacdir=$(libprogramdir)/site-tmac - -# `localtmacdir' says where local files will be installed. -localtmacdir=$(dataprogramdir)/site-tmac - -# `appresdir' says where to install the application resource file for -# gxditview. -appresdir=@appresdir@ - -# `tmacpath' says where to look for macro files. -# The current directory will be prepended in unsafe mode only; the home -# directory will be always added. -# `troffrc' and `troffrc-end' (and `eqnrc') are searched neither in the -# current nor in the home directory. -tmacpath=$(systemtmacdir)$(RT_SEP)$(localtmacdir)$(RT_SEP)$(tmacdir) - -# `sys_tmac_prefix' is prefix (if any) for system macro packages. -sys_tmac_prefix=@sys_tmac_prefix@ - -# `pnmtops_nosetpage' is the command to be run to generate an eps -# file. Some versions of pnmtops provide the -nosetpage option. -# We detect this and use it if present. -pnmtops_nosetpage=@pnmtops_nosetpage@ - -# `tmac_wrap' is list of system macro packages that should be made -# available to groff by creating a corresponding macro package -# in the groff macro directory that references the system macro -# package. -tmac_wrap=@tmac_wrap@ - -# If there is a groff version of a macro package listed in $(tmac_wrap), -# then the groff version will be installed with a prefix of this. -# Don't make this empty. -tmac_prefix=g - -# The groff -mm macros will be available as -m$(tmac_m_prefix)m. -tmac_m_prefix=\ - `for i in $(tmac_wrap) ""; do case "$$i" in m) echo $(tmac_prefix);; esac; done` -# The groff -ms macros will be available as -m$(tmac_s_prefix)s. -tmac_s_prefix=\ - `for i in $(tmac_wrap) ""; do case "$$i" in s) echo $(tmac_prefix);; esac; done` -# The groff -man macros will be available as -m$(tmac_an_prefix)an. -tmac_an_prefix=\ - `for i in $(tmac_wrap) ""; do case "$$i" in an) echo $(tmac_prefix);; esac; done` - -# Extension to be used for refer index files. Index files are not -# sharable between different architectures, so you might want to use -# different suffixes for different architectures. Choose an extension -# that doesn't conflict with refer or any other indexing program. -indexext=.i - -# Directory containing the default index for refer. -indexdir=/usr/dict/papers - -# The filename (without suffix) of the default index for refer. -indexname=Ind - -# common_words_file is a file containing a list of common words. -# If your system provides /usr/lib/eign it will be copied onto this, -# otherwise the supplied eign file will be used. -common_words_file=$(datasubdir)/eign - -# `manroot' is the root of the man page directory tree. -mandir=@mandir@ -manroot=$(mandir) - -# `man1ext' is the man section for user commands. -man1ext=1 -man1dir=$(manroot)/man$(man1ext) - -# `man5ext' is the man section for file formats. -man5ext=5 -man5dir=$(manroot)/man$(man5ext) - -# `man7ext' is the man section for macros. -man7ext=7 -man7dir=$(manroot)/man$(man7ext) - -# The configure script checks whether all necessary utility programs for -# grohtml are available -- only then we can build the HTML documentation. -make_html=@make_html@ -make_install_html=@make_install_html@ - -# The configure script also checks whether all necessary utility programs -# for pdfroff are available -- only then we can build PDF documentation. -make_pdfdoc=@make_pdfdoc@ -make_install_pdfdoc=@make_install_pdfdoc@ - -# DEFINES should include the following: -# -DHAVE_MMAP if you have mmap() and -# -DARRAY_DELETE_NEEDS_SIZE if your C++ doesn't understand `delete []' -# -DSYS_SIGLIST_DECLARED if you have sys_siglist[] -# -DWCOREFLAG=0200 if the 0200 bit of the status returned by -# wait() indicates whether a core image was -# produced for a process that was terminated -# by a signal -# -# -DHAVE_DIRENT_H if you have -# -DHAVE_LIMITS_H if you have -# -DHAVE_CC_LIMITS_H if you have a C++ -# -DHAVE_MATH_H if you have -# -DHAVE_CC_OSFCN_H if you have a C++ -# -DHAVE_CC_INTTYPES_H if you have a C++ -# -DHAVE_STDLIB_H if you have -# -DHAVE_STRING_H if you have -# -DHAVE_STRINGS_H if you have -# -DHAVE_SYS_DIR_H if you have -# -DHAVE_SYS_TIME_H if you have -# -DHAVE_UNISTD_H if you have -# -# -DHAVE_FMOD if you have fmod() -# -DHAVE_GETCWD if you have getcwd() -# -DHAVE_GETTIMEOFDAY if you have gettimeofday() -# -DHAVE_ISATTY if you have isatty() -# -DHAVE_KILL if you have kill() -# -DHAVE_MKSTEMP if you have mkstemp() -# -DHAVE_MMAP if you have mmap() -# -DHAVE_PUTENV if you have putenv() -# -DHAVE_RENAME if you have rename() -# -DHAVE_SETLOCALE if you have setlocale() -# -DHAVE_SNPRINTF if you have snprintf() -# -DHAVE_STRCASECMP if you have strcasecmp() -# -DHAVE_STRNCASECMP if you have strncasecmp() -# -DHAVE_STRERROR if you have strerror() -# -DHAVE_STRSEP if you have strsep() -# -DHAVE_STRTOL if you have strtol() -# -DHAVE_VSNPRINTF if you have vsnprintf() -# -# -DNEED_DECLARATION_GETTIMEOFTODAY -# if your C++ doesn't declare -# gettimeofday() -# -DNEED_DECLARATION_HYPOT if your C++ doesn't declare hypot() -# -DNEED_DECLARATION_PCLOSE if your C++ doesn't declare pclose() -# -DNEED_DECLARATION_POPEN if your C++ doesn't declare popen() -# -DNEED_DECLARATION_PUTENV if your C++ doesn't declare -# putenv() -# -DNEED_DECLARATION_RAND if your C++ doesn't declare rand() -# -DNEED_DECLARATION_SNPRINTF if your C++ doesn't declare -# snprintf() -# -DNEED_DECLARATION_SRAND if your C++ doesn't declare srand() -# -DNEED_DECLARATION_STRCASECMP if your C++ doesn't declare -# strcasecmp() -# -DNEED_DECLARATION_STRNCASECMP -# if your C++ doesn't declare -# strncasecmp() -# -DNEED_DECLARATION_VFPRINTF if your C++ doesn't declare -# vfprintf() -# -DNEED_DECLARATION_VSNPRINTF if your C++ doesn't declare -# vsnprintf() -# -# -DRET_TYPE_SRAND_IS_VOID if srand() returns void not int -# -DHAVE_SYS_NERR if you have sysnerr in or -# -DHAVE_SYS_ERRLIST if you have sys_errlist in or -# -# -DTRADITIONAL_CPP if your C++ compiler uses a traditional -# (Reiser) preprocessor -# -DLONG_FOR_TIME_T if localtime() takes a long * not a time_t * -# -DHAVE_STRUCT_EXCEPTION if defines struct exception -# -DRETSIGTYPE=int if signal handlers return int not void -# -DIS_EBCDIC_HOST if the host's encoding is EBCDIC -# -DPAGE=A4 if the the printer's page size is A4 -# -DGHOSTSCRIPT=gs the name (and directory if required) of the -# ghostscript program -DEFINES=@DEFS@ - -# Include -# -# {fmod,getcwd,mkstemp,putenv,snprintf,strcasecmp, -# strerror,strncasecmp,strtol}.$(OBJEXT) -# -# in LIBOBJS if your C library is missing the corresponding function. -# vsnprintf is defined in the snprintf.$(OBJEXT) module. -LIBOBJS=@LIBOBJS@ - -# `CCC' is the compiler for C++ (.cpp) files. -CCC=@CXX@ -CC=@CC@ -# CCDEFINES are definitions for C++ compilations. -CCDEFINES=$(DEFINES) -# CDEFINES are definitions for C compilations. -CDEFINES=$(DEFINES) - -CCFLAGS=@CXXFLAGS@ -CFLAGS=@CFLAGS@ -CPPFLAGS=@CPPFLAGS@ -LDFLAGS=@LDFLAGS@ - -X_CFLAGS=@X_CFLAGS@ -X_LIBS=@X_LIBS@ -X_EXTRA_LIBS=@X_EXTRA_LIBS@ -X_PRE_LIBS=@X_PRE_LIBS@ - -YACC=@YACC@ -YACCFLAGS=-v - -EXEEXT=@EXEEXT@ -OBJEXT=@OBJEXT@ -# a simple heuristic assumption -LIBEXT=`case $(OBJEXT) in obj) echo lib;; *) echo a;; esac` -LIBS=@LIBS@ -LIBM=@LIBM@ -RANLIB=@RANLIB@ -INSTALL=@INSTALL@ -INSTALL_PROGRAM=@INSTALL_PROGRAM@ -INSTALL_SCRIPT=@INSTALL_SCRIPT@ -INSTALL_DATA=@INSTALL_DATA@ -INSTALL_INFO=@INSTALL_INFO@ -LN_S=@LN_S@ -AR=ar -ETAGS=etags -ETAGSFLAGS= -# Flag that tells etags to assume C++. -ETAGSCCFLAG=-C -# Full path to perl. -PERLPATH=@PERLPATH@ -# Sed command with which to edit sh scripts. -SH_SCRIPT_SED_CMD=@SH_SCRIPT_SED_CMD@ -# Sed script to deal with OS dependencies in sh scripts. -SH_DEPS_SED_SCRIPT=$(top_builddir)/arch/misc/shdeps.sed - -# The program to create directory hierarchies. -mkinstalldirs= $(SHELL) $(top_srcdir)/mkinstalldirs - -PURIFY=purify -PURIFYCCFLAGS= -#PURIFYCCFLAGS=-g++=yes \ -# -collector=`dirname \`$(CCC) -print-libgcc-file-name\``/ld - -# Passing down MAKEOVERRIDES prevents $(MAKE) from containing a second -# copy of $(MDEFINES) when making individual directories; this could -# cause the argument list to become too long on some systems. -MDEFINES= \ - "ALT_AWK_PROGS=$(ALT_AWK_PROGS)" \ - "ALT_GHOSTSCRIPT_PROGS=$(ALT_GHOSTSCRIPT_PROGS)" \ - "AR=$(AR)" \ - "BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)" \ - "CC=$(CC)" \ - "CCC=$(CCC)" \ - "CCDEFINES=$(CCDEFINES)" \ - "CCFLAGS=$(CCFLAGS)" \ - "CDEFINES=$(CDEFINES)" \ - "CFLAGS=$(CFLAGS)" \ - "CPPFLAGS=$(CPPFLAGS)" \ - "DEVICE=$(DEVICE)" \ - "DVIPRINT=$(DVIPRINT)" \ - "ETAGS=$(ETAGS)" \ - "ETAGSCCFLAG=$(ETAGSCCFLAG)" \ - "ETAGSFLAGS=$(ETAGSFLAGS)" \ - "EXEEXT=$(EXEEXT)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_INFO=$(INSTALL_INFO)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBEXT=$(LIBEXT)" \ - "LIBM=$(LIBM)" \ - "LIBOBJS=$(LIBOBJS)" \ - "LIBS=$(LIBS)" \ - "MAKEOVERRIDES=$(MAKEOVERRIDES)" \ - "OBJEXT=$(OBJEXT)" \ - "OTHERDEVDIRS=$(OTHERDEVDIRS)" \ - "PAGE=$(PAGE)" \ - "GHOSTSCRIPT=$(GHOSTSCRIPT)" \ - "PERLPATH=$(PERLPATH)" \ - "PSPRINT=$(PSPRINT)" \ - "PURIFY=$(PURIFY)" \ - "PURIFYCCFLAGS=$(PURIFYCCFLAGS)" \ - "RANLIB=$(RANLIB)" \ - "RT_SEP=$(RT_SEP)" \ - "SH_SEP=$(SH_SEP)" \ - "SHELL=$(SHELL)" \ - "SH_SCRIPT_SED_CMD=$(SH_SCRIPT_SED_CMD)" \ - "SH_DEPS_SED_SCRIPT=$(SH_DEPS_SED_SCRIPT)" \ - "TTYDEVDIRS=$(TTYDEVDIRS)" \ - "XDEVDIRS=$(XDEVDIRS)" \ - "XLIBDIRS=$(XLIBDIRS)" \ - "XPROGDIRS=$(XPROGDIRS)" \ - "X_CFLAGS=$(X_CFLAGS)" \ - "X_LIBS=$(X_LIBS)" \ - "X_EXTRA_LIBS=$(X_EXTRA_LIBS)" \ - "X_PRE_LIBS=$(X_PRE_LIBS)" \ - "YACC=$(YACC)" \ - "YACCFLAGS=$(YACCFLAGS)" \ - "appresdir=$(appresdir)" \ - "bindir=$(bindir)" \ - "common_words_file=$(common_words_file)" \ - "datadir=$(datadir)" \ - "dataprogramdir=$(dataprogramdir)" \ - "datasubdir=$(datasubdir)" \ - "docdir=$(docdir)" \ - "exampledir=$(exampledir)" \ - "exec_prefix=$(exec_prefix)" \ - "fontdir=$(fontdir)" \ - "fontpath=$(fontpath)" \ - "g=$(g)" \ - "htmldocdir=$(htmldocdir)" \ - "pdfdocdir=$(pdfdocdir)" \ - "indexdir=$(indexdir)" \ - "indexext=$(indexext)" \ - "indexname=$(indexname)" \ - "infodir=$(infodir)" \ - "legacyfontdir=$(legacyfontdir)" \ - "libdir=$(libdir)" \ - "libprogramdir=$(libprogramdir)" \ - "localfontdir=$(localfontdir)" \ - "localtmacdir=$(localtmacdir)" \ - "make_html=$(make_html)" \ - "make_install_html=$(make_install_html)" \ - "make_pdfdoc=$(make_pdfdoc)" \ - "make_install_pdfdoc=$(make_install_pdfdoc)" \ - "man1dir=$(man1dir)" \ - "man1ext=$(man1ext)" \ - "man5dir=$(man5dir)" \ - "man5ext=$(man5ext)" \ - "man7dir=$(man7dir)" \ - "man7ext=$(man7ext)" \ - "manroot=$(manroot)" \ - "mkinstalldirs=$(mkinstalldirs)" \ - "prefix=$(prefix)" \ - "revision=$(revision)" \ - "sys_tmac_prefix=$(sys_tmac_prefix)" \ - "pnmtops_nosetpage=$(pnmtops_nosetpage)" \ - "systemtmacdir=$(systemtmacdir)" \ - "tmac_an_prefix=$(tmac_an_prefix)" \ - "tmac_m_prefix=$(tmac_m_prefix)" \ - "tmac_s_prefix=$(tmac_s_prefix)" \ - "tmac_wrap=$(tmac_wrap)" \ - "tmacdir=$(tmacdir)" \ - "tmacpath=$(tmacpath)" \ - "top_builddir=$(top_builddir)" \ - "top_srcdir=$(top_srcdir)" \ - "version=$(version)" - -INCDIRS=src/include -LIBDIRS=\ - src/libs/libgroff \ - src/libs/libdriver \ - src/libs/libbib \ - $(XLIBDIRS) -CCPROGDIRS=\ - src/roff/groff \ - src/roff/troff \ - src/preproc/tbl \ - src/preproc/pic \ - src/preproc/eqn \ - src/preproc/grn \ - src/preproc/refer \ - src/preproc/soelim \ - src/preproc/html \ - src/devices/grops \ - src/devices/grotty \ - src/devices/grodvi \ - src/devices/grolj4 \ - src/devices/grohtml \ - src/devices/grolbp \ - src/utils/tfmtodit \ - src/utils/hpftodit \ - src/utils/lookbib \ - src/utils/indxbib \ - src/utils/lkbib \ - src/utils/addftinfo -CPROGDIRS=\ - src/utils/pfbtops \ - $(XPROGDIRS) -PROGDEPDIRS=arch/misc -PROGDIRS=$(PROGDEPDIRS) $(CCPROGDIRS) $(CPROGDIRS) -DEVDIRS=\ - font/devps \ - font/devdvi \ - font/devhtml -ALLTTYDEVDIRS=\ - font/devascii \ - font/devlatin1 \ - font/devutf8 \ - font/devcp1047 -# `doc' must be processed before `contrib/pdfmark'. -OTHERDIRS=\ - man \ - tmac \ - src/utils/afmtodit \ - src/roff/grog \ - src/roff/nroff \ - doc \ - contrib/mm \ - contrib/pic2graph \ - contrib/eqn2graph \ - contrib/grap2graph \ - contrib/groffer \ - contrib/mom \ - contrib/pdfmark \ - contrib/gdiffmk -ALLDIRS=$(INCDIRS) $(LIBDIRS) $(PROGDIRS) \ - $(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) $(TTYDEVDIRS) $(OTHERDIRS) -EXTRADIRS=\ - font/devps/generate \ - font/devdvi/generate \ - font/devlj4/generate \ - doc -NOMAKEDIRS=\ - arch/djgpp \ - contrib/mm/examples \ - contrib/mm/mm \ - contrib/mom/examples \ - contrib/mom/momdoc \ - contrib/gdiffmk/tests \ - src/libs/snprintf -DISTDIRS=\ - $(INCDIRS) $(LIBDIRS) $(PROGDIRS) $(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) \ - $(ALLTTYDEVDIRS) $(OTHERDIRS) $(EXTRADIRS) $(NOMAKEDIRS) -TARGETS=all install install_bin install_data clean distclean mostlyclean \ - realclean extraclean distfiles TAGS depend uninstall_sub - -# This ENVSETUP gork is required by the DJGPP build on Windows 9X, -# where Make needs to be case-sensitive to find files like BI and VERSION. -ENVSETUP=\ - if test -f $(srcdir)/makefile.ccpg* && \ - test -f $(srcdir)/Makefile.ccpg*; then \ - FNCASE=y; export FNCASE; \ - else :; \ - fi - -do=all -dodirs=$(ALLDIRS) dot -# Default target for subdir_Makefile -subdir=src/roff/troff - - -$(TARGETS): - @$(ENVSETUP); $(MAKE) $(MDEFINES) do=$@ $(dodirs) - -dot: FORCE - @$(ENVSETUP); \ - $(MAKE) $(MDEFINES) srcdir=$(srcdir) VPATH=$(srcdir) \ - -f $(top_srcdir)/Makefile.comm \ - -f $(top_srcdir)/Makefile.sub $(do) - -$(LIBDIRS): FORCE - @$(ENVSETUP); \ - if test $(srcdir) = .; then \ - srcdir=.; \ - else \ - srcdir=`cd $(srcdir); pwd`/$@; \ - fi; \ - test -d $@ || $(mkinstalldirs) $@; \ - cd $@; \ - test -f Makefile.dep || touch Makefile.dep; \ - $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ - -f $(top_srcdir)/Makefile.comm \ - -f $$srcdir/Makefile.sub \ - -f $(top_srcdir)/Makefile.lib \ - -f Makefile.dep $(do) - -$(CPROGDIRS): FORCE - @$(ENVSETUP); \ - if test $(srcdir) = .; then \ - srcdir=.; \ - else \ - srcdir=`cd $(srcdir); pwd`/$@; \ - fi; \ - test -d $@ || $(mkinstalldirs) $@; \ - cd $@; \ - test -f Makefile.dep || touch Makefile.dep; \ - $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ - -f $(top_srcdir)/Makefile.comm \ - -f $$srcdir/Makefile.sub \ - -f $(top_srcdir)/Makefile.cpg \ - -f Makefile.dep $(do) - -$(CCPROGDIRS): FORCE - @$(ENVSETUP); \ - if test $(srcdir) = .; then \ - srcdir=.; \ - else \ - srcdir=`cd $(srcdir); pwd`/$@; \ - fi; \ - test -d $@ || $(mkinstalldirs) $@; \ - cd $@; \ - test -f Makefile.dep || touch Makefile.dep; \ - $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ - -f $(top_srcdir)/Makefile.comm \ - -f $$srcdir/Makefile.sub \ - -f $(top_srcdir)/Makefile.ccpg \ - -f Makefile.dep $(do) - -$(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) $(TTYDEVDIRS): FORCE - @$(ENVSETUP); \ - if test $(srcdir) = .; then \ - srcdir=.; \ - else \ - srcdir=`cd $(srcdir); pwd`/$@; \ - fi; \ - test -d $@ || $(mkinstalldirs) $@; \ - cd $@; \ - $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ - -f $(top_srcdir)/Makefile.comm \ - -f $$srcdir/Makefile.sub \ - -f $(top_srcdir)/Makefile.dev $(do) - -$(INCDIRS) $(PROGDEPDIRS) $(OTHERDIRS): FORCE - @$(ENVSETUP); \ - if test $(srcdir) = .; then \ - srcdir=.; \ - else \ - srcdir=`cd $(srcdir); pwd`/$@; \ - fi; \ - test -d $@ || $(mkinstalldirs) $@; \ - cd $@; \ - $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ - -f $(top_srcdir)/Makefile.comm \ - -f $$srcdir/Makefile.sub \ - -f $(top_srcdir)/Makefile.man $(do) - -.PHONY: dist -dist: - -rm -fr tmp - rm -f groff-$(version)$(revision).tar.gz - mkdir tmp - for d in $(DISTDIRS); do \ - $(mkinstalldirs) tmp/$$d; \ - done - srcdir=`cd $(srcdir); pwd`; \ - cd tmp; \ - $(LN_S) ../Makefile .; \ - $(LN_S) $$srcdir/* . 2>/dev/null || true; \ - rm -rf CVS; \ - for d in $(DISTDIRS); do \ - (cd $$d; \ - $(LN_S) $$srcdir/$$d/* . 2>/dev/null; \ - rm -rf CVS || true); \ - done; \ - $(MAKE) srcdir=. VPATH=. distfiles; \ - $(MAKE) srcdir=. VPATH=. extraclean; \ - for d in $(EXTRADIRS); do \ - (cd $$d; \ - if test -f Makefile; then \ - $(MAKE) extraclean; \ - else \ - $(MAKE) -f $(top_builddir)/$$d/Makefile extraclean; \ - fi); \ - done; \ - rm -f Makefile; \ - $(LN_S) $$srcdir/Makefile.init Makefile - mv tmp groff-$(version)$(revision) - tar cfh - groff-$(version)$(revision) | \ - gzip -c >groff-$(version)$(revision).tar.gz - rm -fr groff-$(version)$(revision) - -# $(PROGDIRS): libgroff -# grops grotty grodvi: libdriver -# refer lookbib indxbib lkbib: libbib -# $(LIBDIRS) $(PROGDIRS): include - -.PHONY: $(ALLDIRS) dot $(TARGETS) FORCE - -# Create a Makefile in $(subdir). This is useful for development since it -# avoids running make recursively. -subdir_Makefile: Makefile.cfg - $(MAKE) do=Makefile $(subdir) - -Makefile.cfg: Makefile - >Makefile.cfg - for var in $(MDEFINES); do \ - echo "$$var" >>Makefile.cfg; \ - done - -Makefile: Makefile.in - $(SHELL) config.status - -.PHONY: uninstall -uninstall: uninstall_sub uninstall_dirs - -.PHONY: uninstall_dirs -uninstall_dirs: -# Use `rmdir' here so that the directories are only removed if they are empty. - -rmdir $(man1dir) $(man5dir) $(man7dir) $(manroot) \ - $(tmacdir) $(systemtmacdir) $(localtmacdir) \ - $(fontdir) $(localfontdir) $(bindir) \ - $(datasubdir) $(dataprogramdir) $(infodir) \ - $(exampledir) $(htmldocdir) $(pdfdocdir) $(docdir) \ - $(libprogramdir) $(libdir) \ - $(datadir)/doc/groff $(datadir)/doc $(datadir) 2>/dev/null || : - -.PHONY: check docheck -check: site.exp docheck - -docheck: - if $(SHELL) -c "runtest --version" > /dev/null 2>&1; then \ - runtest; \ - else \ - echo "WARNING: could not find \`runtest'" 1>&2; \ - fi - -# This snippet has been taken from the automake package. - -site.exp: - @echo "Making a new site.exp file..." - @echo "## these variables are automatically generated by make ##" >site.tmp - @echo "# Do not edit here. If you wish to override these values" >>site.tmp - @echo "# edit the last section" >>site.tmp - @echo "set tool groff" >>site.tmp - @echo "set srcdir $(srcdir)/testsuite" >>site.tmp - @echo "set objdir `pwd`" >> site.tmp - @echo "## All variables above are generated by configure. Do not edit! ##" >> site.tmp - @test ! -f site.exp \ - || sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp - @-rm -f site.bak - @test ! -f site.exp || mv site.exp site.bak - @mv site.tmp site.exp - -FORCE: - -.NOEXPORT: diff --git a/contrib/groff/Makefile.init b/contrib/groff/Makefile.init deleted file mode 100644 index 2a44c85f69aa..000000000000 --- a/contrib/groff/Makefile.init +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (C) 1989-2000 Free Software Foundation, Inc. -# Written by James Clark (jjc@jclark.com) -# -# This file is part of groff. -# -# groff is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free -# Software Foundation; either version 2, or (at your option) any later -# version. -# -# groff is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License along -# with groff; see the file COPYING. If not, write to the Free Software -# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. - -SHELL=/bin/sh - -.PHONY: all -all: - $(SHELL) configure - $(MAKE) all diff --git a/contrib/groff/Makefile.lib b/contrib/groff/Makefile.lib deleted file mode 100644 index 62a82221109d..000000000000 --- a/contrib/groff/Makefile.lib +++ /dev/null @@ -1,20 +0,0 @@ -LIBCLEAN=lib$(LIB).$(LIBEXT) -MAKEFILEPARTS=\ - $(top_srcdir)/Makefile.comm \ - $(top_builddir)/Makefile.cfg \ - $(srcdir)/Makefile.sub \ - $(top_srcdir)/Makefile.lib \ - Makefile.dep - -all: lib$(LIB).$(LIBEXT) - -lib$(LIB).$(LIBEXT): $(OBJS) - $(AR) r $@ $? - $(RANLIB) $@ - -depend: depend_src -depend.temp: $(GENSRCS) -TAGS: $(CCSRCS) $(CSRCS) -Makefile: $(MAKEFILEPARTS) -Makefile.dep: - touch Makefile.dep diff --git a/contrib/groff/Makefile.man b/contrib/groff/Makefile.man deleted file mode 100644 index 6eaf31115f79..000000000000 --- a/contrib/groff/Makefile.man +++ /dev/null @@ -1,5 +0,0 @@ -all: $(MANPAGES) -install_data: install_man -install_man: $(MANPAGES) -uninstall_sub: uninstall_man -$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION $(top_srcdir)/REVISION diff --git a/contrib/groff/Makefile.sub b/contrib/groff/Makefile.sub deleted file mode 100644 index 2652363020e1..000000000000 --- a/contrib/groff/Makefile.sub +++ /dev/null @@ -1,35 +0,0 @@ -DISTCLEANFILES=\ - config.status \ - config.log \ - config.cache \ - stamp-h \ - Makefile \ - test-groff \ - src/include/config.h \ - site.exp \ - site.bak \ - groff.sum \ - groff.log -CLEANADD=Makefile.cfg conftest* - -distfiles: configure - -$(scrdir)/configure: configure.ac aclocal.m4 - cd $(srcdir) && autoconf - -config.status: configure - $(SHELL) config.status --recheck - -# autoheader might not change config.hin, so touch a stamp file. -$(srcdir)/config.hin: stamp-h.in -$(srcdir)/stamp-h.in: configure.ac aclocal.m4 - cd $(srcdir) && autoheader - echo timestamp > $(srcdir)/stamp-h.in - -config.h: stamp-h -stamp-h: config.hin config.status - $(SHELL) config.status - -# Always create the site-font directory as a guide to the user. -install_data: - -test -d $(localfontdir) || $(mkinstalldirs) $(localfontdir) diff --git a/contrib/groff/NEWS b/contrib/groff/NEWS deleted file mode 100644 index 0272def4b2e9..000000000000 --- a/contrib/groff/NEWS +++ /dev/null @@ -1,2307 +0,0 @@ -This file describes recent user-visible changes in groff. Bug fixes are not -described. There are more details in the man and info pages. - -VERSION 1.19.2 -============== - -Troff ------ - -o Analogously to the .ft and \f pair, two new requests `gcolor' and - `fcolor' (which pair with \m and \M, respectively) have been added to - set the glyph and background colours. - -o A new read-only, string-valued register `.sty' returns the name of the - current style. - -o Two new conditional operators `F ' and `S ' have been added. - `F' is true if a font exists. `S' is true if a style has - been registered. - -o Cyrillic characters have been added to the `utf8' and `html' output - devices. - -Pic ---- - -o The `by' argument in a `for' loop can now be negative if it is additive. - For the multiplicative case, it must be greater than zero. - -Eqn ---- - -o The following keywords aren't new but haven't been documented previously: - - undef NAME (to undefine a macro) - copy "FILE" (a synonym for `include') - space n (to modify the vertical spacing before and after - an equation) - -o The following macros aren't new but haven't been documented previously: - - Alpha, ..., Omega (the same as `ALPHA', ..., `OMEGA') - ldots (three dots on the base line) - dollar (a dollar glyph) - -o The following keywords have been extended. Again, this isn't new but - hasn't been documented previously: - - col n { ... } - lcol n { ... } - rcol n { ... } - ccol n { ... } - pile n { ... } - lpile n { ... } - rpile n { ... } - cpile n { ... } (set vertical spacing between rows to N) - -Grohtml -------- - -o This device driver has been raised to beta stage; its set of tags should - be stable now. - -o New command line option `-s' to set the base point size. - -o New command line option `-S' to set the split level while generating - multiple files. - -Grotty ------- - -o Experimental support for zero-width and double-width characters. - -Gxditview ---------- - -o On platforms which have the X Window System this program is now built and - installed automatically. - -Xtotroff --------- - -o This program to create font definition files for xditview isn't new but - hasn't been installed previously. - -Groffer -------- - -o A security problem (reported as CAN-2004-0969) has been fixed. - -Gdiffmk -------- - -o A new script contributed by Mike Bianchi. It compares two groff, nroff, - or troff documents and creates an output with added margin characters - (using `.mc') to indicate the differences. - -Pdfroff -------- - -o A new wrapper script contributed by Keith Marshall to easily create PDF - documents with groff. - -Macro packages --------------- - -o ms.tmac - - . Support for fractional point sizes: A value for the `PS', `VS', `FPS', - and `VPS' register larger than or equal to 1000 is always divided by - 1000. For example, `.nr PS 10250' sets the document's font size to - 10.25 points. - - . The `Ds' and `De' macros provided in ms since groff version 1.19 have - been removed; the equivalent `DS' and `DE' macros should be used - instead. X11 documents which actually use `Ds' and `De' always load a - specific macro file from the X11 distribution (`macros.t') which - provides proper definitions for the two macros. - - . The following registers have been added for improving layout control: - - PORPHANS - Defines number of lines following `LP', `PP', `QP', `IP' or `XP' which - must be kept together, before any automatic page break. - - HORPHANS - Sets number of lines of following paragraph which must be kept with a - heading, defined by `NH' or `SH', before any automatic page break. - - GROWPS - Sets the first level of heading (set with `NH') which will keep the - same point size as body text. - - PSINCR - Sets the point size increment for each level of heading (set with - `NH'), below the threshold level set by `GROWPS'; e.g., if - \n[PS] = 10, \n[GROWPS] = 3 and \n[PSINCR] = 2.0p, then `.NH 1' will - produce 14pt headings, `.NH 2' will produce 12pt, and all other levels - will remain at 10pt (because \n[PS] = 10). - - . The `SH' macro now accepts a numeric argument, to make heading size - match that of `NH' with same argument value when the `GROWPS'/`PSINCR' - feature is enabled. - - Please refer to the documentation of the ms package for other, minor - improvements. - -o me.tmac - - The section type set with the `++' request is available in the `_M' - register. This isn't new but hasn't been documented before. - -o www.tmac - - The `HR' macro no longer causes an empty line for non-HTML devices. - - A new macro `HEAD' has been added to directly add data to the - ... block. - - New macros `OLS' and `OLE' to start and end an ordered list. - - New macros `DLS' and `DLE' to start and end a definition list. - -Pdfmark -------- - -o A new macro package contributed by Keith Marshall which implements PDF - marks. This is in alpha stage currently. - -Miscellaneous -------------- - -o Two new keywords to the DESC file have been added which are needed for - grohtml: `image_generator' and `unscaled_charwidths'. The former gives - the name of the program which creates PNG images, and the latter makes - troff always use unscaled character widths. - - -VERSION 1.19.1 -============== - -Groff ------ - -o The argument of the command line option `-I' is now also passed to troff - and grops, specifying a directory to search for files on the command line, - files named in `so' and `psbb' requests, and files named in \X'ps: file' - and \X'ps: import' escapes. - -o If option `-V' is used more than once, the commands will be both printed - on standard error and run. - -Troff ------ - -o Two new read-only, string-valued registers `.m' and `.M' return the - name of the current drawing and background color, respectively. - -o New read-only register `.U' which is set to 1 if in safer mode and set - to 0 if in unsafe mode. - -o An input encoding file for latin-5 (a.k.a. ISO 8859-9) has been added. - Example use: - - groff -Tdvi -mlatin5 my_file > my_file.dvi - - Note that some output devices don't support all glyphs of this encoding. - -o If the `return' request is called with an argument, it exits twice, - namely the current macro and the macro one level higher. This is - used to define a wrapper macro for `return' in trace.tmac. - -o For completeness, two new requests have been added: `dei1' and `ami1'. - They are equivalent to `dei' and `ami', respectively, but the macros - are executed with compatibility mode off (similar to `de1' and `am1'). - -o New command line option `-I' to specify a directory for files (both - those on the command line and those named in `psbb' requests). This is - also handled by the groff wrapper program. - -o Since version 1.19 you can say `.vs 0'. Older versions emit a warning - and convert this to `.vs \n[.V]'. - - This hasn't been documented properly. Note that `.vs 0' isn't saved in a - diversion since it doesn't result in vertical motion. - -Pic -___ - -o Dashed and dotted ellipses have been implemented. - -Tbl ---- - -o New key character `x' to make tbl call a user-defined macro on a table - cell. Patch by Heinz-Jürgen Oertel . - -Grap2graph ----------- - -o A new script contributed by Eric S. Raymond . It - converts a grap diagram into a cropped image. Since it uses gs and the - PNM library, virtually all graphics formats are available for output. - [Note that the grap program itself isn't part of the groff package; - see the file MORE.STUFF how to obtain grap.] - -Grohtml -------- - -o New option `-j' to emit output splitted into multiple files. - -Grops ------ - -o New command line option `-I' to specify a directory to search for files - on the command line and files named in \X'ps: import' and \X'ps: file' - escapes. This is also handled by the groff wrapper program. - -o The default value for the `broken' keyword in the DESC file is now 0. - -Grolj4 ------- - -o A new man page `lj4_font(5)' documents how fonts are accessed with - grolj4. - -o The built-in fonts for LJ4 and newer PCL 5 devices have been completely - revised, mainly to access as much glyphs as possible. The provided - metric files should be compatible with recent PCL 5 printers also. - Additionally, font description files have been added for the Arial and - Times New Roman family, the MS symbol, and Wingdings fonts. - -Afmtodit --------- - -o New option `-x' to prevent use of built-in Adobe Glyph List. - -Hpftodit --------- - -o Completely revised to handle HP TrueType metric files also. See the - hpftodit manual page for more details. - -Groffer -------- - -o This version is a rewrite of groffer in many parts, but it is kept in - the old single script style. - - New options: --text, --mode text, --tty-viewer, --X, --mode X, - --X-viewer, --html, --mode html, --html-view, --apropos-data, - --apropos-devel, --apropos-progs. - - New documentation file: README_SH. - - Enhancement of the configuration files and the `apropos' handling. - -Macro Packages --------------- - -o www.tmac: New macro `JOBNAME' to split output into multiple files. - -o In mdoc, multiple calls to `.Lb' are now supported in the LIBRARY - section. - - -VERSION 1.19 -============ - -Troff ------ - -o Input encoding files for latin-9 (a.k.a. latin-0 and ISO 8859-15) and - latin-2 (ISO 8859-2) have been added. Example use: - - groff -Tdvi -mlatin9 my_file > my_file.dvi - - You still need proper fonts with the necessary glyphs. Out of the box, - the groff package supports latin-9 only for -Tps, -Tdvi, and -Tutf8, - and latin-2 only for -Tdvi and -Tutf8. - -o Composite glyphs are now supported. To do this, a subset of the Adobe - Glyph List (AGL) Algorithm as described in - - http://partners.adobe.com/asn/tech/type/unicodegn.jsp - - is used to construct glyph names based on Unicode character codes. The - existing groff glyph names are frozen; no glyph names which can't be - constructed algorithmically will be added in the future. - - The \[...] escape sequence has been extended to specify multiple glyph - components. Example: - - \[A ho] - - this accesses a glyph with the name `u0041_0328'. - - Some groff glyphs which are useful as composites map to `wrong' Unicode - code points. For example, `ho' maps to U+02DB which is a spacing - ogonek, whereas a non-spacing ogonek U+0328 is needed for composite - glyphs. The new request - - .composite from to - - will change the mapping while a composite glyph name is constructed. - To make \[A ho] yield the expected result, - - .composite ho u0328 - - is needed. [The new file `composite.tmac' loaded at start-up already - contains proper calls to `.composite'.] - - Please refer to the info pages of groff and to the groff_char man page - for more details. - -o A new request `fschar' has been added to define font-specific fallback - characters. They are searched after the list of fonts declared with the - `fspecial' request but before the list of fonts declared with `special'. - -o Fallback characters defined with `fschar' can be removed with the - new `rfschar' request. - -o A new request `schar' has been added to define global fallback - characters. They are searched after the list of fonts declared with the - `special' request but before the already mounted special fonts. - -o In groff versions 1.18 and 1.18.1, \D'f ...' didn't move the current - point horizontally. Despite of being silly, this change has been - reverted for backwards compatibility. Consequently, the intermediate - output command `Df' also moves the position horizontally again. - - \D'f ...' is deprecated since it depends on the horizontal resolution of - the output device (given with the `hor' parameter in the DESC file). - Use the new \D'Fg ...' escape instead. - -o For orthogonality, new \D subcommands to change the fill color are - available: - - \D'Fr ...' (rgb) - \D'Fc ...' (cmy) - \D'Fg ...' (gray) - \D'Fk ...' (cmyk) - \D'Fd' (default color) - - The arguments are the same as with the `defcolor' request. The current - position is *not* changed. - -o The values set with \H and \S are now available in number registers - \n[.height] and \n[.slant], respectively. - -o The `.pe' number register isn't new but hasn't been documented before. - It is set to 1 during a page ejection caused by the `bp' request. - -o The new glyph symbol `tno' is a textual variant of `no'. - -o The new glyph symbol `+e' represents U+03F5, GREEK LUNATE EPSILON SYMBOL. - (Well, it is not really new since it has been previously supported by - grolj4.) The mapping for both the dvi and lj4 symbol font has been - changed accordingly so that Greek small letter epsilon, `*e', has the - same glyph shape as with other devices. - -Grops ------ - -o The font `freeeuro.pfa' has been added to provide various default glyph - shapes for `eu' and `Eu'. - -o It is now possible to access all glyphs in a Type 1 font, not only 256 - (provided the font file created by afmtodit has proper entries). grops - constructs additional encoding vectors on the fly if necessary. - -o The paper size is now emitted via the %%DocumentMedia and PageSize - mechanisms so that it is no longer required to tell `gv' or `ps2pdf' - about the paper size. The `broken' flag value 16 omits this feature - (the used PostScript command `setpagedevice' is a LanguageLevel 2 - extension) -- if you intend to further process grops output to get an - encapsulated PS (EPS) file you must also use this option. - - Patch by Egil Kvaleberg . - -o Non-slanted PostScript metrics have been changed again; they no longer - contain negative left italic correction values. This assures correct - spacing with eqn. - -Grodvi ------- - -o The font cmtex10 has been added as the special font `SC' to the DVI fonts. - It is used as a font-specific special font for CW and CWI. - -o New options -l and -p to set landscape orientation and the paper size. - grodvi now emits a `papersize' special which is understood by DVI drivers - like dvips. - - Consequently, the DESC file should contain a `papersize' keyword. - -o The glyph shapes for \[*f] and \[*e] have been exchanged with \[+f] and - \[+e], respectively, to be in sync with all other devices. - -o Glyphs \[HE] and \[DI] have been replaced with \[u2662] and \[u2661], - respectively, since the former two glyphs have a black (filled) shape - which grodvi doesn't provide by default (it never has actually). - -Grolj4 ------- - -o The glyphs \[*e] and \[+e] have been exchanged to be in sync with - all other devices. - -o The glyph \[~=] is now called \[|=]. Similar to other devices, \[~=] - is now another name for glyph \[~~]. - -Grotty ------- - -o New option `-r'. It is similar to the -i option except it tells grotty to - use the `reverse video' attribute to render italic fonts. - -Pic ---- - -o New command `figname' to set the name of a picture's output box in TeX - mode. - -Refer ------ - -o The environment variable `REFER' to override the name of the default - database isn't new but hasn't been documented before. - -Soelim ------- - -o New option `-r' to avoid emission of `.lf' lines. - -o New option `-t' to emit TeX comment lines (giving current file and the - line number) instead of `.lf' lines. - -Afmtodit --------- - -o Unencoded glyphs in an AFM file are output also (since grops can now emit - multiple encoding vectors for a single font). - -o New option `-m' to prevent negative left italic correction values. - -o The mapping and encoding file together with file `DESC' are now searched - in the default font directory also. Please refer to the man page of - afmtodit for more details. - -Macro Packages --------------- - -o Larry Kollar and others made the man macros more - customizable. - - . New command line options -rFT, -rIN, and -rSN to set the vertical - location of the footer line, the body text indentation, and the - sub-subheading indentation. - - . New command line option -rHY (similar to the ms macros) to control - hyphenation. - - . New macros `.PT' and `.BT' to print the header and footer strings. - They can be replaced with a customized version in `man.local'. - - . The string `HF' now holds the typeface to print headings and - subheadings. - - . Similar to the ms macros, the LT register now defaults to LL if not - explicitly specified on the command line. - -o troff's start-up file `troffrc' now includes `papersize.tmac' to set - the paper size with the command line option `-dpaper='. - - Possible values for `' are the same as the predefined `papersize' - values in the DESC file (only lowercase; see the groff_font man page) - except a7-d7. An appended `l' (ell) character denotes landscape - orientation. Examples: `a4', `c3l', `letterl'. - - Most output drivers need additional command line switches `-p' and - `-l' to override the default paper length and orientation as set in - the driver specific DESC file. - - For example, use the following for PS output on A4 paper in landscape - orientation: - - groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps - - -VERSION 1.18.1 -============== - -Troff ------ - -o The non-slanted PostScript font definition files have been regenerated to - include left and right italic correction values. Applying those to a - glyph (this is, prepending the glyph with `\,' and appending `\/' to the - glyph) sets the glyph width to the real value given by the horizontal - bounding box values. Without those escapes, the advance width for the - particular glyph is used (which can differ considerably). - - Most users will neither need this feature nor notice a difference in - existing documents (provided \, and \/ is used as advertised, namely for - italic fonts only); its main goal is to improve image generation with - grohtml. - - This is an experimental change, and feedback is welcome. - -Tbl ---- - -o Added global option `nospaces' to ignore leading and trailing spaces in - data items. - -Grolbp ------- - -o The option -w (--linewidth) has been added (similar to other device - drivers) to set the default line width. - -Grn ---- - -o Support for b-spline and Bezier curves has been added. - -Groffer -------- - -o New option `--shell' to select the shell under which groffer shall run. - -Macro Packages --------------- - -o The string `Am' (producing an ampersand) has been added to mdoc for - compatibility with NetBSD. - -o `.IX' is now deprecated for mom; you should use `.IQ' (Indent Quit) - instead. - -o In mom, new inlines `FWD', `BCK', `UP', and `DOWN' deal with horizontal - and vertical movements; please refer to contrib/mom/NEWS for more - details. - -o New macro ENDNOTES_HDRFTR_CENTER for mom to better control headers. - -Miscellaneous -------------- - -o The `papersize' keyword in the DESC file now accepts multiple arguments. - It is scanned from left to the right, and the first valid argument is - used. This makes it possible to provide a fallback paper size. - - Example: - - papersize /etc/papersize a4 - -o A local font directory has been prepended to the default font path; it - defaults to /usr/local/share/groff/site-font. Similar to the normal - font searching process, files must be placed into a devXXX subdirectory, - e.g. - - /usr/local/share/groff/site-font/devps/FOO - - for a PostScript font definition file FOO. - - -VERSION 1.18 -============ - -*************************************************************************** -* * -* PLEASE READ THE CHANGES BELOW REGARDING GROTTY, GROFF'S TTY FRONTEND. * -* * -*************************************************************************** - -Troff ------ - -o Color support has been added to troff and pic (and to the device drivers - grops, grodvi, grotty, and grohtml -- other preprocessors and drivers will - follow). A new function `defcolor' defines colors; the escape sequence - `\m' sets the drawing color, the escape sequence `\M' specifies the - background color for closed objects created with \D'...' commands. - `\m[]' and `\M[]' switch back to the previous color. `\m' and `\M' - correspond to the new troff output command sets starting with `m' and - `DF'. The device-specific default color is called `default' and can't be - redefined. - - Use the `color' request to toggle the usage of colors (default is on); the - read-only register `.color' is 0 if colors are not active, and non-zero - otherwise. - - The old `Df' output command is mapped onto `DFg'; all color output - commands don't change the current font position (consequently, `Df' - doesn't either). - - Outputting color can be disabled in troff and groff with the option -c - (it is always disabled in compatibility mode). See the section on grotty - for the GROFF_NO_SGR environment variable also. - - For defining color components as fractions between 0 and 1, a new scaling - indicator `f' has been introduced: 1f = 65536u. For testing whether a - color is defined (with .if and .ie), a new conditional operator `m' is - available. - - More details can be found in the groff_diff.7 manual page and in - groff.texinfo. - -o Similar to \m and \M, \f[] switches back to the previous font. \fP - (and \f[P]) is still valid for backwards compatibility. - -o The new escape \F is the same as `.fam'; \F[] switches back to previous - family -- \F[P] selects family `P'. - -o Two new glyph symbols are available: `eu' is the official Euro symbol; - `Eu' is a font-specific glyph variant. - -o The new glyph symbols `t+-', `tdi', and `tmu' are textual variants of - `+-', `di', and `mu', respectively. - -o Latin-1 character 181 (PS name `mu', Unicode name U+00B5 MICRO SIGN) has - got the troff glyph name `mc'. - -o -Tutf8 is now available on EBCDIC hosts. - -o Strings can take arguments, using this syntax: \*[foo arg1 arg2 ...]. - Example: - - .ds xxx This is a \\$1 test. - \*[xxx nice] - -o It is now possible to have whitespace between the first and second dot (or - the name of the ending macro) to end a macro definition. Example: - - .de ! - .. - . - .de foo - . nop Hello, I'm `foo'. - . nop I will now define `bar'. - . de bar ! - . nop Hello, I'm `bar'. - . ! - .. - -o `.fn' is a new string-valued register which returns the (internal) real - font name; styles and families are properly concatenated. - -o Three new read/write registers `seconds', `minutes', and `hours' contain - the current time, set at start-up of troff. Use the `af' request to - control their output format. - -o The new request `fchar' can be used to provide fallback characters. It - has the same syntax as the `char' request; the only difference is that a - character defined with `.char' hides the glyph with the same name in the - current font, whereas a character defined with `.fchar' is checked only if - the particular glyph isn't found in the current font. This test happens - before checking special fonts. - -o In analogy to the `tmc' request, `.writec' is the same as `.write' but - doesn't emit a final newline. - -o The new request `itc' is a variant of `.it' for which a line interrupted - with \c counts as one input line. - -o Two new requests `ds1' and `as1' which are similar to `ds' and `as' but - with compatibility mode disabled during expansion of strings defined by - them. - -o The syntax of the `substring' request has been changed: The first - character in a string now has index 0, the last character has index -1. - Note that this is an incompatible change. - -o To emit strings directly to the intermediate output, a new `output' - request has been added; it is similar to `\!' used at the top level. - -o `.hpf' has been extended. It can now handle most TeX hyphenation - pattern files without modification. To do that, the commands \patterns, - \hyphenation, and \endinput are recognized. Please refer to groff_diff.7 - for more information. - -o `hpfcode' is a new request to provide an input encoding mapping for the - `hpf' request. - -o The new request `hpfa' appends hyphenation patterns (`hpf' replaces - already existing patterns). - -o A new request `ami' (append macro indirect) has been added. The first and - second parameter of `ami' are taken from string registers rather than - directly; this very special request is needed to make `trace.tmac' - independent from the escape character (which might even be disabled). - -o The new request `sizes' is similar to the `sizes' command in DESC files. - It expects the same syntax; the data must be on a single line, and the - final `0' can be omitted. - -o `trin' (translate input) is a new request which is similar to `tr' with - the exception that the `asciify' request will use the character code (if - any) before the character translation. Example: - - .trin ax - .di xxx - a - .br - .di - .xxx - .trin aa - .asciify xxx - .xxx - - The result is `x a'. Using `tr', the result would be `x x'. - -o The request `pvs' isn't new, but hasn't been documented before. It - adds vertical space after a line has been output. This makes it an - alternative to the `ls' request to produce double-spaced documents. - The read-only register `.pvs' holds the current amount of the - post-vertical line space. - -o For compatibility with plan 9's troff, multiple `pi' requests are - supported: - - .pi foo - .pi bar - - is now equivalent to - - .pi foo | bar - -o A new escape sequence `\O' is available to disable and enable glyph - output. Please see groff_diff.7 and groff.texinfo for more details. - -o The escapes `\%', `\&', `\)', and `\:' no longer cause an error in \X; - they are ignored now. Additionally `\ ' and `\~' are converted to - single space characters. - -o The default tab distance in nroff mode is now 0.8i to be compatible - with UNIX troff. - -o Using the latin-1 input character 0xAD (soft hyphen) for the `shc' - request was a bad idea. Instead, it is now translated to `\%', and - the default hyphenation character is again \[hy]. Note that the glyph - \[shc] is not useful for typographic purposes; it only exists to have - glyph names for all latin-1 characters. - -Macro Packages --------------- - -o Peter Schaffter has contributed a new major macro package - called `mom', mainly for non-scientific writers, which takes care of - many typographic issues. It comes with a complete reference (in HTML - format) and some examples. `mom' has been designed to format documents - for PostScript output only. - -o Two macros `AT' (AT&T) and `UC' (Univ. of California) have been added to - the man macros for compatibility with older BSD releases. - -o Both the man and mdoc macro packages now use the LL and LT registers for - setting the line and title length, respectively (similar to those - registers in the ms macro package). If not set on the command line or - in a macro file loaded before the macro package itself, they default to - 78n in nroff mode and 6.5i in troff mode. - -o The `-xwidth' specifier in the mdoc macro package has been removed. Its - functionality is now integrated directly into `-width'. Similarly, - `-column' has been extended to provide this functionality also. - -o A new macro `Ex' has been added to the mdoc macro package to document an - exit status. - -o The PSPIC macro has been extended to work with DVI output (`pspic.tmac' is - now automatically loaded for -Tdvi), using a dvips special to load the EPS - file. - -o The trace.tmac package now traces calls to `am' also. Additionally, it - works in compatibility mode. - -o `troff.1' has been split. Differences to UNIX troff are now documented - in the new man page `groff_diff.7'. - -o `groff_mwww.7' has been renamed to `groff_www.7'. The file mwww.tmac - has been removed. - -o `groff_ms.7' has been completely rewritten. It now contains a complete - reference to the ms macros. - -o `groff_trace.7' documents the trace macro package. - -o Changes in www.tmac: - - Note that HTML support is still in alpha change, so it is rather likely - that both macro names and macro syntax will change. Some of the macros - mentioned below aren't really new but haven't been documented properly - before. - - The following macros have been renamed: - - MAILTO -> MTO - IMAGE -> IMG - LINE -> HR - - For consistency, the macros `URL', `FTL', and `MTO' now all have the - address as the first parameter followed by the description. - - By default, grohtml generates links to all section headings at the top - of the document. Use the new `LK' macro to specify a different place. - - For specifying the background color and a background image, use the - new macros `BCL' and `BGIMG', respectively. - - The macro `NHR' has been added; it suppresses the generation of top and - bottom rules which grohtml emits by default. - - The new macro `HX' determines the cut-off point for automatic link - generation to headings. - - The image position parameter names in `IMG' have been changed to `-L', - `-R', and `-C'. - - New macro `PIMG' for inclusion of a PNG image (it will automatically - convert it into an EPS file if not -Thtml is used). - - New macro `MPIMG' for putting a PNG image into the left or right margin - (it will automatically convert it into an EPS file if not - -Thtml is used). - - New macros `HnS', `HnE' to start and end a header line block. - - New macro `DC' to produce dropcap characters. - - New macro `HTL' to generate an HTML title line only but no H1 heading. - - New macros `ULS' and `ULE' to start and end an unordered list. The new - macro `LI' inserts a list item. - -Groff ------ - -o The new command line option `-c' disables color output (which is always - disabled in compatibility mode). - -Nroff ------ - -o Two new command line options `-c' and `-C'; the former passes `-c' to - grotty (switching to the old output scheme); the latter passes `-C' to - groff (enabling compatibility mode). - -Pic ---- - -o New keywords `color' (or `colour', `colored', `coloured'), `outline' (or - `outlined'), and `shaded' are available. `outline' sets the color of the - outline, `shaded' the fill color, and `color' sets both. Example: - - circle shaded "green" outline "black" ; - - Filled arrows always use the outline color for filling. - - Color support for TeX output is not implemented yet. - -Pic2graph ---------- - -o A new script contributed by Eric S. Raymond . It - converts a PIC diagram into a cropped image. Since it uses gs and the PNM - library, virtually all graphics formats are available for output. - -Eqn2graph ---------- - -o A new script contributed by Eric S. Raymond . It - converts an EQN diagram into a cropped image. Since it uses gs and the PNM - library, virtually all graphics formats are available for output. - -Groffer -------- - -o A new script contributed by Bernd Warken . It displays - groff files and man pages on X and tty, taking care of most parameters - automatically. - -Grog ----- - -o Documents using the mom macro package are recognized. - -Grops ------ - -o Color support has been added. - -o A new option `-p' is available to select the output paper size. It has - the same syntax as the new `papersize' keyword in the DESC file. - -Grodvi ------- - -o By default, font sizes are now available in the range 5-10000pt, similar - to PS fonts. If you want the old behaviour (i.e., font sizes at discrete - values only), insert the following at the start of your document: - - .if '\*[.T]'dvi' \ - . sizes 500 600 700 800 900 1000 1095 1200 1400 1440 1600 \ - 1728 1800 2000 2074 2200 2400 2488 2800 3600 - -o A new font file HBI (using cmssbxo10; this is slanted sans serif bold - extended) has been added. - -o Two font families are now available: `T' and `H'. - -o EC and TC fonts have been integrated. Use `-mec' (calling the file - ec.tmac) to switch to them. Those fonts give a much better coverage of - the symbols defined by groff than the CM fonts. - - Note that ec.tmac must be called before any language-specific files; it - doesn't take care of hcode values. - -o Color support has been added. For drawing commands, colors are translated - to gray values currently. - -Grotty ------- - -o Color support has been added, using the SGR (ISO 6429, sometimes called - ANSI color) escape sequences. - -o SGR escape sequences are now used by default for underlining and bold - printing also, no longer using the backspace character trick. To revert - to the old behaviour, use the `-c' switch. - - Note that you have to use the `-R' option of `less' to make SGR escapes - display correctly. On the other hand, terminal programs and consoles like - `xterm' which support SGR sequences natively can directly display the - output of grotty. Consequently, the options `-b', `-B', `-u', and `-U' - work only in combination with `-c' and are ignored silently otherwise. - - For the `man' program, it may be necessary to add the `-R' option of - `less' to the $PAGER environment variable; alternatively, you can use - `man's `-P' option (or adapt its configuration file accordingly). See - man(1) for more details. - -o If the environment variable GROFF_NO_SGR is set, SGR output is disabled, - reverting to the old behaviour. - -o A new special \X'tty: sgr n' has been added; if n is non-zero or missing, - enable SGR output (the default). - -o If the new option `-i' is used (only in SGR mode), grotty sends escape - sequences to set the italic font attribute instead of the underline - attribute for italic fonts. Note that many terminals don't have support - for this (including xterm). - -Grohtml -------- - -o Color support for glyphs has been added. - -o New option `-h' to select the style of headings in HTML output. - -o New option `-b' to set the background colour to white. - -o New options `-a' and `-g' to control the number of bits for anti-aliasing - used for text and graphics, respectively. Default value is 4; 0 means - no anti-aliasing. - -o groff character/glyph entities now map onto HTML 4 character entities. - -Grolbp ------- - -o Valid paper sizes are now specified as with the new `papersize' keyword - in the DESC file. Specifically, the old custom paper type format - `custAAAxBBB' is no longer supported. - -Miscellaneous -------------- - -o A new manual page `ditroff.7' is available. - -o The groff texinfo manual will now be installed, together with a bunch - of examples. - -o A new keyword `papersize' has been added to the DESC file format. Its - argument is either - - . a predefined paper format (e.g. `A4' or `letter') - - . a file name pointing to a file which must contain a paper size - specification in its first line (e.g. `/etc/papersize') - - . a custom paper size definition like `35c,4i' - - See groff_font(5) for more details. This keyword only affects the - physical dimensions of the output medium; grops, grolj4, and grolbp use it - currently. troff completely ignores it. - -VERSION 1.17.2 -============== - -This is major bug-fixing release which should replace 1.17.1. - -Troff ------ - -o The `IMAGE' macro in www.tmac has changed: Now the optional 2nd parameter - gives the horizontal image location (left, centered, or right), and the - optional 3rd and 4th parameter the image dimensions. - -VERSION 1.17.1 -============== - -This is mainly a bug-fixing release. - -Troff ------ - -o Two new requests `de1' and `am1' which are similar to `de' and `am' but - with compatibility mode disabled during expansion of macros defined by - them. - -o Added request `brp'. This is the same as `\p'. - -o Similar to other versions of troff, the `ns' request now works in all - diversions, not only in the top-level one. - -o New read-only number register `.ns'. Returns 1 if in no-space mode, - 0 otherwise. - -Nroff ------ - -o Options -p (pic) and -t (tbl) added. - -o The environment variable GROFF_BIN_PATH is now checked before PATH for - finding groff. - -Grohtml -------- - -o New option `-D dir' to specify a directory in which all images are placed. - -o New option `-I stem' to specify an image name stame. If not given, - `grohtml-XXX' is used (`XXX' is the process ID). - -VERSION 1.17 -============ - -Groff ------ - -o `-mFOO' now searches first for `FOO.tmac' and then for `tmac.FOO'. The - old behaviour has been changed to overcome problems with platforms which - have an 8+3 file name limit, and platforms which have other versions of - troff installed also. Additionally, all macro files have been renamed - using the latter scheme to avoid 8+3 name clashes. - -o The new environment variable GROFF_BIN_PATH is checked for programs groff - is calling (preprocessors, troff, and output devices) before PATH. If not - set, it defaults to the directory where the groff binary is located. - Previously, it was PATH only. The nroff script only uses GROFF_BIN_PATH - to find the groff binary but passes both the GROFF_BIN_PATH and PATH - environment variables to groff. - -Troff ------ - -o The mdoc package has been completely rewritten, using the full power of - GNU troff to remove limitations of Unix troff (which is no longer - supported). Most important changes are: - - . No argument limit - . Almost all macros are parsed and callable (if it makes sense) - . `.Lb': prints library names - . `.Nm ' now works as expected; `.Nm "" ' has - been withdrawn - . Updated `.St' command - . `.Fx': prints FreeBSD - . `.Ox': prints OpenBSD - . `.Bsx': prints BSD/OS - . `.Brq', `.Bro', `.Brc': brace enclosure macros - . `.Bd -centered': center lines - . `.Bl -xwidth ': interpret and use the resulting width - . Support for double-sided printing (-rD1 command line switch) - . Support for 11pt and 12pt document sizes (-rS11, -rS12 command line - switches) - - `groff_mdoc.7' replaces `groff_mdoc.samples.7'; it now completely - documents the mdoc package. - - Great care has been taken to assure backwards compatibility. If you - encounter any abnormal results, please report them to bug-groff@gnu.org. - -o A new command line option for the `man' macros (similar to the `mdoc' - package) has been implemented: `-rcR=1' (now the default in nroff mode) - produces one single, very long page instead of multiple pages. `-rcR=0' - deactivates it. - -o The `return' request has been added to return immediately from a macro. - -o A new request `nop' (no operation) has been added which is similar to - `if 1'. For example, - - .if t \{\ - Hallo! - .\} - - can now be written as - - .if t \{\ - . nop Hallo! - .\} - -o `box' and `boxa' are two new requests which behave similarly to `di' and - `da' but don't include a partially filled line (which is restored after - ending the diversion). - -o The `asciify' request has been extended to `unformat' space characters - and some other escape sequences also. - - `\ ' is no longer unformatted as a space but remains an unpaddable, - unbreakable space character. - -o The new `unformat' request is similar to `asciify' but only handles space - characters and tabs specially if the diversion is reread, retaining font - information. This makes it possible to reformat diversions; for example - the following - - .ll 3i - . - a01 a02 a03 a04 a05 a06 a07 a08 a09 a10. - . - .box box1 - .ev 1 - .nf - \f[B]b01 b02 b03 b04 b05 b06 b07 b08 b09 b10.\f[P] - .br - .ev - .box - . - c01 c02 c03 c04 c05 c06 c07 c08 c09 c10. - . - .unformat box1 - .box1 - - gives - - a01 a02 a03 a04 a05 a06 a07 - a08 a09 a10. c01 c02 c03 c04 - c05 c06 c07 c08 c09 c10. b01 - b02 b03 b04 b05 b06 b07 b08 - b09 b10. - - Without the `unformat' request, space characters are converted to word - space nodes which are no longer stretchable, and the result would be - - a01 a02 a03 a04 a05 a06 a07 - a08 a09 a10. c01 c02 c03 c04 - c05 c06 c07 c08 c09 c10. b01 - b02 b03 b04 b05 b06 b07 b08 - b09 b10. - -o The new request `linetabs' controls the `line-tabs' mode. In line-tabs - mode, tab distances are computed relative to the (current) output line. - Otherwise they are taken relative to the input line. For example, the - following - - .ds x a\t\c - .ds y b\t\c - .ds z c - .ta 1i 3i - \*x - \*y - \*z - - yields - - a b c - - In line-tabs mode, the same code gives - - a b c - - The new read-only number register `.linetabs' returns 1 if in line-tabs - mode, and 0 otherwise. - -o Two new requests `tm1' and `tmc' have been added to improve writing - messages to the terminal. `tm1' is similar to `tm' but allows leading - whitespace. `tmc' is similar to `tm1' but doesn't emit a final newline. - -o For compatibility with sqtroff, the request `output' has been added. - The behaviour is similar to `\!' at the top-level, that is, it directly - inserts its argument into the intermediate output format. The syntax - is similar to .tm1, allowing leading whitespace. - -o The new `spreadwarn' request will make troff warn if spaces in an output - line are widened by a given limit or more. - -o Use `warnscale' to change the scaling indicator troff will use for - warning messages. - -o A new request `dei' (define indirect) has been added. The first and - second parameter of `dei' are taken from string registers rather than - directly; this very special request is needed to make `trace.tmac' - independent from the escape character (which might even be disabled). - -o It is now possible to save and restore the escape character with two new - requests `ecs' and `ecr'. - -o The new escape sequence \B'...' is an analogon to `\A': If the string - within the delimiters is a valid numeric expression, return character `1', - and `0' otherwise. - -o The new escape sequence `\:' inserts a zero-width break point. This is - similar to `\%' but without a soft hyphen character. - -o The `tr' request can now map characters onto `\~'. - -o Calling the `fam' request without an argument switches back to the - previous font family. - -o The new read-only register `.int' is set to a positive value if the last - output line is interrupted (i.e., if the input line contains `\c'). - -o The `writem' request is not new, but hasn't been documented before. This - is similar to `write' but instead of a string the contents of a given - macro or string is written to a stream. - -o The read/write number register `hp' to get/set the current horizontal - position relative to the input line isn't new but hasn't been documented - properly before. - -o `\X' and `\Y' are now transparent for end-of-sentence recognition. - -o The `cu' request in nroff mode now works as documented (i.e., it - underlines spaces also). - -Grog ----- - -o The grog script now works in non-compatibility mode also (which is the - default). As usual, use the `-C' option to activate compatibility mode. - -Grops ------ - -o A new option `-P' resp. a new environment variable `GROPS_PROLOGUE' has - been added to select a different prologue file. - -o The effect of the former `-mpsnew' option to access more Type 1 characters - is now the default and no longer available. To get the old behaviour - (i.e., emulation of some glyphs by composition) use `-mpsold'. - -Miscellaneous -------------- - -o For security reasons the following changes have been done: - - . The tmac.safer file has been replaced with a built-in solution; .open, - .opena, .pso, .sy, and .pi are completely disabled in safer mode (which - is the default); to enable these requests the `-U' command line flag - must be used. - - . Files specified with the .mso request or given with the `-m' command - line option, and hyphenation patterns loaded with `.hpf' are no longer - searched in the current directory by default (besides the usual tmac - path). Instead, the home directory is used. To add the current - directory, either use the `-U' or `-M' command line option or set the - GROFF_TMAC_PATH environment variable to an appropriate value. - - . troffrc, troffrc-end, and eqnrc are neither searched in the current nor - in the home directory (even if -U is given). Use -M or GROFF_TMAC_PATH - to change that. - - . Similarly, the current directory is no longer part of the font path. - Use the `-F' command line option or the GROFF_FONT_PATH environment - variable if you really need the current directory. - -o groff now installs its data files into /usr/local/share/groff/ by - default, following the GNU standard. Additionally, a local tmac directory - (by default /usr/local/share/groff/site-tmac) is scanned before the - standard tmac directory. Wrapper files for system-specific macro packages - (if necessary) are put into /usr/local/lib/groff/site-tmac; this directory - is searched before the local tmac directory. - -o All programs now have option `-v' to show the version number; they exit - immediately afterwards, following the GNU standards. Additionally, - `--version' and `--help' have been added, doing the obvious actions. - -VERSION 1.16.1 -============== - -Bug fixes only; no user-visible changes. - -VERSION 1.16 -============ - -Groff ------ - -The anachronism of calling the man macro package with `-man' has been fixed; -now you can say `-m man' also. The same is true for `ms', `me', `markup', -`mandoc', and `mdoc'. - -A new switch `-g' for calling `grn' is available. - -A new switch `-G' for calling `grap' is available. - -EBCDIC support for tty devices has been added. On such hosts, IBM code page -1047 is available with -Tcp1047 instead of -Tascii and -Tlatin1 (and, for -the moment, -Tutf8). Note that non-tty devices are not yet supported (but -installed). - -Troff ------ - -A new command line option to the `man' macros is available: `-rSxx' (with -`xx' either 10, 11, or 12) to set the base document font size to `xx' -points. Additionally, `.SH' now produces larger headings than `.SS'. - -To solve a problem with the .PSPIC macro which needs the `-U' switch of -troff to access an external program (psbb), a new request .psbb is now -available to get the bounding box of a PostScript image file. The values -(in PostScript units) are returned in the new read-only number registers -`llx', `lly', `urx', and `ury'. Consequently, .PSPIC has been adapted to -use the new request, and the psbb program has been removed. - -A new predefined writable number register, `year', has been added. It -contains the current year. - -A new read-only register, `.Y', has been added. It contains the revision -number of the groff package. - -`\fP' now behaves as expected in situations like the following where the -font `foo' is undefined: - - .B bold text - normal text \f[foo]bar\fP normal text - -Previously, the text after \fP appeared as bold. - -The `substring' request is not new, but hasn't been documented before. - -The predefined `.T' string register (which holds the current output device) -is not new, but hasn't been documented before. - -A new request `length' computes the length of a string and returns it in -a number register. - -The macro files `tmac.a4' (for specifying A4 paper format) and `tmac.trace' -(a debugging aid) are now installed also. - -A new resource file, `troffrc-end', is now available. It is invoked after -all user-specified macros. Currently used by the html device to include -tmac.html; thus no need for users to specify -mhtml anymore. - -The soft hyphen character now has a glyph name: `shc'. - -The latin-1 character 173 (PS name `periodcentered') has got the troff glyph -name `pc' and is no longer intermixed with the symbol character `md' (PS -name `mathdot'). - -ASCII character 34 (PS name `quotedbl') has got the troff glyph name `dq' -(which is an alias to character `"'). - -ASCII character 39 (PS name `quoteright') has got the troff glyph name `cq' -(which is an alias to character "'"). - -Some additions to the font description files have been implemented for -better support of HTML output: - - The new format of lines in the `charset' subsection of font description - files is - - name metrics type code [entity_name] [-- comment] - - Currently, only the font description files in devhtml use the optional - entity_name string to define glyph entities in HTML. Everything after the - entity_name field is ignored; in case this field isn't used, two hyphen - characters are now necessary to start a comment. - - Two new requests are available in DESC files (currently used only with - grohtml): - - use_charnames_in_special - This command indicates that troff should encode named characters - inside special commands. - - pass_filenames - requests that troff tells the driver the source file name being - processed. This is achieved by another tcommand: `F filename'. - -Grotty ------- - -Bruno Haible contributed support for UTF8 output. - -Grohtml -------- - -Added .LINE macro to tmac.arkup. - -The obsolete `.LINK' macro has been removed. - -.URL, .FTP, and .MAILTO macros now accept an optional third argument which -will be immediately appended to the second argument (to be used with -punctuation, for example). - -Grodvi ------- - -The font size 11pt has been changed to 10.95pt (as used in LaTeX 2e). - -A new font file CWI (using cmitt10; this is typewriter italic) has been -added. - -Grolbp ------- - -A new driver for Canon CAPSL printers (LBP-4 and LBP-8 series laser -printers). This code has been contributed by Francisco Andres Verdu -. - -Grn ---- - -A new preprocessor to process gremlin pictures. It is based on the -original Berkeley implementation of grn, written by David Slattengren -and Barry Roitblat, and has been adapted to groff by Daniel Senderowicz - and Werner Lemberg . - -Pic ---- - -Added the `srand' command to set the seed for a new sequence of -pseudo-random numbers to be returned by `rand'. - -Gxditview ---------- - -Simplified installation: The Imakefile will now be configured (by groff's -configure script). - -Documentation -------------- - -Three new man pages are available: groff_tmac.5 (documenting how troff macros -are accessed and where they are found), groff.7 (a short reference of the GNU -roff language), and roff.7 (a general survey on GNU troff). - -Miscellaneous -------------- - -A partial port to win32 (for use with Microsoft Visual C++ 6.0) is now part -of the distribution. It has been contributed by Blake McBride -. - -More information about programs, macros, documentation, etc., which is -related to groff has been collected in the file `MORE.STUFF'. - -VERSION 1.13, 1.14, 1.15 -======================== - -Bug fixes only; no user-visible changes. - -VERSION 1.12 -============ - -Finally, there are new maintainers for groff. Mailing lists and a CVS -repository are available also. See the file README for details. Not all -reported bugs could be fixed, so please send mails again if something is -still not working. - -Most of the installation problems should have vanished now (most -notably the $(tmac_wrap) bug). - -There is now a man page called groff_man.7 which documents the basics of the --man macros. It has been originally written by Susan G. Kleinmann -. - -A (still incomplete) groff reference manual in texinfo format originally -contributed by Trent A. Fisher . - -me.man and msafer.man have been renamed to groff_me.man -resp. groff_msafer.man for consistency. - -Default strings for macros in doc-common resp. tmac.an no longer contain the -word `UNIX'. - -groff should now be Y2k safe (fixes contributed by Paul Eggert -). - -Following the GNU standards, groff will now use the prefix `/usr/local/' as -the default instead of replacing an existent groff binary. - -groff, troff, nroff, and pic now support the -U flag to activate unsafe -behaviour (without -msafer); the -S flag for using the -msafer macros is now -the default. - -Grohtml -------- - -This is a new output device for producing HTML output contributed by Gaius -Mulley . It is still very alpha but has been included -into the distribution so that a lot of people have a chance to test it. Bug -reports are highly welcome. - -Grolj4 ------- - -Duplex printing support has been contributed by Jeffrey Copeland -. - -Soelim ------- - -Added -I option for defining include paths (patch contributed by Peter -Miller ). - -Gxditview ---------- - -Fallback resources added (patch contributed by Larry Jones -). - -Will now support 8 gray levels. - -mm --- - -New version 1.32 (contributed by Joergen Haegg ). - -VERSION 1.11 -============ - -Complete documentation for pic is now in the file doc/pic.ms. It was -contributed by Eric S. Raymond, , who is emphatically -*not* volunteering to take over groff as he is way overworked with -half a dozen other projects. - -VERSION 1.10 -============ - -The directory where data files are installed has been changed from -/usr/local/lib/groff to /usr/local/share/groff to comply with the -latest GNU coding standards. - -By default groff programs with Unix equivalents are installed with a -"g" prefix unless there is an existing (non-groff) troff installation. - -A new approach is used to make system macro packages available to -groff. Instead of simply including /usr/lib/tmac in the list of -directories searched by groff, the installation process creates for -each system macro package a wrapper macro package in the groff macro -directory that references the system macro package. The groff macro -packages are now installed with a leading "g" prefix if there is a -system version of the same macro package, and otherwise without the -"g" prefix, with the exception that the groff version of -me which is -always installed as -me. - -There is a new device, lj4, for the HP LaserJet 4 (and PCL5 -compatibles). - -Groff ------ - -groff has a -S option that prevents the use of unsafe features in pic -and troff. This uses a new -S option of pic and the -msafer macros -for troff. - -Troff ------ - -The `blm' request specifies a macro to be invoked when a blank line is -encountered. - -Pic ---- - -A -S (safer) option disables the sh command. - -Grops ------ - -The -m option enables manual feed. - -VERSION 1.09 -============ - -\(rn will now produce a character that has the traditional metrics, -and will form corners with \(ul and \(br. This means that it will not -align properly with \(sr. Instead there's a new character -\[radicalex] which aligns with \(sr; this is used by eqn for doing -square roots. - -Troff ------ - -The `pso' request allows you to read from the standard output of a -command. - -Grops ------ - -The PSPIC macro has options to allow the horizontal alignment of the -graphic to be specified. - -VERSION 1.08 -============ - -Troff ------ - -The escape sequence \V[xxx] will interpolate the value of the -environment variable xxx. - -Tbl ---- - -The decimalpoint option can be used to specify the character to be -recognized as the decimal point character in place of the default -period. - -VERSION 1.07 -============ - -Groff ------ - -The environment variable GROFF_COMMAND_PREFIX can be used to control -whether groff looks for `gtroff' or `troff' (similarily for the -preprocessors.) - -Troff ------ - -Multilingual hyphenation is supported by new `hpf' and `hla' requests, -and by a `\n[.hla]' number register. The -H option has been removed. -Files of hyphenation patterns can have comments. - -When a font cannot be found, troff gives a warning (of type `font', -enabled by default) instead of an error. - -There's a new request `trnt' that's like `tr' except that it doesn't -apply to text transparently throughput into a diversion with \!. - -Tbl ---- - -There is a `nokeep' option which tells tbl not to use diversions to -try to keep the table on one page. - -Eqn ---- - -Setting the parameter `nroff' to a non-zero value causes `ndefine' to -behave like `define' and `tdefine' to be ignored. This is done by -eqnrc when the current device is ascii or latin1. There's a `neqn' -script that just does `eqn -Tascii'. - -Grotty ------- - -grotty uses whatever page length was specified using the `pl' request -rather than using the paperlength command in the DESC file. The -paperwidth command in the DESC file is also ignored. - -VERSION 1.06 -============ - -The programs in groff that have Unix counterparts can now be installed -without a leading `g' prefix. See the `g' variable in the Makefile. - -The g?nroff script simulates the nroff command using groff. - -New special characters \(+h, \(+f, \(+p, \(Fn, \(Bq, \(bq, \(aq, \(lz, -\(an. See groff_char(7). - -^L is now a legal input character. - -Groff ------ - -The Xps pseudo-device has disappeared. Instead there is a new -X -option that tells groff to use gxditview instead of the usual -postprocessor. (So instead of -TXps, use -XTps or just -X if your -default device is ps.) - -The postprocessor to be used for a particular device is now specified -by a `postpro' command in the DESC file rather than being compiled -into groff. Similarly the command to be used for printing (with the --l option) is now specified by a `print' command in the DESC file. - -The groff command no longer specifies eqnchar as an input file for -eqn. Instead eqn automatically loads a file `eqnrc'. The groff -command no longer passes the -D option to eqn. Instead eqnrc sets the -draw_lines parameter. - -The groff command no longer tells troff to load a device-specific -macro file. This is handled instead by the `troffrc' file, which is -always loaded by troff. - -The shell script version of groff has been removed. - -Troff ------ - -The `rchar' request removes a character definition established with `char'. - -Compatibility mode is disabled and the escape character is set to `\' -while a character definition is being processed. - -The `\#' escape sequence is like `\"' except that the terminating -newline is ignored. - -The `shc' request tells troff which character to insert (instead of -the default \(hy) when a word is hyphenated at a line break. - -A font name of 0 (zero) in the DESC file will cause no font to be -mounted on the corresponding font position. This is useful for -arranging that special fonts are mounted on positions on which users -are not likely explicitly to mount fonts. All groff devices now avoid -initially mounting fonts on positions 5-9. - -The `do' request allows a single request or macro to be interpreted -with compatibility mode disabled. - -troff automatically loads a file `troffrc' before any other input file. -This can be prevented with the -R option. This file is responsible -for loading the device-specific macros. - -Pic ---- - -The -x option has been removed and a -n option has been added. By -default, pic now assumes that the postprocessor supports groff -extensions. The -n option tells pic to generate output that works -with ditroff drivers. The -z option now applies only to TeX mode. - -The -p option has been removed. Instead if the -n option is not -specified, pic generates output that uses \X'ps: ...' if the \n(0p -register is non-zero and tmac.ps sets this register to 1. - -In places where you could 1st or 5th you can now say `i'th or `i+1'th -(the quotes are required). - -Eqn ---- - -Eqn now automatically reads a file `eqnrc' from the macro directory. -This performs the same role that the eqnchar files used to. This can -be prevented by the -R option. - -Setting the draw_lines parameter to a non-zero value causes lines to -be drawn using \D rather than \l. The -D option is now obsolete. - -`uparrow', `downarrow' and `updownarrow' can be used with `left' and -`right'. - -The amount of extra space added before and after lines containing -equations can be controlled using the `body_height' and `body_depth' -parameters. - -Grops ------ - -Font description files have been regenerated from newer AFM files. -You can get access to the additional characters present in the text -fonts in newer PostScript printers by using -mpsnew. - -The default value of the -b option is specified by a `broken' command -in the DESC file. - -With the -g option, grops will generate PostScript code that guesses -the page height. This allows documents to be printed on both letter -(8.5x11) and A4 paper without change. - -Grodvi ------- - -ISO Latin-1 characters are available with -Tdvi. Format groff_char(7) -with groff -Tdvi for more information. - -Grotty ------- - -The -mtty-char macros contain additional character definitions for -use with grotty. - -Macros ------- - -In previous releases the groff -me macros treated the $r and $R number -registers in a way that was incompatible with the BSD -me macros. The -reason for this was that the approach used by the BSD -me macros does -not work with low resolution devices such as -TX75 and -TX100. -However, this caused problems with existing -me documents. In this -release, the vertical spacing is controlled by the $v and $V registers -which have the same meaning as $r and $R in earlier groff releases. -In addition, if the $r or $R register is set to a value that would be -correct for for the BSD -me macros and a low resolution device is not -being used, then an appropriate value for the $v or $V register will -be derived from the $r or $R register. - -The groff -me macros work with -C and (I think) with Unix troff. - -For backward compatibility with BSD -me, the \*{ and \*} strings are -also available as \*[ and \*]. Of course, \*[ will only be usable -with -C. - -The \*T string has been deleted. Use \*(Tm instead. - -Xditview --------- - -The `n', Space and Return keys are bound to the Next Page action. The -`p', BackSpace and Delete keys are bound to the Previous Page action. -The `q' key is bound to the Quit action. - -The `r' key is bound to a rerasterize action that reruns groff, and -redisplays the current page. - -VERSION 1.05 -============ - -Pic ---- - -There is a alternative assignment operator `:=' which interacts -differently with blocks. - -There is a new command `command', which allows the values of variables -to be passed through to troff or TeX. - -The `print' command now accepts multiple arguments. - -String comparison expressions (using `==' or `!=') are allowed in more -contexts. - -Grotty ------- - -Horizontal and vertical lines drawn with \D'l ...' will be rendered -using -, | and + characters. This is intended to give reasonable -results with boxed tables. It won't work well with pic. - -Macros ------- - -The -mdoc macros have been upgraded to the version in the second -Berkeley networking release. This version is not completely -compatible with earlier versions; the old version is still available -as -mdoc.old. The grog script has been enhanced so that it can -usually determine whether a document requires the old or new versions. - -With -TX75, -TX100 and -TXps, the PSPIC macro will produce a box -around where the picture would appear with -Tps. - -VERSION 1.04 -============ - -An implementation of the -mm macros is included. - -The directory in which temporary files are created can be controlled -by setting the GROFF_TMPDIR or TMPDIR environment variables. - -Pic ---- - -Some MS-DOS support (see pic/make-dos-dist). - -Grops ------ - -There are two new \X commands (\X'ps: invis' and \X'ps: endinvis') -which make it possible to have substitute characters that are -displayed when previewing with -TXps but ignored when printing with -grops. - -Xditview --------- - -Support for scalable fonts. - -VERSION 1.03 -============ - -No changes other than bug fixes. - -VERSION 1.02 -============ - -There is an implementation of refer and associated programs. groff -R -preprocesses with grefer; no mechanism is provided for passing -arguments to grefer because most grefer options have equivalent -commands which can be included in the file. grog also supports refer. - -There is an alternative perl implementation of the grog script. - -The code field in lines in the charset section of font description -files is now allowed to contain an arbitrary integer (previously it -was required to lie between 0 and 255). Currently grops and grodvi -use only the low order 8 bits of the value. Grodvi will use the -complete value; however, this is unlikely to be useful with -traditional TeX tools (.tfm files only allow 8 bit character codes.) - -Left and right double quotes can be obtained with \(lq and \(rq -respectively. - -There is a new program called pfbtops which translates PostScript -fonts in pfb format to ASCII. - -A slightly modified version of the Berkeley tmac.doc is included. - -Troff ------ - -In long escape names the closing ] is now required to be at the same -input level as the opening [. - -The \A'S' escape sequence returns 1 or 0 according as S is or is not -suitable for use as a name. - -\~ produces an unbreakable space that can be stretched when the line -is adjusted. - -The `mso' request is like the `so' request except that it searches for -the file in the same directories in which tmac.X is searched for when -the -mX option is given. - -The escape sequence `\R' is similar to the `nr' request. - -Eqn ---- - -A new `special' primitive allows you to add new types of unary -constructs by writing a troff macro. - -Pic ---- - -The implementation no longer uses gperf. - -Grops ------ - -The compile-time -DBROKEN_SPOOLER option has been replaced by a -BROKEN_SPOOLER_FLAGS option. This allows more precise control over -how grops should workaround broken spoolers and previewers. There is -a new -b option that can change this at run-time. - -Grops now generates PostScript that complies with version 3.0 of the -Document Structuring Convention. - -The resource management component of grops (the part that deals with -imported documents and downloadable fonts) has been rewritten and now -supports version 3.0 of the Document Structuring Conventions. The -%%DocumentFonts comment is no longer supported; you must use the -%%Document{Needed,Supplied}{Fonts,Resources} comments instead -(or as well.) - -tmac.psatk contains some macros that support the mechanism used by the -Andrew Toolkit for including PostScript graphics in troff documents. - -Xditview --------- - -Parts of xditview have been rewritten so that it can be used with the -output of gtroff -Tps. groff -TXps will run gtroff -Tps with -gxditview. - -There is a new menu entry `Print' which brings up a dialog box for -specifying a command with which the file being previewed should be -printed. - -Xditview now uses imake. - -VERSION 1.01 -============ - -The groff command now understands the gtroff `-a' and `-i' options. - -With the `m' and `n' scale indicators, the scale factor is rounded -horizontally before being applied. This makes (almost) no difference -for devices with `hor' equal to 1, but it makes groff with -Tascii or --Tlatin1 behave more like nroff in its treatment of these scale -indicators. Accordingly tmac.tty now calls the `nroff' request so -that the `n' condition will be true. - -The device-specific macros (tmac.ps, tmac.dvi, tmac.tty and tmac.X) -have been made to work at least somewhat with -C. In particular the -special characters defined by these macros now work with -C. - -groff -Tdvi -p will now pass pic the -x flag; this will enable filling -of arrowheads and boxes, provided that your dvi driver supports the -latest version of the tpic specials. - -Eqn ---- - -There is a new `-N' option that tells eqn not to allow newlines in -delimiters. This allows eqn to recover better from missing closing -delimiters. The groff command will pass on a `-N' option to eqn. - -Grops ------ - -You can now use psfig with grops. See the file ps/psfig.diff. I do -not recommend using psfig for new documents. - -The command \X'ps: file F' is similar to \X'ps: exec ...' except that -the PostScript code is read from the file F instead of being contained -within the \X command. This was added to support psfig. - -Grodvi ------- - -There are font files HB and HI corresponding to cmsssbx10 and cmssi10. - -Macros ------- - -The groff -me macros now work with the -C option. As a result, they -may also work with Unix nroff/troff. - -In -me, the $r and $R number registers now contain the line spacing as -a percentage of the pointsize expressed in units (normally about 120). -The previous definition was useless with low resolution devices such -as X75 and X100. - -VERSION 1.00 -============ - -A -ms-like macro-package is now included. - -The name for the Icelandic lowercase eth character has been changed -from \(-d to \(Sd. - -Troff ------ - -There is a new request `nroff', which makes the `n' built-in condition -true and the `t' built-in condition false; also a new request `troff' -which undoes the effect of the `nroff' request. This is intended only -for backward compatibility: it is usually better to test \n(.H or -\n(.V or to use the `c' built-in condition. - -The \R escape sequence has been deleted. Use \E instead. - -There are `break' and `continue' requests for use with the `while' -request. - -There is a request `hym' that can ensure that when the current -adjustment mode is not `b' a line will not be hyphenated if it is no -more than a given amount short, and a request `hys' that can ensure -that when the current adjustment mode is `b' a line will not be -hyphenated if it can be justified by adding no more than a given -amount of extra space to each word space. - -There is a request `rj' similar to `ce' that right justifies lines. - -A warning of type `space' will be given when a call is made to an -undefined request or macro with a name longer than two characters, and -the first two characters of the name make a name that is defined. -This is intended to find places where a space has been omitted been a -request or macro and its argument. This type of warning is enabled by -default. - -Pic ---- - -A comma is permitted between the arguments to the `reset' command. - -For use with TeX, there is a new `-c' option that makes gpic treat -lines beginning with `.' in a way that is more compatible with tpic -(but ugly). - -Eqn ---- - -It is no longer necessary to add `space 0' at the beginning of -complicated equations inside pictures. - -`prime' is now treated as an ordinary character, as in Unix eqn. The -previous behaviour of `prime' as an operator can now be obtained using -`opprime'. - -Xditview --------- - -There are two new devices X75-12 and X100-12 which are the same as X75 -and X100 except that they are optimized for documents that use mostly -12 point text. - -VERSION 0.6 -=========== - -The installation process has been refined to make it easy for you to -share groff with someone who has the same type of machine as you but -does not have a C++ compiler. See the end of the INSTALL file for -details. - -There is a man page for the tfmtodit program which explains how to use -your own fonts with groff -Tdvi. - -There is a man page for afmtodit which explains how to use your own -PostScript fonts with groff -Tps. - -The \N escape sequence is now fully supported. It can now be used to -access any character in a font by its output code, even if it doesn't -have a groff name. This is made possible by a convention in the font -files that a character name of `---' refers to an unnamed character. -The drivers now all support the `N' command required for this. The font -description files have been updated to include unnamed characters. - -The `x' command in font description files has been removed: instead -any unknown commands are automatically made available to the drivers. -If you constructed your own font files with an earlier version of -tfmtodit or afmtodit, you must construct them again using the current -version. - -Characters between 0200 and 0237 octal are no longer legal input -characters. Note that these are not used in ISO 8859. - -A command called `grog' has been added, similar to the `doctype' -command described in Kernighan and Pike. - -Groff ------ - -The groff command has some new options: -V prints the pipeline -instead of executing it; -P passes an argument to the postprocessor, --L passes an argument to the spooler. - -There is a C++ implementation of the groff command. This handles some -things slightly better than the shell script. In particular, it can -correctly handle arguments containing characters that have a special -meaning to the shell; it can give an error message when child -processes other than the last in the pipeline terminate abnormally; -its exit status can take account of the exit statuses of all its child -processes; it is a little more efficient; when geqn is used, it -searches for the eqnchar file in the same way that font metric files -are searched for, rather than expecting to find it in one particular -directory. - -Gtroff ------- - -There is font translation feature: For example, you can tell gtroff to -use font `HR' whenever font `H' is requested with the line - .ftr H HR -This would be useful for a document that uses `H' to refer to -Helvetica. - -There are some new number registers: `.kern' contains the current kern -mode, `.lg' the current ligature mode, `.x' the major version number, -`.y' the minor version number, `.ce' the number of lines to be -centered in the current environment, `.trunc' the amount of vertical -space truncated by the most recently sprung vertical position trap, -`.ne' the amount of vertical space needed in the last `ne' request -that caused a vertical position trap to be sprung. - -The `cf' request now behaves sensibly in a diversion. If used in a -diversion, it will now arrange for the file to be copied to the output -when the diversion is reread. - -There is a new request `trf' (transparent file) similar to `cf', but -more like `\!'. - -There is a new escape sequence `\Y[xxx]', roughly equivalent to -`\X'\*[xxx]'', except that the contents of string or macro xxx are not -interpreted, and xxx may contain newlines. This requires an output -format extension; the drivers have been modified to understand this. -Grops has also been modified to cope with newlines in the arguments to -\X commands; grops has a new \X command mdef, which is like def except -that it has a first argument giving the number of definitions. - -There is a new warning category `escape' which warns about unknown -escape sequences. - -The `fp' request now takes an optional third argument giving the external -name of the font. - -The `\_' character is now automatically translated to `\(ul' as in troff. - -The environment variable `GROFF_HYPHEN' gives the name of the file -containing the hyphenation patterns. - -There is a `\C'xxx'' escape sequence equivalent to `\[xxx]'. - -Characters ", ', ), ], *, \(dg are now initially transparent for the purposes -of end of sentence recognition. - -There is an anti-recursion feature in the `char' request, so you can -say `.char \(bu \s+2\(bu\s-2'. - -The limit on the number of font positions has been removed. -Accordingly `\n[.fp]' never returns 0. - -The restriction on the number of numbered environments has been removed. - -There is a new escape sequence `\E' that makes it possible to -guarantee that an escape sequence won't get interpreted in copy-mode. -The `\R' escape sequence is accordingly now deprecated. - -Gpic ----- - -Arguments of the form `X anything X' (in the `copy thru', `sh', `for', -`if' and `define' constructs) can now be of the form `{ anything }'. - -If the `linethick' variable is negative (as it now is initially), -lines will be drawn with a thickness proportional to the current point -size. - -The `rand' function now takes no arguments and returns a number between -0 and 1. The old syntax is still supported. - -`^' can be used in expressions to indicate exponentiation. - -In the `for' construct the argument to the by clause can be prefixed -by `*' to indicate that the increment is multiplicative. - -A bare expression may be used as an attribute. If the current -direction is `dir', then an attribute `expr' is equivalent to -`dir expr' - -There is a `sprintf' construct that allows numbers to be formatted and used -wherever a quoted string can be used. - -The height of a text object without an explicit height attribute is -the number of text strings associated with the object times the value -of the `textht' variable. - -The maximum height and width of a picture is controlled by the -`maxpswid' and `maxpsht' variables. - -Gtbl ----- - -Gtbl can now handle gracefully the situation where the `ce' request -has been applied to a table. - -Geqn ----- - -The `ifdef' primitive has been generalized. - -A tilde accent can be put underneath a box using `utilde'. This -defined using a general `uaccent' primitive. - -Grops ------ - -There is a new PostScript font downloading scheme which handles font -downloading for imported illustrations. Previously, the name of the -file containing the font was given in the `x download' line in the -groff font metric file. Now, there is a `download' file which says -for each PostScript font name which file contains that font. Grops -can also now handle inter-font dependencies, where one downloadable -font depends on some other (possibly downloadable) font. - -The `T' font has been removed. The characters it used to provide are -now provided by `char' definitions in tmac.ps. TSymbol.ps has also -been removed, and the tweaks it provided are now provided by `char' -definitions. diff --git a/contrib/groff/PROBLEMS b/contrib/groff/PROBLEMS deleted file mode 100644 index ba43b3ce317f..000000000000 --- a/contrib/groff/PROBLEMS +++ /dev/null @@ -1,916 +0,0 @@ -This file describes various problems that have been encountered in -compiling, installing and running groff. Suggestions for additions or -other improvements to this file are welcome. - ----------------------------------------------------------------------- - - - -Generic Problems -================ - - - -* Displaying a man page on a terminal with/without my favourite pager - only gives garbage. - -groff by default now uses SGR escape sequences (`ANSI color') to -control the display attributes (bold, underlined, colour) on TTYs. -Some terminals (e.g. `kterm') don't understand SGR, and some pagers -(e.g. older versions of `less' or `less' without the -R option) don't -understand SGR either. There are three solutions to fix this, in order -of preference; please read the grotty man page for more details. - -The fourth and probably best option is to update your terminal program -and pager to versions which can handle SGR. - - 1. Set the GROFF_NO_SGR environment variable. - - 2. Pass option -c to grotty. - - 3. Append the following fragment to the `troffrc' file: - - ---- start --- -.if n \{\ -. nr _C \n(.C -. cp 0 -. -. \" The following code sets a top-of-page trap to disable grotty's TTY -. \" mode. Since neither \X nor .output can be used before the first -. \" page has started, we must use a trap. To make it work with troff's -. \" -o option, we wait until the first printed page. -. -. de sgr@dummy -. . -. -. rn wh wh@old -. -. \" The stand-alone version. If no other trap is set, we can safely -. \" insert the truncated vertical space caused by the trap (if any). -. \" Otherwise we assume that the document's main macro package takes -. \" care of that. As soon as the trap has been executed, it is removed. -. de1 no@sgr -. if \\n[.P] \{\ -. if (\\n[.t] == \\n[.p]) \{\ -. rn wh@old wh -. rm no@sgr -. wh 0 -. sp \\n[.trunc] -. nop \X'tty: sgr 0' -. sp -1 -. \}\} -. . -. -. wh@old 0 no@sgr -. -. \" The piggyback version to be appended to macros planted with the -. \" modified `wh' request. -. de1 no@sgr1 -. if \\n[.P] \{\ -. rn wh@old wh -. ds no@sgr1 -. nop \X'tty: sgr 0' -. sp -1 -. \} -. . -. -. \" We redefine the `wh' request so that `no@sgr1' is appended to -. \" the trap macro. -. de1 wh -. am1 \\$2 sgr@dummy -. no@sgr1 -. sgr@dummy -. wh@old \\$1 \\$2 -. . -. -. cp \n[_C] -.\} ---- end --- - ----------------------------------------------------------------------- - -* The UTF-8 output of grotty has strange characters for the minus, the - hyphen, and the right quote. Why? - -The used Unicode characters (U+2212 for the minus sign and U+2010 for -the hyphen) are the correct ones, but many programs can't search them -properly. The same is true for the right quote (U+201D). To map those -characters back to the ASCII characters, insert the following code -snippet into the `troffrc' configuration file: - -.if '\*[.T]'utf8' \{\ -. char \- \N'45' -. char - \N'45' -. char ' \N'39' -.\} - - ----------------------------------------------------------------------- - -* My document says that the current year is 19100, not 2000. - -In groff, as in traditional troff, the yr number register yields the -year minus 1900. Unfortunately, there is a longstanding bug in the -Troff User's Manual , -which incorrectly claims that yr is the last two digits of the year. -This claim was never true of either Unix troff or of groff. - -If your text looks like this: - - .\" Wrong: - This document was formatted in 19\n(yr. - -you can correct it as follows: - - This document was formatted in \n[year]. - -or, if you want to be portable to older troff versions, as follows: - - .nr y4 1900+\n(yr - This document was formatted in \n(y4. - ----------------------------------------------------------------------- - -* groff can't handle my troff document. It works fine with AT&T - troff. - -Read the section on incompatibilities in groff_diff(7). Try using -the -C option. Alternatively there's the sed script -`tmac/fixmacros.sed' which will attempt to edit a file of macros so -that it can be used with groff without the -C flag. - ----------------------------------------------------------------------- - -* gtroff doesn't understand lines like `.ce99' with no space between - the name of the request or macro and the arguments. - -gtroff requires a space between macro or request and its arguments -because it allows the use of long names for macros and requests. You -can use the -C option or the `cp' request to put gtroff into a -compatibility mode in which it is not possible to use long names for -macros but in which no space is required between macros and their -arguments. The use of compatibility mode is strongly discouraged. - ----------------------------------------------------------------------- - -* groff -Tdvi produces dvi files that use fonts at weird - magnifications. - -Yes, it does. You may need to compile fonts with Metafont at these -magnifications. The CompileFonts script in the devdvi/generate -directory may help you to do this. (It will take a *long* time on -slow computers.) - ----------------------------------------------------------------------- - -* Groff doesn't use the font names I'm used to. - -Use the `ftr' request. See groff_diff(7). - ----------------------------------------------------------------------- - -* pic output is not centered horizontally; pictures sometimes run off - the bottom of the page. - -The macro package you are using is not supplying appropriate -definitions of PS and PE. Give groff a -mpic option. - ----------------------------------------------------------------------- - -* gpic doesn't accept the syntax `chop N M' for chopping both ends of - a line. - -The correct syntax is `chop N chop M'. - ----------------------------------------------------------------------- - -* With gpic -t, when I print `line ->; box' using a dvi to ps program, - the arrow head sticks through into the inside of the box. - -The dvi to ps program should be modified to set the line cap and line -join parameters to 1 while printing tpic specials. - ----------------------------------------------------------------------- - -* gtroff gives warnings about lines like - .ev \" a comment - (with a tab after the .ev). - -A tab character cannot be used as a substitute for a space character -(except in one case: between a control character at the beginning of a -line and the name of a macro or request). For example, in Unix troff - - .ps \" restore the previous point size - -(with a tab after the .ps) will NOT restore the previous point-size; -instead it will be silently ignored. Since this is very likely to be -an error, gtroff can give a warning about it. If you want to align -comments, you can do it like this: - - .ev\" \" a comment - ----------------------------------------------------------------------- - -* I don't like the page headers and footers produced by groff -man. - -There seem to be many different styles of page header and footer -produced by different versions of the -man macros. You will need to -put modified macros from tmac/an-old.tmac into man.local. More -information is available in groff_man(7). - ----------------------------------------------------------------------- - -* Where can I get grap? - -Ted Faber has written a freely available grap: - - http://www.lunabase.org/~faber/Vault/software/grap/ - ----------------------------------------------------------------------- - -* The \n(st and \n(sb registers don't seem to work. I thought \w set - them to the height and depth of its argument, but the registers - always seem to be 0. - -\n(st and \n(sb aren't supposed to give the height and depth of the -string rather they give the minimum and maximum vertical displacement -of the baseline. For example for \v'2u'\v'-3u', \n(st will be 1 and -\n(sb will be -2. The height and depth of the string is available in -the \n[rst] and \n[rsb] registers: these are groff extensions. - ----------------------------------------------------------------------- - -* While formatting a manual page, groff complains about not being able - to break lines. The problem seems to be caused by a line like: - .TP \w'label'+2 - -The -man documentation says that the default scale indicator for TP -macro is `n'. The groff -man macros implement this correctly, so that -the argument will be evaluated as if it were - - \w'label'n+2n - -The Unix -man macros don't implement this correctly (probably because -it's hard to do in Unix troff); they just append `n' to the entire -argument, so that it will be evaluated as if it were - - \w'label'u+2n - -The solution is to fix the manual page: - - .TP \w'label'u+2 - ----------------------------------------------------------------------- - -* I'm having problems formatting man pages produced by the perl - wrapman script. - -Some versions of wrapman have a superfluous blank line before the .TH -line. This must be deleted. Then either use groff -C, or apply the -following patch: - -*** wrapman.~2~ Sun Jan 19 12:10:24 1992 ---- wrapman Tue Aug 10 02:06:41 1993 -*************** -*** 35,41 **** - $line1 .= if $line1 =~ /eval/; - $line1 .= if $line1 =~ /argv/; - $line2 = ; -! next if $line2 eq "'di';\n"; - - # Pull the old switcheroo. - ---- 35,41 ---- - $line1 .= if $line1 =~ /eval/; - $line1 .= if $line1 =~ /argv/; - $line2 = ; -! next if $line2 eq "'di ';\n" || $line2 eq "'di';\n"; - - # Pull the old switcheroo. - -*************** -*** 49,56 **** - - print OUT $line1; - print OUT < foo.ps - -See groff_tmac(5) for more information. - ----------------------------------------------------------------------- - -* When I print the output of groff -Tps, the output is always shifted - up by about 0.7 inches; I'm using 8.5x11 inch paper. - -Make sure that the paper size is `letter'. See groff_tmac(5). - ----------------------------------------------------------------------- - -* When I try to run gxditview, I get the error: - Error: Widget viewport has zero width and/or height - -This error means you haven't correctly installed the application -defaults file, GXditview.ad; `make install' does this for you -automatically, so either you didn't do `make install', or you haven't -passed a good `--appresdir=' argument to groff's configure script. - -See the X(7) man page for information how and where application resource -files have to be located. Look for the XAPPLRESDIR and XUSERFILESEARCHPATH -environment variables. - ----------------------------------------------------------------------- - -* When I preview documents using -TX75 or -TX100, the layout is not - the same as when I print the document with -Tps: the line and page - breaks come in different places. - -Use `groff -X -Tps'. - ----------------------------------------------------------------------- - -* When I try to print the output of groff -Tps, I get no output at all - from the printer, and the log file shows the error - %%[ error: undefined; offendingcommand: BP ]%% - I'm using TranScript spooling software. - -This is a bug in the page reversal filter in early versions of -TranScript. Change the `broken' parameter in -/usr/local/lib/groff/font/devps/DESC to 7. - ----------------------------------------------------------------------- - -* When I preview groff -Tps output using the Sun OpenWindows 2.0 - pageview program, all the pages are displayed on top of each other. - -This is a defect in pageview. Change the `broken' parameter in -/usr/local/lib/groff/font/devps/DESC to 2. - ----------------------------------------------------------------------- - -* With groff -TX75, -TX100 or -X, I can only view the first page. - -The left mouse button brings up a menu that allows you to view other -pages. - ----------------------------------------------------------------------- - -* When I print the output of groff -Tdvi, I just get a black dot in - upper left corner. - -Some dvi drivers (notably early versions of xtex) do not correctly -handle dvi files that use a resolution different from that used by dvi -files produced by TeX. Try getting a more up to date driver. - ----------------------------------------------------------------------- - -* How can I use groff with an old LaserJet printer that doesn't work - with groff -Tlj4? - -You have at least 3 options: - -- use groff -Tps with GNU Ghostscript; - -- use groff -Tdvi with a TeX .dvi to Laserjet driver; - -- use groff with the LaserJet driver in Chris Lewis' psroff package - (available for ftp from: - ftp.uunet.ca:/distrib/chris_lewis/psroff3.0pl17). - ----------------------------------------------------------------------- - -* Groff seems to generate level 3 Postscript, but my printer is only a - level 1 or 2 PostScript printer. - -In fact groff generates only level 2 PostScript (or rather level 1 -with some extensions; see grops(1) for more information how to disable -them). The `%!PS-Adobe-3.0' comment at the beginning of PostScript -output generated by groff indicates that the file conforms to -version 3.0 of the Adobe Document Structuring Conventions. The output -generated by groff should be printable on any PostScript printer. -Problems with groff output's not printing are most often caused by the -spooling system. - - - -Platform-Dependent Macro Problems -================================= - - - -* I get lots of errors when I use groff with the AT&T -mm macros. - -Use the groff -mm macros. - ----------------------------------------------------------------------- - -* groff produces wrapper macros for `ms' and friends which call the - system's original macros. Then, to get groff's ms macro package I - have to use `-mgs' instead `-ms'. Can I avoid this? - -Yes. Configure and compile groff as usual, but install it with - - make install tmac_wrap="" - -Then no wrapper files are produced, and `-ms' will use groff's `ms' -macros. - ----------------------------------------------------------------------- - -* I'm having problems formatting HP-UX 9.0 man pages with groff -man. - -Copy HP's tmac.an into /usr/local/share/groff/site-tmac/an.tmac, and -either put `.cp 1' at the beginning or filter it (and any files it -.so's) through tmac/fixmacros.sed. - ----------------------------------------------------------------------- - -* I get errors using the Unix -ms macros with groff -e -C. - -Apply this change: - -*** /usr/lib/ms/ms.eqn Tue Apr 25 02:14:28 1989 ---- ms.eqn Sun Nov 11 10:33:59 1990 -*************** -*** 22,29 **** - .. - . \" EN - end of a displayed equation - .de EN -! .if !\\*(10 .br - .di - .rm EZ - .nr ZN \\n(dn - .if \\n(ZN>0 .if \\n(YE=0 .LP ---- 22,30 ---- - .. - . \" EN - end of a displayed equation - .de EN -! .if \\n(.k>0 .br - .di -+ .ds 10 \\*(EZ\\ - .rm EZ - .nr ZN \\n(dn - .if \\n(ZN>0 .if \\n(YE=0 .LP - ----------------------------------------------------------------------- - -* I'm having problems formatting Ultrix man pages with groff -man. - -The Ultrix man pages use a number of non-standard extensions to the -Unix man macros. One solution is to use the Ultrix -man macros with -groff. Copy /usr/lib/tmac/tmac.an to -/usr/local/share/groff/site-tmac/an.tmac and apply the following patch -(from Frank Wortner): - -*** /usr/local/lib/groff/tmac/tmac.an Wed Sep 9 12:29:28 1992 ---- /usr/lib/tmac/tmac.an Fri Jul 24 19:58:19 1992 -*************** -*** 489,495 **** - . \" make special case of shift out of italic - .de }S - .ds ]F -! .if \\$12 .if !\\$5 .ds ]F \^ - .ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9" - .el \\$3 - .}f ---- 489,495 ---- - . \" make special case of shift out of italic - .de }S - .ds ]F -! .if \\$12 .if !\\$5 .ds ]F\^ - .ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9" - .el \\$3 - .}f - -Another possible solution is to install tmac/man.ultrix as -/usr/local/share/groff/site-tmac/man.local. - ----------------------------------------------------------------------- - -* On an SGI system, how can I make the man command use groff? - -From David Hinds (some of these steps -are unnecessary if you install with the `g' Makefile variable defined -as empty): - -Create a script called 'eqn': - - > #! /bin/sh - > if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi - > geqn $* - -and a script called 'neqn': - - > #! /bin/sh - > if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi - > geqn -Tascii $* - -and do: - - > ln -s gnroff nroff - -and edit the end of the gnroff script to be: - - > rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'` - > exec groff -Wall -mtty-char $T $opts $rest - -To get PostScript output from 'man -t', you also need to create a -'psroff' script similar to 'nroff'. Here are the context diffs: - -*** /usr/local/bin/nroff Sat Feb 13 15:51:09 1993 ---- /usr/local/bin/psroff Sat Feb 13 17:45:46 1993 -*************** -*** 1,8 **** - #! /bin/sh -! # Emulate nroff with groff. - - prog="$0" -! T=-Tascii - opts= - - for i ---- 1,8 ---- - #! /bin/sh -! # Emulate psroff with groff. - - prog="$0" -! T=-Tps - opts= - - for i -*************** -*** 25,30 **** ---- 25,33 ---- - -Tascii|-Tlatin1) - T=$1 - ;; -+ -t) -+ # ignore -- default is send to stdout -+ ;; - -T*) - # ignore other devices - ;; -*************** -*** 49,53 **** - rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'` - - # This shell script is intended for use with man, so warnings are - # probably not wanted. Also load nroff-style character definitions. -! exec groff -Wall -mtty-char $T $opts $rest ---- 52,56 ---- - rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'` - - # This shell script is intended for use with man, so warnings are -! # probably not wanted. -! exec groff -Wall $T $opts $rest - - - -Compilation Problems -==================== - - - -* Compilation dies with - - y.tab.c: In function `int yyparse()': - y.tab.c: `size_t' undeclared in namespace `std' - -* bison reports conflicts (either on stderr or in the `pic.output' - file) while processing `pic.y', and the produced pic binary doesn't - work at all. - -You need bison version 1.875b or greater. Alternatively, use yacc or -byacc. - ----------------------------------------------------------------------- - -* There are many empty `Makefile.dep' files. Is this a bug? - -No. Real dependency files are created with a `make depend' call. - ----------------------------------------------------------------------- - -* On HP-UX, the compiler complains about missing symbol `alloca'. - -Say - - export LDFLAGS=-lPW - -before starting the configure script. - ----------------------------------------------------------------------- - -* The configure script fails on OS/390 (z/OS) Unix. - -[This has been fixed in z/OS V1R3 (aka OS/390 R13).] - -There is a bug in the Language Environment (LE) whereby the test -program for static destructors fails. You will see the message -`configure: error: a working C++ compiler is required' - -Applying PTF UQ42006 is supposed to fix this, but the test program is -still returning the wrong value (1). To work around this problem, you -can comment out the following in the configure script (near line 2029). -This will effectively bypass the test (static constructors and -destructors do actually work properly): - -#if { (eval echo "$as_me:2029: \"$ac_link\"") >&5 -# (eval $ac_link) 2>&5 -# ac_status=$? -# echo "$as_me:2032: \$? = $ac_status" >&5 -# (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -# { (eval echo "$as_me:2034: \"$ac_try\"") >&5 -# (eval $ac_try) 2>&5 -# ac_status=$? -# echo "$as_me:2037: \$? = $ac_status" >&5 -# (exit $ac_status); }; }; then -# echo "$as_me:2039: result: yes" >&5 -#echo "${ECHO_T}yes" >&6 -#else -# echo "$as_me: program exited with status $ac_status" >&5 -#echo "$as_me: failed program was:" >&5 -#cat conftest.$ac_ext >&5 -#echo "$as_me:2045: result: no" >&5 -#echo "${ECHO_T}no" >&6;{ { echo "$as_me:2046: error: a working C++ compiler is required" >&5 -#echo "$as_me: error: a working C++ compiler is required" >&2;} -# { (exit 1); exit 1; }; } -#fi - ----------------------------------------------------------------------- - -* I get errors when I try to compile groff with DEC C++. - -Fix the declaration of write() in so that the second -argument is a const char *. Fix the declaration of open() in - so that the first argument is a const char *. - ----------------------------------------------------------------------- - -* On a host using Unix make (e.g. Solaris), if you are compiling for - multiple architectures by building in a subdirectory, the make stops - with a message like this: - - make: Fatal error: Don't know how to make target `assert.o' - - or like this: - - make: Fatal error: Can't find /u/src/groff/src/include/Makefile.sub': No such file or directory - -This occurs because GNU make and Unix make handle VPATH differently, -and the groff build relies on GNU make's VPATH handling. - -Use GNU make to work around this. -In Solaris 8 and 9, GNU make is on the Software Companion CD in -package SFWgmake and is installed as /opt/sfw/bin/gmake. Prebuilt -versions of GNU make for Solaris are also available from -sunfreeware.com. - ----------------------------------------------------------------------- - -* On Ultrix, the make program stops with the message - - *** Error code 1 - - Stop. - - for no apparent reason. - -Use GNU make. - ----------------------------------------------------------------------- - -* I'm having problems compiling groff on 386BSD 0.1. - -If you're using ash as /bin/sh, you'll need the following patch. - -*** gendef.sh.org Sun Jun 30 13:30:36 1991 ---- gendef.sh Sun Feb 28 10:23:49 1993 -*************** -*** 3,9 **** - file=$1 - shift - -! defs="#define $1" - shift - for def - do ---- 3,10 ---- - file=$1 - shift - -! x=$1 -! defs="#define $x" - shift - for def - do - -You'll also need to change dirnamemax.c so that it doesn't use -pathconf(). - ----------------------------------------------------------------------- - -* While compiling on Xenix, ranlib libgroff.a fails. - -The system ranlib can't handle externals longer than 40 characters. -Use the ranlib included in demon.co.uk:/pub/xenix/g++-1.40.3a.v1 -instead. - ----------------------------------------------------------------------- - -* I get errors when I try to compile groff with Sun C++ version 3 or - earlier. - -Groff requires header files that are moderately compatible with AT&T -C++ and ANSI C. With some versions of Sun C++, the supplied header -files need some of the following changes to meet this requirement: - must declare the mem* functions, (just add `#include -' to ); the first argument to fopen and freopen -should be declared as `const char *'; the first argument to fread -should be declared as `void *'; the first argument to fwrite should be -declared as `const void *'; malloc should be declared to return -`void *'; in , the declaration `extern "C" { void -*__builtin_alloca(int); }' should be added; in the -return type and the second argument type of signal() should be changed -to be `void (*)(int)'. - -You can either change them in place, or copy them to some other -directory and include that directory with a -I option. - ----------------------------------------------------------------------- - -* I get errors when I try to compile groff with Forte Development 6 - or 6u1, or Sun C++ version 5.0 through 5.2. - -This is a known problem; see Sun bug #4301919. See Sun patches -109482, 109490, 109508, and 109509 for fixes. - ----------------------------------------------------------------------- - -* I get warnings from the Sun linker while using gcc 3.4.0: - - ld: warning: relocation error: R_SPARC_UA32: - file groff/src/libs/libgroff/libgroff.a(getopt.o): symbol optarg: - external symbolic relocation against non-allocatable - section .debug_info; cannot be processed at runtime: - relocation ignored - -This seems to be a known problem (Sun bugs #4910101 and #4910810, -filed in September 2003; gcc bug #15599, filed May 2004) without a -public fix as of this writing. A work-around is to use option -`-gstabs+' instead of `-g' (and a high probability that the output is -only debuggable with gdb but not with Sun's debuggers). - ----------------------------------------------------------------------- - -* I get lots of `numeric overflow' error messages whenever I run - groff; I compiled groff with AT&T C++ 2.0 with an ANSI C compiler. - -Make sure -DCFRONT_ANSI_BUG is included in DEFINES in the top-level -Makefile. If that doesn't solve the problem, define INT_MIN as --INT_MAX in libgroff/lib.h. - ----------------------------------------------------------------------- - -* When compiling on MacOS X, groff compiles but does not run well, - especially `eqn', causing many `can't break line' messages. - -Use ./configure CXX=g++2 then make as usual. diff --git a/contrib/groff/PROJECTS b/contrib/groff/PROJECTS deleted file mode 100644 index 99b215f5ec45..000000000000 --- a/contrib/groff/PROJECTS +++ /dev/null @@ -1,14 +0,0 @@ -Here are some things that would be useful additions to groff: - - ideal preprocessor - - -mv macros (for typesetting viewgraphs and slides) - - a deroff that understands long names - - a page-makeup postprocessor and associated macro package - (like pm and -mpm) - -If you want to work on one of these, you should probably post to -gnu.groff.bug (or send email to bug-groff@gnu.org) to see if anyone else -has gotten there first. diff --git a/contrib/groff/README b/contrib/groff/README deleted file mode 100644 index 5f80eaf589af..000000000000 --- a/contrib/groff/README +++ /dev/null @@ -1,134 +0,0 @@ -This is the GNU `groff' document formatting system. The version -number is given in the file VERSION. - -Included in this release are implementations of `troff', `pic', `eqn', -`tbl', `grn', `refer', `-man', `-mdoc', `-mom', and `-ms' macros, and -drivers for `PostScript', `TeX dvi' format, `HP LaserJet 4' printers, -`Canon CAPSL' printers, `HTML' format (beta status), and -typewriter-like devices. Also included is a modified version of the -Berkeley `-me' macros, the enhanced version `gxditview' of the X11 -`xditview' previewer, and an implementation of the `-mm' macros -contributed by Joergen Haegg (jh@axis.se). - -See the file `INSTALL' for installation instructions. You will -require a C++ compiler. - -The file `NEWS' describes recent user-visible changes to `groff'. - -`groff' is free software. See the file `COPYING' for copying -permission. - -The file `PROBLEMS' describes various problems that have been -encountered in compiling, installing, and running `groff'. - -The most recent released version of `groff' is always available by -anonymous ftp from `ftp.gnu.org' in the directory `gnu/groff'. - -The current development version of `groff' is available from a `CVS' -repository. You can access it by first selecting a parent directory -in which to create a working copy (call it, say, `~/cvswork'), and -then executing the commands - - cd ~/cvswork - CVS_RSH=ssh; export CVS_RSH - cvs -d:ext:anoncvs@savannah.gnu.org/cvsroot/groff -z5 co groff - -(Note that you need an `ssh' client for security reasons.) - -This will create a subdirectory, `~/cvswork/groff', with a "checked -out" copy of the `CVS' repository. An update of this working copy may -be achieved, at any later time by invoking the commands - - cd ~/cvswork/groff - CVS_RSH=ssh cvs -z5 update -dP - -Please read the `CVS' info pages for further details. - -Finally, it is possible to access the `CVS' with a web browser by -pointing it to - - http://savannah.gnu.org/cvs/?group=groff - -Alternatively, you can download snapshots (which are updated twice a day). -The complete `groff' source as a single file is available at - - http://groff.ffii.org/groff/devel/groff-current.tar.gz - -A diff file relative to `groff-', the latest official `groff' -release is available at - - http://groff.ffii.org/groff/devel/groff--current.diff.gz - -Assuming that `groff-.tar.gz' and -`groff--current.diff.gz' are in the same directory, do the -following to apply the diff file: - - tar xzvf groff-.tar.gz - cd groff- - gunzip -c ../groff--current.diff.gz | patch -p1 - -Depending on your requirements, you may need at least some of the -following tools to build `groff' directly from its source: - - ghostscript - the psutils package - the netpbm package - texinfo 4.8 - bison >= 1.875b or byacc - -Note that `texinfo' and `bison' or `byacc' are required only for -building from `CVS' sources (either a checked out working copy, or a -daily snapshot). They are not required for building from a stable -release tarball. Also note that the version numbers stated are the -minimum supported. No version of `texinfo' < 4.8 will work, and the -original release of `bison' 1.875 is known not to work; you *may* find -that `bison' releases < 1.875 will work, but in case of difficulty, -please update to a later version *before* posting a bug report. - -For *all* sources, you need ghostscript for creation of either `PDF' or -`HTML' output; the `netpbm' and `psutils' packages are required only for -`HTML' output. If you don't intend to produce output in either of these -formats, then these packages are unnecessary. - -In Linux Debian, the installation of `texinfo' is dangerous. For it -creates a file `install-info' that will block the system installation. -So the created `/usr/local/bin/install-info' must be renamed. - -The `groff' configure script searches for the X11 headers and -libraries `Xaw' and `Xmu'. So the corresponding developer packages of -your system must be installed, otherwise `groff' does not install -`gxditview' and the `-TX*' devices. In Debian, the developer packages -are `libxaw7-dev' and `libxmu-dev'. - -Please report bugs using the form in the file `BUG-REPORT'; the idea of -this is to make sure that FSF has all the information it needs to fix -the bug. At the very least, read the `BUG-REPORT' form and make sure -that you supply all the information that it asks for. Even if you are -not sure that something is a bug, report it using `BUG-REPORT': this will -enable us to determine whether it really is a bug or not. - -Three mailing lists are available: - - bug-groff@gnu.org for reporting bugs - groff@gnu.org for general discussion of groff - groff-commit@gnu.org a read-only list showing commitments - to the CVS repository - -You can post mails directly to the `bug-groff' list, without subscribing; -to post mails to the `groff' list you must subscribe to it. - -To subscribe, send a mail to -request@ (example: -groff-request@gnu.org for the `groff' list) with the word `subscribe' -in either the subject or body of the email (don't include the quotes). -Alternatively, you may subscribe by visiting the web pages at - - http://lists.gnu.org/mailman/listinfo/bug-groff - http://lists.gnu.org/mailman/listinfo/groff - http://lists.gnu.org/mailman/listinfo/groff-commit - -Each of these web pages also provides a link to a browseable archive of -postings to the corresponding mailing list. - -GNU `groff' was written by James Clark . It is now -maintained by Ted Harding and Werner -Lemberg . diff --git a/contrib/groff/README.MinGW b/contrib/groff/README.MinGW deleted file mode 100644 index 342aac229af9..000000000000 --- a/contrib/groff/README.MinGW +++ /dev/null @@ -1,277 +0,0 @@ - README.MinGW - ============ - - Contributed by Keith Marshall (keith.d.marshall@ntlworld.com) - - - INTRODUCTION - ------------ - - This file provides recommendations for building a Win32 implementation of - GNU Groff, using the MinGW port of GCC for Microsoft (TM) Windows-32 - platforms. It is intended to supplement the standard installation - instructions (see file INSTALL); it does not replace them. - - You require both the MinGW implementation of GCC and its supporting MSYS - toolkit, which provides a Win-32 implementation of the GNU bash shell, and a - few other essential utilities; these may be obtained from - - http://sourceforge.net/projects/mingw - - by following the appropriate download links, where they are available as - self-extracting executable installation packages. If installing both from - scratch, it is recommended that MinGW is installed first, as the MSYS - installer can then automatically set up the proper environment for running - MinGW. - - Additionally, if you wish to compile groff with support for its HTML output - capability, some additional tools are required as decribed in the section - PREREQUISITES FOR HTML OUTPUT later in this file. - - - BUILDING GROFF WITH MINGW - ------------------------- - - Assuming that you have obtained the appropriate groff distribution, and that - you are already running an MSYS shell, then the configuration, compilation, - and installation of groff, using MinGW, is performed in much the same way as - it is described in the INSTALL file, which is provided with the groff - distribution. The installation steps are summarised below: - - 1. Change working directory to any suitable location where you may unpack - the groff distribution; you must be authorized for write access. - Approximately 30MB of free disk space are needed. - - 2. Unpack the groff distribution: - - tar xzf /groff-.tar.gz - - This creates a new sub-directory, groff-, containing an image of - the groff source tree. You should now change directory, to make this - ./groff- your working directory. - - 3. If you are intending to build groff with support for HTML output, then - you must now ensure that the prerequisites described in the later section - PREREQUISITES FOR HTML OUTPUT are satisfied, before proceeding to build - groff; in particular, please ensure that all required support programs - are installed in the current PATH. - - 4. You are now ready to configure, build, and install groff. This is - accomplished using the conventional procedure, as described in the file - INSTALL, i.e. - - ./configure --prefix= ... - make - make install - - Please observe the syntax for the configure command, indicated above; the - default value for --prefix is not suitable for use with MinGW, so the - --prefix= option must be specified, where - is the chosen MS-Windows directory in which the - groff application files are to be installed (see the later section - entitled CHOOSING AN INSTALLATION PATH). Any other desired configuration - options may also be specified, as described in the standard groff - installation instructions. - - 5. After completing the above, groff should be successfully installed; the - build directory is no longer required; it may be simply deleted in its - entirety. Alternatively, you may choose to keep it, but to remove all - files which can be reproduced later, by repeating the configure, make and - make install steps; this is readily accomplished by the command - - make distclean - - - This completes the installation of groff; please read the final sections of - this file, GROFF RUNTIME ENVIRONMENT and CAVEATS AND BUGS, for advice on - setting up the runtime environment, and avoiding known runtime problems, - before running groff. - - - CHOOSING AN INSTALLATION PATH - ----------------------------- - - It may be noted that the above instructions indicate that the ./configure - command must be invoked with an argument specifying a preference for - --prefix=, whereas the standard groff installation - instructions indicate that this may be omitted, in which case it defaults to - --prefix=/usr/local. - - In the case of building with MinGW, the default behaviour of configure is - not appropriate for the following reasons. - - o The MSYS environment creates a virtual UNIX-like file system, with its - root mapped to the actual MS-Windows directory where MSYS itself is - installed; /usr is also mapped to this MSYS installation directory. - - o All of the MSYS tools, and the MinGW implementation of GCC, refer to files - via this virtual file system representation; thus, if the - --prefix= is not specified when groff is configured, - `make install' causes groff to be installed in /local. - - o groff needs to know its own installation path, so that it can locate its - own installed components. This information is compiled in, using the - exact form specified with the --prefix= option to - configure. - - o Knowledge of the MSYS virtual file system is not imparted to groff; it - expects the compiled-in path to its components to be a fully qualified - MS-Windows path name (although UNIX-style slashes are permitted, and - preferred to the MS-Windows style backslashes, to demarcate the directory - hierarchy). Thus, when configuring groff, if - --prefix= is not correctly specified, then the - installed groff application looks for its components in /usr/local, and - most likely doesn't find them, because they are actually installed in - /local. - - It is actually convenient, but by no means a requirement, to have groff - installed in the /usr/local directory of the MSYS virtual file system; this - makes it easy to invoke groff from the MSYS shell, since the virtual - /usr/local/bin is normally added automatically to the PATH (the default - PATH, as set in MSYS's /etc/profile), when MSYS is started. - - In order to install groff into MSYS's /usr/local directory, it is necessary - to specify the fully qualified absolute MS-Windows path to this directory, - when configuring groff, i.e. - - ./configure --prefix=/local ... - - For example, on a system where MSYS is installed in the MS-Windows directory - D:\MSYS\1.0, the MSYS virtual path /usr/local resolves to the absolute - MS-Windows native path D:\MSYS\1.0\local (the /usr component of the MSYS - virtual path does not appear in the resolved absolute native path name since - MSYS maps this directly to the root of the MSYS virtual file system). Thus, - the --prefix option should be specified to configure as - - ./configure --prefix=D:/MSYS/1.0/local ... - - Note that the backslash characters, which appear in the native MS-Windows - form of the path name, are replaced by UNIX-style slashes in the argument to - configure; this is the preferred syntax. - - Also note that the MS-Windows device designator (D: in this instance) is - prepended to the specified path, in the normal MS-Windows format, and that, - since upper and lower case distinctions are ignored in MS-Windows path - names, any combination of upper and lower case is acceptable. - - - PREREQUISITES FOR HTML OUTPUT - ----------------------------- - - If you intend to use groff for production of HTML output, then there are a - few dependencies which must be satisfied. Ideally, these should be resolved - before attempting to configure and build groff, since the configuration - script does check them. - - In order to produce HTML output, you first require a working implementation - of Ghostscript; either the AFPL Ghostscript or the GNU Ghostscript - implementation for MS-Windows should be suitable, depending on your - licensing preference. It is highly recommended to use version 8.11 or - higher due to bugs in older versions. These may be obtained, in the form of - self-installing binary packages, by following the download links for the - chosen licensing option, from http://sourceforge.net/projects/ghostscript. - - Please note that these packages install the Ghostscript interpreter required - by groff in the ./bin subdirectory of the Ghostscript installation - directory, with the name gswin32c.exe. However, groff expects this - interpreter to be located in the system PATH, with the name gs.exe. Thus, - to ensure that groff can correctly locate the Ghostscript interpreter, it is - recommended that the file gswin32c.exe should be copied from the Ghostscript - installation directory to the MSYS /usr/local/bin directory, where it should - be renamed to gs.exe. - - In addition to a working Ghostscript interpreter, you also require several - image manipulation utilities, all of which may be scavenged from various - packages available from http://sourceforge.net/projects/gnuwin32, and which - should be installed in the MSYS /usr/local/bin directory, or any other - suitable directory which is specified in the PATH. These additional - prerequisites are - - 1. from the netpbm--bin.zip package: - - netpbm.dll - pnmcrop.exe - pnmcut.exe - pnmtopng.exe - pnmtops.exe - - 2. from the libpng--bin.zip package: - - libpng.dll - - 3. from the zlib--bin.zip package: - - zlib-1.dll, which must be renamed to zlib.dll - - 4. from the psutils--bin.zip package: - - psselect.exe - - Note that it is not necessary to install the above four packages in their - entirety; of course, you may do so if you wish. - - - GROFF RUNTIME ENVIRONMENT - ------------------------- - - The runtime environment, provided to groff by MSYS, is essentially the same - as would be provided under a UNIX or GNU/Linux operating system; thus, any - environment variables which may be used to customize the groff runtime - environment have similar effects under MSYS, as they would in UNIX or - GNU/Linux, with the exception that any variable specifying a path should - adopt the same syntax as a native MS-Windows PATH specification. - - There is, however, one known problem which is associated with the - implementation of the MS-Windows file system, and the manner in which the - Microsoft runtime library (which is used by the MinGW implementation of GCC) - generates names for temporary files. This known problem arises when groff - is invoked with a current working directory which refers to a network share, - for which the user does not have write access in the root directory, and - there is no environment variable set to define a writeable location for - creating temporary files. When these conditions arise, groff fails with a - `permission denied' error, as soon as it tries to create any temporary file. - - To specify the location for creating temporary files, the standard UNIX or - GNU/Linux implementation of groff provides the GROFF_TMPDIR or TMPDIR - environment variables, whereas MS-Windows applications generally use TMP or - TEMP; furthermore, the MS-Windows implementations of Ghostscript apparently - support the use of only TEMP or TMPDIR. - - To avoid problems with creation of temporary files, it is recommended that - you ensure that both TMP and TEMP are defined, with identical values, to - point to a suitable location for creating temporary files; many MS-Windows - boxes have them set already, and groff has been adapted to honour them, when - built in accordance with the preceding instructions, using MinGW. - - - CAVEATS AND BUGS - ---------------- - - There are two known issues, observed when running groff in the MinGW/MSYS - environment, which would not affect groff in its native UNIX environment: - - o Running groff with the working directory set to a subdirectory of a - network share, where the user does not have write permission in the root - directory of the share, causes groff to fail with a `permission denied' - exception, if the TMP environment variable is not appropriately defined; - it may also be necessary to define the TEMP environment variable, to avoid - a similar failure mode, when using the -Thtml output mode of groff. This - problem is more fully discussed in the preceding section, GROFF RUNTIME - ENVIRONMENT. - - o When running groff (or nroff) to process standard input, where the - standard input stream is obtained directly from the RXVT console provided - with MSYS, groff cannot detect the end-of-file condition for the standard - input stream, and hangs. This appears to be caused by a fault in the MSYS - implementation of RXVT; it may be worked around by either starting MSYS - without RXVT (see the comments in the MSYS.BAT startup script); in this - case standard input is terminated by typing followed by , - on a new input line. Alternatively, if you prefer to use MSYS with RXVT, - you can enter the interactive groff command in the form - - cat | groff ... - - in which case terminates the standard input stream, in just the - same way it does on a UNIX system; the cat executable provided with MSYS - does seem to trap the end-of-file condition, and properly signals groff - that the input stream has terminated. diff --git a/contrib/groff/REVISION b/contrib/groff/REVISION deleted file mode 100644 index 0cfbf08886fc..000000000000 --- a/contrib/groff/REVISION +++ /dev/null @@ -1 +0,0 @@ -2 diff --git a/contrib/groff/TODO b/contrib/groff/TODO deleted file mode 100644 index 4e4c6f7db11e..000000000000 --- a/contrib/groff/TODO +++ /dev/null @@ -1,25 +0,0 @@ -Unicode input: - Making groff 21bit input-clean. - -Make -Tlj4 work with -X. - -Guess man5ext and man7ext variables. - -Provide man.sun implementing .TX. - -Improve GROFF_PRINT macro in aclocal.m4. - -Provide a `check' target. - -Provide a `bindist' target. - -Implement tmac.bib in terms of tmac.s. - -Support long options using GNU getopt. - -Catch the following error in -me: -.(z -.(l C -.)z - -Arrows for next/previous page from R5 xditview. diff --git a/contrib/groff/VERSION b/contrib/groff/VERSION deleted file mode 100644 index bc4493477aed..000000000000 --- a/contrib/groff/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.19 diff --git a/contrib/groff/aclocal.m4 b/contrib/groff/aclocal.m4 deleted file mode 100644 index 7e22633eefc3..000000000000 --- a/contrib/groff/aclocal.m4 +++ /dev/null @@ -1,1152 +0,0 @@ -# Autoconf macros for groff. -# Copyright (C) 1989-1995, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is part of groff. -# -# groff is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free -# Software Foundation; either version 2, or (at your option) any later -# version. -# -# groff is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License along -# with groff; see the file COPYING. If not, write to the Free Software -# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. - -AC_DEFUN([GROFF_PRINT], - [if test -z "$PSPRINT"; then - AC_CHECK_PROGS([LPR], [lpr]) - AC_CHECK_PROGS([LP], [lp]) - if test -n "$LPR" && test -n "$LP"; then - # HP-UX provides an lpr command that emulates lpr using lp, - # but it doesn't have lpq; in this case we want to use lp - # rather than lpr. - AC_CHECK_PROGS([LPQ], [lpq]) - test -n "$LPQ" || LPR= - fi - if test -n "$LPR"; then - PSPRINT="$LPR" - elif test -n "$LP"; then - PSPRINT="$LP" - fi - fi - AC_SUBST([PSPRINT]) - AC_MSG_CHECKING([for command to use for printing PostScript files]) - AC_MSG_RESULT([$PSPRINT]) - - # Figure out DVIPRINT from PSPRINT. - AC_MSG_CHECKING([for command to use for printing dvi files]) - if test -n "$PSPRINT" && test -z "$DVIPRINT"; then - if test "x$PSPRINT" = "xlpr"; then - DVIPRINT="lpr -d" - else - DVIPRINT="$PSPRINT" - fi - fi - AC_SUBST([DVIPRINT]) - AC_MSG_RESULT([$DVIPRINT])]) - -# Bison generated parsers have problems with C++ compilers other than g++. -# So byacc is preferred over bison. - -AC_DEFUN([GROFF_PROG_YACC], - [AC_CHECK_PROGS([YACC], [byacc 'bison -y'], [yacc])]) - -# The following programs are needed for grohtml. - -AC_DEFUN([GROFF_HTML_PROGRAMS], - [AC_REQUIRE([GROFF_GHOSTSCRIPT_PATH]) - make_html=html - make_install_html=install_html - - missing= - AC_FOREACH([groff_prog], - [pnmcut pnmcrop pnmtopng psselect pnmtops], - [AC_CHECK_PROG(groff_prog, groff_prog, [found], [missing]) - if test $[]groff_prog = missing; then - missing="$missing \`groff_prog'" - fi;]) - - test "$GHOSTSCRIPT" = "missing" && missing="$missing \`gs'" - - if test -n "$missing"; then - plural=`set $missing; test $[#] -gt 1 && echo s` - missing=`set $missing - missing="" - while test $[#] -gt 0 - do - case $[#] in - 1) missing="$missing$[1]" ;; - 2) missing="$missing$[1] and " ;; - *) missing="$missing$[1], " ;; - esac - shift - done - echo $missing` - - make_html= - make_install_html= - - AC_MSG_WARN([missing program$plural: - - The program$plural - $missing - cannot be found in the PATH. - Consequently, groff's HTML backend (grohtml) will not work properly; - therefore, it will neither be possible to prepare, nor to install, - documentation in HTML format. - ]) - fi - - AC_SUBST([make_html]) - AC_SUBST([make_install_html])]) - -# To produce PDF docs, we need both awk and ghostscript. - -AC_DEFUN([GROFF_PDFDOC_PROGRAMS], - [AC_REQUIRE([GROFF_AWK_PATH]) - AC_REQUIRE([GROFF_GHOSTSCRIPT_PATH]) - - make_pdfdoc=pdfdoc - make_install_pdfdoc=install_pdfdoc - - missing="" - test "$AWK" = missing && missing="\`awk'" - test "$GHOSTSCRIPT" = missing && missing="$missing \`gs'" - if test -n "$missing"; then - plural=`set $missing; test $[#] -eq 2 && echo s` - test x$plural = xs \ - && missing=`set $missing; echo "$[1] and $[2]"` \ - || missing=`echo $missing` - - make_pdfdoc= - make_install_pdfdoc= - - AC_MSG_WARN([missing program$plural: - - The program$plural $missing cannot be found in the PATH. - Consequently, groff's PDF formatter (pdfroff) will not work properly; - therefore, it will neither be possible to prepare, nor to install, - documentation in PDF format. - ]) - fi - - AC_SUBST([make_pdfdoc]) - AC_SUBST([make_install_pdfdoc])]) - -# Check whether pnmtops can handle the -nosetpage option. - -AC_DEFUN([GROFF_PNMTOPS_NOSETPAGE], - [AC_MSG_CHECKING([whether pnmtops can handle the -nosetpage option]) - if echo P2 2 2 255 0 1 2 0 | pnmtops -nosetpage > /dev/null 2>&1 ; then - AC_MSG_RESULT([yes]) - pnmtops_nosetpage="pnmtops -nosetpage" - else - AC_MSG_RESULT([no]) - pnmtops_nosetpage="pnmtops" - fi - AC_SUBST([pnmtops_nosetpage])]) - -# Check location of `gs'; allow `--with-gs=PROG' option to override. - -AC_DEFUN([GROFF_GHOSTSCRIPT_PATH], - [AC_REQUIRE([GROFF_GHOSTSCRIPT_PREFS]) - AC_ARG_WITH([gs], - [AS_HELP_STRING([--with-gs=PROG], - [actual [/path/]name of ghostscript executable])], - [GHOSTSCRIPT=$withval], - [AC_CHECK_TOOLS(GHOSTSCRIPT, [$ALT_GHOSTSCRIPT_PROGS], [missing])]) - test "$GHOSTSCRIPT" = "no" && GHOSTSCRIPT=missing]) - -# Preferences for choice of `gs' program... -# (allow --with-alt-gs="LIST" to override). - -AC_DEFUN([GROFF_GHOSTSCRIPT_PREFS], - [AC_ARG_WITH([alt-gs], - [AS_HELP_STRING([--with-alt-gs=LIST], - [alternative names for ghostscript executable])], - [ALT_GHOSTSCRIPT_PROGS="$withval"], - [ALT_GHOSTSCRIPT_PROGS="gs gswin32c gsos2"]) - AC_SUBST([ALT_GHOSTSCRIPT_PROGS])]) - -# Check location of `awk'; allow `--with-awk=PROG' option to override. - -AC_DEFUN([GROFF_AWK_PATH], - [AC_REQUIRE([GROFF_AWK_PREFS]) - AC_ARG_WITH([awk], - [AS_HELP_STRING([--with-awk=PROG], - [actual [/path/]name of awk executable])], - [AWK=$withval], - [AC_CHECK_TOOLS(AWK, [$ALT_AWK_PROGS], [missing])]) - test "$AWK" = "no" && AWK=missing]) - -# Preferences for choice of `awk' program; allow --with-alt-awk="LIST" -# to override. - -AC_DEFUN([GROFF_AWK_PREFS], - [AC_ARG_WITH([alt-awk], - [AS_HELP_STRING([--with-alt-awk=LIST], - [alternative names for awk executable])], - [ALT_AWK_PROGS="$withval"], - [ALT_AWK_PROGS="gawk mawk nawk awk"]) - AC_SUBST([ALT_AWK_PROGS])]) - -# GROFF_CSH_HACK(if hack present, if not present) - -AC_DEFUN([GROFF_CSH_HACK], - [AC_MSG_CHECKING([for csh hash hack]) - -cat <conftest.sh -#! /bin/sh -true || exit 0 -export PATH || exit 0 -exit 1 -EOF - - chmod +x conftest.sh - if echo ./conftest.sh | (csh >/dev/null 2>&1) >/dev/null 2>&1; then - AC_MSG_RESULT([yes]) - $1 - else - AC_MSG_RESULT([no]) - $2 - fi - rm -f conftest.sh]) - -# From udodo!hans@relay.NL.net (Hans Zuidam) - -AC_DEFUN([GROFF_ISC_SYSV3], - [AC_MSG_CHECKING([for ISC 3.x or 4.x]) - if grep ['[34]\.'] /usr/options/cb.name >/dev/null 2>&1 - then - AC_MSG_RESULT([yes]) - AC_DEFINE([_SYSV3], [1], [Define if you have ISC 3.x or 4.x.]) - else - AC_MSG_RESULT([no]) - fi]) - -AC_DEFUN([GROFF_POSIX], - [AC_MSG_CHECKING([whether -D_POSIX_SOURCE is necessary]) - AC_LANG_PUSH([C++]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -extern "C" { void fileno(int); } - - ]]) - ], - [AC_MSG_RESULT([yes]) - AC_DEFINE([_POSIX_SOURCE], [1], - [Define if -D_POSIX_SOURCE is necessary.])], - [AC_MSG_RESULT([no])]) - AC_LANG_POP([C++])]) - -# srand() of SunOS 4.1.3 has return type int instead of void - -AC_DEFUN([GROFF_SRAND], - [AC_LANG_PUSH([C++]) - AC_MSG_CHECKING([for return type of srand]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -extern "C" { void srand(unsigned int); } - - ]]) - ], - [AC_MSG_RESULT([void]) - AC_DEFINE([RET_TYPE_SRAND_IS_VOID], [1], - [Define if srand() returns void not int.])], - [AC_MSG_RESULT([int])]) - AC_LANG_POP([C++])]) - -# In April 2005, autoconf's AC_TYPE_SIGNAL is still broken. - -AC_DEFUN([GROFF_TYPE_SIGNAL], - [AC_MSG_CHECKING([for return type of signal handlers]) - for groff_declaration in \ - 'extern "C" void (*signal (int, void (*)(int)))(int);' \ - 'extern "C" void (*signal (int, void (*)(int)) throw ())(int);' \ - 'void (*signal ()) ();' - do - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -#include -#ifdef signal -# undef signal -#endif -$groff_declaration - - ]], - [[ - -int i; - - ]]) - ], - [break], - [continue]) - done - - if test -n "$groff_declaration"; then - AC_MSG_RESULT([void]) - AC_DEFINE([RETSIGTYPE], [void], - [Define as the return type of signal handlers - (`int' or `void').]) - else - AC_MSG_RESULT([int]) - AC_DEFINE([RETSIGTYPE], [int], - [Define as the return type of signal handlers - (`int' or `void').]) - fi]) - -AC_DEFUN([GROFF_SYS_NERR], - [AC_LANG_PUSH([C++]) - AC_MSG_CHECKING([for sys_nerr in , , or ]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -#include -#include - - ]], - [[ - -int k; -k = sys_nerr; - - ]]) - ], - [AC_MSG_RESULT([yes]) - AC_DEFINE([HAVE_SYS_NERR], [1], - [Define if you have sys_nerr in , , or .])], - [AC_MSG_RESULT([no])]) - AC_LANG_POP([C++])]) - -AC_DEFUN([GROFF_SYS_ERRLIST], - [AC_MSG_CHECKING([for sys_errlist[] in , , or ]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -#include -#include - - ]], - [[ - -int k; -k = (int)sys_errlist[0]; - - ]]) - ], - [AC_MSG_RESULT([yes]) - AC_DEFINE([HAVE_SYS_ERRLIST], [1], - [Define if you have sys_errlist in , , or .])], - [AC_MSG_RESULT([no])])]) - -AC_DEFUN([GROFF_OSFCN_H], - [AC_LANG_PUSH([C++]) - AC_MSG_CHECKING([C++ ]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include - - ]], - [[ - -read(0, 0, 0); -open(0, 0); - - ]]) - ], - [AC_MSG_RESULT([yes]) - AC_DEFINE([HAVE_CC_OSFCN_H], [1], - [Define if you have a C++ .])], - [AC_MSG_RESULT([no])]) - AC_LANG_POP([C++])]) - -AC_DEFUN([GROFF_LIMITS_H], - [AC_LANG_PUSH([C++]) - AC_MSG_CHECKING([C++ ]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include - - ]], - [[ - -int x = INT_MIN; -int y = INT_MAX; -int z = UCHAR_MAX; - - ]]) - ], - [AC_MSG_RESULT([yes]) - AC_DEFINE([HAVE_CC_LIMITS_H], [1], - [Define if you have a C++ .])], - [AC_MSG_RESULT([no])]) - AC_LANG_POP([C++])]) - -AC_DEFUN([GROFF_TIME_T], - [AC_LANG_PUSH([C++]) - AC_MSG_CHECKING([for declaration of time_t]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include - - ]], - [[ - -time_t t = time(0); -struct tm *p = localtime(&t); - - ]]) - ], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_DEFINE([LONG_FOR_TIME_T], [1], - [Define if localtime() takes a long * not a time_t *.])]) - AC_LANG_POP([C++])]) - -AC_DEFUN([GROFF_STRUCT_EXCEPTION], - [AC_MSG_CHECKING([struct exception]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include - - ]], - [[ - -struct exception e; - - ]]) - ], - [AC_MSG_RESULT([yes]) - AC_DEFINE([HAVE_STRUCT_EXCEPTION], [1], - [Define if defines struct exception.])], - [AC_MSG_RESULT([no])])]) - -AC_DEFUN([GROFF_ARRAY_DELETE], - [AC_LANG_PUSH([C++]) - AC_MSG_CHECKING([whether ANSI array delete syntax is supported]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM(, [[ - -char *p = new char[5]; -delete [] p; - - ]]) - ], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_DEFINE([ARRAY_DELETE_NEEDS_SIZE], [1], - [Define if your C++ doesn't understand `delete []'.])]) - AC_LANG_POP([C++])]) - -AC_DEFUN([GROFF_TRADITIONAL_CPP], - [AC_LANG_PUSH([C++]) - AC_MSG_CHECKING([traditional preprocessor]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#define name2(a, b) a/**/b - - ]], - [[ - -int name2(foo, bar); - - ]]) - ], - [AC_MSG_RESULT([yes]) - AC_DEFINE([TRADITIONAL_CPP], [1], - [Define if your C++ compiler uses a traditional (Reiser) preprocessor.])], - [AC_MSG_RESULT([no])]) - AC_LANG_POP([C++])]) - -AC_DEFUN([GROFF_WCOREFLAG], - [AC_MSG_CHECKING([w_coredump]) - AC_RUN_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -#include - - ]], - [[ - -main() -{ -#ifdef WCOREFLAG - exit(1); -#else - int i = 0; - ((union wait *)&i)->w_coredump = 1; - exit(i != 0200); -#endif -} - - ]]) - ], - [AC_MSG_RESULT([yes]) - AC_DEFINE(WCOREFLAG, 0200, - [Define if the 0200 bit of the status returned by wait() indicates - whether a core image was produced for a process that was terminated - by a signal.])], - [AC_MSG_RESULT([no])], - [AC_MSG_RESULT([no])])]) - -AC_DEFUN([GROFF_BROKEN_SPOOLER_FLAGS], - [AC_MSG_CHECKING([default value for grops -b option]) - test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=0 - AC_MSG_RESULT([$BROKEN_SPOOLER_FLAGS]) - AC_SUBST([BROKEN_SPOOLER_FLAGS])]) - -AC_DEFUN([GROFF_PAGE], - [AC_MSG_CHECKING([default paper size]) - groff_prefix=$prefix - test "x$prefix" = "xNONE" && groff_prefix=$ac_default_prefix - if test -z "$PAGE"; then - descfile= - if test -r $groff_prefix/share/groff/font/devps/DESC; then - descfile=$groff_prefix/share/groff/font/devps/DESC - elif test -r $groff_prefix/lib/groff/font/devps/DESC; then - descfile=$groff_prefix/lib/groff/font/devps/DESC - else - for f in $groff_prefix/share/groff/*/font/devps/DESC; do - if test -r $f; then - descfile=$f - break - fi - done - fi - - if test -n "$descfile"; then - if grep ['^paperlength[ ]\+841890'] $descfile >/dev/null 2>&1; then - PAGE=A4 - elif grep ['^papersize[ ]\+[aA]4'] $descfile >/dev/null 2>&1; then - PAGE=A4 - fi - fi - fi - - if test -z "$PAGE"; then - dom=`awk '([$]1 == "dom" || [$]1 == "search") { print [$]2; exit}' \ - /etc/resolv.conf 2>/dev/null` - if test -z "$dom"; then - dom=`(domainname) 2>/dev/null | tr -d '+'` - if test -z "$dom" \ - || test "$dom" = '(none)'; then - dom=`(hostname) 2>/dev/null | grep '\.'` - fi - fi - # If the top-level domain is two letters and it's not `us' or `ca' - # then they probably use A4 paper. - case "$dom" in - [*.[Uu][Ss]|*.[Cc][Aa])] - ;; - [*.[A-Za-z][A-Za-z])] - PAGE=A4 ;; - esac - fi - - test -n "$PAGE" || PAGE=letter - if test "x$PAGE" = "xA4"; then - AC_DEFINE([PAGEA4], [1], - [Define if the printer's page size is A4.]) - fi - AC_MSG_RESULT([$PAGE]) - AC_SUBST([PAGE])]) - -AC_DEFUN([GROFF_CXX_CHECK], - [AC_REQUIRE([AC_PROG_CXX]) - AC_LANG_PUSH([C++]) - if test "$cross_compiling" = no; then - AC_MSG_CHECKING([that C++ compiler can compile simple program]) - fi - AC_RUN_IFELSE([ - AC_LANG_SOURCE([[ - -int main() { - return 0; -} - - ]]) - ], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([a working C++ compiler is required])], - [:]) - - if test "$cross_compiling" = no; then - AC_MSG_CHECKING([that C++ static constructors and destructors are called]) - fi - AC_RUN_IFELSE([ - AC_LANG_SOURCE([[ - -extern "C" { - void _exit(int); -} - -int i; -struct A { - char dummy; - A() { i = 1; } - ~A() { if (i == 1) _exit(0); } -}; - -A a; - -int main() -{ - return 1; -} - - ]]) - ], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([a working C++ compiler is required])], - [:]) - - AC_MSG_CHECKING([that header files support C++]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - -#include - - ]], - [[ - -fopen(0, 0); - - ]]) - ], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([header files do not support C++ - (if you are using a version of gcc/g++ earlier than 2.5, - you should install libg++)])]) - AC_LANG_POP([C++])]) - -AC_DEFUN([GROFF_TMAC], - [AC_MSG_CHECKING([for prefix of system macro packages]) - sys_tmac_prefix= - sys_tmac_file_prefix= - for d in /usr/share/lib/tmac /usr/lib/tmac; do - for t in "" tmac.; do - for m in an s m; do - f=$d/$t$m - if test -z "$sys_tmac_prefix" \ - && test -f $f \ - && grep '^\.if' $f >/dev/null 2>&1; then - sys_tmac_prefix=$d/$t - sys_tmac_file_prefix=$t - fi - done - done - done - AC_MSG_RESULT([$sys_tmac_prefix]) - AC_SUBST([sys_tmac_prefix]) - - AC_MSG_CHECKING([which system macro packages should be made available]) - tmac_wrap= - if test "x$sys_tmac_file_prefix" = "xtmac."; then - for f in $sys_tmac_prefix*; do - suff=`echo $f | sed -e "s;$sys_tmac_prefix;;"` - case "$suff" in - e) - ;; - *) - grep "Copyright.*Free Software Foundation" $f >/dev/null \ - || tmac_wrap="$tmac_wrap $suff" ;; - esac - done - elif test -n "$sys_tmac_prefix"; then - files=`echo $sys_tmac_prefix*` - grep "\\.so" $files >conftest.sol - for f in $files; do - case "$f" in - ${sys_tmac_prefix}e) - ;; - *.me) - ;; - */ms.*) - ;; - *) - b=`basename $f` - if grep "\\.so.*/$b\$" conftest.sol >/dev/null \ - || grep -l "Copyright.*Free Software Foundation" $f >/dev/null; then - : - else - suff=`echo $f | sed -e "s;$sys_tmac_prefix;;"` - case "$suff" in - tmac.*) - ;; - *) - tmac_wrap="$tmac_wrap $suff" ;; - esac - fi - esac - done - rm -f conftest.sol - fi - AC_MSG_RESULT([$tmac_wrap]) - AC_SUBST([tmac_wrap])]) - -AC_DEFUN([GROFF_G], - [AC_MSG_CHECKING([for existing troff installation]) - if test "x`(echo .tm '|n(.g' | tr '|' '\\\\' | troff -z -i 2>&1) 2>/dev/null`" = x0; then - AC_MSG_RESULT([yes]) - g=g - else - AC_MSG_RESULT([no]) - g= - fi - AC_SUBST([g])]) - -# We need the path to install-sh to be absolute. - -AC_DEFUN([GROFF_INSTALL_SH], - [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) - ac_dir=`cd $ac_aux_dir; pwd` - ac_install_sh="$ac_dir/install-sh -c"]) - -# Test whether install-info is available. - -AC_DEFUN([GROFF_INSTALL_INFO], - [AC_CHECK_PROGS([INSTALL_INFO], [install-info], [:])]) - -# At least one UNIX system, Apple Macintosh Rhapsody 5.5, -# does not have -lm ... - -AC_DEFUN([GROFF_LIBM], - [AC_CHECK_LIB([m], [sin], [LIBM=-lm]) - AC_SUBST([LIBM])]) - -# ... while the MinGW implementation of GCC for Microsoft Win32 -# does not seem to have -lc. - -AC_DEFUN([GROFF_LIBC], - [AC_CHECK_LIB([c], [main], [LIBC=-lc]) - AC_SUBST([LIBC])]) - -# Check for EBCDIC -- stolen from the OS390 Unix LYNX port - -AC_DEFUN([GROFF_EBCDIC], - [AC_MSG_CHECKING([whether character set is EBCDIC]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -/* Treat any failure as ASCII for compatibility with existing art. - Use compile-time rather than run-time tests for cross-compiler - tolerance. */ -#if '0' != 240 -make an error "Character set is not EBCDIC" -#endif - - ]]) - ], - [groff_cv_ebcdic="yes" - TTYDEVDIRS="font/devcp1047" - AC_MSG_RESULT([yes]) - AC_DEFINE(IS_EBCDIC_HOST, 1, - [Define if the host's encoding is EBCDIC.])], - [groff_cv_ebcdic="no" - TTYDEVDIRS="font/devascii font/devlatin1" - OTHERDEVDIRS="font/devlj4 font/devlbp" - AC_MSG_RESULT([no])]) - AC_SUBST([TTYDEVDIRS]) - AC_SUBST([OTHERDEVDIRS])]) - -# Check for OS/390 Unix. We test for EBCDIC also -- the Linux port (with -# gcc) to OS/390 uses ASCII internally. - -AC_DEFUN([GROFF_OS390], - [if test "$groff_cv_ebcdic" = "yes"; then - AC_MSG_CHECKING([for OS/390 Unix]) - case `uname` in - OS/390) - CFLAGS="$CFLAGS -D_ALL_SOURCE" - AC_MSG_RESULT([yes]) ;; - *) - AC_MSG_RESULT([no]) ;; - esac - fi]) - -# Check whether we need a declaration for a function. -# -# Stolen from GNU bfd. - -AC_DEFUN([GROFF_NEED_DECLARATION], - [AC_MSG_CHECKING([whether $1 must be declared]) - AC_LANG_PUSH([C++]) - AC_CACHE_VAL([groff_cv_decl_needed_$1], - [AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - ]], - [[ - -#ifndef $1 - char *p = (char *) $1; -#endif - - ]]) - ], - [groff_cv_decl_needed_$1=no], - [groff_cv_decl_needed_$1=yes])]) - AC_MSG_RESULT([$groff_cv_decl_needed_$1]) - if test $groff_cv_decl_needed_$1 = yes; then - AC_DEFINE([NEED_DECLARATION_]translit($1, [a-z], [A-Z]), [1], - [Define if your C++ doesn't declare ]$1[().]) - fi - AC_LANG_POP([C++])]) - -# If mkstemp() isn't available, use our own mkstemp.cpp file. - -AC_DEFUN([GROFF_MKSTEMP], - [AC_MSG_CHECKING([for mkstemp]) - AC_LANG_PUSH([C++]) - AC_LIBSOURCE([mkstemp.cpp]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -#include -int (*f) (char *); - - ]], - [[ - -f = mkstemp; - - ]]) - ], - [AC_MSG_RESULT([yes]) - AC_DEFINE([HAVE_MKSTEMP], [1], [Define if you have mkstemp().])], - [AC_MSG_RESULT([no]) - _AC_LIBOBJ([mkstemp])]) - AC_LANG_POP([C++])]) - -# Test whether exists, doesn't clash with , -# and declares uintmax_t. Taken from the fileutils package. - -AC_DEFUN([GROFF_INTTYPES_H], - [AC_LANG_PUSH([C++]) - AC_MSG_CHECKING([C++ ]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -#include - - ]], - [[ - -uintmax_t i = (uintmax_t)-1; - - ]]) - ], - [groff_cv_header_inttypes_h=yes - AC_DEFINE([HAVE_CC_INTTYPES_H], [1], - [Define if you have a C++ .])], - [groff_cv_header_inttypes_h=no]) - AC_MSG_RESULT([$groff_cv_header_inttypes_h]) - AC_LANG_POP([C++])]) - -# Test for working `unsigned long long'. Taken from the fileutils package. - -AC_DEFUN([GROFF_UNSIGNED_LONG_LONG], - [AC_LANG_PUSH([C++]) - AC_MSG_CHECKING([for unsigned long long]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - -unsigned long long ull = 1; -int i = 63; -unsigned long long ullmax = (unsigned long long)-1; - - ]], - [[ - -return ull << i | ull >> i | ullmax / ull | ullmax % ull; - - ]]) - ], - [groff_cv_type_unsigned_long_long=yes], - [groff_cv_type_unsigned_long_long=no]) - AC_MSG_RESULT([$groff_cv_type_unsigned_long_long]) - AC_LANG_POP([C++])]) - -# Define uintmax_t to `unsigned long' or `unsigned long long' -# if does not exist. Taken from the fileutils package. - -AC_DEFUN([GROFF_UINTMAX_T], - [AC_REQUIRE([GROFF_INTTYPES_H]) - if test $groff_cv_header_inttypes_h = no; then - AC_REQUIRE([GROFF_UNSIGNED_LONG_LONG]) - test $groff_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type], - [Define uintmax_t to `unsigned long' or `unsigned long long' if - does not exist.]) - fi]) - -# Identify PATH_SEPARATOR character to use in GROFF_FONT_PATH and -# GROFF_TMAC_PATH which is appropriate for the target system (POSIX=':', -# MS-DOS/Win32=';'). -# -# The logic to resolve this test is already encapsulated in -# `${srcdir}/src/include/nonposix.h'. - -AC_DEFUN([GROFF_TARGET_PATH_SEPARATOR], - [AC_MSG_CHECKING([separator character to use in groff search paths]) - cp ${srcdir}/src/include/nonposix.h conftest.h - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -#include "conftest.h" - - ]], - [[ - -#if PATH_SEP_CHAR == ';' -make an error "Path separator is ';'" -#endif - - ]]) - ], - [GROFF_PATH_SEPARATOR=":"], - [GROFF_PATH_SEPARATOR=";"]) - AC_MSG_RESULT([$GROFF_PATH_SEPARATOR]) - AC_SUBST(GROFF_PATH_SEPARATOR)]) - -# Check for X11. - -AC_DEFUN([GROFF_X11], - [AC_REQUIRE([AC_PATH_XTRA]) - groff_no_x=$no_x - if test -z "$groff_no_x"; then - OLDCFLAGS=$CFLAGS - OLDLDFLAGS=$LDFLAGS - OLDLIBS=$LIBS - CFLAGS="$CFLAGS $X_CFLAGS" - LDFLAGS="$LDFLAGS $X_LIBS" - LIBS="$LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" - - LIBS="$LIBS -lXaw" - AC_MSG_CHECKING([for Xaw library and header files]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -#include - - ]], - []) - ], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - groff_no_x="yes"]) - - LIBS="$LIBS -lXmu" - AC_MSG_CHECKING([for Xmu library and header files]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - -#include -#include - - ]], - []) - ], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - groff_no_x="yes"]) - - CFLAGS=$OLDCFLAGS - LDFLAGS=$OLDLDFLAGS - LIBS=$OLDLIBS - fi - - if test "x$groff_no_x" = "xyes"; then - AC_MSG_NOTICE([gxditview and xtotroff won't be built]) - else - XDEVDIRS="font/devX75 font/devX75-12 font/devX100 font/devX100-12" - XPROGDIRS="src/devices/xditview src/utils/xtotroff" - XLIBDIRS="src/libs/libxutil" - fi - - AC_SUBST([XDEVDIRS]) - AC_SUBST([XPROGDIRS]) - AC_SUBST([XLIBDIRS])]) - -# Set up the `--with-appresdir' command line option. - -AC_DEFUN([GROFF_APPRESDIR_OPTION], - [AC_ARG_WITH([appresdir], - dnl Don't quote AS_HELP_STRING! - AS_HELP_STRING([--with-appresdir=DIR], - [X11 application resource files]))]) - -# Get a default value for the application resource directory. -# -# We ignore the `XAPPLRES' and `XUSERFILESEARCHPATH' environment variables. -# -# The goal is to find the `root' of X11. Under most systems this is -# `/usr/X11/lib'. Application default files are then in -# `/usr/X11/lib/X11/app-defaults'. -# -# Based on autoconf's AC_PATH_X macro. - -AC_DEFUN([GROFF_APPRESDIR_DEFAULT], - [if test -z "$groff_no_x"; then - # Create an Imakefile, run `xmkmf', then `make'. - rm -f -r conftest.dir - if mkdir conftest.dir; then - cd conftest.dir - # Make sure to not put `make' in the Imakefile rules, - # since we grep it out. - cat >Imakefile <<'EOF' - -xlibdirs: - @echo 'groff_x_usrlibdir="${USRLIBDIR}"; groff_x_libdir="${LIBDIR}"' -EOF - - if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering...", - # which would confuse us. - eval `${MAKE-make} xlibdirs 2>/dev/null | grep -v make` - - # Open Windows `xmkmf' reportedly sets LIBDIR instead of USRLIBDIR. - for groff_extension in a so sl; do - if test ! -f $groff_x_usrlibdir/libX11.$groff_extension && - test -f $groff_x_libdir/libX11.$groff_extension; then - groff_x_usrlibdir=$groff_x_libdir - break - fi - done - fi - - cd .. - rm -f -r conftest.dir - fi - - # In case the test with `xmkmf' wasn't successful, try a suite of - # standard directories. Check `X11' before `X11Rn' because it is often - # a symlink to the current release. - groff_x_libdirs=' - /usr/X11/lib - /usr/X11R6/lib - /usr/X11R5/lib - /usr/X11R4/lib - - /usr/lib/X11 - /usr/lib/X11R6 - /usr/lib/X11R5 - /usr/lib/X11R4 - - /usr/local/X11/lib - /usr/local/X11R6/lib - /usr/local/X11R5/lib - /usr/local/X11R4/lib - - /usr/local/lib/X11 - /usr/local/lib/X11R6 - /usr/local/lib/X11R5 - /usr/local/lib/X11R4 - - /usr/X386/lib - /usr/x386/lib - /usr/XFree86/lib/X11 - - /usr/lib - /usr/local/lib - /usr/unsupported/lib - /usr/athena/lib - /usr/local/x11r5/lib - /usr/lpp/Xamples/lib - - /usr/openwin/lib - /usr/openwin/share/lib' - - if test -z "$groff_x_usrlibdir"; then - # We only test whether libX11 exists. - for groff_dir in $groff_x_libdirs; do - for groff_extension in a so sl; do - if test ! -r $groff_dir/libX11.$groff_extension; then - groff_x_usrlibdir=$groff_dir - break 2 - fi - done - done - fi - - if test "x$with_appresdir" = "x"; then - appresdir=$groff_x_usrlibdir/X11/app-defaults - else - appresdir=$with_appresdir - fi - fi - AC_SUBST([appresdir])]) - - -# Emit warning if --with-appresdir hasn't been used. - -AC_DEFUN([GROFF_APPRESDIR_CHECK], - [if test -z "$groff_no_x"; then - if test "x$with_appresdir" = "x"; then - AC_MSG_NOTICE([ - - The application resource file for gxditview will be installed as - - $appresdir/GXditview - - (an existing file will be saved as `GXditview.old'). - To install it into a different directory, say, `/etc/gxditview', - add `--with-appresdir=/etc/gxditview' to the configure script - command line options and rerun it. The environment variable - `APPLRESDIR' must then be set to `/etc/' (note the trailing slash), - omitting the `gxditview' part which is automatically appended by - the X11 searching routines for resource files. More details can be - found in the X(7) manual page. - ]) - fi - fi]) diff --git a/contrib/groff/configure b/contrib/groff/configure deleted file mode 100755 index 107aadcae070..000000000000 --- a/contrib/groff/configure +++ /dev/null @@ -1,11663 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59b. -# -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -elif test -n "${BASH_VERSION+set}${KSH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Find who we are. Look in the path if we contain no path at all -# relative or not. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; }; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - - -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - if test $as_have_required = yes && (eval ": -(func_return () { - (exit \$1) -} -func_success () { - func_return 0 -} -func_failure () { - func_return 1 -} -func_ret_success () { - return 0 -} -func_ret_failure () { - return 1 -} - -exitcode=0 -if func_success; then - : -else - exitcode=1 - echo func_failure succeeded. -fi - -if func_failure; then - exitcode=1 - echo func_success failed. -fi - -if func_ret_success; then - : -else - exitcode=1 - echo func_ret_success failed. -fi - -if func_ret_failure; then - exitcode=1 - echo func_ret_failure succeeded. -fi - -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - as_lineno_3=\`(expr \$as_lineno_1 + 1) 2>/dev/null\` - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\$as_lineno_3\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done - esac -done - - - for as_shell in $as_candidate_shells $SHELL; do - if { $as_shell 2> /dev/null <<\_ASEOF -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -elif test -n "${BASH_VERSION+set}${KSH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { $as_shell 2> /dev/null <<\_ASEOF -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -elif test -n "${BASH_VERSION+set}${KSH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -: -(func_return () { - (exit $1) -} -func_success () { - func_return 0 -} -func_failure () { - func_return 1 -} -func_ret_success () { - return 0 -} -func_ret_failure () { - return 1 -} - -exitcode=0 -if func_success; then - : -else - exitcode=1 - echo func_failure succeeded. -fi - -if func_failure; then - exitcode=1 - echo func_success failed. -fi - -if func_ret_success; then - : -else - exitcode=1 - echo func_ret_success failed. -fi - -if func_ret_failure; then - exitcode=1 - echo func_ret_failure succeeded. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "func_return () { - (exit \$1) -} -func_success () { - func_return 0 -} -func_failure () { - func_return 1 -} -func_ret_success () { - return 0 -} -func_ret_failure () { - return 1 -} - -exitcode=0 -if func_success; then - : -else - exitcode=1 - echo func_failure succeeded. -fi - -if func_failure; then - exitcode=1 - echo func_success failed. -fi - -if func_ret_success; then - : -else - exitcode=1 - echo func_ret_success failed. -fi - -if func_ret_failure; then - exitcode=1 - echo func_ret_failure succeeded. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s,[$]LINENO.*,&-, - t lineno - b - : lineno - N - : loop - s,[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\),\2\1\2, - t loop - s,-\n.*,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="src/roff/groff/groff.cpp" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#if HAVE_SYS_TYPES_H -# include -#endif -#if HAVE_SYS_STAT_H -# include -#endif -#if STDC_HEADERS -# include -# include -#else -# if HAVE_STDLIB_H -# include -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include -# endif -# include -#endif -#if HAVE_STRINGS_H -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif -#if HAVE_STDINT_H -# include -#endif -#if HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX TTYDEVDIRS OTHERDEVDIRS CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS XDEVDIRS XPROGDIRS XLIBDIRS appresdir LPR LP LPQ PSPRINT DVIPRINT PERLPATH YACC RANLIB ac_ct_RANLIB INSTALL_INFO INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S SH_SCRIPT_SED_CMD GREP EGREP LIBC LIBM LIBOBJS BROKEN_SPOOLER_FLAGS PAGE g sys_tmac_prefix tmac_wrap GROFF_PATH_SEPARATOR ALT_GHOSTSCRIPT_PROGS GHOSTSCRIPT ac_ct_GHOSTSCRIPT pnmcut pnmcrop pnmtopng psselect pnmtops make_html make_install_html ALT_AWK_PROGS AWK ac_ct_AWK make_pdfdoc make_install_pdfdoc pnmtops_nosetpage LTLIBOBJS' -ac_subst_files='' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute directory names. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute directory names. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CXX_set=${CXX+set} -ac_env_CXX_value=$CXX -ac_cv_env_CXX_set=${CXX+set} -ac_cv_env_CXX_value=$CXX -ac_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_env_CXXFLAGS_value=$CXXFLAGS -ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_cv_env_CXXFLAGS_value=$CXXFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -X features: - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-x use the X Window System - --with-appresdir=DIR X11 application resource files - --with-alt-gs=LIST alternative names for ghostscript executable - --with-gs=PROG actual [/path/]name of ghostscript executable - --with-alt-awk=LIST alternative names for awk executable - --with-awk=PROG actual [/path/]name of awk executable - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute names, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd "$ac_popdir" - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, -2003, 2004 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.59b. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -# NextStep 3.3 (patch 3) loses unless the first echo outputs at least 14 bytes. -ac_space=' ' -echo "$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space" >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - - - - ac_config_headers="$ac_config_headers src/include/config.h:src/include/config.hin" - - - -# checks for programs -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -for ac_file in $ac_files -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext - break;; - * ) - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix, OSF/1, Tru64 -std -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -n "$ac_tool_prefix"; then - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - CXX=$ac_ct_CXX - fi -fi - - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 -GXX=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -CXXFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "$cross_compiling" = no; then - echo "$as_me:$LINENO: checking that C++ compiler can compile simple program" >&5 -echo $ECHO_N "checking that C++ compiler can compile simple program... $ECHO_C" >&6 - fi - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int main() { - return 0; -} - - - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - { { echo "$as_me:$LINENO: error: a working C++ compiler is required" >&5 -echo "$as_me: error: a working C++ compiler is required" >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - if test "$cross_compiling" = no; then - echo "$as_me:$LINENO: checking that C++ static constructors and destructors are called" >&5 -echo $ECHO_N "checking that C++ static constructors and destructors are called... $ECHO_C" >&6 - fi - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -extern "C" { - void _exit(int); -} - -int i; -struct A { - char dummy; - A() { i = 1; } - ~A() { if (i == 1) _exit(0); } -}; - -A a; - -int main() -{ - return 1; -} - - - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - { { echo "$as_me:$LINENO: error: a working C++ compiler is required" >&5 -echo "$as_me: error: a working C++ compiler is required" >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: checking that header files support C++" >&5 -echo $ECHO_N "checking that header files support C++... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include - - -int -main () -{ - - -fopen(0, 0); - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - { { echo "$as_me:$LINENO: error: header files do not support C++ - (if you are using a version of gcc/g++ earlier than 2.5, - you should install libg++)" >&5 -echo "$as_me: error: header files do not support C++ - (if you are using a version of gcc/g++ earlier than 2.5, - you should install libg++)" >&2;} - { (exit 1); exit 1; }; } -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -echo "$as_me:$LINENO: checking whether character set is EBCDIC" >&5 -echo $ECHO_N "checking whether character set is EBCDIC... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -/* Treat any failure as ASCII for compatibility with existing art. - Use compile-time rather than run-time tests for cross-compiler - tolerance. */ -#if '0' != 240 -make an error "Character set is not EBCDIC" -#endif - - -int -main () -{ - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_ebcdic="yes" - TTYDEVDIRS="font/devcp1047" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define IS_EBCDIC_HOST 1 -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_ebcdic="no" - TTYDEVDIRS="font/devascii font/devlatin1" - OTHERDEVDIRS="font/devlj4 font/devlbp" - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - - -if test "$groff_cv_ebcdic" = "yes"; then - echo "$as_me:$LINENO: checking for OS/390 Unix" >&5 -echo $ECHO_N "checking for OS/390 Unix... $ECHO_C" >&6 - case `uname` in - OS/390) - CFLAGS="$CFLAGS -D_ALL_SOURCE" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 ;; - esac - fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -echo "$as_me:$LINENO: checking for X" >&5 -echo $ECHO_N "checking for X... $ECHO_C" >&6 - - -# Check whether --with-x or --without-x was given. -if test "${with_x+set}" = set; then - withval="$with_x" - -fi; -# $have_x is `yes', `no', `disabled', or empty when we do not yet know. -if test "x$with_x" = xno; then - # The user explicitly disabled X. - have_x=disabled -else - if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then - # Both variables are already set. - have_x=yes - else - if test "${ac_cv_have_x+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # One or both of the vars are not set, and there is no cached value. -ac_x_includes=no ac_x_libraries=no -rm -f -r conftest.dir -if mkdir conftest.dir; then - cd conftest.dir - # Make sure to not put "make" in the Imakefile rules, since we grep it out. - cat >Imakefile <<'_ACEOF' -acfindx: - @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' -_ACEOF - if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering...", which would confuse us. - eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` - # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. - for ac_extension in a so sl; do - if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && - test -f $ac_im_libdir/libX11.$ac_extension; then - ac_im_usrlibdir=$ac_im_libdir; break - fi - done - # Screen out bogus values from the imake configuration. They are - # bogus both because they are the default anyway, and because - # using them would break gcc on systems where it needs fixed includes. - case $ac_im_incroot in - /usr/include) ;; - *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; - esac - case $ac_im_usrlibdir in - /usr/lib | /lib) ;; - *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; - esac - fi - cd .. - rm -f -r conftest.dir -fi - -# Standard set of common directories for X headers. -# Check X11 before X11Rn because it is often a symlink to the current release. -ac_x_header_dirs=' -/usr/X11/include -/usr/X11R6/include -/usr/X11R5/include -/usr/X11R4/include - -/usr/include/X11 -/usr/include/X11R6 -/usr/include/X11R5 -/usr/include/X11R4 - -/usr/local/X11/include -/usr/local/X11R6/include -/usr/local/X11R5/include -/usr/local/X11R4/include - -/usr/local/include/X11 -/usr/local/include/X11R6 -/usr/local/include/X11R5 -/usr/local/include/X11R4 - -/usr/X386/include -/usr/x386/include -/usr/XFree86/include/X11 - -/usr/include -/usr/local/include -/usr/unsupported/include -/usr/athena/include -/usr/local/x11r5/include -/usr/lpp/Xamples/include - -/usr/openwin/include -/usr/openwin/share/include' - -if test "$ac_x_includes" = no; then - # Guess where to find include files, by looking for Intrinsic.h. - # First, try using that file with no special directory specified. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # We can compile using X headers with no special include directory. -ac_x_includes= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - for ac_dir in $ac_x_header_dirs; do - if test -r "$ac_dir/X11/Intrinsic.h"; then - ac_x_includes=$ac_dir - break - fi -done -fi -rm -f conftest.err conftest.$ac_ext -fi # $ac_x_includes = no - -if test "$ac_x_libraries" = no; then - # Check for the libraries. - # See if we find them without any special options. - # Don't add to $LIBS permanently. - ac_save_LIBS=$LIBS - LIBS="-lXt $LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -XtMalloc (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - LIBS=$ac_save_LIBS -# We can link X programs with no special library path. -ac_x_libraries= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -LIBS=$ac_save_LIBS -for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` -do - # Don't even attempt the hair of trying to link an X program! - for ac_extension in a so sl; do - if test -r $ac_dir/libXt.$ac_extension; then - ac_x_libraries=$ac_dir - break 2 - fi - done -done -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi # $ac_x_libraries = no - -if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then - # Didn't find X anywhere. Cache the known absence of X. - ac_cv_have_x="have_x=no" -else - # Record where we found X for the cache. - ac_cv_have_x="have_x=yes \ - ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" -fi -fi - - fi - eval "$ac_cv_have_x" -fi # $with_x != no - -if test "$have_x" != yes; then - echo "$as_me:$LINENO: result: $have_x" >&5 -echo "${ECHO_T}$have_x" >&6 - no_x=yes -else - # If each of the values was on the command line, it overrides each guess. - test "x$x_includes" = xNONE && x_includes=$ac_x_includes - test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries - # Update the cache value to reflect the command line values. - ac_cv_have_x="have_x=yes \ - ac_x_includes=$x_includes ac_x_libraries=$x_libraries" - echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 -echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 -fi - -if test "$no_x" = yes; then - # Not all programs may use this symbol, but it does not hurt to define it. - -cat >>confdefs.h <<\_ACEOF -#define X_DISPLAY_MISSING 1 -_ACEOF - - X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= -else - if test -n "$x_includes"; then - X_CFLAGS="$X_CFLAGS -I$x_includes" - fi - - # It would also be nice to do this for all -L options, not just this one. - if test -n "$x_libraries"; then - X_LIBS="$X_LIBS -L$x_libraries" - # For Solaris; some versions of Sun CC require a space after -R and - # others require no space. Words are not sufficient . . . . - case `(uname -sr) 2>/dev/null` in - "SunOS 5"*) - echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 -echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 - ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_R_nospace=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_R_nospace=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test $ac_R_nospace = yes; then - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - X_LIBS="$X_LIBS -R$x_libraries" - else - LIBS="$ac_xsave_LIBS -R $x_libraries" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_R_space=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_R_space=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test $ac_R_space = yes; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - X_LIBS="$X_LIBS -R $x_libraries" - else - echo "$as_me:$LINENO: result: neither works" >&5 -echo "${ECHO_T}neither works" >&6 - fi - fi - LIBS=$ac_xsave_LIBS - esac - fi - - # Check for system-dependent libraries X programs must link with. - # Do this before checking for the system-independent R6 libraries - # (-lICE), since we may need -lsocket or whatever for X linking. - - if test "$ISC" = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" - else - # Martyn Johnson says this is needed for Ultrix, if the X - # libraries were built with DECnet support. And Karl Berry says - # the Alpha needs dnet_stub (dnet does not exist). - ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char XOpenDisplay (); -int -main () -{ -XOpenDisplay (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 -echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 -if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dnet_ntoa (); -int -main () -{ -dnet_ntoa (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dnet_dnet_ntoa=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dnet_dnet_ntoa=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 -echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 -if test $ac_cv_lib_dnet_dnet_ntoa = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" -fi - - if test $ac_cv_lib_dnet_dnet_ntoa = no; then - echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 -echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 -if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet_stub $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dnet_ntoa (); -int -main () -{ -dnet_ntoa (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dnet_stub_dnet_ntoa=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dnet_stub_dnet_ntoa=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 -echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 -if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" -fi - - fi -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$ac_xsave_LIBS" - - # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, - # to get the SysV transport functions. - # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) - # needs -lnsl. - # The nsl library prevents programs from opening the X display - # on Irix 5.2, according to T.E. Dickey. - # The functions gethostbyname, getservbyname, and inet_addr are - # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. - echo "$as_me:$LINENO: checking for gethostbyname" >&5 -echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 -if test "${ac_cv_func_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define gethostbyname to an innocuous variant, in case declares gethostbyname. - For example, HP-UX 11i declares gettimeofday. */ -#define gethostbyname innocuous_gethostbyname - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char gethostbyname (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef gethostbyname - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) -choke me -#else -char (*f) () = gethostbyname; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != gethostbyname; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_gethostbyname=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 - - if test $ac_cv_func_gethostbyname = no; then - echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 -echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 -if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname (); -int -main () -{ -gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_nsl_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_nsl_gethostbyname=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 -if test $ac_cv_lib_nsl_gethostbyname = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" -fi - - if test $ac_cv_lib_nsl_gethostbyname = no; then - echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 -echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 -if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname (); -int -main () -{ -gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_bsd_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_bsd_gethostbyname=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 -if test $ac_cv_lib_bsd_gethostbyname = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" -fi - - fi - fi - - # lieder@skyler.mavd.honeywell.com says without -lsocket, - # socket/setsockopt and other routines are undefined under SCO ODT - # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary - # on later versions), says Simon Leinen: it contains gethostby* - # variants that don't use the name server (or something). -lsocket - # must be given before -lnsl if both are needed. We assume that - # if connect needs -lnsl, so does gethostbyname. - echo "$as_me:$LINENO: checking for connect" >&5 -echo $ECHO_N "checking for connect... $ECHO_C" >&6 -if test "${ac_cv_func_connect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define connect to an innocuous variant, in case declares connect. - For example, HP-UX 11i declares gettimeofday. */ -#define connect innocuous_connect - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char connect (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef connect - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char connect (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_connect) || defined (__stub___connect) -choke me -#else -char (*f) () = connect; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != connect; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_connect=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_connect=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 -echo "${ECHO_T}$ac_cv_func_connect" >&6 - - if test $ac_cv_func_connect = no; then - echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 -echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 -if test "${ac_cv_lib_socket_connect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $X_EXTRA_LIBS $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char connect (); -int -main () -{ -connect (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_socket_connect=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_socket_connect=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 -if test $ac_cv_lib_socket_connect = yes; then - X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" -fi - - fi - - # Guillermo Gomez says -lposix is necessary on A/UX. - echo "$as_me:$LINENO: checking for remove" >&5 -echo $ECHO_N "checking for remove... $ECHO_C" >&6 -if test "${ac_cv_func_remove+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define remove to an innocuous variant, in case declares remove. - For example, HP-UX 11i declares gettimeofday. */ -#define remove innocuous_remove - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char remove (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef remove - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char remove (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_remove) || defined (__stub___remove) -choke me -#else -char (*f) () = remove; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != remove; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_remove=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_remove=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 -echo "${ECHO_T}$ac_cv_func_remove" >&6 - - if test $ac_cv_func_remove = no; then - echo "$as_me:$LINENO: checking for remove in -lposix" >&5 -echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 -if test "${ac_cv_lib_posix_remove+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lposix $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char remove (); -int -main () -{ -remove (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_posix_remove=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_posix_remove=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 -echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 -if test $ac_cv_lib_posix_remove = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" -fi - - fi - - # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. - echo "$as_me:$LINENO: checking for shmat" >&5 -echo $ECHO_N "checking for shmat... $ECHO_C" >&6 -if test "${ac_cv_func_shmat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shmat to an innocuous variant, in case declares shmat. - For example, HP-UX 11i declares gettimeofday. */ -#define shmat innocuous_shmat - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shmat (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef shmat - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shmat (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shmat) || defined (__stub___shmat) -choke me -#else -char (*f) () = shmat; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != shmat; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_shmat=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_shmat=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 -echo "${ECHO_T}$ac_cv_func_shmat" >&6 - - if test $ac_cv_func_shmat = no; then - echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 -echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 -if test "${ac_cv_lib_ipc_shmat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lipc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shmat (); -int -main () -{ -shmat (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_ipc_shmat=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_ipc_shmat=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 -echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 -if test $ac_cv_lib_ipc_shmat = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" -fi - - fi - fi - - # Check for libraries that X11R6 Xt/Xaw programs need. - ac_save_LDFLAGS=$LDFLAGS - test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" - # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to - # check for ICE first), but we must link in the order -lSM -lICE or - # we get undefined symbols. So assume we have SM if we have ICE. - # These have to be linked with before -lX11, unlike the other - # libraries we check for below, so use a different variable. - # John Interrante, Karl Berry - echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 -echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 -if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lICE $X_EXTRA_LIBS $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char IceConnectionNumber (); -int -main () -{ -IceConnectionNumber (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_ICE_IceConnectionNumber=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_ICE_IceConnectionNumber=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 -echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 -if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then - X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" -fi - - LDFLAGS=$ac_save_LDFLAGS - -fi - - - groff_no_x=$no_x - if test -z "$groff_no_x"; then - OLDCFLAGS=$CFLAGS - OLDLDFLAGS=$LDFLAGS - OLDLIBS=$LIBS - CFLAGS="$CFLAGS $X_CFLAGS" - LDFLAGS="$LDFLAGS $X_LIBS" - LIBS="$LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" - - LIBS="$LIBS -lXaw" - echo "$as_me:$LINENO: checking for Xaw library and header files" >&5 -echo $ECHO_N "checking for Xaw library and header files... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#include - - -int -main () -{ - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - groff_no_x="yes" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - - LIBS="$LIBS -lXmu" - echo "$as_me:$LINENO: checking for Xmu library and header files" >&5 -echo $ECHO_N "checking for Xmu library and header files... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#include - - -int -main () -{ - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - groff_no_x="yes" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - - CFLAGS=$OLDCFLAGS - LDFLAGS=$OLDLDFLAGS - LIBS=$OLDLIBS - fi - - if test "x$groff_no_x" = "xyes"; then - { echo "$as_me:$LINENO: gxditview and xtotroff won't be built" >&5 -echo "$as_me: gxditview and xtotroff won't be built" >&6;} - else - XDEVDIRS="font/devX75 font/devX75-12 font/devX100 font/devX100-12" - XPROGDIRS="src/devices/xditview src/utils/xtotroff" - XLIBDIRS="src/libs/libxutil" - fi - - - - - -# Check whether --with-appresdir or --without-appresdir was given. -if test "${with_appresdir+set}" = set; then - withval="$with_appresdir" - -fi; -if test -z "$groff_no_x"; then - # Create an Imakefile, run `xmkmf', then `make'. - rm -f -r conftest.dir - if mkdir conftest.dir; then - cd conftest.dir - # Make sure to not put `make' in the Imakefile rules, - # since we grep it out. - cat >Imakefile <<'EOF' - -xlibdirs: - @echo 'groff_x_usrlibdir="${USRLIBDIR}"; groff_x_libdir="${LIBDIR}"' -EOF - - if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering...", - # which would confuse us. - eval `${MAKE-make} xlibdirs 2>/dev/null | grep -v make` - - # Open Windows `xmkmf' reportedly sets LIBDIR instead of USRLIBDIR. - for groff_extension in a so sl; do - if test ! -f $groff_x_usrlibdir/libX11.$groff_extension && - test -f $groff_x_libdir/libX11.$groff_extension; then - groff_x_usrlibdir=$groff_x_libdir - break - fi - done - fi - - cd .. - rm -f -r conftest.dir - fi - - # In case the test with `xmkmf' wasn't successful, try a suite of - # standard directories. Check `X11' before `X11Rn' because it is often - # a symlink to the current release. - groff_x_libdirs=' - /usr/X11/lib - /usr/X11R6/lib - /usr/X11R5/lib - /usr/X11R4/lib - - /usr/lib/X11 - /usr/lib/X11R6 - /usr/lib/X11R5 - /usr/lib/X11R4 - - /usr/local/X11/lib - /usr/local/X11R6/lib - /usr/local/X11R5/lib - /usr/local/X11R4/lib - - /usr/local/lib/X11 - /usr/local/lib/X11R6 - /usr/local/lib/X11R5 - /usr/local/lib/X11R4 - - /usr/X386/lib - /usr/x386/lib - /usr/XFree86/lib/X11 - - /usr/lib - /usr/local/lib - /usr/unsupported/lib - /usr/athena/lib - /usr/local/x11r5/lib - /usr/lpp/Xamples/lib - - /usr/openwin/lib - /usr/openwin/share/lib' - - if test -z "$groff_x_usrlibdir"; then - # We only test whether libX11 exists. - for groff_dir in $groff_x_libdirs; do - for groff_extension in a so sl; do - if test ! -r $groff_dir/libX11.$groff_extension; then - groff_x_usrlibdir=$groff_dir - break 2 - fi - done - done - fi - - if test "x$with_appresdir" = "x"; then - appresdir=$groff_x_usrlibdir/X11/app-defaults - else - appresdir=$with_appresdir - fi - fi - -if test -z "$PSPRINT"; then - for ac_prog in lpr -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_LPR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$LPR"; then - ac_cv_prog_LPR="$LPR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LPR="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -LPR=$ac_cv_prog_LPR -if test -n "$LPR"; then - echo "$as_me:$LINENO: result: $LPR" >&5 -echo "${ECHO_T}$LPR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$LPR" && break -done - - for ac_prog in lp -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_LP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$LP"; then - ac_cv_prog_LP="$LP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LP="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -LP=$ac_cv_prog_LP -if test -n "$LP"; then - echo "$as_me:$LINENO: result: $LP" >&5 -echo "${ECHO_T}$LP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$LP" && break -done - - if test -n "$LPR" && test -n "$LP"; then - # HP-UX provides an lpr command that emulates lpr using lp, - # but it doesn't have lpq; in this case we want to use lp - # rather than lpr. - for ac_prog in lpq -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_LPQ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$LPQ"; then - ac_cv_prog_LPQ="$LPQ" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LPQ="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -LPQ=$ac_cv_prog_LPQ -if test -n "$LPQ"; then - echo "$as_me:$LINENO: result: $LPQ" >&5 -echo "${ECHO_T}$LPQ" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$LPQ" && break -done - - test -n "$LPQ" || LPR= - fi - if test -n "$LPR"; then - PSPRINT="$LPR" - elif test -n "$LP"; then - PSPRINT="$LP" - fi - fi - - echo "$as_me:$LINENO: checking for command to use for printing PostScript files" >&5 -echo $ECHO_N "checking for command to use for printing PostScript files... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $PSPRINT" >&5 -echo "${ECHO_T}$PSPRINT" >&6 - - # Figure out DVIPRINT from PSPRINT. - echo "$as_me:$LINENO: checking for command to use for printing dvi files" >&5 -echo $ECHO_N "checking for command to use for printing dvi files... $ECHO_C" >&6 - if test -n "$PSPRINT" && test -z "$DVIPRINT"; then - if test "x$PSPRINT" = "xlpr"; then - DVIPRINT="lpr -d" - else - DVIPRINT="$PSPRINT" - fi - fi - - echo "$as_me:$LINENO: result: $DVIPRINT" >&5 -echo "${ECHO_T}$DVIPRINT" >&6 -# Extract the first word of "perl", so it can be a program name with args. -set dummy perl; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_PERLPATH+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $PERLPATH in - [\\/]* | ?:[\\/]*) - ac_cv_path_PERLPATH="$PERLPATH" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PERLPATH="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_path_PERLPATH" && ac_cv_path_PERLPATH="/usr/bin/perl" - ;; -esac -fi -PERLPATH=$ac_cv_path_PERLPATH - -if test -n "$PERLPATH"; then - echo "$as_me:$LINENO: result: $PERLPATH" >&5 -echo "${ECHO_T}$PERLPATH" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -for ac_prog in byacc 'bison -y' -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_YACC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$YACC"; then - ac_cv_prog_YACC="$YACC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_YACC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -YACC=$ac_cv_prog_YACC -if test -n "$YACC"; then - echo "$as_me:$LINENO: result: $YACC" >&5 -echo "${ECHO_T}$YACC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$YACC" && break -done -test -n "$YACC" || YACC="yacc" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - - - ac_dir=`cd $ac_aux_dir; pwd` - ac_install_sh="$ac_dir/install-sh -c" -for ac_prog in install-info -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_INSTALL_INFO+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$INSTALL_INFO"; then - ac_cv_prog_INSTALL_INFO="$INSTALL_INFO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_INSTALL_INFO="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -INSTALL_INFO=$ac_cv_prog_INSTALL_INFO -if test -n "$INSTALL_INFO"; then - echo "$as_me:$LINENO: result: $INSTALL_INFO" >&5 -echo "${ECHO_T}$INSTALL_INFO" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$INSTALL_INFO" && break -done -test -n "$INSTALL_INFO" || INSTALL_INFO=":" - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6 -fi - - -# use a dummy substitution if no csh hack is necessary to avoid errors -# with non-GNU sed programs -echo "$as_me:$LINENO: checking for csh hash hack" >&5 -echo $ECHO_N "checking for csh hash hack... $ECHO_C" >&6 - -cat <conftest.sh -#! /bin/sh -true || exit 0 -export PATH || exit 0 -exit 1 -EOF - - chmod +x conftest.sh - if echo ./conftest.sh | (csh >/dev/null 2>&1) >/dev/null 2>&1; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SH_SCRIPT_SED_CMD='1s/.*/:/' - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - SH_SCRIPT_SED_CMD='1s/a/a/' - fi - rm -f conftest.sh - - -# checks for headers -echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -f -r $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/GREPXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/GREP$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} -ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/xpg4/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - test -f "$ac_path_GREP" || continue - $ac_path_GREP_found || if $as_executable_p "$ac_path_GREP"; then - # Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -if "$ac_path_GREP" --version 2>&1 < /dev/null | grep 'GNU' >/dev/null; then - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=: -else - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"$tmp/conftest.in" - while : - do - cat "$tmp/conftest.in" "$tmp/conftest.in" >"$tmp/conftest.tmp" - mv "$tmp/conftest.tmp" "$tmp/conftest.in" - cp "$tmp/conftest.in" "$tmp/conftest.nl" - echo 'GREP' >> "$tmp/conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "$tmp/conftest.nl" >"$tmp/conftest.out" 2>/dev/null || break - diff "$tmp/conftest.out" "$tmp/conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done -fi - -fi - - $ac_path_GREP_found && break 3 - done -done - -done - -rm -rf "$tmp" - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH:/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH:/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -fi - - -fi -echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6 - GREP="$ac_cv_path_GREP" - - -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -f -r $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/EGREPXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/EGREP$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} -ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/xpg4/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - test -f "$ac_path_EGREP" || continue - $ac_path_EGREP_found || if $as_executable_p "$ac_path_EGREP"; then - # Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -if "$ac_path_EGREP" --version 2>&1 < /dev/null | grep 'GNU' >/dev/null; then - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=: -else - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"$tmp/conftest.in" - while : - do - cat "$tmp/conftest.in" "$tmp/conftest.in" >"$tmp/conftest.tmp" - mv "$tmp/conftest.tmp" "$tmp/conftest.in" - cp "$tmp/conftest.in" "$tmp/conftest.nl" - echo 'EGREP' >> "$tmp/conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "$tmp/conftest.nl" >"$tmp/conftest.out" 2>/dev/null || break - diff "$tmp/conftest.out" "$tmp/conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done -fi - -fi - - $ac_path_EGREP_found && break 3 - done -done - -done - -rm -rf "$tmp" - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH:/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH:/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -fi - - - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6 - EGREP="$ac_cv_path_EGREP" - - -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit (2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - - - - - - -for ac_header in stdlib.h unistd.h dirent.h limits.h sys/dir.h \ - string.h strings.h math.h sys/time.h direct.h process.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -echo "$as_me:$LINENO: checking for ISC 3.x or 4.x" >&5 -echo $ECHO_N "checking for ISC 3.x or 4.x... $ECHO_C" >&6 - if grep '[34]\.' /usr/options/cb.name >/dev/null 2>&1 - then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define _SYSV3 1 -_ACEOF - - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - fi -echo "$as_me:$LINENO: checking whether -D_POSIX_SOURCE is necessary" >&5 -echo $ECHO_N "checking whether -D_POSIX_SOURCE is necessary... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -extern "C" { void fileno(int); } - - -int -main () -{ - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define _POSIX_SOURCE 1 -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# checks for header stuff -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - echo "$as_me:$LINENO: checking for return type of srand" >&5 -echo $ECHO_N "checking for return type of srand... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -extern "C" { void srand(unsigned int); } - - -int -main () -{ - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: void" >&5 -echo "${ECHO_T}void" >&6 - -cat >>confdefs.h <<\_ACEOF -#define RET_TYPE_SRAND_IS_VOID 1 -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: int" >&5 -echo "${ECHO_T}int" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether gettimeofday must be declared" >&5 -echo $ECHO_N "checking whether gettimeofday must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_gettimeofday+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef gettimeofday - char *p = (char *) gettimeofday; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_gettimeofday=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_gettimeofday=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_gettimeofday" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_gettimeofday" >&6 - if test $groff_cv_decl_needed_gettimeofday = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_GETTIMEOFDAY 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether hypot must be declared" >&5 -echo $ECHO_N "checking whether hypot must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_hypot+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef hypot - char *p = (char *) hypot; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_hypot=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_hypot=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_hypot" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_hypot" >&6 - if test $groff_cv_decl_needed_hypot = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_HYPOT 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether popen must be declared" >&5 -echo $ECHO_N "checking whether popen must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_popen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef popen - char *p = (char *) popen; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_popen=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_popen=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_popen" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_popen" >&6 - if test $groff_cv_decl_needed_popen = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_POPEN 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether pclose must be declared" >&5 -echo $ECHO_N "checking whether pclose must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_pclose+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef pclose - char *p = (char *) pclose; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_pclose=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_pclose=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_pclose" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_pclose" >&6 - if test $groff_cv_decl_needed_pclose = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_PCLOSE 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether putenv must be declared" >&5 -echo $ECHO_N "checking whether putenv must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_putenv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef putenv - char *p = (char *) putenv; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_putenv=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_putenv=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_putenv" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_putenv" >&6 - if test $groff_cv_decl_needed_putenv = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_PUTENV 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether rand must be declared" >&5 -echo $ECHO_N "checking whether rand must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_rand+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef rand - char *p = (char *) rand; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_rand=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_rand=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_rand" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_rand" >&6 - if test $groff_cv_decl_needed_rand = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_RAND 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether snprintf must be declared" >&5 -echo $ECHO_N "checking whether snprintf must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_snprintf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef snprintf - char *p = (char *) snprintf; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_snprintf=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_snprintf=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_snprintf" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_snprintf" >&6 - if test $groff_cv_decl_needed_snprintf = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_SNPRINTF 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether srand must be declared" >&5 -echo $ECHO_N "checking whether srand must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_srand+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef srand - char *p = (char *) srand; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_srand=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_srand=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_srand" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_srand" >&6 - if test $groff_cv_decl_needed_srand = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_SRAND 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether strcasecmp must be declared" >&5 -echo $ECHO_N "checking whether strcasecmp must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_strcasecmp+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef strcasecmp - char *p = (char *) strcasecmp; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_strcasecmp=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_strcasecmp=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_strcasecmp" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_strcasecmp" >&6 - if test $groff_cv_decl_needed_strcasecmp = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_STRCASECMP 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether strncasecmp must be declared" >&5 -echo $ECHO_N "checking whether strncasecmp must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_strncasecmp+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef strncasecmp - char *p = (char *) strncasecmp; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_strncasecmp=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_strncasecmp=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_strncasecmp" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_strncasecmp" >&6 - if test $groff_cv_decl_needed_strncasecmp = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_STRNCASECMP 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether vfprintf must be declared" >&5 -echo $ECHO_N "checking whether vfprintf must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_vfprintf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef vfprintf - char *p = (char *) vfprintf; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_vfprintf=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_vfprintf=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_vfprintf" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_vfprintf" >&6 - if test $groff_cv_decl_needed_vfprintf = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_VFPRINTF 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether vsnprintf must be declared" >&5 -echo $ECHO_N "checking whether vsnprintf must be declared... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - if test "${groff_cv_decl_needed_vsnprintf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MATH_H -#include -#endif - - -int -main () -{ - - -#ifndef vsnprintf - char *p = (char *) vsnprintf; -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_decl_needed_vsnprintf=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_decl_needed_vsnprintf=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $groff_cv_decl_needed_vsnprintf" >&5 -echo "${ECHO_T}$groff_cv_decl_needed_vsnprintf" >&6 - if test $groff_cv_decl_needed_vsnprintf = yes; then - -cat >>confdefs.h <<\_ACEOF -#define NEED_DECLARATION_VSNPRINTF 1 -_ACEOF - - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - echo "$as_me:$LINENO: checking for sys_nerr in , , or " >&5 -echo $ECHO_N "checking for sys_nerr in , , or ... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#include -#include - - -int -main () -{ - - -int k; -k = sys_nerr; - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SYS_NERR 1 -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking for sys_errlist in , , or " >&5 -echo $ECHO_N "checking for sys_errlist in , , or ... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#include -#include - - -int -main () -{ - - -int k; -k = (int)sys_errlist[0]; - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SYS_ERRLIST 1 -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - echo "$as_me:$LINENO: checking C++ " >&5 -echo $ECHO_N "checking C++ ... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include - - -int -main () -{ - - -read(0, 0, 0); -open(0, 0); - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_CC_OSFCN_H 1 -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - echo "$as_me:$LINENO: checking C++ " >&5 -echo $ECHO_N "checking C++ ... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include - - -int -main () -{ - - -int x = INT_MIN; -int y = INT_MAX; -int z = UCHAR_MAX; - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_CC_LIMITS_H 1 -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - echo "$as_me:$LINENO: checking C++ " >&5 -echo $ECHO_N "checking C++ ... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#include - - -int -main () -{ - - -uintmax_t i = (uintmax_t)-1; - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_header_inttypes_h=yes - -cat >>confdefs.h <<\_ACEOF -#define HAVE_CC_INTTYPES_H 1 -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_header_inttypes_h=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - echo "$as_me:$LINENO: result: $groff_cv_header_inttypes_h" >&5 -echo "${ECHO_T}$groff_cv_header_inttypes_h" >&6 - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# checks for typedefs -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - echo "$as_me:$LINENO: checking for unsigned long long" >&5 -echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -unsigned long long ull = 1; -int i = 63; -unsigned long long ullmax = (unsigned long long)-1; - - -int -main () -{ - - -return ull << i | ull >> i | ullmax / ull | ullmax % ull; - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - groff_cv_type_unsigned_long_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -groff_cv_type_unsigned_long_long=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - echo "$as_me:$LINENO: result: $groff_cv_type_unsigned_long_long" >&5 -echo "${ECHO_T}$groff_cv_type_unsigned_long_long" >&6 - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - if test $groff_cv_header_inttypes_h = no; then - - test $groff_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - -cat >>confdefs.h <<_ACEOF -#define uintmax_t $ac_type -_ACEOF - - fi -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - echo "$as_me:$LINENO: checking for declaration of time_t" >&5 -echo $ECHO_N "checking for declaration of time_t... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include - - -int -main () -{ - - -time_t t = time(0); -struct tm *p = localtime(&t); - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - -cat >>confdefs.h <<\_ACEOF -#define LONG_FOR_TIME_T 1 -_ACEOF - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking for return type of signal handlers" >&5 -echo $ECHO_N "checking for return type of signal handlers... $ECHO_C" >&6 - for groff_declaration in \ - 'extern "C" void (*signal (int, void (*)(int)))(int);' \ - 'extern "C" void (*signal (int, void (*)(int)) throw ())(int);' \ - 'void (*signal ()) ();' - do - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#include -#ifdef signal -# undef signal -#endif -$groff_declaration - - -int -main () -{ - - -int i; - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done - - if test -n "$groff_declaration"; then - echo "$as_me:$LINENO: result: void" >&5 -echo "${ECHO_T}void" >&6 - -cat >>confdefs.h <<\_ACEOF -#define RETSIGTYPE void -_ACEOF - - else - echo "$as_me:$LINENO: result: int" >&5 -echo "${ECHO_T}int" >&6 - -cat >>confdefs.h <<\_ACEOF -#define RETSIGTYPE int -_ACEOF - - fi -echo "$as_me:$LINENO: checking struct exception" >&5 -echo $ECHO_N "checking struct exception... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include - - -int -main () -{ - - -struct exception e; - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_STRUCT_EXCEPTION 1 -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -# checks for libraries -echo "$as_me:$LINENO: checking for main in -lc" >&5 -echo $ECHO_N "checking for main in -lc... $ECHO_C" >&6 -if test "${ac_cv_lib_c_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_c_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_c_main=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_c_main" >&5 -echo "${ECHO_T}$ac_cv_lib_c_main" >&6 -if test $ac_cv_lib_c_main = yes; then - LIBC=-lc -fi - - -echo "$as_me:$LINENO: checking for sin in -lm" >&5 -echo $ECHO_N "checking for sin in -lm... $ECHO_C" >&6 -if test "${ac_cv_lib_m_sin+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char sin (); -int -main () -{ -sin (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_m_sin=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_m_sin=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_m_sin" >&5 -echo "${ECHO_T}$ac_cv_lib_m_sin" >&6 -if test $ac_cv_lib_m_sin = yes; then - LIBM=-lm -fi - - - -# checks for functions - - -for ac_header in stdlib.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_func in getpagesize -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -echo "$as_me:$LINENO: checking for working mmap" >&5 -echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 -if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_mmap_fixed_mapped=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -/* malloc might have been renamed as rpl_malloc. */ -#undef malloc - -/* Thanks to Mike Haertel and Jim Avera for this test. - Here is a matrix of mmap possibilities: - mmap private not fixed - mmap private fixed at somewhere currently unmapped - mmap private fixed at somewhere already mapped - mmap shared not fixed - mmap shared fixed at somewhere currently unmapped - mmap shared fixed at somewhere already mapped - For private mappings, we should verify that changes cannot be read() - back from the file, nor mmap's back from the file at a different - address. (There have been systems where private was not correctly - implemented like the infamous i386 svr4.0, and systems where the - VM page cache was not coherent with the file system buffer cache - like early versions of FreeBSD and possibly contemporary NetBSD.) - For shared mappings, we should conversely verify that changes get - propagated back to all the places they're supposed to be. - - Grep wants private fixed already mapped. - The main things grep needs to know about mmap are: - * does it exist and is it safe to write into the mmap'd area - * how to use it (BSD variants) */ - -#include -#include - -#if !STDC_HEADERS && !HAVE_STDLIB_H -char *malloc (); -#endif - -/* This mess was copied from the GNU getpagesize.h. */ -#if !HAVE_GETPAGESIZE -/* Assume that all systems that can run configure have sys/param.h. */ -# if !HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# if HAVE_SYS_PARAM_H -# include -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -int -main () -{ - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize (); - - /* First, make a file with some known garbage in it. */ - data = (char *) malloc (pagesize); - if (!data) - exit (1); - for (i = 0; i < pagesize; ++i) - *(data + i) = rand (); - umask (0); - fd = creat ("conftest.mmap", 0600); - if (fd < 0) - exit (1); - if (write (fd, data, pagesize) != pagesize) - exit (1); - close (fd); - - /* Next, try to mmap the file at a fixed address which already has - something else allocated at it. If we can, also make sure that - we see the same garbage. */ - fd = open ("conftest.mmap", O_RDWR); - if (fd < 0) - exit (1); - data2 = (char *) malloc (2 * pagesize); - if (!data2) - exit (1); - data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); - if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - exit (1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - exit (1); - - /* Finally, make sure that changes to the mapped area do not - percolate back to the file as seen by read(). (This is a bug on - some variants of i386 svr4.0.) */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = (char *) malloc (pagesize); - if (!data3) - exit (1); - if (read (fd, data3, pagesize) != pagesize) - exit (1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - exit (1); - close (fd); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_mmap_fixed_mapped=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_mmap_fixed_mapped=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 -if test $ac_cv_func_mmap_fixed_mapped = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MMAP 1 -_ACEOF - -fi -rm -f conftest.mmap - -saved_libs="$LIBS" -LIBS="$LIBS $LIBC $LIBM" - - - - - - - - -for ac_func in fmod getcwd putenv snprintf strcasecmp \ - strerror strncasecmp strtol -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - case $LIBOBJS in - "$ac_func.$ac_objext" | \ - *" $ac_func.$ac_objext" | \ - "$ac_func.$ac_objext "* | \ - *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; -esac - -fi -done - - -# vsnprintf is in the same source file as snprintf - -for ac_func in vsnprintf -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - case $LIBOBJS in - "snprintf.$ac_objext" | \ - *" snprintf.$ac_objext" | \ - "snprintf.$ac_objext "* | \ - *" snprintf.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS snprintf.$ac_objext" ;; -esac - -fi -done - -LIBS="$saved_libs" - - - - - - -for ac_func in gettimeofday isatty kill rename setlocale strsep -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -echo "$as_me:$LINENO: checking for mkstemp" >&5 -echo $ECHO_N "checking for mkstemp... $ECHO_C" >&6 - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#include -int (*f) (char *); - - -int -main () -{ - - -f = mkstemp; - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MKSTEMP 1 -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - case $LIBOBJS in - "mkstemp.$ac_objext" | \ - *" mkstemp.$ac_objext" | \ - "mkstemp.$ac_objext "* | \ - *" mkstemp.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS mkstemp.$ac_objext" ;; -esac - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5 -echo $ECHO_N "checking whether sys_siglist is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_sys_siglist+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -#ifndef sys_siglist - char *p = (char *) sys_siglist; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_sys_siglist=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_have_decl_sys_siglist=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5 -echo "${ECHO_T}$ac_cv_have_decl_sys_siglist" >&6 -if test $ac_cv_have_decl_sys_siglist = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SYS_SIGLIST 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SYS_SIGLIST 0 -_ACEOF - - -fi - - - -# checks for compiler characteristics -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - echo "$as_me:$LINENO: checking whether ANSI array delete syntax is supported" >&5 -echo $ECHO_N "checking whether ANSI array delete syntax is supported... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - -char *p = new char[5]; -delete [] p; - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - -cat >>confdefs.h <<\_ACEOF -#define ARRAY_DELETE_NEEDS_SIZE 1 -_ACEOF - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - echo "$as_me:$LINENO: checking traditional preprocessor" >&5 -echo $ECHO_N "checking traditional preprocessor... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#define name2(a, b) a/**/b - - -int -main () -{ - - -int name2(foo, bar); - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define TRADITIONAL_CPP 1 -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# checks for operating system services -echo "$as_me:$LINENO: checking w_coredump" >&5 -echo $ECHO_N "checking w_coredump... $ECHO_C" >&6 - if test "$cross_compiling" = yes; then - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#include - - -int -main () -{ - - -main() -{ -#ifdef WCOREFLAG - exit(1); -#else - int i = 0; - ((union wait *)&i)->w_coredump = 1; - exit(i != 0200); -#endif -} - - - ; - return 0; -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define WCOREFLAG 0200 -_ACEOF - -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -# other random stuff -echo "$as_me:$LINENO: checking default value for grops -b option" >&5 -echo $ECHO_N "checking default value for grops -b option... $ECHO_C" >&6 - test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=0 - echo "$as_me:$LINENO: result: $BROKEN_SPOOLER_FLAGS" >&5 -echo "${ECHO_T}$BROKEN_SPOOLER_FLAGS" >&6 - -echo "$as_me:$LINENO: checking default paper size" >&5 -echo $ECHO_N "checking default paper size... $ECHO_C" >&6 - groff_prefix=$prefix - test "x$prefix" = "xNONE" && groff_prefix=$ac_default_prefix - if test -z "$PAGE"; then - descfile= - if test -r $groff_prefix/share/groff/font/devps/DESC; then - descfile=$groff_prefix/share/groff/font/devps/DESC - elif test -r $groff_prefix/lib/groff/font/devps/DESC; then - descfile=$groff_prefix/lib/groff/font/devps/DESC - else - for f in $groff_prefix/share/groff/*/font/devps/DESC; do - if test -r $f; then - descfile=$f - break - fi - done - fi - - if test -n "$descfile"; then - if grep '^paperlength[ ]\+841890' $descfile >/dev/null 2>&1; then - PAGE=A4 - elif grep '^papersize[ ]\+[aA]4' $descfile >/dev/null 2>&1; then - PAGE=A4 - fi - fi - fi - - if test -z "$PAGE"; then - dom=`awk '($1 == "dom" || $1 == "search") { print $2; exit}' \ - /etc/resolv.conf 2>/dev/null` - if test -z "$dom"; then - dom=`(domainname) 2>/dev/null | tr -d '+'` - if test -z "$dom" \ - || test "$dom" = '(none)'; then - dom=`(hostname) 2>/dev/null | grep '\.'` - fi - fi - # If the top-level domain is two letters and it's not `us' or `ca' - # then they probably use A4 paper. - case "$dom" in - *.[Uu][Ss]|*.[Cc][Aa]) - ;; - *.[A-Za-z][A-Za-z]) - PAGE=A4 ;; - esac - fi - - test -n "$PAGE" || PAGE=letter - if test "x$PAGE" = "xA4"; then - -cat >>confdefs.h <<\_ACEOF -#define PAGEA4 1 -_ACEOF - - fi - echo "$as_me:$LINENO: result: $PAGE" >&5 -echo "${ECHO_T}$PAGE" >&6 - -echo "$as_me:$LINENO: checking for existing troff installation" >&5 -echo $ECHO_N "checking for existing troff installation... $ECHO_C" >&6 - if test "x`(echo .tm '|n(.g' | tr '|' '\\\\' | troff -z -i 2>&1) 2>/dev/null`" = x0; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - g=g - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - g= - fi - -echo "$as_me:$LINENO: checking for prefix of system macro packages" >&5 -echo $ECHO_N "checking for prefix of system macro packages... $ECHO_C" >&6 - sys_tmac_prefix= - sys_tmac_file_prefix= - for d in /usr/share/lib/tmac /usr/lib/tmac; do - for t in "" tmac.; do - for m in an s m; do - f=$d/$t$m - if test -z "$sys_tmac_prefix" \ - && test -f $f \ - && grep '^\.if' $f >/dev/null 2>&1; then - sys_tmac_prefix=$d/$t - sys_tmac_file_prefix=$t - fi - done - done - done - echo "$as_me:$LINENO: result: $sys_tmac_prefix" >&5 -echo "${ECHO_T}$sys_tmac_prefix" >&6 - - - echo "$as_me:$LINENO: checking which system macro packages should be made available" >&5 -echo $ECHO_N "checking which system macro packages should be made available... $ECHO_C" >&6 - tmac_wrap= - if test "x$sys_tmac_file_prefix" = "xtmac."; then - for f in $sys_tmac_prefix*; do - suff=`echo $f | sed -e "s;$sys_tmac_prefix;;"` - case "$suff" in - e) - ;; - *) - grep "Copyright.*Free Software Foundation" $f >/dev/null \ - || tmac_wrap="$tmac_wrap $suff" ;; - esac - done - elif test -n "$sys_tmac_prefix"; then - files=`echo $sys_tmac_prefix*` - grep "\\.so" $files >conftest.sol - for f in $files; do - case "$f" in - ${sys_tmac_prefix}e) - ;; - *.me) - ;; - */ms.*) - ;; - *) - b=`basename $f` - if grep "\\.so.*/$b\$" conftest.sol >/dev/null \ - || grep -l "Copyright.*Free Software Foundation" $f >/dev/null; then - : - else - suff=`echo $f | sed -e "s;$sys_tmac_prefix;;"` - case "$suff" in - tmac.*) - ;; - *) - tmac_wrap="$tmac_wrap $suff" ;; - esac - fi - esac - done - rm -f conftest.sol - fi - echo "$as_me:$LINENO: result: $tmac_wrap" >&5 -echo "${ECHO_T}$tmac_wrap" >&6 - -echo "$as_me:$LINENO: checking separator character to use in groff search paths" >&5 -echo $ECHO_N "checking separator character to use in groff search paths... $ECHO_C" >&6 - cp ${srcdir}/src/include/nonposix.h conftest.h - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include -#include "conftest.h" - - -int -main () -{ - - -#if PATH_SEP_CHAR == ';' -make an error "Path separator is ';'" -#endif - - - ; - return 0; -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - GROFF_PATH_SEPARATOR=":" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -GROFF_PATH_SEPARATOR=";" -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - echo "$as_me:$LINENO: result: $GROFF_PATH_SEPARATOR" >&5 -echo "${ECHO_T}$GROFF_PATH_SEPARATOR" >&6 - - -# Check whether --with-alt-gs or --without-alt-gs was given. -if test "${with_alt_gs+set}" = set; then - withval="$with_alt_gs" - ALT_GHOSTSCRIPT_PROGS="$withval" -else - ALT_GHOSTSCRIPT_PROGS="gs gswin32c gsos2" -fi; - - - -# Check whether --with-gs or --without-gs was given. -if test "${with_gs+set}" = set; then - withval="$with_gs" - GHOSTSCRIPT=$withval -else - if test -n "$ac_tool_prefix"; then - for ac_prog in $ALT_GHOSTSCRIPT_PROGS - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_GHOSTSCRIPT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$GHOSTSCRIPT"; then - ac_cv_prog_GHOSTSCRIPT="$GHOSTSCRIPT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_GHOSTSCRIPT="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -GHOSTSCRIPT=$ac_cv_prog_GHOSTSCRIPT -if test -n "$GHOSTSCRIPT"; then - echo "$as_me:$LINENO: result: $GHOSTSCRIPT" >&5 -echo "${ECHO_T}$GHOSTSCRIPT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$GHOSTSCRIPT" && break - done -fi -if test -z "$GHOSTSCRIPT"; then - ac_ct_GHOSTSCRIPT=$GHOSTSCRIPT - for ac_prog in $ALT_GHOSTSCRIPT_PROGS -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_GHOSTSCRIPT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_GHOSTSCRIPT"; then - ac_cv_prog_ac_ct_GHOSTSCRIPT="$ac_ct_GHOSTSCRIPT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_GHOSTSCRIPT="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_GHOSTSCRIPT=$ac_cv_prog_ac_ct_GHOSTSCRIPT -if test -n "$ac_ct_GHOSTSCRIPT"; then - echo "$as_me:$LINENO: result: $ac_ct_GHOSTSCRIPT" >&5 -echo "${ECHO_T}$ac_ct_GHOSTSCRIPT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_GHOSTSCRIPT" && break -done - - if test "x$ac_ct_GHOSTSCRIPT" = x; then - GHOSTSCRIPT="missing" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - GHOSTSCRIPT=$ac_ct_GHOSTSCRIPT - fi -fi - -fi; - test "$GHOSTSCRIPT" = "no" && GHOSTSCRIPT=missing - - make_html=html - make_install_html=install_html - - missing= - # Extract the first word of "pnmcut", so it can be a program name with args. -set dummy pnmcut; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_pnmcut+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$pnmcut"; then - ac_cv_prog_pnmcut="$pnmcut" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_pnmcut="found" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_pnmcut" && ac_cv_prog_pnmcut="missing" -fi -fi -pnmcut=$ac_cv_prog_pnmcut -if test -n "$pnmcut"; then - echo "$as_me:$LINENO: result: $pnmcut" >&5 -echo "${ECHO_T}$pnmcut" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test $pnmcut = missing; then - missing="$missing \`pnmcut'" - fi;# Extract the first word of "pnmcrop", so it can be a program name with args. -set dummy pnmcrop; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_pnmcrop+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$pnmcrop"; then - ac_cv_prog_pnmcrop="$pnmcrop" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_pnmcrop="found" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_pnmcrop" && ac_cv_prog_pnmcrop="missing" -fi -fi -pnmcrop=$ac_cv_prog_pnmcrop -if test -n "$pnmcrop"; then - echo "$as_me:$LINENO: result: $pnmcrop" >&5 -echo "${ECHO_T}$pnmcrop" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test $pnmcrop = missing; then - missing="$missing \`pnmcrop'" - fi;# Extract the first word of "pnmtopng", so it can be a program name with args. -set dummy pnmtopng; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_pnmtopng+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$pnmtopng"; then - ac_cv_prog_pnmtopng="$pnmtopng" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_pnmtopng="found" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_pnmtopng" && ac_cv_prog_pnmtopng="missing" -fi -fi -pnmtopng=$ac_cv_prog_pnmtopng -if test -n "$pnmtopng"; then - echo "$as_me:$LINENO: result: $pnmtopng" >&5 -echo "${ECHO_T}$pnmtopng" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test $pnmtopng = missing; then - missing="$missing \`pnmtopng'" - fi;# Extract the first word of "psselect", so it can be a program name with args. -set dummy psselect; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_psselect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$psselect"; then - ac_cv_prog_psselect="$psselect" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_psselect="found" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_psselect" && ac_cv_prog_psselect="missing" -fi -fi -psselect=$ac_cv_prog_psselect -if test -n "$psselect"; then - echo "$as_me:$LINENO: result: $psselect" >&5 -echo "${ECHO_T}$psselect" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test $psselect = missing; then - missing="$missing \`psselect'" - fi;# Extract the first word of "pnmtops", so it can be a program name with args. -set dummy pnmtops; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_pnmtops+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$pnmtops"; then - ac_cv_prog_pnmtops="$pnmtops" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_pnmtops="found" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_pnmtops" && ac_cv_prog_pnmtops="missing" -fi -fi -pnmtops=$ac_cv_prog_pnmtops -if test -n "$pnmtops"; then - echo "$as_me:$LINENO: result: $pnmtops" >&5 -echo "${ECHO_T}$pnmtops" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test $pnmtops = missing; then - missing="$missing \`pnmtops'" - fi; - - test "$GHOSTSCRIPT" = "missing" && missing="$missing \`gs'" - - if test -n "$missing"; then - plural=`set $missing; test $# -gt 1 && echo s` - missing=`set $missing - missing="" - while test $# -gt 0 - do - case $# in - 1) missing="$missing$1" ;; - 2) missing="$missing$1 and " ;; - *) missing="$missing$1, " ;; - esac - shift - done - echo $missing` - - make_html= - make_install_html= - - { echo "$as_me:$LINENO: WARNING: missing program$plural: - - The program$plural - $missing - cannot be found in the PATH. - Consequently, groff's HTML backend (grohtml) will not work properly; - therefore, it will neither be possible to prepare, nor to install, - documentation in HTML format. - " >&5 -echo "$as_me: WARNING: missing program$plural: - - The program$plural - $missing - cannot be found in the PATH. - Consequently, groff's HTML backend (grohtml) will not work properly; - therefore, it will neither be possible to prepare, nor to install, - documentation in HTML format. - " >&2;} - fi - - - - -# Check whether --with-alt-awk or --without-alt-awk was given. -if test "${with_alt_awk+set}" = set; then - withval="$with_alt_awk" - ALT_AWK_PROGS="$withval" -else - ALT_AWK_PROGS="gawk mawk nawk awk" -fi; - - - -# Check whether --with-awk or --without-awk was given. -if test "${with_awk+set}" = set; then - withval="$with_awk" - AWK=$withval -else - if test -n "$ac_tool_prefix"; then - for ac_prog in $ALT_AWK_PROGS - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AWK" && break - done -fi -if test -z "$AWK"; then - ac_ct_AWK=$AWK - for ac_prog in $ALT_AWK_PROGS -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_AWK"; then - ac_cv_prog_ac_ct_AWK="$ac_ct_AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_AWK=$ac_cv_prog_ac_ct_AWK -if test -n "$ac_ct_AWK"; then - echo "$as_me:$LINENO: result: $ac_ct_AWK" >&5 -echo "${ECHO_T}$ac_ct_AWK" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_AWK" && break -done - - if test "x$ac_ct_AWK" = x; then - AWK="missing" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - AWK=$ac_ct_AWK - fi -fi - -fi; - test "$AWK" = "no" && AWK=missing - - - - make_pdfdoc=pdfdoc - make_install_pdfdoc=install_pdfdoc - - missing="" - test "$AWK" = missing && missing="\`awk'" - test "$GHOSTSCRIPT" = missing && missing="$missing \`gs'" - if test -n "$missing"; then - plural=`set $missing; test $# -eq 2 && echo s` - test x$plural = xs \ - && missing=`set $missing; echo "$1 and $2"` \ - || missing=`echo $missing` - - make_pdfdoc= - make_install_pdfdoc= - - { echo "$as_me:$LINENO: WARNING: missing program$plural: - - The program$plural $missing cannot be found in the PATH. - Consequently, groff's PDF formatter (pdfroff) will not work properly; - therefore, it will neither be possible to prepare, nor to install, - documentation in PDF format. - " >&5 -echo "$as_me: WARNING: missing program$plural: - - The program$plural $missing cannot be found in the PATH. - Consequently, groff's PDF formatter (pdfroff) will not work properly; - therefore, it will neither be possible to prepare, nor to install, - documentation in PDF format. - " >&2;} - fi - - - -echo "$as_me:$LINENO: checking whether pnmtops can handle the -nosetpage option" >&5 -echo $ECHO_N "checking whether pnmtops can handle the -nosetpage option... $ECHO_C" >&6 - if echo P2 2 2 255 0 1 2 0 | pnmtops -nosetpage > /dev/null 2>&1 ; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - pnmtops_nosetpage="pnmtops -nosetpage" - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - pnmtops_nosetpage="pnmtops" - fi - - - ac_config_files="$ac_config_files stamp-h" - - ac_config_files="$ac_config_files Makefile doc/Makefile src/utils/xtotroff/Makefile" - - ac_config_files="$ac_config_files contrib/gdiffmk/tests/runtests" - - ac_config_files="$ac_config_files test-groff" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -elif test -n "${BASH_VERSION+set}${KSH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Find who we are. Look in the path if we contain no path at all -# relative or not. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute file name" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute file name" >&2;} - { (exit 1); exit 1; }; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s,[$]LINENO.*,&-, - t lineno - b - : lineno - N - : loop - s,[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\),\2\1\2, - t loop - s,-\n.*,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by $as_me, which was -generated by GNU Autoconf 2.59b. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Report bugs to ." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.59b, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2004 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: - ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; - esac - - case $ac_option in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF - - - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "stamp-h" ) CONFIG_FILES="$CONFIG_FILES stamp-h" ;; - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "src/utils/xtotroff/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/utils/xtotroff/Makefile" ;; - "contrib/gdiffmk/tests/runtests" ) CONFIG_FILES="$CONFIG_FILES contrib/gdiffmk/tests/runtests" ;; - "test-groff" ) CONFIG_FILES="$CONFIG_FILES test-groff" ;; - "src/include/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS src/include/config.h:src/include/config.hin" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -f -r $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@CXX@,$CXX,;t t -s,@CXXFLAGS@,$CXXFLAGS,;t t -s,@ac_ct_CXX@,$ac_ct_CXX,;t t -s,@TTYDEVDIRS@,$TTYDEVDIRS,;t t -s,@OTHERDEVDIRS@,$OTHERDEVDIRS,;t t -s,@CPP@,$CPP,;t t -s,@X_CFLAGS@,$X_CFLAGS,;t t -s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t -s,@X_LIBS@,$X_LIBS,;t t -s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t -s,@XDEVDIRS@,$XDEVDIRS,;t t -s,@XPROGDIRS@,$XPROGDIRS,;t t -s,@XLIBDIRS@,$XLIBDIRS,;t t -s,@appresdir@,$appresdir,;t t -s,@LPR@,$LPR,;t t -s,@LP@,$LP,;t t -s,@LPQ@,$LPQ,;t t -s,@PSPRINT@,$PSPRINT,;t t -s,@DVIPRINT@,$DVIPRINT,;t t -s,@PERLPATH@,$PERLPATH,;t t -s,@YACC@,$YACC,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@INSTALL_INFO@,$INSTALL_INFO,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@LN_S@,$LN_S,;t t -s,@SH_SCRIPT_SED_CMD@,$SH_SCRIPT_SED_CMD,;t t -s,@GREP@,$GREP,;t t -s,@EGREP@,$EGREP,;t t -s,@LIBC@,$LIBC,;t t -s,@LIBM@,$LIBM,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@BROKEN_SPOOLER_FLAGS@,$BROKEN_SPOOLER_FLAGS,;t t -s,@PAGE@,$PAGE,;t t -s,@g@,$g,;t t -s,@sys_tmac_prefix@,$sys_tmac_prefix,;t t -s,@tmac_wrap@,$tmac_wrap,;t t -s,@GROFF_PATH_SEPARATOR@,$GROFF_PATH_SEPARATOR,;t t -s,@ALT_GHOSTSCRIPT_PROGS@,$ALT_GHOSTSCRIPT_PROGS,;t t -s,@GHOSTSCRIPT@,$GHOSTSCRIPT,;t t -s,@ac_ct_GHOSTSCRIPT@,$ac_ct_GHOSTSCRIPT,;t t -s,@pnmcut@,$pnmcut,;t t -s,@pnmcrop@,$pnmcrop,;t t -s,@pnmtopng@,$pnmtopng,;t t -s,@psselect@,$psselect,;t t -s,@pnmtops@,$pnmtops,;t t -s,@make_html@,$make_html,;t t -s,@make_install_html@,$make_install_html,;t t -s,@ALT_AWK_PROGS@,$ALT_AWK_PROGS,;t t -s,@AWK@,$AWK,;t t -s,@ac_ct_AWK@,$ac_ct_AWK,;t t -s,@make_pdfdoc@,$make_pdfdoc,;t t -s,@make_install_pdfdoc@,$make_install_pdfdoc,;t t -s,@pnmtops_nosetpage@,$pnmtops_nosetpage,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - test -d "$ac_dir" || mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute names, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - - # Run the commands associated with the file. - case $ac_file in - stamp-h ) echo timestamp > stamp-h ;; - contrib/gdiffmk/tests/runtests ) chmod +x contrib/gdiffmk/tests/runtests ;; - test-groff ) chmod +x test-groff ;; - esac -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Quote $f, to prevent DOS file names from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - test -d "$ac_dir" || mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - - -if test -z "$groff_no_x"; then - if test "x$with_appresdir" = "x"; then - { echo "$as_me:$LINENO: - - The application resource file for gxditview will be installed as - - $appresdir/GXditview - - (an existing file will be saved as \`GXditview.old'). - To install it into a different directory, say, \`/etc/gxditview', - add \`--with-appresdir=/etc/gxditview' to the configure script - command line options and rerun it. The environment variable - \`APPLRESDIR' must then be set to \`/etc/' (note the trailing slash), - omitting the \`gxditview' part which is automatically appended by - the X11 searching routines for resource files. More details can be - found in the X(7) manual page. - " >&5 -echo "$as_me: - - The application resource file for gxditview will be installed as - - $appresdir/GXditview - - (an existing file will be saved as \`GXditview.old'). - To install it into a different directory, say, \`/etc/gxditview', - add \`--with-appresdir=/etc/gxditview' to the configure script - command line options and rerun it. The environment variable - \`APPLRESDIR' must then be set to \`/etc/' (note the trailing slash), - omitting the \`gxditview' part which is automatically appended by - the X11 searching routines for resource files. More details can be - found in the X(7) manual page. - " >&6;} - fi - fi diff --git a/contrib/groff/configure.ac b/contrib/groff/configure.ac deleted file mode 100644 index 2fe8967f2386..000000000000 --- a/contrib/groff/configure.ac +++ /dev/null @@ -1,126 +0,0 @@ -# Autoconf configuration file for groff. -# Copyright (C) 1989-1995, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is part of groff. -# -# groff is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free -# Software Foundation; either version 2, or (at your option) any later -# version. -# -# groff is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License along -# with groff; see the file COPYING. If not, write to the Free Software -# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. -# -# Process this file with autoconf to produce a configure script. - -AC_INIT -AC_PREREQ(2.59) - -AC_CONFIG_HEADERS([src/include/config.h:src/include/config.hin]) -AC_CONFIG_SRCDIR([src/roff/groff/groff.cpp]) - -# checks for programs -AC_PROG_CC -AC_PROG_CXX -GROFF_CXX_CHECK -GROFF_EBCDIC -GROFF_OS390 -GROFF_X11 -GROFF_APPRESDIR_OPTION -GROFF_APPRESDIR_DEFAULT -GROFF_PRINT -AC_PATH_PROG([PERLPATH], [perl], [/usr/bin/perl]) -GROFF_PROG_YACC -AC_PROG_RANLIB -GROFF_INSTALL_SH -GROFF_INSTALL_INFO -AC_PROG_INSTALL -AC_PROG_LN_S - -# use a dummy substitution if no csh hack is necessary to avoid errors -# with non-GNU sed programs -GROFF_CSH_HACK([SH_SCRIPT_SED_CMD='1s/.*/:/'], [SH_SCRIPT_SED_CMD='1s/a/a/']) -AC_SUBST([SH_SCRIPT_SED_CMD]) - -# checks for headers -AC_CHECK_HEADERS([stdlib.h unistd.h dirent.h limits.h sys/dir.h \ - string.h strings.h math.h sys/time.h direct.h process.h]) -GROFF_ISC_SYSV3 -GROFF_POSIX - -# checks for header stuff -GROFF_SRAND -GROFF_NEED_DECLARATION([gettimeofday]) -GROFF_NEED_DECLARATION([hypot]) -GROFF_NEED_DECLARATION([popen]) -GROFF_NEED_DECLARATION([pclose]) -GROFF_NEED_DECLARATION([putenv]) -GROFF_NEED_DECLARATION([rand]) -GROFF_NEED_DECLARATION([snprintf]) -GROFF_NEED_DECLARATION([srand]) -GROFF_NEED_DECLARATION([strcasecmp]) -GROFF_NEED_DECLARATION([strncasecmp]) -GROFF_NEED_DECLARATION([vfprintf]) -GROFF_NEED_DECLARATION([vsnprintf]) -GROFF_SYS_NERR -GROFF_SYS_ERRLIST -GROFF_OSFCN_H -GROFF_LIMITS_H -GROFF_INTTYPES_H - -# checks for typedefs -GROFF_UNSIGNED_LONG_LONG -GROFF_UINTMAX_T -GROFF_TIME_T -GROFF_TYPE_SIGNAL -GROFF_STRUCT_EXCEPTION - -# checks for libraries -GROFF_LIBC -GROFF_LIBM - -# checks for functions -AC_FUNC_MMAP -saved_libs="$LIBS" -LIBS="$LIBS $LIBC $LIBM" -AC_REPLACE_FUNCS([fmod getcwd putenv snprintf strcasecmp \ - strerror strncasecmp strtol]) -# vsnprintf is in the same source file as snprintf -AC_CHECK_FUNCS([vsnprintf], [], [AC_LIBOBJ([snprintf])]) -LIBS="$saved_libs" -AC_CHECK_FUNCS([gettimeofday isatty kill rename setlocale strsep]) -GROFF_MKSTEMP -AC_CHECK_DECLS([sys_siglist]) - -# checks for compiler characteristics -GROFF_ARRAY_DELETE -GROFF_TRADITIONAL_CPP - -# checks for operating system services -GROFF_WCOREFLAG - -# other random stuff -GROFF_BROKEN_SPOOLER_FLAGS -GROFF_PAGE -GROFF_G -GROFF_TMAC -GROFF_TARGET_PATH_SEPARATOR -GROFF_HTML_PROGRAMS -GROFF_PDFDOC_PROGRAMS -GROFF_PNMTOPS_NOSETPAGE - -AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h]) -AC_CONFIG_FILES([Makefile doc/Makefile src/utils/xtotroff/Makefile]) -AC_CONFIG_FILES([contrib/gdiffmk/tests/runtests], - [chmod +x contrib/gdiffmk/tests/runtests]) -AC_CONFIG_FILES([test-groff], [chmod +x test-groff]) -AC_OUTPUT - -GROFF_APPRESDIR_CHECK diff --git a/contrib/groff/contrib/eqn2graph/Makefile.sub b/contrib/groff/contrib/eqn2graph/Makefile.sub deleted file mode 100644 index 6ccdd982a4c4..000000000000 --- a/contrib/groff/contrib/eqn2graph/Makefile.sub +++ /dev/null @@ -1,19 +0,0 @@ -MAN1=eqn2graph.n -CLEANADD=eqn2graph - -all: eqn2graph - -eqn2graph: eqn2graph.sh - rm -f $@; \ - sed -e "s|@g@|$(g)|g" \ - -e "s|@VERSION@|$(version)$(revision)|" \ - -e $(SH_SCRIPT_SED_CMD) $(srcdir)/eqn2graph.sh >$@; \ - chmod +x $@ - -install_data: eqn2graph - -test -d $(bindir) || $(mkinstalldirs) $(bindir) - -rm -f $(bindir)/eqn2graph - $(INSTALL_SCRIPT) eqn2graph $(bindir)/eqn2graph - -uninstall_sub: - -rm -f $(bindir)/eqn2graph diff --git a/contrib/groff/contrib/eqn2graph/eqn2graph.man b/contrib/groff/contrib/eqn2graph/eqn2graph.man deleted file mode 100644 index 3f34cc5e2a22..000000000000 --- a/contrib/groff/contrib/eqn2graph/eqn2graph.man +++ /dev/null @@ -1,115 +0,0 @@ -.\" $Id: eqn2graph.man,v 1.4 2003/10/28 07:46:23 wlemb Exp $ -.\" This documentation is released to the public domain. -. -. -.\" Like TP, but if specified indent is more than half -.\" the current line-length - indent, use the default indent. -.de Tp -.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP -.el .TP "\\$1" -.. -. -. -.TH EQN2GRAPH @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" -.IX eqn2graph -.SH NAME -eqn2graph \- convert an EQN equation into a cropped image -. -. -.SH SYNOPSIS -.B eqn2graph -[ -.B \-unsafe -] -[ -.BI \-format\ fmt -] -. -. -.SH DESCRIPTION -Reads an EQN equation (one line) as input; produces an image -file (by default in Portable Network Graphics format) suitable for the -Web as output. -.P -Your input EQN code should \fInot\fR have the \&.EQ/.EN preamble that -that normally precedes it within -.BR groff (@MAN1EXT@) -macros; nor do you need to have dollar-sign or other delimiters -around the equation. -.P -The output image will be a black-on-white graphic clipped to the -smallest possible bounding box that contains all the black pixels. -By specifying command-line options to be passed to -.BR convert (1) -you can give it a border, set the background transparent, set the -image's pixel density, or perform other useful transformations. -.P -This program uses -.BR @g@eqn (@MAN1EXT@), -.BR groff (@MAN1EXT@), -and the ImageMagick -.BR convert (1) -program. -These programs must be installed on your system and accessible on your -$PATH for \fBeqn2graph\fR to work. -. -. -.SH OPTIONS -.TP -.B \-unsafe -Run -.BR groff (@MAN1EXT@) -in the `unsafe' mode enabling the PIC macro -.B sh -to execute arbitrary commands. -The default is to forbid this. -.TP -.BI \-format\ fmt -Specify an output format; the default is PNG (Portable Network Graphics). -Any format that -.BR convert (1) -can emit is supported. -.PP -Command-line switches and arguments not listed above are passed to -.BR convert (1). -. -. -.SH FILES -.Tp \w'\fB@MACRODIR@/eqnrc'u+2n -.B @MACRODIR@/eqnrc -The -.BR @g@eqn (@MAN1EXT@) -initialization file. -. -. -.SH ENVIRONMENT -.TP -.B GROFF_TMPDIR -The directory in which temporary files will be created. -If this is not set -.B eqn2graph -searches the environment variables -.BR \%TMPDIR , -.BR TMP , -and -.B TEMP -(in that order). -Otherwise, temporary files will be created in -.BR /tmp . -. -. -.SH "SEE ALSO" -.BR pic2graph (@MAN1EXT@), -.BR grap2graph (@MAN1EXT@), -.BR @g@eqn (@MAN1EXT@), -.BR groff (@MAN1EXT@), -.BR gs (1), -.BR convert (1). -. -. -.SH AUTHOR -Eric S. Raymond . -. -.\" Local Variables: -.\" mode: nroff -.\" End: diff --git a/contrib/groff/contrib/eqn2graph/eqn2graph.sh b/contrib/groff/contrib/eqn2graph/eqn2graph.sh deleted file mode 100644 index 98713a854ad5..000000000000 --- a/contrib/groff/contrib/eqn2graph/eqn2graph.sh +++ /dev/null @@ -1,91 +0,0 @@ -#! /bin/sh -# -# eqn2graph -- compile EQN equation descriptions to bitmap images -# -# by Eric S. Raymond , July 2002 -# -# In Unixland, the magic is in knowing what to string together... -# -# Take an eqn equation on stdin, emit cropped bitmap on stdout. -# The pic markup should *not* be wrapped in .EQ/.EN, this script will do that. -# A -U option on the command line enables gpic/groff "unsafe" mode. -# A -format FOO option changes the image output format to any format -# supported by convert(1). All other options are passed to convert(1). -# The default format is PNG. -# -# This is separate from pic2graph because pic processing has some weird -# clipping effect on the output, mangling equations that are very wide -# or deep. Besides, this tool can supply its own delimiters. -# - -# Requires the groff suite and the ImageMagick tools. Both are open source. -# This code is released to the public domain. -# -# Here are the assumptions behind the option processing: -# -# 1. None of the options of eqn(1) are relevant. -# -# 2. Only the -U option of groff(1) is relevant. -# -# 3. Many options of convert(1) are potentially relevant, (especially -# -density, -interlace, -transparency, -border, and -comment). -# -# Thus, we pass -U to groff(1), and everything else to convert(1). -# -# $Id: eqn2graph.sh,v 1.5 2005/05/18 07:03:06 wl Exp $ -# -groff_opts="" -convert_opts="" -format="png" - -while [ "$1" ] -do - case $1 in - -unsafe) - groff_opts="-U";; - -format) - format=$2 - shift;; - -v | --version) - echo "GNU eqn2graph (groff) version @VERSION@" - exit 0;; - --help) - echo "usage: eqn2graph [ option ...] < in > out" - exit 0;; - *) - convert_opts="$convert_opts $1";; - esac - shift -done - -# create temporary directory -tmp= -for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do - test -z "$d" && continue - - tmp=`(umask 077 && mktemp -d -q "$d/eqn2graph-XXXXXX") 2> /dev/null` \ - && test -n "$tmp" && test -d "$tmp" \ - && break - - tmp=$d/eqn2graph$$-$RANDOM - (umask 077 && mkdir $tmp) 2> /dev/null && break -done; -if test -z "$tmp"; then - echo "$0: cannot create temporary directory" >&2 - { (exit 1); exit 1; } -fi - -trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15 - -# Here goes: -# 1. Add .EQ/.EN. -# 2. Process through eqn(1) to emit troff markup. -# 3. Process through groff(1) to emit Postscript. -# 4. Use convert(1) to crop the Postscript and turn it into a bitmap. -read equation -(echo ".EQ"; echo 'delim $$'; echo ".EN"; echo '$'"$equation"'$') | \ - groff -e $groff_opts -Tps -P-pletter > $tmp/eqn2graph.ps \ - && convert -trim -crop 0x0 $convert_opts $tmp/eqn2graph.ps $tmp/eqn2graph.$format \ - && cat $tmp/eqn2graph.$format - -# End diff --git a/contrib/groff/contrib/gdiffmk/ChangeLog b/contrib/groff/contrib/gdiffmk/ChangeLog deleted file mode 100644 index f8e3f9632edb..000000000000 --- a/contrib/groff/contrib/gdiffmk/ChangeLog +++ /dev/null @@ -1,63 +0,0 @@ -2005-01-16 Mike Bianchi - - * gdiffmk.sh (Usage): Fix typos. - : Allow `-M ' also. - - * gdiffmk.man: Updated. - -2005-01-13 Mike Bianchi - - * gdiffmk.sh: Add the -D, -M, and -B options, which provide actions - akin to nrchbar. - Thanks to Larry Kollar (http://home.alltel.net/kollar/groff/). - - * gdiffmk.man: Updated. - - * tests/runtests.in: Added tests for gdiffmk's -D, -M, and -B - options. - - * tests/baseline8, tests/baseline9, tests/baseline10: New files. - -2004-12-16 Mike Bianchi - - * tests/runtests.in: Fix typo (s/$(srcdir)/${srcdir}/). - -2004-12-15 Werner LEMBERG - - The configure script now generates tests/runtests. - - * tests/tests.sh: Renamed to... - * tests/runtests.in: This. - Add proper $srcdir prefixes to make it run from build directory. - * README, Makefile.sub (CLEANADD), tests/test_baseline7: Updated. - -2004-12-14 Werner LEMBERG - - * gdiffmk.sh: Make sed pattern work with alternate result of GNU - diff's -D option, using `!' instead of `not' in #endif comments. - (Exit): Use prefix for each emitted message line. - -2004-12-14 Mike Bianchi - - * tests/*: New files for testing gdiffmk. - - * README, gdiffmk.man, gdiffmk.sh: Updated. - Minor fixes. - -2004-12-13 Mike Bianchi - - Add `-x' command line option to select a diff program. - - * gdiffmk.sh: Add code to handle `-x'. - Move test for working `diff' down. - Fix sed pattern -- `.mc *' needs to be followed by `.mc .'. - (Usage): Updated. - * gdiffmk.man: Updated. - -2004-12-12 Mike Bianchi - - * README: New file. - -2004-12-11 Mike Bianchi - - First import of gdiffmk files. diff --git a/contrib/groff/contrib/gdiffmk/Makefile.sub b/contrib/groff/contrib/gdiffmk/Makefile.sub deleted file mode 100644 index 5e0cd147a434..000000000000 --- a/contrib/groff/contrib/gdiffmk/Makefile.sub +++ /dev/null @@ -1,47 +0,0 @@ -# Makefile.sub for `gdiffmk' (integration into the groff source tree) - -# File position: /contrib/gdiffmk/Makefile.sub - -# Last update: 12 December 2004 - -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Mike Bianchi > - -# This file is part of the gdiffmk utility, which is part of groff. - -# groff is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# groff is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -# License for more details. - -# You should have received a copy of the GNU General Public License -# along with groff; see the files COPYING and LICENSE in the top -# directory of the groff source. If not, write to the Free Software -# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. - -######################################################################## - -MAN1=gdiffmk.n -CLEANADD=gdiffmk tests/runtests - -all: gdiffmk - -gdiffmk: gdiffmk.sh - rm -f $@; \ - sed -e "s|@BINDIR@|$(bindir)|g" \ - -e "s|@VERSION@|$(version)$(revision)|g" \ - -e $(SH_SCRIPT_SED_CMD) $(srcdir)/gdiffmk.sh >$@; \ - chmod +x $@ - -install_data: gdiffmk - -test -d $(bindir) || $(mkinstalldirs) $(bindir) - -rm -f $(bindir)/gdiffmk - $(INSTALL_SCRIPT) gdiffmk $(bindir)/gdiffmk - -uninstall_sub: - -rm -f $(bindir)/gdiffmk diff --git a/contrib/groff/contrib/gdiffmk/README b/contrib/groff/contrib/gdiffmk/README deleted file mode 100644 index 9428717ede8c..000000000000 --- a/contrib/groff/contrib/gdiffmk/README +++ /dev/null @@ -1,46 +0,0 @@ -gdiffmk is approximately a recreation of the original Bell Labs/AT&T diffmk -command for troff/nroff documents, with enhancements. - -It should not be confused with `diffmk' commands that operate on XML. - -The inspiration for this code was a Perl 2 version written in 1989 by Randal -L. Schwartz. See - landfield.com/software/comp.sources.misc/archive-name/volume06/diffmk.p.gz - -The command also attempts to reproduce some of the functionality of the old -`nrchbar' command. See - open-systems.ufl.edu/mirrors/ftp.isc.org/usenet/comp.sources.unix/volume10/nrchbar.Z - -Thanks to Werner Lemberg for help in making the package more portable and -fit into the GNU groff source structure. - -Gnu diff(1) with the -Dname option does all of the work and sed(1) -translates the output into something groff/troff/nroff can handle. - -Note the BUGS on the man page. - -The `tests' directory contains simple tests. `runtests run' runs them and -compares the output against baseline files. Calling `runtests' without -argument gives the usage. - ----------------------------------------------------------------------------- - -Copyright (C) 2004, 2005 Free Software Foundation, Inc. -Written by Mike Bianchi > - -This file is part of the gdiffmk utility, which is part of groff. - -groff is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -groff is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -License for more details. - -You should have received a copy of the GNU General Public License -along with groff; see the files COPYING and LICENSE in the top -directory of the groff source. If not, write to the Free Software -Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/contrib/groff/contrib/gdiffmk/gdiffmk.man b/contrib/groff/contrib/gdiffmk/gdiffmk.man deleted file mode 100644 index 9c89182404f6..000000000000 --- a/contrib/groff/contrib/gdiffmk/gdiffmk.man +++ /dev/null @@ -1,281 +0,0 @@ -.ig \"-*- nroff -*- -Copyright (C) 2004, 2005 Free Software Foundation, Inc. - -This file is part of the gdiffmk utility, which is part of groff. -Written by Mike Bianchi > - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that this permission notice may be included in -translations approved by the Free Software Foundation instead of in -the original English. -.. -. -.do mso www.tmac -. -.TH GDIFFMK @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" -. -. -.SH NAME -gdiffmk \- mark differences between groff/nroff/troff files -. -. -.SH SYNOPSIS -.nr a \n(.j -.ad l -.nr i \n(.i -.in +\w'\fBgdiffmk 'u -.ti \niu -.B gdiffmk -.de OP -. ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]" -. el .RB "[\ " "\\$1" "\ ]" -.. -.OP \-a \%addmark -.OP \-c \%changemark -.OP \-d \%deletemark -[\ \c -.B \-D -.OP \-B -.OP \-M "mark1 mark2" -] -.OP \-x \%diffcmd -.OP \-\- -.OP \-\-help -.OP \%\-\-version -.I \%file1 -.I \%file2 -[\ \c -.IR \%output \ \c -] -.br -.ad \na -. -. -.SH DESCRIPTION -.B gdiffmk -compares two -.BR groff (1), -.BR nroff (1), -or -.BR troff (1) -documents, -.I file1 -and -.IR file2 , -and creates an output which is -.I file2 -with added `margin character' (.mc) commands that indicate the differences. -. -.LP -If the -.I output -filename is present, -the output is written there. -If it is -.B \- -or absent the output is written to the standard output. -. -.LP -If the -.I file1 -or -.I file2 -argument is -.B \- -the standard input is read for that input. -Clearly both cannot be -.BR \- . -. -.LP -Note that the output is not necessarily compatible with all macro packages -and all preprocessors. -See the -.B BUGS -section below. -. -. -.SH OPTIONS -.TP -.BI \-a addmark -Use the -.I addmark -for source lines not in -.I file1 -but present in -.IR file2 . -Default: -.BR + . -. -.TP -.B \-B -By default, the deleted texts marked by the -.B \-D -option end -with an added troff break command, -.BR .br , -to ensure that the deletions are marked properly. -This is the only way to guarantee that deletions and small -changes get flagged. -This option directs the program not to insert these breaks; it makes no -sense to use it without -.BR \-D . -. -.TP -.BI \-c changemark -Use the -.I changemark -for changed source lines. -Default: -.BR | . -. -.TP -.BI \-d deletemark -Use the -.I deletemark -for deleted source lines. -Default: -.BR * . -. -.TP -.B \-D -Show the deleted portions from changed and deleted text. -Default delimiting marks: -.BR "[[" " .\&.\&.\&. " "]]" . -. -.TP -.BI \-M "mark1 mark2" -Change the delimiting marks for the -.B \-D -option. -It makes no sense to use this option without -.BR \-D . -. -.TP -.BI \-x diffcmd -Use the -.I diffcmd -command to perform the comparison of -.I file1 -and -.IR file2 . -In particular, -.I diffcmd -should accept the GNU -.B diff -.BI \-D name -option. -Default: -.BR diff (1). -. -.TP -.B \-\- -All the following arguments are treated as file names, -even if they begin with -.BR \- . -. -.TP -.B \-\-help -Print a usage message on standard error output and exit. -. -.TP -.B \-\-version -Print version information on the standard output and exit. -. -. -.SH BUGS -The output is not necessarily compatible with all macro packages -and all preprocessors. -A workaround that is often successful against preprocessor problems -is to run -.B gdiffmk -on the output of all the preprocessors instead of the input source. -. -.LP -.B gdiffmk -relies on the -.BI \-D name -option of GNU -.BR diff (1) -to make a merged `#ifdef' output format. -It hasn't been tested whether other versions of -.BR diff (1) -do support this option. -See also the -.BI \-x diffcmd -option. -. -.LP -Report bugs to bug-groff@gnu.org. -Include a complete, self-contained example that will allow the bug to -be reproduced, and say which version of -.B gdiffmk -you are using. -. -. -.SH AUTHORS -This document was written and is maintained by -.MTO MBianchi@Foveal.com "Mike Bianchi" . -. -.LP -This document is distributed under the terms of the FDL (GNU Free -Documentation License) version 1.1 or later. -You should have received a copy of the FDL on your system, it is also -available on-line at the -.URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" . -. -.LP -.B gdiffmk -is part of the -.I groff -GNU free software project. -All parts of the -.I groff package -are protected by GNU copyleft licenses. -The software files are distributed under the terms of the GNU General -Public License (GPL), while the documentation files mostly use the GNU -Free Documentation License (FDL). -. -. -.SH COPYRIGHT -Copyright \(co 2004, 2005 Free Software Foundation, Inc. -. -.LP -.B gdiffmk -is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. -. -.LP -.B gdiffmk -is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. -See the GNU General Public License for more details. -. -.LP -You should have received a copy of the GNU General Public License along -with groff; see the file COPYING. -If not, write to the Free Software -Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. -. -. -.SH "SEE ALSO" -.BR groff (@MAN1EXT@), -.BR nroff (@MAN1EXT@), -.BR gtroff (@MAN1EXT@), -.BR diff (@MAN1EXT@) -. -.\" Local Variables: -.\" mode: nroff -.\" End: diff --git a/contrib/groff/contrib/gdiffmk/gdiffmk.sh b/contrib/groff/contrib/gdiffmk/gdiffmk.sh deleted file mode 100644 index e55eb6962019..000000000000 --- a/contrib/groff/contrib/gdiffmk/gdiffmk.sh +++ /dev/null @@ -1,346 +0,0 @@ -#! /bin/sh -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -# Written by Mike Bianchi > - -# This file is part of the gdiffmk utility, which is part of groff. - -# groff is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# groff is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -# License for more details. - -# You should have received a copy of the GNU General Public License -# along with groff; see the files COPYING and LICENSE in the top -# directory of the groff source. If not, write to the Free Software -# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. -# This file is part of GNU gdiffmk. - - -cmd=$( basename $0 ) - -function Usage { - if test "$#" -gt 0 - then - echo >&2 "${cmd}: $@" - fi - echo >&2 "\ - -Usage: ${cmd} [ OPTIONS ] FILE1 FILE2 [ OUTPUT ] -Place difference marks into the new version of a groff/nroff/troff document. -FILE1 and FILE2 are compared, using \`diff', and FILE2 is output with -groff \`.mc' requests added to indicate how it is different from FILE1. - - FILE1 Previous version of the groff file. \`-' means standard input. - FILE2 Current version of the groff file. \`-' means standard input. - Either FILE1 or FILE2 can be standard input, but not both. - OUTPUT Copy of FILE2 with \`.mc' commands added. - \`-' means standard output (the default). - -OPTIONS: - -a ADDMARK Mark for added groff source lines. Default: \`+'. - -c CHANGEMARK Mark for changed groff source lines. Default: \`|'. - -d DELETEMARK Mark for deleted groff source lines. Default: \`*'. - - -D Show the deleted portions from changed and deleted text. - Default delimiting marks: \`[[' .... \`]]'. - -B By default, the deleted texts marked by the \`-D' option end - with an added troff \`.br' command. This option prevents - the added \`.br'. - -M MARK1 MARK2 Change the delimiting marks for the \`-D' option. - - -x DIFFCMD Use a different diff(1) command; - one that accepts the \`-Dname' option, such as GNU diff. - --version Print version information on the standard output and exit. - --help Print this message on the standard error. -" - exit 255 -} - - -function Exit { - exitcode=$1 - shift - for arg - do - echo >&2 "${cmd}: $1" - shift - done - exit ${exitcode} -} - -# Usage: FileRead exit_code filename -# -# Check for existence and readability of given file name. -# If not found or not readable, print message and exit with EXIT_CODE. -function FileRead { - case "$2" in - -) - return - ;; - esac - - if test ! -e "$2" - then - Exit $1 "File \`$2' not found." - fi - if test ! -r "$2" - then - Exit $1 "File \`$2' not readable." - fi -} - - -# Usage: FileCreate exit_code filename -# -# Create the given filename if it doesn't exist. -# If unable to create or write, print message and exit with EXIT_CODE. -function FileCreate { - case "$2" in - -) - return - ;; - esac - - if ! touch "$2" 2>/dev/null - then - if test ! -e "$2" - then - Exit $1 "File \`$2' not created; " \ - "Cannot write directory \`$( dirname "$2" )'." - fi - Exit $1 "File \`$2' not writeable." - fi -} - -function WouldClobber { - case "$2" in - -) - return - ;; - esac - - if test "$1" -ef "$3" - then - Exit 3 \ - "The $2 and OUTPUT arguments both point to the same file," \ - "\`$1', and it would be overwritten." - fi -} - -ADDMARK='+' -CHANGEMARK='|' -DELETEMARK='*' -MARK1='[[' -MARK2=']]' - -function RequiresArgument { - # Process flags that take either concatenated or - # separated values. - case "$1" in - -??*) - expr "$1" : '-.\(.*\)' - return 1 - ;; - esac - - if test "$#" -lt 2 - then - Exit 255 "Option \`$1' requires a value." - fi - - echo "$2" - return 0 -} - -badoption= -DIFFCMD=diff -D_option= -br=.br -for OPTION -do - case "${OPTION}" in - -a*) - ADDMARK=$( RequiresArgument "${OPTION}" $2 ) && - shift - ;; - -c*) - CHANGEMARK=$( RequiresArgument "${OPTION}" $2 ) && - shift - ;; - -d*) - DELETEMARK=$( RequiresArgument "${OPTION}" $2 ) && - shift - ;; - -D ) - D_option=D_option - ;; - -M* ) - MARK1=$( RequiresArgument "${OPTION}" $2 ) && - shift - if [ $# -lt 2 ] - then - Usage "Option \`-M' is missing the MARK2 value." - fi - MARK2=$2 - shift - ;; - -B ) - br=. - ;; - -x* ) - DIFFCMD=$( RequiresArgument "${OPTION}" $2 ) && - shift - ;; - --version) - echo "GNU ${cmd} (groff) version @VERSION@" - exit 0 - ;; - --help) - Usage - ;; - --) - # What follows -- are file arguments - shift - break - ;; - -) - break - ;; - -*) - badoption="${cmd}: invalid option \`$1'" - ;; - *) - break - ;; - esac - shift -done - -${DIFFCMD} -Dx /dev/null /dev/null >/dev/null 2>&1 || - Usage "The \`${DIFFCMD}' program does not accept" \ - "the required \`-Dname' option. -Use GNU diff instead. See the \`-x DIFFCMD' option." - -if test -n "${badoption}" -then - Usage "${badoption}" -fi - -if test "$#" -lt 2 -o "$#" -gt 3 -then - Usage "Incorrect number of arguments." -fi - -if test "1$1" = 1- -a "2$2" = 2- -then - Usage "Both FILE1 and FILE2 are \`-'." -fi - -FILE1=$1 -FILE2=$2 - -FileRead 1 "${FILE1}" -FileRead 2 "${FILE2}" - -if test "$#" = 3 -then - case "$3" in - -) - # output goes to standard output - ;; - *) - # output goes to a file - WouldClobber "${FILE1}" FILE1 "$3" - WouldClobber "${FILE2}" FILE2 "$3" - - FileCreate 3 "$3" - exec >$3 - ;; - esac -fi - -# To make a very unlikely label even more unlikely ... -label=__diffmk_$$__ - -sed_script=' - /^#ifdef '"${label}"'/,/^#endif \/\* '"${label}"'/ { - /^#ifdef '"${label}"'/ s/.*/.mc '"${ADDMARK}"'/ - /^#endif \/\* '"${label}"'/ s/.*/.mc/ - p - d - } - /^#ifndef '"${label}"'/,/^#endif \/\* [!not ]*'"${label}"'/ { - /^#else \/\* '"${label}"'/,/^#endif \/\* '"${label}"'/ { - /^#else \/\* '"${label}"'/ s/.*/.mc '"${CHANGEMARK}"'/ - /^#endif \/\* '"${label}"'/ s/.*/.mc/ - p - d - } - /^#endif \/\* \(not\|!\) '"${label}"'/ { - s/.*/.mc '"${DELETEMARK}"'/p - a\ -.mc - } - d - } - p - ' - -if [ ${D_option} ] -then - sed_script=' - /^#ifdef '"${label}"'/,/^#endif \/\* '"${label}"'/ { - /^#ifdef '"${label}"'/ s/.*/.mc '"${ADDMARK}"'/ - /^#endif \/\* '"${label}"'/ s/.*/.mc/ - p - d - } - /^#ifndef '"${label}"'/,/^#endif \/\* [!not ]*'"${label}"'/ { - /^#ifndef '"${label}"'/ { - i\ -'"${MARK1}"' - d - } - /^#else \/\* '"${label}"'/ ! { - /^#endif \/\* [!not ]*'"${label}"'/ ! { - p - d - } - } - /^#else \/\* '"${label}"'/,/^#endif \/\* '"${label}"'/ { - /^#else \/\* '"${label}"'/ { - i\ -'"${MARK2}"'\ -'"${br}"' - s/.*/.mc '"${CHANGEMARK}"'/ - a\ -.mc '"${CHANGEMARK}"' - d - } - /^#endif \/\* '"${label}"'/ s/.*/.mc/ - p - d - } - /^#endif \/\* \(not\|!\) '"${label}"'/ { - i\ -'"${MARK2}"'\ -'"${br}"' - s/.*/.mc '"${DELETEMARK}"'/p - a\ -.mc - } - d - } - p - ' -fi - -diff -D"${label}" -- ${FILE1} ${FILE2} | - sed -n "${sed_script}" - -# EOF diff --git a/contrib/groff/contrib/gdiffmk/tests/file1 b/contrib/groff/contrib/gdiffmk/tests/file1 deleted file mode 100644 index ba6a4be2eda5..000000000000 --- a/contrib/groff/contrib/gdiffmk/tests/file1 +++ /dev/null @@ -1,11 +0,0 @@ -.ll 25 -.pl 20 -.nf -file1 and file2 #1 -file1 only -file1 and file2 #2 -file1 and file2 #3 -file1 only -file1 only -file1 and file2 #4 -file1 and file2 #5 diff --git a/contrib/groff/contrib/gdiffmk/tests/file2 b/contrib/groff/contrib/gdiffmk/tests/file2 deleted file mode 100644 index 54e95eef295b..000000000000 --- a/contrib/groff/contrib/gdiffmk/tests/file2 +++ /dev/null @@ -1,11 +0,0 @@ -.ll 25 -.pl 20 -.nf -file1 and file2 #1 -file2 only -file2 only -file1 and file2 #2 -file2 only -file1 and file2 #3 -file1 and file2 #4 -file1 and file2 #5 diff --git a/contrib/groff/contrib/gdiffmk/tests/runtests.in b/contrib/groff/contrib/gdiffmk/tests/runtests.in deleted file mode 100644 index 82952652e2d0..000000000000 --- a/contrib/groff/contrib/gdiffmk/tests/runtests.in +++ /dev/null @@ -1,98 +0,0 @@ -#! /bin/sh -# A very simple function test for gdiffmk.sh. - -srcdir=@srcdir@ - -command=../gdiffmk - -# Test the number of arguments and the first argument. -case $#-$1 in -1-clean ) - rm -fv test_result* tmp_file* - exit 0 - ;; -1-run ) - ;; -* ) - echo >&2 "$0 [ clean | run ] -Run a few simple tests on \`${command}'."' - -clean Remove the test_result? and tmp_file? files. -run Run the tests. -' - exit 255 - ;; -esac - -function TestResult { - if cmp -s $1 $2 - then - echo $2 PASSED - else - echo '' - echo $2 TEST FAILED - diff $1 $2 - echo '' - fi -} - -tmpfile=/tmp/$$ -trap 'rm -f ${tmpfile}' 0 1 2 3 15 - -# Run tests. - -# 3 file arguments -ResultFile=test_result1 -${command} ${srcdir}/file1 ${srcdir}/file2 ${ResultFile} 2>${tmpfile} -cat ${tmpfile} >>${ResultFile} -TestResult ${srcdir}/test_baseline ${ResultFile} - -# OUTPUT to stdout by default -ResultFile=test_result2 -${command} ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1 -TestResult ${srcdir}/test_baseline ${ResultFile} - -# OUTPUT to stdout via - argument -ResultFile=test_result3 -${command} ${srcdir}/file1 ${srcdir}/file2 - >${ResultFile} 2>&1 -TestResult ${srcdir}/test_baseline ${ResultFile} - -# FILE1 from standard input via - argument -ResultFile=test_result4 -${command} - ${srcdir}/file2 <${srcdir}/file1 >${ResultFile} 2>&1 -TestResult ${srcdir}/test_baseline ${ResultFile} - -# FILE2 from standard input via - argument -ResultFile=test_result5 -${command} ${srcdir}/file1 - <${srcdir}/file2 >${ResultFile} 2>&1 -TestResult ${srcdir}/test_baseline ${ResultFile} - -# Different values for addmark, changemark, deletemark -ResultFile=test_result6 -${command} -aA -cC -dD ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1 -TestResult ${srcdir}/test_baseline6 ${ResultFile} - -# Test for accidental file overwrite. -ResultFile=test_result7 -cp ${srcdir}/file2 tmp_file7 -${command} -aA -dD -cC ${srcdir}/file1 tmp_file7 tmp_file7 \ - >${ResultFile} 2>&1 -TestResult ${srcdir}/test_baseline7 ${ResultFile} - -# Test -D option -ResultFile=test_result8 -${command} -D ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1 -TestResult ${srcdir}/test_baseline8 ${ResultFile} - -# Test -D and -M options -ResultFile=test_result9 -${command} -D -M '<<<<' '>>>>' \ - ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1 -TestResult ${srcdir}/test_baseline9 ${ResultFile} - -# Test -D and -B options -ResultFile=test_result10 -${command} -D -B ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1 -TestResult ${srcdir}/test_baseline10 ${ResultFile} - -# EOF diff --git a/contrib/groff/contrib/gdiffmk/tests/test_baseline b/contrib/groff/contrib/gdiffmk/tests/test_baseline deleted file mode 100644 index 6b329926ae87..000000000000 --- a/contrib/groff/contrib/gdiffmk/tests/test_baseline +++ /dev/null @@ -1,17 +0,0 @@ -.ll 25 -.pl 20 -.nf -file1 and file2 #1 -.mc | -file2 only -file2 only -.mc -file1 and file2 #2 -.mc + -file2 only -.mc -file1 and file2 #3 -.mc * -.mc -file1 and file2 #4 -file1 and file2 #5 diff --git a/contrib/groff/contrib/gdiffmk/tests/test_baseline10 b/contrib/groff/contrib/gdiffmk/tests/test_baseline10 deleted file mode 100644 index b523f4520005..000000000000 --- a/contrib/groff/contrib/gdiffmk/tests/test_baseline10 +++ /dev/null @@ -1,26 +0,0 @@ -.ll 25 -.pl 20 -.nf -file1 and file2 #1 -[[ -file1 only -]] -. -.mc | -file2 only -file2 only -.mc -file1 and file2 #2 -.mc + -file2 only -.mc -file1 and file2 #3 -[[ -file1 only -file1 only -]] -. -.mc * -.mc -file1 and file2 #4 -file1 and file2 #5 diff --git a/contrib/groff/contrib/gdiffmk/tests/test_baseline6 b/contrib/groff/contrib/gdiffmk/tests/test_baseline6 deleted file mode 100644 index 3156961b4a21..000000000000 --- a/contrib/groff/contrib/gdiffmk/tests/test_baseline6 +++ /dev/null @@ -1,17 +0,0 @@ -.ll 25 -.pl 20 -.nf -file1 and file2 #1 -.mc C -file2 only -file2 only -.mc -file1 and file2 #2 -.mc A -file2 only -.mc -file1 and file2 #3 -.mc D -.mc -file1 and file2 #4 -file1 and file2 #5 diff --git a/contrib/groff/contrib/gdiffmk/tests/test_baseline7 b/contrib/groff/contrib/gdiffmk/tests/test_baseline7 deleted file mode 100644 index b65e8320c34d..000000000000 --- a/contrib/groff/contrib/gdiffmk/tests/test_baseline7 +++ /dev/null @@ -1,2 +0,0 @@ -gdiffmk: The FILE2 and OUTPUT arguments both point to the same file, -gdiffmk: `tmp_file7', and it would be overwritten. diff --git a/contrib/groff/contrib/gdiffmk/tests/test_baseline8 b/contrib/groff/contrib/gdiffmk/tests/test_baseline8 deleted file mode 100644 index 9846dd583cb0..000000000000 --- a/contrib/groff/contrib/gdiffmk/tests/test_baseline8 +++ /dev/null @@ -1,26 +0,0 @@ -.ll 25 -.pl 20 -.nf -file1 and file2 #1 -[[ -file1 only -]] -.br -.mc | -file2 only -file2 only -.mc -file1 and file2 #2 -.mc + -file2 only -.mc -file1 and file2 #3 -[[ -file1 only -file1 only -]] -.br -.mc * -.mc -file1 and file2 #4 -file1 and file2 #5 diff --git a/contrib/groff/contrib/gdiffmk/tests/test_baseline9 b/contrib/groff/contrib/gdiffmk/tests/test_baseline9 deleted file mode 100644 index 50fe57d6d2b1..000000000000 --- a/contrib/groff/contrib/gdiffmk/tests/test_baseline9 +++ /dev/null @@ -1,26 +0,0 @@ -.ll 25 -.pl 20 -.nf -file1 and file2 #1 -<<<< -file1 only ->>>> -.br -.mc | -file2 only -file2 only -.mc -file1 and file2 #2 -.mc + -file2 only -.mc -file1 and file2 #3 -<<<< -file1 only -file1 only ->>>> -.br -.mc * -.mc -file1 and file2 #4 -file1 and file2 #5 diff --git a/contrib/groff/contrib/grap2graph/Makefile.sub b/contrib/groff/contrib/grap2graph/Makefile.sub deleted file mode 100644 index 5527618e1581..000000000000 --- a/contrib/groff/contrib/grap2graph/Makefile.sub +++ /dev/null @@ -1,19 +0,0 @@ -MAN1=grap2graph.n -CLEANADD=grap2graph - -all: grap2graph - -grap2graph: grap2graph.sh - rm -f $@; \ - sed -e "s|@g@|$(g)|g" \ - -e "s|@VERSION@|$(version)$(revision)|" \ - -e $(SH_SCRIPT_SED_CMD) $(srcdir)/grap2graph.sh >$@; \ - chmod +x $@ - -install_data: grap2graph - -test -d $(bindir) || $(mkinstalldirs) $(bindir) - -rm -f $(bindir)/grap2graph - $(INSTALL_SCRIPT) grap2graph $(bindir)/grap2graph - -uninstall_sub: - -rm -f $(bindir)/grap2graph diff --git a/contrib/groff/contrib/grap2graph/grap2graph.man b/contrib/groff/contrib/grap2graph/grap2graph.man deleted file mode 100644 index 0c6d4568d77e..000000000000 --- a/contrib/groff/contrib/grap2graph/grap2graph.man +++ /dev/null @@ -1,105 +0,0 @@ -.\" $Id: grap2graph.man,v 1.3 2003/10/28 07:46:23 wlemb Exp $ -.\" This documentation is released to the public domain. -. -. -.TH GRAP2GRAPH @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" -.IX grap2graph -.SH NAME -grap2graph \- convert a grap diagram into a cropped bitmap image -. -. -.SH SYNOPSIS -.B grap2graph -[ -.B \-unsafe -] -[ -.BI \-resolution\ M\fR|\fPMxN -] -[ -.BI \-format\ fmt -] -. -. -.SH DESCRIPTION -Reads a grap program as input; produces an image file (by default in -Portable Network Graphics format) suitable for the Web as output. -For a description of the grap language, see -.BR grap (1). -.P -Your graph specification should \fInot\fR be wrapped with the \&.G1 and -\&.G2 macros that normally guard it within -.BR groff (@MAN1EXT@) -macros. -.P -The output image will be a black-on-white graphic clipped to the -smallest possible bounding box that contains all the black pixels. -By specifying command-line options to be passed to -.BR convert (1) -you can give it a border, set the background transparent, set the -image's pixel density, or perform other useful transformations. -.P -This program uses -.BR grap (1), -.BR @g@pic (@MAN1EXT@), -.BR groff (@MAN1EXT@), -and the ImageMagick -.BR convert (1) -program. -These programs must be installed on your system and accessible on your -$PATH for \fBgrap2graph\fR to work. -. -. -.SH OPTIONS -.TP -.B \-unsafe -Run -.BR @g@pic (@MAN1EXT@) -and -.BR groff (@MAN1EXT@) -in the `unsafe' mode enabling the PIC macro -.B sh -to execute arbitrary commands. -The default is to forbid this. -.TP -.BI \-format\ fmt -Specify an output format; the default is PNG (Portable Network Graphics). -Any format that -.BR convert (1) -can emit is supported. -.PP -Command-line switches and arguments not listed above are passed to -.BR convert (1). -. -. -.SH ENVIRONMENT -.TP -.B GROFF_TMPDIR -The directory in which temporary files will be created. -If this is not set -.B grap2graph -searches the environment variables -.BR \%TMPDIR , -.BR TMP , -and -.B TEMP -(in that order). -Otherwise, temporary files will be created in -.BR /tmp . -. -. -.SH "SEE ALSO" -.BR pic2graph (@MAN1EXT@), -.BR eqn2graph (@MAN1EXT@), -.BR @g@pic (@MAN1EXT@), -.BR groff (@MAN1EXT@), -.BR gs (1), -.BR convert (1). -. -. -.SH AUTHOR -Eric S. Raymond -. -.\" Local Variables: -.\" mode: nroff -.\" End: diff --git a/contrib/groff/contrib/grap2graph/grap2graph.sh b/contrib/groff/contrib/grap2graph/grap2graph.sh deleted file mode 100644 index 7c830c1a2519..000000000000 --- a/contrib/groff/contrib/grap2graph/grap2graph.sh +++ /dev/null @@ -1,85 +0,0 @@ -#! /bin/sh -# -# grap2graph -- compile graph description descriptions to bitmap images -# -# by Eric S. Raymond , May 2003 -# -# In Unixland, the magic is in knowing what to string together... -# -# Take grap description on stdin, emit cropped bitmap on stdout. -# The pic markup should *not* be wrapped in .G1/.G2, this script will do that. -# A -U option on the command line enables gpic/groff "unsafe" mode. -# A -format FOO option changes the image output format to any format -# supported by convert(1). All other options are passed to convert(1). -# The default format is PNG. -# - -# Requires the groff suite and the ImageMagick tools. Both are open source. -# This code is released to the public domain. -# -# Here are the assumptions behind the option processing: -# -# 1. None of the options of grap(1) are relevant. -# -# 2. Only the -U option of groff(1) is relevant. -# -# 3. Many options of convert(1) are potentially relevant, (especially -# -density, -interlace, -transparency, -border, and -comment). -# -# Thus, we pass -U to groff(1), and everything else to convert(1). -# -# $Id: grap2graph.sh,v 1.4 2005/05/18 07:03:06 wl Exp $ -# -groff_opts="" -convert_opts="" -format="png" - -while [ "$1" ] -do - case $1 in - -unsafe) - groff_opts="-U";; - -format) - format=$2 - shift;; - -v | --version) - echo "GNU grap2graph (groff) version @VERSION@" - exit 0;; - --help) - echo "usage: grap2graph [ option ...] < in > out" - exit 0;; - *) - convert_opts="$convert_opts $1";; - esac - shift -done - -# create temporary directory -tmp= -for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do - test -z "$d" && continue - - tmp=`(umask 077 && mktemp -d -q "$d/grap2graph-XXXXXX") 2> /dev/null` \ - && test -n "$tmp" && test -d "$tmp" \ - && break - - tmp=$d/grap2graph$$-$RANDOM - (umask 077 && mkdir $tmp) 2> /dev/null && break -done; -if test -z "$tmp"; then - echo "$0: cannot create temporary directory" >&2 - { (exit 1); exit 1; } -fi - -trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15 - -# Here goes: -# 1. Add .G1/.G2. -# 2. Process through grap(1) to emit pic markup. -# 3. Process through groff(1) with pic preprocessing to emit Postscript. -# 4. Use convert(1) to crop the Postscript and turn it into a bitmap. -(echo ".G1"; cat; echo ".G2") | grap | groff -p $groff_opts -Tps -P-pletter | \ - convert -trim -crop 0x0 $convert_opts - $tmp/grap2graph.$format \ - && cat $tmp/grap2graph.$format - -# End diff --git a/contrib/groff/contrib/groffer/ChangeLog b/contrib/groff/contrib/groffer/ChangeLog deleted file mode 100644 index c436f8cee5e1..000000000000 --- a/contrib/groff/contrib/groffer/ChangeLog +++ /dev/null @@ -1,1546 +0,0 @@ - ________________________________________________________________ - * release of groffer 0.9.22 - -2005-22-04 Bernd Warken - - ### `--whatis' - - Produce a `groff' output and allow wild cards on filespec - parameters for `--whatis'. - - * groffer2.sh: - - $_FILESPEC_ARG: New variable for storing the actual filespec - parameter. - - main_do_fileargs(): Set $_FILESPEC_ARG and add - what_is_filespec(). - - main_parse_args(): Add --all to --whatis. - - to_tmp_line(): New function to write the arguments to the - temorary cat file. - - whatis_filename(): Rename of what_is(). Construct a better - printout using $_FILESPEC_ARG. Repair the sed sequneces. - - whatis_filespec(): New function to print the filespec once - during the `whatis' process. - - whatis_header(): New funtion for printing the header of the - `whatis' output. - - * groffer.man: Revise the documentation of --whatis. - - ### `--apropos*' - - Produce `groff' for `--apropos*'. Allow `--sections' for - `--apropos', ignore it with `--apropos-*'. - - * groffer2.sh: - - --apropos*: Make these options without argument. - - $_APROPOS_PROG: New variable for the program that is is used for - `apropos'. - - $_APROPOS_SECTIONS: New variable to determine the sections that - are filtered out of `apropos' output depending on `--apropos-*'. - - apropos_filespec(): Handling of apropos at the filespec level. - - apropos_run(): Remove it. - - apropos_setup(): New function. - - main_set_mode(): Remove handling of $_OPT_APROPOS*. - - * groffer.man: - - Revise the documentation of `--apropos*'. - - Split section 'options for GNU man' into two sections `options - for man pages' and `long options taken over from GNU man'. - - Move `--apropos*', `--whatis', `--man', and `--no-man' to - section `options for man pages'. - - ### special display (apropos and whatis) - - * groffer2.sh: - - special_setup(): New function that chooses the setup between - apropos and whatis. - - special_filespec(): New function that does the output at the - filespec level for apropos or whatis. - - ### handle `--sections' for man page searching - - * groffer2.sh: - - man_do_filespec(): Use $_OPT_SECTIONS of --sections instead of - $_MAN_AUTO_SEC if non-empty. If a section was given on the - filespec parameter $_OPT_SECTIONS is ignored. This differs from - `man' which always uses the restricted sections of --sections. - This function works for both normal man page search and whatis. - - apropos_filespec(): Use --sections for --apropos, but not for - --apropos-* because these provide already their own sections. - - ### wildcards in filespec arguments - - * groffer2.sh: Wildcards are now accepted. In `--apropos*' and - `--whatis' they are interpreted as wildcard search elements; but - in normal display they are only handled as their own character. - - ### development; new option - - * groffer2.sh: - - --print: New option that prints just its argument for parameter - check. - - usage(): Add new option. - - $_OPT_DO_NOTHING: New variable for do_nothing(). Handle it at - the end of main_parse_Args(). - - * groffer.man: Add information on --print. - - ### safe exit - - * groffer2.sh: - - error(): Always exit with $_ERROR. - - exit_test(): New function to exit when first exit was hidden by - (). Call it after each $(). - - ### automatic shell determination - - * groffer.sh: - - If no option --shell is given perform a test of several shells - to automatically start some shell for groffer2.sh. `ksh' is used - first because it can be safely terminated by Ctrl-C. - - This can be cancelled by providing --shell=''. - - Add test on `sed' program. - - * groffer.man: Revise information on --shell. - - ### trap - - * groffer2.sh: - - trap_set(): Remove argument. Instead of $_ALL_EXIT use only - signal 0. - - trap_unset(): Rename trap_clean(). Instead of $_ALL_EXIT use - only signal 0. - - $_ALL_EXIT: Remove this variable. - - Replace all direct `trap' calls by trap_set(). - - * README_SH: New section `Bugs' on `trap'.. - - ### user errors, error output without function stack - - * groffer2.sh: - - error_user(): New function for user errors. - - error(): Remove call of clean_up() because the trap will do it - with the exit. Remove the `kill' commands. Create a temporary - file `.error' that can be tested by exit_test() for a better exit - test (especially for shell `ksh'). - - $_DEBUG_USER_WITH_STACK: New variable to enable function stack - output in error_user(). - - list_from_cmdline(), list_single_from_abbrev(), main_set_mode(): - Use error_user(). - - ### test modes on X and tty - - * groffer2,sh: - - is_X(), is_not_X(): New functions for checking on X Window. - - $_VIEWER_HTML_TTY, $_VIEWER_HTML_X: New variables that split - $_VIEWER_HTML. Add `galeon'. - - main_parse_args(): Allow mode change for graphical modes only - when in X Window. - - _do_display() of main_display(): Create a special run for - viewers that run on the terminal; `lynx' is the only one so far. - - ### add $GROFFER_MODE to command line - - * groffer.sh: - - After the handling of the configuration files integrate - $GROFFER_OPT to the command line. - - This makes a `set' in the shell determination unnecessary. - - * groffer2.sh: - - The debug test gets simpler because quotes are vanished without - $GROFFER_OPT. - - main_parse_MANOPT(): Prepend $mpm_list to the command line. - - main_parse_args(): `set' is unnecessary. - - ### debug; new options - - * groffer2.sh: - - --debug-all, --debug-lm, --debug-params, --debug-shell, - --debug-stacks, --debug-tmpdir, --debug-user: New options. - - --debug: Enable all debug variables except $_DEBUG_STACKS and - $_DEBUG_LM. By the new options the smallest abbreviation is now - `--debug'. - - $_DEBUG_STACKS: Rename $_DEBUG. - - $_DEBUG_PRINT_TMPDIR: New debug variable for printing the name - of the temporary directory in main_init(). - - $_OPT_DEBUG: Remove this variable because debug is handled at - the early part of the script. - - clean_up(): Enlarge $_DEBUG_KEEP_FILES to not deleting the - temporary directory. - - usage(): Move all development options on a section of its own. - - Move the test of rudimentary shell functionality at the - beginning of the script. Add test on `sed'. - - Follow this by the debug section. The determination of all - --debug* options can be done without a function. - - * groffer.man: Revise information on --debug and add new options. - - ### variables - - * groffer.sh: - - $_ERROR: Move the definition of this variable here. - - $_GROFF_VERSION: New variable, is set over @...@ construct. - - $_OUTPUT_FILE_NAME: Move this variable to groffer2.sh. - - * groffer2.sh: - - $_MAN_AUTO_SEC_LIST: Rename $_MAN_AUTO_SEC because it represents - a list. - - $_MAN_AUTO_SEC_CHARS: New read-only variable for storing - $_MAN_AUTO_SEC_LIST in [] construct. Use it in man_do_filespec() - and whatis_filename(). - - $_SPACE_CASE: New read-only variable with [] on space characters - with \ for `case' patterns. Use it in several functions. - - $_SPACE_SED: New read-only variable with [] on space characters - for `sed'. Use it in several functions. - - ### options and display - - * groffer2.sh: - - list_from_cmdline(): Add test whether the same abbreviation is - part of long options with and without arguments. Give handling of - `=' a `case' pattern of its own. - - main_display(): Remove unnecessary calls of `clean_up' in order - to use `mozilla' without problems. In _do_display(): Fix -X by - providing a different process when $_DISPLAY_PROG is empty. - - main_set_mode(): Accept options for viewers as is, without check - for program. Add test whether no program is given for a mode. - This avoids unnecessary empty $_DISPLAY_PROG in main_display(). - - ### viewer programs that run on the terminal (tty); new options - - * groffer2.sh: - - $_VIEWER_TERMINAL: New variable that stores whether a viewer was - supposed to run on tty. - - --dvi-viewer-tty, --html-viewer-tty, --pdf-viewer-tty, - --ps-viewer-tty, --tty-viewer-tty, --X-viewer-tty, --x-viewer-tty, - --www-viewer-tty: New options for viewers that run on a terminal. - - main_parse_args(), _do_display() of main_display(): Use the new - options and the new variable. - - usage(): Add the new options. - - * groffer.man: Add information on options --*-viewer-tty. - - ### other fixes - - * groffer2.sh: - - _do_display() of main_display(): Bear errors of `groff' run. - - is_not_file: Fix to have exactly one argument. - - is_not_prog(): Handle no arguments. - - list_has_not(): Fix. - - main_do_fileargs(): Remove $mdfa_exitcode. - - register_title(): Limit title to 4 elements. - - version(): Print the version information to standard output just - like `groff' does. - - --no-special: New option to disable former calls of `--all', - `--apropos*', and `whatis. - - --title: Make it an option with argument. - -2005-08-07 Keith Marshall - - * contrib/groffer/Makefile.sub (install): Reference groffer2.sh - as $(srcdir)/groffer2.sh, so it will install when building in a - different directory from the source. - - ________________________________________________________________ - * release of groffer 0.9.21 - -2005-08-02 Bernd Warken - - ### @...@ constructs - - * groffer.sh: - - $_AT: New variable for `@'. - - @...@: Replace the @...@ constructs by variables _AT_..._AT. - These constructs are transformed by `make' to useful information. - Keep all of these constructs in the first part of groffer.sh. For - a run before a `make' call, the script sets these variables to - special values for testing purpose. - - $_GROFFER_LIBDIR: Variable pointing to the groffer library - directory @libdir@/groff/groffer. - - ### Configuration files - - * groffer.sh: - - Add test for `$()' construct. - - Read and transform the configuration files and execute the - emerging commands. The `sed' script was heavily enlarged to - handle line with spaces and quotes. The emerging script is now - called by `eval', so no temporary file is needed. - - $_CONF_FILE_ETC, $_CONF_FILE_HOME: New variables for the config - files. - - $_SQ, $_SP: Move variables for characters before the handling of - the configuration files. Rename $_SQUOTE to $_SQ and $_SPACE to - $_SP. - - $GROFFER_OPT: Remove cleaning of this variable before the - reading of the configuration files. - - * groffer2.sh: - - main_init(): Remove the getting of the configuration files. - - ### Rewrite the shell determination - - * groffer.sh: - - Get rid of all functions in `groffer.sh'. Rewrite the shell - determination with `` and $(). - - --shell: Shortest abbreviation is `--sh'. Allow arguments for - the shell name. - - Allow an empty argument for --shell as shell name to overwrite a - specified shell; an empty shell name gets back to the default - shell. - - The shell determination now inludes the full handling of the - config files. The `--shell' option needs no longer a line - starting with `-'. - - ### Test of unset - - * groffer.sh: - - Remove test of `unset'. - - Remove all calls of `unset'. - - Use one character names for all variables that are meant to be - local in this script. - - * groffer2.sh: - - Move the test of `unset' to the testing of rudimentary shell - functionality without change. - - ### Allow abbreviations for long options - - * groffer2.sh: - - list_has_abbrev(): New function for checking a list having an - element with a given abbreviation. - - list_get_single_from_abbrev(): New function to retrieve the - element having a given abbreviation. - - list_from_cmd_line(): For an option abbreviation determine the - corresponding long option. - - From the man option lists remove the elements that are also in - a groffer list. - - Allow abbreviation for the early test of --debug. - - * groffer.sh: Allow abbreviation for the early test on --shell. - - get_opt_shell(): Rewrite _get_opt_shell() and the shell test - around it. - - test_on_shell(): Rename function _test_on_shell(). - - $_SHELL: global variable for the shell to run groffer2.sh. - - ### Get rid of `sh -c' - - * groffer2.sh: - - main_display(), _do_display(): Remove the `sh -c' calls. Make - the cleanup working without it. - - _do_display(): Extend _do_display() such that it can be used for - the pdf mode as well. - - _make_pdf(): New subfunction of main_display() for running the - additional parts of pdf mode in _do_display(). - - rm_file(), rm_file_with_debug(), rm_tree(): New functions for - removing files and directories. - - ### Change directory - - * groffer2.sh: - - $_START_DIR: New variable to store the directory at the starting - time of the script. - - main_display(): Go to the groffer temporary directory to be able - to process internal `groff' data like pictures. - - clean_up(): Get back to the starting directory. - - ### Compatibility with strange shells - - * groffer2.sh: - - clean_up(): `zsh' and `posh' had difficulties with `eval'. - - is_*(): Add test on empty argument. Some shells return true on - `test -d' etc. with empty argument, while most shells return - false. - - echo1(); New function to print single line `cat <file' for generating an empty file. - - rmdir: Replace `rmdir' by `rm -f -r'. - - eval: Add `eval' to many commands with variable arguments. - - * groffer.sh: repair `debug' - - Print all debug output to stderr. - - $_FUNC_STACK: Built function call stack even when $_DEBUG is not - set. Now the arguments are not added. - - $_DEBUG: If set to `yes' print 3 call stack events: the function - that is added with its arguments is printed with `+++ ' - (func_push()); the call stack after the addition is printed with - `>>> ' (func_push()); the call stack after the removing is printed - with `<<< ' (func_pop()). - - error(): Always print the function call stack on errors. - - * groffer.sh: Corrections - - $_groffer_run: Rename to $_GROFFER_RUN. - - $unset: Rename to $_UNSET. - - Repair test of `unset'. - - Repair test for `--shell'. The script is now rerun under the - shell specified in the option argument. This can increase the - speed. - - * README_SH: `zsh' now works. - - * groffer.man: - - Reformulate the information for the `groffer' specific details - of option `-V'. - - Add information on the debug process. - - Add information on the default devices in `x mode'. - - Minor corrections. - - ________________________________________________________________ - * release of groffer 0.9.18 - -2005-07-01 Bernd Warken - - * groffer.sh: further shell compatibility - - `echo': Remove options and possible options of `echo' by - preceding the argument with a character `x' that is removed by - `sed' or replace `echo' by `cat </README_SH - - - ******* Extension of the `apropos' handling - - The output of man's `apropos' has grown immensely meanwhile, so it - has become inefficient. Now `groffer' provides new options to get - the a selected information from this output. - - * groffer.sh: - `--apropos-progs': new option for displaying only information - on programs (man page sections 1, 6, and 8) - `--apropos-data': new option for displaying only information - on documented data (man page sections 4, 5 and 7) - `--apropos-devel': new option for displaying only information - on development documentation (man page sections 2, 3 and 9) - `--apropos': still displays just the output of man's `apropos' - program. - - Specify all of these options as a single argument option; that - makes groffer's `--apropos' option slightly different because - the corresponding `man' option does not have arguments, but takes - all file arguments as apropos targets. So just ignore the `man' - options `-k' and `--apropos' in the parsing of $MANOPT. - - Exit after processing one `apropos' call. - - - ******* Quasi object oriented function arguments - - An object is the name of an environment variable. The value of - this variable contains the object's content. This allows to - specify function arguments and the calling syntax in a simpler way - by letting the first argument be a variable name, usable for input - or output. - - Such an object type is `list', the string value of a shell - variable arranged in space-separated single-quoted elements, such - as $GROFFER_OPT internally. - - * groffer.sh: - - Remove list_from_args(), list_element_from_arg() - list_from_lists(), list_length(), and list_prepend(). - They can be replaced by list_append(). - - All list*() functions are rearranged such that the first - argument is a list object, the name of a variable. - - - ******* Simplification of configuration files - - The new syntax of the groffer configuration files is - - all lines starting with a `-' character are interpreted as - command line options for all calls of groffer; they are collected - and prepended to the actual value of $GROFFER_OPT; optional - spaces at the beginning.of the line are omitted. - - all other lines are interpreted as a shell command and executed - in the current shell of the groffer call. - - Precedence: - - The command line and the external environment variables such as - $GROFFER_OPT of the groffer call have the highest precedence. - - This is overwritten by the configuration file in the user's home - directory. - - The system configuration file in /etc has the lowest - precedence. - - * groffer.sh: - The configuration files are now called after the determination of - the temporary files in main_init(). - - - ******* Script file name - - The file name of the script is needed for the several calls during - the search for the optimal shell. - - * groffer.sh: - - $_GROFFER_SH: replace $_this by $_GROFFER_SH and use $0 for - determining the file name of the script for the following calls, - instead of the cumbersome @BINDIR@ construction. - - Force the script to be called as an executable file, so $0 must - contain the program name. - - - ******* Improved temporary file names - - Just like groff, groffer mixes all file parameters into a single - output file. Its name is now constructed as a comma-separated - list built from the file name arguments without a leading comma. - So a leading comma can be used for the internal temporary file - names. - - * groffer.sh: - - $_OUTPUT_FILE_NAME: new global variable as basis for the output - file name; it is set in main_set_resources(). - - tmp_create(): use `,name' for temporary files different from - output file because the output file name does not start with a - comma. `$$' is not needed anymore. - - main_display(): simplification of $_modefile in _do_display() - and single display modes. - - Add extension `.html' to output file name in html mode. - - base_name(): correction for strange positions of `/'. - - - ******* Mode fixes - - * groffer.sh: - - Set the main default mode to `x' with groff's X Window viewer - `gxditview'. - - Allow 'x' and 'X' in `--mode' for the X Window mode; the same - for `--x' and `X', `--x-viewer' and `--X-viewer'. - - Make groff's `-X' equivalent to `mode X'. - - Fix `--auto', `--mode auto', and `--default-modes'. - - `html' mode: new mode equivalent to `www', add `konqueror' and - `lynx' as viewers. - - `pdf' mode: fix zoom options for pdf-viewer `xpdf' in - main_set_resources(); in main_display() fix the display structure. - - Set default X Window resolution to 75dpi. This is not optimal, - but with a higher value the options and resources for some viewers - must be optimized. - `--text' and `--mode text': new option for text output without a - pager. - - `--tty-viewer': new option equivalent to `--pager'. - - Correct the pagers for `tty' mode. - - Fix `groff' mode in main_set_resources() and main_display(). - - Harmonize `--mode arg' with the equivalent options `--arg'. - - - ******* Fixes for command line options - - * groffer.sh: - - list_from_cmdline(): fix the parsing of options with arguments. - - Rename $_OPT_TTY_DEVICE to $_OPT_TEXT_DEVICE. - - $_OPTS_X_*: new variables for the inhereted X Window variables. - - Improve the distribution of the command line options into - $_OPTS_GROFFER_*, $_OPTS_GROFF_*, $_OPTS_X_*, and $_OPTS_MAN_*. - - $_OPTS_MANOPT_*: new variables for the parsing of $MANOPT. - - Correct $_OPTS_CMDLINE_*. - - Remove some unused $_OPTS_*. - - `--iconic': new option from `-iconic' of the X Window toolkit. - - Correct `--rv' to an option without argument. - - Minor fixes of other X Window toolkit options. - - - ******* Other fixes - - * groffer.sh: - - is_prog(): allow 0 arguments. - - is_not_writable(): new function. - - is_*(): fix trailing return codes. - - Replace most `test' calls by is_*() functions. - - man_setup(): due to bugs in `manpath', prefer - manpath_set_from_path() for the determination of the man page path. - - man_search_section(): correction of some `for' loops. - - Remove export of external non-groffer variables. - - - ******* Documentation - - * groffer.man: - - Reorder the option details according to the option origin as - groffer, groff, X, and man options. - - Add the programming changes information mentioned above. - - Support man pages with a dot in their name - - * README_SH: new file - Move large parts of the documentation in `groffer.sh' into this - file. - - * groffer.sh: usage(): - - Change the output for `--help' to standard output. - - Restructure the information for this help output. - - - ******* Removement of the author's email address - - Because of the extreme spam attacks, the author removed all - occurencies of his email address in every file of the groffer - source. - -2003-01-22 Bernd Warken - ________________________________________________________________ - * release of groffer 0.9.4 - - * groffer.sh: corrections for some restrictive shells - - Possible exit codes in actual `ash' are between 0 and 63. To - handle even deeper restrictions, use 7 as maximal code instead - of 255 as replacement for error -1. - - Remove variables $_BAD2 and $_BAD3. - - Replace `trap' argument `EXIT' by 0 and write new fuctions - `trap_clean' and `trap_set' to handle the restrictions of `trap' - for some shells. - - Correct wrong $MANPATH to $_MAN_PATH in function - `man_do_filespec'. - - Test existence of directory before deleting it in the - `clean_up' definitions. - - Correct help output in `usage' (called by `--help'). - - * TODO: - Remove mention of `shoop' and `apropos'. - -2002-10-21 Bernd Warken - ________________________________________________________________ - * release of groffer 0.9.3 - - * groffer.sh: new temporary subdirectory - - Generate temporary subdirectory for storing temporary files - with better names in future groffer versions (name: - "groffer$$" in usual temporary directory). - - Use `umask 000' for temporary files to allow cleaning up - for everyone after a system break. - - Change both clean_up() functions (for normal shell and - for main_display() subshell) to handle the new subdirectory. - - clean_up_secondary() and $_TMP_PREFIX are unnecessary now, so - they were removed. - - * Makefile.sub: `sed' commands for "groffer:" - - Remove "@g@" entry (not used in "groffer.sh"). - - Add global replace for "@BINDIR@" and "@VERSION@" for future - usage. - - * TODO: think about... - - writing part of groffer in C/C++. - - handling several files with different macro packages. - -2002-10-17 Bernd Warken - ________________________________________________________________ - * fixes of groffer 0.9.2 - - * groffer.sh: - Terminate main_parse_MANOPT() if $MANOPT is empty or consists - of space characters only. - - * groffer.man: some fixes in "GROFFER OPTIONS" - - New macro ".Header_CB" for CB font in .TP headers; used for - definition of variables in option --mode. - - Fix some option references to refer to long options. - - * README: - New file for general information on the groffer source; it is - not installed. - -2002-10-14 Bernd Warken - - * Makefile.sub: - add replacement "@BINDIR@" to "$(bindir)" for "groffer:" - - * groffer.sh: - Define $_this as "@BINDIR@/${_PROGRAM_NAME}" to save the right - installation position of groffer for the special shell calling. - - * groffer.man: - Remove double definition of filespec parameters. - -2002-10-13 Bernd Warken - ________________________________________________________________ - * release of groffer 0.9.2 - - * groffer.sh: fixes - - Fix some 'sed' functions: two in func_stack_dump(), one in - base_name(), add 'sed' command in list_from_cmdline(). - - Finish main_parse_MANOPT() if $MANOPT is empty. - - Sort $_OPTS_GROFF_SHORT_NA like groff short options (but - unchanged). - - Fix some comments. - - * groffer.man: make it more readable (but no additions) - - A shortened section "SYNOPSIS" is followed by a simplified - section "DESCRIPTION". - - The options from "SYNOPSIS" go to new section "OPTION - OVERVIEW" with all groffer options in a single subsection. - - The details of all groffer options are described in section - "GROFFER OPTIONS". - - New macro for file names ".File_name". - - "Option Parsing" is moved to section "COMPATIBILITY". - - Fix some "EXAMPLES". - -2002-09-30 Bernd Warken - ________________________________________________________________ - * release of groffer 0.9.1 - - * TODO: remove done entries - - Remove request for different shells. - - Remove the 'sed' complaints. - -2002-07-15 Bernd Warken - - * groffer.sh: replace `sed' interface by direct `sed' - - This improves the performance of the shell programming parts - and shortens the groffer script by about 5%. - - Remove functions: string_del_append(), string_del_leading(), - string_del_trailing(), string_flatten(), string_get_before(), - string_get_leading(), string_replace_all(), string_sed_s(), - and their auxiliary functions. - - Replace all calls of these functions by direct `sed' commands. - - Define variables for special characters to ease `sed' calls. - - Remove `$APPEND'. - - Restrict list_from_string() to single character separators. - - Correct list_check() and base_name(). - - Add comments to all calls of `sed'. - - * groffer.sh: add run-time support for several shells - - New option `--shell': stop execution and rerun groffer under - the shell specified in the argument of `--shell'. - - If no shell was specified at run-time, `ash' is tried first; - if `ash' is not available continue with the shell with which - groffer was called from the command line, or with the shell - name in the first line of the script, actually `/bin/sh'. - -2002-07-12 Bernd Warken - ________________________________________________________________ - * fixes for groffer 0.9.0 - - * groffer.sh: enhance version information - `groffer -v|--version' now print: - - groffer's version number and date - - the string `is part of ' - - groff's version information (version number and copyright), - but not groff's `called subprograms' information. - - * groffer.sh: minor fixes - - Fix the argument parser to process argument `-' correctly. - - Some display programs have trouble with empty input; feed a - line consisting of a single space character in this case for - all display modes (not for source or groff modes). - - * TODO: - fix entry `shoop' (not 'shopt'). - -2002-06-28 Bernd Warken - ________________________________________________________________ - * release of groffer 0.9.0 - - * groffer.sh: new mode `pdf' - - PDF (Portable Document Format): - -> Transform groff `ps' output into pdf using `gs'. - -> Pro: PDF viewers provide text searching (!). - -> Con: the transformation is quite slow. - -> Not suitable as an auto mode. - - New options `--pdf', `--pdf-viewer', `--mode pdf'. - - Standard pdf viewers `xpdf' and `acroread'. - - For `xpdf', choose zoom `z 3' for 100 dpi, `z 2' for 75 dpi. - - * groffer.sh: support bzip2 decompression - - add test for `bzip2' with necessary options - - extend functions `catz()' and `save_stdin()'. - - * TODO - remove entry on `bzip' decompression (done). - - * groffer.man: - - Document new `pdf' features. - - Document new `bzip2' decompression. - - Fix documentation for `--auto-modes'. - - * groffer.sh: minor fixes - - Improve device tests in `tty' and `dvi' modes. - - Internally, map mode `auto' to '' to facilitate tests. - - Fix auto mode sequence to: `ps,x,tty' as was intended. - -2002-06-25 Bernd Warken - - * groffer.sh: - Fix `source' mode. - - * groffer.man: - Fix some indentations. - -2002-06-23 Bernd Warken - ________________________________________________________________ - * release of groffer 0.8 - - * Makefile.sub: add copyright section - - * groffer.man: - - Document the new options. - - Revise the documentation of the modes. - - Document the configuration files in new section `FILES'. - - Redesign section `EXAMPLES'. - - Remove documentation for `-W'. - - * groffer.sh: new debugging features - - Disabled by default; enabled by environment variables. - - Add landmark() to catch typos with quotes. - - Add a function call stack for suitable functions; implemented - as within the argument checker func_check(). - - This implies the need to provide `return' with some clean-up - facility; implemented as `eval "$_return_..."'. - - Add option `--debug' to enable debugging at run-time. - - Actually, the groffer script uses only shell builtins found - in `ash' (a subset of POSIX) and POSIX `sed' as the only - external shell utility. - - * groffer.sh: customization of viewers - - In `groff' mode, the groffer viewing facilities are disabled. - - The postprocessor option `-P' costumizes the viewer only in - some situations in the `groff' mode, so a new infrastructure - for viewer customization is necessary. - - Allow to specify arguments to the viewer programs specified - in `--*-viewer()'. - - Implement some of the essential X Toolkit resource options in - groffer, but with use a leading double minus. - -> `--bd': set border color. - -> `--bg', `--background': set background color. - -> `--bw': set border width. - -> `--display': set X display. - -> `--geometry': set size and position of viewer window. - -> `--fg', `--foreground': set foreground color. - -> `--ft', `--font': set font. - -> `--resolution': set X resolution in dpi. - -> `--title': set viewer window title. - -> `--xrm': set X resource. - - Remove misnamed option `--xrdb'. - - * groffer.sh: new mode structure - - New Postcript mode `ps' (`--ps'): - -> default viewers: gv,ghostview,gs_x11,gs; - -> `--ps-viewer' sets the Postscript viewer. - - New mode `www' (`--www') for displaying in a web browser: - -> default browsers: mozilla,netscape,opera,amaya,arena; - -> `--www-viewer' sets the web browser. - - New dvi mode (`--dvi'); default viewer `xdvi': - -> default viewers: xdvi,dvilx; - -> `--dvi-viewer' sets the dvi viewer. - - New mode `auto': - -> active if no other mode is given or by new option `--auto'; - -> selects from a sequence of modes that are tested until one - of them succeeds. - -> the default mode sequence is actually `ps', `x', `tty'. - -> `--default-modes' sets this mode sequence as a comma - separated string of program names, optionally each one - with arguments). - - New mode `groff': - -> process input like groff, ignore viewing options. - -> activated by new option `--groff'. - -> automatically active with one of `-V', `-X', `-Z'. - - Revise `tty' mode: - -> allow several text devices. - -> - - Reorganize the mode management: - -> new mode setting option `--mode'. - -> logically separate source, groff, and display modes. - -> intermediate output mode is now part of mode groff; remove - any special features around `-Z'. - - Update usage() to reflect the new option structure. - - * groffer.sh: add configuration files - - `/etc/groff/groffer.conf' system-wide configuration. - - `${HOME}/.groff/groffer.conf' user configuration. - - The configuration file are shell scripts for now; later - implementations can identify this from the `#! /bin/sh' line. - - * groffer.sh: new data structure `list': - - Implement a `list' data structure as a string consisting of - single-quoted elements, separated by a space character; - embedded single-quotes are escaped. - - * groffer.sh: new option parser based on `list': - - Write new option parser based on `list', compatible to both - POSIX getopts() and GNU getopt(). - - Long options are now available on GNU and non-GNU systems. - - Get rid of POSIX getopts() and GNU getopt(). - - the `-W--longopt' construct is now obsolete; remove it. - - add test/function for `unset'. - - Option strings are now implemented as `list's in order to - allow unusual characters in options. - - Parse $MANOPT first; translate essential arguments into - groffer options. - - * groffer.man: - - determine prompt length for `.Shell_cmd'* dynamically. - - naming scheme for static strings and registers changed to - `namespace:macro.variable'. - - -2002-06-16 Werner Lemberg - - * groffer.sh: - Implement man option `--ascii' by `-mtty-char'. - - -2002-05-31 Werner LEMBERG - - * groffer.man (@.Shell_cmd_width): - Increase to 4m (we use `sh#' as the prompt). - - -2002-05-31 Bernd Warken - ________________________________________________________________ - * release of groffer 0.7 - - * groffer.sh: remove incompatibilities with the `ash' shell: - - do not use `!command': - -> use `else' - -> write `_not_' equivalents for some functions - - do not use `[^]' in `case': - -> restructure some functions. - - only single-character names for loop variables: - -> spoils the paradigm of leading `_' for local variables. - - spurious trouble with `for i in ${var}': - -> use `eval set -- ${var}' and `for i in "$@"' - - do not change or use $IFS: - -> define new functions string_split() and `path_split()'. - -> result must be processed by `eval set --'. - -> solve conflicts with existing positional parameters. - - trouble with exporting external `$GROFF_*' variables: - -> hope that they were exported in the calling shell. - - not smart about additional blanks: - -> remove unnecessary white space. - - * groffer.sh: improve run-time speed: - - `ash' more than doubles the speed of `bash'. - - speed-up `man_setup()'. - - -2002-05-30 Werner Lemberg - - * groffer.man: - - remove some wrong `\:'. - - rename macro names that start with a `[' (clashes with refer). - - fix TP_header. - - -2002-05-28 Bernd Warken - ________________________________________________________________ - * release of groffer 0.6 - - This is almost a complete rewrite since groffer 0.5 . - ________________________________________________________________ - * Documentation - - * groffer.man: - - Apply the changes done in www.tmac (.URL and .MTO) - - Replace \fP by \f[]. - - Redesign and rewrite most macros. - - Include the documentation for the new features. - - Greatly enlarge section ENVIRONMENT - - Add examples. - - * TODO: - - Start a TODO file with several sections. - - * ChangeLog: - Due to the many changes, shorten and rearrange the entries - since groffer 0.5 . - ________________________________________________________________ - * Shell compatibility - - * groffer.sh: - - Due to possible conflicts in old BSD versions, `[]' was - replaced by `test'; the `test' options `-a' and `-o' were - replaced by multiple calls of `test'. - - Write interface to the `sed' command `s' to become - independent of the delimiter character. Rewrite all text - manipulating function to use this new scheme. The new - functions are named `string_*'. - - `tr' is not needed any longer, replaced by `sed'. - - `grep' is not needed any longer, mostly replaced by `case'. - - Revision of test for `getopt'. - - Remove `set -a'; explicitly export variables. - - The only external programs used are POSIX `sed' and the - fallback to `apropos'. All other program calls were - replaced by shell builtins and functions. - - ________________________________________________________________ - * Cosmetics - - * groffer.sh: - - Implement a prefix based naming scheme for local variables - and functions (OOP-like). - - Introduce variables for white space (better readability with - $IFS). - - Store the names of the processed filespecs into a variable - instead of a temporary file. - - Error-prone shell constructions were replaced by functions - with a simple interface. - - To avoid too long pipes, replace supercat() by do_fileargs(); - every input file is handled independently. - - ________________________________________________________________ - * New features: - - Add support for more X devices (e.g. X75-12 and X100-12). - - Add long option `--intermediate_output' to `-Z'. - - Make the options for mode selection clobber each other. - - Add option `--mode' with an argument having the following - values: - `X': force displaying in X, same as options `-X'; - `tty': display with a pager on text terminal; same as `--tty'; - `source', `default', `auto', etc. - - Make the handling of the X mode like in groff (e.g. -X -Tps). - - Make resolution for gxditview behave like groff (default - 75 dpi). - - Add environment variable $GROFFER_OPT to preset groffer - options. - - ________________________________________________________________ - * implement most of the functionality of GNU `man'. - - - Add all `man' long options to groffer. - - Add all `man' environment variables. - - Parse and use content of `$MANOPT'. - - The precedence of the options and environment variables - is regulated like in GNU `man'. - - Force the option `--manpath' to have a colon-separated - argument like GNU `man'. - - Support `man section name' calling convention. - - Remove all dependencies on `man -w'. - - * groffer.sh: - - Add the new features above. - - Rewrite the search algorithm for man pages. - - Remove searching with `man -w' (problems with space - characters in file names). - - Fix and complement usage(). - - The filespec parsers gets a function of its own do_manpage(). - - -2002-01-08 Bernd Warken - - * groffer 0.5 (beta) released - - * groffer.man: - - Fix hyphenation problems with macros describing options. - - Fix the handling of some `-' characters. - - Examples of shell commands now print in font CR instead of CB. - - Remove documentation for option `-X'. - - Add documentation for option `--dpi'. - - * groffer.sh: - - New method for creating temporary files, based on process - IDs. This is reliable enough and suitable for GNU and POSIX. - - Run gxditview in a new shell instantiation for having a clean - handling of the temporary files when running in the - background. - - Revision of the retrieving method for the window title. - - Empty input is now tolerated. - - Export the variables that are set before the call of `set -a'. - - Function usage() corrected and updated. - - Unnecessary stuff removed. - - Comments adjusted. - - Pass option `-X' to groff, i.e. force X output with 75 dpi. - - Implement option `--dpi' for setting the resolution for the X - viewer, which had already been documented in earlier versions. - -2002-01-07 Bernd Warken - - * groffer 0.4 (beta) released (as groff `contrib') - - * groffer.man: - - New features documented. - - Macros stream-lined. - - Section EXAMPLES added. - - * groffer.sh: - - System tests added/optimized. - - Speed/memory optimizations by defining some shell functions - alternatively depending on the text results. - - Use `gzip' for decompression instead of `zcat'. - - Signal handling added for clean exiting by `trap'. - - Temporary files exist only as long as necessary. - - Setup of path for man-pages moved after the option parsing. - - Fixed a bug in determining the path for man-pages. - - Fixed a bug in the handling of non-groffer options. - - * New features: - - New option --tty for forcing paging on text terminal. - - New option --no-man for disabling the man-page feature. - - Implement reserved POSIX -W feature to simulate long options. - - gxditview is now run as a background process. - -2002-01-05 Werner LEMBERG - - * Integrate groffer into groff's `contrib' tree. - - * Makefile: Replaced by... - Makefile.sub: New file. - - * groffer: Replaced by... - groffer.sh: New file. - - * groffer.man (OptDef): Add missing backslashes. - Update copyright. - -2001-12-15 Bernd Warken - - * groffer 0.3 (alpha) released (still stand-alone package). - - * GNU and POSIX are supported (POSIX without long options). - - * New options : --man, --mandb, --title, --xrdb - - * Support for command line arguments with embedded single space - characters (GNU only) . - - * Several search methods for man-pages when no `man -w' is - available ($MANPATH, mandb, a default path). - - * Language support for man-pages. - - * Recognize the following filespecs as man-page parameters: - man:name(section), man:name, name.section, name. - -2001-12-03 Bernd Warken - - * Stand-alone package for groffer 0.2 (alpha) created - Files: groffer, groffer.man, Makefile, TODO, ChangeLog - -2001-12-02 Bernd Warken - - * groffer 0.2 (alpha) program released. - - * Name changed from `groffview' to `groffer'. - - * Comments added. - - * Name changed from `groffview' to `groffer'. - - * Options harmonized with groff. - New options : -Q --source, -T --device, -X . - Other options known from groff are passed unchanged. - - * 100 dpi as default, 75 dpi only in emergency situations. - - * Bugs with temporary files fixed. - - * Code restructured and comments added. - -2001-11-28 Bernd Warken - - ***** groffview 0.1 (experimental) and groffview.man released - (predecessor of groffer, shell script) - - * Options : -h --help, -v --version - - * Search for man-pages based on $MANPATH - - * development of `groffview' shell script started - -2001-11-28 Bernd Warken - - ________________________________________________________________ - License - - Copyright (C) 2001,2002,2003,2004,2005 - Free Software Foundation, Inc. - Written by Bernd Warken - - Copying and distribution of this file, with or without - modification, are permitted provided the copyright notice and this - notice are preserved. - - This file is part of `groffer', which is part of the `groff' - project. diff --git a/contrib/groff/contrib/groffer/Makefile.sub b/contrib/groff/contrib/groffer/Makefile.sub deleted file mode 100644 index 54dfce40933b..000000000000 --- a/contrib/groff/contrib/groffer/Makefile.sub +++ /dev/null @@ -1,60 +0,0 @@ -# Makefile.sub for `groffer' (integration into the `groff' source tree) - -# File position: /contrib/groffer/Makefile.sub - -# Copyright (C) 2001,2002,2005 Free Software Foundation, Inc. -# Written by Werner Lemberg and Bernd Warken. - -# Last update: 15 August 2005 - -# This file is part of `groffer' which is part of `groff'. - -# `groff' is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# `groff' is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with `groff'; see the files COPYING and LICENSE in the top -# directory of the `groff' source. If not, write to the Free Software -# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. - -######################################################################## - -MAN1=groffer.n -CLEANADD=groffer - -# not all make programs have $(RM) predefined. -RM=rm -f - -all: groffer - -groffer: groffer.sh groffer2.sh $(SH_DEPS_SED_SCRIPT) - $(RM) $@; - sed -f $(SH_DEPS_SED_SCRIPT) \ - -e "s|@g@|$(g)|g" \ - -e "s|@BINDIR@|$(bindir)|g" \ - -e "s|@libdir@|$(libdir)|g" \ - -e "s|@VERSION@|$(version)$(revision)|g" \ - -e $(SH_SCRIPT_SED_CMD) $(srcdir)/groffer.sh >$@; - chmod +x $@ - -install_data: groffer - -test -d $(bindir) || $(mkinstalldirs) $(bindir) - -$(RM) $(bindir)/groffer - $(INSTALL_SCRIPT) groffer $(bindir)/groffer - -test -d $(libdir)/groff/groffer || \ - $(mkinstalldirs) $(libdir)/groff/groffer - -$(RM) $(libdir)/groff/groffer/groffer2.sh - $(INSTALL_SCRIPT) $(srcdir)/groffer2.sh \ - $(libdir)/groff/groffer/groffer2.sh - -uninstall_sub: - -$(RM) $(bindir)/groffer - -$(RM) $(libdir)/groff/groffer/groffer2.sh - -rmdir $(libdir)/groff/groffer diff --git a/contrib/groff/contrib/groffer/README b/contrib/groff/contrib/groffer/README deleted file mode 100644 index 66d36123e62b..000000000000 --- a/contrib/groff/contrib/groffer/README +++ /dev/null @@ -1,104 +0,0 @@ -README - -The `groffer' program is the easiest way to read documents written in -some `roff' language, such as the `man pages', the manual pages in -many operating systems. - - -Input - -Input comes from either standard input or command line parameters that -represent names of exisiting roff files or standardized specifications -for searching man pages. All of these can be compressed in a format -that is decompressible by `gzip', including `.gz', `bz2', and `.Z'. - -`groffer' has many built-in `man' functionalities to find and read the -manual pages on UNIX and similar operating systems. It accepts the -information from an installed `man' program, but tries to find a man -path by itself. - -`groffer' bundles all filespec parameters into a single output file in -the same way as `groff'. The disadvantage of this is that all file -name arguments must use the same groff language. To change this, the -option parsing must be revised for large parts. It seems that this -would create incompatibilities, so the actual option strategy is kept. - - -Output - -All input is first sent to `grog' to determine the necessary `groff' -options and then to `groff'. So no special `groff' arguments must be -given. But all `groff' options can be specified when this seems to be -appropriate. - -The following displaying modes for the output are available: -- Display formatted input with --- the X `roff' viewer `gxditview', --- a Postcript viewer, --- a PDF viewer, --- a DVI viewer, --- a web browser, --- a pager in a text terminal (tty). -- Generate `groff' output on stdout without a viewer. -- Generate the `groff intermediate output' on standard output without - postprocessing. -- Output the source code without any `groff' processing. -- There are some information outputs without `groff' processing, such - as by option `-V' and the `man' like `whatis' and `apropos' - outputs. - -By default, the program tries to display with `gxditview' as graphical -device in X; on non-X text terminals, the `tty' text mode with a pager -is tried by default. - - -Compatibility - -`groffer' consists of two shell scripts. It should run on any POSIX -or Bourne style shell that supports shell functions. See file -`README_SH' for more information. - - -Mailing lists - -For reporting bugs of `groffer', groff's free mailing list - can be used. - -For a general discussion, the mailing list is more -useful, but one has to subscribe to this list at -http://lists.gnu.org/mailman/listinfo/groff. - -See the `README' file in the top directory of the `groff' source -package for more details on these mailing lists. - - -####### License - -Last update: 2 August 2005 - -Copyright (C) 2003,2004,2005 Free Software Foundation, Inc. -Written by Bernd Warken - -This file is part of `groffer', which is part of `groff'. - -`groff' is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -`groff' is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License -along with `groff'; see the files COPYING and LICENSE in the top -directory of the `groff' source. If not, write to the Free Software -Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. - - -####### Emacs settings - -Local Variables: -mode: text -End: diff --git a/contrib/groff/contrib/groffer/README_SH b/contrib/groff/contrib/groffer/README_SH deleted file mode 100644 index 05d085e5cb0e..000000000000 --- a/contrib/groff/contrib/groffer/README_SH +++ /dev/null @@ -1,268 +0,0 @@ -Additional description for the shell version of `groffer' - - -Scripts - -The shell version of `groffer' contains two files, `groffer.sh' and -`groffer2.sh'. - -`groffer.sh' is a short introductory script without any functions. I -can be run with a very poor Bourne shell. It just contains some basic -variables, the reading of the configuration files, and the -determination of the shell for `groffer2.sh'. This script is -transformed by `make' into `groffer' which will be installed into -@bindir@, which is usually /usr/local/bin. - -`groffer2.sh' is a long main script with all functions; it is called -by `groffer.sh' (`groffer' after installation). It is installed -unchanged into @libdir@/groff/groffer, which is usually -/usr/local/lib/groff/groffer. This script can be called with a -different shell, using the `groffer' option `--shell'. - - -Options - -The `groffer' script provides its own option parser. It is compatible -to the usual GNU style command line This includes long option names -with two signs such as `--option', clusters of short options, the -mixing of options and non-option file names, the option `--' to close -the option handling, and it is possible to abbreviate the long option -names. - -The flexible mixing of options and file names in GNU style is always -possible, even if the environment variable `$POSIXLY_CORRECT' is set -to a non-empty value. This disables the rather wicked POSIX behavior -to terminate option parsing when the first non-option command line -argument is found. - - -Error Handling - -Error handling and exit behavior is complicated by the fact that -`exit' can only escape from the current shell; trouble occurs in -subshells. This was solved by sending kill signals, see $_PROCESS_ID -and error(). - - -Function Definitions in `groffer2.sh' - -Each funtion in groffer2.sh has a description that starts with the -function name and symbols for its arguments in paranthesis `()'. Each -`<>' construction gives an argument name that just gives a hint on -what the argument is meant to be; these argument names are otherwise -irrelevant. The `>' sign can be followed by another character that -shows how many of these arguments are possible. - - exactly 1 of this argument -? 0 or 1 of these arguments -* arbitrarily many such arguments, incl. none -+ one or more such arguments -... one or more such arguments -[...] optional arguments - -A function that starts with an underscore `_' is an internal function -for some other function. The internal functions are defined just -after their corresponding function. - - -External Environment Variables - -The groffer.sh script uses the following external system variables. -It is supposed that these variables are already exported outside of -groffer.sh; otherwise they do not have a value within the script. - -external system environment variables that are explicitly used -$DISPLAY: Presets the X display. -$LANG: For language specific man pages. -$LC_ALL: For language specific man pages. -$LC_MESSAGES: For language specific man pages. -$PAGER: Paging program for tty mode. -$PATH: Path for the programs called (`:' separated list). - -groffer native environment variables -$GROFFER_OPT preset options for groffer. - -all groff environment variables are used, see groff(1) -$GROFF_BIN_PATH: Path for all groff programs. -$GROFF_COMMAND_PREFIX: '' (normally) or 'g' (several troffs). -$GROFF_FONT_PATH: Path to non-default groff fonts. -$GROFF_TMAC_PATH: Path to non-default groff macro files. -$GROFF_TMPDIR: Directory for groff temporary files. -$GROFF_TYPESETTER: Preset default device. - -all GNU man environment variables are used, see man(1). -$MANOPT: Preset options for man pages. -$MANPATH: Search path for man pages (: list). -$MANROFFSEQ: Ignored because of grog guessing. -$MANSECT: Search man pages only in sections (:). -$SYSTEM: Man pages for different OS's (, list). - - -Object-oriented Functions - -The groffer script provides an object-oriented construction (OOP). In -object-oriented terminology, a type of object is called a `class'; a -function that handles objects from a class is named `method'. - -In the groffer script, the object is a variable name whose content is -the object's data. Methods are functions that have an object as first -argument. - -The basic functions for object handling are obj_*(). - -The class `list' represents an array structure, see list_*(). - - -Shell Compatibility - -The `groffer' shell scripts are compatible to both the GNU and the -POSIX shell and utilities. Care was taken to restrict the programming -technics used here in order to achieve POSIX compatibility as far back -as POSIX P1003.2 Draft 11.2 of September 1991. This draft is -available at http://www.funet.fi/pub/doc/posix/p1003.2/d11.2 in the -internet. - -The POSIX draft does not include `local' variables for functions. So -this concept was replaced by global variables with a prefix that -differs for each function. The prefix is chosen from the function -name. These quasi-local variables are unset before each return of the -function. - -The `groffer' scripts were tested under the shells `ash', `bash', -`bash-minimal', `dash', 'ksh', `mksh', `pdksh', 'posh', and `zsh' -without problems in Linux Debian. A shell can be tested by the -`groffer' option `--shell', but that will run only with groffer2.sh. -To start it directly from the beginning under this shell the following -command can be used. - - groffer.sh --shell= ... - - -Some shells are not fully POSIX compatible. For them the following -restrictions were done. For more information look at the -documentation `Portable shells' in the `info' page of `autoconf' -(look-up in Emacs-Help-Manuals_Info). - -- The command parts `then', `else', and `do' must be written each on a - line of their own. - -- Replace `for i in "$@"' by `for i' and remove internal `;' (kah). - -- Replace `set -- ...' by `set x ...; shift'. After the first - non-option argument, all arguments including those starting with `-' - are accepted as non-option. For variables or `$()' constructs with - line-breaks, use `eval set' without quotes. That transforms a - line-break within a variable to a space. - -- The name of the variable in `for' is chosen as a single character - (old ash). The content of such variables is not safe because it can - also occur in other functions. So it is often stored in an - additional quasi-local variable. - -- `echo' is not portable on options; some `echo' commands have many - options, others have none. So `echo -n' cannot be used, such that - the output of each function has complete lines. There are two - methods to avoid having `-' as the first character of any argument. - Either a character such as `x' can be prepended to the argument; - this must later on be removed by `sed'. Otherwise, `echo' can be - replaced by `cat </contrib/groffer/TODO - - -####### TODO - -Revision: - -Optimization: -- Optimize `man' path determination in manpath_add_lang_sys() for speed - by building-up the `man' path only by and by as far as necessary - (not trivial). -- To increase the running speed write part of the `groffer' shell - script in C/C++. - -Features of external programs: -- Revise option handling of `grog'. - -Documentation: -- Improve the documentation of the search algorithm for `man' pages in - both the `groffer' scripts and the `man' page `groffer.man'. -- In `groffer.man', add more documentation for parts that were taken - over from GNU `man'. -- The documentation in the headers for some function definitions in - `groffer2.sh' needs to be updated. - - -####### License - -Last update: 16 August 2005 - -Copyright (C) 2003,2004,2005 Free Software Foundation, Inc. -Written by Bernd Warken - -This file is part of `groffer', which is part of `groff'. - -`groff' is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -`groff' is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -License for more details. - -You should have received a copy of the GNU General Public License -along with `groff'; see the files COPYING and LICENSE in the top -directory of the `groff' source. If not, write to the Free Software -Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. - - -####### Emacs settings - -Local Variables: -mode: text -End: diff --git a/contrib/groff/contrib/groffer/groffer.man b/contrib/groff/contrib/groffer/groffer.man deleted file mode 100644 index 80177d6c26e9..000000000000 --- a/contrib/groff/contrib/groffer/groffer.man +++ /dev/null @@ -1,4018 +0,0 @@ -.TH GROFFER @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" -.SH NAME -groffer \- display groff files and man\~pages on X and tty -. -.SH "SYNOPSIS" -.\" The .SH was moved to this place in order to appease `apropos'. -. -.\" -------------------------------------------------------------------- -.\" Legalize -.\" -------------------------------------------------------------------- -. -.ig -groffer.1 - man page for groffer (section 1). - -Source file position: /contrib/groffer/groffer.man -Installed position: $prefix/share/man/man1/groffer.1 - -Last update: 22 August 2005 - -Source file position: /contrib/groffer/groffer.man -.. -.de author -This file was written by -.MTO "" "Bernd Warken" . -.. -.de copyleft -Copyright (C) 2001,2002,2004,2005 Free Software Foundation, Inc. -. -.P -This file is part of -.IR \%groffer , -which is part of -.IR \%groff , -a free software project. -. -You can redistribute it and/or modify it under the terms of the -.nh -.B GNU General Public License -.hy -as published by the -.nh -.BR "Free Software Foundation" , -.hy -either version 2, or (at your option) any later version. -. -.P -You should have received a copy of the \f[CR]GNU General Public -License\f[] along with -.IR groff , -see the files \%\f[CB]COPYING\f[] and \%\f[CB]LICENSE\f[] in the top -directory of the -.I groff -source package. -. -Or read the -.I man\~page -.BR gpl (1). -You can also write to the -.nh -.B Free Software Foundation, 51 Franklin St - Fifth Floor, Boston, -.BR "MA 02110-1301, USA" . -.hy -.. -. -.\" -------------------------------------------------------------------- -.\" Setup -.\" -------------------------------------------------------------------- -. -.mso www.tmac -. -.if n \{\ -. mso tty-char.tmac -. ftr CR R -. ftr CI I -. ftr CB B -.\} -. -.if '\*[.T]'dvi' \{\ -. ftr CB CW -.\} -. -.ds Ellipsis ".\|.\|.\"" -. -.\" -------------------------------------------------------------------- -.\" setup for the macro definitions below -.\" -.\" naming: namespace:cathegory_macro.variable_name (experimental) -. -.\" -------------------------------------------------------------------- -.\" configuration of prompt for `.Shell_cmd'* macros -.ds groffer:Shell_cmd.prompt_text sh#\" prompt for shell commands -.ds groffer:Shell_cmd+.prompt_text >\" prompt on continuation lines -.ds groffer:Shell_cmd_base.prompt_font I\" font for prompts -. -.\" automatically determine setup from the configuration above -.als @f groffer:Shell_cmd_base.prompt_font\" -.als @t groffer:Shell_cmd.prompt_text\" -.als @t+ groffer:Shell_cmd+.prompt_text\" -.ds groffer:Shell_cmd.prompt \f[\*[@f]]\*[@t]\f[]\" needed -.ds groffer:Shell_cmd+.prompt \f[\*[@f]]\*[@t+]\f[]\" needed -.nr @w \w'\*[groffer:Shell_cmd.prompt]'\" -.nr @w+ \w'\*[groffer:Shell_cmd+.prompt]'\" -.ft \*[@f] -.\" Full prompt width is maximum of texts plus 1m -.nr groffer:Shell_cmd_base.prompt_width (\n[@w]>?\n[@w+]+1m)\" needed -.ft -.rm @f -.rm @f+ -.rm @t -.rm @t+ -.rr @w -.rr @w+ -. -.\" -------------------------------------------------------------------- -.\" static register for inter-macro communication in `.Synopsis'* -.nr groffer:Synopsis.level 0 -. -.\" -------------------------------------------------------------------- -.\" static registers for inter-macro communication in `.TP'* -.nr groffer:TP.level 0 -.rr groffer:TP_header.flag -.rr groffer:TP_body.flag -.rr groffer:TP.indent -. -. -.\" -------------------------------------------------------------------- -.\" Macro definitions -. -.\" Ignore all arguments like a comment, even after a .eo call. -.de c -.. -.c -------------------------------------------------------------------- -.c .CB (...) -.c -.c Print in constant-width bold font. -.c -.de CB -. ft CB -. Text \\$* -. ft -.. -.c -------------------------------------------------------------------- -.c .CI (...) -.c -.c Print in constant-width italic font. -.c -.de CI -. ft CI -. Text \\$* -. ft -.. -.c -------------------------------------------------------------------- -.c .CR (...) -.c -.c Print in constant-width roman font. -.c -.de CR -. ft CR -. Text \\$* -. ft -.. -.c -------------------------------------------------------------------- -.c .Error (...) -.c -.c Print error message to terminal and abort. -.c -.de Error -. tm \\$* -. ab -.. -.c -------------------------------------------------------------------- -.c .Env_var ( []) -.c -.c Display an environment variable, with optional punctuation. -.c -.de Env_var -. nh -. SM -. Text \f[CB]\\$1\f[]\\$2 -. hy -.. -.c -------------------------------------------------------------------- -.c .File_name () -.c -.c Display a file or directory name in CB font. -.c -.de File_name -. Header_CB \\$@ -.. -.c -------------------------------------------------------------------- -.c .Header_CB () -.c -.c Display a line in CB font, for example after .TP -.c -.de Header_CB -. nh -. Text \f[CB]\\$1\f[]\\$2 -. hy -.. -.c -------------------------------------------------------------------- -.c .Opt_- ([]) -.c -.c Print `-' (minus sign); optional punctuation. -.c -.de Opt_- -. ie (\\n[.$] == 0) \ -. Opt_alt - "" -. el \ -. Opt_alt - "" "\\$1" -.. -.c -------------------------------------------------------------------- -.c .Opt_[-] ([]) -.c -.c Print `Opt_[-]' (minus sign in brackets); optional punctuation. -.c -.de Opt_[-] -. ie (\\n[.$] == 0) \ -. Opt_[alt] - "" -. el \ -. Opt_[alt] - "" "\\$1" -.. -.c -------------------------------------------------------------------- -.c .Opt_-- ([]) -.c -.c Print `--' (double minus); optional punctuation. -.c -.de Opt_-- -. ie (\\n[.$] == 0) \ -. Opt_alt -- "" -. el \ -. Opt_alt -- "" "\\$1" -.. -.c -------------------------------------------------------------------- -.c .Opt_[--] ([]) -.c -.c Print `Opt_[--]' (double minus in brackets); optional punctuation. -.c -.de Opt_[--] -. ie (\\n[.$] == 0) \ -. Opt_[alt] -- "" -. el \ -. Opt_[alt] -- "" "\\$1" -.. -.c -------------------------------------------------------------------- -.c .Opt_alt ([ ]... [ []]) -.c -.c Alternate options separated by a vertical bar. -.c -.c Arguments: -.c minus: either `-' or `--' (font CB). -.c opt: a name for an option, empty allowed (font CB). -.c arg: optionally, the argument to the option (font I). -.c punct: optional punctuation (in the starting font). -.c Result: -.c The minus/opt argument pairs, each -.c separated by a vertical bar `|', optionally add 'arg', separated -.c a space character ` '. -.c -.c Example: -.c .Opt_alt - T -- device -- device-troff device . -.c results in -.c -T|--device|--device-troff device. -.c -.de Opt_alt -. Opt_alt_base "" | "" \\$@ -.. -.c -------------------------------------------------------------------- -.c .Opt_[alt] ([ ]... [ []]) -.c -.c Alternate options in brackets for section SYNOPSIS. -.c -.c Arguments: -.c minus: either `-' or `--' (font CB). -.c opt: a name for an option, empty allowed (font CB). -.c arg: optionally, the argument to the option (font I). -.c punct: optional punctuation (in the starting font). -.c Global strings written to: -.c `@oa_prefix': left enclosing character (`[') -.c `@oa_sep': separator (`|') -.c `@oa_postfix': right enclosing character (`]') -.c Result: -.c The minus/opt argument pairs, each separated by a vertical -.c bar `|', optionally add 'arg', separated by a space character ` '. -.c -.c Example: -.c .Opt_[alt] - T -- device -- device-troff device . -.c results in -.c [-T|--device|--device-troff device]. -.c -.de Opt_[alt] -. Opt_alt_base [ | ] \\$@ -.. -.c -------------------------------------------------------------------- -.c .Opt_alt_base (
   [ ]... [arg [punct]])
-.c
-.c Alternating options; base macro for many others; do not use directly.
-.c
-.c Arguments:
-.c   
: prefix, result is preceded by this.
-.c   : separator between minus/opt pairs.
-.c   : postfix, is appended to the result.
-.c   : either `-' or `--' (font CB).
-.c   : a name for an option, empty allowed (font CB).
-.c   : optionally, the argument to the option (font I).
-.c   : optional punctuation (in the starting font).
-.c Result:
-.c   String `
' followed by the / argument pairs, each
-.c   separated by string `', optionally add '', separated by
-.c   a single space ` ', followed by the string `'.  Terminated
-.c   by the optional punctuation .
-.c
-.de Opt_alt_base
-.  nr @font \\n[.f]\"
-.  if (\\n[.$] < 3) \
-.    Error .\\0: not enough arguments.
-.  ds @pre \)\\$1\)\"                   prefix
-.  ds @sep \)\\$2\)\"                   separator
-.  ds @post \)\\$3\)\"                  postfix
-.  shift 3
-.  nr @count 0
-.  ds @res \f[CR]\\*[@pre]\"
-.  while (\\n[.$] >= 2) \{\
-.    c                                  do the pairs, break on no `-'
-.    if !'\\$1'-' \{\
-.      if !'\\$1'--' \
-.        break
-.    \}
-.    c                                  separator
-.    if (\\n[@count] > 0) \
-.      as @res \f[CR]\\*[@sep]\:\"
-.    nr @count +1
-.    c                                  combine minus with option name
-.    as @res \f[CB]\\-\"
-.    if '\\$1'--' \
-.      as @res \\-\"
-.    as @res \\$2\"
-.    shift 2
-.  \}
-.  if (\\n[.$] >= 3) \
-.    Error .\\0: wrong arguments: \\$@
-.  c                                    all pairs are done
-.  ie (\\n[.$] == 0) \
-.    as @res \f[CR]\\*[@post]\"
-.  el \{\
-.    c                                  optional option argument
-.    if !'\\$1'' \
-.      as @res \f[CR] \,\f[I]\\$1\"
-.    shift
-.    c                                  postfix
-.    as @res \\f[CR]\\*[@post]\"
-.    if (\\n[.$] >= 1) \{\
-.      c                                add punctuation
-.      as @res \f[\\n[@font]]\\$1\"
-.    \}
-.  \}
-.  nh
-.  Text \\*[@res]
-.  hy
-.  ft \\n[@font]
-.  rr @count
-.  rr @font
-.  rm @pre
-.  rm @post
-.  rm @sep
-.  rm @res
-..
-.c --------------------------------------------------------------------
-.c .Opt_def  ([ ]... [ []])
-.c
-.c Definitions of options in section OPTIONS.
-.c
-.c Arguments:
-.c   minus: either `-' or `--' (font CB).
-.c   opt: a name for an option, empty allowed (font CB).
-.c   arg: optionally, the argument to the option (font I).
-.c   punct: optional punctuation (in the starting font).
-.c Result:
-.c   The header for an indented paragraph, consisting of
-.c   minus/opt argument pairs, each, separated by a space
-.c   character ` ', optionally add 'arg', separated a space
-.c   character ` '.
-.c
-.c Example:
-.c  .Opt_def - T -- device -- device-troff device .
-.c  results in
-.c  -T --device --device-troff device.
-.c  as the header of for indented paragraph.
-.c
-.de Opt_def
-.  TP
-.    Opt_alt_base "" "\~|\~" "" \\$@
-..
-.c --------------------------------------------------------------------
-.c .Opt_element  ([ ]... [ []])
-.c
-.c Definitions of options in section OPTIONS.
-.c
-.c Arguments:
-.c   minus: either `-' or `--' (font CB).
-.c   opt: a name for an option, empty allowed (font CB).
-.c   arg: optionally, the argument to the option (font I).
-.c   punct: optional punctuation (in the starting font).
-.c Result:
-.c   The minus/opt argument pairs, each, separated by a space
-.c   character ` ', optionally add 'arg', separated a space
-.c   character ` '.
-.c
-.c Example:
-.c  .Opt_element - T -- device -- device-troff device .
-.c  results in
-.c  -T --device --device-troff device.
-.c
-.de Opt_element
-.  Opt_alt_base "" "\~" "" \\$@
-..
-.c --------------------------------------------------------------------
-.als Opt_list Opt_element
-.
-.c --------------------------------------------------------------------
-.c .Opt_long  ([ []])
-.c
-.c Print `--name' somewhere in the text; optional punctuation.
-.c
-.de Opt_long
-.  Opt_alt -- "\\$1" "" "\\$2"
-..
-.c --------------------------------------------------------------------
-.c .Opt_long_arg  ([  []])
-.c
-.c Print `--name=arg' somewhere in the text; optional punctuation.
-.c
-.de Opt_long_arg
-.  Opt_alt -- "\\$1=\\$2" "" "\\$3"
-..
-.c --------------------------------------------------------------------
-.c .Opt_[long]  ([ []])
-.c
-.c Print `--name' somewhere in the text; optional punctuation.
-.c
-.de Opt_[long]
-.  Opt_[alt] -- "\\$1" "" "\\$2"
-..
-.c --------------------------------------------------------------------
-.c .Opt_short  ([ []])
-.c
-.c Print `-name' somewhere in the Text; optional punctuation.
-.c
-.de Opt_short
-.  Opt_alt - "\\$1" "" "\\$2"
-..
-.c --------------------------------------------------------------------
-.c .Opt_[short]  ([name [punct]])
-.c
-.c Print `[-name]' somewhere in the Text; optional punctuation.
-.c
-.de Opt_[short]
-.  Opt_[alt] - "\\$1" "" "\\$2"
-..
-.c --------------------------------------------------------------------
-.c .Shell_cmd  ( [] ...)
-.c
-.c A shell command line; display args alternating in fonts CR and CI.
-.c
-.c Examples:
-.c   .Shell_cmd "groffer --dpi 100 file"
-.c     result: `sh#  groffer --dpi 100 file'
-.c             with 'sh#' in font I, the rest in CR
-.c
-.c   .Shell_cmd groffer\~--dpi\~100\~file
-.c     result: the same as above
-.c
-.c   .Shell_cmd "groffer --dpi=" value " file"
-.c     result: sh#  groffer --dpi=value file
-.c             with `groffer --dpi=' and `file' in CR; `value' in CI
-.c
-.c   .Shell_cmd groffer\~--dpi= value \~file
-.c     result: the same as the previous example
-.c
-.de Shell_cmd
-.  groffer:Shell_cmd_base "\*[groffer:Shell_cmd.prompt]" \\$@
-..
-.c --------------------------------------------------------------------
-.c .Shell_cmd+  ( [] ...)
-.c
-.c A continuation line for .Shell_cmd.
-.c
-.de Shell_cmd+
-.  groffer:Shell_cmd_base "\*[groffer:Shell_cmd+.prompt]" \\$@
-..
-.c --------------------------------------------------------------------
-.c .Shell_cmd_base  ( [ [] ...])
-.c
-.c A shell command line; display args alternating in fonts CR and CI.
-.c Internal, do not use directly.
-.c
-.c Globals: read-only register @.Shell_cmd_width
-.c
-.de groffer:Shell_cmd_base
-.  if (\\n[.$] <= 0) \
-.    return
-.  nr @+font \\n[.f]\"
-.  ds @prompt \\$1\"
-.  ft CR
-.  c gap between prompt and command
-.  nr @+gap \\n[groffer:Shell_cmd_base.prompt_width]-\\w'\\*[@prompt]'\"
-.  ds @res \\*[@prompt]\h'\\n[@+gap]u'\"
-.  shift
-.  ds @cf CR\"
-.  while (\\n[.$] > 0) \{\
-.    as @res \\f[\\*[@cf]]\\$1\"
-.    shift
-.    ie '\\*[@cf]'CR' \
-.      ds @cf I\"
-.    el \
-.      ds @cf CR\"
-.  \}
-.  br
-.  ad l
-.  nh
-.  nf
-.  Text \\*[@res]\"
-.  fi
-.  hy
-.  ad
-.  br
-.  ft \\n[@+font]
-.  rr @+font
-.  rr @+gap
-.  rm @cf
-.  rm @res
-..
-.c --------------------------------------------------------------------
-.c .Synopsis  ()
-.c
-.c Begin a synopsis section, to be ended by a ./Synopsis macro.
-.c
-.de Synopsis
-.  if (\\n[groffer:Synopsis.level] > 0) \
-.    Error .\\$0: previous .Synopsis was not closed by ./Synopsis.
-.  nh
-.  ds @1 \\$1\"
-.  nr @old_indent \\n(.i
-.  ad l
-.  in +\w'\fB\\*[@1]\0'u
-.  ti \\n[@old_indent]u
-.  B \\*[@1]\0\c
-.  rr @old_indent
-.  rm @1
-.  nr groffer:Synopsis.level +1\"        marker for ./Synopsis
-..
-.c  --------------------------------------------------------------------
-.c ./Synopsis  ()
-.c
-.c Close a synopsis section opened by the previous .Synopsis macro.
-.c
-.de /Synopsis
-.  if (\\n[groffer:Synopsis.level] <= 0) \
-.    Error .\\$0: no previous call of .Synopsis
-.  br
-.  ad
-.  in
-.  hy
-.  nr groffer:Synopsis.level -1
-..
-.c  --------------------------------------------------------------------
-.c .Text  (...)
-.c
-.c Treat the arguments as text, no matter how they look.
-.c
-.de Text
-.  if (\\n[.$] == 0) \
-.    return
-.  nh
-.  nop \)\\$*\)
-.  hy
-..
-.c --------------------------------------------------------------------
-.c .Topic  ([])
-.c
-.c A bulleted paragraph
-.c
-.de Topic
-.  ie (\\n[.$] = 0) \
-.    ds @indent 2m\"
-.  el \
-.    ds @indent \\$1\"
-.  TP \\*[@indent]
-.  Text \[bu]
-.  rm @indent
-..
-.c --------------------------------------------------------------------
-.c .TP+  ()
-.c
-.c Continuation line for .TP header.
-.c
-.de TP+
-.  br
-.  ns
-.  TP \\$1
-..
-.c --------------------------------------------------------------------
-.c .TP_header  ([])
-.c
-.c Start a multi-line header for a .TP-like paragraph
-.c
-.de TP_header
-.  if (\\n[groffer:TP.level] < 0) \
-.    Error .\\$0: wrong level.
-.  nr groffer:TP.level +1
-.  P
-.  ie (\\n[.$] == 0) \
-.    rr groffer:TP.indent
-.  el \
-.    nr groffer:TP.indent \\$1
-.  nr groffer:TP_header.flag 1
-..
-.c --------------------------------------------------------------------
-.c .TP_body  ([])
-.c
-.c End a previous .TP-header and beging the body of the paragraph.
-.c
-.de TP_body
-.  if !rgroffer:TP_header.flag \
-.    Error .\\$0: no previous call of .TP_header
-.  if (\\n[groffer:TP.level] <= 0) \
-.    Error .\\$0: wrong level.
-.  br
-.  ie (\\n[.$] == 0) \{\
-.    ie rgroffer:TP.indent \{\
-.      RS \\n[groffer:TP.indent]u
-.    \}
-.    el \
-.      RS
-.  \}
-.  el \
-.    RS \\$1u
-.  rr groffer:TP.indent
-.  rr groffer:TP_header.flag
-.  nr groffer:TP_body.flag 1
-..
-.c --------------------------------------------------------------------
-.c TP_end  ()
-.c
-.c End of former .TP_body paragraph.
-.c
-.de TP_end
-.  if !rgroffer:TP_body.flag \
-.    Error .\\$0: no previous .TP_body.
-.  if (\\n[groffer:TP.level] <= 0) \
-.    Error TP_end: wrong level.
-.  nr groffer:TP.level -1
-.  rr grogger:TP.indent
-.  rr groffer:TP_header.flag
-.  rr groffer:TP_body.flag
-.  br
-.  RE
-..
-.
-.\" End of macro definitions
-.
-.
-.\" --------------------------------------------------------------------
-.\" SH "SYNOPSIS"
-.\" --------------------------------------------------------------------
-.
-.ad l
-.Synopsis groffer
-.RI [ option... ]
-.Opt_[--]
-.RI [ "\%filespec" "\*[Ellipsis]]"
-./Synopsis
-.
-.Synopsis groffer
-.Opt_alt - h -- help
-./Synopsis
-.
-.Synopsis groffer
-.Opt_alt - v -- version
-./Synopsis
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-The
-.B \%groffer
-program is the easiest way to use
-.BR \%groff (@MAN1EXT@).
-It can display arbitrary documents written in the
-.I \%groff
-language, see
-.BR \%groff (@MAN7EXT@),
-or other
-.I \%roff
-languages, see
-.BR \%roff (@MAN7EXT@),
-that are compatible to the original
-.I \%troff
-language.
-.
-The
-.B \%groffer
-program also includes many of the features for finding and displaying
-the \%\f[CR]Unix\f[] manual pages
-.nh
-.RI ( man\~pages ),
-.hy
-such that it can be used as a replacement for a
-.BR \%man (1)
-program.
-.
-Moreover, compressed files that can be handled by
-.BR \%gzip (1)
-or
-.BR \%bzip2 (1)
-are decompressed on-the-fly.
-.
-.
-.P
-The normal usage is quite simple by supplying a file name or name of a
-.I \%man\~page
-without further options.
-.
-But the option handling has many possibilities for creating special
-behaviors.
-.
-This can be done either in configuration files, with the shell
-environment variable
-.BR \%$GROFFER_OPT ,
-or on the command line.
-.
-.
-.P
-The output can be generated and viewed in several different ways
-available for
-.IR \%groff .
-.
-This includes the
-.I \%groff
-native \%\f[CR]X\~Window\f[] viewer
-.BR \%gxditview (@MAN1EXT@),
-each
-.IR \%Postcript ,
-.IR \%pdf ,
-or
-.I \%dvi
-display program, a web browser by generating
-.I \%html
-in
-.IR \%www\~mode ,
-or several
-.I \%text\~modes
-in text terminals.
-.
-.
-.P
-Most of the options that must be named when running
-.B \%groff
-directly are determined automatically for
-.BR \%groffer ,
-due to the internal usage of the
-.BR \%grog (@MAN1EXT@)
-program.
-.
-But all parts can also be controlled manually by arguments.
-.
-.
-.P
-Several file names can be specified on the command line arguments.
-.
-They are transformed into a single document in the normal way of
-.BR \%groff .
-.
-.
-.P
-Option handling is done in \f[CR]GNU\f[] style.
-.
-Options and file names can be mixed freely.
-.
-The option
-.RB ` \-\- '
-closes the option handling, all following arguments are treated as
-file names.
-.
-Long options can be abbreviated.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "OPTION OVERVIEW"
-.\" --------------------------------------------------------------------
-.
-.TP
-.I breaking options
-.RS
-.P
-.Opt_[alt] - h -- help
-.Opt_[alt] - v -- version
-.RE
-.
-.
-.TP
-.I \%groffer mode options
-.RS
-.P
-.Opt_[alt] -- auto
-.Opt_[alt] -- default
-.Opt_[alt] -- default\-modes mode1,mode2,\*[Ellipsis]
-.Opt_[alt] -- dvi
-.Opt_[alt] -- dvi\-viewer prog
-.Opt_[alt] -- dvi\-viewer\-tty prog
-.Opt_[alt] -- groff
-.Opt_[alt] -- html
-.Opt_[alt] -- html\-viewer prog
-.Opt_[alt] -- html\-viewer\-tty prog
-.Opt_[alt] -- mode display_mode
-.Opt_[alt] -- pdf
-.Opt_[alt] -- pdf\-viewer prog
-.Opt_[alt] -- pdf\-viewer\-tty prog
-.Opt_[alt] -- ps
-.Opt_[alt] -- ps\-viewer prog
-.Opt_[alt] -- ps\-viewer\-tty prog
-.Opt_[alt] -- text
-.Opt_[alt] -- tty
-.Opt_[alt] -- tty\-viewer prog
-.Opt_[alt] -- tty\-viewer\-tty prog
-.Opt_[alt] -- www
-.Opt_[alt] -- www\-viewer prog
-.Opt_[alt] -- www\-viewer\- prog
-.Opt_[alt] -- x -- X
-.Opt_[alt] -- x\-viewer -- X\-viewer prog
-.Opt_[alt] -- x\-viewer\-tty -- X\-viewer\-tty prog
-.RE
-.
-.
-.TP
-.I development options
-.RS
-.P
-.Opt_[alt] -- debug
-.Opt_[alt] -- do\-nothing
-.Opt_[alt] -- shell prog
-.Opt_[alt] - Q -- source
-.Opt_[alt] - V
-.RE
-.
-.
-.TP
-.I options related to \%groff
-.RS
-.P
-.Opt_[alt] - T -- device device
-.Opt_[alt] - Z -- intermediate\-output -- ditroff
-.P
-All further
-.B \%groff
-short options are accepted.
-.RE
-.
-.
-.TP
-.I options for man\~pages
-.Opt_[alt] -- apropos
-.Opt_[alt] -- apropos\-data
-.Opt_[alt] -- apropos\-devel
-.Opt_[alt] -- apropos\-progs
-.Opt_[alt] -- whatis
-.Opt_[alt] -- man
-.Opt_[alt] -- no-man
-.Opt_[alt] -- no-special
-.
-.
-.TP
-.I long options taken over from GNU man
-.RS
-.P
-.Opt_[alt] -- all
-.Opt_[alt] -- ascii
-.Opt_[alt] -- ditroff
-.Opt_[alt] -- extension suffix
-.Opt_[alt] -- locale language
-.Opt_[alt] -- local-file
-.Opt_[alt] -- manpath dir1:dir2:\*[Ellipsis]
-.Opt_[alt] -- pager program
-.Opt_[alt] -- sections sec1:sec2:\*[Ellipsis]
-.Opt_[alt] -- systems sys1,sys2,\*[Ellipsis]
-.Opt_[alt] -- troff-device device
-.P
-Further long options of \f[CR]GNU\f[]
-.B man
-are accepted as well.
-.RE
-.
-.
-.TP
-.I X Window Toolkit options
-.RS
-.P
-.Opt_[alt] -- bd pixels
-.Opt_[alt] -- bg -- background color
-.Opt_[alt] -- bw pixels
-.Opt_[alt] -- display X-display
-.Opt_[alt] -- fg -- foreground color
-.Opt_[alt] -- ft -- font font_name
-.Opt_[alt] -- geometry size_pos
-.Opt_[alt] -- resolution value
-.Opt_[alt] -- rv
-.Opt_[alt] -- title string
-.Opt_[alt] -- xrm X-resource
-.RE
-.
-.
-.TP
-.I \%filespec arguments
-.RS
-.P
-No
-.I \%filespec
-parameters means standard input.
-.
-.
-.TP 10m
-.Opt_short ""
-stands for standard input (can occur several times).
-.
-.
-.TP
-.I filename
-the path name of an existing file.
-.
-.
-.TP
-.BI man: name ( section )
-.TP+
-.IB name ( section )
-search the \%man\~page
-.I \%name
-in \%man\~section
-.IR section .
-.
-.
-.TP
-.BI man: name . s
-.TP+
-.IB name . s
-if
-.I s
-is a character in
-.BR \%[1-9on] ,
-search for a \%man\~page
-.I \%name
-in \%man\~section
-.IR s .
-.
-.
-.TP
-.BI man: name
-\%man\~page in the lowest \%man\~section that has
-.IR \%name .
-.
-.
-.TP
-.I "s name"
-if
-.I s
-is a character in
-.BR \%[1-9on] ,
-search for a \%man\~page
-.I \%name
-in \%man\~section
-.IR s .
-.
-.
-.TP
-.I name
-if
-.I \%name
-is not an existing file search for the man\~page
-.I \%name
-in the lowest man\~section.
-.
-.RE
-.
-.
-.\" --------------------------------------------------------------------
-.SH "OPTION DETAILS"
-.\" --------------------------------------------------------------------
-.
-The
-.B \%groffer
-program can usually be run with very few options.
-.
-But for special purposes, it supports many options.
-.
-These can be classified in 5 option classes.
-.
-.
-.P
-All short options of
-.B \%groffer
-are compatible with the short options of
-.BR \%groff (@MAN1EXT@).
-.
-All long options of
-.B \%groffer
-are compatible with the long options of
-.BR \%man (1).
-.
-.
-.\" --------------------------------------------------------------------
-.SS "groffer breaking Options"
-.\" --------------------------------------------------------------------
-.
-As soon as one of these options is found on the command line it is
-executed, printed to standard output, and the running
-.B \%groffer
-is terminated thereafter.
-.
-All other arguments are ignored.
-.
-.
-.Opt_def - h -- help
-Print a helping information with a short explanation of option sto
-standard output.
-.
-.
-.Opt_def - v -- version
-Print version information to standard output.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "groffer Mode Options"
-.\" --------------------------------------------------------------------
-.
-The display mode and the viewer programs are determined by these
-options.
-.
-If none of these mode and viewer options is specified
-.B \%groffer
-tries to find a suitable display mode automatically.
-.
-The default modes are
-.I mode x
-with
-.B gxditview
-in \%\f[CR]X\~Window\f[] and
-.I mode tty
-with device
-.I latin1
-under
-.B less
-on a terminal.
-.
-.
-.P
-There are two kinds of options for viewers.
-.Opt_long \fImode\fP-viewer
-chooses the normal viewer programs that run on their own in
-\%\f[CR]X\~Window\f[], while
-.Opt_long \fImode\fP-viewer-tty
-chooses programs that run on the terminal (on tty).
-.
-Most graphical viewers are programs running in \%\f[CR]X\~Window\f[],
-so there aren't many opportunities to call the tty viewers.
-.
-But they give the chance to view the output source; for example,
-.Opt_long ps\-viewer\-tty=less
-shows the content of the
-.I Postscript
-output with the pager
-.BR less .
-.
-.
-.P
-The \%\f[CR]X\~Window\f[] viewers are not critical, you can use both
-.Opt_long *\-viewer
-and
-.Opt_long *\-viewer\-tty
-for them; with
-.Opt_long *\-viewer\-tty
-the viewer program will not become independently, it just stays
-coupled with
-.BR groffer .
-But the program will not run if you specify a terminal program with
-.Opt_long *\-viewer
-because this viewer will stay in background without a chance to reach
-it.
-.
-So you really need
-.Opt_long *\-viewer\-tty
-for viewers that run on tty.
-.
-.
-.Opt_def -- auto
-Equivalent to
-.Opt_long_arg mode auto .
-.
-.
-.Opt_def -- default
-Reset all configuration from previously processed command line options
-to the default values.
-.
-This is useful to wipe out all former options of the configuration, in
-.Env_var $GROFFER_OPT ,
-and restart option processing using only the rest of the command line.
-.
-.
-.Opt_def -- default\-modes mode1,mode2,\*[Ellipsis]
-Set the sequence of modes for
-.I \%auto\~mode
-to the comma separated list given in the argument.
-.
-See
-.Opt_long mode
-for details on modes.  Display in the default manner; actually, this
-means to try the modes
-.IR x ,
-.IR ps ,
-and
-.I \%tty
-in this sequence.
-.
-.
-.
-.Opt_def -- dvi
-Equivalent to
-.Opt_long_arg mode \%dvi .
-.
-.
-.Opt_def -- dvi\-viewer prog
-Choose an \%\f[CR]X\~Window\f[] viewer program for
-.IR \%dvi\~mode .
-.
-This can be a file name or a program to be searched in
-.Env_var $PATH .
-.
-Known \%\f[CR]X\~Window\f[]
-.I \%dvi
-viewers include
-.BR \%xdvi (1)
-and
-.BR \%dvilx (1)
-.
-In each case, arguments can be provided additionally.
-.
-.
-.Opt_def -- dvi\-viewer\-tty prog
-Choose a program running on the terminal for viewing the output of
-.IR \%dvi\~mode .
-.
-This can be a file name or a program to be searched in
-.Env_var $PATH ;
-arguments can be provided additionally.
-.
-.
-.Opt_def -- groff
-Equivalent to
-.Opt_long_arg mode groff .
-.
-.
-.Opt_def -- html
-Equivalent to
-.Opt_long_arg mode html .
-.
-.
-.Opt_def -- html\-viewer
-Choose an \%\f[CR]X\~Window\f[] web browser program for viewing in
-.I \%html\~mode .
-.
-It can be the path name of an executable file or a program in
-.Env_var $PATH .
-.
-In each case, arguments can be provided additionally.
-.
-.
-.Opt_def -- html\-viewer\-tty
-Choose a terminal program for viewing the output of
-.I \%html\~mode .
-.
-It can be the path name of an executable file or a program in
-.Env_var $PATH ;
-arguments can be provided additionally.
-.
-.
-.Opt_def -- mode value
-.
-Set the display mode.
-.
-The following mode values are recognized:
-.
-.RS
-.
-.TP
-.Header_CB auto
-Select the automatic determination of the display mode.
-.
-The sequence of modes that are tried can be set with the
-.Opt_long default\-modes
-option.
-.
-Useful for restoring the
-.I \%default\~mode
-when a different mode was specified before.
-.
-.
-.TP
-.Header_CB dvi
-Display formatted input in a
-.I \%dvi
-viewer program.
-.
-By default, the formatted input is displayed with the
-.BR \%xdvi (1)
-program.
-.Opt_long dvi .
-.
-.
-.TP
-.Header_CB groff
-After the file determination, switch
-.B \%groffer
-to process the input like
-.BR \%groff (@MAN1EXT@)
-would do.
-.
-This disables the
-.I \%groffer
-viewing features.
-.
-.
-.TP
-.Header_CB html
-Translate the input into html format and display the result in a web
-browser program.
-.
-By default, the existence of a sequence of standard web browsers is
-tested, starting with
-.BR \%konqueror (1)
-and
-.BR \%mozilla (1).
-The text html viewer is
-.BR \%lynx (1).
-.
-.
-.TP
-.Header_CB pdf
-Display formatted input in a
-.I \%PDF
-(Portable Document Format) viewer
-program.
-.
-By default, the input is formatted by
-.B \%groff
-using the Postscript device, then it is transformed into the PDF file
-format using
-.BR \%gs (1),
-and finally displayed either with the
-.BR \%xpdf (1)
-or the
-.BR \%acroread (1)
-program.
-.
-PDF has a big advantage because the text is displayed graphically and
-is searchable as well.
-.
-But as the transformation takes a considerable amount of time, this
-mode is not suitable as a default device for the
-.I \%auto\~mode .
-.
-.
-.TP
-.Header_CB ps
-Display formatted input in a Postscript viewer program.
-.
-By default, the formatted input is displayed with the
-.BR \%ghostview (@MAN1EXT@)
-program.
-.
-.
-.TP
-.Header_CB text
-Format in a
-.I \%groff\~text\~mode
-and write the result to standard output without a pager or viewer
-program.
-.
-The text device,
-.I \%latin1
-by default, can be chosen with option
-.Opt_short T .
-.
-.
-.TP
-.Header_CB tty
-Format in a
-.I \%groff\~text\~mode
-and write the result to standard output using a text pager program,
-even when in \%\f[CR]X\~Window\f[].
-.
-.
-.TP
-.Header_CB www
-Equivalent to
-.Opt_long_arg mode html .
-.
-.
-.TP
-.Header_CB x
-Display the formatted input in a native
-.I roff
-viewer.
-.
-By default, the formatted input is displayed with the
-.BR \%gxditview (@MAN1EXT@)
-program being distributed together with
-.BR \%groff .
-But the standard \%\f[CR]X\~Window\f[] tool
-.BR \%xditview (1)
-can also be chosen with the option
-.Opt_long x\-viewer .
-The default resolution is
-.BR 75\~dpi ,
-but
-.B 100\~dpi
-are also possible.
-.
-The default
-.I groff
-device
-for the resolution of
-.B 75\~dpi
-is
-.BR X75\-12 ,
-for
-.B 100\~dpi
-it is
-.BR X100 .
-.
-The corresponding
-.I "groff intermediate output"
-for the actual device is generated and the result is displayed.
-.
-For a resolution of
-.BR 100\~dpi ,
-the default width of the geometry of the display program is chosen to
-.BR 850\~dpi .
-.
-.
-.TP
-.Header_CB X
-Equivalent to
-.Opt_long_arg mode x .
-.
-.
-.P
-The following modes do not use the
-.I \%groffer
-viewing features.
-.
-They are only interesting for advanced applications.
-.
-.
-.TP
-.Header_CB groff
-Generate device output with plain
-.I \%groff
-without using the special viewing features of
-.IR \%groffer .
-If no device was specified by option
-.Opt_short T
-the
-.I \%groff
-default
-.B \%ps
-is assumed.
-.
-.
-.TP
-.Header_CB source
-Display the source code of the input without formatting; equivalent to
-.Opt_short Q .
-.
-.
-.RE
-.
-.
-.Opt_def -- pdf
-Equivalent to
-.Opt_long_arg mode pdf .
-.
-.
-.Opt_def -- pdf\-viewer prog
-Choose an \%\f[CR]X\~Window\f[] viewer program for
-.IR \%pdf\~mode .
-.
-This can be a file name or a program to be searched in
-.Env_var $PATH ;
-arguments can be provided additionally.
-.
-.
-.Opt_def -- pdf\-viewer\-tty prog
-Choose a terminal viewer program for
-.IR \%pdf\~mode .
-.
-This can be a file name or a program to be searched in
-.Env_var $PATH ;
-arguments can be provided additionally.
-.
-.
-.Opt_def -- ps
-Equivalent to
-.Opt_long_arg mode ps .
-.
-.
-.Opt_def -- ps\-viewer prog
-Choose an \%\f[CR]X\~Window\f[] viewer program for
-.IR \%ps\~mode .
-.
-This can be a file name or a program to be searched in
-.Env_var $PATH .
-.
-Common Postscript viewers inlude
-.BR \%gv (1),
-.BR \%ghostview (1),
-and
-.BR \%gs (1),
-.
-In each case, arguments can be provided additionally.
-.
-.
-.Opt_def -- ps\-viewer\-tty prog
-Choose a terminal viewer program for
-.IR \%ps\~mode .
-.
-This can be a file name or a program to be searched in
-.Env_var $PATH ;
-arguments can be provided additionally.
-.
-.
-.Opt_def -- text
-Equivalent to
-.Opt_long_arg mode text .
-.
-.
-.Opt_def -- tty
-Equivalent to
-.Opt_long_arg mode tty .
-.
-.
-.Opt_def -- tty\-viewer prog
-Choose a text pager for mode
-.IR tty .
-The standard pager is
-.BR less (1).
-This option is eqivalent to
-.I man
-option
-.Opt_long_arg pager prog .
-The option argument can be a file name or a program to be searched in
-.Env_var $PATH ;
-arguments can be provided additionally.
-.
-.
-.Opt_def -- tty\-viewer\-tty prog
-This is equivalent to
-.Opt_long tty\-viewer
-because the programs for
-.I tty
-mode run on a terminal anyway.
-.
-.
-.Opt_def -- www
-Equivalent to
-.Opt_long_arg mode html .
-.
-.
-.Opt_def -- www\-viewer prog
-Equivalent to
-.Opt_long html\-viewer .
-.
-.
-.Opt_def -- www\-viewer\-tty prog
-Equivalent to
-.Opt_long html\-viewer\-tty .
-.
-.
-.Opt_def -- X -- x
-Equivalent to
-.Opt_long_arg mode x .
-.
-.
-.Opt_def -- X\-viewer -- x\-viewer prog
-Choose an \%\f[CR]X\~Window\f[] viewer program for
-.IR \%x\~mode .
-Suitable viewer programs are
-.BR \%gxditview (@MAN1EXT@)
-which is the default and
-.BR \%xditview (1).
-The argument can be any executable file or a program in
-.Env_var $PATH ;
-arguments can be provided additionally.
-.
-.
-.Opt_def -- X\-viewer\-tty -- x\-viewer\-tty prog
-Choose a terminal viewer program for
-.IR \%x\~mode .
-The argument can be any executable file or a program in
-.Env_var $PATH ;
-arguments can be provided additionally.
-.
-.
-.TP
-.Opt_--
-Signals the end of option processing; all remaining arguments are
-interpreted as
-.I \%filespec
-parameters.
-.
-.
-.P
-Besides these,
-.B \%groffer
-accepts all short options that are valid for the
-.BR \%groff (@MAN1EXT@)
-program.
-.
-All
-.RB \%non- groffer
-options are sent unmodified via
-.B \%grog
-to
-.BR \%groff .
-.
-So postprocessors, macro packages, compatibility with
-.I classical
-.IR \%troff ,
-and much more can be manually specified.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "Options for Development"
-.\" --------------------------------------------------------------------
-.
-.Opt_def -- debug
-Enable five debugging informations.
-.
-The temporary files are kept and not deleted, the name of the
-temporary directory and the shell name for
-.File_name groffer2.sh
-are printed, the parameters are printed at several steps of
-development, and a function stack is output with function
-\f[CR]error_user()\f[] as well.
-.
-Neither the function call stack that is printed at each opening and
-closing of a function call nor the landmark information that is
-printed to determine how far the program is running are used.
-.
-This seems to be the most useful among all debugging options.
-.
-.
-.Opt_def -- debug\-all
-Enable all seven debugging informations including the function call
-stack and the landmark information.
-.
-.
-.Opt_def -- debug\-keep
-Enable two debugging information, the printing of the name of the
-temporary directory and the keeping of the temporary files.
-.
-.
-.Opt_def -- debug\-lm
-Enable one debugging information, the landmark information.
-.
-.
-.Opt_def -- debug\-params
-Enable one debugging information, the parameters at several steps.
-.
-.
-.Opt_def -- debug\-shell
-Enable one debugging information, the shell name for
-.File_name groffer2.sh .
-.
-.
-.Opt_def -- debug\-stacks
-Enable one debugging information, the function call stack.
-.
-.
-.Opt_def -- debug\-tmpdir
-Enable one debugging information, the name of the temporary directory.
-.
-.
-.Opt_def -- debug\-user
-Enable one debugging information, the function stack with
-\f[CR]error_user()\f[].
-.
-.
-.Opt_def -- do-nothing
-This is like
-.Opt_long version ,
-but without the output; no viewer is started.
-.
-This makes only sense in development.
-.
-.
-.Opt_def -- print=text
-Just print the argument to standard error.
-.
-This is good for parameter check.
-.
-.
-.Opt_def -- shell "shell_program"
-Specify the shell under which the
-.File_name \%groffer2.sh
-script should be run.
-.
-This option overwrites the automatic shell determination of the
-program.
-.
-If the argument
-.I shell_program
-is empty a former shell option and the automatic shell determination
-is cancelled and the default shell is restored.
-.
-Some shells run considerably faster than the standard shell.
-.
-.
-.Opt_def - Q -- source
-Output the roff source code of the input files without further
-processing.
-.
-This is the equivalent
-.Opt_long_arg mode source .
-.
-.
-.Opt_def - V
-This is an advanced option for debugging only.
-.
-Instead of displaying the formatted input, a lot of
-.I \%groffer
-specific information is printed to standard output:
-.
-.RS
-.Topic
-the output file name in the temporary directory,
-.
-.Topic
-the display mode of the actual
-.B \%groffer
-run,
-.
-.Topic
-the display program for viewing the output with its arguments,
-.
-.Topic
-the active parameters from the config files, the arguments in
-.Env_var $GROFFER_OPT ,
-and the arguments of the command line,
-.
-.Topic
-the pipeline that would be run by the
-.B \%groff
-program, but without executing it.
-.RE
-.
-.
-.P
-Other useful debugging options are the
-.B \%groff
-option
-.Opt_short Z
-and
-.Opt_long_arg mode groff .
-.
-.
-.\" --------------------------------------------------------------------
-.SH "Options related to groff"
-.\" --------------------------------------------------------------------
-.
-All short options of
-.B \%groffer
-are compatible with the short options of
-.BR \%groff (@MAN1EXT@).
-.
-The following of
-.B \%groff
-options have either an additional special meaning within
-.B \%groffer
-or make sense for normal usage.
-.
-.
-.P
-Because of the special outputting behavior of the
-.B \%groff
-option
-.Opt_short Z
-.B \%groffer
-was designed to be switched into
-.I \%groff\~mode ;
-the
-.I \%groffer
-viewing features are disabled there.
-.
-The other
-.B \%groff
-options do not switch the mode, but allow to customize the formatting
-process.
-.
-.
-.Opt_def - a
-This generates an ascii approximation of output in the
-.IR \%text\~modes .
-.
-That could be important when the text pager has problems with control
-sequences in
-.IR "tty mode" .
-.
-.
-.Opt_def - m file
-Add
-.I \%file
-as a
-.I \%groff
-macro file.
-.
-This is useful in case it cannot be recognized automatically.
-.
-.
-.Opt_def - P opt_or_arg
-Send the argument
-.I \%opt_or_arg
-as an option or option argument to the actual
-.B \%groff
-postprocessor.
-.
-.
-.Opt_def - T -- device devname
-.
-This option determines
-.BR \%groff 's
-output device.
-.
-The most important devices are the text output devices for referring
-to the different character sets, such as
-.BR \%ascii ,
-.BR \%utf8 ,
-.BR \%latin1 ,
-and others.
-.
-Each of these arguments switches
-.B \%groffer
-into a
-.I \%text\~mode
-using this device, to
-.I \%mode\~tty
-if the actual mode is not a
-.IR \%text\~mode .
-.
-The following
-.I \%devname
-arguments are mapped to the corresponding
-.B \%groffer
-.Opt_long_arg mode \fIdevname\fR
-option:
-.BR \%dvi ,
-.BR \%html ,
-and
-.BR \%ps .
-All
-.B \%X*
-arguments are mapped to
-.IR \%mode\~x .
-Each other
-.I \%devname
-argument switches to
-.I \%mode\~groff
-using this device.
-.
-.
-.Opt_def - X
-is equivalent to
-.BR "groff \-X" .
-It displays the
-.I groff intermediate output
-with
-.BR gxditview .
-As the quality is relatively bad this option is deprecated; use
-.Opt_long X
-instead because the
-.I \%x\~mode
-uses an
-.IR X *
-device for a better display.
-.
-.
-.Opt_def - Z -- intermediate-output -- ditroff
-Switch into
-.I \%groff\~mode
-and format the input with the
-.I \%groff intermediate output
-without postprocessing; see
-.BR \%groff_out (@MAN5EXT@).
-This is equivalent to option
-.Opt_long ditroff
-of
-.IR \%man ,
-which can be used as well.
-.
-.
-.P
-All other
-.B \%groff
-options are supported by
-.BR \%groffer ,
-but they are just transparently transferred to
-.B \%groff
-without any intervention.
-.
-The options that are not explicitly handled by
-.B \%groffer
-are transparently passed to
-.BR \%groff .
-.
-Therefore these transparent options are not documented here, but in
-.BR \%groff (@MAN1EXT@).
-Due to the automatism in
-.BR \%groffer ,
-none of these
-.B \%groff
-options should be needed, except for advanced usage.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Options for man\~pages"
-.\" --------------------------------------------------------------------
-.
-.Opt_def -- apropos
-Start the
-.BR \%apropos (1)
-command or facility of
-.BR \%man (1)
-for searching the
-.I \%filespec
-arguments within all
-.I \%man\~page
-descriptions.
-.
-Each
-.I \%filespec
-argument is taken for search as it is; section specific parts are not
-handled, such that
-.B 7 groff
-searches for the two arguments
-.B 7
-and
-.B groff
-with a large result; for the
-.I \%filespec
-.B groff.7
-nothing will be found.
-.
-The display differs from the
-.B \%apropos
-program by the following concepts:
-.RS
-.Topic
-construct a
-.I \%groff
-frame to the output of
-.BR \%apropos ,
-.Topic
-each
-.I \%filespec
-argument is searched on its own.
-.Topic
-the restriction by
-.Opt_long sections
-is handled as well,
-.Topic
-wildcard characters are allowed and handled without a further option.
-.RE
-.
-.
-.Opt_def -- apropos\-data
-Show only the
-.B \%apropos
-descriptions for data documents, these are the
-.BR \%man (7)
-sections 4, 5, and 7.
-.
-Direct section declarations are ignored, wildcards are accepted.
-.
-.
-.Opt_def -- apropos\-devel
-Show only the
-.B \%apropos
-descriptions for development documents, these are the
-.BR man (7)
-sections 2, 3, and 9.
-.
-Direct section declarations are ignored, wildcards are accepted.
-.
-.
-.Opt_def -- apropos\-progs
-Show only the
-.B \%apropos
-descriptions for documents on programs, these are the
-.BR \%man (7)
-sections 1, 6, and 8.
-.
-Direct section declarations are ignored, wildcards are accepted.
-.
-.
-.Opt_def -- whatis
-For each
-.I \%filespec
-argument search all
-.I \%man\~pages
-and display their description \[em] or say that it is not a
-.IR \%man\~page .
-This differs from
-.IR man 's
-.B whatis
-output by the following concepts
-.RS
-.Topic
-each retrieved file name is added,
-.Topic
-local files are handled as well,
-.Topic
-the display is framed by a
-.I groff
-output format,
-.Topic
-wildcard characters are allowed without a further option.
-.RE
-.
-.
-.P
-The following two options were added to
-.B \%groffer
-for choosing whether the file name arguments are interpreted as names
-for local files or as a search pattern for
-.IR \%man\~pages .
-.
-The default is looking up for local files.
-.
-.
-.Opt_def -- man
-Check the non-option command line arguments
-.nh
-.RI ( filespecs )
-.hy
-first on being
-.IR \%man\~pages ,
-then whether they represent an existing file.
-.
-By default, a
-.I \%filespec
-is first tested whether it is an existing file.
-.
-.
-.Opt_def -- no-man -- local-file
-Do not check for
-.IR \%man\~pages .
-.
-.Opt_long local-file
-is the corresponding
-.B man
-option.
-.
-.
-.Opt_def -- no-special
-Disable former calls of
-.Opt_long all ,
-.Opt_long apropos* ,
-and
-.Opt_long whatis .
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Long options taken over from GNU man"
-.\" --------------------------------------------------------------------
-.
-The long options of
-.B \%groffer
-were synchronized with the long options of \f[CR]GNU\f[]
-.BR man .
-.
-All long options of \f[CR]GNU\f[]
-.B man
-are recognized, but not all of these options are important to
-.BR \%groffer ,
-so most of them are just ignored.
-.
-.
-.P
-In the following, the
-.B man
-options that have a special meaning for
-.B \%groffer
-are documented.
-.
-.
-.P
-The full set of long and short options of the \f[CR]GNU\f[]
-.B man
-program can be passed via the environment variable
-.Env_var $MANOPT ;
-see
-.BR \%man (1)
-if your system has \f[CR]GNU\f[]
-.B man
-installed.
-.
-.
-.Opt_def -- all
-In searching
-.IR \%man\~pages ,
-retrieve all suitable documents instead of only one.
-.
-.
-.Opt_def - 7 -- ascii
-In
-.IR \%text\~modes ,
-display ASCII translation of special characters for critical environment.
-.
-This is equivalent to
-.BR "groff -mtty_char" ;
-see
-.BR groff_tmac (@MAN5EXT@).
-.
-.
-.Opt_def -- ditroff
-Eqivalent to
-.B \%groffer
-.Opt_short Z .
-.
-.
-.Opt_def -- extension suffix
-Restrict
-.I \%man\~page
-search to file names that have
-.I \%suffix
-appended to their section element.
-.
-For example, in the file name
-.I \%/usr/share/man/man3/terminfo.3ncurses.gz
-the
-.I \%man\~page
-extension is
-.IR \%ncurses .
-.
-.
-.Opt_def -- locale language
-.
-Set the language for
-.IR \%man\~pages .
-.
-This has the same effect, but overwrites
-.Env_var $LANG
-.
-.
-.Opt_def -- location
-Print the location of the retrieved files to standard error.
-.
-.
-.Opt_def -- no-location
-Do not display the location of retrieved files; this resets a former
-call to
-.Opt_long location .
-.
-This was added by
-.BR \%groffer .
-.
-.
-.Opt_def -- manpath "'dir1:dir2:\*[Ellipsis]'"
-Use the specified search path for retrieving
-.I \%man\~pages
-instead of the program defaults.
-.
-If the argument is set to the empty string "" the search for
-.I \%man\~page
-is disabled.
-.
-.
-.Opt_def -- pager
-Set the pager program in
-.IR \%tty\~mode ;
-default is
-.BR \%less .
-This is equivalent to
-.Opt_long tty\-viewer .
-.
-.
-.Opt_def -- sections "'sec1:sec2:\*[Ellipsis]'"
-Restrict searching for
-.I \%man\~pages
-to the given
-.IR sections ,
-a colon-separated list.
-.
-.
-.Opt_def -- systems "'sys1,sys2,\*[Ellipsis]'"
-Search for
-.I \%man\~pages
-for the given operating systems; the argument
-.I \%systems
-is a comma-separated list.
-.
-.
-.Opt_def -- where
-Eqivalent to
-.Opt_long location .
-.
-.
-.\" --------------------------------------------------------------------
-.SS "X\~\%Window\~\%Toolkit Options"
-.\" --------------------------------------------------------------------
-.
-The following long options were adapted from the corresponding
-\%\f[CR]X\~\Window\~Toolkit\f[] options.
-.
-.B \%groffer
-will pass them to the actual viewer program if it is an
-\%\f[CR]X\~Window\f[] program.
-.
-Otherwise these options are ignored.
-.
-.
-.P
-Unfortunately these options use the old style of a single minus for
-long options.
-.
-For
-.B \%groffer
-that was changed to the standard with using a double minus for long
-options, for example,
-.B \%groffer
-uses the option
-.Opt_long font
-for the \%\f[CR]X\~Window\f[] option
-.Opt_short font .
-.
-.
-.P
-See
-.BR \%X (1),
-.BR \%X (7),
-and the documentation on the \%\f[CR]X\~Window\~Toolkit\f[] options
-for more details on these options and their arguments.
-.
-.
-.Opt_def -- background color
-Set the background color of the viewer window.
-.
-.
-.Opt_def -- bd pixels
-Specifies the color of the border surrounding the viewer window.
-.
-.
-.Opt_def -- bg color
-This is equivalent to
-.Opt_long background .
-.
-.
-.Opt_def -- bw pixels
-Specifies the width in pixels of the border surrounding the viewer
-window.
-.
-.
-.Opt_def -- display X-display
-Set the \%\f[CR]X\~Window\f[] display on which the viewer program
-shall be started, see the \%\f[CR]X\~Window\f[] documentation for the
-syntax of the argument.
-.
-.
-.Opt_def -- foreground color
-Set the foreground color of the viewer window.
-.
-.
-.Opt_def -- fg color
-This is equivalent to
-.Opt_short foreground .
-.
-.
-.Opt_def -- font font_name
-Set the font used by the viewer window.
-.
-The argument is an \%\f[CR]X\~Window\f[] font name.
-.
-.
-.Opt_def -- ft font_name
-This is equivalent to
-.Opt_long ft .
-.
-.
-.Opt_def -- geometry size_pos
-Set the geometry of the display window, that means its size and its
-starting position.
-.
-See
-.BR \%X (7)
-for the syntax of the argument.
-.
-.
-.Opt_def -- resolution value
-Set \%\f[CR]X\~Window\f[] resolution in dpi (dots per inch) in some
-viewer programs.
-.
-The only supported dpi values are
-.B 75
-and
-.BR 100 .
-.
-Actually, the default resolution for
-.B \%groffer
-is set to
-.BR 75\~dpi .
-The resolution also sets the default device in
-.IR "mode x" .
-.
-.
-.Opt_def -- rv
-Reverse foreground and background color of the viewer window.
-.
-.
-.Opt_def -- title "'some text'"
-Set the title for the viewer window.
-.
-.
-.Opt_def -- xrm "'resource'"
-Set \f[CR]\%X\~Window\f[] resource.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Filespec Arguments"
-.\" --------------------------------------------------------------------
-.
-A
-.I \%filespec
-parameter is an argument that is not an option or option argument.
-.
-It means an input source.
-.
-In
-.BR \%groffer ,
-.I \%filespec
-parameters are a file name or a template for searching
-.IR \%man\~pages .
-.
-These input sources are collected and composed into a single output
-file such as
-.B \%groff
-does.
-.
-.
-.P
-The strange \%\f[CR]POSIX\f[] behavior to regard all arguments behind
-the first non-option argument as
-.I \%filespec
-arguments is ignored.
-.
-The \f[CR]GNU\f[] behavior to recognize options even when mixed with
-.I \%filespec
-arguments is used througout.
-.
-But, as usual, the double minus argument
-.Opt_long
-ends the option handling and interprets all following arguments as
-.I \%filespec
-arguments; so the \%\f[CR]POSIX\f[] behavior can be easily adopted.
-.
-.
-.P
-For the following, it is necessary to know that on each system the
-.I \%man\~pages
-are sorted according to their content into several sections.
-.
-The
-.I classical man sections
-have a single-character name, either a digit from
-.B 1
-to
-.B 9
-or one of the characters
-.B n
-or
-.BR o .
-.
-In the following, a stand-alone character
-.I s
-stands for a
-.IR "classical man section" .
-The internal precedence of
-.B \%man
-for searching
-.I \%man\~pages
-with the same name within several sections goes according to the
-classical single-character sequence.
-.
-On some systems, this single character can be extended by a following
-string.
-.
-But the special
-.B \%groffer
-.I \%man\~page
-facility is based on the classical single character sections.
-.
-.
-.P
-Each
-.I \%filespec
-parameter can have one of the following forms in decreasing sequence.
-.
-.
-.Topic
-No
-.I \%filespec
-parameters means that
-.B \%groffer
-waits for standard input.
-.
-The minus option
-.Opt_short ""
-stands for standard input, too; it can occur several times.
-.
-.
-.Topic
-Next a
-.I \%filespec
-is tested whether it is the path name of an existing file.
-.
-Otherwise it is assumed to be a searching pattern for a
-.IR \%man\~page .
-.
-.
-.Topic
-.BI \%man: name ( section )
-and
-.IB \%name ( section )
-search the \%man\~page
-.I \%name
-in \%man\~section\~\c
-.IR \%section ,
-where
-.I \%section
-can be any string, but it must exist in the
-.I \%man
-system.
-.
-.
-.Topic
-Next some patterns based on the
-.I classical man sections
-are checked.
-.
-.BI \%man: name . s
-and
-.IB \%name . s
-search for a \%man\~page
-.I \%name
-in \%man\~section
-.I s
-if
-.I s
-is a
-.I classical man section
-mentioned above.
-.
-Otherwise a
-.I \%man\~page
-named
-.IR \%name.s
-is searched in the lowest
-.B man\~section .
-.
-.
-.Topic
-Now
-.BI \%man: name
-searches for a
-.I \%man\~page
-in the lowest
-.I \%man\~section
-that has a document called
-.IR \%name .
-.
-.
-.Topic
-The pattern
-.I \%s\~name
-originates from a strange argument parsing of the
-.B man
-program.
-.
-If
-.I s
-is a
-.I classical man section
-interpret it as a search for a
-.I \%man\~page
-called
-.I \%name
-in man\~section
-.IR s ,
-otherwise interpret both
-.I s
-and
-.I \%name
-as two independent
-.I \%filespec
-arguments.
-.
-.
-.Topic
-We are left with the argument
-.I \%name
-which is not an existing file.
-.
-So this searches for the
-.I \%man\~page
-called
-.I \%name
-in the lowest
-.I \%man\~section
-that has a document for this name.
-.
-.
-.P
-Wildcards in
-.I \%filespec
-arguments are only accepted for
-.Opt_long apropos*
-and
-.Opt_long whatis ;
-for normal display, they are interpreted as characters.
-.
-.
-.P
-Several file name arguments can be supplied.
-.
-They are mixed by
-.B \%groff
-into a single document.
-.
-Note that the set of option arguments must fit to all of these file
-arguments.
-.
-So they should have at least the same style of the
-.I \%groff
-language.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "OUTPUT MODES"
-.\" --------------------------------------------------------------------
-.
-By default, the
-.B \%groffer
-program collects all input into a single file, formats it with the
-.B \%groff
-program for a certain device, and then chooses a suitable viewer
-program.
-.
-The device and viewer process in
-.B \%groffer
-is called a
-.IR \%mode .
-.
-The mode and viewer of a running
-.B \%groffer
-program is selected automatically, but the user can also choose it
-with options.
-.
-.
-The modes are selected by option the arguments of
-.Opt_long_arg mode \fIanymode .
-Additionally, each of this argument can be specified as an option of
-its own, such as
-.Opt_long \fIanymode .
-Most of these modes have a viewer program, which can be chosen by an
-option that is constructed like
-.Opt_long \fIanymode\fR\-viewer .
-.
-.
-.P
-Several different modes are offered, graphical modes for
-\f[CR]\%X\~Window\f[],
-.IR \%text\~modes ,
-and some direct
-.I \%groff\~modes
-for debugging and development.
-.
-.
-.P
-By default,
-.B \%groffer
-first tries whether
-.I \%x\~mode
-is possible, then
-.IR \%ps\~mode ,
-and finally
-.IR \%tty\~mode .
-.
-This mode testing sequence for
-.I \%auto\~mode
-can be changed by specifying a comma separated list of modes with the
-option
-.Opt_long default\-modes.
-.
-.
-.P
-The searching for
-.I \%man\~pages
-and the decompression of the input are active in every mode.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Graphical Display Modes"
-.\" --------------------------------------------------------------------
-.
-The graphical display modes work mostly in the \%\f[CR]X\~Window\f[]
-environment (or similar implementations within other windowing
-environments).
-.
-The environment variable
-.Env_var $DISPLAY
-and the option
-.Opt_long display
-are used for specifying the \%\f[CR]X\~Window\f[] display to be used.
-.
-If this environment variable is empty
-.B \%groffer
-assumes that no \%\f[CR]X\~Window\f[] is running and changes to a
-.IR \%text\~mode .
-.
-You can change this automatic behavior by the option
-.Opt_long default\-modes .
-.
-.
-.P
-Known viewers for the graphical display modes and their standard
-\%\f[CR]X\~Window\f[] viewer progams are
-.
-.Topic
-\%\f[CR]X\~Window\f[]
-.I roff
-viewers such as
-.BR \%gxditview (@MAN1EXT@)
-or
-.BR \%xditview (1)
-(in
-.IR \%x\~mode ),
-.
-.Topic
-in a Postscript viewer
-.nh
-.RI ( \%ps\~mode ),
-.hy
-.
-.Topic
-in a dvi viewer program
-.nh
-.RI ( \%dvi\~mode ),
-.hy
-.
-.Topic
-in a PDF viewer
-.nh
-.RI ( \%pdf\~mode ),
-.hy
-.
-.Topic
-in a web browser
-.nh
-.RI ( html
-or
-.IR \%www\~mode ).
-.hy
-.RE
-.
-.
-.P
-The
-.I \%pdf\~mode
-has a major advantage \[em] it is the only graphical diplay mode that
-allows to search for text within the viewer; this can be a really
-important feature.
-.
-Unfortunately, it takes some time to transform the input into the PDF
-format, so it was not chosen as the major mode.
-.
-.
-.P
-These graphical viewers can be customized by options of the
-\%\f[CR]X\~Window\~Toolkit\f[].
-.
-But the
-.B \%groffer
-options use a leading double minus instead of the single minus used by
-the \%\f[CR]X\~Window\~Toolkit\f[].
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Text modes"
-.\" --------------------------------------------------------------------
-.
-There are two modes for text output,
-.I \%mode\~text
-for plain output without a pager and
-.I \%mode\~tty
-for a text output on a text terminal using some pager program.
-.
-.
-.P
-If the variable
-.Env_var \%$DISPLAY
-is not set or empty,
-.B \%groffer
-assumes that it should use
-.IR \%tty\~\%mode .
-.
-.
-.P
-In the actual implementation, the
-.I groff
-output device
-.I \%latin1
-is chosen for
-.IR \%text\~modes .
-.
-This can be changed by specifying option
-.Opt_short T
-or
-.Opt_long device .
-.
-.
-.P
-The pager to be used can be specified by one of the options
-.Opt_long pager
-and
-.Opt_long tty\-viewer ,
-or by the environment variable
-.Env_var $PAGER .
-If all of this is not used the
-.BR \%less (1)
-program with the option
-.Opt_short r
-for correctly displaying control sequences is used as the default
-pager.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Special Modes for Debugging and Development"
-.\" --------------------------------------------------------------------
-.
-These modes use the
-.I \%groffer
-file determination and decompression.
-.
-This is combined into a single input file that is fed directly into
-.B \%groff
-with different strategy without the
-.I \%groffer
-viewing facilities.
-.
-These modes are regarded as advanced, they are useful for debugging
-and development purposes.
-.
-.
-.P
-The
-.I \%source\~mode
-with option
-.Opt_short Q
-and
-.Opt_long source
-just displays the decompressed input.
-.
-.
-.P
-The
-.I \%groff\~mode
-passes the input to
-.B \%groff
-using only some suitable options provided to
-.BR \%groffer .
-.
-This enables the user to save the generated output into a file or pipe
-it into another program.
-.
-.
-.P
-In
-.IR \%groff\~\%mode ,
-the option
-.Opt_short Z
-disables post-processing, thus producing the
-.nh
-.I groff intermediate
-.IR output .
-.hy
-.
-In this mode, the input is formatted, but not postprocessed; see
-.BR \%groff_out (@MAN5EXT@)
-for details.
-.
-.
-.P
-All
-.B \%groff
-short options are supported by
-.BR \%groffer .
-.
-.
-.\" --------------------------------------------------------------------
-.SH "MAN\~PAGE\~SEARCHING"
-.\" --------------------------------------------------------------------
-.
-The default behavior of
-.B \%groffer
-is to first test whether a file parameter represents a local file; if
-it is not an existing file name, it is assumed to represent a name of
-a
-.IR \%man\~page .
-.
-This behavior can be modified by the following options.
-.
-.
-.TP
-.Opt_long man
-forces to interpret all file parameters as
-.I \%filespecs
-for searching
-.IR \%man\~pages .
-.
-.TP
-.Opt_long no\-man
-.TP+
-.Opt_long local\-file
-disable the
-.I man
-searching; so only local files are displayed.
-.
-.
-.P
-If neither a local file nor a
-.I \%man\~page
-was retrieved for some file parameter a warning is issued on standard
-error, but processing is continued.
-.
-.
-.P
-The
-.B \%groffer
-program provides a search facility for
-.IR \%man\~pages .
-.
-All long options, all environment variables, and most of the
-functionality of the \f[CR]GNU\f[]
-.BR \%man (1)
-program were implemented.
-.
-This inludes the extended file names of
-.IR \%man\~pages ,
-for example, the
-.I \%man\~page
-of
-.B \%groff
-in man\~section 7 may be stored under
-.File_name /usr/share/man/man7/groff.7.gz ,
-where
-.File_name /usr/share/man/
-is part of the man\~path, the subdirectory
-.I \%man7
-and the file extension
-.I .7
-refer to the man\~section 7;
-.I \%.gz
-shows the compression of the file.
-.
-.
-.P
-The
-.I cat\~pages
-(preformatted
-.IR \%man\~pages )
-are intentionally excluded from the search because
-.B \%groffer
-is a
-.I roff
-program that wants to format by its own.
-.
-With the excellent performance of the actual computers, the
-preformatted
-.I \%man\~pages
-aren't necessary any longer.
-.
-.
-.P
-The algorithm for retrieving
-\I \%man\~pages
-uses five search methods.
-.
-They are successively tried until a method works.
-.
-.
-.Topic
-The search path can be manually specified by using the option
-.Opt_long manpath .
-An empty argument disables the
-.I \%man\~page
-searching.
-.
-This overwrites the other methods.
-.
-.
-.Topic
-If this is not available the environment variable
-.Env_var $MANPATH
-is searched.
-.
-.
-.Topic
-If this is empty, the program tries to read it from the environment
-variable
-.Env_var $MANOPT .
-.
-.
-.Topic
-If this does not work a reasonable default path from
-.Env_var $PATH
-is searched for
-.IR \%man\~pages .
-.
-.
-.Topic
-If this does not work, the
-.BR \%manpath (1)
-program for determining a path of
-.I man
-directories is tried.
-.
-.
-.P
-After this, the path elements for the language (locale) and operating
-system specific
-.I \%man\~pages
-are added to the
-.IR man\~path ;
-their sequence is determined automatically.
-.
-For example, both
-.File_name /usr/share/man/linux/fr
-and
-.File_name /usr/share/man/fr/linux
-for french linux
-.I \%man\~pages
-are found.
-.
-The language and operating system names are determined from both
-environment variables and command line options.
-.
-.
-.P
-The locale (language) is determined like in \f[CR]GNU\f[]
-.BR man ,
-that is from highest to lowest precedence:
-.Topic
-.Opt_long locale
-.
-.Topic
-.Env_var $GROFFER_OPT
-.
-.Topic
-.Env_var $MANOPT
-.
-.Topic
-.Env_var $LCALL
-.
-.Topic
-.Env_var $LC_MESSAGES
-.
-.Topic
-.Env_var $LANG .
-.
-.
-.P
-The language locale is usually specified in the
-\%\f[CR]POSIX\~1003.1\f[] based format:
-.P
-.nh
-\f[I]\f[][\f[CB]_\f[]\f[I]\f[][\f[CB].\f[]\
-\f[I]\f[][\f[CB],\f[]\f[I]\f[]]]],
-.hy
-.P
-but the two-letter code in
-.nh
-.I 
-.hy
-is sufficient for most purposes.
-.
-.
-.P
-If no
-.I \%man\~pages
-for a complicated locale are found the country part consisting of the
-first two characters (without the `\f[CB]_\f[]', `\f[CB].\f[]', and
-`\f[CB],\f[]' parts) of the locale is searched as well.
-.
-.
-.P
-If still not found the corresponding
-.I \%man\~page
-in the default language is used instead.
-.
-As usual, this default can be specified by one of \f[CR]C\f[] or
-\f[CR]\%POSIX\f[].
-.
-The
-.I \%man\~pages
-in the default language are usually in English.
-.
-.
-.P
-Several operating systems can be given by appending their names,
-separated by a comma.
-.
-This is then specified by the environment variable
-.Env_var $SYSTEM
-or by the command line option
-.Opt_long systems .
-The precedence is similar to the locale case above from highest to
-lowest precedence:
-.
-Topic
-.Opt_long systems
-.
-.Topic
-.Env_var $GROFFER_OPT
-.
-.Topic
-.Env_var $MANOPT
-.
-.Topic
-.Env_var $SYSTEM .
-.
-.
-.P
-When searching for
-.I \%man\~pages
-this
-.I man\~path
-with the additional language and system specific directories is used.
-.
-.
-.P
-The search can further be restricted by limiting it to certain
-sections.
-.
-A single section can be specified within each
-.I \%filespec
-argument, several sections as a colon-separated list in command line
-option
-.Opt_long sections
-or environment variable
-.Env_var $MANSECT .
-.
-When no section was specified a set of standard sections is searched
-until a suitable
-.I \%man\~page
-was found.
-.
-.
-.P
-Finally, the search can be restricted to a so-called
-.IR extension .
-This is a postfix that acts like a subsection.
-.
-It can be specified by
-.Opt_long extension
-or environment variable
-.Env_var $EXTENSION .
-.
-.
-.P
-For further details on
-.I \%man\~page
-searching, see
-.BR \%man (1).
-.
-.
-.\" --------------------------------------------------------------------
-.SH DECOMPRESSION
-.\" --------------------------------------------------------------------
-.
-The program has a decompression facility.
-.
-If standard input or a file that was retrieved from the command line
-parameters is compressed with a format that is supported by either
-.BR \%gzip (1)
-or
-.BR \%bzip2 (1)
-it is decompressed on-the-fly.
-.
-This includes the \f[CR]GNU\f[]
-.BR \%.gz ,
-.BR \%.bz2 ,
-and the traditional
-.B \%.Z
-compression.
-.
-The program displays the concatenation of all decompressed input in
-the sequence that was specified on the command line.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "ENVIRONMENT"
-.\" --------------------------------------------------------------------
-.
-The
-.B \%groffer
-program supports many system variables, most of them by courtesy of
-other programs.
-.
-All environment variables of
-.BR \%groff (@MAN1EXT@)
-and \f[CR]GNU\f[]
-.BR \%man (1)
-and some standard system variables are honored.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Native groffer Variables"
-.\" --------------------------------------------------------------------
-.
-.TP
-.Env_var $GROFFER_OPT
-Store options for a run of
-.BR \%groffer .
-.
-The options specified in this variable are overridden by the options
-given on the command line.
-.
-The content of this variable is run through the shell builtin `eval';
-so arguments containing white-space or special shell characters should
-be quoted.
-.
-Do not forget to export this variable, otherwise it does not exist
-during the run of
-.BR groffer .
-.
-.
-.\" --------------------------------------------------------------------
-.SS "System Variables"
-.\" --------------------------------------------------------------------
-.
-The
-.B \%groffer
-program is a shell script that is run through
-.File_name /bin/sh ,
-which can be internally linked to programs like
-.BR \%bash (1).
-The corresponding system environment is automatically effective.
-.
-The following variables have a special meaning for
-.BR \%groffer .
-.
-.
-.TP
-.Env_var $DISPLAY
-If this variable is set this indicates that the \%\f[CR]X\~Window\f[]
-system is running.
-.
-Testing this variable decides on whether graphical or text output is
-generated.
-.
-This variable should not be changed by the user carelessly, but it can
-be used to start the graphical
-.B \%groffer
-on a remote \%\f[CR]X\~Window\f[] terminal.
-.
-For example, depending on your system,
-.B \%groffer
-can be started on the second monitor by the command
-.Shell_cmd DISPLAY=:0.1\~groffer\~ what.ever &
-.
-.
-.TP
-.Env_var $LC_ALL
-.TP+
-.Env_var $LC_MESSAGES
-.TP+
-.Env_var $LANG
-If one of these variables is set (in the above sequence), its content
-is interpreted as the locale, the language to be used, especially when
-retrieving
-\IR \%man\~pages .
-.
-A locale name is typically of the form
-.nh
-.IR language [\c
-.B _\c
-.IR territory [\c
-.B .\c
-.IR codeset [\c
-.B @\c
-.IR modifier ]]],
-.hy
-where
-.I \%language
-is an ISO 639 language code,
-.I \%territory
-is an ISO 3166 country code, and
-.I \%codeset
-is a character set or encoding identifier like ISO-8859-1 or UTF-8;
-see
-.BR \%setlocale (3).
-.
-The locale values \f[CR]C\f[] and \%\f[CR]POSIX\f[]
-stand for the default, i.e. the
-.I \%man\~page
-directories without a language prefix.
-.
-This is the same behavior as when all 3\~variables are unset.
-.
-.
-.TP
-.Env_var $PAGER
-This variable can be used to set the pager for the tty output.
-.
-For example, to disable the use of a pager completely set this
-variable to the
-.BR \%cat (1)
-program
-.Shell_cmd PAGER=cat\~groffer\~ anything
-.
-.
-.TP
-.Env_var $PATH
-All programs within the
-.B \%groffer
-shell script are called without a fixed path.
-.
-Thus this environment variable determines the set of programs used
-within the run of
-.BR \%groffer .
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Groff Variables"
-.\" --------------------------------------------------------------------
-.
-The
-.B \%groffer
-program internally calls
-.BR \%groff ,
-so all environment variables documented in
-.BR \%groff (@MAN1EXT@)
-are internally used within
-.B \%groffer
-as well.
-.
-The following variable has a direct meaning for the
-.B \%groffer
-program.
-.
-.TP
-.Env_var $GROFF_TMPDIR
-If the value of this variable is an existing, writable directory,
-.B \%groffer
-uses it for storing its temporary files, just as
-.B groff
-does.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Man Variables"
-.\" --------------------------------------------------------------------
-.
-Parts of the functionality of the
-.B man
-program were implemented in
-.BR \%groffer ;
-support for all environment variables documented in
-.BR \%man (1)
-was added to
-.BR \%groffer ,
-but the meaning was slightly modified due to the different approach in
-.BR \%groffer ;
-but the user interface is the same.
-.
-The
-.B man
-environment variables can be overwritten by options provided with
-.Env_var $MANOPT ,
-which in turn is overwritten by the command line.
-.
-.
-.TP
-.Env_var $EXTENSION
-Restrict the search for
-.I \%man\~pages
-to files having this extension.
-.
-This is overridden by option
-.Opt_long extension ;
-see there for details.
-.
-.
-.TP
-.Env_var $MANOPT
-This variable contains options as a preset for
-.BR \%man (1).
-As not all of these are relevant for
-.B \%groffer
-only the essential parts of its value are extracted.
-.
-The options specified in this variable overwrite the values of the
-other environment variables that are specific to
-.IR man .
-.
-All options specified in this variable are overridden by the options
-given on the command line.
-.
-.
-.TP
-.Env_var $MANPATH
-If set, this variable contains the directories in which the
-.I \%man\~page
-trees are stored.
-.
-This is overridden by option
-.Opt_long manpath .
-.
-.
-.TP
-.Env_var $MANSECT
-If this is a colon separated list of section names, the search for
-.I \%man\~pages
-is restricted to those manual sections in that order.
-.
-This is overridden by option
-.Opt_long sections .
-.
-.
-.TP
-.Env_var $SYSTEM
-If this is set to a comma separated list of names these are interpreted
-as
-.I \%man\~page
-trees for different operating systems.
-.
-This variable can be overwritten by option
-.Opt_long systems ;
-see there for details.
-.
-.
-.P
-The environment variable
-.Env_var $MANROFFSEQ
-is ignored by
-.B \%groffer
-because the necessary preprocessors are determined automatically.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "CONFIGURATION FILES"
-.\" --------------------------------------------------------------------
-.
-The
-.B \%groffer
-program can be preconfigured by two configuration files.
-.
-.
-.TP
-.File_name /etc/groff/groffer.conf
-System-wide configuration file for
-.BR \%groffer .
-.
-.
-.TP
-.File_name $HOME/.groff/groffer.conf
-User-specific configuration file for
-.BR \%groffer ,
-where
-.Env_var $HOME
-denotes the user's home directory.
-.
-This file is called after the system-wide configuration file to enable
-overriding by the user.
-.
-.
-.P
-The precedence of option delivery is given in the following.
-.
-The configuration file in
-.File_name /etc
-has the lowest precedence; it is overwritten by the configuration file
-in the home directory; both configuration files are overwritten by the
-environment variable
-.Env_var $GROFFER_OPT ;
-everything is overwritten by the command line.
-.
-.
-.P
-In the configuration files, arbitrary spaces are allowed at the
-beginning of each line, they are just ignored.
-.
-Apart from that, the lines of the configuration lines either start
-with a minus character, all other lines are interpreted as shell
-commands.
-.
-.
-.P
-The lines with the beginning minus are interpreted as
-.B groffer
-options.
-.
-This easily allows to set general
-.B \%groffer
-options that should be used with any call of
-.BR \%groffer .
-.
-Each line can represent a single short option, a short option cluster,
-or a long option with two minus signs, eventually with an argument.
-.
-The argument can be appended either after a space character or an
-equal sign
-.RB ` = '.
-The argument can be surrounded by quotes, but this is not necessary.
-.
-The options from these lines are collected and prepended to the
-existing value of
-.Env_var $GROFFER_OPT
-at the end of each configuration file.
-.
-.
-.P
-After the transformation of the minus lines, the configuration files
-have been transferred into a shell script that is called within
-.B \%groffer
-using the `\c
-.CB \.\~\c
-.IR \%filename '
-shell syntax.
-.
-.
-.P
-It makes sense to use these configuration files for the following
-tasks:
-.
-.Topic
-Preset command line options, such as choosing a
-.I \%mode
-or a viewer.
-.
-These are written into lines starting with a single or double minus
-sign, followed by the option name.
-.
-.Topic
-Preset environment variables recognized by
-.BR \%groffer ;
-but do not forget to export them.
-.
-.Topic
-You can also write a shell function for calling, for example a viewer
-program for some
-.IR \%mode .
-Such a function can be fed into a corresponding
-.Opt_long \f[I]mode\f[]\-viewer
-option.
-.
-.Topic
-Enter
-.Opt_long shell
-to specify a shell for the run of
-.File_name groffer2.sh .
-Some shells run much faster than the standard shell.
-.
-.
-.P
-As an example, consider the following configuration file in
-.File_name ~/.groff/groffer.conf ,
-say.
-.
-.P
-.ft CR
-.nh
-.nf
-# groffer configuration file
-#
-# groffer options that are used in each call of groffer
-\-\-shell=ksh
-\-\-foreground=DarkBlue
-\-\-resolution=100
-\-\-x\-viewer='gxditview \-geometry 900x1200'
-#
-# some shell commands
-if test "$DISPLAY" = ""; then
-  export DISPLAY='localhost:0.0'
-fi
-date >>~/mygroffer.log
-.fi
-.hy
-.ft
-.
-.
-.P
-The lines starting with
-.B #
-are command lines.
-.
-This configuration sets four
-.B \%groffer
-options (the lines starting with `\-') and runs two shell commands (the
-rest of the script).
-.
-This has the following effects:
-.
-.
-.Topic
-Use
-.B ksh
-as the shell to run the
-.B \%groffer
-script; if it works it should be faster than the usual
-.BR sh .
-.
-.
-.Topic
-Use a text color of
-.B \%DarkBlue
-in all viewers that support this, such as
-.BR \%gxditview .
-.
-.
-.Topic
-Use a resolution of
-.B 100\~dpi
-in all viewers that support this, such as
-.BR \%gxditview .
-.
-By this, the default device in
-.I x mode
-is set to
-.BR X100 .
-.
-.
-.Topic
-Force
-.BR \%gxditview (@MAN1EXT@)
-as the
-.I \%x-mode
-viewer using the geometry option for setting the width to
-.B 900\~dpi
-and the height to
-.BR 1200\~dpi .
-This geometry is suitable for a resolution of
-.BR 100\~dpi .
-.
-.
-.Topic
-If the environment variable
-.Env_var $DISPLAY
-is empty set it to
-.IR localhost:0.0 .
-.
-That allows to start
-.B \%groffer
-in the standard \%\f[CR]X\~Window\f[] display, even when the program
-is called from a text console.
-.
-.
-.Topic
-Just for fun, the date of each
-.B \%groffer
-start is written to the file
-.File_name mygroffer.log
-in the home directory.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "EXAMPLES"
-.\" --------------------------------------------------------------------
-.
-The usage of
-.B \%groffer
-is very easy.
-.
-Usually, it is just called with a file name or
-.IR \%man\~page .
-.
-The following examples, however, show that
-.B \%groffer
-has much more fancy capabilities.
-.
-.
-.TP
-.Shell_cmd "groffer\~/usr/local/share/doc/groff/meintro.ms.gz"
-Decompress, format and display the compressed file
-.File_name meintro.ms.gz
-in the directory
-.File_name /usr/local/share/doc/groff ,
-using the standard viewer
-.B \%gxditview
-as graphical viewer when in \%\f[CR]X\~Window\f[], or the
-.BR \%less (1)
-pager program when not in \%\f[CR]X\~Window\f[].
-.
-.
-.TP
-.Shell_cmd "groffer\~groff"
-If the file
-.File_name \%./groff
-exists use it as input.
-.
-Otherwise interpret the argument as a search for the
-.I \%man\~page
-named
-.B \%groff
-in the smallest possible
-.IR \%man\~section ,
-being section 1 in this case.
-.
-.
-.TP
-.Shell_cmd "groffer\~man:groff"
-search for the
-.I \%man\~page
-of
-.B \%groff
-even when the file
-.File_name ./groff
-exists.
-.
-.
-.TP
-.Shell_cmd "groffer\~groff.7"
-.TP+
-.Shell_cmd "groffer\~7\~groff"
-search the
-.I \%man\~page
-of
-.B \%groff
-in
-.I \%man\~section
-.BR 7 .
-This section search works only for a digit or a single character from
-a small set.
-.
-.
-.TP
-.Shell_cmd "groffer\~fb.modes"
-If the file
-.File_name ./fb.modes
-does not exist interpret this as a search for the
-.I \%man\~page
-of
-.BR fb.modes .
-As the extension
-.I \%modes
-is not a single character in classical section style the argument is
-not split to a search for
-.BR fb .
-.
-.
-.TP
-.Shell_cmd "groffer\~groff\~\[cq]troff(1)\[cq]\~man:roff"
-.
-The arguments that are not existing files are looked-up as the
-following
-.IR \%man\~pages :
-.B \%groff
-(automatic search, should be found in \fIman\fP\~section\~1),
-.B \%troff
-(in section\~1),
-and
-.B \%roff
-(in the section with the lowest number, being\~7 in this case).
-.
-The quotes around
-.nh
-.I \[cq]troff(1)\[cq]
-.hy
-are necessary because the paranthesis are special shell characters;
-escaping them with a backslash character
-.I \[rs](
-and
-.I \[rs])
-would be possible, too.
-.
-The formatted files are concatenated and displayed in one piece.
-.
-.
-.TP
-.Shell_cmd "LANG=de\~groffer\~--man\~--www\~--www-viever=galeon\~ls"
-.
-Retrieve the German
-.I \%man\~page
-(language
-.IR de )
-for the
-.B ls
-program, decompress it, format it to
-.I \%html
-format
-.nh
-.RI ( \%www\~mode )
-.hy
-and view the result in the web browser
-.BR \%galeon .
-The option
-.Opt_long man
-guarantees that the
-.I \%man\~page
-is retrieved, even when a local file
-.File_name \%ls
-exists in the actual directory.
-.
-.
-.TP
-.Shell_cmd "groffer\~--source\~'man:roff(7)'"
-.
-Get the
-.I \%man\~page
-called
-.I \%roff
-in \fIman\fP\~section 7, decompress it, and print its unformatted
-content, its source code.
-.
-.
-.TP
-.Shell_cmd "cat\~file.gz\~|\~groffer\~-Z\~-mfoo"
-.
-Decompress the standard input, send this to
-.I \%groff intermediate output mode
-without post-processing
-.RB ( groff
-option
-.Opt_short Z ),
-using macro package by
-.I \%foo
-.RB ( groff
-option
-.Opt_short m ) .
-.
-.
-.TP
-.Shell_cmd "echo\~'\[rs]f[CB]WOW!'\~|"
-.TP+
-.Shell_cmd+ "groffer --x --bg red --fg yellow --geometry 200x100 -"
-.
-Display the word \f[CB]WOW!\f[] in a small window in constant-width
-bold font, using color yellow on red background.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "COMPATIBILITY"
-.\" --------------------------------------------------------------------
-.
-The
-.B \%groffer
-program consists of two shell scripts.
-.
-.
-.P
-The starting script is the file
-.File_name \%groffer
-that is installed in a
-.File_name bin
-directory.
-.
-It is generated from the source file
-.File_name \%groffer.sh .
-.
-It is just a short starting script without any functions such that it
-can run on very poor shells.
-.
-.
-.P
-The main part of the
-.B \%groffer
-program is the file
-.File_name groffer2.sh
-that is installed in the
-.I groff
-library directory.
-.
-This script can be run under a different shell by using the
-.B \%groffer
-option
-.Opt_long shell .
-.
-.
-.P
-Both scripts are compatible with both
-\f[CR]GNU\f[] and \%\f[CR]POSIX\f[].
-.
-\%\f[CR]POSIX\f[] compatibility refers to
-\%\f[CR]IEEE\~P1003.2/D11.2\f[] of September 1991, a very early
-version of the \%\f[CR]POSIX\f[] standard that is still freely
-available in the internet at
-.URL http://\:www.funet.fi/\:pub/\:doc/\:posix/\:p1003.2/\:d11.2/\:all \
-"\%POSIX\~P1003.2\~draft\~11.2" .
-.
-.
-.P
-Only a restricted set of shell language elements and shell builtins is
-used to achieve even compatibility with some Bourne shells that are
-not fully \%\f[CR]POSIX\f[] compatible.
-.
-The
-.B \%groffer
-shell scripts were tested on many shells, including the following
-Bourne shells:
-.BR \%ash (1),
-.BR \%bash (1),
-.BR \%dash (1),
-.BR \%ksh (1),
-.BR \%pdksh (1),
-.BR \%posh (1),
-and
-.BR \%zsh (1).
-So it should work on most actual free and commercial operating
-systems.
-.
-.
-.P
-The shell for the run of
-.File_name groffer2.sh
-can be chosen by the option
-.Opt_long shell
-on the command line or the environment variable
-.Env_var $GROFF_OPT .
-If you want to add it to one of the
-.B \%groffer
-configuration files you must write a line starting with
-.Opt_long shell .
-.
-.
-.P
-The
-.B \%groffer
-program provides its own parser for command line arguments that is
-compatible to both \%\f[CR]POSIX\f[]
-.BR \%getopts (1)
-and \%\f[CR]GNU\f[]
-.BR \%getopt (1).
-It can handle option arguments and file names containing white space
-and a large set of special characters.
-.
-The following standard types of options are supported.
-.
-.
-.Topic
-The option consisiting of a single minus
-.Opt_short
-refers to standard input.
-.
-.
-.Topic
-A single minus followed by characters refers to a single character
-option or a combination thereof; for example, the
-.B \%groffer
-short option combination
-.Opt_short Qmfoo
-is equivalent to
-.Opt_short Q\~\-m\~foo .
-.
-.
-.Topic
-Long options are options with names longer than one character; they
-are always preceded by a double minus.
-.
-An option argument can either go to the next command line argument or
-be appended with an equal sign to the argument; for example,
-.Opt_alt -- long=arg
-is equivalent to
-.Opt_alt -- long\~arg .
-.
-.
-.Topic
-An argument of
-.Opt_--
-ends option parsing; all further command line arguments are
-interpreted as
-.I \%filespec
-parameters, i.e. file names or constructs for searching
-.IR \%man\~pages ).
-.
-.
-.Topic
-All command line arguments that are neither options nor option
-arguments are interpreted as
-.I \%filespec
-parameters and stored until option parsing has finished.
-.
-For example, the command line
-.Shell_cmd "groffer file1 -a -o arg file2"
-is equivalent to
-.Shell_cmd "groffer -a -o arg -- file1 file2"
-.
-.
-.P
-The free mixing of options and
-.I \%filespec
-parameters follows the GNU principle.
-.
-That does not fulfill the strange option behavior of \%\f[CR]POSIX\f[]
-that ends option processing as soon as the first non-option argument
-has been reached.
-.
-The end of option processing can be forced by the option
-.RB ` \-\- '
-anyway.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "BUGS"
-.\" --------------------------------------------------------------------
-.
-Report bugs to the
-.MTO bug-groff@gnu.org "bug-groff mailing list" .
-.
-Include a complete, self-contained example that will allow the bug to
-be reproduced, and say which version of
-.B \%groffer
-you are using.
-.
-.
-.P
-You can also use the
-.MTO groff@gnu.org "groff mailing list" ,
-but you must first subscribe to this list.
-.
-You can do that by visiting the
-.URL http://\:lists.gnu.org/\:mailman/\:listinfo/\:groff \
-"groff mailing list web page" .
-.
-.
-.P
-See
-.BR \%groff (@MAN1EXT@)
-for information on availability.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.P
-.BR \%groff (@MAN1EXT@),
-.BR \%@g@troff (@MAN1EXT@)
-.RS
-Details on the options and environment variables available in
-.BR \%groff ;
-all of them can be used with
-.BR \%groffer .
-.RE
-.
-.
-.TP
-.BR \%groff (@MAN7EXT@)
-Documentation of the
-.I \%groff
-language.
-.
-.
-.TP
-.BR \%grog (@MAN1EXT@)
-Internally,
-.B \%groffer
-tries to guess the
-.B \%groff
-command line options from the input using this program.
-.
-.
-.TP
-.BR groff_out (@MAN5EXT@)
-Documentation on the
-.I \%groff intermediate output
-.nh
-.RI ( ditroff
-output).
-.hy
-.
-.
-.TP
-.BR groff_tmac (@MAN5EXT@)
-Documentation on the
-.I \%groff
-macro files.
-.
-.
-.TP
-.BR \%man (1)
-The standard program to display
-.IR \%man\~pages .
-.
-The information there is only useful if it is the
-.I \%man\~page
-for GNU
-.BR man .
-Then it documents the options and environment variables that are
-supported by
-.BR \%groffer .
-.
-.
-.P
-.BR \%ash (1),
-.BR \%bash (1),
-.BR \%dash (1),
-.BR \%ksh (1),
-.BR \%pdksh (1),
-.BR \%posh (1),
-.BR \%sh (1),
-.BR \%zsh (1)
-.RS
-Bourne shells that were tested with
-.BR \%groffer .
-.RE
-.
-.
-.P
-.BR \%gxditview (@MAN1EXT@),
-.BR \%xditview (1x)
-.RS
-Viewers for
-.BR \%groffer 's
-.IR \%x\~mode .
-.RE
-.
-.
-.P
-.BR \%kghostview (1),
-.BR \%ggv (1),
-.BR \%gv (1),
-.BR \%ghostview (1),
-.BR \%gs (1)
-.RS
-Viewers for
-.BR \%groffer 's
-.IR \%ps\~mode .
-.RE
-.
-.
-.P
-.BR \%kghostview (1),
-.BR \%ggv (1),
-.BR \%xpdf (1),
-.BR \%acroread (1),
-.BR \%kpdf (1)
-.RS
-Viewers for
-.BR \%groffer 's
-.IR \%pdf\~mode .
-.RE
-.
-.
-.P
-.BR \%kdvi (1),
-.BR \%xdvi (1),
-.BR \%dvilx (1)
-.RS
-Viewers for
-.BR \%groffer 's
-.IR \%dvi\~mode .
-.RE
-.
-.
-.P
-.BR \%konqueror (1),
-.BR \%mozilla (1),
-.BR \%lynx (1)
-.RS
-Web-browsers for
-.BR \%groffer 's
-.I \%html
-or
-.IR \%www\~mode .
-.RE
-.
-.
-.TP
-.BR \%less (1)
-Standard pager program for the
-.I \%tty\~mode .
-.
-.
-.P
-.BR \%gzip (1),
-.BR \%bzip2 (1)
-.RS
-The decompression programs supported by
-.BR \%groffer .
-.RE
-.
-.
-.\" --------------------------------------------------------------------
-.SH "AUTHOR"
-.\" --------------------------------------------------------------------
-.author
-.
-.
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.copyleft
-.
-.
-.\" --------------------------------------------------------------------
-.\" Emacs settings
-.\" --------------------------------------------------------------------
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
diff --git a/contrib/groff/contrib/groffer/groffer.sh b/contrib/groff/contrib/groffer/groffer.sh
deleted file mode 100644
index 1cb55c72c9ca..000000000000
--- a/contrib/groff/contrib/groffer/groffer.sh
+++ /dev/null
@@ -1,299 +0,0 @@
-#! /bin/sh
-
-# groffer - display groff files
-
-# Source file position: /contrib/groffer/groffer.sh
-
-# Copyright (C) 2001,2002,2003,2004,2005
-# Free Software Foundation, Inc.
-# Written by Bernd Warken
-
-# This file is part of `groffer', which is part of `groff' version
-# @VERSION@.  See $_GROFF_VERSION.
-
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# `groff' is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with `groff'; see the files COPYING and LICENSE in the top
-# directory of the `groff' source.  If not, write to the Free Software
-# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301,
-# USA.
-
-########################################################################
-
-_PROGRAM_VERSION='0.9.22';
-_LAST_UPDATE='22 August 2005';
-
-export _PROGRAM_VERSION;
-export _LAST_UPDATE;
-
-export GROFFER_OPT;		# option environment for groffer
-
-export _CONF_FILE_ETC;		# configuration file in /etc
-export _CONF_FILE_HOME;		# configuration file in $HOME
-export _CONF_FILES;		# configuration files
-_CONF_FILE_ETC='/etc/groff/groffer.conf';
-_CONF_FILE_HOME="${HOME}/.groff/groffer.conf";
-_CONF_FILES="${_CONF_FILE_ETC} ${_CONF_FILE_HOME}";
-
-# characters
-
-export _AT;
-export _SP;
-export _SQ;
-export _TAB;
-
-_AT='@';
-_SP=' ';
-_SQ="'";
-_TAB='	';
-
-export _ERROR;
-_ERROR='7';			# for syntax errors; no `-1' in `ash'
-
-# @...@ constructs
-
-export _GROFF_VERSION
-_GROFF_VERSION='@VERSION@';
-if test _@VERSION@_ = _${_AT}VERSION${_AT}_
-then
-  _GROFF_VERSION='1.19.2';
-fi;
-
-export _AT_BINDIR_AT;
-export _AT_G_AT;
-export _AT_LIBDIR_AT;
-export _GROFFER_LIBDIR;
-if test _@BINDIR@_ = _${_AT}BINDIR${_AT}_
-then
-  # script before `make'
-  _AT_BINDIR_AT='.';
-  _AT_G_AT='';
-  _AT_LIBDIR_AT='';
-  _GROFFER_LIBDIR='.';
-else
-  _AT_BINDIR_AT='@BINDIR@';
-  _AT_G_AT='@g@';
-  _AT_LIBDIR_AT='@libdir@';
-  _GROFFER_LIBDIR="${_AT_LIBDIR_AT}"'/groff/groffer';
-fi;
-
-export _GROFFER_SH;		# file name of this shell script
-case "$0" in
-*groffer*)
-  _GROFFER_SH="$0";
-  # was: _GROFFER_SH="${_AT_BINDIR_AT}/groffer";
-  ;;
-*)
-  echo 'The groffer script should be started directly.' >&2
-  exit 1;
-  ;;
-esac;
-
-export _GROFFER2_SH;		# file name of the script that follows up
-_GROFFER2_SH="${_GROFFER_LIBDIR}"/groffer2.sh;
-
-export _NULL_DEV;
-if test -c /dev/null
-then
-  _NULL_DEV="/dev/null";
-else
-  _NULL_DEV="NUL";
-fi;
-
-
-# Test of the `$()' construct.
-if test _"$(echo "$(echo 'test')")"_ \
-     != _test_
-then
-  echo 'The "$()" construct did not work.' >&2;
-  exit "${_ERROR}";
-fi;
-
-# Test of sed program
-if test _"$(echo red | sed -e 's/r/s/')"_ != _sed_
-then
-  echo 'The sed program did not work.' >&2;
-  exit "${_ERROR}";
-fi;
-
-
-########################### configuration
-
-# read and transform the configuration files, execute the arising commands
-for f in "${_CONF_FILE_HOME}" "${_CONF_FILE_ETC}"
-do
-  if test -f "$f"
-  then
-    o="";			# $o means groffer option
-    # use "" quotes because of ksh and posh
-    eval "$(cat "$f" | sed -n -e '
-# Ignore comments
-/^['"${_SP}${_TAB}"']*#/d
-# Delete leading and final space
-s/^['"${_SP}${_TAB}"']*//
-s/['"${_SP}${_TAB}"']*$//
-# Print all shell commands
-/^[^-]/p
-# Replace empty arguments
-s/^\(-[^ ]*\)=$/o="${o} \1 '"${_SQ}${_SQ}"'"/p
-# Replace division between option and argument by single space
-s/[='"${_SP}${_TAB}"']['"${_SP}${_TAB}"']*/'"${_SP}"'/
-# Handle lines without spaces
-s/^\(-[^'"${_SP}"']*\)$/o="${o} \1"/p
-# Print options that have their argument encircled with single quotes
-/^-[^ ]* '"${_SQ}"'.*'"${_SQ}"'$/s/^.*$/o="${o} &"/p
-# Replace encircled double quotes by single quotes and print the result
-s/^\(-[^ ]*\) "\(.*\)"$/o="${o} \1 '"${_SQ}"'\2'"${_SQ}"'"/p
-# Encircle the remaining arguments with single quotes
-s/^\(-[^ ]*\) \(.*\)$/o="${o} \1 '"${_SQ}"'\2'"${_SQ}"'"/p
-')"
-    if test _"${o}"_ != __
-    then
-      if test _"{GROFFER_OPT}"_ = __
-      then
-        GROFFER_OPT="${o}";
-      else
-        GROFFER_OPT="${o} ${GROFFER_OPT}";
-      fi;
-    fi;
-  fi;
-done;
-
-# integrate $GROFFER_OPT into the command line; it isn't needed any more
-if test _"${GROFFER_OPT}"_ != __
-then
-  eval set x "${GROFFER_OPT}" '"$@"';
-  shift;
-  GROFFER_OPT='';
-fi;
-
-
-########################### Determine the shell
-
-export _SHELL;
-
-# use "``" instead of "$()" for using the case ")" construct
-# do not use "" quotes because of ksh
-_SHELL=`
-  # $x means list.
-  # $s means shell.
-  # The command line arguments are taken over.
-  # Shifting herein does not have an effect outside.
-  export x;  
-  case " $*" in
-  *\ --sh*)			# abbreviation for --shell
-    x='';
-    s='';
-    # determine all --shell arguments, store them in $x in reverse order
-    while test $# != 0
-    do
-      case "$1" in
-      --shell|--sh|--she|--shel)
-        if test "$#" -ge 2
-        then
-          s="$2";
-          shift;
-        fi;
-        ;;
-      --shell=*|--sh=*|--she=*|--shel=*)
-        # delete up to first "=" character
-        s="$(echo x"$1" | sed -e 's/^x[^=]*=//')";
-        ;;
-      *)
-        shift;
-        continue;
-      esac;
-      if test _"${x}"_ = __
-      then
-        x="'${s}'";
-      else
-        x="'${s}' ${x}";
-      fi;
-      shift;
-    done;
-
-    # from all possible shells in $x determine the first being a shell
-    # or being empty
-    s="$(
-      # "" quotes because of posh
-      eval set x "${x}";
-      shift;
-      if test $# != 0
-      then
-        for i
-        do
-          if test _"$i"_ = __
-          then
-            # use the empty argument as the default shell
-            echo empty;
-            break;
-          else
-            # test $i on being a shell program;
-            # use this kind of quoting for posh
-            if test _"$(eval "$i -c 'echo ok'" 2>${_NULL_DEV})"_ = _ok_ >&2
-            then
-              # shell found
-              cat <${_NULL_DEV})"_ = _ok_ >&2
-    then
-      _SHELL="$s";
-      break;
-    fi;
-  done;
-fi;
-
-
-########################### start groffer2.sh
-
-if test _"${_SHELL}"_ = _empty_
-then
-  _SHELL='';
-fi;
-
-if test _"${_SHELL}"_ = __
-then
-  # no shell found, so start groffer2.sh normally
-  eval exec "'${_GROFFER2_SH}'" '"$@"';
-  exit;
-else
-  # start groffer2.sh with the found $_SHELL
-  # do not quote $_SHELL to allow arguments
-  eval exec "${_SHELL} '${_GROFFER2_SH}'" '"$@"';
-  exit;
-fi;
diff --git a/contrib/groff/contrib/groffer/groffer2.sh b/contrib/groff/contrib/groffer/groffer2.sh
deleted file mode 100644
index 60ca91130f6f..000000000000
--- a/contrib/groff/contrib/groffer/groffer2.sh
+++ /dev/null
@@ -1,5854 +0,0 @@
-#! /bin/sh
-
-# groffer - display groff files
-
-# Source file position: /contrib/groffer/groffer2.sh
-# Installed position: /lib/groff/groffer/groffer2.sh
-
-# This file should not be run independently.  It is called by
-# `groffer.sh' in the source or by the installed `groffer' program.
-
-# Copyright (C) 2001,2002,2003,2004,2005
-# Free Software Foundation, Inc.
-# Written by Bernd Warken
-
-# Last update: 22 August 2005
-
-# This file is part of `groffer', which is part of `groff'.
-
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# `groff' is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with `groff'; see the files COPYING and LICENSE in the top
-# directory of the `groff' source.  If not, write to the Free Software
-# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301,
-# USA.
-
-
-########################################################################
-#             Test of rudimentary shell functionality
-########################################################################
-
-
-########################################################################
-# Test of `unset'
-#
-export _UNSET;
-export _foo;
-_foo=bar;
-_res="$(unset _foo 2>&1)";
-if unset _foo >${_NULL_DEV} 2>&1 && \
-   test _"${_res}"_ = __ && test _"${_foo}"_ = __
-then
-  _UNSET='unset';
-  eval "${_UNSET}" _foo;
-  eval "${_UNSET}" _res;
-else
-  _UNSET=':';
-fi;
-
-
-########################################################################
-# Test of `test'.
-#
-if test a = a && test a != b && test -f "${_GROFFER_SH}"
-then
-  :;
-else
-  echo '"test" did not work.' >&2;
-  exit "${_ERROR}";
-fi;
-
-
-########################################################################
-# Test of `echo' and the `$()' construct.
-#
-if echo '' >${_NULL_DEV}
-then
-  :;
-else
-  echo '"echo" did not work.' >&2;
-  exit "${_ERROR}";
-fi;
-if test _"$(t1="$(echo te)" &&
-            t2="$(echo '')" &&
-            t3="$(echo 'st')" &&
-            echo "${t1}${t2}${t3}")"_ \
-     != _test_
-then
-  echo 'The "$()" construct did not work' >&2;
-  exit "${_ERROR}";
-fi;
-
-
-########################################################################
-# Test of sed program; test in groffer.sh is not valid here.
-#
-if test _"$(echo red | sed -e 's/r/s/')"_ != _sed_
-then
-  echo 'The sed program did not work.' >&2;
-  exit "${_ERROR}";
-fi;
-
-
-########################################################################
-# Test of function definitions.
-#
-_t_e_s_t_f_u_n_c_()
-{
-  return 0;
-}
-
-if _t_e_s_t_f_u_n_c_ 2>${_NULL_DEV}
-then
-  :;
-else
-  echo 'Shell '"${_SHELL}"' does not support function definitions.' >&2;
-  exit "${_ERROR}";
-fi;
-
-
-########################################################################
-#                    debug - diagnostic messages
-########################################################################
-
-export _DEBUG_STACKS;
-_DEBUG_STACKS='no';		# disable stack output in each function
-#_DEBUG_STACKS='yes';		# enable stack output in each function
-
-export _DEBUG_LM;
-_DEBUG_LM='no';			# disable landmark messages
-#_DEBUG_LM='yes';		# enable landmark messages
-
-export _DEBUG_KEEP_FILES;
-_DEBUG_KEEP_FILES='no'		# disable file keeping in temporary dir
-#_DEBUG_KEEP_FILES='yes'	# enable file keeping in temporary dir
-
-export _DEBUG_PRINT_PARAMS;
-_DEBUG_PRINT_PARAMS='no';	# disable printing of all parameters
-#_DEBUG_PRINT_PARAMS='yes';	# enable printing of all parameters
-
-export _DEBUG_PRINT_SHELL;
-_DEBUG_PRINT_SHELL='no';	# disable printing of the shell name
-#_DEBUG_PRINT_SHELL='yes';	# enable printing of the shell name
-
-export _DEBUG_PRINT_TMPDIR;
-_DEBUG_PRINT_TMPDIR='no';	# disable printing of the temporary dir
-#_DEBUG_PRINT_TMPDIR='yes';	# enable printing of the temporary dir
-
-export _DEBUG_USER_WITH_STACK;
-_DEBUG_USER_WITH_STACK='no';	# disable stack dump in error_user()
-#_DEBUG_USER_WITH_STACK='yes';	# enable stack dump in error_user()
-
-# determine all --debug* options
-case " $*" in
-*\ --debug*)
-  case " $* " in
-  *' --debug '*)
-    # _DEBUG_STACKS='yes';
-    # _DEBUG_LM='yes';
-    _DEBUG_KEEP_FILES='yes';
-    _DEBUG_PRINT_PARAMS='yes';
-    _DEBUG_PRINT_SHELL='yes';
-    _DEBUG_PRINT_TMPDIR='yes';
-    _DEBUG_USER_WITH_STACK='yes';
-    ;;
-  esac;
-  d=' --debug-all --debug-keep --debug-lm --debug-params --debug-shell '\
-'--debug-stacks --debug-tmpdir --debug-user ';
-  for i
-  do
-    case "$i" in
-    --debug-s)
-      echo 'The abbreviation --debug-s has multiple options: '\
-'--debug-shell and --debug-stacks.' >&2
-      exit "${_ERROR}";
-      ;;
-    esac;
-    case "$d" in
-    *\ ${i}*)
-      # extract whole word of abbreviation $i
-      s="$(cat <&2;
-fi;
-
-if test _"${_DEBUG_PRINT_SHELL}"_ = _yes_
-then
-  if test _"${_SHELL}"_ = __
-  then
-    if test _"${POSIXLY_CORRECT}"_ = _y_
-    then
-      echo 'shell: bash as /bin/sh (none specified)' >&2;
-    else
-      echo 'shell: /bin/sh (none specified)' >&2;
-    fi;
-  else
-    echo "shell: ${_SHELL}" >&2;
-  fi;
-fi;
-
-
-########################################################################
-#                       Environment Variables
-########################################################################
-
-# Environment variables that exist only for this file start with an
-# underscore letter.  Global variables to this file are written in
-# upper case letters, e.g. $_GLOBAL_VARIABLE; temporary variables
-# start with an underline and use only lower case letters and
-# underlines, e.g.  $_local_variable .
-
-#   [A-Z]*     system variables,      e.g. $MANPATH
-#   _[A-Z_]*   global file variables, e.g. $_MAN_PATH
-#   _[a-z_]*   temporary variables,   e.g. $_manpath
-
-# Due to incompatibilities of the `ash' shell, the name of loop
-# variables in `for' must be single character
-#   [a-z]      local loop variables,   e.g. $i
-
-
-########################################################################
-# read-only variables (global to this file)
-########################################################################
-
-# function return values; `0' means ok; other values are error codes
-export _ALL_EXIT;
-export _BAD;
-export _GOOD;
-export _NO;
-export _OK;
-export _YES;
-
-_GOOD='0';			# return ok
-_BAD='1';			# return negatively, error code `1'
-# $_ERROR was already defined as `7' in groffer.sh.
-
-_NO="${_BAD}";
-_YES="${_GOOD}";
-_OK="${_GOOD}";
-
-# quasi-functions, call with `eval', e.g `eval "${return_ok}"'
-export return_ok;
-export return_good;
-export return_bad;
-export return_yes;
-export return_no;
-export return_error;
-export return_var;
-return_ok="func_pop; return ${_OK}";
-return_good="func_pop; return ${_GOOD}";
-return_bad="func_pop; return ${_BAD}";
-return_yes="func_pop; return ${_YES}";
-return_no="func_pop; return ${_NO}";
-return_error="func_pop; return ${_ERROR}";
-return_var="func_pop; return";	# add number, e.g. `eval "${return_var} $n'
-
-
-export _DEFAULT_MODES;
-_DEFAULT_MODES='x,ps,tty';
-export _DEFAULT_RESOLUTION;
-_DEFAULT_RESOLUTION='75';
-
-export _DEFAULT_TTY_DEVICE;
-_DEFAULT_TTY_DEVICE='latin1';
-
-# _VIEWER_* viewer programs for different modes (only X is necessary)
-# _VIEWER_* a comma-separated list of viewer programs (with options)
-export _VIEWER_DVI;		# viewer program for dvi mode
-export _VIEWER_HTML_TTY;	# viewer program for html mode in tty
-export _VIEWER_HTML_X;		# viewer program for html mode in X
-export _VIEWER_PDF;		# viewer program for pdf mode
-export _VIEWER_PS;		# viewer program for ps mode
-export _VIEWER_X;		# viewer program for X mode
-_VIEWER_DVI='kdvi,xdvi,dvilx';
-_VIEWER_HTML_TTY='lynx';
-_VIEWER_HTML_X='konqueror,mozilla,netscape,galeon,opera,amaya,arena';
-_VIEWER_PDF='kghostview --scale 1.45,ggv,xpdf,acroread,kpdf';
-_VIEWER_PS='kghostview --scale 1.45,ggv,gv,ghostview,gs_x11,gs';
-_VIEWER_X='gxditview,xditview';
-
-# Search automatically in standard sections `1' to `8', and in the
-# traditional sections `9', `n', and `o'.  On many systems, there
-# exist even more sections, mostly containing a set of man pages
-# special to a specific program package.  These aren't searched for
-# automatically, but must be specified on the command line.
-export _MAN_AUTO_SEC_LIST;
-_MAN_AUTO_SEC_LIST="'1' '2' '3' '4' '5' '6' '7' '8' '9' 'n' 'o'";
-export _MAN_AUTO_SEC_CHARS;
-_MAN_AUTO_SEC_CHARS='[123456789no]';
-
-export _SPACE_SED;
-_SPACE_SED='['"${_SP}${_TAB}"']';
-
-export _SPACE_CASE;
-_SPACE_CASE='[\'"${_SP}"'\'"${_TAB}"']';
-
-export _PROCESS_ID;		# for shutting down the program
-_PROCESS_ID="$$";
-
-
-############ the command line options of the involved programs
-#
-# The naming scheme for the options environment names is
-# $_OPTS__[_]
-#
-# :    program name GROFFER, GROFF, or CMDLINE (for all
-#            command line options)
-# :  LONG (long options) or SHORT (single character options)
-# : ARG for options with argument, NA for no argument;
-#            without _ both the ones with and without arg.
-#
-# Each option that takes an argument must be specified with a
-# trailing : (colon).
-
-# exports
-export _OPTS_GROFFER_SHORT_NA;
-export _OPTS_GROFFER_SHORT_ARG;
-export _OPTS_GROFFER_LONG_NA;
-export _OPTS_GROFFER_LONG_ARG;
-export _OPTS_GROFF_SHORT_NA;
-export _OPTS_GROFF_SHORT_ARG;
-export _OPTS_GROFF_LONG_NA;
-export _OPTS_GROFF_LONG_ARG;
-export _OPTS_X_SHORT_ARG;
-export _OPTS_X_SHORT_NA;
-export _OPTS_X_LONG_ARG;
-export _OPTS_X_LONG_NA;
-export _OPTS_MAN_SHORT_ARG;
-export _OPTS_MAN_SHORT_NA;
-export _OPTS_MAN_LONG_ARG;
-export _OPTS_MAN_LONG_NA;
-export _OPTS_MANOPT_SHORT_ARG;
-export _OPTS_MANOPT_SHORT_NA;
-export _OPTS_MANOPT_LONG_ARG;
-export _OPTS_MANOPT_LONG_NA;
-export _OPTS_CMDLINE_SHORT_NA;
-export _OPTS_CMDLINE_SHORT_ARG;
-export _OPTS_CMDLINE_LONG_NA;
-export _OPTS_CMDLINE_LONG_ARG;
-
-###### groffer native options
-
-_OPTS_GROFFER_SHORT_NA="'h' 'Q' 'v' 'V' 'X' 'Z'";
-_OPTS_GROFFER_SHORT_ARG="'T'";
-
-_OPTS_GROFFER_LONG_NA="'auto' \
-'apropos' 'apropos-data' 'apropos-devel' 'apropos-progs' \
-'debug' 'debug-all' 'debug-keep' 'debug-lm' 'debug-params' 'debug-shell' \
-'debug-stacks' 'debug-tmpdir' 'debug-user' 'default' 'do-nothing' 'dvi' \
-'groff' 'help' 'intermediate-output' 'html' 'man' \
-'no-location' 'no-man' 'no-special' 'pdf' 'ps' 'rv' 'source' \
-'text' 'text-device' \
-'tty' 'tty-device' 'version' 'whatis' 'where' 'www' 'x' 'X'";
-
-_OPTS_GROFFER_LONG_ARG="\
-'default-modes' 'device' 'dvi-viewer' 'dvi-viewer-tty' 'extension' 'fg' \
-'fn' 'font' 'foreground' 'html-viewer' 'html-viewer-tty' 'mode' \
-'pdf-viewer' 'pdf-viewer-tty' 'print' 'ps-viewer' 'ps-viewer-tty' 'shell' \
-'title' 'tty-viewer' 'tty-viewer-tty' 'www-viewer' 'www-viewer-tty' \
-'x-viewer' 'x-viewer-tty' 'X-viewer' 'X-viewer-tty'";
-
-##### groffer options inhereted from groff
-
-_OPTS_GROFF_SHORT_NA="'a' 'b' 'c' 'C' 'e' 'E' 'g' 'G' 'i' 'l' 'N' 'p' \
-'R' 's' 'S' 't' 'U' 'z'";
-_OPTS_GROFF_SHORT_ARG="'d' 'f' 'F' 'I' 'L' 'm' 'M' 'n' 'o' 'P' 'r' \
-'w' 'W'";
-_OPTS_GROFF_LONG_NA="";
-_OPTS_GROFF_LONG_ARG="";
-
-##### groffer options inhereted from the X Window toolkit
-
-_OPTS_X_SHORT_NA="";
-_OPTS_X_SHORT_ARG="";
-
-_OPTS_X_LONG_NA="'iconic' 'rv'";
-
-_OPTS_X_LONG_ARG="'background' 'bd' 'bg' 'bordercolor' 'borderwidth' \
-'bw' 'display' 'fg' 'fn' 'font' 'foreground' 'ft' 'geometry' \
-'resolution' 'title' 'xrm'";
-
-###### groffer options inherited from man
-
-_OPTS_MAN_SHORT_NA="";
-_OPTS_MAN_SHORT_ARG="";
-
-_OPTS_MAN_LONG_NA="'all' 'ascii' 'catman' 'ditroff' \
-'local-file' 'location' 'troff' 'update'";
-
-_OPTS_MAN_LONG_ARG="'locale' 'manpath' \
-'pager' 'preprocessor' 'prompt' 'sections' 'systems' 'troff-device'";
-
-###### additional options for parsing $MANOPT only
-
-_OPTS_MANOPT_SHORT_NA="'7' 'a' 'c' 'd' 'D' 'f' 'h' 'k' 'l' 't' 'u' \
-'V' 'w' 'Z'";
-_OPTS_MANOPT_SHORT_ARG="'e' 'L' 'm' 'M' 'p' 'P' 'r' 'S' 'T'";
-
-_OPTS_MANOPT_LONG_NA="${_OPTS_MAN_LONG_NA} \
-'apropos' 'debug' 'default' 'help' 'html' 'ignore-case' 'location-cat' \
-'match-case' 'troff' 'update' 'version' 'whatis' 'where' 'where-cat'";
-
-_OPTS_MANOPT_LONG_ARG="${_OPTS_MAN_LONG_NA} \
-'config_file' 'encoding' 'extension' 'locale'";
-
-###### collections of command line options
-
-_OPTS_CMDLINE_SHORT_NA="${_OPTS_GROFFER_SHORT_NA} \
-${_OPTS_GROFF_SHORT_NA} ${_OPTS_X_SHORT_NA} ${_OPTS_MAN_SHORT_NA}";
-_OPTS_CMDLINE_SHORT_ARG="${_OPTS_GROFFER_SHORT_ARG} \
-${_OPTS_GROFF_SHORT_ARG} ${_OPTS_X_SHORT_ARG} ${_OPTS_MAN_SHORT_ARG}";
-
-_OPTS_CMDLINE_LONG_NA="${_OPTS_GROFFER_LONG_NA} \
-${_OPTS_GROFF_LONG_NA} ${_OPTS_X_LONG_NA} ${_OPTS_MAN_LONG_NA}";
-_OPTS_CMDLINE_LONG_ARG="${_OPTS_GROFFER_LONG_ARG} \
-${_OPTS_GROFF_LONG_ARG} ${_OPTS_MAN_LONG_ARG} ${_OPTS_X_LONG_ARG}";
-
-
-########################################################################
-# read-write variables (global to this file)
-########################################################################
-
-export _ALL_PARAMS;		# All options and file name parameters
-export _ADDOPTS_GROFF;		# Transp. options for groff (`eval').
-export _ADDOPTS_POST;		# Transp. options postproc (`eval').
-export _ADDOPTS_X;		# Transp. options X postproc (`eval').
-export _APROPOS_PROG;		# Program to run apropos.
-export _APROPOS_SECTIONS;	# Sections for different --apropos-*.
-export _DEFAULT_MODES;		# Set default modes.
-export _DISPLAY_MODE;		# Display mode.
-export _DISPLAY_PROG;		# Viewer program to be used for display.
-export _DISPLAY_ARGS;		# X resources for the viewer program.
-export _FILEARGS;		# Stores filespec parameters.
-export _FILESPEC_ARG;		# Stores the actual filespec parameter.
-export _FUNC_STACK;		# Store debugging information.
-export _REGISTERED_TITLE;	# Processed file names.
-# _HAS_* from availability tests
-export _HAS_COMPRESSION;	# `yes' if gzip compression is available
-export _HAS_BZIP;		# `yes' if bzip2 compression is available
-# _MAN_* finally used configuration of man searching
-export _MAN_ALL;		# search all man pages per filespec
-export _MAN_ENABLE;		# enable search for man pages
-export _MAN_EXT;		# extension for man pages
-export _MAN_FORCE;		# force file parameter to be man pages
-export _MAN_IS_SETUP;		# setup man variables only once
-export _MAN_LANG;		# language for man pages
-export _MAN_LANG2;		# language for man pages
-export _MAN_LANG_DONE;		# language dirs added to man path
-export _MAN_PATH;		# search path for man pages
-export _MAN_SEC;		# sections for man pages; sep. `:'
-export _MAN_SEC_DONE;		# sections added to man path
-export _MAN_SYS;		# system names for man pages; sep. `,'
-export _MAN_SYS;		# system names added to man path
-# _MANOPT_* as parsed from $MANOPT
-export _MANOPT_ALL;		# $MANOPT --all
-export _MANOPT_EXTENSION;	# $MANOPT --extension
-export _MANOPT_LANG;		# $MANOPT --locale
-export _MANOPT_PATH;		# $MANOPT --manpath
-export _MANOPT_PAGER;		# $MANOPT --pager
-export _MANOPT_SEC;		# $MANOPT --sections
-export _MANOPT_SYS;		# $MANOPT --systems
-# _OPT_* as parsed from groffer command line
-export _OPT_ALL;		# display all suitable man pages.
-export _OPT_APROPOS;		# call `apropos' program.
-export _OPT_BD;			# set border color in some modes.
-export _OPT_BG;			# set background color in some modes.
-export _OPT_BW;			# set border width in some modes.
-export _OPT_DEFAULT_MODES;	# `,'-list of modes when no mode given.
-export _OPT_DEVICE;		# device option.
-export _OPT_DO_NOTHING;		# do nothing in main_display().
-export _OPT_DISPLAY;		# set X display.
-export _OPT_FG;			# set foreground color in some modes.
-export _OPT_FN;			# set font in some modes.
-export _OPT_GEOMETRY;		# set size and position of viewer in X.
-export _OPT_ICONIC;		# -iconic option for X viewers.
-export _OPT_LANG;		# set language for man pages
-export _OPT_LOCATION;		# print processed file names to stderr
-export _OPT_MODE;		# values: X, tty, Q, Z, ""
-export _OPT_MANPATH;		# manual setting of path for man-pages
-export _OPT_PAGER;		# specify paging program for tty mode
-export _OPT_RESOLUTION;		# set X resolution in dpi
-export _OPT_RV;			# reverse fore- and background colors.
-export _OPT_SECTIONS;		# sections for man page search
-export _OPT_SYSTEMS;		# man pages of different OS's
-export _OPT_TITLE;		# title for gxditview window
-export _OPT_TEXT_DEVICE;	# set device for tty mode.
-export _OPT_V;			# groff option -V.
-export _OPT_VIEWER_DVI;		# viewer program for dvi mode
-export _OPT_VIEWER_PDF;		# viewer program for pdf mode
-export _OPT_VIEWER_PS;		# viewer program for ps mode
-export _OPT_VIEWER_HTML;	# viewer program for html mode
-export _OPT_VIEWER_X;		# viewer program for x mode
-export _OPT_WHATIS;		# print the man description
-export _OPT_XRM;		# specify X resource.
-export _OPT_Z;			# groff option -Z.
-export _OUTPUT_FILE_NAME;	# output generated, see main_set_res..()
-export _VIEWER_TERMINAL;	# viewer options for terminal (--*-viewer-tty)
-# _TMP_* temporary directory and files
-export _TMP_DIR;		# groffer directory for temporary files
-export _TMP_CAT;		# stores concatenation of everything
-export _TMP_STDIN;		# stores stdin, if any
-
-# these variables are preset in section `Preset' after the rudim. test
-
-
-########################################################################
-# Preset and reset of read-write global variables
-########################################################################
-
-
-export _START_DIR;		# directory at start time of the script
-_START_DIR="$(pwd)";
-
-# For variables that can be reset by option `--default', see reset().
-
-_FILEARGS='';
-
-# _HAS_* from availability tests
-_HAS_COMPRESSION='';
-_HAS_BZIP='';
-
-# _TMP_* temporary files
-_TMP_DIR='';
-_TMP_CAT='';
-_TMP_CONF='';
-_TMP_STDIN='';
-
-
-########################################################################
-# reset ()
-#
-# Reset the variables that can be affected by options to their default.
-#
-reset()
-{
-  if test "$#" -ne 0
-  then
-    error "reset() does not have arguments.";
-  fi;
-
-  _ADDOPTS_GROFF='';
-  _ADDOPTS_POST='';
-  _ADDOPTS_X='';
-  _APROPOS_PROG='';
-  _APROPOS_SECTIONS='';
-  _DISPLAY_ARGS='';
-  _DISPLAY_MODE='';
-  _DISPLAY_PROG='';
-  _REGISTERED_TITLE='';
-
-  # _MAN_* finally used configuration of man searching
-  _MAN_ALL='no';
-  _MAN_ENABLE='yes';		# do search for man-pages
-  _MAN_EXT='';
-  _MAN_FORCE='no';		# first local file, then search man page
-  _MAN_IS_SETUP='no';
-  _MAN_LANG='';
-  _MAN_LANG2='';
-  _MAN_PATH='';
-  _MAN_SEC='';
-  _MAN_SEC_DONE='no';
-  _MAN_SYS='';
-  _MAN_SYS_DONE='no';
-
-  # _MANOPT_* as parsed from $MANOPT
-  _MANOPT_ALL='no';
-  _MANOPT_EXTENSION='';
-  _MANOPT_LANG='';
-  _MANOPT_PATH='';
-  _MANOPT_PAGER='';
-  _MANOPT_SEC='';
-  _MANOPT_SYS='';
-
-  # _OPT_* as parsed from groffer command line
-  _OPT_ALL='no';
-  _OPT_APROPOS='no';
-  _OPT_BD='';
-  _OPT_BG='';
-  _OPT_BW='';
-  _OPT_DEFAULT_MODES='';
-  _OPT_DEVICE='';
-  _OPT_DISPLAY='';
-  _OPT_DO_NOTHING='no';
-  _OPT_FG='';
-  _OPT_FN='';
-  _OPT_GEOMETRY='';
-  _OPT_ICONIC='no';
-  _OPT_LANG='';
-  _OPT_LOCATION='no';
-  _OPT_MODE='';
-  _OPT_MANPATH='';
-  _OPT_PAGER='';
-  _OPT_RESOLUTION='';
-  _OPT_RV='no';
-  _OPT_SECTIONS='';
-  _OPT_SYSTEMS='';
-  _OPT_TITLE='';
-  _OPT_TEXT_DEVICE='';
-  _OPT_V='no';
-  _OPT_VIEWER_DVI='';
-  _OPT_VIEWER_PDF='';
-  _OPT_VIEWER_PS='';
-  _OPT_VIEWER_HTML='';
-  _OPT_VIEWER_X='';
-  _OPT_WHATIS='no';
-  _OPT_XRM='';
-  _OPT_Z='no';
-  _VIEWER_TERMINAL='no';
-}
-
-reset;
-
-
-########################################################################
-#          Functions for error handling and debugging
-########################################################################
-
-
-##############
-# echo1 (*)
-#
-# Output to stdout.
-#
-# Arguments : arbitrary text including `-'.
-#
-echo1()
-{
-  cat <*)
-#
-# Output to stderr.
-#
-# Arguments : arbitrary text.
-#
-echo2()
-{
-  cat >&2 <)
-#
-# Print  to standard error as a debugging aid.
-#
-# Globals: $_DEBUG_LM
-#
-landmark()
-{
-  if test _"${_DEBUG_LM}"_ = _yes_
-  then
-    echo2 "LM: $*";
-  fi;
-}
-
-landmark "1: debugging functions";
-
-
-##############
-# clean_up ()
-#
-# Clean up at exit.
-#
-clean_up()
-{
-  cd "${_START_DIR}" >"${_NULL_DEV}" 2>&1;
-  if test _${_DEBUG_KEEP_FILES}_ = _yes_
-  then
-    echo2 "Kept temporary directory ${_TMP_DIR}."
-  else
-    if test _"${_TMP_DIR}"_ != __
-    then
-      if test -d "${_TMP_DIR}" || test -f "${_TMP_DIR}"
-      then
-        rm -f -r "${_TMP_DIR}" >${_NULL_DEV} 2>&1;
-      fi; 
-    fi;
-  fi;
-}
-
-
-#############
-# diag (text>*)
-#
-# Output a diagnostic message to stderr
-#
-diag()
-{
-  echo2 '>>>>>'"$*";
-}
-
-
-#############
-# error (*)
-#
-# Print an error message to standard error, print the function stack,
-# exit with an error condition.  The argument should contain the name
-# of the function from which it was called.  This is for system errors.
-#
-error()
-{
-  case "$#" in
-    1) echo2 'groffer error: '"$1"; ;;
-    *) echo2 'groffer error: wrong number of arguments in error().'; ;;
-  esac;
-  func_stack_dump;
-  if test _"${_TMP_DIR}"_ != __ && test -d "${_TMP_DIR}"
-  then
-    : >"${_TMP_DIR}"/,error;
-  fi;
-  exit "${_ERROR}";
-}
-
-
-#############
-# error_user (*)
-#
-# Print an error message to standard error; exit with an error condition.
-# The error is supposed to be produce by the user.  So the funtion stack
-# is omitted.
-#
-error_user()
-{
-  case "$#" in
-    1)
-      echo2 'groffer error: '"$1";
-       ;;
-    *)
-      echo2 'groffer error: wrong number of arguments in error_user().';
-      ;;
-  esac;
-  if test _"${_DEBUG_USER_WITH_STACK}"_ = _yes_
-  then
-    func_stack_dump;
-  fi;
-  if test _"${_TMP_DIR}"_ != __ && test -d "${_TMP_DIR}"
-  then
-    : >"${_TMP_DIR}"/,error;
-  fi;
-  exit "${_ERROR}";
-}
-
-
-#############
-# exit_test ()
-#
-# Test whether the former command ended with error().  Exit again.
-#
-# Globals: $_ERROR
-#
-exit_test()
-{
-  if test "$?" = "${_ERROR}"
-  then
-    exit ${_ERROR};
-  fi;
-  if test _"${_TMP_DIR}"_ != __ && test -f "${_TMP_DIR}"/,error
-  then
-    exit ${_ERROR};
-  fi;
-}
-
-
-#############
-# func_check (   "$@")
-#
-# Check number of arguments and register to _FUNC_STACK.
-#
-# Arguments: >=3
-#   : name of the calling function.
-#   :    a relational operator: = != < > <= >=
-#   :   number of arguments to be checked against 
-#   "$@":        the arguments of the calling function.
-#
-# Variable prefix: fc
-#
-func_check()
-{
-  if test "$#" -lt 3
-  then
-    error 'func_check() needs at least 3 arguments.';
-  fi;
-  fc_fname="$1";
-  case "$3" in
-    1)
-      fc_nargs="$3";
-      fc_s='';
-      ;;
-    0|[2-9])
-      fc_nargs="$3";
-      fc_s='s';
-      ;;
-    *)
-      error "func_check(): third argument must be a digit.";
-      ;;
-  esac;
-  case "$2" in
-    '='|'-eq')
-      fc_op='-eq';
-      fc_comp='exactly';
-      ;;
-    '>='|'-ge')
-      fc_op='-ge';
-      fc_comp='at least';
-      ;;
-    '<='|'-le')
-      fc_op='-le';
-      fc_comp='at most';
-      ;;
-    '<'|'-lt')
-      fc_op='-lt';
-      fc_comp='less than';
-      ;;
-    '>'|'-gt')
-      fc_op='-gt';
-      fc_comp='more than';
-      ;;
-    '!='|'-ne')
-      fc_op='-ne';
-      fc_comp='not';
-      ;;
-    *)
-      error \
-        'func_check(): second argument is not a relational operator.';
-      ;;
-  esac;
-  shift;
-  shift;
-  shift;
-  if test "$#" "${fc_op}" "${fc_nargs}"
-  then
-    do_nothing;
-  else
-    error "func_check(): \
-${fc_fname}"'() needs '"${fc_comp} ${fc_nargs}"' argument'"${fc_s}"'.';
-  fi;
-  func_push "${fc_fname}";
-  if test _"${_DEBUG_STACKS}"_ = _yes_
-  then
-    echo2 '+++ '"${fc_fname} $@";
-    echo2 '>>> '"${_FUNC_STACK}";
-  fi;
-  eval ${_UNSET} fc_comp;
-  eval ${_UNSET} fc_fname;
-  eval ${_UNSET} fc_nargs;
-  eval ${_UNSET} fc_op;
-  eval ${_UNSET} fc_s;
-}
-
-
-#############
-# func_pop ()
-#
-# Retrieve the top element from the stack.
-#
-# The stack elements are separated by `!'; the popped element is
-# identical to the original element, except that all `!' characters
-# were removed.
-#
-# Arguments: 1
-#
-func_pop()
-{
-  if test "$#" -ne 0
-  then
-    error 'func_pop() does not have arguments.';
-  fi;
-  case "${_FUNC_STACK}" in
-  '')
-    if test _"${_DEBUG_STACKS}"_ = _yes_
-    then
-      error 'func_pop(): stack is empty.';
-    fi;
-    ;;
-  *!*)
-    # split at first bang `!'.
-    _FUNC_STACK="$(echo1 "${_FUNC_STACK}" | sed -e 's/^[^!]*!//')";
-    exit_test;
-    ;;
-  *)
-    _FUNC_STACK='';
-    ;;
-  esac;
-  if test _"${_DEBUG_STACKS}"_ = _yes_
-  then
-    echo2 '<<< '"${_FUNC_STACK}";
-  fi;
-}
-
-
-#############
-# func_push ()
-#
-# Store another element to stack.
-#
-# The stack elements are separated by `!'; if  contains a `!'
-# it is removed first.
-#
-# Arguments: 1
-#
-# Variable prefix: fp
-#
-func_push()
-{
-  if test "$#" -ne 1
-  then
-    error 'func_push() needs 1 argument.';
-  fi;
-  case "$1" in
-  *'!'*)
-    # remove all bangs `!'.
-    fp_element="$(echo1 "$1" | sed -e 's/!//g')";
-    exit_test;
-    ;;
-  *)
-    fp_element="$1";
-    ;;
-  esac;
-  if test _"${_FUNC_STACK}"_ = __
-  then
-    _FUNC_STACK="${fp_element}";
-  else
-    _FUNC_STACK="${fp_element}!${_FUNC_STACK}";
-  fi;
-  eval ${_UNSET} fp_element;
-}
-
-
-#############
-# func_stack_dump ()
-#
-# Print the content of the stack.  Ignore the arguments.
-#
-func_stack_dump()
-{
-  diag 'call stack: '"${_FUNC_STACK}";
-}
-
-
-########################################################################
-#                        System Test
-########################################################################
-
-landmark "2: system test";
-
-# Test the availability of the system utilities used in this script.
-
-
-########################################################################
-# Test of function `sed'.
-#
-
-if test _"$(echo xTesTx \
-           | sed -e 's/^.\([Tt]e*x*sTT*\).*$/\1/' \
-           | sed -e 's|T|t|g')"_ != _test_
-then
-  error 'Test of "sed" command failed.';
-fi;
-
-
-########################################################################
-# Test of function `cat'.
-#
-if test _"$(echo test | cat)"_ != _test_
-then
-  error 'Test of "cat" command failed.';
-fi;
-
-
-########################################################################
-# Test for compression.
-#
-if test _"$(echo 'test' | gzip -c -d -f - 2>${_NULL_DEV})"_ = _test_
-then
-  _HAS_COMPRESSION='yes';
-  if echo1 'test' | bzip2 -c 2>${_NULL_DEV} | bzip2 -t 2>${_NULL_DEV} \
-     && test _"$(echo 'test' | bzip2 -c 2>${_NULL_DEV} \
-                             | bzip2 -d -c 2>${_NULL_DEV})"_ \
-             = _test_
-  then
-    _HAS_BZIP='yes';
-  else
-    _HAS_BZIP='no';
-  fi;
-else
-  _HAS_COMPRESSION='no';
-  _HAS_BZIP='no';
-fi;
-
-
-########################################################################
-#       Definition of normal Functions in alphabetical order
-########################################################################
-landmark "3: functions";
-
-########################################################################
-# apropos_filespec ()
-#
-# Setup for the --apropos* options
-#
-apropos_filespec()
-{
-
-  func_check apropos_filespec '=' 0 "$@";
-  if obj _OPT_APROPOS is_yes
-  then
-    eval to_tmp_line \
-      "'.SH $(echo1 "${_FILESPEC_ARG}" | sed 's/[^\\]-/\\-/g')'";
-    exit_test;
-    if obj _APROPOS_PROG is_empty
-    then
-      error 'apropos_filespec: apropos_setup() must be run first.';
-    fi;
-    if obj _APROPOS_SECTIONS is_empty
-    then
-      if obj _OPT_SECTIONS is_empty
-      then
-        s='^.*(.*).*$';
-      else
-        s='^.*(['"$(echo1 "${_OPT_SECTIONS}" | sed -e 's/://g')"']';
-      fi;
-    else
-      s='^.*(['"${_APROPOS_SECTIONS}"']';
-    fi;
-    eval "${_APROPOS_PROG}" "'${_FILESPEC_ARG}'" | \
-      sed -n -e '
-/^'"${_FILESPEC_ARG}"': /p
-/'"$s"'/p
-' | \
-      sort |\
-      sed -e '
-s/^\(.* (..*)\)  *-  *\(.*\)$/\.br\n\.TP 15\n\.BR \1\n\2/
-' >>"${_TMP_CAT}";
-  fi;
-  eval "${return_ok}";
-}
-
-
-########################################################################
-# apropos_setup ()
-#
-# Setup for the --apropos* options
-#
-apropos_setup()
-{
-  func_check apropos_setup '=' 0 "$@";
-  if obj _OPT_APROPOS is_yes
-  then
-    if is_prog apropos
-    then
-      _APROPOS_PROG='apropos';
-    elif is_prog man
-    then
-      if man --apropos man >${_NULL_DEV} 2>${_NULL_DEV}
-      then
-        _APROPOS_PROG='man --apropos';
-      elif man -k man >${_NULL_DEV} 2>${_NULL_DEV}
-      then
-        _APROPOS_PROG='man -k';
-      fi;
-    fi;
-    if obj _APROPOS_PROG is_empty
-    then
-      error 'apropos_setup: no apropos program available.';
-    fi;
-    to_tmp_line '.TH GROFFER APROPOS';
-  fi;
-  eval "${return_ok}";
-}
-
-
-########################################################################
-# base_name ()
-#
-# Get the file name part of , i.e. delete everything up to last
-# `/' from the beginning of .  Remove final slashes, too, to get a
-# non-empty output.
-#
-# Arguments : 1
-# Output    : the file name part (without slashes)
-#
-# Variable prefix: bn
-#
-base_name()
-{
-  func_check base_name = 1 "$@";
-  bn_name="$1";
-  case "${bn_name}" in
-    */)
-      # delete all final slashes
-      bn_name="$(echo1 "${bn_name}" | sed -e 's|//*$||')";
-      exit_test;
-      ;;
-  esac;
-  case "${bn_name}" in
-    /|'')
-      eval ${_UNSET} bn_name;
-      eval "${return_bad}";
-      ;;
-    */*)
-      # delete everything before and including the last slash `/'.
-      echo1 "${bn_name}" | sed -e 's|^.*//*\([^/]*\)$|\1|';
-      ;;
-    *)
-      obj bn_name echo1;
-      ;;
-  esac;
-  eval ${_UNSET} bn_name;
-  eval "${return_ok}";
-}
-
-
-########################################################################
-# cat_z ()
-#
-# Decompress if possible or just print  to standard output.
-#
-# gzip, bzip2, and .Z decompression is supported.
-#
-# Arguments: 1, a file name.
-# Output: the content of , possibly decompressed.
-#
-if test _"${_HAS_COMPRESSION}"_ = _yes_
-then
-  cat_z()
-  {
-    func_check cat_z = 1 "$@";
-    case "$1" in
-      '')
-        error 'cat_z(): empty file name';
-        ;;
-      '-')
-        error 'cat_z(): for standard input use save_stdin()';
-        ;;
-    esac;
-    if obj _HAS_BZIP is_yes
-    then
-      if bzip2 -t "$1" 2>${_NULL_DEV}
-      then
-        bzip2 -c -d "$1" 2>${_NULL_DEV};
-        eval "${return_ok}";
-      fi;
-    fi;
-    gzip -c -d -f "$1" 2>${_NULL_DEV};
-    eval "${return_ok}";
-  }
-else
-  cat_z()
-  {
-    func_check cat_z = 1 "$@";
-    cat "$1";
-    eval "${return_ok}";
-  }
-fi;
-
-
-########################################################################
-# clean_up ()
-#
-# Do the final cleaning up before exiting; used by the trap calls.
-#
-# defined above
-
-
-########################################################################
-# diag (*)
-#
-# Print marked message to standard error; useful for debugging.
-#
-# defined above
-
-
-########################################################################
-landmark '4: dirname()*';
-########################################################################
-
-#######################################################################
-# dirname_append ( )
-#
-# Append `name' to `dir' with clean handling of `/'.
-#
-# Arguments : 2
-# Output    : the generated new directory name /
-#
-dirname_append()
-{
-  func_check dirname_append = 2 "$@";
-  if is_empty "$1"
-  then
-    error "dir_append(): first argument is empty.";
-  fi;
-  if is_empty "$2"
-  then
-    echo1 "$1";
-  else
-    dirname_chop "$1"/"$2";
-  fi;
-  eval "${return_ok}";
-}
-
-
-########################################################################
-# dirname_chop ()
-#
-# Remove unnecessary slashes from directory name.
-#
-# Argument: 1, a directory name.
-# Output:   path without double, or trailing slashes.
-#
-# Variable prefix: dc
-#
-dirname_chop()
-{
-  func_check dirname_chop = 1 "$@";
-  # replace all multiple slashes by a single slash `/'.
-  dc_res="$(echo1 "$1" | sed -e 's|///*|/|g')";
-  exit_test;
-  case "${dc_res}" in
-  ?*/)
-    # remove trailing slash '/';
-    echo1 "${dc_res}" | sed -e 's|/$||';
-    ;;
-  *)
-    obj dc_res echo1
-    ;;
-  esac;
-  eval ${_UNSET} dc_res;
-  eval "${return_ok}";
-}
-
-
-########################################################################
-# do_filearg ()
-#
-# Append the file, man-page, or standard input corresponding to the
-# argument to the temporary file.  If this is compressed in the gzip
-# or Z format it is decompressed.  A title element is generated.
-#
-# Argument either:
-#   - name of an existing file.
-#   - `-' to represent standard input (several times allowed).
-#   - `man:name.(section)' the man-page for `name' in `section'.
-#   - `man:name.section' the man-page for `name' in `section'.
-#   - `man:name' the man-page for `name' in the lowest `section'.
-#   - `name.section' the man-page for `name' in `section'.
-#   - `name' the man-page for `name' in the lowest `section'.
-# Globals :
-#   $_TMP_STDIN, $_MAN_ENABLE, $_MAN_IS_SETUP, $_OPT_MAN
-#
-# Output  : none
-# Return  : $_GOOD if found, ${_BAD} otherwise.
-#
-# Variable prefix: df
-#
-do_filearg()
-{
-  func_check do_filearg = 1 "$@";
-  df_filespec="$1";
-  # store sequence into positional parameters
-  case "${df_filespec}" in
-  '')
-    eval ${_UNSET} df_filespec;
-    eval "${return_good}";
-    ;;
-  '-')
-    register_file '-';
-    eval ${_UNSET} df_filespec;
-    eval "${return_good}";
-    ;;
-  */*)			       # with directory part; so no man search
-    set 'File';
-    ;;
-  *)
-    if obj _MAN_ENABLE is_yes
-    then
-      if obj _MAN_FORCE is_yes
-      then
-        set 'Manpage' 'File';
-      else
-        set 'File' 'Manpage';
-      fi;
-      else
-      set 'File';
-    fi;
-    ;;
-  esac;
-  for i
-  do
-    case "$i" in
-    File)
-      if test -f "${df_filespec}"
-      then
-        if test -r "${df_filespec}"
-        then
-          register_file "${df_filespec}";
-          eval ${_UNSET} df_filespec;
-          eval ${_UNSET} df_no_man;
-          eval "${return_good}";
-        else
-          echo2 "could not read \`${df_filespec}'";
-          eval ${_UNSET} df_filespec;
-          eval ${_UNSET} df_no_man;
-          eval "${return_bad}";
-        fi;
-      else
-        if obj df_no_man is_not_empty
-        then
-          if obj _OPT_WHATIS is_yes
-          then
-            to_tmp_line "This is neither a file nor a man page."
-          else
-            echo2 "\`${df_filespec}' is neither a file nor a man page."
-          fi;
-        fi;
-        df_no_file=yes;
-        continue;
-      fi;
-      ;;
-    Manpage)			# parse filespec as man page
-      if obj _MAN_IS_SETUP is_not_yes
-      then
-        man_setup;
-      fi;
-      if man_do_filespec "${df_filespec}"
-      then
-        eval ${_UNSET} df_filespec;
-        eval ${_UNSET} df_no_file;
-        eval "${return_good}";
-      else
-        if obj df_no_file is_not_empty
-        then
-          if obj _OPT_WHATIS is_yes
-          then
-            to_tmp_line "This is neither a file nor a man page."
-          else
-            echo2 "\`${df_filespec}' is neither a file nor a man page."
-          fi;
-        fi;
-        df_no_man=yes;
-        continue;
-      fi;
-      ;;
-    esac;
-  done;
-  eval ${_UNSET} df_filespec;
-  eval ${_UNSET} df_no_file;
-  eval ${_UNSET} df_no_man;
-  eval "${return_bad}";
-} # do_filearg()
-
-
-########################################################################
-# do_nothing ()
-#
-# Dummy function.
-#
-do_nothing()
-{
-  eval return "${_OK}";
-}
-
-
-########################################################################
-# echo2 (*)
-#
-# Print to standard error with final line break.
-#
-# defined above
-
-
-########################################################################
-# error (*)
-#
-# Print error message and exit with error code.
-#
-# defined above
-
-
-########################################################################
-# exit_test ()
-#
-# Test whether the former command ended with error().  Exit again.
-#
-# defined above
-
-
-########################################################################
-# func_check (   "$@")
-#
-# Check number of arguments and register to _FUNC_STACK.
-#
-# Arguments: >=3
-#   : name of the calling function.
-#   :    a relational operator: = != < > <= >=
-#   :   number of arguments to be checked against 
-#   "$@":        the arguments of the calling function.
-#
-# defined above
-
-#########################################################################
-# func_pop ()
-#
-# Delete the top element from the function call stack.
-#
-# defined above
-
-
-########################################################################
-# func_push ()
-#
-# Store another element to function call stack.
-#
-# defined above
-
-
-########################################################################
-# func_stack_dump ()
-#
-# Print the content of the stack.
-#
-# defined above
-
-
-########################################################################
-# get_first_essential (*)
-#
-# Retrieve first non-empty argument.
-#
-# Return  : `1' if all arguments are empty, `0' if found.
-# Output  : the retrieved non-empty argument.
-#
-# Variable prefix: gfe
-#
-get_first_essential()
-{
-  func_check get_first_essential '>=' 0 "$@";
-  if is_equal "$#" 0
-  then
-    eval "${return_ok}";
-  fi;
-  for i
-  do
-    gfe_var="$i";
-    if obj gfe_var is_not_empty
-    then
-      obj gfe_var echo1;
-      eval ${_UNSET} gfe_var;
-      eval "${return_ok}";
-    fi;
-  done;
-  eval ${_UNSET} gfe_var;
-  eval "${return_bad}";
-}
-
-
-########################################################################
-landmark '5: is_*()';
-########################################################################
-
-########################################################################
-# is_dir ()
-#
-# Test whether `name' is a directory.
-#
-# Arguments : 1
-# Return    : `0' if arg1 is a directory, `1' otherwise.
-#
-is_dir()
-{
-  func_check is_dir '=' 1 "$@";
-  if test _"$1"_ != __ && test -d "$1" && test -r "$1"
-  then
-    eval "${return_yes}";
-  fi;
-  eval "${return_no}";
-}
-
-
-########################################################################
-# is_empty ()
-#
-# Test whether `string' is empty.
-#
-# Arguments : <=1
-# Return    : `0' if arg1 is empty or does not exist, `1' otherwise.
-#
-is_empty()
-{
-  func_check is_empty '=' 1 "$@";
-  if test _"$1"_ = __
-  then
-    eval "${return_yes}";
-  fi;
-  eval "${return_no}";
-}
-
-
-########################################################################
-# is_equal ( )
-#
-# Test whether `string1' is equal to .
-#
-# Arguments : 2
-# Return    : `0' both arguments are equal strings, `1' otherwise.
-#
-is_equal()
-{
-  func_check is_equal '=' 2 "$@";
-  if test _"$1"_ = _"$2"_
-  then
-    eval "${return_yes}";
-  fi;
-  eval "${return_no}";
-}
-
-
-########################################################################
-# is_existing ()
-#
-# Test whether `name' is an existing file or directory.  Solaris 2.5 does
-# not have `test -e'.
-#
-# Arguments : 1
-# Return    : `0' if arg1 exists, `1' otherwise.
-#
-is_existing()
-{
-  func_check is_existing '=' 1 "$@";
-  if test _"$1"_ = __
-  then
-    eval "${return_no}";
-  fi;
-  if test -f "$1" || test -d "$1" || test -c "$1"
-  then
-    eval "${return_yes}";
-  fi;
-  eval "${return_no}";
-}
-
-
-########################################################################
-# is_file ()
-#
-# Test whether `name' is a readable file.
-#
-# Arguments : 1
-# Return    : `0' if arg1 is a readable file, `1' otherwise.
-#
-is_file()
-{
-  func_check is_file '=' 1 "$@";
-  if is_not_empty "$1" && test -f "$1" && test -r "$1"
-  then
-    eval "${return_yes}";
-  fi;
-  eval "${return_no}";
-}
-
-
-########################################################################
-# is_non_empty_file ()
-#
-# Test whether `file_name' is a non-empty existing file.
-#
-# Arguments : <=1
-# Return    :
-#   `0' if arg1 is a non-empty existing file
-#   `1' otherwise
-#
-is_non_empty_file()
-{
-  func_check is_non_empty_file '=' 1 "$@";
-  if is_file "$1" && test -s "$1"
-  then
-    eval "${return_yes}";
-  fi;
-  eval "${return_no}";
-}
-
-
-########################################################################
-# is_not_dir ()
-#
-# Test whether `name' is not a readable directory.
-#
-# Arguments : 1
-# Return    : `0' if arg1 is a directory, `1' otherwise.
-#
-is_not_dir()
-{
-  func_check is_not_dir '=' 1 "$@";
-  if is_dir "$1"
-  then
-    eval "${return_no}";
-  fi;
-  eval "${return_yes}";
-}
-
-
-########################################################################
-# is_not_empty ()
-#
-# Test whether `string' is not empty.
-#
-# Arguments : <=1
-# Return    : `0' if arg1 exists and is not empty, `1' otherwise.
-#
-is_not_empty()
-{
-  func_check is_not_empty '=' 1 "$@";
-  if is_empty "$1"
-  then
-    eval "${return_no}";
-  fi;
-  eval "${return_yes}";
-}
-
-
-########################################################################
-# is_not_equal ( )
-#
-# Test whether `string1' differs from `string2'.
-#
-# Arguments : 2
-#
-is_not_equal()
-{
-  func_check is_not_equal '=' 2 "$@";
-  if is_equal "$1" "$2"
-  then
-    eval "${return_no}";
-  fi
-  eval "${return_yes}";
-}
-
-
-########################################################################
-# is_not_file ()
-#
-# Test whether `name' is a not readable file.
-#
-# Arguments : 1 (empty allowed)
-#
-is_not_file()
-{
-  func_check is_not_file '=' 1 "$@";
-  if is_file "$1"
-  then
-    eval "${return_no}";
-  fi;
-  eval "${return_yes}";
-}
-
-
-########################################################################
-# is_not_prog ([ [*]])
-#
-# Verify that arg is a not program in $PATH.
-#
-# Arguments : >=0 (empty allowed)
-#   more args are ignored, this allows to specify progs with arguments
-#
-is_not_prog()
-{
-  func_check is_not_prog '>=' 0 "$@";
-  case "$#" in
-  0)
-    eval "${return_yes}";
-    ;;
-  *)
-    if where_is "$1" >${_NULL_DEV}
-    then
-      eval "${return_no}";
-    fi;
-    ;;
-  esac
-  eval "${return_yes}";
-}
-
-
-########################################################################
-# is_not_writable ()
-#
-# Test whether `name' is a not a writable file or directory.
-#
-# Arguments : >=1 (empty allowed), more args are ignored
-#
-is_not_writable()
-{
-  func_check is_not_writable '>=' 1 "$@";
-  if is_writable "$1"
-  then
-    eval "${return_no}";
-  fi;
-  eval "${return_yes}";
-}
-
-
-########################################################################
-# is_not_X ()
-#
-# Test whether not running in X Window by checking $DISPLAY
-#
-is_not_X()
-{
-  func_check is_X '=' 0 "$@";
-  if obj DISPLAY is_empty
-  then
-    eval "${return_yes}";
-  fi;
-  eval "${return_no}";
-}
-
-
-########################################################################
-# is_not_yes ()
-#
-# Test whether `string' is not "yes".
-#
-# Arguments : 1
-#
-is_not_yes()
-{
-  func_check is_not_yes = 1 "$@";
-  if is_yes "$1"
-  then
-    eval "${return_no}";
-  fi;
-  eval "${return_yes}";
-}
-
-
-########################################################################
-# is_prog ([ [*]])
-#
-# Determine whether  is a program in $PATH
-#
-# Arguments : >=0 (empty allowed)
-#   * are ignored, this allows to specify progs with arguments.
-#
-is_prog()
-{
-  func_check is_prog '>=' 0 "$@";
-  case "$#" in
-  0)
-    eval "${return_no}";
-    ;;
-  *)
-    if where_is "$1" >${_NULL_DEV}
-    then
-      eval "${return_yes}";
-    fi;
-    ;;
-  esac
-  eval "${return_no}";
-}
-
-
-########################################################################
-# is_writable ()
-#
-# Test whether `name' is a writable file or directory.
-#
-# Arguments : >=1 (empty allowed), more args are ignored
-#
-is_writable()
-{
-  func_check is_writable '>=' 1 "$@";
-  if test _"$1"_ = __
-  then
-    eval "${return_no}";
-  fi;
-  if test -r "$1"
-  then
-    if test -w "$1"
-    then
-      eval "${return_yes}";
-    fi;
-  fi;
-  eval "${return_no}";
-}
-
-
-########################################################################
-# is_X ()
-#
-# Test whether running in X Window by checking $DISPLAY
-#
-is_X()
-{
-  func_check is_X '=' 0 "$@";
-  if obj DISPLAY is_not_empty
-  then
-    eval "${return_yes}";
-  fi;
-  eval "${return_no}";
-}
-
-
-########################################################################
-# is_yes ()
-#
-# Test whether `string' has value "yes".
-#
-# Return    : `0' if arg1 is `yes', `1' otherwise.
-#
-is_yes()
-{
-  func_check is_yes '=' 1 "$@";
-  if is_equal "$1" 'yes'
-  then
-    eval "${return_yes}";
-  fi;
-  eval "${return_no}";
-}
-
-
-########################################################################
-# landmark ()
-#
-# Print debugging information on standard error if $_DEBUG_LM is `yes'.
-#
-# Globals: $_DEBUG_LM
-#
-# Defined in section `Debugging functions'.
-
-
-########################################################################
-# leave ([])
-#
-# Clean exit without an error or with .
-#
-leave()
-{
-  clean_up;
-  if test $# = 0
-  then
-    exit "${_OK}";
-  else
-    exit "$1";
-  fi;
-}
-
-
-########################################################################
-landmark '6: list_*()';
-########################################################################
-#
-# `list' is an object class that represents an array or list.  Its
-# data consists of space-separated single-quoted elements.  So a list
-# has the form "'first' 'second' '...' 'last'".  See list_append() for
-# more details on the list structure.  The array elements of `list'
-# can be get by `eval set x "$list"; shift`.
-
-
-########################################################################
-# list_append ( ...)
-#
-# Arguments: >=2
-#   : a variable name for a list of single-quoted elements
-#   :  some sequence of characters.
-# Output: none, but $ is set to
-#   if  is empty:  "'' '...'"
-#   otherwise:           "$list '' ..."
-#
-# Variable prefix: la
-#
-list_append()
-{
-  func_check list_append '>=' 2 "$@";
-  la_name="$1";
-  eval la_list='"${'$1'}"';
-  shift;
-  for s
-  do
-    la_s="$s";
-    case "${la_s}" in
-    *\'*)
-      # escape each single quote by replacing each
-      # "'" (squote) by "'\''" (squote bslash squote squote);
-      # note that the backslash must be doubled in the following `sed'
-      la_element="$(echo1 "${la_s}" | sed -e 's/'"${_SQ}"'/&\\&&/g')";
-      exit_test;
-      ;;
-    '')
-      la_element="";
-      ;;
-    *)
-      la_element="${la_s}";
-      ;;
-    esac;
-    if obj la_list is_empty
-    then
-      la_list="'${la_element}'";
-    else
-      la_list="${la_list} '${la_element}'";
-    fi;
-  done;
-  eval "${la_name}"='"${la_list}"';
-  eval ${_UNSET} la_element;
-  eval ${_UNSET} la_list;
-  eval ${_UNSET} la_name;
-  eval ${_UNSET} la_s;
-  eval "${return_ok}";
-}
-
-
-########################################################################
-# list_from_cmdline ( [...])
-#
-# Transform command line arguments into a normalized form.
-#
-# Options, option arguments, and file parameters are identified and
-# output each as a single-quoted argument of its own.  Options and
-# file parameters are separated by a '--' argument.
-#
-# Arguments: >=1
-#   : common part of a set of 4 environment variable names:
-#     $_SHORT_NA:  list of short options without an arg.
-#     $_SHORT_ARG: list of short options that have an arg.
-#     $_LONG_NA:   list of long options without an arg.
-#     $_LONG_ARG:  list of long options that have an arg.
-#   ...: the arguments from a command line, such as "$@",
-#                     the content of a variable, or direct arguments.
-#
-# Output: ['-[-]opt' ['optarg']]... '--' ['filename']...
-#
-# Example:
-#   list_from_cmdline PRE 'a b' 'c' '' 'long' -a f1 -bcarg --long=larg f2
-# If $PRE_SHORT_NA, $PRE_SHORT_ARG, $PRE_LONG_NA, and $PRE_LONG_ARG are
-# none-empty option lists, this will result in printing:
-#     '-a' '-b' '-c' 'arg' '--long' 'larg' '--' 'f1' 'f2'
-#
-#   Use this function in the following way:
-#     eval set x "$(args_norm PRE_NAME "$@")";
-#     shift;
-#     while test "$1" != '--'; do
-#       case "$1" in
-#       ...
-#       esac;
-#       shift;
-#     done;
-#     shift;         #skip '--'
-#     # all positional parameters ("$@") left are file name parameters.
-#
-# Variable prefix: lfc
-#
-list_from_cmdline()
-{
-  func_check list_from_cmdline '>=' 1 "$@";
-  lfc_short_n="$(obj_data "$1"_SHORT_NA)";  # short options, no argument
-  lfc_short_a="$(obj_data "$1"_SHORT_ARG)"; # short options, with argument
-  lfc_long_n="$(obj_data "$1"_LONG_NA)";    # long options, no argument
-  lfc_long_a="$(obj_data "$1"_LONG_ARG)";   # long options, with argument
-  exit_test;
-  if obj lfc_short_n is_empty
-  then
-    error 'list_from_cmdline(): no $'"$1"'_SHORT_NA options.';
-  fi;
-  if obj lfc_short_a is_empty
-  then
-    error 'list_from_cmdline(): no $'"$1"'_SHORT_ARG options.';
-  fi;
-  if obj lfc_long_n is_empty
-  then
-    error 'list_from_cmdline(): no $'"$1"'_LONG_NA options.';
-  fi;
-  if obj lfc_long_a is_empty
-  then
-    error 'list_from_cmdline(): no $'"$1"'_LONG_ARG options.';
-  fi;
-
-  shift;
-  if is_equal "$#" 0
-  then
-    echo1 --
-    eval ${_UNSET} lfc_fparams;
-    eval ${_UNSET} lfc_short_a;
-    eval ${_UNSET} lfc_short_n;
-    eval ${_UNSET} lfc_long_a;
-    eval ${_UNSET} lfc_long_n;
-    eval ${_UNSET} lfc_result;
-    eval "${return_ok}";
-  fi;
-
-  lfc_fparams='';
-  lfc_result='';
-  while test "$#" -ge 1
-  do
-    lfc_arg="$1";
-    shift;
-    case "${lfc_arg}" in
-    --) break; ;;
-    --*=*)
-      # delete leading '--';
-      lfc_abbrev="$(echo1 "${lfc_arg}" | sed -e 's/^--//')";
-      lfc_with_equal="${lfc_abbrev}";
-      # extract option by deleting from the first '=' to the end
-      lfc_abbrev="$(echo1 "${lfc_with_equal}" | \
-                    sed -e 's/^\([^=]*\)=.*$/\1/')";
-      lfc_opt="$(list_single_from_abbrev lfc_long_a "${lfc_abbrev}")";
-      exit_test;
-      if obj lfc_opt is_empty
-      then
-        error_user "--${lfc_abbrev} is not an option.";
-      else
-        # get the option argument by deleting up to first `='
-        lfc_optarg="$(echo1 "${lfc_with_equal}" | sed -e 's/^[^=]*=//')";
-        exit_test;
-        list_append lfc_result "--${lfc_opt}" "${lfc_optarg}";
-        continue;
-      fi;
-      ;;
-    --*)
-      # delete leading '--';
-      lfc_abbrev="$(echo1 "${lfc_arg}" | sed -e 's/^--//')";
-      if list_has lfc_long_n "${lfc_abbrev}"
-      then
-        lfc_opt="${lfc_abbrev}";
-      else
-        exit_test;
-        lfc_opt="$(list_single_from_abbrev lfc_long_n "${lfc_abbrev}")";
-        exit_test;
-        if obj lfc_opt is_not_empty && is_not_equal "$#" 0
-        then
-          a="$(list_single_from_abbrev lfc_long_a "${lfc_abbrev}")";
-          exit_test;
-          if obj a is_not_empty
-          then
-            error_user "The abbreviation ${lfc_arg} \
-has multiple options: --${lfc_opt} and --${a}.";
-          fi;
-        fi;
-      fi;
-      if obj lfc_opt is_not_empty
-      then
-        # long option, no argument
-        list_append lfc_result "--${lfc_opt}";
-        continue;
-      fi;
-      lfc_opt="$(list_single_from_abbrev lfc_long_a "${lfc_abbrev}")";
-      exit_test;
-      if obj lfc_opt is_not_empty
-      then
-        # long option with argument
-        if test "$#" -le 0
-        then
-          error_user "no argument for option --${lfc_opt}."
-        fi;
-        list_append lfc_result "--${lfc_opt}" "$1";
-        shift;
-        continue;
-      fi;
-      error_user "${lfc_arg} is not an option.";
-      ;;
-    -?*)			# short option (cluster)
-      # delete leading `-';
-      lfc_rest="$(echo1 "${lfc_arg}" | sed -e 's/^-//')";
-      exit_test;
-      while obj lfc_rest is_not_empty
-      do
-        # get next short option from cluster (first char of $lfc_rest)
-        lfc_optchar="$(echo1 "${lfc_rest}" | sed -e 's/^\(.\).*$/\1/')";
-        # remove first character from ${lfc_rest};
-        lfc_rest="$(echo1 "${lfc_rest}" | sed -e 's/^.//')";
-        exit_test;
-        if list_has lfc_short_n "${lfc_optchar}"
-        then
-          list_append lfc_result "-${lfc_optchar}";
-          continue;
-        elif list_has lfc_short_a "${lfc_optchar}"
-        then
-          if obj lfc_rest is_empty
-          then
-            if test "$#" -ge 1
-            then
-              list_append lfc_result "-${lfc_optchar}" "$1";
-              shift;
-              continue;
-            else
-              error_user "no argument for option -${lfc_optchar}.";
-            fi;
-          else			# rest is the argument
-            list_append lfc_result "-${lfc_optchar}" "${lfc_rest}";
-            lfc_rest='';
-            continue;
-          fi;
-        else
-          error_user "unknown option -${lfc_optchar}.";
-        fi;
-      done;
-      ;;
-    *)
-      # Here, $lfc_arg is not an option, so a file parameter.
-      list_append lfc_fparams "${lfc_arg}";
-
-      # Ignore the strange POSIX option handling to end option
-      # parsing after the first file name argument.  To reuse it, do
-      # a `break' here if $POSIXLY_CORRECT of `bash' is not empty.
-      # When `bash' is called as `sh' $POSIXLY_CORRECT is set
-      # automatically to `y'.
-      ;;
-    esac;
-  done;
-  list_append lfc_result '--';
-  if obj lfc_fparams is_not_empty
-  then
-    lfc_result="${lfc_result} ${lfc_fparams}";
-  fi;
-  if test "$#" -gt 0
-  then
-    list_append lfc_result "$@";
-  fi;
-  obj lfc_result echo1;
-  eval ${_UNSET} lfc_abbrev;
-  eval ${_UNSET} lfc_fparams;
-  eval ${_UNSET} lfc_short_a;
-  eval ${_UNSET} lfc_short_n;
-  eval ${_UNSET} lfc_long_a;
-  eval ${_UNSET} lfc_long_n;
-  eval ${_UNSET} lfc_result;
-  eval ${_UNSET} lfc_arg;
-  eval ${_UNSET} lfc_opt;
-  eval ${_UNSET} lfc_opt_arg;
-  eval ${_UNSET} lfc_opt_char;
-  eval ${_UNSET} lfc_with_equal;
-  eval ${_UNSET} lfc_rest;
-  eval "${return_ok}";
-} # list_from_cmdline()
-
-
-########################################################################
-# list_from_split ( )
-#
-# In , escape all white space characters and replace each
-#  by space.
-#
-# Arguments: 2: a  that is to be split into parts divided by
-#               
-# Output:    the resulting list string
-#
-# Variable prefix: lfs
-#
-list_from_split()
-{
-  func_check list_from_split = 2 "$@";
-
-  # precede each space or tab by a backslash `\' (doubled for `sed')
-  lfs_s="$(echo1 "$1" | sed -e 's/\('"${_SPACE_SED}"'\)/\\\1/g')";
-  exit_test;
-
-  # replace split character of string by the list separator ` ' (space).
-  case "$2" in
-    /)				# cannot use normal `sed' separator
-      echo1 "${lfs_s}" | sed -e 's|'"$2"'| |g';
-      ;;
-    ?)				# use normal `sed' separator
-      echo1 "${lfs_s}" | sed -e 's/'"$2"'/ /g';
-      ;;
-    ??*)
-      error 'list_from_split(): separator must be a single character.';
-      ;;
-  esac;
-  eval ${_UNSET} lfs_s;
-  eval "${return_ok}";
-}
-
-
-########################################################################
-# list_get ()
-#
-# Check whether  is a space-separated list of '-quoted elements.
-#
-# If the test fails an error is raised.
-# If the test succeeds the argument is echoed.
-#
-# Testing criteria:
-#   A list has the form "'first' 'second' '...' 'last'".  So it has a
-#   leading and a final quote and the elements are separated by "' '"
-#   constructs.  If these are all removed there should not be any
-#   unescaped single-quotes left.  Watch out for escaped single
-#   quotes; they have the form '\'' (sq bs sq sq).
-
-# Arguments: 1
-# Output: the argument  unchanged, if the check succeeded.
-#
-# Variable prefix: lg
-#
-list_get()
-{
-  func_check list_get = 1 "$@";
-  eval lg_list='"${'$1'}"';
-  # remove leading and final space characters
-  lg_list="$(echo1 "${lg_list}" | sed -e '
-s/^'"${_SPACE_SED}"'*//
-s/'"${_SPACE_SED}"'*$//
-')";
-  exit_test;
-  case "${lg_list}" in
-  '')
-    eval ${_UNSET} lg_list;
-    eval "${return_ok}";
-    ;;
-  \'*\')
-    obj lg_list echo1;
-    eval ${_UNSET} lg_list;
-    eval "${return_ok}";
-    ;;
-  *)
-    error "list_get(): bad list: $1"
-    ;;
-  esac;
-  eval ${_UNSET} lg_list;
-  eval "${return_ok}";
-}
-
-
-########################################################################
-# list_has ( )
-#
-# Test whether the list  has the element .
-#
-# Arguments: 2
-#   : a variable name for a list of single-quoted elements
-#   :  some sequence of characters.
-#
-# Variable prefix: lh
-#
-list_has()
-{
-  func_check list_has = 2 "$@";
-  eval lh_list='"${'$1'}"';
-  if obj lh_list is_empty
-  then
-    eval "${_UNSET}" lh_list;
-    eval "${return_no}";
-  fi;
-  case "$2" in
-    \'*\')  lh_element=" $2 "; ;;
-    *)      lh_element=" '$2' "; ;;
-  esac;
-  if string_contains " ${lh_list} " "${lh_element}"
-  then
-    eval "${_UNSET}" lh_list;
-    eval "${_UNSET}" lh_element;
-    eval "${return_yes}";
-  else
-    eval "${_UNSET}" lh_list;
-    eval "${_UNSET}" lh_element;
-    eval "${return_no}";
-  fi;
-}
-
-
-########################################################################
-# list_has_abbrev ( )
-#
-# Test whether the list  has an element starting with .
-#
-# Arguments: 2
-#   : a variable name for a list of single-quoted elements
-#   :   some sequence of characters.
-#
-# Variable prefix: lha
-#
-list_has_abbrev()
-{
-  func_check list_has_abbrev = 2 "$@";
-  eval lha_list='"${'$1'}"';
-  if obj lha_list is_empty
-  then
-    eval "${_UNSET}" lha_list;
-    eval "${return_no}";
-  fi;
-  case "$2" in
-    \'*)
-      lha_element="$(echo1 "$2" | sed -e 's/'"${_SQ}"'$//')";
-      exit_test;
-      ;;
-    *) lha_element="'$2"; ;;
-  esac;
-  if string_contains " ${lha_list}" " ${lha_element}"
-  then
-    eval "${_UNSET}" lha_list;
-    eval "${_UNSET}" lha_element;
-    eval "${return_yes}";
-  else
-    eval "${_UNSET}" lha_list;
-    eval "${_UNSET}" lha_element;
-    eval "${return_no}";
-  fi;
-  eval "${return_ok}";
-}
-
-
-########################################################################
-# list_has_not ( )
-#
-# Test whether  has no .
-#
-# Arguments: 2
-#   :    a space-separated list of single-quoted elements.
-#   : some sequence of characters.
-#
-# Variable prefix: lhn
-#
-list_has_not()
-{
-  func_check list_has_not = 2 "$@";
-  eval lhn_list='"${'$1'}"';
-  if obj lhn_list is_empty
-  then
-    eval "${_UNSET}" lhn_list;
-    eval "${return_yes}";
-  fi;
-  case "$2" in
-    \'*\') lhn_element=" $2 "; ;;
-    *)     lhn_element=" '$2' "; ;;
-  esac;
-  if string_contains " ${lhn_list} " "${lhn_element}"
-  then
-    eval "${_UNSET}" lhn_list;
-    eval "${_UNSET}" lhn_element;
-    eval "${return_no}";
-  else
-    eval "${_UNSET}" lhn_list;
-    eval "${_UNSET}" lhn_element;
-    eval "${return_yes}";
-  fi;
-}
-
-
-########################################################################
-# list_single_from_abbrev ( )
-#
-# Check whether the list has an element starting with .  If
-# there are more than a single element an error is created.
-#
-# Arguments: 2
-#   :   a variable name for a list of single-quoted elements
-#   : some sequence of characters.
-#
-# Output: the found element.
-#
-# Variable prefix: lsfa
-#
-list_single_from_abbrev()
-{
-  func_check list_single_from_abbrev = 2 "$@";
-  eval lsfa_list='"${'$1'}"';
-  if obj lsfa_list is_empty
-  then
-    eval "${_UNSET}" lsfa_list;
-    eval "${return_no}";
-  fi;
-  lsfa_abbrev="$2";
-  if list_has lsfa_list "${lsfa_abbrev}"
-  then
-    obj lsfa_abbrev echo1;
-    eval "${_UNSET}" lsfa_abbrev;
-    eval "${_UNSET}" lsfa_list;
-    eval "${return_yes}";
-  fi;
-  if list_has_abbrev lsfa_list "${lsfa_abbrev}"
-  then
-    lsfa_element='';
-    eval set x "${lsfa_list}";
-    shift;
-    for i
-    do
-      case "$i" in
-      ${lsfa_abbrev}*)
-        if obj lsfa_element is_not_empty
-        then
-          error_user "The abbreviation --${lsfa_abbrev} \
-has multiple options: --${lsfa_element} and --${i}.";
-        fi;
-        lsfa_element="$i";
-        ;;
-      esac;
-    done;
-    obj lsfa_element echo1;
-    eval "${_UNSET}" lsfa_abbrev;
-    eval "${_UNSET}" lsfa_element;
-    eval "${_UNSET}" lsfa_list;
-    eval "${return_yes}";
-  else
-    eval "${_UNSET}" lsfa_abbrev;
-    eval "${_UNSET}" lsfa_element;
-    eval "${_UNSET}" lsfa_list;
-    eval "${return_no}";
-  fi;
-}
-
-
-########################################################################
-landmark '7: man_*()';
-########################################################################
-
-########################################################################
-# man_do_filespec ()
-#
-# Print suitable man page(s) for filespec to $_TMP_CAT.
-#
-# Arguments : 2
-#   : argument of the form `man:name.section', `man:name',
-#               `man:name(section)', `name.section', `name'.
-#
-# Globals   : $_OPT_ALL
-#
-# Output    : none.
-# Return    : `0' if man page was found, `1' else.
-#
-# Only called from do_fileargs(), checks on $MANPATH and $_MAN_ENABLE
-# are assumed (see man_setup()).
-#
-# Variable prefix: mdf
-#
-man_do_filespec()
-{
-  func_check man_do_filespec = 1 "$@";
-  if obj _MAN_PATH is_empty
-  then
-    eval "${return_bad}";
-  fi;
-  if is_empty "$1"
-  then
-    eval "${return_bad}";
-  fi;
-  mdf_spec="$1";
-  mdf_name='';
-  mdf_section='';
-  case "${mdf_spec}" in
-  */*)				# not a man spec with containing '/'
-    eval ${_UNSET} mdf_got_one;
-    eval ${_UNSET} mdf_name;
-    eval ${_UNSET} mdf_section;
-    eval ${_UNSET} mdf_spec;
-    eval "${return_bad}";
-    ;;
-  man:?*\(?*\))			# man:name(section)
-    mdf_name="$(echo1 "${mdf_spec}" \
-                | sed -e 's/^man:\(..*\)(\(..*\))$/\1/')";
-    mdf_section="$(echo1 "${mdf_spec}" \
-                   | sed -e 's/^man:\(..*\)(\(..*\))$/\2/')";
-    exit_test;
-    ;;
-  man:?*.${_MAN_AUTO_SEC_CHARS}) # man:name.section
-    mdf_name="$(echo1 "${mdf_spec}" \
-                | sed -e 's/^man:\(..*\)\..$/\1/')";
-    mdf_section="$(echo1 "${mdf_spec}" \
-                   | sed -e 's/^.*\(.\)$/\1/')";
-    exit_test;
-    ;;
-  man:?*)			# man:name
-    mdf_name="$(echo1 "${mdf_spec}" | sed -e 's/^man://')";
-    exit_test;
-    ;;
-  ?*\(?*\))			# name(section)
-    mdf_name="$(echo1 "${mdf_spec}" \
-                | sed -e 's/^\(..*\)(\(..*\))$/\1/')";
-    mdf_section="$(echo1 "${mdf_spec}" \
-                   | sed -e 's/^\(..*\)(\(..*\))$/\2/')";
-    exit_test;
-    ;;
-  ?*.${_MAN_AUTO_SEC_CHARS})	# name.section
-    mdf_name="$(echo1 "${mdf_spec}" \
-                | sed -e 's/^\(..*\)\..$/\1/')";
-    mdf_section="$(echo1 "${mdf_spec}" \
-                   | sed -e 's/^.*\(.\)$/\1/')";
-    exit_test;
-    ;;
-  ?*)
-    mdf_name="${mdf_spec}";
-    ;;
-  esac;
-  if obj mdf_name is_empty
-  then
-    eval ${_UNSET} mdf_got_one;
-    eval ${_UNSET} mdf_name;
-    eval ${_UNSET} mdf_section;
-    eval ${_UNSET} mdf_spec;
-    eval "${return_bad}";
-  fi;
-  mdf_got_one='no';
-  if obj mdf_section is_empty
-  then
-    if obj _OPT_SECTIONS is_empty
-    then
-      eval set x "${_MAN_AUTO_SEC_LIST}";
-    else
-      # use --sections when no section is given to filespec
-      eval set x "$(echo1 "${_OPT_SECTIONS}" | sed -e 's/:/ /g')";
-    fi;
-    shift;
-    for s
-    do
-      mdf_s="$s";
-      if man_search_section "${mdf_name}" "${mdf_s}"
-      then			# found
-        if obj _MAN_ALL is_yes
-        then
-          mdf_got_one='yes';
-        else
-          eval ${_UNSET} mdf_got_one;
-          eval ${_UNSET} mdf_name;
-          eval ${_UNSET} mdf_s;
-          eval ${_UNSET} mdf_section;
-          eval ${_UNSET} mdf_spec;
-          eval "${return_good}";
-        fi;
-      fi;
-    done;
-  else
-    if man_search_section "${mdf_name}" "${mdf_section}"
-    then
-      eval ${_UNSET} mdf_got_one;
-      eval ${_UNSET} mdf_name;
-      eval ${_UNSET} mdf_s;
-      eval ${_UNSET} mdf_section;
-      eval ${_UNSET} mdf_spec;
-      eval "${return_good}";
-    else
-      eval ${_UNSET} mdf_got_one;
-      eval ${_UNSET} mdf_name;
-      eval ${_UNSET} mdf_section;
-      eval ${_UNSET} mdf_spec;
-      eval "${return_bad}";
-    fi;
-  fi;
-  if obj _MAN_ALL is_yes && obj mdf_got_one is_yes
-  then
-    eval ${_UNSET} mdf_got_one;
-    eval ${_UNSET} mdf_name;
-    eval ${_UNSET} mdf_s;
-    eval ${_UNSET} mdf_section;
-    eval ${_UNSET} mdf_spec;
-    eval "${return_good}";
-  fi;
-  eval ${_UNSET} mdf_got_one;
-  eval ${_UNSET} mdf_name;
-  eval ${_UNSET} mdf_s;
-  eval ${_UNSET} mdf_section;
-  eval ${_UNSET} mdf_spec;
-  eval "${return_bad}";
-} # man_do_filespec()
-
-
-########################################################################
-# man_register_file (  [
]) -# -# Write a found man page file and register the title element. -# -# Arguments: 1, 2, or 3; maybe empty -# Output: none -# -man_register_file() -{ - func_check man_register_file '>=' 2 "$@"; - case "$#" in - 2|3) do_nothing; ;; - *) - error "man_register_file() expects 2 or 3 arguments."; - ;; - esac; - if is_empty "$1" - then - error 'man_register_file(): file name is empty'; - fi; - to_tmp "$1"; - case "$#" in - 2) - register_title "man:$2"; - eval "${return_ok}"; - ;; - 3) - register_title "$2.$3"; - eval "${return_ok}"; - ;; - esac; - eval "${return_ok}"; -} - - -######################################################################## -# man_search_section (
) -# -# Retrieve man pages. -# -# Arguments : 2 -# Globals : $_MAN_PATH, $_MAN_EXT -# Return : 0 if found, 1 otherwise -# -# Variable prefix: mss -# -man_search_section() -{ - func_check man_search_section = 2 "$@"; - if obj _MAN_PATH is_empty - then - eval "${return_bad}"; - fi; - if is_empty "$1" - then - eval "${return_bad}"; - fi; - if is_empty "$2" - then - eval "${return_bad}"; - fi; - mss_name="$1"; - mss_section="$2"; - eval set x "$(path_split "${_MAN_PATH}")"; - exit_test; - shift; - mss_got_one='no'; - if obj _MAN_EXT is_empty - then - for d - do - mss_dir="$(dirname_append "$d" "man${mss_section}")"; - exit_test; - if obj mss_dir is_dir - then - mss_prefix="$(\ - dirname_append "${mss_dir}" "${mss_name}.${mss_section}")"; - if obj _OPT_WHATIS is_yes - then - mss_files="$(eval ls "${mss_prefix}"'*' 2>${_NULL_DEV} | - sed -e '\| found|s|.*||' - )"; - else - mss_files="$(eval ls "'${mss_prefix}'"'*' 2>${_NULL_DEV} | - sed -e '\| found|s|.*||' - )"; - fi; - exit_test; - if obj mss_files is_not_empty - then - # for f in $mss_files - for f in $(eval set x ${mss_files}; shift; echo1 "$@") - do - exit_test; - mss_f="$f"; - if obj mss_f is_file - then - if is_yes "${mss_got_one}" - then - register_file "${mss_f}"; - elif obj _MAN_ALL is_yes - then - man_register_file "${mss_f}" "${mss_name}"; - else - man_register_file "${mss_f}" "${mss_name}" "${mss_section}"; - eval ${_UNSET} mss_dir; - eval ${_UNSET} mss_ext; - eval ${_UNSET} mss_f; - eval ${_UNSET} mss_files; - eval ${_UNSET} mss_got_one; - eval ${_UNSET} mss_name; - eval ${_UNSET} mss_prefix; - eval ${_UNSET} mss_section; - eval "${return_good}"; - fi; - mss_got_one='yes'; - fi; - done; - fi; - fi; - done; - else - mss_ext="${_MAN_EXT}"; - # check for directory name having trailing extension - for d - do - mss_dir="$(dirname_append $d man${mss_section}${mss_ext})"; - exit_test; - if obj mss_dir is_dir - then - mss_prefix=\ - "$(dirname_append "${mss_dir}" "${mss_name}.${mss_section}")"; - mss_files="$( eval ls "${mss_prefix}"'*' 2>${_NULL_DEV} | - sed -e '\|not found|s|.*||' - )"; - exit_test; - if obj mss_files is_not_empty - then - # for f in $mss_files - for f in $(eval set x ${mss_files}; shift; echo1 "$@") - do - mss_f="$f"; - if obj mss_f is_file - then - if is_yes "${mss_got_one}" - then - register_file "${mss_f}"; - elif obj _MAN_ALL is_yes - then - man_register_file "${mss_f}" "${mss_name}"; - else - man_register_file "${mss_f}" "${mss_name}" "${mss_section}"; - eval ${_UNSET} mss_dir; - eval ${_UNSET} mss_ext; - eval ${_UNSET} mss_f; - eval ${_UNSET} mss_files; - eval ${_UNSET} mss_got_one; - eval ${_UNSET} mss_name; - eval ${_UNSET} mss_prefix; - eval ${_UNSET} mss_section; - eval "${return_good}"; - fi; - mss_got_one='yes'; - fi; - done; - fi; - fi; - done; - # check for files with extension in directories without extension - for d - do - mss_dir="$(dirname_append "$d" "man${mss_section}")"; - exit_test; - if obj mss_dir is_dir - then - mss_prefix="$(dirname_append "${mss_dir}" \ - "${mss_name}.${mss_section}${mss_ext}")"; - mss_files="$(eval ls "${mss_prefix}"'*' 2>${_NULL_DEV} | - sed -e '\|not found|s|.*||' - )"; - exit_test; - if obj mss_files is_not_empty - then - # for f in $mss_files - for f in $(eval set x ${mss_files}; shift; echo1 "$@") - do - mss_f="$f"; - if obj mss_f is_file - then - if is_yes "${mss_got_one}" - then - register_file "${mss_f}"; - elif obj _MAN_ALL is_yes - then - man_register_file "${mss_f}" "${mss_name}"; - else - man_register_file "${mss_f}" "${mss_name}" "${mss_section}"; - eval ${_UNSET} mss_dir; - eval ${_UNSET} mss_ext; - eval ${_UNSET} mss_f; - eval ${_UNSET} mss_files; - eval ${_UNSET} mss_got_one; - eval ${_UNSET} mss_name; - eval ${_UNSET} mss_prefix; - eval ${_UNSET} mss_section; - eval "${return_good}"; - fi; - mss_got_one='yes'; - fi; - done; - fi; - fi; - done; - fi; - if obj _MAN_ALL is_yes && is_yes "${mss_got_one}" - then - eval ${_UNSET} mss_dir; - eval ${_UNSET} mss_ext; - eval ${_UNSET} mss_f; - eval ${_UNSET} mss_files; - eval ${_UNSET} mss_got_one; - eval ${_UNSET} mss_name; - eval ${_UNSET} mss_prefix; - eval ${_UNSET} mss_section; - eval "${return_good}"; - fi; - eval ${_UNSET} mss_dir; - eval ${_UNSET} mss_ext; - eval ${_UNSET} mss_f; - eval ${_UNSET} mss_files; - eval ${_UNSET} mss_got_one; - eval ${_UNSET} mss_name; - eval ${_UNSET} mss_prefix; - eval ${_UNSET} mss_section; - eval "${return_bad}"; -} # man_search_section() - - -######################################################################## -# man_setup () -# -# Setup the variables $_MAN_* needed for man page searching. -# -# Globals: -# in: $_OPT_*, $_MANOPT_*, $LANG, $LC_MESSAGES, $LC_ALL, -# $MANPATH, $MANROFFSEQ, $MANSEC, $PAGER, $SYSTEM, $MANOPT. -# out: $_MAN_PATH, $_MAN_LANG, $_MAN_SYS, $_MAN_LANG, $_MAN_LANG2, -# $_MAN_SEC, $_MAN_ALL -# in/out: $_MAN_ENABLE -# -# The precedence for the variables related to `man' is that of GNU -# `man', i.e. -# -# $LANG; overridden by -# $LC_MESSAGES; overridden by -# $LC_ALL; this has the same precedence as -# $MANPATH, $MANROFFSEQ, $MANSEC, $PAGER, $SYSTEM; overridden by -# $MANOPT; overridden by -# the groffer command line options. -# -# Variable prefix: ms -# -man_setup() -{ - func_check main_man_setup = 0 "$@"; - - if obj _MAN_IS_SETUP is_yes - then - eval "${return_ok}"; - fi; - _MAN_IS_SETUP='yes'; - - if obj _MAN_ENABLE is_not_yes - then - eval "${return_ok}"; - fi; - - # determine basic path for man pages - _MAN_PATH="$(get_first_essential \ - "${_OPT_MANPATH}" "${_MANOPT_PATH}" "${MANPATH}")"; - exit_test; - if obj _MAN_PATH is_empty - then - manpath_set_from_path; - else - _MAN_PATH="$(path_clean "${_MAN_PATH}")"; - exit_test; - fi; - if obj _MAN_PATH is_empty - then - if is_prog 'manpath' - then - _MAN_PATH="$(manpath 2>${_NULL_DEV})"; # not always available - exit_test; - fi; - fi; - if obj _MAN_PATH is_empty - then - _MAN_ENABLE="no"; - eval "${return_ok}"; - fi; - - _MAN_ALL="$(get_first_essential "${_OPT_ALL}" "${_MANOPT_ALL}")"; - exit_test; - if obj _MAN_ALL is_empty - then - _MAN_ALL='no'; - fi; - - _MAN_SYS="$(get_first_essential \ - "${_OPT_SYSTEMS}" "${_MANOPT_SYS}" "${SYSTEM}")"; - ms_lang="$(get_first_essential \ - "${_OPT_LANG}" "${LC_ALL}" "${LC_MESSAGES}" "${LANG}")"; - exit_test; - case "${ms_lang}" in - C|POSIX) - _MAN_LANG=""; - _MAN_LANG2=""; - ;; - ?) - _MAN_LANG="${ms_lang}"; - _MAN_LANG2=""; - ;; - *) - _MAN_LANG="${ms_lang}"; - # get first two characters of $ms_lang - _MAN_LANG2="$(echo1 "${ms_lang}" | sed -e 's/^\(..\).*$/\1/')"; - exit_test; - ;; - esac; - # from now on, use only $_LANG, forget about $_OPT_LANG, $LC_*. - - manpath_add_lang_sys; # this is very slow - - _MAN_SEC="$(get_first_essential \ - "${_OPT_SECT}" "${_MANOPT_SEC}" "${MANSEC}")"; - exit_test; - if obj _MAN_PATH is_empty - then - _MAN_ENABLE="no"; - eval ${_UNSET} ms_lang; - eval "${return_ok}"; - fi; - - _MAN_EXT="$(get_first_essential \ - "${_OPT_EXTENSION}" "${_MANOPT_EXTENSION}")"; - exit_test; - eval ${_UNSET} ms_lang; - eval "${return_ok}"; -} # man_setup() - - -######################################################################## -landmark '8: manpath_*()'; -######################################################################## - -######################################################################## -# manpath_add_lang_sys () -# -# Add language and operating system specific directories to man path. -# -# Arguments : 0 -# Output : none -# Globals: -# in: $_MAN_SYS: has the form `os1,os2,...', a comma separated -# list of names of operating systems. -# $_MAN_LANG and $_MAN_LANG2: each a single name -# in/out: $_MAN_PATH: has the form `dir1:dir2:...', a colon -# separated list of directories. -# -# Variable prefix: mals -# -manpath_add_lang_sys() -{ - func_check manpath_add_lang_sys = 0 "$@"; - if obj _MAN_PATH is_empty - then - eval "${return_ok}"; - fi; - # twice test both sys and lang - eval set x "$(path_split "${_MAN_PATH}")"; - shift; - exit_test; - mals_mp=''; - for p - do # loop on man path directories - mals_mp="$(_manpath_add_lang_sys_single "${mals_mp}" "$p")"; - exit_test; - done; - eval set x "$(path_split "${mals_mp}")"; - shift; - exit_test; - for p - do # loop on man path directories - mals_mp="$(_manpath_add_lang_sys_single "${mals_mp}" "$p")"; - exit_test; - done; - _MAN_PATH="$(path_chop "${mals_mp}")"; - exit_test; - eval ${_UNSET} mals_mp; - eval "${return_ok}"; -} - - -# To the directory in $1 append existing sys/lang subdirectories -# Function is necessary to split the OS list. -# -# globals: in: $_MAN_SYS, $_MAN_LANG, $_MAN_LANG2 -# argument: 2: `man_path' and `dir' -# output: colon-separated path of the retrieved subdirectories -# -# Variable prefix: _mals -# -_manpath_add_lang_sys_single() -{ - func_check _manpath_add_lang_sys_single = 2 "$@"; - _mals_res="$1"; - _mals_parent="$2"; - eval set x "$(list_from_split "${_MAN_SYS}" ',')"; - shift; - exit_test; - for d in "$@" "${_MAN_LANG}" "${_MAN_LANG2}" - do - _mals_dir="$(dirname_append "${_mals_parent}" "$d")"; - exit_test; - if obj _mals_res path_not_contains "${_mals_dir}" && \ - obj _mals_dir is_dir - then - _mals_res="${_mals_res}:${_mals_dir}"; - fi; - done; - if path_not_contains "${_mals_res}" "${_mals_parent}" - then - _mals_res="${_mals_res}:${_mals_parent}"; - fi; - path_chop "${_mals_res}"; - eval ${_UNSET} _mals_dir; - eval ${_UNSET} _mals_parent; - eval ${_UNSET} _mals_res; - eval "${return_ok}"; -} - -# end manpath_add_lang_sys () - - -######################################################################## -# manpath_set_from_path () -# -# Determine basic search path for man pages from $PATH. -# -# Return: `0' if a valid man path was retrieved. -# Output: none -# Globals: -# in: $PATH -# out: $_MAN_PATH -# -# Variable prefix: msfp -# -manpath_set_from_path() -{ - func_check manpath_set_from_path = 0 "$@"; - - msfp_manpath=''; - - # get a basic man path from $PATH - if obj PATH is_not_empty - then - eval set x "$(path_split "${PATH}")"; - shift; - exit_test; - for d - do - # delete the final `/bin' part - msfp_base="$(echo1 "$d" | sed -e 's|//*bin/*$||')"; - exit_test; - for e in /share/man /man - do - msfp_mandir="${msfp_base}$e"; - if test -d "${msfp_mandir}" && test -r "${msfp_mandir}" - then - msfp_manpath="${msfp_manpath}:${msfp_mandir}"; - fi; - done; - done; - fi; - - # append some default directories - for d in /usr/local/share/man /usr/local/man \ - /usr/share/man /usr/man \ - /usr/X11R6/man /usr/openwin/man \ - /opt/share/man /opt/man \ - /opt/gnome/man /opt/kde/man - do - msfp_d="$d"; - if obj msfp_manpath path_not_contains "${msfp_d}" && obj mfsp_d is_dir - then - msfp_manpath="${msfp_manpath}:${mfsp_d}"; - fi; - done; - - _MAN_PATH="${msfp_manpath}"; - eval ${_UNSET} msfp_base; - eval ${_UNSET} msfp_d; - eval ${_UNSET} msfp_mandir; - eval ${_UNSET} msfp_manpath; - eval "${return_ok}"; -} # manpath_set_from_path() - - -######################################################################## -landmark '9: obj_*()'; -######################################################################## - -######################################################################## -# obj ( ...) -# -# This works like a method (object function) call for an object. -# Run " $ ...". -# -# The first argument represents an object whose data is given as first -# argument to (). -# -# Argument: >=2 -# : variable name -# : a program or function name -# -# Variable prefix: o -# -obj() -{ - func_check obj '>=' 2 "$@"; - eval o_arg1='"${'$1'}"'; - if is_empty "$2" - then - error "obj(): function name is empty." - else - o_func="$2"; - fi; - shift; - shift; - eval "${o_func}"' "${o_arg1}" "$@"'; - n="$?"; - eval ${_UNSET} o_arg1; - eval ${_UNSET} o_func; - eval "${return_var} $n"; -} # obj() - - -######################################################################## -# obj_data () -# -# Print the data of , i.e. the content of $. -# For possible later extensions. -# -# Arguments: 1 -# : a variable name -# Output: the data of -# -# Variable prefix: od -# -obj_data() -{ - func_check obj '=' 1 "$@"; - if is_empty "$1" - then - error "obj_data(): object name is empty." - fi; - eval od_res='"${'$1'}"'; - obj od_res echo1; - eval ${_UNSET} od_res; - eval "${return_ok}"; -} - - -######################################################################## -# obj_from_output ( ...) -# -# Run '$="$( ...)"' to set the result of a -# function call to a global variable. -# -# Arguments: >=2 -# : a variable name -# : the name of a function or program -# : optional argument to -# Output: none -# -# Variable prefix: ofo -# -obj_from_output() -{ - func_check obj_from_output '>=' 2 "$@"; - if is_empty "$1" - then - error "res(): variable name is empty."; - elif is_empty "$2" - then - error "res(): function name is empty." - else - ofo_result_name="$1"; - fi; - shift; - eval "${ofo_result_name}"'="$('"$@"')"'; - exit_test; - eval "${return_ok}"; -} - - -######################################################################## -# obj_set ( ) -# -# Set the data of , i.e. call "$=". -# -# Arguments: 2 -# : a variable name -# : a string -# Output:: none -# -obj_set() -{ - func_check obj_set '=' 2 "$@"; - if is_empty "$1" - then - error "obj_set(): object name is empty." - fi; - eval "$1"='"$2"'; - eval "${return_ok}"; -} - - -######################################################################## -# path_chop () -# -# Remove unnecessary colons from path. -# -# Argument: 1, a colon separated path. -# Output: path without leading, double, or trailing colons. -# -path_chop() -{ - func_check path_chop = 1 "$@"; - - # replace multiple colons by a single colon `:' - # remove leading and trailing colons - echo1 "$1" | sed -e ' -s/^:*// -s/:::*/:/g -s/:*$// -'; - eval "${return_ok}"; -} - - -######################################################################## -# path_clean () -# -# Remove non-existing directories from a colon-separated list. -# -# Argument: 1, a colon separated path. -# Output: colon-separated list of existing directories. -# -# Variable prefix: pc -# -path_clean() -{ - func_check path_clean = 1 "$@"; - if is_not_equal "$#" 1 - then - error 'path_clean() needs 1 argument.'; - fi; - pc_arg="$1"; - eval set x "$(path_split "${pc_arg}")"; - exit_test; - shift; - pc_res=""; - for i - do - pc_i="$i"; - if obj pc_i is_not_empty \ - && obj pc_res path_not_contains "${pc_i}" \ - && obj pc_i is_dir - then - case "${pc_i}" in - ?*/) - pc_res="${pc_res}$(dirname_chop "${pc_i}")"; - exit_test; - ;; - *) - pc_res="${pc_res}:${pc_i}"; - exit_test; - ;; - esac; - fi; - done; - eval ${_UNSET} pc_arg; - eval ${_UNSET} pc_i; - eval ${_UNSET} pc_res; - if path_chop "${pc_res}" - then - eval "${return_ok}"; - else - eval "${return_bad}"; - fi; -} - - -######################################################################## -# path_contains ( ) -#- -# Test whether `dir' is contained in `path', a list separated by `:'. -# -# Arguments : 2 arguments. -# Return : `0' if arg2 is substring of arg1, `1' otherwise. -# -path_contains() -{ - func_check path_contains = 2 "$@"; - case ":$1:" in - *":$2:"*) - eval "${return_yes}"; - ;; - *) - eval "${return_no}"; - ;; - esac; - eval "${return_ok}"; -} - - -######################################################################## -# path_not_contains ( ) -# -# Test whether `dir' is not contained in colon separated `path'. -# -# Arguments : 2 arguments. -# -path_not_contains() -{ - func_check path_not_contains = 2 "$@"; - if path_contains "$1" "$2" - then - eval "${return_no}"; - else - eval "${return_yes}"; - fi; - eval "${return_ok}"; -} - - -######################################################################## -# path_split () -# -# In `path' escape white space and replace each colon by a space. -# -# Arguments: 1: a colon-separated path -# Output: the resulting list, process with `eval set' -# -path_split() -{ - func_check path_split = 1 "$@"; - list_from_split "$1" ':'; - eval "${return_ok}"; -} - - -######################################################################## -landmark '10: register_*()'; -######################################################################## - -######################################################################## -# register_file () -# -# Write a found file and register the title element. -# -# Arguments: 1: a file name -# Output: none -# -register_file() -{ - func_check register_file = 1 "$@"; - if is_empty "$1" - then - error 'register_file(): file name is empty'; - fi; - if is_equal "$1" '-' - then - to_tmp "${_TMP_STDIN}"; - register_title 'stdin'; - else - to_tmp "$1"; - register_title "$(base_name "$1")"; - exit_test; - fi; - eval "${return_ok}"; -} # register_file() - - -######################################################################## -# register_title () -# -# Create title element from and append to $_REGISTERED_TITLE -# -# Globals: $_REGISTERED_TITLE (rw) -# -# Variable prefix: rt -# -register_title() -{ - func_check register_title '=' 1 "$@"; - if is_empty "$1" - then - eval "${return_ok}"; - fi; - - case "${_REGISTERED_TITLE}" in - *\ *\ *\ *) - eval "${return_ok}"; - ;; - esac; - - # remove directory part - rt_title="$(base_name "$1")"; - # replace space characters by `_' - rt_title="$(echo1 "${rt_title}" | sed -e 's/[ ]/_/g')"; - # remove extension `.bz2' - rt_title="$(echo1 "${rt_title}" | sed -e 's/\.bz2$//')"; - # remove extension `.gz' - rt_title="$(echo1 "${rt_title}" | sed -e 's/\.gz$//')"; - # remove extension `.Z' - rt_title="$(echo1 "${rt_title}" | sed -e 's/\.Z$//')"; - exit_test; - - if obj rt_title is_empty - then - eval ${_UNSET} rt_title; - eval "${return_ok}"; - fi; - if obj _REGISTERED_TITLE is_empty - then - _REGISTERED_TITLE="${rt_title}"; - else - _REGISTERED_TITLE="${_REGISTERED_TITLE} ${rt_title}"; - fi; - eval ${_UNSET} rt_title; - eval "${return_ok}"; -} # register_title() - - -######################################################################## -# reset () -# -# Reset the variables that can be affected by options to their default. -# -# -# Defined in section `Preset' after the rudimentary shell tests. - - -######################################################################## -# rm_file () -# -# Remove file if $_DEBUG_KEEP_FILES allows it. -# -# Globals: $_DEBUG_KEEP_FILES -# -rm_file() -{ - func_check rm_file '=' 1 "$@"; - if is_file "$1" - then - rm -f "$1" >${_NULL_DEV} 2>&1; - fi; - if is_existing "$1" - then - eval "${return_bad}"; - else - eval "${return_good}"; - fi; -} - - -######################################################################## -# rm_file_with_debug () -# -# Remove file if $_DEBUG_KEEP_FILES allows it. -# -# Globals: $_DEBUG_KEEP_FILES -# -rm_file_with_debug() -{ - func_check rm_file_with_debug '=' 1 "$@"; - if obj _DEBUG_KEEP_FILES is_not_yes - then - if is_file "$1" - then - rm -f "$1" >${_NULL_DEV} 2>&1; - fi; - fi; - if is_existing "$1" - then - eval "${return_bad}"; - else - eval "${return_good}"; - fi; -} - - -######################################################################## -# rm_tree () -# -# Remove file if $_DEBUG_KEEP_FILES allows it. -# -# Globals: $_DEBUG_KEEP_FILES -# -rm_tree() -{ - func_check rm_tree '=' 1 "$@"; - if is_existing "$1" - then - rm -f -r "$1" >${_NULL_DEV} 2>&1; - fi; - if is_existing "$1" - then - eval "${return_bad}"; - else - eval "${return_good}"; - fi; -} - - -######################################################################## -# save_stdin () -# -# Store standard input to temporary file (with decompression). -# -# Variable prefix: ss -# -if obj _HAS_COMPRESSION is_yes -then - save_stdin() - { - func_check save_stdin '=' 0 "$@"; - ss_f="${_TMP_DIR}"/INPUT; - cat >"${ss_f}"; - cat_z "${ss_f}" >"${_TMP_STDIN}"; - rm_file "${ss_f}"; - eval ${_UNSET} ss_f; - eval "${return_ok}"; - } -else - save_stdin() - { - func_check save_stdin = 0 "$@"; - cat >"${_TMP_STDIN}"; - eval "${return_ok}"; - } -fi; - - -######################################################################## -# special_filespec () -# -# Handle special modes like whatis and apropos. -# -special_filespec() -{ - func_check special_setup '=' 0 "$@"; - if obj _OPT_APROPOS is_yes - then - if obj _OPT_WHATIS is_yes - then - error \ - 'special_setup: $_OPT_APROPOS and $_OPT_WHATIS are both "yes"'; - fi; - apropos_filespec; - eval "${return_ok}"; - fi; - if obj _OPT_WHATIS is_yes - then - whatis_filespec; - fi; - eval "${return_ok}"; -} - - -######################################################################## -# special_setup () -# -# Handle special modes like whatis and apropos. -# -special_setup() -{ - func_check special_setup '=' 0 "$@"; - if obj _OPT_APROPOS is_yes - then - if obj _OPT_WHATIS is_yes - then - error \ - 'special_setup: $_OPT_APROPOS and $_OPT_WHATIS are both "yes"'; - fi; - apropos_setup; - eval "${return_ok}"; - fi; - if obj _OPT_WHATIS is_yes - then - whatis_header; - fi; - eval "${return_ok}"; -} - - -######################################################################## -landmark '11: stack_*()'; -######################################################################## - -######################################################################## -# string_contains ( ) -# -# Test whether `part' is contained in `string'. -# -# Arguments : 2 text arguments. -# Return : `0' if arg2 is substring of arg1, `1' otherwise. -# -string_contains() -{ - func_check string_contains '=' 2 "$@"; - case "$1" in - *"$2"*) - eval "${return_yes}"; - ;; - *) - eval "${return_no}"; - ;; - esac; - eval "${return_ok}"; -} - - -######################################################################## -# string_not_contains ( ) -# -# Test whether `part' is not substring of `string'. -# -# Arguments : 2 text arguments. -# Return : `0' if arg2 is substring of arg1, `1' otherwise. -# -string_not_contains() -{ - func_check string_not_contains '=' 2 "$@"; - if string_contains "$1" "$2" - then - eval "${return_no}"; - else - eval "${return_yes}"; - fi; - eval "${return_ok}"; -} - - -######################################################################## -landmark '12: tmp_*()'; -######################################################################## - -######################################################################## -# tmp_cat () -# -# output the temporary cat file (the concatenation of all input) -# -tmp_cat() -{ - func_check tmp_cat '=' 0 "$@"; - cat "${_TMP_CAT}"; - eval "${return_var}" "$?"; -} - - -######################################################################## -# tmp_create (?) -# -# Create temporary file. -# -# It's safe to use the shell process ID together with a suffix to -# have multiple temporary files. -# -# Globals: $_TMP_DIR -# -# Output : name of created file -# -# Variable prefix: tc -# -tmp_create() -{ - func_check tmp_create '<=' 1 "$@"; - # the output file does not have `,' as first character, so these are - # different names from the output file. - tc_tmp="${_TMP_DIR}/,$1"; - : >"${tc_tmp}" - obj tc_tmp echo1; - eval ${_UNSET} tc_tmp; - eval "${return_ok}"; -} - - -######################################################################## -# to_tmp () -# -# print file (decompressed) to the temporary cat file -# -to_tmp() -{ - func_check to_tmp '=' 1 "$@"; - if obj _TMP_CAT is_empty - then - error 'to_tmp_line: $_TMP_CAT is not yet set'; - fi; - if is_file "$1" - then - if obj _OPT_LOCATION is_yes - then - echo2 "$1"; - fi; - if obj _OPT_WHATIS is_yes - then - whatis_filename "$1" >>"${_TMP_CAT}"; - else - cat_z "$1" >>"${_TMP_CAT}"; - fi; - else - error "to_tmp(): could not read file \`$1'."; - fi; - eval "${return_ok}"; -} - - -######################################################################## -# to_tmp_line ([]) -# -# print line to the temporary cat file -# -to_tmp_line() -{ - func_check to_tmp '>=' 0 "$@"; - if obj _TMP_CAT is_empty - then - error 'to_tmp_line: $_TMP_CAT is not yet set'; - fi; - echo1 "$*" >>"${_TMP_CAT}"; - eval "${return_ok}"; -} - - -######################################################################## -# trap_set -# -# call function on signal 0 -# -trap_set() -{ - func_check trap_set '=' 0 "$@"; - trap 'clean_up' 0 2>${_NULL_DEV} || :; - eval "${return_ok}"; -} - - -######################################################################## -# trap_unset () -# -# disable trap on signal 0. -# -trap_unset() -{ - func_check trap_unset '=' 0 "$@"; - trap '' 0 2>${_NULL_DEV} || :; - eval "${return_ok}"; -} - - -######################################################################## -# usage () -# -# print usage information to stderr; for groffer option --help. -# -usage() -{ - func_check usage = 0 "$@"; - echo; - version; - echo1 'Usage: groffer [option]... [filespec]...'; - cat <&1 | sed -e '/^ *$/q' | sed -e '1s/^/is part of /'; - eval "${return_ok}"; -} - - -######################################################################## -# warning () -# -# Print warning to stderr -# -warning() -{ - echo2 "warning: $*"; -} - - -######################################################################## -# whatis_filename () -# -# Interpret as a man page and display its `whatis' -# information as a fragment written in the groff language. -# -# Variable prefix: wf -# -whatis_filename() -{ - func_check whatis_filename = 1 "$@"; - wf_arg="$1"; - if obj wf_arg is_not_file - then - error "whatis_filename(): argument is not a readable file." - fi; - wf_dot='^\.'"${_SPACE_SED}"'*'; - if obj _FILESPEC_ARG is_equal '-' - then - wf_arg='stdin'; - fi; - cat <) -# -# Output path of a program if in $PATH. -# -# Arguments : >=1 (empty allowed) -# more args are ignored, this allows to specify progs with arguments -# Return : `0' if arg1 is a program in $PATH, `1' otherwise. -# -# Variable prefix: w -# -where_is() -{ - func_check where_is '>=' 1 "$@"; - w_arg="$1"; - if obj w_arg is_empty - then - eval ${_UNSET} w_arg; - eval "${return_bad}"; - fi; - case "${w_arg}" in - /*) - eval ${_UNSET} w_arg; - eval ${_UNSET} w_file; - if test -f "${w_arg}" && test -x "${w_arg}" - then - eval "${return_ok}"; - else - eval "${return_bad}"; - fi; - ;; - esac; - eval set x "$(path_split "${PATH}")"; - exit_test; - shift; - for p - do - case "$p" in - */) w_file=${p}${w_arg}; ;; - *) w_file=${p}/${w_arg}; ;; - esac; - if test -f "${w_file}" && test -x "${w_file}" - then - obj w_file echo1; - eval ${_UNSET} w_arg; - eval ${_UNSET} w_file; - eval "${return_ok}"; - fi; - done; - eval ${_UNSET} w_arg; - eval ${_UNSET} w_file; - eval "${return_bad}"; -} - - -######################################################################## -# main* Functions -######################################################################## - -# The main area contains the following parts: -# - main_init(): initialize temporary files and set exit trap -# - main_parse_MANOPT(): parse $MANOPT -# - main_parse_args(): argument parsing -# - main_set_mode (): determine the display mode -# - main_do_fileargs(): process filespec arguments -# - main_set_resources(): setup X resources -# - main_display(): do the displaying -# - main(): the main function that calls all main_*() - - -####################################################################### -# main_init () -# -# set exit trap and create temporary files -# -# Globals: $_TMP_DIR, $_TMP_CAT, $_TMP_STDIN -# -# Variable prefix: mi -# -main_init() -{ - func_check main_init = 0 "$@"; - # call clean_up() on shell termination. - trap_set; - - # create temporary directory - umask 0022; - _TMP_DIR=''; - for d in "${GROFF_TMPDIR}" "${TMPDIR}" "${TMP}" "${TEMP}" \ - "${TEMPDIR}" "${HOME}"'/tmp' '/tmp' "${HOME}" '.' - do - mi_dir="$d"; - if obj mi_dir is_empty || obj mi_dir is_not_dir || \ - obj mi_dir is_not_writable - then - continue; - fi; - - case "${mi_dir}" in - */) - _TMP_DIR="${mi_dir}"; - ;; - *) - _TMP_DIR="${mi_dir}"'/'; - ;; - esac; - _TMP_DIR="${_TMP_DIR}groffer${_PROCESS_ID}"; - if obj _TMP_DIR rm_tree - then - : - else - mi_tdir_="${_TMP_DIR}"_; - mi_n=1; - mi_tdir_n="${mi_tdir_}${mi_n}"; - while obj mi_tdir_n is_existing - do - if obj mi_tdir_n rm_tree - then - # directory could not be removed - mi_n="$(expr "${mi_n}" + 1)"; - mi_tdir_n="${mi_tdir_}${mi_n}"; - continue; - fi; - done; - _TMP_DIR="${mi_tdir_n}"; - fi; - eval mkdir "${_TMP_DIR}"; - if is_not_equal "$?" 0 - then - obj _TMP_DIR rm_tree; - _TMP_DIR=''; - continue; - fi; - if obj _TMP_DIR is_dir && obj _TMP_DIR is_writable - then - # $_TMP_DIR can now be used as temporary directory - break; - fi; - obj _TMP_DIR rm_tree; - _TMP_DIR=''; - continue; - done; - if obj _TMP_DIR is_empty - then - error "main_init: \ -Couldn't create a directory for storing temporary files."; - fi; - if obj _DEBUG_PRINT_TMPDIR is_yes - then - echo2 "temporary directory: ${_TMP_DIR}"; - fi; - - _TMP_CAT="$(tmp_create groffer_cat)"; - _TMP_STDIN="$(tmp_create groffer_input)"; - exit_test; - - eval ${_UNSET} mi_dir; - eval ${_UNSET} mi_n; - eval ${_UNSET} mi_tdir_; - eval ${_UNSET} mi_tdir_n; - eval "${return_ok}"; -} # main_init() - - -######################################################################## -# main_parse_MANOPT () -# -# Parse $MANOPT to retrieve man options, but only if it is a non-empty -# string; found man arguments can be overwritten by the command line. -# -# Globals: -# in: $MANOPT, $_OPTS_MANOPT_* -# out: $_MANOPT_* -# -# Variable prefix: mpm -# -main_parse_MANOPT() -{ - func_check main_parse_MANOPT = 0 "$@"; - - if obj MANOPT is_not_empty - then - # Delete leading and final spaces - MANOPT="$(echo1 "${MANOPT}" | sed -e ' -s/^'"${_SPACE_SED}"'*// -s/'"${_SPACE_SED}"'*$// -')"; - exit_test; - fi; - if obj MANOPT is_empty - then - eval "${return_ok}"; - fi; - - mpm_list=''; - # add arguments in $MANOPT by mapping them to groffer options - eval set x "$(list_from_cmdline _OPTS_MANOPT "${MANOPT}")"; - exit_test; - shift; - until test "$#" -le 0 || is_equal "$1" '--' - do - mpm_opt="$1"; - shift; - case "${mpm_opt}" in - -7|--ascii) - list_append mpm_list '--ascii'; - ;; - -a|--all) - list_append mpm_list '--all'; - ;; - -c|--catman) - do_nothing; - shift; - ;; - -d|--debug) - do_nothing; - ;; - -D|--default) - # undo all man options so far - mpm_list=''; - ;; - -e|--extension) - list_append mpm_list '--extension'; - shift; - ;; - -f|--whatis) - list_append mpm_list '--whatis'; - shift; - ;; - -h|--help) - do_nothing; - shift; - ;; - -k|--apropos) - # groffer's --apropos takes an argument, but man's does not, so - do_nothing; - ;; - -l|--local-file) - do_nothing; - ;; - -L|--locale) - list_append mpm_list '--locale' "$1"; - shift; - ;; - -m|--systems) - list_append mpm_list '--systems' "$1"; - shift; - ;; - -M|--manpath) - list_append mpm_list '--manpath' "$1"; - shift; - ;; - -p|--preprocessor) - do_nothing; - shift; - ;; - -P|--pager) - list_append mpm_list '--pager' "$1"; - shift; - ;; - -r|--prompt) - do_nothing; - shift; - ;; - -S|--sections) - list_append mpm_list '--sections' "$1"; - shift; - ;; - -t|--troff) - do_nothing; - shift; - ;; - -T|--device) - list_append mpm_list '-T' "$1"; - shift; - ;; - -u|--update) - do_nothing; - shift; - ;; - -V|--version) - do_nothing; - ;; - -w|--where|--location) - list_append mpm_list '--location'; - ;; - -Z|--ditroff) - do_nothing; - ;; - # ignore all other options - esac; - done; - - # prepend $mpm_list to the command line - if obj mpm_list is_not_empty - then - eval set x "${mpm_list}" '"$@"'; - shift; - fi; - - eval ${_UNSET} mpm_list; - eval ${_UNSET} mpm_opt; - eval "${return_ok}"; -} # main_parse_MANOPT() - - -######################################################################## -# main_parse_args (*) -# -# Parse arguments; process options and filespec parameters -# -# Arguments: pass the command line arguments unaltered. -# Globals: -# in: $_OPTS_* -# out: $_OPT_*, $_ADDOPTS, $_FILEARGS -# -# Variable prefix: mpa -# -main_parse_args() -{ - func_check main_parse_args '>=' 0 "$@"; - _ALL_PARAMS="$(list_from_cmdline _OPTS_CMDLINE "$@")"; - exit_test; - if obj _DEBUG_PRINT_PARAMS is_yes - then - echo2 "parameters: ${_ALL_PARAMS}"; - fi; - eval set x "${_ALL_PARAMS}"; - shift; - - # By the call of `eval', unnecessary quoting was removed. So the - # positional shell parameters ($1, $2, ...) are now guaranteed to - # represent an option or an argument to the previous option, if any; - # then a `--' argument for separating options and - # parameters; followed by the filespec parameters if any. - - # Note, the existence of arguments to options has already been checked. - # So a check for `$#' or `--' should not be done for arguments. - - until test "$#" -le 0 || is_equal "$1" '--' - do - mpa_opt="$1"; # $mpa_opt is fed into the option handler - shift; - case "${mpa_opt}" in - -h|--help) - usage; - leave; - ;; - -Q|--source) # output source code (`Quellcode'). - _OPT_MODE='source'; - ;; - -T|--device|--troff-device) # device; arg - _OPT_DEVICE="$1"; - _check_device_with_mode; - shift; - ;; - -v|--version) - version; - leave; - ;; - -V) - _OPT_V='yes'; - ;; - -Z|--ditroff|--intermediate-output) # groff intermediate output - _OPT_Z='yes'; - ;; - -X) - if is_X - then - _OPT_MODE=X; - fi; - ;; - -?) - # delete leading `-' - mpa_optchar="$(echo1 "${mpa_opt}" | sed -e 's/^-//')"; - exit_test; - if list_has _OPTS_GROFF_SHORT_NA "${mpa_optchar}" - then - list_append _ADDOPTS_GROFF "${mpa_opt}"; - elif list_has _OPTS_GROFF_SHORT_ARG "${mpa_optchar}" - then - list_append _ADDOPTS_GROFF "${mpa_opt}" "$1"; - shift; - else - error "main_parse_args(): Unknown option : \`$1'"; - fi; - ;; - --all) - _OPT_ALL='yes'; - ;; - --apropos) # run `apropos' - _OPT_APROPOS='yes'; - _APROPOS_SECTIONS=''; - _OPT_WHATIS='no'; - ;; - --apropos-data) # run `apropos' for data sections - _OPT_APROPOS='yes'; - _APROPOS_SECTIONS='457'; - _OPT_WHATIS='no'; - ;; - --apropos-devel) # run `apropos' for development sections - _OPT_APROPOS='yes'; - _APROPOS_SECTIONS='239'; - _OPT_WHATIS='no'; - ;; - --apropos-progs) # run `apropos' for program sections - _OPT_APROPOS='yes'; - _APROPOS_SECTIONS='168'; - _OPT_WHATIS='no'; - ;; - --ascii) - list_append _ADDOPTS_GROFF '-mtty-char'; - if obj _OPT_MODE is_empty - then - _OPT_MODE='text'; - fi; - ;; - --auto) # the default automatic mode - _OPT_MODE=''; - ;; - --bd) # border color for viewers, arg; - _OPT_BD="$1"; - shift; - ;; - --bg|--backgroud) # background color for viewers, arg; - _OPT_BG="$1"; - shift; - ;; - --bw) # border width for viewers, arg; - _OPT_BW="$1"; - shift; - ;; - --debug|--debug-all|--debug-keep|--debug-lm|--debug-params|\ ---debug-shell|--debug-stacks|--debug-tmpdir|--debug-user) - # debug is handled at the beginning - :; - ;; - --default) # reset variables to default - reset; - ;; - --default-modes) # sequence of modes in auto mode; arg - _OPT_DEFAULT_MODES="$1"; - shift; - ;; - --display) # set X display, arg - _OPT_DISPLAY="$1"; - shift; - ;; - --do-nothing) - _OPT_DO_NOTHING='yes'; - ;; - --dvi) - if is_X - then - _OPT_MODE='dvi'; - fi; - ;; - --dvi-viewer) # viewer program for dvi mode; arg - _VIEWER_TERMINAL='no'; - _OPT_VIEWER_DVI="$1"; - shift; - ;; - --dvi-viewer-tty) # viewer program for dvi mode in tty; arg - _VIEWER_TERMINAL='yes'; - _OPT_VIEWER_DVI="$1"; - shift; - ;; - --extension) # the extension for man pages, arg - _OPT_EXTENSION="$1"; - shift; - ;; - --fg|--foreground) # foreground color for viewers, arg; - _OPT_FG="$1"; - shift; - ;; - --fn|--font) # set font for viewers, arg; - _OPT_FN="$1"; - shift; - ;; - --geometry) # window geometry for viewers, arg; - _OPT_GEOMETRY="$1"; - shift; - ;; - --groff) - _OPT_MODE='groff'; - ;; - --html|--www) # display with web browser - _OPT_MODE=html; - ;; - --html-viewer|--www-viewer) # viewer program for html mode; arg - _VIEWER_TERMINAL='no'; - _OPT_VIEWER_HTML="$1"; - shift; - ;; - --html-viewer-tty|--www-viewer-tty) # viewer for html mode in tty; arg - _VIEWER_TERMINAL='yes'; - _OPT_VIEWER_HTML="$1"; - shift; - ;; - --iconic) # start viewers as icons - _OPT_ICONIC='yes'; - ;; - --locale) # set language for man pages, arg - # argument is xx[_territory[.codeset[@modifier]]] (ISO 639,...) - _OPT_LANG="$1"; - shift; - ;; - --local-file) # force local files; same as `--no-man' - _MAN_FORCE='no'; - _MAN_ENABLE='no'; - ;; - --location|--where) # print file locations to stderr - _OPT_LOCATION='yes'; - ;; - --man) # force all file params to be man pages - _MAN_ENABLE='yes'; - _MAN_FORCE='yes'; - ;; - --manpath) # specify search path for man pages, arg - # arg is colon-separated list of directories - _OPT_MANPATH="$1"; - shift; - ;; - --mode) # display mode - mpa_arg="$1"; - shift; - case "${mpa_arg}" in - auto|'') # search mode automatically among default - _OPT_MODE=''; - ;; - groff) # pass input to plain groff - _OPT_MODE='groff'; - ;; - html|www) # display with a web browser - _OPT_MODE='html'; - ;; - dvi) # display with xdvi viewer - if is_X - then - _OPT_MODE='dvi'; - fi; - ;; - pdf) # display with PDF viewer - if is_X - then - _OPT_MODE='pdf'; - fi; - ;; - ps) # display with Postscript viewer - if is_X - then - _OPT_MODE='ps'; - fi; - ;; - text) # output on terminal - _OPT_MODE='text'; - ;; - tty) # output on terminal - _OPT_MODE='tty'; - ;; - X|x) # output on X roff viewer - if is_X - then - _OPT_MODE='x'; - fi; - ;; - Q|source) # display source code - _OPT_MODE="source"; - ;; - *) - error "main_parse_args(): unknown mode ${mpa_arg}"; - ;; - esac; - ;; - --no-location) # disable former call to `--location' - _OPT_LOCATION='yes'; - ;; - --no-man) # disable search for man pages - # the same as --local-file - _MAN_FORCE='no'; - _MAN_ENABLE='no'; - ;; - --no-special) # disable some special former calls - _OPT_ALL='no' - _OPT_APROPOS='no' - _OPT_WHATIS='no' - ;; - --pager|--tty-viewer|--tty-viewer-tty) - # set paging program for tty mode, arg - _VIEWER_TERMINAL='yes'; - _OPT_PAGER="$1"; - shift; - ;; - --pdf) - if is_X - then - _OPT_MODE='pdf'; - fi; - ;; - --pdf-viewer) # viewer program for ps mode; arg - _VIEWER_TERMINAL='no'; - _OPT_VIEWER_PDF="$1"; - shift; - ;; - --pdf-viewer-tty) # viewer program for ps mode in tty; arg - _VIEWER_TERMINAL='yes'; - _OPT_VIEWER_PDF="$1"; - shift; - ;; - --print) # for argument test - echo2 "$1"; - shift; - ;; - --ps) - if is_X - then - _OPT_MODE='ps'; - fi; - ;; - --ps-viewer) # viewer program for ps mode; arg - _VIEWER_TERMINAL='no'; - _OPT_VIEWER_PS="$1"; - shift; - ;; - --ps-viewer-tty) # viewer program for ps mode in tty; arg - _VIEWER_TERMINAL='yes'; - _OPT_VIEWER_PS="$1"; - shift; - ;; - --resolution) # set resolution for X devices, arg - mpa_arg="$1"; - shift; - case "${mpa_arg}" in - 75|75dpi) - mpa_dpi=75; - ;; - 100|100dpi) - mpa_dpi=100; - ;; - *) - error "main_parse_args(): \ -only resoutions of 75 or 100 dpi are supported"; - ;; - esac; - _OPT_RESOLUTION="${mpa_dpi}"; - ;; - --rv) - _OPT_RV='yes'; - ;; - --sections) # specify sections for man pages, arg - # arg is colon-separated list of section names - _OPT_SECTIONS="$1"; - shift; - ;; - --shell) - # already done during the first run; so ignore the argument - shift; - ;; - --systems) # man pages for different OS's, arg - # argument is a comma-separated list - _OPT_SYSTEMS="$1"; - shift; - ;; - --text) # text mode without pager - _OPT_MODE=text; - ;; - --title) # title for X viewers; arg - _OPT_TITLE="$1"; - shift; - ;; - --tty) # tty mode, text with pager - _OPT_MODE=tty; - ;; - --text-device|--tty-device) # device for tty mode; arg - _OPT_TEXT_DEVICE="$1"; - shift; - ;; - --whatis) - _OPT_WHATIS='yes'; - _OPT_ALL='yes'; - _OPT_APROPOS='no'; - ;; - --X|--x) - if is_X - then - _OPT_MODE=x; - fi; - ;; - --xrm) # pass X resource string, arg; - list_append _OPT_XRM "$1"; - shift; - ;; - --x-viewer|--X-viewer) # viewer program for x mode; arg - _VIEWER_TERMINAL='no'; - _OPT_VIEWER_X="$1"; - shift; - ;; - --x-viewer-tty|--X-viewer-tty) # viewer program for x mode in tty; arg - _VIEWER_TERMINAL='yes'; - _OPT_VIEWER_X="$1"; - shift; - ;; - *) - error 'main_parse_args(): error on argument parsing : '"\`$*'"; - ;; - esac; - done; - shift; # remove `--' argument - - if obj _OPT_DO_NOTHING is_yes - then - leave; - fi; - - # Remaining arguments are file names (filespecs). - # Save them to list $_FILEARGS - if is_equal "$#" 0 - then # use "-" for standard input - set x '-'; - shift; - fi; - _FILEARGS=''; - list_append _FILEARGS "$@"; - if list_has _FILEARGS '-' - then - save_stdin; - fi; - # $_FILEARGS must be retrieved with `eval set x "$_FILEARGS"; shift;' - eval ${_UNSET} mpa_arg; - eval ${_UNSET} mpa_dpi; - eval ${_UNSET} mpa_opt; - eval ${_UNSET} mpa_optchar; - eval "${return_ok}"; -} # main_parse_args() - - -# Called from main_parse_args() because double `case' is not possible. -# Globals: $_OPT_DEVICE, $_OPT_MODE -_check_device_with_mode() -{ - func_check _check_device_with_mode = 0 "$@"; - case "${_OPT_DEVICE}" in - dvi) - _OPT_MODE=dvi; - eval "${return_ok}"; - ;; - html) - _OPT_MODE=html; - eval "${return_ok}"; - ;; - lbp|lj4) - _OPT_MODE=groff; - eval "${return_ok}"; - ;; - ps) - _OPT_MODE=ps; - eval "${return_ok}"; - ;; - ascii|cp1047|latin1|utf8) - if obj _OPT_MODE is_not_equal text - then - _OPT_MODE=tty; # default text mode - fi; - eval "${return_ok}"; - ;; - X*) - _OPT_MODE=x; - eval "${return_ok}"; - ;; - *) # unknown device, go to groff mode - _OPT_MODE=groff; - eval "${return_ok}"; - ;; - esac; - eval "${return_error}"; -} # _check_device_with_mode() of main_parse_args() - - -######################################################################## -# main_set_mode () -# -# Determine the display mode. -# -# Globals: -# in: $DISPLAY, $_OPT_MODE, $_OPT_DEVICE -# out: $_DISPLAY_MODE -# -# Variable prefix: msm -# -main_set_mode() -{ - func_check main_set_mode = 0 "$@"; - - # set display - if obj _OPT_DISPLAY is_not_empty - then - DISPLAY="${_OPT_DISPLAY}"; - fi; - - if obj _OPT_V is_yes - then - list_append _ADDOPTS_GROFF '-V'; - fi; - if obj _OPT_Z is_yes - then - _DISPLAY_MODE='groff'; - list_append _ADDOPTS_GROFF '-Z'; - fi; - if obj _OPT_MODE is_equal 'groff' - then - _DISPLAY_MODE='groff'; - fi; - if obj _DISPLAY_MODE is_equal 'groff' - then - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - fi; - - if obj _OPT_MODE is_equal 'source' - then - _DISPLAY_MODE='source'; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - fi; - - case "${_OPT_MODE}" in - '') # automatic mode - case "${_OPT_DEVICE}" in - X*) - if is_not_X - then - error_user "no X display found for device ${_OPT_DEVICE}"; - fi; - _DISPLAY_MODE='x'; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - ascii|cp1047|latin1|utf8) - if obj _DISPLAY_MODE is_not_equal 'text' - then - _DISPLAY_MODE='tty'; - fi; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - esac; - if is_not_X - then - _DISPLAY_MODE='tty'; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - fi; - - if obj _OPT_DEFAULT_MODES is_empty - then - msm_modes="${_DEFAULT_MODES}"; - else - msm_modes="${_OPT_DEFAULT_MODES}"; - fi; - ;; - text) - _DISPLAY_MODE='text'; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - tty) - _DISPLAY_MODE='tty'; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - html) - _DISPLAY_MODE='html'; - msm_modes="${_OPT_MODE}"; - ;; - *) # display mode was given - if is_not_X - then - error_user "You must be in X Window for ${_OPT_MODE} mode."; - fi; - msm_modes="${_OPT_MODE}"; - ;; - esac; - - # only viewer modes are left - eval set x "$(list_from_split "${msm_modes}" ',')"; - exit_test; - shift; - while test "$#" -gt 0 - do - m="$1"; - shift; - case "$m" in - dvi) - if obj _OPT_VIEWER_DVI is_not_empty - then - msm_viewer="${_OPT_VIEWER_DVI}"; - else - msm_viewer="$(_get_first_prog "$_VIEWER_DVI}")"; - exit_test; - fi; - if obj msm_viewer is_empty - then - error 'No viewer for dvi mode available.'; - fi; - if is_not_equal "$?" 0 - then - continue; - fi; - _DISPLAY_PROG="${msm_viewer}"; - _DISPLAY_MODE="dvi"; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - html) - if obj _OPT_VIEWER_HTML is_not_empty - then - msm_viewer="${_OPT_VIEWER_HTML}"; - else - if is_X - then - msm_viewers="${_VIEWER_HTML_X}"; - else - msm_viewers="${_VIEWER_HTML_TTY}"; - fi; - msm_viewer="$(_get_first_prog "${msm_viewers}")"; - exit_test; - fi; - if obj msm_viewer is_empty - then - error 'No viewer for html mode available.'; - fi; - if is_not_equal "$?" 0 - then - continue; - fi; - _DISPLAY_PROG="${msm_viewer}"; - _DISPLAY_MODE=html; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - pdf) - if obj _OPT_VIEWER_PDF is_not_empty - then - msm_viewer="${_OPT_VIEWER_PDF}"; - else - msm_viewer="$(_get_first_prog "${_VIEWER_PDF}")"; - exit_test; - fi; - if obj msm_viewer is_empty - then - error 'No viewer for pdf mode available.'; - fi; - if is_not_equal "$?" 0 - then - continue; - fi; - _DISPLAY_PROG="${msm_viewer}"; - _DISPLAY_MODE="pdf"; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - ps) - if obj _OPT_VIEWER_PS is_not_empty - then - msm_viewer="${_OPT_VIEWER_PS}"; - else - msm_viewer="$(_get_first_prog "${_VIEWER_PS}")"; - exit_test; - fi; - if obj msm_viewer is_empty - then - error 'No viewer for ps mode available.'; - fi; - if is_not_equal "$?" 0 - then - continue; - fi; - _DISPLAY_PROG="${msm_viewer}"; - _DISPLAY_MODE="ps"; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - text) - _DISPLAY_MODE='text'; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - tty) - _DISPLAY_MODE='tty'; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - x) - if obj _OPT_VIEWER_X is_not_empty - then - msm_viewer="${_OPT_VIEWER_X}"; - else - msm_viewer="$(_get_first_prog "${_VIEWER_X}")"; - exit_test; - fi; - if obj msm_viewer is_empty - then - error 'No viewer for x mode available.'; - fi; - if is_not_equal "$?" 0 - then - continue; - fi; - _DISPLAY_PROG="${msm_viewer}"; - _DISPLAY_MODE='x'; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - X) - _DISPLAY_MODE='X'; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - eval "${return_ok}"; - ;; - esac; - done; - eval ${_UNSET} msm_modes; - eval ${_UNSET} msm_viewer; - eval ${_UNSET} msm_viewers; - error_user "No suitable display mode found."; -} # main_set_mode() - - -# _get_first_prog () -# -# Retrieve first argument that represents an existing program in $PATH. -# Local function for main_set_mode(). -# -# Arguments: 1; a comma-separated list of commands (with options), -# like $_VIEWER_*. -# -# Return : `1' if none found, `0' if found. -# Output : the argument that succeded. -# -# Variable prefix: _gfp -# -_get_first_prog() -{ - if is_equal "$#" 0 - then - error "_get_first_prog() needs 1 argument."; - fi; - if is_empty "$1" - then - return "${_BAD}"; - fi; - eval set x "$(list_from_split "$1" ',')"; - exit_test; - shift; - for i - do - _gfp_i="$i"; - if obj _gfp_i is_empty - then - continue; - fi; - if eval is_prog "$(get_first_essential ${_gfp_i})" - then - exit_test; - obj _gfp_i echo1; - eval ${_UNSET} _gfp_i; - return "${_GOOD}"; - fi; - done; - eval ${_UNSET} _gfp_i; - return "${_BAD}"; -} # _get_first_prog() of main_set_mode() - - -####################################################################### -# main_do_fileargs () -# -# Process filespec arguments in $_FILEARGS. -# -# Globals: -# in: $_FILEARGS (process with `eval set x "$_FILEARGS"; shift;') -# -# Variable prefix: mdfa -# -main_do_fileargs() -{ - func_check main_do_fileargs = 0 "$@"; - special_setup; - eval set x "${_FILEARGS}"; - shift; - eval ${_UNSET} _FILEARGS; - # temporary storage of all input to $_TMP_CAT - while test "$#" -ge 2 - do - # test for `s name' arguments, with `s' a 1-char standard section - mdfa_filespec="$1"; - _FILESPEC_ARG="$1"; - shift; - case "${mdfa_filespec}" in - '') - continue; - ;; - '-') - special_filespec; - if obj _OPT_APROPOS is_yes - then - continue; - fi; - register_file '-' - continue; - ;; - ?) - if obj _OPT_APROPOS is_yes - then - special_filespec; - continue; - fi; - if list_has_not _MAN_AUTO_SEC_LIST "${mdfa_filespec}" - then - special_filespec; - do_filearg "${mdfa_filespec}" - continue; - fi; - mdfa_name="$1"; - _FILESPEC_ARG="${_FILESPEC_ARG} $1"; - special_filespec; - case "${mdfa_name}" in - */*|man:*|*\(*\)|*."${mdfa_filespec}") - do_filearg "${mdfa_filespec}" - continue; - ;; - esac; - shift; - if do_filearg "man:${mdfa_name}(${mdfa_filespec})" - then - continue; - else - do_filearg "${mdfa_filespec}" - continue; - fi; - ;; - *) - special_filespec; - if obj _OPT_APROPOS is_yes - then - continue; - fi; - do_filearg "${mdfa_filespec}" - continue; - ;; - esac; - done; # end of `s name' test - while test "$#" -gt 0 - do - mdfa_filespec="$1"; - _FILESPEC_ARG="$1"; - shift; - special_filespec; - if obj _OPT_APROPOS is_yes - then - continue; - fi; - do_filearg "${mdfa_filespec}" - done; - obj _TMP_STDIN rm_file_with_debug; - eval ${_UNSET} mdfa_filespec; - eval ${_UNSET} mdfa_name; - eval "${return_ok}"; -} # main_do_fileargs() - - -######################################################################## -# main_set_resources () -# -# Determine options for setting X resources with $_DISPLAY_PROG. -# -# Globals: $_DISPLAY_PROG, $_OUTPUT_FILE_NAME -# -# Variable prefix: msr -# -main_set_resources() -{ - func_check main_set_resources = 0 "$@"; - # $msr_prog viewer program - # $msr_rl resource list - msr_title="$(get_first_essential \ - "${_OPT_TITLE}" "${_REGISTERED_TITLE}")"; - exit_test; - _OUTPUT_FILE_NAME=''; - eval set x "${msr_title}"; - shift; - until is_equal "$#" 0 - do - msr_n="$1"; - case "${msr_n}" in - '') - continue; - ;; - ,*) - msr_n="$(echo1 "$1" | sed -e 's/^,,*//')"; - exit_test; - ;; - esac - if obj msr_n is_empty - then - continue; - fi; - if obj _OUTPUT_FILE_NAME is_not_empty - then - _OUTPUT_FILE_NAME="${_OUTPUT_FILE_NAME}"','; - fi; - _OUTPUT_FILE_NAME="${_OUTPUT_FILE_NAME}${msr_n}"; - shift; - done; - case "${_OUTPUT_FILE_NAME}" in - '') - _OUTPUT_FILE_NAME='-'; - ;; - ,*) - error "main_set_resources(): ${_OUTPUT_FILE_NAME} starts with a comma."; - ;; - esac; - _OUTPUT_FILE_NAME="${_TMP_DIR}/${_OUTPUT_FILE_NAME}"; - - if obj _DISPLAY_PROG is_empty - then # for example, for groff mode - _DISPLAY_ARGS=''; - eval ${_UNSET} msr_n; - eval ${_UNSET} msr_prog; - eval ${_UNSET} msr_rl; - eval ${_UNSET} msr_title; - eval "${return_ok}"; - fi; - - eval set x "${_DISPLAY_PROG}"; - shift; - msr_prog="$(base_name "$1")"; - exit_test; - shift; - if test $# != 0 - then - if obj _DISPLAY_PROG is_empty - then - _DISPLAY_ARGS="$*"; - else - _DISPLAY_ARGS="$* ${_DISPLAY_ARGS}"; - fi; - fi; - msr_rl=''; - if obj _OPT_BD is_not_empty - then - case "${msr_prog}" in - ghostview|gv|gxditview|xditview|xdvi) - list_append msr_rl '-bd' "${_OPT_BD}"; - ;; - esac; - fi; - if obj _OPT_BG is_not_empty - then - case "${msr_prog}" in - ghostview|gv|gxditview|xditview|xdvi) - list_append msr_rl '-bg' "${_OPT_BG}"; - ;; - kghostview) - list_append msr_rl '--bg' "${_OPT_BG}"; - ;; - xpdf) - list_append msr_rl '-papercolor' "${_OPT_BG}"; - ;; - esac; - fi; - if obj _OPT_BW is_not_empty - then - case "${msr_prog}" in - ghostview|gv|gxditview|xditview|xdvi) - _list_append msr_rl '-bw' "${_OPT_BW}"; - ;; - esac; - fi; - if obj _OPT_FG is_not_empty - then - case "${msr_prog}" in - ghostview|gv|gxditview|xditview|xdvi) - list_append msr_rl '-fg' "${_OPT_FG}"; - ;; - kghostview) - list_append msr_rl '--fg' "${_OPT_FG}"; - ;; - esac; - fi; - if is_not_empty "${_OPT_FN}" - then - case "${msr_prog}" in - ghostview|gv|gxditview|xditview|xdvi) - list_append msr_rl '-fn' "${_OPT_FN}"; - ;; - kghostview) - list_append msr_rl '--fn' "${_OPT_FN}"; - ;; - esac; - fi; - if is_not_empty "${_OPT_GEOMETRY}" - then - case "${msr_prog}" in - ghostview|gv|gxditview|xditview|xdvi|xpdf) - list_append msr_rl '-geometry' "${_OPT_GEOMETRY}"; - ;; - kghostview) - list_append msr_rl '--geometry' "${_OPT_GEOMETRY}"; - ;; - esac; - fi; - if is_empty "${_OPT_RESOLUTION}" - then - _OPT_RESOLUTION="${_DEFAULT_RESOLUTION}"; - case "${msr_prog}" in - gxditview|xditview) - list_append msr_rl '-resolution' "${_DEFAULT_RESOLUTION}"; - ;; - xpdf) - case "${_DEFAULT_RESOLUTION}" in - 75) - # 72dpi is '100' - list_append msr_rl '-z' '104'; - ;; - 100) - list_append msr_rl '-z' '139'; - ;; - esac; - ;; - esac; - else - case "${msr_prog}" in - ghostview|gv|gxditview|xditview|xdvi) - list_append msr_rl '-resolution' "${_OPT_RESOLUTION}"; - ;; - xpdf) - case "${_OPT_RESOLUTION}" in - 75) - list_append msr_rl '-z' '104'; - # '100' corresponds to 72dpi - ;; - 100) - list_append msr_rl '-z' '139'; - ;; - esac; - ;; - esac; - fi; - if is_yes "${_OPT_ICONIC}" - then - case "${msr_prog}" in - ghostview|gv|gxditview|xditview|xdvi) - list_append msr_rl '-iconic'; - ;; - esac; - fi; - if is_yes "${_OPT_RV}" - then - case "${msr_prog}" in - ghostview|gv|gxditview|xditview|xdvi) - list_append msr_rl '-rv'; - ;; - esac; - fi; - if is_not_empty "${_OPT_XRM}" - then - case "${msr_prog}" in - ghostview|gv|gxditview|xditview|xdvi|xpdf) - eval set x "${_OPT_XRM}"; - shift; - for i - do - list_append msr_rl '-xrm' "$i"; - done; - ;; - esac; - fi; - if is_not_empty "${msr_title}" - then - case "${msr_prog}" in - gxditview|xditview) - list_append msr_rl '-title' "${msr_title}"; - ;; - esac; - fi; - _DISPLAY_ARGS="${msr_rl}"; - eval ${_UNSET} msr_n; - eval ${_UNSET} msr_prog; - eval ${_UNSET} msr_rl; - eval ${_UNSET} msr_title; - eval "${return_ok}"; -} # main_set_resources - - -######################################################################## -# main_display () -# -# Do the actual display of the whole thing. -# -# Globals: -# in: $_DISPLAY_MODE, $_OPT_DEVICE, -# $_ADDOPTS_GROFF, $_ADDOPTS_POST, $_ADDOPTS_X, -# $_TMP_CAT, $_OPT_PAGER, $PAGER, $_MANOPT_PAGER, -# $_OUTPUT_FILE_NAME -# -# Variable prefix: md -# -main_display() -{ - func_check main_display = 0 "$@"; - - export md_addopts; - export md_groggy; - export md_modefile; - - if obj _TMP_CAT is_non_empty_file - then - md_modefile="${_OUTPUT_FILE_NAME}"; - else - echo2 'groffer: empty input.'; - clean_up; - eval ${_UNSET} md_modefile; - eval "${return_ok}"; - fi; - - # go to the temporary directory to be able to access internal data files - cd "${_TMP_DIR}" >"${_NULL_DEV}" 2>&1; - - case "${_DISPLAY_MODE}" in - groff) - _ADDOPTS_GROFF="${_ADDOPTS_GROFF} ${_ADDOPTS_POST}"; - if obj _OPT_DEVICE is_not_empty - then - _ADDOPTS_GROFF="${_ADDOPTS_GROFF} -T${_OPT_DEVICE}"; - fi; - md_groggy="$(tmp_cat | eval grog "${md_options}")"; - exit_test; - _do_opt_V; - - obj md_modefile rm_file; - mv "${_TMP_CAT}" "${md_modefile}"; - trap_unset; - cat "${md_modefile}" | \ - { - trap_set; - eval "${md_groggy}" "${_ADDOPTS_GROFF}"; - } & - ;; - text|tty) - case "${_OPT_DEVICE}" in - '') - md_device="$(get_first_essential \ - "${_OPT_TEXT_DEVICE}" "${_DEFAULT_TTY_DEVICE}")"; - exit_test; - ;; - ascii|cp1047|latin1|utf8) - md_device="${_OPT_DEVICE}"; - ;; - *) - warning "main_display(): \ -wrong device for ${_DISPLAY_MODE} mode: ${_OPT_DEVICE}"; - ;; - esac; - md_addopts="${_ADDOPTS_GROFF} ${_ADDOPTS_POST}"; - md_groggy="$(tmp_cat | grog -T${md_device})"; - exit_test; - if obj _DISPLAY_MODE is_equal 'text' - then - _do_opt_V; - tmp_cat | eval "${md_groggy}" "${md_addopts}"; - else - md_pager=''; - for p in "${_OPT_PAGER}" "${PAGER}" "${_MANOPT_PAGER}" \ - 'less -r -R' 'more' 'pager' 'cat' - do - md_p="$p"; - if eval is_prog ${md_p} - then # no "" for is_prog() allows args for $p - md_pager="${md_p}"; - break; - fi; - done; - if obj md_pager is_empty - then - error 'main_display(): no pager program found for tty mode'; - fi; - _do_opt_V; - tmp_cat | eval "${md_groggy}" "${md_addopts}" | \ - eval "${md_pager}"; - fi; - clean_up; - ;; - source) - tmp_cat; - clean_up; - ;; - - #### viewer modes - - dvi) - case "${_OPT_DEVICE}" in - ''|dvi) do_nothing; ;; - *) - warning "main_display(): \ -wrong device for ${_DISPLAY_MODE} mode: ${_OPT_DEVICE}" - ;; - esac; - md_modefile="${md_modefile}".dvi; - md_groggy="$(tmp_cat | grog -Tdvi)"; - exit_test; - _do_display; - ;; - html) - case "${_OPT_DEVICE}" in - ''|html) do_nothing; ;; - *) - warning "main_display(): \ -wrong device for ${_DISPLAY_MODE} mode: ${_OPT_DEVICE}"; - ;; - esac; - md_modefile="${md_modefile}".html; - md_groggy="$(tmp_cat | grog -Thtml)"; - exit_test; - _do_display; - ;; - pdf) - case "${_OPT_DEVICE}" in - ''|ps) - do_nothing; - ;; - *) - warning "main_display(): \ -wrong device for ${_DISPLAY_MODE} mode: ${_OPT_DEVICE}"; - ;; - esac; - md_groggy="$(tmp_cat | grog -Tps)"; - exit_test; - _do_display _make_pdf; - ;; - ps) - case "${_OPT_DEVICE}" in - ''|ps) - do_nothing; - ;; - *) - warning "main_display(): \ -wrong device for ${_DISPLAY_MODE} mode: ${_OPT_DEVICE}"; - ;; - esac; - md_modefile="${md_modefile}".ps; - md_groggy="$(tmp_cat | grog -Tps)"; - exit_test; - _do_display; - ;; - x) - case "${_OPT_DEVICE}" in - X*) - md_device="${_OPT_DEVICE}" - ;; - *) - case "${_OPT_RESOLUTION}" in - 100) - md_device='X100'; - if obj _OPT_GEOMETRY is_empty - then - case "${_DISPLAY_PROG}" in - gxditview|xditview) - # add width of 800dpi for resolution of 100dpi to the args - list_append _DISPLAY_ARGS '-geometry' '800'; - ;; - esac; - fi; - ;; - *) - md_device='X75-12'; - ;; - esac - esac; - md_groggy="$(tmp_cat | grog -T${md_device} -Z)"; - exit_test; - _do_display; - ;; - X) - case "${_OPT_DEVICE}" in - '') - md_groggy="$(tmp_cat | grog -X)"; - exit_test; - ;; - X*|dvi|html|lbp|lj4|ps) - # these devices work with - md_groggy="$(tmp_cat | grog -T"${_OPT_DEVICE}" -X)"; - exit_test; - ;; - *) - warning "main_display(): \ -wrong device for ${_DISPLAY_MODE} mode: ${_OPT_DEVICE}"; - md_groggy="$(tmp_cat | grog -Z)"; - exit_test; - ;; - esac; - _do_display; - ;; - *) - error "main_display(): unknown mode \`${_DISPLAY_MODE}'"; - ;; - esac; - eval ${_UNSET} md_addopts; - eval ${_UNSET} md_device; - eval ${_UNSET} md_groggy; - eval ${_UNSET} md_modefile; - eval ${_UNSET} md_options; - eval ${_UNSET} md_p; - eval ${_UNSET} md_pager; - eval "${return_ok}"; -} # main_display() - - -######################## -# _do_display ([]) -# -# Perform the generation of the output and view the result. If an -# argument is given interpret it as a function name that is called in -# the midst (actually only for `pdf'). -# -# Globals: $md_modefile, $md_groggy (from main_display()) -# -_do_display() -{ - func_check _do_display '>=' 0 "$@"; - _do_opt_V; - if obj _DISPLAY_PROG is_empty - then - trap_unset; - { - trap_set; - eval "${md_groggy}" "${_ADDOPTS_GROFF}" "${_TMP_CAT}"; - } & - else - obj md_modefile rm_file; - cat "${_TMP_CAT}" | \ - eval "${md_groggy}" "${_ADDOPTS_GROFF}" > "${md_modefile}"; - if is_not_empty "$1" - then - eval "$1"; - fi; - obj _TMP_CAT rm_file_with_debug; - if obj _VIEWER_TERMINAL is_yes # for programs that run on tty - then - eval "${_DISPLAY_PROG}" ${_DISPLAY_ARGS} "\"${md_modefile}\""; - else - case "${_DISPLAY_PROG}" in -# lynx\ *|less\ *|more\ *) # programs known to run on the terminal -# eval "${_DISPLAY_PROG}" ${_DISPLAY_ARGS} "\"${md_modefile}\""; -# ;; - *) - trap_unset; - { - trap_set; - eval "${_DISPLAY_PROG}" ${_DISPLAY_ARGS} "\"${md_modefile}\""; - } & - ;; - esac; - fi; - fi; - eval "${return_ok}"; -} # _do_display() of main_display() - - -############# -# _do_opt_V () -# -# Check on option `-V'; if set print the corresponding output and leave. -# -# Globals: $_ALL_PARAMS, $_ADDOPTS_GROFF, $_DISPLAY_MODE, $_DISPLAY_PROG, -# $_DISPLAY_ARGS, $md_groggy, $md_modefile -# -# Variable prefix: _doV -# -_do_opt_V() -{ - func_check _do_opt_V '=' 0 "$@"; - if obj _OPT_V is_yes - then - _OPT_V='no'; - echo1 "Parameters: ${_ALL_PARAMS}"; - echo1 "Display mode: ${_DISPLAY_MODE}"; - echo1 "Output file: ${md_modefile}"; - echo1 "Display prog: ${_DISPLAY_PROG} ${_DISPLAY_ARGS}"; - a="$(eval echo1 "'${_ADDOPTS_GROFF}'")"; - exit_test; - echo1 "Output of grog: ${md_groggy} $a"; - _doV_res="$(eval "${md_groggy}" "${_ADDOPTS_GROFF}")"; - exit_test; - echo1 "groff -V: ${_doV_res}" - leave; - fi; - eval "${return_ok}"; -} # _do_opt_V() of main_display() - - -############## -# _make_pdf () -# -# Transform to pdf format; for pdf mode in _do_display(). -# -# Globals: $md_modefile (from main_display()) -# -# Variable prefix: _mp -# -_make_pdf() -{ - func_check _do_display '=' 0 "$@"; - _mp_psfile="${md_modefile}"; - md_modefile="${md_modefile}.pdf"; - obj md_modefile rm_file; - if gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \ - -sOutputFile="${md_modefile}" -c save pop -f "${_mp_psfile}" - then - :; - else - error '_make_pdf: could not transform into pdf format.'; - fi; - obj _mp_psfile rm_file_with_debug; - eval ${_UNSET} _mp_psfile; - eval "${return_ok}"; -} # _make_pdf() of main_display() - - -######################################################################## -# main (*) -# -# The main function for groffer. -# -# Arguments: -# -main() -{ - func_check main '>=' 0 "$@"; - # Do not change the sequence of the following functions! - landmark '13: main_init()'; - main_init; - landmark '14: main_parse_MANOPT()'; - main_parse_MANOPT; - landmark '15: main_parse_args()'; - main_parse_args "$@"; - landmark '16: main_set_mode()'; - main_set_mode; - landmark '17: main_do_fileargs()'; - main_do_fileargs; - landmark '18: main_set_resources()'; - main_set_resources; - landmark '19: main_display()'; - main_display; - eval "${return_ok}"; -} - - -######################################################################## - -main "$@"; diff --git a/contrib/groff/contrib/mm/ChangeLog b/contrib/groff/contrib/mm/ChangeLog deleted file mode 100644 index c1f8985693c1..000000000000 --- a/contrib/groff/contrib/mm/ChangeLog +++ /dev/null @@ -1,679 +0,0 @@ -Thu May 26 08:23:40 2005 Werner LEMBERG - - * m.tmac: Load devtag.tmac. - -Wed Mar 16 06:56:02 2005 Larry Kollar - - Add rudimentary support for grohtml. - - * m.tmac (H): Call DEVTAG-NH and DEVTAG-EO-H. - (pg@enable-trap, pg@header): Do nothing for devhtml. - -Sun Mar 7 16:34:46 2004 Jeff Conrad - - * m.tmac (S): Improve debug message. - -Wed Mar 05:38:57 2004 Joergen Haegg - - * Changed default value for Hy in manual to 0 - * Check Hy at each new page - -Mon Mar 1 22:16:38 2004 Jeff Conrad - - * m.tmac (S): Fix scaling indicator for vertical spacing. - -Tue Nov 05:14:45 2003 Joergen Haegg - - * another patch from ulrich lauther to fix the - TOC up to 14 heading levels. - -Mon Oct 13:48:25 2003 Joergen Haegg - - * problem with more than 7 levels of headings fixed with - patch from ulrich lauther. - -Wed Apr 06:42:35 2003 Joergen Haegg - - * the footer was not adjusted by VM due to a missing - pg*extra-footer-size in the calculation of pg*last-pos - -Wed Apr 06:04:58 2003 Joergen Haegg - - * space adjustments in 4.MT to make it more like - the original - -Sun Mar 21:45:10 2003 Joergen Haegg - - * removed error check i 4.MT, .AF is not mandatory anymore - -Sat Mar 21:56:57 2003 Joergen Haegg - - * cov*firm now defined only if arg to AF is non-empty - That will also enable cov*default-firm from the mm locale-file - to work. - -Sat Mar 21:05:29 2003 Joergen Haegg - - * added .ll in pg@set-env to initialize the - header environment properly - -Wed Mar 19 23:02:16 2003 Werner LEMBERG - - * groff_mm.man: Some fixes from Robert D. Goulding - . - -Wed Sep 09:53:06 2002 Joergen Haegg - - * added implicit -mm to mmroff, it's now possible - to use mmroff with or without -mm as argument. - -Thu Aug 08 00:31:00 Bob Diertens - - * m.tmac (VM): Add missing backslash. - -Fri Jun 10:37:58 2002 Joergen Haegg - - * added init@reset for LT-macros so .S works for letters - -Thu May 06:30:06 2002 Joergen Haegg - - * adding -T to VM for setting the total - header and footer size. - * changing pg*extra-header-size unit from v to u in DS-size - calculation - -Mon May 05:40:16 2002 Joergen Haegg - - * All lists now get an empty line before the list - even if there is no empty lines between the items (bug in LB) - -Sat May 07:36:08 2002 Joergen Haegg - - * PIC is now drawn 1v higher, making it - possible to put a picture at 0,0. - * Indentbug in P fixed, Pt=2 now behaves as it should - -Wed May 10:18:26 2002 Joergen Haegg - - * added L, W and O in groff_mm.man - * extra space in expression removed in EPIC - * EPIC can leftadjust with -L - * EPIC was drawing 1v down - * forgot to add mmse.tmac and mm.tmac to cvs - -Fri May 20:35:32 2002 Joergen Haegg - - * Clarified manual about INITR - * Added mm.tmac and mmse.tmac wrappers - * Fixed bug in mmroff so a .qrf-file always will be created - * .EQ mark was not correctly positioned anymore. - * changed SP to sp in DS/DE to further correct .EQ - -Sun Dec 9 00:00:00 2001 Werner LEMBERG (wl@gnu.org) - - * Makefile.sim, groff_mm.man, groff_mmse.man: Minor fixes. - * mmroff.man: This is a section 1 man page. - Minor fixes. - * Makefile.sub: Install mmroff.man in section 1. - -Wed Nov 28 00:00:00 2001 Werner LEMBERG (wl@gnu.org) - - * m.tmac: Assure that the macro package is loaded only once. - -Wed Sep 5 00:00:00 2001 Werner LEMBERG (wl@gnu.org) - - * m.tmac: Enable all warnings only if no -W or -w option is given on - the command line (or rather, if only the default warnings are - set). - -Mon Sep 3 00:00:00 2001 Werner LEMBERG (wl@gnu.org) - - * groff_mm.man: Don't use .ne for TTY devices. - -Thu Jul 26 00:00:00 2001 Werner LEMBERG (wl@gnu.org) - - * groff_mm.man: Start always a new line after end of sentence. Add - some compatibility info to the HF variable. - -Thu Jul 26 00:00:00 2001 Larry Jones (larry.jones@sdrc.com) - - * m.tmac: Fix initialization of Hps1 and Hps2. - -Wed May 16 00:00:00 2001 Bruce Lilly (blilly@erols.com) - - * m.tmac (TH): Fix incorrect error message. - -Thu Apr 12 00:00:00 2001 Ruslan Ermilov (ru@FreeBSD.org) - - * groff_mm.man: Fixing some typos. - -Mon Mar 5 09:30:18 2001 Jörgen Hägg (jh@axis.com) - - * S didn't reset to default point size - * (dummy line to force cvs update...) - -Sat Jan 06 10:30:00 2001 Werner LEMBERG (wl@gnu.org) - - * Fixed assignment of page offset given as a command line argument. - -Fri Nov 17 05:34:17 2000 Jörgen Hägg (jh@axis.com) - - * Renamed tmac.m and tmac.mse to m.tmac and mse.tmac - -Thu Sep 14 05:52:48 2000 Jörgen Hägg (jh@axis.com) - - * New Changelog-format, it will show changes better. - Easier for other to use. (Somehow I didn't really - understand why the e-mail address was supposed to be - 'jh at axis.com' in the Changelog. :-) - -Mon Aug 28 00:00:00 2000 Bruno Haible (haible at clisp.cons.org) - - * Makefile.sub: New target 'all', makes all prerequisites of - 'install'. - -Thu Sep 7 06:17:42 2000 Jörgen Hägg (jh at axis.com) - - * version 2.0 - * Had to do something about my version numbering. - The main CVS archive was not in sync with mine. - So, now it is 2.0. :-) - -Sat Jun 17 23:00:00 2000 Eli Zaretskii (eliz@is.elta.co.il) - - * Makefile.sim (.man.n): Replace `;' with `|', since DOS/Windows - path lists use the semicolon as a separator. - -Sun Jun 4 21:39:00 2000 Kaneda Hiroshi (vanitas at ma3.seikyou.ne.jp) - - * Fixing a lot of typos in groff_mm.man - -Tue Mar 7 00:00:00 2000 OKAZAKI Tetsurou (okazaki at be.to) - - * Makefile.sub: Use $(INSTALL_SCRIPT) for script files. - -Sun Jan 30 22:52:20 2000 Jörgen Hägg (jh at axis.com) - - * version 1.34 - * Changed the version number in the CVS repository - * MC had a bug in column calculation, (thanks to T. Kurt Bond) - -Fri Sep 3 07:33:14 1999 Jörgen Hägg (jh at axis.com) - - * version 1.33 - * At last! I finally tracked down the PGFORM bug! - It didn't setup the @pl, @ll and @po as it should, now it does. - * mgm_ref/mgm_roff renamed to mmroff [-x] - * fixed y2k-bug in \*[DT] - * \n[cov*year] removed, hope noone used that. - * ISODATE added with Iso as command line flag - (iso-date suggested by Paul Eggert) - * Added ISODATE to tmac.mse and removed local settings - of new-date. - * INITI syntax changed and enhanced. Index processing is now - done with mmroff. - * A few examples has been added, new subdirectory 'examples'. - * Fixed bug with SETR, header references are now only saved - when Ref > 0 - * Problem with register H1h fixed - * Added test for missing abstract in 4.MT - * Updated Makefile.sub, using tmac_m_prefix. - -Mon Mar 15 22:22:42 1999 Jörgen Hägg (jh at axis.com) - - * OK, let's release this as a beta, 1.33 will be better. :-) - * version 1.32 - * fixed .el-error - * Added number variable Hss - * Changed Hps1 and Hps2 to units - * added hd*h1-text to be used in user defined macro TP. - * -U needed for SETR (I really need 'mv', 'echo', 'rm' - and 'test' builtin!) - * Rewritten the reference system, SETR now prints to stderr - if the number register Qrf > 0. Store in the filename - that is the argument to .INITR - The old behaviour is returned if number register Initr > 0. - * Fixed bug with List of XXXX, long lines messed up the result. - * added number register H1dot. - * added string variable H1txt - * added string variable Tcst - * added number register Dsp. - * added alias APPX for user-defined appendix title. - * added string variable Apptxt - * added H1h for use in TP in headers - * added macro EPIC - * added macro PIC (safe replacement for PSPIC) - * fixed Hps-bug, should be 1, not 1v. - * fixed bug with APPSK, variable not set. - -Wed Feb 4 15:46:04 1998 Jörgen Hägg (jh at axis.se) - - * version 1.31 - * .LI will now honor a space mark. - * Another fix for .AU to let it be used without arguments. - * uninitialized eq*label fixed - -Fri Sep 6 07:13:07 1996 Jörgen Hägg (jh at axis.se) - - * version 1.30 - * This is more like a beta-release, bugs might pop up. :-) - * last line in TOC was not correctly terminated (missing .br) - * changed the indentation for displays, it will now - indent to the current indent, not the one at the definition - of the display. - * Equation marks should now work better, indentation also. - * included these bug fixes from Larry Jones: - * The documentation for the argument to .AS was incorrect for MT 4. - * \*(EM should be a double-dash for nroff. - * \nS is in points, not units. - * If \nO isn't set, the default page offset should be .75i for nroff - and .963i for troff. - * .S D should set the point size to \nS, not 10. - * .S was setting the vertical spacing based on the old point size - instead of the new point size. - * Got rid of a spurrious .br that prevented run-in headings from - working. - * Reset the .SP counters in pg@header so that spacing on one page - won't affect spacing on subsequent pages. - * Allow .AU and .AF with no arguments (real mm does, even though it - isn't documented). - * Do .init@reset first thing to initialize the default environment. - * For MT 4, the title should be 4 points larger than the default size, - not 12 point. - * The cover environment needs to be initialized. - * Printing the abstract on the first page needs to be controlled by - the .AS argument. - * Heading eject should be suppressed if the heading immediately - follows the first page stuff (title, author, etc.). - * support for table of contents numbering style (.nr Oc) - * changes the troff empty line height from .25v to .5v - * fixed section page numbering - * fixed a really nasty bug in footnotes that could cause you - to lose the page footer completely if the very first - footnote on the page occurred at just the wrong place - - -Wed May 15 07:39:32 1996 Jörgen Hägg (jh at axis.se) - - * version 1.29 - * Syntax and scaling errror fixed, (thanks to Frazer Williams) - * DF/DE will now do a line-break before printing the display. - * Updated the manual for TB,FG,EX and EC. - * Added support for the ms- (and mgs-)macro .IX - * Added indexmacro IX, INITI, IND and INDP, support for - TXIND, TYIND and TZIND. - * PGFORM will now always really reset to the default - values for unspecified arguments. - * Floating displays tested and repaired, it should - now (finanlly) work exactly as the original (I hope :-). - * Should now set year correctly even after 2000. - * Stupid bug in PGNH fixed. - * Corrected line length for figure caption (FG and friends) - - -Mon Apr 24 07:37:52 1995 Jörgen Hägg (jh at axis.se) - - * version 1.28 - * Added AVL (AV without date) - * Fixed nroff scaling for W and L. - * Added support for register E and roman/bold - for all Subject/Date/From strings. - * Added support for register C (1-4), (for DRAFTs and other types) - * Will protest if not used with groff. - * Change of the internal number registers @ps and @vs, they - are now in units, and is set in the new macros .@ps and .@vs. - @ps and @vs is now corrected to the real point and vertical size. - * Macro EQ has now correct pointsize. - * Figures should now get the right page number in the index. - * User-defined macros can now be defined for list of - figures, tables, equations and exhibits (T{X,Y}{FG,TB,EC,EX}. - * Space may be omitted between prefix and mark in automatic lists (.AL) - See .LI - -Tue Jan 10 07:51:37 1995 Jörgen Hägg (jh at axis.se) - - * version 1.27 - * Manual updated - * More bugs fixed in DS/DF - * added alias for :g - * LC can now be used without argument (as the manual says. :-) - * Register :R now supported (RS/RF) - * footnote line was printed even if there was no room for - any footnotes. Fixed. - * Fixed 1C so that it can be used without page eject - * Added support for EOP (TPs twin) - * Hyphenation turned off by default. (Hy == 0) - -Fri Nov 4 08:14:50 1994 Jörgen Hägg (jh at axis.se) - - * version 1.25 - * DS/DF separated and several bugs fixed. Watch out for new though. :-) - * string DT was emptied by mistake in the previous version. - * RD made prettier. - * typo in AV and let@print-head fixed. - -Mon Oct 31 08:19:24 1994 Jörgen Hägg (jh at axis.se) - - * version 1.24 - * Bug fixed and format extended in .SG and .FC. - * date is always printed unless .ND without argument is used. - (I wonder what's the right thing to do, this might change.) - * Swedish letter-standards implemented in tmac.mse. - * .ND can be used to turn off the date. (Empty argument) - -Mon Oct 31 08:14:09 1994 Jörgen Hägg (jh at axis.se) - - * version 1.23 - * An attempt to get in sync with RCS. This is the distributed - version. - -Thu Oct 27 08:29:34 1994 Jörgen Hägg (jh at axis.se) - - * version 1.22 - * (version 1.21 lost... :-) - * Letter macros added!! - * The following macros are added: - * AV, FC, IA ,IE, LT, LO, NE, NS, SG, WA, WE - * nP also added. - -Tue Dec 14 16:26:36 1993 Joergen Haegg (jh at efd.lth.se) - - * version 1.20 - * spelling-corrections - * Makefile.sim updated to the correct version, and a uninstall - target added. - * @cur-lib removed from tmac.m (obsolete) - * fixed check for references i .TC, .RP now resets the flag correctly. - * floating display should now be printed if there is space. - * first version using RCS. I've been avoiding version control until it - became necessary. - * WC WD now works in two-column-mode. - -Tue Sep 7 08:37:00 1993 Jörgen Hägg (jh at efd.lth.se) - - * version 1.19 - * .lt is called in the header for .TP also. - * Variable Pgps added to control the header and footer point-size. - * Error-text printed with .APP removed. - * Error with .FG, .TB, .EC and .EX indentation fixed. - * header and footer line-length is not changed by MC or 2C. - * Default for page-length and page-offset is now taken from - \n[.p] and \n[.o]. - * Argument to .ab (abort) is supplied. - * Argument to .1C added. - * Argument to .PGFORM added. - * RP/RS/RF totally rewritten. Should work with 2C now. - -Fri Apr 23 10:37:25 1993 Joergen Haegg (jh at efd.lth.se) - - * version 1.18 - * Height of display is now more exactly calculated. - * tabs and blankspaces where wrong in .VERBON. - * error in manual for escape-character in VERBON. - * Makefile.sub: installed tmac.m as tmac.m and tmac.mse - * Installation of tmac.mse now supports TMAC_M. - * bug with N fixed. - -Mon Apr 5 09:36:01 1993 Joergen Haegg (jh at efd.lth.se) - - * version 1.17 - * MULB preserves size. - * bug in VERBON fixed, causing strange errors. - * section-page footer fixed. - * added support for numberregister S - * fixed bug with floating displays wich made floats to - generate space on a page, but broke page anyway. - * end-of-page trap reinstalled. - -Mon Mar 29 10:53:13 1993 Joergen Haegg (jh at efd.lth.se) - - * version 1.16 - * MUL* now use the previous font and family. - * extra blank page at end-of-text eliminated. - -Mon Mar 8 10:27:47 1993 Joergen Haegg (jh at efd.lth.se) - - * version 1.15 - * Didn't restore pointsize to current size in .H. - * B1/B2 did not work with indent. (MULE and friends) - * fixed old problem with trailing empty pages. - -Fri Mar 5 15:20:49 1993 Joergen Haegg (jh at efd.lth.se) - - * version 1.14 - * Sigh. Amazing what a missing \} can do. If the string - HP was set, then all text disappeared... - -Fri Mar 5 14:12:43 1993 Joergen Haegg (jh at efd.lth.se) - - * version 1.13 - * Fixed bug with handling ps/vs in .H. (again, sigh... ) - -Wed Mar 3 09:21:20 1993 Joergen Haegg (jh at efd.lth.se) - - * version 1.12 - * Line-break added to PGFORM. - * added more features to VERBON - * .S is not used anymore in H, it caused confusion with - normal text, but it will still set .vs. - * SK was broken, will now produce the requested number of - empty pages. - * dotted lines added to LIST OF FIGURES adn friends. - Also better linespacing. - -Mon Feb 22 12:41:06 1993 Joergen Haegg (jh at efd.lth.se) - - * version 1.11 - * missing left-parenthesis gave ") .sp" when N=4. - * N=4 removed user-specified header also. - * MOVE made linelength pageoffset wider than wanted. - * fixed (again) parenthesis in RP. - -Thu Jan 21 12:10:39 1993 Joergen Haegg (jh at efd.lth.se) - - * version 1.10 - * changed PROG_PREFIX to g in the manual-pages. - * Better check if new page is needed in .H, when Ej>0. - * Usage of variable Lsp now more complete. - * Space added in TOC when mark is equal to size. - * Usermacro HY moved after font-calulations. - * .S used instead of .ps, which will use .vs correct. - * Now possible to set Hps1/2 inside HX. - * .FD "" 1 is now fixed. - * section-page numbering bug fixed. - * several bugs in VERBON/OFF fixed. - -Tue Dec 8 16:43:15 1992 Joergen Haegg (jh at efd.lth.se) - - * version 1.09 - * N==4 gives no default header - -Sat Nov 21 14:28:20 1992 Joergen Haegg (jh at efd.lth.se) - - * version 1.08 - * Escape-character disabled between - VERBON/VERBOFF (turned on by an argument). - Pointsize and fontchange also added as arguments. - * MULB, MULN and MULE added to get multicolumn output - with different width. - * Number register N can now use 1-5. - * Register Sectp and Sectf added. - * Register P is now updated correctly for "section-page" numbering. - -Thu Nov 19 11:19:33 1992 Joergen Haegg (jh at efd.lth.se) - - * version 1.07 - * .OP fixed to eject a blank page if not odd. - -Fri Nov 13 09:46:09 1992 Joergen Haegg (jh at efd.lth.se) - - * version 1.06 - * Macro TL rewritten. TL depends now on a following .AU. - * NOTES updated. - * .lt is now used more frequent when linelength is changed. - * macro AST added. - * removed PH/EH/OH not needed in ?.MT. - -Wed Oct 28 14:35:43 1992 Joergen Haegg (jh at efd.lth.se) - - * version 1.05 - * .VM implemented. - * Possible bug in page heading fixed. Changed .sp to 'sp in HEADER. - -Thu Aug 20 13:56:31 1992 Joergen Haegg (jh at efd.lth.se) - - * version 1.04 - * page-break in .EQ moved. - * changed unit for footer-size and header-size from units to lines. - Fixes problems with .S and page-breaks. - * \n[%] is now treated as a string, wich makes it possible - to assign new formats to it. Unfortunately, it was necessary - to change the page-number-variable in GETPN to a string. - * Makefile.sub included. (Thank you, James) - -Thu May 7 16:14:10 1992 Joergen Haegg (jh at efd.lth.se) - - * version 1.03 - * Typo and centering in DS/DE fixed. - Even and odd pageheaders were reversed. - * LI: pad and mark-indent was lost in some earlier versions. Now fixed. - * fixed bug in reference to .FG, .TB, ... - * APP did not clear headercounters. - * Pointsize in titles is now only set at the beginning and - when PH, PF, OH, OF, EH and EF are used. - -Thu May 6 16:01:35 1992 Joergen Haegg (jh at efd.lth.se) - - * version 1.02 - * OP fixed. - -Fri Mar 6 09:36:09 1992 Joergen Haegg (jh at efd.lth.se) - - * version 1.01 - * two .LI without text between should not be printed - on the same row. Now fixed. - * figure titles and friends fixed, now possible with many .FG - in a DS/DE. Didn't always position correctly in previous version, - but is now always printed as it should. - * Makefile fixed for Ultrix. - * DS/DF could not handle empty arguments correct - * Missing .br i EQ added. - -Sat Jan 25 15:47:21 1992 Joergen Haegg (jh at efd.lth.se) - - * version 1.00 - * No betaversion anymore! - * Fixed headernumbers within appendixes. - * DS did not keep the same font as before DS. - * mmse did a line break. - -Fri Jan 24 14:38:16 1992 Joergen Haegg (jh at efd.lth.se) - - * version 0.16 - * bug in TC, multiple line headers did not wrap correctly. - * added support for mm/locale and mm/language_locale. - * cov*default-firm in locale sets name of firm in the MT covers. - * cov*location-xxxx in locale sets location xxxx to the contents - of cov*location-xxxx. Used in the MT covers. - * hanging indent in lists fixed. - * use larger empty lines if .nroff is defined. - * macros, like .P, can now be used inside abstracts. - * .S do not reset indentation anymore. - * .RS aA now sets a string, not an integer. - * appendix with .APP or .APPSK added. - -Thu Nov 28 22:00:59 1991 Joergen Haegg (jh at efd.lth.se) - - * version 0.15 - * Fixed .AU in MT 0-3, added support for variable Au. - * Bug in the positioning of the foot-notes. - * lists not indented properly. - * Hps1 and Hps2 added. - * COVER had to have an argument. - * table of contents can now have multiline header. - * .HU now increments headingvariable H? - * added the inclusion of a locale file. - -Sat Nov 23 14:40:17 1991 Joergen Haegg (jh at efd.lth.se) - - * version 0.14 - * bug when using -rO fixed. - * MT 1-4 added. - * default is now MT 1 - * .EQ/.EN can be used outside of .DS/.DE without complaints. But - I don't recommend it. Neither does the DWB books. - * LI don't break lines now if arg too big. - * PGFORM did not reset indent. - * Added the numbervariable Hps. - * Rewritten and added MT 0-5 + "string". - * Added TM. - * Indent to AS added - -Wed Nov 6 15:18:40 1991 Joergen Haegg (jh at efd.lth.se) - - * version 0.13 - * ds*format nod defined if PS/PE is used without DS/DE. - * GETST added, fourth argument to EX, FG, TB and EC added. - -Mon Nov 4 13:38:01 1991 Joergen Haegg (jh at efd.lth.se) - - * version 0.12 - * Fixed C,D,P,+-size in .S - -Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) - * Next version will have ChangeLog entries... - * Bug in INITR fixed. - * VERBON/VERBOFF added to include programlistings - * Bug in .DE fixed, addition overflow -Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) - * spelling error in month-names. - * WC should work now (no warranty :-) - * FD almost finished, some details missing. - * incorrect calculation of foot-notes fixed. - * DS/DE did not break page when the size was smaller than the paper - * Forward/backward referencesystem added. Se .INITR in README. - * mgmsw changed name to mgmse. -Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) - * embarrassing bug in .P fixed - * .H did always eject page, now fixed. - * lost floating displays now found. - * accents added (from mgs) - * empty line in .EQ/.EN removed - * indentation in .TC corrected. - * indentation of DS/DE in lists fixed. - * .TB and friends now work inside DS/DE and outside. - * .WC partially implemented (WF and WD). Still working on it. - * .mso used if version>=1.02 -Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) - * register P was not working. - * support for register Fg, Tb, Ec and Ex. - * list items was left on the previous page at a page break. - * tlevel in .TC now defaults to 2. - * string DT, EM and Tm supported. - * new macro: PGNH, see comments. - * bug in MOVE fixed. - * pagenumber in .TC fixed. - * a blank page was ejected if Ej==1, now fixed - * bug in floating display fixed (did break and SP wrong) - * bug in .SP fixed, no lines is now printed at top of page - * There are still problems with footnotes and displays in two column mode. -Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) - * register P added (same as %) - * bug in floating displays fixed - * MOVE added - * MT added, see comment below - * COVER/COVEND added - * fixed bug in figure titles - * extended S, se comment below - * MT 0 added - * ms-cover added (COVER ms) -Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) - * bugs in RD and comb. fonts fixed -Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) - * HC added - * Combined fonts (IB,BI...) - * HM added - * RD added - * OP added - * TP&PX supported - * warnings for unimplemented macros diff --git a/contrib/groff/contrib/mm/Makefile.sim b/contrib/groff/contrib/mm/Makefile.sim deleted file mode 100644 index 2c645bee3180..000000000000 --- a/contrib/groff/contrib/mm/Makefile.sim +++ /dev/null @@ -1,66 +0,0 @@ -# -# $Id: Makefile.sim,v 2.3 2002/05/22 06:26:12 jhaegg Exp $ -# -# To install mgm separately as gm.tmac: -# make -f Makefile.sub tmacdir=/usr/local/lib/groff/tmac srcdir=. \ -# INSTALL_DATA='install -m 644' tmac_m=gm install -# -# or as m.tmac: -# -# tmacdir is the destination for your groff/tmac-directory, srcdir is -# this directory and INSTALL_DATA is the command to install a file with. -# If you dont have 'install': use 'cp'. - - -# change this to whatever you like -tmacdir=/usr/local/lib/groff/tmac -#tmac_m = gm -tmac_m = m -indexdir = xx -install = install -m 644 - -# Do not change anything below this line -srcdir = . -version = 2.8 -mdate = 2002-05-11 - -.SUFFIXES: .n .man - -all: - - -install: groff_mm.n groff_mmse.n - $(MAKE) -f Makefile.sub tmacdir=$(tmacdir) srcdir=$(srcdir) \ - INSTALL_DATA='$(install)' tmac_m=$(tmac_m) install - -uninstall: groff_mm.n groff_mmse.n - $(MAKE) -f Makefile.sub tmacdir=$(tmacdir) srcdir=$(srcdir) \ - INSTALL_DATA='$(install)' tmac_m=$(tmac_m) uninstall_sub - - -.man.n: - @echo Making $@ from $< - @-rm -f $@ - @sed -e "s|@HYPHENFILE@|$(hyphenfile)|g" \ - -e "s|@FONTDIR@|$(fontdir)|g" \ - -e "s|@FONTPATH@|$(fontpath)|g" \ - -e "s|@MACRODIR@|$(tmacdir)|g" \ - -e "s|@MACROPATH@|$(tmacpath)|g" \ - -e "s|@DEVICE@|$(DEVICE)|g" \ - -e "s|@DEFAULT_INDEX@|$(indexdir)/$(indexname)|g" \ - -e "s|@DEFAULT_INDEX_NAME@|$(indexname)|g" \ - -e "s|@INDEX_SUFFIX@|$(indexext)|g" \ - -e "s|@COMMON_WORDS_FILE@|$(common_words_file)|g" \ - -e "s|@MAN1EXT@|$(man1ext)|g" \ - -e "s|@MAN5EXT@|$(man5ext)|g" \ - -e "s|@MAN7EXT@|$(man7ext)|g" \ - -e "s|@TMAC_S@|$(tmac_s)|g" \ - -e "s|@TMAC_M@|$(tmac_m)|g" \ - -e "s|@TMAC_MDIR@|$(tmacdir)/mm|g" \ - -e "s|@BROKEN_SPOOLER_FLAGS@|$(BROKEN_SPOOLER_FLAGS)|g" \ - -e "s|@VERSION@|$(version)|g" \ - -e "s|@MDATE@|$(mdate)|g" \ - -e "s|@g@|$(g)|g" \ - -e "s!@G@;`echo $(g) | tr [a-z] [A-Z]`!g" \ - $< >$@ - diff --git a/contrib/groff/contrib/mm/Makefile.sub b/contrib/groff/contrib/mm/Makefile.sub deleted file mode 100644 index 40b77071d51c..000000000000 --- a/contrib/groff/contrib/mm/Makefile.sub +++ /dev/null @@ -1,62 +0,0 @@ -# -# $Id: Makefile.sub,v 2.3 2002/05/22 06:26:12 jhaegg Exp $ -# -PROG=mmroff -MAN1=\ - mmroff.n -MAN7=\ - groff_mm.n \ - groff_mmse.n -FILES=0.MT 5.MT 4.MT ms.cov se_ms.cov -# Local configuration files with default values. -LOCALE=locale se_locale -CLEANADD=temp - -all: mmroff - -install: install_mm - -install_mm: install_mmroff install_m - -test -d $(tmacdir)/mm || $(mkinstalldirs) $(tmacdir)/mm - -for f in $(FILES); do \ - rm -f $(tmacdir)/mm/$$f; \ - $(INSTALL_DATA) $(srcdir)/mm/$$f $(tmacdir)/mm/$$f; \ - done - -for f in $(LOCALE); do \ - test -f $(tmacdir)/mm/$$f || touch $(tmacdir)/mm/$$f; \ - done - -install_m: - -test -d $(tmacdir) || $(mkinstalldirs) $(tmacdir) - -rm -f $(tmacdir)/tmac.$(tmac_m_prefix)m - -rm -f $(tmacdir)/$(tmac_m_prefix)m.tmac - $(INSTALL_DATA) $(srcdir)/m.tmac $(tmacdir)/$(tmac_m_prefix)m.tmac - @sed -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \ - $(srcdir)/mse.tmac > $(tmacdir)/$(tmac_m_prefix)mse.tmac - @sed -e "s;^.mso mse.tmac;.mso $(tmac_m_prefix)mse.tmac;g" \ - $(srcdir)/mmse.tmac > $(tmacdir)/$(tmac_m_prefix)mmse.tmac - @sed -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \ - $(srcdir)/mm.tmac > $(tmacdir)/$(tmac_m_prefix)mm.tmac - -install_mmroff: mmroff - -test -d $(bindir) || $(mkinstalldirs) $(bindir) - -rm -f $(bindir)/mmroff - $(INSTALL_SCRIPT) mmroff $(bindir)/mmroff - -mmroff: mmroff.pl - -rm -f $@ - -sed -e 's;/usr/bin/perl;$(PERLPATH);' $(srcdir)/mmroff.pl >$@ - -chmod +x $@ - -uninstall_sub: - -for f in $(FILES); do rm -f $(tmacdir)/mm/$$f; done - -for f in $(LOCALE); do \ - test -s $(tmacdir)/mm/$$f || rm -f $(tmacdir)/mm/$$f; \ - done - -rm -f $(tmacdir)/tmac.$(tmac_m_prefix)m - -rm -f $(tmacdir)/$(tmac_m_prefix)m.tmac - -rm -f $(tmacdir)/$(tmac_m_prefix)mm.tmac - -rm -f $(tmacdir)/$(tmac_m_prefix)mse.tmac - -rm -f $(tmacdir)/$(tmac_m_prefix)mmse.tmac - -rmdir $(tmacdir)/mm - -rm -f $(bindir)/mmroff diff --git a/contrib/groff/contrib/mm/NOTES b/contrib/groff/contrib/mm/NOTES deleted file mode 100644 index 7643c10067c7..000000000000 --- a/contrib/groff/contrib/mm/NOTES +++ /dev/null @@ -1,105 +0,0 @@ -###################################################################### -$Id: NOTES,v 2.0 2000/09/14 03:40:24 jhaegg Exp $ - -Beware! -This may be old information. Trust only the source. :-) - -Implementation notes. (Or how to make your own national mm) - -Different commands: - -COVER [arg] -MT [arg [addressee]] -The arg is part of a filename in mm/*.MT or mm/*.cov. -This file is read when the macro is executed. Therefore it must be -put before any text output. -In each file there are definitions of all extra macros needed for the -cover sheet. MT files is only for compatibility reasons, and has several -limits due to that it don't know when the cover starts, and cannot -change sizes. Use COVER for new coversheet macros. - -But with MT it is possible to write all of the AT&T covers. -An example can be found in mm/0.MT. - -When writing a new cover using COVER, have in mind that the cover -should print the page with the COVEND macro. This macro -should be defined by the new macrofile. - -Here is a part of ms.cov: -> .\"----------------- -> .de COVEND -> .sp |4.2c -> .cov@print-title -> .cov@print-authors -> .cov@print-firm -> .cov@print-abstract -> .cov@print-date -This is important, since COVER disables the page header. -> .pg@enable-top-trap -Should begin with page one (normally). -> .bp 1 -And enable the trap at the page footer. -> .pg@enable-trap -> .. - -######################### - -Variables for covers: -I = integer -S = string -D = diversion -M = macro - -Name Type Desc. -cov*au I The number of authors. - -cov*title M Title collected with .TL. - -cov*au!x!y S Author(s) given to .AU -cov*at!x!y S Author(s) title given to .AT - x is the author-index [1-cov*au], - y is the argument-index [1-9]. - Look at the table with indexes. - -cov*firm I Author(s) firm. - -cov*abs-arg I Argument to abstract. - -cov*abs-ind I Indent for abstract. - -cov*abs-name S The string 'ABSTRACT', changed with .AST - -cov*abstract M The abstract. - -cov*new-date S The date (todays date if ND is not used) - -cov*mt-type S MT type -cov*mt-addresse S MT addressee - - -########################## -Argument-index for cov*au: - -Index Desc. -1 name -2 initials -3 location -4 department -5 extension -6 room -7 arg 7 -8 arg 8 -9 arg 9 - -The location is set to the contents of string cov*location-xxxx -if location is equal to xxxx and cov*location-xxxx is defined -in the file locale. - - -Argument-index for cov*at: - -Index Desc. -1 title 1 -. . -. . -9 title 9 diff --git a/contrib/groff/contrib/mm/README b/contrib/groff/contrib/mm/README deleted file mode 100644 index f52f3eb0dbc6..000000000000 --- a/contrib/groff/contrib/mm/README +++ /dev/null @@ -1,31 +0,0 @@ - -$Id: README,v 2.2 2002/05/22 06:26:12 jhaegg Exp $ - -This is mgm, a macro package for groff. - -It is supposed to be compatible with the DWB mm macros, -and has several extensions. - -Send bug reports to jh@axis.com with a description of the problem -and a sample of text which reproduces the error. - -Don't forget to mention the version of mgm (look in the beginning -of m.tmac) and the version of groff. - -Any new ideas or improvements are welcome. - -Newest version is available here or at the groff CVS repository. -ftp://ftp.axis.se/pub/groff/mm.gz - -You can install mgm as a separate package without the configure in groff -with the following command: - -make -f Makefile.sim install - -This README should be bigger :-) - -/Jörgen Hägg - -Thanks to everyone who have sent me bug-reports and fixes. - - diff --git a/contrib/groff/contrib/mm/examples/APP b/contrib/groff/contrib/mm/examples/APP deleted file mode 100644 index 82352e58c3e4..000000000000 --- a/contrib/groff/contrib/mm/examples/APP +++ /dev/null @@ -1,352 +0,0 @@ -.H 1 " granary grand grandchild grandchildren granddaughter grandeur" -granary -grapheme -graphic -graphite -grapple -grasp -grass -grassland -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -.H 2 "grapefruit grapevine graph grapheme graphic graphite" -granary -grand -graphic -graphite -grapple -grasp -grass -grassland -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -.H 3 "grapple" -granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grandma -grandmother -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -.H 1 "Graves gravestone graveyard gravid gravitate gravy gray" -granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -.H 1 "Greenfield greengrocer greenhouse greenish Greenland Greensboro" -granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -.H 1 "greensward greenware Greenwich greenwood Greer greet" -graven -Graves -gravestone -graveyard -gravid -gravitate -gravy -gray -graybeard -grayish -Grayson -graywacke -graze -grease -.APP "" "Graves app a gravestone graveyard gravid gravitate gravy gray" -granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -.APP "" "Greenfield app b greengrocer greenhouse greenish Greenland Greensboro" -granary -grand -grandchild -grandchildren -granddaughter -grandeur -.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" -.H 2 "grandniece grandpa grandparent grandson grandstand granite granitic" -.H 2 "granny granola grant grantee grantor granular granulate" -.H 2 "granule Granville grape" -.H 2 "grapefruit grapevine graph grapheme graphic graphite" -.H 3 "grapple" -grandfather -grandiloquent -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -.APP ABC "greensward app abc greenware Greenwich greenwood Greer greet" -graven -Graves -.APP "" "handstand app f handwrite handwritten handy handyman handymen" -gravestone -graveyard -gravid -gravitate -gravy -gray -graybeard -grayish -Grayson -graywacke -graze -grease -.APPSK "" 10 "Handel app c 10 handhold handicap handicapped handicapper" -.APPSK "" 23 "handicapping app d 23 handicraftsmen handiwork" -.APPSK "" 99 "handmade app e 99 handset handshake handsome handspike" -.nr Aph 0 -.APP "" "handstand app f handwrite handwritten handy handyman handymen" -headsmen -headstand -headstone -headstrong -headwall -headwater -headway -headwind -.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat" -.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg" -.H 2 "Greenblatt Greenbriar Greene greenery" -.H 3 "Greenfield greengrocer greenhouse greenish Greenland Greensboro" -.H 3 "greensward greenware Greenwich greenwood Greer greet" -heady -heal -Healey -health -healthful -healthy -Healy -heap -hear -heard -hearken -hearsay -hearse -Hearst -heart -heartbeat -heartbreak -hearten -heartfelt -hearth -hearty -heat -heater -heath -heathen -heathenish -Heathkit -heave -heaven -heavenward -heavy -heavyweight -Hebe -hebephrenic -Hebraic -Hebrew -Hecate -hecatomb -heck -heckle -Heckman -hectic -hector -.APP "" "hang hangable app f hangar hangman hangmen hangout hangover hank" -Hecuba -he'd -hedge -.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat" -hedgehog -hedonism -hedonist -heed -heel -.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg" -heft -hefty -Hegelian -hegemony -Heidelberg -heigh -height -heighten -Heine -Heinrich -Heinz -heir -heiress -Heisenberg -held -Helen -Helena -Helene -Helga -helical -helicopter -heliocentric -heliotrope -helium -helix -he'll -hell -hellbender -hellebore -Hellenic -hellfire -hellgrammite -hellish -hello -helm -helmet -Helmholtz -helmsman -helmsmen -Helmut -help -helpful -helpmate -.APP "" "Hankel app g Hanley Hanlon Hanna Hannah Hannibal Hanoi Hanover" -Helsinki -Helvetica -hem -hematite -Hemingway -hemisphere -hemispheric -hemlock -hemoglobin -hemolytic -hemorrhage -hemorrhoid -hemosiderin -hemp -Hempstead -hen -henbane -hence -henceforth -henchman -henchmen -.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg" -Henderson -Hendrick -Hendricks -Hendrickson -henequen -Henley -henpeck -Henri -Henrietta -henry -hepatica -hepatitis -Hepburn -heptane -her -Hera -Heraclitus -herald -herb -Herbert -Herculean -Hercules -herd -herdsman -here -hereabout -hereafter -hereby -hereditary -.TC diff --git a/contrib/groff/contrib/mm/examples/B1B2 b/contrib/groff/contrib/mm/examples/B1B2 deleted file mode 100644 index a2bb3add57d9..000000000000 --- a/contrib/groff/contrib/mm/examples/B1B2 +++ /dev/null @@ -1,91 +0,0 @@ -abetting -abeyance -abeyant -abhorred -abhorrent -abide -Abidjan -Abigail -abject -ablate -ablaze -able -ablution -Abner -abnormal -Abo -aboard -abode -abolish -.B1 -abolition -abominable -abominate -aboriginal -AAA -ABORIGINE -ABORNING -ABORT -ABOUND -ABOUT -ABOVE -ABOVEBOARD -ABOVEGROUND -abovementioned -abrade -Abraham -Abram -Abramson -abrasion -abrasive -abreact -.B2 -abreast -abrogate -abrupt -abscess -abscissa -abscissae -absence -absent -absentee -absenteeism -absentia -absentminded -absinthe -absolute -absolution -absolve -absorb -absorbent -absorption -absorptive -abstain -abstention -abstract -abstracter -abstractor -ABSURD -ABUILDING -ABUNDANT -ABUSABLE -ABUSE -ABUSIVE -ABUT -ABUTTED -ABUTTING -ABYSMAL -ABYSS -ABYSSINIA -AC -ACADEME -ACADEMIA -ACADEMIC -ACADEMICIAN -ACADEMY -ACADIA -ACANTHUS -ACAPULCO -ACCEDE -ACCELERATE -ACCELEROMETER diff --git a/contrib/groff/contrib/mm/examples/COVER b/contrib/groff/contrib/mm/examples/COVER deleted file mode 100644 index d23597f0a897..000000000000 --- a/contrib/groff/contrib/mm/examples/COVER +++ /dev/null @@ -1,235 +0,0 @@ -.COVER -.ND 911123 -.TL "charge" "filing" -This is a test -granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grandma -grandmother -grandnephew -grandniece -grandpa -grandparent -grandson -.AU "Nisse Svensson" "DGY" "BF" "Computer Center" "5488" "5-2115" "nisse@vira.sture.elm" -.AF "MT GRANDSTAND GRANITE GRANITIC" -.AS 1 10 -grant -grantee -grantor -granular -granulate -granule -Granville -grape -grapefruit -grapevine -graph -grapheme -graphic -graphite -grapple -grasp -grass -grassland -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -graven -Graves -gravestone -graveyard -gravid -gravitate -gravy -gray -graybeard -grayish -Grayson -graywacke -graze -grease -greasy -great -greatcoat -greater -grebe -Grecian -.AE -.COVEND -Greece -greed -greedy -Greek -green -Greenbelt -Greenberg -Greenblatt -Greenbriar -Greene -greenery -Greenfield -greengrocer -greenhouse -greenish -Greenland -Greensboro -greensward -greenware -Greenwich -greenwood -Greer -greet -Greg -gregarious -Gregg -Gregory -gremlin -grenade -Grendel -Grenoble -Gresham -Greta -Gretchen -grew -grey -greyhound -greylag -grid -griddle -gridiron -grief -grievance -grieve -grievous -griffin -Griffith -grill -grille -grilled -grillwork -grim -grimace -Grimaldi -grime -Grimes -Grimm -grin -grind -grindstone -grip -gripe -grippe -grisly -grist -gristmill -Griswold -grit -gritty -grizzle -granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grandma -grandmother -grandnephew -grandniece -grandpa -grandparent -grandson -grandstand -granite -granitic -granny -granola -grant -grantee -grantor -granular -granulate -granule -Granville -grape -grapefruit -grapevine -graph -grapheme -graphic -graphite -grapple -grasp -grass -grassland -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -graven -Graves -gravestone -graveyard -gravid -gravitate -gravy -gray -graybeard -grayish -Grayson -graywacke -graze -grease -greasy -great -greatcoat -greater -grebe -Grecian -Greece -greed -greedy -Greek -green -Greenbelt -Greenberg -Greenblatt -Greenbriar -Greene -greenery -Greenfield -greengrocer -greenhouse -greenish -Greenland -Greensboro -greensward -greenware diff --git a/contrib/groff/contrib/mm/examples/IND b/contrib/groff/contrib/mm/examples/IND deleted file mode 100644 index fbf6c43a031a..000000000000 --- a/contrib/groff/contrib/mm/examples/IND +++ /dev/null @@ -1,4191 +0,0 @@ -.de foo -a=\\$1, b=\\$2 -.br -.. -.INITI N ind-data -.H 1 "halve" -.IND granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grandma -grandmother -.IND grandnephew -grandniece -grandpa -grandparent -grandson -grandstand -granite -granitic -granny -granola -grant -grantee -grantor -granular -.IND granulate -granule -Granville -grape -.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" -grapefruit -grapevine -graph -grapheme -graphic -.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah" -graphite -grapple -grasp -grass -grassland -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -.IND grave -gravel -graven -Graves -gravestone -graveyard -gravid -gravitate -gravy -gray -graybeard -grayish -Grayson -graywacke -graze -grease -greasy -great -greatcoat -greater -.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful" -grebe -Grecian -Greece -greed -greedy -.IND Greek -green -Greenbelt -Greenberg -.H 1 " granary grand grandchild grandchildren granddaughter grandeur" -Greenblatt -Greenbriar -Greene -greenery -Greenfield -greengrocer -greenhouse -greenish -Greenland -Greensboro -greensward -.H 1 "handgun" -greenware -Greenwich -greenwood -Greer -greet -Greg -gregarious -Gregg -Gregory -.IND gremlin -grenade -Grendel -Grenoble -Gresham -Greta -Gretchen -grew -grey -greyhound -greylag -grid -griddle -gridiron -grief -grievance -grieve -grievous -griffin -Griffith -grill -grille -grilled -grillwork -grim -.IND grimace -Grimaldi -grime -Grimes -Grimm -grin -grind -grindstone -grip -gripe -grippe -grisly -grist -gristmill -Griswold -grit -gritty -grizzle -grizzly -groan -groat -grocer -grocery -groggy -.IND groin -grommet -groom -groove -grope -grosbeak -gross -.H 1 "handicapped handicapper handicapping handicraft handicraftsman" -Grosset -Grossman -Grosvenor -grotesque -Groton -ground -groundsel -groundskeep -groundwork -group -groupoid -grout -grove -grovel -Grover -grow -growl -grown -grownup -.IND growth -grub -grubby -grudge -gruesome -gruff -grumble -Grumman -grunt -gryphon -g's -GSA -GU -Guam -guanidine -guanine -guano -guarantee -guaranteeing -guarantor -guaranty -guard -guardhouse -.IND Guardia -guardian -Guatemala -.IND gubernatorial -Guelph -Guenther -guerdon -guernsey -guerrilla -guess -guesswork -guest -guffaw -Guggenheim -Guiana -guidance -guide -guidebook -guideline -guidepost -guiding -guignol -guild -.H 1 "handicraftsmen handiwork handkerchief handle" -guildhall -guile -Guilford -guillemot -guillotine -guilt -.IND guilty -guinea -guise -guitar -gules -gulf -.H 1 "handleable handlebar handline handmade handmaiden handout" -gull -Gullah -gullet -gullible -gully -gulp -gum -gumbo -gumdrop -gummy -gumption -gumshoe -gun -Gunderson -.IND gunfight -gunfire -gunflint -gunk -gunky -gunman -.IND gunmen -gunnery -gunny -gunplay -gunpowder -gunshot -gunsling -Gunther -gurgle -Gurkha -guru -Gus -gush -gusset -gust -Gustafson -Gustav -Gustave -Gustavus -gusto -gusty -gut -.H 1 "handset" -Gutenberg -Guthrie -gutsy -guttural -.IND guy -Guyana -guzzle -Gwen -Gwyn -gym -gymnasium -gymnast -gymnastic -gymnosperm -gyp -gypsite -gypsum -gypsy -gyrate -gyrfalcon -gyro -.IND gyrocompass -gyroscope -h -ha -Haag -Haas -habeas -haberdashery -Haberman -.IND Habib -habit -habitant -habitat -habitation -habitual -habituate -hacienda -hack -hackberry -Hackett -hackle -hackmatack -.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten" -hackney -hackneyed -hacksaw -had -Hadamard -Haddad -haddock -Hades -Hadley -hadn't -Hadrian -hadron -hafnium -.IND Hagen -Hager -haggard -haggle -Hagstrom -Hague -Hahn -Haifa -haiku -hail -hailstone -hailstorm -Haines -hair -.IND haircut -hairdo -hairpin -hairy -Haiti -Haitian -Hal -halcyon -hale -Haley -half -halfback -.IND halfhearted -halfway -halibut -halide -.H 1 "handy handyman handymen Haney Hanford hang hangable hangar" -Halifax -halite -hall -hallelujah -Halley -hallmark -hallow -Halloween -hallucinate -hallway -halma -halo -halocarbon -halogen -Halpern -Halsey -Halstead -halt -halvah -halve -Halverson -ham -.IND Hamal -Hamburg -hamburger -Hamilton -hamlet -Hamlin -hammerhead -hammock -Hammond -hamper -Hampshire -.IND Hampton -hamster -Han -.H 1 "hangman hangmen hangout hangover hank Hankel Hanley" -Hancock -hand -handbag -handbook -handclasp -handcuff -Handel -handful -handgun -handhold -handicap -handicapped -.IND handicapper -handicapping -handicraft -handicraftsman -handicraftsmen -handiwork -handkerchief -handle -handleable -handlebar -handline -handmade -handmaiden -handout -handset -handshake -handsome -handspike -handstand -handwaving -.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans" -handwrite -handwritten -handy -handyman -handymen -Haney -.IND Hanford -hang -hangable -hangar -hangman -hangmen -hangout -hangover -.IND hank -Hankel -Hanley -Hanlon -Hanna -Hannah -Hannibal -Hanoi -Hanover -Hanoverian -Hans -Hansel -Hansen -hansom -Hanson -Hanukkah -hap -.H 1 "Hansel" -haphazard -.IND haploid -haploidy -haplology -happen -happenstance -happy -Hapsburg -harangue -harass -Harbin -harbinger -Harcourt -hard -hardbake -hardboard -hardboiled -hardcopy -harden -hardhat -Hardin -.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy" -Harding -hardscrabble -hardtack -hardtop -hardware -hardwood -.IND hardworking -hardy -hare -harelip -harem -.IND hark -Harlan -Harlem -Harley -harm -harmful -Harmon -harmonic -harmonica -harmonious -.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin" -harmony -harness -Harold -harp -harpoon -harpsichord -Harpy -Harriet -Harriman -Harrington -Harris -.IND Harrisburg -Harrison -harrow -harry -harsh -harshen -hart -Hartford -Hartley -Hartman -Harvard -harvest -harvestman -Harvey -hash -hashish -hasn't -hasp -hassle -hast -haste -hasten -Hastings -hasty -hat -hatch -.IND hatchet -hatchway -.IND hate -hateful -hater -Hatfield -hath -Hathaway -hatred -Hatteras -Hattie -Hattiesburg -Haugen -haughty -haul -haulage -haunch -haunt -Hausdorff -Havana -have -haven -haven't -Havilland -havoc -haw -.IND Hawaii -Hawaiian -hawk -Hawkins -Hawley -hawthorn -.H 2 "hammock Hammond hamper Hampshire Hampton hamster" -Hawthorne -hay -Hayden -Haydn -Hayes -hayfield -Haynes -Hays -haystack -Hayward -hayward -hazard -hazardous -haze -hazel -hazelnut -hazy -he -head -.IND headache -.IND headboard -headdress -headland -headlight -headline -headmaster -headphone -headquarter -headquarters -headroom -headset -headsman -headsmen -headstand -headstone -headstrong -headwall -headwater -headway -headwind -heady -heal -Healey -health -healthful -healthy -.IND Healy -heap -hear -heard -hearken -hearsay -hearse -Hearst -heart -heartbeat -heartbreak -hearten -heartfelt -hearth -hearty -heat -heater -heath -heathen -heathenish -Heathkit -heave -.IND heaven -heavenward -heavy -heavyweight -.IND Hebe -hebephrenic -Hebraic -Hebrew -Hecate -hecatomb -heck -heckle -Heckman -hectic -hector -Hecuba -he'd -hedge -hedgehog -hedonism -hedonist -heed -heel -heft -hefty -Hegelian -hegemony -Heidelberg -heigh -height -.IND heighten -Heine -Heinrich -Heinz -heir -heiress -Heisenberg -held -Helen -Helena -Helene -Helga -helical -helicopter -heliocentric -heliotrope -helium -helix -he'll -.IND hell -hellbender -hellebore -Hellenic -hellfire -hellgrammite -hellish -.IND hello -helm -helmet -.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead" -Helmholtz -helmsman -helmsmen -Helmut -help -helpful -helpmate -Helsinki -Helvetica -hem -hematite -Hemingway -hemisphere -hemispheric -hemlock -hemoglobin -hemolytic -hemorrhage -hemorrhoid -hemosiderin -hemp -Hempstead -hen -.IND henbane -hence -henceforth -henchman -henchmen -Henderson -Hendrick -Hendricks -Hendrickson -henequen -Henley -henpeck -Henri -Henrietta -henry -hepatica -.IND hepatitis -Hepburn -heptane -her -Hera -Heraclitus -herald -herb -Herbert -Herculean -.IND Hercules -herd -herdsman -here -hereabout -hereafter -hereby -hereditary -heredity -Hereford -herein -hereinabove -hereinafter -hereinbelow -hereof -heresy -heretic -hereto -heretofore -hereunder -hereunto -herewith -heritable -heritage -Herkimer -Herman -.IND Hermann -hermeneutic -Hermes -hermetic -Hermite -hermitian -Hermosa -Hernandez -hero -Herodotus -heroes -heroic -heroin -.IND heroine -heroism -heron -herpes -herpetology -Herr -herringbone -Herschel -herself -Hershel -Hershey -hertz -Hertzog -.IND hesitant -hesitate -hesitater -Hesperus -Hess -Hesse -Hessian -Hester -heterocyclic -heterodyne -heterogamous -heterogeneity -heterogeneous -heterosexual -heterostructure -heterozygous -Hetman -Hettie -Hetty -Heublein -heuristic -Heusen -Heuser -hew -Hewett -Hewitt -.IND Hewlett -hewn -hex -hexachloride -hexadecimal -hexafluoride -hexagon -hexagonal -hexameter -hexane -.IND hey -heyday -hi -Hiatt -hiatus -Hiawatha -hibachi -Hibbard -hibernate -Hibernia -hick -Hickey -Hickman -hickory -Hicks -hid -.IND hidalgo -hidden -hide -hideaway -hideous -hideout -hierarchal -hierarchic -hierarchy -hieratic -hieroglyphic -Hieronymus -hifalutin -Higgins -high -highball -highboy -highest -highfalutin -highhanded -highland -highlight -highroad -hightail -highway -highwayman -.IND highwaymen -hijack -hijinks -hike -hilarious -hilarity -Hilbert -.IND Hildebrand -hill -hillbilly -Hillcrest -Hillel -hillman -hillmen -hillock -hillside -hilltop -hilly -hilt -Hilton -hilum -him -Himalaya -himself -hind -hindmost -.IND hindrance -hindsight -Hindu -Hinduism -Hines -hinge -Hinman -hint -hinterland -hip -hippo -Hippocrates -Hippocratic -hippodrome -hippopotamus -hippy -hipster -Hiram -hire -hireling -Hiroshi -Hiroshima -Hirsch -hirsute -his -Hispanic -.IND hiss -histamine -histidine -histochemic -.IND histochemistry -histogram -histology -historian -historic -historiography -history -histrionic -hit -Hitachi -hitch -Hitchcock -.H 1 "harbinger" -hither -hitherto -Hitler -hive -ho -hoagie -Hoagland -hoagy -hoar -hoard -.IND hoarfrost -hoarse -hob -Hobart -Hobbes -hobble -Hobbs -hobby -hobbyhorse -hobgoblin -hobo -Hoboken -hoc -hock -hockey -hocus -hodge -hodgepodge -Hodges -Hodgkin -hoe -Hoff -Hoffman -hog -hogan -hogging -.IND hoi -.IND Hokan -Holbrook -Holcomb -hold -holden -holdout -holdover -holdup -hole -holeable -holiday -Holland -Hollandaise -holler -Hollerith -Hollingsworth -Hollister -hollow -Holloway -hollowware -holly -hollyhock -Hollywood -Holm -Holman -.IND Holmdel -Holmes -holmium -holocaust -Holocene -hologram -holography -Holst -Holstein -holster -holt -Holyoke -.IND holystone -.INDP -inject injudicious Injun injunct injunction injure injurious injury -injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards -innate inner innermost innkeeper innocent innocuous innovate innuendo -innumerable inoculate inoffensive inoperable inoperative inopportune -inordinate inorganic input inputting inquest inquire inquiry inquisition -inquisitive inquisitor inroad insane insatiable inscribe inscription -inscrutable insect insecticide insecure inseminate insensible insensitive -inseparable insert inset inshore inside insidious insight insightful -insignia insignificant insincere insinuate insipid insist insistent -insofar insolent insoluble insolvable insolvent insomnia insomniac -insouciant inspect inspector inspiration inspire instable install -installation instalment instance instant instantaneous instantiate -.INITI H ind-data2 -.H 1 "halve" -.IND granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grandma -grandmother -.IND grandnephew -grandniece -grandpa -grandparent -grandson -grandstand -granite -granitic -granny -granola -grant -grantee -grantor -granular -.IND granulate -granule -Granville -grape -.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" -grapefruit -grapevine -graph -grapheme -graphic -.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah" -graphite -grapple -grasp -grass -grassland -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -.IND grave -gravel -graven -Graves -gravestone -graveyard -gravid -gravitate -gravy -gray -graybeard -grayish -Grayson -graywacke -graze -grease -greasy -great -greatcoat -greater -.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful" -grebe -Grecian -Greece -greed -greedy -.IND Greek -green -Greenbelt -Greenberg -.H 1 " granary grand grandchild grandchildren granddaughter grandeur" -Greenblatt -Greenbriar -Greene -greenery -Greenfield -greengrocer -greenhouse -greenish -Greenland -Greensboro -greensward -.H 1 "handgun" -greenware -Greenwich -greenwood -Greer -greet -Greg -gregarious -Gregg -Gregory -.IND gremlin -grenade -Grendel -Grenoble -Gresham -Greta -Gretchen -grew -grey -greyhound -greylag -grid -griddle -gridiron -grief -grievance -grieve -grievous -griffin -Griffith -grill -grille -grilled -grillwork -grim -.IND grimace -Grimaldi -grime -Grimes -Grimm -grin -grind -grindstone -grip -gripe -grippe -grisly -grist -gristmill -Griswold -grit -gritty -grizzle -grizzly -groan -groat -grocer -grocery -groggy -.IND groin -grommet -groom -groove -grope -grosbeak -gross -.H 1 "handicapped handicapper handicapping handicraft handicraftsman" -Grosset -Grossman -Grosvenor -grotesque -Groton -ground -groundsel -groundskeep -groundwork -group -groupoid -grout -grove -grovel -Grover -grow -growl -grown -grownup -.IND growth -grub -grubby -grudge -gruesome -gruff -grumble -Grumman -grunt -gryphon -g's -GSA -GU -Guam -guanidine -guanine -guano -guarantee -guaranteeing -guarantor -guaranty -guard -guardhouse -.IND Guardia -guardian -Guatemala -.IND gubernatorial -Guelph -Guenther -guerdon -guernsey -guerrilla -guess -guesswork -guest -guffaw -Guggenheim -Guiana -guidance -guide -guidebook -guideline -guidepost -guiding -guignol -guild -.H 1 "handicraftsmen handiwork handkerchief handle" -guildhall -guile -Guilford -guillemot -guillotine -guilt -.IND guilty -guinea -guise -guitar -gules -gulf -.H 1 "handleable handlebar handline handmade handmaiden handout" -gull -Gullah -gullet -gullible -gully -gulp -gum -gumbo -gumdrop -gummy -gumption -gumshoe -gun -Gunderson -.IND gunfight -gunfire -gunflint -gunk -gunky -gunman -.IND gunmen -gunnery -gunny -gunplay -gunpowder -gunshot -gunsling -Gunther -gurgle -Gurkha -guru -Gus -gush -gusset -gust -Gustafson -Gustav -Gustave -Gustavus -gusto -gusty -gut -.H 1 "handset" -Gutenberg -Guthrie -gutsy -guttural -.IND guy -Guyana -guzzle -Gwen -Gwyn -gym -gymnasium -gymnast -gymnastic -gymnosperm -gyp -gypsite -gypsum -gypsy -gyrate -gyrfalcon -gyro -.IND gyrocompass -gyroscope -h -ha -Haag -Haas -habeas -haberdashery -Haberman -.IND Habib -habit -habitant -habitat -habitation -habitual -habituate -hacienda -hack -hackberry -Hackett -hackle -hackmatack -.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten" -hackney -hackneyed -hacksaw -had -Hadamard -Haddad -haddock -Hades -Hadley -hadn't -Hadrian -hadron -hafnium -.IND Hagen -Hager -haggard -haggle -Hagstrom -Hague -Hahn -Haifa -haiku -hail -hailstone -hailstorm -Haines -hair -.IND haircut -hairdo -hairpin -hairy -Haiti -Haitian -Hal -halcyon -hale -Haley -half -halfback -.IND halfhearted -halfway -halibut -halide -.H 1 "handy handyman handymen Haney Hanford hang hangable hangar" -Halifax -halite -hall -hallelujah -Halley -hallmark -hallow -Halloween -hallucinate -hallway -halma -halo -halocarbon -halogen -Halpern -Halsey -Halstead -halt -halvah -halve -Halverson -ham -.IND Hamal -Hamburg -hamburger -Hamilton -hamlet -Hamlin -hammerhead -hammock -Hammond -hamper -Hampshire -.IND Hampton -hamster -Han -.H 1 "hangman hangmen hangout hangover hank Hankel Hanley" -Hancock -hand -handbag -handbook -handclasp -handcuff -Handel -handful -handgun -handhold -handicap -handicapped -.IND handicapper -handicapping -handicraft -handicraftsman -handicraftsmen -handiwork -handkerchief -handle -handleable -handlebar -handline -handmade -handmaiden -handout -handset -handshake -handsome -handspike -handstand -handwaving -.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans" -handwrite -handwritten -handy -handyman -handymen -Haney -.IND Hanford -hang -hangable -hangar -hangman -hangmen -hangout -hangover -.IND hank -Hankel -Hanley -Hanlon -Hanna -Hannah -Hannibal -Hanoi -Hanover -Hanoverian -Hans -Hansel -Hansen -hansom -Hanson -Hanukkah -hap -.H 1 "Hansel" -haphazard -.IND haploid -haploidy -haplology -happen -happenstance -happy -Hapsburg -harangue -harass -Harbin -harbinger -Harcourt -hard -hardbake -hardboard -hardboiled -hardcopy -harden -hardhat -Hardin -.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy" -Harding -hardscrabble -hardtack -hardtop -hardware -hardwood -.IND hardworking -hardy -hare -harelip -harem -.IND hark -Harlan -Harlem -Harley -harm -harmful -Harmon -harmonic -harmonica -harmonious -.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin" -harmony -harness -Harold -harp -harpoon -harpsichord -Harpy -Harriet -Harriman -Harrington -Harris -.IND Harrisburg -Harrison -harrow -harry -harsh -harshen -hart -Hartford -Hartley -Hartman -Harvard -harvest -harvestman -Harvey -hash -hashish -hasn't -hasp -hassle -hast -haste -hasten -Hastings -hasty -hat -hatch -.IND hatchet -hatchway -.IND hate -hateful -hater -Hatfield -hath -Hathaway -hatred -Hatteras -Hattie -Hattiesburg -Haugen -haughty -haul -haulage -haunch -haunt -Hausdorff -Havana -have -haven -haven't -Havilland -havoc -haw -.IND Hawaii -Hawaiian -hawk -Hawkins -Hawley -hawthorn -.H 2 "hammock Hammond hamper Hampshire Hampton hamster" -Hawthorne -hay -Hayden -Haydn -Hayes -hayfield -Haynes -Hays -haystack -Hayward -hayward -hazard -hazardous -haze -hazel -hazelnut -hazy -he -head -.IND headache -.IND headboard -headdress -headland -headlight -headline -headmaster -headphone -headquarter -headquarters -headroom -headset -headsman -headsmen -headstand -headstone -headstrong -headwall -headwater -headway -headwind -heady -heal -Healey -health -healthful -healthy -.IND Healy -heap -hear -heard -hearken -hearsay -hearse -Hearst -heart -heartbeat -heartbreak -hearten -heartfelt -hearth -hearty -heat -heater -heath -heathen -heathenish -Heathkit -heave -.IND heaven -heavenward -heavy -heavyweight -.IND Hebe -hebephrenic -Hebraic -Hebrew -Hecate -hecatomb -heck -heckle -Heckman -hectic -hector -Hecuba -he'd -hedge -hedgehog -hedonism -hedonist -heed -heel -heft -hefty -Hegelian -hegemony -Heidelberg -heigh -height -.IND heighten -Heine -Heinrich -Heinz -heir -heiress -Heisenberg -held -Helen -Helena -Helene -Helga -helical -helicopter -heliocentric -heliotrope -helium -helix -he'll -.IND hell -hellbender -hellebore -Hellenic -hellfire -hellgrammite -hellish -.IND hello -helm -helmet -.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead" -Helmholtz -helmsman -helmsmen -Helmut -help -helpful -helpmate -Helsinki -Helvetica -hem -hematite -Hemingway -hemisphere -hemispheric -hemlock -hemoglobin -hemolytic -hemorrhage -hemorrhoid -hemosiderin -hemp -Hempstead -hen -.IND henbane -hence -henceforth -henchman -henchmen -Henderson -Hendrick -Hendricks -Hendrickson -henequen -Henley -henpeck -Henri -Henrietta -henry -hepatica -.IND hepatitis -Hepburn -heptane -her -Hera -Heraclitus -herald -herb -Herbert -Herculean -.IND Hercules -herd -herdsman -here -hereabout -hereafter -hereby -hereditary -heredity -Hereford -herein -hereinabove -hereinafter -hereinbelow -hereof -heresy -heretic -hereto -heretofore -hereunder -hereunto -herewith -heritable -heritage -Herkimer -Herman -.IND Hermann -hermeneutic -Hermes -hermetic -Hermite -hermitian -Hermosa -Hernandez -hero -Herodotus -heroes -heroic -heroin -.IND heroine -heroism -heron -herpes -herpetology -Herr -herringbone -Herschel -herself -Hershel -Hershey -hertz -Hertzog -.IND hesitant -hesitate -hesitater -Hesperus -Hess -Hesse -Hessian -Hester -heterocyclic -heterodyne -heterogamous -heterogeneity -heterogeneous -heterosexual -heterostructure -heterozygous -Hetman -Hettie -Hetty -Heublein -heuristic -Heusen -Heuser -hew -Hewett -Hewitt -.IND Hewlett -hewn -hex -hexachloride -hexadecimal -hexafluoride -hexagon -hexagonal -hexameter -hexane -.IND hey -heyday -hi -Hiatt -hiatus -Hiawatha -hibachi -Hibbard -hibernate -Hibernia -hick -Hickey -Hickman -hickory -Hicks -hid -.IND hidalgo -hidden -hide -hideaway -hideous -hideout -hierarchal -hierarchic -hierarchy -hieratic -hieroglyphic -Hieronymus -hifalutin -Higgins -high -highball -highboy -highest -highfalutin -highhanded -highland -highlight -highroad -hightail -highway -highwayman -.IND highwaymen -hijack -hijinks -hike -hilarious -hilarity -Hilbert -.IND Hildebrand -hill -hillbilly -Hillcrest -Hillel -hillman -hillmen -hillock -hillside -hilltop -hilly -hilt -Hilton -hilum -him -Himalaya -himself -hind -hindmost -.IND hindrance -hindsight -Hindu -Hinduism -Hines -hinge -Hinman -hint -hinterland -hip -hippo -Hippocrates -Hippocratic -hippodrome -hippopotamus -hippy -hipster -Hiram -hire -hireling -Hiroshi -Hiroshima -Hirsch -hirsute -his -Hispanic -.IND hiss -histamine -histidine -histochemic -.IND histochemistry -histogram -histology -historian -historic -historiography -history -histrionic -hit -Hitachi -hitch -Hitchcock -.H 1 "harbinger" -hither -hitherto -Hitler -hive -ho -hoagie -Hoagland -hoagy -hoar -hoard -.IND hoarfrost -hoarse -hob -Hobart -Hobbes -hobble -Hobbs -hobby -hobbyhorse -hobgoblin -hobo -Hoboken -hoc -hock -hockey -hocus -hodge -hodgepodge -Hodges -Hodgkin -hoe -Hoff -Hoffman -hog -hogan -hogging -.IND hoi -.IND Hokan -Holbrook -Holcomb -hold -holden -holdout -holdover -holdup -hole -holeable -holiday -Holland -Hollandaise -holler -Hollerith -Hollingsworth -Hollister -hollow -Holloway -hollowware -holly -hollyhock -Hollywood -Holm -Holman -.IND Holmdel -Holmes -holmium -holocaust -Holocene -hologram -holography -Holst -Holstein -holster -holt -Holyoke -.IND holystone -.INDP -inject injudicious Injun injunct injunction injure injurious injury -injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards -innate inner innermost innkeeper innocent innocuous innovate innuendo -innumerable inoculate inoffensive inoperable inoperative inopportune -inordinate inorganic input inputting inquest inquire inquiry inquisition -.INITI B ind-data3 -.H 1 "halve" -.IND granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grandma -grandmother -.IND grandnephew -grandniece -grandpa -grandparent -grandson -grandstand -granite -granitic -granny -granola -grant -grantee -grantor -granular -.IND granulate -granule -Granville -grape -.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" -grapefruit -grapevine -graph -grapheme -graphic -.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah" -graphite -grapple -grasp -grass -grassland -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -.IND grave -gravel -graven -Graves -gravestone -graveyard -gravid -gravitate -gravy -gray -graybeard -grayish -Grayson -graywacke -graze -grease -greasy -great -greatcoat -greater -.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful" -grebe -Grecian -Greece -greed -greedy -.IND Greek -green -Greenbelt -Greenberg -.H 1 " granary grand grandchild grandchildren granddaughter grandeur" -Greenblatt -Greenbriar -Greene -greenery -Greenfield -greengrocer -greenhouse -greenish -Greenland -Greensboro -greensward -.H 1 "handgun" -greenware -Greenwich -greenwood -Greer -greet -Greg -gregarious -Gregg -Gregory -.IND gremlin -grenade -Grendel -Grenoble -Gresham -Greta -Gretchen -grew -grey -greyhound -greylag -grid -griddle -gridiron -grief -grievance -grieve -grievous -griffin -Griffith -grill -grille -grilled -grillwork -grim -.IND grimace -Grimaldi -grime -Grimes -Grimm -grin -grind -grindstone -grip -gripe -grippe -grisly -grist -gristmill -Griswold -grit -gritty -grizzle -grizzly -groan -groat -grocer -grocery -groggy -.IND groin -grommet -groom -groove -grope -grosbeak -gross -.H 1 "handicapped handicapper handicapping handicraft handicraftsman" -Grosset -Grossman -Grosvenor -grotesque -Groton -ground -groundsel -groundskeep -groundwork -group -groupoid -grout -grove -grovel -Grover -grow -growl -grown -grownup -.IND growth -grub -grubby -grudge -gruesome -gruff -grumble -Grumman -grunt -gryphon -g's -GSA -GU -Guam -guanidine -guanine -guano -guarantee -guaranteeing -guarantor -guaranty -guard -guardhouse -.IND Guardia -guardian -Guatemala -.IND gubernatorial -Guelph -Guenther -guerdon -guernsey -guerrilla -guess -guesswork -guest -guffaw -Guggenheim -Guiana -guidance -guide -guidebook -guideline -guidepost -guiding -guignol -guild -.H 1 "handicraftsmen handiwork handkerchief handle" -guildhall -guile -Guilford -guillemot -guillotine -guilt -.IND guilty -guinea -guise -guitar -gules -gulf -.H 1 "handleable handlebar handline handmade handmaiden handout" -gull -Gullah -gullet -gullible -gully -gulp -gum -gumbo -gumdrop -gummy -gumption -gumshoe -gun -Gunderson -.IND gunfight -gunfire -gunflint -gunk -gunky -gunman -.IND gunmen -gunnery -gunny -gunplay -gunpowder -gunshot -gunsling -Gunther -gurgle -Gurkha -guru -Gus -gush -gusset -gust -Gustafson -Gustav -Gustave -Gustavus -gusto -gusty -gut -.H 1 "handset" -Gutenberg -Guthrie -gutsy -guttural -.IND guy -Guyana -guzzle -Gwen -Gwyn -gym -gymnasium -gymnast -gymnastic -gymnosperm -gyp -gypsite -gypsum -gypsy -gyrate -gyrfalcon -gyro -.IND gyrocompass -gyroscope -h -ha -Haag -Haas -habeas -haberdashery -Haberman -.IND Habib -habit -habitant -habitat -habitation -habitual -habituate -hacienda -hack -hackberry -Hackett -hackle -hackmatack -.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten" -hackney -hackneyed -hacksaw -had -Hadamard -Haddad -haddock -Hades -Hadley -hadn't -Hadrian -hadron -hafnium -.IND Hagen -Hager -haggard -haggle -Hagstrom -Hague -Hahn -Haifa -haiku -hail -hailstone -hailstorm -Haines -hair -.IND haircut -hairdo -hairpin -hairy -Haiti -Haitian -Hal -halcyon -hale -Haley -half -halfback -.IND halfhearted -halfway -halibut -halide -.H 1 "handy handyman handymen Haney Hanford hang hangable hangar" -Halifax -halite -hall -hallelujah -Halley -hallmark -hallow -Halloween -hallucinate -hallway -halma -halo -halocarbon -halogen -Halpern -Halsey -Halstead -halt -halvah -halve -Halverson -ham -.IND Hamal -Hamburg -hamburger -Hamilton -hamlet -Hamlin -hammerhead -hammock -Hammond -hamper -Hampshire -.IND Hampton -hamster -Han -.H 1 "hangman hangmen hangout hangover hank Hankel Hanley" -Hancock -hand -handbag -handbook -handclasp -handcuff -Handel -handful -handgun -handhold -handicap -handicapped -.IND handicapper -handicapping -handicraft -handicraftsman -handicraftsmen -handiwork -handkerchief -handle -handleable -handlebar -handline -handmade -handmaiden -handout -handset -handshake -handsome -handspike -handstand -handwaving -.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans" -handwrite -handwritten -handy -handyman -handymen -Haney -.IND Hanford -hang -hangable -hangar -hangman -hangmen -hangout -hangover -.IND hank -Hankel -Hanley -Hanlon -Hanna -Hannah -Hannibal -Hanoi -Hanover -Hanoverian -Hans -Hansel -Hansen -hansom -Hanson -Hanukkah -hap -.H 1 "Hansel" -haphazard -.IND haploid -haploidy -haplology -happen -happenstance -happy -Hapsburg -harangue -harass -Harbin -harbinger -Harcourt -hard -hardbake -hardboard -hardboiled -hardcopy -harden -hardhat -Hardin -.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy" -Harding -hardscrabble -hardtack -hardtop -hardware -hardwood -.IND hardworking -hardy -hare -harelip -harem -.IND hark -Harlan -Harlem -Harley -harm -harmful -Harmon -harmonic -harmonica -harmonious -.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin" -harmony -harness -Harold -harp -harpoon -harpsichord -Harpy -Harriet -Harriman -Harrington -Harris -.IND Harrisburg -Harrison -harrow -harry -harsh -harshen -hart -Hartford -Hartley -Hartman -Harvard -harvest -harvestman -Harvey -hash -hashish -hasn't -hasp -hassle -hast -haste -hasten -Hastings -hasty -hat -hatch -.IND hatchet -hatchway -.IND hate -hateful -hater -Hatfield -hath -Hathaway -hatred -Hatteras -Hattie -Hattiesburg -Haugen -haughty -haul -haulage -haunch -haunt -Hausdorff -Havana -have -haven -haven't -Havilland -havoc -haw -.IND Hawaii -Hawaiian -hawk -Hawkins -Hawley -hawthorn -.H 2 "hammock Hammond hamper Hampshire Hampton hamster" -Hawthorne -hay -Hayden -Haydn -Hayes -hayfield -Haynes -Hays -haystack -Hayward -hayward -hazard -hazardous -haze -hazel -hazelnut -hazy -he -head -.IND headache -.IND headboard -headdress -headland -headlight -headline -headmaster -headphone -headquarter -headquarters -headroom -headset -headsman -headsmen -headstand -headstone -headstrong -headwall -headwater -headway -headwind -heady -heal -Healey -health -healthful -healthy -.IND Healy -heap -hear -heard -hearken -hearsay -hearse -Hearst -heart -heartbeat -heartbreak -hearten -heartfelt -hearth -hearty -heat -heater -heath -heathen -heathenish -Heathkit -heave -.IND heaven -heavenward -heavy -heavyweight -.IND Hebe -hebephrenic -Hebraic -Hebrew -Hecate -hecatomb -heck -heckle -Heckman -hectic -hector -Hecuba -he'd -hedge -hedgehog -hedonism -hedonist -heed -heel -heft -hefty -Hegelian -hegemony -Heidelberg -heigh -height -.IND heighten -Heine -Heinrich -Heinz -heir -heiress -Heisenberg -held -Helen -Helena -Helene -Helga -helical -helicopter -heliocentric -heliotrope -helium -helix -he'll -.IND hell -hellbender -hellebore -Hellenic -hellfire -hellgrammite -hellish -.IND hello -helm -helmet -.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead" -Helmholtz -helmsman -helmsmen -Helmut -help -helpful -helpmate -Helsinki -Helvetica -hem -hematite -Hemingway -hemisphere -hemispheric -hemlock -hemoglobin -hemolytic -hemorrhage -hemorrhoid -hemosiderin -hemp -Hempstead -hen -.IND henbane -hence -henceforth -henchman -henchmen -Henderson -Hendrick -Hendricks -Hendrickson -henequen -Henley -henpeck -Henri -Henrietta -henry -hepatica -.IND hepatitis -Hepburn -heptane -her -Hera -Heraclitus -herald -herb -Herbert -Herculean -.IND Hercules -herd -herdsman -here -hereabout -hereafter -hereby -hereditary -heredity -Hereford -herein -hereinabove -hereinafter -hereinbelow -hereof -heresy -heretic -hereto -heretofore -hereunder -hereunto -herewith -heritable -heritage -Herkimer -Herman -.IND Hermann -hermeneutic -Hermes -hermetic -Hermite -hermitian -Hermosa -Hernandez -hero -Herodotus -heroes -heroic -heroin -.IND heroine -heroism -heron -herpes -herpetology -Herr -herringbone -Herschel -herself -Hershel -Hershey -hertz -Hertzog -.IND hesitant -hesitate -hesitater -Hesperus -Hess -Hesse -Hessian -Hester -heterocyclic -heterodyne -heterogamous -heterogeneity -heterogeneous -heterosexual -heterostructure -heterozygous -Hetman -Hettie -Hetty -Heublein -heuristic -Heusen -Heuser -hew -Hewett -Hewitt -.IND Hewlett -hewn -hex -hexachloride -hexadecimal -hexafluoride -hexagon -hexagonal -hexameter -hexane -.IND hey -heyday -hi -Hiatt -hiatus -Hiawatha -hibachi -Hibbard -hibernate -Hibernia -hick -Hickey -Hickman -hickory -Hicks -hid -.IND hidalgo -hidden -hide -hideaway -hideous -hideout -hierarchal -hierarchic -hierarchy -hieratic -hieroglyphic -Hieronymus -hifalutin -Higgins -high -highball -highboy -highest -highfalutin -highhanded -highland -highlight -highroad -hightail -highway -highwayman -.IND highwaymen -hijack -hijinks -hike -hilarious -hilarity -Hilbert -.IND Hildebrand -hill -hillbilly -Hillcrest -Hillel -hillman -hillmen -hillock -hillside -hilltop -hilly -hilt -Hilton -hilum -him -Himalaya -himself -hind -hindmost -.IND hindrance -hindsight -Hindu -Hinduism -Hines -hinge -Hinman -hint -hinterland -hip -hippo -Hippocrates -Hippocratic -hippodrome -hippopotamus -hippy -hipster -Hiram -hire -hireling -Hiroshi -Hiroshima -Hirsch -hirsute -his -Hispanic -.IND hiss -histamine -histidine -histochemic -.IND histochemistry -histogram -histology -historian -historic -historiography -history -histrionic -hit -Hitachi -hitch -Hitchcock -.H 1 "harbinger" -hither -hitherto -Hitler -hive -ho -hoagie -Hoagland -hoagy -hoar -hoard -.IND hoarfrost -hoarse -hob -Hobart -Hobbes -hobble -Hobbs -hobby -hobbyhorse -hobgoblin -hobo -Hoboken -hoc -hock -hockey -hocus -hodge -hodgepodge -Hodges -Hodgkin -hoe -Hoff -Hoffman -hog -hogan -hogging -.IND hoi -.IND Hokan -Holbrook -Holcomb -hold -holden -holdout -holdover -holdup -hole -holeable -holiday -Holland -Hollandaise -holler -Hollerith -Hollingsworth -Hollister -hollow -Holloway -hollowware -holly -hollyhock -Hollywood -Holm -Holman -.IND Holmdel -Holmes -holmium -holocaust -Holocene -hologram -holography -Holst -Holstein -holster -holt -Holyoke -.IND holystone -.INDP -inject injudicious Injun injunct injunction injure injurious injury -injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards -innate inner innermost innkeeper innocent innocuous innovate innuendo -innumerable inoculate inoffensive inoperable inoperative inopportune -inordinate inorganic input inputting inquest inquire inquiry inquisition -.INITI B ind-data4 foo -.H 1 "halve" -.IND granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grandma -grandmother -.IND grandnephew -grandniece -grandpa -grandparent -grandson -grandstand -granite -granitic -granny -granola -grant -grantee -grantor -granular -.IND granulate -granule -Granville -grape -.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" -grapefruit -grapevine -graph -grapheme -graphic -.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah" -graphite -grapple -grasp -grass -grassland -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -.IND grave -gravel -graven -Graves -gravestone -graveyard -gravid -gravitate -gravy -gray -graybeard -grayish -Grayson -graywacke -graze -grease -greasy -great -greatcoat -greater -.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful" -grebe -Grecian -Greece -greed -greedy -.IND Greek -green -Greenbelt -Greenberg -.H 1 " granary grand grandchild grandchildren granddaughter grandeur" -Greenblatt -Greenbriar -Greene -greenery -Greenfield -greengrocer -greenhouse -greenish -Greenland -Greensboro -greensward -.H 1 "handgun" -greenware -Greenwich -greenwood -Greer -greet -Greg -gregarious -Gregg -Gregory -.IND gremlin -grenade -Grendel -Grenoble -Gresham -Greta -Gretchen -grew -grey -greyhound -greylag -grid -griddle -gridiron -grief -grievance -grieve -grievous -griffin -Griffith -grill -grille -grilled -grillwork -grim -.IND grimace -Grimaldi -grime -Grimes -Grimm -grin -grind -grindstone -grip -gripe -grippe -grisly -grist -gristmill -Griswold -grit -gritty -grizzle -grizzly -groan -groat -grocer -grocery -groggy -.IND groin -grommet -groom -groove -grope -grosbeak -gross -.H 1 "handicapped handicapper handicapping handicraft handicraftsman" -Grosset -Grossman -Grosvenor -grotesque -Groton -ground -groundsel -groundskeep -groundwork -group -groupoid -grout -grove -grovel -Grover -grow -growl -grown -grownup -.IND growth -grub -grubby -grudge -gruesome -gruff -grumble -Grumman -grunt -gryphon -g's -GSA -GU -Guam -guanidine -guanine -guano -guarantee -guaranteeing -guarantor -guaranty -guard -guardhouse -.IND Guardia -guardian -Guatemala -.IND gubernatorial -Guelph -Guenther -guerdon -guernsey -guerrilla -guess -guesswork -guest -guffaw -Guggenheim -Guiana -guidance -guide -guidebook -guideline -guidepost -guiding -guignol -guild -.H 1 "handicraftsmen handiwork handkerchief handle" -guildhall -guile -Guilford -guillemot -guillotine -guilt -.IND guilty -guinea -guise -guitar -gules -gulf -.H 1 "handleable handlebar handline handmade handmaiden handout" -gull -Gullah -gullet -gullible -gully -gulp -gum -gumbo -gumdrop -gummy -gumption -gumshoe -gun -Gunderson -.IND gunfight -gunfire -gunflint -gunk -gunky -gunman -.IND gunmen -gunnery -gunny -gunplay -gunpowder -gunshot -gunsling -Gunther -gurgle -Gurkha -guru -Gus -gush -gusset -gust -Gustafson -Gustav -Gustave -Gustavus -gusto -gusty -gut -.H 1 "handset" -Gutenberg -Guthrie -gutsy -guttural -.IND guy -Guyana -guzzle -Gwen -Gwyn -gym -gymnasium -gymnast -gymnastic -gymnosperm -gyp -gypsite -gypsum -gypsy -gyrate -gyrfalcon -gyro -.IND gyrocompass -gyroscope -h -ha -Haag -Haas -habeas -haberdashery -Haberman -.IND Habib -habit -habitant -habitat -habitation -habitual -habituate -hacienda -hack -hackberry -Hackett -hackle -hackmatack -.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten" -hackney -hackneyed -hacksaw -had -Hadamard -Haddad -haddock -Hades -Hadley -hadn't -Hadrian -hadron -hafnium -.IND Hagen -Hager -haggard -haggle -Hagstrom -Hague -Hahn -Haifa -haiku -hail -hailstone -hailstorm -Haines -hair -.IND haircut -hairdo -hairpin -hairy -Haiti -Haitian -Hal -halcyon -hale -Haley -half -halfback -.IND halfhearted -halfway -halibut -halide -.H 1 "handy handyman handymen Haney Hanford hang hangable hangar" -Halifax -halite -hall -hallelujah -Halley -hallmark -hallow -Halloween -hallucinate -hallway -halma -halo -halocarbon -halogen -Halpern -Halsey -Halstead -halt -halvah -halve -Halverson -ham -.IND Hamal -Hamburg -hamburger -Hamilton -hamlet -Hamlin -hammerhead -hammock -Hammond -hamper -Hampshire -.IND Hampton -hamster -Han -.H 1 "hangman hangmen hangout hangover hank Hankel Hanley" -Hancock -hand -handbag -handbook -handclasp -handcuff -Handel -handful -handgun -handhold -handicap -handicapped -.IND handicapper -handicapping -handicraft -handicraftsman -handicraftsmen -handiwork -handkerchief -handle -handleable -handlebar -handline -handmade -handmaiden -handout -handset -handshake -handsome -handspike -handstand -handwaving -.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans" -handwrite -handwritten -handy -handyman -handymen -Haney -.IND Hanford -hang -hangable -hangar -hangman -hangmen -hangout -hangover -.IND hank -Hankel -Hanley -Hanlon -Hanna -Hannah -Hannibal -Hanoi -Hanover -Hanoverian -Hans -Hansel -Hansen -hansom -Hanson -Hanukkah -hap -.H 1 "Hansel" -haphazard -.IND haploid -haploidy -haplology -happen -happenstance -happy -Hapsburg -harangue -harass -Harbin -harbinger -Harcourt -hard -hardbake -hardboard -hardboiled -hardcopy -harden -hardhat -Hardin -.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy" -Harding -hardscrabble -hardtack -hardtop -hardware -hardwood -.IND hardworking -hardy -hare -harelip -harem -.IND hark -Harlan -Harlem -Harley -harm -harmful -Harmon -harmonic -harmonica -harmonious -.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin" -harmony -harness -Harold -harp -harpoon -harpsichord -Harpy -Harriet -Harriman -Harrington -Harris -.IND Harrisburg -Harrison -harrow -harry -harsh -harshen -hart -Hartford -Hartley -Hartman -Harvard -harvest -harvestman -Harvey -hash -hashish -hasn't -hasp -hassle -hast -haste -hasten -Hastings -hasty -hat -hatch -.IND hatchet -hatchway -.IND hate -hateful -hater -Hatfield -hath -Hathaway -hatred -Hatteras -Hattie -Hattiesburg -Haugen -haughty -haul -haulage -haunch -haunt -Hausdorff -Havana -have -haven -haven't -Havilland -havoc -haw -.IND Hawaii -Hawaiian -hawk -Hawkins -Hawley -hawthorn -.H 2 "hammock Hammond hamper Hampshire Hampton hamster" -Hawthorne -hay -Hayden -Haydn -Hayes -hayfield -Haynes -Hays -haystack -Hayward -hayward -hazard -hazardous -haze -hazel -hazelnut -hazy -he -head -.IND headache -.IND headboard -headdress -headland -headlight -headline -headmaster -headphone -headquarter -headquarters -headroom -headset -headsman -headsmen -headstand -headstone -headstrong -headwall -headwater -headway -headwind -heady -heal -Healey -health -healthful -healthy -.IND Healy -heap -hear -heard -hearken -hearsay -hearse -Hearst -heart -heartbeat -heartbreak -hearten -heartfelt -hearth -hearty -heat -heater -heath -heathen -heathenish -Heathkit -heave -.IND heaven -heavenward -heavy -heavyweight -.IND Hebe -hebephrenic -Hebraic -Hebrew -Hecate -hecatomb -heck -heckle -Heckman -hectic -hector -Hecuba -he'd -hedge -hedgehog -hedonism -hedonist -heed -heel -heft -hefty -Hegelian -hegemony -Heidelberg -heigh -height -.IND heighten -Heine -Heinrich -Heinz -heir -heiress -Heisenberg -held -Helen -Helena -Helene -Helga -helical -helicopter -heliocentric -heliotrope -helium -helix -he'll -.IND hell -hellbender -hellebore -Hellenic -hellfire -hellgrammite -hellish -.IND hello -helm -helmet -.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead" -Helmholtz -helmsman -helmsmen -Helmut -help -helpful -helpmate -Helsinki -Helvetica -hem -hematite -Hemingway -hemisphere -hemispheric -hemlock -hemoglobin -hemolytic -hemorrhage -hemorrhoid -hemosiderin -hemp -Hempstead -hen -.IND henbane -hence -henceforth -henchman -henchmen -Henderson -Hendrick -Hendricks -Hendrickson -henequen -Henley -henpeck -Henri -Henrietta -henry -hepatica -.IND hepatitis -Hepburn -heptane -her -Hera -Heraclitus -herald -herb -Herbert -Herculean -.IND Hercules -herd -herdsman -here -hereabout -hereafter -hereby -hereditary -heredity -Hereford -herein -hereinabove -hereinafter -hereinbelow -hereof -heresy -heretic -hereto -heretofore -hereunder -hereunto -herewith -heritable -heritage -Herkimer -Herman -.IND Hermann -hermeneutic -Hermes -hermetic -Hermite -hermitian -Hermosa -Hernandez -hero -Herodotus -heroes -heroic -heroin -.IND heroine -heroism -heron -herpes -herpetology -Herr -herringbone -Herschel -herself -Hershel -Hershey -hertz -Hertzog -.IND hesitant -hesitate -hesitater -Hesperus -Hess -Hesse -Hessian -Hester -heterocyclic -heterodyne -heterogamous -heterogeneity -heterogeneous -heterosexual -heterostructure -heterozygous -Hetman -Hettie -Hetty -Heublein -heuristic -Heusen -Heuser -hew -Hewett -Hewitt -.IND Hewlett -hewn -hex -hexachloride -hexadecimal -hexafluoride -hexagon -hexagonal -hexameter -hexane -.IND hey -heyday -hi -Hiatt -hiatus -Hiawatha -hibachi -Hibbard -hibernate -Hibernia -hick -Hickey -Hickman -hickory -Hicks -hid -.IND hidalgo -hidden -hide -hideaway -hideous -hideout -hierarchal -hierarchic -hierarchy -hieratic -hieroglyphic -Hieronymus -hifalutin -Higgins -high -highball -highboy -highest -highfalutin -highhanded -highland -highlight -highroad -hightail -highway -highwayman -.IND highwaymen -hijack -hijinks -hike -hilarious -hilarity -Hilbert -.IND Hildebrand -hill -hillbilly -Hillcrest -Hillel -hillman -hillmen -hillock -hillside -hilltop -hilly -hilt -Hilton -hilum -him -Himalaya -himself -hind -hindmost -.IND hindrance -hindsight -Hindu -Hinduism -Hines -hinge -Hinman -hint -hinterland -hip -hippo -Hippocrates -Hippocratic -hippodrome -hippopotamus -hippy -hipster -Hiram -hire -hireling -Hiroshi -Hiroshima -Hirsch -hirsute -his -Hispanic -.IND hiss -histamine -histidine -histochemic -.IND histochemistry -histogram -histology -historian -historic -historiography -history -histrionic -hit -Hitachi -hitch -Hitchcock -.H 1 "harbinger" -hither -hitherto -Hitler -hive -ho -hoagie -Hoagland -hoagy -hoar -hoard -.IND hoarfrost -hoarse -hob -Hobart -Hobbes -hobble -Hobbs -hobby -hobbyhorse -hobgoblin -hobo -Hoboken -hoc -hock -hockey -hocus -hodge -hodgepodge -Hodges -Hodgkin -hoe -Hoff -Hoffman -hog -hogan -hogging -.IND hoi -.IND Hokan -Holbrook -Holcomb -hold -holden -holdout -holdover -holdup -hole -holeable -holiday -Holland -Hollandaise -holler -Hollerith -Hollingsworth -Hollister -hollow -Holloway -hollowware -holly -hollyhock -Hollywood -Holm -Holman -.IND Holmdel -Holmes -holmium -holocaust -Holocene -hologram -holography -Holst -Holstein -holster -holt -Holyoke -.IND holystone -.INDP -inject injudicious Injun injunct injunction injure injurious injury -injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards -innate inner innermost innkeeper innocent innocuous innovate innuendo -innumerable inoculate inoffensive inoperable inoperative inopportune -inordinate inorganic input inputting inquest inquire inquiry inquisition diff --git a/contrib/groff/contrib/mm/examples/LT b/contrib/groff/contrib/mm/examples/LT deleted file mode 100644 index cf063897371c..000000000000 --- a/contrib/groff/contrib/mm/examples/LT +++ /dev/null @@ -1,1058 +0,0 @@ -.ND 1994-10-26 -.\" .WA "Nisse Nilsson" notitle -.\" .WE -.WA "Sven Olsson" title -Return address -Street -City, State Zip Code -Text -.WE -.IA "Inside address" title -Addressee name XXXXXXX -Title XXXXXXXXXXXXXXX -Company xxxxxxxxxxxx -Street xxxxxxxxxxxxxx -City, State Zip Code -Text xxxxxxxxxxxxxxxxxx -.IE -.LO CN -.LO RN "referens" -.LO AT Attention -.LO SA "Hej hopp" -.LO SJ "Subject line" -.LT BL -hepp -granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grandma -grandmother -grandnephew -grandniece -grandpa -grandparent -grandson -grandstand -granite -granitic -granny -granola -grant -grantee -grantor -granular -granulate -granule -Granville -grape -grapefruit -grapevine -graph -grapheme -graphic -graphite -grapple -grasp -grass -grassland -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -graven -Graves -gravestone -graveyard -gravid -gravitate -gravy -gray -graybeard -grayish -Grayson -graywacke -graze -grease -greasy -great -greatcoat -greater -grebe -Grecian -Greece -greed -greedy -Greek -green -Greenbelt -Greenberg -Greenblatt -Greenbriar -Greene -greenery -Greenfield -greengrocer -greenhouse -greenish -Greenland -Greensboro -greensward -greenware -Greenwich -greenwood -Greer -greet -Greg -gregarious -Gregg -Gregory -gremlin -grenade -Grendel -Grenoble -Gresham -Greta -Gretchen -grew -grey -greyhound -greylag -grid -griddle -gridiron -grief -grievance -grieve -grievous -griffin -Griffith -grill -grille -grilled -grillwork -grim -grimace -Grimaldi -grime -Grimes -Grimm -grin -grind -grindstone -grip -.P -gripe -grippe -grisly -grist -gristmill -Griswold -grit -gritty -grizzle -grizzly -groan -groat -grocer -grocery -groggy -groin -grommet -groom -groove -grope -grosbeak -gross -Grosset -Grossman -Grosvenor -grotesque -Groton -ground -groundsel -groundskeep -groundwork -group -groupoid -grout -grove -grovel -Grover -grow -growl -grown -grownup -growth -grub -grubby -grudge -gruesome -gruff -grumble -Grumman -grunt -gryphon -g's -GSA -GU -Guam -guanidine -guanine -guano -guarantee -guaranteeing -guarantor -guaranty -guard -guardhouse -Guardia -guardian -Guatemala -gubernatorial -Guelph -Guenther -guerdon -guernsey -guerrilla -guess -guesswork -guest -guffaw -Guggenheim -Guiana -guidance -guide -guidebook -guideline -guidepost -guiding -guignol -guild -guildhall -guile -Guilford -guillemot -guillotine -guilt -guilty -guinea -guise -guitar -gules -gulf -gull -Gullah -gullet -gullible -gully -gulp -gum -gumbo -gumdrop -gummy -gumption -gumshoe -gun -Gunderson -gunfight -gunfire -gunflint -gunk -gunky -gunman -gunmen -gunnery -gunny -gunplay -gunpowder -gunshot -gunsling -Gunther -gurgle -Gurkha -guru -Gus -gush -gusset -gust -Gustafson -Gustav -Gustave -Gustavus -gusto -gusty -gut -Gutenberg -Guthrie -gutsy -guttural -guy -.P -Guyana -guzzle -Gwen -Gwyn -gym -gymnasium -gymnast -gymnastic -gymnosperm -gyp -gypsite -gypsum -gypsy -gyrate -gyrfalcon -gyro -gyrocompass -gyroscope -h -ha -Haag -Haas -habeas -haberdashery -Haberman -Habib -habit -habitant -habitat -habitation -habitual -habituate -hacienda -hack -hackberry -Hackett -hackle -hackmatack -hackney -hackneyed -hacksaw -had -Hadamard -Haddad -haddock -Hades -Hadley -hadn't -Hadrian -hadron -hafnium -Hagen -Hager -haggard -haggle -Hagstrom -Hague -Hahn -Haifa -haiku -hail -hailstone -hailstorm -Haines -hair -haircut -hairdo -hairpin -hairy -Haiti -Haitian -Hal -halcyon -hale -Haley -half -halfback -halfhearted -halfway -halibut -halide -Halifax -halite -hall -hallelujah -Halley -hallmark -hallow -Halloween -hallucinate -hallway -halma -halo -halocarbon -halogen -Halpern -Halsey -Halstead -halt -halvah -halve -Halverson -ham -Hamal -Hamburg -hamburger -Hamilton -hamlet -Hamlin -hammerhead -hammock -Hammond -hamper -Hampshire -Hampton -hamster -Han -Hancock -hand -handbag -handbook -handclasp -handcuff -Handel -handful -handgun -handhold -handicap -handicapped -handicapper -handicapping -handicraft -handicraftsman -handicraftsmen -handiwork -handkerchief -handle -handleable -handlebar -handline -handmade -handmaiden -handout -handset -handshake -handsome -handspike -handstand -handwaving -handwrite -handwritten -handy -handyman -handymen -Haney -Hanford -hang -hangable -hangar -hangman -hangmen -hangout -hangover -hank -Hankel -Hanley -Hanlon -Hanna -Hannah -Hannibal -Hanoi -Hanover -Hanoverian -Hans -Hansel -Hansen -hansom -Hanson -Hanukkah -hap -haphazard -haploid -haploidy -haplology -happen -happenstance -happy -Hapsburg -harangue -harass -Harbin -harbinger -Harcourt -hard -hardbake -hardboard -hardboiled -hardcopy -harden -hardhat -Hardin -Harding -hardscrabble -hardtack -hardtop -hardware -hardwood -hardworking -hardy -hare -harelip -harem -hark -Harlan -Harlem -Harley -harm -harmful -Harmon -harmonic -harmonica -harmonious -harmony -harness -Harold -harp -harpoon -harpsichord -Harpy -Harriet -Harriman -Harrington -Harris -Harrisburg -Harrison -harrow -harry -harsh -harshen -hart -Hartford -Hartley -Hartman -Harvard -.P -harvest -harvestman -Harvey -hash -hashish -hasn't -hasp -hassle -hast -haste -hasten -Hastings -hasty -hat -hatch -hatchet -hatchway -hate -hateful -hater -Hatfield -hath -Hathaway -hatred -Hatteras -Hattie -Hattiesburg -Haugen -haughty -haul -haulage -haunch -haunt -Hausdorff -Havana -have -haven -haven't -Havilland -havoc -haw -Hawaii -Hawaiian -hawk -Hawkins -Hawley -hawthorn -Hawthorne -hay -Hayden -Haydn -Hayes -hayfield -Haynes -Hays -haystack -Hayward -hayward -hazard -hazardous -haze -hazel -hazelnut -hazy -he -head -headache -headboard -headdress -headland -headlight -headline -headmaster -headphone -headquarter -headquarters -headroom -headset -headsman -headsmen -headstand -headstone -headstrong -headwall -headwater -headway -headwind -heady -heal -Healey -health -healthful -healthy -Healy -heap -hear -heard -hearken -hearsay -hearse -Hearst -heart -heartbeat -heartbreak -hearten -heartfelt -hearth -hearty -heat -heater -heath -heathen -heathenish -Heathkit -heave -heaven -heavenward -heavy -heavyweight -Hebe -hebephrenic -Hebraic -Hebrew -Hecate -hecatomb -heck -heckle -Heckman -hectic -hector -Hecuba -he'd -hedge -hedgehog -hedonism -hedonist -heed -heel -heft -hefty -Hegelian -hegemony -Heidelberg -heigh -height -heighten -Heine -Heinrich -Heinz -heir -heiress -Heisenberg -held -Helen -Helena -Helene -Helga -helical -helicopter -heliocentric -heliotrope -helium -helix -he'll -hell -hellbender -hellebore -Hellenic -hellfire -hellgrammite -hellish -hello -helm -helmet -Helmholtz -helmsman -helmsmen -Helmut -help -helpful -helpmate -Helsinki -Helvetica -hem -hematite -Hemingway -hemisphere -hemispheric -hemlock -hemoglobin -hemolytic -hemorrhage -hemorrhoid -hemosiderin -hemp -Hempstead -hen -henbane -hence -henceforth -henchman -henchmen -Henderson -Hendrick -Hendricks -Hendrickson -henequen -Henley -henpeck -Henri -Henrietta -henry -hepatica -hepatitis -Hepburn -heptane -her -Hera -Heraclitus -herald -herb -Herbert -Herculean -Hercules -herd -herdsman -here -hereabout -hereafter -hereby -hereditary -heredity -Hereford -herein -hereinabove -hereinafter -hereinbelow -hereof -heresy -heretic -hereto -heretofore -hereunder -hereunto -.P -herewith -heritable -heritage -Herkimer -Herman -Hermann -hermeneutic -Hermes -hermetic -Hermite -hermitian -Hermosa -Hernandez -hero -Herodotus -heroes -heroic -heroin -heroine -heroism -heron -herpes -herpetology -Herr -herringbone -Herschel -herself -Hershel -Hershey -hertz -Hertzog -hesitant -hesitate -hesitater -Hesperus -Hess -Hesse -Hessian -Hester -heterocyclic -heterodyne -heterogamous -heterogeneity -heterogeneous -heterosexual -heterostructure -heterozygous -Hetman -Hettie -Hetty -Heublein -heuristic -Heusen -Heuser -hew -Hewett -Hewitt -Hewlett -hewn -hex -hexachloride -hexadecimal -hexafluoride -hexagon -hexagonal -hexameter -hexane -hey -heyday -hi -Hiatt -hiatus -Hiawatha -hibachi -Hibbard -hibernate -Hibernia -hick -Hickey -Hickman -hickory -Hicks -hid -hidalgo -hidden -hide -hideaway -hideous -hideout -hierarchal -hierarchic -hierarchy -hieratic -hieroglyphic -Hieronymus -hifalutin -Higgins -high -highball -highboy -highest -highfalutin -highhanded -highland -highlight -highroad -hightail -highway -highwayman -highwaymen -hijack -hijinks -hike -hilarious -hilarity -Hilbert -Hildebrand -hill -hillbilly -Hillcrest -Hillel -hillman -hillmen -hillock -hillside -hilltop -hilly -hilt -Hilton -hilum -him -Himalaya -himself -hind -hindmost -hindrance -hindsight -Hindu -Hinduism -Hines -hinge -Hinman -hint -hinterland -hip -hippo -Hippocrates -Hippocratic -hippodrome -hippopotamus -hippy -hipster -Hiram -hire -hireling -Hiroshi -Hiroshima -Hirsch -hirsute -his -Hispanic -hiss -histamine -histidine -histochemic -histochemistry -histogram -histology -historian -historic -historiography -history -histrionic -hit -Hitachi -hitch -Hitchcock -hither -hitherto -Hitler -hive -ho -hoagie -Hoagland -hoagy -hoar -hoard -hoarfrost -hoarse -hob -Hobart -Hobbes -hobble -Hobbs -hobby -.P -hobbyhorse -hobgoblin -hobo -Hoboken -hoc -hock -hockey -hocus -hodge -hodgepodge -Hodges -Hodgkin -hoe -Hoff -Hoffman -hog -hogan -hogging -hoi -Hokan -Holbrook -Holcomb -hold -holden -holdout -holdover -holdup -hole -holeable -holiday -Holland -Hollandaise -holler -Hollerith -Hollingsworth -Hollister -hollow -Holloway -hollowware -holly -hollyhock -Hollywood -Holm -Holman -Holmdel -Holmes -holmium -holocaust -Holocene -hologram -holography -Holst -Holstein -holster -holt -Holyoke -holystone -.FC -.SG -.NS 7 -text text text -text text text -.NS 12 -Holyoke -holystone -.NS -holt -.NE diff --git a/contrib/groff/contrib/mm/examples/LT.se b/contrib/groff/contrib/mm/examples/LT.se deleted file mode 100644 index bfbd77f5543e..000000000000 --- a/contrib/groff/contrib/mm/examples/LT.se +++ /dev/null @@ -1,1062 +0,0 @@ -.\" groff -mmse LT.se -.ND 1994-10-26 -.WA "Sven Olsson" title -Return address -Street -City, State Zip Code -Text -.WE -.IA "Inside address" title -Addressee name XXXXXXX -Title XXXXXXXXXXXXXXX -Company xxxxxxxxxxxx -Street xxxxxxxxxxxxxx -City, State Zip Code -Text xxxxxxxxxxxxxxxxxx -.IE -.LO DNAMN Dokumentnamn -.LO MDAT 1994-01-01 -.LO BIL 2 -.LO KOMP Kompletteringsuppgift -.LO DBET dokumentnummer -.LO BET ärendebeteckning -.LO MBET "Mottagarens b" -.LO SIDOR 22 -.\" vänster eller högerställt brev -.\" .LT SVH -.LT SVV -hepp -granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grandma -grandmother -grandnephew -grandniece -grandpa -grandparent -grandson -grandstand -granite -granitic -granny -granola -grant -grantee -grantor -granular -granulate -granule -Granville -grape -grapefruit -grapevine -graph -grapheme -graphic -graphite -grapple -grasp -grass -grassland -grassy -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -graven -Graves -gravestone -graveyard -gravid -gravitate -gravy -gray -graybeard -grayish -Grayson -graywacke -graze -grease -greasy -great -greatcoat -greater -grebe -Grecian -Greece -greed -greedy -Greek -green -Greenbelt -Greenberg -Greenblatt -Greenbriar -Greene -greenery -Greenfield -greengrocer -greenhouse -greenish -Greenland -Greensboro -greensward -greenware -Greenwich -greenwood -Greer -greet -Greg -gregarious -Gregg -Gregory -gremlin -grenade -Grendel -Grenoble -Gresham -Greta -Gretchen -grew -grey -greyhound -greylag -grid -griddle -gridiron -grief -grievance -grieve -grievous -griffin -Griffith -grill -grille -grilled -grillwork -grim -grimace -Grimaldi -grime -Grimes -Grimm -grin -grind -grindstone -grip -.P -gripe -grippe -grisly -grist -gristmill -Griswold -grit -gritty -grizzle -grizzly -groan -groat -grocer -grocery -groggy -groin -grommet -groom -groove -grope -grosbeak -gross -Grosset -Grossman -Grosvenor -grotesque -Groton -ground -groundsel -groundskeep -groundwork -group -groupoid -grout -grove -grovel -Grover -grow -growl -grown -grownup -growth -grub -grubby -grudge -gruesome -gruff -grumble -Grumman -grunt -gryphon -g's -GSA -GU -Guam -guanidine -guanine -guano -guarantee -guaranteeing -guarantor -guaranty -guard -guardhouse -Guardia -guardian -Guatemala -gubernatorial -Guelph -Guenther -guerdon -guernsey -guerrilla -guess -guesswork -guest -guffaw -Guggenheim -Guiana -guidance -guide -guidebook -guideline -guidepost -guiding -guignol -guild -guildhall -guile -Guilford -guillemot -guillotine -guilt -guilty -guinea -guise -guitar -gules -gulf -gull -Gullah -gullet -gullible -gully -gulp -gum -gumbo -gumdrop -gummy -gumption -gumshoe -gun -Gunderson -gunfight -gunfire -gunflint -gunk -gunky -gunman -gunmen -gunnery -gunny -gunplay -gunpowder -gunshot -gunsling -Gunther -gurgle -Gurkha -guru -Gus -gush -gusset -gust -Gustafson -Gustav -Gustave -Gustavus -gusto -gusty -gut -Gutenberg -Guthrie -gutsy -guttural -guy -.P -Guyana -guzzle -Gwen -Gwyn -gym -gymnasium -gymnast -gymnastic -gymnosperm -gyp -gypsite -gypsum -gypsy -gyrate -gyrfalcon -gyro -gyrocompass -gyroscope -h -ha -Haag -Haas -habeas -haberdashery -Haberman -Habib -habit -habitant -habitat -habitation -habitual -habituate -hacienda -hack -hackberry -Hackett -hackle -hackmatack -hackney -hackneyed -hacksaw -had -Hadamard -Haddad -haddock -Hades -Hadley -hadn't -Hadrian -hadron -hafnium -Hagen -Hager -haggard -haggle -Hagstrom -Hague -Hahn -Haifa -haiku -hail -hailstone -hailstorm -Haines -hair -haircut -hairdo -hairpin -hairy -Haiti -Haitian -Hal -halcyon -hale -Haley -half -halfback -halfhearted -halfway -halibut -halide -Halifax -halite -hall -hallelujah -Halley -hallmark -hallow -Halloween -hallucinate -hallway -halma -halo -halocarbon -halogen -Halpern -Halsey -Halstead -halt -halvah -halve -Halverson -ham -Hamal -Hamburg -hamburger -Hamilton -hamlet -Hamlin -hammerhead -hammock -Hammond -hamper -Hampshire -Hampton -hamster -Han -Hancock -hand -handbag -handbook -handclasp -handcuff -Handel -handful -handgun -handhold -handicap -handicapped -handicapper -handicapping -handicraft -handicraftsman -handicraftsmen -handiwork -handkerchief -handle -handleable -handlebar -handline -handmade -handmaiden -handout -handset -handshake -handsome -handspike -handstand -handwaving -handwrite -handwritten -handy -handyman -handymen -Haney -Hanford -hang -hangable -hangar -hangman -hangmen -hangout -hangover -hank -Hankel -Hanley -Hanlon -Hanna -Hannah -Hannibal -Hanoi -Hanover -Hanoverian -Hans -Hansel -Hansen -hansom -Hanson -Hanukkah -hap -haphazard -haploid -haploidy -haplology -happen -happenstance -happy -Hapsburg -harangue -harass -Harbin -harbinger -Harcourt -hard -hardbake -hardboard -hardboiled -hardcopy -harden -hardhat -Hardin -Harding -hardscrabble -hardtack -hardtop -hardware -hardwood -hardworking -hardy -hare -harelip -harem -hark -Harlan -Harlem -Harley -harm -harmful -Harmon -harmonic -harmonica -harmonious -harmony -harness -Harold -harp -harpoon -harpsichord -Harpy -Harriet -Harriman -Harrington -Harris -Harrisburg -Harrison -harrow -harry -harsh -harshen -hart -Hartford -Hartley -Hartman -Harvard -.P -harvest -harvestman -Harvey -hash -hashish -hasn't -hasp -hassle -hast -haste -hasten -Hastings -hasty -hat -hatch -hatchet -hatchway -hate -hateful -hater -Hatfield -hath -Hathaway -hatred -Hatteras -Hattie -Hattiesburg -Haugen -haughty -haul -haulage -haunch -haunt -Hausdorff -Havana -have -haven -haven't -Havilland -havoc -haw -Hawaii -Hawaiian -hawk -Hawkins -Hawley -hawthorn -Hawthorne -hay -Hayden -Haydn -Hayes -hayfield -Haynes -Hays -haystack -Hayward -hayward -hazard -hazardous -haze -hazel -hazelnut -hazy -he -head -headache -headboard -headdress -headland -headlight -headline -headmaster -headphone -headquarter -headquarters -headroom -headset -headsman -headsmen -headstand -headstone -headstrong -headwall -headwater -headway -headwind -heady -heal -Healey -health -healthful -healthy -Healy -heap -hear -heard -hearken -hearsay -hearse -Hearst -heart -heartbeat -heartbreak -hearten -heartfelt -hearth -hearty -heat -heater -heath -heathen -heathenish -Heathkit -heave -heaven -heavenward -heavy -heavyweight -Hebe -hebephrenic -Hebraic -Hebrew -Hecate -hecatomb -heck -heckle -Heckman -hectic -hector -Hecuba -he'd -hedge -hedgehog -hedonism -hedonist -heed -heel -heft -hefty -Hegelian -hegemony -Heidelberg -heigh -height -heighten -Heine -Heinrich -Heinz -heir -heiress -Heisenberg -held -Helen -Helena -Helene -Helga -helical -helicopter -heliocentric -heliotrope -helium -helix -he'll -hell -hellbender -hellebore -Hellenic -hellfire -hellgrammite -hellish -hello -helm -helmet -Helmholtz -helmsman -helmsmen -Helmut -help -helpful -helpmate -Helsinki -Helvetica -hem -hematite -Hemingway -hemisphere -hemispheric -hemlock -hemoglobin -hemolytic -hemorrhage -hemorrhoid -hemosiderin -hemp -Hempstead -hen -henbane -hence -henceforth -henchman -henchmen -Henderson -Hendrick -Hendricks -Hendrickson -henequen -Henley -henpeck -Henri -Henrietta -henry -hepatica -hepatitis -Hepburn -heptane -her -Hera -Heraclitus -herald -herb -Herbert -Herculean -Hercules -herd -herdsman -here -hereabout -hereafter -hereby -hereditary -heredity -Hereford -herein -hereinabove -hereinafter -hereinbelow -hereof -heresy -heretic -hereto -heretofore -hereunder -hereunto -.P -herewith -heritable -heritage -Herkimer -Herman -Hermann -hermeneutic -Hermes -hermetic -Hermite -hermitian -Hermosa -Hernandez -hero -Herodotus -heroes -heroic -heroin -heroine -heroism -heron -herpes -herpetology -Herr -herringbone -Herschel -herself -Hershel -Hershey -hertz -Hertzog -hesitant -hesitate -hesitater -Hesperus -Hess -Hesse -Hessian -Hester -heterocyclic -heterodyne -heterogamous -heterogeneity -heterogeneous -heterosexual -heterostructure -heterozygous -Hetman -Hettie -Hetty -Heublein -heuristic -Heusen -Heuser -hew -Hewett -Hewitt -Hewlett -hewn -hex -hexachloride -hexadecimal -hexafluoride -hexagon -hexagonal -hexameter -hexane -hey -heyday -hi -Hiatt -hiatus -Hiawatha -hibachi -Hibbard -hibernate -Hibernia -hick -Hickey -Hickman -hickory -Hicks -hid -hidalgo -hidden -hide -hideaway -hideous -hideout -hierarchal -hierarchic -hierarchy -hieratic -hieroglyphic -Hieronymus -hifalutin -Higgins -high -highball -highboy -highest -highfalutin -highhanded -highland -highlight -highroad -hightail -highway -highwayman -highwaymen -hijack -hijinks -hike -hilarious -hilarity -Hilbert -Hildebrand -hill -hillbilly -Hillcrest -Hillel -hillman -hillmen -hillock -hillside -hilltop -hilly -hilt -Hilton -hilum -him -Himalaya -himself -hind -hindmost -hindrance -hindsight -Hindu -Hinduism -Hines -hinge -Hinman -hint -hinterland -hip -hippo -Hippocrates -Hippocratic -hippodrome -hippopotamus -hippy -hipster -Hiram -hire -hireling -Hiroshi -Hiroshima -Hirsch -hirsute -his -Hispanic -hiss -histamine -histidine -histochemic -histochemistry -histogram -histology -historian -historic -historiography -history -histrionic -hit -Hitachi -hitch -Hitchcock -hither -hitherto -Hitler -hive -ho -hoagie -Hoagland -hoagy -hoar -hoard -hoarfrost -hoarse -hob -Hobart -Hobbes -hobble -Hobbs -hobby -.P -hobbyhorse -hobgoblin -hobo -Hoboken -hoc -hock -hockey -hocus -hodge -hodgepodge -Hodges -Hodgkin -hoe -Hoff -Hoffman -hog -hogan -hogging -hoi -Hokan -Holbrook -Holcomb -hold -holden -holdout -holdover -holdup -hole -holeable -holiday -Holland -Hollandaise -holler -Hollerith -Hollingsworth -Hollister -hollow -Holloway -hollowware -holly -hollyhock -Hollywood -Holm -Holman -Holmdel -Holmes -holmium -holocaust -Holocene -hologram -holography -Holst -Holstein -holster -holt -Holyoke -holystone -.FC -.SG -.NS 7 -text text text -text text text -.NS 12 -Holyoke -holystone -.NS -holt -.NE diff --git a/contrib/groff/contrib/mm/examples/ML b/contrib/groff/contrib/mm/examples/ML deleted file mode 100644 index bbfca3def549..000000000000 --- a/contrib/groff/contrib/mm/examples/ML +++ /dev/null @@ -1,169 +0,0 @@ -granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grandma -grandmother -grandnephew -grandniece -grandpa -.ML MARK -.LI "LOCALMARK" -granola -grant -grantee -grantor -granular -granulate -granule -Granville -grape -grapefruit -grapevine -.LI -.DS -Where shall we put this. -Where shall we put this. -Where shall we put this. -.DE -.LI -granola -grant -grantee -grantor -granular -granulate -granule -Granville -grape -grapefruit -grapevine -.LI -.DS -Where shall we put this. -.DE -.LI -graphic -graphite -grapple -grasp -grass -grassland -grassy -.LI -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -.LI -gratuity -grave -gravel -.LE -.SP 3 -.ML $ 1c -.LI -graven -Graves -gravestone -graveyard -gravid -gravitate -gravy -gray -.LI -graybeard -grayish -Grayson -graywacke -graze -grease -greasy -great -greatcoat -.LI -greater -grebe -Grecian -Greece -greed -greedy -Greek -green -.LI -Greenbelt -Greenberg -Greenblatt -Greenbriar -Greene -greenery -.LE -.SP 3 -.ML X 1c 1 -.LI -Greenfield -greengrocer -grandson -grandstand -granite -granitic -granny -graph -.LI -grapheme -greenhouse -greenish -Greenland -Greensboro -granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -.LI -grandma -grandmother -grandnephew -grandniece -grandpa -grandparent -grandson -grandstand -granite -granitic -granny -.LI -granola -grant -grantee -grantor -granular -granulate -granule -Granville -grape -grapefruit -.LI -grapevine -graph -grapheme -graphic -graphite -grapple -grasp -grass -grassland -.LE diff --git a/contrib/groff/contrib/mm/examples/MOVE b/contrib/groff/contrib/mm/examples/MOVE deleted file mode 100644 index 0f0399cc7a35..000000000000 --- a/contrib/groff/contrib/mm/examples/MOVE +++ /dev/null @@ -1,175 +0,0 @@ -.PH "'hej'hopp'i skogen'" -.PF "'livet'är'härligt'" -.OH "'ojämn'%'sida'" -.EH "'ojämn'%'sida'" -.OF "'ojämn'%'sida'" -.EF "'ojämn'%'sida'" -10th -1st -2nd -3rd -4th -5th -6th -7th -8th -9th -a -AAA -AAAS -Aarhus -Aaron -AAU -ABA -Ababa -aback -abacus -abalone -abandon -abase -abash -abate -abater -abbas -abbe -abbey -abbot -Abbott -abbreviate -abc -abdicate -abdomen -abdominal -abet -abetted -abetting -abeyance -abeyant -abhorred -abhorrent -abide -Abidjan -Abigail -abject -ablate -ablaze -able -ablution -Abner -.MOVE 50 20 -abnormal -Abo -aboard -abode -abolish -abolition -abominable -abominate -aboriginal -AAA -ABORIGINE -ABORNING -ABORT -ABOUND -ABOUT -ABOVE -ABOVEBOARD -ABOVEGROUND -abovementioned -abrade -Abraham -Abram -Abramson -abrasion -abrasive -abreact -abreast -BBB -ABRIDGE -ABRIDGMENT -ABROAD -abrogate -abrupt -abscess -abscissa -abscissae -absence -absent -absentee -absenteeism -absentia -absentminded -.MOVE 30 10 -absinthe -absolute -absolution -absolve -absorb -absorbent -absorption -absorptive -abstain -abstention -abstinent -abstract -abstracter -abstractor -CCC -ABSTRUSE -ABSURD -ABUILDING -ABUNDANT -ABUSABLE -ABUSE -ABUSIVE -ABUT -ABUTTED -ABUTTING -ABYSMAL -ABYSS -ABYSSINIA -AC -ACADEME -ACADEMIA -ACADEMIC -ACADEMICIAN -ACADEMY -ACADIA -ACANTHUS -ACAPULCO -ACCEDE -ACCELERATE -ACCELEROMETER -ACCENT -ACCENTUAL -ACCENTUATE -ACCEPT -ACCEPTANT -acceptor -access -.MOVE 62 0 20 -accessible -accession -accessory -accident -accidental -accipiter -acclaim -acclamation -acclimate -accolade -accommodate -accompaniment -accompanist -accompany -accomplice -accomplish -accord -accordant -DDD -ACCORDION -ACCOST -ACCOUNT -ACCOUNTANT -ACCRA -.PGFORM diff --git a/contrib/groff/contrib/mm/examples/MUL b/contrib/groff/contrib/mm/examples/MUL deleted file mode 100644 index ae91fae0d404..000000000000 --- a/contrib/groff/contrib/mm/examples/MUL +++ /dev/null @@ -1,535 +0,0 @@ -inject -injudicious -Injun -injunct -injunction -injure -injurious -injury -injustice -ink -inkling -inlaid -inland -inlay -inlet -Inman -inmate -inn -innards -innate -inner -innermost -innkeeper -innocent -innocuous -innovate -innuendo -innumerable -inoculate -inoffensive -inoperable -inoperative -inopportune -inordinate -inorganic -input -inputting -inquest -inquire -inquiry -inquisition -inquisitive -inquisitor -inroad -insane -insatiable -inscribe -inscription -inscrutable -insect -insecticide -insecure -inseminate -insensible -insensitive -inseparable -insert -inset -inshore -inside -insidious -insight -insightful -insignia -insignificant -insincere -insinuate -insipid -insist -insistent -insofar -insolent -insoluble -insolvable -insolvent -insomnia -insomniac -insouciant -inspect -inspector -inspiration -inspire -instable -install -installation -instalment -instance -instant -instantaneous -instantiate -instead -instep -instigate -instill -instillation -instinct -instinctual -institute -institution -instruct -instructor -instrument -instrumentation -insubordinate -insubstantial -insufferable -insufficient -insular -insulate -insulin -insult -insuperable -insupportable -insuppressible -insurance -insure -insurgent -insurmountable -insurrect -insurrection -intact -intake -intangible -integer -integrable -.MULB 4c 1 5c 1 4c 1 3c -Grenoble -Gresham -Greta -Gretchen -grew -grieve -grievous -griffin -Griffith -grill -grille -grilled -grillwork -grim -grimace -Grimaldi -grime -Grimes -Grimm -grin -grind -grindstone -grip -gripe -grippe -grisly -grist -gristmill -Griswold -grit -gritty -grizzle -grizzly -groan -groat -grocer -grocery -groggy -groin -grommet -groom -groove -grope -grosbeak -gross -.MULN -h -ha -Haag -Haas -habeas -haberdashery -Haberman -Habib -habit -habitant -habitat -habitation -habitual -habituate -hacienda -hack -hackberry -Hackett -hackle -hackmatack -hackney -hackneyed -hacksaw -had -Hadamard -Haddad -haddock -Hades -Hadley -hadn't -Hadrian -hadron -hafnium -Hagen -Hager -haggard -haggle -Hagstrom -Hague -Hahn -Haifa -haiku -hail -hailstone -hailstorm -Haines -hair -haircut -hairdo -hairpin -hairy -Haiti -Haitian -Hal -halcyon -hale -Haley -half -halfback -halfhearted -halfway -halibut -halide -Halifax -halite -hall -hallelujah -Halley -hallmark -hallow -Halloween -hallucinate -hallway -halma -halo -halocarbon -halogen -Halpern -Halsey -Halstead -halt -halvah -halve -Halverson -ham -Hamal -Hamburg -hamburger -Hamilton -hamlet -Hamlin -hammerhead -hammock -Hammond -hamper -Hampshire -Hampton -hamster -Han -Hancock -hand -handbag -handbook -handclasp -handcuff -.MULN -coliform -coliseum -collaborate -collage -collagen -collapse -collapsible -collar -collarbone -collard -collate -collateral -colleague -collect -collectible -collector -college -collegial -collegian -collegiate -collet -collide -collie -Collier -collimate -collinear -Collins -collision -collocation -colloidal -Colloq -colloquia -colloquial -colloquium -colloquy -command -commandant -commandeer -commando -commemorate -commend -commendation -commendatory -commensurable -commensurate -comment -commentary -commentator -commerce -commercial -commingle -commiserate -commissariat -commissary -commission -commit -committable -committal -committed -committee -committeeman -committeemen -committeewoman -committeewomen -committing -commodious -commodity -commodore -common -commonality -.MULN -locoweed -lunch -luncheon -lunchroom -lunchtime -Lund -Lundberg -Lundquist -lung -lunge -lupine -Lura -lurch -lure -lurid -lurk -Lusaka -luscious -lush -lust -lustful -lustrous -lusty -lutanist -lute -lutetium -Luther -Lutheran -Lutz -lymphocyte -lymphoma -lynch -Lynchburg -Lynn -lynx -Lyon -Lyons -Lyra -lyric -lyricism -Lysenko -lysergic -lysine -.MULE -m -ma -Mabel -Mac -macabre -macaque -MacArthur -Macassar -Macbeth -MacDonald -MacDougall -mace -Macedon -Macedonia -MacGregor -Mach -Machiavelli -machination -machine -machinelike -machinery -machismo -macho -macintosh -mack -MacKenzie -mackerel -Mackey -Mackinac -Mackinaw -mackintosh -MacMillan -Macon -macrame -macro -macromolecular -macromolecule -macrophage -macroprocessor -macroscopic -macrostructure -mad -Madagascar -madam -Madame -madcap -madden -Maddox -made -Madeira -Madeleine -Madeline -madhouse -Madison -madman -madmen -Madonna -Madras -Madrid -madrigal -Madsen -madstone -Mae -Maelstrom -maestro -Mafia -magazine -Magdalene -magenta -Maggie -maggot -maggoty -magi -magic -magician -magisterial -magistrate -magma -magna -magnanimity -magnanimous -magnate -magnesia -magnesite -magnesium -magnet -magnetic -magnetite -magneto -magnetron -magnificent -magnify -magnitude -magnolia -magnum -Magnuson -Magog -magpie -Magruder -Mahayana -Mahayanist -mahogany -Mahoney -maid -maiden -maidenhair -maidservant -Maier -mail -mailbox -mailman -mailmen -maim -main -Maine -mainland -mainline -mainstay -mainstream -maintain -maintenance -maitre -majestic -majesty -major -make -makeshift -makeup -Malabar -maladapt -maladaptive -maladjust -maladroit -malady -Malagasy -malaise -malaprop -malaria -malarial -Malawi -Malay -Malaysia diff --git a/contrib/groff/contrib/mm/examples/NCOL b/contrib/groff/contrib/mm/examples/NCOL deleted file mode 100644 index 82c6f8d50812..000000000000 --- a/contrib/groff/contrib/mm/examples/NCOL +++ /dev/null @@ -1,196 +0,0 @@ -granary -grand -grandchild -grandchildren -granddaughter -grandeur -grandfather -grandiloquent -grandiose -grandma -grandmother -grandnephew -grandniece -grandpa -grandparent -grandson -grandstand -granite -granitic -granny -granola -grant -grantee -grantor -granular -granulate -granule -Granville -grape -grapefruit -grapevine -graph -grapheme -graphic -graphite -grapple -grasp -grass -grassland -grassy -.MC 3c -grata -grate -grateful -grater -gratify -gratis -gratitude -gratuitous -gratuity -grave -gravel -graven -Graves -gravestone -graveyard -gravid -gravitate -gravy -gray -graybeard -grayish -Grayson -graywacke -graze -grease -greasy -great -greatcoat -greater -grebe -Grecian -Greece -greed -greedy -.NCOL -Greek -green -Greenbelt -Greenberg -Greenblatt -Greenbriar -Greene -greenery -Greenfield -greengrocer -greenhouse -greenish -Greenland -Greensboro -greensward -greenware -Greenwich -greenwood -Greer -greet -Greg -gregarious -Gregg -Gregory -gremlin -grenade -Grendel -Grenoble -Gresham -Greta -Gretchen -grew -grey -greyhound -greylag -grid -griddle -gridiron -grief -grievance -grieve -grievous -griffin -Griffith -grill -grille -grilled -grillwork -.NCOL -grim -grimace -Grimaldi -grime -Grimes -Grimm -grin -grind -grindstone -grip -gripe -grippe -grisly -grist -gristmill -Griswold -grit -gritty -grizzle -grizzly -groan -groat -grocer -grocery -groggy -groin -grommet -groom -groove -grope -grosbeak -gross -Grosset -Grossman -Grosvenor -grotesque -Groton -ground -groundsel -groundskeep -groundwork -group -groupoid -grout -grove -grovel -Grover -grow -growl -grown -grownup -growth -grub -grubby -grudge -gruesome -gruff -grumble -Grumman -grunt -gryphon -g's -GSA -GU -Guam -guanidine -guanine -guano -guarantee -guaranteeing -guarantor diff --git a/contrib/groff/contrib/mm/examples/ND b/contrib/groff/contrib/mm/examples/ND deleted file mode 100644 index 4b3694a37261..000000000000 --- a/contrib/groff/contrib/mm/examples/ND +++ /dev/null @@ -1,17 +0,0 @@ -.nf ----------------------------------------------------------------------- -.ce -Testing ----------------------------------------------------------------------- -Date = \*[DT] -.ISODATE -Date = \*[DT] -.ISODATE 0 - -.ND "13 August 1992" -Date = \*[DT] - -.ISODATE -.ND "14 August 1992" -Date = \*[DT] ----------------------------------------------------------------------- diff --git a/contrib/groff/contrib/mm/examples/README b/contrib/groff/contrib/mm/examples/README deleted file mode 100644 index cb6980f85327..000000000000 --- a/contrib/groff/contrib/mm/examples/README +++ /dev/null @@ -1,32 +0,0 @@ - -This directory contains examples of my enhancements to MM. - -APP The appendix macro -B1B2 Box macro with text -COVER My general cover macro, this example is using - ms.cov. -IND A general indexing method, see manual for INITI -LT The letter macro -LT.se A swedish example with the extra - swedish macros for getting a letter conforming - to swedish standard letter, both left and right adjusted. -ML Marked list, an extended list type -MOVE The MOVE macro, how to begin to print on an exact position. -MUL Enhanced multicolumn mode. -NCOL Start on next column. (Not for MUL*) -ND New date, with iso date example -References How to use references -SETR General reference system, see manual for INITR - - -Examples that I should have: - -PIC How to include postscript pictures, see manual for PIC -VERBON Begin verbatim output - - -And remember, check the manual for all string and number registers, -I've made shure that mgm will be useful in several languages -and all english output can be redefined. -Check the manual for groff_mse (swedish format) and the -macro file, tmac.mse. diff --git a/contrib/groff/contrib/mm/examples/References b/contrib/groff/contrib/mm/examples/References deleted file mode 100644 index 72f648220903..000000000000 --- a/contrib/groff/contrib/mm/examples/References +++ /dev/null @@ -1,975 +0,0 @@ -.PH "'this'is'a header'" -.PF "'this'is'a footer'" -.OH "'odd'%'page'" -.EH "'even'%'page'" -.OF "'odd'%'page'" -.EF "'even'%'page'" -10th -1st -2nd -3rd -4th -5th -6th -7th -8th -9th -a -AAA -.B -AAAS -Aarhus -Aaron -.R -AAU -ABA -Ababa -aback -abacus -abalone -abandon -abase -.H 1 "hej hopp" -abash -abate -abater -abbas -abbe -abbey -abbot -Abbott -abbreviate -abc -abdicate -abdomen -abet -abetted -abetting -abeyance -abeyant -.H 2 "hej hopp" -abhorred -abhorrent -abide -Abidjan -Abigail -abject -ablate -ablaze -able -ablution -Abner -abnormal -.H 2 "hej hopp" -Abo -aboard -abode -abolish -.HU "hej hopp" -.B1 -abolition -abominable -abominate\*(Rf -aboriginal -.RS -AAA -ABORIGINE -ABORNING -ABORT -ABOUND -ABOUT -ABOVE -ABOVEBOARD -ABOVEGROUND -.RF -abovementioned -abrade -Abraham\*(Rf -Abram\*(Rf -Abramson\*(Rf -abrasion\*(Rf -abrasive\*(Rf -abreact\*(Rf -.B2 -abreast\*(Rf -.RS -BBB -ABRIDGE -ABRIDGMENT -ABROAD -.RF -abrogate -abrupt -abscess\*(Rf -abscissa\*(Rf -abscissae\*(Rf -absence\*(Rf -absent -absentee -absenteeism -absentia -.H 3 "hej hopp" -absentminded -absinthe -absolute -absolution -absolve -absorb -absorbent -absorption -absorptive -abstain -abstention -abstinent\*(Rf -abstract -abstracter -abstractor -.RS nisse -CCC -ABSTRUSE -ABSURD -ABUILDING -ABUNDANT -ABUSABLE -ABUSE -ABUSIVE -ABUT -ABUTTED -ABUTTING -ABYSMAL -ABYSS -ABYSSINIA -AC -ACADEME -ACADEMIA -ACADEMIC -ACADEMICIAN -ACADEMY -ACADIA -ACANTHUS -ACAPULCO -ACCEDE -ACCELERATE -ACCELEROMETER -ACCENT -ACCENTUAL -ACCENTUATE -ACCEPT -ACCEPTANT -.RF -acceptor -access -accessible -accession -Ref \*[nisse] -accessory -.H 4 "hej hopp" -accident -accidental -accipiter -acclaim -acclamation -acclimate -accolade -accommodate -accompaniment -accompanist -accompany -accomplice -accomplish\*(Rf -accord -accordant -.RS -DDD -ACCORDION -ACCOST -ACCOUNT -ACCOUNTANT -ACCRA -ACCREDIT -ACCREDITATE -ACCREDITATION -ACCRETION -ACCRUAL -ACCRUE -.RF -acculturate -accumulate -accuracy -accurate -accusation -accusative -accusatory -accuse -accustom -ace -acerbic -acerbity -acetate -acetic -acetone -acetylene -ache -achieve -Achilles -aching -achromatic -acid -acidic -acidulous -.H 5 "hej hopp" -Ackerman -Ackley -acknowledge -acknowledgeable -ACM -acme -acolyte -acorn -acoustic -acquaint -acquaintance -acquiesce -acquiescent -acquire -acquisition -acquisitive -acquit -acquittal -acquitting -acre -acreage -acrid -acrimonious -acrimony -acrobacy -acrobat -acrobatic -acronym -acropolis -across -acrylate -acrylic -ACS -act -Actaeon -actinic -actinide -actinium -actinolite -actinometer -activate -activation -activism -Acton -actor -actress -Acts -actual -actuarial -actuate -.H 6 "hej hopp" -acuity -acumen -acute -acyclic -ad -Ada -adage -adagio -Adair -Adam -adamant -Adams -Adamson -adapt -adaptation -adaptive -add -added -addend -addenda -addendum -addict -Addis -Addison -addition -additional -additive -addle -address -addressee -Addressograph -adduce -Adelaide -Adele -Adelia -Aden -adenine -adenoma -adenosine -adept -adequacy -adequate -adhere -adherent -adhesion -adhesive -adiabatic -adieu -adipic -Adirondack -.H 7 "hej hopp" -adjacent -adject -adjectival -adjective -adjoin -adjoint -adjourn -adjudge -adjudicate -adjunct -adjust -adjutant -Adkins -Adler -administer -administrable -administrate -administratrix -admiral -admiralty -admiration -admire -admissible -admission -admit -admittance -admitted -admitting -admix -admixture -admonish -admonition -ado -adobe -adolescent -Adolph -Adolphus -Adonis -adopt -adoption -adoptive -adore -adorn -adposition -adrenal -adrenaline -Adrian -Adriatic -Adrienne -adrift -adroit -adsorb -adsorbate -adsorption -adsorptive -adulate -adult -adulterate -adulterous -adultery -adulthood -advance -advantage -advantageous -advent -adventitious -adventure -adventurous -adverb -adverbial -adversary -adverse -advert -advertise -advice -advisable -advise -advisee -advisor -advisory -advocacy -advocate -Aegean -aegis -Aeneas -Aeneid -aeolian -Aeolus -aerate -aerial -Aerobacter -aerobic -aerodynamic -aerogene -aeronautic -aerosol -aerospace -Aeschylus -aesthete -aesthetic -10th -1st -2nd -3rd -4th -5th -6th -7th -8th -9th -a -AAA -AAAS -Aarhus -Aaron -AAU -ABA -Ababa -aback -abacus -abalone -abandon -abase -.H 1 "hej hopp" -abash -abate -abater -abbas -abbe -abbey -abbot -Abbott -abbreviate -abc -abdicate -abdomen -abdominal -abduct -Abe -abed -Abel -Abelian -Abelson -Aberdeen -Abernathy -aberrant -aberrate -abet -abetted -abetting -abeyance -abeyant -.H 2 "hej hopp" -abhorred -abhorrent -abide -Abidjan -Abigail -abject -ablate -ablaze -able -ablution -Abner -abnormal -Abo -aboard -abode -abolish -abolition -abominable -abominate -aboriginal -aborigine -aborning -abort -abound -about -above -aboveboard -aboveground -abovementioned -abrade -Abraham -Abram -Abramson -abrasion -abrasive -abreact -abreast -abridge -abridgment -abroad -abrogate -abrupt -abscess -abscissa -abscissae -absence -absent -absentee -absenteeism -absentia -.H 3 "hej hopp" -absentminded -absinthe -absolute -absolution -absolve -absorb -absorbent -absorption -absorptive -abstain -abstention -abstinent -abstract -abstracter -abstractor -abstruse -absurd -abuilding -abundant -abusable -abuse -abusive -abut -abutted -abutting -abysmal -abyss -Abyssinia -AC -academe -academia -academic -academician -academy -Acadia -acanthus -Acapulco -accede -accelerate -accelerometer -accent -accentual -accentuate -accept -acceptant -acceptor -access -accessible -accession -accessory -.H 4 "hej hopp" -accident -accidental -accipiter -acclaim -acclamation -acclimate -accolade -accommodate -accompaniment -accompanist -accompany -accomplice -accomplish -accord -accordant -accordion -accost -account -accountant -Accra -accredit -accreditate -accreditation -accretion -accrual -accrue -acculturate -accumulate -accuracy -accurate -accusation -accusative -accusatory -accuse -accustom -ace -acerbic -acerbity -acetate -acetic -acetone -acetylene -ache -achieve -Achilles -aching -achromatic -acid -acidic -acidulous -.H 5 "hej hopp" -Ackerman -Ackley -acknowledge -acknowledgeable -ACM -acme -acolyte -acorn -acoustic -acquaint -acquaintance -acquiesce -acquiescent -acquire -acquisition -acquisitive -acquit -acquittal -acquitting -acre -acreage -acrid -acrimonious -acrimony -acrobacy -acrobat -acrobatic -acronym -acropolis -across -acrylate -acrylic -ACS -act -Actaeon -actinic -actinide -actinium -actinolite -actinometer -activate -activation -activism -Acton -actor -actress -Acts -actual -actuarial -actuate -.H 6 "hej hopp" -acuity -acumen -acute -acyclic -ad -Ada -adage -adagio -Adair -Adam -adamant -Adams -Adamson -adapt -adaptation -adaptive -add -added -addend -addenda -addendum -addict -Addis -Addison -addition -additional -additive -addle -address -addressee -Addressograph -adduce -Adelaide -Adele -Adelia -Aden -adenine -adenoma -adenosine -adept -adequacy -adequate -adhere -adherent -adhesion -adhesive -adiabatic -adieu -adipic -Adirondack -.H 7 "hej hopp" -adjacent -adject -adjectival -adjective -adjoin -adjoint -adjourn -adjudge -adjudicate -adjunct -adjust -adjutant -Adkins -Adler -administer -administrable -administrate -administratrix -admiral -admiralty -admiration -admire -admissible -admission -admit -admittance -admitted -admitting -admix -admixture -admonish -admonition -ado -adobe -adolescent -Adolph -Adolphus -Adonis -adopt -adoption -adoptive -adore -adorn -adposition -adrenal -adrenaline -Adrian -Adriatic -Adrienne -adrift -adroit -adsorb -adsorbate -adsorption -adsorptive -adulate -adult -adulterate -adulterous -adultery -adulthood -advance -advantage -advantageous -advent -adventitious -adverse -advert -advertise -advice -advisable -advise -advisee -advisor -advisory -advocacy -advocate -Aegean -aegis -Aeneas -Aeneid -aeolian -Aeolus -aerate -aerial -Aerobacter -aerobic -aerodynamic -aerogene -aeronautic -aerosol -aerospace -Aeschylus -aesthete -aesthetic -.H 1 "hej hopp" -acuity -acumen -acute -acyclic -ad -Ada -adage -adagio -Adair -Adam -adamant -Adams -Adamson -adapt -adaptation -adaptive -add -added -addend -addenda -addendum -addict -Addis -Addison -addition -additional -additive -addle -address -addressee -Addressograph -adduce -Adelaide -Adele -Adelia -Aden -adenine -adenoma -adenosine -adept -adequacy -adequate -adhere -adherent -adhesion -adhesive -adiabatic -adieu -adipic -Adirondack -.H 2 "hej hopp" -adjacent -adject -adjectival -adjective -adjoin -adjoint -adjourn -adjudge -adjudicate -.H 2 "hej hopp" -adjunct -adjust -adjutant -Adkins -Adler -administer -administrable -administrate -administratrix -admiral -admiralty -admiration -admire -admissible -admission -admit -admittance -admitted -admitting -admix -admixture -admonish -admonition -ado -adobe -adolescent -Adolph -Adolphus -Adonis -adopt -adoption -adoptive -adore -adorn -adposition -adrenal -adrenaline -Adrian -Adriatic -Adrienne -adrift -adroit -adsorb -adsorbate -adsorption -adsorptive -adulate -adult -adulterate -adulterous -adultery -adulthood -advance -advantage -advantageous -advent -adventitious -adverse -advert -advertise -advice -advisable -advise -advisee -advisor -advisory -advocacy -advocate -Aegean -aegis -Aeneas -Aeneid -aeolian -Aeolus -aerate -aerial -Aerobacter -aerobic -aerodynamic -aerogene -aeronautic -aerosol -aerospace -Aeschylus -aesthete -aesthetic -.RP 0 1 -.TC diff --git a/contrib/groff/contrib/mm/examples/SETR b/contrib/groff/contrib/mm/examples/SETR deleted file mode 100644 index 0a922415895e..000000000000 --- a/contrib/groff/contrib/mm/examples/SETR +++ /dev/null @@ -1,109 +0,0 @@ -.nr Cl 6 -.INITR setr -.H 1 " granary grand grandchild grandchildren granddaughter grandeur" -.SETR ref1 -.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" -.H 2 "grandniece grandpa grandparent grandson grandstand granite granitic" -.H 2 "granny granola grant grantee grantor granular granulate" -.SETR ref2 -.H 2 "granule Granville grape" -grant -grantee -grantor -granular -granulate -.br -granule -.B -REF 9: -.GETHN ref9 -, page number -.GETPN ref9 -.R -Granville -grape -.br -grapefruit -grapevine -graph -grapheme -graphic -graphite -\fBExhibit\fP -.GETHN ex1 - -grapple -grasp -grass -grassland -grassy -grata -grate -.H 2 "grapefruit grapevine graph grapheme graphic graphite" -.H 3 "grapple" -.SETR ref3 -.H 3 "grasp grass grassland grassy grata grate grateful" -.H 3 "grater gratify gratis gratitude" -.H 4 "gratuitous gratuity grave" -.H 4 "gravel graven" -.SETR ref4 -.H 1 "Graves gravestone graveyard gravid gravitate gravy gray" -.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat" -.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg" -.H 2 "Greenblatt Greenbriar Greene greenery" -.SETR ref5 -.H 1 "Greenfield greengrocer greenhouse greenish Greenland Greensboro" -.H 1 "greensward greenware Greenwich greenwood Greer greet" -grant -grantee -.DS - -Advertisements contain the only truths to be relied on in a newspaper. - -- Thomas Jefferson -.EX fortune "" "" ex1 -.DE -grantor -granular -.GETR ref1 -granulate -granule -.H 2 "Using variables" -.B -REF 2: -.GETHN ref2 c -.GETPN ref2 bbb -\*c, page number \*[bbb] -.R -Granville -grape -grapefruit -grapevine -graph -grapheme -.H 2 "Greg gregarious Gregg Gregory gremlin grenade Grendel" -.H 2 "Grenoble Gresham Greta Gretchen" -.SETR ref6 -.H 2 "grew" -.H 1 "grey greyhound greylag grid griddle gridiron grief" -.H 1 "grievance grieve grievous griffin Griffith grill grille grilled grillwork" -.H 3 "grim grimace Grimaldi grime Grimes Grimm grin grind grindstone" -.H 3 "grip gripe grippe grisly grist gristmill Griswold grit" -.SETR ref7 -.H 3 "gritty grizzle grizzly groan groat grocer grocery groggy groin" -.H 1 "grommet groom groove grope grosbeak gross Grosset Grossman Grosvenor grotesque" -.H 1 "Groton ground groundsel groundskeep groundwork group groupoid" -.H 4 "grout grove grovel Grover grow growl grown grownup growth grub grubby" -.H 4 "grudge gruesome gruff grumble Grumman grunt gryphon g's" -.SETR ref8 -.H 4 "GSA GU Guam guanidine guanine guano guarantee guaranteeing guarantor" -.H 4 "guaranty" -.H 1 "guard guardhouse Guardia guardian Guatemala gubernatorial Guelph Guenther" -.H 1 "guerdon guernsey guerrilla guess guesswork guest guffaw Guggenheim" -.SETR ref9 -.H 1 "Guiana guidance guide guidebook guideline guidepost guiding" -.H 1 "guignol" -.GETR ref6 -.H 1 "guild guildhall guile Guilford guillemot guillotine guilt" -.SETR ref10 -.H 1 "guilty guinea guise guitar gules gulf gull Gullah" -.H 1 "gullet gullible gully gulp gum gumbo gumdrop gummy gumption" diff --git a/contrib/groff/contrib/mm/groff_mm.man b/contrib/groff/contrib/mm/groff_mm.man deleted file mode 100644 index bd5223d47764..000000000000 --- a/contrib/groff/contrib/mm/groff_mm.man +++ /dev/null @@ -1,2104 +0,0 @@ -.\" -.\" $Id: groff_mm.man,v 2.13 2004/07/03 12:46:56 wlemb Exp $ -.\" -.de T2 -.if t .ne 2v -.ti -.5i -\\$1 -.sp -1 -.. -. -.de T3 -.if t .ne 2v -.ti -.5i -\fB\\$1\fP -.br -.. -. -.TH GROFF_MM @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@" -.SH NAME -groff_mm \- groff mm macros -.SH SYNOPSIS -.B groff -.B \-m@TMAC_M_PREFIX@m -[ -.IR options .\|.\|. -] -[ -.IR files .\|.\|. -] -.SH DESCRIPTION -The groff mm macros are intended to be compatible with the DWB mm macros -with the following limitations: -.TP -.B \(bu -no Bell Labs localisms implemented. -.TP -.B \(bu -the macros OK and PM are not implemented. -.TP -.B \(bu -groff mm does not support cut marks -.LP -\fBm@TMAC_M_PREFIX@m\fP is intended to be international. -Therefore it is -possible to write short national macrofiles which change all -english text to the preferred language. -Use \fBm@TMAC_M_PREFIX@mse\fP as an example. -.\"######################################################################## -.LP -A file called \fBlocale\fP or \fIlang\fP\fB_locale\fP is read -after the initiation of the global variables. -It is therefore -possible to localize the macros with companyname and so on. -.sp -In this manual square brackets is used to show optional arguments. -.sp 3 -\fBNumber registers and strings\fP -.br -Many macros can be controlled by number registers and strings. -A number register is assigned with the \fBnr\fP command: -.br -\fB\&.nr\fP \fIXXX\fP \fI[+-]n [i]\fP -.br -\fBXXX\fP is the name of the register, \fBn\fP is the value to -be assigned, and \fBi\fP is increment value for auto-increment. -\fBn\fP can have a plus or minus sign as prefix if an increment -or decrement of the current value is wanted. -(Auto-increment or decrement -occurs if the number register is used with a plus or minus sign, -\fB\en+[XXX]\fP or \fB\en-[XXX]\fP.) -.sp -Strings is defined with \fBds\fP. -.br -\fB\&.ds\fP \fIYYY string\fP -.br -The string is assigned everything to the end of the line, even blanks. -Initial blanks in \fIstring\fP should be prefixed with -a double-quote. -(Strings are used in the text as \fB\e*[YYY]\fP.) -.sp -\fBSpecial formatting of number registers\fP -.br -A number register is printed with normal digits if no format has been -given. -Set the format with \fBaf\fP: -.br -\fB\&.af\fP \fIR c\fP -.br -\fIR\fP is the name of the register, \fIc\fP is the format. -.in +.5i -.T2 \fBForm\fP -\fBSequence\fP -.T2 1 -0, 1, 2, 3, ... -.T2 001 -000, 001, 002, 003, ... -.T2 i -0, i, ii, iii, iv, ... -.T2 I -0, I, II, III, IV, ... -.T2 a -0, a, b, c, ..., z, aa, ab, ... -.T2 A -0, A, B, C, ..., Z, AA, AB, ... -.in - -.LP -\fBMacros:\fP -.TP -.B ")E level text" -Adds \fBtext\fP (heading-text) to the table of contents -with \fBlevel\fP either 0 -or between 1-7. -See also \fB.H\fP. -This macro is used for customized -table of contents. -.TP -.B "1C [1]" -Begin one column processing. -An \fB1\fP as argument disables the page-break. -Use wide footnotes, small footnotes may be overprinted. -.TP -.B 2C -Begin two column processing. -Splits the page in two columns. -It is -a special case of \fBMC\fP. -See also \fB1C\fP. -.TP -.B AE -Abstract end, see \fBAS\fP. -.TP -.B "AF [name of firm]" -Authors firm, should be called before \fBAU\fP, see also \fBCOVER\fP. -.TP -.B "AL [type [text-indent [1]]]" -Start autoincrement list. -Items are numbered beginning on one. -The \fItype\fP argument controls the type of numbers. -.in +.5i -.T2 Arg -Description -.T2 1 -Arabic (the default) -.T2 A -Upper-case letters (A-Z) -.T2 a -Lower-case letters (a-z) -.T2 I -Upper-case roman -.T2 i -Lower-case roman -.in -\fIText-indent\fP sets the indent and overrides \fBLi\fP. -A third argument will prohibit printing of a blank line before each -item. -.TP -.B "APP name text" -Begin an appendix with name \fIname\fP. -Automatic naming occurs if -\fIname\fP is "". -The appendixes starts with \fBA\fP if auto is used. -An new page is ejected, and a header is also produced if the number -variable \fBAph\fP is non-zero. -This is the default. -The appendix always appear in the 'List of contents' with correct -pagenumber. -The name \fIAPPENDIX\fP can be changed by setting -the string \fBApp\fP to the desired text. -The string \fBApptxt\fP contains the current appendix text. -.TP -.B "APPSK name pages text" -Same as \fB.APP\fP, but the pagenr is incremented with \fIpages\fP. -This is used when diagrams or other non-formatted documents are -included as appendixes. -.TP -.B "AS [arg [indent]]" -Abstract start. -Indent is specified in 'ens', but scaling is allowed. -Argument \fIarg\fP controls where the abstract is printed. -.in +.5i -.T2 Arg -Placement -.T2 0 -Abstract will be printed on page 1 and on the cover sheet if -used in the released-paper style (\fBMT 4\fP), otherwise -it will be printed on page 1 without a cover sheet. -.T2 1 -Abstract will only be printed on the cover sheet (\fBMT 4\fP only). -.T2 2 -Abstract will be printed only on the cover sheet (other than \fBMT 4\fP only). -The cover sheet is printed without need for \fBCS\fP. -.in -Abstract is not printed at all in external letters (\fBMT 5\fP). -The \fIindent\fP controls the indentation of both margins, otherwise -will normal text indent be used. -.TP -.B "AST [title]" -Abstract title. -Default is \fBABSTRACT\fP. -Sets the text above the abstract text. -.TP -.B "AT title1 [title2 ...]" -Authors title. -\fBAT\fP must appear just after each \fBAU\fP. -The title will show up after the name in the signature block. -.TP -.B "AU [name [initials [loc [dept [ext [room [arg [arg [arg]]]]]]]]]" -Author information, specifies the author of the memo or paper, and -will be printed on the cover sheet and on other similar places. -\fBAU\fP must not appear before \fBTL\fP. -The author information -can contain initials, location, department, telephone extension, -room number or name and up to three extra arguments. -.TP -.B "AV [name [1]]" -Approval signature, generates an approval line with place for -signature and date. -The string \fBAPPROVED:\fP can be changed -with variable \fBLetapp\fP, and the string \fBDate\fP in \fBLetdate\fP. -.TP -.B "AVL [name]" -Letter signature, generates a line with place for signature. -.TP -.B "B [bold-text [prev-font-text [bold...]]]" -Begin boldface. -No limit on the number of arguments. -All arguments will be concatenated to one word, the first, third and so -on will be printed in boldface. -.TP -.B B1 -Begin box (as the ms macro). -Draws a box around the text. -The text will be indented one character, -and the right margin will be one character shorter. -.TP -.B B2 -End box. -Finish the box started by \fBB1\fP. -.TP -.B BE -End bottom block, see \fBBS\fP. -.TP -.B "BI [bold-text [italic-text [bold-text [...]]]]" -Bold-italic. -No limit on the number of arguments, see \fBB\fP. -.TP -.B "BL [text-indent [1]]" -Start bullet list, initialize a list with a bullet and a space -in the beginning of each list item (see \fBLI\fP). -\fIText-indent\fP -overrides the default indentation of the list items set by -number register \fBPi\fP. -A third argument will prohibit printing of a blank line before each -item. -.TP -.B "BR [bold-text [roman-text [bold-text [...]]]]" -Bold-roman. -No limit on the number of arguments. -.TP -.B BS -Bottom block start. -Begins the definition of a text block which is -printed at the bottom of each page. -Block ends with \fBBE\fP. -.TP -.B "BVL text-indent [mark-indent [1]]" -Start of -broken variable-item list. -Broken variable-item list has no fixed mark, it assumes that -every \fBLI\fP has a mark instead. -The text will always begin at the next line after the mark. -\fIText-indent\fP sets the indent to the text, and \fImark-indent\fP -the distance from the current indent to the mark. -A third argument will prohibit printing of a blank line before each -item. -.TP -.B "COVER [arg]" -\&\fBCOVER\fP begins a coversheet definition. -It is important -that \fB.COVER\fP appears before any normal text. -\&\fB.COVER\fP uses \fIarg\fP to build the filename -@TMAC_MDIR@/\fIarg\fP.cov. -Therefore it is possible to create unlimited -types of coversheets. -\fIms.cov\fP is supposed to look like the \fBms\fP coversheet. -\&\fB.COVER\fP requires a \fB.COVEND\fP at the end of the coverdefinition. -Always use this order of the covermacros: -.nf -\&.COVER -\&.TL -\&.AF -\&.AU -\&.AT -\&.AS -\&.AE -\&.COVEND -.fi -However, only \fB.TL\fP and \fB.AU\fP are required. -.TP -.B COVEND -This finish the cover description and prints the cover-page. -It is defined in the cover file. -.TP -.B DE -Display end. -Ends a block of text, display, that begins -with \fBDS\fP or \fBDF\fP. -.TP -.B "DF [format [fill [rindent]]]" -Begin floating display (no nesting allowed). -A floating display is saved in a queue and is printed in the -order entered. -\fIFormat\fP, \fIfill\fP and \fIrindent\fP is the same -as in \fBDS\fP. -Floating displays are controlled by the two number registers \fBDe\fP -and \fBDf\fP. -.sp -\fBDe register\fP -.in +.5i -.T2 0 -Nothing special, this is the default. -.T2 1 -A page eject will occur after each printed display, giving only -one display per page and no text following it. -.in -.sp -\fBDf register\fP -.in +.5i -.T2 0 -Displays are printed at the end of each section (when section-page -numbering is active) or at the end of the document. -.T2 1 -A new display will be printed on the current page if there is enough -space, otherwise it will be printed at the end of the document. -.T2 2 -One display will be printed at the top of each page or column -(in multi-column mode). -.T2 3 -Print one display if there is enough space for it, otherwise it will -be printed at the top of the next page or column. -.T2 4 -Print as many displays that will fit in a new page or column. -A page break will occur between each display if \fBDe\fP is not zero. -.T2 5 -Fill the current page with displays and the rest beginning at a new page -or column. -(This is the default.) -A page break will occur between each display -if \fBDe\fP is not zero. -.in -.TP -.B "DL [text-indent [1 [1]]]" -Dash list start. -Begins a list where each item is printed -after a dash. -\fIText-indent\fP changes the default indentation -of the list items set by -number register \fBPi\fP. -A second argument prevents the empty line between each list item -to be printed. -See \fBLI\fP. -A third argument will prohibit printing of a blank line before each -item. -.TP -.B "DS [format [fill [rindent]]]" -Static display start. -Begins collection of text until \fBDE\fP. -The text is printed together on the same page, unless it is longer -than the height of the page. -\fBDS\fP can be nested to a unlimited depth (reasonably :-). -.sp -\fBformat\fP -.in +.5i -.ds x " -.T2 """""" -No indentation. -.T2 none -No indentation. -.T2 L -No indentation. -.T2 I -Indent text with the value of number register \fBSi\fP. -.T2 C -Center each line -.T2 CB -Center the whole display as a block. -.T2 R -Right adjust the lines. -.T2 RB -Right adjust the whole display as a block -.in -.sp -L, I, C and CB can also be specified as 0, 1, 2 or 3 for compatibility -reasons. -(Don't use it.\ :-) -.sp -\fBfill\fP -.in +.5i -.T2 """""" -Line-filling turned off. -.T2 none -Line-filling turned off. -.T2 N -Line-filling turned off. -.T2 F -Line-filling turned on. -.in -.sp -N and F can also be specified as 0 or 1. -An empty line will normally be printed before and after the -display. -Setting number register \fBDs\fP to 0 will prevent this. -\fIRindent\fP shortens the line length by that amount. -.TP -.B "EC [title [override [flag [refname]]]]" -Equation title. -Sets a title for an equation. -The \fIoverride\fP argument -change the numbering. -.sp -\fBflag\fP -.in +.5i -.T2 none -\fIoverride\fP is a prefix to the number. -.T2 0 -\fIoverride\fP is a prefix to the number. -.T2 1 -\fIoverride\fP is a suffix to the number. -.T2 2 -\fIoverride\fP replaces the number. -.in -\fBEC\fP uses the number register \fBEc\fP as counter. -It is possible to use \fB.af\fP to change the format of the number. -If number register \fBOf\fP is 1, then the format of title -will use a dash instead of a dot after the number. -.br -The string \fBLe\fP controls the title of the -List of Equations, default is \fILIST OF EQUATIONS\fP. -The List of Equations will only be printed if number register \fBLe\fP -is 1, default 0. -The string \fBLiec\fP contains the word \fIEquation\fP, wich -is printed before the number. -If \fIrefname\fP is used, then the equation number is saved with -\&\fB.SETR\fP, and can be retrieved with \fB.GETST\fP \fIrefname\fP. -.br -Special handling of the title will occur if -\fBEC\fP is used inside \fBDS\fP/\fBDE\fP, it will not be -affected by the format of \fBDS\fP. -.TP -.B "EF [arg]" -Even-page footer, printed just above the normal page footer -on even pages, see \fBPF\fP. -.TP -.B "EH [arg]" -Even-page header, printed just below the normal page header -on even pages, see \fBPH\fP. -.TP -.B EN -Equation end, see \fBEQ\fP. -.TP -.B EOP -End of page user-defined macro. -This macro will be called -instead of the normal printing of the footer. -The macro -will be executed in a separate environment, without any -trap active. -See \fBTP\fP. -.sp -\fBStrings available to EOP\fP -.in +.5i -.T2 EOPf -Argument from \fBPF\fP. -.T2 EOPef -Argument from \fBEF\fP. -.T2 EOPof -Argument from \fBOF\fP. -.in -.TP -.B "EPIC [-L] width height [name]" -\fBEPIC\fP draws a box with the given \fIwidth\fP and \fIheight\fP, it will -also print the text \fIname\fP or a default string if -\fIname\fP is not specified.. -This is used to include external pictures, just give the size -of the picture. -\fB-L\fP will leftadjust the picture, the default is to center adjust. -See \fBPIC\fP -.TP -.B "EQ [label]" -Equation start. -\fBEQ\fP/\fBEN\fP are the delimiters for equations written for \fBeqn\fP. -\fBEQ\fP/\fBEN\fP must be inside a \fBDS\fP/\fBDE\fP-pair, except -when \fBEQ\fP is only used to set options in \fBeqn\fP. -The \fIlabel\fP will appear at the right margin of the equation, unless -number register \fBEq\fP is\ 1. -Then the label will appear at the -left margin. -.TP -.B "EX [title [override [flag [refname]]]]" -Exhibit title, arguments are the same as for \fBEC\fP. -\fBEX\fP uses the number register \fBEx\fP as counter. -The string \fBLx\fP controls the title of the -List of Exhibits, default is \fILIST OF EXHIBITS\fP. -The List of Exhibits will only be printed if number register \fBLx\fP -is 1, default 1. -The string \fBLiex\fP contains the word \fIExhibit\fP, which -is printed before the number. -If \fIrefname\fP is used, then the exhibit number is saved with -\&\fB.SETR\fP, and can be retrieved with \fB.GETST\fP \fIrefname\fP. -.br -Special handling of the title will occur if -\fBEX\fP is used inside \fBDS\fP/\fBDE\fP, it will not be -affected by the format of \fBDS\fP. -.TP -.B "FC [closing]" -Prints \fIYours\ very\ truly,\fP as a formal closing of a letter or -memorandum. -The argument replaces the defualt string. -The default is stored in string variable \fBLetfc\fP. -.TP -.B "FD [arg [1]]" -Footnote default format. -Controls the hyphenation (hyphen), right margin justification (adjust), -indentation of footnote text (indent). -It can also change the label -justification (ljust). -.sp -.if t .ne 14v -.nf -.ta .5i +.8i +.8i +.8i +.8i -\fBarg hyphen adjust indent ljust\fP -0 no yes yes left -1 yes yes yes left -2 no no yes left -3 yes no yes left -4 no yes no left -5 yes yes no left -6 no no no left -7 yes no no left -8 no yes yes right -9 yes yes yes right -10 no no yes right -11 yes no yes right -.sp -.fi -.DT -Argument greater than or equal to 11 is considered as arg 0. -Default for m@TMAC_M_PREFIX@m is 10. -.TP -.B FE -Footnote end. -.TP -.B "FG [title [override [flag [refname]]]]" -Figure title, arguments are the same as for \fBEC\fP. -\fBFG\fP uses the number register \fBFg\fP as counter. -The string \fBLf\fP controls the title of the -List of Figures, default is \fILIST OF FIGURES\fP. -The List of Figures will only be printed if number register \fBLf\fP -is 1, default 1. -The string \fBLifg\fP contains the word \fIFigure\fP, wich -is printed before the number. -If \fIrefname\fP is used, then the figure number is saved with -\&\fB.SETR\fP, and can be retrieved with \fB.GETST\fP \fIrefname\fP. -.br -Special handling of the title will occur if -\fBFG\fP is used inside \fBDS\fP/\fBDE\fP, it will not be -affected by the format of \fBDS\fP. -.TP -.B "FS [label]" -Footnote start. -The footnote is ended by \fBFE\fP. -Footnotes is normally automatically -numbered, the number is available in string \fBF\fP. -Just add \fB\e*F\fP in the text. -By adding \fIlabel\fP, it is possible -to have other number or names on the footnotes. -Footnotes in displays is now possible. -An empty line separates footnotes, the height of the line -is controlled by number register \fBFs\fP, default value is 1. -.TP -.B "GETHN refname [varname]" -Includes the headernumber where the corresponding \fBSETR\fP \fIrefname\fP -was placed. -Will be X.X.X. in pass\ 1. -See \fBINITR\fP. -If \fIvarname\fP is used, \fBGETHN\fP sets the stringvariable \fIvarname\fP to the -headernumber. -.TP -.B "GETPN refname [varname]" -Includes the pagenumber where the corresponding \fBSETR\fP \fIrefname\fP -was placed. -Will be 9999 in pass\ 1. -See \fBINITR\fP. -If \fIvarname\fP is used, \fBGETPN\fP sets the stringvariable \fIvarname\fP -to the pagenumber. -.TP -.B "GETR refname" -Combines \fBGETHN\fP and \fBGETPN\fP with the text 'chapter' and ', page'. -The string \fIQrf\fP contains the text for reference: -.ti +.5i -\&.ds Qrf See chapter \e\e*[Qrfh], page \e\e*[Qrfp]. -.br -\fIQrf\fP may be changed to support other languages. -Strings \fIQrfh\fP and \fIQrfp\fP are set by \fBGETR\fP -and contains the page and headernumber. -.TP -.B "GETST refname [varname]" -Includes the string saved with the second argument to \fB.SETR\fP. -Will be dummystring in pass 1. -If varname is used, \fBGETST\fP sets the stringvariable \fIvarname\fP to the -saved string. -See \fBINITR\fP. -.TP -.B "H level [heading-text [heading-suffix]]" -Numbered section heading. -Section headers can have a level between 1 and 14, level 1 is the -top level. -The text is given in \fIheading-text\fP, and must be -surrounded by double quotes if it contains spaces. -\fBHeading-suffix\fP is added to the header in the text but not in -the table of contents. -This is normally used for footnote marks -and similar things. -Don't use \fB\e*F\fP in \fIheading-suffix\fP, it won't -work. -A manual label must be used, see \fBFS\fP. -.sp -An eventual paragraph, \fBP\fP, directly after \fBH\fP will be -ignored, \fBH\fP is taking care of spacing and indentation. -.sp -\fBPage ejection before heading\fP -.br -Number register \fBEj\fP controls page ejection before the heading. -Normally, a level one heading gets two blank lines before it, higher levels -gets only one. -A new page is ejected before each -first-level heading if number register \fBEj\fP is 1. -All levels below or equal the value of \fBEj\fP gets a new page. -Default value for \fBEj\fP is 0. -.sp -\fBHeading break level\fP -.br -A line break occurs after the heading if the heading level is less -or equal to number register \fBHb\fP. -Default value 2. -.sp -\fBHeading space level\fP -.br -A blank line is inserted after the heading if the heading level is less -or equal to number register \fBHs\fP. -Default value 2. -.sp -Text will follow the heading on the same line if the level is greater -than both \fBHb\fP and \fBHs\fP. -.sp -\fBPost-heading indent\fP -.br -Indentation of the text after the heading is controlled by number -register \fBHi\fP, default value 0. -.sp -\fBHi\fP -.in +.5i -.T2 0 -The text will be left-justified. -.T2 1 -Indentation of the text will follow the value of number register \fBPt\fP, -see \fBP\fP. -.T2 2 -The text will be lined up with the first word of the heading. -.in -.sp -\fBCentered section headings\fP -.br -All headings whose level is equal or below number register \fBHc\fP -and also less than or equal to \fBHb\fP or \fBHs\fP -is centerered. -.sp -\fBFont control of the heading\fP -.br -The font of each heading level is controlled by string \fBHF\fP. -It contains a fontnumber or fontname for each level. -Default -is \fB2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\fP (all headings in italic). -Could also be written as \fBI\ I\ I\ I\ I\ I\ I\ I\ I\ I\ I\ I\ I\ I\fP. -Note that some other implementations use \fB3\ 3\ 2\ 2\ 2\ 2\ 2\fP as the -default value. -All omitted values are presumed to be a 1. -.sp -\fBPoint size control\fP. -.br -String \fBHP\fP controls the pointsize of each heading, in the -same way as \fBHF\fP controls the font. -A value of 0 selects the default point size. -Default value is \fB0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\fP. -Beware that only the -point size changes, not the vertical size. -That can be controlled by the user specified macro \fBHX\fP and/or -\fBHZ\fP. -.sp -\fBHeading counters\fP -.br -Fourteen number registers, named \fBH1\fP thru \fBH14\fP contains -the counter for each heading level. -The values are printed using arabic numerals, this can be changed -with the macro \fBHM\fP (see below). -All marks are concatenated before printing. -To avoid this, set -number register \fBHt\fP to\ 1. -That will only print the current -heading counter at each heading. -.sp -\fBAutomatic table of contents\fP -.br -All headings whose level is equal or below number register \fBCl\fP -is saved to be printed in the table of contents. -Default value is\ 2. -.sp -\fBSpecial control of the heading, user-defined macros\fP. -.br -These macros can be defined by the user to get a finer control -of vertical spacing, fonts or other features. -Argument \fIlevel\fP is the level-argument to \fBH\fP, but -0 for unnumbered headings (see \fBHU\fP). -Argument \fIrlevel\fP is the real level, it is -set to number register \fBHu\fP for unnumbered headings. -Argument \fIheading-text\fP is the text argument to \fBH\fP and \fBHU\fP. -.sp -\fBHX\ \fP\fIlevel\ rlevel\ heading-text\fP -.br -\fBHX\fP is called just before the printing of the heading. -The following register is available for \fBHX\fP. -\fBHX\fP may alter \fB}0\fP, \fB}2\fP and \fB;3\fP. -.in +.5i -.T3 "string }0" -Contains the heading mark plus two spaces if \fIrlevel\fP is non-zero, -otherwise empty. -.T3 "register ;0" -Contains the position of the text after the heading. -0 means that the text should follow the heading on the same line, 1 -means that a line break should occur before the text and -2 means that a blank line should separate the heading and the text. -.T3 "string }2" -Contains two spaces if register \fB;0\fP is\ 0. -It is used to -separate the heading from the text. -The string -is empty if \fB;0\fP is non-zero. -.T3 "register ;3" -Contains the needed space in units after the heading. -Default is 2v. - -Can be used to change things like numbering (\fB}0\fP), -vertical spacing (\fB}2\fP) -and the needed space after the heading. -.in -.sp -\fBHY\ \fP\fIdlevel\ rlevel\ heading-text\fP -.br -\fBHY\fP is called after size and font calculations and -might be used to change indentation. -.sp -\fBHZ\ \fP\fIdlevel\ rlevel\ heading-text\fP -.br -\fBHZ\fP is called after the printing of the heading, just before -\fBH\fP or \fBHU\fP exits. -Could be used to change the page header according to the section heading. -.TP -.B "HC [hyphenation-character]" -Set hyphenation character. -Default value is \e%. -Resets to the default if called without argument. -Hyphenation can be turned off by setting number -register \fBHy\fP to 0 in the beginning of the file. -.TP -.B "HM [arg1 [arg2 [... [arg14]]]]" -Heading mark style. -Controls the type of marking for printing of the heading counters. -Default is 1 for all levels. -.sp -\fBArgument\fP -.in +.5i -.T2 1 -Arabic numerals. -.T2 0001 -Arabic numerals with leading zeroes, one or more. -.T2 A -Upper-case alphabetic -.T2 a -Lower-case alphabetic -.T2 I -Upper-case roman numerals -.T2 i -lower-case roman numerals -.T2 \fIempty\fP -Arabic numerals. -.in -.TP -.B "HU heading-text" -Unnumbered section header. -\fBHU\fP behavies like \fBH\fP at the level in number register \fBHu\fP. -See \fBH\fP. -.TP -.B "HX dlevel rlevel heading-text" -Userdefined heading exit. -Called just before printing the header. -See \fBH\fP. -.TP -.B "HY dlevel rlevel heading-text" -Userdefined heading exit. -Called just before printing the header. -See \fBH\fP. -.TP -.B "HZ dlevel rlevel heading-text" -Userdefined heading exit. -Called just after printing the header. -See \fBH\fP. -.TP -.B "I [italic-text [prev-font-text [italic-text [...]]]]" -Italic. -Changes the font to italic if called without arguments. -With one argument it will set the word in italic. -With two argument it will concatenate them and set the first -word in italic and the second in the previous font. -There is no limit on the number of argument, all will be concatenated. -.TP -.B "IA [addressee-name [title]]" -Begins specification of the addressee and addressee's address in -letter style. -Several names can be specified with empty \fBIA\fP/\fBIE\fP-pairs, but -only one address. -See \fBLT\fP. -.TP -.B "IB [italic-text [bold-text [italic-text [...]]]]" -Italic-bold. -Even arguments is printed in italic, odd in boldface. -See \fBI\fP. -.TP -.B IE -Ends the address-specification after \fPIA\fP. -.TP -.B "INITI type filename [macro]" -Initialize the new index system, sets the filename to collect -index lines in with \fBIND\fP. -Argument \fItype\fP selects -the type of index, page number, header marks or both. -The default is \fIN\fP. - -It is also possible to create a macro that is responsible -for formatting each row. -Add the name of the macro as argument\ 3. -The macro will be called with the index as argument(s). -.sp -\fBtype\fP -.in +.5i -.T2 N -Page numbers -.T2 H -Header marks -.T2 B -Both page numbers and header marks, tab separated -.in -.TP -.B "INITR filename" -Initialize the refencemacros. -References will be written to stderr and is supposed to -be written to \fIfilename.qrf\fP. -Requires two passes with groff, this is handled by a -separate program called \fBmmroff\fP, the reason is that -groff is often installed without the unsafe operations that -\fBINITR\fP requiered. -The first pass looks for references and the second one includes them. -\fBINITR\fP can be used several times, but it is only the first -occurrence of \fBINITR\fP that is active. - -See also \fBSETR\fP, \fBGETPN\fP and \fBGETHN\fP. -.TP -.B "IND arg1 [arg2 [...]]" -\fBIND\fP writes a line in the index file selected by \fBINITI\fP -with all arguments and the page number or header mark separated by tabs. -.in +.5i -\fBExamples\fP -.br -arg1\etpage number -.br -arg1\etarg2\etpage number -.br -arg1\etheader mark -.br -arg1\etpage number\etheader mark -.in -.TP -.B "INDP" -\fBINDP\fP prints the index by running the command specified -by string variable \fBIndcmd\fP, normally \fIsort\ -t\et\fP. -\fBINDP\fP reads the output from the command to form -the index, normally in two columns (can be changed by defining \fBTYIND\fP). -The index is printed with string variable \fBIndex\fP as header, -default is \fBINDEX\fP. -One-column processing is -returned after the list. -\fBINDP\fP will call the -user-defined macros \fBTXIND\fP, \fBTYIND\fP and \fBTZIND\fP if defined. -\fBTXIND\fP is called before printing \fBINDEX\fP, \fBTYIND\fP -is called instead of printing \fBINDEX\fP. -\fBTZIND\fP is called -after the printing and should take care of restoring to normal -operation again. -.TP -.B "ISODATE [0]" -\fBISODATE\fP changes the predefined date string in \fBDT\fP to -ISO-format, ie YYYY-MM-DD. -This can also be done by -adding \fB-rIso=1\fP on the command line. -Reverts to old date format if argument is \fB0\fP. -.TP -.B "IR [italic-text [roman-text [italic-text [...]]]]" -Italic-roman. -Even arguments is printed in italic, odd in roman. -See \fBI\fP. -.TP -.B "LB text-indent mark-indent pad type [mark [LI-space [LB-space]]]" -List begin macro. -This is the common macro used for all lists. -\fIText-indent\fP is the number of spaces to indent the text from the -current indent. -.sp -\fIPad\fP and \fImark-indent\fP controls where to put the mark. -The mark is placed within the mark area, and \fImark-indent\fP -sets the number of spaces before this area. -It is normally\ 0. -The mark area ends where the text begins. -The start of the text -is still controlled by \fItext-indent\fP. -.sp -The mark is left justified whitin the mark area if \fIpad\fP is 0. -If \fIpad\fP is greater than 0, then \fImark-indent\fP is ignored, and -the mark is placed \fIpad\fP spaces before the text. -This will right justify the mark. -.sp -If \fItype\fP is 0 the list will have either a hanging indent or, if -argument \fImark\fP is given, the string \fImark\fP as mark. -.sp -If \fItype\fP is greater than 0 automatic numbering will occur, arabic -if \fImark\fP is empty. -\fIMark\fP can then be any of \fB1\fP, \fBA\fP, -\fBa\fP, \fBI\fP or \fBi\fP. -.sp -\fIType\fP selects one of six possible ways to display the mark. -.br -\fBtype\fP -.in +.6i -.T2 1 -x. -.T2 2 -x) -.T2 3 -(x) -.T2 4 -[x] -.T2 5 - -.T2 6 -{x} -.in -.sp -Every item in the list will get \fILI-space\fP number of blank lines -before them. -Default is\ 1. -.sp -\fBLB\fP itself will print \fILB-space\fP blank lines. -Default is\ 0. -.TP -.B "LC [list-level]" -List-status clear. -Terminates all current active lists down to \fIlist-level\fP, or 0 -if no argmuent is given. -This is used by \fBH\fP to clear any -active list. -.TP -.B "LE [1]" -List end. -Terminate the current list. -\fBLE\fP outputs a blank line -if an argument is given. -.TP -.B "LI [mark [1]]" -List item precedes every item in a list. -Without argument \fBLI\fP -will print the mark determined by the current list type. -By giving -\fBLI\fP one argument, it will use that as the mark instead. -Two arguments to \fBLI\fP will make \fImark\fP a prefix to -the current mark. -There will be no separating space between the prefix -and the mark if the second argument is \fB2\fP instead of \fB1\fP. -This behaviour can also be achieved by setting number register -\fBLimsp\fP to zero. -A zero length \fImark\fP will make a hanging -indent instead. -.sp -A blank line is normally printed before the list item. -This behaviour -can be controlled by number register \fBLs\fP. -Pre-spacing -will occur for each list-level less than or equal to \fBLs\fP. -Default value is\ 99. -(Nesting of lists is unlimited.\ :-) -.sp -The indentation can be changed thru number register \fBLi\fP. -Default is 6. -.sp -All lists begins with a list initialization macro, \fBLB\fP. -There are, however, seven predefined listtypes to -make lists easier to use. -They all call \fBLB\fP with different -default values. -.in +.5i -.T2 \fBAL\fP -Automatically Incremented List -.T2 \fBML\fP -Marked List -.T2 \fBVL\fP -Variable-Item List -.T2 \fBBL\fP -Bullet List -.T2 \fBDL\fP -Dash List -.T2 \fBRL\fP -Reference List -.T2 \fBBVL\fP -Broken Varable List. -.in -These lists are described at other places in this manual. -See also \fBLB\fP. -.TP -.B "LT [arg]" -Formats a letter in one of four different styles depending -on the argument. -See also \fBINTERNALS\fP. -.in +.5i -.T2 \fBArg -Style\fP -.T2 BL -Blocked. -Date line, return address, writer's address and closing -begins at the center of the line. -All other lines begin at the left margin. -.T2 SB -Semi-blocked. -Same as blocked, except that the first line in every -paragraph is indented five spaces. -.T2 FB -Full-blocked. -All lines begin at the left margin. -.T2 SP -Simplified. -Almost the same as the full-blocked style. -Subject and -the writer's identification are printed in all-capital. -.in -.TP -.B "LO type [arg]" -Specify options in letter (see \fB.LT\fP). -This is a list of the standard options: -.in +.5i -.T2 CN -Confidential notation. -Prints \fBCONFIDENTIAL\fP on the second line -below the date line. -Any argument replaces \fBCONFIDENTIAL\fP. -See also string variable \fBLetCN\fP. -.T2 RN -Reference notation. -Prints \fBIn reference to:\fP and the argument -two lines below the date line. -See also string variable \fBLetRN\fP. -.T2 AT -Attention. -Prints \fBATTENTION:\fP and the argument below the inside address. -See also string variable \fBLetAT\fP. -.T2 SA -Salutation. -Prints \fBTo Whom It May Concern:\fP or the argument if -it was present. -The salutation is printed two lines below the inside address. -See also string variable \fBLetSA\fP. -.T2 SJ -Subject line. -Prints the argument as subject prefixed with \fBSUBJECT:\fP -two lines below the inside address, except in letter type \fBSP\fP. -Then the subject is printed in all-captial without any prefix. -See also string variable \fBLetSJ\fP. -.in -.TP -.B "MC column-size [column-separation] " -Begin multiple columns. -Return to normal with \fB1C\fP. -\fBMC\fP will create as many columns as the current line length permits. -\fIColumn-size\fP is the width of each column, and \fIcolumn-separation\fP -is the space between two columns. -Default separation is the -column-size/15. -See also \fB1C\fP. -.TP -.B "ML mark [text-indent [1]]" -Marked list start. -The \fImark\fP argument will be printed before -each list item. -\fIText-indent\fP sets the indent and overrides \fBLi\fP. -A third argument will prohibit printing of a blank line before each -item. -.TP -.B "MT [arg [addressee]]" -Memorandum type. -The \fIarg\fP is part of a filename in \fI@TMAC_MDIR@/*.MT\fP. -Memorandum type 0 thru 5 are supported, including \fI"string"\fP. -\fIAddressee\fP just sets a variable, used in the AT&T macros. -.br -\fBarg\fP -.in +.5i -.T2 0 -Normal memorandum, no type printed -.T2 1 -Memorandum with \fIMEMORANDUM FOR FILE\fP printed -.T2 2 -Memorandum with \fIPROGRAMMER'S NOTES\fP printed -.T2 3 -Memorandum with \fIENGINEER'S NOTES\fP printed -.T2 4 -Released paper style -.T2 5 -External letter style -.in -See also \fBCOVER\fP/\fBCOVEND\fP, a more flexible type of front page. -.TP -.B "MOVE y-pos [x-pos [line-length]]" -Move to a position, pageoffset set to \fIx-pos\fP. -If \fIline-length\fP is not given, the difference between -current and new pageoffset is used. -Use \fBPGFORM\fP without arguments to return to normal. -.TP -.B "MULB cw1 space1 [cw2 space2 [cw3 ...]]" -Begin a special multi-column mode. -Every columns width must be specified. -Also the space between the columns must be specified. -The last column -does not need any space-definition. -\fBMULB\fP starts a diversion and \fBMULE\fP -ends the diversion and prints the columns. -The unit for width and space is 'n', but \fBMULB\fP accepts all -normal unitspecifications like 'c' and 'i'. -\fBMULB\fP operates in a separate environment. -.TP -.B "MULN" -Begin the next column. -This is the only way to switch column. -.TP -.B "MULE" -End the multi-column mode and print the columns. -.TP -.B "nP [type]" -Print numbered paragraph with header level two. -See \fB.P\fP. -.TP -.B "NCOL" -Force printing to the next column, don't use this together with -the \fBMUL*\fP macros, see \fB2C\fP. -.TP -.B "NS [arg [1]]" -Prints different types of notations. -The argument selects between -the predefined type of notations. -If the second argument is available, -then the argument becomes the entire notation. -If the argument doesn't exist in the predefined, it will be -printed as \fBCopy (\fP\fIarg\fP\fB) to\fP. -It is possible to add more standard notations, see the string variable -\fBLetns\fP and \fBLetnsdef\fP. -.nf -.in +.5i -.T2 \fBArg -Notation\fP -.T2 \fInone\fP -Copy To -.T2 """"" -Copy To -.T2 1 -Copy To (with att.) to -.T2 2 -Copy To (without att.) to -.T2 3 -Att. -.T2 4 -Atts. -.T2 5 -Enc. -.T2 6 -Encs. -.T2 7 -Under separate cover -.T2 8 -Letter to -.T2 9 -Memorandum to -.T2 10 -Copy (with atts.) to -.T2 11 -Copy (without atts.) to -.T2 12 -Abstract Only to -.T2 13 -Complete Memorandum to -.T2 14 -CC -.in -.fi -.TP -.B "ND new-date" -New date. -Override the current date. -Date is not -printed if \fInew-date\fP is an empty string. -.TP -.B "OF [arg]" -Odd-page footer, a line printed just above the normal footer. -See \fBEF\fP and \fBPF\fP. -.TP -.B "OH [arg]" -Odd-page header, a line printed just below the normal header. -See \fBEH\fP and \fBPH\fP. -.TP -.B OP -Make sure that the following text is printed at the top -of an odd-numbered page. -Will not output an empty page -if currently at the top of an odd page. -.TP -.B "P [type]" -Begin new paragraph. -\fBP\fP without argument will produce left justified text, even -the first line of the paragraph. -This is the same as setting -\fItype\fP to 0. -If the argument is\ 1, then the first line -of text following \fBP\fP will be indented by the number of -spaces in number register \fBPi\fP, normally 5. -.sp -Instead of giving 1 as argument to \fBP\fP it is possible to set the -paragraph type in number register \fBPt\fP. -Using 0 and\ 1 -will be the same as adding that value to \fBP\fP. -A value of 2 will indent all paragraphs, except after -headings, lists and displays. -.sp -The space between two paragraphs is controlled by number register \fBPs\fP, -and is 1 by default (one blank line). -.TP -.B "PGFORM [linelength [pagelength [pageoffset [1]]]]" -Sets linelength, pagelength and/or pageoffset. -This macro can be used for special formatting, like letterheads -and other. -It is normally the first command in a file, though it's not necessary. -\fBPGFORM\fP can be used without arguments -to reset everything after a \fBMOVE\fP. -A line-break is done unless the fourth argument is given. -This can be used to avoid the pagenumber on the first page while setting -new width and length. -(It seems as if this macro sometimes doesn't work too well. -Use the command line arguments -to change linelength, pagelength and pageoffset instead. -Sorry.) -.TP -.B PGNH -No header is printed on the next page. -Used to get rid of -the header in letters or other special texts. -This macro must be used before any text to inhibit the pageheader -on the first page. -.TP -.B "PIC [-L] [-C] [-R] [-I n] filename [width [height]]" -\fBPIC\fP includes a Postscript file in the document. -The macro depends on \fBmmroff\fP and \fBINITR\fP. -\fB-L\fP, \fB-C\fP, \fB-R\fP and \fB-I n\fP adjusts the picture -or indents it. -The optionally \fIwidth\fP and \fIheight\fP -can also be given to resize the picture. -.TP -.B PE -Picture end. -Ends a picture for \fB@TMAC_M_PREFIX@pic\fP, see the manual for \fB@TMAC_M_PREFIX@pic\fP. -.TP -.B "PF [arg]" -Page footer. -\fBPF\fP sets the line to be printed at the bottom of each page. -Normally empty. -See \fBPH\fP for the argument specification. -.TP -.B "PH [arg]" -Page header, a line printed at the top of each page. -The argument should be specified as "'left-part'center-part'right-part'", -where left-, center- and right-part is printed left-justified, centered -and right justified. -The character \fB%\fP is changed to the current -page number. -The default page-header is "''- % -''", the page -number between two dashes. -.TP -.B PS -Picture start (from pic). -Begins a picture for \fB@g@pic\fP, see -the manual. -.TP -.B PX -Page-header user-defined exit. -\fBPX\fP is called just after the printing of the page header -in \fIno-space\fP mode. -.TP -.B R -Roman. -Return to roman font, see also \fBI\fP. -.TP -.B "RB [roman-text [bold-text [roman-text [...]]]]" -Roman-bold. -Even arguments is printed in roman, odd in boldface. -See \fBI\fP. -.TP -.B "RD [prompt [diversion [string]]]" -Read from standard input to diversion and/or string. -The text will be saved in a diversion named \fIdiversion\fP. -Recall the text by writing the name of the diversion after a dot -on an empty line. -A string will also be defined if -\fIstring\fP is given. -\fIDiversion\fP and/or \fIprompt\fP can -be empty (""). -.TP -.B RF -Reference end. -Ends a reference definition and returns to normal -processing. -See \fBRS\fP. -.TP -.B "RI [roman-text [italic-text [roman-text [...]]]]" -Even arguments are printed in roman, odd in italic. -See \fBI\fP. -.TP -.B "RL [text-indent [1]]" -Reference list start. -Begins a list where each item is preceded with a automatically -incremented number between -square brackets. -\fIText-indent\fP changes the default indentation. -.TP -.B "RP [arg1 [arg2]]" -Produce reference page. -\fBRP\fP can be used if a reference page is wanted somewhere in the -document. -It is not needed if \fBTC\fP is used to produce -a table of content. -The reference page will then be printed automatically. -.sp -The reference counter will not be reset if \fIarg1\fP is 1. -.sp -\fIArg2\fP tells \fBRP\fP whether to eject a page or not. -.br -\fBArg2\fP -.in +.5i -.T2 0 -The reference page will be printed on a separate page. -This is -the default. -.T2 1 -Do not eject page after the list. -.T2 2 -Do not eject page before the list. -.T2 3 -Do not eject page before and after the list. -.in -The reference items will be separated by a blank line. -Setting number register \fBLs\fP to 0 will suppress the line. -.sp -The string \fBRp\fP contains the reference page title and -is normally set to \fIREFERENCES\fP. -.TP -.B "RS [string-name]" -\fBRS\fP begins an automatically numbered reference definition. -Put the string \fB\e*(Rf\fP where the reference mark -should be and write the reference between \fBRS\fP/\fBRF\fP -at next new line after the reference mark. -The reference number -is stored in number register \fB:R\fP. -If \fIstring-name\fP is given, a string with that name -will be defined and contain the current reference mark. -The string can be referenced as \fB\e*[\fIstring-name\fP]\fP later in -the text. -.TP -.B "S [size [spacing]]" -Set point size and vertical spacing. -If any argument is equal 'P', then -the previous value is used. -A 'C' means current value, and 'D' default value. -If '+' or '-' is used before the value, then increment or decrement of -the current value will be done. -.TP -.B "SA [arg]" -Set right-margin justification. -Justification is normally turned on. -No argumenent or \fB0\fP turns off justification, a \fB1\fP turns on -justification. -.TP -.B "SETR refname [string]" -Remember the current header and page-number as \fIrefname\fP. -Saves \fIstring\fP if \fIstring\fP is defined. -\fIstring\fP is retrieved -with \fB.GETST\fP. -See \fBINITR\fP. -.TP -.B "SG [arg [1]]" -Signature line. -Prints the authors name(s) after the formal closing. -The argument will be appended to the reference data, printed -at either the first or last author. -The reference data is the location, -department and initials specified with \fB.AU\fP. -It will be printed at the first author if the second argument is given, -otherwise at the last. -No reference data will be printed if the author(s) is specifed -thru \fB.WA\fP/\fB.WE\fP. -See \fBINTERNALS\fP. -.TP -.B "SK [pages]" -Skip pages. -If \fIpages\fP is \fB0\fP or omitted, a skip to the next page -will occur unless it is already at the top of a page. -Otherwise it will skip \fIpages\fP pages. -.TP -.B "SM string1 [string2 [string3]]" -Make a string smaller. -If \fIstring2\fP is given, \fIstring1\fP will be smaller and \fIstring2\fP -normal, concatenated with \fIstring1\fP. -With three argument, all is -concatenated, but only \fIstring2\fP is made smaller. -.TP -.B "SP [lines]" -Space vertically. -\fIlines\fP can have any scalingfactor, like \fI3i\fP or -\fI8v\fP. -Several \fBSP\fP in a line will only produce the -maximum number of lines, not the sum. -\fBSP\fP will also be ignored -until the first textline in a page. -Add a \fB\e&\fP before \fBSP\fP -to avoid this. -.TP -.B TAB -reset tabs to every\ 5n. -Normally used to reset any previous tabpositions. -.TP -.B "TB [title [override [flag [refname]]]]" -Table title, arguments are the same as for \fBEC\fP. -\fBTB\fP uses the number register \fBTb\fP as counter. -The string \fBLt\fP controls the title of the -List of Tables, default is \fILIST OF TABLES\fP. -The List of Tables will only be printed if number register \fBLt\fP -is 1, default 1. -The string \fBLitb\fP contains the word \fITABLE\fP, wich -is printed before the number. -.br -Special handling of the title will occur if -\fBTB\fP is used inside \fBDS\fP/\fBDE\fP, it will not be -affected by the format of \fBDS\fP. -.TP -.B "TC [slevel [spacing [tlevel [tab [h1 [h2 [h3 [h4 [h5]]]]]]]]]" -Table of contents. -This macro is normally used at the last line of the document. -It generates a table of contents with headings up to the level -controlled by number register \fBCl\fP. -Note that \fBCl\fP controls -the saving of headings, it has nothing to do with \fBTC\fP. -Headings with level less than or equal to \fIslevel\fP will get -\fIspacing\fP number of lines before them. -Headings with level less than or equal to \fItlevel\fP will have -their page numbers right justified with dots or spaces separating -the text and the page number. -Spaces is used if \fItab\fP -is greater than zero, otherwise dots. -Other headings will have the -page number directly at the end of the heading text (\fIragged right\fP). -.sp -The rest of the arguments will be printed, centered, before the -table of contents. -.sp -The user-defined macros \fBTX\fP and \fBTY\fP are used if \fBTC\fP is called -with at most four arguments. -\fBTX\fP is called before the printing -of \fICONTENTS\fP, and \fBTY\fP is called instead of printing \fICONTENTS\fP. -.sp -Equivalent macros can be defined for list of figures, tables, equations -and excibits by defining \fBTXxx\fP or \fBTYxx\fP, where \fBxx\fP -is \fBFg\fP, \fBTB\fP, \fBEC\fP or \fBEX\fP. -.sp -String \fBCi\fP can be set to control the indentations for each heading-level. -It must be scaled, like \fB.ds\ Ci\ .25i\ .5i\ .75i\ 1i\ 1i\fP. -The indentation is normally controlled by the maxlength of headings -in each level. -.sp -All texts can be redefined, new stringvariables -\fILifg\fP, \fILitb\fP, \fILiex\fP, \fILiec\fP and \fILicon\fP contain -"Figure", "TABLE", "Exhibit", "Equation" and "CONTENTS". -These can be redefined to other languages. -.TP -.B TE -Table end. -See \fBTS\fP. -.TP -.B "TH [N]" -Table header. -See \fBTS\fP. -\fBTH\fP ends the header of the table. -This header will -be printed again if a page-break occurs. -Argument \fIN\fP isn't implemented yet. -.TP -.B TL [charging-case number(s) [filing-case number(s)]] -Begin title of memorandum. -All text up to the next \fBAU\fP is included in the title. -\fICharging-case number\fP and \fIfiling-case\fP are saved -for use in the front page processing. -.TP -.B TM [num1 [num2 [...]]] -Technical memorandumnumbers used in \fB.MT\fP. -Unlimited number -of arguments may be given. -.TP -.B TP -Top of page user-defined macro. -This macro is called instead of the normal page header. -It is -possible to get complete control over the header. -Note that header and footer is printed in a separate environment. -Linelength is preserved though. -.TP -.B "TS [H]" -Table start. -This is the start of a table specification -to \fB@g@tbl\fP. -See separate manual for \fB@g@tbl\fP. -\fBTS\fP ends with \fBTE\fP. -Argument \fIH\fP tells \fBm@TMAC_M_PREFIX@m\fP that the table -has a header. -See \fBTH\fP. -.TP -.B TX -Userdefined table of contents exit. -This macro is called just before \fBTC\fP prints the word \fICONTENTS\fP. -See \fBTC\fP. -.TP -.B TY -Userdefined table of contents exit (no "CONTENTS"). -This macro is called instead of printing \fICONTENTS\fP. -See \fBTC\fP. -.TP -.B VERBON [flag [pointsize [font]]] -Begin verbatim output using courier font. -Usually for printing programs. -All character has equal width. -The pointsize can be changed with -the second argument. -By specifying the font-argument -it is possible to use another font instead of courier. -\fIflag\fP controls several special features. -It contains the sum of all wanted features. -.in +.5i -.T2 Value -Description -.T2 1 -Disable the escape-character (\e). -This is normally turned on during -verbose output. -.T2 2 -Add an empty line before the verbose text. -.T2 4 -Add an empty line after the verbose text. -.T2 8 -Print the verbose text with numbered lines. -This adds four digitsized -spaces in the beginning of each line. -Finer control is available with -the string-variable \fBVerbnm\fP. -It contains all arguments to the -\fBtroff\fP-command \fB.nm\fP, normally '1'. -.T2 16 -Indent the verbose text with five 'n':s. -This is controlled by the -number-variable \fBVerbin\fP (in units). -.in -.TP -.B VERBOFF -End verbatim output. -.TP -.B "VL text-indent [mark-indent [1]]" -Variable-item list has no fixed mark, it assumes that -every \fBLI\fP have a mark instead. -\fIText-indent\fP sets the indent to the text, and \fImark-indent\fP -the distance from the current indent to the mark. -A third argument will prohibit printing of a blank line before each -item. -.TP -.B "VM [-T] [top [bottom]]" -Vertical margin. Adds extra vertical top and margin space. -Option \fB-T\fP set the total space instead. -No argument resets the margin to zero or the default -\fI(7v 5v)\fP if \fB-T\fP -was used. It is higly recommended that macro \fBTP\fP and/or -\fBEOP\fP are defined -if using \fB-T\fP and setting top and/or bottom margin to less than the default. -.TP -.B "WA [writer-name [title]]" -Begins specification of the writer and writer's address. -Several names can be specified with empty \fBWA\fP/\fBWE\fP-pairs, but -only one address. -.TP -.B WE -Ends the address-specification after \fP.WA\fP. -.TP -.B "WC [format]" -Footnote and display width control. -.in +.5i -.T2 N -Set default mode, \fB-WF\fP, \fB-FF\fP, \fB-WD\fP and \fBFB\fP. -.T2 WF -Wide footnotes, wide also in two-column mode. -.T2 -WF -Normal footnote width, follow column mode. -.T2 FF -All footnotes gets the same width as the first footnote encountered. -.T2 -FF -Normal footnotes, width follows \fBWF\fP and \fB-WF\fP. -.T2 WD -Wide displays, wide also in two-column mode. -.T2 -WD -Normal display width, follow column mode. -.T2 FB -Floating displays generates a line break when printed on the current page. -.T2 -FB -Floating displays does not generate line break. -.in -.sp 3 -.LP -.\"######################################################################## -.LP -.B "Strings used in m@TMAC_M_PREFIX@m:" -.TP -.B App -A string containing the word "APPENDIX". -.TP -.B Apptxt -The current appendix text. -.TP -.B "EM" -Em dash string -.TP -.B H1txt -Will be updated by \fB.H\fP and \fB.HU\fP to the current heading text. -Also updated in table of contents & friends. -.TP -.B HF -Fontlist for headings, normally "2 2 2 2 2 2 2". -Nonnumeric fontnames may also be used. -.TP -.B HP -Pointsize list for headings. -Normally "0 0 0 0 0 0 0" which is the same as -"10 10 10 10 10 10 10". -.TP -.B Index -Contains \fIINDEX\fP. -.TP -.B Indcmd -Contains the index command, \fIsort\ -t\et\fP. -.TP -.B Lifg -String containing \fIFigure\fP. -.TP -.B Litb -String containing \fITABLE\fP. -.TP -.B Liex -String containing \fIExhibit\fP. -.TP -.B Liec -String containing \fIEquation\fP. -.TP -.B Licon -String containing \fICONTENTS\fP. -.TP -.B Lf -Contains "LIST OF FIGURES". -.TP -.B Lt -Contains "LIST OF TABLES". -.TP -.B Lx -Contains "LIST OF EXHIBITS". -.TP -.B Le -Contains "LIST OF EQUATIONS". -.TP -.B Letfc -Contains "Yours very truly,", used in \fB.FC\fP. -.TP -.B Letapp -Contains "APPROVED:", used in \fB.AV\fP. -.TP -.B Letdate -Contains "Date", used in \fB.AV\fP. -.TP -.B LetCN -Contains "CONFIDENTIAL", used in \fB.LO CN\fP. -.TP -.B LetSA -Contains "To Whom It May Concern:", used in \fB.LO SA\fP. -.TP -.B LetAT -Contains "ATTENTION:", used in \fB.LO AT\fP. -.TP -.B LetSJ -Contains "SUBJECT:", used in \fB.LO SJ\fP. -.TP -.B LetRN -Contains "In reference to:", used in \fB.LO RN\fP. -.TP -.B Letns -is an array containing the different strings used in \fB.NS\fP. -It is really a number of stringvariables prefixed with \fBLetns!\fP. -If the argument doesn't exist, it will be included -between \fB()\fP with \fBLetns!copy\fP as prefix and \fBLetns!to\fP as suffix. -Observe the space after \fBcopy\fP and before \fBto\fP. -.nf -.ta 1.5i -\fBName Value\fP -Letns!0 Copy to -Letns!1 Copy (with att.) to -Letns!2 Copy (without att.) to -Letns!3 Att. -Letns!4 Atts. -Letns!5 Enc. -Letns!6 Encs. -Letns!7 Under separate cover -Letns!8 Letter to -Letns!9 Memorandum to -Letns!10 Copy (with atts.) to -Letns!11 Copy (without atts.) to -Letns!12 Abstract Only to -Letns!13 Complete Memorandum to -Letns!14 CC -Letns!copy Copy " -Letns!to " to -.fi -.TP -.B Letnsdef -Defines the standard-notation used when no argument is given -to \fB.NS\fP. -Default is \fB0\fP. -.TP -.B "MO1 - MO12" -Strings containing \fIJanuary\fP thru \fIDecember\fP. -.TP -.B Qrf -String containing "See chapter \e\e*[Qrfh], page \e\en[Qrfp].". -.TP -.B Rp -Contains "REFERENCES". -.TP -.B Tcst -Contains current status of table of contents and list of XXXX. -Empty outside \fB.TC\fP. -Useful in user-defined macros like \fB.TP\fP. -.nf -.ta 1.5i -\fBValue Meaning\fP -co Table of contents -fg List of figures -tb List of tables -ec List of equations -ex List of exhibits -ap Appendix -.fi -.ta -.TP -.B Tm -Contains \e(tm, trade mark. -.TP -.B Verbnm -Argument to \fB.nm\fP in \fB.VERBON\fP, default: \fB1\fP. -.\"----------------------------------- -.LP -.B "Number variables used in m@TMAC_M_PREFIX@m:" -.TP -.B Aph -Print an appendix-page for every new appendix -if this numbervariable is non-zero. -No output will occur if \fBAph\fP is zero, but there will always -be an appendix-entry in the 'List of contents'. -.TP -.B Cl -Contents level [0:14], contents saved if heading level <= Cl, default 2. -.TP -.B Cp -Eject page between LIST OF XXXX if Cp == 0, default 0. -.TP -.B D -Debugflag, values >0 produces varying degree of debug. -A value of\ 1 -gives information about the progress of formatting, default\ 0. -.TP -.B De -Eject after floating display is output [0:1], default\ 0. -.TP -.B Dsp -Controls the space output before and after static displays -if defined. -Otherwise is the value of Lsp used. -.TP -.B Df -Floating keep output [0:5], default 5. -.TP -.B Ds -\fBLsp\fP space before and after display if == 1 [0:1], default 1. -.TP -.B Ej -Eject page, default 0. -.TP -.B Eq -Equation lable adjust 0=left, 1=right. -Default\ 0. -.TP -.B Fs -Footnote spacing, default 1. -.TP -.B "H1-H7" -Heading counters -.TP -.B H1dot -Append a dot after the level one heading number if >\ 0. -Default is\ 1. -.TP -.B H1h -Copy of number register \fBH1\fP, but it is incremented -just before the page break. -Useful in user defined header macros. -.TP -.B Hb -Heading break level [0:14], default\ 2. -.TP -.B Hc -Heading centering level, [0:14]. -Default\ 0. -.TP -.B Hi -Heading temporary indent [0:2], default\ 1. -.br -0\ ->\ 0 indent, left margin -.br -1\ ->\ indent to right , like .P 1 -.br -2\ ->\ indent to line up with text part of preceding heading -.TP -.B Hps -Number variable with the heading pre-space level. -If the heading-level -is less than or equal to \fBHps\fP, then two lines will precede the -section heading instead of one. -Default is first level only. -The real amount of lines is controlled by the variables \fBHps1\fP and -\fBHps2\fP. -.TP -.B Hps1 -This is the number of lines preceding \fB.H\fP when the heading-level -is greater than \fBHps\fP. -Value is in units, normally 0.5. -.TP -.B Hps2 -This is the number of lines preceding \fB.H\fP when the heading-level -is less than or equal to \fBHps\fP. -Value is in units, normally\ 1. -.TP -.B Hs -Heading space level [0:14], default\ 2. -.TP -.B Hss -This is the number of lines that follows \fB.H\fP when the heading-level -is less than or equal to \fBHs\fP. -Value is in units, normally\ 1. -.TP -.B Ht -Heading numbering type, default 0. -0 -> multiple (1.1.1 ...) -.br -1 -> single -.TP -.B Hu -Unnumbered heading level, default 2. -.TP -.B Hy -Hyphenation in body, default 0. -.br -0\ ->\ no hyphenation -.br -1\ ->\ hyphenation 14 on -.TP -.B Iso -Set this variable to 1 on the command line to get ISO-formatted date string. -(\fB-rIso=1\fP) -Useless inside a document. -.TP -.B L -Page length, only for command line settings. -.TP -.B Letwam -Max lines in return-address, used in \fB.WA\fP/\fB.WE\fP. -Default\ 14. -.TP -.B "Lf, Lt, Lx, Le" -Enables (1) or disables (0) the printing of List of figures, -List of tables, List of exhibits and List of equations. -Default: Lf=1, Lt=1, Lx=1, Le=0. -.TP -.B Li -List indent, used by .AL, default 6. -.TP -.B Limsp -Flag for space between prefix and mark in automatic lists (.AL). -.br -0\ ==\ no space -.br -1\ ==\ space -.TP -.B Ls -List space, if current listlevel > Ls then no spacing will occur around lists. -Default 99. -.TP -.B Lsp -The size of an empty line. -Normally 0.5v, but it is 1v -if \fBn\fP is set (\fB.nroff\fP). -.TP -.B N -Numbering style [0:5], default 0. -.br -0\ ==\ (default) normal header for all pages. -.br -1\ ==\ header replaces footer on first page, header is empty. -.br -2\ ==\ page header is removed on the first page. -.br -3\ ==\ "section-page" numbering enabled. -.br -4\ ==\ page header is removed on the first page. -.br -5\ ==\ "section-page" and "section-figure" numbering enabled. -See also the number-register Sectf and Sectp. -.TP -.B Np -Numbered paragraphs, default 0. -.br -0\ ==\ not numbered -.br -1\ ==\ numbered in first level headings. -.TP -.B O -Page offset, only for command line settings. -.TP -.B Of -Format of figure,table,exhibit,equation titles, default 0. -.br -0\ =\ ". " -.br -1\ =\ " - " -.TP -.B P -Current page-number, normally the same as % unless "section-page" numbering -is enabled. -.TP -.B Pi -paragraph indent, default 5. -.TP -.B Pgps -Controls whether header and footer pointsize should follow the current -setting or just change when the header and footer is defined. -.in +.5i -.ti -.5i -.T2 Value -Description -.T2 0 -Pointsize will only change to the current setting when \fB.PH\fP, \fB.PF\fP, -\&\fB.OH\fP, \fP.EH\fP, \fB.OF\fP or \fB.OE\fP is executed. -.T2 1 -Pointsize will change after every \fB.S\fP. -This is the default. -.in -.TP -.B Ps -paragraph spacing, default 1. -.TP -.B Pt -Paragraph type, default 0. -.br -0\ ==\ left-justified -.br -1\ ==\ indented .P -.br -2\ ==\ indented .P except after .H, .DE or .LE. -.TP -.B Sectf -Flag controlling "section-figures". -A non-zero value enables this. -See also register N. -.TP -.B Sectp -Flag controlling "section-page-numbers". -A non-zero value enables this. -See also register N. -.TP -.B Si -Display indent, default 5. -.TP -.B Verbin -Indent for \fB.VERBON\fP, default 5n. -.TP -.B W -Line length, only for command line settings. -.TP -.B .mgm -Always 1. -.LP -.SH INTERNALS -The letter macros is using different submacros depending on -the letter type. -The name of the submacro has the letter type -as suffix. -It is therefore possible to define other letter types, either -in the national macro-file, or as local additions. -\&\fB.LT\fP will set the number variables \fBPt\fP and \fBPi\fP to 0 and 5. -The following strings and macros must be defined for a new letter type: -.TP -\fBlet@init_\fP\fItype\fP -This macro is called directly by \fB.LT\fP. -It is supposed to initialize -variables and other stuff. -.TP -\fBlet@head_\fP\fItype\fP -This macro prints the letter head, and is called instead of the -normal page header. -It is supposed to remove the alias \fBlet@header\fP, -otherwise it will be called for all pages. -.TP -\fBlet@sg_\fP\fItype\ name\ title\ n\ flag\ [arg1\ [arg2\ [...]]]\fP -\&\fB.SG\fP is calling this macro only for letters, memorandums has -its own processing. -\fIname\fP and \fItitle\fP is specified -thru \fB.WA\fP/\fB.WB\fP. -\fIn\fP is the counter, 1-max, and -\fIflag\fP is true for the last name. -Any other argument to \fB.SG\fP -is appended. -.TP -\fBlet@fc_\fP\fItype\ closing\fP -This macro is called by \fB.FC\fP, and has the -formal closing as argument. -.LP -\&\fB.LO\fP is implemented as a general option-macro. -\fB.LO\fP demands -that a string named \fBLet\fP\fItype\fP is defined, where \fItype\fP -is the letter type. -\&\fB.LO\fP will then assign the argument to the string -variable \fBlet*lo-\fP\fItype\fP. -.LP -.\".SH BUGS -.SH AUTHOR -Jörgen Hägg, Lund, Sweden . -.SH FILES -.TP -.B @MACRODIR@/tmac.@TMAC_M_PREFIX@m -.TP -.B @TMAC_MDIR@/*.cov -.TP -.B @TMAC_MDIR@/*.MT -.TP -.B @TMAC_MDIR@/locale -.SH "SEE ALSO" -.BR groff (@MAN1EXT@), -.BR @g@troff (@MAN1EXT@), -.BR @g@tbl (@MAN1EXT@), -.BR @g@pic (@MAN1EXT@), -.BR @g@eqn (@MAN1EXT@) -.br -.BR groff_mmse (@MAN7EXT@) -. -.\" Local Variables: -.\" mode: nroff -.\" coding: latin-1 -.\" End: diff --git a/contrib/groff/contrib/mm/groff_mmse.man b/contrib/groff/contrib/mm/groff_mmse.man deleted file mode 100644 index 511eac5898c7..000000000000 --- a/contrib/groff/contrib/mm/groff_mmse.man +++ /dev/null @@ -1,86 +0,0 @@ -.\" -.\" $Id: groff_mmse.man,v 2.2 2001/12/09 12:15:09 wlemb Exp $ -.\" Skrivet av Jörgen Hägg, Lund, Sverige -.\" -.TH GROFF_MMSE @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@" -.SH NAMN -groff_mmse \- svenska mm makro för groff -.SH SYNTAX -.B groff -.B \-m@TMAC_M_PREFIX@mse -[ -.IR flaggor .\|.\|. -] -[ -.IR filer .\|.\|. -] -.SH BESKRIVNING -\fBm@TMAC_M_PREFIX@mse\fP är en svensk variant av \fBm@TMAC_M_PREFIX@m\fP. Alla texter -är översatta. En A4 sida får text som är 13 cm bred, 3.5 cm indragning -samt är 28.5 cm hög. -Det finns stöd för brevuppställning enligt svensk standard -för vänster och högerjusterad text. -.LP -\fBCOVER\fP kan använda \fIse_ms\fP som argument. Detta ger ett -svenskt försättsblad. -Se \fBgroff_mm(@MAN7EXT@)\fP för övriga detaljer. -.SH BREV -Tillgängliga brevtyper: -.TP -.B ".LT SVV" -Vänsterställd löptext med adressat i position T0 (vänsterställt). -.TP -.B ".LT SVH" -Högerställd löptext med adressat i position T4 (passar -fönsterkuvert). -.LP -Följande extra LO-variabler används. -.TP -.B ".LO DNAMN\fI namn\fP" -Anger dokumentets namn. -.TP -.br -.B ".LO MDAT\fI datum\fP" -Mottagarens datum, anges under \fBErt datum:\fP (\fBLetMDAT\fP). -.TP -.br -.B ".LO BIL\fI sträng\fP" -Anger bilaga, nummer eller sträng med \fBBilaga\fP (\fBLetBIL\fP) -som prefix. -.TP -.br -.B ".LO KOMP\fI text\fP" -Anger kompletteringsuppgift. -.TP -.br -.B ".LO DBET\fI beteckning\fP" -Anger dokumentbeteckning eller dokumentnummer. -.TP -.br -.B ".LO BET\fI beteckning\fP" -Anger beteckning (ärendebeteckning i form av diarienummer eller liknande). -.TP -.br -.B ".LO SIDOR\fI antal\fP" -Anger totala antalet sidor och skrivs ut efter sidnumret inom -parenteser. -.LP -Om makrot \fB.TP\fP är definierat anropas det efter utskrift av brevhuvudet. -Där lägger man lämpligen in postadress och annat som brevfot. -.SH "SKRIVET AV" -Jörgen Hägg, Lund, Sweden -.SH FILER -.B @MACRODIR@/tmac.@TMAC_M_PREFIX@mse -.B @TMAC_MDIR@/se_*.cov -.SH "SE OCKSÅ" -.BR groff (@MAN1EXT@), -.BR @g@troff (@MAN1EXT@), -.BR @g@tbl (@MAN1EXT@), -.BR @g@pic (@MAN1EXT@), -.BR @g@eqn (@MAN1EXT@) -.br -.BR groff_mm (@MAN7EXT@) -. -.\" Local Variables: -.\" mode: nroff -.\" End: diff --git a/contrib/groff/contrib/mm/m.tmac b/contrib/groff/contrib/mm/m.tmac deleted file mode 100644 index db52e93deb7a..000000000000 --- a/contrib/groff/contrib/mm/m.tmac +++ /dev/null @@ -1,3536 +0,0 @@ -.\" -.de @revision -.ds RE \\$2 -.. -.\" -.\" $Id: m.tmac,v 2.26 2005/05/26 06:28:38 wl Exp $ -.@revision $Revision: 2.26 $ -.ig - -Copyright (C) 1991-2000, 2001, 2002, 2003, 2004, 2005 - Free Software Foundation, Inc. -mgm is written by Jörgen Hägg - -mgm is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. - -mgm is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License along -with groff; see the file COPYING. If not, write to the Free Software -Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - -Please send bugreports with examples to jh@axis.com. - -Naming convention stolen from mgs. -Local names module*name -Extern names module@name -Env.var environ:name -Index array!index -.. -.if !\n(.g .ab These mm macros require groff. -.do if d PH .nx -.if \n(.C .ab The groff mm macros do not work in compatibility mode. -.if (\n[.warn] == 65543) .warn -.mso devtag.tmac -.\" ######## init ####### -.\" Contents level [0:14], contents saved if heading level <= Cl -.nr Cl 2 -.\" Eject page between LIST OF XXXX if Cp == 0 -.nr Cp 0 -.\" Debugflag -.if !r D .nr D 0 -.\" Eject after floating display is output [0:1] -.nr De 0 -.\" Floating keep output [0;5] -.nr Df 5 -.\" space before and after display if == 1 [0:1] -.nr Ds 1 -.\" Eject page -.nr Ej 0 -.\" Equation label adjust 0=left, 1=right -.nr Eq 0 -.\" Em dash string -.ie n .ds EM " -- -.el .ds EM \(em -.\" Footnote spacing -.nr Fs 1 -.\" H1-H7 heading counters -.nr H1 0 1 -.nr H2 0 1 -.nr H3 0 1 -.nr H4 0 1 -.nr H5 0 1 -.nr H6 0 1 -.nr H7 0 1 -.nr H8 0 1 -.nr H9 0 1 -.nr H10 0 1 -.nr H11 0 1 -.nr H12 0 1 -.nr H13 0 1 -.nr H14 0 1 -.\" Heading break level [0:14] -.nr Hb 2 -.\" heading centering level, [0:14] -.nr Hc 0 -.\" header format -.ds HF 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -.\" heading temp. indent [0:2] -.\" 0 -> 0 indent, left margin -.\" 1 -> indent to right , like .P 1 -.\" 2 -> indent to line up with text part of preceding heading -.nr Hi 1 -.\" header pointsize -.ds HP 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -.\" heading space level [0:14] -.nr Hs 2 -.\" heading numbering type -.\" 0 -> multiple (1.1.1 ...) -.\" 1 -> single -.nr Ht 0 -.\" Unnumbered heading level -.nr Hu 2 -.\" hyphenation in body -.\" 0 -> no hyphenation -.\" 1 -> hyphenation 14 on -.nr Hy 0 -.\" text for toc, selfexplanatory. Look in the new variable section -.ds Lf LIST OF FIGURES -.nr Lf 1 -.ds Lt LIST OF TABLES -.nr Lt 1 -.ds Lx LIST OF EXHIBITS -.nr Lx 1 -.ds Le LIST OF EQUATIONS -.nr Le 0 -.\" List indent, used by .AL -.nr Li 6 -.\" List space, if listlevel > Ls then no spacing will occur around lists. -.nr Ls 99 -.\" Numbering style [0:5] -.if !r N .nr N 0 -.\" numbered paragraphs -.\" 0 == not numbered -.\" 1 == numbered in first level headings. -.nr Np 0 -.\" Format of figure,table,exhibit,equation titles. -.\" 0= ". ", 1=" - " -.nr Of 0 -.\" Table of contents page numbering style -.nr Oc 0 -.\" Page-number, normally same as %. -.nr P 0 -.\" paragraph indent -.nr Pi 5 -.\" paragraph spacing -.nr Ps 1 -.\" paragraph type -.\" 0 == left-justified -.\" 1 == indented .P -.\" 2 == indented .P except after .H, .DE or .LE. -.nr Pt 0 -.\" Reference title -.ds Rp REFERENCES -.\" Display indent -.nr Si 5 -.\" -.\" Current state of TOC, empty outside TC, inside -.\" it will be set to co,fg,tb,ec,ex or ap. -.ds Tcst -.\" -.ds Tm \(tm -.\" -.\"--------------------------------------------- -.\" Internal global variables -.\" -.\" This is for cover macro .MT -.\" .ds @language -.\" -.nr @copy_type 0 -.if r C .nr @copy_type \n[C] -.\" >0 if Subject/Date/From should be bold, roman otherwise -.ie n .ds @sdf_font R -.el .ds @sdf_font B -.if \n[@copy_type]=4 \{\ -. ls 2 -. nr Pi 10 -. nr Pt 1 -.\} -.\" -.\" -.if r E \{\ -. ie \n[E] .ds @sdf_font B -. el .ds @sdf_font R -.\} -.\" -.\" Current pointsize and vertical space, always in points. -.if !r S .nr S 10 -.ps \n[S] -.vs \n[S]+2 -.\" -.nr @ps \n[.ps] -.nr @vs \n[.v] -.if \n[D]>1 .tm @ps=\n[@ps], @vs=\n[@vs] -.if \n[D]>3 .tm INIT: l:\n[.l] p:\n[.p] o:\n[.o] -.\" -.\" Page length -.if r L \{\ -. ie n .pl \n[L]u -. el .pl \n[L]u -.\} -.nr @pl \n[.p] -.\" -.\" page width -.ie r W \{\ -. ie n .ll \n[W]u -. el .ll \n[W]u -.\} -.el .ll 6i -.nr @ll \n[.l] -.nr @cur-ll \n[@ll] -.lt \n[@ll]u -.\" -.\" page offset -.ie r O .po \n[O]u -.el \{\ -. ie n .po .75i -. el .po .963i -.\} -.\" -.nr @po \n[.o] -.\" -.\" non-zero if escape mechanism is turned off. Used by VERBON/OFF -.nr @verbose-flag 0 -.\"--------------------------------------------- -.\" New variables -.\" -.\" Appendix name -.ds App APPENDIX -.\" print appendixheader, 0 == don't -.nr Aph 1 -.\" -.\" Current appendix text -.ds Apptext -.\" Controls the space before and after static displays if defined. -.\" Lsp is used otherwise -.\" .nr Dsp 1v -.\" -.\" Add a dot after level one heading number if >0 -.nr H1dot 1 -.\" -.\" header prespace level. If level <= Hps, then two lines will be printed -.\" before the header instead of one. -.nr Hps 1 -.\" -.\" These variables controls the number of lines preceding .H. -.\" Hps1 is the number of lines when level > Hps -.nr Hps1 0.5v -.if n .nr Hps1 1v -.\" -.\" Hps2 is the number of lines when level <= Hps -.nr Hps2 1v -.if n .nr Hps2 2v -.\" -.\" Hss is the number of lines (Lsp) after the header. -.nr Hss 1 -.\" -.\" H1txt will be updated by .H and .HU, containing the heading text. -.\" Will also be updated in table of contents & friends -.\" -.ds H1txt -.\" -.\" header text for the index -.ds Index INDEX -.\" command to sort the index -.ds Indcmd sort -.\" -.\" flag for mkindex -.if !r Idxf .nr Idxf 0 -.\" Change these in the national configuration file -.ds Lifg Figure -.ds Litb TABLE -.ds Liex Exhibit -.ds Liec Equation -.ds Licon CONTENTS -.\" Flag for space between mark and prefix 1==space, 0==no space -.\" Can also be controlled by using '.LI mark 2' -.nr Limsp 1 -.\" -.\" Lsp controls the height of an empty line. Normally 0.5v -.\" Normally used for nroff compatibility. -.nr Lsp 0.5v -.if n .nr Lsp 1v -.ds MO1 January -.ds MO2 February -.ds MO3 March -.ds MO4 April -.ds MO5 May -.ds MO6 June -.ds MO7 July -.ds MO8 August -.ds MO9 September -.ds MO10 October -.ds MO11 November -.ds MO12 December -.\" for GETR -.ds Qrf See chapter \\*[Qrfh], page \\*[Qrfp]. -.\" -.\" header- and footer-size will only change to the current -.\" if Pgps is > 0. -.nr Pgps 1 -.\" -.\" section-page if Sectp > 0 -.nr Sectp 0 -.if (\n[N]=3):(\n[N]=5) \{\ -. nr Sectp 1 -. nr Ej 1 -.\} -.\" section-figure if Sectf > 0 -.nr Sectf 0 -.if \n[N]=5 .nr Sectf 1 -.\" -.\" argument to .nm in .VERBON. -.ds Verbnm "1 -.\" indent for VERBON -.nr Verbin 5n -.\" -.\" Letter section -.\" Formal closing (.FC) -.ds Letfc Yours very truly, -.\" -.\" Approval line -.ds Letapp APPROVED: -.\" Approval date-string -.ds Letdate Date -.\" -.ds LetCN CONFIDENTIAL\" Confidential default -.ds LetSA To Whom It May Concern:\" Salutation default -.ds LetAT ATTENTION:\" Attention string -.ds LetSJ SUBJECT:\" Subject string -.ds LetRN In reference to:\" Reference string -.\" -.\" Copy to (.NS) -.ds Letnsdef 0 -.ds Letns!copy Copy \" space! -.ds Letns!to " to -.ds Letns!0 Copy to -.ds Letns!1 Copy (with att.) to -.ds Letns!2 Copy (without att.) to -.ds Letns!3 Att. -.ds Letns!4 Atts. -.ds Letns!5 Enc. -.ds Letns!6 Encs. -.ds Letns!7 Under separate cover -.ds Letns!8 Letter to -.ds Letns!9 Memorandum to -.ds Letns!10 Copy (with atts.) to -.ds Letns!11 Copy (without atts.) to -.ds Letns!12 Abstract Only to -.ds Letns!13 Complete Memorandum to -.ds Letns!14 CC: -.\" -.\" Text printed below the footer. Controlled by @copy_type (C). -.ds Pg_type!0 -.ds Pg_type!1 OFFICIAL FILE COPY -.ds Pg_type!2 DATE FILE COPY -.ds Pg_type!3 D\ R\ A\ F\ T -.ds Pg_type!4 D\ R\ A\ F\ T -.\" Max lines in return address -.nr Letwam 14 -.\"-------------------------- -.\" test for mgm macro. This can be used if the text must test -.\" what macros is used. -.nr .mgm 1 -.\" -.\" Due to security problems with groff I had to rewrite -.\" the reference system. It's not as elegant as before, you -.\" have to run groff with '-z -rRef=1' and put stderr into the filename -.\" for .INITR -.\" -.\" Output references to stderr if non-zero -.ie !r Ref \{\ -. nr Ref 0 -.\} -.el .warn 0 -.\" -.\"--------------------------------------------- -.\" set local variables. -.ie d @language .mso mm/\*[@language]_locale -.el .mso mm/locale -.\"--------------------------------------------- -.if \n[D] .tm Groff mm, version \*[RE]. -.\" ####### module init ###### -.\" reset all things -.de init@reset -.ie \\n[misc@adjust] 'ad -.el 'na -.ie \\n[Hy] 'hy 14 -.el 'nh -'in 0 -'ti 0 -.ps \\n[@ps]u -.vs \\n[@vs]u -.. -.de @warning -'tm WARNING:(\\n[.F]) input line \\n[.c]:\\$* -.if \\n[D] .backtrace -.. -.de @error -'tm ****************** -'tm ERROR:(\\n[.F]) input line \\n[.c]:\\$* -.if \\n[D] .backtrace -'tm ****************** -.ab "Input aborted, syntax error" -.. -.de misc@toupper -.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ -.br -\\$1 -.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz -.br -.. -.\" ####### module debug ################################# -.de debug -'tm \\$1:\\n[.F]:\\n[c.] ll=\\n[.l] vs=\\n[.v] ps=\\n[.s],\\n[.ps] \ -in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] -.. -.de debug-all -.nr debug*n 1n -.nr debug*m 1m -'tm \\$1:\\n[.F]:\\n[c.] ll=\\n[.l] vs=\\n[.v] ps=\\n[.s] in=\\n[.i]\ - ad=\\n[.j] fi=\\n[.u] pl=\\n[.p] page=\\n[%] .o=\\n[.o] -'tm _______ .d=\\n[.d] .f=\\n[.f] .h=\\n[.h] .k=\\n[.k] .n=\\n[.n]\ - .p=\\n[.p] .t=\\n[.t] .z=\\n[.z] nl=\\n[nl] dn=\\n[dn] n=\\n[debug*n] -.. -.\" ####### module par ################################# -.nr par@ind-flag 1 \" indent on following P if Pt=2 -.nr hd*last-pos -1 -.nr hd*last-hsize -1 -.nr par*number 0 1 -.af par*number 01 -.nr par*number2 0 1 -.af par*number2 01 -.nr par*num-count 0 1 -.af par*num-count 01 -.\" reset numbered paragraphs, arg1 = headerlevel -.de par@reset-num -.if \\$1<3 .nr par*num-count 0 -.if (\\$1=1)&(\\n[Np]=1) .nr par*number 0 -.. -.\"------------ -.\" paragraph -.de P -.\" skip P if previous heading -.if \\n[D]>2 \{\ -. tm Paragraph nl=\\n[nl], last=\\n[hd*last-pos] -. tm Paragraph .k=\\n[.k], hsize=\\n[hd*last-hsize] -.\} -.if !((\\n[nl]=\\n[hd*last-pos]):(\\n[hd*last-hsize]=\\n[.k])) \{\ -. if \\n[D]>2 .tm Paragraph set ind-flag=1 -. nr par@ind-flag 1 -.\} -.\" any collected unprinted text? -.par@doit \\$* -.if \\n[Np] \\n[H1].\\n+[par*number]\ \ \c -.. -.\"------------ -.de nP -.\" skip P if previous heading -.if \\n[D]>2 \{\ -. tm Paragraph nl=\\n[nl], last=\\n[hd*last-pos] -. tm Paragraph .k=\\n[.k], hsize=\\n[hd*last-hsize] -.\} -.if !((\\n[nl]=\\n[hd*last-pos]):(\\n[hd*last-hsize]=\\n[.k])) \{\ -. if \\n[D]>2 .tm Paragraph set ind-flag=1 -. nr par@ind-flag 1 -.\} -.par@doit \\$* -\\n[H2].\\n+[par*number2]\ \ \c -.nr par@ind-flag 1 -.. -.\"------------ -.de par@doit -.SP (u;\\n[Ps]*\\n[Lsp]) -.ie \\n[.$] \{\ -. if \\$1=1 .ti +\\n[Pi]n -.\} -.el \{\ -. if \\n[Pt]=1 .ti +\\n[Pi]n -. if (\\n[Pt]=2)&\\n[par@ind-flag] .ti +\\n[Pi]n -.\} -.. -.\" ####### module line ####################################### -.de SP -.br -.if !r line*lp\\n[.z] .nr line*lp\\n[.z] 0 -.if !r line*ac\\n[.z] .nr line*ac\\n[.z] 0 -.ie \\n[.$] .nr line*temp (v;\\$1) -.el .nr line*temp 1v -.\" -.ie \\n[line*lp\\n[.z]]=\\n[.d] \{\ -. \" go here if no output since the last .SP -. nr line*output \\n[line*temp]-\\n[line*ac\\n[.z]] -. if \\n[line*output]<0 .nr line*output 0 -. nr line*ac\\n[.z] +\\n[line*output] -.\} -.el \{\ -. nr line*ac\\n[.z] \\n[line*temp] -. nr line*output \\n[line*temp] -. \" no extra space in the beginning of a page -. if (\\n[.d]<0):(\\n[pg*head-mark]=\\n[.d]) .nr line*output 0 -.\} -.if \\n[line*output] .sp \\n[line*output]u -.nr line*lp\\n[.z] \\n[.d] -.. -.\" ######## module misc ############### -.nr misc@adjust 14 -.de SA -.if \\n[.$] \{\ -. if \\$1-1 .@error "SA: bad arg: \\$1" -. nr misc@adjust 0\\$1 -.\} -.ie \\n[misc@adjust] 'ad -.el 'na -.. -.\"------------- -.\" switch environment, keep all important settings. -.de misc@ev-keep -.nr misc*ll \\n[.l] -.ev \\$1 -.ll \\n[misc*ll]u -.lt \\n[misc*ll]u -.. -.\"------------- -.\" .misc@push stackname value -.de misc@push -.ie d misc*st-\\$1 .ds misc*st-\\$1 \\$2 \\*[misc*st-\\$1] -.el .ds misc*st-\\$1 \\$2 -.. -.\"------------- -.\" .misc@pop stackname -.\" value returned in the string misc*pop -.de misc@pop -.misc@pop-set misc*st-\\$1 \\*[misc*st-\\$1] -.. -.\"------------- -.de misc@pop-set -.ds misc*st-name \\$1 -.shift -.if \\n[.$]<1 .@error "stack \\*[misc*st-name] empty" -.ds misc*pop \\$1 -.shift -.ds \\*[misc*st-name] \\$* -.. -.\"------------- -.\" .misc@pop-nr stackname varname -.de misc@pop-nr -.misc@pop \\$1 -.nr \\$2 \\*[misc*pop] -.. -.\"------------- -.\" .misc@pop-ds stackname varname -.de misc@pop-ds -.misc@pop \\$1 -.ds \\$2 \\*[misc*pop] -.. -.\"----------- -.\" reset tabs -.de TAB -.ta T 5n -.. -.\"------------- -.\" .PGFORM linelength [ pagelength [ pageoffset [1]]] -.de PGFORM -.\" Break here to avoid problems with new linesetting of the previous line. -.\" Hope this doesn't break anything else :-) -.\" Don't break if arg_4 is a '1'. -.if \\n[D]>2 .tm PGFORM: \\$* -.if ''\\$4' .br -.if \\n[D]>3 .tm PGFORM: IN l:\\n[.l] p:\\n[.p] o:\\n[.o] -.ie !''\\$1' \{\ -. ll \\$1 -. nr @ll \\n[.l] -. nr @cur-ll \\n[@ll] -. lt \\n[@ll]u -.\} -.el \{\ -. ll \\n[@ll]u -. lt \\n[@ll]u -.\} -.\" -.ie !''\\$2' \{\ -. pl \\$2 -. nr @pl \\n[.p] -.\} -.el .pl \\n[@pl]u -.\" -.ie !''\\$3' \{\ -. po \\$3 -. nr @po \\n[.o] -.\} -.el .po \\n[@po]u -.if \\n[D]>3 .tm PGFORM: OUT l:\\n[.l] p:\\n[.p] o:\\n[.o] -.if \\n[D]>2 .tm PGFORM: ll=\\n[@ll], pl=\\n[@pl], po=\\n[@po] -'in 0 -.pg@move-trap -.if \\n[D]>2 \{\ -. tm Traps: -. ptr -.\} -.. -.\"------------- -.\" .MOVE y [[x] linelength] -.\" move to line y, indent to x -.de MOVE -.if !\\n[.$] .@error "MOVE y [x]: no arguments" -.if \\n[nl]<0 \c -.\" move to Y-pos -.sp |(v;\\$1) -.\" calc linelength -.ie \\n[.$]>2 .nr pg*i (n;\\$3) -.el \{\ -. ie \\n[.$]>1 .nr pg*i (n;\\n[@ll]u-\\$2) -. el .nr pg*i \\n[@ll]u -.\} -.\" move to X-pos, if any -.if !''\\$2' .po \\$2 -.\" set linelength -.ll \\n[pg*i]u -.. -.\"------------- -.de SM -.if !\\n[.$] .@error "SM: no arguments" -.if \\n[.$]=1 \s-1\\$1\s0 -.if \\n[.$]=2 \s-1\\$1\s0\\$2 -.if \\n[.$]=3 \\$1\s-1\\$2\s0\\$3 -.. -.\"------------- -.nr misc*S-ps \n[@ps] -.nr misc*S-vs \n[@vs] -.nr misc*S-ps1 \n[@ps] -.nr misc*S-vs1 \n[@vs] -.ds misc*a -.ds misc*b -.de S -.ie !\\n[.$] \{\ -. ds misc*a P -. ds misc*b P -.\} -.el \{\ -. ie \\n[.$]=1 .ds misc*b D -. el \{\ -. ie \w@\\$2@=0 .ds misc*b C -. el .ds misc*b \\$2 -. \} -. ie \w@\\$1@=0 .ds misc*a C -. el .ds misc*a \\$1 -.\} -.\" -.\" set point size -.if !'\\*[misc*a]'C' \{\ -. ie '\\*[misc*a]'P' .ps \\n[misc*S-ps]u -. el \{\ -. ie '\\*[misc*a]'D' .ps \\n[S] -. el .ps \\*[misc*a] -. if \\n[D]>2 .tm S: .ps \\*[misc*a] -. \} -.\} -.\" -.\" set vertical spacing -.if !'\\*[misc*b]'C' \{\ -. ie '\\*[misc*b]'P' .vs \\n[misc*S-vs]u -. el \{\ -. ie '\\*[misc*b]'D' .vs \\n[.ps]s+2p -. el .vs \\*[misc*b] -. if \\n[D]>2 .tm S: .vs \\*[misc*b] -. \} -.\} -.nr @ps \\n[.ps] -.nr @psu \\n[.ps]s -.nr @vs \\n[.v] -.nr @vsp \\n[.v]u/1p -.nr @res 1i -.\" -.if \\n[D]>1 \{\ -. tmc "S(\\$*): ma:\\*[misc*a], mb:\\*[misc*b] -. tm1 " => ps:\\n[.s]p (\\n[@psu]u), vs:\\n[@vsp]p (\\n[@vs]u) (res:\\n[@res]) -.\} -.nr misc*S-ps \\n[misc*S-ps1] -.nr misc*S-vs \\n[misc*S-vs1] -.nr misc*S-ps1 \\n[@ps] -.nr misc*S-vs1 \\n[@vs] -.pg@move-trap -.. -.\"------------ -.de HC -.ev 0 -.hc \\$1 -.ev -.ev 1 -.hc \\$1 -.ev -.ev 2 -.hc \\$1 -.ev -.. -.\"------------ -.de RD -.di misc*rd -'fl -.rd \\$1\t -.br -.di -.ie !''\\$3' \{\ -. di misc*rd2 -. ds \\$3 "\\*[misc*rd] -. br -. di -.\} -.if !''\\$2' .rn misc*rd \\$2 -.rm misc*rd misc*rd2 -.. -.\"------------ -.\" VERBON [flag [pointsize [font]]] -.\" flag -.\" bit function -.\" 0 escape on -.\" 1 add an empty line before verbose text -.\" 2 add an empty line after verbose text -.\" 3 numbered lines (controlled by the string Verbnm) -.\" 4 indent text by the numbervariable Verbin. -.de VERBON -.br -.nr misc*verb 0\\$1 -.if (0\\n[misc*verb]%4)/2 .SP \\n[Lsp]u -.misc@ev-keep misc*verb-ev -.nf -.if (0\\n[misc*verb]%16)/8 .nm \\*[Verbnm] -.ie !'\\$3'' .ft \\$3 -.el .ft CR -.ie 0\\$2 \{\ -. ss \\$2 -. ps \\$2 -. vs \\$2 -.\} -.el .ss 12 -.ta T 8u*\w@n@u -.if (0\\n[misc*verb]%32)/16 .in +\\n[Verbin]u -.if 0\\n[misc*verb]%2 \{\ -. eo -. nr @verbose-flag 1 \" tell pageheader to set ec/eo -.\} -.. -.de VERBOFF -.ec -.br -.if (0\\n[misc*verb]%8)/4 .SP \\n[Lsp]u -.if (0\\n[misc*verb]%16)/8 .nm -.if (0\\n[misc*verb]%32)/16 .in -.ev -.nr @verbose-flag 0 -.. -.\" ######## module pict ################# -.nr pict*width 0 -.nr pict*height 0 -.nr pict*mode 0 -.nr pict*ind 0 -.nr pict*id 0 1 -.\" I assume that the number variable pict*id is the same -.\" between two runs. -.de PIC -.br -.nr pict*ind 0 -.nr pict*box 0 -.while \\n[.$]>0 \{\ -. if '-B'\\$1' \{\ -. nr pict*box 1 -. shift -. continue -. \} -. if '-L'\\$1' \{\ -. nr pict*mode 0 -. shift -. continue -. \} -. if '-R'\\$1' \{\ -. nr pict*mode 1 -. shift -. continue -. \} -. if '-I'\\$1' \{\ -. nr pict*ind (m;\\$2) -. nr pict*mode 2 -. shift 2 -. continue -. \} -. if '-C'\\$1' \{\ -. nr pict*mode 3 -. shift -. continue -. \} -. ds pict*f \\$1 -. nr pict*id +1 -. shift -. if \\n[.$]>0 \{\ -. nr pict*width (i;\\$1) -. shift -. \} -. if \\n[.$]>0 \{\ -. nr pict*height (i;\\$1) -. shift -. \} -.\} -.\" let mmroff know the filename and id -.if \\n[Ref]>0 \{\ -. tm .\\\\" PIC id \\n[pict*id] -. tm .\\\\" PIC file \\*[pict*f] -.\} -.\" these are defined by mmroff in the second pass -.if d pict*file!\\n[pict*id] \{\ -. ds pict*f \\*[pict*file!\\n[pict*id]] -. nr pict*llx \\n[pict*llx!\\n[pict*id]] -. nr pict*lly \\n[pict*lly!\\n[pict*id]] -. nr pict*urx \\n[pict*urx!\\n[pict*id]] -. nr pict*ury \\n[pict*ury!\\n[pict*id]] -. \" -. nr pict*w (p;\\n[pict*urx]-\\n[pict*llx]) -. if \\n[pict*w]<0 .nr pict*w 0-\\n[pict*w] -. nr pict*h (p;\\n[pict*ury]-\\n[pict*lly]) -. if \\n[pict*h]<0 .nr pict*h 0-\\n[pict*h] -. if \\n[pict*width]>0 \{\ -. nr pict*rs (u;1000*\\n[pict*width]/\\n[pict*w]) -. nr pict*w (u;\\n[pict*w]*\\n[pict*rs]/1000) -. nr pict*h (u;\\n[pict*h]*\\n[pict*rs]/1000) -. \} -. if \\n[pict*height]>0 \{\ -. nr pict*rs (u;1000*\\n[pict*height]/\\n[pict*h]) -. nr pict*h (u;\\n[pict*h]*\\n[pict*rs]/1000) -. \} -. if '0'\\n[pict*mode]' \{\ -. nr pict*in \\n[.i]u -. \} -. if '1'\\n[pict*mode]' \{\ -. nr pict*in (u;\\n[.l]-\\n[.i]-\\n[pict*w]) -. \} -. if '2'\\n[pict*mode]' \{\ -. nr pict*in \\n[pict*ind]u -. \} -. if '3'\\n[pict*mode]' \{\ -. nr pict*in (u;(\\n[.l]-\\n[.i]-\\n[pict*w])/2) -. \} -. ds pict*h " -. if \\n[pict*h]>0 .ds pict*h \\n[pict*h] -. \" -. ne \\n[pict*h]u-1v -. \" -. \" these lines are copied and modified from tmac.pspic. -. \" Originally written by James Clark -. br -. ie \\n[pict*box]>0 \{\ -\v'-1v'\h'\\n[pict*in]u'\ -\Z'\D'p 0 \\n[pict*h]u \\n[pict*w]u 0 0 -\\n[pict*h]u''\ -\v'\\n[pict*h]u'\X'ps: import \\*[pict*f] \ -\\n[pict*llx] \\n[pict*lly] \ -\\n[pict*urx] \\n[pict*ury] \ -\\n[pict*w] \\n[pict*h]' -.\} -. el \{\ -\v'-1v'\h'\\n[pict*in]u'\ -\X'ps: invis'\ -\Z'\D'p 0 \\n[pict*h]u \\n[pict*w]u 0 0 -\\n[pict*h]u''\ -\X'ps: endinvis'\ -\v'\\n[pict*h]u'\X'ps: import \\*[pict*f] \ -\\n[pict*llx] \\n[pict*lly] \ -\\n[pict*urx] \\n[pict*ury] \ -\\n[pict*w] \\n[pict*h]' -. \} -. br -. sp \\n[pict*h]u-1v -.\} -.. -.\" external picture -.\" -L left adjust -.de EPIC -.if \\n[.$]<2 .@error "EPIC: Not enough arguments" -.nr pict*adj 0 \" centered -.if '\\$1'-L' \{\ -. shift 1 \" left adjust -. nr pict*adj 1 -.\} -.if \\n[nl]<0 \& -.nr pict*w \\$1 -.nr pict*h \\$2 -.ds pict*name "External picture -.if !''$3' .ds pict*name \\$3 -.ne \\n[pict*h]u -.sp \\n[pict*h]u-1v -.nr pict*ind 0 -.if !\\n[pict*adj] .nr pict*ind (u;(\\n[.l]-\\n[.i]-\\n[pict*w])/2) -.mk -.in +\\n[pict*ind]u -\D'l \\n[pict*w]u 0'\ -\D'l 0 -\\n[pict*h]u'\ -\D'l -\\n[pict*w]u 0'\ -\D'l 0 \\n[pict*h]u'\ -\v'-(u;\\n[pict*h]/2)'\ -\h'(u;(\\n[pict*w]-\w'\\*[pict*name]'/2))'\\*[pict*name] -.in -.rt -.sp 1v -.. -.\" ######## module acc ################# -.\"----------- -.\" accents. These are copied from mgs, written by James Clark. -.de acc@over-def -.ds \\$1 \Z'\v'(u;\w'x'*0+\En[rst]-\En[.cht])'\ -\h'(u;-\En[skw]+(-\En[.w]-\w'\\$2'/2)+\En[.csk])'\\$2' -.. -.de acc@under-def -.ds \\$1 \Z'\v'\En[.cdp]u'\h'(u;-\En[.w]-\w'\\$2'/2)'\\$2' -.. -.acc@over-def ` \` -.acc@over-def ' \' -.acc@over-def ^ ^ -.acc@over-def ~ ~ -.acc@over-def : \(ad -.acc@over-def ; \(ad -.acc@under-def , \(ac -.\" ######## module uni ################# -.\" unimplemented macros -.de OK -'tm "OK: not implemented" -.. -.de PM -'tm "PM: not implemented" -.. -.\" ######## module hd ################# -.\" support for usermacro -.nr hd*h1-page 1 \" last page-number for level 1 header. -.nr hd*htype 0 -.ds hd*sect-pg -.ds hd*mark -.ds hd*suf-space -.nr hd*need 0 -.aln ;0 hd*htype -.als }0 hd*mark -.als }2 hd*suf-space -.aln ;3 hd*need -.\"------------- -.\" .hd@split varable index name val1 val2 ... -.de hd@split -.if \\$2>(\\n[.$]-3) .@error "\\$3 must have at least \\$2 values (\\*[\\$3]). -.nr hd*sp-tmp \\$2+3 -.ds \\$1 \\$[\\n[hd*sp-tmp]] -.. -.de HU -.H 0 "\\$1" -.. -.\"------------- -.de H -.if !r hd*cur-bline .nr hd*cur-bline \\n[nl] -.br -.df@print-float 2\" $$$ could be wrong... -.\" terminate all lists -.LC -.init@reset -.nr hd*level 0\\$1 -.nr hd*arg1 0\\$1 -.if !\\n[hd*level] .nr hd*level \\n[Hu] -.\" -.\" clear lower counters -.nr hd*i 1 1 -.while \\n+[hd*i]<15 .if \\n[hd*level]<\\n[hd*i] .nr H\\n[hd*i] 0 1 -.\" -.\" save last text for use in TP -.if \\n[hd*level]=1 .ds H1txt \\$2\\$3 -.\" -.\" This is a little fix to be able to get correct H1 heading number -.\" in page headers. Special attention was needed when other formats are used. -.ie !''\\g[H1]' \{\ -. ds hd*format \\g[H1] -. af H1 0 -. nr H1h \\n[H1] 1 -. af H1 \\*[hd*format] -.\} -.el .nr H1h \\n[H1] 1 -.if \\n[hd*level]=1 .nr H1h +1 -.\" -.\" Check if it's time for new page. Only if text has -.\" appeared before. -.if \\n[Ej]&(\\n[Ej]>=\\n[hd*level])&(\\n[nl]>\\n[hd*cur-bline]) .pg@next-page -.\" -.\" increment current counter -.nr H\\n[hd*level] +1 -.\" -.\" update pagenumber if section-page is used -.if (\\n[hd*level]=1)&(\\n[Sectp]>0) .hd@set-page 1 -.\" -.\" hd*mark is the text written to the left of the header. -.ds hd*mark \\n[H1]. -.\" -.if \\n[hd*level]>1 .as hd*mark \\n[H2] -.\" -.nr hd*i 2 1 -.while \\n+[hd*i]<15 .if \\n[hd*level]>(\\n[hd*i]-1) .as hd*mark .\\n[H\\n[hd*i]] -.if \\n[Ht] .ds hd*mark \\n[H\\n[hd*level]]. -.\" -.\" special case, no dot after level one heading if not H1dot true -.if (\\n[hd*level]=1)&(\\n[H1dot]=0) .ds hd*mark \\n[H1] -.\" -.as hd*mark \ \ \" add spaces between mark and heading -.if !\\n[hd*arg1] .ds hd*mark\" no mark for unnumbered -.\" -.if \\n[D]>1 .tm At header \\*[hd*mark] "\\$2" -.nr hd*htype 0 \" hd*htype = check break and space -. \" 0 = run-in, 1 = break only, 2 = space -.if \\n[hd*level]<=\\n[Hb] .nr hd*htype 1 -.if \\n[hd*level]<=\\n[Hs] .nr hd*htype 2 -. \" two spaces if hd*htype == 0 -.ie (\\n[hd*htype]=0)&(\w@\\$2@) .ds hd*suf-space " \" -.el .ds hd*suf-space -.nr hd*need 2v \" hd*need = header need space -.\"---------- user macro HX ------------ -.\" User exit macro to override numbering. -.\" May change hd*mark (}0), hd*suf-space (}2) and hd*need (;3) -.\" Can also change Hps1/2. -.if d HX .HX \\n[hd*level] \\n[hd*arg1] "\\$2\\$3" -.\"-------------------------------------- -.\" pre-space -.ie \\n[hd*level]<=\\n[Hps] .SP (u;\\n[Hps2]) -.el .SP (u;\\n[Hps1]) -.\" -.par@reset-num \\n[hd*level]\" reset numbered paragraph -.\" start diversion to measure size of header -.di hd*div -\\*[hd*mark]\\$2\\$3\\*[hd*suf-space] -.br -.di -.rm hd*div -.if \\n[hd*htype] .na \" no adjust if run-in -.if \\n[hd*htype]<2 .nr hd*need +\\n[Lsp]u \" add some extra space -.ne \\n[hd*need]u+\\n[dn]u+.5p-1v \" this is the needed space for a header -.\" -.\" size and font calculations -.hd@split hd*font \\n[hd*level] HF \\*[HF]\" get font for this level -.ft \\*[hd*font]\" set new font -.hd@split hd*new-ps \\n[hd*level] HP \\*[HP]\" get point size -.ie (\\*[hd*new-ps]=0):(\w@\\*[hd*new-ps]@=0) \{\ -. if \\n[hd*htype] \{\ -. if '\\*[hd*font]'3' \{\ -. ps -1 -. vs -1 -. \} -. if '\\*[hd*font]'B' \{\ -. ps -1 -. vs -1 -. \} -. \} -.\} -.el \{\ -. ps \\*[hd*new-ps] -. vs \\*[hd*new-ps]+2 -.\} -.\" -.\"---------- user macro HY ------------- -.\" user macro to reset indents -.if d HY .HY \\n[hd*level] \\n[hd*arg1] "\\$2\\$3" -.DEVTAG-NH \\n[hd*level] \" HTML: mark beginning of heading -.\"-------------------------------------- -.nr hd*mark-size \w@\\*[hd*mark]@ -.if (\\n[hd*level]<=\\n[Hc])&\\n[hd*htype] .ce\" center if level<=Hc -.\" -.\" finally, output the header -\\*[hd*mark]\&\c -.\" and the rest of the header -.ie \\n[hd*htype] \{\ -\\$2\\$3 -. br -.\} -.el \\$2\\$3\\*[hd*suf-space]\&\c -.ft 1 -.\" restore pointsize and vertical size. -.ps \\n[@ps]u -.vs \\n[@vs]u -.\" -.\" table of contents -.if (\\n[hd*level]<=\\n[Cl])&\w@\\$2@ .toc@entry \\n[hd*level] "\\$2" -.\" set adjust to previous value -.SA -.\" do break or space -.if \\n[hd*htype] .br -.if \\n[hd*htype]>1 .SP (u;\\n[Lsp]*\\n[Hss]) -.if \\n[hd*htype] \{\ -. \" indent if Hi=1 and Pt=1 -. if (\\n[Hi]=1)&(\\n[Pt]=1) .ti +\\n[Pi]n -. \" indent size of mark if Hi=2 -. if \\n[hd*htype]&(\\n[Hi]>1) .ti +\\n[hd*mark-size]u -.\} -.nr par@ind-flag 0 \" no indent on .P if Pt=2 -.\" -.\" check if it is time to reset footnotes -.if (\\n[hd*level]=1)&\\n[ft*clear-at-header] .nr ft*nr 0 1 -.\" -.\" check if it is time to reset indexes -.if (\\n[hd*level]=1)&\\n[Sectf] \{\ -. nr lix*fg-nr 0 1 -. nr lix*tb-nr 0 1 -. nr lix*ec-nr 0 1 -. nr lix*ex-nr 0 1 -.\} -.\"---------- user macro HZ ---------- -.if d HZ .HZ \\n[hd*level] \\n[hd*arg1] "\\$2\\$3" -.nr hd*last-pos \\n[nl] -.nr hd*last-hsize \\n[.k] -.nr par@ind-flag 0 -.DEVTAG-EO-H \" HTML: end of heading -.. -.\"-------- -.de HM -.nr hd*i 0 1 -.while \\n+[hd*i]<15 .af H\\n[hd*i] \\$[\\n[hd*i]] 1 -.. -.\"---------------------- -.\" set page-nr, called from header -.\" -.de hd@set-page -.\" -.ie \\n[.$]>0 .nr P \\$1 -.el .nr P +1 -.\" Set section-page-string -.ds hd*sect-pg \\n[H1]-\\n[P] -.if \\n[Sectp]>1 .if '\\n[H1]'0' .ds hd*sect-pg " -.. -.\"########### module pg #################### -.\" set end of text trap -.wh 0 pg@header -.em pg@end-of-text -.\" -.ds pg*header ''- \\nP -'' -.ds pg*footer -.if \n[N]=4 .ds pg*header '''' -.if (\n[N]=3):(\n[N]=5) \{\ -. ds pg*header '''' -. ds pg*footer ''\\*[hd*sect-pg]'' -.\} -.ds pg*even-footer -.ds pg*odd-footer -.ds pg*even-header -.ds pg*odd-header -.\" -.nr pg*top-margin 0 -.nr pg*foot-margin 0 -.nr pg*block-size 0 -.nr pg*footer-size 5v\" 1v+footer+even/odd footer+2v -.nr pg*header-size 7v\" 3v+header+even/odd header+2v -.nr pg*extra-footer-size 0 -.nr pg*extra-header-size 0 -.nr ft*note-size 0 -.nr pg*cur-column 0 -.nr pg*cols-per-page 1 -.nr pg*cur-po \n[@po] -.nr pg*head-mark 0 -.\" -.nr pg*ps \n[@ps] -.nr pg*vs \n[@vs] -.\"------------------------- -.\" footer TRAPS: set, enable and disable -.de pg@set-new-trap -.nr pg*foot-trap \\n[@pl]u-(\\n[pg*block-size]u+\\n[ft*note-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]u+\\n[pg*extra-footer-size]u) -.\" -.if \\n[D]>2 .tm pg*foot-trap \\n[@pl]u-(\\n[pg*block-size]u+\\n[ft*note-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]u+\\n[pg*extra-footer-size]u) = \\n[pg*foot-trap] -.\" -.\" last-pos points to the position of the footer and bottom -.\" block below foot-notes. -.nr pg*last-pos \\n[@pl]u-(\\n[pg*block-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]u+\\n[pg*extra-footer-size]u) -.if \\n[D]>2 .tm pg*last-pos \\n[@pl]u-(\\n[pg*block-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]u+\\n[pg*extra-footer-size]u) = \\n[pg*last-pos] -.. -.de pg@enable-trap -.\" Disable in HTML mode -.if !'\*[.T]'html' \{\ -.wh \\n[pg*foot-trap]u pg@footer -.if \\n[D]>2 .tm pg@enable-trap .t=\\n[.t] nl=\\n[nl] -.if \\n[D]>2 .ptr -.\} -.. -.de pg@disable-trap -.ch pg@footer -.. -.\" move to new trap (if changed). -.de pg@move-trap -.pg@disable-trap -.pg@set-new-trap -.pg@enable-trap -.. -.de pg@enable-top-trap -.\" set trap for pageheader. -.nr pg*top-enabled 1 -.. -.de pg@disable-top-trap -.\" remove trap for pageheader. -.nr pg*top-enabled 0 -.. -.\" no header on the next page -.de PGNH -.nr pg*top-enabled (-1) -.. -.\" set first trap for pagefooter -.pg@enable-top-trap -.pg@set-new-trap -.pg@enable-trap -.\"------------------------- -.\" stop output and begin on next page. Fix footnotes and all that. -.de pg@next-page -.\".debug next-page -.ne 999i \" activate trap -.\" .pg@footer -.. -.\"------------------------- -.\" support for PX, TP and EOP. -.als }t pg*header -.als }e pg*even-header -.als }o pg*odd-header -.als TPh pg*header -.als TPeh pg*even-header -.als TPoh pg*odd-header -.\" -.als EOPf pg*footer -.als EOPef pg*even-footer -.als EOPof pg*odd-footer -.\"------------------------------------------------------------ -.\" HEADER -.de pg@header -.\" Disable in HTML mode -.if !'\*[.T]'html' \{\ -.if \\n[D]>1 .tm Page# \\n[%] (\\n[.F]:\\n[c.]) -.\" check if Hy has been changed -.ie \\n[Hy] 'hy 14 -.el 'nh -.if \\n[Idxf] \{\ -.tl '''' -.\} -.\" assign current page-number to P -.hd@set-page -.\" reset spacing -.nr line*lp\\n[.z] 0 -.nr line*ac\\n[.z] 0 -.\" -.\" suppress pageheader if pagenumber == 1 and N == [124] -.if \\n[pg*top-enabled] \{\ -.\" must be fixed!! -.\". pg@disable-top-trap -. if \\n[pg*extra-header-size] 'sp \\n[pg*extra-header-size]u -. if \\n[pg*top-margin] 'sp \\n[pg*top-margin]u -. ev pg*tl-ev -. pg@set-env -. ie d let@header .let@header -. el \{\ -. ie d TP .TP -. el \{\ -' sp 3 -. ie ((\\n[%]=1)&((\\n[N]=1):(\\n[N]=2))) .sp -. el .tl \\*[pg*header] -. ie o .tl \\*[pg*odd-header] -. el .tl \\*[pg*even-header] -' sp 2 -. \} -. \} -. ev -. \" why no-space?? -. if d PX \{\ -. ns -. PX -. rs -. \} -. \" check for pending footnotes -. ft@check-old -. \" -. \" back to normal text processing -. pg@enable-trap -. \" mark for multicolumn -. nr pg*head-mark \\n[nl]u -. \" reset NCOL pointer at each new page. -. nr pg*last-ncol 0 -. \" set multicolumn -. \" -. pg@set-po -. \" print floating displays -. df@print-float 4 -. tbl@top-hook -. ns -.\} -.if \\n[pg*top-enabled]<0 .nr pg*top-enabled 1 -.nr hd*cur-bline \\n[nl] \" .H needs to know if output has occured -.\} -.. -.\"--------------------------------------------------------- -.\" FOOTER -.de pg@footer -.ec -.if \\n[D]>2 .tm Footer# \\n[%] (\\n[.F]:\\n[c.]) nl=\\n[nl] -.pg@disable-trap -.\".debug footer -.tbl@bottom-hook -.\" increment pageoffset for MC -.\" move to the exact start of footer. -'sp |\\n[pg*foot-trap]u+1v -.\" -.if \\n[D]>3 .tm FOOTER after .sp, nl=\\n[nl] -.\" print footnotes -.if d ft*div .ft@print -.\" -.pg@inc-po -.if !\\n[pg*cur-column] .pg@print-footer -.\" next column -.pg@set-po -.pg@enable-trap -.if \\n[@verbose-flag] .eo \" to help VERBON/VERBOFF -.. -.\"------------------------- -.de pg@print-footer -.\" jump to the position just below the foot-notes. -'sp |\\n[pg*last-pos]u+1v -.if \\n[D]>3 .tm print-footer nl=\\n[nl] -.\" check if there are any bottom block -.if d pg*block-div .pg@block -.\" -.\" print the footer and eject new page -.ev pg*tl-ev -.pg@set-env -.\" user defined end-of-page macro -.ie d EOP .EOP -.el \{\ -. ie o .tl \\*[pg*odd-footer] -. el .tl \\*[pg*even-footer] -. ie (\\n[%]=1)&(\\n[N]=1) .tl \\*[pg*header] -. el .tl \\*[pg*footer] -. tl ''\\*[Pg_type!\\n[@copy_type]]'' -.\} -.ev -.\" be sure that floating displays and footnotes will be -.\" printed at the end of the document. -.ie (\\n[df*fnr]>=\\n[df*o-fnr]):\\n[ft*exist] \{\ -. ev ne -' bp -. ev -.\} -.el 'bp -.. -.\"------------------------- -.\" -.\" Initialize the title environment -.de pg@set-env -'na -'nh -'in 0 -'ti 0 -.ie \\n[Pgps] \{\ -. ps \\n[@ps]u -. vs \\n[@vs]u -.\} -.el \{\ -. ps \\n[pg*ps]u -. vs \\n[pg*vs]u -.\} -.lt \\n[@ll]u -.ll \\n[@ll]u -.. -.\"------------------------- -.de PH -.ds pg*header "\\$1 -.pg@set-new-size -.. -.de PF -.ds pg*footer "\\$1 -.pg@set-new-size -.. -.de OH -.ds pg*odd-header "\\$1 -.pg@set-new-size -.. -.de EH -.ds pg*even-header "\\$1 -.pg@set-new-size -.. -.de OF -.ds pg*odd-footer "\\$1 -.pg@set-new-size -.. -.de EF -.ds pg*even-footer "\\$1 -.pg@set-new-size -.. -.de pg@clear-hd -.ds pg*even-header -.ds pg*odd-header -.ds pg*header -.. -.de pg@clear-ft -.ds pg*even-footer -.ds pg*odd-footer -.ds pg*footer -.. -.de pg@set-new-size -.nr pg*ps \\n[@ps] -.nr pg*vs \\n[@vs] -.pg@move-trap -.. -.\"------------------------- -.\" end of page processing -.de pg@footnotes -.\".debug footnotes -.\" output footnotes. set trap for block -.\" -.. -.\"------------------------- -.\" print bottom block -.de pg@block -.ev pg*block-ev -'nf -'in 0 -.ll 100i -.pg*block-div -.br -.ev -.. -.\"------------------------- -.\" define bottom block -.de BS -.misc@ev-keep pg*block-ev -.init@reset -.br -.di pg*block-div -.. -.\"------------------------- -.de BE -.br -.di -.nr pg*block-size \\n[dn]u -.ev -.pg@move-trap -.. -.\"------------------------- -.\" print out all pending text -.de pg@end-of-text -.if \\n[D]>2 .tm ---------- End of text processing ---------------- -.df@eot-print -.ref@eot-print -.. -.\"------------------------- -.\" set top and bottom margins -.\" -T sets pg*footer-size and pg*header-size instead -.de VM -.ie '\\$1'-T' \{\ -. shift -. if \\n[.$]=0 \{\ -. nr pg*footer-size 5v -. nr pg*header-size 7v -. \} -. if \\n[.$]>0 .nr pg*header-size (v;\\$1) -. if \\n[.$]>1 .nr pg*footer-size (v;\\$2) -.\} -.el \{\ -. if \\n[.$]=0 \{\ -. nr pg*extra-footer-size 0 -. nr pg*extra-header-size 0 -. \} -. if \\n[.$]>0 .nr pg*extra-header-size (v;\\$1) -. if \\n[.$]>1 .nr pg*extra-footer-size (v;\\$2) -. if \\n[D]>2 \{\ -. tm extra top \\n[pg*extra-footer-size] -. tm extra bottom \\n[pg*extra-header-size] -. \} -.\} -.pg@move-trap -.. -.\"--------------------- -.\" multicolumn output. -.de pg@set-po -.if \\n[pg*cols-per-page]>1 \{\ -. ll \\n[pg*column-size]u -.\} -.. -.de pg@inc-po -.if \\n[pg*cols-per-page]>1 \{\ -. ie \\n+[pg*cur-column]>=\\n[pg*cols-per-page] \{\ -. nr pg*cur-column 0 1 -. nr pg*cur-po \\n[@po]u -. po \\n[@po]u -. ll \\n[@ll]u -. \} -. el \{\ -. nr pg*cur-po +(\\n[pg*column-size]u+\\n[pg*column-sep]u) -. po \\n[pg*cur-po]u -' sp |\\n[pg*head-mark]u -. tbl@top-hook -. \} -.\} -.. -.\" An argument disables the page-break. -.de 1C -.br -.if \\n[pg*cols-per-page]<=1 .@error "1C: multicolumn mode not active" -.nr pg*cols-per-page 1 -.nr pg*column-sep 0 -.nr pg*column-size \\n[@ll] -.nr pg*ncol-i \\n[pg*cur-column]\" temp variable -.nr pg*cur-column 0 1 -.nr pg*cur-po \\n[@po]u -.PGFORM -.ie !'\\$1'1' .SK -.el \{\ -. if d ft*div \{\ -. if \\n[pg*ncol-i]>0 \{\ -. @warning 1C: footnotes will be messy -. \} -. \} -. if \\n[pg*last-ncol]>0 \{\ -. sp |\\n[pg*last-ncol]u -. nr pg*last-ncol 0 -. \} -.\} -.. -.de 2C -.br -.nr pg*head-mark \\n[nl]u -.if \\n[pg*cols-per-page]>1 .@error "2C: multicolumn mode already active" -.nr pg*cols-per-page 2 -.nr pg*column-sep \\n[@ll]/15 -.nr pg*column-size (\\n[@ll]u*7)/15 -.nr pg*cur-column 0 1 -.nr pg*cur-po \\n[@po]u -.ll \\n[pg*column-size]u -.\" .lt \\n[pg*column-size]u -.. -.\" MC column-size [ column-separation ] -.de MC -.br -.nr pg*head-mark \\n[nl]u -.if \\n[pg*cols-per-page]>1 .@error "MC: multicolumn mode already active" -.ie ''\\$1' .nr pg*column-size \\n[.l] -.el .nr pg*column-size (n;\\$1) -.ie ''\\$2' .nr pg*column-sep \\n[pg*column-size]/15 -.el .nr pg*column-sep (n;\\$2) -.\" -.\" calculate the number of columns/page -.nr pg*cols-per-page 0 -.nr pg*i \\n[pg*column-size] -.while \\n[pg*i]<=\\n[.l] \{\ -. nr pg*cols-per-page \\n[pg*cols-per-page]+1 -. nr pg*i \\n[pg*i]+\\n[pg*column-sep]+\\n[pg*column-size] -.\} -.nr pg*cur-column 0 1 -.nr pg*cur-po \\n[@po]u -.ll \\n[pg*column-size]u -.\" .lt \\n[pg*column-size]u -.. -.\" begin a new column -.de NCOL -.br -.if \\n[nl]>\\n[pg*last-ncol] .nr pg*last-ncol \\n[nl] -.pg@footer -.. -.\" skip pages -.de SK -.br -.bp -.nr pg*i 0 1 -.\" force new page by writing something invisible. -.while \\n+[pg*i]<=(0\\$1) \{\ -\& -. bp -.\} -.. -.\"------------------------------- -.\" MULB width1 space1 width2 space2 width3 space3 ... -.de MULB -.br -.nr pg*i 0 1 -.nr pg*mul-x 0 1 -.nr pg*mul-ind 0 -.nr pg*mul-last 0 -.while \\n[.$] \{\ -. nr pg*mul!\\n+[pg*i] (n;0\\$1) -. nr pg*muls!\\n[pg*i] (n;0\\$2) -. shift 2 -.\} -.nr pg*mul-max-col \\n[pg*i] -.ds pg*mul-fam \\n[.fam] -.nr pg*mul-font \\n[.f] -.ev pg*mul-ev -.ps \\n[@ps]u -.vs \\n[@vs]u -.fam \\*[pg*mul-fam] -.ft \\n[pg*mul-font] -.fi -.hy 14 -.di pg*mul-div -.MULN -.. -.\"----------- -.de MULN -.if \\n[pg*mul-x]>=\\n[pg*mul-max-col] .@error "MULN: Undefined columnwidth" -.br -.if \\n[.d]>\\n[pg*mul-last] .nr pg*mul-last \\n[.d] -.rt +0 -.in \\n[pg*mul-ind]u -.ll (u;\\n[.i]+\\n[pg*mul!\\n+[pg*mul-x]])u -.nr pg*mul-ind +(u;\\n[pg*mul!\\n[pg*mul-x]]+\\n[pg*muls!\\n[pg*mul-x]]) -.. -.\"----------- -.\" MULE -.de MULE -.br -.if \\n[.d]>\\n[pg*mul-last] .nr pg*mul-last \\n[.d] -.di -.ev -.ne \\n[pg*mul-last]u -.nf -.mk -.pg*mul-div -.rt -.sp \\n[pg*mul-last]u -.fi -.. -.\"----------- -.de OP -.br -.ie o .if !\\n[pg*head-mark]=\\n[nl] \{\ -. bp +1 -. bp +1 -.\} -.el .bp -.. -.\"########### module footnotes ################### -.nr ft*note-size 0 -.nr ft*busy 0 -.nr ft*nr 0 1 -.nr ft*wide 0 -.nr ft*hyphen 0\" hyphenation value -.nr ft*adjust 1\" >0 if adjust true -.nr ft*indent 1\" >0 if text indent true (not imp. $$$) -.nr ft*just 0\" 0=left justification, 1=right (not imp. $$$) -.nr ft*exist 0\" not zero if there are any footnotes to be printed -.nr ft*clear-at-header 0\" >0 if footnotes should be reset at first level head. -.\" -.ds F \v'-.4m'\s-3\\n+[ft*nr]\s0\v'.4m' -.\" -.\"----------------- -.\" init footnote environment -.de ft@init -.\" indentcontrol not implemented $$$ -.\" label justification not implemented $$$ -'in 0 -'fi -.ie \\n[ft*adjust] 'ad -.el 'na -.ie \\n[ft*hyphen] 'hy 14 -.el 'hy 0 -.ll \\n[@cur-ll]u -.lt \\n[@cur-ll]u -.ps (p;\\n[@ps]u-2) -.vs (p;\\n[@vs]u-1) -.. -.\"----------------- -.\" set footnote format -.\" no support for two column processing (yet). $$$ -.de FD -.if \\n[.$]=0 .@error "FD: bad arg \\$1" -.ie \\n[.$]=2 .nr ft*clear-at-header 1 -.el .nr ft*clear-at-header 0 -.\" -.if !'\\$1'' \{\ -. ie \\$1>11 .nr ft*format 0 -. el .nr ft*format \\$1 -. \" -. nr ft*hyphen (\\n[ft*format]%2)*14 -. nr ft*format \\n[ft*format]/2 -. \" -. nr ft*adjust 1-(\\n[ft*format]%2) -. nr ft*format \\n[ft*format]/2 -. \" -. nr ft*indent 1-(\\n[ft*format]%2) -. nr ft*format \\n[ft*format]/2 -. \" -. nr ft*just \\n[ft*format]%2 -.\} -.. -.\"--------------- -.\" Footnote and display width control $$$ -.de WC -.nr ft*i 0 1 -.while \\n+[ft*i]<=\\n[.$] \{\ -. ds ft*x \\$[\\n[ft*i]] -. if '\\*[ft*x]'N' \{\ -. nr ft*wide 0 -. nr ft*first-fn 0 -. nr ds*wide 0 -. nr ds*float-break 1 -. \} -. if '\\*[ft*x]'-WF' .nr ft*wide 0 -. if '\\*[ft*x]'WF' .nr ft*wide 1 -. if '\\*[ft*x]'-FF' .nr ft*first-fn 0 -. if '\\*[ft*x]'FF' .nr ft*first-fn 1 -. if '\\*[ft*x]'-WD' \{\ -. nr ds*wide 0 -. if r ft*df-save \{\ -. nr Df \\n[ft*df-save] -. rm ft*df-save -. \} -. \} -. if '\\*[ft*x]'WD' \{\ -. nr ds*wide 1 -. nr ft*df-save \\n[Df] -. nr Df 4 -. \} -. if '\\*[ft*x]'-FB' .nr ds*float-break 0 -. if '\\*[ft*x]'FB' .nr ds*float-break 1 -. if \\n[D]>1 .tm WC WF=\\n[ft*wide] WD=\\n[ds*wide] -.\} -.. -.\"----------------- -.\" begin footnote -.\" Change environment, switch to diversion and print the foot-note mark. -.de FS -.if \\n[ft*busy] .@error "FS: missing FE" -.nr ft*busy 1 -.ev ft*ev -.ft@init -.if !\\n[ft*wide] .pg@set-po -.di ft*tmp-div -.nr ft*space (u;\\n[Fs]*\\n[Lsp]) -.sp \\n[ft*space]u -.\" print mark -.ie \\n[.$] .ds ft*mark \\$1 -.el .ds ft*mark \\n[ft*nr]. -\\*[ft*mark] -.in +.75c -.sp -1 -.nr ft*exist 1 -.. -.\"----------------- -.\" init footnote diversion -.de ft@init-footnote -.di ft*div -\l'20n' -.br -.di -.nr ft*note-size \\n[dn] -.. -.\"----------------- -.\" end footnote -.\" End the diversion, back to previous environment, and adjust -.\" the trap to the new foot-note size. -.de FE -.nr ft*busy 0 -.br -.di -'in 0 -'nf -.if \\n[@pl]u<\\n[dn]u .@error "FE: too big footnote" -.if !d ft*div .nr dn +1v -.if \\n[D]>3 .tm FE: foot-trap=\\n[pg*foot-trap] .d=\\n[.d] dn=\\n[dn] -.ie (\\n[pg*foot-trap]u-\\n[.d]u)<\\n[dn]u \{\ -. da ft*next-div -. ft*tmp-div -. br -. di -.\} -.el \{\ -. if !d ft*div .ft@init-footnote -. da ft*div -. ft*tmp-div -. di -. nr ft*note-size +\\n[dn] -.\} -.rm ft*tmp-div -.ev -.pg@move-trap -.. -.\"----------------- -.\" print footnotes, see pg@footer -.de ft@print -.ev ft*print-ev -'nf -'in 0 -.ll 100i -.ft*div -.br -.ev -.rm ft*div -.nr ft*note-size 0 -.pg@move-trap -.. -.\"----------------- -.\" check if any pending footnotes, see pg@header -.de ft@check-old -.if d ft*next-div \{\ -. ev ft*ev -. ft@init -. ft@init-footnote -. nf -. in 0 -. da ft*div -. ft*next-div -. di -. nr ft*note-size +\\n[dn] -. rm ft*next-div -. ev -. nr ft*exist 0 -. pg@move-trap -.\} -.. -.\"########### module display ################### -.nr ds*wide 0\" >0 if wide displays wanted -.nr df*fnr 0 1\" floating display counter -.nr df*o-fnr 1\" floating display counter, already printed -.nr ds*snr 0 1\" static display counter -.nr ds*lvl 0 1\" display level -.nr ds*float-busy 0\" >0 if printing float -.nr df*float 0 >0 if previous display was floating -.\"-------------------------------------------- -.de DE -.ie \\n[df*float] .df@end \\$@ -.el .ds@end \\$@ -.. -.\"-------------------------------------------- -.\" floating display start -.\" nested DF/DE is not allowed. -.de DF -.if \\n[df*float] .@error "DF:nested floating is not allowed. Use DS." -.ds@set-format \\$@ -.\" -.nr df*old-ll \\n[.l] -.nr ds*ftmp \\n[.f] -.misc@ev-keep df*ev -.ft \\n[ds*ftmp] -.\" -.init@reset -.di df*div -'in 0 -.\" -.ds@set-new-ev \\n[df*old-ll] -.SP \\n[Lsp]u -.nr df*float 1 -.. -.\"-------------------------------------------- -.de df@end -.br -.SP \\n[Lsp]u -.di -.nr df*width!\\n+[df*fnr] \\n[dl] -.nr df*height!\\n[df*fnr] \\n[dn] -.nr df*wide!\\n[df*fnr] \\n[ds*wide] -.nr df*format!\\n[df*fnr] \\n[ds*format] -.ev -.if \\n[D]>2 .tm DF:fnr=\\n[df*fnr] w=\\n[dl] h=\\n[dn] wide=\\n[ds*wide] \ - form=\\n[ds*format] -.\" move div to the floating display list -.rn df*div df*fdiv!\\n[df*fnr] -.\" -.nr par@ind-flag 0 -.\" print float if queue is empty and the display fits into -.\" the current page -.if ((\\n[df*fnr]>=\\n[df*o-fnr])&(\\n[dn]<\\n[.t])) .df@print-float 1 -.nr df*float 0 -.. -.\"------------- -.\" called by end-of-text -.de df@eot-print -.br -.if \\n[df*o-fnr]<=\\n[df*fnr] \{\ -. if \\n[D]>2 .tm Print remaining displays. -.\" still some floats left, make non-empty environment -. misc@ev-keep ne -. init@reset -\c -. df@print-float 3 -. ev -.\} -.. -.\"--------------- -.\" print according to Df and De. -.\" .df@print-float type -.\" type called from -.\" 1 .DE -.\" 2 end of section -.\" 3 end of document -.\" 4 beginning of new page -.\" -.de df@print-float -.if \\n[Df]>5 .@error "Df=\\n[Df], max value is 5" -.if !\\n[ds*float-busy] \{\ -. nr ds*float-busy 1 -.\" at .DE -. if \\n[D]>3 .tm print-float: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]] -. \" Df = 1 or 5 -. if (\\$1=1)&((\\n[Df]=1):(\\n[Df]=5)) \{\ -. if \\n[.t]>\\n[df*height!\\n[df*o-fnr]] \{\ -. \" Print only new displays. -. if \\n[df*o-fnr]=\\n[df*fnr] \{\ -. br -. ds@print-one-float -. \} -. \} -. \} -. \" Df = 3 -. if (\\$1=1)&(\\n[Df]=3) \{\ -. if \\n[.t]>\\n[df*height!\\n[df*o-fnr]] \{\ -. br -. ds@print-one-float -. \} -. \} -.\" print all if Df<2 and end of section -. if (\\$1=2)&(\\n[Sectp]>0)&(\\n[Df]<2) \{\ -. br -. ds@print-all-floats -. \} -.\" print all if end of document. Where should they go instead? -. if \\$1=3 \{\ -. br -. ds@print-all-floats -.\} -.\" new page -. if (\\$1=4)&(\\n[Df]>1) \{\ -. if \\n[Df]=2 .ds@print-one-float -. if \\n[Df]=3 .ds@print-one-float -. if \\n[Df]>3 \{\ -. ie \\n[De] .ds@print-all-floats -. el .ds@print-this-page -. \} -. \} -. nr ds*float-busy 0 -.\} -.. -.\"--------------- -.\" DF out -.\" print a floating diversion -.de ds@output-float -.nr df*old-ll \\n[.l] -.nr df*old-in \\n[.i] -.ev ds*fev -.nf -.nr df*i \\n[df*o-fnr] -.nr df*f \\n[df*format!\\n[df*i]] -.\" -.in \\n[df*old-in]u -.if \\n[df*f]=1 'in +\\n[Si]n -.if \\n[df*f]>=2 'in 0 -.if \\n[df*f]=2 'ce 9999 -.if \\n[df*f]=3 'in (u;(\\n[.l]-\\n[df*width!\\n[df*i]])/2) -.if \\n[df*f]=4 'rj 9999 -.if \\n[df*f]=5 'in (u;\\n[.l]-\\n[df*width!\\n[df*i]]) -.\" -.\" -.df*fdiv!\\n[df*o-fnr] -.\" -.if \\n[df*f]=2 'ce 0 -.if \\n[df*f]=4 'rj 0 -.ev -.rm df*fdiv!\\n[df*i] -.rm df*height!\\n[df*i] -.rm df*format!\\n[df*i] -.if \\n[df*wide!\\n[df*i]] .nr pg*head-mark \\n[nl]u -.nr df*o-fnr +1 -.. -.\"--------------- -.\" print one floating display if there is one. -.de ds@print-one-float -.if \\n[df*o-fnr]<=\\n[df*fnr] \{\ -. if \\n[D]>3 .tm print-one-float: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]] -. if \\n[.t]<\\n[df*height!\\n[df*o-fnr]] .pg@next-page -. ds@output-float -. if \\n[De] .pg@next-page -.\} -.. -.\"--------------- -.\" print all queued floats. -.\" if De>0 do a page eject between the floats. -.de ds@print-all-floats -.while \\n[df*o-fnr]<=\\n[df*fnr] \{\ -. if \\n[D]>3 .tm print-all-floats: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]] -. if \\n[.t]<\\n[df*height!\\n[df*o-fnr]] .pg@next-page -. br -\c -. ds@output-float -. if \\n[De] .pg@next-page -.\} -.. -.\"--------------- -.\" print as many floats as will fit on the current page -.de ds@print-this-page -.while \\n[df*o-fnr]<=\\n[df*fnr] \{\ -. if \\n[D]>3 .tm print-this-page: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]] -. if \\n[.t]<\\n[df*height!\\n[df*o-fnr]] .break -. ds@output-float -.\} -.. -.\"--------------------------------------------------- -.\" get format of the display -.de ds@set-format -.ie \\n[.$] \{\ -. ie r ds*format!\\$1 .nr ds*format \\n[ds*format!\\$1] -. el .@error "DS/DF:wrong format:\\$1" -.\} -.el .nr ds*format 0 -.if \\n[D]>2 .tm set format=\\n[ds*format] -.\" fill or not to fill, that is the... -.nr ds*fill 0 -.ie \\n[.$]>1 \{\ -. ie r ds*fill!\\$2 .nr ds*fill \\n[ds*fill!\\$2] -. el .@error "\\*[ds*type]:wrong fill:\\$2" -.\} -.if \\n[D]>2 .tm set fill=\\n[ds*fill] -.nr ds*rindent 0 -.if \\n[.$]>2 .nr ds*rindent \\$3 -.if \\n[D]>2 .tm set indent=\\n[ds*rindent] -.. -.\"----------------------------- -.\" .ds@set-new-ev previous-line-length -.de ds@set-new-ev -.ll \\$1u -.lt \\$1u -.if \\n[ds*rindent] \{\ -. ll -\\n[ds*rindent]n -. lt -\\n[ds*rindent]n -.\} -.if \\n[ds*wide] \{\ -. ll \\n[@ll]u -. lt \\n[@ll]u -.\} -.\" -.ie \\n[ds*fill] 'fi -.el 'nf -.. -.\"-------------------------------------------------------- -.nr ds*format 0\" dummy value for .En/.EQ -.nr ds*format! 0\" no indent -.nr ds*format!0 0\" no indent -.nr ds*format!L 0\" no indent -.nr ds*format!I 1\" indent -.nr ds*format!1 1\" indent -.nr ds*format!C 2\" center each line -.nr ds*format!2 2\" center each line -.nr ds*format!CB 3\" center as block -.nr ds*format!3 3\" center as block -.nr ds*format!R 4\" right justify each line -.nr ds*format!4 4\" right justify each line -.nr ds*format!RB 5\" right justify as block -.nr ds*format!5 5\" right justify as block -.\"--------------- -.nr ds*fill! 0\" no fill -.nr ds*fill!N 0\" no fill -.nr ds*fill!0 0\" no fill -.nr ds*fill!F 1\" fill on -.nr ds*fill!1 1\" fill on -.\"-------------------------------------------- -.\" static display start -.\" nested DS/DE is allowed. No limit on depth. -.de DS -.br -.nr XXX \\n[nl] -.nr ds*lvl +1 -.ds@set-format \\$@ -.\" -.nr ds*old-ll \\n[.l] -.nr ds*old-in \\n[.i] -.misc@push ds-ll \\n[.l] -.misc@push ds-form \\n[ds*format] -.nr ds*i \\n[.i] -.nr ds*ftmp \\n[.f] -.misc@ev-keep ds*ev!\\n+[ds*snr] -.ft \\n[ds*ftmp] -.\" -.init@reset -.\" indent in a diversion doesn't seem like a good idea. -'in 0 -.di ds*div!\\n[ds*snr] -.\" -.ds@set-new-ev \\n[ds*old-ll] -.nr df*float 0 -.. -.\"-------------------------------------------- -.de ds@end -.if \\n-[ds*lvl]<0 .@error "DE: no corresponding DS" -.br -.di -.\" ********** -.nr ds*width \\n[dl] -.nr ds*height \\n[dn] -.misc@pop-nr ds-ll ds*old-ll -.misc@pop-nr ds-form ds*format -.\" -.\" ********** -'nf -.\" calculate needed space -.nr ds*need \\n[ds*height] -.nr ds*i \\n[pg*foot-trap]-\\n[pg*header-size]u-\\n[pg*extra-header-size]u -.if (\\n[ds*height]>\\n[ds*i])&(\\n[.t]<(\\n[ds*i]/2)) .nr ds*need \\n[.t]u+1v -.if (\\n[ds*height]<\\n[ds*i])&(\\n[.t]<(\\n[ds*height])) .nr ds*need \\n[.t]u+1v -.\" Eject page if display will fit one page and -.\" there are less than half of the page left. -.if \\n[ds*need] .ne \\n[ds*need]u -.\" -.\" check if pending equation label -.eq@check \\n[ds*need] -'in \\n[ds*old-in]u -.if \\n[ds*format]=1 'in \\n[ds*old-in]u+\\n[Si]n -.if \\n[ds*format]>=2 'in 0 -.if \\n[ds*format]=2 'ce 9999 -.if \\n[ds*format]=3 'in (u;(\\n[.l]-\\n[ds*width])/2) -.if \\n[ds*format]=4 'rj 9999 -.if \\n[ds*format]=5 'in (u;\\n[.l]-\\n[ds*width]) -.\" ********** -.\" -.\" Print static display -.nr ds*i \\n[Lsp] -.if r Dsp .nr ds*i \\n[Dsp] -.\" -.if \\n[Ds] .sp \\n[ds*i]u -.ds*div!\\n[ds*snr] -.if \\n[Ds] .sp \\n[ds*i]u -.\" -.if \\n[ds*format]=2 'ce 0 -.if \\n[ds*format]=4 'rj 0 -.rm ds*div!\\n[ds*snr] -.nr ds*snr -1 -.nr par@ind-flag 0 -.ev -.. -.\"########### module list ################### -.\" .LI text-indent mark-indent pad type [mark [LI-space [LB-space] ] ] -.\" -.nr li*tind 0 -.nr li*mind 0 -.nr li*pad 0 -.nr li*type 0 -.ds li*mark 0 -.nr li*li-spc 0 -.nr li*lvl 0 1 -.aln :g li*lvl -.nr li*cur-vpos 0 -.\"-------------------------- -.\" the major list-begin macro. -.\" If type == -1 a 'break' will occur. -.de LB -.if \\n[.$]<4 .@error "LB: not enough arguments, min 4" -.misc@push cind \\n[.i] -.misc@push tind \\n[li*tind] -.misc@push mind \\n[li*mind] -.misc@push pad \\n[li*pad] -.misc@push type \\n[li*type] -.misc@push li-spc \\n[li*li-spc] -.ds li*mark-list!\\n[li*lvl] \\*[li*mark] -.nr li*lvl +1 -.\" -.nr li*tind (n;0\\$1)\" text-indent -.nr li*mind (n;0\\$2)\" mark-indent -.nr li*pad (n;0\\$3)\" pad -.nr li*type 0\\$4\" type -.ds li*mark \\$5\" mark -.ie !'\\$6'' .nr li*li-spc \\$6\" LI-space -.el .nr li*li-spc 1 -.ie !'\\$7'' .nr li*lb-spc \\$7\" LB-space -.el .nr li*lb-spc 0 -.\" init listcounter -.nr li*cnt!\\n[li*lvl] 0 1 -.\" assign format -.af li*cnt!\\n[li*lvl] 1 -.if \\n[li*type] .if !'\\*[li*mark]'' .af li*cnt!\\n[li*lvl] \\*[li*mark] -.\" -.if \\n[li*lb-spc] .SP (u;\\n[li*lb-spc]*\\n[Lsp]) -.in +\\n[li*tind]u -.. -.\"--------------- -.de LI -.if \\n[li*lvl]<1 .@error "LI:no lists active" -.if \\n[li*li-spc]&(\\n[Ls]>=\\n[li*lvl]) .SP (u;\\n[li*li-spc]*\\n[Lsp]) -.ne 2v -.\" -.ds li*c-mark \\*[li*mark] -.nr li*cnt!\\n[li*lvl] +1 -.if \\n[li*type]=1 .ds li*c-mark \\n[li*cnt!\\n[li*lvl]]. -.if \\n[li*type]=2 .ds li*c-mark \\n[li*cnt!\\n[li*lvl]]) -.if \\n[li*type]=3 .ds li*c-mark (\\n[li*cnt!\\n[li*lvl]]) -.if \\n[li*type]=4 .ds li*c-mark [\\n[li*cnt!\\n[li*lvl]]] -.if \\n[li*type]=5 .ds li*c-mark <\\n[li*cnt!\\n[li*lvl]]> -.if \\n[li*type]=6 .ds li*c-mark {\\n[li*cnt!\\n[li*lvl]]} -.if \\n[.$]=1 .ds li*c-mark \\$1 -.ie \\n[.$]=2 \{\ -. ie (\\$2=2):(\\n[Limsp]=0) .ds li*c-mark \\$1\\*[li*c-mark] -. el .ds li*c-mark \\$1\ \\*[li*c-mark] -.\} -.\" -.\" determine where the text begins -.nr li*text-begin \\n[li*tind]>?\w@\\*[li*c-mark]\ @ -.nr x \w@\\*[li*c-mark]\ @ -.\" -.\" determine where the mark begin -.ie !\\n[li*pad] .nr li*in \\n[li*mind] -.el .nr li*in \\n[li*text-begin]-\\n[li*pad]-\w@\\*[li*c-mark]@ -.if !\\n[li*in] .nr li*in 0 -.\" -.ti -\\n[li*tind]u -.\" no indentation if hanging indent -.if (\w@\\*[li*c-mark]@=0)&((\\n[.$]=0):(\w@\\$1@=0)) .nr li*text-begin 0 -\Z'\&\h'\\n[li*in]u'\\*[li*c-mark]'\h'\\n[li*text-begin]u'\&\c -.if \\n[li*type]=-1 .br -.. -.\" -.\"------------- -.de li@pop -.nr li*lvl -1 -.misc@pop-nr cind li*tmp -.in \\n[li*tmp]u -.misc@pop-nr tind li*tind -.misc@pop-nr mind li*mind -.misc@pop-nr pad li*pad -.misc@pop-nr type li*type -.misc@pop-nr li-spc li*li-spc -.ds li*mark \\*[li*mark-list!\\n[li*lvl]] -.. -.de LE -.if \\n[li*lvl]<1 .@error "LE:mismatched" -.li@pop -.if '\\$1'1' .SP \\n[Lsp]u -.. -.\"------------- -.\" list status clear. -.\" terminate all lists to level i -.de LC -.ie \\n[.$]<1 .nr li*i 0 -.el .nr li*i \\$1 -.if \\n[li*i]>\\n[li*lvl] .@error "LC: incorrect argument: \\n[li*i] (too big)" -.while \\n[li*lvl]>\\n[li*i] .li@pop -.nr par@ind-flag 0 -.. -.\"------------- -.de AL -.if \\n[.$]>3 .@error "AL: too many arguments" -.if \\n[D]>2 .tm AL $* -.ie \\n[.$]<=1 .LB \\n[Li] 0 2 1 "\\$1" -.el \{\ -. ie \\n[.$]=2 .LB 0\\$2 0 2 1 "\\$1" -. el \{\ -. ie !'\\$2'' .LB \\$2 0 2 1 "\\$1" 0 1 -. el .LB \\n[Li] 0 2 1 "\\$1" 0 1 -. \} -.\} -.. -.de ML -.if \\n[.$]>3 .@error "ML: too many arguments" -.if \\n[D]>2 .tm ML $* -.nr li*ml-width \w@\\$1@u+1n -.if \\n[.$]<2 .LB \\n[li*ml-width]u 0 1 0 "\\$1" -.if \\n[.$]=2 .LB 0\\$2 0 1 0 "\\$1" -.if \\n[.$]=3 \{\ -. ie '\\$2'' .LB \\n[li*ml-width]u 0 1 0 "\\$1" 0 1 -. el .LB \\n[Li] 0 1 0 "\\$1" 0 1 -.\} -.. -.de VL -.if \\n[D]>2 .tm VL $* -.if \\n[.$]>3 .@error "VL: too many arguments" -.if \\n[.$]<1 .@error "VL: missing text-indent" -.ie \\n[.$]<3 .LB 0\\$1 0\\$2 0 0 -.el .LB 0\\$1 0\\$2 0 0 \& 0 1 -.. -.\" Bullet (for .BL) -.de BL -.if \\n[D]>2 .tm BL $* -.ds BU \s-2\(bu\s0 -.if \\n[.$]>2 .@error "BL: too many arguments" -.if \\n[.$]<1 .LB \\n[Pi] 0 1 0 \\*[BU] -.if \\n[.$]=1 .LB 0\\$1 0 1 0 \\*[BU] -.if \\n[.$]=2 \{\ -. ie '\\$1'' .LB \\n[Pi] 0 1 0 \\*[BU] 0 1 -. el .LB 0\\$1 0 1 0 \\*[BU] 0 1 -.\} -.. -.de DL -.if \\n[D]>2 .tm DL $* -.if \\n[.$]>2 .@error "DL: too many arguments" -.if \\n[.$]<1 .LB \\n[Pi] 0 1 0 \(em -.if \\n[.$]=1 .LB 0\\$1 0 1 0 \(em -.if \\n[.$]=2 \{\ -. ie '\\$1'' .LB \\n[Pi] 0 1 0 \(em 0 1 -. el .LB 0\\$1 0 1 0 \(em 0 1 -.\} -.. -.de RL -.if \\n[D]>2 .tm RL $* -.if \\n[.$]>2 .@error "RL: too many arguments" -.if \\n[.$]<1 .LB 6 0 2 4 -.if \\n[.$]=1 .LB 0\\$1 0 2 4 -.if \\n[.$]=2 \{\ -. ie '\\$1'' .LB 6 0 2 4 1 0 1 -. el .LB 0\\$1 0 2 4 1 0 1 -.\} -.. -.\" Broken Variable List. As .VL but text begin on the next line -.de BVL -.if \\n[D]>2 .tm BVL $* -.if \\n[.$]>3 .@error "BVL: too many arguments" -.if \\n[.$]<1 .@error "BVL: missing text-indent" -.ie \\n[.$]<3 .LB 0\\$1 0\\$2 0 -1 -.el .LB 0\\$1 0\\$2 0 -1 \& 0 1 -.. -.\" ####### module tbl ####################################### -.\" This module is copied from groff_ms and modified for mgm. -.\" Yes, it does not resemble the original anymore :-). -.\" Don't know if I missed something important. -.\" Groff_ms is written by James Clark. -.nr tbl*have-header 0 -.nr tbl*header-written 0 -.de TS -.br -.if ''\\n[.z]' .SP -.if '\\$1'H' .di tbl*header-div -.. -.de tbl@top-hook -.if \\n[tbl*have-header] \{\ -. ie \\n[.t]-\\n[tbl*header-ht]-1v .tbl@print-header -. el .sp \\n[.t]u -.\} -.. -.de tbl@bottom-hook -.if \\n[tbl*have-header] \{\ -. nr T. 1 -.\" draw bottom and side lines of boxed tables. -. T# -.\} -.nr tbl*header-written 0 -.. -.de tbl@print-header -.ev tbl*ev -'nf -.tbl*header-div -.ev -.mk #T -.nr tbl*header-written 1 -.. -.de TH -.ie '\\n[.z]'tbl*header-div' \{\ -. nr T. 0 -. T# -. br -. di -. nr tbl*header-ht \\n[dn] -. ne \\n[dn]u+1v -. nr tbl*have-header 1 -. ie '\\$1'N' .if !\\n[tbl*header-written] .tbl@print-header -. el .tbl@print-header -.\} -.el .@error ".TH without .TS H" -.. -.de TE -.ie '\\n(.z'tbl*header-div' .@error ".TS H but no .TH before .TE" -.el \{\ -. nr tbl*have-header 0 -.\} -.\" reset tabs -.TAB -.. -.de T& -.. -.\" ####### module pic ####################################### -.de PS -.nr pic*in 0 -.br -.SP .5 -.ie \\n[.$]<2 .@error "PS: bad arguments. Probably not processed with pic." -.el \{\ -. if !\\n[ds*lvl] .ne (u;\\$1)+1v -.\" should be contained between .DS/.DE -.if r ds*format \{\ -. if \\n[ds*lvl]&((\\n[ds*format]=2):(\\n[ds*format]=3)) \{\ -. nr pic*in \\n[.i] -.\" . in +(u;\\n[.l]-\\n[.i]-\\$2/2) -. \} -. \} -.\} -.. -.de PE -.init@reset -.SP .5 -.. -.\" ####### module eq ####################################### -.\" -.nr eq*number 0 1 -.ds eq*label -.de EQ -.ds eq*label "\\$1 -.. -.de eq@check -.if !'\\*[eq*label]'' \{\ -. mk -. \" space down to middle of equation -' sp (u;\\$1/2) -. ie (\\n[Eq]%2) \{\ -. \" label to the left -\h'|0'\\*[eq*label] -. \} -. el \{\ -. \" label to the right -\h'|\\n[.l]u'\\*[eq*label] -. \} -. rt -.\} -.ds eq*label -.. -.de EN -.. -.\"########### module toc ################### -.\" table of contents -.nr toc*slevel 1 -.nr toc*spacing \n[Lsp]u -.nr toc*tlevel 2 -.nr toc*tab 0 -.\"----------- -.\" Table of contents with friends (module lix) -.de TC -.br -.\" print any pending displays and references -.df@print-float 3 -.if \\n[ref*flag] .RP 0 1 -.\" -.if \w@\\$1@>0 .nr toc*slevel \\$1 -.if \w@\\$2@>0 .nr toc*spacing (u;\\$2*\\n[Lsp]) -.if \w@\\$3@>0 .nr toc*tlevel \\$3 -.if \w@\\$4@>0 .nr toc*tab \\$4 -.if \\n[pg*cols-per-page]>1 .1C -.ds H1txt \\*[Licon] -.ds Tcst co -.pg@clear-hd -.EF "" -.OF "" -.pg@next-page -.\"------------- -.if d Ci .toc@read-Ci \\*[Ci] -.nf -.in 0 -.ie \\n[Oc] .hd@set-page 1 -.el \{\ -. nr toc*pn 1 1 -. af toc*pn i -. aln ;g toc*pn -. PF "''\\\\\\\\n[toc*pn]''" -. am pg@header -. nr toc*pn +1 -\\.. -.\} -.nr toc*i 4 1 -.while \\n+[toc*i]<10 \{\ -. if !'\\$\\n[toc*i]'' \{\ -. ce -\\$\\n[toc*i] -. br -. \} -.\} -.if \\n[.$]<=4 .if d TX .TX -.ie d TY .if \\n[.$]<=4 .TY -.el \{\ -. ce -\\*[Licon] -. br -. SP 3 -.\} -.if d toc*list .toc*list -.br -.\" print LIST OF XXX -.if d lix*dsfg .lix@print-ds fg FG "\\*[Lf]" \\n[.$] -.if d lix*dstb .lix@print-ds tb TB "\\*[Lt]" \\n[.$] -.if d lix*dsec .lix@print-ds ec EC "\\*[Le]" \\n[.$] -.if d lix*dsex .lix@print-ds ex EX "\\*[Lx]" \\n[.$] -.. -.\"----------- -.\" .toc@read-Ci lev1 lev2 lev3 lev4 ... lev7 -.de toc@read-Ci -.nr toc*i 0 1 -.while \\n+[toc*i]<15 \{\ -. nr toc*hl!\\n[toc*i] \\$[\\n[toc*i]] -.\} -.. -.\"----------- -.de toc@entry -.ie \\n[Sectp] \{\ -. toc@save \\$1 "\\*[hd*mark]" "\\$2" \\*[hd*sect-pg] -.\} -.el .toc@save \\$1 "\\*[hd*mark]" "\\$2" \\n[%] -.. -.als )E toc@entry -.\"----------- -.de toc@save -.\" collect maxsize of mark if string Ci don't exist. -.if !d Ci \{\ -. if !r toc*hl!\\$1 .nr toc*hl!\\$1 0 -. if \\n[toc*hl!\\$1]<=\w@\\$2@ \{\ -. nr toc*hl!\\$1 \w@\\$2@u -. \} -.\} -.am toc*list -.\" .toc@set level headernumber text pagenr -.toc@set \\$1 "\\$2" "\\$3" \\$4 -\\.. -.. -.\"----------- -.\" level mark text pagenumber -.de toc@set -.if \\$1<=\\n[toc*slevel] .SP \\n[toc*spacing]u -.na -.fi -.nr toc*ind 0 -.nr toc*i 0 1 -.ie d Ci \{\ -. nr toc*ind +\\n[toc*hl!\\$1]u -.\} -.el \{\ -. while \\n+[toc*i]<\\$1 \{\ -. nr toc*ind +\\n[toc*hl!\\n[toc*i]]u -. \} -.\} -.nr toc*text \\n[toc*ind]u+\\n[toc*hl!\\$1]u -.in \\n[toc*text]u -.ti -\\n[toc*hl!\\$1]u -.\" -.\" length of headernum space -.nr toc*i \\n[toc*hl!\\$1]-\w@\\$2@ -.\" -.ll \\n[@ll]u-\w@\\$4@u-2m -.ne 2v -.\" ragged right --------------------------------- -.ie \\$1>\\n[toc*tlevel] \{\ -\\$2 -. sp -1 -\\$3\ \ \ \\$4 -. br -.\} -.el \{\ -. \" unnumbered heading -------------------- -. ie '\\$2'' \{\ -. in \\n[toc*ind]u -\\$3\h'1m' -. \} -. \" normal heading ------------------------ -. el \{\ -\\$2 -. sp -1 -\\$3\h'1m' -. \} -. ll \\n[@ll]u -. sp -1 -. nr toc*sep (u;\\n[.l]-\\n[.n]-\\n[.i]-\w@\\$4@)-1m -\h'|\\n[.n]u'\l'\\n[toc*sep]u.'\h'1m'\\$4 -.\} -.ll \\n[@ll]u -.. -.\"########################### module lix ############################ -.\" LIST OF figures, tables, exhibits and equations -.nr lix*fg-nr 0 1 -.nr lix*tb-nr 0 1 -.nr lix*ec-nr 0 1 -.nr lix*ex-nr 0 1 -.aln Fg lix*fg-nr -.aln Tb lix*tb-nr -.aln Ec lix*ec-nr -.aln Ex lix*ex-nr -.\"------------ -.de FG -.lix@print-line fg Lf \\n+[lix*fg-nr] "\\$1" "\\$2" "\\$3" "\\$4" -.. -.de TB -.lix@print-line tb Lt \\n+[lix*tb-nr] "\\$1" "\\$2" "\\$3" "\\$4" -.. -.de EC -.lix@print-line ec Le \\n+[lix*ec-nr] "\\$1" "\\$2" "\\$3" "\\$4" -.. -.de EX -.lix@print-line ex Lx \\n+[lix*ex-nr] "\\$1" "\\$2" "\\$3" "\\$4" -.. -.\"------------ -.\" print line with 'figure' in the text -.\" type stringvar number text override flag refname -.de lix@print-line -.ds lix*text "\\$4 -.\" -.ie \\n[Sectf] .ds lix*numb \\n[H1]-\\$3 -.el .ds lix*numb \\$3 -.\" -.ie !\\n[Of] .ds lix*ds-form .\ \ \" -.el .ds lix*ds-form "\ \(em\ \" -.nr lix*in \\n[.i] -.ds lix*label \\*[Li\\$1]\ \\*[lix*numb]\\*[lix*ds-form] -.if !'\\$5'' \{\ -. if !0\\$6 .ds lix*label \\*[Li\\$1]\ \\$5\\*[lix*numb]\\*[lix*ds-form] -. if 0\\$6=1 .ds lix*label \\*[Li\\$1]\ \\*[lix*numb]\\$5\\*[lix*ds-form] -. if 0\\$6=2 .ds lix*label \\*[Li\\$1]\ \\$5\\*[lix*ds-form] -.\} -.\" print line if not between DS/DE -.ie \\n[ds*lvl]<1&\\n[df*float]=0 \{\ -. lix@print-text "\\*[lix*label]" "\\*[lix*text]" \\$1 \\$2 \\$7 -.\} -.el \{\ -. lix@embedded-text "\\*[lix*label]" "\\*[lix*text]" \\$1 \\$2 \\$7 -.\} -.\" -.. -.\"----------- -.\" label text type stringvar refname -.de lix@print-text -.ie \\n[Sectp] .ds lix*pgnr \\*[hd*sect-pg] -.el .ds lix*pgnr \\n[%] -.SP \\n[Lsp]u -.misc@ev-keep lix -.init@reset -.br -.ie (\w@\\$1\\$2@)>(\\n[.l]-\\n[.i]) \{\ -. in +\w@\\$1@u -. ti 0 -.\} -.el .ce 1 -\fB\\$1\fP\\$2 -.br -.ev -.\" save line for LIST OF XXX, wth is the width of the label -.if !r lix*wth\\$3 .nr lix*wth\\$3 0 -.\" find the maximum width -.if \w@\\*[lix*label]@>\\n[lix*wth\\$3] .nr lix*wth\\$3 \w@\\*[lix*label]@ -.if \\n[\\$4] .lix@ds-save \\$3 \\*[lix*pgnr] "\\*[lix*text]" "\\*[lix*label]" -.\" save reference to the figure -.if !'\\$5'' .SETR \\$5 \\*[lix*numb] -.. -.\" hide printout until diversion is evaluated -.de lix@embedded-text -\!.ie \\\\n[Sectp] .ds lix*pgnr \\\\*[hd*sect-pg] -\!.el .ds lix*pgnr \\\\n[%] -\!.SP \\\\n[Lsp]u -\!.misc@ev-keep lix -\!.ll \\n[.l]u -\!.init@reset -\!.fi -\!.ie (\w@\\$1\\$2@)>(\\\\n[.l]-\\\\n[.i]) \{\ -. in +\w@\\$1@u -\!. ti 0 -\!\fB\\$1\fP\\$2 -\!.\} -\!.el \{\ -. ce 1 -\!\fB\\$1\fP\\$2 -\!.\} -\!.br -\!.ev -.\" save line for LIST OF XXX, wth is the width of the label -\!.if !r lix*wth\\$3 .nr lix*wth\\$3 0 -.\" find the maximum width -\!.if \w@\\*[lix*label]@>\\\\n[lix*wth\\$3] .nr lix*wth\\$3 \w@\\*[lix*label]@ -\!.if \\\\n[\\$4] .lix@ds-save \\$3 \\\\*[lix*pgnr] "\\*[lix*text]" "\\*[lix*label]" -.\" save reference to the figure -\!.if !'\\$5'' .SETR \\$5 \\*[lix*numb] -.. -.\"------------ -.\" print complete list of XXXX -.de lix@print-ds -.\" arg: fg,tb,ec,ex text -.ds H1txt \\$3 -.ds Tcst \\$1 -.if !\\n[Cp] .pg@next-page -.\" print LIST OF XXXX -.\" execute user-defined macros -.if \\$4<=4 .if d TX\\$2 .TX\\$2 -.ie d TY\\$2 .if \\$4<=4 .TY\\$2 -.el \{\ -. ce -\\$3 -. SP 3 -.\} -.in \\n[lix*wth\\$1]u -.fi -.lix*ds\\$1 -.. -.\"------------ -.\" save line of list in macro -.de lix@ds-save -.\" type pagenumber text -.am lix*ds\\$1 -.lix@dsln \\$1 \\$2 "\\$3" "\\$4" \\$5 -\\.. -.. -.\"------------ -.\" print appended macro -.\" lix@dsln type pagenumber text headernr -.de lix@dsln -.nr lix*i \\n[lix*wth\\$1]-\w@\\$4@ -.ne 4v -.ll \\n[@ll]u-\w@\\$4@u-\w@\\$2@u-2m -.ti -\\n[lix*wth\\$1]u -\\$4 -.sp -1 -\\$3\h'1m' -.sp -1 -.ll -.nr lix*sep (u;\\n[.l]-\\n[.n]-\\n[.i]-\w@\\$2@)-1m -\h'|\\n[.n]u'\l'\\n[lix*sep]u.'\h'1m'\\$2 -.SP \\n[toc*spacing]u -.. -.\"########################### module fnt ############################ -.\" some font macros. -.de R -.ft R -.ul 0 -.. -.\"----------- -.de fnt@switch -.ul 0 -.ds fnt*tmp -.nr fnt*prev \\n[.f] -.nr fnt*i 2 1 -.while \\n+[fnt*i]<=\\n[.$] \{\ -. if \\n[fnt*i]>3 .as fnt*tmp \, -. ie (\\n[fnt*i]%2)=1 .as fnt*tmp \\$1\\$[\\n[fnt*i]] -. el .as fnt*tmp \\$2\\$[\\n[fnt*i]] -. if \\n[fnt*i]<\\n[.$] .as fnt*tmp \/ -.\} -\&\\*[fnt*tmp]\f[\\n[fnt*prev]] -.. -.\"----------- -.de B -.ie \\n[.$] .fnt@switch \fB \f[\\n[.f]] \\$@ -.el .ft B -.. -.de I -.ie \\n[.$] .fnt@switch \fI \f[\\n[.f]] \\$@ -.el .ft I -.. -.de IB -.if \\n[.$] .fnt@switch \fI \fB \\$@ -.. -.de BI -.if \\n[.$] .fnt@switch \fB \fI \\$@ -.. -.de IR -.if \\n[.$] .fnt@switch \fI \fR \\$@ -.. -.de RI -.if \\n[.$] .fnt@switch \fR \fI \\$@ -.. -.de RB -.if \\n[.$] .fnt@switch \fR \fB \\$@ -.. -.de BR -.if \\n[.$] .fnt@switch \fB \fR \\$@ -.. -.\"########################### module box ############################ -.\" draw a box around some text. Text will be kept on the same page. -.\" -.nr box*ll 0 -.\" .B1 and .B2 works like .DS -.de B1 -.if \\n[box*ll] .@error "B1: missing B2" -.nr box*ll \\n[.l] -.nr box*ind \\n[.i] -.nr box*hyp \\n[.hy] -.nr box*wid \\n[.l]-\\n[.i] -.\" -.\" jump to new environment. -.ev box*ev -.di box*div -.ps \\n[@ps]u -.vs \\n[@vs]u -.in 1n -.ll (u;\\n[box*wid]-1n) -.hy \\n[.hy] -.. -.de B2 -.if !\\n[box*ll] .@error "B2: missing B1" -.br -.di -.nr box*height \\n[dn] -.ne \\n[dn]u+1v -.ll \\n[box*ll]u -.in \\n[box*ind]u -.nr box*y-pos \\n[.d]u -.nf -.box*div -.fi -\v'-1v+.25m'\ -\D'l \\n[box*wid]u 0'\ -\D'l 0 -\\n[box*height]u'\ -\D'l -\\n[box*wid]u 0'\ -\D'l 0 \\n[box*height]u' -.br -.sp -1 -.ev -.sp .20v -.in \\n[box*ind]u -.ll \\n[box*ll]u -.rm box*div -.nr box*ll 0 -.. -.\"########################### module ref ############################ -.nr ref*nr 0 1 -.aln :R ref*nr -.nr ref*nr-width 5n -.nr ref*flag 0 \" for end-of-text -.ds Rf \v'-.4m'\s-3[\\n+[ref*nr]]\s0\v'.4m' -.\" -.\" start reference -.\"------------ -.de RS -.if !''\\$1' .ds \\$1 \v'-.4m'\s-3[\\n[ref*nr]]\s0\v'.4m' -.nr ref*flag 1 -.am ref*mac -.ref@start-print \\n[ref*nr] -\\.. -.eo -.am ref*mac RF -.. -.\"------------ -.de RF -.ec -.am ref*mac -.ref@stop-print -\\.. -.. -.\"------------ -.de ref@start-print -.di ref*div -.in \\n[ref*nr-width]u -.ti -(\w@\\$1.@u+1n) -\\$1. -.sp -1 -.. -.de ref@stop-print -.br -.di -.ne \\n[dn]u -.ev ref*ev2 -.nf -.ref*div -.ev -.rm ref*div -.if \\n[Ls] .SP \\n[Lsp]u -.. -.\"----------- -.de RP -.if !d ref*mac .@error "RP: No references!" -.nr ref*i 0\\$2 -.if \\n[ref*i]<2 .SK -.SP 2 -.ref@print-refs -.if 0\\$1<1 .nr ref*nr 0 1 -.if ((\\n[ref*i]=0):(\\n[ref*i]=2)) .SK -.. -.\"----------- -.\" called by end-of-text! -.de ref@eot-print -.\".if \\n[ref*flag] \{ -.if d ref*mac \{\ -. if \\n[D]>2 .tm Print references, called by eot -. nr ref*flag 0 -. br -. misc@ev-keep ne -. init@reset -\c -' bp -. ev -. ref@print-refs -.\} -.. -.\"----------- -.\" prints the references -.de ref@print-refs -.toc@save 1 "" "\\*[Rp]" \\n[%] -.ce -\fI\\*[Rp]\fP -.sp -.nr ref*ll \\n[.l] -.misc@ev-keep ref*ev -.ll \\n[ref*ll]u -.in 0 -.ref*mac -.in -.rm ref*mac -.ev -.nr ref*flag 0 1 -.. -.\"########################### module app ############################ -.\" -.nr app*nr 0 1 -.af app*nr A -.nr app*dnr 0 1 -.nr app*flag 0 -.\"------------ -.\" .APP name text -.\" name == "" -> autonumber -.de APP -.\" .if \\n[.$]<2 .@error "APP: too few arguments" -.app@set-ind "\\$1" -.\" -.ds Tcst ap -.ds Apptxt \\$2 -.\" -.ie \\n[Aph] .app@header \\*[app*ind] "\\$2" -.el .bp -.app@index "\\*[app*ind]" "\\$2" -.. -.\"------------ -.\" .APPSK name pages text -.\" name == "" -> autonumber -.de APPSK -.if \\n[.$]<2 .@error "APPSK: too few arguments" -.app@set-ind "\\$1" -.\" -.ds Tcst ap -.ds Apptxt \\$3 -.\" -.ie \\n[Aph] .app@header \\*[app*ind] "\\$3" -.el .bp -.app@index "\\*[app*ind]" "\\$3" -.pn +\\$2 -.. -.\"------------ -.de app@set-ind -.ie \w@\\$1@ .ds app*ind \\$1 -.el \{\ -. if !\\n[app*flag] \{\ -. nr H1 0 1 -. af H1 A -. af H1h A -. nr app*flag 1 -. \} -. ds app*ind \\n+[app*nr] -. nr H1 \\n+[app*dnr] -. nr H1h \\n[app*dnr] -.\} -.\" clear lower counters -.nr app*i 1 1 -.while \\n+[app*i]<15 .nr H\\n[app*i] 0 1 -.. -.\"------------ -.de app@index -.toc@save 1 "" "\\*[App] \\$1: \\$2" \\n[%] -.. -.\"------------ -.\" app@heaer name text -.de app@header -.bp -.SP (u;\\n[Lsp]*4) -.ce 1 -\s+4\fB\\*[App]\ \\$1\fP\s0 -.SP (u;\\n[Lsp]*2) -.if \w@\\$2@<\\n[.l] .ce 1 -\fB\s+2\\$2\s0\fP -.SP (u;\\n[Lsp]*4) -.. -.als APPX app@header -.\"########################### module cov ############################ -.\" title stored in diversion cov*title -.\" abstract stored in diversion cov*abstract -.\" arg to abstract stored in cov*abs-arg -.\" indent stored in cov*abs-ind -.\" number of authors stored in cov*au -.\" author(s) stored in cov*au!x!y -.\" author(s) title stored in cov*at!x!y -.\" x is the author-index [1-cov*au], y is the argument-index [1-9]. -.\" author(s) firm stored in cov*firm -.\" new date (if .ND exists) is stored in cov*new-date -.\" -.\" -.ds cov*abs-name ABSTRACT -.\" -.nr cov*au 0 -.de TL -.rm IA IE WA WE LO LT -.if \\n[.$]>0 .ds cov*title-charge-case \\$1 -.if \\n[.$]>1 .ds cov*title-file-case \\$2 -.pg@disable-top-trap -.eo -.de cov*title AU -.. -.\"------------------- -.de cov@title-end -.ec -.. -.\"------------------- -.\" .AU name [initials [loc [dept [ext [room [arg [arg [arg]]]]]]]] -.de AU -.cov@title-end -.pg@disable-top-trap -.nr cov*au +1 -.nr cov*i 0 1 -.ds cov*au!\\n[cov*au]!1 -.while \\n[.$]>=\\n+[cov*i] \{\ -. ds cov*au!\\n[cov*au]!\\n[cov*i] "\\$[\\n[cov*i]] -.\} -.if (\\n[.$]>=3)&(\w@\\$3@) \{\ -. if d cov*location-\\$3] \{\ -. ds cov*au!3!\\n[cov*au] \\*[cov*location-\\$3] -. \} -.\} -.. -.\"------------------- -.\" .AT title1 [title2 [... [title9] ]]]] -.\" Well, thats all that COVEND look for. -.\" Must appear directly after .AU -.de AT -.if \\n[.$]<1 .@error "AT: no arguments" -.nr cov*i 0 1 -.while \\n[.$]>=\\n+[cov*i] \{\ -. ds cov*at!\\n[cov*au]!\\n[cov*i] "\\$[\\n[cov*i]] -.\} -.. -.\"------------------- -.de AF -.cov@title-end -.if !''\\$1' .ds cov*firm \\$1 -.. -.de AST -.ds cov*abs-name \\$1 -.. -.de AS -.pg@disable-top-trap -.if d cov*abstract .@error "AS: only one abstract allowed" -.if !''\\n[.z]' .@error "AS: no diversion allowed (previous .AS?)" -.nr cov*abs-arg 0\\$1 -.nr cov*abs-ind (n;0\\$2) -.de cov*abstract AE -.. -.de AE -.. -.\" fixed for 2000, now uses \n[year]. -.de ISODATE -. \" support for ISO-date -. nr cov*mm \\n[mo] -. nr cov*dd \\n[dy] -. af cov*mm 01 -. af cov*dd 01 -. ie '0'\\$1' \{\ -. ds cov*new-date \\*[MO\\n[mo]] \\n[dy], \\n[year] -. \} -. el \{\ -. ds cov*new-date \\n[year]-\\n[cov*mm]-\\n[cov*dd] -. \} -.. -.ISODATE 0 -.als DT cov*new-date -.de ND -.ds cov*new-date \\$1 -.. -.\" switch to ISO-date if register Iso exist: YYYY-MM-DD -.if r Iso .ISODATE 1 -.\"------------------- -.\" save technical numbers. -.de TM -.nr cov*i 0 1 -.while \\n[.$]>=\\n+[cov*i] .ds cov*mt-tm!\\n[cov*i] \\$[\\n[cov*i]] -.nr cov*mt-tm-max \\n[.$] -.. -.\"----------------------- -.\" cover sheet -.\" the file must have the following last lines (somewhere): -.\" .pg@enable-top-trap -.\" .bp 1 -.\" .pg@enable-trap -.ds cov*mt-file!0 0.MT -.ds cov*mt-file!1 0.MT -.ds cov*mt-file!2 0.MT -.ds cov*mt-file!3 0.MT -.ds cov*mt-file!4 4.MT -.ds cov*mt-file!5 5.MT -.ds cov*mt-file!6 0.MT -.\"------------ -.de MT -.ie \\n[.$] \{\ -. ie d cov*mt-file!\\$1 .ds cov*mt-type \\$1 -. el .ds cov*mt-type 6 -.\} -.el .ds cov*mt-type 1 -.ds cov*mt-addresse "\\$2 -.ds cov*mt-type-text "\\$1 -.ie d @language .ds cov*str mm/\\*[@language]_ -.el .ds cov*str mm/ -.mso \\*[cov*str]\\*[cov*mt-file!\\*[cov*mt-type]] -.. -.de COVER -.ie !\\n[.$] .ds cov*cov-type ms -.el .ds cov*cov-type \\$1 -.pg@disable-top-trap -.ie d @language .ds cov*str mm/\\*[@language]_\\*[cov*cov-type].cov -.el .ds cov*str mm/\\*[cov*cov-type].cov -.mso \\*[cov*str] -.. -.\"########################### module qrf ############################ -.\" forward and backward reference thru special files. -.\" -.\" check if stderr-method is wanted -.\" This was needed when I discovered that groff was considered unsafe -.\" and groff -U didn't work. It's a workaround like the original -.\" index method, but not in my view elegant enough. -.\" -.\" init reference system -.de INITR -.ds qrf*file \\$1.qrf -.nr qrf*pass 2 -.if \\n[D]>1 .tm INITR: source \\*[qrf*file] -.ie \\n[Ref] \{\ -. tm .\\\\" Rfilename: \\*[qrf*file] -.\} -.el 'so \\*[qrf*file] -.. -.\"--------------- -.\" set a reference. -.de SETR -.if \\n[.$]<1 .@error "SETR:reference name missing" -.if !r qrf*pass .tm "SETR: No .INITR in this file" -.if \\n[Ref] \{\ -. ds qrf*name qrf*ref-\\$1 -. if \\n[D]>2 .tm SETR: ref \\*[qrf*name]=\\*[hd*mark],\\n[%] -. \" heading-number -. ds \\*[qrf*name]-hn \\*[hd*mark] -. \" page-number -. ds \\*[qrf*name]-pn \\n[%] -. \" -. if \\n[Ref] \{\ -. tm .ds \\*[qrf*name]-hn \\*[hd*mark] -. tm .ds \\*[qrf*name]-pn \\n[%] -. if !'\\$2'' .tm .ds \\*[qrf*name]-xx \\$2 -. \} -.\} -.. -.\"--------------- -.\" get misc-string -.\" If two arg -> set var. arg to misc-string. -.de GETST -.if \\n[.$]<1 .@error "GETST:reference name missing" -.if !r qrf*pass .tm "GETST: No .INITR in this file" -.ds qrf*name qrf*ref-\\$1 -. if d \\*[qrf*name]-xx \{\ -. ie \\n[.$]>1 .ds \\$2 \\*[\\*[qrf*name]-xx] -. el \\*[\\*[qrf*name]-xx]\c -. \} -.\} -.. -.\"--------------- -.\" get header-number -.\" If two arg -> set var. arg to header-number. -.de GETHN -.if \\n[.$]<1 .@error "GETHN:reference name missing" -.if !r qrf*pass .tm "GETHN: No .INITR in this file" -.ds qrf*name qrf*ref-\\$1 -.if d \\*[qrf*name]-hn \{\ -. ie \\n[.$]>1 .ds \\$2 \\*[\\*[qrf*name]-hn] -. el \\*[\\*[qrf*name]-hn]\c -.\} -.. -.\"--------------- -.\" get page-number -.\" If two arg -> set var. arg to page-number. -.de GETPN -.if \\n[.$]<1 .@error "GETPN:reference name missing" -.if !r qrf*pass .tm "GETPN: No .INITR in this file" -.ds qrf*name qrf*ref-\\$1 -.if d \\*[qrf*name]-pn \{\ -. ie \\n[.$]>1 .ds \\$2 \\*[\\*[qrf*name]-pn] -. el \\*[\\*[qrf*name]-pn]\c -.\} -.. -.\"---------- -.de GETR -.if \\n[.$]<1 .@error "GETR:reference name missing" -.ie !r qrf*pass \{\ -. tm "GETR: No .INITR in this file" -.\} -.el \{\ -. GETHN \\$1 Qrfh -. GETPN \\$1 Qrfp -\\*[Qrf] -.\} -.. -.\"########################### module ind ############################ -.\" Support for mgs-style indexing, borrowed from mgs. -.de IX -. tm \\$1\t\\$2\t\\$3\t\\$4 ... \\n[%] -.. -.\"-------------------- -.\" Another type of index system -.\" INITI type filename [macro] -.de INITI -.if \\n[.$]<1 .@error "INITI:type missing" -.\" ignore if INITI has already been used -.if \\n[.$]>1 \{\ -. if d ind*file .@error "INITI:file already set" -. ds ind*file \\$2.ind -. if \\n[D]>1 .tm INITI: source \\*[ind*file] -.\} -.if !d ind*file .@error "INITI:file not specified" -.ds ind*type \\$1 -.if \\n[Ref] \{\ -. if \\n[.$]>2 .tm .\\\\" Imacro: \\$3 -.\} -.. -.\"--------------- -.de IND -.if !d ind*file .@error "IND: No active INITI" -.if \\n[D]>1 .tm IND: type=\\*[ind*type] -.ds ind*ref -.if '\\*[ind*type]'N' .ds ind*ref \\n[%] -.if '\\*[ind*type]'H' .ds ind*ref \\*[hd*mark] -.if '\\*[ind*type]'B' .ds ind*ref \\*[hd*mark]\t\\n[%] -.if '\\*[ind*ref]'' .@error "IND:wrong index type: \\*[ind*ref]" -.\" -.ds ind*line \\$1 -.while \\n[.$]>0 \{\ -. shift -. as ind*line \t\\$1 -.\} -.as ind*line \\*[ind*ref] -.if \\n[Ref] .tm .\\\\" IND \\*[ind*line] -.. -.\" print index -.de INDP -.ie \\n[Ref] .tm .\\\\" Index: \\*[ind*file] -.el \{\ -. if !\\n[Cp] .pg@next-page -. \" print INDEX -. \" execute user-defined macros -. if d TXIND .TXIND -. ie d TYIND .TYIND -. el \{\ -. SK -. ce -\\*[Index] -. SP 3 -. 2C -. nf -. \} -' so \\*[ind*file] -. ie d TZIND .TZIND -. el \{\ -. fi -. 1C -. \} -.\} -.rm ind*file -.. -.\"########################### module let ############################ -.\" Letter macros -.\"------------------------ -.\" Formal closing -.de FC -.df@print-float 3 -.ie \\n[.$] .ds let*i \\$1 -.el .ds let*i \\*[Letfc] -.ie d let*type .let@fc_\\*[let*type] "\\*[let*i]" \\$@ -.el .let@mt-closing "\\*[let*i]" \\$@ -.. -.\"------- -.de let@mt-closing -.ne 5v -.in (u;\\n[.l]/2) -.sp -\\$1 -.in -.. -.\"------------------------ -.\" Signature line -.de SG -.ie d let*type .let*lt-sign \\$@ -.el .let*mt-sign \\$@ -.. -.\"------------------------ -.de let*lt-sign -.if !d let@sg_\\*[let*type] .@error "SG: letter type \\*[let*type] undefined" -.df@print-float 3 -.nr let*i 0 1 -.nr let*j 0 -.while \\n+[let*i]<=\\n[let*wa-n] \{\ -.if \\n[let*i]=\\n[let*wa-n] .nr let*j 1 -.let@sg_\\*[let*type] "\\*[let*wa-name!\\n[let*i]]" "\\*[let*wa-title!\\n[let*i]]" \\n[let*i] \\n[let*j] \\$@ -.\} -.. -.\"------------------------ -.\" Memorandum signature -.de let*mt-sign -.df@print-float 3 -.ne \\n[cov*au]u*4v -.ie \\n[.$]>1 .nr let*k 1 -.el .nr let*k \\n[cov*au] -.ds let*tmp \\*[cov*au!\\n[let*k]!3]-\\*[cov*au!\\n[let*k]!4]- -.nr let*i 0 1 -.while \\n+[let*i]<=\\n[cov*au] \{\ -. if \\n[let*i]>1 .as let*tmp / -. as let*tmp \\*[cov*au!\\n[let*k]!2] -.\} -.if !''\\$1' .as let*tmp -\\$1 -.in (u;\\n[.l]/2) -.nf -.nr let*i 0 1 -.while \\n+[let*i]<=\\n[cov*au] \{\ -. SP 3v -. if \\n[let*i]=\\n[let*k] \{\ -\Z'\h'-(u;\\n[.l]/2)'\\*[let*tmp]'\c -. \} -\\*[cov*au!\\n[let*i]!1] -.\} -.fi -.in -.. -.\"------------------------ -.\" Approval signature -.de AV -.ne 6v -.nf -.sp -.ie \\n[.$]<2 \\*[Letapp] -.el .sp -.sp 2 -.ie n ______________________________ ______________ -.el \D'l 25m 0'\h'4m'\D'l 12m 0' -\Z'\\$1'\h'29m'\f[\\*[@sdf_font]]\\*[Letdate]\fP -.fi -.. -.\"------------------------ -.\" Letter signature -.de AVL -.ne 6v -.nf -.sp 3 -.ie n ______________________________ -.el \D'l 25m 0' -\Z'\\$1' -.fi -.. -.\"------------------------ -.\" Letter type -.\" let@header is called from the header. It is supposed -.\" to remove the alias itself. -.de LT -.rm AF AS AE AT AU CS OK TL MT -.ds let*type BL -.nr Pi 5 -.nr Pt 0 -.if !''\\$1' .ds let*type \\$1 -.if !d let@head_\\*[let*type] .@error "LT: unknown letter type \\$1" -.shift -.als let@header let@head_\\*[let*type] -.let@init_\\*[let*type] \\$@ -.if \n[D]>1 .tm Letter type \\*[let*type] -.. -.\"----------- -.\" Blocked letter -.de let@init_BL -.. -.de let@head_BL -.rm let@header -.let@print-head 1 -.. -.de let@sg_BL -.ne 5v -.nf -.in (u;\\n[.l]/2) -.sp 3v -\\$1 -\\$2 -.in -.if \\$4 .sp -.if \w'\\$5'&\\$4 \\$5 -.fi -.. -.als let@fc_BL let@mt-closing -.\"----------- -.\" Semiblocked letter -.de let@init_SB -.nr Pt 1 -.. -.de let@head_SB -.rm let@header -.let@print-head 1 -.. -.als let@sg_SB let@sg_BL -.als let@fc_SB let@mt-closing -.\"----------- -.\" Full-blocked letter -.de let@init_FB -.. -.de let@head_FB -.rm let@header -.let@print-head -.. -.de let@sg_FB -.ne 5v -.nf -.sp 3v -\\$1 -\\$2 -.if \\$4 .sp -.if \w'\\$5'&\\$4 \\$5 -.fi -.. -.de let@fc_FB -.ne 5v -.sp -\\$1 -.. -.\"----------- -.\" Simplified letter -.de let@init_SP -.. -.de let@head_SP -.rm let@header -.let@print-head -.. -.de let@sg_SP -.nf -.if \\$3=1 .sp -.sp -.misc@toupper "\\$1, \\$2" -.if \\$4 .sp -.if \w'\\$5'&\\$4 \\$5 -.fi -.. -.de let@fc_SP -.sp 2 -.. -.\"-------------------------------------- -.\" Print the letter-head -.de let@print-head -.nf -.sp |11 -.if '1'\\$1' .in (u;\\n[.l]/2) -.\" ---- WA -.ie d let@wa-div .let@wa-div -.el .sp 3 -.\" ---- datum -\\*[cov*new-date] -.sp -.if '1'\\$1' .if !d let*lo-CN .if !d let*lo-RN .sp 2 -.\" ---- Confidential -.if d let*lo-CN \{\ -. ti 0 -. ie !''\\*[let*lo-CN]' \\*[let*lo-CN] -. el \\*[LetCN] -. sp -.\} -.\" ---- Reference -.if d let*lo-RN \{\ -\\*[LetRN] \\*[let*lo-RN] -. sp -.\} -.\" ---- IA -.sp -.in 0 -.nr let*i 0 1 -.while \\n+[let*i]<=\\n[let*ia-n] \{\ -\\*[let*ia-name!\\n[let*i]] -\\*[let*ia-title!\\n[let*i]] -.\} -.if d let@ia-div .let@ia-div -.\" ---- Attention -.if d let*lo-AT \{\ -. sp -\\*[LetAT] \\*[let*lo-AT] -.\} -.\" ---- Salutation -.if !'\\*[let*type]'SP' .if d let*lo-SA \{\ -. sp -. ti 0 -. ie !''\\*[let*lo-SA]' \\*[let*lo-SA] -. el \\*[LetSA] -.\} -.\" ---- Subject -.if d let*lo-SJ \{\ -. ie '\\*[let*type]'SP' \{\ -. sp 2 -. misc@toupper \\*[let*lo-SJ] -. sp -. \} -. el \{\ -. sp -. if '\\*[let*type]'SB' .ti +5m -\\*[LetSJ] \f[\\*[@sdf_font]]\\*[let*lo-SJ]\fP -. \} -.\} -.. -.\"------------------- -.\" .IA [name [title]] -.nr let*ia-n 0 1 -.de IA -.if \\n[.$] .ds let*ia-name!\\n+[let*ia-n] \\$1 -.if \\n[.$]>1 .ds let*ia-title!\\n[let*ia-n] \\$2 -.ev let@ev -.init@reset -'nf -.di let@ia-div -.eo -.. -.de IE -.di -.ec -.ev -.. -.\"------------------- -.\" .WA [name [title]] -.nr let*wa-n 0 1 -.de WA -.if \\n[.$] .ds let*wa-name!\\n+[let*wa-n] \\$1 -.if \\n[.$]>1 .ds let*wa-title!\\n[let*wa-n] \\$2 -.ev let@ev -.init@reset -'nf -.di let@wa-div -.it \\n[Letwam] let@wa-drain -.eo -.. -.\"------ -.de let@wa-drain -.it -.di -.di let@wa-junk -.. -.\"------ -.de WE -.it -.ec -.di -.ev -.if d let@wa-junk .rm let@wa-junk -.. -.\"------------------- -.\" Copy to -.de NS -.sp -.ie !''\\$2' .ds let*str \\$1 -.el \{\ -. ie \\n[.$]>0 \{\ -. ie !\w'\\$1' .ds let*str \\*[Letns!\\*[Letnsdef]] -. el \{\ -. ie d Letns!\\$1 .ds let*str \\*[Letns!\\$1] -. el .ds let*str \\*[Letns!copy](\\$1)\\*[Letns!to] -. \} -. \} -. el .ds let*str \\*[Letns!\\*[Letnsdef]] -.\} -.ne 2 -.nf -\\*[let*str] -.. -.de NE -.fi -.. -.\"------------------- -.\" Letter options -.de LO -.rm AF AS AE AT AU CS OK TL MT -.if ''\\$1' .@error "LO: missing option" -.if !d Let\\$1 .@error "LO: unknown option (\\$1)" -.ds let*lo-\\$1 \\$2 -.if \n[D]>1 .tm Letter option \\$1 \\$2 -.. -.\"-------------------- -.\" Start with a clean slate -.init@reset diff --git a/contrib/groff/contrib/mm/mm.tmac b/contrib/groff/contrib/mm/mm.tmac deleted file mode 100644 index 9ed09b721f98..000000000000 --- a/contrib/groff/contrib/mm/mm.tmac +++ /dev/null @@ -1,3 +0,0 @@ -.\" mm.tmac -.\" -.do mso m.tmac diff --git a/contrib/groff/contrib/mm/mm/0.MT b/contrib/groff/contrib/mm/mm/0.MT deleted file mode 100644 index 61f1a969c06b..000000000000 --- a/contrib/groff/contrib/mm/mm/0.MT +++ /dev/null @@ -1,146 +0,0 @@ -.\"------------ -.\" $Id: 0.MT,v 2.0 2000/09/14 03:40:25 jhaegg Exp $ -.\" Cover sheet. Memorandum type 0-3 and "string". -.\"------------ -.if !r Au .nr Au 1 -.nr cov*mt0-ind 1.1c -.de cov@print-title -.MOVE 4.8c 1.5c -.S 8 -subject: -.sp -1.1 -.S -.PGFORM -.ft \\*[@sdf_font] -.ll 9c -.fi -.cov*title -.ft -.ll -.nf -.if d cov*title-charge-case \fBCharge Case \\*[cov*title-charge-case]\fP -.if d cov*title-file-case \fBFile Case \\*[cov*title-file-case]\fP -.fi -.. -.\"------------ -.de cov@print-authors -.MOVE 5.7c 13.3c -.nf -.S 8 -\\$1: -.br -.S -.sp -1 -.in 0.8c -.ft \\*[@sdf_font] -.nr cov*i 0 1 -.while \\n+[cov*i]<=\\n[cov*au] \{\ -. cov@print-au1 \\n[cov*i] 1 -. if \\n[Au] \{\ -. cov@print-au2 \\n[cov*i] 3 4 -. cov@print-au2 \\n[cov*i] 6 5 -. cov@print-au1 \\n[cov*i] 7 -. cov@print-au1 \\n[cov*i] 8 -. cov@print-au1 \\n[cov*i] 9 -. \} -. if \\n[cov*i]<\\n[cov*au] .SP 1 -.\} -.ft -.if r cov*mt-tm-max \{\ -. SP 1 -. nr cov*i 0 1 -. ft \\*[@sdf_font] -TM -. in 1.5c -. sp -1 -. while \\n+[cov*i]<\\n[cov*mt-tm-max] \\*[cov*mt-tm!\\n[cov*i]] -. in -. ft -.\} -.fi -.PGFORM -.. -.\"------------ -.\" index arg1 -.de cov@print-au1 -.if d cov*au!\\$1!\\$2 \\*[cov*au!\\$1!\\$2] -.. -.\"------------ -.de cov@print-au2 -.\" index arg1 arg2 -.if d cov*au!\\$1!\\$2 \\*[cov*au!\\$1!\\$2] \c -.if \\$3=5 .if d cov*au!\\$1!\\$3 x\c -.if d cov*au!\\$1!\\$3 \\*[cov*au!\\$1!\\$3]\c -.br -.. -.\"------------ -.de cov@print-date -.MOVE 4.8c 13.3c -.S 8 -.nf -\\$1: -.br -.S -.sp -1 -.in 0.8c -\f[\\*[@sdf_font]]\\*[cov*new-date]\fP -.br -.fi -.PGFORM -.. -.\"------------ -.de cov@print-firm -.if d cov*firm \{\ -. MOVE 2.8c 0 17.7c -. S 18 -. rj 1 -\fB\\*[cov*firm]\fP -. S -. PGFORM -.\} -.. -.\"------------ -.de cov@print-abstract -.SP 3 -.if d cov*abstract \{\ -. misc@ev-keep cov*ev -. if \\n[cov*abs-ind]>0 \{\ -. in +\\n[cov*abs-ind]u -. ll -\\n[cov*abs-ind]u -. \} -. ce -\fI\\$1\fP -. SP 1.5 -. fi -. cov*abstract -. br -. ev -.\} -.. -.\"----------------- -.ds cov*mt0-txt!1 MEMORANDUM FOR FILE -.ds cov*mt0-txt!2 PROGRAMMER'S NOTES -.ds cov*mt0-txt!3 ENGINEER'S NOTES -.if d cov*default-firm .if !d cov*firm .ds cov*firm \\*[cov*default-firm] -.\" -.if !d cov*mt-printed \{\ -. cov@print-firm -. cov@print-title subject -. cov@print-date date -. cov@print-authors from -. cov@print-abstract \\*[cov*abs-name] -. SP 3 -. if (\*[cov*mt-type]>=1)&(\*[cov*mt-type]<=3) \{\ -. ce -\fI\*[cov*mt0-txt!\*[cov*mt-type]]\fP -. SP 1.5 -. \} -. if \*[cov*mt-type]=6 \{\ -. ce -\fI\*[cov*mt-type-text]\fP -. SP 1.5 -. \} -. pg@enable-top-trap -. pg@enable-trap -. ds cov*mt-printed -.\} diff --git a/contrib/groff/contrib/mm/mm/4.MT b/contrib/groff/contrib/mm/mm/4.MT deleted file mode 100644 index 78c77661d78b..000000000000 --- a/contrib/groff/contrib/mm/mm/4.MT +++ /dev/null @@ -1,82 +0,0 @@ -.\"------------ -.\" $Id: 4.MT,v 2.2 2003/04/02 04:06:40 jhaegg Exp $ -.\" Cover sheet. Memorandum type 4 -.\"------------ -.de cov@print-title -.if !d cov*title .@error title (.TL) not defined! -.MOVE 2.8c -.S +2 -.ad c -.fi -.B -.cov*title -.br -.S -.R -.ad b -.. -.\"------------ -.de cov@print-authors -.SP 0.5 -.I -.S +1 -.nr cov*i 0 1 -.while \\n+[cov*i]<=\\n[cov*au] \{\ -.ce -\\*[cov*au!\\n[cov*i]!1] -.br -.\} -.S -.R -.. -.\"------------ -.de cov@print-firm -.if d cov*firm \{\ -. SP 0.5 -. ce -\\*[cov*firm] -.\} -.. -.\"------------ -.de cov@print-abstract -.SP 2 -.if d cov*abstract \{\ -. misc@ev-keep cov*ev -. init@reset -. if \\n[cov*abs-ind]>0 \{\ -. in +\\n[cov*abs-ind]u -. ll -\\n[cov*abs-ind]u -. \} -. ce -\fI\\*[cov*abs-name]\fP -. SP 2 -. fi -. cov*abstract -. br -. ev -.\} -.. -.\"----------------- -.if d cov*default-firm .if !d cov*firm .ds cov*firm \\*[cov*default-firm] -.if !d cov*mt-printed \{\ -. cov@print-title -. cov@print-authors -. cov@print-firm -. if d cov*abstract \{\ -. if !\n[cov*abs-arg] .cov@print-abstract -. \} -. SP 2 -. nr hd*cur-bline \n[nl] -. ds cov*mt-printed -. pg@enable-top-trap -. pg@enable-trap -.\} -.de CS -.pg@disable-top-trap -.SK -.cov@print-title -.cov@print-authors -.cov@print-firm -.cov@print-abstract -.. - diff --git a/contrib/groff/contrib/mm/mm/5.MT b/contrib/groff/contrib/mm/mm/5.MT deleted file mode 100644 index a274d234bd00..000000000000 --- a/contrib/groff/contrib/mm/mm/5.MT +++ /dev/null @@ -1,34 +0,0 @@ -.\"------------ -.\" $Id: 5.MT,v 2.0 2000/09/14 03:40:25 jhaegg Exp $ -.\" Cover sheet. Memorandum type 5 -.\"------------ -.nr cov*mt0-ind 1.1c -.de cov@print-title -.B -.ll 9c -.fi -.cov*title -.R -.ll -.nf -.if d cov*title-charge-case \fBCharge Case \\*[cov*title-charge-case]\fP -.if d cov*title-file-case \fBFile Case \\*[cov*title-file-case]\fP -.fi -.. -.\"------------ -.de cov@print-date -.rj 1 -\f[\\*[@sdf_font]]\\*[cov*new-date]\fP -.br -.. -.\"------------ -.if !d cov*mt-printed \{\ -. SP 1.9c -. cov@print-title -. SP 1.2c -. cov@print-date -. SP 3 -. pg@enable-top-trap -. pg@enable-trap -. ds cov*mt-printed -.\} diff --git a/contrib/groff/contrib/mm/mm/ms.cov b/contrib/groff/contrib/mm/mm/ms.cov deleted file mode 100644 index 25d4579e2f7c..000000000000 --- a/contrib/groff/contrib/mm/mm/ms.cov +++ /dev/null @@ -1,84 +0,0 @@ -.\"------------ -.\" $Id: ms.cov,v 2.0 2000/09/14 03:40:25 jhaegg Exp $ -.\" Cover sheet. Mostly like ms cover. -.\"------------ -.de cov@print-title -.in 0 -.misc@ev-keep cov*ev -.init@reset -.ad c -.hy 0 -.fi -.B -.cov*title -.br -.ad b -.R -.ev -.. -.\"------------ -.de cov@print-authors -.SP -.nr cov*i 0 1 -.while \\n+[cov*i]<=\\n[cov*au] \{\ -. ce -\fI\\*[cov*au!\\n[cov*i]!1]\fP -. nr cov*j 0 1 -. while \\n+[cov*j]<=9 \{\ -. if d cov*at!\\n[cov*i]!\\n[cov*j] \{\ -. if \w'\\*[cov*at!\\n[cov*i]!\\n[cov*j]]' \{\ -. ce -\s-1\\*[cov*at!\\n[cov*i]!\\n[cov*j]]\s0 -. .\} -. \} -. \} -.\} -.. -.\"------------ -.de cov@print-firm -.SP .5 -.ce -\\*[cov*firm] -.. -.\"------------ -.de cov@print-abstract -.SP 2 -.if d cov*abstract \{\ -. misc@ev-keep cov*ev -. init@reset -. if \\n[cov*abs-ind]>0 \{\ -. in +\\n[cov*abs-ind]u -. ll -\\n[cov*abs-ind]u -. \} -. ce -\fI\\$1\fP -. SP 1.5 -. fi -. cov*abstract -. br -. ev -.\} -.. -.\"------------ -.de cov@print-date -.SP 2 -\f[\\*[@sdf_font]]\\*[cov*new-date]\fP -.. -.\"----------------- -.de COVEND -.br -.if d cov*default-firm .if !d cov*firm .ds cov*firm \\*[cov*default-firm] -.sp |4.2c -.cov@print-title -.cov@print-authors -.cov@print-firm -.cov@print-abstract \\*[cov*abs-name] -.cov@print-date -.pg@enable-top-trap -.bp 1 -.pg@enable-trap -.if d cov*abs-arg .if \\n[cov*abs-arg] \{\ -. cov@print-abstract ABSTRACT -. SP 2 -.\} -.. diff --git a/contrib/groff/contrib/mm/mm/se_ms.cov b/contrib/groff/contrib/mm/mm/se_ms.cov deleted file mode 100644 index 2d16d48e8132..000000000000 --- a/contrib/groff/contrib/mm/mm/se_ms.cov +++ /dev/null @@ -1,3 +0,0 @@ -.\" $Id: se_ms.cov,v 2.0 2000/09/14 03:40:25 jhaegg Exp $ -.mso mm/ms.cov -.nr cur*abstract-ll 11c diff --git a/contrib/groff/contrib/mm/mmroff.man b/contrib/groff/contrib/mm/mmroff.man deleted file mode 100644 index a891ff5e82b3..000000000000 --- a/contrib/groff/contrib/mm/mmroff.man +++ /dev/null @@ -1,49 +0,0 @@ -.\" -.\" $Id: mmroff.man,v 2.2 2001/12/09 12:15:09 wlemb Exp $ -.\" -.TH MMROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" -.SH NAME -mmroff \- reference preprocessor -.SH SYNOPSIS -.B mmroff -[ -.I -x -] -.I groff_arguments -.SH DESCRIPTION -\fBmmroff\fP is a simple preprocessor for \fBgroff\fP, it is -used for expanding references in \fBm@TMAC_M_PREFIX@m\fP, see -\fBgroff_mm(@MAN7EXT@)\fP. -\fBgroff\fP is executed twice, first with \fB-z\fP and \fB-rRef=1\fR -to collect all references and then to do the real processing -when the reference file is up to date. -.TP -\fB\-x\fR -Just create the reference file. This can be used to refresh -the reference file, it isn't always needed to have accurate -references and by using this option \fBgroff\fP will only -be run once. -.\".SH BUGS -.SH AUTHOR -Jörgen Hägg, Lund, Sweden . -.SH FILES -.TP -.B @MACRODIR@/tmac.@TMAC_M_PREFIX@m -.TP -.B @TMAC_MDIR@/*.cov -.TP -.B @TMAC_MDIR@/*.MT -.TP -.B @TMAC_MDIR@/locale -.SH "SEE ALSO" -.BR groff_mm(@MAN7EXT@), -.BR groff_mmse(@MAN7EXT@), -.BR groff (@MAN1EXT@), -.BR @g@troff (@MAN1EXT@), -.BR @g@tbl (@MAN1EXT@), -.BR @g@pic (@MAN1EXT@), -.BR @g@eqn (@MAN1EXT@) -. -.\" Local Variables: -.\" mode: nroff -.\" End: diff --git a/contrib/groff/contrib/mm/mmroff.pl b/contrib/groff/contrib/mm/mmroff.pl deleted file mode 100755 index d61fae8f9c36..000000000000 --- a/contrib/groff/contrib/mm/mmroff.pl +++ /dev/null @@ -1,137 +0,0 @@ -#! /usr/bin/env perl - -use strict; -# runs groff in safe mode, that seems to be the default -# installation now. That means that I have to fix all nice -# features outside groff. Sigh. -# I do agree however that the previous way opened a whole bunch -# of security holes. - -my $no_exec; -# check for -x and remove it -if (grep(/^-x$/, @ARGV)) { - $no_exec++; - @ARGV = grep(!/^-x$/, @ARGV); -} - -# mmroff should always have -mm, but not twice -@ARGV = grep(!/^-mm$/, @ARGV); -my $check_macro = "groff -rRef=1 -z -mm @ARGV"; -my $run_macro = "groff -mm @ARGV"; - -my (%cur, $rfilename, $max_height, $imacro, $max_width, @out, @indi); -open(MACRO, "$check_macro 2>&1 |") || die "run $check_macro:$!"; -while() { - if (m#^\.\\" Rfilename: (\S+)#) { - # remove all directories just to be more secure - ($rfilename = $1) =~ s#.*/##; - next; - } - if (m#^\.\\" Imacro: (\S+)#) { - # remove all directories just to be more secure - ($imacro = $1) =~ s#.*/##; - next; - } - if (m#^\.\\" Index: (\S+)#) { - # remove all directories just to be more secure - my $f; - ($f = $1) =~ s#.*/##; - &print_index($f, \@indi, $imacro); - @indi = (); - $imacro = ''; - next; - } - my $x; - if (($x) = m#^\.\\" IND (.+)#) { - $x =~ s#\\##g; - my @x = split(/\t/, $x); - grep(s/\s+$//, @x); - push(@indi, join("\t", @x)); - next; - } - if (m#^\.\\" PIC id (\d+)#) { - %cur = ('id', $1); - next; - } - if (m#^\.\\" PIC file (\S+)#) { - &psbb($1); - &ps_calc($1); - next; - } - if (m#^\.\\" PIC (\w+)\s+(\S+)#) { - eval "\$cur{'$1'} = '$2'"; - next; - } - s#\\ \\ $##; - push(@out, $_); -} -close(MACRO); - - -if ($rfilename) { - push(@out, ".nr pict*max-height $max_height\n") if defined $max_height; - push(@out, ".nr pict*max-width $max_width\n") if defined $max_width; - - open(OUT, ">$rfilename") || "create $rfilename:$!"; - print OUT '.\" references', "\n"; - my $i; - for $i (@out) { - print OUT $i; - } - close(OUT); -} - -exit 0 if $no_exec; -exit system($run_macro); - -sub print_index { - my ($f, $ind, $macro) = @_; - - open(OUT, ">$f") || "create $f:$!"; - my $i; - for $i (sort @$ind) { - if ($macro) { - $i = '.'.$macro.' "'.join('" "', split(/\t/, $i)).'"'; - } - print OUT "$i\n"; - } - close(OUT); -} - -sub ps_calc { - my ($f) = @_; - - my $w = abs($cur{'llx'}-$cur{'urx'}); - my $h = abs($cur{'lly'}-$cur{'ury'}); - $max_width = $w if $w > $max_width; - $max_height = $h if $h > $max_height; - - my $id = $cur{'id'}; - push(@out, ".ds pict*file!$id $f\n"); - push(@out, ".ds pict*id!$f $id\n"); - push(@out, ".nr pict*llx!$id $cur{'llx'}\n"); - push(@out, ".nr pict*lly!$id $cur{'lly'}\n"); - push(@out, ".nr pict*urx!$id $cur{'urx'}\n"); - push(@out, ".nr pict*ury!$id $cur{'ury'}\n"); - push(@out, ".nr pict*w!$id $w\n"); - push(@out, ".nr pict*h!$id $h\n"); -} - - -sub psbb { - my ($f) = @_; - - unless (open(IN, $f)) { - print STDERR "Warning: Postscript file $f:$!"; - next; - } - while() { - if (/^%%BoundingBox:\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/) { - $cur{'llx'} = $1; - $cur{'lly'} = $2; - $cur{'urx'} = $3; - $cur{'ury'} = $4; - } - } - close(IN); -} diff --git a/contrib/groff/contrib/mm/mmse.tmac b/contrib/groff/contrib/mm/mmse.tmac deleted file mode 100644 index 8198666336a2..000000000000 --- a/contrib/groff/contrib/mm/mmse.tmac +++ /dev/null @@ -1,3 +0,0 @@ -.\" mmse.tmac -.\" -.do mso mse.tmac diff --git a/contrib/groff/contrib/mm/mse.tmac b/contrib/groff/contrib/mm/mse.tmac deleted file mode 100644 index de78cb84c417..000000000000 --- a/contrib/groff/contrib/mm/mse.tmac +++ /dev/null @@ -1,184 +0,0 @@ -.\" $Id: mse.tmac,v 2.1 2000/11/17 04:26:02 jhaegg Exp $ -.\" -.\" swedish version of mm -.\" See m.tmac for version-information. -.ds @language se -.mso m.tmac -.ISODATE -.\" -.ds App Bilaga -.ds Lf Figurer -.ds Lt Tabeller -.ds Lx Uppställningar -.ds Le Ekvationer -.\" Page length -.if !r L .nr @pl 28.5c -.\" page width -.if !r W .nr @ll 13c -.\" page offset -.if !r O .nr @po 3.5c -.\" set the above parameters -.ll \n[@ll]u -.po \n[@po]u -.pl \n[@pl]u -.ds Lifg Figur -.ds Litb Tabell -.ds Liex Uppställning -.ds Liec Ekvation -.ds Licon Innehållsförteckning -.ds Qrf Se kapitel \\*[Qrfh], sidan \\*[Qrfp]. -.ds Rp Referenser -.ds Letfc Vänliga hälsningar -.ds Letapp Godkänd av: -.ds Letdate datum -.ds Letconf KONFIDENTIELLT -.ds Letsal Till vederbörande: -.ds Letatt ATTENTION: -.ds Letsubj Innehåll: -.ds Letref Refererande till: -.\" -.ds Letns!copy Kopia \" space! -.ds Letns!to " till -.ds Letns!0 Kopia till -.ds Letns!1 Kopia (med att.) till -.ds Letns!2 Kopia (utan att.) till -.ds Letns!3 Att. -.ds Letns!4 Atts. -.ds Letns!5 Enc. -.ds Letns!6 Encs. -.ds Letns!7 Annat försättsblad -.ds Letns!8 Brev till -.ds Letns!9 Dokument till -.ds Letns!10 Kopia (med atts.) till -.ds Letns!11 Kopia (utan atts.) till -.ds Letns!12 Endast abstract till -.ds Letns!13 Hela dokumentet till -.ds Letns!14 CC: -.\" -.ds MO1 januari -.ds MO2 februari -.ds MO3 mars -.ds MO4 april -.ds MO5 maj -.ds MO6 juni -.ds MO7 juli -.ds MO8 augusti -.ds MO9 september -.ds MO10 oktober -.ds MO11 november -.ds MO12 december -.nr pg*footer-size 4\" 1v+footer+even/odd footer+1v -.\"------------------------------------------------ -.\" Dokumentnamn -.ds LetDNAMN -.\" Mottagarens datum -.ds LetMDAT Ert datum: -.\" Bilaga -.ds LetBIL Bilaga \" -.\" Kompletteringsuppgift -.ds LetKOMP -.\" Dokumentbeteckning eller dokumentnummer -.ds LetDBET -.\" Beteckning (ärendebeteckning i form av diarienummer e.d. -.ds LetBET Beteckning: -.\" Mottagarens beteckning. -.ds LetMBET Er beteckning: -.\" Antal sidor -.ds LetSIDOR -.\" Svensk standard med högerställd löptext. --------------------- -.de let@init_SVH -.in 4.57c -.ll 17.57c -.. -.de let@head_SVH -.rm let@header -.let@print_SV H -.. -.de let@sg_SVH -.. -.de let@fc_SVH -.. -.\" Svensk standard med vänsterställd löptext. --------------------- -.de let@init_SVV -.. -.de let@head_SVV -.rm let@header -.let@print_SV V -.. -.de let@sg_SVV -.. -.de let@fc_SVV -.. -.\"-------------------------------- -.de let@print_SV -.nf -.\" pos T0 ----------------------------------- -.in 0 -.sp |3 -.if d let@wa-div .let@wa-div -.\"----- addressat -.if '\\$1'V' .if d let@ia-div \{\ -. sp |10 -. let@ia-div -.\} -.\" pos T4 ----------------------------------- -.in 9.14c -.\"----- kompletteringsuppgift -.if d let*lo-KOMP \{\ -. sp |2 -\\*[let*lo-KOMP] -.\} -.\"----- dokumentnamn -.if d let*lo-DNAMN \{\ -. sp |3 -\\*[let*lo-DNAMN] -.\} -.\"----- datum -.if d cov*new-date \{\ -. sp |5 -Datum: -\\*[cov*new-date] -.\} -.\"----- mottagarens datum -.if d let*lo-MDAT \{\ -. sp |7 -\\*[LetMDAT] -\\*[let*lo-MDAT] -.\} -.\"----- addressat -.if '\\$1'H' .if d let@ia-div \{\ -. sp |10 -. let@ia-div -.\} -.\" pos T6 ----------------------------------- -.in 13.72c -.\"----- mottagarens beteck. -.if d let*lo-MBET \{\ -. sp |7 -\\*[LetMBET] -\\*[let*lo-MBET] -.\} -.\"----- dokumentbeteck. -.if d let*lo-BET \{\ -. sp |3 -\\*[LetBET] -\\*[let*lo-BET] -.\} -.\" pos T7 ----------------------------------- -.in 16c -.\"----- bilaga -.if d let*lo-BIL \{\ -. sp |2 -\\*[LetBIL]\\*[let*lo-BIL] -.\} -.\" -.\"----- sidnummer -.sp |3 -.ie d let*lo-SIDOR \\n[%] (\\*[let*lo-SIDOR]) -.el \\n[%] -.\" -.\" Ta hand om special -.if d TP .TP -.sp |17 -.. -.\" ----------------------------------- diff --git a/contrib/groff/contrib/mom/BUGS b/contrib/groff/contrib/mom/BUGS deleted file mode 100644 index 33765ba0140f..000000000000 --- a/contrib/groff/contrib/mom/BUGS +++ /dev/null @@ -1,317 +0,0 @@ -Assume that anything that doesn't work or behaves oddly is a bug. -The documentation should be taken as the authoritative source for -how things ought to be. - -Post to the groff mailing list with bug reports, questions and -suggestions, or contact me directly at: - - peter@faustus.dyn.ca - or - ptpi@golden.net - -If writing me directly, please include the word "groff" or "mom" in -the Subject line or you risk my spam filters nuking your message. -Also, please--no html email. That, too, gets nuked. - ---Peter Schaffter - -======================================================================== - -Version 1.3 -=========== - -Persistent error in html coding of docs ( tag). ----Fixed--- - -Version 1.2-f -============ - -Multiple line subheads near page bottom sometimes printing one line -of subhead at page bottom, and subsequent lines on next page. ----Fixed--- - -Post-quote spacing still wonky when paragraph spacing is turned on. ----Fixed--- (for good would be nice) - -RULE not always resetting quad and quad value. ----Fixed--- - -Version 1.2-e -============= - -Some string definitions in om.tmac had superfluous spaces after -them (e.g. $COVERTITLE). ----Fixed--- - -Spacing under quotes not correct when paragraph spacing is turned -on. ----Fixed--- - - -First word of last line before footnotes is getting chopped. ----Fixed--- - -Version 1.2-d -============= - -HEADER_FAMILY not changing header family. ----Fixed--- - -FAMILY, after COLLATE, not changing the family of all and every -page element or tag. ----Fixed--- - -Heads and subheads at the start of docs are printing one line lower -than they should. ----Fixed--- - -Gaps are appearing at the bottom of pages when there's a linebreak -followed by a subhead. ----Fixed--- - -When LS is invoked after a single text line at the top of a page -containing a T_MARGIN (set with T_MARGIN or PAGE), mom is performing -spacing adjustments as if the first line doesn't exist. ----Fixed--- - -Changes made to ALD and LS in version 1.2-c should not apply when -the document processing macros are used. There is a significant -conflict with the internal use of ALD when the docheader is only -one line long (as, for example, when DOCTYPE is CHAPTER). ----Fixed, pending discovery of further conflicts--- - -Version 1.2-c -============= - -Deferred footnotes not always being output, and groff complains -"ending diversion FN_OVERFLOW on exit." ----Fixed--- - -First .LS call after a top margin has been set (with .T_MARGIN -or .PAGE) causing mom to move off the top margin baseline. Also, -there are conflicts between ALD, LS and T_MARGIN. ----Fixed--- - -DROPCAP not properly restoring a running \*[COND] or \*[EXT] after -COND or EXT are given as arguments to DROPCAP. ----Fixed--- - -Version 1.2 -=========== - -.PAD not co-operating with mom's fontstyles, esp. when a full -family+fontstyle is given to .FT. ----Fixed--- - -.DROPCAP -- ditto the above. ----Fixed--- - -Version 1.1.9 -============= - -Footnote markers not resetting properly on new pages when COLUMNS -is enabled. ----Fixed--- - -When overflowed footnote material is the only footnote material on -the page or in the column, no footnotes are output. ----Fixed--- - -The AUTOLEAD used in FOOTNOTE not being disabled after FOOTNOTES -are output, or after PROCESS_FN_LEFTOVER/PROCESS_FN_IN_DIVER. ----Fixed--- - -COL_NEXT and COL_BREAK, when invoked during the last column on a -page, are overprinting the last column instead of breaking to a new -page when there are footnotes in the column. ----Fixed--- - -BR_AT_LINE_KERN not "break-and-spreading" text when used in -justified copy. ----Fixed--- - -Version 1.1.8 -============= - -BLOCKQUOTE_FAMILY not changing blockquote family. ----Fixed--- - -FOOTNOTE, whether in column mode or not, was using -#FN_COUNT_FOR_COLS for all footnote markers and handling. ----Fixed--- - -Deferred footnotes that occured on the second to last page of -documents not printing. ----Fixed--- - -Version 1.1.7-a -=============== - -Suite number in DOCTYPE LETTER not printing. ----Fixed--- - -Footer elements not always vertically aligning. ----Fixed--- - -Footer rule gap not always correctly observed. ----Fixed--- - -Page numbering, when at top of page, not always falling on -HDRFTR_MARGIN. ----Fixed--- - -Default page numbering style for COPYSTYLE draft is DIGIT instead -of roman. ----Fixed--- - -Hyphens around page numbering when style is DIGIT, ROMAN or ALPHA -not vertically centered. ----Fixed--- - -EXT arg not working with DROPCAP. ----Fixed--- - -DOC_QUAD not automatically set immediately after START ----Fixed-- - -Tabs behaving erratically during document processing. ----Fixed--- - -Version 1.1.7 -============= - -When DOCHEADER OFF is given, if falls short -of the top margin of running text, is not respected and -bottom margin falls low. ----Fixed--- - - -Version 1.1.6-e -=============== - -The " mark (doublequote), when entered while not in document -processing mode (i.e. just straightforward typesetting), outputs -nothing unless SMARTQUOTES is invoked explicitly. ----Fixed--- - -Version 1.1.6-c -=============== - -In document processing mode, docs that use *none* of the -docprocessing tags being ignored. ----Fixed--- - -Version 1.1.6-b -=============== - -String tabs not picking up #L_MARGIN when #L_MARGIN not explicitly -set with L_MARGIN, PAPER or PAGE. ----Fixed--- - -Infinite loop when B_MARGIN is set lower than FOOTER_MARGIN during -doc processing. ----Fixed--- - -Version 1.1.6-a -=============== - -Mom partially broken when run with groff 1.19.1. Don't know yet -what this is, whether bad coding in mom, or a problem with 1.19.1. -Only solution for now: run mom 1.1.6 with groff 1.18. -----Fixed--- - -Top margin of endnotes pages after the first endnotes page when -PRINTSTYLE is TYPEWRITE and endnotes single-spacing is turned on -falling one line too high. ----Fixed--- - -Version 1.1.6 -============= - -DOCHEADER OFF (distance) not being respected. ----Fixed--- - -FINIS killing ENDNOTES page numbering and heads. ----Fixed--- - -Version 1.1.5 -============= - -Draft and revision not appearing in page headers. ----Fixed--- - -\*[RULE] not working properly with indents and justified copy. ----Fixed--- - -Post-epigraph spacing in TYPEWRITE causing some first pages to run too -deep. ----Fixed--- - -Spacing of docheaders in TYPEWRITE not always consistent. ----Fixed--- - -Version 1.1.4 -============= - -Blockquotes that span pages running too deep. ----Fixed--- - -Version 1.1.3 -============= - -Footnotes not outputting on final page of document body when ENDNOTES -is invoked. ----Fixed--- - -Pad not working properly and/or spitting out warnings when fill mode is -on. ----Fixed--- - -Version 1.1.2 -============= - -PAGENUM_STYLE being ignored unless entered after START. ----Fixed--- - -Version 1.1 -=========== - -String tabs not working as advertised when set from within other tabs. ----Fixed--- - -.COLLATE sometimes depositing a header on the first page of a subsequent doc. ----Fixed with workaround BREAK_QUOTE--- - -.UNDERLINE_QUOTES in PRINTSTYLE TYPEWRITE not on by default as advertised. ----Fixed--- - -.TI not cooperating with other indent styles. ----Fixed--- - -.WS and .SS not cooperating. ----Fixed--- - -.RW and .EW not working. ----Fixed--- - -======================================================================== - -KNOWN PROBLEMS --------------- - -The indent macros from the typesetting macro set may not always -perform well in conjunction with the document processing macros, -especially when documents are set in columns. Mostly, this is the -result of inadequate testing. There are only so many "who'd want to -do this anyway?" scenarios I can think of on my own. - -Epigraphs at the bottoms of page may sometimes run exactly one line -deeper than they should. The alternative (from my point of view) is -to have them run 1 line shorter than they should. The problem stems -from the fact the epigraphs are leaded differently than all other text, -and there's only so much adjusting that can be done with the whitespace -surrounding them to get them to bottom align. Since stylistically, -epigraphs should never appear at the bottom of a page/column without at -least some running text beneath them in order to make sense of the role -they play in page layout, this not likely to be fixed for some time. - diff --git a/contrib/groff/contrib/mom/ChangeLog b/contrib/groff/contrib/mom/ChangeLog deleted file mode 100644 index d99c02399ff8..000000000000 --- a/contrib/groff/contrib/mom/ChangeLog +++ /dev/null @@ -1,812 +0,0 @@ -*Thu Aug 11 2005 - -o Makefile.sub (HTMLDOCFILES): Add `refer.html' - -*Mon Jun 20 2005 - -o Makefile.sub (HTMLDOCFILES_, EXAMPLEFILES_, PROCESSEDEXAMPLEFILES_): New - variables. - (install_data): Install files in `mom' subdirectories. - Make it work actually. - (uninstall_sub): Updated. - -*Thu Jun 16 2005 - -o Makefile.sub (install_data, uninstall_sub): Use $(exampledir) for example -files. Reported by Keith Marshall. - -*Mon May 16 2005 - -o Update groff_mom.man. - -*Thu May 12 2005 - -o Added margin notes capability - -o Added mom-specific refer support; refer calls can be embedded in - running text, sent to footnotes or endnotes, or collected for - output on a bibliography page; also added mom-specific refer - control macros - -o Added bibliography page capability, with full suite of control - macros - -o Added referencing of footnotes and endnotes by line number - -o Added capability to have footnotes run on when footnotes are - being referenced by line number - -o Added a post footnote space option, in case users want a little - space between their footnotes - -o Added ENDNOTE_MARKER_STYLE, so user can choose between endnotes - identified by a numerical marker in the text, or by line number - -o Added control macros to accommodate differing needs for endnotes - identified by line number - -o Added ENDNOTE_TITLE_SPACE, so user can control starting position - of the endnotes page title - -o Extended LIST so that it accepts lowercase alpha, uppercase roman - numeral and lowercase roman numeral enumerators; also added a - "prefix" argument (which comes *after* the separator argument) - -o Changed RESET_LIST so that it can reset a list to any number, - letter, or roman numeral, instead of just 1, a, A, I and i - -o Change to handling of footnote/endnote markers in text; input - lines before FOOTNOTE still require \c, but input line after - FOOTNOTE OFF must be entered as a literal continuation of the - line before FOOTNOTE, including any required word space or - punctuation (this so users can get the footnote marker in text - either before or after the punctuation without hassle) - -o Added QUOTE_AUTOLEAD and BLOCKQUOTE_AUTOLEAD, so user can have - quotes and blockquotes leaded differently from running text - -o Reworked QUOTE and BLOCKQUOTE to accommodate _AUTOLEAD control; - spacing above and below quotes is equalized *on a per quote - basis* (not completely happy with this, but at least it gives - users some flexibility in designing (block)quotes) - -*Fri Mar 18 2005 - -o Added mom.vim to /examples - -*Thu Jan 20 2005 - -o Added \*[TB+] and \*[B] to give inline functionality of .TN and - .EL, respectively. - -o Added SECTION and SECTION_CHAR as aliases of LINEBREAK and - LINEBREAK_CHAR - -o Added a NOBREAK option to PAD, so when PAD is called, it's possible - to instruct mom not to advance on the page. - -*Wed Jan 19 2005 - -o New macro, ADD_SPACE, so that extra space can be added at the - top of a new page in document processing; the .ns call in HEADER - was making additional space impossible - -o Reworked handling of ALD/SPACE/SP and LS when they're used at - the tops of pages during pure (i.e. non-docprocessing) - typesetting. First lines were still wandering. Should also be - more intuitive: ALD after LS advances the specified distance from - the top baseline; LS after ALD doesn't change the position of the - first baseline (i.e. merely sets the lead for the text that - follows). - -*Tue Dec 14 2004 - -o Fixed a small problem with spacing under quotes when paragraph - spacing is turned on. - -*Fri Dec 10 2004 - -o Put all calls in VFP_CHECK inside their own environment. Without - the .ev call, the trap invoked VFP_CHECK was chopping off the - first word of the last line before footnotes. - -*Dec 6 2004 - -o Small fixes to elvis_syntax.new (dealing with strings, \{\ and \} - -o Changed - . ie \\n[#START] \{\ - . if \\n[#DOC_HEADER]=0 \{ . \} - . \} - in HEAD to - . ie \\n[#START] \{\ - . if \\n[#DOC_HEADER]=0 \{ .RLD 1v \} - . \} - so that HEADs at the start of docs with no docheaders falls on - the correct baseline. - -*Dec 3 2004 - -o Removed spurious parens from if ( \\n[#TRAP_DISTANCE] < \\n[#DOC_LEAD]*2 ) - in SUBHEAD. - -*Oct 14 2004 - -o Reworked the LL macro so that the argument can take a prepended + - or - sign (i.e. the argument is relative to the current line - length). - -*Oct 13 2004 - -o Added an .if \\n(.n=0 if to the ie clause in LS that controls how mom - responds to initial LS invocation at page top if T_MARGIN has - been set. Now, if there's text on the "top" baseline, LS behaves - as expected when invoked afterwards. - -*Oct 11 2004 - -o Added an ie !r#DOCS clause to the processing of "top baseline" - ALDs. ALD is used extensively (internally) in the document - processing macros, and does not need to check--indeed, should not - check--for top baseline placement prior to execution. - -*Sep 29 2004 - -o Additions to elvis_syntax.new - -*Sep 12 2004 - -o Small fixes to the documentation. - -*Aug 21 2004 - -o Removed superfluous second arguments from strings UP, DOWN, FWD - and BCK - -*Aug 8 2004 - -o Version changed from the 1.1.x series to 1.2. All of the - features I originally wanted mom to have originally have been - implemented, and appear to be stable. - -o Major overhaul to the setting of page traps and the handling of - footnotes, both "normal" footnotes and footnotes that occur - inside QUOTE, BLOCKQUOTE and EPIGRAPH. - -o Addtion of font "styles" to om.tmac, plus changes to the FAMILY - and FT macros to manage them. New section in the doc appendices - on adding fonts and managing the new font styles. - -o Mom now uses a "fallback font" whenever there's an illegal call - to FAMILY. - -o RW and EW now affect only the font in effect. A change of family - or font disables them. - -o BR_AT_LINE_KERN now properly does a .brp (spread and break) when - used in justified text. - -o NEWPAGE, which used to be an alias for .bp, has been moved into - its own macro, in order to make it more responsive to some unusal - situations. - -o Some changes to elvis_syn.new, including that the file extensions - recognized by elvis now include both .mom and .tmac. This makes - om.tmac much easier to read. - -*Jul 6 2004 - -o FT and FAM(ILY) reworked to take advantage of if S, if F and - \n[.sty] additions to groff (1.19.2). Warnings are emitted if a - style hasn't been registered, or if a font style doesn't exist in - the current family. Invalid .FAM(ILY) calls now use a "fallback" - font" (although no warning is issued); fallback is user-settable - -o New macro, FALLBACK_FONT. Not only controls the fallback font - for invalid family calls, but also controls whether mom aborts on - invalid .FT calls after issuing a warning. - -o RW/EW now affect only the current font (or font style) - -o BR_AT_LINE_KERN now (properly) does a break-and-spread when text - is justified. - -o Fairly extensive list of .sty's added to om.tmac. Hopefully, - this will make life easier for users wishing to add new fonts - and/or entire new families to their groff site-font/devps - directory. - -*Jun 6 2004 - -o Altered kerning slightly for footnote markers in text. Daggers - and double-daggers were getting a bit jammed - -*Fri Jun 4 2004 - -o Makefile.sub (HTMLDOCFILES, EXAMPLEFILES, PROCESSEDEXAMPLEFILES): Updated. - -*Thu Jun 3 2004 - -o Rewrote the routines dealing with _FAMILY, _FONT, _SIZE, _COLOR - and _QUAD. A single macro for each checks for the calling alias - (e.g. TITLE_FAMILY in _FAMILY), and performs the appropriate - action. - -o All "COLOUR" aliases of "COLOR", no matter where, have been - removed. - -o Added cover and doc cover page generation. - -o Added reference macros COVERTITLE, DOC_COVERTITLE, MISC and - COPYRIGHT (for use with covers only) - -o Fixed EL and TN so they don't spring page traps; in nofill modes - the preceding input line must be terminated by \c. - -o Added #T_MARGIN_LEAD_ADJ to DO_B_MARGIN, DO_T_MARGIN and NEWPAGE - to ensure accurate placement of first lines on new pages when - docprocessing is not taking place. - -o Made NEWPAGE it's own macro; formerly just an alias of .bp. - -o Made BREAKQUOTE obsolete; rewrote sections of footnote handling, - including adding support macros to deal with processing of - footnotes that were started inside quotes, blockquotes and - epigraphs. - -o Added a TERMINATE .em to docprocessing (except letters) to ensure - that deferred footnotes print on the last page of a doc. - - -*Mar 15 2004 - -o Added color support - -o Adjusted vertical placement of hyphens around page numbering - so that they are better centered on the height of the page - number. - -o Re-wrote portions of the document processing macros so that tabs - behave in a consistent and intuitive manner. Tab structures are - now properly preserved from page to page and column to column. - -*Feb 20 2004 - -o Rewrote the macros associated with DOCTYPE LETTER so that the - user can enter DATE, TO and FROM in any order s/he likes. For - backward compatibility, if the older, fixed order (DATE-TO-FROM) - is used, the date goes flush right with two linespaces after - it, while the other fields go flush left with a single linespace - separating them. - -o Fixed handling of DOCHEADER OFF when fell - short of the top margin of running text (the change is actually - in the SHIM macro, which is called by DOCHEADER). - -o Added a selection of iso 639 two-letter language codes as - optional arguments to SMARTQUOTES, so that the use can enter - her/his language code to get language specific quoting styles - -o Changed the way the strings for \*[ST], \*[STX], \*[FU] - and \*[BU] are read. Formerly, they were entered literally. - Now they're entered as an array. - -*Jan 24 2004 - -o Added lists and associated macros. Mom now does (nested) lists. - -o Added German-style lowered double quotes and two styles of - guillemets to SMARTQUOTES. - -o Added macro SIZE, intended to be called inline as \*[SIZE ]. - This is to bring mom's inline size change syntax into line with - her other inlines. - -o Added ESC_CHAR as an alias of .ec - -o Added doc entries for lists. - -o Updated SMARTQUOTES entry in docs. - -o Updated reserved words in docs. - -o Fixed a few more typos in docs. - -*Tue Oct 21 2003 - -o Changed \n[#DRAFT] and \n[#REVISION] to strings \*[$DRAFT] and - \*[$REVISION], allowing for the possibility of blank entries that - don't mess up headers/footers with zeros if user doesn't want any - numbers. - -o Extended handling of draft and revision numbers and strings in - headers/footers for increased flexibility. It's possible now to - have just about any combo of DRAFT_STRING, DRAFT, REVISION_STRING - and REVISION, and have them come out in headers/footers as one - intuitively expects/wants. - -*Fri Jul 25 2003 - -o Added a .bp after .if \\n[#START]=1 in FOOTER. Without it, - in document processing mode, documents that use *none* of the - docprocessing tags (yes, there are times when users want to do - this) ignored the footer trap. - -*Fri Jun 6 2003 - -o Changed register #DOCHEADER_LEAD_ADJ to string - -*Wed May 21 2003 - -o DOC_TITLE changed to be used exclusively with DOCTYPE DEFAULT - -o Fixed problem with restoration of previous doc pagenum - style when endnotes use a different pagenum style (set with - ENDNOTES_PAGENUM_STYLE) - -o Fixed handling of headers/footers with respect to endnotes. Now, - when either headers or footers are on, mom picks up the correct - page header/footer on the last page prior to ENDNOTES, gets the - pageheaders correct for endnotes pages *including the last one*, - and picks up correct page headers/footers for the subsequent docs - after COLLATE - -*Sat May 17 2003 - -o Added TOC (finally) and a nearly complete set of associated - control macros - -o Added new control macros to endnotes: - - ENDNOTES_STRING_CAPS - capitalize the endnotes string - ENDNOTES_NO_COLUMNS - allows docs in columns and endnotes not - ENDNOTES_PAGENUM_STYLE - set page numbering style for endnotes - ENDNOTES_FIRST_PAGENUMBER - set first pagenumber for endnotes - ENDNOTES_ALLOWS_HEADERS - page headers on endnotes pages off or on - ENDNOTES_NO_FIRST_PAGENUM - allows non-printing first page number when page footers are being used instead of headers - ENDNOTES_SINGLE_SPACE - for TYPEWRITE, if doc double-spaced - SUSPEND/RESTORE_PAGINATION - turns page numbering off for endnotes - -o Added an ADJUST option to ENDNOTE_LEAD - -o Added DOC_TITLE (like TITLE, but sets document-wide title for collated docs) - -o Added HDRFTR_CENTER_PAD, to allow adjustments to placement of - HDRFTR_CENTER_STRING - -o Added BLANKPAGE macro, to output blank pages (silently numbered) - -o Extensive changes to DEFAULTS, START, COLLATE, HEAD, SUBHEAD and - PARAHEAD because of new TOC and extended flexibility of ENDNOTES - page design - -o Fixed DOCHEADER OFF (distance), FINIS - ------------------------------------------------------------------------ - -*Sat Feb 22 2003 - -o (Re)-fixed handling of post epigraph spacing after #START for - TYPEWRITE double-spaced. - ------------------------------------------------------------------------- - -*Sun Feb 16 2003 - -o Added James Ramsey's proposed CHAPTER_TITLE macro, along with his - rewritten START macro and his utility macros to make START easier - to read. - -o Expanded handling of CHAPTER_TITLE to encompass TYPEWRITE, as well as - plugging it into the docheaders. Made CHAPTER_TITLE backwardly - compatible so that pre-1.1.5 docs using CHAPTER_STRING to create a - chapter title remain unaffected when groffed with 1.1.5. - -o Created control macros for CHAPTER_TITLE FAMILY, FONT and SIZE. - Added defaults for handling of CHAPTER title to DEFAULTS. Documented - CHAPTER_TITLE and everything that goes along with it. - -o Fixed broken draft and revision in headers/footers. - -o Fixed \*[RULE] so that it behaves properly with indents and justified - copy. - -o Fixed/tweaked handling of epigraph spacing in TYPEWRITE. - -o Fixed broken spacing of docheaders in TYPEWRITE. - -*Mon Feb 3 2003 - -o Fixed an oversight in CLOSING for DOCTYPE LETTER (closing wasn't - being set flush left) - -*Sun Sep 29 2002 - -o Changed .ne in .HEAD when PRINTSTYLE TYPESET from 5 to 4. With 5, - heads required at least 2 lines of text underneath or they'd be - defered to the next page, which created too much whitespace at the - end of the page. Heads will now be processed on the same page if the - head plus at least one line of text underneath fits. I figure it's - easier for the user to break to a new page manually if this behaviour - is unsatisfactory than to massage the page to fix the excess - whitespace. - -*Sun Aug 25 2002 - -o Changed .IX to .IQ. The older form still works, but emits a message - advising the user to update to the newer. (The macro in om.tmac - still remains IX; IQ is an alias.) Docs updated to reflect the - change. - -*Tue Aug 20 2002 - -o Added new (better) way to handle inline kerning. \*[BU #] and - \*[FU #] allow passing an argument to the inline string. The older - forms \*[BU#] and \*[FU#] still work, though. - -o Changed handling of inline horizontal and vertical movements. - Horizontal movements are now done with \*[BCK #] and - \*[FWD #]; verticals with \*[UP #] and \*[DOWN #]. - The older forms \*[FP#] and \*[BP#] still work (horizontals), as do - \*[ALD#] and \*[RLD#] (verticals). - ------------------------------------------------------------------------- - -*Mon Aug 19 2002 - -o Fixed ENDNOTES so footnotes output properly when ENDNOTES is called - -o Added ENDNOTES_HDRFTR_CENTER so that default no-print of header - center string on endnotes page(s) when DOCTYPE is CHAPTER can - be disabled (i.e. header center will be printed). - -*Sat Aug 10 2002 - -o Added .nf to top of PAD, with a test beforehand for current fill - mode. If fill mode was on, it's restored after PAD completes - processing. Updated reserved.html to include number register - #FILL_MODE. - -*Fri Jul 12 2002 - -o More fixes to underlining. - -*Fri Jul 5 2002 - -o Added capability of endnotes and pertinent control macros to om.tmac. - -o Added document entries pertaining to endnote macros. - -o Incorporated endnote macros into elvis_syntax. - -o Small doc fixes. - -o Tidied up indenting of om.tmac. - -o Fixed handling of underlining of italics in PRINTSTYLE TYPEWRITE - (there was a problem with footnotes getting underlined when they - shouldn't have been). - -o Removed ENDNOTES from TODO - -o Fixed the character translations for UNDERLINE so they work properly - with digraphs. - -*Mon Jul 1 2002 - -o Expanded docprocessing.html entry "Special Note on Chapters". Tidied - up html a bit. - -*Sat Jun 15 2002 - -o Small fix to PAD to make the use of inlines within the pad string - more intuitive. - -o Added \*[RULE] ( = \l'\n(.lu' ) so that full measure rules (either to - full line length or within tabs) are easier to set. - -*Sat Jun 8 2002 - -o Macro .PS renamed to .PT_SIZE. Alias .TS removed. - -o .tr bits in .CAPS rewritten in the form .tr é\[`E]. - -o General cleanup of docs to reflect changes - -o Small changes/additions to elvis_syn - -*Thu Jun 6 2002 - -o In DOCTYPE, in .if '\\$1'LETTER', added .FOOTER_RIGHT_SIZE +0. - Without it, the suite page was printing at the default - FOOTER_RIGHT_SIZE of -.5, which didn't look good. - -*Wed Jun 5 2002 - -o Makefile.sub (TFLAG): Add `$(top_builddir)/tmac'. - -*Tue Jun 4 2002 - -o Makefile.sub (groff_bin_dirs): Fix typo (forgotten `src' element). - -*Mon Jun 3 2002 - -o Makefile.sub (uninstall_sub): Don't use `momdocdir' but `htmldocdir'. - Add missing backslash. - -*Sat Jun 1 2002 - -o Makefile.in (prepare_make_examples): Test for `penguin.ps', not - `examples/penguin.ps'. - -*Wed May 29 2002 - -o Rewrote portions of PAGENUM_STYLE and COPYSTYLE so that PAGENUM_STYLE - behaves as advertised. - -*Fri May 24 2002 - -o /Makefile.sub (momdocdir): Removed. - (HTMLDOCFILES): Prepend `momdoc/'. - (EXTRAEXAMPLEFILES): Removed. Added entries to... - (EXAMPLEFILES): This. - (.SUFFIXES, .mom.ps): New. - (prepare_make_examples): Updated. - (examples/*.ps): Removed; .mom.ps will handle this. - (install_data): Updated. - -*Thu May 23 2002 - -o Applied two small bug fixes to om.tmac (patches 1.1.1a and 1.1.1b). - -o mom is now part of groff. - -o Some renaming to avoid problems with 8+3 filesystems: - - examples/docprocessing_typeset.mom -> examples/typeset.mom - examples/docprocessing_typewrite.mom -> examples/typewrite.mom - examples/typesetting_macros.mom -> examples/macros.mom - examples/penguin_small2_bw.ps -> examples/penguin.ps - -o Removed `INSTALL' and `README' since groff takes care of installation - now. - -o Added Makefile.sub. - -o Added mom.tmac (which simply calls om.tmac). - -o Added groff_mom.man for orthogonality; it simply points to the HTML - documentation. - -*Thu May 16 2002 - -o Added macro DRAFT_WITH_PAGENUMBER so user can have draft/revision - info attached to the pagenumber in COPYSTYLE DRAFT, instead of having - it HEADER center. Always having it HEADER center was creating problems - with long doc titles, esp. with PRINTSTYLE TYPEWRITE (which is when - COPYSTYLE DRAFT is most likely to be used). Now user has the choice, - in these circumstances, either to reduce HEADER_SIZE, or to displace - the draft/revision info. Also rewrote portions of COPYSTYLE so that - if no revision number is given in the reference macros, "Rev. #" - doesn't appear when COPYSTYLE DRAFT. - -*Fri May 10 2002 - -o Added capability of user-defined, single string recto/verso - headers/footers. - -o Added new entries to docs about the above. Made some additional - small changes to toc.html, rectoverso.html, and headfootpage.html - to supplement the new entries. - -o Small fix to handling of footer separator rule -- was 1 point too low - owing to fuzziness of #CAP_HEIGHT as returned by SIZESPECS. - -o Added some more useful stuff to elvis_syntax. - -*Sun May 05 2002 - -o Fix to DEFAULTS so that L_MARGIN and R_MARGIN are reprocessed if - DOCTYPE LETTER. R_MARGIN, as set by DOCTYPE LETTER had no preceding - PAGEWIDTH or PAPER from which to get #PAGE_WIDTH for figuring out - line length. - -o Additional fix to DEFAULTS in handling DOCTYPE LETTER so that if user - sets line length prior to START, no reprocessing of R_MARGIN occurs. - This necessitated adding a new number register: #USER_SET_L_LENGTH - -*Sat May 04 23:48:05 EDT 2002 - -o Added .cflags 4 /\(en -- was driving me nuts that lines wouldn't - break after these characters; I'm assuming others feel the same way - -* Fri May 03 2002 - -o Made some small fixes to space handling around quotes, mostly to do - with quotes immediately after START and quotes after (sub)heads. - -* Wed May 01 2002 - -o Fixed a small bug that was causing the first .PP after START to begin - at the top margin of the page regardless of any type that preceded - .PP when docheaders were off. - -o Fixed HEADER so that when HEADERS are off the first line of type on - pages after the first falls properly at the top margin - -*Sat Apr 27 2002 - -o Renamed docprocessing_macros.mom in /examples to - docprocessing_typeset.mom. Added docprocessing_typewrite.mom, as - well as a README file. - -o Fixed UNDERLINE_QUOTES (for PRINTSTYLE TYPEWRITE) so they really are - on by default as the docs say. - -o Changes to doc entry on COLLATE: - - - removed bit about using COLLATE after a cover page (I wrote the - entry *before* I wrote the macro!). Cover pages should be - followed by NEWPAGE, not COLLATE. - - - added caution about mixing PRINTSTYLEs - - - added caution about using DOC_FAMILY to change family of all - document elements after COLLATE - -o Made HEADER_SIZE (and, by extension, FOOTER_SIZE) available to - PRINTSTYLE TYPEWRITE. Changed appropriate doc entries to reflect - this. - -*Wed Apr 24 2002 - -o Small change to DO_QUOTE to correct a problem with quotes and - blockquotes that fall in the middle of paragraphs (i.e. text after - the quote is not a new para). Basically, added a bit that stores the - current para indent, sets para indent to 0, invokes a PP, then - restores the original para indent. - -o Added new macro, BREAK_QUOTE, to deal with the problem of - footnotes in quotes and blockquotes that cross pages or columns. - - Quotes and blockquotes are read into diversions, which means they - get their footnote information from the page/column on which they - were started. If a footnoted quote crosses a page/column, what - sometimes happens is that the footnote itself is output at the - bottom of page/column where the quote started, whereas the text - marker for the footnote appears on the next page/column where the - quote ends. Furthermore, the text marker is the one appropriate - to the previous page. BREAK_QUOTE is a workaround. - -o Added directory /examples to archive. - -o Added typesetting_macros.mom, docprocessing_macros.mom, elvis_syntax - and penguin_small2_bw.ps to /examples. - -o Added BREAK_QUOTE to docs, made some additions to reserved words - list, and corrected a few little doc errors. - -*Mon Apr 22 2002 - -o Added default .L_MARGIN 1i and .R_MARGIN 1i to PAPER, PAGE, and - PAGEWIDTH. L_MARGIN is essential otherwise left indents and tabs - don't have a register #L_MARGIN to work with. The default right - margin is a convenience only. Updated the doc entries for L_MARGIN - and R_MARGIN to reflect the change. - -*Sun Apr 21 2002 - -o Changes to COLLATE: - - - added some "resets" (LL, LS, QUAD) - - added a check for whether pagination is at page top (either - because FOOTERS are on or because PAGENUM_POS was user set). - If pagination is on, and PAGENUM_POS is TOP, it's turned off - for next page (start of next collated document) and restored - for subsequent pages unless PAGENUM_ON_FIRST_PAGE is on, in - which case the page number appears at page top. - -o The macro TRAPS is always invoked at the end of DEFAULTS (which is - called by START). Formerly, TRAPS was only invoked at the start - of a doc, not after COLLATE. Now runs after COLLATE as well. - -o Distance from $DOC_TYPE in DOCTYPE NAMED "" to start of - running text was one linespace too deep. Fixed (in START). - -o When 1st arg to PAGENUM_POS was user set to TOP, running text was - printing 1 linespace too high, even when PAGINATION was OFF. Same - problem when HEADERS were OFF (i.e. nothing in the header margin at - all). Fixed by removing -\\n[#DOC_LEAD]u from all .sp |\\n[#T_MARGIN]u - calls of .el portion after .ie \\n[#HEADERS_ON]. - -o Added new macro: PAGENUM_ON_FIRST_PAGE. Normally, when FOOTERS are - being used instead of HEADERS, mom doesn't print the page number at - the top of the first page of a doc, or the first page of collated - docs. New macro allows user to get mom to put the page number on - "first" pages if that's desired. Updated docs to include the macro. - -o More little fixes to docs. - -*Thu Apr 18 2002 - -o Fixed TI (temporary indent) so that it continues to work as expected, - even when called while another type of indent is in effect. - -*Tue Apr 16 2002 - -o String tabs weren't working as advertised when set from within - a tab. Fixed. Two new registers added: #ST_OFFSET and #IN_TAB. - String tabs now behave poperly and intuitively when set within tabs. - -o Added a note to docs about surrounding \w'...' escape with double- - quotes when it's used as an argument to macros - -o Added a note to docs that SILENT does not deposit a .br - -*Mon Apr 15 2002 - -o Added new macro BR_AT_LINE_KERN if user wants mom to deposit .br's - before .RW and/or .EW. - -o Added 1/4 points to inline escapes \*[ALD] and \*[RLD]. - -o Added 1/4 points to inline escapes \*[FP] and \*[BP] - -o Updated docs to reflect the above changes. - -*Fri Apr 12 2002 - -o Fixed .RW and .EW which weren't working because of a missing \ in - \\n(.f register. Also made it so that .RW and .EW affect all fonts - in positions 1, 2, 3, and 4 at once, hence line kerning now affects - all fonts that appear after it, not just the font that was current at - the time of the macros' invocation. - -o .SS and .WS now working properly. .WS no longer has any effect on - .SS, which remains constant regardless of .WS. Furthermore, .SS no - longer gets its value by adding \*[$SS_VAR] + \n[.ss]. Instead, - it remains constant. Don't know what I was thinking when I wrote - the routine in the first place. - -o Updated and rewrote doc entry pertaining to SS - -*Wed Apr 10 2002 - -o Renamed tmac.om to om.tmac to bring macro file's name into line - with current groff policy - -o Added more standard paper sizes to PAPER. - -o Fixed T_MARGIN, LS, and AUTOLEAD so that if T_MARGIN is set before LS - or AUTOLEAD at the top of a file, the first line of type falls - properly on the baseline set by T_MARGIN. Previously, LS and - AUTOLEAD automatically advanced by the value passed to them before - setting the first line of type, meaning that the first line of type - fell at T_MARGINu+1v instead of T_MARGIN. - -o Updated docs to reflect changes. - -o Removed #TEST_FOR_NUMERIC from list of reserved words. - -o Added "t" and #T_MARGIN_SET to list of reserved words. - -*Sat Apr 6 2002 - -o Added FACTOR arg to AUTOLEAD, so if user wants autolead to be a factor - of point size, instead of being the sum of pointsize + autolead, s/he - has the choice. Incorporated appropriate changes to PS and LS. - -o Added new register #AUTOLEAD_FACTOR to reserved words. Modified - comments for AUTOLEAD, PS, and LS to reflect changes. Also - corrected an error where #AUTOLEAD_VALUE had mistakenly been written - $AUTOLEAD_VALUE in comments in the macro file, and removed erroneous - | . Updated AUTOLEAD entry in momdoc/typesetting.html - to reflect the changes. - -*Wed Apr 3 2002 - -o Cleaned up html errors in the docs. - -o Added "Next," "Prev" and "Top" links to top and bottom of doc files. - -o Fixed some typos in the docs. diff --git a/contrib/groff/contrib/mom/Makefile.sub b/contrib/groff/contrib/mom/Makefile.sub deleted file mode 100644 index b71ccda3629e..000000000000 --- a/contrib/groff/contrib/mom/Makefile.sub +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -# Written by Werner Lemberg (wl@gnu.org) -# -# This file is part of groff. -# -# groff is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free -# Software Foundation; either version 2, or (at your option) any later -# version. -# -# groff is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License along -# with groff; see the file COPYING. If not, write to the Free Software -# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. - -# These may be overridden if cross-compiling. -GROFFBIN=$(top_builddir)/src/roff/groff/groff -GROFF_BIN_PATH=`echo $(groff_bin_dirs) | sed -e 's| *|$(SH_SEP)|g'` - -groff_bin_dirs=\ - $(top_builddir)/src/roff/groff \ - $(top_builddir)/src/roff/troff \ - $(top_builddir)/src/devices/grops - -FFLAG=-F$(top_builddir)/font -F$(top_srcdir)/font -TFLAG=-M$(top_builddir)/tmac -M$(top_srcdir)/tmac -M$(srcdir) - -GROFF=GROFF_COMMAND_PREFIX=''; \ - export GROFF_COMMAND_PREFIX; \ - GROFF_BIN_PATH=$(GROFF_BIN_PATH); \ - export GROFF_BIN_PATH; \ - $(GROFFBIN) $(FFLAG) $(TFLAG) - -MAN7=\ - groff_mom.n - -NORMALFILES=\ - mom.tmac \ - om.tmac - -HTMLDOCFILES=\ - momdoc/appendices.html \ - momdoc/color.html \ - momdoc/cover.html \ - momdoc/definitions.html \ - momdoc/docelement.html \ - momdoc/docprocessing.html \ - momdoc/goodies.html \ - momdoc/headfootpage.html \ - momdoc/inlines.html \ - momdoc/intro.html \ - momdoc/letters.html \ - momdoc/macrolist.html \ - momdoc/rectoverso.html \ - momdoc/refer.html \ - momdoc/reserved.html \ - momdoc/toc.html \ - momdoc/typemacdoc.html \ - momdoc/typesetting.html \ - momdoc/using.html - -EXAMPLEFILES=\ - examples/letter.mom \ - examples/sample_docs.mom \ - examples/typesetting.mom \ - examples/README.txt \ - examples/elvis_syntax \ - examples/elvis_syntax.new \ - examples/penguin.ps - -PROCESSEDEXAMPLEFILES=\ - examples/letter.ps \ - examples/sample_docs.ps \ - examples/typesetting.ps - -HTMLDOCFILES_=`echo $(HTMLDOCFILES) | sed 's|momdoc/||g'` -EXAMPLEFILES_=`echo $(EXAMPLEFILES) | sed 's|examples/||g'` -PROCESSEDEXAMPLEFILES_=`echo $(PROCESSEDEXAMPLEFILES) | sed 's|examples/||g'` - -CLEANADD=\ - penguin.ps \ - $(PROCESSEDEXAMPLEFILES) \ - examples/stamp - -.SUFFIXES: .mom .ps -.mom.ps: - $(GROFF) -Tps -mom $< >$@ - - -all: $(PROCESSEDEXAMPLEFILES) - -$(PROCESSEDEXAMPLEFILES): penguin.ps examples/stamp - -penguin.ps: - cp $(srcdir)/examples/penguin.ps . - -examples/stamp: - test -d examples || $(mkinstalldirs) examples - touch $@ - -install_data: $(NORMALFILES) $(HTMLDOCFILES) \ - $(EXAMPLEFILES) $(PROCESSEDEXAMPLEFILES) - -test -d $(tmacdir) || $(mkinstalldirs) $(tmacdir) - for f in $(NORMALFILES); do \ - rm -f $(tmacdir)/$$f; \ - $(INSTALL_DATA) $(srcdir)/$$f $(tmacdir)/$$f; \ - done - -test -d $(htmldocdir)/mom || $(mkinstalldirs) $(htmldocdir)/mom - for f in $(HTMLDOCFILES_); do \ - rm -f $(htmldocdir)/mom/$$f; \ - $(INSTALL_DATA) $(srcdir)/momdoc/$$f $(htmldocdir)/mom/$$f; \ - done - -test -d $(exampledir)/mom || $(mkinstalldirs) $(exampledir)/mom - for f in $(EXAMPLEFILES_); do \ - rm -f $(exampledir)/mom/$$f; \ - $(INSTALL_DATA) $(srcdir)/examples/$$f $(exampledir)/mom/$$f; \ - done - for f in $(PROCESSEDEXAMPLEFILES_); do \ - rm -f $(exampledir)/mom/$$f; \ - $(INSTALL_DATA) examples/$$f $(exampledir)/mom/$$f; \ - done - -uninstall_sub: - -for f in $(NORMALFILES); do \ - rm -f $(tmacdir)/$$f; \ - done - -for f in $(HTMLDOCFILES_); do \ - rm -f $(htmldocdir)/mom/$$f; \ - done - -rmdir $(htmldocdir)/mom - -for f in $(EXAMPLEFILES_) $(PROCESSEDEXAMPLEFILES_); do \ - rm -f $(exampledir)/mom/$$f; \ - done - -rmdir $(exampledir)/mom diff --git a/contrib/groff/contrib/mom/NEWS b/contrib/groff/contrib/mom/NEWS deleted file mode 100644 index 2433eb001e30..000000000000 --- a/contrib/groff/contrib/mom/NEWS +++ /dev/null @@ -1,446 +0,0 @@ -Release 1.3 ------------ - -Added line numbering capabilities, with controls. - -Footnotes and endnotes can now be referenced by line number. - -Added ability to adjust vertical position of the title that appears -on the first endnotes page. - -Footnotes can run on when being referenced by line number. - -Footnotes now have a post-footnote spacing option, for adding -a little space between footnotes. - -Extended LIST so it accepts alpha, ROMAN and roman enumerators. - -Added margin notes capability. - -Added refer support. - -Added bibliography page support. - -Added QUOTE_AUTOLEAD and BLOCKQUOTE_AUTOLEAD, so user can have -quotes and blockquotes leaded differently from running text. - -Change: the input line immediately after FOOTNOTE OFF must be -entered as a literal continuation of the line prior to FOOTNOTE, -including any initial spaces or punctuation marks. This allows -for hassle-free placing of footnote markers in running text either -before or after punctuation marks. - -Release 1.2-f -------------- - -Added ADD_SPACE, to permit users to insert space at the top of -running text (after the first page) when using the docprocessing -macros. - -Releases 1.2-a and 1.2-b ------------------------- - -My personal email address has changed. 1.2-a and -b have been -updated to reflect that. Additionally, I made some small changes -to the documentation. - -Release 1.2 ------------ - -As of 1.2, the recommended version of groff to use with mom has -been bumped up from groff, 1.18 to groff, 1.19.2. Although mom will -continue to work with groff, 1.18, her handling of .FAM(ILY) and .FT -is now slightly different, therefore users of groff 1.18 may have to -update documents created with mom so that every .FAM(ILY) request is -followed by a .FT request before any text is input, otherwise mom -will set the text after .FAM(ILY) in Courier (until she encounters a -.FT request). People running groff, >= 1.19.2 don't have to worry -about this, but I recommend that, regardless of which version you're -running, you have a look at the document entries for FAMILY and FT -in order to see how mom will be handling .FAMILY and .FT from now -on. - -When used with groff >=1.19.2, mom now emits warnings if a style -hasn't been registered, or if a font style doesn't exist in the -current family. Invalid .FAM(ILY) calls now use a "fallback" font" -(although no warning is issued). The fallback is user-settable. - -Mom's macro file, om.tmac, now sets up a fairly extensive list of -font "styles," thus expanding the range of arguments that can be -passed to .FT (formerly, just R, I, B and BI, unless users had -already rolled their own solution to the problem of extensive type -families containing fonts like condensed, demibold, black, light, etc). -Users are advised to read the documentation sections on FAM(ILY), -FT and FALLBACK_FONT, as well as the new appendix section, "Adding -PostScript fonts to groff", for information on using mom's style -extensions (and how to disable them, should they conflict with a -user's present groff site-font/devps setup). - -A new macro, FALLBACK_FONT, has been added. It controls not only -the fallback font for invalid .FAMILY calls, but also whether mom -aborts on invalid .FT calls after issuing a warning, or continues -processing using the fallback. - -Release 1.1.9 -------------- - -Added the (optional) generation of cover pages and document cover -pages, plus a full suite of control macros for all cover page -elements. - -Added new reference macros that apply to covers: COVERTITLE, -DOC_COVERTITLE, COPYRIGHT and MISC. - -The need for TRAP OFF/TRAP to deal with ELs and TNs that fall at -the bottom page has been obsoleted. However, both EL and TN, when -invoked in any "nofill" mode (LEFT, RIGHT, CENTER, or the L | R | C -arguments to TAB_SET or ST when no QUAD argument is given), must now -have the input line preceding the EL or TN terminated by \c. Fill -modes do not have this requirement, i.e. no \c is required. - -Footnotes that occur inside quotes, blockquotes and epigraphs now -work just like regular footnotes, with no user intervention -required. This obsoletes the macro BREAK_QUOTE. - -Removed all aliases that used the word COLOUR. Users must use -COLOR wherever COLOR is needed. COLOUR, as a replacement/alias, is -no longer supported. - -NEWPAGE, which used to be an alias of .bp, is now its own macro. - -Release 1.1.8 -------------- - -Added text color support. Users can now define or initialize a color, -and afterwards change text color with an inline of the form -\*[], or with the macro .COLOR. In document processing, -the docelement tag control macros have been expanded to include -_COLOR, e.g. .HEAD_COLOR will colorize -heads, PAGENUM_COLOR ]. -This brings mom's inline size change syntax into line with her other -inlines. \*S[] can still be used for the same thing. - -The file elvis_syntax (for elvis prior to 2.2h) is no longer being -maintained. It was getting messy and long in the tooth. The -official elvis syntax file is elvis_syntax.new, which works for -2.2h of elvis (and higher, one hopes). elvis users are encouraged -to update to 2.2h or higher. - -Release 1.1.6-e ---------------- - -Extended handling of draft and revision numbers and strings in -headers/footers for increased flexibility. It's possible now to -have just about any combo of DRAFT_STRING, DRAFT, REVISION_STRING -and REVISION, and have them come out in headers/footers as one -intuitively expects/wants. - -Also added a new set of syntax highlighting rules for the vi clone, -elvis. Version 2-2h-beta of elvis finally made possible the -highlighting of \*[...] inline escapes, whether or not they're -separated from surrounding text by spaces. This is a terrific -improvement in elvis, and makes for greatly improved readability of -mom files. - -Release 1.1.6-b - 1.1.6d ------------------------- - -Trivial changes to documentation and some cleanups of the main -om.tmac file, including: - -Added a .bp after .if \\n[#START]=1 in FOOTER. Without it, -in document processing mode, documents that use *none* of the -docprocessing tags (yes, there are times when users want to do -this) ignored the footer trap. - -Changed register #DOCHEADER_LEAD_ADJ to string -$DOCHEADER_LEAD_ADJ. This means that .DOCHEADER_LEAD no longer -requires a unit of measure; points is assumed. - -Release 1.1.6-b ---------------- - -Added a SHIM macro that calculates and moves to the next "legal" -baseline during document processing (useful if user starts playing -around with spacing/leading on a page and needs to get the leading -back on track). - -Fixed handling of DOCHEADER OFF so that the first line of -running text falls on a "legal" baseline when is given. - -Release 1.1.6-a ---------------- - -Problem with groff 1.19.1 fixed by Werner (.return handled arguments -incorrectly). - -Fixed handling of page numbering style restoration in endnotes, so -that (collated) docs have the correct page numbering style when the -style has been changed for endnotes (with ENDNOTES_PAGENUM_STYLE). - -DOC_TITLE has been made for use exclusively with DOCTYPE DEFAULT. - -Fixed handling of headers/footers with respect to endnotes. Now, -when either headers or footers are on, mom picks up the correct -page header/footer on the last page prior to ENDNOTES, gets the -pageheaders correct for endnotes pages *including the last one*, and -picks up correct page headers/footers for the subsequent docs after -COLLATE. - - -Release 1.1.6 -------------- - -BAD NEWS: mom appears to be crippled in some areas when run with -groff 1.19.1. Pending a solution, mom must be run with groff 1.18 - -***NEW*** - -Added TOC capabilities. - -Extended range of endnotes control macros. See the documentation -on endnotes control macros. - -Added a new DOC_TITLE macro, to deal with collated documents that -have an overall title, while each doc has its own separate doc -title (from TITLE). - - -Release 1.1.5 -------------- - -***NEW*** - -Added James Ramsey's CHAPTER_TITLE macro as well as control macros to -go with it. Thanks James. Also from James came a patch to handle -START differenty which has been incorporated into om.tmac. Thanks -again, James. - -Some bits and pieces of the docs have been tweaked, but nothing -changed. Hopefully, the changes will make parts of the docs easier to -read and navigate. - -***FIXES*** - -o \*[RULE] - -o broken draft and revision in docheaders - -o post-epigraph spacing in TYPEWRITE - -o header spacing in TYPEWRITE - ------------------------------------------------------------------------- - -Release 1.1.4 -------------- - -***SIGNIFICANT CHANGE*** -.IX is now deprecated, although it will continue to work as before. -The new form is .IQ (Indent Quit). Groff will emit a message advising -users to update their docs. - -***NEW*** -Four new inlines to deal with horizontal and vertical movements: - - o \*[FWD n] - o \*[BCK n] - o \*[UP n] - o \*[DOWN n] - -All four require a unit of measure after n. These inlines are similar -to the older \*[FPn], \*[BPn], \*[ALDn] and \*[RLDn], however they're -not restricted to points, and any value can be entered for n (the older -forms -- which still work -- were restricted to 1 - 36). - -***CHANGED*** -Inline kerning can now be accomplished with \*[BU n] and \*[FU n], where -n, after the space, is the desired number of kern units. The older -forms \*[BUn] and \*[FUn] still work, up to 36 units. - ------------------------------------------------------------------------- - -Release 1.1.3c --------------- - -***NEW*** -A new macro -- ENDNOTES_HDRFTR_CENTER -- added so that mom's default -behaviour of not printing the header center string when DOCTYPE is -CHAPTER can be disabled (i.e. she will print the center string). The -macro is user-called with ENDNOTES_HEADER_CENTER or -ENDNOTES_FOOTER_CENTER. - -***FIXES*** -PAD now works as advertised when fill mode is on. - -ENDNOTES no longer disables printing of footnotes on last page of -document body. - -Release 1.1.3 -------------- - -***SIGNIFICANT CHANGE -- PLEASE TAKE NOTE*** -As of 1.1.3, groff must be >= 1.18. - -***NEW*** -Added endnotes functionality to mom, along with a slew of macros to -control how mom prints endnotes pages. See the html documentation. - -***NEW*** -Added inline \*[RULE], which draws a rule to the full measure of the -current line length ( to be used in place of \h'\n(.lu' ). Weight of the -rule is dependent on the point size of type when \#[RULE] is called. - -***FIXES*** -PAD -- works more intuitively now when the pad string contains inline -escapes for font, point size, etc. - -UNDERLINE -- fixed character translations of digraphs so they get -underlined properly. Also fixed a bug that was causing some footnotes -to get underlined when UNDERLINE was on in the body of the document. - -***UPDATES*** -Html documentation -elvis_syn - -Release 1.1.2a --------------- - -***SIGNIFICANT CHANGE -- PLEASE TAKE NOTE*** -In order to help mom toward full groffship, the macro .PS has been -renamed to .PT_SIZE, and the alias .TS (for .TAB_SET) has been removed. -.PS and .TS are keywords used by pic and tbl respectively, and the mom -macros of the same name were in conflict. - -Release 1.1.2 -------------- - -***IT'S OFFICIAL!*** -mom is now an official part of the groff. New releases will be -incorporated into the groff package. I'll still be posting each new -release on the mom homepage, so there's no need to download all of the -most recent version of groff just to get a newer mom. :) - -***CHANGES*** -Fixed default footer separator rule adjustment so that it's closer to -the advertised "4 points above the tallest ascender in the footer." - -Added more stuff to the elvis_syn file. Still wouldn't mind someone -contributing some vim/emacs syntax highlighting. - -Added .cflags 4 /\(em to om.tmac. By default, mom now obligingly -breaks after / and \(en. - -***NEW*** -Macro(s): HEADER_RECTO - HEADER_VERSO -With these macros, users can now define single-string recto/verso -headers/footers. HEADER_RECTO (or FOOTER_RECTO) can be used to create -a one-part header/footer (instead of mom's default three-parters) that -appears on every page if RECTO_VERSO is OFF or, if RECTO_VERSO is on, if -no HEADER_VERSO (or FOOTER_VERSO) has been defined. If a HEADER_VERSO -(or FOOTER_VERSO) is defined and RECTO_VERSO is on, _RECTO prints on -even pages and _VERSO on odd pages. - -Added macro DRAFT_WITH_PAGENUMBER so user can have draft/revision -info attached to the pagenumber in COPYSTYLE DRAFT, instead of having -it HEADER center. Always having it HEADER center was creating problems -with long doc titles, esp. with PRINTSTYLE TYPEWRITE (which is when -COPYSTYLE DRAFT is most likely to be used). - -***FIXES*** -No more "can't break line" warnings in DOCTYPE LETTER. - -If no REVISION number is given, Rev. 0 no longer appears HEADER_CENTER -in COPYSTYLE DRAFT - -PAGENUM_STYLE now works as advertised. - -Release 1.1.1 -------------- - -***CHANGES*** -Main macro file renamed to om.tmac, in keeping with current groff -policy. - -Now okay to use groff mailing list for mom-related posts - -***NEW*** -Toggle macro -- BR_AT_LINE_KERN. When on, automatically deposits -a break whenever .RW or .EW are invoked. Very useful when kerning -whole lines of rag copy. - -***NEW*** -Toggle macro -- PAGENUM_ON_FIRST_PAGE. Normally, when FOOTERS are -being used instead of HEADERS, mom doesn't print the page number at -the top of the first page of a doc, or the first page of collated docs. -PAGENUM_ON_FIRST_PAGE allows user to get mom to put the page number on -"first" pages if that's desired. - -***NEW*** -Macro -- BREAK_QUOTE -- to deal with problem of footnoted quotes and -blockquotes that cross a page or column. - -***NEW*** -New argument to AUTOLEAD -- FACTOR. With FACTOR, you can, if you -wish, enter a factor by which AUTOLEAD multiplies the point size when -calculating lead automatically. - -Improvements ------------- - -PAPER now has a much larger selection of common paper sizes. - -\*[ALD], \*[RLD], \*[FP] and \*[BP] now accept increments of quarter -points (expressed as decimal fractions). \*[RLD1.75], for example, -reverses 1-3/4 points up on the line. - -HEADER_SIZE now available to PRINTSTYLE TYPEWRITE. This was necessary -to deal with the problem of excessively long HEADER_LEFT, _CENTER or -_RIGHT strings. - -Fixes ------ - -T_MARGIN -- can be set before or after LS or AUTOLEAD -SS -- remains constant regardless of WS -WS -- no longer affects SS -TI -- now works as expected even when called while another indent - type is in effect -COLLATE -- small fixes - -Broken .RW and .EW fixed. - -String tabs now behave properly when set from within tabs. - -UNDERLINE_QUOTES (for PRINTSTYLE TYPEWRITE) are now, in fact, on by -default as the docs state. diff --git a/contrib/groff/contrib/mom/TODO b/contrib/groff/contrib/mom/TODO deleted file mode 100644 index 1297bbd6a5bb..000000000000 --- a/contrib/groff/contrib/mom/TODO +++ /dev/null @@ -1,25 +0,0 @@ -As of version 1.2, the items on this TODO list will only be dealt -with if users request they be implemented. - -UNDERLINING ------------ -Explore "the ultimative underline macro" for possible inclusion -into mom. - -NUMBERED HEADS, SUBHEADS and PARAHEADS --------------------------------------- -Macros to set numbering style (roman, arabic, alpha, etc)? - -FOOTNOTES ---------- -In columnar docs, maybe give user the choice of gathering all -footnotes at the bottom of the last column? - -CONTROL MACROS -- _INDENT --------------- -Let user be able to enter decimal fractions as the argument to _INDENT -control macros, or, instead, let user be able to enter absolute -values with a unit of measure in addition to current behaviour, -which is relative. - ------------------------------------------------------------------------- diff --git a/contrib/groff/contrib/mom/copyright b/contrib/groff/contrib/mom/copyright deleted file mode 100644 index 51756d000992..000000000000 --- a/contrib/groff/contrib/mom/copyright +++ /dev/null @@ -1,24 +0,0 @@ -AUTHOR ------- -Peter Schaffter (peter@faustus.dyn.ca) (ptpi@golden.net) -320 Gordon St. -Fergus, Ontario -CANADA -N1M 2W3 - -======================================================================== - -The groff macro file om.tmac and the html documentation pertaining -to it are copyright (c) 2004, 2005 Peter Schaffter. - -om.tmac is issued under the GNU General Public License, a full copy of -which can be had at - - http://www.gnu.org/licenses/gpl.html - -The html documentation pertaining to om.tmac is issued under the GNU -Free Documentation License, a full copy of which can be had at - - http://www.gnu.org/copyleft/fdl.html - -======================================================================== diff --git a/contrib/groff/contrib/mom/examples/README.txt b/contrib/groff/contrib/mom/examples/README.txt deleted file mode 100644 index 65188a798851..000000000000 --- a/contrib/groff/contrib/mom/examples/README.txt +++ /dev/null @@ -1,115 +0,0 @@ -The files in this directory show mom in action. - -If you have downloaded and untarrred a version of mom from her -homepage, you'll see that none of the example files come with -corresponding PostScript (.ps) files, as they do with pre-compiled -versions of groff, or groff built from source. - -I haven't included the PostScript output because I want to -keep the mom archive as lean as possible. To view the PostScript -output, process the files with groff and either - - a) send the output to a separate file for previewing with a - PostScript viewer such as gv (ghostview), or - - b) to your printer. - -Using the file sample_docs.mom as an example, you would -accomplish a) like this: - - groff -mom -Tps sample_docs.mom > sample_docs.ps - gv sample_docs.ps - -Accomplishing b) depends on your printer setup, but a fairly -standard way to do it would be - - groff -mom -Tps sample_docs.mom | lpr - - or - - groff -mom -Tps -l sample_docs.mom - -Note: I don't recommend previewing with gxditview because it doesn't -render some of mom's effects properly. - -The files themselves --------------------- - -All are set up for 8.5x11 inch paper (US letter). - -***typesetting.mom** - -The file, typesetting.mom, demonstrates the use of typesetting tabs, -string tabs, line padding, multi-columns and various indent styles, -as well as some of the refinements and fine-tuning available via -macros and inline escapes. - -Because the file also demonstrates a "cutaround" using a small -picture (of everybody's favourite mascot, Tux), the PostScript file, -penguin.ps has been included in the directory. - -***sample_docs.mom*** - -The file, sample_docs.mom, shows examples of three of the document -styles available with the mom's document processing macros, as well -as demonstrating the use of COLLATE. - -The PRINTSTYLE of this file is TYPESET, to give you an idea of mom's -default behaviour when typesetting a document. - -The last sample, set in 2 columns, shows off mom's flexibility -when it comes to designing documents. - -If you'd like to see how mom handles exactly the same file when the -PRINTSTYLE is TYPEWRITE (i.e. typewritten, double-spaced), simply -change - - .PRINTSTYLE TYPESET - -to - - .PRINTSTYLE TYPEWRITE - -near the top of the file. - -***letter.mom*** - -This is just the tutorial example from the momdocs, ready for -previewing. - -***elvis_syntax.new*** - -For those who use the vi clone, elvis, you can paste this file into -your elvis.syn. Provided your mom documents have the extension -.mom, they'll come out with colorized syntax highlighting. The -rules in elvis_syntax aren't exhaustive, but they go a LONG way to -making mom files more readable. - -The file elvis_syntax (for pre-2.2h versions of elvis) is no longer -being maintained. Users are encouraged to update to elvis 2.2h or -higher, and to use elvis_syntax.new for mom highlighting. - -I'll be very happy if someone decides to send me syntax highlighting -rules for emacs. :) - -***mom.vim*** - -Christian V. J. Brüssow has kindly contributed a set of mom syntax -highlighting rules for use with vim. Copy the file to your -~/.vim/syntax directory, then, if your vim isn't already set up to -do so, enable mom syntax highlighting with - - :syntax enable - -or - - :syntax on - -Please note: I don't use vim, so I won't be making changes to this -file myself. Christian Brüssow is the maintainer of the ruleset, -which is available on the Web at - - http://www.cvjb.de/comp/vim/mom.vim - -Contact Christian (cvjb@cvjb.de) if you have any suggestions or -requests. diff --git a/contrib/groff/contrib/mom/examples/elvis_syntax b/contrib/groff/contrib/mom/examples/elvis_syntax deleted file mode 100644 index 64fbb3b06de2..000000000000 --- a/contrib/groff/contrib/mom/examples/elvis_syntax +++ /dev/null @@ -1,90 +0,0 @@ -#Mom -language mom -extension .mom .tmac - -startword . -color startword normal - -inword _.' -color inword normal - -other initialpunct -mostly normal - -backslash none - -color args like fixed -color braces like char -color brackets like underlined -color chars like emphasized -color decimals like number -color ellipsis normal -color escapes like keyword -color math like cursor -color misc like string -color operators like string -color parens like comment -color reg_string like math -color tmac_escapes like keyword -color single_slash like char - -font args DA DE EN ES FR IT NL NO PT SV -font args DEFAULT CHAPTER NAMED LETTER -font args TYPESET TYPEWRITE -font args FINAL DRAFT -font args BLOCK QUAD -font args LEFT RIGHT CENTER CENTRE JUSTIFY TOP BOTTOM L R C J -font args OFF QUIT END EXIT DONE NO ALL -font args PAGE NUMBER STAR -font args LETTER LEGAL EXECUTIVE LEDGER TABLOID QUARTO FOLIO -font args 10x14 A3 A4 A5 B4 B5 -font args SINGLESPACE -font args FACTOR -font args DASH BULLET ALPHA DIGIT USER -font args RGB CYM CMYK GRAY GREY -font args COND CONDX EXT EXTX SUP SUPX CONDSUP CONDSUPX EXTSUP EXTSUPX -font args BOLDER BOLDERX SLANT SLANTX -font args UP DOWN BCK FWD BU BP FU FP -font args ROM IT BD BDI PREV -font args ST -font args SUSPEND RESUME - -prefix { \{ \{\ -font braces { \{ \{\ -prefix [ ] -font brackets [ ] -prefix \(bu \(co \(ct \(de \(dg \(di \(em \(en \(mu \(pl \(rg \(sc \(sq \(lq \(rq -font chars \(bu \(co \(ct \(de \(dg \(di \(em \(en \(mu \(pl \(rg \(sc \(sq \(lq \(rq -prefix \(14 \(12 \(34 \(+- -font chars \(14 \(12 \(34 \(+- -prefix \fR \fB \fI \fP \f0 \f1 \f2 \f3 -font chars \fR \fB \fI \fP \f0 \f1 \f2 \f3 -prefix .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 -font decimals . .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 -prefix \/ \/. \/? \/! \/, \/; \/: -font escapes \/ \/. \/? \/! \/, \/; \/: -prefix \, \,. \,? \,! \,, \,; \,: -font escapes \, \,. \,? \,! \,, \,; \,: -prefix \~ \0 \: \| \^ \& \% \! -font escapes \~ \0 \: \| \^ \& \% \! -prefix \b \c \C \d \D \e \f \f( \h \l \L \p \r \s \s+ \s- \S \u \v \w -font escapes \b \c \C \d \D \e \f \f( \h \l \L \p \r \s \s+ \s- \S \u \v \w -prefix ... -font ellipsis ... -prefix + - * / = == < > <= >= ? % -font math + - * / = == < > <= >= ? % -prefix | -font misc | -prefix ! : & -font operators ! : & -prefix ( ) -font parens ( ) -prefix # * $ -font reg_string # * $ -prefix \n \* \[ -font single_slash \n \* \[ -prefix \\n \\* \\$ -font tmac_escapes \\n \\* \\$ - -comment \# -comment \" diff --git a/contrib/groff/contrib/mom/examples/elvis_syntax.new b/contrib/groff/contrib/mom/examples/elvis_syntax.new deleted file mode 100644 index d31e0c2634f0..000000000000 --- a/contrib/groff/contrib/mom/examples/elvis_syntax.new +++ /dev/null @@ -1,106 +0,0 @@ -" Steve Kirkendall has thoughtfully reworked elvis's syntax -" highlighting so that it now supports nroff constructs like \fBword -" and \(emword, with \fB and \(em being highlighted while "word" is -" not. -" -" There are some other enhancements as well, making it possible -" to have any word beginning with punctuation (i.e. groff -" requests) highlighted. I've decided to take advantage of these -" improvements, which apply to elvis-2.2h onwards, and write a new -" simplified set of syntax highlighting rules for mom. Just plug -" this file at the end of /etc/elvis/elvis.syn to use them. -" -" If you're using an older version of elvis, stick with the -" highlighting rules in the files elvis_syntax. - -#Mom -language mom -extension .mom .tmac - -startword . -color startword normal - -inword _.' -color inword normal - -other initialpunct -mostly normal - -backslash none - -color args like fixed -color braces like char -color brackets like underlined -color chars like emphasized -color decimals normal -color ellipsis normal -color escapes like keyword -color math like cursor -color misc like string -color operators like string -color parens like comment -color reg_string like math -color tmac_escapes like keyword -color single_slash like char - -font args DA DE EN ES FR IT NL NO PT SV -font args DEFAULT CHAPTER NAMED LETTER -font args TYPESET TYPEWRITE -font args FINAL DRAFT -font args BLOCK QUAD -font args LEFT RIGHT CENTER CENTRE JUSTIFY TOP BOTTOM L R C J -font args OFF QUIT END EXIT DONE NO ALL -font args PAGE NUMBER STAR LINE -font args LETTER LEGAL EXECUTIVE LEDGER TABLOID QUARTO FOLIO -font args 10x14 A3 A4 A5 B4 B5 -font args SINGLESPACE -font args FACTOR -font args DASH BULLET ALPHA DIGIT USER ROMAN roman alpha -font args SUSPEND RESUME -font args RGB CYM CMYK GRAY GREY -font args COND CONDX EXT EXTX SUP SUPX CONDSUP CONDSUPX EXTSUP EXTSUPX -font args BOLDER BOLDERX SLANT SLANTX -font args UP DOWN BCK FWD BU BP FU FP FN_MARK EN_MARK -font args ROM IT BD BDI PREV -font args ST - -prefix { \{ \} \{\ } -font braces { \{ \} \{\ } -prefix [ ] -font brackets [ ] -prefix \(bu \(co \(ct \(de \(dg \(di \(em \(en \(mu \(pl \(rg \(sc \(sq \(lq \(rq -font chars \(bu \(co \(ct \(de \(dg \(di \(em \(en \(mu \(pl \(rg \(sc \(sq \(lq \(rq -prefix \(14 \(12 \(34 \(+- -font chars \(14 \(12 \(34 \(+- -prefix \fR \fB \fI \fP \f0 \f1 \f2 \f3 -font chars \fR \fB \fI \fP \f0 \f1 \f2 \f3 -prefix .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 -font decimals . .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 -prefix \/ \/. \/? \/! \/, \/; \/: -font escapes \/ \/. \/? \/! \/, \/; \/: -prefix \, \,. \,? \,! \,, \,; \,: -font escapes \, \,. \,? \,! \,, \,; \,: -prefix \~ \0 \: \| \^ \& \% \! -font escapes \~ \0 \: \| \^ \& \% \! -prefix \b \c \C \d \D \e \f \f( \h \l \L \p \r \s \s+ \s- \S \u \v \w -font escapes \b \c \C \d \D \e \f \f( \h \l \L \p \r \s \s+ \s- \S \u \v \w -prefix ... -font ellipsis ... -prefix + - * / = == < > <= >= ? % -font math + - * / = == < > <= >= ? % -prefix | -font misc | -prefix ! : & -font operators ! : & -prefix ( ) -font parens ( ) -prefix # * $ -font reg_string # * $ -prefix \n \* -font single_slash \n \* -prefix \\n \\* \\$ -font tmac_escapes \\n \\* \\$ - -character \]' -comment \# -comment \" diff --git a/contrib/groff/contrib/mom/examples/letter.mom b/contrib/groff/contrib/mom/examples/letter.mom deleted file mode 100644 index 8833916ef685..000000000000 --- a/contrib/groff/contrib/mom/examples/letter.mom +++ /dev/null @@ -1,34 +0,0 @@ -.AUTHOR "Yannick P. Guique" -.DOCTYPE LETTER -.PRINTSTYLE TYPESET -.START -.DATE -August 25, 2004 -.TO -GUILLAUME BARRIÈRES -Minidoux Corporation -5000 Pannes Drive -Redmond, Virginia -USA -.FROM -Y.P. GUIQUE -022 Umask Road -St-Sauveur-en-dehors-de-la-mappe, Québec -CANADA -.GREETING -Dear Mr. Barrières, -.PP -It has come to my attention that you have been lobbying the -US government to prohibit the use of open source software by -endeavouring to outlaw so-called "warranty free" applications. -.PP -I feel it is my duty to inform you that the success of your -operating system with its embedded web browser relies heavily -on open source programs and protocols, most notably TCP/IP. -.PP -Therefore, in the interests of your corporation's fiscal health, -I strongly advise that you withdraw support for any US -legislation that would cripple or render illegal open source -development. -.CLOSING -Sincerely, diff --git a/contrib/groff/contrib/mom/examples/penguin.ps b/contrib/groff/contrib/mom/examples/penguin.ps deleted file mode 100644 index 2728930936b7..000000000000 --- a/contrib/groff/contrib/mom/examples/penguin.ps +++ /dev/null @@ -1,461 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.06 by Peter Kirchgessner -%%Title: /home/peter/Pics/penguin_small2_bw.ps -%%CreationDate: Wed Apr 17 19:49:51 2002 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 0 0 81 96 -%%EndComments -%%BeginPreview: 90 107 1 107 -% aaaaaaaaabff555555555540 -% 5b6db6db5edbf6b6b6b6b680 -% aaaaaaaab7ff7ad555555540 -% b55555557eddeeaadadadac0 -% 56db6db6dbffdf56ab555540 -% aaaaaaaaffb755dab556ab40 -% 5b555b55f77ed7d556b56d40 -% aab6d56dbfffaaeb6ad5aa80 -% 6d555aabf6edd5daad56ab40 -% aadaab56ffdfaff555aab540 -% 5555b56bddfdff76dab55680 -% b6aaaaaffbbbbbed5556dac0 -% 55b6d6d5bff7f77aab6aaa80 -% aaaaaaaff77f6ffd6d555540 -% 5b555b576defeedaaaadb680 -% aab6d56dfbfd3bfdb56aaac0 -% 55555aab8eda4fb556ab5540 -% b6daab5743f40b7eaad56d80 -% 5555b56f037007fadaad5540 -% aaaaaaab11e0c6ed55b5aa80 -% 5b6d6db731b1a3feaaaab6c0 -% aaab55566963a3badb555540 -% 6d556aaf35d2e37d556daa80 -% aadaadb57959f3f6aaaab6c0 -% 5555aaab3403c37d6dab5540 -% 6daab5571428c3eeaab56a80 -% aab6d6db908007fd5556ad80 -% ad5555574000176edb6ad540 -% 55aaadab920003fd55555a80 -% b56db55b2000136eaaadab40 -% 56aaaaab400047fdb6d55540 -% aad556d7040112df555ab680 -% 6d5b6ab5d00447bb55ab5540 -% aaaaad57402915cf6d556a80 -% adb555ab9a9243a7aab6ad80 -% 5556dab6902485ead5aad540 -% b5aaab57854901d7daad5a80 -% 56b5556d929201bfab55ab40 -% aaab6d57004400fb756ab540 -% 6d6d55af0a1000efeaad5680 -% aaaaaaba0080005ef6d5aac0 -% adb5b6d60220003fdaaab540 -% 5556aabc0000003bfd5b5680 -% b5aab57c0000003f76d56ac0 -% 56b556e80000001beeaaad40 -% aaab6bf80000001f7f5b5580 -% 6d6d55b00000001dfbaab540 -% aaaaaff00000001bdf6d5680 -% 55b5b5b00000000ffbd5aac0 -% b6aaafe40000000f6ff55a80 -% aad6df7000000246fedaab40 -% 555ab6d000000003aff5b540 -% b6aaafe000000013edbaaa80 -% 556b7d8000000001b7f6d6c0 -% aaad5bc000000001fbbd5a80 -% 6db57f0000000000d77aaac0 -% aaaab58000000000edf6d540 -% 5556f7000000000056fead80 -% b6dab600000000006edb5540 -% aaaaee00000000007ffeb680 -% 5555ee000000000076bb5540 -% b6dabc00000000003f7f6a80 -% 5555d800000000003b7756c0 -% aaabfc00000000003f7eda80 -% 6db6b0000000000036f7aac0 -% aaabd800000000003ffeab40 -% ad57b800000000003d6fda80 -% 55b7d8000000000037fdaac0 -% b55eb800000000003edfab40 -% 56afb000000000003bfbb540 -% aaddb000000000003edf5680 -% 6d5bd8000000000035fdaac0 -% aaafe800000000003b5bb540 -% 55ba5000000000006fef5680 -% b6a83800000000005f736ac0 -% aaa00c00000000003dfdad40 -% 55680e00000000003bd65580 -% b6a107000000000077bc5a80 -% 55a013c0000000023ff82b40 -% a80401a0000000005db45540 -% 429021f0000000043ff02d40 -% 900000f80000000096c4aa80 -% a00080be000000082a902d80 -% 004204770000000244401540 -% a200003e8000001411001540 -% 4004105fc000000044444b40 -% 8800001b8000000a00800540 -% 5040411f4000001012000280 -% 80040007c000001440044080 -% 5080040d0000003100100040 -% 800040200000007400400400 -% 51080002000000e804008040 -% 80008440000003f210000080 -% 50000005000007d400080940 -% 0111000080001ef020808280 -% a00008894000ffd480001540 -% 02000000fa57bb680108aa80 -% a0222002bfffffe900012b40 -% 0a4001115ffdedd20824d540 -% d0888004bb6fbfb4008b5a80 -% ad251202bffdfbe921255580 -% b554a05576ab576a045aaa80 -% aaaa950aaaad5aaaa955b6c0 -% 56d56a556d6aaad48556aa80 -% b55b5555aaab6b5ab55aad40 -% 55aaaaaab5b555554aaad580 -% ad556d5b56aaad6b556b5a80 -%%EndPreview -%%BeginProlog -% Use own dictionary to avoid conflicts -5 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -0.000000 0.000000 translate -% Translate to begin of first scanline -0.000000 95.872000 translate -80.640000 -95.872000 scale -% Variable to keep one line of raster data -/scanline 90 1 mul string def -% Image geometry -90 107 8 -% Transformation matrix -[ 90 0 0 107 0 0 ] -{ currentfile scanline readhexstring pop } -image -72727272717171717171717172717171717171717171717172717171727271717171727273736f -675852524e4653535a676b73737272727272727272727272727272727272727272727272727272 -727272727272727272727272 -7172717271717171717171717271717171717171717171717271717171717172727272726d5d4a -4039393939373a3a3c3f4653637172727272727272727272727272727272727272727272727272 -727272727272727272727272 -7171717271717171717171717271717171717171717171717271717171717173747271644b3f3a -3a393a3a3a393b3b3b38393b3d4d64707272727272727272727272727272727272727272727272 -727272727272727272727272 -727272727171717171717171727171717172717171717171727171717171727372705b3b3d3b3a -3939393939393938393939383a3c3f546d71747272727272727272727272727272727272727272 -727272727272727272727272 -727271727171717171717171727171717171717171717171727171717171727173553e3d383a39 -393a383838383838393940564d3f38394668727272727272727272727272727272727272727272 -727272727272727272727272 -71717171717171717171717172717171717171717171717172717171717172715f3d38393b3b39 -3a393939393939393a3c5574807252403742627272727272727272727272727272727272727272 -727272727272727272727272 -727271727171717171717171727171717171717171717171727171717172726c403c373a3a3a3a -3a3a3a3a3a3a3a3a393e5e82958c72543a38416a72737272727272727272727272727272727272 -727272727272727272727272 -727171727171717171717171727171717171717171717171727171717271735a3d383b3a3a3a3a -3a3a3a3a3a3a3a3a383c5f87978e7c65493a3c5070737272727272727272727272727272727272 -727272727272727272727272 -7171717271717171717171717271717171717171717171717271717172736c4638373b3a3a3a3a -3a3a3a3a3a3a3a3a3a436384897d6d644f3a3b3e60727472727272727272727272727272727272 -727272727272727272727272 -727171727171717171717171727171717171717171717171727171717273603a3839393a3a3a3a -3a3a3a3a3a3a3a3b39425c6f68574745403b3c3848707472727272727272727272727272727272 -727272727272727272727272 -7271727271717171717171717271717171717171717171717271717172724d373938393a3a3a3a -3a3a3a3a3a3a3a393a3d494e3e3e3c3b393c3a393b617272727272727272727272727272727272 -727272727272727272727272 -71717171717171717171717171717171717171717171717172717171727241393839393c3a3a3a -3a3a3a3a3a3a3a393b3a3a3d3b3a3d393c3b393b3a4b7374717272727272727272727272727272 -727272727272727272727272 -7272727271717171717171717271717171717171717171717271717172703a3b3937393b393a3a -3a3a3a3a3a3a3a3a3a3b3a3a393d3a3b3b3b393a393e6d74727272727272727272727272727272 -727272727272727272727272 -7272727271717171717171717271717171717171717171717271717171633c3a3a38383d413c3a -3a3a3a3a3a3a3a3a3a3b3e4142393c3c3b3b3939393c6074707272727272727272727272727272 -727272727272727272727272 -7272727271717171717171717271717171717171717171717271717171623b373b3e40475d5a3f -3b3b3a3a393b3b3b373839486b6d3d393b3b3a38393b5c73717272727272727272727272727272 -727272727272727272727272 -7272727271717171717171717271717171717271717171717271717172623b373c3a3d3f425d65 -3f393a3a3d393b3e5b75795a3e6562393b3b3b39393d4f71727272727272727272727272727272 -727272727272727272727272 -7272727271717171717171717272717171717271717171717271717172623c3838538a9e7e4960 -4e3c3a3a3c3a57879ea9b0b68e445b463b3b3b3a3b3d4a72727272727272727272727272727272 -727272727272727272727272 -7272727271717171727171717272717171727171717271717271717172613c374d96b6cabb8e48 -463b3a3a3a5291abb6c0c7d1be7f3f473b3b3a38393a4672727272727272727272727272727272 -727272727272727272727272 -7272727271717171717271717271717171717171717171717271717172603c3770acd1e3dfcc84 -3a3b3a3a3d85c0e7f4f7f7f2d9a4593a3b3b393839393f6b727272727272727272727272727272 -727272727272727272727272 -7272727271717171717171717271717171717171717171717271717172603c3c9aebdbc5eefdda -45393a3a45b8f7fcda8386d1faec8b373b3b3a3938383e6b727272727272727272727272727272 -727272727272727272727272 -7272727271717171717171717271717171717171717172717271717172613946c8db4e7188eaf9 -60443c3e4dc7fbe953468a7fcdfdc7433b3b3a3839383c6a727272727272727272727272727272 -727272727272727272727272 -7272727271717171717171717271717171717171717171717271717172603a4bd59a387184a5fb -755363655bc9fb9c3d3a5c907ffbe7543b3b3a3939383c6a717272727272727272727272727272 -727272727272727272727272 -7171717171717171717171717171717171717171717171717171717171673b4ad5833e4a7f75f8 -6f484b575cb3f67b363c445b68f4ed553a3a3a3939393b6a717272727272727272727272727272 -727272727272727272727272 -7272727272717171717171717271717171717171717272717271717171714245cc953c3d5667ce -666e6f6c6282e97a3b3a3a3b5bf5ea58393a393a393c386a737272727272727272727272727272 -727272727272727272727272 -727272727171717171717171727171717171717171717171727171717171413eb7c4453b416fa6 -c3c9c6c2bcb1c19d3a3c3b3e8cfbdc4c3939393a39393969727272727272727272727272727272 -727272727272727272727272 -727272727171717171717171727171717171727171717171727171717171413a8df18e477da2af -cdcecbbfa6b2cfc289534273ebf9ac3f3939393939383b62727272727272727272727272727272 -727272727272727272727272 -72727272717171717171717172717171717172717171717172717171717142385bdae697a9c1cd -cfcecfd3d4d7dcd9d5c5a8c5e4dc633838393a39393a365b727272727272727272727272727272 -727272727272727272727272 -72727272717171717171717172717171717171717171717172717171717142363e99a4a8b9cacf -cecfd2d8dcdfe2dfdedad6cdc3ac693f39393939393a375b727272727272727272727272727272 -727272727272727272727272 -7272727271717171717271717271717171717171727171717271717171714137538fa4b4c2cbcf -cfd1d5dadee2e1dfdedededfdcdab5553a3a39393a3c3859727272727272727272727272727272 -727272727272727272727272 -7272727271717171717171717271717171717271717171717271717171714b43839facbdc8cfcf -d0d3d7dae2e2dfdedededed1b1c5c05e3c3b393a3c393c4c717272727272727272727272727272 -727272727272727272727272 -727272727171717171717171727271717171717171717171727171717172524c94a0b2c1cbcfcf -d1d5d9dee1dfdedededabea8aebbad4f3b3c3a393a3a3d426b7273727272727272727272727272 -727272727272727272727272 -72727272727171717271717172727171717171717172717172727171717254478ea5b9c3ced0d1 -d3d6dbe0dededddccfabaab7bbbaaa4b3c3b393a37393f3b597174727272727272727272727272 -727272727272727272727272 -727272727171717171727171727171717171717171717171727171717171503b5c84aec9d0d1d1 -d6d9dddcded9d1b0a0b1b8bbbab387403a3b6c7446333938477173727272727272727272727272 -727272727272727272727272 -7272727271717171717171717271727171717171717171717271717171714f3d457986a3c5d1d6 -d8d9d8d1bfa795a2b4b7bab7adac8642383863978e6f413c3c6973727272727272727272727272 -727272727272727272727272 -727272727171717171717171727171717171717171717271727172717272523b4390a58a8e9da8 -aba4a29d9ca5aeb3b2afabb7c4c2bb5d3b3645849b99663a3c4e72727272727272727272727272 -727272727272727272727272 -727272727171717171717171727171727171717171717271727171717273543c49adbfa29097b4 -c0b9b5b3b4b0afada5aabec7cfcac3763a3b3c5e999a8745393d65727272727272727272727272 -727272727272727272727272 -727272727271717171717171727271717172717171717171727172727171483856aac1bfa18e9e -b1b4b2afa9a3a0a4b3c1c1c5d3ded4ac413a3b4079895a38353948707472727272727272727272 -727272727272727272727272 -7272727271727171717171717272727171717171717171717272737272633f3c4ea8c5c1c0a790 -919698959193a7bac2c1c9e1f4fbfbde6c3b3c3a39423c3b3a393e617473727272727272727272 -727272727272727272727272 -7272727271717171717171717271727171717171717172717272717270453b394dc1d9c8c2c2bc -a79b9b9dabbac0c1c2cde3f8fdfdfdfabf453b3b3b3b3b3b3a393d4c7071727272727272727272 -727272727272727272727272 -727272727171717171717172727171717171717171717171727270715b3d3b398ff5e7cec3c3c1 -c3c1c2c2c3c2c2c8d4e4f5fdfdfdfdfdf9723f3b3b3b3b3b3b3a39435a74747272727272727272 -727272727272727272727272 -7272727271717171717171717271717171717171717171717271726750463658e0fbf7e4c6c2c3 -c3c2c3c2c2c4ceddedf7fdfdfdfdfcfdfccb4a3b3d383b3b3a3a3a3e4a6b727271727272727272 -727272727272727272727272 -72727272717171717171717172717271717171717171717172716d4b544340b1f7fcfdf7d5c2c2 -c2c2c2c2c6d5e7f5fcfdfdfdfdfdfdfcfbf7833d3d3b3b3b393b393a3b4e717272717272727272 -727272727272727272727272 -7272727271717171717271727271727171717171717171727371483a3a3673f4fdfcfbfceccfc5 -c2c1c2cde3f3fafdfdfdfcfdfdfdfdfcfdfccb40393a3b3b39393a393b3c607271727272727272 -727272727272727272727272 -727272727171717171727171727171717171717171717171705a3e3f3c45d0fcfdfdfcfdfcf5e6 -d9dce5f1fafcfcfcfdfdfcfdfdfdfdfdfdfdf66937393b3b393939393a3a486a72717272727272 -727272727272727272727272 -7272727271717171717171717271717171717171717171725f3e3a3c3985fbfcfdfcfdfdfdfdf9 -f1f8fcfdfdfcfcfcfcfdfdfdfdfdfdfdfdfdfd933b3a3b3b3a3a3a3a393a3d4a6b717272727272 -727272727272727272727272 -717171717171717171717171717171717171717172727267443b3b394cd2fafcfdfdfdfdfdfdfb -fafcfdfdfdfcfcfcfcfcfdfdfdfdfdfdfdfdfbc73b3b3a3a3a393a3a3a393c3e52727272727271 -727272717171717172717271 -727172727171717171717171727171717172727175736d423a3a383c7de7f9fefefdfdfdfdfdfc -fbfcfdfdfdfcfdfdfcfdfdfdfdfdfdfdfdfcf8e24d3c3b3b3a3a3a3a3b3b393a3b537173727272 -727272727272727272727272 -7272727271717171717171717271727171727271726e4d3b3b3a3646a0e2f8fdfefdfcfcfdfdfc -f8f8fcfdfdfdfdfdfdfdfcfdfdfdfcfbf4f0efeb653f3b3b3b3b3b3b3b3b3938393f5772727272 -727272727272727272727272 -727172727171717171717171727171717171727171533f3b3b3a364aa5cef0f9fbfdfdfcf9f5f1 -ecebf3f8fafbfbfafcfaf8f7f5f5efeae3dbdfe687473b3b3a3b3a393a3a3b393a393f5c727272 -727272727272727272727272 -7272727271717171717171717272717171717271623d3d3a3b3a3a5ba9b8d0e7edf5f9f9f5ede3 -e1e5e7f2fbf9fafaf7eee2dad3d0cececcc8c9d8c5513a3b3a373c393d3b3a3939383d3e637272 -727272727272727272727272 -727272727171717171717171727171717172726e4a3d383a3b3a456fadb5cbddebf8fbfcfdfced -e4f5fbfdfcfdfdfdfcf7ede3d5cecac8c7c6c6c7deb844393e644e3a393b3a3a3939383c4b6f72 -727272727272727272727272 -72727272717171717172727272727271717272603e3a3b3b393a4b7cbbd3ebf7fdfcfcfbfdfcee -f1fcfcfcfcfbfbfdfcfcfdfbf8f2e8ded3cbc7c6ceee993d34556f5f463c3d393b393a3a3e6272 -727272727272727272727272 -717171727171717172717171727171717173704b3b3d39473c3c5fb0dcf1fbfcfcfcfdfcfcfcf5 -f5fbfcfbfdfcfcfcfcfcfbfbfdfcfcfbf5e9d9cdc7d8ea683b3d3d58724b3b3d3b3a3a3a3c5173 -737272727272727272727272 -7272727271717171717271717271717171736e433e385e603e4090dff5fcfdfcfcfbfcfcfbfcfa -fbfbfcfcfcfbfcfdfcfcfcfcfdfcfcfcfbfcf6e6d3c9e3c3403a3d394d7342353e3a3b3a39416b -727372727272727272727272 -727171727171717171717171727171717172673d374a6b3b3d4cd9f8fdfcfcfcfbfdfbfcfbfcfc -fbfcfcfbfcfcfcfcfdfcfcfcfbfcfbfcfcfdfdfaedd4ceeb6c3c3d3d3e51663a3e383b3a393c56 -717472727272727272727272 -727271727171717171717171727171717173573c3c604d3b3c8ffbfdfbfcfdfcfcfcfcfcfcfbfb -fdfbfdfcfdfbfcfcfcfbfcfcfdfbfdfcfcfcfcfdfcedd3dac43d384e5b5064583a3c3b3a363c40 -6f7272727272727272727272 -727271727171717171717171727171717170483f476f373851e9fdfdfdfbfcfcfcfcfcfcfbfcfd -fcfcfcfbfcfcfbfbfcfcfdfcfdfcfcfcfcfcfcfdfcfdf1e6f1583f5e7770546d42393b3a3b3a3d -637272727272727272727272 -7272727271717172717171717271727372643f3c6a52373da0fbfcfcfcfcfbfcfcfcfdfcfcfbfb -fcfbfcfbfbfcfdfcfcfcfcfcfcfcfcfbfcfcfdfcfdfbfcfcfd9545657c735259613d3c393a393b -4e7172727272727272727272 -7272727271717171717171717271727471513a456a393a5ae6fafcfbfcfbfcfbfcfcfcfcfbf8fa -fbfcfcfcfcfdfbfcfdfcfcfdfcfdfcfbfdfcfbfcfcfcfcfcfdc64f5e6456434078433b3d393b3d -436c72727272727272727272 -727272727171727171717171727272726e47385c53333e98fbfbfcfcfcfcfcfcfcfcfcfcf9eafb -fbfbfbfbfcfcfbfdfcfcfbfcfcfcfcfcfbfdfcfcfdfdfcfdfce7473d3f3b3b375e57393d383939 -3b6171727272727272727272 -72727272717171717171717172717272633c3b703f3451dafcfcfbfbfcfcfbfcfcfdfdfbf4e8fa -fcfdfcfcfcfbfcfbfcfcfcfcfbfdfcfcfcfcfcfcfcfbfbfcfcfa623c3a3a3b374b66373d393939 -3b5072727272727272727272 -727272727171717171717171727272714e3b52613b388af8fcfbfcfbfcfcfcfcfcfdfcfcf2edfc -fdfcfcfcfcfdfcfbfcfcfcfcfcfdfcfdfdfcfcfcfcfdfcfbfcfc84383b3b393a3f774138383938 -3a416f727272727272727272 -727271727171717171717171727272663c3c68453b40c5fbfbfbfdfdfcfcfdfbfcfcfcfcededfb -fcfcfcfcfbfcfcfcfcfbfbfcfcfcfcfcfafcfcfcfcfbfcfdfcfda23c3b3b3b3b3d7437383b3a39 -3b3f68727272727272727272 -7272727271717171717171717174714b3a3a6b373b57eefcfcfcfcfbfcfcfbfcfcfbfdfbe9e9fb -fbfcfcfcfbfcfcfbfbfcfcfbfbfcfbfcfcfcfcfcfbfcfcfcfdfcaf3b3b3b3c3a406f37373a3a39 -393d5f727272727272727272 -7171717272717171727171717271623e3d4a60373b82fbfcfcfdfbfdfcfcfcfcfbfcfcfbe6eafb -fcfdfcfcfcfcfcfbfdfcfcfcfdfcfcfcfcfdfcfcfcfbfcfcfcfdbd3a3b3b3a3843633836393a38 -3a3c54727272727272727272 -727272727272717171717272736d463a37535c3839aafcfcfcfdfdfcfcfcfbfcfdfcfbfbe6eaf9 -fbfbfcfbfcfbfcfcfbfdfcfcfbfcfcfcfcfdfcfcfcfcfbfdfcfcce3c3b3b393c4e533937383939 -383c4f727272727272727272 -71717272717171717171717371593d3b3952603947cdfcfbfcfcfcfcfcfdfdfcfcfcfdfae2e9fa -fbfbfcfdfbfcfcfcfcfcfcfcfcfcfcfbfbfcfbfdfcfcfdfafcfcd4423b3b3b3a5a4e393a39383a -3a3940727272727272727272 -7272727271717171717271726c41393c3656683b47d6fdfbfcfcfcfcfcfcfbfcfdfcfcfae1e9fb -fbfcfdfcfcfcfbfcfcfcfcfbfcfcfbfcfcfcfbfbfdfcfbfcfcfdda413b3b3c3b6644393a3a3938 -3b3a3f727272727272727272 -727271727171717171717171553c3b3b405f6d394ce1fcfcfcfcfcfcfbfdfcfcfcfcfcf9e1ecfb -fcfcfcfcfcfbfbfcfdfcfcfdfbfcfcfcfcfbfcfbfbfdfcfdfcfcdd423b3b3b39643f393a393939 -3a3a3e727272727272727272 -7272727271727171717171724f3e363d4f767e3b5be9fcfdfcfdfbfbfbfcfcfbfafcfcf8e2eefb -fbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfdfcfbfcfdfcfcfcfbfdde433b3b3b455f3a3b3b3a3a39 -39393e727272727272727272 -72727272717171717171716e46393938466b863e69edfcfdfcfcfcfcfbfcfcfcfcfcfcf7e2eefc -fbfcfcfdfbfdfcfbfdfcfdfdfdfcfcfcfcfdfbfcfcfbfcfcfbfddc443b3b385a463b3b3b3a3839 -393940727272727272727272 -72727272717171727171716f413a3a3a3945724869effcfcfcfcfbfcfcfbfcfcfcfcfbf8e2f1fc -fcfcfcfbfcfcfcfcfcfcfcfcfcfcfcfbfcfcfcfcfcfcfbfcfdfccc3f383a41683b3d3d3a3b3a3a -3a3b42727272727272727272 -72727272727171717171716e443938393c3c49626eeefcfbfcfcfcfcfcfcfcfcfcfcfcf8e2f1fc -fbfcfdfcfcfdfdfcfcfcfcfcfbfcfbfcfcfcfcfcfcfcfcfcfcfcb83b3f5a685d455b6054463f3a -3c3a51727272727272727272 -727272727271717172717171524a728f8d5e424d80e3fbfcfcfbfcfcfdfcfbfcfcfcfcf7e1f2fb -fcfcfcfcfcfcfcfbfcfdfbfcfcfcfcfcfcfcfcfcfcfdfcfcfcfc9c405b503d3b3c3c455368755c -3d3a5a727272727272727272 -72727172717171727271727174a3c9d4d6c87b3b50b0f9fcfcfdfcfcfcfbfdfcfcfcfcf8e2f3fb -fcfcfdfcfcfcfcfcfcfcfbfbfbfcfbfcfbfcfcfcfcfcfbf9fbf66956403b3a3a39393b3a3a608d -654567717273727272727272 -7272727271717172717371739bc1d1d4d4d4cc7f3f55a9f5fbfbfcfbfdfbfbfcfbfbfcf8e1f3fc -fbfcfcfcfbfcfbfcfcfdfdfcfcfcfcfcfcfcfcfcfbf6d5d3d3d29c59393a393b3b3b3b3a3c5d76 -61486b737272727272727272 -727272727171727171737288b1c7d1d4d4d5d4cc803f4ea1f0fbfcfcfcfbfcfcfcfdfcf6e3f4fc -fdfbfbfcfcfcfcfcfcfcfcfcfdfbfcfcfcfbfcfcfcdccfdbdddccd5b3e3a393b3b3b3b3a3e655e -519c89727373727272727272 -7171717272727171717276a3b8c8d2d4d5d4d5d5c66d3a4892e9fcfbfcfdfcfbfbfbfcf8e1effb -fcfbfcfcfcfcfbfcfcfbfcfbfcfcfcfcfbfcfcfcfcd5c7d4d7dabb50383c393b3b3b3b3a414f40 -76cfda8f7374727272727272 -7172717372727271707e9db3c0cdd4d4d5d4d4d5d4b6543b4673d6fbfbfcfcfdfdfcfbfaeaedfc -fbfdfcfcfcfdfdfcfcfcfcfcfbfbfcfbfcfdfcfcfcd7c5d3d4d1a9513a393a3b3b3b3b3a3a3653 -bad5d7b87371727272727272 -7170778c9baaa8a5a3a7b4bdc9d1d4d4d4d4d4d4d5d2a04435405bc1f7fcfcfdfbfcfcfdfbf9fc -fdfcfbfcfcfcfbfcfcfcfcfbfcfcfcfdfcfcfbfbf8d8c4d3d2c9a85c3a3b383b3b3b3b3a3a4196 -cfd1d4c47370727272727272 -73779fb2bcc1bfbbbbbdc4cad1d4d4d4d5d4d4d4d5d4cb7c3d373c469ef3fbfcfcfcfdfcfcfcfc -fcfbfcfcfbfcfcfcfcfcfcfcfcfcfcfcfbfcfbe8d3c7c4d2cec3ae78463c36383836373b477dbf -cccfd1c07671727272727272 -738ab0bec9cdccc9c7ccd1d2d4d4d4d4d4d4d4d4d4d5d5b758383b3a4387e5fdfcfcfcfbfcfcfc -fdfdfbfcfcfcfcfcfbfcfcfdfcfcfbfbfdfceecdc7c3c2cecbc1ae997146403e393d426189b2c3 -cccfd2c27572727272727272 -7193b7c7ced1d2d3d2d3d4d4d4d4d4d4d5d4d4d4d4d3d4cf953d383a353a68d0fbfbfbfbfdfcfc -fbfbfbfdfcfdfcfbfcfcfbfcfcfcfdfcfbfde3c7c8c2bfc9cac4b5a69c8e7d77767e929eacc0ca -d0d3d4d07f72727272727272 -729eb8c8d0d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d5d3d3d5c065383b38343f57bffbfbfcfcfbfc -fcfcfcfcfbfbfcfdfcfcfcfcfbfbfbfcfcfbdfc9c8bdb9c8cac6bbb0a8a5a1a0a1a3a7b1bfccd1 -d4d4d4d3af77717372727272 -7192b7c6d0d4d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d3d4d4a64639383c3a3852c7fcfcfdfdfd -fcfcfcfcfcfcfdfdfcfcfdfcfdfcfbfcfcfbe0c8c8b8b4c6cacac1b9b5b1b0afafb2b7c0cbd4d4 -d4d5d4d2cf9c727272727272 -728cb5c3ced4d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d4c97d3b363a3737396ef0fcfcfcfc -fdfcfcfcfbfcfcfcfcfcfcfcfdfcfcfbfcfde7cbc9b3aebfc9cbc8c2bcbbb9b9b9bcc3c9d1d5d5 -d5d5d5d3d1c88f7272727272 -718bb2c0cdd3d4d4d4d4d4d5d5d5d4d4d5d4d4d4d5d4d4d4d4d5b6573a3939393742d8fcfcfcfc -fcfbfcfbfcfcfcfdfcfcfcfcfbfbfcfcfdfbeed0c8adaabcc9d0cecbc5c3c2c1c3c5c8ced2d5d5 -d5d5d5d5d4d1c29071727372 -727fafbdccd3d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d4d4ce974038393b393fd1fcfcfcfb -fcfbfcfdfcfcfbfcfcfcfcfcfbfcfcfbfcfcf3d3b588aabdc9d0d2d1cdcbc9c8caccced1d4d5d5 -d5d5d5d5d4d3d0cb99767372 -727aadbccbd3d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d5d3d5c57a3a3a383a59ecfdfcfcfc -fbfcfcfcfcfcfcfbfcfbfcfcfbfcfcfcfbfcf2c46785aabdc9d1d3d3d2d2d0d1d1d2d2d3d4d5d5 -d5d5d5d5d5d5d4d4d4b88872 -727bacbacbd3d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d5d4d3d5b15441467bd7fcfcfcfbfc -fcfdfdfcfcfcfbfcfcfcfdfdfcfcfcfcfbfccd5d4484abbecad1d2d4d4d5d4d5d4d4d4d4d5d5d5 -d5d5d5d5d5d4d5d4d4d5cea5 -727caebac9d3d4d4d4d4d5d5d5d5d4d4d4d4d4d4d4d4d4d4d5d5d3d3ce99a7dcf8fcfcfcfcfcfc -fbfbfcfcfbfcfcfdfcfcfcfcfbfcfcfcf8c2523a4789aabecad1d3d4d5d5d5d5d5d5d5d5d5d5d5 -d5d5d5d5d5d5d5d5d5d5d2c6 -7084aebacbd2d3d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d3d1d1bfa4f4fafbfbfcfcfbfc -fcfcfbfbfcfcfcfcfcfcfcfcfcfbfbf6a44538364e8aaabecbd2d4d4d4d4d4d4d4d4d4d4d4d4d4 -d4d4d4d4d4d4d5d5d4d3cec1 -718eacbbcdd3d3d4d4d4d5d4d5d4d4d4d5d4d4d5d4d4d5d4d5d4d4d3cfceadbdfbfcfbfcfcfcfc -fbfdfdfcfbfdfbfbfcfcfbfbfcfce87f42353834578aa9c0cbd2d5d5d5d5d5d5d5d5d5d5d5d5d5 -d5d5d5d5d5d5d5d4d0c9c19f -739daec0d0d4d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d5d4d4d4cfd0bc95d1fbfbfbfcfcfc -fcfcfcfcfcfcfbfcfcfcfcfcefa84c3b383c39385e88a7c1ccd2d4d5d5d5d5d5d5d5d5d5d5d5d5 -d5d5d5d5d4d4d4d1c6bca676 -81a6b6cbd2d3d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d5d4d4d4cfcabf9f80cbfafbfcfcfc -fbfcfcfcfcfbfcfcfcfcf0b45b3c3a3b3a3738396488a6bfccd3d4d5d5d5d5d5d5d5d5d5d5d5d5 -d4d4d4d4d3d1ccc1b5947871 -94aebfcdd2d3d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d5d5d4d4d4d0c6bda6835a8ad1eff7fb -fcfbfcfcfbfaf3e7c5935a3f373a3b3b3b3b3b3d6b8ba7becbd2d5d5d5d5d5d5d5d5d5d5d5d4d4 -d5d4d4cec7c0b5a280727373 -a4afbdc8d1d2d2d3d4d3d4d4d5d4d4d4d4d4d4d4d4d4d4d4d5d4d4d4d1c8bca98d693b3d5c7e93 -a7aea0988f7c5e4b3d3b3a38383b3b3b3b3b3a43708ea7bdcad2d5d5d5d5d5d5d5d5d5d5d4d2d1 -d2d1c8bbb09a7f7372727272 -a3abb7bfc8cbcdcecfd0d2d4d3d4d4d4d4d4d4d4d4d4d4d5d5d4d5d4d0c8bca78f75473839383d -3d3a39373836353a383b37373b3a3a393a3a38477590a6bac9d2d4d5d5d5d4d4d4d5d4d4d0ccca -c6bdb1947971727272737272 -9aa5aaafb7bcbfc0c3c5c6cacccfd0d1d2d3d3d4d4d4d4d5d5d4d4d3cec3b6a28b7b553939393a -393939393939393939393939393a393a3a393947768fa3b5c3cfd4d4d4d4d4d4d2d2d1cbc5bfbb -b19b80737172727272727272 -7a91989da0a2a7abafb2b6b7bcc0c4c6c9cdd0d2d4d4d4d4d4d4d4d1c8bba9988a7c593a3a3a3a -3a393a3a3a3a3a3a3a3a3a3a3a3938393a3a3a4a768a9daebdc9d0d2d3d3d2d2d0cdc7bfb8b2a6 -8a7371717171727272727272 -7172757a838c91979c9fa4a4a6a9aeb1b6bac1c7cdcfd1d2d1d1d1cbbfb09e8f857958383a3839 -3b3b3b3b3c3b3b3c3b3b3b3b3b3a3837383a394c738596a5b5bfc9ced0d1d0cdc7bfbbafa49a7b -727172727272727272727272 -727273727272747c858b90949496999b9fa4acb3b9bec3c8cbcac4bbafa393867d734e3c404141 -4b555858585858585858585857554d454543404d7082909daab6c0c5c7c8c6beb8b2a89b8a7571 -727272727272727272727272 -7372727272727171727274797d8185898d90959ba2a6abb0b6b6b0a89c92867e776547656f7372 -707172727272727272727272727174736f6f66656c7e8a959fa6aeb3b4b4b1aaa49d9382727272 -727272727272727272727272 -727271717271717171727271717273767b7d82898e9195989b9b98928a837e7972616470727172 -72727171717171717172727272727272727171706d76828e979b9da0a1a19f9b968d7c73727271 -717272727272727272727272 -72727272717171717171717172717170717172767d81868788878683807c776f6e727271717171 -7171717171717171717272727272727272727271706f79838c9192959595938d84787171717272 -727272727272727272727272 -7272727271717171717171717271717171737372727375767a7c7d7b79746e6d72737271717171 -7171717171717171717272727272727272727271726e6f737c8285888786837974727172717272 -727272727272727272727272 -7272727271717171717171717271717171727272727272707273706f6f71707272727271717171 -71717271717171717172727272727272727272727272716e6f6f72757372727172717172727272 -727272727272727272727272 -showpage -%%Trailer -end -%%EOF diff --git a/contrib/groff/contrib/mom/examples/sample_docs.mom b/contrib/groff/contrib/mom/examples/sample_docs.mom deleted file mode 100644 index 592c75e170ff..000000000000 --- a/contrib/groff/contrib/mom/examples/sample_docs.mom +++ /dev/null @@ -1,574 +0,0 @@ -\# This file contains three greeked documents collated together: -\# -\# i) two pages of a novelist's outline -\# ii) two pages of a chapter using COPYSTYLE DRAFT -\# iii) three pages of an academic paper, set in two columns -\# -\# Mom's defaults are used throughout, except for iii), which -\# demonstrates some of the ways you can design your own documents. -\# -\# Since the text throughout is greeked, and groff doesn't know how -\# to hyphenate all that pseudo-latinate nonsense, I've inserted -\# discretionary hyphens (\%) into a large number of the the words. -\# Normally, this isn't necessary. -\# -\# The PRINTSTYLE is TYPESET. If you'd like to see what mom does -\# with the documents when the PRINTSTYLE is TYPEWRITE, change -\# PRINTSTYLE TYPESET, below, to PRINTSTYLE TYPEWRITE. Also, in the -\# third example, comment out PARA_INDENT and QUOTE_INDENT (lines -\# 332 and 333). -\# -\# =================================================================== -\# -\# First, a sample "NAMED" document--in this case, an outline. -\# A novelist wouldn't normally write an outline with numbered heads, -\# subheads and paraheads. I've turned the feature on merely to -\# demonstrate it. -\# -\# Reference macros -\# -.TITLE "Lake Attica's Shores" -.SUBTITLE "A Romance Novel" -.AUTHOR "Rosemary Winspeare" -.DRAFT 1 \" Ignored because COPYSTYLE is FINAL -.REVISION 2 \" Ignored because COPYSTYLE is FINAL -.COPYRIGHT "2004 Alma Podborski -\# -\# Reference macros for the document cover -\# -.DOC_COVERTITLE "Sample mom Documents" -.MISC "Three types of mom documents" "assembled and collated by mom's author" -\# -\# Docstyle macros -\# -.DOCTYPE NAMED "Outline" -.PRINTSTYLE TYPESET \" Or TYPEWRITE to preview "typewritten, double-spaced" -\# -.DOC_COVER COVERTITLE MISC -.COVER TITLE AUTHOR DOCTYPE COPYRIGHT -\# -\# Additional setup macros -\# -.NUMBER_PARAHEADS -\# -.START -.PP -.PARAHEAD "A note on the setting" -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. Stet clita kasd gubergren, no sea takimata sanctus est. -At vero eos et accusam et justo duo do\%lo\%re et ea rebum. -.PP -Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua. -.PP -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At -vero, eos et accusam et justo duo do\%lo\%res et ea rebum. Consetetur -sadipscing elitr, sed diam nonumy. -.LINEBREAK -.PP -.PARAHEAD "About historical personnages" -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est. Tempor invidunt ut -labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. Consetetur sadipscing elitr, sed diam nonumy -eirmod tempor invidunt ut labore et do\%lo\%re magna. Tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.NUMBER_HEADS -.NUMBER_SUBHEADS -.HEAD "Part One" -.SUBHEAD "Chapter 1" -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est. Lorem ipsum dolor sit -amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor -invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -Stet clita kasd gubergren, no sea takimata sanctus est. -.SUBHEAD "Chapter 2" -.PP -Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua. At vero eos et accusam et justo duo do\%lo\%res et ea rebum. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt. Ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua at vero. -.SUBHEAD "Chapter 3" -.PP -Eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd -gubergren, no sea takimata sanctus est lorem ipsum dolor sit amet. -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et -ea rebum. -.HEAD "Part Two" -.SUBHEAD "Chapter 4" -.PP -Stet clita kasd gubergren, no sea takimata sanctus est -lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est lorem ipsum dolor sit amet. -.PP -Nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et -ea rebum. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam et justo -duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est lorem ipsum dolor sit amet. Consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt. -.SUBHEAD "Chapter 5" -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed -diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, -no sea takimata sanctus est lorem ipsum dolor sit amet. -.PP -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero -eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd -gubergren, no sea takimata sanctus. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren. Sea takimata sanctus est lorem ipsum dolor -sit amet. Accusam et justo duo do\%lo\%res et ea rebum -.SPREAD -.RIGHT -\*[BD]\&...end of sample outline\c -.EL -.COLLATE -\# -\# The .EL after the line "...end of sample outline" ensures that -\# mom doesn't spring the page trap, which would deposit a header at -\# the top of the next page. COLLATE doesn't print a page header -\# on the first page of a collated document, but if the page trap -\# has already deposited one there, COLLATE can't undo it. -\# -\# Normally, this isn't necessary; here we require it because the -\# line falls right at the bottom of the page, and would therefore -\# normally spring the page trap. Sorry for the fussiness, but at -\# least now you know what to do if you ever encounter the problem -\# of a page header printing at the top of a collated document. -\# -\# Please notice, too, the use of "\&" before "..." Whenever an -\# input line begins with either a period, an apostrophe or a space, -\# you must precede it with \&, otherwise the line will disappear, -\# even when, as here, there's an inline escape that starts the -\# line. -\# -\# ===================================================================== -\# -\# Next, two pages of a chapter, set in DRAFT style, showing -\# the use of the EPIGRAPH BLOCK macro and the QUOTE macro. -\# -\# You'll notice that the starting page number of this "draft" is 1 (in -\# roman numerals). COPYSTYLE DRAFT always numbers the first page of a -\# document 1. -\# -\# Reference macros -\# -.TITLE "Lake Attica's Shores" -.SUBTITLE "A Romance Novel" -.AUTHOR "Rosemary Winspeare" -.CHAPTER 1 -.CHAPTER_TITLE "The Bonny Blue Yonder" -.DRAFT 1 -.REVISION 2 -.MISC "Draft 1, 2nd revision" -\# -\# Docstyle macros -\# -.DOCTYPE CHAPTER -.COPYSTYLE DRAFT -\# -\# Additional style macros -\# -.EPIGRAPH_FONT I \" Epigraphs are normally set in roman -.DRAFT_WITH_PAGENUMBER \" Draft/revision info usually goes in the header -.COVER_MISC_QUAD RIGHT \" Change default position of the cover "misc" line -\# -.COVER CHAPTER+TITLE MISC -\# -.START -.EPIGRAPH BLOCK -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. -.RIGHT -\*[ROM]\(emJoseph E. Blough -.EPIGRAPH OFF -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et -ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est. -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua. At vero eos et accusam et justo duo do\%lo\%res et ea rebum. -Stet clita kasd gubergren, no sea takimata sanctus est. At vero eos -et accusam et justo duo do\%lo\%res et ea rebum. -.PP -Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt. -.PP -"Consetetur sadipscing elitr," dixit ea. -.PP -"Sed diam nonumy eirmod tempor invidunt ut labore," dixit eum. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. Consetetur sadipscing elitr, sed diam nonumy -eirmod tempor invidunt ut labore et do\%lo\%re magna. -.PP -"Lorem ipsum dolor sit amet," dixit ea. -.PP -"At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est," dixit eum. "Sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua." -.PP -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor: -.QUOTE -Invidunt ut labore et do\%lo\%re -Magna ali\%quyam erat sed diam -Voluptua stet clita kasd gubergren -No sea takimata sanctus est. -.QUOTE OFF -.PP -Justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, no -sea takimata sanctus est. Lorem ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.PP -"Stet clita kasd gubergren," dixit ea. -.PP -"No sea takimata sanctus est," dixit eum. -.PP -Nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. Aliquyam erat -sed diam voluptua. At vero eos et accusam et justo, duo do\%lo\%res et -ea rebum. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt. Ut labore et do\%lo\%re magna ali\%quyam -erat, sed diam voluptua at vero. Stet clita kasd gubergren, no sea -takimata sanctus est. Consetetur sadipscing elitr, sed diam nonumy -eirmod tempor invidunt ut labore et do\%lo\%re magna. -.PP -Invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. Lorem ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero eos et -accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, -no sea takimata sanctus est. At vero eos et accusam et justo duo -do\%lo\%res et ea rebum. -.RIGHT -\*[BD]\&...end of sample chapter -.COLLATE -\# -\# ===================================================================== -\# -\# Finally, a sample academic article, set in two columns with a -\# 1.5-pica gutter between them. This example also uses QUOTES, -\# BLOCKQUOTES and FOOTNOTES. In addition, it's set RECTO_VERSO, -\# with differing left and right margins that alternate from page to -\# page. (The header also flips from right to left, which you can -\# see on the 2nd and 3rd pages). -\# -\# In order to accomodate the narrow measure of the columns, there's also -\# a demonstration of things you can change with both the typesetting -\# macros and the document processing "control" macros. -\# -\# Reference macros -\# -.TITLE "CONTROL EQUALS CHAOS" -.SUBTITLE "\*[ALD1]The Psychological and Auditory \ -Impact of Serial vs. Aleatoric Music\*[RLD1]" -.AUTHOR "Joe Chang" "and" "Brad Hegel Connors" -.COPYRIGHT "2004 J. Chang, B.H. Connors -.MISC "Submitted June 3, 2004" "\*[IT]Piano Quarterly\*[PREV]" -\# -\# Docstyle macros -\# -.DOCTYPE DEFAULT -.COPYSTYLE FINAL -\# -\# Additional style macros -- general type parameters -\# -.L_MARGIN 6P -.R_MARGIN 4P+6p -.PT_SIZE 10 -.AUTOLEAD 1.5 -\# -\# Additional style macros -- change mom's default behaviour -\# -.RECTO_VERSO -.PAGENUM 1 -.HEADER_LEFT "Chang, Connors" \" Because we have two authors -.COLUMNS 2 1P+6p -.SUBTITLE_SIZE +1.5 -.AUTHOR_SIZE +.5 -.DOCHEADER_LEAD +2p -.HEADER_SIZE +1 -.PARA_INDENT 1P \" Comment this out if previewing PRINTSTYLE TYPEWRITE -.QUOTE_INDENT 2 \" Comment this out if previewing PRINTSTYLE TYPEWRITE -.SUBHEAD_SIZE +0 -.BLOCKQUOTE_FAMILY H -.BLOCKQUOTE_SIZE -2 -.NUMBER_HEADS OFF \" Because we turned them on in the first example -.NUMBER_SUBHEADS OFF \" Ibid -\# -.COVER TITLE AUTHOR COPYRIGHT MISC -\# -.START -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr. Sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. Ali\%quyam -erat, sed diam voluptua. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren no sea takimata. Sanctus est, lorem ipsum dolor sit -amet. Consetetur sadipscing elitr, sed diam nonumy. Eirmod tempor -invidunt ut labore et do\%lo\%re magna ali\%quyam erat. Sed diam voluptua -at vero eos et accusam et justo. -\# -.BLOCKQUOTE -Stet clita kasd gubergren, no sea takimata sanctus est lorem. -Ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy -eirmod tempor. Invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua at vero. Eos et accusam et justo duo do\%lo\%res et -ea rebum stet clita.\c -.FOOTNOTE \" Note the use of \c, above, to keep the word and footnote marker together. -Clita ipsum dolor sit amet, consetetur sadipscing elitr. -.FOOTNOTE OFF -.BLOCKQUOTE OFF -\# -.PP -Duo do\%lo\%res et ea rebum, stet clita kasd gubergren. No sea takimata -sanctus est lorem ipsum dolor sit amet, consetetur sadipscing elitr. -Sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam. Erat sed diam voluptua at. Vero eos et accusam et justo -duo do\%lo\%res et ea rebum stet. Clita kasd gubergren no sea takimata -sanctus est. -.PP -Nonumy eirmod tempor invidunt, ut labore et do\%lo\%re magna ali\%quyam -erat? At vero eos et accusam et justo duo do\%lo\%res et ea. Rebum stet -clita kasd gubergren no sea takimata sanctus. Est lorem ipsum dolor -sit amet. Sadipscing\c -.FOOTNOTE -Sadipscing diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. -.FOOTNOTE OFF - elitr sed diam nonumy eirmod tempor invidunt. Ut labore et do\%lo\%re -magna ali\%quyam erat, sed diam voluptua. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren no sea. -\# -.SUBHEAD "Schoenberg\(em" "The Origins of Serial Pitch Organization" -\# -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et ea -rebum. Stet clita kasd gubergren, no sea takimata sanctus est lorem. -Ipsum dolor sit amet consetetur sadipscing. Elitr, sed diam nonumy, -eirmod tempor invidunt ut labore et do\%lo\%re magna. Ali\%quyam erat sed -diam voluptua, at vero eos. Et accusam et justo duo do\%lo\%res et ea -rebum stet clita kasd gubergren lorem ipsum. Dolor sit amet -consetetur, sadipscing elitr, sed diam. Nonumy eirmod tempor invidunt -ut labore et do\%lo\%re. Magna ali\%quyam erat sed diam voluptua at vero. -Eos et accusam et justo duo do\%lo\%res et ea rebum stet clita kasd. -Gubergren no sea takimata sanctus est. -.PP -Amet consetetur sadipscing elitr sed diam nonumy eirmod. Tempor -invidunt ut labore. Et dolor\%e magna ali\%quyam erat, sed diam voluptua, -at vero. Eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren. -.PP -No sea takimata\c -.FOOTNOTE -Takimata sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.FOOTNOTE OFF - sanctus est lorem. Ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero eos et -accusam et justo duo do\%lo\%res et ea rebum amet. Consetetur sadipscing -elitr sed diam nonumy eirmod tempor invidunt ut labore, et do\%lo\%re -magna ali\%quyam erat. Sed diam voluptua, at vero, eos et accusam et -justo duo do\%lo\%res et ea rebum. -\# -.SUBHEAD "Messiaen to Stockhausen\(em" "The Quest for Absolute Control" -\# -.PP -Vero eos et accusam et justo duo do\%lo\%res et ea rebum amet: -.QUOTE -Eirmod tempor invidunt -Ut labore et do\%lo\%re magna ali\%quyam erat -Sed diam voluptua -At vero eos et accusam et justo duo do\%lo\%res. -.QUOTE OFF -Lorem ipsum dolor sit amet, consetetur sadipscing elitr -sed diam. Nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. -Aliquyam erat, sed diam voluptua at vero eos et accusam. Et -justo duo do\%lo\%res et ea rebum stet. -.PP -Elitr sed diam nonumy eirmod tempor. Invidunt ut labore et do\%lo\%re -magna ali\%quyam erat sed. Diam voluptua at vero eos et accusam et -justo duo do\%lo\%res et ea rebum. -\# -.BLOCKQUOTE -Sanctus est lorem ipsum dolor sit amet, consetetur sadipscing. Elitr, -sed diam nonumy eirmod tempor, invidunt ut labore et do\%lo\%re magna -ali\%quyam. Erat sed diam voluptua, at vero eos et accusam et justo -rebum amet. Consetetur sadipsc\%ing elitr sed diam nonumy eirmod -sed diam nonumy, eirmod tempor. Invidunt tempor invidunt ut labore.\c -.FOOTNOTE -Labore diam nonumy eirmod tempor, invidunt ut labore et do\%lo\%re -magna ali\%quyam. Erat sed diam voluptua, at vero eos et accusam et -justo. -.FOOTNOTE OFF - Et do\%lo\%re et magna ali\%quyam erat, sed diam voluptua, at vero. -Eos et accusam et justo duo. -.BLOCKQUOTE OFF -\# -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr. Sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. -.PP -Nonumy eirmod tempor invidunt, ut labore et do\%lo\%re magna ali\%quyam -erat? At vero eos et accusam et justo duo do\%lo\%res et ea. Rebum stet -clita kasd gubergren no sea takimata sanctus. Est lorem ipsum dolor -sit amet. Sadipscing elitr sed diam nonumy eirmod tempor invidunt. -Ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. -Stet clita kasd gubergren no sea. Ali\%quyam erat, sed diam voluptua. -\# -.SUBHEAD "John Cage\(em" "Leaving It All to Chance" -\# -.PP -Sit amet, consetetur sadipscing elitr, sed diam nonumy. Eirmod tempor -invidunt ut labore et do\%lo\%re magna. Ali\%quyam erat, sed diam -voluptua at vero. Eos et accusam et justo duo dolores et ea rebum. -Stet clita kasd gubergren, no sea taki\%mata sanctus est. -.PP -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero -eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd -gubergren, no sea takimata sanctus est lorem. Ipsum dolor sit amet, -consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero -eos et accusam et justo duo do\%lo\%res et ea rebum. -.PP -Stet clita kasd gubergren. No sea takimata sanctus est lorem ipsum -dolor sit. Amet consetetur sadipscing elitr, sed diam nonumy eirmod -tempor. Invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua, at vero. Eos et accusam et justo duo do\%lo\%res et ea rebum. -Stet clita kasd gubergren, no sea takimata. Sanctus est lorem ipsum -dolor sit amet consetetur. Sadipscing elitr sed diam nonumy eirmod -tempor invidunt. Ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua. At vero eos et accusam et justo duo do\%lo\%res et ea rebum. -\# -.BLOCKQUOTE -.PP -Stet clita kasd gubergren no sea. Takimata sanctus est lorem ipsum -dolor sit amet. Consetetur sadipscing elitr sed diam nonumy eirmod -tempor invidunt ut labore et do\%lo\%re. Magna ali\%quyam\c -.FOOTNOTE -Aliquyam nonumy eirmod tempor invidunt ut labore. -.FOOTNOTE OFF - erat, sed diam -voluptua at vero eos et accusam. Et justo duo do\%lo\%res et ea rebum, -stet clita kasd gubergren, no sea takimata. -.PP -Sanctus est lorem ipsum. Dolor sit amet consetetur sadipscing -elitr. Sed diam nonumy eirmod tempor invidunt ut labore. Et -do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero eos et -accusam et justo duo. Dolores et ea rebum stet clita kasd gubergren -no sea. -.PP -Takimata lorem ipsum dolor sit amet consetetur sadipscing elitr. -Sed diam, nonumy eirmod tempor, invidunt ut labore et do\%lo\%re magna. -Aliquyam erat sed diam voluptua. At vero eos et accusam et -justo.\c -.FOOTNOTE -Justo vero eos et accusam et justo duo. -.FOOTNOTE OFF -.BLOCKQUOTE OFF -\# -.PP -Duo do\%lo\%res et ea rebum, stet clita kasd gubergren, no sea takimata -sanctus. Est lorem ipsum. Dolor sit amet, consetetur sadipscing elitr, -sed diam nonumy. Eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam. -.PP -Et justo duo do\%lo\%res et ea rebum stet clita kasd. Gubergren -no sea takimata sanctus est. Lorem ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et dolore magna ali\%quyam erat, sed diam voluptua. At vero eos et -accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, -no sea takimata sanctus est. -\# -.SUBHEAD "Beyond Cage\(em" "Catching the Midnight Train" -\# -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr. Sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. Ali\%quyam -erat, sed diam voluptua. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren no sea takimata. Sanctus est, lorem ipsum dolor sit -amet. Consetetur sadipscing elitr, sed diam nonumy. Eirmod tempor -invidunt ut labore et do\%lo\%re magna ali\%quyam erat. Sed diam voluptua -at vero eos et accusam et justo. -.PP -Duo do\%lo\%res et ea rebum, stet clita kasd gubergren. No sea takimata -sanctus est lorem ipsum dolor sit amet, consetetur sadipscing elitr. -Sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam. Erat sed diam voluptua at. Vero eos et accusam et justo -duo do\%lo\%res et ea rebum stet. Clita kasd gubergren no sea takimata -sanctus est. -.PP -Nonumy eirmod tempor invidunt, ut labore et do\%lo\%re magna ali\%quyam -erat? At vero eos et accusam et justo duo do\%lo\%res et ea. Rebum stet -clita kasd gubergren no sea takimata sanctus. Est lorem ipsum dolor -sit amet. Sadipscing\c -.FOOTNOTE -Sadipscing diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. -.FOOTNOTE OFF - elitr sed diam nonumy eirmod tempor invidunt. Ut labore et do\%lo\%re -magna ali\%quyam erat, sed diam voluptua. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren no sea -takimata lorem. Ipsum dolor sit amet, consetetur sadipscing elitr. -Sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. -Ali\%quyam erat, sed diam voluptua. At vero eos et accusam et justo -duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, no sea -takimata sanctus est. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed -diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam et justo -duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, no sea -takimata sanctus est. -.RIGHT -\*[BD]\&...end of sample article\*[PREV] -.FINIS diff --git a/contrib/groff/contrib/mom/examples/typesetting.mom b/contrib/groff/contrib/mom/examples/typesetting.mom deleted file mode 100644 index cd16dc380dae..000000000000 --- a/contrib/groff/contrib/mom/examples/typesetting.mom +++ /dev/null @@ -1,673 +0,0 @@ -\# Most mom users rely on mom's document processing macros to format -\# their work. The doc processing macros take care of all things -\# typographic and are simple, clear and easy to learn. The kind of -\# "by hand" typesetting this file shows off is really geared toward -\# professional typographers. Bear in mind, though, that the full -\# power of mom's typesetting capabilities can be brought to bear -\# on document processing as well. -\# -\# Basic page setup -\# -.PAGE 8.5i 11i \" Printer sheet size -.L_MARGIN 1i \" Left margin 1 inch -.R_MARGIN 1i \" Right margin 1 inch (calculates the line length) -\# -\# Basic type parameters -\# -.FAMILY T \" Times Roman family -.FT B \" Bold font -.PT_SIZE 12 \" Point size -.LS 14 \" Leading (line spacing) -.LEFT \" Set lines flush left, nofill mode -\# -\# Refinements -\# -.HY \" Hyphenate -.KERN \" Automatic pairwise kerning -.LIGATURES \" Automatic ligature generation -.SMARTQUOTES \" Enable smartquotes -.SS 0 \" No extra space between sentences -\# -.ALD 1i-1v \" Advance 1 inch from top of paper to first baseline -Example 1\*[BU 2]: -.ALD .25v \" Advance an extra 1/4 linespace -.UNDERSCORE 3.75p "T\*[BU 4]asting notes using padding, string tabs \ -and multi-columns" -\# -.SP \" Add an extra line space -\# -.FAM H \" Helvetica family -.PT_SIZE 10 -.LS 11 \" New leading -\# -\# The following uses a combination of padding, string tabs, and the -\# FWD escape to set up five tabs with 1-pica gutters stretched over -\# the full line length. -\# -.SILENT \" Don't print the next line -.PAD "\*[ST1]VIN#\*[ST1X]\*[FWD 1P]\*[ST2]ROBE#\*[ST2X]\*[FWD 1P]\*[ST3]NEZ#\*[ST3X]\*[FWD 1P]\*[ST4]BOUCHE#\*[ST4X]\*[FWD 1P]\*[ST5]COMMENTAIRES\*[ST5X]" -.SILENT OFF \" Resume normal printing of text -\# -\# Now that the string tabs have been marked off, we "set" them. -\# -.ST 1 L \" First string tab flush left, nofill mode (no need for .BR's between input lines) -.ST 2 L QUAD \" Remaining tabs are flush left/rag right, fill mode -.ST 3 L QUAD -.ST 4 L QUAD -.ST 5 L QUAD -\# -.TAB 1 \" Call first tab -.UNDERSCORE "VIN" -.TN \" Move to next tab and stay on the same baseline -.UNDERSCORE "ROBE" -.TN \" Ibid -.UNDERSCORE "NEZ" -.TN \" Ibid -.UNDERSCORE "BOUCHE" -.TN \" Ibid -.UNDERSCORE "COMMENTAIRES" -.TQ \" Quit tabs -\# -.ALD 6p \" Advance an extra 6 points -.FT R \" Change font to roman (medium) -.MCO \" Turn multi-column mode on -\# -.TAB 1 \" Notice that this tab gets set line-for-line -\*[IT]Peelee Island \" Set italic -\*[PREV]Gewürztraminer \" Revert to former font (roman) -2000 -(Canada) -.MCR \" Return to top of column -.TAB 2 \" Call tab 2; in multi-column mode, don't use .TN -Jaune pâle. -.MCR -.TB 3 \" Notice that from here on, we use the alias TB instead of TAB -Frais, fruité, ci\%tronné, arômes fortes de lichee et de fruits -tropicaux. -.MCR -.TB 4 -Doux, fruité, bien équilibré avec une bonne acidité. -.MCR -.TB 5 -Bon apéro. Servir avec des plats -.RW .1 \" Reduce Whitespace between letters to tighten this line -indiens ou \%chinois. -.RW 0 \" Back to normal spacing between letters -.BR -Excellent rapport qualité/prix. -.MCX 8p \" Multi-column mode off; advance an extra 8 points -.MCO \" Re-invoke multi-columns for next wine description -.TB 1 -\*[IT]Carau Pujol -\*[ROM]Tannat -1995 -(Uraguay) -.MCR -.TB 2 -Rubis foncé, vio\%lacée, presque opaque. -.MCR -.TB 3 -Belles arômes de fruits foncés (prunes, cerises noires, cassis). -Odeurs tertiares de cuir, cèdre, violets, eucalyptus, avec une trace -exotique de Band-Aid*\*[BU 12]. -\# -\# The \*[BU 12], above, pulls the period back so that it falls -\# underneath the asterisk. \*[BP] could have been used instead -\# if you prefer to use points rather than kern units. -\# -.MCR -.TB 4 -Très rond, tannins mûres et veloutés, avec un long finis fruité et -doucement alcoolique. -.MCR -.TB 5 -Superbe\|! Une aubaine à ne pas manquer. Prêt à boire maintenant. -.MCX 1v \" Multi-columns off; advance an extra linespace -\# -\# Now, an example of a hanging indent. This is excessively fussy -\# from a typographic standpoint in that it hangs the asterisk outside -\# the current left margin so that the text following it lines up with -\# with the text in the tasting notes. Notice that in order to use a -\# hanging indent, you must first set a left indent. -\# -.FT I \" Change font to italic -.PT_SIZE -.5 \" Reduce point size by 1/2 point -.LS -.5 \" Reduce leading by 1/2 point -.JUSTIFY \" Set text justified -\# -\# Now, move the left margin back by the width of an asterisk plus 2 points... -\# -.L_MARGIN -(\w'*'+2p) -\# -\# ...and set a left indent equal to the width of an asterisk plus 2 points -\# -.IL \w'*'+2p -\# -\# Now, set the hanging indent equal to the left indent, effectively pulling -\# the first line of the following text back to the new left margin. -\# Subsequent output lines will be indented by the .IL amount. -\# Notice that when using the \w inline escape, there's no need to append -\# a unit of measure to it. -\# -.HI \w'*'+2p -*\*[FWD 1p]The term "Band-Aid" means the slightly sweet, vaguely chemical -smell associated with medical-grade plastics. It is often found in -wines from terroirs in South America. Provided a wine has a sufficient -concentration of fruit -.RW .04 \" Kern the whole next line slightly, so "lipstick" doesn't hyphenate. -aromas and complex tertiary characteristics, Band-Aid is a Good Thing. -Otherwise, it smells like cheap lipstick. -.RW 0 \" Reset kerning to 0 -\# -\# Notice, above, that although the values for IL and HI are the width -\# of an asterisk plus 2 points, when setting the first line of text -\# (the one with the asterisk at the beginning), we put only 1 point of -\# space after the *. This is to compensate for the fact that in the -\# italic font, the letter T doesn't align visually with the rest of -\# the text. As already noted, this is an extremely fussy example. :) -\# -.IQ CLEAR \" Cancel and clear stored indent values -.L_MARGIN 1i \" Reset left margin to its original value. -\# -.ALD 2P \" Add 2-picas extra space before next example -\# -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -\# -Example 2: -.ALD .25v -\# -.COMMENT \" COMMENT lets you enter comments without using \# or \" -In the next line, because the string to be underscored must be -enclosed in double-quotes, you can't use the double-quote character -itself around the word "Massaging". We circumvent this by using the -groff inline escapes \(lq and \(rq (leftquote and rightquote). -.COMMENT OFF \" Remember to turn COMMENT off! -\# -.UNDERSCORE 3.75p "\(lqMassaging\(rq \*[BCK 1p]a passage of rag right text" -.SP \" Add an extra linespace -\# -.PT_SIZE 12.5 -.LS 14 -.PT_SIZE -1 \" Reduce point size by 1 point -Passage using groff spacing defaults -\# -.ALD .5v \" Add an extra 1/2 line space -\# -.PT_SIZE +1 \" Restore point size -.QUAD LEFT \" Set quad left, fill mode -.IB 3P \" Indent 3 picas from both the left and right margins -.FT R -The thousand injuries of Fortunato I had borne as I best could; -but when he ventured upon insult, I vowed revenge. You, who so well -know the nature of my soul, will not suppose, however, that I gave -utterance to a threat. \*[IT]At length\*[PREV] I would be -avenged; this was a point definitively settled\(embut the very -definitiveness with which it was resolved, precluded the idea of -risk. I must not only punish, but punish with impunity. A -wrong is unredressed when retribution overtakes its redresser. -It is equally unredressed when the avenger fails to make himself -felt as such to him who has done the wrong. -.ALD 6p -\# -\# The next line is set quad right, nofill mode, 1/2 point smaller -\# than the preceding text (using the \*[SIZE ] inline escape. -\# -.RIGHT -\*[SIZE -.5]\(emEdgar Allen Poe, \*[IT]The Cask of Amontillado\*[PREV]\*[SIZE +.5] -.SP \" Extra linespace -.IBQ \" Disable "indent both" -\# -\# The passage above, while acceptable in a longer document, exhibits a -\# few typographic flaws. The shape of the right margin rag exhibits -\# a decidedly "rounded" appearance. The word "I" stands alone at the -\# end of the third line. The space between the 1st and 2nd sentences -\# ("...revenge. You...") is too large, owing to the letter "Y" that -\# begins the 2nd sentence. The spacing between "A wrong..." (line 6) -\# is equally too large because of the way "A" and "w" fit together. -\# The em-dash before Edgar isn't vertically centered with the letter "E". -\# And so on. The most important correction below is fixing the rag -\# so that longer and shorter lines alternate. This is accomplished by -\# manually breaking lines and then slightly lengthening and shortening -\# them until a pleasing rag is achieved. The remainder of the little -\# flaws are fixed with inline escapes. -\# -.FT B -.PT_SIZE -1 -.LEFT -The same passage, \*[BU 4]"massaged" -\# -.ALD .5v -\# -.FT R -.PT_SIZE +1 -.QUAD LEFT -.HY OFF \" Turn automatic hyphenation off -.BR_AT_LINE_KERN \" Automatically insert a line break (.BR) with each invocation of .RW and .EW -.WS +1 \" Increase word space slightly -.IB \" Turn "indent both" back on; values are the same as before -\# -The thousand injuries of Fortunato I had borne as I best could; but -when he ventured upon insult, I \*[BU 2]vowed revenge. \*[BU 4]Y\*[BU 6]ou, -\*[BU 4]who so \*[BU 2]well know the nature -.EW .2 -of my soul, \*[BU 2]will not suppose, however, that I gave utterance to -a threat. \*[IT]At -.EW .2 -length\*[PREV] I would be avenged; this was a point definitively -settled\(embut the -.EW .2 -v\*[BU 1]ery definitiveness with which it was resolved, precluded the idea -of risk. -.EW 0 -I must not only punish, but punish with impunity. A \*[BCK 1p]wrong is -unredressed -.EW .1 -when retribution overtakes its redresser. It is equally unredressed -when the -.RW .1 -avenger fails to make himself felt as such to him \*[BU 2]who has done -the wrong. -.RW 0 \" Restore normal kerning -.WS +0 \" Restore normal wordspacing -.ALD 6p -.PT_SIZE -.5 -.RIGHT -\*[UP 1.5p]\(em\*[DOWN 1.5p]\*[BCK 1p]Edgar \*[BCK 1p]Allen Poe, \*[IT]The Cask of Amontillado\*[PREV] -.IQ CLEAR \" Cancel and clear stored values of all indents -\# -\# -.NEWPAGE \" Start a new page -.T_MARGIN 1i \" Set top margin to 1i (approx. equivalent to .ALD 1i-1v above) -\# -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -.LEFT -\# -Example 3: -.ALD .25v -.UNDERSCORE 3.75p "A \*[BU 2]recipe for enumerated lists using indents" -.SP .5v \" Add an extra half line space -.FAM N \" New Century Schoolbook family -.FT R -.PT_SIZE 11 -.LS 13 -.HY \" Turn hyphenation back on -.JUSTIFY \" Justify text -This example demonstrates the use of left and hanging indents for -simple enumerated lists. Nested lists are possible, as the example -shows; however, the more complex the nesting, the wiser it becomes -to use (string) tabs, as seen in Example 4. -.TI 1.5m -\*[BD]Please note: mom\*[PREV] has macros that allow you to set -enumerated lists automatically. These examples merely show hanging -indents and string tabs in use. -\# -.JUSTIFY \" Justify text -.IL \w'\0.\0' \" Establish a left indent equal to the width of 2 figure spaces plus a period. -.HI \w'\0.\0' \" Establish a hanging indent equal to the size of the left indent. -.ALD 6p -\# -\# -1.\0This is the first item in the list. N\*[BU 2]otice how the first line -"hangs" back from the remaining text, which is otherwise -indented by the width of by two figure-spaces (digit-width -spaces) and a period. -.BR -.HI \" Notice that HI doesn't require an argument once the value's been set -.ALD 6p -2.\0This is the second item in the list. As with the above item, -notice the use of the \*[BU 8]\\0 escape sequence in the input text. It's -there to ensure that the space after the number/period combination -always remains the same (i.e. doesn't stretch when the line is -justified). That way, the text of each item always lines up perfectly. -\# -.COMMENT -Now we're going to set a bullet-point list, indented from the text -above by 1 pica. IL arguments are always added to whatever value -is in already effect for IL, hence all we have to do is tell mom to -indent (from the current left indent) 1 pica plus the width of the -bullet character ( \(bu ). \*[FWD 3p] puts three points of space after -the bullet so that the bullet and the text are visually separated. -.COMMENT OFF -\# -\# -.IL 1P+\w'\(bu\*[FWD 3p]' -\# -\# Hanging indents are always relative to the current left indent. -\# The additional 1-pica indent, above, already having been taken -\# care of, we only want to hang the first lines of bullet list items -\# back by the width of the bullet character plus its 3 extra -\# points of space. -\# -.ALD 6p -.HI \w'\(bu\*[FWD 3p]' -\*[DOWN 1p]\(bu\*[UP 1p]\*[FWD 3p]This is the first line of a sublist with bullets. -N\*[BU 2]otice how the first line (the one with the bullet) is indented -exactly one pica from the text of the list item above it, while the -remaining lines align with the left indent we set above. -.ALD 6p -.HI -\*[DOWN 1p]\(bu\*[UP 1p]\*[FWD 3p]This is the second item of the sublist with bullets. \*[BU 4]We -could go on indefinitely, but let's go back to the top level (numbered) -list... -\# -\# The easiest way to return to a previous indent value is by subtraction. -\# The argument to IL, above, was 1P+\w'\(bu\*[FWD 3p]', so we just reverse -\# it by putting a minus sign in front. The parentheses are required -\# for groff to evaluate the expression properly. -\# -.IL -(1P+\w'\(bu\*[FWD 3p]') -.HI \w'\0.\0' \" Reset hanging indent for use with numbered items. -.ALD 6p -3.\0...and here we are. -.HI \" Again, notice that once HI has been set, you don't have to keep passing it an argument. -.ALD 6p -4.\0In order not to make the example too long, we'll stop here. -.IQ CLEAR \" Don't forget to cancel and/or clear indents! -\# -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -.LEFT -.SP -\# -Example 4: -.ALD .25v -.UNDERSCORE 3.75p "A \*[BU 2]recipe for nested lists using string tabs" -.SP .5v -.FAM N -.FT R -.PT_SIZE 11 -.LS 13 -.JUSTIFY -Although setting up string tabs is a bit more complex than setting -up indents, it's \*[BU 3]well worth the effort, especially for nested lists. -.ALD 6p -\# -.COMMENT -The PAD line, below, sets up two string tabs. The first (ST1) -is exactly the length of two figure spaces and a period. The -second (ST2) is simply "the remainder of the line." -.COMMENT OFF -\# -.SILENT \" Don't print any of this -.PAD "\*[ST1]\0.\0\*[ST1X]\*[ST2]#\*[ST2X]" -.ST 1 L \" String tabs must be "set" after being marked off in a line -.ST 2 J \" ST 1 will be set flush left, nofill; ST 2 will be justified. -.SILENT OFF \" Restore printing -\# -.TB 1 -1. -.TN \" Use .TN here so text stays on the same baseline as the number in tab 1 -This is the first item in the list. N\*[BU 2]otice how, just as in Example 3, -the first line hangs back from the remaining text, which is otherwise -indented. -.ALD 6p -.TB 1 -2. -.TN -This is the second item in the list. N\*[BU 2]otice that when setting "lists" -with tabs, there's no need to use the \*[BU 8]\\0 escape sequence after -the number/period combination in the input text. -.ALD 6p -\# -.COMMENT -Now, set up the indented bullet-point sublist. The PAD line -says: move forward 12 points (1 pica), then mark off a string -tab (ST3) that's the length of the bullet character; move foward -another three points, then make the next string tab (ST4) the -length of remainder of the line. -.COMMENT OFF -\# -.SILENT -.PAD "\*[FWD 12p]\*[ST3]\(bu\*[ST3X]\*[FWD 3p]\*[ST4]#\*[ST4X]" -.ST 3 L -.ST 4 J -.SILENT OFF -.ALD 6p -.TB 3 -\*[DOWN 1p]\(bu\*[UP 1p] -.TN -This is the first line of a sublist with bullets. N\*[BU 2]otice how the -bullets and the text line up exactly the same as in Example 3. -.ALD 6p -.TB 3 -\*[DOWN 1p]\(bu\*[UP 1p] -.TN -This is the second item of the sublist with bullets. For the fun of -it, lets add in an -.SPREAD -en-dashed sub-sublist. -.BR \" We're in a fill mode right now, so you *must* terminate the line with BR -\# -.SILENT -.PAD "\*[FWD 12p]\*[ST5]\(en\*[ST5X]\*[FWD 4p]\*[ST6]#\*[ST6X]" -.ST 5 L -.ST 6 J -.SILENT OFF -.ALD 6p -.TB 5 -\*[UP .75p]\(en\*[DOWN .75p] -.TN -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, -sed diam voluptua. -.ALD 6p -.TB 5 -\*[UP .75p]\(en\*[DOWN .75p] -.TN -At \*[BU 3]vero eos et accusam et justo duo dolores et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est lorem ipsum dolor sit amet. -.ALD 6p -.TB 1 -3. -.TN -And here we are, back at the top-level numbered list with a minimum -of muss and fuss, -.ALD 6p -.TB 1 -4. -.TN -Generally speaking, once you get the hang of string tabs and the -\*[BD]PAD\*[PREV] macro, you'll find setting up complex nested lists -(or anything similar to them) easier than with hanging indents. -.TQ -\# -.NEWPAGE -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -.LEFT -\# -Example 5: -.ALD .25v -.UNDERSCORE 3.75p "Word spacing" -.ALD 8p -.FAM P \" Palatino family -.PT_SIZE 11 -.LS 14 -\# -\# The "label" lines for the following are set in Helvetica bold, one -\# point smaller than the examples themselves. This demonstrates the -\# use of the groff inline escape \f[...] to change both family and -\# font inline. It also shows using the mom inline \*S[...], which is -\# an alternate form of the inline, \*[SIZE ] -\# -\f[HB]\*S[-1]Normal word spacing\*S[+1]\*[PREV] -.FT R -N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party. -.ALD 4p -\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU 3]+\*[DOWN 1p]\*[BU 1]2\*S[+1]\*[PREV] -.FT R -.WS +2 -N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party. -.WS +0 -.ALD 4p -\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU 3]+\*[DOWN 1p]4\*S[+1]\*[PREV] -.FT R -.WS +4 -N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party. -.WS +0 -.ALD 4p -\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU 3]+\*[DOWN 1p]6\*S[+1]\*[PREV] -.FT R -.WS +6 -N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party. -.WS +0 -.SP 1.5v -\# -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -\# -.LEFT -Example 6: -.ALD .25v -.UNDERSCORE 3.75p "Line kerning" -.ALD 8p -.FAM P \" Palatino family -.FT R -.PT_SIZE 11 -.LS 15 -\# -\# Here, we set up some tabs so the examples can go into facing columns. -\# -.TAB_SET 1 0 19.5P L -.TAB_SET 2 19.5P 19.5P L -\# -.MCO \" Turn multi-columns on -.TB 1 -\f[HB]\*S[-1]Unkerned line\*S[+1]\*[PREV] -.FT R -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\f[HB]\*S[-1]Line "tightened" \(en .RW .1\*S[+1]\*[PREV] -.RW .1 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\# -\# In the next line, notice that because it uses a different family -\# (Helvetica instead of Palatino), the RW macro doesn't affect it. -\# -\f[HB]\*S[-1]Line "tightened" \(en .RW .2\*S[+1]\*[PREV] -.RW .2 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\f[HB]\*S[-1]Line "tightened" \(en .RW .3\*S[+1]\*[PREV] -.RW .3 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.MCR -.TB 2 -\f[HB]\*S[-1]Unkerned line\*S[+1]\*[PREV] -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\f[HB]\*S[-1]Line "loosened" \(en .EW .1\*S[+1]\*[PREV] -.EW .1 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\f[HB]\*S[-1]Line "loosened" \(en .EW .2\*S[+1]\*[PREV] -.EW .2 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\f[HB]\*S[-1]Line "loosened" \(en .EW .3\*S[+1]\*[PREV] -.EW .3 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.MCX 1.5v -\# -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -.LEFT -\# -Example 7: -.ALD .25v -.UNDERSCORE 3.75p "Cutaround using left\*[FU 2]/right indents, multi columns \ -and a dropcap" -.SP -\# -.FT R -.PT_SIZE 11 -.LS 12 -.BR_AT_LINE_KERN OFF \" In justified text, it's best to have this OFF -\# -.TAB_SET 1 0 18.5P J -.TAB_SET 2 20.5P 18.5P J -.MCO -.ALD 5P+9p -\# -\# The little picture of tux. -\# -.PSPIC penguin.ps -.MCR -.TAB 1 -.XCOLOR red \" Initialize the X11 color, red -.DROPCAP_COLOR red -.DROPCAP_FONT B -.DROPCAP L 3 COND 80 \" i.e. the letter L dropped 3 lines, condensed to 80% of its normal width -.EW .2 -orem ipsum dolor sit amet, consetetur sa\%dip\%scing elitr, sed diam -nonumy eir\%mod tempor invidunt ut labore et dolore magna aliquyam erat, -sed diam voluptua. -.EW 0 -.TI 1P -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita -kasd gubergren, no sea taki- -.SPREAD \" Force justify preceding line before starting indent -.IR 3.5P -kimata sanctus est lorem ipsum dolor sit amet. -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor. -.EW .2 -.TI -Invidunt ut labore et dolore magna ali\%qu\%yam erat, sed diam voluptua. -At -.EW 0 -vero eos et accusam et justo duo dolores et ea rebum. -.TI -Stet clita kasd gubergren, no sea ta- -.SPREAD \" Force justify preceding line before quitting indent -.IRQ -kimata sanctus est lorem ipsum dolor sit amet. Lorem ipsum dolor -sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor -in\%vi\%dunt ut labore et dolore magna aliquyam erat. Sed diam voluptua, -at vero eos et accusam et justo duo -.SPREAD -.EW .3 -dolores et ea rebum. Stet clita no kasd guber- -.SPREAD -.MCR -.TB 2 -gren, no sea takimata sanctus est lorem ipsum -.EW 0 -dolor sit amet. Consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et dolore. -.TI -Magna aliquyam erat, sed diam voluptua, at vero eos et accusam. -Et justo duo dolores et ea -.SPREAD -.IL 3.5P -rebum, stet clita kasd gubergren. No sea -takimata sanctus est, lorem ipsum dolor sit amet. -.TI -Sit amet, consetetur sadipscing elitr, sed diam. Nonumy eirmod tempor -in\%vi- -.EW .3 -dunt ut labore et dolore magna. Ali- -.EW 0 -quyam erat sed diam voluptua. -At vero eos et accusam et justo duo dolores et ea rebum stet. -.ILQ -.TI -Dolores et ea rebum stet clita kasd gubergren, no sea takimata -sanctus. Sadipscing elitr sed diam, nonumy eirmod tempor, invidunt -ut labore et dolore magna aliquyam erat. Sed diam voluptua, at vero -eos et accusam et justo duo dolores et ea rebum. diff --git a/contrib/groff/contrib/mom/groff_mom.man b/contrib/groff/contrib/mom/groff_mom.man deleted file mode 100644 index b82fcad71898..000000000000 --- a/contrib/groff/contrib/mom/groff_mom.man +++ /dev/null @@ -1,101 +0,0 @@ -.ig -This file is part of groff, the GNU roff type-setting system. - -Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. -written by Werner Lemberg - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or -any later version published by the Free Software Foundation; with the -Invariant Sections being this .ig-section and AUTHORS, with no -Front-Cover Texts, and with no Back-Cover Texts. - -A copy of the Free Documentation License is included as a file called -FDL in the main directory of the groff source package. -.. -. -.do nr groff_mom_C \n[.C] -.cp 0 -. -.mso www.tmac -. -.de TQ -.br -.ns -.TP \\$1 -.. -. -.TH GROFF_MOM @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@" -. -. -.SH NAME -. -groff_mom \- groff `mom' macros -. -. -.SH SYNOPSIS -. -.B groff -.B \-mom -[ -.IR files .\|.\|.\& -] -.br -.B groff -.B \-m\ mom -[ -.IR files .\|.\|.\& -] -. -. -.SH DESCRIPTION -. -.B mom -(\[lq]my own macros\[rq], \[lq]my other macros\[rq], \[lq]maximum -overdrive macros\[rq], .\|.\|.\&) is a macro set for groff, designed -primarily to format documents for PostScript output. -.PP -.B mom -provides two categories of macros: macros for typesetting and macros -for document processing. -The typesetting macros provide access to groff's typesetting power in -ways that are simpler to master and to use than groff's primitives. -The document processing macros provide customizable markup -\[lq]tags\[rq] that allow the user to design and output -professional-looking documents with a minimum of typesetting -intervention. -.PP -mom comes with her own (very) complete documentation in HTML format. -. -.SH FILES -.TP -.B om.tmac -\[en] the main macro file -.TQ -.B mom.tmac -\[en] a wrapper file that calls om.tmac directly. -. -.TP -.URL @HTMLDOCDIR@/momdoc/toc.html @HTMLDOCDIR@/momdoc/toc.html -\[en] entry point to the HTML documentation -. -.TP -.B @EXAMPLEDIR@/*.mom -\[en] example files using mom -. -. -.SH AUTHOR -. -.B mom -was written by -.MTO peter@faustus.dyn.ca "Peter Schaffter" . -Please send bug reports to the -.MTO bug-groff@gnu.org "groff bug mailing list" -or directly to the author, either at the address above or to -.MTO ptpi@golden.net "" . -. -.cp \n[groff_mom_C] -. -.\" Local Variables: -.\" mode: nroff -.\" End: diff --git a/contrib/groff/contrib/mom/mom.tmac b/contrib/groff/contrib/mom/mom.tmac deleted file mode 100644 index b1b0b1864999..000000000000 --- a/contrib/groff/contrib/mom/mom.tmac +++ /dev/null @@ -1,3 +0,0 @@ -.\" mom.tmac -.\" -.do mso om.tmac diff --git a/contrib/groff/contrib/mom/momdoc/appendices.html b/contrib/groff/contrib/mom/momdoc/appendices.html deleted file mode 100644 index 6b5b63fcd610..000000000000 --- a/contrib/groff/contrib/mom/momdoc/appendices.html +++ /dev/null @@ -1,692 +0,0 @@ - - - - -Mom -- Appendices - - - - - -Next   -Prev   -Back to Table of Contents -

- - - -

APPENDICES

- - - - - -

Further notes on this documentation

-
- -Some mom users are sure to ask: "Why is this -documentation in html? If mom's so great, why not -typeset the whole thing to show her off? And if groff's so great, -why not write a man page?" -

-Valid questions, to be sure, and mom has -answers. (Okay -- I have answers, but I speak for -mom.) -

-The documentation is in html because I still find it the best tool -for navigating lengthy manuals. Html, with its anchors and links, -came into being precisely so people could do something they'd never -been able to with the printed word: instantly track down internal -and external references in a document. -

-To me, it's essential that people reading mom's -documentation never have difficulty finding precisely the macro -they need for a particular task. Equally, when reading up on -a macro, they should never be presented with terms or other -macro names for which they cannot instantly find accurate explanations. -Short of having written the documentation in TeX for the info browser -(and TeX bloat is one of the reasons I prefer to typeset with groff), -I can think of no better way to achieve the kind of truly useful -documentation I wanted than html. -

-Another reason for html is that working with mom -necessarily involves creating files inside a text editor. I use -elvis, a truly fabulous vi clone that does a terrific job of rendering -basic (text only) html. I may have written mom, -but I still regularly call on her documentation. Elvis, with its -html capabilities, lets me write and format mom -documents AND peruse her documentation, clicking on links as -necessary, without ever leaving the comfy confines of my -text editor. -

-Not everyone, of course, uses an editor with html capabilities. -For them, firing up a browser is obviously necessary for reading -mom's documentation. Browsers being what they are, -and not everyone on the globe having the cash for muscle machines -to run Galeon, or Konqueror or Mozilla, their browser -needs to be fast and light--and probably "text-only". -

-Some mom users may notice the absence of graphics, -frames, and (for the most part) tables in this documentation. The -reason is simple: text-only browsers. People who, for whatever -reason (choice or necessity), use lynx, or links or w3m to read -the documentation must be able to make sense of it. All of it. -Graphical examples of mom in action might have made -some parts of the documentation easier to write, but would have -excluded text-only browser users. And it goes without saying that -the documentation looks fine if you're reading it in a graphical -browser. -
-


- - - - -

Adding PostScript fonts to groff

-
- - -Small note: the term <prefix> in this -section refers to the directory in which groff is installed, -typically something like /usr/share/groff/<version#> -(for distro-specific, pre-compiled groff packages) or -/usr/local/share/groff/<version#> (if you've built groff -from source). -

-Groff comes with a small library of PostScript -families -(see the -FAMILY -macro for a list). The families have four -fonts -associated with them. These fonts are a combination of -weight -and -shape: -
-

    -
  • R (Roman, usually Medium weight), -
  • I (Italic, usually Medium weight), -
  • B (Bold, usually Roman shape) and -
  • BI (Bold Italic). -
-

-If you do a lot of document processing or typesetting with -mom, you'll find, sooner or later, that these -families and their associated fonts aren't sufficient. You'll want -to supplement them, either with more fonts for the families already -provided--"Damn! I need Helvetica Bold Condensed Italic!"--or with -entire new families. -

-Without going into the gory details (yet), while it's true that -adding fonts to groff is a relatively straightforward -process, extending existing families or adding new ones requires -some planning. -

-The traditional approach to extending groff families has been -to create new families for non-default weights and -shapes (e.g. Light, which is a weight; Condensed, which is a -shape), then to associate them with groff's predefined R, -I, B and BI font styles. An example -of this can be seen in the groff PostScript font library itself -(<prefix>/font/devps/): there's one "family" for -Helvetica (HR, HI, HB, HBI) and another for Helvetica Narrow (HNR, -HNI, HNB, HNBI). -

-The difficulty with this approach is that typographers -tend to think of "families" as referring to the -entire set of font weights and shapes associated with a -particular family name. For example, when a typesetter says -"the Helvetica family", s/he is including the weights Helvetica Thin, -Helvetic Light, Helvetica Regular, Helvetica Bold, Helvetica Heavy, -etc, and all their associated -shapes -(Roman, -Italic, Condensed, Narrow, Extended, Outline, etc). -

-Thus, intuitively, when a typesetter gives mom a -.FAM(ILY) directive, s/he reasonably expects that any -subsequent .FT directive will access the desired font -from the Helvetica family--without the need to state explicitly both -family and font to .FT, as it is explained one can do in -the -FAMILY -and -FT -sections of these documents. -

-If one had, say, the fonts, Helvetica Light Roman -and Helvetica Light Italic as well as Helvetica Light Condensed -Roman and Helvetica Light Condensed Italic, the traditional -approach would require two "partial" families: HLR/HLI and -HLCDR/HLCDI. Accessing these family/font combos -routinely throughout a document would then require -changing family (with .FAM(ILY)) and selecting the -desired font (with .FT R or .FT I), or -passing .FT the lengthy family+fontname (.e.g. .FT -HLCDI). -

-Fortunately, groff provides a mechanism whereby it's possible to -extend the basic R, I, B and BI -fonts ("styles" in groff-speak) so that one can, in -fact, create extensive type families, and access all the fonts -in them with .ft (groff) or .FT (mom). -

-mom uses this mechanism to offer, in addition to -groff's default PostScript font styles, the following: -

- -

-Mom's extensions to groff's basic font styles
-=============================================
-
-	L      =  Light Roman
-	LI     =  Light Italic
-	LCD    =  Light Condensed Roman
-	LCDI   =  Light Condensed Italic
-	LEX    =  Light Extended Roman
-	LEXI   =  Light Extended Italic
-	CD     =  Medium/Book Condensed Roman
-	CDI    =  Medium/Book Condensed Italic
-	EX     =  Medium/Book Extended Roman
-	EXI    =  Medium/Book Extended Italic
-	DB     =  DemiBold Roman
-	DBI    =  DemiBold Italic
-	BCD    =  Bold Condensed Roman
-	BCDI   =  Bold Condensed Italic
-	BEX    =  Bold Extended Roman
-	BEXI   =  Bold Extended Italic
-	HV     =  Heavy Roman
-	HVI    =  Heavy Italic
-	HVCD   =  Heavy Condensed Roman
-	HVCDI  =  Heavy Condensed Italic
-	HVEX   =  Heavy Extended Roman
-	HVEXI  =  Heavy Extended Italic
-	BL     =  Black Roman
-	BLI    =  Black Italic
-	BLCD   =  Black Condensed Roman
-	BLCDI  =  Black Condensed Italic
-	BLEX   =  Black Extended Roman
-	BLEXI  =  Black Extended Italic
-	UBL    =  Ultra-Black Roman
-	UBLI   =  Ultra-Black Italic
-
- -Thus, with mom, if you've installed, say, some -extra Helvetica fonts and named them according to the convention FS -(where "F" means family and "S" means font -style), once having entered -

-

-	.FAMILY H
-	  or
-	.FAM H
-
- -you can access any of those Helvetica fonts simply by -passing the correct argument from the list above to -FT. -

-For example, if you were working in Medium Roman (.FT R) -and you needed Medium Condensed Italic for a while (assuming it's -installed), you'd just type -

-

-	.FT CDI
-
- -to access the Medium Condensed Italic font from the Helvetica -family. -

-Mom's list of font styles doesn't pretend to -be exhaustive, but rather tries to cover the basic weight/shape -combinations likely to be found in any reasonably complete type -family. -

-The actual extension names are arbitrary and can be used in a -flexible manner. For example, if you create a family that has a -DemiBold font (DB) but no Bold font (B), you might find it more -convenient to give the DemiBold font the extension "B". -Equally, if the family has an ExtraBold font, you might find it more -convenient to use the extension "HV" (Heavy). - -

-However, you may, at needs, want to add to mom's -list of font styles. You can do this by editing the file, om.tmac. -Near the top, you'll see lines of the form -

-

-	.sty \n[.fp] L       \" Light Roman
-	.sty \n[.fp] LI      \" Light Italic
-	.sty \n[.fp] LCD     \" Light Condensed Roman
-
- -Simply add your new font style by imitating what you see and -plugging in your new font style (having, of course, first created the -font, correctly named, in groff's PostScript font directory; see -How to create a PostScript font for use with groff). -

-For example, if you already have some fonts from the Univers -family installed and have called the family UN, you might decide at -some point to add the Bold Outline font (UNBO). In which case, -you'd add -

-

-	.sty \n[.fp] BO      \" Bold Outline
-
- -to the .sty \n[.fp] <font style> list in om.tmac. -

-Be careful, though, that any styles you add do not conflict -with family names that already exist. -"C", for example, conflicts with the Courier family -(CR, CI, CB, CI). Were you to create a font style "C", -thinking that .FT C would give you access to font style -once you'd given a .FAM(ILY) directive, you'd get a nasty -surprise: your type would come out in Courier Roman! -

-VERY IMPORTANT NOTE: mom's font extensions are -not "user-space" controllable via a macro. If you've -been using groff for a long time, and have already rolled your own -solution to adding PostScript families, fonts, weights, shapes, etc. to -groff, you may find that mom's font extensions -conflict with your own scheme. Should that be the case, comment out -the .sty \n[.fp] <font style> lines found near the -top of the om.tmac file. - -

How to create a PostScript font for use with groff

-These instructions aren't meant to cover all possibilities, merely -to present one way of making PostScript families/fonts available to -groff and mom. -

-GNU/Linux distributions being what they are, directory locations may -differ and the presence of some executables can't be guaranteed. -I run a Debian system. The instructions reflect that. Users of -other distros will have to interpret them according to the way their -distro operates. -

-What you need before you start: -
-

    -
  • groff, version 1.18 or higher -
    - (Debian package: groff) -
  • a full installation of gs and associated tools -
    - (Debian package: gs or gs-gpl) -
  • a library of gs fonts -
    - (Debian package: gsfonts) -
  • a utility for converting TrueType fonts to Type1 fonts -
    - (Debian package: ttf2pt1) -
  • a font manager -
    - (Debian packages: defoma, psfontmgr, dfontmgr) -
  • perl -
    - (Debian package: perl) -
-
-A reasonably complete installation of any major GNU/Linux distro -should already have these on your system, except perhaps for the -utility to convert TrueType fonts to Type1 fonts. -

-Initial preparation (you only have to do this once): -
-

    -
  1. If you don't already have one, create a directory in your - home directory to hold new fonts. Any directory name will do. - I use ~/Fonts, with subdirectories for Type1, TrueType and Groff - fonts. - -
  2. Locate the groff directory, site-font. The exact location is - difficult to predict, owing to differences between distros - and whether you're using a pre-packaged groff or have built - it from source. Some typical locations are -
    -
      -
    • /usr/share/groff, -
    • /usr/local/share/groff -
    • /etc/groff -
    -

    - If you can't find the site-font directory, locate - groff's site-tmac directory, and, as root, create site-font - in the same directory as the one that holds site-tmac. - E.g., if you find site-tmac in /usr/share/groff, create - site-font in /usr/share/groff. -

  3. Locate the file <prefix>/font/devps/generate/textmap - and symlink it to textmap in the directory that - contains your personal collection of PostScript fonts. (See the - Small Note, - above, for the meaning of <prefix>). On my system, - at the time of writing, <prefix> is - /usr/local/share/groff/1.19.2/, therefore, I symlink it in - ~/Fonts/Type1 with -
    -
    -ln -s /usr/local/share/groff/1.19.2/font/devps/generate/textmap textmap
    -		
    -
  4. Locate the file <prefix>/font/devps/text.enc and - symlink it to text.enc in your personal font - directory. On my system, in ~/Fonts/Type1 -
    -ln -s /usr/local/share/groff/1.19.2/font/devps/text.enc text.enc
    -		
    -
  5. Make sure you know which directory/ies holds your gs fonts. - You'll need the information later. On a Debian box, some - typical locations are -
    -
      -
    • /usr/lib/ghostscript/fonts -
    • /usr/share/ghostscript/fonts -
    • /usr/share/fonts/type1/gsfonts -
    -
-
-Font creation/installation: -
-
    -
  1. Acquire the font in either Type1 (.pfb) or TrueType - (.ttf) format. -
  2. Place the font in your personal font directory; for me, - that's ~/Fonts/Type1 or ~/Fonts/TrueType. -
  3. In your personal font directory, run one of the following: -
    -
      -
    • For Type1 fonts -
      -
        -
      • getafm fontfilename.pfb | gsnd - > fontfilename.afm -
        - For Type1 fonts, this will generate something called - an .afm (Adobe Font Metrics) file, which is - required to create PostScript fonts for groff. -
      -
    • For TrueType fonts -
      -
        -
      • ttf2pt1 \-b fontfilename.ttf -
        - For TrueType fonts, this will generate a PostScript - .pfb file as well as an .afm file. -
      -
    -
  4. Still in your personal font directory, run -
    -
      -
    • afmtodit -e text.enc fontfilename.afm textmap GROFF_FONTNAME -
    -

    - Q: How do I choose a GROFF_FONTNAME? -

    - A: Start by considering the - family - to which the font belongs. If you're adding to a family that - already exists in groff's <prefix>/font/devps - directory, that will be the first part of the font name. - (See - here - for a list of families already installed, along with their groff - names.) Add to that name the appropriate weight/style extension, - listed - here. -

    - For example, if you're adding Helvetica Light Roman, your - GROFF_FONTNAME would be HL. If you're - adding Helvetica Light Italic, your GROFF_FONTNAME would be - HLI. -

    - If you're adding a font not already in groff's PostScript - families, first choose a meaningful name for the - family - to which the font belongs. The name can be anything you like. If, - for example, the family is Garamond, you could choose GARAMOND, - GARA, GD, or even just plain G as the family name. Then tack on the - appropriate style/weight extension. Thus, if you were installing - Garamond Bold Condensed Italic and had chosen GD - as the family name for Garamond, your GROFF_FONTNAME would be - GDBCDI. -

    - In mom, you can then access the Garamond - family with .FAM GD, and the Bold Condensed - Italic font wth .FT BCDI. -

    - Note: The family name need not be in upper - case, and there's no limit to the length of the name. - "Garamond", for example, could be the name you - give the Garamond family. In fact, you might find it - preferable, since a) you wouldn't have to remember how - you'd named the family, and b) should you be scanning - your - site-font directory, - something like GaramondBCDI will be more meaningful than, - say, GDBCDI. -

  5. Copy or move GROFF_FONTNAME to your - site-font directory, - or change to the site-font directory and make a symlink to - GROFF_FONTNAME in your personal directory. -
  6. Copy or move the .pfb file to the directory that - holds your gs fonts, or change to that directory and make a - symlink to the .pfb file in your personal directory. -
  7. Do whatever your system or distro requires in order to - register the new PostScript font (the .pfb file). On a - Debian system, as root, you can run dfontmgr for a - graphical interface that will take care of registering the - font. -
-

-Written out in full, adding fonts looks like a lot of work. It -isn't. Basically, it's just: -
-

    -
  • acquire the font -
  • generate an .afm file for the font -
  • create the groff font -
  • put the groff font in <prefix>/font/devps -
  • make sure gs knows about the font -
-
-After you've done it a couple of times, it all makes sense, and is -really quite easy. Not to mention that once you understand the -process, you can write a bash script to automate the process. -Here's an example, which you can adapt to your own needs. The -script requires an argument (the .pfb filename), then prompts for -the GROFF_FONTNAME. -

-

-#! /bin/bash
-
-# A script for installing Type1 fonts.
-#
-# Builds .afm files from .pfb files, generates a groff font from the
-# .afm file, makes a symlink in /usr/lib/ghostscript/font/ to the
-# .pfb file, and a symlink in site-font to the groff font
-
-# .pfb filename, stripped of .pfb extension
-FONT=`basename $1 .pfb`
-
-# Directory holding my personal collection of type1 fonts
-FONTDIR="$HOME/Fonts/Type1"
-
-# Directory holding system ghostscript fonts
-GS_FONTDIR="/usr/lib/ghostscript/fonts"
-
-# Location of site-font/devps
-GROFF_SITE_FONTDIR="/usr/local/share/groff/site-font/devps"
-
-# Personal groff fonts directory
-GROFF_FONTS="$HOME/Fonts/Groff"
-
-# Symlinks to textmap and text.enc
-TEXTMAP="$FONTDIR/textmap"
-TEXTENC="$FONTDIR/text.enc"
-
-if [ ! `pwd` = "$FONTDIR" ] ; then
-    echo "Changing into $FONTDIR directory.."
-    cd $FONTDIR
-    sleep 1
-else
-	sleep 1
-fi
-
-echo -n "Groff name for this font: "
-read FONTNAME
-sleep 1
-
-echo "Getting .afm.."
-getafm $FONT.pfb | gsnd - > $FONT.afm
-sleep 1
-
-echo "Creating $FONTNAME.."
-afmtodit -e $TEXTENC $FONTDIR/$FONT.afm $TEXTMAP $FONTNAME
-mv -i $FONTNAME $GROFF_FONTS
-sudo ln -s $GROFF_FONTS/$FONTNAME $GROFF_SITE_FONTDIR/$FONTNAME
-sleep 1
-
-echo "Linking $FONT in $GS_FONTDIR.."
-cd $GS_FONTDIR
-sudo ln -s $FONTDIR/$FONT.afm $FONT.afm
-sudo ln -s $FONTDIR/$FONT.pfb $FONT.pfb
-sleep 1
-
-# This next bit is Debian specific.  If you're not running a
-# Debian system, replace it with whatever your distro requires
-# in order to register Type1 fonts.
-
-if [ !`pidof -x /usr/bin/dfontmgr` ] ; then
-    echo "I will now run dfontmgr so you can register the font."
-    exec sudo dfontmgr &
-else
-    echo "You may now register the font with dfontmgr."
-fi
-
-
- - - - -

Some reflections on mom

-
- -

-Mom, as a complete macro set, had her origins -in a "library" of groff routines I wrote over the -years to handle various aspects of typesetting and document -processing that weren't adequately covered by ms, me, mm, and so -on. Typically, I'd use the library to cobble together macro -sets for new challenges as they came my way. -

-If, as Eric Raymond asserts, open source begins with a programmer -scratching a personal itch, then mom can truly be -called open source, even if, a mere humble set of macros standing on -the shoulders of a giant named troff, she isn't programming at all. -

-As a writer living in a perpetual state of penury, all the computers -I've ever owned have been hand-me-downs -- several generations -out-of-date and "resource challenged". Disk space has -always been an issue, as has processor speed and available RAM. -One of the reasons I run GNU/Linux is that it has helped enormously -to get the most out of my poor little boxes. (It has been pointed -out to me that NetBSD might be an even better choice of operating -systems for computers with limited resources.) -

-In Linux-land, the choice of typesetting systems basically comes down -to groff or TeX. Both are wonderful -- monumental achievements if you -ask me -- and both have their own particular strengths. However, for -people in my financial position (and there are millions of us around -the globe, in both developed and developing countries), TeX and groff -have one big difference: size. TeX is huge. Even its most ardent -supporters agree it suffers from bloat, on top of being complex and -unwieldy to manage. Groff is tiny by comparison, occupying minimal -disk space and having only a small memory footprint while at the same -time being flexible and powerful, typographically speaking. I've run -it successfully on a 386 with 8 megs of RAM and a 250 meg hard disk. -

-However, groff has always had a liability: it's incredibly geeky. -Owing to its very long history, it -- and its "power users" --- have remained stuck in a time warp. Most common macro packages -still look as they did in those decades when memory was exorbitantly -expensive and every byte mattered. Documentation -- not always -easy to find -- is written as if all readers are computer whizzes, -or at least have a university degree in one of the higher sciences. -

-By no means a stupid man, nor unfamiliar with the precepts of -programming, I've more than once torn my hair out over the terseness and -ambiguity of groff's documentation. Making sense of certain primitives -has often involved days of testing, interpreting the documentation -instead of just using the primitive. -

-(ADDENDUM to the previous two paragraphs: A tremendous amount of -effort has gone into creating a groff manual that can be read with -"info," as well as creating truly useful man pages. The info -manual is clear and well-written, so my comments are actually out -of date. I leave them in for the benefit of groff newbies, who may -still find the documents a bit intimidating.) -

-For some time now, groff users and macro writers have had the -option to use "long" names, yet have mostly chosen not to. -With long names, it's possible to create macro sets that are humanly -readable and easy to interpret, encouraging development and evolution. -What's more, the macros themselves need not be terse, intimidating, -and easily forgotten 1- or 2-letter commands inserted in the body -of a document. They can be sensible and helpful to everyone, groff -newbies and old hands alike. -

-Mom's macro file, om.tmac, uses long names, aliases, -and a host of other groff goodies that have become part of the -whole groff picture under the unflagging guidance of groff's current -maintainer, Werner Lemberg. Nearly every macro, number register and -string is "recognizable" simply by its name. The file is -heavily commented. A consistent, if idiosyncratic, indenting style -is used as well, significantly improving readability. Anyone -wanting to futz around with mom's macros should be -able to do so with a minimum of head scratching. -
-


- - - - -

Contact the author

-
- -

-If you have any questions or comments about mom, -suggestions to make, criticisms to offer, or bugs to report, use the -groff mailing list at -groff@ffii.org -(subscription information available -here) -or contact me, Peter Schaffter, directly at -peter@faustus.dyn.ca -or -ptpi@golden.net. - -

-Please include the word "mom" or "groff" in the -Subject: line of any message sent to my personal address, or you -risk the wrath of my implacable spam filters. :) -

-If you want to visit mom's homepage, you'll find -it -here. -

-


-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/color.html b/contrib/groff/contrib/mom/momdoc/color.html deleted file mode 100644 index a6badbc4ba20..000000000000 --- a/contrib/groff/contrib/mom/momdoc/color.html +++ /dev/null @@ -1,338 +0,0 @@ - - - - -Mom -- Colour - - - - - -Next   -Prev   -Back to Table of Contents - - -

- Coloured text -

-

-Introduction to coloured text -
-Index of colour macros -

- - -

Introduction to coloured text

- - -Mom's support for coloured text is straightforward. -You begin by telling mom about the colours you want -with -NEWCOLOR -or -XCOLOR. -Afterward, any time you want text to be coloured, you either colour -it with an -inline escape -that contains the colour name (e.g. \*[red] or -\*[blue]) or invoke the macro, -COLOR, -with the name of the colour you want. - -

-For example, say you want to have the name "Jack" in the -sentence "All work and no play makes Jack a dull boy" -appear in yellow. You'd begin by telling mom about -the colour, yellow. There are two ways of doing this; see -NEWCOLOR -and -XCOLOR -for a full explanation of the difference between the two. If you -use XCOLOR, you'd enter this: -

-

-	.XCOLOR yellow
-
- -If you use NEWCOLOR, you might enter -

-

-	.NEWCOLOR yellow RGB #FFFF00
-
- - -After "defining" (or "initializing") the colour -"yellow", you'd colourize the name, Jack, either with an -inline escape -

-

-	All work and no play makes \*[yellow]Jack\*[black] a dull boy.
-
- -or with the COLOR macro -

-

-	All work and no play makes
-	.COLOR yellow
-	Jack
-	.COLOR black
-	a dull boy.
-
- -Notice, in both examples, that a) you have to set the colour back to -black after "Jack", and b) you don't have to define or -intialize the colour, black. Mom predefines -"black", "BLACK", "white" and -"WHITE" for you. -

-For information on using colour during -document processing, -see -Colour support in document processing. -

-Please note: Mom's colour support is for text only. -She doesn't support "fill" (or "background") -colour for drawn objects. Please also note that if you're -accustomed to using groff's .defcolor to define colours, -and groff's inline \m[<colorname>] to call them, you may -continue to do so without confusing mom. - -

-

Index of colour macros

- -

- - - -


-

Creating (initializing) a colour with NEWCOLOR

-
-
Macro: NEWCOLOR <colour name> [<colour scheme>] <colour components> - -

-NEWCOLOR lets you create a colour, rather like an -artist mixing paint on a palette. The colour isn't used -immediately; NEWCOLOR merely tells -mom how to mix the colour when you need it. If -you haven't invoked NEWCOLOR (or -XCOLOR), -mom doesn't have a clue what you mean when you -reference a colour (with -COLOR -or -\*[<color name>]). -

-The first argument to NEWCOLOR is a name for your -colour. It can be anything you like--provided it's just one word -long--and can be caps, lower case, or any combination of the two. -

-The second argument, which is entirely optional, is the "colour -scheme" you want mom to use when mixing the -colour. Valid arguments are RGB (3 components, -red green blue), CYM (3 components cyan yellow -magenta), CMYK (4 components cyan magenta yellow -black) or GRAY (1 component). If you omit the -second argument, mom assumes you want RGB. -

-The final argument is the components of your colour. This can be -hexadecimal string starting with a pound sign (#) (for colour values -in the 0-255 range) or two pound signs (##) (for colour values -in the 0-65535 range), or it can be a series of decimal digits, -separated by spaces, one digit per component, with the argument -enclosed in double quotes. (If this is all gibberish to you, see -Tips for newbies.) -

-Thus, to tell mom about a colour named -"YELLOW", you could enter one of the following: -

-

-	.NEWCOLOR YELLOW #FFFF00         \"or ##FFFFFFFF0000 or "1 1 0"
-	.NEWCOLOR YELLOW RGB #FFFF00     \"or ##FFFFFFFF0000 or "1 1 0"
-	.NEWCOLOR YELLOW CYM #00FF00     \"or ##0000FFFF0000 or "0 1 0"
-	.NEWCOLOR YELLOW CYMK #00FF0000  \"or ##0000FFFF00000000 or "1 1 0"
-
- -After you've told mom about a colour, you can then get -her to set text in that colour either with the inline escape -\*[<colorname>] -or the macro -COLOR. -(See the -example, -above.) -
-

Tips for newbies

-Colour manipulation can be tremendously confusing if you don't have -a background in graphic arts or computing. My advice, if color -intimidates you, is to stick to using mom's -default RGB colour scheme, and to fire up a color chooser that -gives you the RGB values you want for the colour you select. Plug -those values into the components argument to -NEWCOLOR, and you'll get the colour you want. -Both the KDE and gnome desktops have colour selectors that provide -you with the shorter RGB hexadecimal string. If you're not running -KDE or gnome, the X utility, xcolorsel, provides you with a similar -functionality, although it only provides RGB values for 256 -pre-defined colours. If you use xcolorsel, be sure to click the -button "Display format" and select "8 bit truncated -rgb". -

-Alternatively, you can use mom's simpler -XCOLOR -macro to initialize one of the 256 pre-defined X colours by -supplying the name of the color as an argument. -
- - - -


-

Initializing a colour with XCOLOR

-
-Macro: XCOLOR <X color name> [<alias>] -
-*<X color name> must be all one word, all lower case. -
-(See -
Finding X color names -for how to get a list of valid colour names.) - -

-XCOLOR is similar to NEWCOLOR in -that it tells mom to initialize a colour, but it's -easier to use. All you have to do is pass it, as an argument, the -legal name of one of the 256 pre-defined X colours. The name must -be all one word, and, breaking with mom policy, it -must be entered in lower case. -

-For example, if you want to intialize the X colour, coral, all you -have to do is enter -
-

-	.XCOLOR coral
-
- -Afterwards -

-

-	.COLOR coral
-
- -will colourize subsequent text coral until you instruct -mom to return to black, or some other pre-defined -initialized colour. (The -inline escape -\*[coral] will equally colourize text coral after you've -initialized the colour with XCOLOR.) -

-The downside of XCOLOR is that you can't create -custom colours. This restriction, however, is mitigated by the -fact that for many users, 256 colours is more than enough to play -around with. -

-While some X colours have fanciful names (peachpuff, papayawhip, -thistle, snow), many are self-explanatory and self-descriptive in -ordinary colour terms. "blue" is pure (rgb) blue, -"green" is pure (rgb) green, and so on. Furthermore, for -many X colors, there exist four variants, each representing -increasingly darker shades of the same colour. For example, -"blue" (and "blue1") are the brightest forms of -(rgb) blue; "blue2", "blue3" and "blue4" -are increasingly darker shades of the same blue. For that reason, -you may find XCOLOR is a better choice than -NEWCOLOR when it comes to initializing common -colors. -

-The whimsical nature of X colour names sometimes makes for names -that are long to type in, e.g. "mediumspringgreen". -The optional second argument to XCOLOR allows you -to come up with more convenient name by which to reference the -colour. For example, you could enter -

-

-	.XCOLOR mediumspringgreen mygreen
-	    or
-	.XCOLOR mediumspringgreen MYGREEN
-
- -so that whenever you want text mediumspringgreen-ed, you can use -either .COLOR mygreen (or .COLOR MYGREEN) or -the inline escape \*[mygreen] (or -\*[MYGREEN].) -

-

Finding X color names

-
-There are two ways of finding the names of the pre-defined X -colours. One is to consult the file, rgb.txt, included with -all X11 installations. The location of the file on a Debian -GNU/Linux distribution is typically /etc/X11/rgb.txt. Other -distributions and other X installations may have the file in -another location. The file lists the colour names, but doesn't -show you what the colours actually look like. -

-A better way to get the colour names, as well as to see what the -colours look like, is to fire up a colour chooser (like xcolorsel) -that both lists the colour names and shows a swatch of the colour -as well. -

-Whichever method you use to find X color names, remember that the -names, passed as arguments to XCOLOR, must -be all one word, all in lower case. -
- - - -


-

Invoking a color

-
-Macro: COLOR <colorname> -
-
Inline: \*[<colorname>] -

- -Once you've told mom about a colour (via -NEWCOLOR or XCOLOR), you use either -the macro, COLOR, or the -inline escape, -\*[<colorname>], to cause mom to -set subsequent text in that colour. See the -example, -above, which shows both in action. -

-NOTE: You can use the -\*[<colorname>] inline escape in any -document processing -macro that takes a -string argument. -However, you must remember to reset the colour at the end of the -argument (typically with \*[black]) unless you want all -subsequent invocations of that particular macro to be colourized. -

-Furthermore, if you use \*[<colorname>] in the -string argument passed to -.HEAD, -.SUBHEAD -or -.PARAHEAD, -and you've requested that any of these types of heads be numbered, -the numbers themselves will not be coloured, only the text you -passed the macro. If you wish the numbers to be colourized as -well, you must explicitly tell mom that you wish -all of the head(s), subhead(s) or parahead(s), including the -numbers, colourized by invoking the appropriate -control macro. - -
- -


-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/cover.html b/contrib/groff/contrib/mom/momdoc/cover.html deleted file mode 100644 index 2566547cb511..000000000000 --- a/contrib/groff/contrib/mom/momdoc/cover.html +++ /dev/null @@ -1,512 +0,0 @@ - - - - -Mom -- Document processing, creating a cover page - - - - - -Next   -Prev   -Back to Table of Contents -

- - -

CREATING A COVER PAGE

- - - - -

Introduction to cover pages

-

-As of version 1.19 of mom, you can now have cover -pages generated automatically. -

-Though identical in treatment, mom provides two -kinds of cover pages: section cover pages (which I shall refer to -simply as "cover pages") and document cover pages -("doc covers"). -

-A document cover page -(doc cover) -is what you'd most likely use at the start of a collated document, where -you might want the name of the complete document, the author(s) and -the copyright line to appear. Another place you might use a doc -cover is for a novel, where you want the title of the novel, not -the chapter title or chapter number, as the first cover page. -

-A section -cover -page is what you'd use for cover pages that separate sections of a -collated document. A section cover page (but not a doc cover page) -in a collated document could, for example, simply read "PART -I". -

-In non-collated documents (say, an essay) you can use either a -section cover or a doc cover to generate a cover sheet. -

-In addition, nothing prevents you from generating both a doc cover -page and a section cover page for every document in a collated -document. Or you can selectively disable the automatic generation -of either doc covers or section covers in a collated document, -on-the-fly. -

-Important note: -automatic generation of cover or doc cover pages after the first -one(s) only takes place if you are working with collated documents. -Mom provides no mechanism for saying "print -a section cover here even though I'm still working on the same -(non-collated) document." - -

Description of what mom does on cover pages

- -By default, mom typesets cover (and doc cover) -pages identically to -docheaders -(see -How to change the look of docheaders -for a description of what a docheader looks like). The only -differences are -
-
    -
  • the position on the page where the information is output -
  • the (optional) addition of copyright and miscellaneous - information -
  • there's no running text underneath -
- -

-You tell mom what you want to appear on the cover -pages through the arguments you pass to -COVER -and/or -DOC_COVER. -Provided you have already given mom the -appropriate references macro (e.g. -TITLE -or -AUTHOR), -she will output cover (and doc cover) pages identically to how she -would output docheaders containing the same information. -

-By default, mom starts cover (and doc cover) pages -one-third of the way down the page. This can be changed through -the use of the control macros -COVER_ADVANCE/DOC_COVER_ADVANCE. -

-If you request copyright information (and have already given -mom the reference macro, -COPYRIGHT), -she sets it, by default, in a smaller -point size -in the bottom right hand corner of the cover (or doc cover) page. -The default point size and the position can be controlled -with -COVER_COPYRIGHT_SIZE/DOC_COVER_COPYRIGHT_SIZE -and -COVER_COPYRIGHT_QUAD/DOC_COVER_COPYRIGHT_QUAD. -

-Similarly, if you request miscellaneous information (and have already given -mom the reference macro, -MISC), -she sets it, by default, in a smaller point size in the bottom left -hand corner of the cover (or doc cover) page. The default point -size is dependent on -COVER_COPYRIGHT_SIZE/DOC_COVER_COPYRIGHT_SIZE, -but the position can be controlled with -COVER_MISC_QUAD/DOC_COVER_MISC_QUAD. - - -

-NOTE: mom does not set any -headers -or -footers -on cover pages. Neither does she set any page numbers. From the -point of pagination, cover (and doc cover) pages are considered -"null" pages; if you wish them to be included in the -pagination scheme (even though no page numbers appear), you must -set the page number of each first page following a -COLLATE -manually with -PAGENUMBER. - - -

-Finally, if you want to design your own cover page(s), you can -always typeset them (using the -typesetting macros), -invoke -NEWPAGE, -set up your document in full (see -Tutorial -- Setting up a mom document), -and lastly invoke -START. -The cover page (and any typesetting commands on it) will have no -effect on mom's processing of the document itself, -the first page of which, moreover, will be numbered "1" -unless you instruct her otherwise with -PAGENUMBER. -

- - - -


-

- - Macro: COVER -
- Macro: DOC_COVER -
- Required argument: TITLE | DOCTITLE | COVERTITLE | CHAPTER | CHAPTER_TITLE | CHAPTER+TITLE -
- Optional arguments: [ SUBTITLE AUTHOR DOCTYPE COPYRIGHT MISC ] -

- *Note: these macros should be placed in the - "style-sheet" section of your document setup (see the - Tutorial -- Setting up a mom document), - i.e. after PRINTSTYLE (and/or DOCTYPE and/or COPYSTYLE), but - before START. - - -

-COVER and DOC_COVER behave -identically. The reason mom provides two macros -for automatic cover page generation is so that you can have two -different kinds of covers with different information on each. -

-Imagine, for a moment, you've written a document comprised of three -sections. When you -COLLATE -the document for output, you could use DOC_COVER -to generate a cover page that contained the name of the entire -document, your (the author's) name, and perhaps the copyright date. -Subsequently, you could use COVER, after each -COLLATE but before each -START, -to generate a cover page (or cover "sheet", if you prefer) -containing just the name of the section. -
- -

The required argument

- -Both COVER and DOC_COVER, whenever -invoked, require a first argument, as listed above. This first argument -will become the first bit of information mom -prints on the cover (or doc cover) page (i.e. it will be the -"title"). -

-In order for the information to appear, you must, of course, first -have given mom the appropriate -reference macro. -A list of arguments with their equivalent reference macros follows. -
- -

-
TITLE -
-means the argument you gave to -TITLE -
DOCTITLE -
-means the argument you gave to -DOCTITLE -
COVERTITLE -
-means the argument you gave to -COVERTITLE -or -DOC_COVERTITLE -
CHAPTER, CHAPTER_TITLE, CHAPTER+TITLE -
-see below (How the CHAPTER argument and friends work) -
-
- -

How the CHAPTER argument and friends work

- -CHAPTER, by itself, will print the CHAPTER_STRING as well -as the chapter number that you gave to -CHAPTER. -For example, assuming a vanilla setup for your chapter -

-

-	\# Reference macros
-	.CHAPTER 1
-	.CHAPTER_TITLE "The Bonny Blue Yonder"
-	<other stuff>
-	.COVER CHAPTER \" (or .DOC_COVER CHAPTER)
-	.START
-
- -will simply print -

-

-	Chapter 1
-
- -CHAPTER_TITLE will print the chapter title you -gave to -CHAPTER_TITLE. -For example, assuming a vanilla setup for your chapter -

-

-	\# Reference macros
-	.CHAPTER 1
-	.CHAPTER_TITLE "The Bonny Blue Yonder"
-	<other stuff>
-	.COVER CHAPTER_TITLE \" (or .DOC_COVER CHAPTER_TITLE)
-	.START
-
- -will simply print -

-

-	The Bonny Blue Yonder
-
- -

-CHAPTER+TITLE will print both the -chapter string + number AND the chapter title. For example, -assuming a vanilla setup for your chapter -

-

-	\# Reference macros
-	.CHAPTER 1
-	.CHAPTER_TITLE "The Bonny Blue Yonder"
-	<other stuff>
-	.COVER CHAPTER+TITLE \" (or .DOC_COVER CHAPTER+TITLE)
-	.START
-
- -will print -

-

-	      Chapter 1
-	The Bonny Blue Yonder
-
- -

The optional arguments

- -The remainder of the arguments to COVER and -DOC_COVER are optional. They refer specifically -to the information you gave the -reference macros -bearing the same name as the arguments. -

-You may enter as many or as few as you would like to see on your -cover (or doc cover) page. The only hitch is--PAY ATTENTION, -CLASS!--they must be entered in the order given above. For -example, if you want TITLE, AUTHOR, -COPYRIGHT and MISC -

-

-	.COVER TITLE AUTHOR COPYRIGHT MISC
-
- -is correct, while -

-

-	.COVER TITLE AUTHOR MISC COPYRIGHT
-
- -is not. -
- -

What the DOCTYPE argument means

- -When you pass COVER or DOC_COVER -the argument, DOCTYPE, it refers to the argument you -gave to -DOCTYPE NAMED. -For example, if, in your -docstyle macros -you gave a -

-

-	.DOCTYPE NAMED "Abstract"
-
- -the argument, DOCTYPE, in the COVER or -DOC_COVER macros, would mean that you wanted the -word, Abstract, to appear on the cover (or doc cover), just as it -would in the -docheader. -
- - - -
-

- - Macro: COVERS <toggle> -
- Macro: DOC_COVERS <toggle> - -

-By default, if you give mom a -COVER -or -DOC_COVER -macro, she will print it. In a document that contains sections, -articles or chapters formerly treated as "one-off's" but -now being -collated, -such behaviour may not be desirable. -

-Mom lets you selectively enable or disable the -generation of covers and/or doc covers with the toggle macros -COVERS and DOC_COVERS. Because -they're toggle macros, simply invoking them by themselves enables -automatic cover (or doc cover) generation, while invoking them -with any argument at all (OFF, QUIT, X, etc) -disables cover (or doc cover) generation. -

-NOTE: You must place these macros prior to any -instance of -START. Since they're -"on" by default, there's no need to use them if you want -covers. However, if you don't, especially in the kind of scenario -described above, the best place to put them (most likely with an -OFF, NO, X, etc. argument), is immediately after the -first invocation of START. By doing so, you ensure -they precede all subsequent instances of START. -

- -


-

-

Control macros--changing the defaults for covers and document covers

-The default typographic appearance of the items on a cover (or doc -cover) page is identical to that of the items in a -docheader. -(See -How to change the look of docheaders -for a description of the defaults.) -

-COPYRIGHT -and -MISC, -which do not appear in docheaders, have the following default -characteristics: -
-

    -
  1. The copyright line is set in the bottom right hand corner - of the page, 2 - point sizes - smaller than the size of - running text -
  2. The "misc" line is set in the bottom left hand - corner of the page, in the same family, font and point size - as the copyright line. -
-

-With the exception of the copyright and "misc" lines, the -defaults for the entirety of cover (and doc cover) pages, and all -the elements thereon, can be changed with control macros whose -behaviour and arguments are identical to -the control macros used for docheaders. -The only difference is the name by which you invoke the control -macro(s). -

-The complete list of cover (and doc cover) page control macros -follows; please refer to the -docheader control macros index -in order to understand how to use them. -

-

Index of cover and doc cover control macros

-
-.COVER_ADVANCE  .DOC_COVER_ADVANCE -+
-.COVER_FAMILY   .DOC_COVER_FAMILY   | like DOCHEADER_
-.COVER_LEAD     .DOC_COVER_LEAD    -+
-
-.COVER_TITLE_FAMILY  .DOC_COVER_TITLE_FAMILY -+
-.COVER_TITLE_FONT    .DOC_COVER_TITLE_FONT    | like
-.COVER_TITLE_COLOR   .DOC_COVER_TITLE_COLOR   | TITLE_
-.COVER_TITLE_SIZE    .DOC_COVER_TITLE_SIZE   -+
-
-.COVER_CHAPTER_TITLE_FAMILY  .DOC_COVER_CHAPTER_TITLE_FAMILY -+
-.COVER_CHAPTER_TITLE_FONT    .DOC_COVER_CHAPTER_TITLE_FONT    | like
-.COVER_CHAPTER_TITLE_COLOR   .DOC_COVER_CHAPTER_TITLE_COLOR   | CHAPTER_TITLE_
-.COVER_CHAPTER_TITLE_SIZE    .DOC_COVER_CHAPTER_TITLE_SIZE   -+
-
-.COVER_SUBTITLE_FAMILY  .DOC_COVER_SUBTITLE_FAMILY -+
-.COVER_SUBTITLE_FONT    .DOC_COVER_SUBTITLE_FONT    | like
-.COVER_SUBTITLE_COLOR   .DOC_COVER_SUBTITLE_COLOR   | SUBTITLE_
-.COVER_SUBTITLE_SIZE    .DOC_COVER_AUTHOR_SIZE     -+
-
-.COVER_ATTRIBUTE_COLOR  .DOC_COVER_ATTRIBUTE_COLOR - like ATTRIBUTE_COLOR
- - the macro, .ATTRIBUTE_STRING, controls the attribution string
-   for both docheaders and cover pages; cover pages have no
-   separate ATTRIBUTE_STRING macro
-
-.COVER_AUTHOR_FAMILY  .DOC_COVER_AUTHOR_FAMILY -+
-.COVER_AUTHOR_FONT    .DOC_COVER_AUTHOR_FONT    | like
-.COVER_AUTHOR_COLOR   .DOC_COVER_AUTHOR_COLOR   | AUTHOR_
-.COVER_AUTHOR_SIZE    .DOC_COVER_AUTHOR_SIZE   -+
-
-.COVER_DOCTYPE_FAMILY  .DOC_COVER_DOCTYPE_FAMILY -+
-.COVER_DOCTYPE_FONT    .DOC_COVER_DOCTYPE_FONT    | like
-.COVER_DOCTYPE_COLOR   .DOC_COVER_DOCTYPE_COLOR   | DOCTYPE_
-.COVER_DOCTYPE_SIZE    .DOC_COVER_DOCTYPE_SIZE   -+
-
-.COVER_COPYRIGHT_FAMILY  .DOC_COVER_COPYRIGHT_FAMILY -+
-.COVER_COPYRIGHT_FONT    .DOC_COVER_COPYRIGHT_FONT    | like any
-.COVER_COPYRIGHT_COLOR   .DOC_COVER_COPYRIGHT_COLOR   | of the above
-.COVER_COPYRIGHT_SIZE    .DOC_COVER_COPYRIGHT_SIZE   -+
-.COVER_COPYRIGHT_QUAD    .DOC_COVER_COPYRIGHT_QUAD
- - the copyright quad can be either L (left) or R (right); default is left
-
-.COVER_MISC_COLOR  .DOC_COVER_MISC_COLOR - like any of the above _COLOR
-.COVER_MISC_QUAD   .DOC_COVER_MISC_QUAD
- - the misc quad can be either L (left) or R (right); default is right
-
- -Note: COVER_MISC and -DOC_COVER_MISC have only two control macros, -_COLOR and _QUAD. The -family, font and size of the MISC argument to -COVER or DOC_COVER are always the -same as for COPYRIGHT. Should you wish the family, font -or size to be different from COPYRIGHT, I suggest setting -the type specs for COPYRIGHT to the ones you want for -MISC, then altering them for COPYRIGHT using -inline escapes -in the -string argument -you pass to the macro, -COPYRIGHT. (Of course, -you could always do the reverse, but if you pass several arguments -to -MISC, -it's more likely you want to get MISC right first.) - -

-


-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/definitions.html b/contrib/groff/contrib/mom/momdoc/definitions.html deleted file mode 100644 index 80542afa0395..000000000000 --- a/contrib/groff/contrib/mom/momdoc/definitions.html +++ /dev/null @@ -1,768 +0,0 @@ - - - - -Mom -- Definitions and Terms - - - - - -Next   -Prev   -Back to Table of Contents -

- - -

DEFINITIONS OF TERMS USED IN THIS MANUAL

- - -Typesetting Terms -
-Groff Terms -
-Mom Document Processing Terms -

-I use a number of typesetting-specific and groff-specific terms -throughout this documentation, as well as a few terms that apply -to mom herself. To make life easier, I'll explain -them here. Refer back to this section should you encounter a word -or concept you're not familiar with. -

-


- - -

Typesetting terms

-
- - - -
-
Ascender -
The portion of a letter that extends above the bowl. For example, -the letters a, c, and e have no ascenders. The letters b, d, and h -do. - -
Baseline -
The imaginary line on which the bottoms of capital letters and the -bowls of lower case letters rest. - -
Ballot box -
An unfilled square, usually -cap-height -in size, typically placed beside items in a checklist. - -
Bullet -
A small, filled circle typically found beside items or points in -a list. - -
Cap-height -
The height of the tallest capital letter in a given -font -at the current -point size. - -
Descender -
The portion of a letter that extends beneath the -baseline -(j, q, y are letters with descenders). - -
Discretionary hyphen -
A symbol inserted between two syllables of a word that indicates to a -typesetting program the legal hyphenation points in the word. Normally, -if hyphenation is turned on, groff knows where to hyphenate words. -However, hyphenation being what it is (in English, at any rate), -groff doesn't always get it right. Discretionary hyphens make sure -it does. In the event that the word doesn't need to be hyphenated -at all, groff leaves them alone. In groff, the discretionary hyphen is -entered with -

-

-	\%
-
- -(backslash followed by a percent). - -
Drop cap -
A large, usually upper-case letter that introduces the first -paragraph of a document or section thereof. The top of the drop -cap usually lines up with the top of the first line of the -paragraph, and typically "drops" several lines lower. -Text adjacent to the drop cap is indented to the right of the -letter until the bottom of the drop cap is reached, at which -point text reverts to the left margin. - -
Em/en -
An em is a relative measurement equal to the width of the -letter M at a given -point size -in a given -font. -Since most Ms are designed square, an em is usually (but sometimes -erroneously) considered to be the same size as the current point -size (i.e. if the point size of the type is 12, one em equals 12 -points). An en is equal to the width of a letter N (historically -2/3 of an em, although groff treats an en as 1/2 of an em). -Typically, ems and ens are used to measure indents, or to define the -length of dashes (long hyphens). - -
Family -
The collective name by which a collection of -fonts -are known, e.g. Helvetica, Times Roman, Garamond. - -
Figure space/Digit space -
A -fixed width space -that has the width of one digit. Used for aligning numerals in, -say, columns or numbered lists. In groff, the figure space is -entered with -

-

-	\0
-
- -(backslash followed by a zero). - -
Fixed width space -
Equal to -word space, -but does not expand or contract when text is -justified. -In groff, fixed width space is entered with -

-

-	\<space>
-
- -where <space> means "hit the spacebar on your keyboard." - -
Font -
The specific -weight -and -shape -of type within a -family, -e.g. light, medium, bold (which are weights), and roman, italic, -condensed (which are shapes). By default, groff knows of four fonts -within its default set of families: R (medium roman), I (medium -italic), B (bold roman) and BI (bold italic). - -
Force justify - -
Sometimes, in -justified -text, a line needs to be broken short of the right margin. Force -justifying means telling a typesetting program (like groff) that you -want the line broken early AND that you want the line's word spacing -stretched to force the line flush with the right margin. - -
Gutter -
The vertical whitespace separating columns of type. - -
Justify/justification -
Lines of type are justified when they're flush at both the left and -right margins. Justification is the act of making both margins flush. -Some people use the terms "left justified" and "right justified" -to mean type where only the left (or right) margins align. I don't. -See -quad. - -
Kerning -
Moving pairs of letters closer together to remove excess -whitespace between them. In the days before phototypesetting, -type was set from small, rectangular blocks of wood or metal, each -block having exactly one letter. Because the edge of each block -determined the edge of each letter, certain letter combinations (TA, -for example) didn't fit together well and had to be mortised by hand -to bring them visually closer. Modern typesetting systems usually -take care of kerning automatically, but they're far from perfect. -Professional typesetters still devote a lot of time to fitting letters -and punctuation together properly. - -
Kern Units -
A relative distance equal to 1/36 of the current -point size. -Used between individual letters -for -kerning. -Different typesetting systems use different values (1/54 is -popular), and sometimes call kern units by a different name. -

-Experts: -
A kern unit has nothing to do with groff -machine units. - -

Lead/leading -
The distance from the -baseline -of one line of type to the line of type immediately beneath it. -Pronounced "ledding." Also called line spacing. Usually measured -in -points. -

-In case you're interested... In previous centuries, -lines of type were separated by thin strips of--you guessed -it--lead. Lines of type that had no lead between them were said to -be "set solid." Once you began separating them with strips -of lead, they were said to be "leaded", and the spacing was -expressed in terms of the number of -points -of lead. For this reason, "leading" and "line -spacing" aren't, historically speaking, synonymous. If type -was set 10 on 12, for example, the leading was 2 points, not 12. -Nowadays, however, the two terms are used interchangeably to mean -the distance from baseline to baseline. - -

Leaders -
Single characters used to fill lines, usually to their end. -So called because they "lead" the eye from one element -of the page to another. For example, in the following (brief) -Table of Contents, the periods (dots) are leaders. -

-

-	Foreword............... 2
-	Chapter 1.............. 5
-	Chapter 2.............. 38
-	Chapter 3.............. 60
-
- -
Ligature -
Ligatures are letters joined together to form a single character. -The commonest are fi, fl, ff, ffi and ffl. Others are ae and oe. -Occasionally, one sees an st ligature, but this is archaic and -quite rare. - -
Picas/Points -
There are twelve points in a pica, and six picas in an inch -(hence 72 points to the inch). In the same way that gem-dealers -have always used their own system of measurement for weight (carats), -typographers have always used their own system of measurement for type. - -
Point Size -
The nominal size of type, measured in -points -from the bottom of the longest -descender -to the top of the highest -ascender. -In reality, type is always fractionally smaller than its point size. - -
Quad -
When only one margin of type is flush, lines of type are quadded in -the direction of the flush margin. Therefore, quad left means the -left margin is flush, the right isn't. Quad right means the right -margin is flush, the left isn't. Quad centre means neither the left -nor the right margin is flush; rather, lines of type are quadded on -both sides so that type appears centred on the page. - -
Rag -
Describes a margin that isn't flush. Rag right means the right -margin isn't flush. Rag left means the left margin isn't flush. -The expression "flush left/rag right" is sometimes used to describe -type that is -quadded -left. - -
Shape -
The degree of slant and/or the width of characters. -(Technically speaking, this is not a proper typesetting term; -however, it may help clarify some concepts presented in these -documents.) -

-Some typical shapes are: -

    -
  • "Roman", which has no slant, and has letterforms of - average width -
  • "Italic", which is slanted, and has letterforms - of average width -
  • "Condensed", which has no slant, but has - letterforms narrower than the average represented by Roman -
  • "Condensed Italic", which is slanted, with letterforms narrower - than average -
-The term -font, -as it is used in these documents, refers to a combination of -weight -and shape. - -
Solid/set solid -
When no -lead -is added between lines of type (i.e. the -point size -and linespacing are the same), the lines are said to be "set -solid." - -
Track kerning/Line kerning -
Sometimes, it's advantageous to increase or decrease the amount of -space between every letter in a line by an equal (usually small) -amount, in order to fit more (or fewer) characters on the line. -The correct term is letter spacing, but track kerning and line kerning -(and sometimes, just "kerning") have come to mean the same thing. - -
Unbreakable space -
Equal to -word space, -however words separated by an unbreakable space will always be kept -together on the same line. Expands and contracts like word space. -Useful for proper names, which one should, whenever possible, avoid -splitting onto two lines. In groff, unbreakable space is entered -with -

-

-	\~
-
- -(backslash followed by a tilde). - -
Weight -
The thickness of the strokes of letterforms. Medium and Book -have average thicknesses and are the weights used for most of the -text in books, magazines, newspapers, etc. Light has strokes -slightly thinner than Medium or Book, but is still acceptable for -most text. Semibold, Bold, Heavy and Black all have strokes of -increasing thickness, making them suitable for heads, subheads, -headlines and the like. - -
Word space -
The amount of whitespace between words. When text is -justified, -word space expands or contracts to make the margins flush. - -
x-height -
The height of a lower case letter x in a given font at a given -point size. Generally used to mean the average height of the bowl -of lower case letters. -
-

-


- - -

Groff terms

-
- - -
- -
Alias -
A -macro -invoked by a name different from its "official" -name. For example, the official name of the macro to change -family -is FAMILY. Its alias is -FAM. Aliases may be created for any macro (via the -ALIAS -macro) provided the alias uses a name not already taken -by the mom macros or one of the groff -primitives. -For a complete list of words or names you must not use, see the -list of reserved words. - -
Arguments -
Parameters or information needed by a -macro -to do its job. For example, in the macro -

-

-	.PT_SIZE 12
-
- -"12" is the argument. In the macro -

-

-	.QUAD LEFT
-
- -LEFT is the argument. Arguments are separated from macros by spaces. -Some macros require several arguments; each is separated by a space. - -
Comment Lines -
Input lines -introduced with the comment character -

-

-	\#
-
- -When processing output, groff silently ignores everything on a -line that begins with the comment character. - -
Control Lines -
Instructions to groff that appear on a line by themselves, -which means that "control lines" are either -macros -or groff -primitives. -Control lines begin with a period or, occasionally, an apostrophe. - -
Filled lines/fill mode -
Automatic -justification -or -quadding. -In fill mode, the ends of lines as they appear in your text editor -are ignored. Instead, words from adjoining -input lines -are added one at a time to the output line until no more words fit. -Then, depending whether text is to be -justified -or -quadded -(left, right, or centre), and depending on whether automatic -hyphenation is turned on, groff attempts to hyphenate the last word, -or, barring that, spreads and breaks the line (when justification -is turned on) or breaks and quads the line (when quadding is turned -on). -

- -Nofill mode (non-filled text) means that groff respects the ends -of lines as they appear in your text editor. - -

Inline escapes -
Instructions issued to groff that appear as part of an -input line -(as opposed to -macros, -which must appear on a line by themselves). Inline escapes are -always introduced by the backslash character. For example, -

-

-	A line of text with the word T\*[BU 2]oronto in it
-
- -contains the inline escape \*[BU 2] (which means "move the letter -'o' 2 -kern units -closer to the letter 'T'"). -

-Mom's inline escapes always take the form -\*[ESCAPE], where ESCAPE -is composed of capital letters, sometimes followed immediately -by a digit, sometimes followed by a space and a -numeric argument. -Groff's escapes begin with the backslash character -but typically have no star and are in lower case. For example, the -mom escapes to move forward 6 points on a line are -either -

-

-	\*[FP6]  or  \*[FWD 6p]
-
- -while the groff escape for the same thing is -

-

-	\h'6p'
-
- -
Input line -
A line of text as it appears in your text editor. - -
Macros -
Instructions embedded in a document that determine how groff processes -the text for output. mom's macros always begin with a -period, on a line by themselves, and must be typed in capital letters. -Typically, macros contain complex commands issued to groff--behind -the scenes--via groff -primitives. - -
Machine units -
A machine unit is 1/1000 of a -point -when the groff device is ps. ("ps" means -"PostScript"--the default device for which groff -prepares output, and the device for which mom was -specifically designed.) - -
Numeric argument -
An -argument -that has the form of a digit. Numeric arguments can be built out -of arithmetic expressions using +, -, *, and / for plus, minus, -times, and divided-by respectively. If a numeric argument requires -a -unit of measure, -a unit of measure must be appended to every digit in the -argument. For example: -

-

-	.ALD 1i-1v
-
- -NOTE: groff does not respect the order of operations, -but rather evaluates arithmetic expressions from left to right. -Parentheses must be used to circumvent this peculiarity. Not to -worry, though. The likelihood of more than just the occasional plus -or minus sign when using mom's macros is slim. - -
Output line -
A line of text as it appears in output copy. - -
Primitives -
The two-letter, lower case instructions groff uses as its -native command language, and out of which macros are built. - -
String Argument -
Technically, any -argument -that is not numeric. In this documentation, string argument means -an argument that requires the user to input text. For example, in -the -macro -

-

-	.TITLE "My Pulitzer Novel"
-
- -"My Pulitzer Novel" is a string argument. -

-Because string arguments must be enclosed by double-quotes, you can't -use double-quotes as part of the string argument. If you need -double-quotes to be part of a string argument, use the -inline escapes -\(lq and \(rq (leftquote and rightquote -respectively) in place of the double-quote character ("). - -

Unit of measure -
The single letter after a -numeric argument -that tells mom what measurement scale the argument -should use. Common valid units are: -

-

- -
i = inches -
p = points -
P = picas -
c = centimetres -
m = ems -
n = ens -
v = the current leading (line space)
-
-

Units of measure must come immediately after the numeric argument (i.e. -with no space between the argument and the unit of measure), like this: -

-

-	.ALD 2v
-	.LL  39P
-	.IL  1i
-
- -The above example advances 2 line spaces and sets the line length to -39 picas with a left indent of 1 inch. -

-IMPORTANT: Most mom macros -that set the size or measure of something MUST be given a unit of -measure. mom's macros do not have default units -of measure. There are a couple of exceptions, the most notable of -which are PT_SIZE and LS. Both use -points -as the default unit of measure, which means -you don't have to append "p" to their argument. -

-You can enter decimal values for any unit of measure. Different units -may be combined by adding them together (e.g. 1.5i+2m, which gives a -measure of 1-1/2 inches plus 2 ems). -

-NOTE: a pica is composed of 12 points, -therefore 12.5 picas is 12 picas and 6 points, not 12 picas -and 5 points. If you want 12 picas and 5 points, you have to -enter the measure as 12P+5p. - -

Zero-width character -
The -inline escape -that allows you to print a literal period, apostrophe and, if -output lines -are -filled, -a space that falls at the beginning of an -input line. -It looks like this: -

-

-	\&
-
- -(backslash followed by an ampersand). -

-Normally, groff interprets a period (or an apostrophe) at the beginning -of an input line as meaning that what follows is a -control line. -In fill modes, groff treats a space at the beginning of an input -line as meaning "start a new line and put a space at the -beginning of it." If you want groff to interpret periods and -apostrophes at the beginning of input lines literally (i.e. print -them), or spaces at the beginning of input lines as just garden -variety word spaces, you must start the line with the zero-width -character. - -

-


- - -

Mom's Document Processing Terms

-
- - -
-
Blockquote -
Cited material other than -quotes. -Typically set at a smaller point size than paragraph text, indented -from the left and right margins. Blockquotes are -filled. - -
Control macro -
Macros used in -document processing -to control/alter the appearance of document elements (e.g. heads, -quotes, footnotes, -headers, -etc.). - -
Document header/docheader -
Document information (title, subtitle, author, etc) output -at the top of page one. - -
Epigraph -
A short, usually cited passage that appears at the -beginning of a chapter, story, or other document. - -
Footer/page footer -
Document information (frequently author and title) output in -the bottom margin of pages after page one. Not to be -confused with footnotes, which are considered part of -running text. - -
Head -
A title that introduces a major section of a document. - -
Header/page header -
Document information (frequently author and title) output in -the top margin of pages after page one. -

-NOTE: In terms of content and style, headers and -footers -are the same; they differ only in their placement on the page. In -most places in this documentation, references to the content or -style of headers applies equally to footers. - -

Linebreak/author linebreak -
A horizontal gap in -running text, -frequently set off by typographic symbols such as asterisks or -daggers. Used to indicate a shift in the content of a document -(e.g. a scene change in a short story). Also commonly called a -scene break or a section break. - -
Paragraph head -
A title joined to the body of a paragraph; hierarchically one -level beneath -subheads. - -
Quote -
A quote, to mom, is a line-for-line setting -of quoted material (e.g. poetry, song lyrics, or a snippet of -programming code). You don't have to use -BR -with quotes. - -
Running text -
In a document formatted with mom, running -text means text that forms the body of the document, including -elements such as heads and subheads. -Docheaders, -headers, -footers -and page numbers are NOT part of running text. - -
Subhead -
A title used to introduce secondary sections of a document; -hierarchically one level beneath sections introduced by -heads. - -
Toggle -
A macro or tag that, when invoked without an argument, -begins something or turns a feature on, and, when invoked with -ANY argument, ends something or turns a feature off. See -Example 3 -of the section -How to read macro arguments. -
- -

-


-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/docelement.html b/contrib/groff/contrib/mom/momdoc/docelement.html deleted file mode 100644 index 13a1e0eeeb10..000000000000 --- a/contrib/groff/contrib/mom/momdoc/docelement.html +++ /dev/null @@ -1,5041 +0,0 @@ - - - - -Mom -- Document Processing, element tags - - - - - -Next   -Prev   -Back to Table of Contents -

- - -

THE DOCUMENT ELEMENT TAGS

- - - - - -

Introduction to the document element tags

-
- -Once you've completed the setup for a document (see -Setting up a mom document), -formatting it is a snap. Simply invoke the appropriate tag for -each document element as you need it. The tags are macros that -tell mom, "This is a paragraph, this -is a subhead, this is a footnote," and so on. -

-The list of tags is actually quite small -- ideal for the users -mom brought herself into being for (see -Who mom is meant for). -However, the list of macros that control the appearance of the -tags upon output is extensive. Generally, for each tag, -there are -control macros -for the tag's family, font and point size. Where appropriate, there -are macros to control leading, indents, quad and special features -as well. -

-Mom has tasteful defaults for all the tags, hence you -only use the control macros when you want to change the way -she does things. This is usually done prior to -START, -but can, in fact, be done at any time in the course of a document. -Any change to a tag's style affects all subsequent invocations of -the tag. -

- -

Control macros -- changing defaults

- -

-The control macros for document processing tags let you -"design" the look of all the parts of your documents -- -should you wish. At a bare minimum, all tags have macros to change -mom's defaults for family, font, point size and -colour. Where appropriate, there are macros to control leading, -indents and quad as well. -

-In addition, many tags have special macros to control features that -are pertinent to those tags alone. Have a look at the section dealing -with any particular tag to find out what macros control the tag, -and what mom's defaults for the tag are. -

-The control macros may be used at any time during the course of -a document (i.e. before or after -START). The changes you -make alter all subsequent invocations of the affected tag until -you make another change, either by passing new arguments to the -tag's control macro, or toggling a particular feature of the tag on -or off. -

-And don't forget: the -typesetting macros -can be used at any time, including inside -toggle -tags (affecting only that particular invocation of the tag). -Equally, -inline escapes -can be used in tags that take -string arguments. -

-IMPORTANT NOTE: The family, font, point size, -colour and leading control macros have no effect in -PRINTSTYLE TYPEWRITE, -which sets EVERYTHING in Courier roman, 12/24 (i.e. 12-point type on -a linespace of 24 points). -

-Please also note that the defaults listed -with the control macros apply only to -PRINTSTYLE TYPESET -unless a default for TYPEWRITE is also given. -

-A WORD OF ADVICE: Get familiar with -mom at her default settings before exploring the -control macros. Put her through her paces. See how she behaves. -Get to know what she feels like and how she looks, both in your text -editor and on the printed page. Then, if you don't like something, -use this documentation to find the precise macro you need to change it. -There are tons of control macros. Reading up on them and trying to -remember them all might lead you to think that mom -is complex and unwieldy, which is not only untrue, but would offend -her mightily. -

- -

Arguments to the control macros

- -

Family and font

-The arguments to the control macros that end in -_FAMILY or _FONT are the same -as for -FAMILY -and -FT. - -

Point size

-Control macros that end in _SIZE always take -the form +digit or -digit where digit is -the number of -points -larger (+) or smaller (-) than the point size of paragraphs -you want the document element to be. For example, to change -subheads to 1-1/2 points larger than the type in paragraphs, do -

-

-	.SUBHEAD_SIZE +1.5
-
- -There's no need for a -unit of measure -with the _SIZE control macros; points is assumed. - -

Colour

-Control macros that end in _COLOR take as their -argument a colour name pre-defined (or "initialized") -with -NEWCOLOR -or -XCOLOR. -For example, if you want your heads to be red, once you've defined -or initialized the color, red, -

-

-	.HEAD_COLOR red
-
- -will turn your heads red. - -

Lead/linespacing

-Control macros that end in _AUTOLEAD take the -same argument as -AUTOLEAD, -viz. a digit that represents the number of points to add to the -tag's point size to arrive at its -lead. -For example, to set footnotes -solid, do -

-

-	.FOOTNOTE_AUTOLEAD 0
-
- -To set footnotes with a 1-point lead (i.e. with the line spacing -one point greater than the footnote's point size), do -

-

-	.FOOTNOTE_AUTOLEAD 1
-
- -

Indents

-Except for PARA_INDENT, the argument to the control -macros that end -in _INDENT is always a single digit (whole numbers -only; no decimal fractions) with no -unit of measure -appended to it. The digit represents by how much you want the -size of the paragraph first-line indent multiplied to achieve the -correct indent for a particular tag. - -

Quad/justification style

-Control macros that end in _QUAD take the same -arguments as -QUAD. -

-


- -

Document element tags list

- -
- - - - -

Epigraphs

- -

-Epigraphs -colour, flavour, or comment on the document they precede. Typically, -they are centred at the top of a document's first page (underneath the -title) and set in a smaller point size than that of paragraph text. -

-By default, mom sets epigraphs centred and -unfilled; -this lets you input them on a line for line basis. This behaviour -can be changed to accomodate -filled -epigraph "blocks." -

- - - -


-

- - Macro: EPIGRAPH <toggle> | [ BLOCK ] - - -

-EPIGRAPH is a toggle, used like this: -

-

-	.EPIGRAPH
-	<text of epigraph>
-	.EPIGRAPH OFF
-
- -OFF, above, could be anything -- say, Q or X -- -since any argument other than BLOCK turns it off. -

-If given the argument BLOCK, EPIGRAPH -sets epigraphs -filled, -justified or quadded in the same direction as paragraphs, indented -equally from both the left and right margins. -

-If a block-style epigraph runs to more than one paragraph (unlikely, -but conceivable), you MUST introduce every paragraph --- INCLUDING THE FIRST!!! -- with the -PP -tag. -

-NOTE: EPIGRAPH should only be -used at the top of a document (i.e. just after -START) -or after -heads. The latter is not especially -recommended, but it does work. In all other places where you -want quotes or cited text, use -QUOTE -or -BLOCKQUOTE. -

- -

Epigraph control macros

-

-See -Arguments to the control macros. -

-

-.EPIGRAPH_FAMILY    default = prevailing document family; default is Times Roman
-.EPIGRAPH_FONT      default = roman
-.EPIGRAPH_SIZE      default = -1.5 (points)
-.EPIGRAPH_COLOR     default = black
-.EPIGRAPH_AUTOLEAD  default = 2 points
-
-(The next two apply to "block" style epigraphs only)
-
-.EPIGRAPH_QUAD      default = same as paragraphs
-.EPIGRAPH_INDENT*   default = para indent x 3 (for typeset), x 2 (for typewrite)
-
-*Indent here refers to the indent from both the left and right margins
- that centres the block style epigraph on the page.
-
-
- - - -

Paragraphs

- -

-The paragraph macro is the one you use most often. Consequently, -it's one of most powerful, yet simplest to use -- just the letters -PP. No arguments, nothing. Just .PP -on a line by itself any time, in any document element, tells -mom you want to start a new paragraph. The spacing -and indent appropriate to where you are in your document are taken -care of automatically. -

-By default, mom does not indent the first paragraph -of a document, nor paragraphs that fall immediately after -heads -or -subheads. -The first paragraphs of blockquotes and block-style epigraphs are -also not indented. This behaviour can be changed with the control -macro -INDENT_FIRST_PARAS. -

-In contrast to some other macro packages, mom does not -deposit a blank line between paragraphs. If you want her to do so, use -the control macro PARA_SPACE. (I don't recommend -using this macro with -PRINTSTYLE TYPEWRITE.) -

-Note that mom does not provide "orphan -control" for paragraphs (i.e. even if only one line of a paragraph -fits at the bottom of a page, she will set it on that page). The -reason for this is that writers of fiction often have single-line -paragraphs (e.g. in dialogue). Groff's simplistic orphan control -will break these one-liners -- if they fall at the bottom of the page --- to a new page, which is not what you want. -

-TIP: The last thing you want while you're writing -and editing drafts of a document (particularly stories and chapters) -is a text file cluttered up with PP's. The visual -interruption in the flow of text is a serious obstacle to creativity -and critiquing. -

-I use the tab key on my keyboard to indent paragraphs when I'm writing, -producing a text file that looks pretty much like what you see on -a printed page. When it comes time to format and print the file, -I run it through a sed script that (amongst other things) converts -the character generated by the tab key (^I) into .PP -(plus a new line), and pipe the output to groff for processing and -printing. -

-Another solution is to insert a blank line between paragraphs. -The blank lines can then be sedded out at print time as above, or, -more conveniently, you can use the .blm -primitive -(blank line macro) to instruct groff (and mom) -that blank lines should be interpreted as PP's. -

-

-	.blm PP
-
-tells groff that all blank lines are really the macro PP. -

- - - -


-

- - Macro: PP - - -

-PP (on a line by itself, of course) tells mom to -start a new paragraph. See -above -for more details. In addition to regular text paragraphs, you can -use PP in -epigraphs, -blockquotes -and -footnotes. - -

Paragraph control macros

-

-The PP being so important, and representing, as -it were, the basis of everything that goes on in a document, its -control is managed in a manner somewhat different from other document -element tags. -

-

    -
  1. Family control -
  2. Font control -
  3. Paragraph colour -
  4. Leading/linespacing control -
  5. Justification/quad control -
  6. First-line indent control -
  7. Initial paragraphs indent control -
  8. Paragraph spacing control -
- -

1. Family

-

-The paragraph -family -is set with -FAMILY -prior to -START, -or -DOC_FAMILY -afterwards. Please note that both globally affect the family of -every element in the document. -

-If you wish to change the family for regular -text paragraphs only, invoke FAMILY immediately -after PP in EVERY paragraph whose family you wish -to differ from the prevailing document family. -

-Mom's default paragraph (and document) family -is Times Roman. -

- -

2. Font -- PP_FONT

-

-To change the -font -used in regular text paragraphs, use .PP_FONT, -which takes the same argument as -FT. -PP_FONT may be used before or after -START. -Only regular text paragraphs are affected; paragraphs in -epigraphs, -blockquotes -and -footnotes -remain at their default setting (medium roman) unless you change them -with the appropriate control macros. -

-Mom's default paragraph font is medium roman. -

- -

3. Paragraph colour

-

-Mom has no special control macro for colourizing -paragraphs. If you wish a colourized paragraph, you must use the -macro, -COLOR, -or the -inline escape, -\*[<colorname>], -after .PP. The colour must be one -pre-defined (or "initialized") with -NEWCOLOR -or -XCOLOR. -

-Please note that unless you change the colour back to it's default -(usually black) at the end of the paragraph, all subsequent -paragraphs will be set in the new colour, although most other -elements of your document will continue to be set in the default -colour (usually black). -

-For example, assuming you have defined the colour, blue, -

-

-	.PP
-	.COLOR blue
-	<first paragraph>
-	.HEAD "Monty Python"
-	.SUBHEAD "The Origins of Spam"
-	.PP
-	<second paragraph>
-
- -the first paragraph will be blue, the head and subhead will be in -the document's default colour (usually black), and the second -paragraph will be in blue. -

-The one document element that is affected by changing the colour -of paragraphs are -paraheads, -since they are attached directly to the body of paragraphs. In -other words, if you change the colour of a paragraph and do not -reset the paragraph colour back to its default, subsequent paraheads -will appear in the same colour as your paragraphs unless you have -explicitly told mom you want a pre-defined (or -"initialized") color (usually black) for your paraheads. -

-See the footnote to -.PARAHEAD_COLOR. - -

4. Leading

-

-The paragraph -leading -is set with -LS -prior to -START, -or -DOC_LEAD -afterwards. Please note that either method globally affects the -leading and spacing of every document element (except -headers -and -footers). -

-If you wish to change the leading of regular text paragraphs only, -invoke LS immediately after PP in -EVERY paragraph whose leading you wish to change. -

-HYPER-IMPORTANT NOTE: It is extremely unwise to change -paragraph leading with LS, as it will, in all cases, -screw up mom's ability to balance the bottom margin -of pages. Should you absolutely need to change paragraph leading -with LS, and subsequently want mom -to get back on the right leading track, use the -SHIM -macro. -

-Mom's default paragraph leading (document leading) -is 16 points, adjusted to fill the page. -

- -

5. Justification/quad

-

-The justification/quad-direction of regular text paragraphs (i.e. -justified, -or -filled -and -quadded -left/right/centre) is set with -JUSTIFY -or -QUAD -prior to -START, -and with -DOC_QUAD -afterwards. -

-Please note that either method of setting the paragraph -justification/quad-direction also affects -epigraphs -and -footnotes, -but not -blockquotes -(whose default is QUAD LEFT unless you change it with -BLOCKQUOTE_QUAD). -The justification/quad-direction of epigraphs and footnotes may -be changed with their own control macros. -

-If you wish to change the justification/quad-direction of -individual paragraphs, use JUSTIFY or -QUAD immediately after PP. -Only the paragraph in question gets justified or quadded -differently; subsequent paragraphs remain unaffected. -

-Mom's default justification/quad-direction for -paragraphs is -
-

-

-

6. First-line indent -- PARA_INDENT

-

-The first-line indent of paragraphs is controlled by -PARA_INDENT, which takes one argument: the size -of the indent. PARA_INDENT may be used before -or after -START. -A -unit of measure -is required; fractional sizes are allowed. Thus, to set the paragraph -indent to 4-1/2 -ems, do -

-

-	.PARA_INDENT 4.5m
-
- -In addition to establishing the basic first line-indent of -paragraphs, PARA_INDENT also affects -epigraphs, -quotes -and -blockquotes, -whose overall indenting from the left and (where applicable) right -margins is relative to PARA_INDENT. Furthermore, the -first-line indent of paragraphs within these document elements (as well -as footnotes) is also relative to PARA_INDENT (always -1/2 of PARA_INDENT)), hence they are also affected. -

-Mom's default PARA_INDENT is 2 -ems for -PRINTSTYLE_TYPESET -and 3 picas (1/2 inch) for -PRINTSTYLE_TYPEWRITE. -

- -

7. Indenting initial paragraphs -- INDENT_FIRST_PARAS

-

-By default, mom does not indent the first paragraph -of a document, nor the first paragraph after a head or -subhead, nor the first paragraphs of -epigraphs, -blockquotes -or -footnotes -that run to more than one paragraph. - -

-If you wish to have first paragraphs indented, invoke the macro -.INDENT_FIRST_PARAS with no argument, either -before or after -START. -INDENT_FIRST_PARAS is a toggle macro, therefore -passing it any argument (OFF, QUIT, Q, X...) cancels -its effect, meaning that first paragraphs will once again NOT be -indented. -

- -

8. Spacing paragraphs -- PARA_SPACE

-

-By default, mom does not insert a blank line -between paragraphs. If you would like her to do so, invoke the -macro .PARA_SPACE with no argument, either -before or after -START. -PARA_SPACE is a toggle macro, therefore passing -it any argument (OFF, QUIT, Q, X...) cancels its -effect, meaning that paragraphs will once again NOT be separated by -a blank line. -

-NOTE: If PARA_SPACE is on, -mom spaces only those paragraphs that come after -an "initial" paragraph. Initial paragraphs are those -that come immediately after the -docheader, -epigraphs, -heads, -subheads -and -linebreaks. -(The first paragraph after these document elements requires no -blank line to separate it from other paragraphs.) -

-Sometimes, you can be fairly deep into a document before using -.PP for the first time, and when you do, because -mom is still waiting for that "initial" -paragraph, she doesn't space it with a blank line, even though -you expect her to. The simple workaround for this is to invoke -.PP twice (in succession) at the point you -expect the blank line to appear. -
-


- - - -

Main heads

- -

-Main heads -- or, in this documentation, just "heads" --- should be used any place you want titles to introduce major -sections of a document. If you wish, mom can number -your heads for you. Head numbers can also be included -hierarchically in numbered -subheads -and -paraheads. -

-By default, heads are centred on the page, underlined, -all in caps. A double linespace precedes each head. In PRINTSTYLE TYPESET, heads -are bold, slightly larger than paragraph text. -

-If these defaults don't suit you, you can change them with the -head control macros. -

- - - -


-

- - Macro: HEAD "<text of head>" [ "<2nd line>" [ "<3rd line>" ... ] ] - - -

-The argument to HEAD is the text of the head, -surrounded by double-quotes. If you need additional lines for a -head, simply surround each line with double-quotes. -

-NOTE: If a head falls near the bottom of an output page -and mom is unable to fit the head plus at least -one line of text underneath it, she will set the head at the -top of the next page. -

-ADDITIONAL NOTE: If an -input line -in a head (i.e. one of the lines surrounded by double-quotes) has -to be broken by mom in order to fit the current -line-length (say, a narrow column measure), the head underline -(underscore) will not behave. You'll recognize the problem as soon -as you preview your document. If you encounter a head that -misbehaves with respect to underlining, the solution is to -supply each line as you want it as a separate argument -(surrounded by double-quotes) to the HEAD macro. -

-For example, if mom breaks -

-	.HEAD "This is a very, very, very long head"
-
-into -
-	This is a very, very, very
-	        long head        
-
- -you'll see the misbehaving underscore and should change the -argument to HEAD to -
-	.HEAD "This is a very, very very" "long head"
-
- -

Head control macros

-

-There are, in addition to the usual family/font/size/quad control -macros, a number of macros to manage head numbering, spacing, -underlining, and so on. Check them out if you're unhappy with -mom's defaults. -

-

    -
  1. Family/font/size/colour/quad -
  2. Caps -
  3. Pre-head space -
  4. Underlining -
  5. Numbering -
  6. Reset head numbering -
  7. Vertical inline escapes inside heads -
-

-

1. Family/font/size/colour/quad

-

-See -Arguments to the control macros. -

-

-.HEAD_FAMILY default = prevailing document family; default is Times Roman
-.HEAD_FONT   default = bold
-.HEAD_SIZE   default = +1 (point)
-.HEAD_COLOR  default = black
-.HEAD_QUAD   default = CENTER
-
- -

2. Capitalizing heads -- HEAD_CAPS

-

-By default, mom sets heads in caps, regardless -of the -string(s) -you give to -HEAD. -To change this behaviour, do -

-

-	.HEAD_CAPS OFF
-
- -HEAD_CAPS is a toggle macro, therefore you can use -any argument you like instead of OFF (END, -QUIT, Q, X...). To turn HEAD_CAPS back on, -simply invoke it without an argument. -

- -

3. Space before heads -- HEAD_SPACE

-

-By default, mom deposits 2 blank lines prior to every -head. If you'd prefer just a single blank line, do -

-

-	.HEAD_SPACE OFF
-
- -HEAD_SPACE is a toggle macro, therefore you can use -any argument you like instead of OFF (END, -QUIT, Q, X...). To restore the space before heads to 2 -blank lines, invoke HEAD_SPACE without an argument. -

- -

4. Underlining heads -- HEAD_UNDERLINE

-

-By default, mom underlines heads. To change this -behaviour, do -

-

-	.HEAD_UNDERLINE OFF
-
- -HEAD_UNDERLINE is a toggle macro, therefore you can -use any argument you like instead of OFF (END, -QUIT, Q, X...). To restore underlining of heads, invoke -HEAD_UNDERLINE without an argument. -

- -

5. Number heads -- NUMBER_HEADS

-

-If you'd like your heads numbered, simply invoke -NUMBER_HEADS with no argument. Mom -will number all subsequent heads automatically (in ascending order, -naturally). -

-If, in addition to numbering heads, you also request that -subheads -and/or -paraheads -be numbered, the head number will be included in their numbers -(each number separated by a period [dot]). -

-Should you wish to stop head numbering, invoke -NUMBER_HEADS with any argument (OFF, QUIT, -END, X...). Head numbering will cease, and the head number -will not be included in the numbering of subheads and/or paraheads. -

- -

6. Reset head numbering -- RESET_HEAD_NUMBER

-

-Should you wish to reset the head number to "1", invoke -RESET_HEAD_NUMBER with no argument. If, for some -reason, you want mom to use a head number that is not -the next in ascending order (i.e. the last head number + 1), invoke -RESET_HEAD_NUMBER with the number you want, e.g. -

-

-	.RESET_HEAD_NUMBER 6
-
- -Your next head will be numbered "6" and subsequent heads will -be numbered in ascending order from "6". -

- -

7. Vertical inline escapes inside heads

-

-If you need to adjust the -baseline -position of a head (e.g. the head falls at the top of a column and -you want its -ascenders -to line up with the ascenders of -running text -in other columns), you can embed a vertical motion -inline escape -(either -mom's -or -groff's -in the string(s) you pass to HEAD -

-For example, -

-

-	.HEAD "\[ALD3]Text of head"
-	    or
-	.HEAD "\[DOWN 3p]Text of head"
-
- -will lower the baseline of the head by three points. Note that -there's no need to reverse the sense of the inline escape. -

-In the case of heads that run to more than one line, you must embed -the escape in the string for each line, like this: -

-

-	.HEAD "\[ALD3]First line" "\[ALD3]Next line" 
-	    or
-	.HEAD "\[DOWN 3p]First line" "\[DOWN 3p]Next line" 
-
-
- - - -

Subheads

- -

-Subheads should be used any place you want titles to introduce -sections of a document below heads. If you wish, mom -can number subheads for you. Subhead numbers can also be included -hierarchically in numbered -paraheads. -

-By default, subheads are flush left. In -PRINTSTYLE TYPESET, -they are set bold, slightly larger than paragraph text. In -PRINTSTYLE TYPEWRITE, -they are underlined. A single linespace precedes them in both -printstyles, and a tiny space adjustment raises them slightly -above text that comes afterwards for greater clarity in -document structuring. -

-If these defaults don't suit you, you can change them with the -subhead control macros. -

- - - -


-

- - Macro: SUBHEAD "<text of subhead>" [ "<2nd line>" [ "<3rd line>" ... ] ] - -

-The argument to SUBHEAD is the text of the subhead, -surrounded by double-quotes. If you need additional lines for a -subhead, simply surround each line with double-quotes. -

-NOTE: If a subhead falls near the bottom of an output -page and mom is unable to fit the head plus at -least one line of text underneath it, she will set the subhead -at the top of the next page. - -

Subhead control macros

-

-In addition to the usual family/font/size/quad control -macros, there are macros to manage subhead numbering. -

-

    -
  1. Family/font/size/colour/quad -
  2. Numbering -
  3. Reset subhead numbering -
  4. Vertical inline escapes inside subheads -
-

-

1. Family/font/size/quad

-

-See -Arguments to the control macros. -

-

-.SUBHEAD_FAMILY default = prevailing document family; default is Times Roman
-.SUBHEAD_FONT   default = bold
-.SUBHEAD_SIZE   default = +.5 (point)
-.SUBHEAD_COLOR  default = black
-.SUBHEAD_QUAD   default = LEFT
-
- -

2. Number subheads -- NUMBER_SUBHEADS

-

-If you'd like your subheads numbered, simply invoke -.NUMBER_SUBHEADS with no argument. -Mom will number all subsequent subheads automatically -(in ascending order, naturally). -

-If, in addition to numbering subheads, you also request that -heads -be numbered, the head number will be included in the subhead number -(separated by a period [dot]). -

-Should you wish to stop subhead numbering, invoke -NUMBER_SUBHEADS with any argument (OFF, QUIT, -END, X...). Subhead numbering will cease, and the subhead -number will not be included in the numbering of paraheads. -

- -

3. Reset head numbering -- RESET_SUBHEAD_NUMBER

-

-Should you wish to reset the subhead number to "1", invoke -RESET_SUBHEAD_NUMBER with no argument. If, for some -reason, you want mom to use a subhead number that is not -the next in ascending order (i.e. the last subhead number + 1), invoke -RESET_SUBHEAD_NUMBER with the number you want, e.g. -

-

-	.RESET_SUBHEAD_NUMBER 4
-
- -Your next subhead will be numbered "4" and subsequent -subheads will be numbered in ascending order from "4". - -

Vertical inline escapes inside subheads

-See -Vertical inline escapes inside heads. -The information there applies equally to subheads. -

-


- - - -

Paragraph heads

- -

-Paragraph heads (paraheads) should be used any place you want titles -to introduce paragraphs below heads or subheads. If you wish, -mom can number paraheads for you. -

-By default, paraheads are joined to the body of a paragraph, -slightly indented (provided the paragraph is not a -"first" paragraph as defined in -Indenting initial paragraphs). -In -PRINTSTYLE TYPESET, -they are set bold italic, slightly larger than paragraph text. In -PRINTSTYLE TYPEWRITE, -they are underlined. -

-If these defaults don't suit you, you can change them with the -parahead control macros. -

- - - -


-

- - Macro: PARAHEAD "<text of parahead>" - -

-PARAHEAD must come AFTER -PP -or it will not work! -

-The argument is the text of the parahead, surrounded by double-quotes. -Because paraheads are joined to the body of a paragraph, they accept -only one argument (see -HEAD -and -SUBHEAD). -

- -

Parahead control macros

-

-In addition to the family/font/size/colour/indent control macros, -there are macros to manage parahead numbering. -

-

    -
  1. Family/font/size/color -
  2. Indent -
  3. Numbering -
  4. Reset parahead numbering -
-

-

1. Family/font/size/colour

-

-See -Arguments to the control macros. -

-

-.PARAHEAD_FAMILY default = prevailing document family; default is Times Roman
-.PARAHEAD_FONT   default = bold italic
-.PARAHEAD_SIZE   default = +.5 (point)
-.PARAHEAD_COLOR  default = black*
-
-*If you colourize paragraph text, paraheads will appear in the same
-colour as the text unless you explicitly tell mom to colour them
-otherwise by invoking .PARAHEAD_COLOR.  If you do want paraheads
-that are coloured the same as paragraph text, it's generally a good
-idea to invoke .PARAHEAD_COLOR anyway (with the same colour used
-for paragraph text), just to let mom know.
-
- -

2. Indent

-

-Unlike other control macros that end in -_INDENT, -the argument to the macro that controls indenting of paragraph heads -(PARAHEAD_INDENT) is NOT relative to the first-line -indent of normal paragraphs. In other words, it takes an absolute -value, and requires a -unit of measure. -For example, to set the paragraph head indent to 2-1/2 picas, you -do: -

-

-	.PARAHEAD_INDENT 2.5P
-
-Mom's default indent for paragraph heads is 1/2 -the first-line indent of normal paragraphs (both printstyles). -However, as stated above, if you choose to change the indent, you -must give an absolute value (unless you're a groff expert and want -to manipulate the number register \n[#PP_INDENT]u -arithmetically as the argument to PARAHEAD_INDENT -for an indent that's relative to PP_INDENT.) -

-NOTE: Paragraph heads in "first -paragraphs", as defined in -Indenting initial paragraphs, -are not indented unless you turn -INDENT_FIRST_PARAS -on. -

- -

3. Number paraheads -- NUMBER_PARAHEADS

-

-If you'd like your paraheads numbered, simply invoke -.NUMBER_PARAHEADS with no argument. -Mom will number all subsequent paraheads automatically -(in ascending order, naturally). -

-If, in addition to numbering paraheads, you also request that -heads -and -subheads -be numbered, the head and/or subhead number will be included in the -parahead number (separated by a period [dot]). -

-Should you wish to stop parahead numbering, invoke -NUMBER_PARAHEADS with any argument (OFF, -QUIT, END, X...). Parahead numbering will cease. -

- -

4. Reset head numbering -- RESET_PARAHEAD_NUMBER

-

-Should you wish to reset the parahead number to "1", invoke -RESET_PARAHEAD_NUMBER with no argument. If, for some -reason, you want mom to use a parahead number that is not -the next in ascending order (i.e. the last parahead number + 1), invoke -RESET_PARAHEAD_NUMBER with the number you want, e.g. -

-

-	.RESET_PARAHEAD_NUMBER 7
-
- -Your next parahead will be numbered "7" and subsequent -paraheads will be numbered in ascending order from "7". -

-


- - - -

Author linebreaks

- -

-By default, mom marks -author linebreaks -with three centred asterisks. You can change this behaviour -with the linebreak character -control macro. -

- - - -


-

- - Macro: LINEBREAK - -
-Alias: SECTION - -

-LINEBREAK takes no arguments. Simply invoke it -(on a line by itself, of course) whenever you want to insert an -author linebreak. The appearance of the linebreak is controlled -by the -LINEBREAK_CHAR -macro. - -

Linebreak character control macro

-

- - Macro: LINEBREAK_CHAR [ <character> ] [ <iterations> [ <vertical adjustment> ] ] - -
-Alias: SECTION_CHAR -
-*The third optional argument requires a -unit of measure. -

-LINEBREAK_CHAR determines what mom -prints when LINEBREAK is invoked. It takes 3 -optional arguments: the character you want deposited at the line -break, the number of times you want the character repeated, and a -vertical adjustment factor. -

-The first argument is any legal groff character (e.g. * -[an asterisk], \(dg [a dagger], \f(ZD\N'141\fP -[an arbitrary character from Zapf Dingbats], \l'4P' -[a 4-pica long rule]). Mom sets the character -centred on the current line length. (See "man groff_char" -for a list of all legal groff characters.) -

-The second argument is the number of times to repeat the character. -

-The third argument is a +|- value by which to raise (+) or lower (-) -the character in order to make it appear visually centred between -sections of text. This lets you make vertical adjustments -to characters that don't sit on the -baseline -(such as asterisks). The argument must be preceded by a plus or -minus sign, and must include a unit of measure. -

-If you enter LINEBREAK_CHAR with no arguments, -sections of text will be separated by two blank lines when you invoke -LINEBREAK. -

-Mom's default for LINEBREAK_CHAR is -

-

-	.LINEBREAK_CHAR * 3 -3p
-
- -i.e. three asterisks, lowered 3 points from their normal vertical -position (for -PRINTSTYLE TYPESET; -the vertical adjustment is -2 points for -PRINTSTYLE TYPEWRITE). - -

Linebreak colour control macro

-

- - Macro: LINEBREAK_COLOR <color name> - -

-To change the colour of the linebreak character(s), simply invoke -LINBREAK_COLOR with the name of a pre-defined (or -"initialized") colour. -
-


- - - -

Quotes (line for line)

- -

-Quotes -are always set in -nofill mode, -flush left. This permits entering quotes on a line for line basis in -your text editor and have them come out the same way on output copy. -(See -Blockquotes -for how quotes, in the present sense, differ from longer -passages of cited text.) -

-Since mom originally came into being to serve -the needs of creative writers (i.e. novelists, short story -writers, etc. -- not to cast aspersions on the creativity of -mathematicians and programmers), she sets quotes in italics -(PRINTSTYLE TYPESET) -or underlined -(PRINTSTYLE TYPEWRITE), -indented from the left margin. Obviously, she's thinking -"quotes from poetry or song lyrics", but with the -quote control macros -you can change her defaults so QUOTE serves other -needs, e.g. entering verbatim snippets of programming code, command -line instructions, and so on. (See the -tip -below for suggestions about including programming code snippets in -documents.) -

- -Besides indenting quotes, mom further sets them -off from -running text -with a small amount of vertical whitespace top and bottom. In -PRINTSTYLE TYPEWRITE, -this is always one full linespace. In -PRINTSTYLE TYPESET, -it's 1/2 of the prevailing -leading -if the quote fits fully on the page (i.e. with running text above -and below it), otherwise it's a full linespace either above or below -as is necessary to balance the page to the bottom margin. This -behaviour can be changed with the control macro -ALWAYS_FULLSPACE_QUOTES. -

-NOTE: ALWAYS_FULLSPACE_QUOTES -applies to both -QUOTE -and -BLOCKQUOTE, -as does the control macro -QUOTE_INDENT. -

-Version 1.3: mom's handling of the vertical -whitespace around quotes has changed slightly. In versions prior -to 1.3, it was not possible to alter the -leading -of quotes and blockquotes (which was the same as the document -leading), ensuring that the vertical whitespace remained consistent, -as described above. In 1.3 and later, it is possible to change the -leading of quotes and blockquote via -the QUOTE_AUTOLEAD and -BLOCKQUOTE_AUTOLEADmacro. Now, if your quote -(or blockquote) leading differs from the document leading, -mom attempts to observe the same rules for vertical -whitespace outlined above; however, she will also insert a small, -flexible amount of extra whitespace around the quotes to make sure -the whitespace is equal, top and bottom. Since she does this on a -quote by quote basis, rather than by figuring out how much extra -whitespace is needed to adjust all quotes on a page, -the spacing around multiple quotes on the same page will differ -slightly, although each will be balanced between lines of normal -running text, -top and bottom. (The inability to scan an entire page and insert -equalized whitespace at marked places is a limitation of groff, -which, by and large, works in a linear, line by line fashion.) -If you don't provide mom with a -QUOTE_AUTOLEAD, quotes are leaded at the default -for normal running text, meaning that multiple quotes on the same -page are all spaced identically. -

-TIP: -If you want to include snippets of programming code in -mom documents, you may come acropper of the fact -that groff (and mom's) escape character is the -backslash. In order for mom not to interpret -backslashes that occur in code snippets as escapes, you have to -tell mom that the backslash character is -(temporarily) no longer the escape character. The easiest way -to do this is to set the escape character to something else for -the duration of the code snippet. You accomplish this with -ESC_CHAR, like this: -

-

-	.ESC_CHAR c
-
- -where "c", above, is the alternate escape character -(which should be a character that does not appear in the code). To -set the escape character back to the backslash, simply invoke -.ESC_CHAR by itself (i.e. with no argument). -

-Because mom, by default, sets the text after -.QUOTE in italic (for PRINTSTYLE -TYPESET) or underlined (for PRINTSTYLE -TYPEWRITE), you'll want to change that behaviour as -well. Therefore, a recipe for setting verbatim code snippets using -QUOTE could be (assuming you want a fixed width -font like Courier): -

-

-	\# You only need the first two lines before the first invocation
-	\# of QUOTE.  They stay in effect for all subsequent invocations.
-	\#
-	.QUOTE_FONT       CR    \" Set quote font to Courier roman
-	.UNDERLINE_QUOTES OFF   \" Don't underline quotes in TYPEWRITE
-	.QUOTE
-	.ESC_CHAR ^             \" Change escape character to ^
-	<code snippet>
-	.ESC_CHAR               \" Restore escape character to \
-	.QUOTE OFF
-
-
- - - -
-

- - Macro: QUOTE toggle - - -

-QUOTE is a toggle macro. To begin a section of -quoted text, invoke it with no argument, then type in your quote. -When you're finished, invoke QUOTE with any -argument (e.g. OFF, END, X, Q...) to turn it off. Example: -

-

-	.QUOTE
-	Nymphomaniacal Jill
-	Used a dynamite stick for a thrill
-	They found her vagina
-	In North Carolina
-	And bits of her tits in Brazil.
-	.QUOTE END
-
- -

Quote control macros

-
    -
  1. Family/font/size/leading/colour/indent -
  2. Spacing above and below (typeset only) -
  3. Underline quotes (typewrite only) -
  4. Manually break a footnoted quote that crosses pages/columns -
-

-

1. Family/font/size/colour/indent

-

-See -Arguments to the control macros. -

-

-.QUOTE_FAMILY   default = prevailing document family; default is Times Roman
-.QUOTE_FONT     default = italic; underlined in TYPEWRITE
-.QUOTE_SIZE     default = +0 (i.e. same size as paragraph text)
-.QUOTE_AUTOLEAD default = none; leading of quotes is the same as paragraphs
-.QUOTE_COLOR    default = black
-.QUOTE_INDENT   default = paragraph indent x 3 (typeset); x 2 (typewrite)
-               (note that this macro also sets the indents (left and right)
-                for blockquotes)
-
- -

2. Spacing above and below -- ALWAYS_FULLSPACE_QUOTES (typeset only)

-

-If you'd like mom always to put a full linespace above -and below quotes, invoke .ALWAYS_FULLSPACE_QUOTES -with no argument. If you wish to restore mom's -default behaviour regarding the spacing of quotes (see -above), -invoke the macro with any argument (OFF, QUIT, END, -X...) -

-NOTE: This macro also sets mom's -spacing policy for -blockquotes. -

- -

3. Underlining -- UNDERLINE_QUOTES (typewrite only)

-

-By default in -PRINTSTYLE TYPEWRITE, -mom underlines quotes. If you'd rather she didn't, -invoke .UNDERLINE_QUOTES with any argument -(OFF, QUIT, END, X...) to disable the feature. -Invoke it without an argument to restore mom's -default underlining of quotes. -

-If you not only wish that mom not underline -quotes, but also that she set them in italic, you must follow each -instance of QUOTE with the typesetting macro FT I. -Furthermore, since mom underlines all instances -of italics by default in PRINTSTYLE TYPEWRITE, -you must also make sure that ITALIC_MEANS_ITALIC -is enabled (see -PRINTSTYLE TYPEWRITE control macros). -

- -

4. Manually break a footnoted quote -- BREAK_QUOTE

-

-NOTE: As of version 1.1.9, the macro -BREAK_QUOTE has become obsolete (or, at least, -should have become obsolete.) It remains here for backward -compatibility with documents created prior to 1.1.9, and just in -case, despite my efforts to make it obsolete, you still encounter the -problem it's supposed to fix. Should you find yourself having to -use BREAK_QUOTE while running mom -1.1.9 or higher, please notify me immediately. - -

-Exceptionally, a quote or blockquote containing a footnote may cross -a page or column. When this happens, the footnote marker may not be -correct for its position relative to other footnotes on the page, and -the footnote itself may appear on the wrong page or at the bottom of -the wrong column. When this happens, study your output to determine -the precise point at which the quote breaks (or at which you want -it to break), and add .BREAK_QUOTE on a line by itself -afterwards. No other intervention is required, and the footnote(s) -will be marked correctly and appear on the correct page. -

-BREAK_QUOTE may be used with both quotes and -blockquotes, and hence is aliased as BREAK_BLOCKQUOTE, -BREAK_CITATION and BREAK_CITE. -

-


- - - -

Blockquotes (cited passages)

- -

-BLOCKQUOTES are used to cite passages from another -author's work. So that they stand out well from -running text, -mom indents them from both the left and right margins -and sets them in a different point size -(PRINTSTYLE TYPESET -only). -Output lines -are -filled, -and, by default, -quadded -left. -

-Besides indenting blockquotes, mom further sets them -off from running text with a small amount of vertical whitespace top -and bottom. (See -above -for a complete explanation of how this is managed, and how to control it. -Be sure to read the section Version 1.3.) -

- - - -


-

- - Macro: BLOCKQUOTE toggle -
- Aliases: CITE, CITATION -
- -

-BLOCKQUOTE is a toggle macro. To begin a -cited passage, invoke the tag with no argument, then type in your quote. -When you're finished, invoke BLOCKQUOTE with any -argument (e.g. OFF, END, X, Q...) to turn it off. Example: -

-

-	.BLOCKQUOTE
-	Redefining the role of the United States from enablers to keep
-	the peace to enablers to keep the peace from peacekeepers is
-	going to be an assignment.
-	.RIGHT
-	\(emGeorge W. Bush
-	.BLOCKQUOTE END
-
- -If the cited passage runs to more than one paragraph, you MUST -introduce each paragraph -- including the first! -- -with -PP. -

-NOTE: The aliases CITE -and CITATION may be used in place of the -BLOCKQUOTE tag, as well as in any of the control -macros that begin with BLOCKQUOTE_ or end with -_BLOCKQUOTE. - -

Blockquote control macros

-
    -
  1. Family/font/size/leading/colour/quad/indent -
  2. Spacing above and below (typeset only) -
  3. Manually break a footnoted blockquote that crosses pages/columns -
-

-

1. Family/font/size/colour/quad/indent

-

-See -Arguments to the control macros. -

-

-.BLOCKQUOTE_FAMILY   default = prevailing document family; default is Times Roman
-.BLOCKQUOTE_FONT     default = roman
-.BLOCKQUOTE_SIZE     default = -1 (point)
-.BLOCKQUOTE_AUTOLEAD default = none; leading of blockquotes is the same as paragraphs
-.BLOCKQUOTE_COLOR    default = black
-.BLOCKQUOTE_QUAD     default = left
-.BLOCKQUOTE_INDENT   default = paragraph indent x 3 (typeset); x 2 (typewrite)
-                    (note that this macro also sets the left indent for quotes)
-
- -

2. Spacing above and below -- ALWAYS_FULLSPACE_QUOTES (typeset only)

-

-If you'd like mom always to put a full linespace above -and below blockquotes, invoke .ALWAYS_FULLSPACE_QUOTES -with no argument. If you wish to restore mom's -default behaviour regarding the spacing of blockquotes (see -above), -invoke the macro with any argument (OFF, QUIT, END, -X...). -

-NOTE: This macro also sets mom's -spacing policy for -quotes. -

-


- - - -

Nested lists

- -

-Lists are points or items of interest or importance that are -separated from -running text -by enumerators. Some typical enumerators are -en-dashes, -bullets, -digits and letters. -

-Setting lists with mom is easy. First, you -initialize a list with the LIST macro. Then, for -every item in the list, you invoke the macro, ITEM, -followed by the text of the item. When a list is finished, you -exit the list with LIST OFF (or -QUIT, END, BACK, -etc.) -

-By default mom starts each list with the enumerator -flush with the left margin of running text that comes before it, -like this: -

-

-	My daily schedule needs organizing.  I can't
-	seem to get everything done I want.
-	o an hour's worth of exercise
-	o time to prepare at least one healthy
-	  meal per day
-	o reading time
-	o work on mom
-	o writing
-	  - changes from publisher
-	  - current novel
-	o a couple of hours at the piano
-
- -In other words, mom does not, by default, indent -entire lists. Indenting a list is controlled by the macro, -SHIFT_LIST. -(This is a design decision; there are too many instances where a -default indent is not desirable.) Equally, mom -does not add any extra space above or below lists. -

-Lists can be nested (as in the example above). In other words, you -can set lists within lists, each with an enumerator (and possibly, -indent) of your choosing. In nested lists, each invocation of -LIST OFF (you may prefer to use LIST -BACK) takes you back to the previous depth (or -level) of list, with that list's enumerator and indent intact. The -final LIST OFF exits lists completely and returns -you to the left margin of running text. -

-Finally, lists can be used in documents created with either the -document processing macros or just the typesetting macros. -

- - - -


-

- - Macro: LIST [ BULLET | DASH | DIGIT | ALPHA | alpha | ROMAN<n> | roman<n> | USER <string>] [ <separator> | <user-defined enumerator> ] [ <prefix> ] [ <off> ] -

-Invoked by itself (i.e. with no argument), LIST -initializes a list (with bullets as the default enumerator). -Afterwards, each block of input text preceded by -.ITEM, -on a line by itself, is treated as a list item. -

-NOTE: Every time you invoke LIST -to start a list (as opposed to -exiting one), -you must supply an enumerator (and optionally, a separator) for the -list, unless you want mom's default enumerator, -which is a bullet. Within nested lists, mom -stores the enumerator, separator and indent for any list you return -backwards to (i.e. with LIST OFF), but -does not store any information for lists you move forward -to. -
- -

The first argument--enumerator style

-

-The optional arguments BULLET, -DASH, DIGIT (for -Arabic numerals), ALPHA (for uppercase -letters), alpha (for lowercase letters), -ROMAN<n> (for uppercase roman numerals), -roman<n> (for lowercase roman numerals) tell -mom what kind of enumerator to use for a given -list. -

-The arguments, ROMAN<n> and -roman<n>, are special. You must append to -them a digit (arabic, e.g. "1" or "9" or "17") saying how many items -a particular roman-numeralled LIST is going to -have. Mom requires this information in order to -align roman numerals sensibly, and will abort--with a message--if -you don't provide it. -

-A roman-numeralled list containing, say, five items, would be set -up like this: -

-

-	.LIST roman5        producing        i)   Item 1.
-	.ITEM                                ii)  Item 2.
-	Item 1.                              iii) Item 3.
-	.ITEM                                iv)  Item 4.
-	Item 2.                              v)   Item 5.
-	.ITEM
-	Item 3
-	.ITEM
-	Item 4
-	.ITEM
-	Item 5
-
- -

-The argument, USER, lets you make up your own -enumerator, and must be followed by a second argument: what you'd -like the enumerator to look like. For example, if you want a list -enumerated with -=>, -

-

-	.LIST USER =>
-	.ITEM
-	A list item
-
- -will produce -

-

-	=> A list item
-
- -Please note: if the argument to -USER contains spaces, you must enclose the argument -in double quotes. - -
- -

The second argument--separator style

-

-If you choose DIGIT, ALPHA, -alpha, ROMAN<n>, or -roman<n>, you may enter the optional -argument, separator, to say what kind of separator -you want after the enumerator. The separator can be anything you -like. The default for DIGIT is a period (dot), -like this: -

-

-	1. A list item
-
- -The default separator for ALPHA, -alpha, ROMAN<n> and -roman<n> is a right parenthesis, like this: -

-

-	a) An alpha-ed list item
-	b) A second alpha-ed list item
-
-	   or
-
-	i)  A roman-ed list item
-	ii) A second roman-ed item
-
- -If you'd prefer, say, digits with right-parenthesis separators -instead of the default period, you'd do -

-

-	.LIST DIGIT )
-	.ITEM
-	A numberd list item
-
- -which would produce -

-

-	1) A numbered list item
-
- -Please note: BULLET, DASH and -USER do not take a separator. -
- -

The third argument--prefix style

-

-Additionally, you may give a prefix (i.e. a character that comes -before the enumerator) when your enumerator style for a -particular list is DIGIT, ALPHA, -alpha, ROMAN<n> -or roman<n>. In the arguments to -LIST, the prefix comes after the -separator, which may seem counter-intuitive, so please be careful. -

-A prefix can be anything you like. Most likely, you'll want some -kind of open-bracket, such as a left parenthesis. If, for example, -you want a DIGIT list with the numbers enclosed in -parentheses, you'd enter -

-

-	.LIST DIGIT ) (
-	.ITEM
-	The first item on the list.
-	.ITEM
-	The second item on the list.
-
- -which would produce -

-

-	(1) The first item on the list.
-	(2) The second item on the list.
-
- -Please note: BULLET, DASH and -USER do not take a prefix. -
- - -

Exiting lists--.LIST OFF/BACK or .QUIT_LISTS

-

-Any single argument to LIST other -than BULLET, DASH, -DIGIT, ALPHA, -alpha, ROMAN<n>, -roman<n> or USER (e.g. -LIST OFF or LIST -BACK) takes you out of the current list. -

-If you are at the first list-level (or "list-depth"), -mom returns you to the left margin of running text. -Any indents that were in effect prior to setting the list are fully -restored. -

-If you are in a nested list, mom moves you -back one list-level (i.e. does not take you out of the -list structure) and restores the enumerator, separator and indent -appropriate to that level. -

-Each invocation of LIST should be be matched by -a corresponding LIST OFF in order to fully exit -lists. For example, -

-

-	Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	sed diam nonumy eirmod tempor invidunt ut labore.
-	o List item in level 1
-	o List item in level 1
-	  - List item in level 2
-	  - List item in level 2
-	Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	sed diam nonumy eirmod tempor invidunt ut labore.
-
- -is created like this: -

-

-	Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	sed diam nonumy eirmod tempor invidunt ut labore.
-	.LIST BULLET
-	.ITEM
-	List item in level 1
-	.ITEM
-	List item in level 1
-	.LIST DASH
-	.ITEM
-	List item in level 2
-	.ITEM
-	List item in level 2
-	.LIST OFF    \" Turn level 2 list off
-	.LIST OFF    \" Turn level 1 list off
-	Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	sed diam nonumy eirmod tempor invidunt ut labore.
-
- -Alternatively, you may use the single-purpose macro, -QUIT_LISTS, to get yourself out of a list -structure. In the example above, the two .LIST OFF -lines could be replaced with a single .QUIT_LISTS. -

- -


-

- - Macro: ITEM -

-After you've initialized a list with -LIST, -precede each item you want in the list with ITEM. -Mom takes care of everything else with respect to -setting the item appropriate to the list you're in. -

-In document processing, it is legal to have list items that contain -multiple paragraphs. Simply issue a -PP -request for each paragraph following the first item. -I.e., don't do this: -

-

-	.ITEM
-	.PP
-	Some text...
-	.PP
-	A second paragraph of text
-
- -but rather -

-

-	.ITEM
-	Some text...
-	.PP
-	A second paragraph of text
-
-
- -

List control macros

-
    -
  1. Indenting lists (SHIFT_LIST) -
  2. Resetting an initialized list's enumerator (RESET_LIST) -
  3. Padding digit enumerators (PAD_LIST_DIGITS) -
- -

1. Indenting lists -- SHIFT_LIST

-

-If you want a list to be indented to the right of running text, or -indented to the right of a current list, use the macro -SHIFT_LIST immediately after -LIST. -SHIFT_LIST takes just one argument: the amount by -which you want the list shifted to the right. The argument requires -a -unit of measure, -

-SHIFT_LIST applies only to the list you -just initialized with LIST. It does not carry -over from one invocation of LIST to the next. -However, the indent remains in effect when you return to a -list level in a nested list. -

-For example, if you want a 2-level list, with each list indented to -the right by 18 -points, -

-

-	Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	sed diam nonumy eirmod tempor invidunt ut labore.
-	.LIST           \" List 1
-	.SHIFT_LIST 18p \" Indent 18 points right of running text
-	.ITEM
-	List 1 item
-	.ITEM
-	List 1 item
-	.LIST DASH      \" List 2
-	.SHIFT_LIST 18p \" Indent 18 points right of list 1
-	.ITEM
-	List 2 item
-	.ITEM
-	List 2 item
-	.LIST OFF       \" Move back to list 1
-	.ITEM
-	List 1 item
-	.ITEM
-	List 1 item
-	.LIST OFF       \" Exit lists
-	Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	sed diam nonumy eirmod tempor invidunt ut labore.
-
- -produces (approximately) -

-

-	Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	sed diam nonumy eirmod tempor invidunt ut labore.
-	    o List 1 item
-	    o List 1 item
-	        - List 2 item
-	        - List 2 item
-	    o List 1 item
-	    o List 1 item
-	Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	sed diam nonumy eirmod tempor invidunt ut labore.
-
- -

2. Resetting an initialized list's enumerator -- RESET_LIST

-

-In nested lists, if your choice of list enumerator for a given -level of list is DIGIT, ALPHA, -alpha, ROMAN or -roman, you may sometimes want to reset the list's -enumerator when you return to that list. Consider the following: -

-

-	Things to do religiously each and every day:
-	1. Take care of the dog
-	   a) walk every day
-	   b) brush once a week
-	      - trim around the eyes every fourth brushing
-	      - don't forget to check nails
-	2. Feed the cat
-	   a) soft food on Mon., Wed. and Fri.
-	   b) dry food on Tues., Thurs. and Sat.
-	   c) canned tuna on Sunday
-
- -Normally, within a nested list, when you return to an -incrementally-enumerated list, the enumerator continues incrementing -from where it left off. That means, in the example above, the -normal state of affairs for the alpha'ed list under "2. Feed -the cat" would be c), d) and e). The solution, in such a case, -is simply to reset the enumerator --before ITEM!-- -with the macro, RESET_LIST. -

-By default, with no argument, RESET_LIST resets the -enumerator to 1, A, a, I or i depending on the style of enumerator. -You may, if you wish, pass RESET_LISTS a numeric -argument representing the starting enumerator for the reset (if -different from "1"), although I can't at present think of a use for -this feature. -

-

3. Padding digit enumerators (PAD_LIST_DIGITS)

-

-Arabic digits -

-When your choice of enumerators is DIGIT AND the -number of items in the list exceeds nine (9), you have to make a -design decision: should mom leave room for the -extra numeral in two-numeral digits to the right or the left of -the single-numeral digits? -

-If you want the extra space to the right, invoke the macro, -.PAD_LIST_DIGITS (with no argument), after -LIST and before ITEM. This will -produce something like -

-

-	8.  List item
-	9.  List item
-	10. List item
-
- -If you want the extra space to the left, invoke -PAD_LIST_DIGITS with the single argument, -LEFT, which will produce -

-

-	 8. List item
-	 9. List item
-	10. List item
-
- -Of course, if the number of items in the list is less than ten -(10), there's no need for PAD_LIST_DIGITS. -

-Roman numerals -

-By default, mom sets roman numerals in lists flush -left. The <n> argument appended to -ROMAN<n> or roman<n> -allows her to calculate how much space to put after each numeral in -order to ensure that the text of items lines up properly. -

-If you'd like the roman numerals to line up flush right (i.e. be -padded "left"), simply invoke PAD_LIST_DIGITS -LEFT after LIST ROMAN<n> -or LIST roman<n> amd before -ITEM. -

-


- - - -

Line numbering

- - -

-Mom's line-numbering capabilities are not as flexible -as most of her other document processing macros. The reason is -that groff's underlying line-numbering -primitive, -.nm, is, well...primtive. It is not possible, for -example, to select a particular family or font for use exclusively -with line numbers. Nor is it possible to set the -gutter -using any -unit of measure -other than the -figure space. -

-That said, when you turn line-numbering on, mom, -by default -
- -

    -
  • numbers every line of paragraph text; line-numbering is - suspended for all other document processing tags (like - docheaders, epigraphs, heads, subheads, etc.) and special - pages (covers, endotes, bibliographies, etc.); be aware, - though, that if you turn - docheaders - off (with - DOCHEADER OFF) - and create your own docheader, mom - will line-number your custom docheader -
  • doesn't touch your line length; line numbers are hung - outside your current left margin (as set with - L_MARGIN, - PAGE - or - DOC_LEFT_MARGIN), - regardless of any indents that may be active -
  • separates line numbers from running text by two - figure spaces. -
-

-Line numbering may be enabled and disabled for -QUOTE -and/or -BLOCKQUOTE -in one of three styles. See -Line numbering control macros for quotes and blockquotes. -

-The first time you invoke -NUMBER_LINES -you must, at a minimum, tell it what line number you want the -next -output line -to have. Optional arguments allow you to state which lines should -be numbered (e.g. every five or every ten lines), and the gutter to -place between line numbers and -running text. -

-Subsequently, you can turn line-numbering off, either permanently, -or resume it later at a place of your choosing. When you -resume line-numbering, the line numbers pick up where you left off. -

- - - -


-

- - - Macro: NUMBER_LINES <start number> [ <which lines to number> [ <gutter> ] ] -
- Macro: NUMBER_LINES <anything> | RESUME -
-
- - -

-NUMBER_LINES does what it says: prints line -numbers, to the left of -output lines -of paragraph text. One of the chief reasons for wanting numbered -lines is in order to identify footnotes or endnotes by line number -instead of by a marker in the text. (See -.FOOTNOTE_MARKER_STYLE LINE -for instructions on line-numbered footnotes, and -.ENDNOTE_MARKER_STYLE -for instructions on line-numbered endnotes.) -

-Every time you invoke NUMBER_LINES, unless you are -using the arguments OFF (QUIT, -END, X, etc.) or -RESUME you must, at a minimum, pass it one -argument, namely the number (digit) you want the next -output line -to have. For example, -

-	.NUMBER_LINES 3
-
- -will prepend the number, 3, to the next output line. -

-Normally, of course, you will number lines of text starting at 1. -All you have to do in that case is ensure that -

-	.NUMBER_LINES 1
-
- -precedes your first line of input text, which will also be the -first line of output text. -

-You can alter mom's default line numbering -behaviour (see -above) -with the optional arguments <which lines to -number> and <gutter>. -

-<which lines to number> instructs -NUMBER_LINES to number only certain lines, e.g. -every two lines or every five lines. If you want, say, only every -five lines to have a prepended number, you'd do -

-	.NUMBER_LINES 1 5
-
- -GOTCHA! The argument to <which -lines to number> only numbers those lines that are -multiples of the argument. Hence, in the above example, line -number "1" will not be numbered, since "1" is not a -multiple of "5". -

-If you wanted line number "1" to be numbered, you'd have to invoke -.NUMBER_LINES 1 1 before the first output line, then -study your output copy and determine where best to insert -the following in your input copy: -

-	.NUMBER_LINES \n(ln 5
-
- -(The escape, \n(ln, ensures that -NUMBER_LINES automatically supplies the correct -value for the first argument, <start -number>.) -

-Following this recipe, line number 1 will be numbered; subsequently, -only line numbers that are multiples of 5 will be numbered. A -little experimentation may be required to determine the best place -for it. -

-The optional argument, <gutter>, tells -mom how much space to put between the line numbers -and the running text. -

-Note: when giving a value for -<gutter>, you cannot skip the -<which lines to number> argument. Either -fill in the desired value, or use two double-quotes -("") to have mom use the value -formerly in effect. -

-<gutter> does not require (or even accept) a -unit of measure. -The argument you pass to it is the number of -figure spaces -you want between line numbers and running text. -Mom's default gutter is two figure spaces. If -you'd like a wider gutter, say, four figures spaces, you'd do -

-	.NUMBER_LINES 1 1 4
-	                |
-	                +-- Notice you *must* supply a value
-	                    for the 2nd argument in order to supply
-	                    a value for the 3rd.
-
- -

-After you've set up line-numbering, NUMBER_LINES -can be used to control line numbering. -
-

Line-numbering control

-

-NUMBER_LINES OFF (or END, QUIT, X, etc.) -turns line-numbering off. -

-Sometimes, you merely want to suspend line-numbering. In that case, -turn line numbering off with NUMBER_LINES OFF. -Later, when you want it to resume, enter -

-	.NUMBER_LINES RESUME
-
- -Line numbering will resume exactly where it left off. If this is -not what you want--say you want to reset the line number to "1"--simply -invoke NUMBER_LINES with whatever arguments -are needed for the desired result. -

-Extra Notes: -
-

    -
  1. In document processing, you may invoke NUMBER_LINES - either before or after START. - Mom doesn't care. -
  2. If you're collating documents with - COLLATE, - you should re-invoke, at a minimum, .NUMBER_LINES - 1 for each collated document, in order to ensure that - each begins with the number "1" prepended to the first line - (unless, of course, that is not what you want). -
  3. Occasionally, you may want to change the current gutter - between line numbers and running text without knowing - what the next output line number should be. Since - NUMBER_LINES requires this number - as its first argument, in such instances, pass - NUMBER_LINES as its first argument the - escape \n(ln. -

    - For example, if you were numbering every 5 lines with a - gutter of 2 (figure spaces) and you needed to change the - gutter to 4 (figures spaces), -

    -     .NUMBER_LINES \n(ln 5 4 -

    - would do the trick. -

  4. If you're using margin notes in a document, be sure to set - the gutter for margin notes wide enough to allow room for - the line numbers. -
  5. Mom (groff, actually), only numbers lines - to the left of text. For aesthetic reason, - therefore, the use of line numbering when setting a document - in columns is discouraged. However, should you wish to - number lines when setting in columns, make sure the - gutter(s) - between columns is wide enough to leave room for the - numbers. -
-
- -

Line numbering control macros for QUOTE and BLOCKQUOTE

-
    -
  1. NUMBER_QUOTE_LINES -
  2. NUMBER_BLOCKQUOTE_LINES -
  3. Setting up line numbering in quotes and blockquotes on a case by case basis -
- -

1. NUMBER_QUOTE_LINES

-

-If you'd like mom to number lines of output text -in a -QUOTE -as part of the same order and sequence as paragraph text, simply -invoke NUMBER_QUOTE_LINES by itself. -

-There is a catch with numbering quotes, though. Owing to groff's -restriction of accepting only the figure space as the line number -gutter's unit of measure, it is not possible for line numbers -in quotes to hang outside a document's overall left margin and -be reliably flush with the line numbers of paragraph text. -Conseqently, line numbers in quotes hang to the left of the quote, -separated from the quote by the <gutter> -argument. -

-If you'd like to change the gutter for quotes line-numbered in -this way, invoke NUMBER_QUOTE_LINES with a digit -representing the number of -figure spaces -you'd like between the line numbers and the quoted text, like this: -

-	.NUMBER_QUOTE_LINES 1
-
- -With the above, line numbers in quotes (and only quotes) will have -a gutter of 1 figure space. -

-If you are using "line numbering style" for footnotes -(FOOTNOTE_MARKER_STYLE LINE), -you may not wish to have quotes visibly line-numbered, but -still want to embed footnotes inside quotes. In order to do that, -mom allows you to say NUMBER_QUOTE_LINES -SILENT. -

-When you invoke NUMBER_QUOTE_LINES -SILENT, mom continues to increment line -numbers while quotes are being output, but they won't appear in the -output copy. (Compare this with mom's default -behaviour of suspending incrementing of line numbers -during the output of quotes.) This allows you to embed -line-numbered footnotes inside quotes and have the line number -"label" in the footnote come out sensibly. -

-Once having turned NUMBER_QUOTE_LINES on, you -may disable it with NUMBER_QUOTE_LINES OFF (or -QUIT, END, X, -etc). -

- -

2. NUMBER_BLOCKQUOTE_LINES

-

-If you'd like mom to number lines of output text -in a -BLOCKQUOTE -as part of the same order and sequence as paragraph text, simply -invoke NUMBER_BLOCKQUOTE_LINES by itself. -

-There is a catch with numbering blockquotes, though. Owing to -groff's restriction of accepting only the figure space as the -line number gutter's unit of measure, it is not possible for line -numbers in blockquotes to hang outside a document's overall left -margin and be reliably flush with the line numbers of paragraph -text. Conseqently, line numbers in blockquotes hang to the -left of the blockquote, separated from the blockquote by the -<gutter> argument. -

-If you'd like to change the gutter for blockquotes line-numbered in -this way, invoke NUMBER_BLOCKQUOTE_LINES with a digit -representing the number of -figure spaces -you'd like between the line numbers and the blockquoted text, like -this: -

-	.NUMBER_BLOCKQUOTE_LINES 1
-
- -With the above, line numbers in blockquotes (and only blockquotes) -will have a gutter of 1 figure space. -

-If you are using "line numbering style" for footnotes -(FOOTNOTE_MARKER_STYLE LINE), -you may not wish to have blockquotes visibly line-numbered, -but still want to embed footnotes inside blockquotes. In -order to do that, mom allows you to say -NUMBER_BLOCKQUOTE_LINES SILENT. -

-When you invoke NUMBER_BLOCKQUOTE_LINES -SILENT, mom continues to increment line -numbers while blockquotes are being output, but they won't appear in -the output copy. (Compare this with mom's default -behaviour of suspending incrementing of line numbers during -the output of blockquotes.) This allows you to embed line-numbered -footnotes inside blockquotes and have the line number "label" in the -footnote come out sensibly. -

-Once having turned NUMBER_BLOCKQUOTE_LINES on, you -may disable it with NUMBER_BLOCKQUOTE_LINES OFF (or -QUIT, END, X, -etc). -

- -

3. Setting up line numbering in quotes and blockquotes on a case by case basis

-

-Sometimes, you may want quotes or blockquotes to have a different -line numbering scheme from the one used in the rest of the -document. Or, you may want line numbering enabled only inside a -particular quote or blockquote. A common reason for this would be -if you were using the -QUOTE -macro to insert lines of programming code into a document. (See -here -for suggestions about including programming code snippets in -documents.) -

-To enable line numbering within quotes or blockquotes on a case by -case basis, simply invoke NUMBER_LINES, with the -arguments you need, immediately after entering QUOTE -or BLOCKQUOTE. (NUMBER_QUOTE_LINES -and/or NUMBER_BLOCKQUOTE_LINES should be turned -off if you're doing this.) The quote or blockquote will then be -line-numbered according to your specifications: the starting line -number of the quote or blockquote will be the one you give as a -first argument to NUMBER_LINES; which lines to -number will be the value you pass to <which lines to -number> (defaults to "1"); line numbers will hang -to the left of the quote or blockquote, separated from the quote or -blockquote by <gutter> (defaults to "2"). -

-As soon as QUOTE or BLOCKQUOTE is -turned off, line numbering ceases, not only with respect to -subsequent paragraph text (if they are not being line-numbered), -but also for any subsequent invocation of QUOTE or -BLOCKQUOTE. In other words, you must re-enable -quote or blockquote line-numbering inside every instance of -QUOTE or BLOCKQUOTE when -line-numbering either of them on a case by case basis. -

-


- - - -

Footnotes

- - -

-For something so complex behind the scenes, footnotes are easy to use. -You just type, for example -

- -

-	...the doctrines of Identity as urged by Schelling\c
-	.FOOTNOTE
-	<footnote about who the hell is Schelling>
-	.FOOTNOTE OFF
-	 were generally the points of discussion presenting the most
-	of beauty to the imaginative Morella.
-
- -and be done with it. -

-(Note the obligatory use of the \c -inline escape. -It is required when your -FOOTNOTE_MARKER_STYLE -is either STAR [star/dagger footnotes] or -NUMBER [superscript numbers]; it is NOT to be used -when the FOOTNOTE_MARKER_STYLE is -LINE, or when footnote markers have been disabled -with -.FOOTNOTE_MARKERS -OFF.) -

-***Version 1.3 change*** -

-As of version 1.3, the manner of entering the line -after .FOOTNOTE OFF has changed -to accommodate users' differing wishes with respect to -the order of punctuation and footnote markers. The -correct way to enter the line after .FOOTNOTE -OFF--ONLY if your -FOOTNOTE_MARKER_STYLE is -STAR or NUMBER--is to input -it as if it's literally a continuation of the line before -.FOOTNOTE, and therefore begins with either a space -or a punctuation mark, as in the two following examples. -

-

-	   Example 1					  Example 2
-	   ---------                      ---------
-
-	A line of text,\c				A line of text\c
-	.FOOTNOTE						.FOOTNOTE
-	A footnote line.				A footnote line.
-	.FOOTNOTE OFF					.FOOTNOTE OFF
-	 broken up with a comma.		, broken up with a comma.
-
-	(last line begins with			(last line begins with
-	 a literal space)				 the comma and a space)
-
- -If your FOOTNOTE_MARKER_STYLE is line, none of -this is a concern. -

-***End of version 1.3 change*** -

-After you invoke FOOTNOTE, mom -takes care of everything: putting footnote markers in the body of -the document, keeping track of how many footnotes are on the page, -identifying the footnotes themselves appropriately, balancing them -properly with the bottom margin, deferring footnotes that don't fit -on the page... Even if you're using -COLUMNS, -mom knows what to do, and Does The Right Thing. -

-Footnotes can be sly little beasts, though. If you're writing a -document that's footnote-heavy, you might want to read the following. -

- -

Footnote behaviour

-

-By default, mom marks footnotes with alternating -stars (asterisks), daggers, and double-daggers. The first footnote -gets a star, the second a dagger, the third a double-dagger, the -fourth two stars, the fifth two daggers, etc. If you prefer -numbered footnotes, rest assured mom is happy to -oblige. -

-A small amount of vertical whitespace and a short horizontal rule -separate footnotes from the document body. The amount of whitespace -varies slightly from page to page depending on the number of lines -in the footnotes. Mom tries for a nice balance -between too little whitespace and too much, but when push comes to -shove, she'll usually opt for ample over cramped. The last lines of -footnotes are always flush with the document's bottom margin. - -

-If mom sees that a portion of a footnote cannot -be fit on its page, she carries that portion over to the next -page. If an entire footnote can't be fit on its page (i.e. -FOOTNOTE has been called too close to the bottom), -she defers the footnote to the next page, but sets it with the -appropriate marker from the previous page. -

-When footnotes occur within cited text, for example a -QUOTE -or a -BLOCKQUOTE, -mom will usually opt for deferring the footnote -over to the next page if it allows her to complete the cited text -on one page. -

-In the unfortunate happenstance that a deferred footnote is the -only footnote on its page (i.e. it's marked in the document body with -a star) and the page it's deferred to has its own footnotes, -mom separates the deferred footnote from the page's -proper footnote(s) with a blank line. This avoids the confusion that -might result from readers seeing two footnote entries on the same page -identified by a single star (or the number 1 if you've requested -numbered footnotes that begin at 1 on every page). The blank line -makes it clear that the first footnote entry belongs to the previous -page. -

-In the circumstance where a deferred footnote is not the only one -on its page, and is consequently marked by something other than a -single star, there's no confusion and mom doesn't -bother with the blank line. (By convention, the first footnote on -a page is always marked with a single star, so if readers see, say, -a dagger or double-dagger marking the first footnote entry, they'll -know the entry belongs to the previous page). -

-Very exceptionally, two footnotes may have to be deferred (e.g. one -occurs on the second to last line of a page, and another on the -last line). In such a circumstance, mom does not -add a blank after the second deferred footnote. If you'd like a -blank line separating both deferred footnotes from any footnotes -proper to the page the deferred ones were moved to, add the space -manually by putting a -.SPACE -command at the end of the footnote text, before -FOOTNOTE OFF (or FOOTNOTE X, QUIT, -EXIT, etc...). -

-Obviously, deferred footnotes aren't an issue if you request numbered -footnotes that increase incrementally throughout the whole document -- -yet another convenience mom has thought of. -

-While mom's handling of footnotes is -sophisticated, and tries to take nearly every imaginable situation -under which they might occur into account, some situations are -simply impossible from a typographic standpoint. For example, if -you have a -HEAD -near the bottom of the page AND that page has some footnotes on it, -mom may simply not have room to set any text under -the head (normally, she insists on having room for at least one line -of text beneath a head). In such an instance, mom -will either set the head, with nothing under it but footnotes, -or transfer the head to the next page. Either way, you'll have a -gaping hole at the bottom of the page. It's a sort of typographic -Catch-22, and can only be resolved by you, the writer or formatter -of the document, adjusting the type on the offending page so as to -circumvent the problem. -

-NOTE: Exceptionally, you may encounter problems with footnotes inside -quotes and blockquotes that cross a page or column. See BREAK_QUOTE -for a solution. -

- -

Footnote markers and punctuation in the running text

- -

-As of version 1.3, the manner of entering the line after -.FOOTNOTE OFF has changed. The correct way to -enter the line after .FOOTNOTE OFF now is to -input it as if it's literally a continuation of the line before -.FOOTNOTE, and therefore begins with either a space -or a punctuation mark, as in the two following examples. -

-

-	   Example 1					  Example 2
-	   ---------                      ---------
-
-	A line of text,\c				A line of text\c
-	.FOOTNOTE						.FOOTNOTE
-	A footnote line.				A footnote line.
-	.FOOTNOTE OFF					.FOOTNOTE OFF
-	 broken up with a comma.		, broken up with a comma.
-
-	(last line begins with			(last line begins with
-	 a literal space)				 the comma and a space)
-
- -Care must be taken, though, if the punctuation mark that begins the -line after FOOTNOTE OFF is a period (dot). You -must begin such lines with -\&., like this: -

-

-	end of a sentence\c
-	.FOOTNOTE
-	A footnote line.
-	.FOOTNOTE OFF
-	\&.  A new sentence...
-
- -If you omit the \&., the line will vanish! -

- - - - -


-

- - Tag: FOOTNOTE <toggle> | INDENT LEFT | RIGHT | BOTH <indent value> -
- *See
HYPER-IMPORTANT NOTE!!! -
- <indent value> requires a - unit of measure - - -

-FOOTNOTE is a toggle macro, therefore invoking it -on a line by itself allows you to enter a footnote in the body of a -document. Invoking it with any argument other than INDENT -(i.e. OFF, QUIT, END, X...) tells mom -you're finished. -

-Footnotes are the only element of -running text -that are not affected by the typesetting -indent macros. -In the unlikely event that you want a page's footnotes to line -up with a running indent, invoke FOOTNOTE with -the INDENT argument and pass it an indent -direction and indent value. L, R, and -B may be used in place of LEFT, -RIGHT, and BOTH. -FOOTNOTE must be invoked with INDENT -for every footnote you want indented; mom does -not save any footnote indent information from invocation to -invocation. -

-NOTE: If a footnote runs to more than one -paragraph(!), DO NOT begin the footnote with -the -PP -tag. Use PP only to introduce subsequent paragraphs. -

-HYPER-IMPORTANT NOTE: -The final word on the -input line -that comes immediately before FOOTNOTE MUST terminate -with a -\c -inline escape if your -FOOTNOTE_MARKER_STYLE -is either STAR or NUMBER. -See the -footnote example -above. -

-Additionally, the line after a FOOTNOTE -OFF should be entered as if there were no interruption in -the input text, i.e. the line should begin with a literal space or -punctuation mark. See -above. -

-Do NOT use the \c inline escape if your -FOOTNOTE_MARKER_STYLE is LINE, or -if you have disabled footnote markers with -.FOOTNOTE_MARKERS -OFF. As well, the line after -FOOTNOTE OFF should be entered normally. - -

-

Footnote control macros

-
    -
  1. Family/font/size/colour/lead/quad -
  2. Footnote markers -- on or off -
  3. Footnote marker style -- star+dagger, numbered or by line number - -
  4. Reset footnote number -- set footnote marker number to 1 -
  5. Inter-footnote spacing -
  6. Footnote rule -- on or off -
  7. Footnote rule length -- length of footnote separator rule -
  8. Adjust vertical position of footnote separator rule -
-

-

1. Family/font/size/colour/lead/quad

-

-See -Arguments to the control macros. -

-

-.FOOTNOTE_FAMILY    default = prevailing document family; default is Times Roman
-.FOOTNOTE_FONT      default = roman
-.FOOTNOTE_SIZE      default = -2 (points)
-.FOOTNOTE_COLOR     default = black
-.FOOTNOTE_AUTOLEAD  default = 2 points (typeset); single-spaced (typewrite)
-.FOOTNOTE_QUAD      default = same as paragraphs
-
- -

2. Footnote markers -- FOOTNOTE_MARKERS

-

-If you don't want footnote markers, in either the body of -the document or beside footnote entries themselves, toggle -them off with .FOOTNOTE_MARKERS OFF (or -END, QUIT, X...). This means, of course, that -you'll have to roll your own. If you want them back on, invoke -.FOOTNOTE_MARKERS with no argument. Footnote markers -are on by default. -

-If FOOTNOTE_MARKERS are disabled, do NOT use the -\c inline escape to terminate the line before -.FOOTNOTE. -

- -

3. Footnote marker style -- FOOTNOTE_MARKER_STYLE

-

-Mom gives you two choices of footnote marker style: -star+dagger (see -footnote behaviour -above), or numbered. -

-.FOOTNOTE_MARKER_STYLE STAR gives you star+dagger -(the default). There is a limit of 10 footnotes per page with -this style. -

-.FOOTNOTE_MARKER_STYLE NUMBER gives you superscript -numbers, both in the document body and in the footnote entries -themselves. By default, footnote numbers increase incrementally -(prev. footnote number + 1) throughout the whole document. You can -ask mom to start each page's footnote numbers at 1 -with .RESET_FOOTNOTE_NUMBER -(see below.) -

-

-.FOOTNOTE_MARKER_STYLE LINE lets you have -footnotes which are identified by line number, rather than by a -marker in the text. (Note that -NUMBER_LINES -must be enabled in order to use this marker style.) -

-With FOOTNOTE_MARKER_STYLE LINE, mom -will identify footnotes either by single line numbers, or line -ranges. If what you want is a single line number, you need only -invoke .FOOTNOTE, without terminating the text -line before it with \c, at the appropriate -place in running text. -

-If you want a range of line numbers (e.g. [5-11] ), -insert, directly into the first line of the range you want, the -inline escape, -\*[FN-MARK]. For the terminating line number of -the range, you need only invoke .FOOTNOTE, (again, -without attaching \c to the text line before it). -Mom is smart enough to figure out that where -FOOTNOTE was invoked represents the terminating -line number. Range-numbered footnotes are always output on the page -where FOOTNOTE was invoked, not the page where -\*[FN-MARK] appears (subject, of course, to the -rules for footnotes that fall too close to the bottom of a page, as -outlined -here). - -

-Mom, by default, puts footnote line numbers inside -square brackets. The style of the brackets may be changed with -the macro, FOOTNOTE_LINENUMBER_BRACKETS, which -takes one of three possible arguments: PARENS -("round" brackets), SQUARE (the default) or -BRACES (curly braces). If you prefer a -shortform, the arguments, (, [ or -{ may be used instead. - -

-If you don't want the numbers enclosed in brackets, you may tell -mom to use a "separator" instead. A common -separator would be the colon, but it can be anything you like. The -macro to do this is FOOTNOTE_LINENUMBER_SEPARATOR, -which takes, as its single argument, the separator you want. For -safety and consistency's sake, ALWAYS enclose the argument in -double-quotes. -

-The separator can be composed of any legal groff character, or any -combination of characters. A word of caution: when -using a separator, mom doesn't insert a space -after the separator. Hence, if you want the space (you probably -do), you must make the space part of the argument you pass to -FOOTNOTE_LINENUMBER_SEPARATOR. For example, -to get a colon separator with a space after it, you'd do -

-

-	.FOOTNOTE_LINENUMBER_SEPARATOR ": "
-
- -RUN-ON FOOTNOTES -

-Finally, if your footnote marker style is LINE, you -may instruct mom to do "run-on style" footnotes. -Run-on footnotes do not treat footnotes as discrete entities, i.e. -on a line by themselves. Rather, each footnote is separated from -the footnote before it by a space, so that the footnotes on any -given page form a continuous block, like lines in a paragraph. The -macro to get -mom to run footnotes on is -.FOOTNOTES_RUN_ON. Invoked by itself, it turns -the feature on. Invoked with any other argument -(OFF, NO, etc.), it turns the -feature off. It is generally NOT a good idea to turn the feature -on and off during the course of a single document. If you do, -mom will issue a warning if there's going to be a -problem. However, it is always perfectly safe to enable/disable the -feature after -COLLATE. -

-The usual reason for wanting run-on footnotes is that you're -using them to hold many, short references. (See -here -for instructions on using the groff program, -refer, to set up references.) - -

- -

4. Reset footnote number -- RESET_FOOTNOTE_NUMBER

-

-.RESET_FOOTNOTE_NUMBER, by itself, resets -footnote numbering so that the next footnote you enter is -numbered 1. -

-.RESET_FOOTNOTE_NUMBER PAGE tells -mom to start every page's footnote numbering at 1. -

- -

5. Inter-footnote spacing -- FOOTNOTE_SPACE

-

-If you'd like a little extra space between footnotes, you can have -mom put it in for you by invoking -.FOOTNOTE_SPACE with an argument representing the -amount of extra space you'd like. The argument to -FOOTNOTE_SPACE requires a -unit of measure. -

-In the following example, footnotes will be separated from each -other by 3 -points. -

-	.FOOTNOTE_SPACE 3p
-
- -

6. Footnote rule -- FOOTNOTE_RULE

-

-If you don't want a footnote separator rule, toggle it off with -.FOOTNOTE_RULE OFF (or END, -QUIT, X...). Toggle it back on by invoking -.FOOTNOTE_RULE with no argument. The default is to -print the rule. -

- -

7. Footnote rule length -- FOOTNOTE_RULE_LENGTH

-

-If you want to change the length of the footnote separator rule, -invoke .FOOTNOTE_RULE_LENGTH with a length, like -this, -

-	.FOOTNOTE_RULE_LENGTH 1i
-
- -which sets the length to 1 inch. Note that a -unit of measure -is required. The default is 4 -picas -for both -PRINTSTYLES. -

- -

8. Adjust vertical position of footnote separator rule -- FOOTNOTE_RULE_ADJ

-

-The footnote separator rule is actually a baseline rule that falls -on the -baseline -of the first line of a page's footnotes. By default, -mom raises the rule 3 -points -from the baseline so that the separator and the footnotes don't -look jammed together. If you'd prefer a different vertical -adjustment, invoke .FOOTNOTE_RULE_ADJ with the -amount you'd like. For example -

-

-	.FOOTNOTE_RULE_ADJ 4.25p
-
- -raises the rule by 4-1/4 points. Note that you can only raise -the rule, not lower it. A -unit of measure -is required. -

-Tip: If your document -leading -is 2 -points -or less (e.g your -point size -is 10 and your linespacing is 10, 11, or 12, lowering -mom's default footnote rule adjustment will -almost certainly give you nicer looking results than leaving -the adjustment at the default. Furthermore, you can invoke -FOOTNOTE_RULE_ADJ on any page in which footnotes -appear, or in any column, so that the placement of the footnote rule -can be changed on-the-fly, should you wish to do so. -

-


- - - -

Endnotes

- - -

-Embedding endnotes into mom documents is accomplished -the same way as embedding -footnotes. The example below is -identical to the one shown in the -introduction to footnotes, -except that .FOOTNOTE has been replaced with -.ENDNOTE. -

- -

-	...the doctrines of Identity as urged by Schelling\c
-	.ENDNOTE
-	<endnote about who the hell is Schelling>
-	.ENDNOTE OFF
-	 were generally the points of discussion presenting the most
-	of beauty to the imaginative Morella.
-
- -As with footnotes, note the obligatory use of the \c -inline escape -when your -ENDNOTE_MARKER_STYLE -is NUMBER (which marks endnotes references in -running text -with superscript numbers). When the marker style is -LINE, you must not use the -\c escape. -

-***Version 1.3 change*** -

-As of version 1.3, the manner of entering the line after -.ENDNOTE OFF has changed to accommodate users' -differing wishes with respect to the order of punctuation and -endnote markers. The correct way to enter the line after -.ENDNOTE OFF--but NOT -if your -ENDNOTE_MARKER_STYLE -is LINE--is to input it as if it's literally -a continuation of the line before .ENDNOTE, and -therefore begins with either a space or a punctuation mark, as in -the two following examples. -

- -

-	   Example 1					  Example 2
-	   ---------                      ---------
-
-	A line of text,\c				A line of text\c
-	.ENDNOTE						.ENDNOTE
-	A footnote line.				A footnote line.
-	.ENDNOTE OFF					.ENDNOTE OFF
-	 broken up with a comma.		, broken up with a comma.
-
-	(last line begins with			(last line begins with
-	 a literal space)				 the comma and a space)
-
- -***End version 1.3 change*** -

-Endnotes differ from footnotes in two ways (other than the fact that -endnotes come at the end of a document whereas footnotes appear in the -body of the document): -
-

    -
  1. When your ENDNOTE_MARKER_STYLE is - NUMBER, endnotes are always numbered - incrementally, starting at "1". -
  2. Endnotes MUST be output explicitly; mom does - not output them for you. In - collated - documents, this allows you to choose whether you - want the endnotes to appear at the end of each chapter or - article in a document, or grouped together at the very end - of the document. -
-

-Within endnotes, you may use the document element tags -PP, -QUOTE -and -BLOCKQUOTE. -This provides the flexibility to create endnotes that run to several -paragraphs, as well as to embed cited text within endnotes. -

-Should you wish to change the appearance of quotes or blockquotes that -appear within endnotes, you may do so with the -quote control macros -or -blockquote control macros. -HOWEVER... you must make the changes within each endnote, prior -to invoking QUOTE or BLOCKQUOTE, and -undo them prior to terminating the endnote (i.e. before ENDNOTE -OFF), otherwise the changes will affect subsequent quotes and -blockquotes that appear in the document body as well. -

- -

Endnote behaviour

-
-When you output endnotes (with -ENDNOTES), -mom finishes processing the last page of your document, -then breaks to a new page for printing the endnotes. If the document -type is -CHAPTER, -the centre part of the -header -(or footer), which, by default, contains a chapter number or title, is -removed. -

-By default, mom starts the endnotes page with a -bold, centred, double-underscored head, "ENDNOTES". -Underneath--flush left, bold, and underscored--she prints the document -title (or, in the case of chapters, the chapter number or title). She -then prints the endnotes. Each endnote is identified by its appropriate -number, in bold, right aligned to two placeholders. The text of the -endnotes themselves is indented to the right of the numbers. -

-If the endnotes are grouped together at the end of a collated document, -each section of the document that contains endnotes is identified by its -own unique title (or chapter number or title), bold, flush left, and -underscored. -

-Of course, all the defaults, as well as the overall style of the -endnotes page, can be changed with the -endnote control macros. -The attentive will notice that endnotes have an awful lot of control -macros. This is because endnotes are like a mini-document unto -themselves, and therefore need not be bound by the style parameters of -the body of the document. -

- - -

A Note on Endnote Spacing

- -
-On the endnotes page(s), each new endnote is separated from the -previous endnote by a full line space. This can result in a bottom -margin that hangs, and is the one instance, other than the use of -PARA_SPACE, -where mom allows unequal bottom alignment of pages. -Should you wish to correct this, by adding or subtracting small amounts -of space between endnotes that appear together on an endnotes page, make -the adjustment (with -ALD, -RLD -or -SPACE) -at the end of each endnote (i.e. just before invoking -ENDNOTE OFF) -rather than at the top. -

- - -

Endnotes and columnar documents

- -
-Formerly (pre 1.1.6), there was no way to set a document in columns -(see -COLUMNS) -and then turn off column mode for endnotes. As of version 1.1.6, -you may now do so. See -ENDNOTES_NO_COLUMNS. -

-


- - - -

- - Macro: ENDNOTE <toggle> -
- *See
HYPER-IMPORTANT NOTE!!! - - -

-ENDNOTE is a toggle macro, therefore invoking it -on a line by itself allows you to enter an endnote in the body of a -document. Invoking it with any other argument -(i.e. OFF, QUIT, END, X...) tells mom -that you've finished the endnote. -

-NOTE: If an endnote runs to more than one paragraph, -DO NOT begin the endnote with the -PP -tag. Use PP only to introduce subsequent paragraphs. -

-HYPER-IMPORTANT NOTE: -If your -ENDNOTE_MARKER_STYLE -is NUMBER (mom's default), the -final word on the -input line -that comes immediately before ENDNOTE MUST terminate -with a -\c -inline escape. See the -endnote example -above. -

-Additionally, the line after -.ENDNOTE OFF should be entered as if there -were no interruption in the input text, i.e. the line should begin -with a literal space or punctuation mark. See the two -examples, -above. -

-If your ENDNOTE_MARKER_STYLE is -LINE, do NOT use the \c escape, -and enter the line after .ENDNOTE OFF -normally. -

- - - -


-

-Tag: ENDNOTES - -

-Unlike footnotes, which mom automatically outputs at the -bottom of pages, endnotes must be explicitly output by you, the user. -ENDNOTES, by itself (i.e. without any argument), is -the macro to do this. -

-Typically, you'll use ENDNOTES at the end of -a document. If it's a single (i.e. not collated) document, -mom will print the endnotes pertaining to it. If it's -a collated document, mom will print all the endnotes -contained within all sections of the document (typically chapters), -appropriately identified and numbered. -

-Should you wish to output the endnotes for each section of a collated -document at the ends of the sections (instead of at the very end of the -document), simply invoke ENDNOTES immediately prior to -COLLATE. -Mom will print the endnotes, identified and numbered -appropriately, on a separate page prior to starting the next section of -the document. Each subsequent invocation of ENDNOTES -outputs only those endnotes that mom collected -after the previous invocation. -

-


- -

Endnote control macros

-

-VERY IMPORTANT NOTE! -
-Endnote control macros must always be invoked prior to the first -instance of -ENDNOTE/ENDNOTE OFF. -

-When you embed endnotes in the body of a document, -mom collects and processes them for later -outputting (when you invoke -ENDNOTES). -By the time you do invoke ENDNOTES, it's much too -late to change your mind about how you want them to look. -

-My advice? If you're planning to change the default appearance of -endnotes pages, set them up prior to -START. -

-

    -
  1. General endnotes-pages style control - -
  2. Endnotes-page header/footer control - -
  3. Endnotes-page head (i.e. the title at the top) control - -
  4. Endnote document-identification title - -
  5. Endnotes-pages endnote numbering style - -
-
- -

1. General endnotes page style control

- -

*Endnote family/font/quad

-

-See -Arguments to the control macros. -

-

-.ENDNOTE_FAMILY    default = prevailing document family; default is Times Roman
-.ENDNOTE_FONT      default = roman
-.ENDNOTE_QUAD*     default = justified
-
-*Note: ENDNOTE_QUAD must be set to either L or J
-
- - - -

*Endnote point size

-

-Macro: ENDNOTE_PT_SIZE <base type size of endnotes> - -

-Unlike most other control macros that deal with size of document -elements, ENDNOTE_PT_SIZE takes as its argument an -absolute value, relative to nothing. Therefore, the argument represents -the size of endnote type in -points, -unless you append an alternative -unit of measure. -For example, -

-

-	.ENDNOTE_PT_SIZE 12
-
- -sets the base point size of type on the endnotes page to 12 -points, whereas -

-

-	.ENDNOTE_PT_SIZE .6i
-
- -sets the base point size of type on the endnotes page to 1/6 of an -inch. -

-The type size set with ENDNOTE_PT_SIZE is the size of -type used for the text of the endnotes, and forms the basis from which -the point size of other endnote page elements is calculated. -

-The default for -PRINTSTYLE TYPESET -is 12.5 points (the same default size used in the body of the document). -

- - - -

*Endnote lead

-

-Macro: ENDNOTE_LEAD <base leading of endnotes> [ ADJUST ] -
-*Does not require a unit of measure; points is assumed - -

-Unlike most other control macros that deal with leading of document -elements, ENDNOTE_LEAD takes as its argument an -absolute value, relative to nothing. Therefore, the argument represents -the -leading -of endnotes in -points -unless you append an alternative -unit of measure. -For example, -

-

-	.ENDNOTE_LEAD 14
-
- -sets the base leading of type on the endnotes page to 14 -points, whereas -

-

-	.ENDNOTE_LEAD .5i
-
- -sets the base leading of type on the endnotes page to 1/2 inch. -

-If you want the leading of endnotes adjusted to fill the page, pass -ENDNOTE_LEAD the optional argument -ADJUST. (See -DOC_LEAD_ADJUST -for an explanation of leading adjustment.) -

-The default for -PRINTSTYLE TYPESET -is 14 points, adjusted. -

-NOTE: Even if you give mom a -DOC_LEAD_ADJUST OFF command, she will still, by -default, adjust endnote leading. You MUST enter -ENDNOTE_LEAD <lead> with no -ADJUST argument to disable this default behaviour. -

- - - -

*Singlespace endnotes (TYPEWRITE only)

-

-Macro: SINGLESPACE_ENDNOTES <toggle> - -

-If your -PRINTSTYLE -is TYPEWRITE and you use TYPEWRITE's default -double-spacing, endnotes are double-spaced. If your document is -single-spaced, endnotes are single-spaced. -

-If, for some reason, you'd prefer that endnotes be single-spaced -in an otherwise double-spaced document (including double-spaced -collated -documents), invoke SINGLESPACE_ENDNOTES with -no argument. And if, god help you, you want to change endnote -single-spacing back to double-spacing for different spacing of -endnotes output at the ends of separate documents in a collated -document, invoke SINGLESPACE_ENDNOTES with any -argument (OFF, QUIT, Q, X...). -

- - - -

*Endnote paragraph indenting

-

-Macro: ENDNOTE_PARA_INDENT <amount to indent first line of paragraphs in endnotes> -
-*Requires a unit of measure - -

-ENDNOTE_PARA_INDENT works exactly the same way as -PARA_INDENT, -except that the indent given is the amount by which to indent the first -lines of endnote paragraphs, not document body paragraphs. -

-The default is 1.5 -ems -for -PRINTSTYLE TYPESET; -1/2 inch for -PRINTSTYLE TYPEWRITE. - -

-NOTE: The first line of the first paragraph of endnotes -(the one attached immediately to the identifying endnote number) is -never indented. Only subsequent paragraphs are affected by -ENDNOTE_PARA_INDENT. -

- - - -

*Endnote paragraph spacing

-

-Macro: ENDNOTE_PARA_SPACE <toggle> - -

-ENDNOTE_PARA_SPACE works exactly the same way as -PARA_SPACE, -except that it inserts a blank line between endnote paragraphs, not -document body paragraphs. -

-The default is not to insert a blank line between paragraphs in -endnotes. -

-NOTE: Each endnote itself is always separated from any -previous endnote by a line space. ENDNOTE_PARA_SPACE -refers only to paragraphs that appear within each discrete endnote. -

- - - -

*Turning off column mode during endnotes output

-

-Macro: ENDNOTES_NO_COLUMNS <toggle> - -

-By default, if your document is -set in columns, -mom sets the endnotes in columns, too. However, -if your document is set in columns and you'd like the endnotes not -to be, just invoke ENDNOTES_NO_COLUMNS with no -argument. The endnotes pages will be set to the full page measure -of your document. -

-If you output endnotes at the end of each document in a -collated -document set in columns, column mode will automatically -be reinstated for each document, even with -ENDNOTES_NO_COLUMNS turned on. -

- - - -

*Endnotes-pages page numbering style

-

-Macro: ENDNOTES_PAGENUM_STYLE DIGIT | ROMAN | roman | ALPHA | alpha - -

-Use this macro to set the page numbering style of endnotes pages. -The arguments are identical to those for -PAGENUM_STYLE. -The default is digit. You may want to change it -to, say, alpha, which you would do with -

-

-	.ENDNOTES_PAGENUM_STYLE alpha
-
- - - -

*Setting the first page number of endnotes pages

-

-Macro: ENDNOTES_FIRST_PAGENUMBER <page # that appears on page 1 of endnotes> - -

-Use this macro with caution. If all endnotes for several -collated -documents are to be output at once, i.e. not at the end of each -separate doc, ENDNOTES_FIRST_PAGENUMBER tells -mom what page number to put on the first page of -the endnotes. -

-If you set ENDNOTES_FIRST_PAGENUMBER in collated -documents where the endnotes are output after each separate doc, -you have to reset every separate document's first page number after -COLLATE -and before -START. -

- - - -

*Omitting a page number on the first page of endnotes

-

-Macro: ENDNOTES_NO_FIRST_PAGENUM <toggle> - -

-This macro is for use only if FOOTERS are on. It -tells -ENDNOTES -not to print a page number on the first endnotes page. -Mom's default is to print the page number. -

- - - -

*Suspending pagination of endnotes pages

-

-Macro: SUSPEND_PAGINATION -
-Macro: RESTORE_PAGINATION - -

-SUSPEND_PAGINATION doesn't take an argument. -Invoked immediately prior to -ENDNOTES, -it turns off endnotes pages pagination. Mom -continues, however to increment page numbers silently. -

-To restore normal document pagination after endnotes, invoke -RESTORE_PAGINATION (again, with no argument) -immediately after ENDNOTES. - -

2. Endnotes-page header/footer control

-

- -If you wish to modify what appears in the header/footer that appears -on endnotes page(s), make the changes before you invoke -ENDNOTES, -not afterwards. -

-Except in the case of -DOCTYPE CHAPTER, -mom prints the same header or footer used throughout -the document on the endnotes page(s). Chapters get treated differently -in that, by default, mom does not print the -header/footer centre string (normally the chapter number or chapter -title.) In most cases, this is what you want. However, should you -not want mom to remove the centre string from -the endnotes page(s) headers/footers, invoke -ENDNOTES_HEADER_CENTER -with no argument. -

-An important change you may want to make is to put the word -"Endnotes" in the header/footer centre position. -To do so, do -

-

-	.HEADER_CENTER "Endnotes"
-	           or
-	.FOOTER_CENTER "Endnotes"
-
- -prior to invoking .ENDNOTES. If your -DOCTYPE -is CHAPTER, you must also invoke -ENDNOTES_HEADER_CENTER -for the HEADER_CENTER to appear. -

- -

*Endnotes page(s) header/footer centre string

-

-Macro: ENDNOTES_HEADER_CENTER toggle - -

-If your -DOCTYPE -is CHAPTER and you want mom to include -a centre string in the headers/footers that appear on endnotes pages, -invoke ENDNOTES_HEADER_CENTER (or -ENDNOTES_FOOTER_CENTER) with no argument. -Mom's default is NOT to print the centre string. -

-If, for some reason, having enabled the header/footer centre string -on endnotes pages, you wish to disable it, invoke the same macro -with any argument (OFF, QUIT, Q, X...). -

- -

*Allow headers on endnotes-pages

-

-Macro: ENDNOTES_ALLOWS_HEADERS <none> | ALL - -

-By default, if HEADERS are on, mom -prints page headers on all endnotes pages except the first. If you -don't want her to print headers on endnotes pages, do -

-

-	.ENDNOTES_ALLOWS_HEADERS OFF
-
- -If you want headers on every page including the first, do -

-

-	.ENDNOTES_ALLOWS_HEADERS ALL
-
- -NOTE: If FOOTERS are on, -mom prints footers on every endnotes page. This is -a style convention. In mom, there is no such beast -as ENDNOTES_ALLOWS_FOOTERS OFF. -

- -

3. Endnotes-page first page head (title) control

- - - -

*Endnotes-page first page head (title) string

-

-Macro: ENDNOTE_STRING "<head to print at the top of endnotes>" - -

-By default, mom prints the word "ENDNOTES" -as a head at the top of the first page of endnotes. If you want her -to print something else, invoke ENDNOTE_STRING with -the endnotes-page head you want, surrounded by double-quotes. If -you don't want a head at the top of the first endnotes-page, invoke -ENDNOTE_STRING with a blank argument (either two -double-quotes side by side -- "" -- or no argument -at all). -

- - - -

*Endnotes-page first page head (title) control

-

-See -Arguments to the control macros. -

-

-.ENDNOTE_STRING_FAMILY    default = prevailing document family; default is Times Roman
-.ENDNOTE_STRING_FONT      default = bold
-.ENDNOTE_STRING_SIZE*     default = +1
-.ENDNOTE_STRING_QUAD      default = centred
-
-*Relative to the size of the endnotes text (set with ENDNOTE_PT_SIZE)
-
- - - -

*Endnotes-page head (title) underscoring

-

-Macro: ENDNOTE_STRING_UNDERSCORE toggle | 2 - -

-Invoked by itself, ENDNOTE_STRING_UNDERSCORE will -underscore the endnotes-page head. Invoked with the argument 2 -(i.e. the digit 2), ENDNOTE_STRING_UNDERSCORE will -double-underscore the head. Invoked with any other argument, the macro -disables underscoring of the head. -

-Mom's default is to double-underscore the -head, therefore if you want no underscoring, you must insert -.ENDNOTE_STRING_UNDERSCORE OFF (or QUIT, X, NO, -NONE, etc.) into your document prior to outputting endnotes with -ENDNOTES. - - - -

*Endnotes-page head (title) automatic capitalization

-

-Macro: ENDNOTE_STRING_CAPS toggle - -

-Invoked by itself, ENDNOTE_STRING_CAPS will -automatically capitalize the endnotes-page head. Invoked with any -other argument, the macro disables automatic capitalization of the -head. -

-If you're generating a table of contents, you may want the -endnotes-pages head string in caps, but the toc entry in caps/lower -case. If the argument to -ENDNOTE_STRING -is in caps/lower case and ENDNOTE_STRING_CAPS is -on, this is exactly what will happen. -

-Mom's default is to capitalize the endnotes-pages -head string. -

- - - -

4. Endnote document-identification title

-

*Endnote document-identification title string

-

-Macro: ENDNOTE_TITLE "<title to identify a document in endnotes>" - -

-By default, mom identifies the document(s) to which -endnotes belong by the document title(s) given to the -TITLE -macro. If you'd want her to identify the document(s) another way, -just invoke ENDNOTE_TITLE with the identifying -title you want, surrounded by double-quotes. -

-If you don't want any identifying title, invoke -ENDNOTE_TITLE with a blank argument (either two -double-quotes side by side -- "" -- or no -argument at all). This is particularly useful if you have a single -(i.e. non-collated) document and find having the document's title -included in the endnotes redundant. -

- - - -

*Endnote document-identification title control

-

-See -Arguments to the control macros. -

-

-.ENDNOTE_TITLE_FAMILY    default = prevailing document family; default is Times Roman
-.ENDNOTE_TITLE_FONT      default = bold
-.ENDNOTE_TITLE_SIZE*     default = 0
-.ENDNOTE_TITLE_QUAD      default = left
-
-*Relative to the size of the endnotes text (set with ENDNOTE_PT_SIZE)
-
- - - -

*Endnote document-identification title underscoring

-

-Macro: ENDNOTE_TITLE_UNDERSCORE toggle - -

-Invoked by itself, ENDNOTE_TITLE_UNDERSCORE will -underscore the endnote document-identification title(s). Invoked with any -other argument, the macro disables underscoring of the title(s). -

-Mom's default is to underscore the document-identification title, therefore if you want no underscoring, you must -insert .ENDNOTE_TITLE_UNDERSCORE OFF (or QUIT, X, NO, -NONE, etc.) into your document prior to outputting endnotes with -ENDNOTES. -

- - - -

5. Endnotes-pages endnote numbering style

- -

*Endnote marker style

-

-The macro to control how endnotes are referenced is -ENDNOTE_MARKER_STYLE. -

-By default, mom places superscript numbers in -running text -to identify endnotes. However, if you have -line-numbering -turned on, you may instruct mom not to put -superscript numbers in the running text, but rather to reference -endnotes by line number. The command to do this is -

-

-	.ENDNOTE_MARKER_STYLE LINE
-
- -With ENDNOTE_MARKER_STYLE LINE, mom -will identify endnotes either by single line numbers, or line -ranges. If what you want is a single line number, you need only -invoke .ENDNOTE, without terminating the text -line before it with \c, at the appropriate -place in running text. (Should you wish to revert to -mom's default behaviour of placing a superscript -number in the text to identify an endnote, you can invoke -ENDNOTE_MARKER_STYLE with the argument, -NUMBER. It is not advisable to switch marker -styles within a single document, for aesthetic reasons, but there -is nothing to prevent you from doing so.) -

-If you want a range of line numbers (e.g. [5-11] ), -insert, directly into the first line of the range you want, the -inline escape, -\*[EN-MARK]. For the terminating line number of -the range, you need only invoke .ENDNOTE, (again, -without attaching \c to the text line before it). -Mom is smart enough to figure out that where -ENDNOTE was invoked represents the terminating -line number. - -

-Given the impossibility of knowing, in advance, the "string length" -of all the line numbers or ranges of line numbers that will be used -in endnotes (the string length of 12 is two; the string length -of 12-15 is 5), mom cannot "hang" line numbers -and guarantee that they, and the endnote text, will align in a -visually pleasing manner. Consequently, mom sets -the entirety of line-numbered endnotes completely flush left, -including the line numbers themselves. The line -numbers (by default, enclosed in square brackets) are separated from -the beginning of each endnote by a gap, so that a line-numbered -endnote looks approximately like this: -

-

-	[1-2]   Notwithstanding, Frye later asserts that Christianity
-	is "a ghost  with the chains of a foul historical record of
-	cruelty clanking behind it."
-
- -The default gap for PRINTSTYLE TYPESET and -PRINSTYLE TYPEWRITE is 1.5 -ems. -You can change the size of the gap with the macro, -ENDNOTE_LINENUMBER_GAP, which takes, as its single -argument, the size of the gap. The argument requires a -unit of measure, -so, for example, to change the gap to 2 -picas, -you'd do -

-

-	.ENDNOTE_LINENUMBER_GAP 2P
-
- - -By default, mom puts endnote line numbers inside -square brackets. The style of the brackets may be changed with -the macro, ENDNOTE_LINENUMBER_BRACKETS, which -takes one of three possible arguments: PARENS -("round" brackets), SQUARE (the default) or -BRACES (curly braces). If you prefer a -shortform, the arguments, (, [ or -{ may be used instead. - -

-If you don't want the numbers enclosed in brackets, you may tell -mom to use a "separator" instead. A common -separator would be the colon, but it can be anything you like. The -macro to do this is ENDNOTE_LINENUMBER_SEPARATOR, -which takes, as its single argument, the separator you want. -(If the argument contains spaces, don't forget to enclose the -argument in double-quotes.) The separator can be composed of -any legal groff character, or any combination of characters. -For example, to get a colon separator after the line number in -line-numbered endnotes, you'd do -

-

-	.ENDNOTE_LINENUMBER_SEPARATOR :
-
- -

*Endnote numbering style control

-

-See -Arguments to the control macros. -

-Please note that the control macros for endnote numbering affect only -the numbers that appear on the endnotes pages themselves, not the -endnote numbers that appear in the body of the document(s). -

-

-.ENDNOTE_NUMBER_FAMILY    default = prevailing document family; default is Times Roman
-.ENDNOTE_NUMBER_FONT      default = bold
-.ENDNOTE_NUMBER_SIZE*     default = 0
-
-*Relative to the size of the endnotes text (set with ENDNOTE_PT_SIZE)
-
- -

*Endnote numbering alignment

-

-By default, mom hangs the numbers on endnotes pages, -aligned right to two placeholders, producing this: -

- -

-	 9. Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	    sed diam nonumy eirmod tempor invidunt ut labore et
-	    dolore magna aliquyam erat, sed diam voluptua.
-
-	10. Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	    sed diam nonumy eirmod tempor invidunt ut labore et
-	    dolore magna aliquyam erat, sed diam voluptua.
-
- -The macros to alter this behaviour are -
- -
-
- - - -

- - Macro: ENDNOTE_NUMBERS_ALIGN_RIGHT <number of placeholders> - -

-ENDNOTE_NUMBERS_ALIGN_RIGHT takes one (non-optional) -argument: the number of placeholders to reserve for right alignment of -endnote numbers. -

-For example, if you have fewer than ten endnotes, you might want to do -

-

-	.ENDNOTE_NUMBERS_ALIGN_RIGHT 1
-
- -which would ensure that the endnote numbers hang, but are all flush -with the page's left margin. If, god help you, you have over a hundred -endnotes, you'd want to do -

-

-	.ENDNOTE_NUMBERS_ALIGN_RIGHT 3
-
- -to ensure that the numbers hang and are properly right-aligned. -

- -


- - - -

- - Macro: ENDNOTE_NUMBERS_ALIGN_LEFT - -

-If you don't want the endnote numbers to hang and right-align, invoke -ENDNOTE_NUMBERS_ALIGN_LEFT, which doesn't require any -argument. This disables hanging and right-alignment of endnote numbers, -so that the example -above -comes out like this: -

-

-	9. Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	sed diam nonumy eirmod tempor invidunt ut labore et
-	dolore magna aliquyam erat, sed diam voluptua.
-
-	10. Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
-	sed diam nonumy eirmod tempor invidunt ut labore et
-	dolore magna aliquyam erat, sed diam voluptua.
-
-
- - - -

Margin notes

- - -

-Margin notes are short annotations that appear in either the left -or right margin of a document. Sometimes they comment on the text. -Sometimes they assist in following the "flow" of a document by -summarizing the subject of a portion of text. Sometimes they're -comments to yourself in a draft copy. -

-The margin notes macros and routines in om.tmac -(mom) are "mommified" versions of the margin notes -macros and routines written by Werner Lemberg and patched by Gaius -Mulley. -

- -Margin notes behaviour -

-First things first: before you enter your first margin note, you -must "initialize" margin notes with -MN_INIT. -MN_INIT sets up the style parameters for margin -notes, including things like -font, -family -and -leading. -

-After initializing margin notes, you create margin notes with the -MN -macro. Based on the argument you pass MN, your -margin note will go in either the left or the right margin. -

-Margin notes are tricky from a typographic standpoint with respect -to vertical placement. Since the leading of margin notes may -differ from that of -running text, -it's impossible for mom to guess whether to align -the first lines of margin notes with a document -baseline, -whether to align the last lines of margin notes with a document -baseline, or whether to center them, vertically, so that neither -first nor last line aligns with anything! -

-Given this difficulty, mom always aligns the first -line of any margin note with a document baseline. If you want a -different behaviour, you must adjust the position(s) of margin -notes yourself, on a note by note basis. (See -Adjusting the vertical position of margin notes.) -

-Generally speaking, mom tries to place margin -notes at the point where you invoke the tag, -MN. -However, in the event that a margin note runs deep, she may not -be able to place a subsequent margin note exactly where you want. -In such an instance, mom will "shift" the margin -note down on the page, placing it one (margin note) -linespace beneath the previous margin note (plus whatever vertical -space is required to get the first line to line up with a baseline -of running text). A warning will be issued, letting you know this -has happened, and where. -

-Sometimes, if a margin note has to be shifted down, there simply -isn't enough room to start the margin note on the page on which -MN is invoked. In that case, mom -ignores the margin note entirely and issues a warning, letting you -know what she's done, and where. -

-In the event that a margin note, sucessfully begun on a page, -runs past your bottom margin (or the last line before footnotes -begin), the margin note will "flow" onto the next page. If it is a -"left" margin note, it will continue in the left margin. If it is a -"right" margin note, it will continue in the right margin. -

-If your document is being set in two columns, mom -will sensibly and automatically set all margin notes pertaining -to the left column in the left margin, and all margin notes -pertaining to the right column in the right margin, regardless of -the "direction" argument you give the MN tag. If -you try to use MN in documents of more than two -columns, mom will ignore all margin notes, and -issue warning for each. -

-

Adjusting the vertical position of margin notes

-

-When the -leading -of margin notes differs from the leading used throughout a document, -you may want to adjust the vertical position of individual margin -notes. This is most often going to be the case with margin notes -that end near the bottom of the page, where you want the last line of -the margin note to line up with the last line of text on the page. -

-Adjustments to the vertical position of margin notes must be done -inside the margin note (i.e. after MN), at the -top, before entering text. The commands to use are -\!.ALD -(to lower the margin note), and -\!.RLD -(to raise it). The \! must precede the -macros, or they won't have any effect. - -

-


- - - -

- - Macro: MN_INIT [ ragged | symmetric ] < left-width right-width gutter family+font point-size lead colour hyphenation-flags > - -

-Before you enter your first margin note, you must initialize -all the parameters associated with margin notes with -MN_INIT. If you forget to do so, -mom will issue a warning and abort. -

-The argument list is quite long; an -explanation of each argument follows. Any argument whose value you -want to be the default must be entered as "" (i.e. two -double-quotes with no space between them). Defaults for each -argument are given in the explanation below. -

-[ ragged | symmetric ] -
-If the first argument is "ragged", both left and right margin notes -will be flush left. If the first argument is "symmetric", left -margin notes will be set flush right, and right margin -notes will be set flush left. The effect is something -like this: -

-

-	     A left    This is a meaningless batch        A right
-	margin note    of text whose sole purpose is      margin note
-	  with just    to demonstrate how the sym-        with just
-	a few words    metric argument to MN sets left    a few words
-	     in it.    and right margin notes.            in it.
-
- - -If the argument is omitted, -or given as "", both left and right margin notes will be set -justified. (Justified is usually not a good idea, since the narrow -measure of margin notes makes pleasing justification a near -impossibility.) -

-left-width -
-The width of left margin notes. A -unit of measure -must be appended directly onto the argument. The default is to set -left margin notes right out to the edge of the page, which is -almost certainly not what you want, so you should give a value for -this argument if using left margin notes. -

-right-width -
-The width of right margin notes. A -unit of measure -must be appended directly onto the argument. The default is to set -right margin notes right out to the edge of the page, which is -almost certainly not what you want, so you should give a value for -this argument if using right margin notes. -

-gutter -
-The -gutter -between margin notes and -running text. -A -unit of measure -must be appended directly onto the argument. The gutter applies to -both left and right margin notes. The default is 1 -em. -

-font -
-The family+font for margin notes. Yes, that's right: the family -PLUS font combo. For example, if you want Times Roman Medium, -the argument must be TR. If you want Palatino Medium Italic, the -argument must be PI. The default is the same family+font combo used -for a document's paragraph text. -

-lead -
-The -leading -of margin notes. lead uses -points -as its unit of measure, so don't tack a unit of measure onto the -end of the argument. The default lead is the same leading as -is used for paragraph text (i.e. the document's base leading). -For convenience and clarity, you may also give the word, -DOC, to this argument, which indicates that the -leading should be the same as the document's base leading. -

-colour -
-The colour of margin notes. The colour must be pre-initialized -with -NEWCOLOR -or -XCOLOR. -The default is black. -

-hyphenation-flags -
-A number telling groff how you want margin notes -hyphenated. -

-

-	1 = hyphenate without restrictions
-	2 = do not hyphenate the last word on the page
-	4 = do not hyphenate the last two characters of a word
-	8 = do not hyphenate the first two characters of a word
-
- -The values can be added together, so, for example, if you want -neither the first two nor the last two characters of words -hyphenated, the hyphenation-flag would be 12. The default value is -14 (i.e. 2+4+8). - -

-


- - - -

- - Macro: MN LEFT|RIGHT | <anything> - -

-Once you've initialized margin notes with -MN_INIT, -you can enter margin notes any time you like with -MN. An argument of LEFT will set -a left margin note. An argument of RIGHT will set -a right margin note. -

-Any argument, such as OFF (or -QUIT, END, X, -etc) exits the current margin note. - -

-


- - - -

Inserting a blank page into the document

-

- - Macro: BLANKPAGE <# of blank pages to insert> - - -

-This one does exactly what you'd expect -- inserts a blank page into -the document. Mom silently increments the page -number of every blank page and keeps track of -recto/verso -stuff, but otherwise, does nothing. It's up to you, the user, to -figure out what to do with this feature. However, it's worth -noting that without it, inserting completely blank pages, to use -a vernacular Québécois phrase, "c'est pas évident" -(somewhere between "isn't easy", "isn't -obvious" and "isn't fun"). -

-The argument to BLANK_PAGE is the number of blank -pages to insert. The argument is not optional, hence even if you -only want one blank page, you have to tell mom: -

-

-	.BLANKPAGE 1
-
- -

Terminate document processing

- - -

-The use of FINIS is optional. If you invoke it -(at the end of a document before -TOC -or -ENDNOTES), -mom -deposits the word END, centred after a blank line, beneath the last -line of the document. END is enclosed between -em-dashes. -

-Please note that in versions of -mom prior to 1.1.9, FINIS used to -turn off -footers -(if they were on) and page numbering (if page numbers were at the -bottom of the page). Damned if I can recall why I thought anyone -would want this behaviour, but it has been removed. -

-If you're writing in a language other than English, you can -change what mom prints for END with -the control macro FINIS_STRING. -

-


- - - -

Table of contents

- - -

-Want a table of contents for your document? Easy. Just enter -

-

-	.TOC
-
- -as the very last macro of your document file. Mom -will have picked up all document titles (in -collated -documents), all heads, subheads, and paragraph heads, as well as any -endnotes pages that have been output, and assigned them the -appropriate page number (and page numbering style). Talk about a -no-brainer! - -That said, tables of contents (tocs) have even more control macros -than endnotes. As always, the reason for so many control macros is -so that if you want to change just about any aspect of the toc's -typographic appearance, you can. Mom is all about -simplicity AND flexibility. -

- -

TOC behaviour

-

-When you output a toc (with -TOC), -mom finishes processing the last page of your document, -then breaks to a new page for printing the toc. -

-Mom follows standard typesetting conventions for -tables of contents. To this end, if -HEADERS -are on for the document, the first page of the toc has no page -header, but does have a first page (roman numeral) number, always -"1", in the bottom margin. If -FOOTERS -are on for the document, the first page has neither a footer, nor a -page number in the top margin. (If you absolutely must have a page -footer on the first page of the toc, simply invoke -FOOTER_ON_FIRST_PAGE -immediately before TOC.) Subsequent toc pages have -both page headers or footers and a page number. -

-Entries in the toc are hierarchically indented, as you would -expect. By default, each type of entry (e.g. a head or a subhead) -is set in a different font as well. If any of heads, subheads or -paragraph heads are numbered in the body of the document, they are -also numbered in the toc. Head numbering in the toc is NOT -concatenated as it is in the body of the document, which would be -visually redundant in a toc. -

-Tocs are never set in columns, regardless of whether the rest of -the document is. Lastly, if -recto/verso -printing is enabled, the toc respects it. This sometimes leads to -tocs that begin with the wrong margins, but the margins can be -corrected either by outputting a -BLANKPAGE -or by using the toc control macro -TOC_RV_SWITCH. -

-The overall toc -family, -point size -and -lead -can be altered with the toc -control macros, -as can the family, -font, -point size and indent of each type of toc entry (i.e. title, head, -subhead, paragraph head). Furthermore, the page numbering style -can be changed, as can the amount of visual space reserved for toc -entry page numbers. -

- - - -


-

-Macro: TOC - -

-If you want a toc, just put TOC as the last macro -in a document. Mom takes care of the rest. -

-


- -

TOC control macros

-

-Toc entries are not actually processed when mom -collects them, so you can put any toc control macros anywhere you -like in your document. Some may prefer to place them at the top of -the file. Others may prefer to place them just before outputting -the toc. The choice is yours. -
-

    -
  1. General toc page style control - -
  2. Toc page numbering - -
  3. Changing the toc header (title), string and style - -
  4. Changing the style for toc entries - -
  5. Additional toc control macros - -
-
- -

1. General toc page style control

- -

*Toc family

-

-See -Arguments to the control macros. -

-Set the family of toc pages with TOC_FAMILY, which -establishes the default family for every element of a toc page, -including the toc title ("Contents") and the page number -in the top or bottom margin. The default is the prevailing document -family. -

-All elements on a toc page also have their own _FAMILY -control macros, which override the default set by -TOC_FAMILY. -

- - - -

*Toc point size

-

-Macro: TOC_PT_SIZE <base type size of the toc> - -

-Unlike most other control macros that deal with size of document -elements, TOC_PT_SIZE takes as its argument an -absolute value, relative to nothing. Therefore, the argument -represents the size of toc type in -points, -unless you append an alternative -unit of measure. -For example, -

-

-	.TOC_PT_SIZE 12
-
- -sets the base point size of type for the toc to 12 points, whereas -

-

-	.TOC_PT_SIZE .6i
-
- -sets the base point size of type for the toc to 1/6 of an inch. -

-The type size set with TOC_PT_SIZE forms the basis -from which the point size of other toc page elements are calculated. -

-The default for -PRINTSTYLE TYPESET -is 12.5 points (the same default size used in the body of the -document). -

- - - -

*Toc lead

-

-Macro: TOC_LEAD <leading of the toc> [ ADJUST ] -
-*Does not require a unit of measure; points is assumed - -

-Unlike most other control macros that deal with leading of document -elements, TOC_LEAD takes as its argument an -absolute value, relative to nothing. Therefore, the argument -represents the -leading -of tocs in -points -unless you append an alternative -unit of measure. -For example, -

-

-	.TOC_LEAD 14
-
- -sets the base leading of type on the endnotes page to 14 -points, whereas -

-

-	.TOC_LEAD .5i
-
- -sets the base leading of type on the endnotes page to 1/2 inch. -

-If you want the leading of toc pages adjusted to fill the -page, pass TOC_LEAD the optional argument -ADJUST. (See -DOC_LEAD_ADJUST -for an explanation of leading adjustment.) -

-The default for -PRINTSTYLE TYPESET -is the prevailing document lead (16 by default), adjusted. -

-NOTE: Even if you give mom a -DOC_LEAD_ADJUST OFF command, she will still, by -default, adjust toc leading. You MUST enter -TOC_LEAD <lead> with no -ADJUST argument to disable this default behaviour. -

-ADDITIONAL NOTE: Tocs are always double-spaced in -PRINTSTYLE TYPEWRITE, regardless of whether the -body of the document is single-spaced. - -

2. Toc page numbering

-

-The page numbering of toc pages is controlled by the same macros -that control -document page numbering, -except -PAGENUM -(tocs always start on page 1). The defaults are the same as the -rest of the document. -

-If you wish to change some aspect of toc pagination, use the -document pagination control macros immediately prior to -.TOC. -

-A special macro, -TOC_PAGENUM_STYLE -controls the style of toc pages page numbers. -

- -


- - - -

- - Macro: PAGINATE_TOC <toggle> - -

-By default, mom paginates the toc. If you'd like -her not to, do -

-

-	.PAGINATE_TOC OFF
-
- -NOTE: Simply invoking PAGINATION -OFF or PAGINATE OFF disables toc -pagination for the first toc page only. You MUST use -.PAGINATE_TOC OFF to disable toc pagination, even -if pagination is turned off elsewhere in your document. -

- -


-

- - - - - Macro: TOC_PAGENUM_STYLE <DIGIT | ROMAN | roman | ALPHA | alpha> - -

-By default, mom uses roman numerals to number -toc pages. Use TOC_PAGENUM_STYLE if you'd prefer -something else. For example, to have standard digits instead of -roman numerals, do the following: -

-

-	.TOC_PAGENUM_STYLE DIGIT
-
- -
- -

3. Changing the toc header (title) string and style

-

-The toc header string is the title that appears at to top of the -toc. By default, it's "Contents". If you'd like -something else, say, "Table of Contents", do -

- -

-	.TOC_HEADER_STRING "Table of Contents"
-
- - -The style of the toc header (title) is managed by the usual control -macros (see -arguments to the control macros). -

-

-	.TOC_HEADER_FAMILY  default = prevailing doc family (Times Roman in TYPEWRITE)
-	.TOC_HEADER_FONT    default = bold
-	.TOC_HEADER_SIZE    default = +4
-	.TOC_HEADER_QUAD    default = left
-
- -

4. Changing the style for toc entries

-

-"Toc entries" refers to titles, heads, subheads and -paragraph heads as they appear in the toc. Their style is managed -by the usual -control macros, -starting with TOC_ -

- -

The toc _INDENT control macros

-

-The toc control macros that end in _INDENT all take a single -argument that requires a -unit of measure. -The argument is the distance to indent the entry, always measured -from the left margin. For example, -

-

-	.TOC_HEAD_INDENT 2P
-
- -indents head entries 2 -picas -from the left margin. -

- -

*Changing the style for toc title entries

-

-(See -arguments to the control macros). -

-Toc title entries are the titles of documents that have been -collated -together. -

-

-	.TOC_TITLE_FAMILY  default = prevailing doc family (Times Roman in TYPEWRITE)
-	.TOC_TITLE_FONT    default = bold italic
-	.TOC_TITLE_SIZE    default = +0
-	.TOC_TITLE_INDENT  default = 0 for TYPESET and TYPEWRITE
-
- -

*Changing the style for toc head entries

-

-(See -arguments to the control macros). -

-Toc head entries are main heads that appear in the body of a -document. -

-

-	.TOC_HEAD_FAMILY  default = prevailing doc family (Times Roman in TYPEWRITE)
-	.TOC_HEAD_FONT    default = bold
-	.TOC_HEAD_SIZE    default = +.5
-	.TOC_HEAD_INDENT  default = 18p for TYPESET; 2m for TYPEWRITE
-
- -

*Changing the style for toc subhead entries

-

-(See -arguments to the control macros). -

-Toc subhead entries are subheads that appear in the body of a -document. -

-

-	.TOC_SUBHEAD_FAMILY  default = prevailing doc family (Times Roman in TYPEWRITE)
-	.TOC_SUBHEAD_FONT    default = roman
-	.TOC_SUBHEAD_SIZE    default = +0
-	.TOC_SUBHEAD_INDENT  default = 30p for TYPESET; 4m for TYPEWRITE
-
- -

*Changing the style for toc paragraph head entries

-

-(See -arguments to the control macros). -

-Toc paragraph head entries are paragraph heads that appear in the -body of a document. -

-

-	.TOC_PARAHEAD_FAMILY  default = prevailing doc family (Times Roman in TYPEWRITE)
-	.TOC_PARAHEAD_FONT    default = italic
-	.TOC_PARAHEAD_SIZE    default = +0
-	.TOC_PARAHEAD_INDENT  default = 42p for TYPESET; 6m for TYPEWRITE
-
- -

*Changing the style for toc paragraph page number listings

-

-(See -arguments to the control macros). -

-Toc paragraph head entries are paragraph heads that appear in the -body of a document. -

-

-	.TOC_PN_FAMILY  default = prevailing doc family (Times Roman in TYPEWRITE)
-	.TOC_PN_FONT    default = roman
-	.TOC_PN_SIZE    default = +0
-
- -

5. Additional toc macros

-

-The following macros allow you to switch page margins should -they be incorrect for recto/verso printing, to establish how -many placeholders to leave for page listings, and to have -mom append author(s) to toc title entries. -

- -


- - - -

- - Macro: TOC_RV_SWITCH - -

-TOC_RV_SWITCH doesn't take an argument. It simply -instructs mom to switch the left and right margins -of -recto/verso -documents should the toc happen to begin on an even page when you -want an odd, or vice versa. -

-The same result can be accomplished by outputting a -BLANKPAGE. -

- -


- - - -

- - Macro: TOC_TITLE_ENTRY <"alternate wording for a title entry in the toc"> - -

-In -collated -documents, the title of each separate document appears in the table -of contents. It may sometimes happen that you don't want the title -as it appears in the toc to be the same as what appears in -the -docheader. -You might, for example, want to shorten it. Or, in the case of -chapters where the docheader contains both a chapter number and a -chapter title, like this -

-

-	           Chapter 6
-	Burning Bush -- Maybe God Was Right
-
- -you might want only the chapter title, not the chapter number, to -show up in the toc. (By default, TOC generates -both.) -

-If you want to change the wording of a title entry in the toc, -simply invoke TOC_TITLE_ENTRY with the desired -wording, enclosed in double-quotes. Using the example, above, -

-

-	.CHAPTER 6
-	.CHAPTER_TITLE "Burning Bush -- Maybe God Was Right"
-	.TOC_TITLE_ENTRY "Burning Bush"
-	.DOCTYPE CHAPTER
-
- -would identify chapter 6 in the toc simply as "Burning -Bush". - -

- -


- - - -

- - Macro: TOC_APPENDS_AUTHOR <none> | <"name(s) of authors"> - -

-In certain kinds of collated documents, different authors are -responsible for the articles or stories contained within them. In -such documents, you may wish to have the author or authors -appended to the toc's title entry for each story or article. -

-If you invoke TOC_APPENDS_AUTHOR with no argument, -mom appends the first argument you passed to -AUTHOR -to toc title entries, separated by a front-slash. -

-If you invoke TOC_APPENDS_AUTHOR with an argument -(surrounded by double-quotes), mom will append it -to the toc title entries instead. This is useful if you have -multiple authors you wish to identify by last name only. For -example, if three authors--Joe Blough, Jane Doe, and John -Deere--are responsible for a single article -

-

-	.TOC_APPENDS_AUTHOR "Blough et al."
-
- -would be a good way to identify them in the toc. -

- -


- - - -

- - Macro: TOC_PADDING <# of placeholders to allow for page number listings> - -

-By default, mom allows room for 3 digits in the -page number listings of tocs. If you'd like some other number of -placeholders, say 2, do -

-

-	.TOC_PADDING 2
-
- - - -
-

- - Macro: FINIS - - -

-The use of FINIS is optional, but if you use -it, it should be the last macro you invoke in a document (before -ENDNOTES -or -TOC). -See -above -for a description of how FINIS behaves. -

-NOTE: If you don't use FINIS, -and you don't want -footers -(if they're on) or a page number at the bottom of the last page of -a document, you have to turn them off manually, as the last two -lines of your document file, like this: -

-

-	.FOOTERS OFF
-	.PAGINATE OFF
-
- -

Changing the FINIS string

- -

-By default, FINIS prints the word -END between -em-dashes. -If you'd like mom to print something else -between the dashes, use the FINIS_STRING macro -(anywhere in the document prior to FINIS). -

-For example, if your document's in French, you'd do -

-

-	.FINIS_STRING "FIN"
-
- -Double-quotes must enclose the macro's argument. -

-NOTE: If you pass FINIS_STRING -a blank string, i.e. -

-

-	.FINIS_STRING ""
-
- -mom will still print the em-dashes if you -invoke FINIS. This, in effect, produces a -short, centred horizontal rule that terminates the document. -(In -PRINTSTYLE TYPEWRITE, -it's a short, dashed line composed of four hyphens.) - -

Changing the FINIS colour

-

-Invoking FINIS_COLOR with a pre-defined (or -"initalized") color changes the colour of both the FINIS -string and the em-dashes that surround it. If you use the -inline escape, -\*[<colorname>], -in the argument passed to FINIS, only the text -will be in the new colour; the em-dashes will be in the default -document colour (usually black). - -

-


-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/docprocessing.html b/contrib/groff/contrib/mom/momdoc/docprocessing.html deleted file mode 100644 index 6f64d68d9599..000000000000 --- a/contrib/groff/contrib/mom/momdoc/docprocessing.html +++ /dev/null @@ -1,2484 +0,0 @@ - - - - -Mom -- Document Processing, Introduction and Setup - - - - - -Next   -Prev   -Back to Table of Contents -

- - -

DOCUMENT PROCESSING WITH MOM

- -Introduction to document processing -
-Some document defaults -
-* IMPORTANT NOTE on leading/spacing and bottom margins * -
-The SHIM macro -
-

Table of Contents for document processing

- -
-
- -

Introduction to document processing

- -As explained in -Document processing with mom, -document processing uses markup tags to identify document elements -such as heads, paragraphs, and so on. The tags are, of course, macros, -but with sensible, readable names that make them easy to grasp and -easy to remember. (And don't forget: if you don't like the -"official" name of a tag -- too long, cumbersome -to type in, not "intuitive" enough -- you can change it -with the -ALIAS -macro.) -

-In addition to the tags themselves, mom has an -extensive array of macros that control how they look and behave. -

-Setting up a mom doc is a simple, four-part procedure. -You begin by entering information about the document itself (title, -subtitle, author, etc.). Next, you tell mom what -kind of document you're creating (e.g. chapter, letter, abstract, -etc...) and what kind of output you want (typeset, typewritten, -draft-style, etc). Thirdly, you make as many or as few changes to -mom's default behaviour as you wish. Lastly, you -invoke the -START -macro. Voilà! You're ready to write. -

-


- - -

Some document defaults

- -As is to be expected, mom has defaults for everything. -If you want to know a particular default, read about it in the -description of the pertinent tag. -

-I fear the following may not be adequately covered in the -documentation. Just in case, here they are. -

-

    -
  • the paper size is 8.5x11 inches -
  • the left and right margins are 1-inch -
  • the top and bottom margins for document text are plus/minus - visually 1-inch -
  • pages are numbered; the number appears centred, at the - bottom, surrounded by hyphens ( e.g. -6- ) -
  • the first page of a document begins with a - document header -
  • subsequent pages have - page headers - with a rule underneath -
-

-Another way to check up on document processing defaults is to have -a look at the macro file (om.tmac). Each macro is preceded by a -description that (generally) says what its default is (if it has -one). -

-


- - -

IMPORTANT NOTE on leading/spacing and bottom margins

-
- -Mom takes evenly-aligned bottom margins in -running text -very seriously. Only under a very few (exceptional) circumstances -will she allow a bottom margin to "hang" (i.e. to fall -short). -

-In order to ensure even bottom margins, mom -uses the "base" document -leading -in effect at the start of running text on each page (i.e. -the leading used in paragraphs) to calculate the spacing of every -document element. Prior to invoking -START, -this is set with the -typesetting macro -LS, -afterwards with the document -control macro -DOC_LEAD. -

-Because mom relies so heavily on the base document -leading, any change to the leading or spacing on a page will almost -certainly have undesirable consequences on that page's bottom margin -unless the change is fully compensated for elsewhere on the page. -

-In other words, if you add a few points of space somewhere on a page, -you must subtract the same number of points somewhere else on that -same page, and vice versa. -

-If it's a question of adding or subtracting full line spaces between -or within document elements, you can do so by using the "v" -unit of measure -with whatever spacing macro you choose -- -ALD, -RLD, -SPACE --- and mom won't object. "v" means -"the current leading", so she isn't confused by it. And -since "v" accepts decimal fractions, you can add/subtract -half linespaces and quarter linespaces with "v" as well, -provided you compensate for the fractional linespace somewhere -else on the page. -

-If all this seems like too much work, mom -provides a special macro to get you out of trouble if you've played -around with leading and/or spacing. The macro is called -SHIM (like those little pieces of wood carpenters -use to get their work even, level and snug), and it's described -below. -

- - - -


-

- -Macro: SHIM - -

-SHIM doesn't take any argument. Use it whenever -you've played around with the -leading -or spacing on a page and you -need to get mom's document leading back on track. -

-For example, say you want to insert a picture into a document with -the special groff macro, PSPIC (see the -groff_tmac man page for usage). -

-Pictures aren't usually conveniently sized in multiples of document -leading, which means that when you insert the picture, you disrupt -mom's ordered placement of baselines on the page. -This will certainly result in a bottom margin that doesn't match the -bottom margins of your document's other pages. -

-The solution is to insert SHIM after the picture, -like this: -

-

-	<some lines of text>
-	.PSPIC <full path to picture>
-	.SHIM
-	<more lines of text>
-
-SHIM instructs mom to insert as -much or a little space after the picture as is needed to ensure that -the baseline of the next -output line -falls where mom would have put it had you not -disrupted the normal flow of output lines with the picture. -

-And say, on previewing the above example, you find that the picture -doesn't centre nicely between the lines of text, you can always do -

-

-	<some lines of text>
-	.RLD 3p
-	.PSPIC <full path to picture>
-	.SHIM
-	<more lines of text>
-
- -to raise the picture slightly -(Reverse LeaD -3 points; see -RLD), -and still have SHIM ensure that text underneath -falls exactly where it's supposed to. -

-


- -

Document setup

-

- -

Tutorial -- Setting up a mom document

- -There are four "parts" to setting up a mom -doc (three, actually, with one optional). Before we proceed, though, -be reassured that something as simple as -

-

-	.TITLE     "By the Shores of Lake Attica"
-	.AUTHOR    "Rosemary Winspeare"
-	.PRINTSTYLE TYPESET
-	.START
-
- -produces a beautifully typeset 8.5x11 document, with a -docheader -at the top of page 1, -page headers -with the title and author on subsequent -pages, and page numbers at the bottom of each page. In the course -of the document, heads, subheads, citations, quotes, epigraphs, -and so on, all come out looking neat, trim, and professional. -

-For the purposes of this tutorial, we're going to set up a short -story -- My Pulitzer Winner by Joe Blow. Thankfully, -we don't have to look at story itself, just the setup. -Joe wants the document -

-

    -
  • to be draft 7, revision 39; -
  • to use the "default" style of document formatting: -
  • to print as draft-style output (instead of "final" copy output); -
  • to be typeset, in Helvetica, 12 on 14, - rag-right; -
  • to have footers - instead of - headers; -
  • to use a single asterisk for - author linebreaks. -
-

-Joe Blow has no taste in typography. His draft won't look pretty, -but this is, after all, a tutorial; we're after examples, not beauty. -

Step 1

- -The first step in setting up any document is giving mom -some reference information. The reference macros are: -

-

    -
  • TITLE -
  • DOCTITLE -
  • COVERTITLE -
  • SUBTITLE -
  • AUTHOR -
  • CHAPTER -- the chapter number -
  • DRAFT -- the draft number -
  • REVISION -- the revision number -
  • COPYRIGHT -- only used on cover pages -
  • MISC -- only used on cover pages -
  • COVER_TITLE -- only on cover pages; only if needed -
  • DOC_COVER_TITLE -- only on document cover pages; only if needed -
-

-You can use as many or as few as you wish, although at a minimum, -you'll probably fill in TITLE (unless the document's -a letter) and AUTHOR. Order doesn't matter. -You can separate the -arguments -from the macros by any number of spaces. The following are -what you'd need to start Joe Blow's story. -

-

-	.TITLE    "My Pulitzer Winner"
-	.AUTHOR   "Joe Blow"
-	.DRAFT     7
-	.REVISION  39
-
- -

Step 2

- -Once you've given mom the reference information she -needs, you tell her how you want your document formatted. What kind -of document is it? Should it be typeset or typewritten? Is this -a "final" copy (for the world to see) or just a draft? -Mom calls the macros that answer these questions -"the docstyle macros." They are: -

-

    -
  • DOCTYPE -- the type of document (default, chapter, user-defined, letter) -
  • PRINTSTYLE -- typeset or typewritten -
  • COPYSTYLE -- draft or final copy -
-

-Mom has defaults for DOCTYPE -and COPYSTYLE; if they're what you want, you -don't need to include them here. However, PRINTSTYLE -has no default and MUST be present in every formatted document. -If you omit it, mom won't process the document AND -she'll complain (both to stderr and as a single printed sheet with -a warning). Moms -- they can be so annoying sometimes. <sigh> -

-Adding to what we already have, the next bit of setup for Joe -Blow's story looks like this: -

-

-	.TITLE    "My Pulitzer Winner"
-	.AUTHOR   "Joe Blow"
-	.DRAFT     7
-	.REVISION  39
-	\#
-	.DOCTYPE     DEFAULT \"Superfluous; mom uses DOCTYPE DEFAULT by default
-	.PRINTSTYLE  TYPESET
-	.COPYSTYLE   DRAFT
-
- -Notice the use of the -comment line -( \# ), a handy way to keep groups of macros visually separated -for easy reading in a text editor. - -

Step 3

- -This step -- completely optional -- is where you, the user, take -charge. Mom has defaults for everything, -but who's ever satisfied with defaults? Use any of the typesetting macros -here to change mom's document defaults (paper -size, margins, family, point size, line space, rag, etc), or -any of the document processing macros that set/change/control -the appearance of document elements. Think of this as the -"style-sheet " section of a document. And please note: -you MUST give mom a -PRINTSTYLE -directive before making any such changes. -

-Joe Blow wants his story printed in Helvetica, 12 on 14, rag -right, with -page footers -instead of -page headers -and a single asterisk for the -linebreak -character. None of these requirements conforms -to mom's defaults for the chosen -PRINTSTYLE (TYPESET), so we change them here. -The setup for Joe Blow's story now looks like this: -

-

-	.TITLE    "My Pulitzer Winner"
-	.AUTHOR   "Joe Blow"
-	.DRAFT     7
-	.REVISION  39
-	\#
-	.DOCTYPE     DEFAULT
-	.PRINTSTYLE  TYPESET
-	.COPYSTYLE   DRAFT
-	\#
-	.FAMILY  H
-	.PT_SIZE 12
-	.LS      14
-	.QUAD    LEFT    \"i.e. rag right
-	.FOOTERS
-	.LINEBREAK_CHAR *
-
- -

Step 4

-The final step in setting up a document is telling mom -to start document processing. It's a no-brainer, just the single macro -START. Other than PRINTSTYLE, it's -the only macro required for document processing (although -I can't guarantee you'll like the results of using just the two). -

-Here's the complete setup for My Pulitzer Winner: -

-

-	.TITLE    "My Pulitzer Winner"
-	.AUTHOR   "Joe Blow"
-	.DRAFT     7
-	.REVISION  39
-	\#
-	.DOCTYPE     DEFAULT
-	.PRINTSTYLE  TYPESET
-	.COPYSTYLE   DRAFT
-	\#
-	.FAMILY   H
-	.PT_SIZE  12
-	.LS       14
-	.QUAD     LEFT    \"i.e. rag right
-	.FOOTERS
-	.LINEBREAK_CHAR *
-	\#
-	.START
-
- -As pointed out earlier, Joe Blow is no typographer. Given that all he -needs is a printed draft of his work, a simpler setup would have been: -

-

-	.TITLE    "My Pulitzer Winner"
-	.AUTHOR   "Joe Blow"
-	.DRAFT     7
-	.REVISION  39
-	\#
-	.PRINTSTYLE  TYPEWRITE
-	.COPYSTYLE   DRAFT
-	\#
-	.START
-
- -.PRINTSTYLE TYPEWRITE, above, means that Joe's work -will come out "typewritten, double-spaced", making the -blue-pencilling he (or someone else) is sure to do much -easier (which is why many publishers and agents still insist on -typewritten, double-spaced copy). -

-When J. Blow stops re-writing and decides to print off a final, -typeset copy of his work for the world to see, he need only -make two changes to the (simplified) setup: -

-

-	.TITLE    "My Pulitzer Winner"
-	.AUTHOR   "Joe Blow"
-	.DRAFT     7
-	.REVISION  39
-	\#
-	.PRINTSTYLE  TYPESET  \"first change
-	.COPYSTYLE   FINAL    \"second change
-	\#
-	.START
-
- -In the above, .DRAFT 7, .REVISION 39, and .COPYSTYLE -FINAL are actually superfluous. The draft and revision numbers -aren't used when COPYSTYLE is FINAL, -and COPYSTYLE FINAL is mom's -default unless you tell her otherwise. BUT... to judge from the -number of drafts already, J. Blow may very well decide his -"final" version still isn't up to snuff. Hence, he might -as well leave in the superfluous macros. That way, when draft 7, -rev. 62 becomes draft 8, rev. 1, he'll be ready to tackle his Pulitzer -winner again. -

-


- - - - -

The Reference Macros

-
- -The reference macros give mom the information -she needs to generate -docheaders, -page headers, -and -covers. -They must go at the top of any file that uses mom's -document processing macros. -

- -

Reference macros list

- - - -
- - - -
-

- -Macro: TITLE "<title>" -
-*Argument must be enclosed in double-quotes - -

-The title string can be caps or caps/lower-case; it's up to you. -In -PRINTSTYLE TYPESET, -the title will appear in the -docheader -exactly as you typed it. However, mom converts -the title to all caps in -page headers -unless you turn that feature off (see -HEADER_<POSITION>_CAPS). In -PRINTSTYLE TYPEWRITE, -the title always gets converted to caps. -

-NOTE: If your -DOCTYPE -is CHAPTER, TITLE should be the -title of the opus, not "CHAPTER whatever". -

- - - -


-

- -Macro: DOCTITLE "<overall document title>" -
-*Argument must be enclosed in double-quotes - -

-NOTE: This macro should be used only if your -DOCTYPE -is DEFAULT (which is mom's -default). -

-When you're creating a single document, say, an essay or a short -story, you have no need of this macro. -TITLE -takes care of all your title needs. -

-However if you're -collating -a bunch of documents together, say, to print out a report containing -many articles with different titles, or a book of short stories, you -need DOCTITLE. -

-DOCTITLE tells mom the title -of the complete document (as opposed to the title of each article -or entitled section). -

-The doctitle string can be caps or caps/lower-case; it's up to you. -In -PRINTSTYLE TYPESET, -by default, the doctitle appears in the rightmost position of -page headers, -all in caps unless you turn that feature off (see -HEADER_<POSITION>_CAPS). In -PRINTSTYLE TYPEWRITE, -the doctitle always gets converted to caps. -

-NOTE: If your -DOCTYPE -is CHAPTER, you don't need -DOCTITLE. TITLE takes care of -everything. -

- - - -


-

- -Macro: SUBTITLE "<subtitle>" -
-*Argument must be enclosed in double-quotes - -

-The subtitle string can be caps or caps/lower-case. Since a -document's subtitle appears only in the -docheader, -and the title is most likely in caps, I recommend caps/lower case. -

- - - -


-

- -Macro: AUTHOR "<author string>" [ "<author2 string>" "<author3 string>" ... ] -
-*Multiple arguments must all be enclosed in double-quotes - -

-Each author string can hold as many names as you like, e.g. -

-

-	.AUTHOR "Joe Blow"
-	    or
-	.AUTHOR "Joe Blow, Jane Doe" "John Hancock"
-
- -Mom prints each string that's enclosed in -double-quotes on a separate line in the -docheader, -however only the first string appears in -page headers. -If you want mom to put something else in the author -part of page headers (say, just the last names of a document's two -authors), redefine the appropriate part of the header (see -header/footer control). -

-The strings can be caps or caps/lower-case. I recommend caps/lower -case. -

- - - -


-

- -Macro: CHAPTER <chapter number> - -

-The chapter number can be in any form you like -- a digit, a roman -numeral, a word. If you choose -DOCTYPE CHAPTER, -mom prints whatever argument you pass -CHAPTER beside the word "Chapter" as a -single line -docheader. -She also puts the same thing in the middle of -page headers. -

-Please note that if your argument to CHAPTER runs -to more than one word, you must enclose the argument in -double-quotes. -

-If you're not using DOCTYPE CHAPTER, the macro serves -no purpose and mom ignores it. -

-CHAPTER_STRING -

-If you're not writing in English, you can ask mom -to use the word for "chapter" in your own language by -telling her what it is with the CHAPTER_STRING -macro, like this: -

-

-	.CHAPTER_STRING "Chapître"
-
- -You can also use CHAPTER_STRING if you want -"CHAPTER" instead of "Chapter" in the doc- and -page-headers. -

- - - -


-

- -Macro: CHAPTER_TITLE "<chapter title>" -
-*Argument must be enclosed in double-quotes - -

-If, either in addition to or instead of "Chapter #" appearing -at the top of chapters, you want your chapter to have a title, use -CHAPTER_TITLE, with your title enclosed in -double-quotes, like this: -

-

-	.CHAPTER_TITLE "The DMCA Nazis"
-
- -If you've used -CHAPTER to give the chapter a number, -both "Chapter #" and the chapter title will appear at the -top of the chapter, like this: -

-

-                       Chapter 1
-                    The DMCA Nazis
-
- -In such a case, by default, only the chapter's title will appear in the -page headers, -not "Chapter #". -

-If you omit CHAPTER when setting up your reference -macros, only the title will appear, both at the top of page one and in -subsequent page headers. -

-The style of the chapter title can be altered by -control macros, -e.g. CHAPTER_TITLE_FAMILY, -CHAPTER_TITLE_FONT, etc. The default family, -font and point size are Times Roman, Bold Italic, 4 points larger -than -running text. -

- - - -


-

- -Macro: DRAFT <draft #> - -

-DRAFT only gets used with -COPYSTYLE DRAFT. -If the COPYSTYLE is FINAL (the -default), mom ignores DRAFT. -DRAFT accepts both alphabetic and numeric -arguments, hence it's possible to do either -

-

-	.DRAFT 2
-	   or
-	.DRAFT Two
-
- -Mom prints the argument to .DRAFT -(i.e. the draft number) beside the word "Draft" in the -middle part of -page headers. -

-A small word of caution: If your argument to -.DRAFT is more than one word long, you must -enclose the argument in double-quotes. -

-You may, if you wish, invoke .DRAFT without an -argument, in which case, no draft number will be printed beside -"Draft" in headers or footers. -

-DRAFT_STRING -

-If you're not writing in English, you can ask mom -to use the word for "draft" in your own language by -telling her what it is with the DRAFT_STRING macro, -like this: -

-

-	.DRAFT_STRING "Jet"
-
- -Equally, DRAFT_STRING can be used to roll your own -solution to something other than the word "Draft." For -example, you might want "Trial run alpha-three" to appear -in the headers of a draft version. You'd accomplish this by doing -

-

-	.DRAFT alpha-three
-	.DRAFT_STRING "Trial run
-
- -.DRAFT without an argument, above, ensures that -only the DRAFT_STRING gets printed. -

-NOTE: If you define both a blank .DRAFT -and a blank .DRAFT_STRING, mom -skips the draft field in headers entirely. If this is what you -want, this is also the only way to do it. Simply leaving out -.DRAFT and .DRAFT_STRING will -result in mom using her default, which is to print -"Draft 1". -

- - - -


-

- -Macro: REVISION <revision #> - -

-REVISION only gets used with -COPYSTYLE DRAFT. -If the COPYSTYLE is FINAL -(the default), mom ignores the -REVISION macro. REVISION accepts -both alphabetic and numeric arguments, hence it's possible to do -either -

-

-	.REVISION 2
-	   or
-	.REVISION Two
-
- -Mom prints the revision number beside the shortform -"Rev." in the middle part of -page headers. -

-A small word of caution: If your argument to -.REVISION is more than one word long, you must -enclose the argument in double-quotes. -

-You may, if you wish, invoke .REVISION without an -argument, in which case, no revision number will be printed beside -"Rev." in headers or footers. -

-REVISION_STRING -

-If you're not writing in English, you can ask mom -to use the word for "revision," or a shortform -thereof, in your own language by telling her what it is with the -REVISION_STRING macro, like this: -

-

-	.REVISION_STRING "Rév."
-
- -Additionally, you may sometimes want to make use of -mom's -COPYSTYLE DRAFT -but not actually require any draft information. For example, you -might like mom to indicate only the revision number -of your document. The way to do that is to define an empty -.DRAFT and .DRAFT_STRING in -addition to .REVISION, like this: -

-

-	.DRAFT
-	.DRAFT_STRING
-	.REVISION 2
-
- -

-Equally, if you want to roll your own solution to what revision -information appears in headers, you could do something like this: -

-	.DRAFT
-	.DRAFT_STRING
-	.REVISION "two-twenty-two"
-	.REVISION_STRING "Revision"
-
- -

-The above, naturally, has no draft information. If you want to -roll your own .DRAFT and/or -.DRAFT_STRING as well, simply supply arguments to -either or both. -

- - - -


-

- -Macro: COPYRIGHT "<copyright info>" -
-*Argument must be enclosed in double-quotes - -

-The argument passed to COPYRIGHT is only used on -cover or doc cover pages, and then only if the argument COPYRIGHT is -passed to -COVER -or -DOC_COVER. -Do not include the copyright symbol in the argument passed to -COPYRIGHT; mom puts it in for -you. -

- - - -


-

- -Macro: MISC "<argument 1>" ["<argument 2>" "<argument 3>" ...] -
-*Multliple arguments must all be enclosed in double-quotes - -

-The argument(s) passed to MISC are only used on -cover or doc cover pages, and then only if the argument MISC is -passed to -COVER -or -DOC_COVER. -MISC can contain any information you like. Each -argument appears on a separate line at the bottom of the cover or -doc cover page. -

-For example, if you're submitting an essay where the prof has -requested that you include the course number, his name and the -date, you could do -

-

-	.MISC "Music History 101" "Professor Hasbeen" "Dec. 24, 2006"
-
- -and the information would appear on the essay's cover page. -

- - - -


-

- -Macro: COVERTITLE "<user defined cover page title>" -
-Macro: DOC_COVERTITLE "<user defined document cover page title>" -
-*Argument must be enclosed in double-quotes - -

-The argument passed to COVERTITLE or -DOC_COVERTITLE is only used on cover or doc cover -pages, and then only if the argument COVERTITLE is passed to -COVER -or -DOC_COVER. -

-The only time you require a COVERTITLE or -DOC_COVERTITLEis when none of the required first -arguments to COVER or DOC_COVER -fits your needs for the title you want to appear on cover (or doc -cover) pages. - -

-


- - - -

The Docstyle Macros

-
- -The docstyle macros tell mom what type of document you're -writing, whether you want the output typeset or -"typewritten", and whether you want a draft copy (with -draft and revision information in the headers) or a final copy. - - -

Docstyle macros list

-
- - -
- - - -
-

- -Macro: DOCTYPE DEFAULT | CHAPTER | NAMED "<name>" | LETTER -

-The arguments DEFAULT, CHAPTER and -NAMED tell mom what to put -in the -docheader -and -page headers. -LETTER tells her that you want to write a -letter. -

-Mom's default DOCTYPE is -DEFAULT. If that's what you want, you don't -have to give a DOCTYPE command. -

-DEFAULT prints a -docheader -containing the title, subtitle and author information given to the -reference macros, -and page headers with the author and title. -(See -Default specs for headers -for how mom outputs each part of the page header.) -

-CHAPTER prints "Chapter #" in place of a -docheader -(# is what you gave to the -reference macro -CHAPTER). -If you give the chapter a title with -CHAPTER TITLE, -mom prints "Chapter #" and the title -underneath. If you omit the -CHAPTER -reference macro but supply a -CHAPTER_TITLE, -mom prints only the chapter title. (*For -backward compatibility with pre-1.1.5 versions of -mom, you can also supply a chapter title by -omitting the CHAPTER reference macro and -supplying a chapter title with -CHAPTER_STRING.) -

-The page headers in DOCTYPE CHAPTER contain the author, -the title of the book (which you gave with -TITLE), -and "Chapter #" (or the chapter title). See -Default Specs for Headers -for mom's default type parameters for each part of -the page header. -

-NAMED takes an additional argument: a name -for this particular kind of document (e.g. outline, synopsis, -abstract, memorandum), enclosed in double-quotes. -NAMED is identical to DEFAULT -except that mom prints the argument to -NAMED beneath the -docheader, -as well as in page headers. -(See -Default specs for headers -for how mom outputs each part of the page header.) -

-Additionally, if you wish the name of this particular kind of -document to be coloured, you can pass DOCTYPE NAMED -a third (optional) argument: the name of a colour pre-defined (or -"initialized") with -NEWCOLOR -or -XCOLOR. -For example, if you have a doctype named "Warning", and -you'd like "Warning" to be in red, assuming you've -pre-defined (or "initialized") the color, red, this is -what the DOCTYPE entry would look like: -

-

-	.DOCTYPE NAME "Warning" red
-
- -

-LETTER tells mom you're writing a letter. See -the section -Writing Letters -for instructions on using mom to format letters. -

- - - -


-

- -Macro: PRINTSTYLE TYPESET | TYPEWRITE [ SINGLESPACE ] -
-*Required for document processing. -
-*Must come before any changes to default document style - -

-PRINTSTYLE tells mom whether to typeset -a document, or to print it out "typewritten, doubled-spaced". -

-THIS MACRO MAY NOT BE OMITTED. In order for -document processing to take place, mom requires -a PRINTSTYLE. If you don't give one, -mom will warn you on stderr and print a single -page with a nasty message. -

-Furthermore, PRINTSTYLE must come before any -changes to mom's default typestyle parameters. -(This applies primarily to, but is by no means restricted to, -PRINTSTYLE TYPESET.) PRINTSTYLE -sets up complete "templates" that include default -papersize, margins, family, fonts, point sizes, and so on. -Therefore, changes to any aspect of document style must come -afterwards. -

-TYPESET, as the argument implies, typesets documents -(by default in Times Roman; see -TYPESET defaults). -You have full access to all the -typesetting macros -as well as the -style control macros -of document processing. -

-As mentioned above, PRINTSTYLE TYPESET must come -before any changes to mom's default typographic -settings. For example, - -

-	.PAPER A4
-	.LS 14
-	.PRINTSTYLE TYPESET
-
- -will not changes mom's default paper size to A4, -nor her default document leading 14 points, whereas - -
-	.PRINTSTYLE TYPESET
-	.PAPER A4
-	.LS 14
-
- -will. -

-With TYPEWRITE, mom does her best -to reproduce the look and feel of typewritten, double-spaced copy (see -TYPEWRITE defaults). -Control macros -and -typesetting macros -that alter family, font, point size, and -leading -are (mostly) ignored. An important exception is -HEADER_SIZE -(and, by extension, FOOTER_SIZE), which allows -you to reduce the point size of headers/footers should they become -too crowded. Most of mom's inlines affecting the -appearance of type are also ignored (\*S is an -exception; there may be a few others). -

-In short, TYPEWRITE never produces effects other than -those available on a typewriter. Don't be fooled by how brainless -this sounds; mom is remarkably sophisticated when -it comes to conveying the typographic sense of a document within the -confines of TYPEWRITE. -

-The primary uses of TYPEWRITE are: outputting hard -copy drafts of your work (for editing), and producing documents -for submission to publishers and agents who (wisely) insist on -typewritten, double-spaced copy. To get a nicely typeset version of -work that's in the submission phase of its life (say, to show fellow -writers for critiquing), simply change TYPEWRITE -to TYPESET and print out a copy. -

-If, for some reason, you would prefer the output of -TYPEWRITE single-spaced, pass PRINTSTYLE -TYPEWRITE the optional argument, SINGLESPACE. -

-If you absolutely must have a leading other than typewriter double- -or singlespaced, the only way to get it is with the -DOC_LEAD -macro, and then ONLY if DOC_LEAD is set -before you invoke the START -macro. -

-

TYPESET defaults

-
-	Family            = Times Roman
-	Point size        = 12.5
-	Paragraph leading = 16 points, adjusted
-	Fill mode         = justified
-	Hyphenation       = enabled
-	                    max. lines = 2
-	                    margin = 36 points
-	                    interword adjustment = 1 point
-	Kerning           = enabled
-	Ligatures         = enabled
-	Smartquotes       = enabled
-	Word space        = groff default
-	Sentence space    = 0
-
- -

TYPEWRITE defaults

-
-	Family            = Courier
-	Italics           = underlined
-	Point size        = 12
-	Paragraph leading = 24 points, adjusted; 12 points for SINGLESPACE
-	Fill mode         = left
-	Hyphenation       = disabled
-	Kerning           = disabled
-	Ligatures         = disabled
-	Smartquotes       = disabled
-	Word space        = groff default
-	Sentence space    = groff default
-	Columns           = ignored
-
- -

PRINTSTYLE TYPEWRITE control macros

-

-In PRINTSTYLE TYPEWRITE, mom, -by default, underlines anything that looks like italics. This -includes the -\*[SLANT] -inline escape -for pseudo-italics. -

-If you'd prefer that mom were -less bloody-minded about pretending to be a typewriter (i.e. -you'd like italics and pseudo-italics to come out as italics), -use the control macros .ITALIC_MEANS_ITALIC and -.SLANT_MEANS_SLANT. Neither requires an -argument. -

-Although it's unlikely, should you wish to reverse the sense of -these macros in the midst of a document, -.UNDERLINE_ITALIC and -.UNDERLINE_SLANT restore underlining of -italics and pseudo-italics. -

- -Additionally, by default, mom underlines -quotes -(but not -blockquotes) -in PRINTSTYLE TYPEWRITE. -If you don't like this behaviour, turn it off with -

-

-	.UNDERLINE_QUOTES OFF
-
- -To turn underlining of quotes back on, use -UNDERLINE_QUOTES without an argument. -

-While most of the -control macros -have no effect on PRINTSTYLE TYPEWRITE, there -is an important exception: -HEADER_SIZE -(and by extension, FOOTER_SIZE). This is -particularly useful for reducing the point size of -headers/footers should they become crowded (quite likely to -happen if the title of your document is long and your -COPYSTYLE -is DRAFT). -

- - - -


-

- -Macro: COPYSTYLE DRAFT | FINAL - -

-Mom's default COPYSTYLE is -FINAL, so you don't have to use this macro unless -you want to. -

-COPYSTYLE DRAFT exhibits the following behaviour: -
-

    -
  1. documents start on page 1, whether or not you - request a different starting page number with - PAGENUMBER -
  2. page numbers are set in lower case roman numerals -
  3. the draft number supplied by - DRAFT - and a revision number, if supplied with - REVISION - (see - reference macros), - appear in the centre part of - page headers - (or footers, depending on which you've selected) along with - any other information that normally appears there. -
-

-IMPORTANT: If you define your own centre part for page -headers with -HEADER_CENTER, -no draft and/or revision number will appear there. If you want draft -and revision information in this circumstance, use -DRAFT_WITH_PAGENUMBER. -

-COPYSTYLE FINAL differs from DRAFT in that: -
-

    -
  1. it respects the starting page number you give the document -
  2. page numbers are set in normal (Arabic) digits -
  3. no draft or revision number appears in the page headers -
-

-NOTE: The centre part of page headers can get crowded, -especially with -DOCTYPE CHAPTER -and -DOCTYPE NAMED, -when the COPYSTYLE is DRAFT. -Three mechanisms are available to overcome this problem. One is to -reduce the overall size of headers (with -HEADER_SIZE). -Another, which only works with -PRINTSTYLE TYPESET, -is to reduce the size of the header's centre part only (with -HEADER_CENTER_SIZE). -And finally, you can elect to have the draft/revision information -attached to page numbers instead of having it appear in the centre -of page headers (see -DRAFT_WITH_PAGENUMBER). -

-


- - - -

Changing type/style parameters prior to START

-

-In the third (optional) part of setting up a document (see -Tutorial -- setting up a mom document), -you can use the -typesetting macros -to change mom's document-wide defaults for margins, -line length, family, base point size, -leading, -and justification style. -

-Two additional style concerns have to be addressed here (i.e. in -macros before -START): -changes to the -docheader, -and whether you want you want the document's nominal leading -adjusted to fill pages fully to the bottom margin. -

-

-
- -
-

Using the typesetting macros prior to START

-

-From time to time (or maybe frequently), you'll want the overall -look of a document to differ from mom's defaults. -Perhaps you'd like her to use a different -family, -or a different overall -leading, -or have different left and/or right page margins. -

-To accomplish such alterations, use the appropriate -typesetting macros -(listed below) after -PRINTSTYLE -and before -START. -

-More than one user has, quite understandably, not fully grasped -the significance of the preceding sentence. The part they've missed -is "after PRINTSTYLE". -

-Changes to any aspect of the default look and/or formatting -of a mom document must come after -PRINTSTYLE. For example, it might seem natural to -set up page margins at the very top of a document with -

-

-	.L_MARGIN 1i
-	.R_MARGIN 1.5i
-
- -However, when you invoke .PRINTSTYLE, those -margins will be overridden. The correct place to set margins--and -all other changes to the look of a document--is after -PRINTSTYLE. - -

-NOTE: Don't use the macros listed in Changing document-wide typesetting -parameters after START prior to START; they are -exclusively for use afterwards. -

-When used before -START, -the -typesetting macros -(below) have the following meanings: -

-

-	L_MARGIN       Left margin of pages, including headers/footers
-	R_MARGIN       Right margin of pages, including headers/footers
-	T_MARGIN       The point at which running text (i.e. not
-	               headers/footers or page numbers) starts on each page
-	B_MARGIN*      The point at which running text (i.e. not
-	(see note)     headers/footers or page numbers) ends on each page
-
-	PAGE           If you use PAGE, its final four arguments have the
-	               same meaning as L_ R_ T_ and B_MARGIN (above).
-
-	LL             The line length for everything on the page;
-	               equivalent to setting the right margin with R_MARGIN
-	FAMILY         The family of all type in the document
-	PT_SIZE        The point size of type in paragraphs; mom uses this
-	               to calculate automatic point size changes (e.g. for
-	               heads, footnotes, quotes, headers, etc)
-	LS/AUTOLEAD**  The leading used in paragraphs; all leading and spacing
-	               of running text is calculated from this
-
-	QUAD/JUSTIFY   Affects paragraphs only
-	LEFT           No effect***
-	RIGHT          No effect***
-	CENTER         No effect***
-
-------
-  *See FOOTER MARGIN AND BOTTOM MARGIN for an important warning
- **See DOC_LEAD_ADJUST
-***See Special note
-
- -Other macros that deal with type style, or refinements thereof -(KERN, LIGATURES, HY, WS, SS, etc.), behave normally. -It is not recommended that you set up tabs or indents prior to -START. -

-If you want to change any of the basic parameters (above) -after START and have them affect a -document globally (as if you'd entered them before -START), you must use the macros listed in -Changing document-wide style parameters after START. - - -

Special note on .LEFT, .RIGHT and .CENTER prior to START

-In a word, these three macros have no effect on document processing -when invoked prior to START. -

-All mom's document element tags -(PP, HEAD, -BLOCKQUOTE, FOOTNOTE, etc.) -except -QUOTE -set a -fill mode -as soon as they're invoked. If you wish to turn fill mode off for -the duration of any tag (with -.LEFT, .RIGHT or .CENTER) -you must do so immediately after invoking the tag. Furthermore, -the change affects only the current invocation of the tag. -Subsequent invocations of the same tag for which you want the same -change require that you invoke LEFT, -RIGHT or CENTER immediately after -every invocation of the tag. -

- - -

Colour

-
-Although it doesn't really matter where you define/initialize -colours for use in document processing (see -NEWCOLOR -and -XCOLOR -in the section -Coloured text), -I recommend doing so before you begin document processing with -START. -

-The macro, -COLOR, -and the -inline escape, -\[<colorname>], -can be used at any time during document processing for occasional -colour effects. However, consistent and reliable colourizing of -various document elements (the docheader, heads, linebreaks, -footnotes, pagenumbers, and so on) must be managed through the use -of the -document element control macros. -

-PLEASE NOTE: If you plan to have mom -generate a -table of contents, -do NOT embed colour -inline escapes -(\[<colorname>]) -in the -string arguments -given to any of the -reference macros, -nor in the string arguments given to -.HEAD, -.SUBHEAD -or -.PARAHEAD. -Use, rather, the -control macros -mom provides to automatically colourize these -elements. -
- - - -


-

Adjusting document leading to fill pages

-
-Macro: DOC_LEAD_ADJUST toggle -
-*Must come after LS or AUTOLEAD and before START - -

-DOC_LEAD_ADJUST is a special macro to adjust -document -leading -so that bottom margins fall precisely where you expect. -

-If you invoke DOC_LEAD_ADJUST, mom -takes the number of lines that fit on the page at your requested -leading, then incrementally adds -machine units -to the leading until the maximum number of lines at the new leading -matches the bottom margin. In most instances, the difference -between the requested lead and the adjusted lead is -unnoticeable, and since in almost all cases adjusted leading is -what you want, it's mom's default. -

-Should you NOT want adjusted document leading, you MUST turn it -off manually, like this: -

-

-	.DOC_LEAD_ADJUST OFF
-
- If you set the document leading prior to START -with -LS -or -AUTOLEAD, -DOC_LEAD_ADJUST OFF must come afterwards, like -this: -

-

-	.LS 12
-	.DOC_LEAD_ADJUST OFF
-
- -In this scenario, the maximum number of lines that fit on a page at -a -leading -of 12 -points -determine where mom ends -a page. The effect will be that last lines usually fall (slightly) -short of the "official" bottom margin. -

-In -PRINTSTYLE -TYPEWRITE, the leading is always adjusted and -can't be turned off. -

-NOTE: DOC_LEAD_ADJUST, if -used, must be invoked after -LS -or -AUTOLEAD -and before -START -

-ADDITIONAL NOTE: Even if you disable -DOC_LEAD_ADJUST, mom will still -adjust the leading of endnotes pages and toc pages. See -ENDNOTE_LEAD -and -TOC_LEAD -for an explanation of how to disable this default behaviour. -

- - - -


-

Managing the docheader

-
-Macro: DOCHEADER <toggle> [ distance to advance from top of page ] -
-*Must come before START; distance requires a unit of measure - -

-By default, mom prints a -docheader -on the first page of any document (see -below -for a description of the docheader). If you don't want a docheader, -turn it off with -

-

-	.DOCHEADER OFF
-
- -DOCHEADER is a toggle macro, so the argument doesn't -have to be OFF; it can be anything you like. -

-If you turn the docheader off, mom, by default, starts -the running text of your document on the same top -baseline -as all subsequent pages. If you'd like her to start at a different -vertical position, give her the distance you'd like as a second -argument. -

-

-	.DOCHEADER OFF 1.5i
-
- -This starts the document 1.5 inches from the top of the page PLUS -whatever spacing adjustment mom has to make in -order to ensure that the first baseline of running text falls on a -"legal" baseline (i.e. one that ensures that the bottom -margin of the first page falls where it should). The distance is -measured from the top edge of the paper to the -baseline -of the first line of type. -

-TIP: Since no document processing happens until -you invoke -START --- including anything to do with docheaders -- you can typeset -your own docheader prior to START (if you don't -like the way mom does things) and use -DOCHEADER OFF with its optional distance argument -to ensure that the body of your document starts where you want. -You can even insert a PostScript file (with .PSPIC; -see the groff_tmac man page for usage). -

-

How to change the look of docheaders: docheader control macros

- -

-With -PRINTSTYLE TYPEWRITE, -the look of docheaders is carved in stone. -In -PRINTSTYLE TYPESET, -however, you can make a lot of changes. Macros that alter docheaders -MUST come before -START. - -

-A typeset docheader has the following characteristics. Note that -title, subtitle, author, and document type are what you supply -with the -reference macros. -Any you leave out will not appear; mom will -compensate: -

-

-	    TITLE         bold, 3.5 points larger than running text (not necessarily caps)
-	   Subtitle       medium, same size as running text
-	      by          medium italic, same size as running text
-	   Author(s)      medium italic, same size as running text
-
-	(Document type)   bold italic, underscored, 3 points larger than running text
-
- -If the -DOCTYPE -is CHAPTER, -
-	   Chapter #       bold, 4 points larger than running text
-	 Chapter Title     bold italic, 4 points larger than running text
-
- -

-The -family -is the prevailing family of the whole document. -

-NOTE: If your DOCTYPE is -CHAPTER and you have both "Chapter #" -and a "Chapter Title" (as above), you may find the -leading -a bit cramped (owing to mom's default docheader -leading). If this is the case, you can adjust the leading either -with -DOCHEADER_LEAD -or by including the -inline escape, -\*[DOWN], -in the argument you pass to -CHAPTER_TITLE, like this: -

-

-	.CHAPTER_TITLE "\*[DOWN 2p]Why Not Patent Calculus?"
-
- - -

The docheader macros to:

-
    -
  1. Change the starting position of the docheader -
  2. Change the family of the entire docheader -
  3. Adjust the docheader leading -
  4. Change the family of individual docheader elements -
  5. Change the font of docheader elements -
  6. Change the colour of the docheader -
  7. Adjust the size of docheader elements -
  8. Change the attribution string ("by") -
-

-

1. Change the starting position

-

-By default, a docheader starts on the same -baseline -as -running text. -If you'd like it to start somewhere else, use the macro -.DOCHEADER_ADVANCE and give it the distance you want -(measured from the top edge of the paper to the first baseline -of the docheader), like this: -

-

-	.DOCHEADER_ADVANCE 4P
-
- -A -unit of measure -is required. -

-NOTE: If -HEADERS -are OFF, mom's normal top -margin for -running text -(7.5 -picas) -changes to 6 picas (visually approx. 1 inch). Since the -first baseline of the docheader falls on the same baseline -as the first line of running text (on pages after page 1), -you might find the docheaders a bit high when headers are off. -Use -DOCHEADER_ADVANCE -to place them where you want. -

- -

2. Change the family of the entire docheader

-

-By default, mom sets the docheader in the same -family used for -running text. -If you'd prefer to have your docheaders set in a different family, -invoke DOCHEADER_FAMILY with the family you want. -The argument for DOCHEADER_FAMILY is the same as -for -FAMILY. -

-For example, mom's default family for running text -is Times Roman. If you'd like to keep that default, but have the -docheaders set entirely in Helvetica, -

-

-	.DOCHEADER_FAMILY H
-
- -is how you'd do it. -

-Please note that if you use DOCHEADER_FAMILY, -you can still alter the family of individual parts of the docheader -with the macros listed -here. - -

3. Adjust the leading

-

-The -leading -of docheaders is the same as running text (except when -DOCTYPE -is CHAPTER and both a chapter number and a -chapter title have been supplied, in which case the default is 4 points -more than running text.) -

-If you'd like your docheaders to have a different leading, say, 2 -points more than the lead of running text, use: -

-

-	.DOCHEADER_LEAD +2
-
- -Since the leading of docheaders is calculated from the lead of running -text, a + or - sign is required before the argument (how much to add -or subtract from the lead of running text). No -unit of measure -is required; points is assumed. -

- -

4. Change the family of docheader elements

-

-The following macros let you change the -family -of each docheader element separately: -

-

    -
  • TITLE_FAMILY <family> -
  • CHAPTER_TITLE_FAMILY <family> -
  • SUBTITLE_FAMILY <family> -
  • AUTHOR_FAMILY <family> -
  • DOCTYPE_FAMILY <family> (if -DOCTYPE is NAMED) -
-

-Simply pass the appropriate macro the family you want, just as you -would with -FAMILY. -

- -

5. Change the font of docheader elements

-

-The following macros let you change the -font -of each docheader element separately: -

-

    -
  • TITLE_FONT R | B | I | BI -
  • CHAPTER_TITLE_FONT R | B | I | BI -
  • SUBTITLE_FONT R | B | I | BI -
  • AUTHOR_FONT R | B | I | BI -
  • DOCTYPE_FONT R | B | I | BI (if -DOCTYPE is NAMED) -
-

-Simply pass the appropriate macro the font you want. R, -B, I and BI have the same meaning as -they do for -FT. -

- -

6. Change the colour of the docheader elements individually

-

-The following macros let you change the color of each docheader -element separately. You must pre-define (or -"initialize") the color with -NEWCOLOR -or -XCOLOR. -

-

    -
  • TITLE_COLOR <colorname> -
  • CHAPTER_TITLE_COLOR <colorname> -
      -
    • Note: CHAPTER_TITLE_COLOR is needed - only if you enter both a CHAPTER - reference macro AND a CHAPTER_TITLE - macro. Otherwise, the macro, - TITLE_COLOR takes care of colorizing - the chapter header. -
    -
  • SUBTITLE_COLOR <colorname> -
  • ATTRIBUTE_COLOR <colorname> - (the "by" string that precedes the author[s] name[s]) -
  • AUTHOR_COLOR <colorname> -
  • DOCTYPE_COLOR <colorname> (if - DOCTYPE is NAMED) -
-

-It is not recommended that you embed colour (with the -inline escape, -\*[<colorname>]) -in the strings passed to -TITLE, CHAPTER_TITLE, -SUBTITLE, AUTHOR or the name you -give DOCTYPE NAMED. The strings passed to these -macros are used to generate page -headers -and -footers. -An embedded colour will cause the string to be colourized any time -it appears in headers or footers. (If you want headers or footers -colourized, or parts thereof, use the header/footer control macros.) -

- -If you want to colourize the entire docheader, use the macro -

-

    -
  • DOCHEADER_COLOR <color name>. -
- -

7. Adjust the size of docheader elements

-

-The following macros let you adjust the point size of each docheader -element separately. -

-Mom calculates the point size -of docheader elements from the point size of paragraphs in running -text, so you must prepend a + or - sign to the argument. Points is -assumed as the -unit of measure, -so there's no need to append a unit to the argument. Fractional point -sizes are allowed. -

-

    -
  • TITLE_SIZE <+/-points> -
    -default = +3.5 (+4 if docheader title is "Chapter #") -
  • CHAPTER_TITLE_SIZE <+/-points> -
    -default = +4 -
  • SUBTITLE_SIZE <+/-points> -
    -default = +0 -
  • AUTHOR_SIZE <+/-points> -
    -default = +0 -
  • DOCTYPE_SIZE <+/-points> (if -DOCTYPE is NAMED) -
    -default = +3 -
-

-Simply pass the appropriate macro the size adjustment you want. -

- -

8. Change the attribution string ("by")

-

-If you're not writing in English, you can change what -mom prints where "by" appears in -docheaders. For example, -

-

-	.ATTRIBUTE_STRING "par"
-
- -changes "by" to "par". If you -don't want an attribution string at all, simply pass -ATTRIBUTE_STRING an empty argument, like this: -

-

-	.ATTRIBUTE_STRING ""
-
- -Mom will deposit a blank line where the -attribution string normally appears. -

-NOTE: The type specs for the attribution line -in docheaders are the same as for the author line. Although -it's highly unlikely you'll want the attribution line in a -different family, font, or point size, you can do so by using -inline escapes -in the argument to ATTRIBUTE_STRING. For -example, -

-

-	.ATTRIBUTE_STRING "\f[HBI]\*[SIZE -2p] by \*[SIZE +2p]\*[PREV]"
-
- -would set "by" in Helvetica bold italic, 2 points -smaller than normal. -

-


- - - -

Setting documents in columns

- -

-Setting documents in columns is easy with mom. (Of -course she'd say that, but it's true!) All you have to do is is -say how many columns you want and how much space you want -between them (the -gutters). -That's it. Mom takes care of everything else, from -soup to nuts. -

-SOME WORDS OF ADVICE: -

-If you want your type to achieve a pleasing -justification -or -rag -in columns, reduce the point size of type (and probably the -leading -as well). Mom's default document point -size is 12.5, which works well across her default 39 -pica -full page line length, but with even just two columns on a page, -the default point size is awkward to work with. -

-Furthermore, you'll absolutely need to reduce the indents for -epigraphs, -quotes, -and -blockquotes -(and probably the -paragraph first-line indent -as well). -

- - - -


-

COLUMNS

-
-Macro: COLUMNS <number of columns> <width of gutters> -
-*Should be the last macro before START -
-The second argument requires a unit of measure
- -

-COLUMNS takes two arguments: the number of -columns you want on document pages, and the width of the -gutter -between them. For example, to set up a page with two columns -separated by an 18 point gutter, you'd do -

-

-	.COLUMNS 2 18p
-
- -Nothing to it, really. However, as noted above, -COLUMNS should always be the last document -setup macro prior to -START. -

-NOTE: Mom ignores columns completely -when the -PRINTSTYLE -is TYPEWRITE. The notion of typewriter-style -output in columns is just too ghastly for her to bear. - -

Using tabs when COLUMNS are enabled

-Mom's tabs -(both -typesetting tabs -and -string tabs) -behave as you'd expect during document processing, even when -COLUMNS are enabled. Tab structures set up -during document processing carry over from page to page and column -to column. - - -

Breaking columns manually

-Mom takes care of breaking columns when they reach -the bottom margin of a page. However, there may be times you want to -break the columns yourself. There are two macros for breaking columns -manually: COL_NEXT and COL_BREAK. - - -

-.COL_NEXT breaks the line just before it, -quads -it left (assuming the type is justified or quad left), and moves over -to the top of the next column. If the column happens to be the last -(rightmost) one on the page, mom starts a new page -at the "column 1" position. This is the macro to use when -you want to start a new column after the end of a paragraph. - - -

-.COL_BREAK is almost the same, except that -instead of breaking and quadding the line preceding it, -she breaks and spreads it (see -SPREAD). -Use this macro whenever you need to start a new column in the middle -of a paragraph. -

-If you need COL_BREAK in the middle of a blockquote -or (god help us) an epigraph, you must do the following in order for -COL_BREAK to work: -

-

-	.SPREAD
-	\!.COL_BREAK
-
-
- - - - -

Start document processing

-
- -In order to use mom's document element macros -(tags), you have to tell her you want them. The macro to do this -is START. -

-START collects the information you gave -mom in the setup section at the top of your file (see -Tutorial -- setting up a mom document), -merges it with her defaults, sets up headers and page numbering, -and prepares mom to process your document using -the document element tags. No document processing takes place until -you invoke START. -

- - - -


-

- -Macro: START -
-*Required for document processing. - -

-START takes no arguments. It simply instructs -mom to begin document processing. If you don't -want document processing (i.e. you only want the -typesetting macros), -don't use START. -

-At a barest minimum before START, you must enter a -PRINTSTYLE -command. -

-


- - - - -

Changing document-wide style parameters after START

-
- -In the normal course of things, you change the basic type -parameters of a document before -START, -using -typesetting macros -(L_MARGIN, FAMILY, PT_SIZE, LS, etc). After -START, you MUST use the following macros to make -global changes to the basic type parameters of a document. -

- - -

Macro list

- - -
- -
-

- - Macro: DOC_LEFT_MARGIN <left margin> - -
-*Requires a unit of measure -

-

    -
  • the argument is the same as for - L_MARGIN -
  • changes all left margins to the new value -
  • the line length remains the same (i.e. the right margin - shifts when you change the left margin) -
-
- -
-

- - Macro: DOC_RIGHT_MARGIN <right margin> - -
-*Requires a unit of measure -

-

-
- -
-

- - Macro: DOC_LINE_LENGTH <length> - -
-*Requires a unit of measure -

-

-
- -
-

- - Macro: DOC_FAMILY <family> - -

-

    -
  • the argument is the same as for - FAMILY -
  • globally changes the type family -
  • any page elements (e.g. - headers, - page numbers, footnotes) whose families you wish to remain - at their old values must be reset with the appropriate - control macros -
-
- -
-

- - Macro: DOC_PT_SIZE <point size> - -
-*Does not require a unit of measure; points is assumed -

-

    -
  • the argument is the same as for - PT_SIZE, - and refers to the point size of type in paragraphs -
  • all automatic point size changes (heads, quotes, - footnotes, headers, etc.) are affected by the new size; - anything you do not want affected must be reset to - its former value (see the Control Macros section of - the pertinent document element for instructions on - how to do this) -
-
- -
-

- - Macro: DOC_LEAD <points> [ ADJUST ] - -
-*Does not require a unit of measure; points is assumed -

-

    -
  • the argument is the same as for - LS, - and refers to the - leading - of paragraphs -
  • because paragraphs will have a new leading, the leading and - spacing of most running text is influenced by the new value -
  • epigraphs and footnotes remain unaffected; - if you wish to change their leading, use - EPIGRAPH_AUTOLEAD - and - FOOTNOTE_AUTOLEAD. -
  • the optional argument ADJUST performs - leading adjustment as explained in - DOC_LEAD_ADJUST -
-

-IMPORTANT: Do not use DOC_LEAD -in the middle of a page! It should always and only be invoked -immediately prior to a new page, like this: -

-

-	.DOC_LEAD <new value>
-	.NEWPAGE
-
- -NOTE: Even if you don't pass -DOC_LEAD the optional argument -ADJUST, mom will still adjust the -leading of endnotes pages and toc pages. See -ENDNOTE_LEAD -and -TOC_LEAD -for an explanation of how to disable this default behaviour. -

- -


-

- - Macro: DOC_QUAD L | R | C | J - -

-

    -
  • the arguments are the same as for - QUAD -
  • affects paragraphs, epigraphs and footnotes; does not - affect blockquotes -
-
- -
-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/goodies.html b/contrib/groff/contrib/mom/momdoc/goodies.html deleted file mode 100644 index 6b907b49bdff..000000000000 --- a/contrib/groff/contrib/mom/momdoc/goodies.html +++ /dev/null @@ -1,1057 +0,0 @@ - - - - -Mom -- Goodies - - - - - -Next   -Prev   -Back to Table of Contents -

- - -

Goodies

- -

- -The macros in this section are a collection of useful (and sometimes -nearly indispensable) routines to simplify typesetting. -

- -

Goodies list

- - - - - - -
-

Rename macros

-
-Macro: ALIAS <new name> <old name> - -

-The ALIAS macro may well be your best friend. With it, -you can change the name of a macro to anything you like -(provided the new name is not already being used by -mom; see the -list of reserved words). -

-Groff has always been a bit intimidating for new users because -its standard macro packages use very terse macro names. -Mom doesn't like people to feel intimidated; she wants -them to feel welcome. Consequently, she tries for easy-to-grasp, -self-explanatory macro names. However, mom knows -that people have their own ways of thinking, their own preferences, -their own habits. Some of her macro names may not suit you; they -might be too long, or aren't what you automatically think of -when you want to do a particular thing, or might conflict with habits -you've developed over the years. -

-If you don't like one of mom's macro names, -say, PAGEWIDTH, change it, like this: -

-

-	.ALIAS PW PAGEWIDTH
-	       |      |
-	  new__|      |__official
-	 name            name
-
- -The first argument to ALIAS is the new name you want -for a macro. The second is the "official" name by -which the macro is normally invoked. After ALIAS, -either can be used. -

-Note that in ALIAS, you do NOT include the period -(dot) that precedes the macro when it's a -control line. -

-NOTE: If you use ALIAS a lot, -and always for the same things, consider creating an aliases -file of the form -

-

-	.ALIAS <new name> <old name>
-	.ALIAS <new name> <old name>
-	.ALIAS <new name> <old name>
-	...etc
-
- -Put the file someplace convenient and source it at the -beginning of your documents using the groff -primitive -.so. Assuming that you've created an aliases file -called mom_aliases in your home directory under a directory -called Mom, you'd source it by placing -

-

-	.so /home/<username>/Mom/mom_aliases
-
- -at the top of your documents. -

-If you share documents that make use of an alias file, remember that -other people don't have the file! Paste the whole thing at the top -of your documents, please. -

-EXPERTS: ALIAS is an alias of -.als. You can use either, or mix 'n' match with -impunity. -

- - - -


-

Hide input lines from output

-
-Macro: SILENT toggle -
-Alias: COMMENT - -

-Sometimes, you want to "hide" -input lines -from final output. This is most likely to be the case when setting -up string tabs (see the -quickie tutorial on string tabs -for an example), but there are other places where you might want input -lines to be invisible as well. Any place you don't want input lines -to appear in the output, use the SILENT macro. -

-SILENT is a toggle. Invoking it without an argument -turns it on; any argument turns it off. E.g., -

-

-	.SILENT
-	A line of text
-	.SILENT OFF
-
- -The line "A line of text" will not appear in the -output copy. -

-SILENT is aliased as COMMENT. -If you want to insert non-printing comments into your documents, -you may prefer this. -

-NOTE: SILENT does not automatically break an -input line -(see -BR) -when you're in one of the -fill modes -(JUSTIFY -or -QUAD L | R | C | J). -The same applies to tabs -(typesetting -or -string) -to which you've passed the J or QUAD -argument. You must insert .BR yourself, or risk a -portion of your text disappearing into a black hole. -

- - - -


-

Suspend/re-invoke traps

-
-Macro: TRAP toggle - -

-Traps are vertical positions on the output page at which you or -mom have instructed groff to start doing -something automatically. Commonly, this is near the bottom of -the page, where automatic behind-the-scenes processing is needed -in order for one page to finish and another to start. -

-Sometimes, traps get sprung when you don't want them. If this -happens, surround just the offending macros and input lines with -

-

-	.TRAP OFF
-	...
-	.TRAP
-
- -TRAP is a toggle, therefore any argument -turns it off (i.e. suspends the trap), and no argument turns it -(back) on. -

- - - -


-

Convert typewriter doublequotes to proper doublequotes

-
-Macro: SMARTQUOTES [<off>] [ ,, | >> | << ] -
-or -
-Macro: SMARTQUOTES DA | DE | ES | FR | IT | NL | NO | PT | SV - -

-If you invoke SMARTQUOTES without an argument, -mom converts all instances of the inch-mark, -(" -- also called a "doublequote"), into -the appropriate instances of true Anglo-American open- and -close-doublequotes. (See -Internationalization -for how to get SMARTQUOTES to behave correctly for non-English -quoting styles.) -

-Typographically, there is a difference between the inch-mark and -doublequotes -- a BIG difference. Sadly, typewriters and computer -keyboards supply only one: the inch-mark. While using inches for -doublequotes is, and always has been, acceptable in typewriter-style -copy, it has never been, and, God willing, never will be acceptable in -typeset copy. Failure to turn inches into quotes is the first thing -a professional typesetter notices in documents prepared by amateurs. -And you don't want to look like an amateur, do you? -

-

Internationalization

-

-If you invoke SMARTQUOTES with one of the optional -arguments (,, or >> or -<<) you can use " as "cheap" -open- and close-quotes when inputting text in a language other than -English, and have mom convert them, on output, -into the chosen open- and close-quote style. -

-,, opens quotes with "lowered doublequotes" and -closes them with "raised doublequotes", as in this ascii -approximation: -

-

-	,,Hilfe !``
-
- ->> opens quotes with guillemets pointing to the -right, and closes them with guillemets pointing to the left, as in -this ascii approximation: -

-

-	>>Zurück !<<
-
- -<< opens quotes with guillemets pointing to the -left, and closes them with guillemets pointing to the right, as in -this ascii approximation: -

-

-	<<Mais monsieur! Je ne suis pas ce genre de fille!>>
-
- -Please note: the above arguments to SMARTQUOTES -are literal ASCII characters. ,, is two commas, -<< is two less-than signs and >> -is two greater-than signs. -

-Alternatively, you can pass SMARTQUOTES the -two-letter, ISO 639 abbreviation for the language you're writing in, -and mom will output the correct quotes. -

-

-	.SMARTQUOTES DA     = Danish      >>text<<
-	.SMARTQUOTES DE     = German      ,,text``
-	.SMARTQUOTES ES     = Spanish     ``text´´
-	.SMARTQUOTES FR     = French      << text >>
-	.SMARTQUOTES IT     = Italian     << text >>
-	.SMARTQUOTES NL     = Dutch       ´´text´´
-	.SMARTQUOTES NO     = Norwegian   <<text>>
-	.SMARTQUOTES PT     = Portuguese  <<text>>
-	.SMARTQUOTES SV     = Swedish     >>text>>
-
-

-Turn SMARTQUOTES off by passing it any argument -not in the argument list (e.g. OFF, -QUIT, X, etc.) -

-If you're using the -document processing macros -with -PRINTSTYLE TYPESET, -SMARTQUOTES is on by default (in the Anglo-American -style); with -PRINTSTYLE TYPEWRITE, -it's off by default (and should probably stay that way). -

-Finally, if you're fussy about the kerning of quote marks in -relation to the text they surround, or have special quoting needs, -you have to enter quote marks by hand using groff's native -inline escapes -for special characters (see man groff_char for a complete list of -special characters). Entering quote marks this way allows you to -use mom's -inline kerning escapes -to fine-tune the look of quotes. -

-NOTE: SMARTQUOTES does not work on -single quotes, which most people input with the apostrophe (found at -the right-hand end of the "home row" on a QWERTY keyboard). -Groff will interpret all instances of the apostrophe as an apostrophe, -making the symbol useless as an open-single-quote. For open single -quotes, input the backtick character typically found under the tilde -on most keyboards. (Pour nous autres, "backtick" veut dire -l'accent grave.) -Here's an example of correct input copy with single quotes: -

-

-	"But she said, `I don't want to!'"	
-
- -ADDITIONAL NOTE: Whether or not you have -SMARTQUOTES turned on, get into the habit of entering -the foot- and inch-marks, when you need them, with the -inline escapes -\*[FOOT] and \*[INCH], instead -of ' and ". -

- - - -


-

Convert to upper case

-
-Macro: CAPS toggle - -

-CAPS converts all lower case letters to upper -case. Primarily, it's a support macro used by the -document processing macros, -but you may find it helpful on occasion. CAPS -is a toggle, therefore no argument turns it on, any argument -turns it off. -

-

-	.CAPS
-	All work and no play makes Jack a dull boy.
-	.CAPS OFF
-
- -produces, on output -

-

-	ALL WORK AND NO PLAY MAKES JACK A DULL BOY.
-
- - - -
-

User-defined strings

-
-Macro: STRING <name> <what you want in the string> - -

-You may find sometimes that you have to type out portions of text -repeatedly. If you'd like not to wear out your fingers, you can -define a "string" that, whenever you call it by name, -outputs whatever you put into it. -

-For example, say you're creating a document that repeatedly uses -the phrase "the Montreal/Windsor corridor". Instead of -typing all that out every time, you could define a string, like -this: -

-

-	.STRING mw the Montreal/Windsor corridor
-
- -Once a string is defined, you can call it any time with the -inline escape -\*[<stringname>]. Using the example string above -

-

-	The schedule for trains along \*[mw]:
-
- -produces, on output -

-

-	The schedule for trains along the Montreal/Windsor corridor:
-
- -NOTE: Be very careful not to put any spaces at the -ends of strings you're defining, unless you want them. Everything -after the name argument you pass to STRING goes -into the string, including trailing spaces. -

-Experts: STRING is an alias for ds. -You can use either, or mix 'n' match with impunity. -

- - - -


-

Single underscore

-
-Macro: UNDERSCORE [ <distance below baseline> ] "<string>" -
-*Optional argument requires a unit of measure - -

-By default, UNDERSCORE places an underscore 2 points -beneath the required -string argument. -The string must be enclosed in double-quotes, like this: -

-

-	.UNDERSCORE "Unmonitored monopolies breed high prices and poor products."
-
- -If you wish to change the distance of the rule from the -baseline, use the optional argument <distance below -baseline> (with a unit of measure). -

-

-	.UNDERSCORE 3p "Unmonitored monopolies breed high prices and poor products."
-
- -The above places the underscore 3 points below the baseline. -

- -NOTES: -
-UNDERSCORE does not work across line breaks in output -copy, which is to say that you can't underscore a multi-line passage -simply by putting the text of the whole thing in the string you pass -to UNDERSCORE. Each -output line -or portion of an output line you want underscored must be plugged -separately into UNDERSCORE. Bear in mind, though, -that underscoring should at best be an occasional effect in typeset -copy. If you want to emphasize an entire passage, it's much, much -better to change fonts (e.g. to italic or bold). -

-You can easily and successfully underline entire passages in simulated -typewriter-style copy (i.e. if your font is Courier, or you're using -the document processing macro -PRINTSTYLE TYPEWRITE), -with the -UNDERLINE -macro. UNDERLINE is designed specifically for this -purpose, but works only with the Courier font. -

-Mom doesn't always get the position and length -of the underscore precisely right in -justified -copy, although she's fine with all the other -fill modes, -as well as with the no-fill modes. As of this writing, I have -no solution to the occasional problems with justified copy. -

-UNDERSCORE tends to confuse -gxditview, even though the output, when -printed, looks fine. Generally, I recommend using gv -to preview files anyway. See the section on -previewing. -

- - - -


-

Double underscore

-
-Macro: UNDERSCORE2 [ <distance below baseline> [ <distance between rules> ] ] "<string>" -
-*Optional arguments require a unit of measure - -

-By default, UNDERSCORE2 places a double underscore -2 points beneath the required -string argument. -The string must be enclosed in double-quotes, like this: -

-

-	.UNDERSCORE2 "Unmonitored monopolies breed high prices and poor products."
-
- -The default distance between the two rules is 2 points. -

-If you wish to change the distance of the double underscore from -the baseline, use the optional argument <distance below -baseline> (with a unit of measure), e.g., -

-

-	.UNDERSCORE2 3p "Unmonitored monopolies breed high prices and poor products."
-
- -which places the double underscore 3 points below the baseline. -

-If you wish to change the distance between the two rules as -well, use the second optional argument <distance between -rules> (with a unit of measure). Be aware that you must -give a value for the first optional argument if you want to use -the second. -

-NOTE: the same restrictions and caveats apply -to UNDERSCORE2 as to -UNDERSCORE. See the -NOTES -for UNDERSCORE. -

- - - -


-

Underline text -- Courier font only!

-
-Macro: UNDERLINE toggle - -

-If your font is Courier, or you're using the document processing macro -PRINTSTYLE TYPEWRITE, -UNDERLINE allows you to underline words and -passages that, in typeset copy, would be italicized. You invoke -UNDERLINE as you do with all toggle macros -- -by itself (i.e. with no argument) to initiate underlining, and -with any argument to turn underlining off. -

-When on, UNDERLINE underlines letters, words -and numbers, but not punctuation or spaces. This makes for more -readable copy than a solid underline. -

-NOTE: Underlining may also be turned on and off -inline -with the escapes -\*[UL]...\*[ULX]. -

- - - -


-

Inline escape for underlining -- Courier font only!

-
-Inline: \*[UL]...\*[ULX] - -

-If your font is Courier, or you're using the document processing macro -PRINTSTYLE TYPEWRITE, -\*[UL]...\*[ULX] underlines words and -passages that, in typeset copy, would be italicized. -

-\*[UL] underlines all letters, words and numbers -following it, but not punctuation or spaces. This makes for more -readable copy than a solid underline. When you no longer want -underlining, \*[ULX] turns underlining off. -

-The macro -UNDERLINE -and the inline escape \*[UL] are functionally -identical, hence -

-

-	.FAM     C
-	.FT      R
-	.PT_SIZE 12
-	.LS      24
-	.SS      0
-	.QUAD    LEFT
-	Which should I heed?
-	.UNDERLINE
-	Just do it
-	.UNDERLINE OFF
-	or
-	.UNDERLINE
-	just say no?
-	.UNDERLINE OFF
-
- -produces the same result as -

-

-	.FAM     C
-	.FT      R
-	.PT_SIZE 12
-	.LS      24
-	.SS      0
-	.QUAD    LEFT
-	Which should I heed? \*[UL]Just do it\*[ULX] or \*[UL]just say no?\*[ULX]
-
- - - -
-

Insert space into lines

-
-Macro: PAD "<string with pad markers inserted>" [NOBREAK] - -

-With PAD, you can insert unspecified amounts of -whitespace into a line. The optional NOBREAK -argument tells mom not to advance on the page -after the PAD macro has been invoked. -

-PAD calculates the difference between the length of -text on the line and the distance remaining to its end, then inserts -the difference (as whitespace) at the place(s) you specify. -

-Take, for example, the following relatively common typesetting -situation, found at the bottom of legal agreements: -

-

-	Date             Signature                               |
-
- -The person signing the agreement is supposed to fill in the date -as well as a signature. Space needs to be left for both, but -the exact amount is neither known, nor important. All that -matters is that there be a little space after Date, and rather -more space after Signature. (In the above, | represents -the end of the line at the prevailing line length.) -

-The -pad marker -(see below) is # (the pound or number sign on your keyboard) and -can be used multiple times in a line. With that in mind, here's how -you'd input the Date/Signature line (assuming a length of 30 picas): -

-

-	.LL 30P
-	.PAD "Date#Signature###"
-
- -When the line is output, the space remaining on the line, after -"Date" and "Signature" have been taken into -account, is split into four (because there are four # signs). -One quarter of the space is inserted between Date and Signature, -the remainder is inserted after Signature. - -

-One rarely wants merely to insert space in a line; one usually -wants to fill it with something, hence PAD is -particularly useful in conjunction with -string tabs. -The following uses the Date/Signature example above, but adds -rules into the whitespace through the use of string tabs and -mom's -inline escape -\*[RULE]. -(Instead of \*[RULE], -groff's line drawing function, -\l -could be used.) -

-

-	.LL 30P
-	.PAD "Date \*[ST1]#\*[ST1X] Signature \*[ST2]###\*[ST2X]" NOBREAK
-	.ST 1 J
-	.ST 2 J
-	.TAB 1
-	\*[RULE]
-	.TN
-	\*[RULE]
-	.TQ
-
- -If you're not a typesetter, and if you're new to groff, the -example probably looks like gibberish. My apologies. However, -remember that typesetting is a craft, and without having studied -the craft, it takes a while to grasp its concepts. -

-Basically, what the example does is: -
-

    -
  1. Pads the Date/Signature line (using the pad marker #), - encloses the padded space with two string tabs markers, - and outputs the line. -
    -
  2. Sets the two string tabs (notice the use of - EL - beforehand; you don't want mom - to advance a line at this point). -
    -
  3. Calls the first string tab and draws a rule to its full - length. -
    -
  4. Calls the second tab with - TN - (which moves to tab 2 and stays on the same baseline) - then draws a rule to the full length of string tab 2. -
-
-Often, when setting up string tabs this way, you don't want the -padded line to print immediately. To accomplish this, use -SILENT. -See the quickie tutorial on string tabs -for an example. -

-NOTE: Because the pound sign (#) is used as the pad -marker, you can't use it as a literal part of the pad string. If you -need the sign to appear in the text of a padded line, change the pad -marker with PAD_MARKER. Also, be aware -that # as a pad marker only applies within the PAD -macro; at all other times it prints literally, just as you'd expect. -

-Another important consideration when using PAD is that -because the string must be enclosed in double-quotes, you can't use the -double-quote (") as part of the string. The way to circumvent -this is to use the groff -inline escapes -\(lq and \(rq (leftquote and -rightquote respectively) whenever double-quotes are required in the -string passed to PAD. -

- - - -


-

Change/set the marker used with PAD

-
-Macro: PAD_MARKER <character to use as the pad marker> - -

-If you need to change mom's default pad marker -(#), either because you want a literal # in the padded line, -or simply because you want to use another character instead, use -PAD_MARKER, whose argument is the new pad marker -character you want. -

-

-	.PAD_MARKER @
-
- -changes the pad marker to @. -

-Once you've changed the pad marker, the new marker remains in -effect for every instance of -PAD -until you change it again (say, back to the pound sign). -

- - - -


-

Inline escape to add leaders to a line

-
-Inline: \*[LEADER] - -

-Whenever you want to fill a line or tab with -leaders, -use the -inline escape -\*[LEADER]. The remainder of the line or tab will be -filled with the leader character. Mom's -default leader character is a period (dot), but you can change -it to any character you like with -LEADER_CHARACTER. -

-NOTE: \*[LEADER] fills lines -or tabs right to their end. You cannot insert leaders into a -line or tab and have text following the leader on the same line -or in the same tab. Should you wish to achieve such an effect -typographically, create tabs for each element of the line and -fill them appropriately with the text and leaders you need. -String tabs are perfect for this. An -example follows. -

-

-	.LL 30P
-	.PAD "Date\*[ST1]#\*[ST1X]Signature\*[ST2]###\*[ST2X]"
-	.EL
-	.ST 1 J
-	.ST 2 J
-	.TAB 1
-	\*[LEADER]
-	.TN
-	\*[LEADER]
-	.TQ
-
- -The PAD line sets the words Date and Signature, -and marks string tabs around the pad space inserted in the line. -The string tabs are then "set", called, and filled -with leaders. The result looks like this: -

-

-	Date.............Signature.....................................
-
- - - -
-

Change/set the leader character

-
-Macro: LEADER_CHARACTER <character> - -

-LEADER_CHARACTER takes one argument: a single -character you would like to be used for -leaders. -(See -\*[LEADER] for an explanation of how to -fill lines with leaders.) -

-For example, to change the leader character from mom's -default (a period) to the underscore character, enter -

-

-	.LEADER_CHARACTER _
-
- - - -
-

Drop caps

-
-Macro: DROPCAP <dropcap letter> <number of lines to drop> [ COND <percentage> | EXT <percentage> ] - -

-The first two arguments to DROPCAP are the letter you -want to be the -drop cap -and the number of lines you want it to drop. By default, -mom uses the current family and font for the drop cap. -

-The optional argument (COND or EXT) indicates that you want the -drop cap condensed (narrower) or extended (wider). If you use -COND or EXT, you must follow the -argument with the percentage of the letter's normal width you want -it condensed or extended. No percent sign (%) is required. -

-Mom will do her very best to get the drop cap to -line up with the first line of text indented beside it, then set -the correct number of indented lines, and restore your left margin -when the number of drop cap lines has been reached. -

-Beginning a paragraph with a drop cap "T" looks -like this: -

-

-	.DROPCAP T 3 COND 90
-	he thousand injuries of Fortunato I had borne as best I
-	could, but when he ventured upon insult, I vowed revenge.
-	You who so well know the nature of my soul will not suppose,
-	however, that I gave utterance to a threat...
-
- -The drop cap, slightly condensed but in the current family and font, -will be three lines tall, with whatever text fills those three -lines indented to the right of the letter. The remainder of the -paragraph's text will revert to the left margin. -

-NOTE: When using the -document processing macro -PP, -DROPCAP only works -
-

    -
  • with initial paragraphs (i.e. at the start of the document, - or after - HEAD), -
  • when DROPCAP comes immediately after PP, -
  • and when the - PRINTSTYLE - is TYPESET. -
-
-If these conditions aren't met, DROPCAP is silently ignored. -

-WARNING: DROPCAP puts a bit of -a strain on resource-challenged systems. If you have such a -system and use drop caps extensively in a document, be prepared -for a wait while mom does her thing. - -

Support macros for DROPCAP

-Drop caps are the bane of most typesetters' existence. It's -very difficult to get the size of the drop cap right for the -number of drop lines, especially if the drop cap is in a -different family from the prevailing family of running text. -Not only that, but there's the gutter around the drop cap to -take into account, plus the fact that the letter may be too wide -or too narrow to look anything but odd or misplaced. -

-Mom solves the last of these problems with the -COND and EXT arguments. The -rest she solves with macros that change the default behaviour of -DROPCAP, namely -

-DROPCAP_FAMILY, -
-DROPCAP_FONT, -
-DROPCAP_COLOR, -
-DROPCAP_ADJUST -
-and -
-DROPCAP_GUTTER. -

-These macros must, of course, come before you invoke -DROPCAP. - -

DROPCAP_FAMILY

- -Set the drop cap family by giving -DROPCAP_FAMILY the name of the family you want, -e.g. -

-

-	.DROPCAP_FAMILY H
-
- -which will set the family to Helvetica for the drop cap only. - -

DROPCAP_FONT

- -Set the drop cap font by giving -DROPCAP_FONT the name of the font you want, -e.g. -

-

-	.DROPCAP_FONT I
-
- -which will set the font to italic for the drop cap only. - -

DROPCAP_ADJUST

- -If the size mom calculates for the drop cap -isn't precisely what you want, you can increase or decrease it -with DROPCAP_ADJUST, like this: -e.g. -

-

-	.DROPCAP_ADJUST +1
-	    or
-	.DROPCAP_ADJUST -.75
-
- -DROPCAP_ADJUST only understands -points, -therefore do not append any -unit of measure -to the argument. And always be sure to prepend the plus or -minus sign, depending on whether you want the drop cap larger or -smaller. - - -

DROPCAP_COLOR

- -If you'd like your drop cap colourized, simply invoke -DROPCAP_COLOR with the name of a colour you've already -created ("initialized") with -NEWCOLOR -or -XCOLOR. Only the drop cap will be -colourized; all other text will remain at the current colour -default (usually black). - -

DROPCAP_GUTTER

- -By default, mom puts three points of space -between the drop cap and the text indented beside it. If you -want another value, use DROPCAP_GUTTER (with a -unit of measure), like this: -

-

-	.DROPCAP_GUTTER 6p
-
- - - -
-

Superscript

-
-Inlines: \*[SUP]...\*[SUPX] - -

-Superscripts are accomplished -inline. -Whenever you need one, typically for numerals, all you need to -do is surround the superscript with the inlines above. -\*[SUP] begins superscripting; -\*[SUPX] turns it off. - - -

-If your running type is -pseudo-condensed -or -pseudo-extended -and you want your superscripts to be equivalently pseudo-condensed or --extended, use \*[CONDSUP]...\*[CONDSUPX] or -\*[EXTSUP]...\*[EXTSUPX]. -

-The superscript inlines are primarily used by the -document processing macros -for automatic generation of numbered footnotes. However, you may -find them useful for other purposes. -

-NOTE: Mom does a pretty fine job of -making superscripts look good in any font and at any size. If you're -fussy, though (and I am), about precise vertical placement, kerning, -weight, size, and so on, you may want to roll your own solution. -And sorry, there's no mom equivalent for subscripts. -I'm neither a mathematician nor a chemist, so I don't need them. -Of course, anyone who wishes to contribute a subscript routine to -mom will receive eternal blessings not only in this -lifetime, but in all lifetimes to come. -

-


-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/headfootpage.html b/contrib/groff/contrib/mom/momdoc/headfootpage.html deleted file mode 100644 index 723b18110575..000000000000 --- a/contrib/groff/contrib/mom/momdoc/headfootpage.html +++ /dev/null @@ -1,1636 +0,0 @@ - - - - -Mom -- Document processing: headers, footers and pagination - - - - - -Next   -Prev   -Back to Table of Contents -

- - - -

PAGE HEADERS, FOOTERS, AND PAGINATION

- - - - - -

Introduction

-
- -Headers -and -footers, -as defined in the section -Mom's Document Processing Terms, -are those parts of a document that contain information about the document -itself which appear in the margins either above or below -running text. -They are, in all respects but two, identical. The differences are: -

-

    -
  1. headers appear in the margin above running text while - footers appear in the margin beneath running text; -
  2. the (optional) rule that separates headers from running - text appears below the header while - the (optional) rule that separates footers from running - text appears above the footer. -
- -

-Because headers and footers are virtually identical, this -documentation addresses itself only to headers. In all cases, -unless otherwise noted, descriptions of headers -describe footers as well. -

-Furthermore, any -control macro -that begins with HEADER_ may be used to control -footers, simply by replacing HEADER_ with -FOOTER_. -

-Author's note: Left to their own devices (i.e. if -you're happy with the way mom does things by default), -headers are something you never have to worry about. You can skip -reading this section entirely. But if you want to change them, be -advised that headers have more macros to control their appearance than -any other document element. The text of this documentation becomes -correspondingly dense at this point. - -

-NOTE: While the single page number that -mom generates in either the top or bottom margin -above or below running text is technically a kind of header/footer, -mom and this documentation treat it as a -separate page element. -

- -

General description of headers/footers

-

-Headers comprise three distinct parts: a left part, a centre part, -and a right part. Each part contains text (a "string") -that identifies some aspect of the document as a whole. -

-The left part ("header left") lines up with the document's -left margin. The centre part ("header centre") is -centred on the document's line length. The right part ("header -right") lines up with the document's right margin. Not all parts -need contain a string, and if you don't want headers at all, you can -turn them off completely. -

-A note to groff experts: Although -mom's headers resemble the three-part titles generated -by .tl, they're in no way related to it, nor based -upon it. .tl is not used at all in mom. -

-Normally, mom fills headers with strings appropriate -to the document type selected with -DOCTYPE. -You can, however, supply whatever strings you like -- including page -numbers -- to go in any part of headers. What's more, you can set the -family, font, size and capitalization style (caps or caps/lower-case) -for each header part individually. -

-By default, mom prints a horizontal rule beneath -headers to separate them visually from running text. In the case of -footers, the rule is above running text. You can increase -or decrease the space between the header and the rule if you like (with -HEADER_RULE_GAP), -or remove it completely. -

- -

Default specs for headers/footers

-

-Mom makes small type adjustments to each part of -the header (left, centre, right) to achieve an aesthetically -pleasing result. The defaults are listed below. (The strings -mom puts by default in each part are explained in -DOCTYPE.) -

-NOTE: Except for capitalization (all caps or -caps/lower-case), these defaults apply only to -PRINTSTYLE TYPESET. -

-

-TYPE SPEC    HEADER LEFT         HEADER CENTER       HEADER RIGHT
----------    -----------         -------------       ------------
-Family       document default    document default    document default
-Font         roman               italic              roman
-Colour       (black)             (black)             (black)
-All caps     no                  no                  yes
-Size*        -.5 (points)        -.5 (points)        -2 (points)
-            (-2 if all caps)    (-2 if all caps)    (-.5 if not all caps)
-
-*Relative to the point size of type in paragraphs
-
- -You can, of course, change any of the defaults using the appropriate -control macros. And should you wish to design headers from the ground -up, mom has a special macro, -HEADER_PLAIN, -that removes all type adjustments to headers. The straightforward -type specs for paragraphs are used instead, providing a simple -reference point for any alterations you want to make to the family, -font, size and capitalization style of any header part. -

- -

Vertical placement and spacing of headers/footers

-

-As explained in the section on -typesetting macros in document processing, -the top and bottom margins of a mom document -are the vertical start and end positions of -running text, -not the vertical positions of headers or footers, which, by definition, -appear in the margins above (or below) running text. -

-The vertical placement of headers -is controlled by the macro -HEADER_MARGIN, -which establishes the -baseline -position of headers relative to the top edge of the page. -The header rule, whose position is relative to the header itself, -is controlled by a separate macro. -FOOTER_MARGIN establishes the baseline position of -footers relative to the bottom edge of the page. -

-HEADER_GAP establishes -the distance between headers and the start of running text (effectively -making HEADER_MARGIN + HEADER_GAP the top margin of -running text unless you give mom a literal top margin -(with -T_MARGIN), -in which case she ignores HEADER_GAP and starts -running text at whatever top margin you gave. -FOOTER_GAP and -B_MARGIN -work similarly, except they determine where running text -ends on the page. (See -FOOTER MARGIN AND BOTTOM MARGIN -- VERY IMPORTANT! -for a warning about possible conflicts between the footer margin -and the bottom margin.) -

-Confused? Mom apologizes. It's really quite -simple. By default, mom sets headers 4-1/2 -picas -down from the top of the page and starts running text 3 picas (the -HEADER_GAP) beneath that, which means the -effective top margin of running text is 7-1/2 picas (visually approx. 1 -inch). If you give mom a literal top margin (with -T_MARGIN), -she ignores the HEADER_GAP and starts running -text at whatever top margin you gave. -

-Footers are treated the same way, the only difference being the -default distances. Mom sets footers 3 picas up from -the bottom of the page, and interrupts the processing of running text 3 -picas (the FOOTER_GAP) above that (again, visually -approx. 1 inch). If you give mom a literal bottom -margin (with B_MARGIN), she ignores the -FOOTER_GAP and interrupts the processing of running -text at whatever bottom margin you gave. -

-If mom is paginating your document (she -does, by default, at the bottom of each page), the vertical -spacing and placement of page numbers, whether at the top -or the bottom of the page, is managed exactly as if the -page numbers were headers (or footers), and are controlled -by the same macros. See -Pagination control. -

-


- - - - -

Managing headers/footers

-
- -

-The following are the basic macros for turning -headers -or -footers -on or off. They should be invoked prior to -START. -

-By default, mom prints page headers. If you turn -them off, she will begin -running text -on each page with a default top margin of 6 -picas -unless you have requested a different top margin (with -T_MARGIN) -prior to -START. -

-Please note that headers and footers are mutually exclusive. If -headers are on, footers (but NOT bottom-of-page numbering) are -automatically turned off. Equally, if footers are on, headers -(but NOT top-of-page numbering) are automatically turned off. Thus, if -you'd prefer footers in a document, you need only invoke -FOOTERS; -there's no need to turn headers off first. -

- - - -


-

- -Macro: HEADERS toggle - -

-Page headers -are on by default. If you don't want them, turn them off by -invoking HEADERS with any argument -(OFF, QUIT, END, X...), e.g. -

-

-	.HEADERS OFF
-
-

-NOTE: HEADERS automatically -disables -footers -(you can't have both), but not the page numbers that normally -appear at the bottom of the page. -

-ADDITIONAL NOTE: If HEADERS -are OFF, mom's normal top -margin for -running text -(7.5 -picas) -changes to 6 picas (visually approx. 1 inch). This does NOT apply -to the situation where footers have been explicitly turned on -(with -FOOTERS). -Explicitly invoking footers moves page numbering to the -top of the page, where its placement and spacing are the same as -for headers. (I.e. the top margin of running text remains 7.5 -picas.) -

- - - -


-

- -Macro: FOOTERS toggle - -

-Page footers -are off by default. If you want them instead of -headers -(you can't have both), turn them on by invoking -FOOTERS without an argument, e.g. -

-

-	.FOOTERS
-
- -

-FOOTERS automatically disables headers, and -mom shifts the placement of page numbers from their -normal position at page bottom to the top of the page. -

-NOTE: By default, when footers are on, -mom does not print a page number on the first -page of a document, nor on first pages after -COLLATE. -If you don't want this behaviour, you can change it with -PAGENUM_ON_FIRST_PAGE. -

- - - -


-

- -Macro: FOOTER_ON_FIRST_PAGE toggle - -

-If you invoke -FOOTERS, -mom, by default, does not print a footer on the -first page of the document. (The -docheader -on page 1 makes it redundant.) However, should you wish a footer on -page 1, invoke FOOTER_ON_FIRST_PAGE without any argument. -

-


- - - - -

User-defined, single string recto/verso headers/footers

-
- -

Introduction

- -Sometimes, you'll find you can't get mom's handling -of 3-part headers or footers to do exactly what you want in the -order you want. This is most likely happen when you want the -information contained in the headers/footers split over two pages, -as is often the case with recto/verso documents. -

-Say, for example, you want recto page headers to contain a document's -author, centred, and verso page headers to contain the document's -title, also centred, like this: -

-

-	+------------------------+   +------------------------+     
-	|         Author         |   |         Title          |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	+------------------------+   +------------------------+     
-
- -With mom's standard 3-part headers, this isn't -possible, even when -RECTO_VERSO -is enabled. RECTO_VERSO switches the left and -right parts of headers on alternate pages, but the centre -part remains unchanged. -

-Any time you need distinctly different headers on alternate -pages, mom has macros that let you manually -design and determine what goes into headers on recto pages, and -what goes into headers on verso pages. The macros are -HEADER_RECTO -and -HEADER_VERSO. -Both allow you to state whether the header is flush left, centred, -or flush right, and both take a single -string argument -with which, by combining text and -inline escapes, -you can make the headers come out just about any way you want. -Use of the \*[PAGE#] escape is permitted in the -string argument (see -Including the page number in header-left, -centre or -right), -and as an added bonus, mom provides a special -mechanism whereby it's possible to "pad" the string as well. -

- - - -


-

- -Macro: HEADER_RECTO LEFT | CENTER | RIGHT "<header recto string>" -
-Macro: HEADER_VERSO LEFT | CENTER | RIGHT "<header verso string>" -
- -

-HEADER_RECTO and HEADER_VERSO behave -identically, hence all references to HEADER_RECTO -in this section also refer to HEADER_VERSO. -Furthermore, FOOTER_ can be used instead of -HEADER_ to set up recto/verso footers. -

-The first argument to HEADER_RECTO is the -direction in which you want the header -quadded. -L, C and R may be used in -place of LEFT, CENTER and -RIGHT. The second argument is a string, -surrounded by double-quotes, containing what you want in the -header. HEADER_RECTO disables mom's -normal 3-part headers, therefore anything you want in the -headers must be entered by hand in the string, including colours -(via the -inline escape -\*[<colorname>]). -

-By default, HEADER_RECTO is set at the same -size, and in the same family and font, as paragraph text. The -control macros -HEADER_FAMILY -and -HEADER_SIZE -may be used to change the default family and size. Changes to -the font(s) within the string must be accomplished with the -inline escapes -\*[ROM], \*[IT], \*[BD], \*[BDI] and -\*[PREV] (see -Changing fonts). -Additional refinements to the style of the header-recto string, -including horizontal spacing and/or positioning, can also be made with -inline escapes. -

-To include the current page number in the string, use the -\*[PAGE#] inline. -
- -

*Padding the HEADER_RECTO/HEADER_VERSO string

-You can "pad" the header-recto string, a convenience you'll -appreciate in circumstances such as the following. -

-

-	           VERSO                       RECTO 
-	+------------------------+   +------------------------+     
-	| Author          Page#  |   | Page#            Title |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	|                        |   |                        |     
-	+------------------------+   +------------------------+     
-
- -To pad the string argument passed to HEADER_RECTO, -begin and end the string (inside the double-quotes) with the caret -character (^). Enter the pound sign (#) at any -point in the string where you want an equalized amount of whitespace -inserted. (If you're unsure what padding is, see -Insert space into lines.) -Note that if you're padding the string, it doesn't matter what -quad direction you give HEADER_RECTO since -padding, by its nature, justifies text to the left and right -margins. -

-The situation depicted above is accomplished like this: -

-

-	.HEADER_RECTO LEFT "^\*[PAGE#]#Title^"
-	.HEADER_VERSO LEFT "^Author#\*[PAGE#]^"
-
- -Note that mom does not interpret the # -in \*[PAGE#] as a padding marker (i.e. as a place -to insert whitespace). -

-Also, notice that the argument LEFT is used in both -cases. When padding a header, it doesn't matter whether you use -LEFT, CENTER or RIGHT as the argument. -

-Furthermore, should you need a user-defined header of -the sort provided by HEADER_RECTO and -HEADER_VERSO but aren't actually printing -recto/verso, you can use HEADER_RECTO to design the -header that appears at the top of every page. -

-IMPORTANT: The -PAD_MARKER -macro, which changes the default pad marker (#) used by -PAD, -has no effect on the pad marker used in the -HEADER_RECTO string. If you absolutely must -have a literal pound sign in your HEADER_RECTO -string, use the escape sequence for the pound sign -(\[sh]) where you want the pound sign to go. -

-


- - -

Control macros for headers/footers

-
-Virtually every part of headers (see the paragraph on how -"headers" means "footers" -in the -introduction to headers/footers) -can be designed to your own specifications. -

- - -

Header/footer control macros

- - - - - - -
-

Header/footer strings

-

- - Macro: HEADER_LEFT "<text of header left>" | # - -
- - Macro: HEADER_CENTER "<text of header centre>" | # - -
- - Macro: HEADER_RIGHT "<text of header right>" | # - - -

-To change the text (the "string") of the left, centre, -or right part of headers, invoke the appropriate macro above with -the string you want. For example, mom, by default, -prints the document's author in the header-left position. If your -document has, say, two authors, and you want both their names to -appear header-left, change HEADER_LEFT like this: -

-

-	.HEADER_LEFT "R. Stallman, E. Raymond"
-
- -Because the arguments to HEADER_LEFT, _CENTER, -and _RIGHT are -string arguments, -they must be enclosed in double-quotes. -

-NOTE: Replace HEADER_, above, -with FOOTER_ to change the strings in footers. - -

*Padding the header/footer centre string

-

-Macro: HEADER_CENTER_PAD LEFT | RIGHT <amount of space by which to pad centre string left or right> -
-*Requires a unit of measure -

-By default, mom centres the header centre string -literally on the line length in effect for page headers. In some -cases, notably when the header left or header right strings are -particularly long, the effect isn't pretty. The offendingly long -header left or right crowds, or even overprints, the header centre. -That's where HEADER_CENTER_PAD comes in. With a -bit of experimentation (yes, you have to preview the document), you -can use HEADER_CENTER_PAD to move the header -centre string left or right until it looks acceptably centred -between the two other strings. -

-For example, say your document is an outline for a novel called "By -the Shores of Lake Attica." You've told mom -you want -

-    DOCTYPE - -NAMED "Outline" -

-but when you preview your work, you see that "Outline", in the -centre of the page header, is uncomfortably close to the title, -which is to the right of it. By invoking -

-

-	.HEADER_CENTER_PAD RIGHT 3P
-
- -you can scoot the word "Outline" over three -picas -to the left (the padding's added to the right of the string) -so that your head looks nicely spaced out. Invoking -HEADER_CENTER_PAD with the LEFT -argument obviously puts the padding on the left side of the string. -

-Most reassuring of all is that if you use -HEADER_CENTER_PAD conjunction with -RECTO_VERSO, -mom will pad the centre string appropriately left -OR right, depending on which page you're on, without you having to -tell her to do so. -

- -


-

-

Using mom's "reserved" strings in header/footer definitions

-

-As pointed out in the author's note in the introduction to -headers/footers, headers and footers are something you don't -normally have to worry much about. Mom usually -knows what to do. -

-However, situations do arise where you need to manipulate what goes -in the header/footer strings, setting and resetting them as you go -along. A case where you might want to do this would be if you want -to output endnotes at the end of each document in a series of -collated -documents, and you want the word "Endnotes" to go in the header -centre position of the endnotes, but want, say, the -TITLE -to go back into the centre position for the next output document. -

-In scenarios like the above, mom has a number of -"reserved" strings that you can plug into the -HEADER_LEFT, _CENTER and _RIGHT -macros. They are: -

-

-	\*[$TITLE]          -- the argument passed to .TITLE
-	\*[$DOCTITLE]       -- the argument passed to .DOCTITLE
-	\*[$AUTHOR_1]       -- the first argument passed to .AUTHOR
-	\*[$CHAPTER_STRING] -- the argument passed to .CHAPTER_STRING,
-	                       if invoked, otherwise, "Chapter"
-	\*[$CHAPTER]        -- the argument (typically a number) passed
-	                       to .CHAPTER
-	\*[$CHAPTER_TITLE]  -- the argument passed to .CHAPTER_TITLE
-
- -Returning to the scenario above, first, you'd define a centre -string for the endnotes page: -

-

-	.HEADER_CENTER "Endnotes"
-
- -Then, you'd output the endnotes: -

-

-	.ENDNOTES
-
- -Then, you'd prepare mom for the next document: -

-

-	.COLLATE
-	.TITLE "New Doc Title"
-	.AUTHOR "Josephine Blough"
-
- -Then, you'd redefine the header centre string using the reserved -string \*[$TITLE], like this: -

-

-	.HEADER_CENTER "\*[$TITLE]"
-
- -And last, you'd do: -

-

-	.START
-
- -Voilà! Any argument you pass to TITLE from here -on in (say, for subsequent documents) is back in the header centre -position. Here's the whole routine again: -

-

-	.HEADER_CENTER "Endnotes"
-	.ENDNOTES
-	.COLLATE
-	.TITLE         "New Doc Title"
-	.AUTHOR        "Josephine Blough"
-	.HEADER_CENTER "\*[$TITLE]"
-	.START
-
- -If need be, you can concatenate the strings, as in the following -example. -

-

-	.HEADER_CENTER "\*[$CHAPTER_STRING] \*[$CHAPTER]"
-
- -which, assuming a .CHAPTER_STRING of -"Chapter" and a .CHAPTER of -"2", would put "Chapter 2" in the header centre -position. -

- - -

*Replacing header-left, -CENTER or -right with the page number

- -

-If you would like to have the current page number to appear -header-left, -center, or -right instead of a text -string, invoke the appropriate macro, above, with the single -argument # (the "number" or -"pound" sign). Do NOT use -double-quotes. For example, -

-

-	.HEADER_CENTER #
-
- -will print the current page number in the CENTER part of -headers. -

- - -

*Including the page number in header-left, -CENTER or -right

- -

-If you would like to include the current page number in -the string you pass to HEADER_LEFT, _CENTER, or -_RIGHT, use the special -inline escape -\*[PAGE#] in the string argument. -

-For example, say you have a document that's ten pages long, and -you want header-right to say "page <whichever> of 10", -invoke HEADER_RIGHT as follows: -

-

-	.HEADER_RIGHT "page \*[PAGE#] of 10"
-
- -Header-right of page two will read "page 2 of 10", -header-right of page three will read "page 3 of 10", -and so on. -

-


- - - -

Header/footer style

- -

-Global changes -

-The following macros allow you to make changes that affect all -parts of the header at once. -

-Please note that HEADER_FAMILY and -HEADER_FONT have no effect on -PRINTSTYLE TYPEWRITE. -

-

- -
-

- - Macro: HEADER_FAMILY <family> - - -

-By default, mom uses the default document family -for headers. If you would like her to use another -family -in headers, invoke HEADER_FAMILY with the identifier -for the family you want. The argument is the same as for the -typesetting macro -FAMILY. -

-NOTE: Replace HEADER_, above, -with FOOTER_ to change the footer family. -

- -


-

- - Macro: HEADER_SIZE <+|-number of points> -
- *Argument is relative to the point size of type in paragraphs -
- -

-By default, mom makes small adjustments to the size -of each part of a header to achieve an aesthetically pleasing result. -If you'd like her to continue to do so, but would like the overall -appearance of headers to be a little smaller or a little larger, -invoke HEADER_SIZE with + or - the number of -points -(fractions allowed) by which you want her to in/decrease the size -of headers. For example, -

-

-	.HEADER_SIZE +.75
-
- -increases the size of every part of a header by 3/4 of a point while -respecting mom's own little size changes. -

-See -Arguments to the control macros -for an explanation of how control macros ending in -_SIZE work. -

- -NOTE: Replace HEADER_, above, -with FOOTER_ to change the footer size. -

-ADDITIONAL NOTE: Normally, macros that control headers have no -effect on -PRINTSTYLE TYPEWRITE. -HEADER_SIZE is an exception. While all parts of a -header in PRINTSTYLE TYPEWRITE are always the same -size, you can use HEADER_SIZE with PRINTSTYLE -TYPEWRITE to reduce the header's overall point size. -You'll most likely require this when the -COPYSTYLE -is DRAFT, since portions of the header may overprint -if, say, the title of your document is very long. -

- -


-

- - Macro: HEADER_PLAIN - - -

-By default, mom makes adjustments to the font, -size, and capitalization style of each part of headers to achieve -an aesthetically pleasing look. Should you wish to design your own -headers from the ground up without worrying how changes to the various -elements of header style interact with mom's defaults, -invoke HEADER_PLAIN by itself, with no argument. -Mom will disable her default behaviour for headers, -and reset all elements of header style to the same family, font, -and point size as she uses in paragraphs. -

-NOTE: Replace HEADER_, above, -with FOOTER_ to disable mom's -default behaviour for the various elements of footer style. -

- -


-

- - Macro: HEADER_COLOR <colorname> - - -

-If you want your headers in a colour different from the document -default (usually black), invoke HEADER_COLOR with -the name of a colour pre-defined (or "initialized") with -NEWCOLOR -or -XCOLOR. -

-HEADER_COLOR will set all the parts of the header -AND the header rule in the colour you give it as an argument. If -you wish finer control over colour in headers, you can use -HEADER_<POSITION>_COLOR -to colourize each part of the header separately, as well as -HEADER_RULE_COLOR -to change the colour of the header rule. -

-NOTE: Replace HEADER_, above, -with FOOTER_ to colourize footers. -

- -


-

-Part by part changes -

-NOTE: When using the following control macros, -replace "<POSITION>" by LEFT, CENTER, -or RIGHT as appropriate. -

-

- -
-

- - Macro: HEADER_<POSITION>_FAMILY <family> - -

-Use HEADER_<POSITION>_FAMILY to change the -family -of any part of headers. See -Arguments to the control macros -for an explanation of how control macros ending in -_FAMILY work. -

-NOTE: Replace HEADER_, above, -with FOOTER_ to change a footer part's family. -

- -


-

- - Macro: HEADER_<POSITION>_FONT <font> - -

-Use HEADER_<POSITION>_FONT to change the -font -of any part of headers. See -Arguments to the control macros -for an explanation of how control macros ending in -_FONT work. -

-NOTE: Replace HEADER_, above, -with FOOTER_ to change a footer part's font. -

- -


-

- - Macro: HEADER_<POSITION>_SIZE <+|-number of points> - -

-Use HEADER_<POSITION>_SIZE to change the size of any -part of headers (relative to the point size of type in -paragraphs). See -Arguments to the control macros -for an explanation of how control macros ending in -_SIZE work. -

-NOTE: Replace HEADER_, above, -with FOOTER_ to change a footer part's size. -

- -


-

- - Macro: HEADER_<POSITION>_CAPS toggle - -

-HEADER_<POSITION>_CAPS is a -toggle macro. -If you want any part of headers to be set in all caps, -regardless of the capitalization of that part's string as given -to the -reference macros -or as defined by you with the -header string control macros, -simply invoke this macro (using the appropriate position) with no -argument. If you wish to turn capitalization off (say, for the -header-right string that mom capitalizes by -default), invoke the argument with any argument (e.g. OFF, -QUIT, END, X...). -

-NOTE: Replace HEADER_, above, -with FOOTER_ to change a footer part's -capitalization style. - -

-


-

- - Macro: HEADER_<POSITION>_COLOR <colorname> - -

-HEADER_<POSITION>_COLOR allows you to set a -colour for each of the three possible parts of a page header -separately. For example, say you want the right part of the header -(by default, the document title) in red, this is how you'd get it: -

-

-	.HEADER_RIGHT_COLOR red
-
- -The other parts of the header will be in the default header colour -(usually black, but that can be changed with -HEADER_COLOR). -

-Remember that you have to define (or "initialize") a -colour with -NEWCOLOR -or -XCOLOR -before you can use the colour. -

-If you create a -user-defined header -with -HEADER_RECTO -or -HEADER_VERSO, -and you want various elements within the header to be colourized, -embed the colours in the string passed to HEADER_RECTO -or HEADER_VERSO with the -\*[<colorname>] -inline escape. -

-NOTE: Replace HEADER_, above, -with FOOTER_ to set the colours for the various -elements of footers. -

-


- - - - -

Header/footer vertical placement and spacing

-
- -

-See -Vertical placement and spacing of headers/footers -for an explanation of how mom deals with -headers, footers, and top/bottom page margins. -

- - - -


-

- -Macro: HEADER_MARGIN <distance to baseline of header> -
-*Requires a unit of measure - -

-Use HEADER_MARGIN to set the distance from the -top edge of the page to the -baseline -of type in headers. A unit of measure is required, and decimal -fractions are allowed. -

-Mom's default header margin is 4-1/2 -picas, -but if you want a different margin, say, 1/2-inch, do -

-

-	.HEADER_MARGIN .5i
-
- -If your document uses -footers, -replace HEADER_, above, with -FOOTER_. The argument to -FOOTER_MARGIN is the distance from the bottom -edge of the page to the baseline of type in footers. -

-Mom's default footer margin is 3 -picas. - - -

-FOOTER MARGIN AND BOTTOM MARGIN -- VERY IMPORTANT! -

-Mom requires a footer margin for proper operation, -hence she sets one, even if you don't. (As stated above, her default -footer margin is 3-picas). -

-If you set a bottom margin for your document (with -B_MARGIN, -prior to -START) -and the margin's too close to mom's default -footer margin (or a footer margin you set yourself -with FOOTER_MARGIN), mom will -not print your footers; additionally, she'll give you a warning -and some advice on standard error. When this happens, you must -reset either B_MARGIN or -FOOTER_MARGIN so there's an adequate amount of -space for mom to print the bottom line of running -text and the footer. -

-If you see the warning even when footers and/or bottom-of-page page -numbering are disabled, set a nominal footer margin of 0 prior to -START, -as in these examples. -

-Example 1 -

-

-	<reference macros, etc>
-	.PAGINATION    OFF
-	.B_MARGIN      .25i
-	.FOOTER_MARGIN O
-	.START
-
- -Example 2 -

-

-	<reference macros, etc>
-	.HEADERS       OFF
-	.PAGENUM_POS   TOP RIGHT
-	.B_MARGIN      .25i
-	.FOOTER_MARGIN O
-	.START
-
- -

A note on header/footer margins and page numbering

-Mom uses HEADER_MARGIN and -FOOTER_MARGIN to establish the baseline -position of page numbers in addition to the baseline position of -headers and footers. -

-By default, page numbers appear at the bottom of the page, therefore -if you want the default position (bottom), but want to change the -baseline placement, use FOOTER_MARGIN. Conversely, -if page numbers are at the top of the page, either because you turned -FOOTERS -on or because you instructed mom to put them -there with -PAGENUM_POS, -you'd use HEADER_MARGIN to change their -baseline placement. -

- - - -


-

- -Macro: HEADER_GAP <distance from header to start of running text> -
-*Requires a unit of measure - -

-Use HEADER_GAP to set the distance from the -baseline -of type in headers to the start of -running text. -A unit of measure is required, and decimal fractions are allowed. -

-As explained in -Vertical placement and spacing of headers/footers, -HEADER_MARGIN + HEADER_GAP determine the -default vertical starting position of running text on the page -UNLESS you have given mom your own top margin -(with -T_MARGIN). If you give -a top margin, mom ignores -HEADER_GAP; running text starts at your stated -top margin. - -

-Mom's default header gap is 3 -picas, -but if you want a different gap, say, 2 centimetres, do -

-

-	.HEADER_GAP 2c
-
- -If your document uses -footers, -replace HEADER_, above, with -FOOTER_. The argument to -FOOTER_GAP is the distance from the -baseline of type in footers to the last baseline of running text -on the page. -

-As explained in -Vertical placement and spacing of headers/footers, -FOOTER_MARGIN + FOOTER_GAP determine the -default vertical end position of running text on the page -UNLESS you have given mom a bottom margin -(with -B_MARGIN). If you give -a bottom margin, mom ignores -FOOTER_GAP; running text ends at your stated -bottom margin. -

-Mom's default footer gap is 3 -picas. -

-NOTE: Mom uses -HEADER_GAP and -FOOTER_GAP to establish the start and end baseline -positions of running text with respect to both headers and footers -AND page numbers. If you wish to change the gap between -the last line of running text and a bottom page number, use -FOOTER_GAP. If page numbers are at the top of the -page, change the gap between the number and the first line of running -text with HEADER_GAP. -

-


- - - - -

Header/footer separator rule

-
- -

-The header/footer separator rule is a modest horizontal rule, -set slightly below the header (or above the footer), that runs -the length of the -header -and helps separate it visually from -running text. If -you don't want the rule, you can turn it off. If you want it, -but at a different vertical position relative to the header (or -footer), you can alter its placement. -

-

- - - -
-

- -Macro: HEADER_RULE toggle - -

-By default, mom prints a header separator rule -underneath headers (or above footers). If you don't want the -rule, turn it off by invoking HEADER_RULE with any -argument (OFF, QUIT, END, X...), e.g. -

-

-	.HEADER_RULE OFF
-
- -To turn the rule (back) on, invoke HEADER_RULE -without any argument. -

-NOTE: Replace HEADER_, above, -with FOOTER_ to enable/disable the printing of -the footer separator rule. (Most likely, if you're using -FOOTERS, you'll want it off.) -

- - - -


-

- -Macro: HEADER_RULE_GAP distance of rule beneath header -
-*Requires a unit of measure - -

-HEADER_RULE_GAP is the distance from the -baseline -of type in headers to the rule underneath. A unit of measure is -required, and decimal fractions are allowed. Please note that -HEADER_RULE_GAP has no effect on -HEADER_GAP -(i.e. HEADER_RULE_GAP is NOT added to -HEADER_GAP when mom calculates -the space between headers and the start of -running text). -

-By default, the header rule gap is 4 -points. -If you'd like to change it to, say, 1/4 -em, do -

-

-	.HEADER_RULE_GAP .25m
-
- -NOTE: Replace HEADER_, above, -with FOOTER_ if you're using -footers -and want to change the separator rule gap. In footers, the gap -is measured from the top of the tallest -ascender -in the footer. -

-ADDITIONAL NOTE: When using -FOOTER_RECTO -and -FOOTER_VERSO, -make sure that the default size for footers -(FOOTER_SIZE) -is set to the largest size of type that will be used in the -footer or mom may not get the rule gap right. -Inline changes to the size of type in -FOOTER_RECTO and FOOTER_VERSO -should always be negative (smaller) than the default. -

- - - -


-

- -Macro: HEADER_RULE_COLOR <colorname> - -

-If you wish to change the colour of the header rule, invoke -HEADER_RULE_COLOR with the name of a colour -pre-defined (or "initialized") with -NEWCOLOR -or -XCOLOR. -

-Please note that HEADER_RULE_COLOR overrides the -colour set with -HDRFTR_COLOR, -so that it's possible to have the heads entirely in, say, blue (set -with HEADER_COLOR), and the header rule in, say, -red. -

-NOTE: Replace HEADER_, above, -with FOOTER_ to change the colour of the footer -rule. -

-


- - -

Pagination

-
- -

-By default, mom paginates documents. Page numbers -appear in the bottom margin of the page, centred between two hyphens. -As with all elements of mom's document processing, -most aspects of pagination style can be altered to suit your taste -with control macros. -

- - -

Pagination macros list

- - - -

- - - -


-

- -Macro: PAGINATE toggle -
-Alias: PAGINATION - -

-By default, mom paginates documents (in the bottom -margin). If you'd prefer she not paginate, turn pagination off -by invoking PAGINATE with any argument (OFF, -NO, QUIT, END, X...), e.g. -

-

-	.PAGINATE NO 
-
- -To (re)start pagination, invoke PAGINATE -without any argument. -

- - - -


-

- -Macro: PAGENUMBER <number> - -

-As is to be expected, pagination of documents begins at page 1. -If you'd prefer that mom begin with a different -number on the first page of a document, invoke -PAGENUMBER with the number you want. -

-PAGENUMBER need not be used only to give -mom a "first page" number. It can be used at -any time to tell mom what number you want a -page to have. Subsequent page numbers will, of course, be -incremented by 1 from that number. -

- - - -


-

- -Macro: PAGENUM_STYLE DIGIT | ROMAN | roman | ALPHA | alpha - -

-PAGENUM_STYLE lets you tell -mom what kind of page numbering you want. -

- - -
DIGIT=Arabic digits (1, 2, 3...) -
ROMAN=upper case roman numerals (I, II, III...) -
roman=lower case roman numerals (i, ii, iii...) -
ALPHA=upper case letters (A, B, C...) -
alpha=lower case letters (a, b, c...)
-

- - - -


-

- -Macro: PAGENUM_ON_FIRST_PAGE toggle - -

-This macro applies only if you've enabled -FOOTERS. -If FOOTERS are on, mom automatically -places page numbers at the tops of pages except on -the first page of a document (or on first pages after -COLLATE). If you'd -like the page number to appear on "first" pages when -footers are on, invoke PAGENUM_ON_FIRST_PAGE with -no argument. Any other argument turns the feature off (OFF, -QUIT, END, X...). -

-As with most of the control macros, -PAGENUM_ON_FIRST_PAGE can be invoked at any time, -meaning that if you don't want a page number on the very first -page of a document, but do want one on pages that appear after -COLLATE, omit it before the first -START -of the document, then invoke it either just before or after your -first COLLATE. -

- - - -


-

- -Macro: DRAFT_WITH_PAGENUMBER - -

-Sometimes, in -COPYSTYLE DRAFT, -the CENTER part of page headers gets overcrowded because of the draft -and revision information that go there by default. -DRAFT_WITH_PAGENUMBER is one way to -fix the problem. -

-Invoked without an argument, DRAFT_WITH_PAGENUMBER -removes draft/revision information from the page headers and attaches -it instead to the document's page numbering, in the form -

-

-    Draft #, Rev. # / <pagenumber>
-
- -See the note in -COPYSTYLE DRAFT -for other ways of dealing with crowded page headers when formatting -draft-style copy. -

-


- - - -

Pagination control macros

- -
    -
  1. Family/font/size/colour -
  2. Page number position (vertical and horizontal) -
  3. Enclose page numbers with hyphens (on or off) -
-
-

1. Page number family/font/size/colour

-

-See -Arguments to the control macros. -

-

-.PAGENUM_FAMILY default = prevailing document family; default is Times Roman
-.PAGENUM_FONT   default = roman
-.PAGENUM_SIZE   default = 0 (i.e. same size as paragraph text)
-.PAGENUM_COLOR  default= black
-
- -

2. Page number position

-

-Macro: PAGENUM_POS TOP | BOTTOM  LEFT | CENTER | RIGHT - -

-Use PAGENUM_POS to change the default position of -automatic page numbering. PAGENUM_POS requires -two arguments: a vertical position (TOP or BOTTOM) and a -horizontal position (LEFT or CENTER or RIGHT). -

-For example, if you turn both -headers -and -footers -off (with .HEADERS OFF and .FOOTERS -OFF) and you want mom to number your -pages at the top right position, enter -

-

-	.PAGENUM_POS TOP RIGHT
-
- -

3. Enclose page numbers with hyphens (on or off)

-

-By default, mom encloses page numbers between hyphens. -If you don't want this behaviour, invoke the macro -PAGENUM_HYPHENS with any argument (OFF, QUIT, END, X...), -like this: -

-

-	.PAGENUM_HYPHENS OFF
-
- -If, for some reason, you want to turn page number hyphens back -on, invoke the macro without an argument. -

- -


-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/inlines.html b/contrib/groff/contrib/mom/momdoc/inlines.html deleted file mode 100644 index 9409aab9320d..000000000000 --- a/contrib/groff/contrib/mom/momdoc/inlines.html +++ /dev/null @@ -1,802 +0,0 @@ - - - - -Mom -- Inline escapes - - - - - -Next   -Prev   -Back to Table of Contents - - -

- Inline escapes -

-

-Introduction to inline escapes -
-Index of inline escapes -

- - -

Introduction to inline escapes

- - - -Inline escapes, as described in the -groff terms -section of this manual, are typesetting commands that appear in -text -input lines, -as opposed to macros and other -control lines -that must appear on lines by themselves. -

-Aside from altering type parameters within a line, inlines also -tell groff about special characters -- em-dashes, bullets, -figure/digit-width spaces, -and so on. It is beyond the scope of this manual to provide a -complete list of groff's inline functions and special characters. -I recommend having a look at the -canonical reference materials -should you need more information than is contained herein. -

-In groff, the escape character is the backslash ( \ ). Groff interprets -everything following the backslash as instructions, not literal text, -until the escape sequence is complete. Should you need the actual -backslash character as part of a line of text, simply enter it twice -( \\ ). Groff understands that this means "please print a backslash -character." (You can also use \e to print a literal -backslash.) -

-Groff has a number of ways of recognizing what constitutes a complete -escape sequence. This is both a boon and a curse; some escape -sequences have no terminating delimiter and consequently become -difficult to distinguish from real input text. Others require -the use of an opening parenthesis with no corresponding closing -parenthesis. Still others need to be enclosed in square brackets. -

-Mom recognizes that certain escapes get used more -often than others. For these, she has a consistent input style that -takes the form \*[...], which makes them stand out well from the text -of your documents. These escapes are the ones listed under -Mom's personal inlines. -

-Despite mom's best intentions, there are still -a number of typesetting functions that can only be accomplished -with groff's native inline escapes. I've listed the ones that -strike me as essential, but there are many others. If you want -to know what they are, please read the -canonical reference materials -pertaining to groff. -

-HELPFUL BIT OF INFORMATION: Inline escapes can be used -in -document processing macros -that take -string arguments. -

-

Inlines index

- -

-


- - - -

Mom's personal inlines

- -

Changing fonts

- -

-Mom provides five escapes for changing fonts -inline: -

- - - - - - - - - - - - - - - - - - - - - -
\*[ROM]Change font to medium roman
\*[IT]Change font to medium italic
\*[BD]Change font to bold roman
\*[BDI]Change font to bold italic
\*[PREV]Revert to previous font
-

-These escapes are provided for merely for convenience, legibility, -and consistency when typesetting with mom. For -more complete and flexible inline font control, please see -font control with \f. - -

-NOTE: If you're using the -document processing macros, -inline font changes remain in effect only for the duration of the -current document element tag. -

- - - -


-

Changing point size

- -

-Mom has two inline escapes for changing point -size: -

-

-	\*[SIZE <size>]
-
- -and -

-

-	\*[S<size>]
-
- -where "size" is the new size you want. You can use -either; they behave exactly the same way. For example, to change -the point size of type inline to 12 points, you could enter either -

-

-	\*[SIZE 12]
-
- -or -

-

-	\*S[12]
-
- -The advantage of the first form is that it's easy to remember, and -follows mom's usual inline syntax. The advantage -of the second is that it's more concise. -

-Notice that in both cases, the new size does not require a -unit of measure; -points -is assumed. However, a unit of measure may be appended to the size -if that's what you wish. Fractional sizes are, of course, allowed. -

-The size given to \*[SIZE <size>] or -\*S[<size>] may be expressed in plus or minus -terms, which can be very useful. In the following examples, the word -"mom" will be output 2 points larger than the point size -of the rest of the line. -

-

-	While she isn't perfect, \*S[+2]mom\*S[-2] isn't half bad.
-	While she isn't perfect, \*[SIZE +2]mom\*[SIZE -2] isn't half bad.
-
- -NOTE: If you're accustomed to groff's usual way -of handling inline size requests (\sN, \s±N, \s(NN, \s±(NN, -\s[NNN], \s±[NNN]), feel free to continue with your old habits. -Mom doesn't care. -

- - - -


-

Pairwise kerning

- -

-Pairwise kerning means moving specific letter pairs closer -together or further apart (see -Typesetting terms, kerning -for more details). -

-Mom permits inline pairwise -kerning through the use of the inline escapes - - - - - - - - - -
\*[BU n]
Closes the space between letters (Back Units).
\*[FU n]
Opens the space between letters (Forward Units).
-
-"n" is the number of -kern units -by which to close or open the space between letters. -

-For example, -

-

-	THE HUMAN COST OF COMMODIF\*[FU 1]YING FRESH W\*[BU 4]A\*[BU 5]TER
-
- -moves the letter Y in "COMMODIFYING" 1 kern unit away from -the letter F, and the letter A in "WATER" 4 kern units closer -to the letter W. Additionally, the letter T in "WATER" is moved 5 kern -units closer to the letter A. -

-For backward compatibility, the forms - - - - - - - - - -
\*[BU1]...\*[BU36]
Move back 1...36 kern units
\*[FU1]...\*[FU36]
Move forward 1...36 kern units
-
-also exist (i.e. with no space before the number of kern units desired, -up to a limit of 36). -

-NOTE: Using BU or FU -between characters pairs that are already automatically kerned -disables the automatic kerning and uses the value you give to -BU or FU instead. -

- - - -


-

Horizontal inline movement

- -

-Sometimes, you may need to insert a specified amount amount of white -space into an -output line, -or -- occasionally -- back up to a -previous position on an -output -line in order to create special typographic effects. -

-Mom's inline escapes for these horizontal movements are -

- - - - - - - - - - - -
\*[FWD n<unit>]
Move forward inline the specified number of - units of measure; - decimal fractions are allowed.
\*[BCK n<unit>]
Move backward inline the specified number of - units of measure; - decimal fractions are allowed.
-

-For example, -

-

-	1.\*[FWD 12p]The Free Trade Play-Offs: WalMart 100, Mexico 0
-
-puts 12 points of space between "1." and -"The". -

-NOTE: For backward compatibility, the forms -

- - - - - - - - - -
\*[BP.25]...\*[BP12.75]
Move back .25...12.75 points
\*[FP.25]...\*[FP12.75]
Move forward .25...12.75 points
-
-also exist (i.e. with no space before the digit and points being -the unit of measure, hence no unit of measure required). Both -accept quarter points, so it's possible to do, for example, -\*[FP.5] or \*[BP1.25] up to a limit -of 12.75 points. -

- - - -


-

Vertical inline movement

- -

-If you need to move portions of type up or down on a line, -mom provides the following inline escapes: -

- - - - - - - - - - - -
\*[UP n<unit>]
Move up inline the specified number of - units of measure
\*[DOWN n<unit>]
Move down inline the specified number of - units of measure
-
-For example, -

-

-	Tel: 905\*[UP 1p]-\*[DOWN 1p]4072
-
- -moves the hyphen in the telephone number up by 1 point, then -moves back down by the same amount. -

-NOTE: \*[UP] and \*[DOWN] do not -work with the inline escape, -\*[RULE]. -See -here -for details. -

-ADDITIONAL NOTE: For backward compatibility, the -following are also available: -

- - - - - - - -
\*[ALD.25]...\*[ALD12.75]
-
Advance lead .25...12.75 points (move downward) -
\*[RLD.25]...\*[RLD12.75]
Reverse lead .5...12.75 points (move upward)
-

-

-Both \*[ALD] and \*[RLD] work in -points, hence you mustn't use a unit of measure. -

- - - -


-

Terminate a line without advancing on the page

- -

-Sometimes, you want mom to break a line but not -advance on the page. See -here -for an example of when you might want to do this. -

-In versions of mom prior to 1.2-f, this was -accomplished through the use of -EL. -As of 1.2-f, you can, if you prefer, accomplish the same thing -by using the inline escape, \*[B]. Simply -attach the escape to the end of any line. Using the example -given in the document entry for EL, you'd use -\*[B] like this: - -

-

-	.LEFT
-	.LS 12.5
-	A line of text.\*[B]
-	.ALD 24p
-	The next line of text.
-
- -\*[B] works reliably regardless of the current -fill mode. -

- - - -


-

Call the next sequential tab without advancing on the page

- -

-Sometimes, you want mom to move to the next tab in -sequence (e.g. from TAB 1 to TAB 2, or TAB 8 to TAB 9) without -mom advancing on the page. (See the example in -here -if you're not clear how mom manages tabs and -linebreaks.) -

-In versions of mom prior to 1.2-f, this was -accomplished through the use of -TN. -As of 1.2-f, you can, if you prefer, accomplish the same thing -by using the inline escape, \*[TB+]. Simply -attach the escape to the end of any line in a tab, like this: - -

-

-	.TAB 1
-	Some text\*[TB+]    \" This line is in tab 1
-	Some more text      \" This line is in tab 2, on the same baseline as tab 1
-
- -\*[TB+] works reliably regardless of the current -fill mode. -

- - - -


-

Full measure rules

- -

-I find I often need rules drawn to the full measure of the current line -or tab length. The official way to do this is \l'\n(.lu', -which is annoying to type, and doesn't mean a whole heck of a lot if -you're new to groff. The inline, \*[RULE], is a simple -replacement for \l'\n(.lu'. Use it whenever you need -a rule drawn to the full measure of the current line or tab length, for -example: -

-

-	.LL 6P
-	\*[RULE]
-
- -The above draws a rule the full measure of the 6-pica line length. -

-\*[RULE] should appear on a line by itself. In -fill modes, -(i.e. -QUAD -or -JUSTIFY), -it requires a -.BR -on the line immediately before it; otherwise, the rule will be drawn -on the same baseline occupied by any type preceding it. In -nofill modes -(i.e -LEFT, -RIGHT -or -CENTER), -the .BR is not required. -

-Please note that \*[RULE] draws the rule to the -full measure, hence it cannot be used to fill the remainder -of a partial line with a rule in this way: -

-

-	Signature__________________________________________
-
- -If you wish to accomplish this effect, you have to use -\*[RULE] in conjunction with the -PAD -macro and -string tabs. -(See the -example -provided with PAD.) - -

-Please also note that the inline escapes -\*[UP] -and -\*[DOWN] -cannot be used in conjunction with \*[RULE]. This -doesn't work: -

-

-	\*[DOWN 2p]\*[RULE]\*[UP 2p]
-
- -This does: -

-

-	.ALD 2p
-	\*[RULE]
-	.RLD 2p
-
- -See groff's -Horizontal line drawing function -for more information on drawing horizontal rules. -

-


- - - -

Groff inline escapes

- -

Font control with \f

- -

-Groff's basic mechanism for inline font control is the escape -\f[<font>]. -

- - - - - - - - - - - - - - - - - - - - - -
\f[R]Change font to medium roman (equivalent to mom's \*[ROM])
\f[I]Change font to medium italic (equivalent to mom's \*[IT])
\f[B]Change font to bold roman (equivalent to mom's \*[BD])
\f[BI]Change font to bold italic (equivalent to mom's \*[BDI])
\f[P]Revert to previous font (equivalent to mom's \*[PREV])
-

-\f[<font>] can be used with -any legal font style registered with groff. (See -here -for a list of pre-registered font styles provided by -mom). -

-\f[<font>] can also take a -complete legal family+font name combo. This is especially useful -should you need to change both family and font inline. For example, -if your prevailing family and font are Times Roman and you want a -few words in Courier Bold Italic, you could do this: -

-

-	.FAM T
-	.FT  R
-	The command \f[CBI]ls -l\f[P] gives a "long" directory listing.
-
- -The Unix command "ls -l" will appear in Courier Bold Italic -in a line that is otherwise in Times Roman. -

- - - -


-

Inline horizontal motions with \h

- -

-Whenever you need to move forward or backward on a line, use the inline -\h'<distance>'. In order to avoid unpleasant surprises, -always append a -unit of measure -to "distance". -

-

-	\h'1.25i'
-
- -moves you 1.25 inches to the right (forwards) of the horizontal -position on the current -output line. -\h'<distance>' is exactly equivalent to -\*[FWD n<unit>]. -

-

-	\h'-1.25i'
-
- -moves you 1.25 inches to the left (backwards). -\h'-<distance>' is exactly equivalent to -\*[BCK n<unit>]. -

- - - -


-

Inline vertical motions with \v

- -

-If you need to raise or lower type on a line (say, for sub- or -superscripts, or any other special effect), use -\v'<distance>'. In order to avoid unpleasant -surprises, always append a -unit of measure -to "distance". -

-

-	\v'.6m'
-
- -moves you (approx.) 2/3 of an -em -downward on the current -output line. -\v'<distance>' is exactly equivalent to -\*[DOWN n<unit>]. -

-

-	\v'-.6m'
-
- -moves you (approx.) 2/3 of an em upward. -\v'<-distance>' is exactly equivalent to \*[UP n<unit>]. -

-IMPORTANT: The vertical motion of \v -affects ONLY type on the current -output line. -When groff breaks the output line, the effect of -\v is cancelled; the baseline of the next output line -is where it would be if you hadn't used \v. -

-TIP: When using \v for -occasional effects on a line, don't forget to reverse it when -you've done what you want to do. Otherwise, the remaining type -will be set too high (if you used \v with the -minus sign) or too low (if you used \v without -the minus sign). -

- - - -


-

String width function \w

- -

-In the context of mom, the string width inline -\w'string' primarily serves to let you -establish the horizontal measure of something (e.g. indents) based -on the length of a bit of text. For example, if you want a left -indent the length of the word "Examples:" plus a -space, you can set it with the \w inline escape: -

-

-	.IL "\w'Examples: '"
-
- -NOTE: Whenever you pass \w'string' -to a macro that normally requires a -unit of measure, -do NOT add a unit of measure to the \w'string' -argument. -

-Furthermore, if the string is composed of several words separated -by spaces, you MUST surround the whole escape with double quotes, -as in the example above. -

- - - -


-

Horizontal line drawing function \l

- -

-The \l'distance' inline allows you to draw a -horizontal rule of the specified distance. You must supply a -unit of measure. -Therefore, to set a 3-pica rule into a line of text, you'd do -

-

-	A line of text with a superfluous \l'3P' 3-pica rule in it.
-
- -\l'3P' above not only draws the rule, but -advances 3 picas horizontally as well, just as you'd expect. -

-For an easy way of drawing rules to the full measure of the current -line or tab length, see -Full measure rules. -

-The weight (thickness) of rules varies according to the point size -in effect when you invoke \l, but you can't fix -the weight with any real precision. A point size of 12 produces -a tastefully moderate rule weight of between one-half and one -point (depending on your printer), and is the point size used by -mom for all macros and routines that create rules. -

-NOTE: There are, in addition to \l, -a number of other line-drawing escapes, but frankly, using them for -typographically precise drawing is a bit like hammering in a nail -with a screwdriver -- doable, but not recommended. -

-Groff comes with a number of "preprocessors" designed -to ease creating rules, boxes, splines, and so on (tbl, pic, -and friends), but I tend not to use them. A firm believer -in the "right tool for the job," I prefer a vector -drawing program when I need to combine type with graphic elements -(say, a complex ruled form). Inserting the results into a -document is easy enough with .PSPIC (consult -the groff_tmac man page for information on this -indispensable and easy-to-use macro). -

- - - -


-

Special characters and symbols

- -

-Here follows a short list of commonly-used special characters available -via inline escapes. If you're not sure of the meaning of some of -these characters, consult the -Definitions of Terms. -

-For a complete list of special characters and glyphs (i.e. just -about anything you'd ever want to appear on the printed page, -including mathematical symbols, accented characters, unusual -ligatures and letters unique to various European languages), consult -man groff_char. -

-

-    CHARACTER                   ESCAPE SEQUENCE
-    ---------                   ---------------
-
-    Comment line                \#
-    Fixed-width space           \<space>  i.e. backslash followed by a space
-    Unbreakable space           \~
-    Digit-width (figure) space  \0
-    Zero-width character        \&
-    Discretionary hyphen        \%
-    Backslash                   \\ or \e
-    Plus/minus (arithmetic)     \(+-
-    Subtract (arithmetic)       \(mi
-    Multiply (arithmetic)       \(mu
-    Divide (arithmetic)         \(di
-    Em-dash                     \(em
-    En-dash                     \(en
-    Left double-quote           \(lq
-    Right double-quote          \(rq
-    Bullet                      \(bu
-    Ballot box                  \(sq
-    One-quarter                 \(14
-    One-half                    \(12
-    Three-quarters              \(34
-    Degree sign                 \(de
-    Dagger                      \(dg
-    Foot mark                   \(fm
-    Cent sign                   \(ct
-    Registered trademark        \(rg
-    Copyright                   \(co
-    Section symbol              \(se
-
- -
-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/intro.html b/contrib/groff/contrib/mom/momdoc/intro.html deleted file mode 100644 index 4c6e3ebef747..000000000000 --- a/contrib/groff/contrib/mom/momdoc/intro.html +++ /dev/null @@ -1,405 +0,0 @@ - - - - -What is mom? - - - - - -Next   -Back to Table of Contents - - - -

WHAT IS MOM?

-
- -Who is mom meant for? -
-Typesetting with mom -
-Document processing with mom -
-Mom's philosophy -
-A note on mom's documentation -
-Canonical reference materials -
-How to read macro arguments - -

Who is mom meant for?

- -Mom ("my own macros", "my other -macros", "maximum overdrive macros"...) is a macro set for -groff, designed to format documents for PostScript output. -She's aimed at three kinds of users: -
-
    -
  1. typesetters who suspect groff might be "the right - tool for the job" but who are - frustrated/intimidated by groff's terse, geeky, - not-always-typographically-intuitive - primitives; -
    -
  2. non-scientific writers (novelists, short story writers, - journalists, students) who just want their work to - look good; -
    -
  3. newbies to computer typesetting, document processing, or - groff who need a well-documented macro set to help them get - started. -
-

-As might be inferred from the above, mom is two macro -packages in one: a set of typesetting macros, and a set of document -processing macros. The typesetting macros govern the physical -aspects of page layout and provide sane, comprehensible control over -typographic refinements. The document processing macros let you focus -on a document's content and logical structure without worrying about -typesetting or page layout at all. -

-Because mom provides both typesetting and document -processing macros, it's safe to say she blurs the distinction between -document processing and document design. While her basic document style -comes with pretty spiffy defaults (okay--change "spiffy" -to "typographically professional"), you can easily control -how all the various document elements look: titles, page headers and -footers, page numbering, heads, subheads, footnotes and so on can be -made to come out exactly the way you want. And should you need precise -typographic control over elements in a document that fall outside the -range of mom's document element tags, you don't have to -read up on groff -primitives -in order to accomplish what you want; the typesetting macros take -care of that. -

- - -

Typesetting with mom

- - -Mom's typesetting macros control the basic parameters -of type: margins, line length, type family, font, point size, -linespacing, and so on. In addition, they allow you to move around -on the page horizontally and vertically, and to set up tabs, indents, -and columns. Finally, they let you adjust such typographic details as -justification style, letter spacing, word spacing, hyphenation, and -kerning. - -

-In terms of typographic control, these macros resemble the -commands used on dedicated typesetting computers like Compugraphics and -Linotronics. Most of them simply give access to groff's typesetting -primitives in a way that's consistent and easy to use. A few of -them (tabs and indents, for example) handle fundamental typesetting -requirements in ways radically different from groff primitives. - -

-With mom's typesetting macros, you can, if you wish, -create individual output pages that you design from the ground up. -Provided you have not signalled to mom that you -want document processing (via the -START -macro; see below), every macro is a literal command that remains in -effect until you modify it or turn it off. This means that if you -want to create flyers, surveys, tabulated forms, curricula vitae and -so on, you may do so in the good old-fashioned way: one step at a -time with complete control over every element on the page. -

-Years of reading various mailing lists dealing with computer -typesetting (groff, TeX, and friends) have convinced me that no program -can ever replace the human eye and human input when it comes to high -quality typesetting. As of this writing, a thread on the subject of -"micro typography" in groff has been going on for nearly a -month. The reason for the lengthy thread is obvious; words and -punctuation on the printed page are too variable, too fluid, to be -rendered flawlessly by any algorithm, no matter how clever. (For -whatever it's worth, a similar problem exists with engraving musical -scores by computer.) -

-Mom does not try to solve the problems posed -by things like hanging punctuation, left-margin adjustments for -upper case letters like T and W, and so on. She merely tries to -provide tools that allow knowledgeable typesetters to come up with -solutions to these problems in ways that are easier and more -intuitive than manipulating groff at the -primitive -level. As a professional typesetter of more than two decades, and a -writer, I have encountered few situations that cannot be handled by -mom's typesetting macros. -

-Author's note: One area where groff itself needs -serious rethinking is in the matter of an algorithm that takes into -account both word and letter spacing when -justifying -lines. At present, only word spacing is adjusted, requiring what I -consider an unnecessary amount of user intervention whenever -letter spacing is required. -

- -

Document processing with mom

- - -Mom's document processing macros let you format -documents without having to worry about the typographic details. -In this respect, mom is similar to other groff macro -packages, as well as to html and LaTeX. Where mom -differs is in the degree of control you have over the look and -placement of the various elements of a document. For example, if you -don't want your heads underlined, or you want them bigger/smaller, -or you'd prefer them to be in a different font, or you'd rather they -were flush left instead of centred, you can make the changes easily -and have them apply to the whole document. Temporary and one-off -changes are easy, too. -

-Mom has some nifty features other macro sets -don't provide. For example, you can switch between draft-style and -final-copy output. If you regularly make submissions to publishers -and editors who insist on "typewritten, double-spaced," there's a -special macro-- -PRINTSTYLE TYPEWRITE ---that changes typeset documents into ones that would make your -high-school typing teacher proud. Footnotes, endnotes, tables of -contents, multiple columns, nested lists, recto/verso printing and -user designable headers and footers are also part of the fun. -

- -

Mom's philosophy

- - -Formatting documents should be easy, from soup to nuts. Writers need -to focus on what they're writing, not on how it looks. From the -moment you fire up an editor to the moment you add "FINIS" -to your opus, nothing should interfere with the flow of your words. -The commands needed to format your work should be easy to remember, -comprehensible, and stand out well from the text. There shouldn't -be too much clutter. Your documents should be as readable inside a -text editor as they are on the printed page. -

-Unfortunately, in computerland, "easy," -"comprehensible," and "readable" often mean -"you're stuck with what you get." No document formatting -system can give you exactly what you want all the time, every time. -Documents, it seems, always need to be tweaked, either to satisfy a -typographic whim or to clarify some aspect of their content. -

-Groff has traditionally solved the problem of formatting vs. tweaking -by requiring users of the common macro packages (mm, ms, me and their -offspring) to resort to groff -primitives -and -inline escapes -for their special typesetting needs. Not to put too fine a point on -it, groff primitives tend toward the abstruse, and most inline escapes -are about as readable in-line as an encrypted password. This does -not make for happy-camper writers, who either find themselves stuck -with a document formatting style they don't really like, or are -forced to learn groff from the ground up--a daunting task, to say -the least. -

-Mom aims to make creating documents a simple matter, -but with no corresponding loss of user control. The document -processing macros provide an excellent set of defaults, but if -something is not to your liking, you can change it. And in combination -with the typesetting macros, you have all the tools you need to -massage passages and tweak pages until they look utterly professional. -

-One rarely hears the word "user interface" in conjunction -with document processing. Since the user formatting takes place -inside a text editor, little thought is given to the look and feel -of the formatting commands. Mom attempts to rectify -this by providing users with a consistent, readable "coding" -style. Most of the macros (especially in the document processing set) -have humanly-readable names. Not only does this speed up learning -the macros, it makes the sense of what's going on in a document, -typographically and structurally, easier to decipher. -

-Mom does not try to be all things to all people. -In contrast to the normal groff philosophy, she does not try to -produce output that looks good no matter where it's displayed. -She's designed for printed output, although with -PRINTSTYLE TYPEWRITE -she produces acceptable terminal copy. She makes no attempt to be -compatible with older versions of troff. -

-One special feature in mom's design is the attention -she pays to aligning the bottom margins of every page. Nothing screams -"shoddy" in typeset documents louder than bottom margins -that wander, or, in typesetter jargon, "hang." There are, -of course, situations where whitespace at the bottom of a page may -be desirable (for example, you wouldn't want a head to appear at the -bottom of the page without some text underneath it), but in all cases -where hanging bottom margins can be avoided, mom does -avoid them, by clever adjustments to leading ("line spacing") -and the spacing between different elements on the page. -

- -

A note on mom's documentation

- - -Writing documentation is tough, no doubt about it. One is never -quite sure of the user's level of expertise. Is s/he new to the -application, new to its underlying protocols and programs, new to -the operating system, new to computers? At some point, one has to -decide who the documentation is for. Making the wrong decision can -mean the difference between a program that gets used and a program -that gets tossed. -

-Mom's documentation assumes users know their way -around GNU/Linux. It further assumes they at least know what groff -is, even if they don't know much about it. Lastly, it assumes that -everyone--groff newbies and experts alike--learns faster from -a few well-placed examples than from manpage-style reference docs. -What mom's documentation doesn't assume is that -you know everything--not about groff, not about typesetting, -not about document processing. Even experts have odd lacunae in -their knowledge base. Therefore, whenever I suspect that a term -or procedure will cause head scratching, I offer an explanation. -And when explanations aren't enough, I offer examples. -
- -

Canonical reference materials

-

-The canonical reference materials for groff are -cstr54 (a downloadable PostScript copy of which is -available -here) -and the troff and groff_diff -manpages. Another excellent source of information (maybe the best) -is the groff info pages, available by typing -

-

-	info groff
-
- -at the command line (assuming you have info -installed on your system). And for inputting special characters, -see man groff_char. -

-I've tried to avoid reiterating the information contained in these -documents; however, in a few places, this has proved impossible. -But be forewarned: I have no qualms about sidestepping excruciating -completeness concerning groff usage; I'm more interested in getting -mom users up and running. Mea culpa. -

-Note: Mom's macro file -(om.tmac) is heavily commented. Each macro is preceded by a -description of its arguments, function and usage, which may -give you information in addition to what's contained in this -documentation. -

- -

How to read macro arguments

- - -The concise descriptions of macros in this documentation typically -look like this: -
-Macro: NAME arguments -
-arguments lists the macro's arguments using conventions that -should be familiar to anyone who has ever read a manpage. Briefly: -

-

    -
  1. Macro arguments are separated from each other by spaces. -
  2. If an argument is surrounded by chevrons - ( < > ), it's a description of the argument, - not the argument itself. -
  3. If an argument begins with or is surrounded by double-quotes, the - double quotes MUST be included in the argument. -
  4. If the user has a choice between several arguments, each of the - choices is separated by the pipe character ( | ), - which means "or." -
  5. Arguments that are optional are surrounded by square brackets. -
  6. <off> in an argument list means that any argument - other than those in the argument list turns the macro off. -
- -

Toggle macros

-

-Some macros don't require an argument. They simply start something. -When you need to turn them off, the same macro with any -argument will do the trick. That's right: ANY argument. This permits -choosing whatever works for you: OFF, END, QUIT, DONE, Q, X... Hell, -it could even be I_LOVE_MOM. -

-Since these macros toggle things on and off, the argument list -simply reads -

-toggle -
-
-
- -

Example 1: an argument requiring double-quotes

-
-Macro: TITLE "<title of document>" -
-

-The required argument to TITLE is the title of your -document. Since it's surrounded by double-quotes, you must -include them in the argument, like this: -

-

-	.TITLE "My Pulitzer Novel"
-
- -

Example 2: a macro with required and optional arguments

-
-Macro: TAB_SET <tab #> <indent> <length> [ L | R | C | J [ QUAD ] ] -
-

-The first required argument is a number that identifies the tab (say, -"3"). The second required argument is an indent from the left margin -(say, 6 picas). The third required argument is the length of the tab -(say, 3 picas). Therefore, at a minimum, when using this macro, -you would enter: -

-

-	.TAB_SET 3 6P 3P
-
- -The remaining two arguments are optional. The first is a single -letter, either L, R, C or J. The second, which is itself optional -after L, R, C or J, is the word QUAD. Therefore, depending on -what additional information you wish to pass to the macro, -you could enter: -

-

-	.TAB_SET 3 6P 3P L
-		or
-	.TAB_SET 3 6P 3P L QUAD
-
- - -

Example 3: a sample toggle macro:

-
-Macro: QUOTE toggle -
-

-QUOTE begins a section of quoted text in a document -and doesn't require an argument. When the quote's finished, -you have to tell mom it's done. -

-

-	.QUOTE
-	So runs my dream, but what am I?
-	An infant crying in the night
-	An infant crying for the light
-	And with no language but a cry.
-	.QUOTE OFF
-
- -Alternatively, you could have turned the quote off with END, or -X, or something else. - -

-


-Next   -Top   -Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/letters.html b/contrib/groff/contrib/mom/momdoc/letters.html deleted file mode 100644 index ad35a7118950..000000000000 --- a/contrib/groff/contrib/mom/momdoc/letters.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - -Mom -- Document Processing, Writing Letters - - - - - -Next   -Prev   -Back to Table of Contents -

- - - -

WRITING LETTERS WITH MOM

- - - -

Introduction

-
- -Mom's simple but effective letter-writing -macros are a subset of the -document processing macros, -designed to ease the creation of correspondence. -

-Because the letter macros are a subset of the document -processing macros, you can use -control macros -to design correspondence to your own specifications. However, -mom makes no pretence of providing complete design -flexibility in the matter of letters, which are, after all, simple -communicative documents whose only real style requirements are that -they be neat and professional-looking. -

-

Tutorial on writing letters

-

-Mom letters begin, like all -mom-processed documents, with a -reference macro -(in this case, -AUTHOR), -a -DOCTYPE -(LETTER, obviously), the essential -PRINTSTYLE -macro, and -START, -like this: -

-

-	.AUTHOR    "Yannick P. Guique"
-	.DOCTYPE    LETTER
-	.PRINTSTYLE TYPESET
-	.START
-
- -PRINTSTYLE, above, could also be -TYPEWRITE. Mom has no objection -to creating letters that look like they were typed on an Underwood -by a shapely secretary with 1940s gams. -

-After the START macro, you enter headers pertinent to -your letter: the date, the addressee (in business correspondence, -typically both name and address), the addresser (that's you; in -business correspondence, typically both name and address), and a -greeting (in full, e.g. "Dear Mr. Smith," or "Dear -Mr. Smith:"). -

-The macros for entering the headers are simple (they're not even -toggles): -

-

-	.DATE
-	.TO
-	.FROM
-	.GREETING
-
- -You may enter them in any order you like, except for -GREETING, which must come last. -Mom ignores any headers you omit and spaces the -letter's opening according to what you do include. See -Default for letters -to find out how mom formats the headers. -

-(In pre 1.1.7-a releases of mom, the order -of entry was fixed at the above. This has been changed, although -if you do follow the above order, mom will -continue to behave exactly as she did in pre 1.1.7-a.) -

-Once you've filled in what you need to get a letter started, simply -type the letter, introducing each and every paragraph, including -the first, with the -PP -macro. -

-At the end of the letter, should you wish an indented closing -("Yours truly," "Sincerely," "Hugs and -kisses"), invoke the macro CLOSING on a -line by itself and follow it with the text of the closing. -N.B. Don't put your name here; mom -supplies it automatically from AUTHOR with -enough space to leave room for your signature. - -

-Assuming our tutorial letter is for business correspondence, -here's what the complete letter looks like. -

-

-	.AUTHOR    "Yannick P. Guique"
-	.DOCTYPE    LETTER
-	.PRINTSTYLE TYPESET
-	.START
-	.DATE
-	August 25, 2004
-	.TO
-	GUILLAUME BARRIÈRES
-	Minidoux Corporation
-	5000 Pannes Drive
-	Redmond, Virginia
-	.FROM
-	Y.P. GUIQUE
-	022 Umask Road
-	St-Sauveur-en-dehors-de-la-mappe, Québec
-	.GREETING
-	Dear Mr. Barrières,
-	.PP
-	It has come to my attention that you have been lobbying the
-	US government to prohibit the use of open source software by
-	endeavouring to outlaw so-called "warranty free"
-	applications.
-	.PP
-	I feel it is my duty to inform you that the success of your
-	operating system with its embedded web browser relies heavily
-	on open source programs and protocols, most notably TCP/IP.
-	.PP
-	Therefore, in the interests of your corporation's fiscal health,
-	I strongly advise that you withdraw support for any US
-	legislation that would cripple or render illegal open source
-	development.
-	.CLOSING
-	Sincerely,
-
- -This produces a letter with headers that follow the North American -standard for business correspondence. If you'd prefer another -style of correspondence, for example, British, you'd set up the -same letter like this: -

-

-	.AUTHOR    "Yannick P. Guique"
-	.DOCTYPE    LETTER
-	.PRINTSTYLE TYPESET
-	.START
-	.FROM
-	.RIGHT
-	Y.P. GUIQUE
-	022 Umask Road
-	St-Sauveur-en-dehors-de-la-mappe, Québec
-	.TO
-	GUILLAUME BARRIÈRES
-	Minidoux Corporation
-	5000 Pannes Drive
-	Redmond, Virginia
-	.DATE
-	.RIGHT
-	August 25, 2004
-	.GREETING
-	Dear Mr. Barrières,
-
- -Notice the use of .RIGHT after -.FROM and .DATE in this example, -used to change the default quad for these macros. -

-


- - -

Defaults for letters

-
- -In letters, if the order of header macros is -

-

-	.DATE
-	.TO
-	.FROM
-	.GREETING
-
- -mom sets -
-
    -
  1. the date flush right, page right, at the top of page one, -with a gap of two linespaces underneath -
  2. the addressee in a block flush left, page left, with a gap of -one linespace underneath -
  3. the addresser in a block flush left, page left, with a gap of -one linespace underneath -
  4. the greeting flush left, with a gap of one linespace -underneath -
-

-which is the standard for North American business correspondence. -

-If you switch the order of .DATE, -.TO and/or .FROM, -mom sets all the headers flush left, with a gap of -one linespace underneath each. (The default left quad of any header -can be changed by invoking the .RIGHT macro, on -a line by itself, immediately before inputting the text of the -header.) -

-Following the headers, mom sets -

-

    -
  • the body of the letter justified -
  • in multi-page letters: -
      -
    • a footer indicating there's a next page (of the form .../#) -
    • the page number at the top of every page after page one -
    -
  • the closing/signature line flush left, indented halfway across the page -
-

-Other important style defaults are listed below, and may be changed -via the -typesetting macros -or the document processing -control macros -prior to -START. Assume that any -style parameter not listed below is the same as for -PRINTSTYLE TYPESET -or -PRINTSTYLE TYPEWRITE. -

-

-PARAMETER             PRINTSTYLE TYPESET   PRINTSTYLE TYPEWRITE
----------             ------------------   --------------------
-
-Paper size            8.5 x 11 inches      8.5 x 11 inches
-Left/right margins    1.25 inches          1.25 inches
-Header margin         3.5 picas            3.5 picas
- (for page numbers)
-Header gap            3 picas              3 picas
- (for page numbers)
-Family                Times Roman          Courier
-Font                  roman                roman
-Point size            12                   12
-Line space            13.5                 12 (i.e. singlespaced)
-Paragraph indent      3 ems                3 picas
-Spaced paragraphs     yes                  no
-Footers*              yes                  yes
-Footer margin         3 picas              3 picas
-Footer gap            3 picas              3 picas
-Page numbers          top, centred        top, centred
-
-*Footers contain a "next page" number of the form .../#
-
-
- - -

The letter macros

-
- -All letter macros must come after -START, -except NO_SUITE. -

-

-
- - - -
-

- -Macro: DATE - -

-Invoke DATE on a line by itself, with the date -underneath, like this: -

-

-	.DATE
-	October 31, 2002
-
- -If you wish to change the default quad direction for the date, -enter .LEFT or .RIGHT, on a line by itself, -immediately after .DATE. -

-If you wish to insert additional space between the date and any -letter header that comes after it, do so after inputting the date, -not at the top of the next header macro, like this: -

-

-	.DATE
-	October 31, 2002
-	.SPACE     \" Or, more simply, .SP
-
- -If you wish to remove the default space, -

-

-	.SPACE -1v \" Or, more simply, .SP -1v
-
- -will do the trick. -

- - - -


-

- -Macro: TO - -

-Invoke TO on a line by itself, with the name -and address of the addressee underneath, like this: -

-

-	.TO
-	JOHN SMITH
-	10 Roberts Crescent
-	Bramladesh, Ont.
-
- -If you wish to change the default quad direction for the address, -enter .LEFT or .RIGHT, on a line by itself, -immediately after .TO. -

-If you wish to insert additional space between the address and -any letter header that comes after it, do so after inputting the -address, not at the top of the next header macro, like this: -

-

-	.TO
-	JOHN SMITH
-	10 Roberts Crescent
-	Bramladesh, Ont.
-	.SPACE     \" Or, more simply, .SP
-
- -If you wish to remove the default space, -

-

-	.SPACE -1v \" Or, more simply, .SP -1v
-
- -will do the trick. -

- - - -


-

- -Macro: FROM - -

-Invoke FROM on a line by itself, with the name -and address of the addresser underneath, like this: -

-

-	.FROM
-	JOE BLOW
-	15 Brunette Road
-	Ste-Vieille-Andouille, Québec
-
- -If you wish to change the default quad direction for the address, -enter .LEFT or .RIGHT, on a line by itself, -immediately after .FROM. -

-If you wish to insert additional space between the address and -any letter header that comes after it, do so after inputting the -address, not at the top of the next header macro, like this: -

-

-	.FROM
-	JOE BLOW
-	15 Brunette Road
-	Ste-Vieille-Andouille, Québec
-	.SPACE     \" Or, more simply, .SP
-
- -If you wish to remove the default space, -

-

-	.SPACE -1v \" Or, more simply, .SP -1v
-
- -will do the trick. -

- - - -


-

- -Macro: GREETING - -

-Invoke GREETING on a line by itself, with the -full salutation you want for the letter, like this: -

-

-	.GREETING
-	Dear Mr. Smith,
-
- - - -
-

- -Macro: CLOSING - -

-Invoke CLOSING on a line by itself after the -body of the letter, with the closing you'd like (e.g. "Yours -truly,"), like this: -

-

-	.CLOSING
-	Yours truly,
-
- - - -
-

- -Macro: NO_SUITE - -

-If you don't want mom to print a "next -page" number at the bottom of multi-page letters, invoke -.NO_SUITE, on a line by itself, prior to -START. - -

-


-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/macrolist.html b/contrib/groff/contrib/mom/momdoc/macrolist.html deleted file mode 100644 index 01125f72e08d..000000000000 --- a/contrib/groff/contrib/mom/momdoc/macrolist.html +++ /dev/null @@ -1,1794 +0,0 @@ - - - - -Mom -- Quick reference guide - - - - - -Next   -Prev   -Back to Table of Contents - - -

- Quick reference guide -

- -Once you know your way around mom, you may find -this guide preferable to using the Table of Contents. It lists (I -hope) all mom's user-space macros. The links -point to references found elsewhere in the documentation. -

-NOTE: This guide uses tables extensively. Better -make sure you're reading it in a browser that renders them -sensibly. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypesettingDocument processing
Page/paper size; margins; line lengthReference macros
Family/font; pointsize; leadingLetters
Font modificationsDocument style
Underscoring and underliningSpecial to PRINTSTYLE TYPEWRITE
ColourBegin document processing
Quad, justification and fillCustomizing the document header
Line terminationPagination
HyphenationRecto/verso
Word and sentence spacingAutomatic columns
Kerning; ligaturesEpigraphs
Vertical movementsHeads
Horizontal movementsSubheads
IndentsParagraph heads
TabsParagraphs
Manual columnsQuotes
SuperscriptsBlockquotes
DropcapsAuthor linebreaks
ListsFootnotes
Padding linesEndnotes
MiscellaneousDesigning endnotes pages
 Lists
 Margin notes
 Line numbering
 References
 Bibliographies
 Table of contents
 Designing a table of contents
 Finis
 Headers and footers
 Part-by-part control -
of headers
 Footers
 Covers and doc covers
 Customizing covers -
and doc covers
 Part-by-part control of -
covers and doc covers
 Miscellaneous
- -
-


-

Typesetting macros

- -

Page/paper size; margins; line length

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Page/paper sizeMarginsLine length
PAGEWIDTHT_MARGINLL
PAGELENGTHB_MARGIN 
PAPERL_MARGIN 
PAGER_MARGIN 
- -

Family/font; pointsize; leading

- - - - - - - - - - - - - - - - - - - - - - -
Family/fontPoint sizeLeading
FAMILYPT_SIZELS
FT\*[SIZE n]AUTOLEAD
FALLBACK_FONT  
- -

Font modifications (pseudo-italic, -bold, -condensed, -extended)

- - - - - - - - - - - - - - - - - - - - - - - - - - -
ItalicizeEmboldenCondenseExtend
SETSLANTSETBOLDERCONDENSEEXTEND
\*[SLANT]\*[BOLDER]\*[COND]\*[EXT]
\*[SLANTX]\*[BOLDERX]\*[CONDX]\*[EXTX]
- -

Underscoring and underlining

- - - - - - - - - - - - - - -
UnderscoreUnderline
UNDERSCOREUNDERLINE
UNDERSCORE_2\*[UL]...\*[ULX]
- -

Colour

- - - - - - - - - - - - - -
Define coloursInvoke colours
NEWCOLORCOLOR
XCOLOR\*[<colorname>]
- -

Quad, justification and fill

- - - - - - - - - - - - - - - - - - -
Fill modesNo-fill modes
JUSTIFYLEFT
QUADCENTER
 RIGHT
- -

Line termination

- - - - - - - - - - - - - - -
BreakBreak (no space)Break (extra space)Break (force justify)
BRELSPACESPREAD
- -

Hyphenation

- - - - - - - - - - -
EnableSet parameters
HYHY_SET
- -

Word and sentence spacing

- - - - - - - - - - -
Word spaceSentence space
WSSS
- -

Character pair and full line kerning; ligatures

- - - - - - - - - - - - - - - - - - - - -
Kern character pairsKern full linesLigatures
KERNRWLIGATURES
\*[BU n] - EW 
\*[FU n] - BR_AT_LINE_KERN 
- -

Vertical movements

- - - - - - - - - - - - - - -
DownUp
ALDRLD
\*[DOWN n]\*[UP n]
- -

Horizontal movements

- - - - - - - - - - -
ForwardBack
\*[FWD n]\*[BCK n]
- -

Indents

- - - - - - - - - - - - - - - - - - - - - - - - - - -
LeftRightBothQuitTempHanging
ILIRIBIQTIHI
ILXIRXIBX   
- -

Tabs

- - - - - - - - - - - - - - - - - - - - - - -
SetupInvokingQuitting
TAB_SETTABTQ
\*[STn]...\*[STnX]TN 
ST  
- -

Manual columns

- - - - - - - - - - - - -
InitializingReturning to topExiting
MCOMCRMCX
- -

Superscripts

- - - - - - - - - - - - -
SuperscriptCondensed superscriptExtended superscript
\*[SUP]...\*[SUPX]\*[CONDSUP]...\*[CONDSUPX]\*[EXTSUP]...\*[EXTSUPX]
- -

Dropcaps

- - - - - - - - - - - - - - - - - - - - - - - - - - -
InvokingDropcap control
DROPCAPDROPCAP_FAMILY
 DROPCAP_FONT
 DROPCAP_COLOR
 DROPCAP_ADJUST
 DROPCAP_GUTTER
- -

Lists

- - - - - - - - - - - - - - - - - - - - - - -
InitializingSetting itemsList control
LISTITEMSHIFT_LIST
  RESET_LIST
  PAD_LIST_DIGITS
- -

Padding lines

- - - - - - - - - - -
Pad a lineChange the pad marker
PADPAD_MARKER
- -

Miscellaneous

- - - - - - - - - - - - - - - - - - - - - - - - - - -
NewpageAll capsSmartquotesRules/leaders
NEWPAGECAPSSMARTQUOTES\*[RULE]
   \*[LEADER]
   LEADER_CHARACTER
-
- - - - - - - - - - - - - - - - - -
Change the escape characterSuppress inputDisable traps
ESC_CHARCOMMENTTRAP
 SILENT 
- -
-
- -

Document processing

- -

Reference macros

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
TitlesAuthorsDraft copies
TITLEAUTHORDRAFT
SUBTITLE REVISION
DOCTITLE DRAFT_STRING
CHAPTER REVISION_STRING
- -

Letters

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeadersClosingControl
DATECLOSINGNO_SUITE
FROM  
TO  
GREETING  
- -

Document style

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Basic styleStyle control*
COPYSTYLEDOC_LEFT_MARGIN
DOCTYPEDOC_RIGHT_MARGIN
PRINTSTYLE**DOC_LINE_LENGTH
 DOC_FAMILY
 DOC_PT_SIZE
 DOC_LEAD
 DOC_LEAD_ADJUST
 DOC_QUAD
-

-*See the note -Changing document-wide style parameters after START -
-**Absolutely required if you wish to use the document processing macros. - -

Special to PRINTSTYLE TYPEWRITE

- - - - - - - - - - - - - - - - - - - - - - -
Italic/underliningQuotes
UNDERLINE_ITALICUNDERLINE_QUOTES
ITALIC_MEANS_ITALIC 
UNDERLINE_SLANT 
SLANT_MEANS_SLANT 
- -

Begin document processing

- - - - - - - -
Absolutely required in order to initialize document processing
START
- -

Customizing the document header

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GlobalTitleSubtitleChapter
DOCHEADERTITLE_FAMILYSUBTITLE_FAMILYCHAPTER_STRING
DOCHEADER_ADVANCETITLE_FONTSUBTITLE_FONTCHAPTER_TITLE_FAMILY
DOCHEADER_FAMILYTITLE_SIZESUBTITLE_SIZECHAPTER_TITLE_FONT
DOCHEADER_COLORTITLE_COLORSUBTITLE_COLORCHAPTER_TITLE_SIZE
   CHAPTER_TITLE_COLOR
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributionAuthorDocument type
ATTRIBUTE_STRINGAUTHOR_FAMILYDOCTYPE_FAMILY
ATTRIBUTE_COLORAUTHOR_FONTDOCTYPE_FONT
 AUTHOR_SIZEDOCTYPE_SIZE
 AUTHOR_COLORDOCTYPE_COLOR
- -

Pagination

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PaginateStyle control
PAGINATEPAGENUM_FAMILY
PAGENUMBERPAGENUM_FONT
PAGENUM_STYLE*PAGENUM_SIZE
PAGENUM_ON_FIRST_PAGEPAGENUM_COLOR
DRAFT_WITH_PAGENUMBERPAGENUM_POS
SUSPEND_PAGINATIONPAGENUM_HYPHENS
RESTORE_PAGINATION 
-

-*I.e. the "format" of page numbering (digits, roman numerals, letters) - -

Recto/verso

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
EnablingControlingUser-defined page headers/footers -
- for alternating pages* -
RECTO_VERSOSWITCH_HEADERSHEADER_RECTO
 SWITCH_FOOTERS*HEADER_VERSO
  FOOTER_RECTO*
  FOOTER_VERSO*
-

-*Please note that most aspects of page header and footer control -are treated identically. In the documentation, the descriptions -of macros that control header and footer behaviour usually only -mention "HEADER" or "HEADER_". Simply apply -"FOOTER" or "FOOTER_" to the appropriate -"HEADER" or "HEADER_"macros in order to enable -their behaviour for footers. - - -

Automatic columns

- - - - - - - - - - - - - - -
EnablingControling
COLUMNSCOL_NEXT
 COL_BREAK
- -

Epigraphs

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
MacroType-style controlOther
EPIGRAPHEPIGRAPH_FAMILYEPIGRAPH_AUTOLEAD
 EPIGRAPH_FONTEPIGRAPH_QUAD
 EPIGRAPH_SIZEEPIGRAPH_INDENT
 EPIGRAPH_COLOR 
- -

Heads

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MacroType-style controlOther
HEADHEAD_FAMILYHEAD_QUAD
 HEAD_FONTHEAD_CAPS
 HEAD_SIZEHEAD_UNDERLINE
 HEAD_COLORHEAD_SPACE
  NUMBER_HEADS
  RESET_HEAD_NUMBER
- -

Subheads

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
MacroType-style controlOther
SUBHEADSUBHEAD_FAMILYSUBHEAD_QUAD
 SUBHEAD_FONTNUMBER_SUBHEADS
 SUBHEAD_SIZERESET_SUBHEAD_NUMBER
  SUBHEAD_COLOR
- -

Paragraph heads

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
MacroType-style controlOther
PARAHEADPARAHEAD_FAMILYPARAHEAD_INDENT
 PARAHEAD_FONTNUMBER_PARAHEADS
 PARAHEAD_SIZERESET_PARAHEAD_NUMBER
 PARAHEAD_COLOR 
- -

Paragraphs

- - - - - - - - - - - - - - - - - - - - - - -
MacroType-style control*Other
PPPP_FONTPARA_INDENT
  INDENT_FIRST_PARAS
  PARA_SPACE
-

-*For an in-depth explanation of how to manage the type-style of -paragraphs, much of which is normally established through the use of -typesetting macros prior to -START, -see -Paragraph control macros. - -

Quotes -
-(line-for-line cited text, e.g. poetry or code snippets) -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MacroType-style controlOther
QUOTEQUOTE_FAMILYQUOTE_INDENT*
 QUOTE_FONTALWAYS_FULLSPACE_QUOTES
 QUOTE_SIZEBREAK_QUOTE
 QUOTE_AUTOLEADUNDERLINE_QUOTES
 QUOTE_COLOR 
-

-*Note that the use of QUOTE_INDENT sets the indent for both QUOTE -and BLOCKQUOTE. - -

Blockquotes -
-(formatted citations) -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MacroType-style controlOther
BLOCKQUOTEBLOCKQUOTE_FAMILYBLOCKQUOTE_INDENT
 BLOCKQUOTE_FONTBLOCKQUOTE_QUAD
 BLOCKQUOTE_SIZEBREAK_BLOCKQUOTE
 BLOCKQUOTE_AUTOLEAD 
 BLOCKQUOTE_COLOR 
-

-*Note that the use of BLOCKQUOTE_INDENT sets the indent for both BLOCKQUOTE -and QUOTE. - -

Author linebreaks -
-(also called "scene" or "section" breaks) -

- - - - - - - - - - - - -
MacroType-style controlOther
LINEBREAKLINEBREAK_COLORLINEBREAK_CHAR
- -

Footnotes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MacroType-style controlOther
FOOTNOTE*FOOTNOTE_FAMILYFOOTNOTE_AUTOLEAD
 FOOTNOTE_FONTFOOTNOTE_QUAD
 FOOTNOTE_SIZEFOOTNOTE_MARKERS
 FOOTNOTE_COLORFOOTNOTE_MARKER_STYLE
  RESET_FOOTNOTE_NUMBER
  FOOTNOTE_RULE
  FOOTNOTE_RULE_ADJ
  FOOTNOTE_RULE_LENGTH
  FOOTNOTES_RUN_ON
-

-*Indenting of footnotes is handled by arguments passed to FOOTNOTE. - -

Endnotes

- - - - - - - - - - -
Input endnotesOutput endnotes pages
ENDNOTEENDNOTES
- -

Designing endnotes pages -
-(if you want to change the defaults) -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Type-style controlEndnotes page -
title string* -
Document identification string**
ENDNOTE_FAMILYENDNOTE_STRINGENDNOTE_TITLE
ENDNOTE_FONTENDNOTE_STRING_FAMILYENDNOTE_TITLE_FAMILY
ENDNOTE_LEADENDNOTE_STRING_FONTENDNOTE_TITLE_FONT
ENDNOTE_PT_SIZEENDNOTE_STRING_SIZEENDNOTE_TITLE_SIZE
ENDNOTE_QUADENDNOTE_STRING_CAPSENDNOTE_TITLE_QUAD
 ENDNOTE_STRING_UNDERSCOREENDNOTE_TITLE_UNDERSCORE
-

-*By default, "Endnotes", at the top of the first page of -endnotes -
-**I.e. how each document in the endnotes for a collated document is -identified (by default, the strings passed to the reference -macro, .TITLE -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Endnotes numberingParagraph controlEndnotes headers/footers
ENDNOTE_NUMBER_FAMILYENDNOTE_PARA_INDENTENDNOTES_ALLOWS_HEADERS
ENDNOTE_NUMBER_FONTENDNOTE_PARA_SPACEENDNOTES_HEADER_CENTER
ENDNOTE_NUMBER_SIZE ENDNOTES_FOOTER_CENTER
ENDNOTE_NUMBERS_ALIGN_LEFT  
ENDNOTE_NUMBERS_ALIGN_RIGHT  
-
- - - - - - - - - - - - - - - - - - -
Endnotes page numberingMisc
ENDNOTES_FIRST_PAGENUMBERENDNOTES_NO_COLUMNS
ENDNOTES_PAGENUM_STYLE*SINGLESPACE_ENDNOTES**
ENDNOTES_NO_FIRST_PAGENUM 
-

-*I.e. the format of page numbering (digits, roman, letters) -
-**Applies to PRINTSTYLE TYPEWRITE only - -

Margin notes

- - - - - - - - - - -
InitializeStart
MN_INITMN
- -

Line numbering

- - - - - - - - - - - - -
TextQuotesBlockquotes
NUMBER_LINESNUMBER_QUOTE_LINESNUMBER_BLOCKQUOTE_LINES
- -

References

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Begin/end refsFootnote refsEndnote refsEmbedded refs
REFFOOTNOTE_REFSENDNOTE_REFSREF( / REF)
   REF( / REF)
   REF[ / REF]
   REF{ / REF}
- -

Bibliographies

- - - - - - - - - - -
Start bibliography pageBibliography type
BIBLIOGRAPHYBIBLIOGRAPHY_TYPE
- -

Table of contents

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GenerateGeneral -
- type-style control -
TOC title string* -
- and style control -
TOCTOC_FAMILYTOC_HEADER_STRING
 TOC_PT_SIZETOC_HEADER_FAMILY
 TOC_LEADTOC_HEADER_FONT
  TOC_HEADER_SIZE
  TOC_HEADER_QUAD
-

-*By default, "Table of Contents" - -

Designing a table of contents -
-(if you want to change the defaults) -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Title entriesHead entriesSubhead entries
TOC_TITLE_ENTRYTOC_HEAD_FAMILYTOC_SUBHEAD_FAMILY
TOC_APPENDS_AUTHORTOC_HEAD_FONTTOC_SUBHEAD_FONT
TOC_TITLE_FAMILYTOC_HEAD_SIZETOC_SUBHEAD_SIZE
TOC_TITLE_FONTTOC_HEAD_INDENTTOC_SUBHEAD_INDENT
TOC_TITLE_SIZE  
TOC_TITLE_INDENT  
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Parahead entriesPage number entriesPaginationMisc
TOC_PARAHEAD_FAMILYTOC_PN_FAMILYPAGINATE_TOCTOC_RV_SWITCH
TOC_PARAHEAD_FONTTOC_PN_FONTTOC_PAGENUM_STYLE* 
TOC_PARAHEAD_SIZETOC_PN_SIZE  
TOC_PARAHEAD_INDENTTOC_PADDING  
-

-*I.e. the format of page numbering (digits, roman, letters) - -

Finis

- - - - - - - - - - - - - - -
MacroType style control
FINISFINIS_COLOR
FINIS_STRING 
- -

Headers and footers

-

-Mom treats all aspects of headers and footers -identically. The only difference between the two is whether the -information they contain appears at the top of the page or at the -bottom. Consequently, in the following, substitute FOOTERS -for HEADERS, and FOOTER_ for HEADER_ if you're hunting down how to -do something with footers. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MacroPlacementUser-defined headersGeneral -
- type-style control -
HEADERSHEADER_MARGINHEADER_RECTOHEADER_FAMILY
 HEADER_GAPHEADER_VERSOHEADER_SIZE
   HEADER_COLOR
   HEADER_PLAIN
- -

Part-by-part control of headers

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LeftCenterRight
HEADER_LEFTHEADER_CENTERHEADER_RIGHT
HEADER_LEFT_FAMILYHEADER_CENTER_FAMILYHEADER_RIGHT_FAMILY
HEADER_LEFT_FONTHEADER_CENTER_FONTHEADER_RIGHT_FONT
HEADER_LEFT_SIZEHEADER_CENTER_SIZEHEADER_RIGHT_SIZE
HEADER_LEFT_COLORHEADER_CENTER_COLORHEADER_RIGHT_COLOR
HEADER_LEFT_CAPSHEADER_CENTER_CAPSHEADER_RIGHT_CAPS
 HEADER_CENTER_PAD 
-
- - - - - - - - - - - - - - - - - - -
Separator ruleMisc
HEADER_RULEREVISION_STRING
HEADER_RULE_GAPDRAFT_STRING
HEADER_RULE_COLOR 
- -

Footers

-

-This is the one exception to the "HEADER also means FOOTER" -convention used throughout the documentation. - - - - - -
FOOTER_ON_FIRST_PAGE
- -

Covers and doc covers

- - - - - - - - - - - - - - -
CoversDoc covers
COVERDOC_COVER
COVERSDOC_COVERS
- - -

Customizing covers and doc covers

- - - - - - - - - - - - - - - - - - - - - - -
CoversDoc covers
COVERTITLEDOC_COVERTITLE
COVER_ADVANCEDOC_COVER_ADVANCE
COVER_FAMILYDOC_COVER_FAMILY
COVER_LEADDOC_COVER_LEAD
- -

Part-by-part control of covers and doc covers

- -

-For part-by-part control of the family, font, size and color, please -see - - - - - - - - -
Control macros--changing the defaults for covers and document covers
Index of cover and doc cover control macros
- -

Miscellaneous

- - - - - - - - - - - - -
Output a blank pageCollate multiple -
documents
Get leading back -
on track
BLANKPAGECOLLATESHIM
- -
-
- -Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/rectoverso.html b/contrib/groff/contrib/mom/momdoc/rectoverso.html deleted file mode 100644 index 064490379e61..000000000000 --- a/contrib/groff/contrib/mom/momdoc/rectoverso.html +++ /dev/null @@ -1,253 +0,0 @@ - - - - -Mom -- Document Processing, Recto/verso printing - - - - - -Next   -Prev   -Back to Table of Contents -

- - - - -

RECTO/VERSO PRINTING and COLLATING

- - - - - -

Introduction to recto/verso

-
- -Recto/verso printing allows you to set up a mom -document in such a way that it can be printed on both sides of a -printer sheet and subsequently bound. -

-With recto/verso, mom automatically takes control -of the following aspects of alternating page layout: -
-

    -
  • switching left and right margins (if they're not equal) -
  • switching the left and right parts of the default 3-part - headers - or - footers - (see the - General description of headers) -
  • switching - HEADER_RECTO - and - HEADER_VERSO - if user-defined, single string recto/verso headers - or footers are used in place of the default 3-part - headers or footers -
  • switching the page number position (if page numbers are not centred) -
-

-It is beyond the scope of this documentation to cover the different -ways in which you can make your printer print on both sides of a sheet. -A simple but effective method for those of us with "dumb" -printers is to open the document (after it's been processed into -PostScript by groff -- see -How to invoke groff with mom) -in gv (ghostview), -click the "odd pages" icon, then click "Print -Marked". After printing is complete, rearrange the sheets -appropriately, put them back in your printer, and have -gv print the "even pages". If you prefer to -work from the command line, check out the man pages for -pstops and psbook. There are other -programs out there as well to help with two-sided printing. -

- - -

Recto/verso macros list

- - - -

- -


- - - -

Recto/verso printing

-
-Macro: RECTO_VERSO - -

-If you want mom to set up alternating pages for -recto/verso printing, simply invoke RECTO_VERSO -with no argument. -

-NOTE: -
-Recto/verso always switches the left and right parts of -headers -or -footers -on odd/even pages. However, it only switches the left and right -margins if the margins aren't equal. Consequently, it is your -responsibility to set the appropriate differing left and right -margins with -L_MARGIN -and -R_MARGIN -(prior to -START) -or with -DOC_LEFT_MARGIN -and -DOC_RIGHT_MARGIN -(before or after START). -

-Equally, recto/verso only switches the page number position if page -numbers aren't centred, which means you have to set the page -number position with -PAGENUM_POS -(before or after START). -

- - - -


- -

Switch header left part/right part

-
-Macro: SWITCH_HEADERS - -

-SWITCH_HEADERS switches the location of the -header left string (by default, the author) and the header right -string (by default, the document title). If you don't like -mom's default placement of author and title, use -SWITCH_HEADERS to reverse it. -

-SWITCH_HEADERS can also be useful in conjunction -with -RECTO_VERSO. -The assumption of RECTO_VERSO is that the first -page of a document (recto/odd) represents the norm for header-left -and header-right, meaning that the second (and all subsequent even) -page(s) of the document exchange header-left and header-right. -

-If mom's behaviour in this matter is not what -you want, simply invoke SWITCH_HEADERS on the -first page of your recto/verso document to reverse her default -treatment of header parts. The remainder of your document (with -respect to headers) will come out as you want. -

-NOTE: Replace _HEADERS, above, -with _FOOTERS if your document uses footers. -

-


- - - - -

Introduction to collating

-
- -The macro COLLATE lets you join documents together. -Primarily, it's a convenience for printing long documents that -comprise several chapters, although it could be used for any -document type (except LETTER). -

-Personally, I prefer to keep chapters in separate files and print -them out as needed. However, that means keeping track of the correct -starting page number for each chapter, a problem circumvented by the -use of COLLATE. -

-When collating chapters, you need only put .COLLATE -at the end of a chapter, follow it with any -reference macros -needed for the new chapter, e.g. -CHAPTER -or -CHAPTER_STRING -(have a look at the -Special Note on CHAPTER) -make any pertinent style changes to the document (unlikely, but -possible), and re-invoke the -START -macro. Your new chapter will begin on a fresh page and behave -as expected. -

-COLLATE assumes you are collating documents/files -with similar type-style parameters hence there's no need for -PRINTSTYLE to appear after COLLATE, -although if you're collating documents that were created as separate -files, chances are the PRINTSTYLE's already there. -

- -Two words of caution: -

    -
  1. Do not collate documents of differing - PRINTSTYLES (i.e. don't try to - collate a TYPESET document and TYPEWRITE document). -
  2. Use DOC_FAMILY instead of - FAMILY if, for some reason, you want - to change the family of all the document elements after - COLLATE. FAMILY, by - itself, will change the family of paragraph text only. -
-

- - - -


- -

Collate document files

-
- -Macro: COLLATE - -

-The most basic (and most likely) collating situation looks like -this: -

-

-	.COLLATE
-	.CHAPTER 17
-	.START
-
- -A slightly more complex version of the same thing, for chapters -that require their own titles, looks like this: -

-

-	.COLLATE
-	.CHAPTER_TITLE "Geek Fatigue: Symptoms and Causes"
-	.START
-
- -NOTE: See the -two words of caution, -above. -

- -


-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/refer.html b/contrib/groff/contrib/mom/momdoc/refer.html deleted file mode 100644 index bda1e4bca48e..000000000000 --- a/contrib/groff/contrib/mom/momdoc/refer.html +++ /dev/null @@ -1,1482 +0,0 @@ - - - - -Mom -- Bibliographies and References - - - - - -Next   -Prev   -Back to Table of Contents - - -

- Bibliographies and references -

-

-Introduction to bibliographies and references -
-Tutorial -

-
-Index of bibliography and reference macros -

- - -

Introduction to bibliographies and references

- - -Mom provides the ability to automatically format -and generate bibliography pages, as well as footnote or endnote -bibliographic references, or references embedded in text. She -accomplishes this by working in conjunction with a special -groff program called "refer". -

-refer is a groff -"pre-processor", which is to say that it scans your files looking -for very specific commands (i.e. lines that begin with a period -[dot], just like macros and document element tags). If the -commands aren't there, refer can't do it's job, -and neither can mom. The scanning is done -before any actual mom processing -occurs. -

-refer is a program that's been around for a long -time. It's powerful and has many, many features. Unfortunately, -the manpage (man refer), while complete and accurate, is -dense and not a good introduction to refer. (It's -a classic manpage Catch-22: the information it contains is most -useful only after you already grasp it.) -

-In order to get mom users up and running with -refer, this section of mom's -documentation focuses exclusively, in a recipe-like manner, on -what you need to know to use refer satisfactorily -in conjunction with mom. The information and -instructions are not to be taken as -a manual or tutorial on full refer usage. Much has -been left out, on purpose. -

-It is tempting to provide two levels of documentation, one for -users familiar with refer and one for newcomers -to groff and mom, but such an -approach may muddy the waters for newcomers. Mom's -allegiance, first and foremost, is to newcomers. If you're already -a refer user, the information herein will be useful -for adapting your current refer usage to -mom's way of doing things. If you've never used -refer, the information is essential, and, in many -cases, may be all you need. -

-(For the benefit of old groff-hands: refer -support in mom is heavily based on the -refer module of the ms macros. The choice -was deliberate so that those wishing to play around with -mom's bibliography formatting style would be -tinkering with the familiar.) -

-refer requires first that you create a -bibliographic database. From the information contained in the -database, mom formats and generates bibliographies -and references in MLA (Modern Language Association) style. MLA -style is clean, contemporary and flexible, and is widely used in -the humanities, where the range of material that has to be -referenced can run from simple books to live interviews and film. -

-Once you have created your database, you instruct -refer (and mom) to access entries -in it by supplying keywords from the entries. Depending on what -you've instructed mom to do, she will put the -entries--fully and properly formatted with respect to order, punctuation -and italicization--in footnotes, endnotes, or a full bibliography. -

-I encourage anyone interested in what MLA style looks like--and, by -extension, how your bibliographies and references will look after -mom formats them--to check out -

-

-	http://www.aresearchguide.com/12biblio.html
-
- -or any other website or reference book on MLA style. -

-NOTE: MLA style requires that second and -subsequent lines of individual references be indented. Mom -takes care of this for you with a default indent, which -can be changed with the macro -INDENT_REFS. - - -

Tutorial

- -
    -
  1. Creating a refer database -
  2. Required "refer" commands -
  3. Accessing references -
  4. Telling mom where to put references -
  5. Creating bibliography pages -
  6. Invoking groff with mom and refer -
-

- -

1. Creating a refer database

-

-The first step in using refer with -mom is setting up your bibliographic database. -The database is a file containing separate entries for each -reference you want to access from your mom files. -The file is not a "mom" file; it is a separate database. -You may set up individual databases for individual documents, or -create a large database that contains all the references you'll -ever need. -

-Entries ("records") in the database file are separated from each -other by a single, blank line. The records themselves are composed -of single lines ("fields") with no blank lines between them. Each -field begins with a percent sign and a single letter (the "field -identifier") e.g. %A or %T. The letter identifies what part of a -bibliographic entry the field refers to: Author, Title, Publisher, -Date, etc. After the field identifier comes a single space, -followed by the information appropriate to field. No punctuation -should go at the ends of fields; mom adds what's -correct automatically. Do note, however, that author(s) (%A) -requires that you enter the author information exactly as you wish -it to come out (minus the period), including the comma after the -first author's last name. -

-Here's a sample database containing two records so you can -visualize what the above paragraph says: -

-

-%A Schweitzer, Albert
-%A C.M. Widor
-%T J.S. Bach
-%l Ernest Newman
-%V Vol 2
-%C London
-%I Adam and Charles Black
-%D 1923
-%O 2 vols
-%K bach vol 2
-
-%A Schaffter, Peter
-%T The Schumann Proof
-%C Toronto
-%I RendezVous Press
-%D 2004
-%K schumann schaffter
-
- -The order in which you enter fields doesn't matter. -mom and refer will re-arrange -them in the correct order for you. -

-The meaning of the letters follows. There are, with -refer, quite a few--all uppercase--which have, over -time, come to be "standard". Mom respects these. -However, she adds to the list (mostly the lowercase letters). -

-

-	%A Author           -- additional authors may be entered on separate %A
-	                       lines as in first entry of the sample, above; mom 
-	                       and refer will figure out what to do with multiple
-	                       authors according to MLA rules
-	%T Title            -- either the primary title (e.g. of a book), or the
-	                       title of an article (e.g. within a book or
-	                       journal or magazine)
-	%B Book title       -- the title of a book when %T contains the title
-	                       of an article; otherwise, use %T for book
-	                       titles
-	%R Report number    -- for technical reports
-	%J Journal name     -- the name of a journal or magazine when %T
-	                       contains the title of an article
-	%E Editor           -- additional editors may be entered on separate %E
-	                       lines (like authors); mom and refer will figure
-	                       out what to do with them according to MLA rules
-	%e Edition          -- the number of name of a specific edition
-	                       (e.g. Second, 2nd, Collector's, etc.)
-	%V Volume           -- volume number of a journal or series of books
-	%N Journal number   -- journal or magazine number
-	%S Series           -- series name for books or journals that are part of
-	                       a series
-	%C City             -- the city of publication
-	%I Publisher        -- the publisher; %I stands for "Issuer"
-	%D Publication date
-	%P Page number(s)   -- enter page ranges as, e.g., 22-25
-	%G Gov't.
-	   ordering number  -- for government publications
-	%O Other            -- additional information or comments you want
-	                       to appear at the end of the reference
-	%K Keywords         -- any words that will clear up ambiguities
-	                       resulting from database entries that
-	                       contain, say, the same author or the
-	                       same title
-	%d original
-	   publication date -- if different from the date
-	                                   of publication
-	%a additions        -- for books, any additions to the original work,
-					       such as the preface to a new edition or a new
-	                       introduction
-	%t reprint title    -- if different from a work's original title
-	%l translator       -- if the translator is not the editor; if more
-	                        than one translator, this field should contain
-	                        all the names, with appropriate punctuation
-	%r translator
-	   and editor       -- if tr. and ed. are one in the same;
-	%s site name        -- for web sites, the site name
-	%c content
-	   of site          -- for web sites, the content, if unclear
-	                       (i.e. advertisement, cartoon, blog)
-	%o organization     -- for web sites, the organization, group or
-	                       sponsor of the site
-	%a access date      -- for a website, the date you accessed it
-	%u URL              -- for websites, the full URL of the site
-
- -
-Tip: If you have hyphenation turned on in your -document (you probably do), mom will hyphenate -your references. This can be a problem because references -typically contain several proper names. Proper names shouldn't be -hyphenated. The solution is to prepend to any proper name in the -database the groff -discretionary hyphen -character, \%, like this: -

-

-	%A Hill, \%Reginald
-
- -Alternatively, you can turn hyphenation off entirely in -references with the macro, -HYPHENATE_REFS OFF. -

- -

2. Required "refer" commands

-

-Having set up your database, you now need to put some -refer-specific commands at the top of your -mom file. You cannot skip this step, nor can you -"source" these commands with the groff -primitive, -.so. They must -appear, exactly as shown, in every file requiring bibliographic -references. -

-refer commands are introduced with a single -line containing .R1, and concluded with a single line -containing .R2. What you put between the .R1 -and .R2 lines are the commands themselves. The commands -should be entered one per line, in lowercase letters, with -no initial period (dot). -

-Here's an example: -

-

-	.R1
-	no-label-in-text
-	no-label-in-reference
-	.R2
-
- -There are an awful lot of refer commands. We will -focus only on those required to get mom cooperating -with refer. If you're interested, study the -refer manpage to discover what other commands are -available and how to manipulate them. -

-At a minimum, all mom files accessing -a bibliographic database must contain the following -refer commands, exactly as shown: -

- -

-.R1
-no-label-in-text
-no-label-in-reference
-join-authors ", and " ", " ", and "
-database <full path to the database>
-.R2
-
- -The first two commands tell refer to let -mom handle everything associated with footnote -and endnote markers, both in the body of the document, and in the -footnotes/endnotes themselves. -

-The third command is required for mom to handle -multiple authors in proper, MLA style. -

-The last command, database, assumes you have created -your own database, and do not otherwise have a system-wide -"default" database. "...full path to the database" means the full -path including the database filename, e.g. -/home/user/refer/my_database. -

If you're already a refer user, feel free to -enter whatever refer commands are necessary to -access the database(s) you want. -

-With the above refer block, you can embed -references directly into the text of your document, or have them -output as footnotes or endnotes. If you want to "collect" -references for later output on a bibliography page, the block must -read: -

-

-.R1
-no-label-in-text
-no-label-in-reference
-join-authors ", and " ", " ", and "
-database <full path to the database>
-sort
-accumulate
-.R2
-
- -

3. Accessing references

-

-References are accessed by putting keywords, all on one line, -between the refer commands .[ and -.]. Both of these commands must appear on separate -lines, by themselves, like this: -

-

-	.[
-	keyword(s)
-	.]
-
- -Keywords are any word, or set of words, that identify a database -record (i.e. a reference) unambiguously. (refer -doesn't like ambiguity.) -

-If, for example, you want to reference a book by Ray Bradbury, -and the database contains only one book by Bradbury, a suitable -keyword would be "Bradbury". If your database contains several -books by Bradbury, say, Fahrenheit 451 and The Martian -Chronicles, you could reference them with the keywords, "451" -and "Martian". If, in addition to the two books by Bradbury, you -also had one whose title was The Martian Mission, suitable -keywords to reference The Martian Chronicles might be: -

-

-	.[                or    .[                   or  .[
-	Bradbury Martian        Bradbury Chronicles      Martian Chronicles
-	.]                      .]                       .]
-
- -The database field identifier, %K, lets you create special keywords -for references. This can be very handy if you need both a "short" -and a "long" reference to the same work. The short reference might -be used in footnotes; the long one in a bibliography. Consider the -following: -

-

-	%A Isherwood, Christopher      %A Isherwood
-	%T Mr. Norris Changes Trains   %T Mr. Norris Changes Trains
-	%d 1935                        %K Nor short
-	%t The Last of Mr. \%Norris
-	%a Intro. Tom Crawford
-	%C New York
-	%I New Directions
-	%D 1945
-	%K Norris
-
-
- -To access the shorter reference, you'd do -

-

-	.[
-	Nor short
-	.]
-
- -To access the longer one, you'd do -
-	.[
-	Norris
-	.]
-
- -

4. Telling mom where to put references

-

-Mom provides several mechanisms for outputting -references where you want. -

-

Embedding references in the document body

-

-References may be embedded in the document body, surrounded by -parentheses, square brackets, or braces. Use whichever you prefer, -following the recipes below. -

-

-	Parentheses    Square brackets    Braces
-	-----------    ---------------    ------
-
-	.REF(          .REF[              .REF{
-	.[             .[                 .[
-	keyword(s)     keyword(s)         keyword(s)
-	.]             .]                 .]
-	.REF)          .REF]              .REF}
-
- -

Footnote or endnote references

-

-Most times, you'll probably want references in either footnotes or -endnotes. Mom provides a simple mechanism whereby -you can choose which, or even switch back and forth. The primary -tag is -REF, which is used like this: -

-

-	.REF
-	.[
-	keyword(s)
-	.]
-	.REF
-
- -REF collects references and outputs them -where you say with the macros, -FOOTNOTE_REFS -or -ENDNOTE_REFS. -Neither -FOOTNOTE_REFS nor ENDNOTE_REFS -requires an argument. All they do is tell REF, -whenever it's invoked, where to put the references. -

-A recipe for footnote references looks like this: -

-	.FOOTNOTE_REFS
-	.REF
-	.[
-	keyword(s)
-	.]
-	.REF
-
- -When FOOTNOTE_REFS are enabled, REF -behaves identically to -FOOTNOTE, -so please read the -HYPER IMPORTANT NOTE -found in the document entry for FOOTNOTE. -

-The reference between the first and second REF -will be treated as a footnote, as will all subsequent -REF pairs unless you invoke the macro, -ENDNOTE_REFS. -

-A recipe for endnote references looks like this: -

-	.ENDNOTE_REFS
-	.REF
-	.[
-	keyword(s)
-	.]
-	.REF
-
- -The reference between the first and second REF -will be treated as an endnote, as will all subsequent -REF pairs unless you invoke the macro, -FOOTNOTE_REFS. -

-When ENDNOTE_REFS are enabled, REF -behaves identically to -ENDNOTE, -so please read the -HYPER IMPORTANT NOTE -found in the document entry for ENDNOTE. -

-The innate flexibility of this scheme allows you to have both -footnote references and endnote references in the same document. -This would be desirable if, say, you wanted "short" references in -footnotes, and complete references in endnotes. -

- -

Collected references

-

-Sometimes, you may want to put references in input text near -sections of text to which they pertain, but not actually want -them output until later (typically, on a bibliography page). -REF is used for this, too, but you have to make -sure your refer commands block is set up properly. -The recipe for this is: -

- -

-.R1
-no-label-in-text
-no-label-in-reference
-join-authors ", and " ", " ", and "
-database <full path to the database>
-sort
-accumulate
-.R2
-
- -After this set up, and provided you don't issue a -FOOTNOTE_REFS or ENDNOTE_REFS -command, all reference between REF pairs will be -collected for later output. -

-As a precaution, mom will issue a message the -first time you call .REF if neither -FOOTNOTE_REFS nor ENDNOTE_REFS is -in effect. If collected references are what you want, and you have -set up your .R1 - .R2 block as above, you may -safely ignore the message. -

-LIMITATION: You cannot combine "collected" -references (plain REF) with REFs -that are instructed to go into footnotes (with -FOOTNOTE_REFS) or endnotes (with -ENDNOTE_REFS). This is a limitation imposed by -refer, not mom. - -

5. Creating bibliography pages

-

-Bibliography pages are separate pages, like endnotes, on which -complete bibliographies are output. And, like endnotes pages, just -about every element on them can be designed to your specifications -with control macros. (See -Control macros for bibliographies.) -A bibliography page that uses mom's defaults -begins with the macro, -BIBLIOGRAPHY, -like this: -

-

-	.BIBLIOGRAPHY
-
- -

-Following BIBLIOGRAPHY, you have three choices of -how to proceed. -

-If you have elected to have references collected from within the -body of a document (see above, -Collected references, -for instructions), which assumes you have a refer -command block like the one -here -at the top of your document, you need only do -

-

-	.BIBLIOGRAPHY
-	.[
-	$LIST$
-	.]
-
- -If you want to create the bibliography by hand (which may be the -case if you've used footnote and/or endnote references throughout -your document), follow this recipe, which assumes you already have a -refer block like the one -here -at the top of your document: -

-

-	.BIBLIOGRAPHY
-	.R1
-	sort
-	accumulate
-	.R2
-	.[          -+
-	keyword(s)   |
-	.]           | "keyword(s)" are keywords identifying the
-	.[           | particular bibliographic reference you want
-	keyword(s)   | from your database.  Order doesn't matter here;
-	.]           | the refer command, sort, takes care of that.
-	.[           |
-	keyword(s)   |
-	.]          -+
-	.[
-	$LIST$
-	.]
-
- -Your final choice is to output your whole database. Again, -assuming you have a refer block like the one -here at the top of your file, you need -only do: -

-

-	.BIBLIOGRAPHY
-	.R1
-	bibliography <full path to database>
-	.R2
-
- -If you haven't put a refer block in -your file already, you can put the whole thing after -BIBLIOGRAPHY, like this: -

-

-	.BIBLIOGRAPHY
-	.R1
-	no-label-in-text                       -+
-	no-label-in-reference                   | These are actually optional
-	database <full path to the database>   -+ 
-	join-authors ", and " ", " ", and "
-	bibliography <full path to database>
-	.R2
-
- -Whichever option you choose, mom will output a -full bibliography page, complete with a title (BIBLIOGRAPHY by -default, but that can be changed). - -

6. Invoking groff with mom and refer

-

-So, now you've got a document, formatted properly to use -references processed with refer, what do you do to -output the document? -

-It's simple. Instead of invoking groff with just -the -mom option, as explained -here, -invoke groff with the -R option as well, like this: -

-

-	groff -R -mom filename
-
- -
- -

-

Index of bibliography and reference macros

- -

- - - -


-

Marking off references for footnotes, endnotes, or collection

-

- -Tag: REF -

-The macro, REF, tells mom that -what follows is refer-specific, a -keyword-identified reference from a -refer database. Depending on whether you've -issued a -FOOTNOTE_REFS -or -ENDNOTE_REFS -instruction, REF also tells mom -where to place the reference. If FOOTNOTE_REFS, -the reference will be formatted and placed in a footnote. If -ENDNOTE_REFS, the reference will be collected for -output as an endnote. If you have issued neither instruction, the -reference will be collected for later output, most likely on a -bibliography page. -

-Before you use REF, you must create a -refer block containing refer -commands (see -Required refer commands -in the tutorial, above). -

-REF usage always looks like this: -

-

-	.REF
-	.[
-	keyword(s)
-	.]
-	.REF
-
- -Notice that REF "brackets" the -refer call, and never takes an argument. -

-What REF really is is a convenience. One could, -for example, put a reference in a footnote by doing -

-

-	.FOOTNOTE
-	.[
-	keyword(s)
-	.]
-	.FOOTNOTE OFF
-
- -However, if you have a lot of references going into footnotes (or -endnotes), it's much shorter to type .REF/.REF than -.FOOTNOTE/.FOOTNOTE OFF. It also helps you -distinguish--visually, in your input file--between footnotes (or -endnotes) which are references, and footnotes (or endnotes) which -are explanatory, or expand on the text. -

-Additional arguments: If you're using -REF to put references in footnotes and your -footnotes need to be indented, you may (indeed, should) pass -REF the same arguments used to indent footnotes. -See -FOOTNOTE. -

-Note: -When REF is used with -FOOTNOTE_REFS, -it behaves identically to -FOOTNOTE, -so please read the -HYPER IMPORTANT NOTE -found in the document entry for FOOTNOTE. -

-When REF is used with -ENDNOTE_REFS, -it behaves identically to -ENDNOTE, -so please read the -HYPER IMPORTANT NOTE -found in the document entry for ENDNOTE. - -
- - - -


-

Instruct REF to put references in footnotes

-

- -Macro: FOOTNOTE_REFS -

-FOOTNOTE_REFS is an instruction to -REF, -saying, "put all subsequent references bracketed by the -REF macro into footnotes." You invoke it by -itself, with no argument. -

-When FOOTNOTE_REFS is in effect, regular -footnotes, (i.e. those introduced with .FOOTNOTE and -terminated with .FOOTNOTE OFF) continue to behave -normally. -

-You may switch between FOOTNOTE_REFS and -ENDNOTE_REFS -at any time. -

-If you have a lot of footnote references, and are identifying -footnotes by line number rather than by markers in the text, you may -want to enable -FOOTNOTES_RUN_ON -in conjunctions with FOOTNOTE_REFS. - -
- - - -


-

Instruct REF to put references in endnotes

-

- -Macro: ENDNOTE_REFS -

-ENDNOTE_REFS is an instruction to -REF, -saying, "add all subsequent references bracketed by the -REF macro to endnotes." You invoke it by -itself, with no argument. -

-When ENDNOTE_REFS is in effect, -mom continues to format regular endnotes, (i.e. -those introduced with .ENDNOTE and terminated with -.ENDNOTE OFF) in the normal way. -

-You may switch between ENDNOTE_REFS and -FOOTNOTE_REFS -at any time. - -
- - - -


-

References embedded in text

-

- -Macro pair: REF(  ...  REF) -
-Macro pair: REF[  ...  REF] -
-Macro pair: REF{  ...  REF} -

-You may sometimes want to embed references directly into the body -of your documents, typically, but not always, inside parentheses. -Mom makes this possible through the use of the -REF<bracket type> macros. -

-All three macro pairs, above, are invoked the same way, namely by -introducing the reference with the first ("open") macro of -the REF<bracket type> pair, and -terminating it with the second ("close") -REF<bracket type> of the pair. For -example -

-

-	.REF(
-	.[
-	keyword(s)
-	.]
-	.REF)
-
- -will embed a reference in the body of your document, surrounded by -parentheses. .REF[ ... .REF] will -surround the reference with square brackets. -.REF{ ... .REF} will surround it with -curly braces. -
- - - -
-

Manage the second-line indent of references

-

- -Macro: INDENT_REFS FOOTNOTE | ENDNOTE | BIBLIO <indent> -
-*<indent> requires a unit of measure -

-Proper MLA-style references should have their second, and subsequent -lines, if any, indented. Since mom formats -references in MLA style, she automatically indents second lines. -By default, the indent for the second line of references, -regardless of whether the references appear in footnotes, endnotes, -or bibliographies, is 1.5 -ems -for -PRINSTYLE -TYPESET -and 2 ems for -PRINSTYLE -TYPEWRITE. -

-If you'd like to change the indent for footnotes, endnotes or -bibliographies, just invoke INDENT_REFS with a -first argument telling mom for which you want the -indent changed, and a second argument saying what you'd like the -indent to be. For example, if you want the second-line indent of -references on a bibliography page to be 3 -picas, -

-

-	.INDENT_REFS BIBLIO 3P
-
- -is how you'd set it up. -

-Tip: if you are identifying endnotes by line -number -(ENDNOTE_MARKER_STYLE LINE) -and you have instructed mom to put references -bracketed by -REF -into endnotes (with -ENDNOTE_REFS), -you will probably want to adjust the second-line indent for -references in endnotes, owing to the way mom -formats line-numbered endnotes. Study the output of such -documents to see whether an indent adjustment is required. -
- - - -


-

Enable/disable hyphenation of references

-

- -Macro: HYPHENATE_REFS <toggle> -

-If you have hyphenation turned on for a document (see HY), -and in most cases you probably do, mom will -hyphenate references bracketed by the -REF -macro. Since references typically contain quite a lot of proper -names, which shouldn't be hyphenated, you may want to disable -hyphenation for references. -

-HYPHENATE_REFS is a toggle macro; -invoking it by itself will turn automatic hyphenation of -REF-bracketed references on (the default). -Invoking it with any other argument (OFF, -NO, X, etc.) will disable -automatic hyphenation for references bracketed by -REF. -

-An alternative to turning reference hyphenation off is to prepend -to selected proper names in your refer database -the groff -discretionary hyphen -character, \%. (See -here -in the tutorial for an example.) -

-Note: references embedded in the body of a document -with -REF<bracket type> -are considered part of -running text, -and are hyphenated (or not) according to whether hyphenation -is turned on or off for running text. Therefore, if you want to -disable hyphenation for such references, you must do so -temporarily, with HY, like this: -

-

-	.HY OFF
-	.REF(
-	.[
-	keyword(s)
-	.]
-	.REF)
-	.HY
-
- -Alternatively, sprinkle your database fields liberally with -\%. -
- - - -
-

Begin a bibliography page

-

- -Macro: BIBLIOGRAPHY -
-

-If you want to append a bibliography to your document, all you need -do is invoke BIBLIOGRAPHY at the place you want -it. BIBLIOGRAPHY breaks to a new page, prints the -title (BIBLIOGRAPHY by default, but that can be changed), and awaits -refer instructions. How to create bibliographies -is covered in the tutorial section, -Creating bibliography pages. -

-See the -Bibliography page style control macros -for macros to tweak, design and control the appearance of -bibliography pages. -
- - - -


-

Plain, or numbered list bibliography

-

- -Macro: BIBLIOGRAPHY_TYPE PLAIN | LIST [ <list separator> ] [ <list prefix> ] -

-Mom offers two styles of bibliography output: plain, -or numbered list style. With PLAIN, bibliography -entries are output with no enumerators. With LIST, -each entry is numbered. -

-Entering .BIBLIOGRPHY_TYPE PLAIN gives you a plain -bibliography. -

-Entering .BIBLIOGRAPHY_TYPE LIST gives you an enumerated -bibliography. The two optional arguments, -<list separator> and -<list prefix> have the same meaning as -the equivalent arguments to -LIST -(i.e. <separator> and <prefix>). -

-You may enter BIBLIOGRAPHY_TYPE either before or -after BIBLIOGRAPHY. It must, however, always come -before the refer command to output bibliographies. -(See the tutorial section, -Creating bibliography pages, -for instructions on how to output bibliographies.) -

-Mom's default BIBLIOGRAPHY_TYPE -is LIST, with a period (dot) as the separator, and -no prefix. - -
- - - -


-

Bibliography page style control

- -

-Mom processes bibliography pages in a manner very -similar to the way she processes endnotes pages. The bibliography -page control macros, therefore, behave in the same way as their -endnotes pages equivalents. -
-

    -
  1. General bibliography page style control - -
  2. Bibliography pages header/footer control - -
  3. Bibliography page head (i.e. the title at the top) control - - -
-
- -

1. General bibliography page style control

- -

*Bibliography family/font/quad

-

-See -Arguments to the control macros. -

-

-.BIBLIOGRAPHY_FAMILY    default = prevailing document family; default is Times Roman
-.BIBLIOGRAPHY_FONT      default = roman
-.BIBLIOGRAPHY_QUAD*     default = justified
-
-*Note: BIBLIOGRAPHY_QUAD must be set to either L or J
-
- - - -

*Bibliography point size

-

-Macro: BIBLIOGRAPHY_PT_SIZE <base type size of bibliography> - -

-Unlike most other control macros that deal with size of document -elements, BIBLIOGRAPHY_PT_SIZE takes as its argument an -absolute value, relative to nothing. Therefore, the argument represents -the size of bibliography type in -points, -unless you append an alternative -unit of measure. -For example, -

-

-	.BIBLIOGRAPHY_PT_SIZE 12
-
- -sets the base point size of type on the bibliography page to 12 -points, whereas -

-

-	.BIBLIOGRAPHY_PT_SIZE .6i
-
- -sets the base point size of type on the bibliography page to 1/6 of an -inch. -

-The type size set with BIBLIOGRAPHY_PT_SIZE is the size of -type used for the text of the bibliographies, and forms the basis from which -the point size of other bibliography page elements is calculated. -

-The default for -PRINTSTYLE TYPESET -is 12.5 points (the same default size used in the body of the document). -

- - - -

*Bibliography lead

-

-Macro: BIBLIOGRAPHY_LEAD <base leading of bibliographies> [ ADJUST ] -
-*Does not require a unit of measure; points is assumed - -

-Unlike most other control macros that deal with leading of document -elements, BIBLIOGRAPHY_LEAD takes as its argument an -absolute value, relative to nothing. Therefore, the argument represents -the -leading -of endnotes in -points -unless you append an alternative -unit of measure. -For example, -

-

-	.BIBLIOGRAPHY_LEAD 14
-
- -sets the base leading of type on the bibliography page to 14 -points, whereas -

-

-	.BIBLIOGRAPHY_LEAD .5i
-
- -sets the base leading of type on the bibliography page to 1/2 inch. -

-If you want the leading of bibliographies adjusted to fill the page, -pass BIBLIOGRAPHY_LEAD the optional argument -ADJUST. (See -DOC_LEAD_ADJUST -for an explanation of leading adjustment.) -

-The default for -PRINTSTYLE TYPESET -is 14 points, adjusted. -

-NOTE: Even if you give mom a -DOC_LEAD_ADJUST OFF command, she will still, by -default, adjust bibliography leading. You MUST enter -BIBLIOGRAPHY_LEAD <lead> with no -ADJUST argument to disable this default behaviour. -

- - - -

*Singlespace bibliographies (TYPEWRITE only)

-

-Macro: SINGLESPACE_BIBLIOGRAPHY <toggle> - -

-If your -PRINTSTYLE -is TYPEWRITE and you use TYPEWRITE's default -double-spacing, bibliographies are double-spaced. If your document -is single-spaced, bibliographies are single-spaced. -

-If, for some reason, you'd prefer that bibliographies be single-spaced -in an otherwise double-spaced document (including double-spaced -collated -documents), invoke SINGLESPACE_BIBLIOGRAPHY with -with no argument. -

- - - -

*Adjusting the space between bibliography entries

-

-Macro: BIBLIOGRAPHY_SPACING <amount of space> -
-*Requires a unit of measure - -

-By default, mom inserts 1 linespaces between -bibliography entries on bibliography pages. If you'd prefer she -add a different amount of space, instruct her to do so with the -macro, BIBLIOGRAPHY_SPACING. Say, for example, -you'd prefer only 1/2 linespace. That would be done with -

-

-	.BIBLIOGRAPHY_SPACING .5v
-
- -As with endnotes pages, owing to the space inserted between bibliography -entries, bibliography pages may have hanging bottom margins. -Unlike endnotes pages, mom is sad to report that -there's nothing you can do about this, except a) pray things work -out, or b) set your BIBLIOGRAPHY_SPACING to zero. - - - -

*Turning off column mode during bibliography output

-

-Macro: BIBLIOGRAPHY_NO_COLUMNS <toggle> - -

-By default, if your document is -set in columns, -mom sets the bibliographies in columns, too. However, -if your document is set in columns and you'd like the bibliographies not -to be, just invoke BIBLIOGRAPHY_NO_COLUMNS with no -argument. The bibliography pages will be set to the full page measure -of your document. -

-If you output bibliographies at the end of each document in a -collated -document set in columns, column mode will automatically -be reinstated for each document, even with -BIBLIOGRAPHY_NO_COLUMNS turned on. -

- - - -

*Bibliography-page page numbering style

-

-Macro: BIBLIOGRAPHY_PAGENUM_STYLE DIGIT | ROMAN | roman | ALPHA | alpha - -

-Use this macro to set the page numbering style of bibliography pages. -The arguments are identical to those for -PAGENUM_STYLE. -The default is digit. You may want to change it -to, say, alpha, which you would do with -

-

-	.BIBLIOGRAPHY_PAGENUM_STYLE alpha
-
- - - -

*Setting the first page number of bibliography pages

-

-Macro: BIBILOGRAPHY_FIRST_PAGENUMBER <page # that appears on page 1 of bibliographies> - -

-Use this macro with caution. If all bibliographies for several -collated -documents are to be output at once, i.e. not at the end of each -separate doc, BIBLIOGRAPHY_FIRST_PAGENUMBER tells -mom what page number to put on the first page of -the bibliography. -

-If you set BIBLIOGRAPHY_FIRST_PAGENUMBER in collated -documents where the bibliographies are output after each separate doc, -you have to reset every separate document's first page number after -COLLATE -and before -START. -

- - - -

*Omitting a page number on the first page of bibliographies

-

-Macro: BIBLIOGRAPHY_NO_FIRST_PAGENUM <toggle> - -

-This macro is for use only if FOOTERS are on. It -tells -BIBLIOGRAPHY -not to print a page number on the first bibliography page. -Mom's default is to print the page number. -

- - - -

*Suspending pagination of bibliography pages

-

-Macro: SUSPEND_PAGINATION -
-Macro: RESTORE_PAGINATION - -

-SUSPEND_PAGINATION doesn't take an argument. -Invoked immediately prior to -BIBLIOGRAPHY, -it turns off pagination for the duration of the bibliography. -Mom continues, however to increment page numbers -silently. -

-To restore normal document pagination after bibliographies, invoke -RESTORE_PAGINATION (again, with no argument) -immediately after you've finished with your bibliography. - -

2. Bibliography page header/footer control

-

- -If you wish to modify what appears in the header/footer that appears -on bibliography pages, make the changes before you invoke -BIBLIOGRAPHY, -not afterwards. -

-Except in the case of -DOCTYPE CHAPTER, -mom prints the same header or footer used throughout -the document on bibliography pages. Chapters get treated differently -in that, by default, mom does not print the -header/footer centre string (normally the chapter number or chapter -title.) In most cases, this is what you want. However, should you -not want mom to remove the centre string from -the bibliography pages headers/footers, invoke -BIBLIOGRAPHY_HEADER_CENTER -with no argument. -

-An important change you may want to make is to put the word -"Bibliography" in the header/footer centre position. -To do so, do -

-

-	.HEADER_CENTER "Bibliography"
-	           or
-	.FOOTER_CENTER "Bibliography"
-
- -prior to invoking .BIBLIOGRAPHY. If your -DOCTYPE -is CHAPTER, you must also invoke -BIBLIOGRAPHY_HEADER_CENTER -for the HEADER_CENTER to appear. -

- -

*Bibliography page header/footer centre string

-

-Macro: BIBLIOGRAPHY_HEADER_CENTER toggle - -

-If your -DOCTYPE -is CHAPTER and you want mom to include -a centre string in the headers/footers that appear on bibliography pages, -invoke BIBLIOGRAPHY_HEADER_CENTER (or -BIBLIOGRAPHY_FOOTER_CENTER) with no argument. -Mom's default is NOT to print the centre string. -

-If, for some reason, having enabled the header/footer centre string -on bibliography pages, you wish to disable it, invoke the same macro -with any argument (OFF, QUIT, Q, X...). -

- -

*Allow headers on bibliography pages

-

-Macro: BIBLIOGRAPHY_ALLOWS_HEADERS <none> | ALL - -

-By default, if HEADERS are on, mom -prints page headers on all bibliography pages except the first. If you -don't want her to print headers on bibliography pages, do -

-

-	.BIBLIOGRAPHY_ALLOWS_HEADERS OFF
-
- -If you want headers on every page including the first, do -

-

-	.BIBLIOGRAPHY_ALLOWS_HEADERS ALL
-
- -NOTE: If FOOTERS are on, -mom prints footers on every bibliography page. This is -a style convention. In mom, there is no such beast -as BIBLIOGRAPHY_ALLOWS_FOOTERS OFF. -

- -

3. Bibliography page first page head (title) control

- - - -

*Bibliography pages first page head (title) string

-

-Macro: BIBLIOGRAPHY_STRING "<head to print at the top of bibliography pages>" - -

-By default, mom prints the word "BIBLIOGRAPHY" -as a head at the top of the first page of a bibliography. If you want her -to print something else, invoke BIBLIOGRAPHY_STRING with -the bibliography page head you want, surrounded by double-quotes. If -you don't want a head at the top of the first bibliography page, invoke -BIBLIOGRAPHY_STRING with a blank argument (either two -double-quotes side by side -- "" -- or no argument -at all). -

- - - -

*Bibliography page first page head (title) control

-

-See -Arguments to the control macros. -

-

-.BIBLIOGRAPHY_STRING_FAMILY    default = prevailing document family; default is Times Roman
-.BIBLIOGRAPHY_STRING_FONT      default = bold
-.BIBLIOGRAPHY_STRING_SIZE*     default = +1
-.BIBLIOGRAPHY_STRING_QUAD      default = centred
-
-*Relative to the size of the bibliography text (set with BIBLIOGRAPHY_PT_SIZE)
-
- - - -

*Bibliography-page head (title) underscoring

-

-Macro: BIBLIOGRAPHY_STRING_UNDERSCORE toggle | 2 - -

-Invoked by itself, BIBLIOGRAPHY_STRING_UNDERSCORE will -underscore the bibliography page head. Invoked with the argument 2 -(i.e. the digit 2), BIBLIOGRAPHY_STRING_UNDERSCORE will -double-underscore the head. Invoked with any other argument, the macro -disables underscoring of the head. -

-Mom's default is to double-underscore the -head, therefore if you want no underscoring, you must insert -.BIBLIOGRAPHY_STRING_UNDERSCORE OFF (or QUIT, X, NO, -NONE, etc.) into your document prior to outputting a -bibliography with -BIBLIOGRAPHY. - - - -

*Bibliography-page head (title) automatic capitalization

-

-Macro: BIBLIOGRAPHY_STRING_CAPS toggle - -

-Invoked by itself, BIBLIOGRAPHY_STRING_CAPS will -automatically capitalize the bibliography page head. Invoked with any -other argument, the macro disables automatic capitalization of the -head. -

-If you're generating a table of contents, you may want the -bibliography page head string in caps, but the toc entry in caps/lower -case. If the argument to -BIBLIOGRAPHY_STRING -is in caps/lower case and BIBLIOGRAPHY_STRING_CAPS is -on, this is exactly what will happen. -

-Mom's default is to capitalize the bibliography-page -head string. -

- -
- -


-Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/reserved.html b/contrib/groff/contrib/mom/momdoc/reserved.html deleted file mode 100644 index ab8eeb193396..000000000000 --- a/contrib/groff/contrib/mom/momdoc/reserved.html +++ /dev/null @@ -1,2200 +0,0 @@ - - - - -Mom -- List of reserved words - - - - - -Prev   Back to Table of Contents -

- - - -

LIST OF RESERVED WORDS

- -

The following is a list of "reserved" words used by -mom. Before changing the name of any macro or -document element tag with -ALIAS, -I strongly recommend doing a search of this page for your proposed -new name. If you find it in the left hand column, DON'T USE IT. -Choose something else instead. -

-Anyone interested in playing around inside mom's macro -file (om.tmac) will find this list useful as well since it lists all -(I hope) the macros, strings, diversions and number registers -mom uses, along with brief descriptions of their -functions. -

-

-TYPESETTING
-===========
-
-+++MACROS+++
-
-Page layout
------------
-PAGELENGTH  Page width
-PAGE        Page width/length; left, right, top, bottom margins
-PAGEWIDTH   Page width
-PAPER       Letter, legal, or A4
-
-B_MARGIN  Space to leave at page bottom
-L_MARGIN  Page offset
-R_MARGIN  Line length as a function of
-          pagewidth minus pageoffset minus rightmargin
-T_MARGIN  Advance lead from page top
-
-Page control
-------------
-DO_B_MARGIN  Margin at bottom of page; trap-invoked
-DO_T_MARGIN  Margin at top of page; trap-invoked
-
-Style
------
-COLOR          Change color of text to predefined value
-CONDENSE       Set percentage of pseudo-condense (alias of
-               CONDENSE_OR_EXTEND)
-EXTEND         Set percentage of pseudo-extend (alias of
-               CONDENSE_OR_EXTEND)
-FAMILY         Family
-FT             Font
-FALLBACK_FONT  Font to use whenever FAMILY or FT errors occur
-LL             Line length
-LS             Leading (.vs)
-NEWCOLOR       Define a text color
-PT_SIZE        Point size
-SETBOLDER      Set degree of emboldening (pseudo-bold) in units
-SETSLANT       Set degree of pseudo-italic
-XCOLOR         Initialize a color from rgb.txt
-
-Autolead
---------
-AUTOLEAD  Always lead n points more than .PT_SIZE
-
-Flush
------
-JUSTIFY  Justified text
-QUAD     Filled text, left, right, or centre
-
-Quad
-----
-CENTER  Non-filled text, centre
-LEFT    Non-filled text, left
-RIGHT   Non-filled text, right
-
-Hyphenation
------------
-HY      Turn hyphenation on/off, or set LINES, MARGIN, SPACE
-HY_SET  Set LINES, MARGIN, SPACE in a single command
-
-Advanced style
---------------
-KERN       Turn automatic kerning on or off
-LIGATURES  Turn ligatures on or off
-SS         Sentence space control
-WS         Word space control
-
-Line breaks
------------
-BR      Alias of br
-EL      Breaks line but doesn't advance
-SPACE   Alias of sp
-SPREAD  Alias of brp
-
-Ald/rld
--------
-ALD  Advance lead
-RLD  Reverse lead
-
-Indents
--------
-HI   Indent hang
-IB   Indent both
-IBX  Indent both off
-IL   Indent left
-ILX  Indent left off
-IQ   Indents off
-IR   Indent right
-IRX  Indent right off
-IX   Indents off -- deprecated
-TI   Indent temporary
-
-Tabs
-----
-ST       String tab
-TAB_SET  Tab Set
-TN       Tab Next
-TQ       Tab Quit
-
-MCO      Turn on multi-column mode
-MCR      Return to top of column
-MCX      Turn off multi-column mode
-
-Underscore
-----------
-UNDERSCORE   Underscores words or phrases
-UNDERSCORE2  Double underscores words or phrases
-
-Underline
----------
-UNDERLINE  Underlines whole passages (Courier only)
-
-Smart Quotes
-------------
-SMARTQUOTES  Turns smart quotes on or off
-
-Misc + Support
---------------
-BR_AT_LINE_KERN  Deposit a break before RW and WE
-CAPS             Convert u/lc to UC
-COMMENT          Don't print lines till COMMENT OFF (alias of SILENT)
-DROPCAP_ADJUST   Points (poss. fractional) to add/subtract
-                 from drop caps
-DROPCAP          Create drop cap
-DROPCAP_FAMILY   Drop cap family
-DROPCAP_FONT     Drop cap font
-DROPCAP_GUTTER   Drop cap gutter
-DROPCAP_OFF      Support only; restores .in if there was one
-ESC_CHAR         Alias for .ec
-EW               Extra white -- loosen overall line kern
-                 (character spacing)
-LEADER_CHARACTER Sets leader character
-PAD              Insert padding spaces at marked places
-PADMARKER        Sets character to use instead of # in PAD
-PRINT            Simply prints args passed to it; keeps my code
-                 indented nicely
-RW               Reduce white -- tighten overall line kern
-                 (character spacing)
-SILENT           Don't print lines till SILENT OFF
-SIZESPECS        Get cap-height, x-height and descender depth for
-                 current point size
-TRAP             Turn traps off or on
-
-+++DIVERSIONS+++
-
-NO_FLASH    Diverts output of SILENT or COMMENT so they don't print
-NULL        Diverts SIZESPECS in PRINT_HDRFTR so it doesn't screw up
-            FOOTER and FOOTNOTE processing when FOOTERS are on
-PAD_STRING  Diverts $PAD_STRING for processing
-TYPESIZE    Diverts SIZESPECS routine so it doesn't print
-
-+++NUMBER REGISTERS+++
-
-#ABORT_FT_ERRORS        Abort on FT errors? (toggle)
-#ALD                    ALD value
-#ARGS_TO_LIST           Tells LIST whether LIST was invoked with a legal
-                        arg; controls LIST OFF processing
-#ARGS_TO_SQ             Tells SMARTQUOTES whether it was invoked with a
-                        legal arg; controls SMARTQUOTES OFF
-                        processing
-#AUTOLEAD_FACTOR        Using FACTOR arg to AUTOLEAD? (toggle)
-#AUTO_LEAD              Using autolead? (toggle)
-#AUTO_LEAD_VALUE        Auto leading value
-#BL_INDENT              Value of left indent when IB
-#B_MARGIN               Bottom margin
-#BOLDER_UNITS           # of units to embolden type
-#BR_INDENT              Value of right indent when IB
-c                       column mark
-#CONDENSE               Are we in pseudo-condense mode? (toggle)
-#CONDENSE_WAS_ON        For restoring \*[COND] in DROPCAP
-#COND_WIDTH             Width of pseudo-condensed type
-                        (pointsize x $COND_PERCENT)
-#CURRENT_L_LENGTH       Current line length at first invocation of LIST;
-                        like #ORIG_L_LENGTH
-#CURRENT_TAB            Current tab number
-#DC_GUT                 Width of dropcap gutter
-#DEGREES                # of degrees slant for pseudo-italic
-#ENUMERATOR<n>          Number register enumerator for depth <n> in lists 
-#EXT_WIDTH              Width of pseudo-extended type
-                        (pointsize x $EXT_PERCENT)
-#EXTEND                 Are we in pseudo-extend mode? (toggle)
-#EXTEND_WAS_ON          For restoring \*[EXT] in DROPCAP
-#FILL_MODE              Are we in fill mode (i.e. \n(.u=1)? (toggle)
-#H_INDENT               Value of left indent when IH
-#HL_INDENT              Value of the hang when IH
-#HYPHENATE              Hyphenation on? (toggle)
-#HY_SET                 Did we manually set hyphenation parameters?
-                        (toggle)
-#IN_TAB                 Are we in a tab? (toggle)
-                        Set in macro TAB; used in ST to determine
-                        whether to add #ST_OFFSET to #ST<#>_OFFSET
-#INDENT_ACTIVE          Indicates whether an indent is active (toggle)
-#INDENT_BOTH_ACTIVE     Toggle
-#INDENT_LEFT_ACTIVE     Toggle
-#INDENT_RIGHT_ACTIVE    Toggle
-#INDENT_STYLE_BOTH      Indicates IB when #INDENT_ACTIVE=1 (toggle)
-#INDENT_STYLE_HANG      Indicates IH when #INDENT_ACTIVE=1 (toggle)
-#INDENT_STYLE_LEFT      Indicates IL when #INDENT_ACTIVE=1 (toggle)
-#INDENT_STYLE_RIGHT     Indicates IR when #INDENT_ACTIVE=1 (toggle)
-#INDENT_STYLE_TEMP      Indicates IT when #INDENT_ACTIVE=1 (toggle)
-#IX_WARN                Toggles to 1 the first time IX is user-invoked
-#JUSTIFY                In EW/RW, when BR_AT_LINE_KERN, whether to
-                        break or break-spread preceding line (toggle)
-#KERN                   Kern on? (toggle)
-#LAST_TAB               Last tab number set in multi-columns
-#LEAD                   Leading (alias)
-#LIGATURES              Ligatures on? (toggle)
-#LIST_INDENT<n>         Left indent of list <n>
-#L_INDENT               Value of left indent
-#L_LENGTH               Line length
-#L_MARGIN               Page offset if set with LMARGIN;
-                        if .po used, \n(.o returns page offset
-#LOOP                   #LOOP=1 if a while loop executes; otherwise 0.
-#NEXT_DEPTH_BACK        Next list level back in lists
-#NEXT_TAB               Current tab number + 1 (used in TN)
-#NEXT_TAB               Next tab in an n+1 sequence
-#OLD_LEAD               Lead in effect prior to changing it with .vs
-                        in .LS
-#OPEN_CLOSE             Manipulates character " to print `` or ''
-#ORIGINAL_L_LENGTH      Used in LIST for IB processing; holds \n(.l
-p                       Output line horiz position at end of
-                        $PAD_STRING
-#PAD_COUNT              Number of times # was included in arg to PAD
-#PAD_LIST_DIGITS        Pad list digits to the left? (toggle)
-#PAD_SPACE              Size of padding space
-#PAGE_LENGTH            Page length (alias)
-#PAGE_WIDTH             Page width
-#PP_ACTIVE              Are we in the context of a para? (toggle)
-#PRINT_FOOTER_ON_PAGE_1 (toggle)
-#PSEUDO_FILL            Signals that LEFT, RIGHT or CENTER is
-                        in effect (toggled off, i.e. to 0, when
-                        QUAD  or JUSTIFY is called)
-#PT_SIZE                Point size (fractional) in units (alias)
-#Q_AT_TOP               Does a quote start at the top of a new page?
-                        (toggle)
-#QUAD                   In autoquad mode? (toggle)
-#QUIT                   Tells LIST whether to exit lists completely
-                        (toggle)
-#REMOVE                 Used in LIST OFF cleanup
-#RESTORE_LEAD           Lead value in effect prior to AUTOLEAD
-#RESTORE_LINE_LENGTH    Restores actual line length in RULE
-#RESTORE_LN_NUMBER      Start linenumbering again with stored
-                        #NEXT_LN? (toggle)
-#RESTORE_PT_SIZE        Stores current point size (in units) prior
-                        to underscore
-#R_INDENT               Value of right indent
-#R_MARGIN               Right margin
-#RESTORE_PREV_INDENT    Tells LIST OFF what kind of indent was active
-                        prior to first invocation of LIST
-#RLD                    RLD value
-#SILENT                 Is silent on? (toggle)
-#SIZE_FOR_PAD           Used to ensure that the size in effect prior
-                        to PAD is restored at the start of every
-                        iteration of $PAD_STRING
-#SLANT_ON               Is SLANT on? (toggle)
-#SMART_QUOTES           Smartquotes on? (toggle)
-#SPACE_TO_END           Whitespace at end of string passed to PAD
-#ST<#>_LENGTH           Length of ST<#>; calculated during ST <#>
-#ST<#>_MARK             Page offset of autotab <#> at ST<#>X
-#ST_NUM                 Incrementing counter for autotab identification
-#ST_OFFSET              Offset (from current tab) to add to #ST<#>_OFFSET
-                        when calculating string indents set from within
-                        tabs
-#ST<#>_OFFSET           Indent of autotab <#> (page offset)
-#STORED_L_INDENT        Current left indent at first invocation of LIST
-#STORED_R_INDENT        Current right indent at first invocation of LIST
-#STORED_BL_INDENT       Current "both, left" indent at first invocation
-                        of LIST
-#STORED_BR_INDENT       Current "both, right" indent at first invocation
-                        of LIST
-#STORED_HL_INDENT       Current hanging indent at first invocation
-                        of LIST
-#STORED_T_INDENT        Current temporary indent at first invocation
-                        of LIST
-#T_INDENT               Value of temporary indent
-#T_MARGIN               Top margin
-#TAB_ACTIVE             Are we in a tab? (toggle)
-#TAB_NUMBER             Tab number
-#TAB_OFFSET             Tab indent
-#TOP                    Set to 1 in T_MARGIN, DO_T_MARGIN and ALD; tells
-                        the first LS or AUTOLEAD on a page to maintain
-                        the baseline position prior to the LS call
-#TOP_BASELINE_ADJ       Amount by which to adjust the baseline position
-                        of the first line on the page if an LS or AUTOLEAD
-                        request differs from the lead current at the end of
-                        the previous page
-#TOTAL_LISTS            Total number of lists in a nest
-#USER_SET_L_LENGTH      Did user invoke LL? (toggle)
-#USER_SET_TITLE_ITEM    Did user invoke TOC_TITLE_ENTRY?
-u                       Horiz position of start of underscore
-
-+++STRINGS+++
-
-$COND_PERCENT        Percentage by which to pseudo-condense type
-$COLOR_SCHEME        Color scheme used in NEWCOLOR
-$CURRENT_QUAD        Restores current quad value in RULE
-$CURRENT_TAB         Current tab number
-$DC_ADJUST           +|- # of points to subtract from dropcap
-$DC_FAM              Drop cap family
-$DC_FT               Drop cap font
-$ENUMERATOR<n>       String enumerator for depth <n> in lists 
-$EXT_PERCENT         Percentage by which to pseudo-extend type
-$FAMILY              Family
-$FAMILY_FOR_PAD      Used to ensure that the family in effect prior
-                     to PAD is restored at the start of every
-                     iteration of $PAD_STRING
-$FONT                Font
-$FONT_FOR_PAD        Used to ensure that the font in effect prior
-                     to PAD is restored at the start of every
-                     iteration of $PAD_STRING
-$PAD_MARKER          Character to mark off padding in PAD
-$PAD_STRING          Arg passed to PAD
-$QUAD_VALUE          Quad value (left, right, centre, justify)
-$QUOTE0              Open quotation marks
-$QUOTE1              Close quotation marks
-$RESTORE_COND        Restores the pseudo-condense value in effect
-                     prior to DROPCAP
-$RESTORE_EXT         Restores the pseudo-extend value in effect
-                     prior to DROPCAP
-$RESTORE_FAM         Used to restore the family in effect
-                     prior to DROPCAP
-$RESTORE_FT          Used to restore the font/fontstyle in effect
-                     prior to DROPCAP
-$RESTORE_PT_SIZE     Used to restore the point size of normal
-                     running text after a dropcap
-$RESTORE_QUAD_VALUE  Quad value for use in restoring L, R, C, J
-                     (after tabs)
-$SAVED_STYLE         Current style, if there is one (used in FAMILY)
-$SEPARATOR<n>        Separator for depth <n> in lists
-$SS_VAR              Holds + or - sentence space value
-$ST<#>_FILL          Always QUAD if QUAD passed to ST <#>
-$ST<#>_QUAD_DIR      Quad direction supplied to ST for <#>
-$TAB_NUMBER          Argument passed to TAB macro to call TAB# macro
-                     created in TAB_SET
-$WS_CONSTANT         12; used to hold groff default wordspace
-$WS                  Holds WS value; concatenation of WS_CONSTANT and
-                     WS_VAR
-$WS_VAR              + or - value to add to $WS_CONSTANT
-BLACK                Pre-defined black color
-black                Pre-defined black color
-WHITE                Pre-defined white color
-white                Pre-defined white color
-
-+++ALIASES+++
-
-ALIAS         als
-ALIASN        aln
-BR            br
-CENTRE        CENTER
-COLOUR        COLOR
-COMMENT       SILENT
-CONDENSE      CONDENSE_OR_EXTEND
-EXTEND        CONDENSE_OR_EXTEND
-FAM           FAMILY
-FT            FONT
-HYPHENATE     HY
-HYPHENATION   HY
-LIG           LIGATURES
-LL            LINE_LENGTH
-MAC           de
-NEW_PAGE      bp
-NEWCOLOUR     NEWCOLOR
-NEWPAGE       NEW_PAGE
-PAGELENGTH    PAGE_LENGTH
-PAGE_LENGTH   pl
-PAGEWIDTH     PAGE_WIDTH
-SPREAD        brp
-SP            sp
-STRING        ds
-TABSET        TAB_SET
-TB            TAB
-TI            IT
-UNDERSCORE_2  UNDERSCORE2
-XCOLOUR       XCOLOR
-
-+++ALIASES FOR NUMBER REGISTERS+++
-
-#DIVER_DEPTH    dn   -- diversion depth
-#DIVER_WIDTH    dl   -- diversion width
-#INDENT         .i   -- value of current indent
-#LEAD           .v   -- line space (.vs, not .ls)
-#L_LENGTH       .l   -- line length
-#NUM_ARGS       .$   -- number of arguments passed to a macro
-#PAGE_LENGTH    .p   -- page length
-#PT_SIZE        .ps  -- current point size (fractional) in units
-#TRAP_DISTANCE  .t   -- distance to next trap
-
-+++INLINE ESCAPES+++
-
-BCK          Inline backward horizontal movement
-BOLDER       Pseudo-bold on
-BOLDERX      Pseudo-bold off
-BP           Back points (horizontal movement)
-BU           Back units (inline pairwise kerning)
-COND_FOR_SUP Pseudo-condense string for use with superscripts
-             (called with CONDSUP)
-COND_FOR_SUP Pseudo-extend string for use with superscripts (called
-             with EXTSUP)
-COND         Pseudo-condense type
-CONDX        Pseudo-condense off
-CONDSUP      Pseudo-condensed superscript (using value set with
-             CONDENSE)
-CONDSUPX     Pseudo-condensed superscript off
-DOWN         Inline downward vertical movement
-EXT          Pseudo-extend type
-EXTX         Pseudo-extend off
-EXTSUP       Pseudo-extended superscript
-EXTSUPX      Pseudo-extended superscript off
-FP           Forward points (horizontal movement)
-FU           Forward units (inline pairwise kerning)
-FWD          Inline forward horizontal movement
-LEADER       Deposit leader to end of current LL or TAB
-RULE         Draw a rule to the full measure of the current line or
-             tab length
-SLANT        Slant (pseudo-italic on
-SLANTX       Slant off
-ST<#>        String tab end marker
-ST<#>        String tab start marker
-SUP          Superscript
-SUPX         Superscript off
-UP           Inline upward vertical movement
-
-+++SPECIAL CHARACTERS+++
-
-FEET         The foot character \(fm
-INCH         The inch character \(fm\(fm
-
-------------------------------------------------------------------------
-
-DOCUMENT PROCESSING
-===================
-
-+++MACROS+++
-
-Document info
--------------
-AUTHOR          Author
-CHAPTER         Chapter number
-CHAPTER_TITLE   Chapter title
-COPYRIGHT       Copyright info (covers only)
-DOCTITLE        Overall doc title (for collated docs)
-DRAFT           Draft number
-MISC            Misc info (covers only)
-REVISION        Revision number
-SUBTITLE        Doc subtitle
-TITLE           Doc title
-
-Covers
-------
-COVER               What goes on cover
-COVERS              Whether covers get printed (toggle)
-COVER_ADVANCE       Set vertical start position of cover material
-COVER_LEAD          Overall leading of covers
-COVERTITLE          User-defined cover title string
-DOC_COVER           What goes on doc cover
-DOC_COVERS          Whether doc covers get printed
-DOC_COVER_ADVANCE   Set vertical start position of doc cover material
-DOC_COVER_LEAD      Overall leading of doc covers
-DOC_COVERTITLE      User-defined doc cover title string
-
-Document style
---------------
-COPYSTYLE     Output style (DRAFT or FINAL)
-DEFAULTS      In START, sets defaults
-DOCTYPE       Kind of doc (DEFAULT, CHAPTER, NAMED, LETTER)
-PAGENUMBER    Page number that appears on 1st page of doc
-PAPER         Paper size (LETTER, LEGAL, A4)
-PRINTSTYLE    Print style (TYPEWRITE or TYPESET)
-NUMBER_LINES  Number output lines in the left margin
-
-Document tags and macros
-------------------------
-ADD_SPACE               Special macro to add space to the top of a pages after
-                        page 1; must be preceded by NEWPAGE
-BIBLIOGRAPHY            Begin a bibliography page
-BIBLIOGRAPHY_TYPE       LIST or PLAIN
-BLOCKQUOTE              Block-indented, quoted text
-COL_BREAK               Breaks and spreads line before invocation; moves to
-                        next column on page or 1st col of next page.  An alias
-                        of COL_NEXT.
-COL_NEXT                Moves to next column on page or 1st col of next page
-ENDNOTE                 Endnote
-ENDNOTE_REFS            Send REFs to endnotes
-ENDNOTES                Output endnotes
-EPIGRAPH                Epigraph before 1st para 
-FINIS                   Prints --END--
-FOOTNOTE                Collects footnotes in text for printing at bottom of page
-FOOTNOTE_REFS           Send REFs to footnotes
-HEAD                    Section title (main heads)
-HYPHENATE_REFS          Turn on/off hyphenation of REF references
-ITEM                    Begin a list item
-LINEBREAK               Break between narrative sections
-LIST                    Initialize a list
-MN                      Margin note
-MN_INIT                 Initialize parameters for margin notes
-NUMBER_LINES            Number text lines
-NUMBER_BLOCKQUOTE_LINES Number blockquote lines
-NUMBER_QUOTE_LINES      Number quote lines
-PAD_LIST_DIGITS         Leave space for two-numeral digit enumerators
-                        in a list
-PARAHEAD                Paragraph head
-PP                      Paragraph
-QUOTE                   Poetic or line for line quotes
-REF                     Wrapper around FOOTNOTE or ENDNOTE, depending
-                        on FOOTNOTE_REFS or ENDNOTE_REFS
-REF(                    Begin embedded reference, parens
-REF)                    End embedded reference, parens
-REF[                    Begin embedded reference, square brackets
-REF]                    End embedded reference, square brackets
-REF{                    Begin embedded reference, braces
-REF}                    End embedded reference, braces
-REF_INDENT              Amount of 2nd line indent of references for
-                        footnote, endnote or bibliography refs
-RESET_LIST              Reset digit or alpha list enumerator
-SHIFT_LIST              Move a list over to the right
-START                   Sets doc defaults and prints info collected
-                        with doc info macros
-SUBHEAD                 Subheads
-
-Headers/footers
----------------
-BREAK_QUOTE          Manually break a footnoted quote that crosses
-                     a page/column
-DO_FOOTER            Prints footer (after footnote processing, if any)
-FOOTER_ON_FIRST_PAGE Print footer on first page? (toggle)
-FOOTER               Trap-invoked footer macro
-HEADER               Trap-invoked header macro
-PAGINATE             Turns page numbering on or off (doc default=on)
-PAGINATE_TOC         Turns pagination of toc on or off (default=on)
-RECTO_VERSO          Enables switch HEADER_LEFT and HEADER_RIGHT on
-                     alternate pages
-
-Alter doc "look" and/or change defaults
----------------------------------------
-***General***
-
-ALWAYS_FULLSPACE_QUOTES  Fullspace quotes instead of default
-                         1/2 spacing them.
-ATTRIBUTE_STRING         What to print before author (default is "by")
-CHAPTER_STRING           What to print whenever the word "chapter"
-                         is required
-COLUMNS                  Print in columns
-DOC_FAMILY               Overall doc family
-DOCHEADER                Print doc header?
-DOCHEADER_ADVANCE        Start position of docheader (relative to top
-                         of page)
-DOCHEADER_LEAD           +|- value applied to #DOC_LEAD to in/decrease
-                         leading of doc header
-DOC_LEAD_ADJUST          Adjust #DOC_LEAD to fill page to #B_MARGIN
-DOC_LEAD                 Overall doc leading
-DOC_LEFT_MARGIN          Doc left margin
-DOC_LINE_LENGTH          Doc line length
-DOC_PT_SIZE              Overall doc point size
-DOC_RIGHT_MARGIN         Doc right margin
-DOC_TITLE                Overall doc title that gets printed in
-                         headers/footers (mostly for use with collated
-                         docs where each doc is an article with a
-                         different title
-DRAFT_STRING             What to print whenever the word "draft" is
-                         required
-DRAFT_WITH_PAGENUMBER    Attach draft/revision info to page number
-                         (instead of putting it HEADER centre)
-REVISION_STRING          What to print whenever the word "revision"
-                         is required
-
-***Covers***
-
-COVER_ADVANCE            Vertical place on page to start outputting
-                         cover material
-COVER_LEAD               Lead in/decrease for cover pages
-DOC_COVER_ADVANCE        Vertical place on page to start outputting
-                         doc cover material
-DOC_COVER_LEAD           Lead in/decrease for doc cover pages
-
-***Epigraphs and finis***
-
-EPIGRAPH_AUTOLEAD        Autolead value for epigraphs
-EPIGRAPH_INDENT          Value by which to multiply PP_INDENT for
-                         block epigraphs
-FINIS_STRING             What to print when FINIS is invoked
-
-***Footnotes***
-
-FOOTNOTE_AUTOLEAD             Autolead to use in footnotes
-FOOTNOTE_LINENUMBER_BRACKETS  Brackets for footnote linenumbers
-FOOTNOTE_LINENUMBER_SEPARATOR Separator for footnote linenumbers
-FOOTNOTE_MARKERS              Turns footnote markers on or off
-FOOTNOTE_MARKER_STYLE         STAR or NUMBER; default=STAR
-FOOTNOTE_RULE_ADJ             # of points to raise footnote rule from its
-                              baseline
-FOOTNOTE_RULE_LENGTH          Length of footnote separator rule
-FOOTNOTE_RULE                 Turns printing of fn separator rule on or off;
-                              default is on
-FOOTNOTE_SPACING              Post footnote item spacing
-FOOTNOTES_RUN_ON              Run footnotes on (line numbering mode only)
-RESET_FOOTNOTE_NUMBER         Reset fn# to 1, or, if arg PAGE, reset
-                              automatically to 1 on every page
-RUNON_WARNING                 Utility macro; warns if FOOTNOTES_RUN_ON
-                              was called when fn marker style is STAR or NUMBER
-
-***Endnotes***
-
-ENDNOTE_LEAD                 Leading for endnotes page
-ENDNOTE_LINENUMBER_BRACKETS  Brackets around line numbers identifying
-                             endnotes and text
-ENDNOTE_LINENUMBER_GAP       Amount of space to leave between line
-ENDNOTE_LINENUMBER_SEPARATOR Separator between line numbers identifying
-                             endnotes and the endnote item text
-                             endnotes and text
-ENDNOTE_MARKER_STYLE         NUMBER or LINE
-ENDNOTE_NUMBERS_ALIGN_RIGHT  Hang endnote numbers and align right
-ENDNOTE_NUMBERS_ALIGN_LEFT   Don't hang endnote numbers and align left
-ENDNOTE_PARA_INDENT          First line indent of paras in multi-para
-                             endnotes
-ENDNOTE_PARA_SPACE           Whether to space paras in multi-para endnotes
-ENDNOTE_PT_SIZE              Base point size for endnotes page
-ENDNOTE_STRING               Endnotes page head
-ENDNOTE_STRING_CAPS          Capitalize the endnotes string
-ENDNOTE_STRING_UNDERSCORE    Underscoring of endnotes page head
-ENDNOTE_TITLE                Endnotes identifying title
-ENDNOTE_TITLE_SPACE          Distance from top of page to endnotest title
-ENDNOTE_TITLE_UNDERSCORE     Underscoring of endnotes identifying title
-ENDNOTES_ALLOWS_HEADERS      Page headers on endnotes pages? (toggle)
-ENDNOTES_FIRST_PAGENUMBER    Page number to appear on page 1 of endnotes
-                             pages
-ENDNOTES_HDRFTR_CENTER       Print header/footer centre string on endnotes
-                             pages?
-ENDNOTES_HEADER_CENTER       Print header centre string on endnotes pages?
-ENDNOTES_FOOTER_CENTER       Print footer centre string on endnotes pages?
-ENDNOTES_NO_COLUMNS          Turn columnar mode off for endnotes pages
-ENDNOTES_NO_FIRST_PAGENUM    Don't print a pagenumber on page 1 of
-                             endnotes.
-ENDNOTES_PAGENUM_STYLE       Set numbering style for endnotes pages page
-                             numbers
-SINGLESPACE_ENDNOTES         Single space TYPEWRITE endnotes
-
-***Bibliographies***
-
-BIBLIOGRAPHY_ALLOWS_HEADERS    Allow headers on bib pages
-BIBLIOGRAPHY_FIRST_PAGENUMBER  Starting page number for bibliographies
-BIBLIOGRAPHY_HDRFTR_CENTER     Header/footer center string for bib pages
-BIBLIOGRAPHY_LEAD              Base lead of bib pages
-BIBLIOGRAPHY_NO_COLUMNS        De-columnize bibliographies
-BIBLIOGRAPHY_NO_FIRST_PAGENUM  Don't print a page number on the first
-                               page of bibliographies
-BIBLIOGRAPHY_PAGENUM_STYLE     Format for bib pages page numbering
-BIBLIOGRAPHY_PT_SIZE           Base point size for bib pages
-BIBLIOGRAPHY_SPACING           Post bib entry space
-BIBLIOGRAPHY_STRING            String for bib title
-BIBLIOGRAPHY_STRING_CAPS       Capitalize bib title string
-BIBLIOGRAPHY_STRING_UNDERSCORE Underscore bib title string
-SINGLESPACE_BIBLIOGRAPHY       Singlespace bibs if PRINTSTYLE TYPEWRITE
-
-***Headers and footers***
-
-FOOTER_COLOR             Footer color
-FOOTER_GAP               Distance between running text and footer
-FOOTER_MARGIN            Distance from footer to bottom of page
-FOOTERS                  Turns footers on or off
-HDRFTR_CENTER            String to go in centre part of header/footer;
-                         default doctype 
-HDRFTR_CENTER_CAPS       Centre part of header/footer in caps? (toggle)
-HDRFTR_CENTER_PAD        Pad hdrftr CENTER left or right by specified
-                         amount
-HDRFTR_GAP               Distance from header/footer to running text
-HDRFTR_LEFT_CAPS         Left part of header/footer in caps? (toggle)
-HDRFTR_LEFT              String to go in left part of header/footer;
-                         default is AUTHOR_1
-HDRFTR_LEFT              The header/footer left string
-HDRFTR_MARGIN            Distance from top of page to header
-HDRFTR_PLAIN             Header/footer fam/ft/ps all same as running
-                         text
-HDRFTR_RECTO             User-defined, single string recto
-                         header/footer
-HDRFTR_RIGHT_CAPS        Right part of header/footer in caps? (toggle)
-HDRFTR_RIGHT             The header/footer right string
-HDRFTR_RULE_GAP          Space between header/footer and header/footer
-                         rule
-HDRFTR_RULE_INTERNAL     Prints the header/footer rule
-HDRFTR_RULE              Turns header/footer rule on or off
-                         When invoked internally, prints the rule.
-HDRFTR_VERSO             User-defined, single string verso
-                         header/footer
-HEADERS                  Turns headers on or off
-SWITCH_HDRFTR            Switch HDRFTR_LEFT and HDRFTR_RIGHT
-
-***Page numbering***
-
-PAGENUM_HYPHENS          Turns on/off hyphens surrounding page numbers
-PAGENUM_ON_FIRST_PAGE    Print page number on first page when footers
-                         are on (toggle)
-PAGENUM_POS              Controls placement of page numbers;
-                         default=bottom/centred
-PAGENUM_SIZE             How much to in/decrease point size of page
-                         numbers*
-PAGENUM_STYLE            Page # in roman, Arabic, or alphabetic
-RESTORE_PAGINATION       Restore pagination after outputting non-
-                         paginated endnotes.
-SUSPEND_PAGINATION       Suspend pagination prior to outputting
-                         endnotes
-
-***Heads***
-
-HEADER_GAP               Space between header and running text
-HEADER_MARGIN            Space from top of page to header
-HEAD_CAPS                Print section titles in caps? (toggle)
-HEAD_SPACE               Give HEADs 2 line-spaces before. If OFF,
-                         only 1.  Default is on.
-HEAD_UNDERLINE           Underline section titles? (toggle)
-NUMBER_HEADS             Print head numbers
-RESET_HEAD_NUMBER        Reset head number
-
-***Subheads***
-
-NUMBER_SUBHEADS          Print subhead numbers
-RESET_SUBHEAD_NUMBER     Reset subhead number
-
-***Para heads***
-
-NUMBER_PARAHEADS         Print parahead numbers
-PARAHEAD_INDENT          How much to indent paraheads
-RESET_PARAHEAD_NUMBER    Reset parahead number
-
-***Paragraphs***
-
-INDENT_FIRST_PARAS       Indent 1st paras? (doc default=not indented) 
-PARA_INDENT              Size of para indent
-PARA_SPACE               Put a line space before paras
-PP_FONT                  Overall doc font
-
-***Quotes***
-
-Q_FITS                  Utility macro for DO_QUOTE
-Q_NOFIT                 Utility macro for DO_QUOTE
-QUOTE_AUTOLEAD          Leading of (block)quotes
-
-***Line/section breaks***
-
-LINEBREAK_CHAR           Linebreak character, iterations and positioning
-
-***Printstyle TYPEWRITE***
-
-ITALIC_MEANS_ITALIC      For TYPEWRITE; render .FT I in italic.
-SLANT_MEANS_SLANT        In TYPEWRITE, render \*[SLANT] as slant
-UNDERLINE_ITALIC         In TYPEWRITE, render .FT I as underlined
-UNDERLINE_QUOTES         In TYPEWRITE, underline quotes? (toggle)
-UNDERLINE_SLANT          In TYPEWRITE, render \*[SLANT] as underlined
-
-***Table of contents***
-
-TOC_APPENDS_AUTHORS      Appends author(s) to toc doc title entries
-TOC_LEAD                 Leading of toc pages
-TOC_PADDING              Number of placeholders for toc entries page
-                         numbers
-TOC_HEAD_INDENT          Indent of toc head entries
-TOC_HEADER_STRING        TOC header string (default=Contents)
-TOC_PAGENUM_STYLE        Page numbering style (hdrftr nums) of
-                         toc pages
-TOC_RV_SWITCH            Switch L/R margins of toc pages
-TOC_PARAHEAD_INDENT      Indent of toc parahead entries
-TOC_SUBHEAD_INDENT       Indent of toc subhead entries
-TOC_TITLE_ENTRY          User supplied toc doc title entry
-TOC_TITLE_INDENT         Indent of toc doc title entries
-
-***Aliases for headers and footers***
-HEADER_SIZE           HDRFTR_SIZE
-HEADER_RIGHT_PS       HDRFTR_RIGHT_SIZE
-HEADER_RIGHT_SIZE     HDRFTR_RIGHT_SIZE
-HEADER_RIGHT_FAM      HDRFTR_RIGHT_FAMILY
-HEADER_RIGHT_FAMILY   HDRFTR_RIGHT_FAMILY
-HEADER_RIGHT_FONT     HDRFTR_RIGHT_FONT
-HEADER_RIGHT_FT       HDRFTR_RIGHT_FONT
-HEADER_LEFT_PS        HDRFTR_LEFT_SIZE
-HEADER_LEFT_SIZE      HDRFTR_LEFT_SIZE
-HEADER_LEFT_FAM       HDRFTR_LEFT_FAMILY
-HEADER_LEFT_FAMILY    HDRFTR_LEFT_FAMILY
-HEADER_LEFT_FONT      HDRFTR_LEFT_FONT
-HEADER_LEFT_FT        HDRFTR_LEFT_FONT
-HEADER_CENTRE_PS      HDRFTR_CENTER_SIZE
-HEADER_CENTRE_SIZE    HDRFTR_CENTER_SIZE
-HEADER_FAM            HDRFTR_FAMILY
-HEADER_FAMILY         HDRFTR_FAMILY
-HEADER_CENTRE_FAM     HDRFTR_CENTER_FAMILY
-HEADER_CENTRE_FAMILY  HDRFTR_CENTER_FAMILY
-HEADER_CENTRE_FONT    HDRFTR_CENTER_FONT
-HEADER_CENTRE_FT      HDRFTR_CENTER_FONT
-HEADER_CENTER_PS      HDRFTR_CENTER_SIZE
-HEADER_CENTER_SIZE    HDRFTR_CENTER_SIZE
-HEADER_CENTER_FAM     HDRFTR_CENTER_FAMILY
-HEADER_CENTER_FAMILY  HDRFTR_CENTER_FAMILY
-HEADER_CENTER_FONT    HDRFTR_CENTER_FONT
-HEADER_CENTER_FT      HDRFTR_CENTER_FONT
-FOOTER_SIZE           HDRFTR_SIZE
-FOOTER_RIGHT_PS       HDRFTR_RIGHT_SIZE
-FOOTER_RIGHT_SIZE     HDRFTR_RIGHT_SIZE
-FOOTER_RIGHT_FAM      HDRFTR_RIGHT_FAMILY
-FOOTER_RIGHT_FAMILY   HDRFTR_RIGHT_FAMILY
-FOOTER_RIGHT_FONT     HDRFTR_RIGHT_FONT
-FOOTER_RIGHT_FT       HDRFTR_RIGHT_FONT
-FOOTER_LEFT_PS        HDRFTR_LEFT_SIZE
-FOOTER_LEFT_SIZE      HDRFTR_LEFT_SIZE
-FOOTER_LEFT_FAM       HDRFTR_LEFT_FAMILY
-FOOTER_LEFT_FAMILY    HDRFTR_LEFT_FAMILY
-FOOTER_LEFT_FONT      HDRFTR_LEFT_FONT
-FOOTER_LEFT_FT        HDRFTR_LEFT_FONT
-FOOTER_CENTRE_PS      HDRFTR_CENTER_SIZE
-FOOTER_CENTRE_SIZE    HDRFTR_CENTER_SIZE
-FOOTER_FAM            HDRFTR_FAMILY
-FOOTER_FAMILY         HDRFTR_FAMILY
-FOOTER_CENTRE_FAM     HDRFTR_CENTER_FAMILY
-FOOTER_CENTRE_FAMILY  HDRFTR_CENTER_FAMILY
-FOOTER_CENTRE_FT      HDRFTR_CENTER_FONT
-FOOTER_CENTER_PS      HDRFTR_CENTER_SIZE
-FOOTER_CENTER_SIZE    HDRFTR_CENTER_SIZE
-FOOTER_CENTER_FAM     HDRFTR_CENTER_FAMILY
-FOOTER_CENTER_FAMILY  HDRFTR_CENTER_FAMILY
-FOOTER_CENTER_FONT    HDRFTR_CENTER_FONT
-FOOTER_CENTER_FT      HDRFTR_CENTER_FONT
-
-   *relative to #DOC_PT_SIZE
-  **relative to overall ps of headers as set by HEADER_SIZE
- ***relative to overall ps of endnotes pages
-****relative to overall ps of toc pages
-
-+++LETTER MACROS+++
-
-CLOSING      Closing (i.e. Yours truly,)
-DATE         Date for letters
-FROM         Addresser's name and address
-GREETING     Full salutation (e.g. Dear John Smith,)
-NO_SUITE     Remove suite page numbers from bottom of letter pages
-TO           Addressee's name and address
-ALL_DONE     .em (the "end macro") for letters
-
-+++SUPPORT+++
-
-CHECK_INDENT         Applies indents to doc elements inside ev's
-                     (head, subhead, etc)
-CLEANUP_DEFAULTS     Removes selected rregisters and strings
-                     from DEFAULTS after START
-DO_COVER             Formats and outputs covers
-DO_DOC_COVER         Formats and outputs doc covers
-D0_QUOTE             Outputs quotes with space adjustments before
-                     and after
-DIVER_FN_1_PRE  -+     
-DIVER_FN_2_PRE   |   Manage footnotes called inside diversions
-                 |   QUOTE, BLOCKQUOTE and EPIGRAPH
-DIVER_FN_2_POST -+
-DIVERT_FN_LEFTOVER   Diverts excess fn stored in FN_OVERFLOW into
-                     FOOTNOTE
-DIVERT_FN_OVERFLOW   Diverts excess fn stored in FN_OVERFLOW when
-                     FN_DEFER into FOOTNOTE
-DO_EPIGRAPH          Outputs epigraphs with space adjustments before
-                     and after
-FN_OVERFLOW_TRAP     Fixed at B_MARGIN; if footnotes run longer than
-                     B_MARGIN, diverts excess into FN_OVERFLOW
-GET_ROMAN_INDENT     Figures out amount of space to reserve
-                     for roman numerals in lists
-HDRFTR_RULE          Prints rule under header or over footer
-MN_OVERFLOW_TRAP     Trap-invoked macro to collect margin note
-                     overflows
-PRINT_FOOTNOTE_RULE  An alias of PRINT_FOOTNOTE; prints footnote
-                     separator rule
-PRINT_HDRFTR         Prints header/footer (trap invoked)
-PRINT_PAGE_NUMBER    Invoked in HEADER or FOOTER
-PRINT_USERDEF_HDRFTR Prints user defined, single string recto/verso
-                     header/footer
-PROCESS_SHIM         Calculates #SHIM when \n(.d is lower on the
-                     page than #T_MARGIN
-PROCESS_FN_IN_DIVER  Processes footnotes gathered in a diversion (called
-                     at page/column breaks)
-REMOVE_INDENT        Removes indents set with CHECK_INDENT
-Q_FITS               Handles spacing of quotes when quote fits on the page
-Q_NOFIT              Handles spacing of quotes when quote does not fit on
-                     the page
-QUIT_LISTS           Exit lists cleanly and completely
-SET_LIST_INDENT      Restore indent of a prev. level of list
-SHIM                 Advance to next "legal" baseline
-TERMINATE            .em that ensures deferred footnotes get output
-                     on final pages
-TRAPS                Sets hdrftr traps; optionally adjusts #DOC_LEAD
-                     to fill page to #B_MARGIN
-TYPEWRITER           Sets family (C), font (R) and point size (12)
-                     for PRINTSTYLE TYPEWRITE
-VFP_CHECK            Trap-sprung macro 1 legal baseline higher than
-                     where FOOTER will be sprung; checks whether
-                     there is, in fact, just enough room for
-                     another line of running text to be added to
-                     the page without jamming footnotes too close
-                     to running text.
-
-+++DIVERSIONS+++
-
-B_QUOTE           Block (indented) quote text
-CLOSING           Closing (i.e. Yours truly,)
-EPI_TEXT          Epigraph text
-END_NOTES         Endnotes text
-FN_IN_DIVER       Footnotes gathered from inside a diversion
-FN_OVERFLOW       Excess footnotes when B_MARGIN is reached
-FOOTNOTES         Text of footnotes
-GREETING          Full salutation (e.g. Dear John Smith,)
-LETTERHEAD<n>     Date, addresser, addressee or greeting;
-                  <n> is from 1 to 4, supplied by #FIELD
-P_QUOTE           Line for line (poetic) quote text
-RUNON_FOOTNOTES   Special diversion for run-on footnotes
-RUNON_FN_IN_DIVER Special diversion for run-on footnotes inside
-                  (block)quotes
-TOC_ENTRIES       TOC entries
-
-+++NUMBER REGISTERS+++
-
-#1ST_FN_VP_ADJ             An adjustment factor that ensures VFP
-                           doesn't fall below what should be the
-                           correct last printed line of running
-                           text
-#ADD_BREAK                 Instructs FOOTNOTEs and ENDNOTEs to add
-                           a break afer processing a footnote if
-                           we're not in fill mode
-#ADJ_BIB_LEAD              Adjust BIB_LEAD? (toggle)
-#ADJ_DOC_LEAD              Adjust DOC_LEAD? (toggle)
-#ADJ_TOC_LEAD              Adjust TOC_LEAD? (toggle)
-#ARG_NUM                   Keeps track of number of args passed to a
-                           macro
-#ARGS_TO_LIST              Was LIST passed some args? (toggle)
-#AUTHOR_[n]                Strings passed to AUTHOR
-#AUTHOR_LINES              # of lines of authors in doc header; odd=0
-                           even=1
-#AUTHOR_NUM                Keeps track of user-defined string
-                           AUTHOR_<#> in AUTHOR
-#AUTHORS                   Equals final value of AUTHOR_NUM;
-                           used for authors in doc header
-#BASELINE_MARK             In PP, the vertical position on the page
-                           (when paragraph spacing is on) after a
-                           quote or blockquote has been output and
-                           the post-quote space has been added.
-#BMARG                     Position of unvarying bottom margin
-                           during doc processing; required for
-                           collecting footnotes inside diversions
-#BIB_ALLOWS_HEADERS        Put headers on bib pages? (toggle)
-#BIB_ALLOWS_HEADERS_ALL    Put headers on all bib pages? (toggle)
-#BIB_FIRST_PAGE            Tells PRINT_PAGE_NUMBER about bibliography
-                           first page number
-#BIB_FIRST_PN              Starting pagenumber for bibliographies
-#BIB_HDRFTR_CENTER         Put a center string in bib page headers?
-                           (toggle)
-#BIB_LEAD                  Bibliography lead, expressed in points
-#BIB_LIST                  Output bibs in list style? (toggle)
-#BIB_NO_COLS               De-columnize bibliographies? (toggle)
-#BIB_NO_FIRST_PN           Put a page number on the first page of
-                           bibliographies? (toggle)
-#BIB_SINGLESPACE           Single-space TYPEWRITE bibliographies? (toggle)
-#BIB_SPACE                 Post item space for bibliography pages
-#BIB_STRING_CAPS           Capitalize bib title? (toggle)
-#BIB_STRING_UNDERSCORE     Underscore bib title? 0=no; 1=yes; 2=double
-#BIB_PS                    Base point size for bibliography pages expressed
-                           in points
-#BIBLIOGRAPHY              Are we doing a bib page? (toggle)
-#BQ_AUTOLEAD               Register created by BLOCKQUOTE_AUTOLEAD
-#BQ_LEAD                   Leading of blockquotes
-#BQUOTE_COLOR              Colored blockquotes? (toggle)
-#BQUOTE_LN                 Number blockquotes? (toggle)
-#BROKEN_QUOTE              Did we invoke BREAK_QUOTE? (toggle)
-#CAP_HEIGHT_ADJUST         Tallest cap height of strings LEFT, CENTER,
-                           and RIGHT in footers; used to place rule
-                           over footer
-#CAPS_WAS_ON               In HDRFTR, to re-enable running text CAPS
-                           (toggle)
-#CENTER_CAP_HEIGHT         Cap height of CENTER string in
-                           headers/footers
-#CHAPTER_TITLE_COLOR       Colored chapter title? (toggle)
-#CLOSING                   Is there a closing (for letters)? 1=yes
-#COL_L_LENGTH              Line length of columns
-#COL_NEXT                  Was COL_NEXT invoked? (toggle; used in
-                           FOOTER)
-#COL_NUM                   Incrementing counter of num of columns;
-                           for use with #COL_<#>_L_MARGIN
-#COL_TOTAL                 #COL_L_LENGTH + #GUTTER; used to calculate
-                           #COL_<#>_L_MARGIN
-#COLLATED_DOC              If 1, instructs TOC that this is a collated
-                           doc
-#COLUMNS                   Are columns turned on? (toggle)
-#COLUMNS_WERE_ON           Stores columnar state prior to outputting
-                           endnotes in no-columns mode
-#COPY_STYLE                1=draft, 2=final
-#COUNTERS_RESET            Tells FOOTNOTE if fn counters have
-                           been reset because of footnotes gathered
-                           inside a diversion
-#COVER_COLOR               Colored cover? (toggle)
-#COVER_START_POS           Vertical starting pos of cover material
-#COVER_TITLE_COLOR         Colored cover title? (toggle)
-#COVER_SUBTITLE_COLOR      Colored cover subtitle? (toggle)
-#COVER_ATTRIBUTE_COLOR     Colored cover attribution string? (toggle)
-#COVER_AUTHOR_COLOR        Colored cover author(s)? (toggle)
-#COVER_DOCTYPE_COLOR       Colored cover doctype? (toggle)
-#COVER_COPYRIGHT_COLOR     Colored cover copyright line? (toggle)
-#COVER_MISC_COLOR          Colored cover misc line? (toggle)
-#CURRENT_V_POS             \n(.d ; used in SHIM
-#COVERS                    Print covers? (toggle)
-#DATE_FIRST                Was .DATE invoked as first letter
-                           header after .START? (toggle)
-dc                         "mark" register for document columns
-#DIVER_FN                  Register that tells FOOTNOTE whether to
-                           "move" or "defer" a footnote collected
-                           inside a diversion
-#DEFER_BIB_SPACING         Tells DEFAULTS to do BIBLIOGRAPHY_SPACING
-                           if it was called before START
-#DEFER_PAGINATION          Tells COLLATE to restore pagination (from
-                           RESTORE_PAGINATION
-#DELAY_SHIM                Instructs DO_QUOTE to delay SHIM when quote
-                           falls at the top of a page
-#DEPTH_1                   Doc header depth with lead adjustment
-                           (#DOCHEADER_LINES * #DOCHEADER_LEAD)
-#DEPTH_2                   Doc header depth without lead adjustment
-                           (#DOCHEADER_LINES * #DOC_LEAD)
-#DEPTH_TO_B_MARGIN         Page length minus #B_MARGIN
-#DIVERSIONS_HY_MARGIN      A reasonable value for .hym applied to
-                           QUOTE, BLOCKQUOTE and EPIGRAPH to
-                           avoid excessive hyphenation if these are
-                           set quad left
-#DIVERTED                  Set to 1 in DIVERT_FN_OVERFLOW; reset
-                           subsequently in FOOTNOTES when called by
-                           PROCESS_FN_LEFTOVER to 2 or 3 for use by
-                           FOOTER to decide whether to in/decrease
-                           #FN_DEPTH when outputting footnotes
-#DOCHEADER_ADVANCE         Distance from top-of-page to baseline of
-                           docheader
-#DOCHEADER_COLOR           Colored docheader? (toggle)
-#DOCHEADER_LEAD            Lead of doc header
-                           (#DOC_LEAD + #DOCHEADER_LEAD_ADJ)
-#DOCHEADER_SPACE_ADJ       Lead difference between #DEPTH_1 and
-                           #DEPTH_2
-#DOC_COVER_START_POS       Vertical starting pos of doc cover material
-#DOC_COVERS                Print doc covers? (toggle)
-#DOC_COVER_COLOR           Colored cover? (toggle)
-#DOC_COVER_START_POS       Vertical starting pos of cover material
-#DOC_COVER_TITLE_COLOR     Colored doc cover title? (toggle)
-#DOC_COVER_SUBTITLE_COLOR  Colored doc cover subtitle? (toggle)
-#DOC_COVER_ATTRIBUTE_COLOR Colored doc cover attribution string? (toggle)
-#DOC_COVER_AUTHOR_COLOR    Colored doc cover author(s)? (toggle)
-#DOC_COVER_DOCTYPE_COLOR   Colored doc cover doctype? (toggle)
-#DOC_COVER_COPYRIGHT_COLOR Colored doc cover copyright line? (toggle)
-#DOC_COVER_MISC_COLOR      Colored doc cover misc line? (toggle)
-#DOC_HEADER                Whether to print a doc header (toggle)
-#DOC_LEAD_ADJ              Incrementing value (in units) added to
-                           #DOC_LEAD to fill page to #B_MARGIN
-#DOC_LEAD                  Leading used in body
-#DOC_L_LENGTH              Global L_LENGTH
-#DOC_L_MARGIN              Global L_MARGIN
-#DOC_LR_MARGIN_TMP         In HEADER, if RECTO_VERSO=1, temporarily
-                           holds DOC_L_MARGIN during page margin switch
-#DOC_PT_SIZE               Point size used for body text
-#DOC_R_MARGIN              Global R_MARGIN
-#DOCS                      Always 1 after START
-#DOC_TYPE                  1=default, 2=chapter, 3=named, 4=letter
-#DOING_COVER               Tells PRINT_AUTHORS that it's printing
-                           the authors for a cover or doc cover
-#DONE_ONCE                 Keeps track of how many times footnotes
-                           have been collected inside the same diversion
-#DONT_RULE_ME              Rule this (apparent) first footnote? (toggle)
-#DIVER_LN_OFF              Turn linenumbering off in (block)quotes?
-                           (toggle)
-#DRAFT_WITH_PAGENUM        Are we attaching draft/revision info to page
-                           number? (toggle)
-#EM_ADJUST                 Amount to raise \(em at END
-#EN_ALLOWS_HEADERS         Put page headers on endnotes pages? (toggle)
-#EN_ALLOWS_HEADERS_ALL     Put page headers on all endnotes pages?
-                           (toggle)
-#EN_BQ_AUTOLEAD            Register created by EN_BLOCKQUOTE_AUTOLEAD
-#EN_BQ_LEAD                Leading of blockquotes on endnotes pages
-#EN_FIGURE_SPACE           Width of \0, for use with formatting endnotes
-#EN_FIRST_PAGE             Tells PRINT_PAGE_NUMBER about endnotes
-                           first page number
-#EN_FIRST_PN               Page number that appears on page 1 of
-                           endnotes pages.
-#EN_HDRFTR_CENTER          Should we print centre string of
-                           headers/footers on endnotes pages? (toggle)
-#EN_LEAD                   Lead of endnotes
-#EN_LN_BRACKETS            Are we using brackets for line-numbered
-                           endnotes (toggle)
-#EN_LN_SEP                 Are we using a separator for line-numbered
-                           endnotes (toggle)
-#EN_MARK                   \n(ln when \*[EN-MARK] is called
-#EN_MARK_2                 \n(ln when ENDNOTE is called
-#EN_MARKER_STYLE           1=NUMBER; 2=LINE
-#EN_NO_COLS                Do not set endnotes in columns? (toggle)
-#EN_NO_FIRST_PN            Put pagenumber on 1st page of endnotes?
-                           (toggle)
-#EN_NUMBERS_ALIGN_RIGHT    Hang and align endnote numbers right?
-                           (toggle)
-#EN_NUMBERS_ALIGN_LEFT     Align endnote numbers with left margin?
-                           (toggle)
-#EN_NUMBERS_PLACEHOLDERS   Number of placeholders when endnote numbers
-                           hang and align right
-#EN_NUMBER_L_LENGTH        Line length for endnote numbers when they're
-                           right aligned
-#EN_PP_INDENT              First line indent of paras in multi-para
-                           endnotes
-#EN_PP_SPACE               Space multi-paras in endnotes? (toggle)
-#EN_PS                     ps of endnotes
-#EN_Q_AUTOLEAD             Register created by EN_QUOTE_AUTOLEAD
-#EN_Q_LEAD                 Leading of quotes on endnotes pages
-#EN_REF                    Put REFs in endnotes? (toggle)
-#EN_SINGLESPACE            Single space endnotes pages? (toggle)
-#EN_STRING_CAPS            Should ENDNOTES capitalize the endnotes
-                           string? (toggle)
-#EN_STRING_UNDERSCORE      Underscore endnotes page head? (toggle)
-#EN_TITLE_UNDERSCORE       Underscore endnotes document identifier?
-                           (toggle)
-#EN_TEXT_INDENT            Page offset for text of endnotes when
-                           numbers right align
-#END_QUOTE                 For PP=0 indenting; did we just end a quote?
-                           (toggle)
-#ENDNOTE                   Are we in an endnote? (toggle)
-#ENDNOTE_REFS              Are REFs going to endnotes? (toggle)
-#ENDNOTES                  Are we in an endnote (for FOOTERs; toggle)
-#EPI_ACTIVE                Are we in an epigraph? (toggle)
-#EPI_COLOR                 Colored epigraphs? (toggle)
-#EPI_DEPTH                 Depth of epigraph from first baseline to
-                           last
-#EPI_FITS                  Does epigraph fit on page/column? (toggle)
-#EPIGRAPH                  Did we have an epigraph? (toggle) 
-#EPI_LEAD_DIFF             Difference between #DOC_LEAD and #EPI_LEAD
-#EPI_LEAD                  Leading of epigraph; set by AUTOLEAD
-#EPI_LINES_EVEN            Even # of lines at end of epi crossing page in
-                           TYPEWRITE (d-spaced)?
-#EPI_LINES                 Number of lines in the epigraph
-#EPI_LINES_TO_END          Number of epigraph lines remaining after
-                           footer trap is sprung
-#EPI_LINES_TO_TRAP         Number of epigraph lines till footer trap is
-                           sprung
-#EPI_L_LENGTH              Epigraph line length
-#EPI_OFFSET                Left margin of epigraphs
-#EPI_OFFSET_VALUE          Epigraph indent as a function of page offset
-#EPI_ON                    Are we in an epigraph? (toggle)
-#EPI_WHITESPACE            Space after epigraph to compensate for
-                           epigraph leading
-#FIELD                     Incrementing register tacked onto LETTERHEAD
-#FINIS                     Was FINIS invoked? (toggle)
-#FINIS_COLOR               Colored FINIS? (toggle)
-#FN_AUTOLEAD               Autolead value of footnotes
-#FN_BL_INDENT              Left indent of INDENT BOTH in footnotes
-#FN_BR_INDENT              Right indent of INDENT BOTH in footnotes
-#FN_COUNT                  Which fn marker to print; also to
-                           tell mom to reserve space for and print
-                           the rule above footnotes
-#FN_COUNT_AT_FOOTER        The FN_COUNT after FOOTNOTES has been
-                           output in FOOTER
-#FN_COUNT_FOR_COLS         Holds a separate footnote count for columns
-                           (so they don't reset to 0 1 until page break)
-#FN_DEFER                  Defer footnote to next page/column? (toggle)
-                           If 0, don't defer.
-#FN_DEFER_SPACE            Whether to deposit space before
-                           footnote 1 because there's a deferred
-                           footnote on the page
-#FN_DEPTH                  Depth of footnote diversion(s)
-#FN_FOR_EPI                Signals to epigraph that a footnote is being
-                           processed
-#FN_GAP                    When there are footnotes on a page, the
-                           difference between where FOOTER will be
-                           sprung and the next legal baseline.
-                           Used in VFP_CHECK.
-#FN_LEAD                   Lead in footnotes after FN_AUTOLEAD is
-                           applied
-#FN_L_INDENT               Left indent of INDENT LEFT in footnotes
-#FN_LINES                  Number of lines in fn; used to calculate
-                           fn depth
-#FN_LN_BRACKETS            Are footnote linenumber brackets being used?
-                           (toggle)
-#FN_LN_SEP                 Is a footnote linenumber separator being used?
-                           (toggle)
-#FN_MARK                   \n(ln when \*[FN-MARK] is called
-#FN_MARK_2                 \n(nl when FOOTNOTE is called
-#FN_MARKERS                Print footnote markers? (toggle)
-#FN_MARKER_STYLE           1=STAR; 2=NUMBER
-#FN_NUMBER                 The footnote number attached to running text
-                           (and fns) when numbers instead of
-                           star/dagger is being used for footnootes
-                           numbers
-#FN_OVERFLOW_TRAP_POS      The register that sets the position of
-                           trap FN_OVERFLOW_TRAP.
-#FN_R_INDENT               Right indent of INDENT RIGHT in footnotes
-#FN_REF                    Put REFs in footnotes? (toggle)
-#FN_RULE_ADJ               # of points to raise footnote separator from
-                           its baseline
-#FN_RULE_LENGTH            Length of footnote separator rule
-#FN_RULE                   Print fn rule? (toggle)
-#FN_SPACE                  Post footnote space
-#FN_WAS_DEFERED            Tells HEADER about a deferred footnote
-#FOOTER_DIFF               In TRAPS, the difference between the
-                           original #B_MARGIN and #VISUAL_B_MARGIN
-#FOOTER_GAP                Amount of space between end of text and
-                           page #
-#FOOTER_MARGIN             Amount of space between page # and bottom
-                           of page
-#FOOTER_POS                Position of footer trap (required for
-                           collecting footnotes inside a diversion)
-#FOOTERS_ON                Are we using footers? (toggle)
-#FOOTERS_WERE_ON           Were footers on? - used in FINIS and BLANKPAGE
-                           (toggle)
-#FOOTNOTE_COLOR            Colored footnotes? (toggle)
-#FROM_DIVERT_FN            Signals to FOOTNOTE, when run from
-                           within DIVERT_FN_LEFTOVER, to set #SPACE_REMAINING
-                           to the total area allowable for running text
-#FROM_FOOTER               In col to col footnote processing, tells
-                           FOOTNOTE that FOOTNOTES was output from
-                           FOOTER.
-#FROM_HEADER               In col to col footnote processing, tells
-                           FOOTNOTE that FOOTNOTES was output from
-                           HEADER.
-#FULLSPACE_QUOTES          Should we fullspace quotes? (toggle)
-#GET_DEPTH                 Signals to FOOTNOTE that it should
-                           measure the depth of current footnotes
-                           plus the most recently added one, except
-                           where the footnote is to be deferred to
-                           the next page or column
-#GUTTER                    Width of gutter between columns
-#HDRFTR_CENTER_CAPS        CENTER part of header/footer in caps?
-                           (toggle; default=off)
-#HDRFTR_COLOR              Colored headers/footers? (toggle)
-#HDRFTR_CTR_PAD_LEFT       Amount of hdrftr CENTER padding on the left
-#HDRFTR_CTR_PAD_RIGHT      Amount of hdrftr CENTER padding on the right
-#HDRFTR_CTR_PAD_TMP        Temp storage of left hdrftr CENTER padding
-                           (for recto/verso switch)
-#HDRFTR_HEIGHT             Cap height of $HDRFTR_RECTO/$HDRFTR_VERSO
-                           strings
-#HDRFTR_LEFT_CAPS          Left part of header/footer in caps?
-                           (toggle; default=off)
-#HDRFTR_RIGHT_CAPS         Right part of header/footer in caps?
-                           (toggle; default=on)
-#HDRFTR_RULE_COLOR         Colored header/footer rule? (toggle)
-#HDRFTR_RULE_GAP           Space between header/footer and
-                           header/footer rule
-#HDRFTR_RULE               Print head/footer rule? (toggle)
-#HDRFTR_TMP_CAPS_SWITCH    Temporarily holds HDRFTR_LEFT_CAPS value if
-                           #SWITCH_HDRFTR=1
-#HEAD                      1=main/section head 2=subhead
-#HEAD_CAPS                 Print section titles in caps? (toggle)
-#HEAD_COLOR                Colored heads? (toggle)
-#HEADER_GAP                Distance from header to running text
-#HEADER_MARGIN             Distance from top of page to header
-#HEADERS_ON                Headers on? (toggle)
-#HEADER_STATE              Saves header state in COLLATE for use in
-                           START after COLLATE
-#HEADERS_WERE_ON           Were headers on? - used in BLANKPAGE (toggle)
-#HEAD_NUM                  Head number
-#HEAD_SPACE                2 line spaces before heads?
-                           (toggle; 1=yes, 0=no)
-#HORIZ_MARK                Horizontal 
-#HOW_MANY                  Number of blank pages to output
-#IGNORE                    Should we ignore this macro? Set to 1 in
-                           TYPEWRITE.
-#IN_BIB_LIST               Tells ITEM we're doing a bibliography in
-                           list style
-#INDENT_FIRST_PARAS        Indent first paras? (toggle)
-#INDENT_FIRSTS             Tells footnotes to leave INDENT_FIRST_PARAS
-                           alone if it's on for running text.
-#ITALIC_MEANS_ITALIC       For TYPEWRITE.  1=yes; 0=no
-#L_LENGTH_FOR_EPI          Stores line length at top of doc for use
-                           with EPIGRAPH when columns are on
-#L_MARGIN_DIFF             Difference between DOC_L_MARGIN and
-                           L_MARGIN
-#LEFT_CAP_HEIGHT           Cap height of left string in headers/footers
-#LEGAL_BASELINE            Calculates vert. position of next legal
-                           baseline in SHIM
-#LETTER_STYLE              1=BUSINESS 2=PERSONAL
-#LINEBREAK                 Did we have a linebreak? (toggle)
-#LINEBREAK_COLOR           Colored linebreak? (toggle)
-#LINENUMBERS               Holds various states of line-numbering when
-                           line numbering is enabled
-#LINES_PER_PAGE            # of lines (at DOC_LEAD) that fit on
-                           page after #B_MARGIN is set
-#LN                        Are line numbers on? (toggle)
-#MISC_<n>            Used to print "next" misc lines in DO_COVER
-#MISC_NUM                  Number of MISC lines
-#MISCS                     =#MISC_NUM in DO_COVER
-#MN_OVERFLOW_LEFT          If 1, left margin note text overflows
-#MN_OVERFLOW_RIGHT         If 1, right margin note text overflows
-#n%_AT_PAGENUM_SET         Page # from n% when PAGENUMBER invoked
-#NEEDS_SPACE               Instruct FOOTNOTE, when called by
-                           PROCESS_FN_IN_DIVER, that if the footnote
-                           had to be deferred, the VFP must be
-                           raised by 1v (set in DIVER_FN_2_PRE)
-#NEXT_AUTHOR               Supplies correct digit to AUTHOR_<#>
-                           when printing authors in doc header
-#NEXT_LN                   Next linenumber when \n(ln has to be stored
-                           because linenumbering suspended
-#NEXT_MISC                 Incrementing counter for misc lines in
-                           DO_COVER
-#NO_BACK_UP                Instructs FN_OVERFLOW_TRAP not to
-                           subtract 1 line of footnote lead from
-                           FN_OVERFLOW in a PREV_FN_DEFERRED
-                           situation.
-#NO_SPACE                  When para spacing is active, instructs
-                           PP not to add space after a quote or blockquote.
-#NO_TRAP_RESET             Should we reset page traps? (toggle)
-#NUM_AUTHORS               # of authors mod 2 to test if odd or even
-                           # of authors
-#NUM_MISCS                 Number of args passed to MISC
-#NUMBER_HEAD               Are heads numbered? (toggle)
-#NUMBER_PH                 Are paraheads numbered? (toggle)
-#NUMBER_SH                 Are subheads numbered? (toggle)
-#NUM_COLS                  Number of columns per page
-#NUM_FIELDS                Incrementing register used to match
-                           #TOTAL_FIELDS
-#OK_PROCESS_LEAD           Initial processing of TOC and endnote
-                           leading is deferred until OK_PROCESS_LEAD=1
-#ORIGINAL_B_MARGIN         The value for #B_MARGIN as set by the
-                           macro B_MARGIN
-#ORIGINAL_DOC_LEAD         The lead for PRINT_STYLE 1 as set in
-                           PRINTSTYLE; required so that PRINT_STYLE 1
-                           footnotes have an unadjusted lead of
-                           12 points
-#OVERFLOW                  Signals to FOOTNOTE that some of the
-                           footnote text won't fit on the page
-#PAGE_NUM_ADJ              What to add to n% to get #PAGENUMBER
-#PAGENUMBER                The page number
-#PAGENUM_STYLE_SET         Did we set pagenumber style? (toggle)
-#PAGE_NUM_H_POS            1=left 2=CENTER 3=right; default=2
-#PAGE_NUM_COLOR            Colored pagenumbers? (toggle)
-#PAGE_NUM_HYPHENS          Print hyphens surrounding page numbers?
-                           (toggle)
-#PAGE_NUM_HYPHENS_SET      Did user set (or unset) hyphens around page
-                           numbers? (toggle)
-#PAGE_NUM_POS_SET          Did user set page number position? (toggle)
-#PAGE_NUM_SET              Test if PAGE_1_NUM was used to set 1st page
-                           number
-#PAGE_NUMS                 Print page numbers? (toggle)
-#PAGE_NUM_V_POS            1=top 2=bottom; default=2
-#PAGE_TOP                  \n(nl after HEADER completes itself
-#PH_COLOR                  Colored paraheads? (toggle)
-#PH_NUM                    Parahead number
-#PAGE_POS                  Exact position on page during a diversion
-                           (required for collecting footnotes inside
-                           a diversion)
-#PAGINATE_TOC              Is toc pagination on? (toggle)
-#PAGINATE_WAS_ON           Keeps track of pagination state while
-                           outputting blank pages
-#PAGINATION_STATE          Saves pagination state in COLLATE for use in
-                           START after a COLLATE
-#PAGINATION_WAS_ON         Was pagination on? - used in FINIS (toggle)
-#PP                        0 at first para; auto-increments
-#PP_AT_PAGE_BREAK          # of last (incl. partial) para on page
-#PP_INDENT                 How much to indent paras
-#PP_SPACE                  Put space before paras? (toggle)
-#PP_SPACE_SUSPEND          Suspend para spacing for blockquotes and
-                           epigraphs
-#PP_STYLE_PREV             In footnotes, stores PP style in effect
-                           prior to invoking FOOTNOTE
-#PP_STYLE                  Regular para=1; quote or epi para=2
-#PRINT_PAGENUM_ON_PAGE_1   Should we print the page number on first
-                           page of doc when footers are on? (toggle)
-#PRINT_STYLE               Typewrite=1, typeset=2
-#PT_SIZE_IN_UNITS          Stored value of \n[.ps] from last time
-                           PT_SIZE was called
-#Q_AUTOLEAD                Register created by QUOTE_AUTOLEAD
-#Q_DEPTH                   Depth of quote
-#Q_FITS                    Does this quote fit on one page/column?
-                           (toggle)
-#Q_LEAD                    Leading of quotes
-#Q_LEAD_DIFF               Difference between leading of running text
-                           and the leading used in quotes/blockquotes
-#Q_LEAD_REAL               Leading of quotes and blockquotes saved at the
-                           ends of their respective diversions
-#Q_L_LENGTH                Line length of quotes
-#Q_OFFSET                  Page offset for quotes
-#Q_OFFSET_VALUE            Factor by which to multiply PP_INDENT to
-                           offset quotes
-#Q_PARTIAL_DEPTH           The amount of a quote/blockquote that fits at
-                           the bottom of a page when a quote/blockquote
-                           spans pages
-#Q_PP                      In PP, stores para # in QUOTE.  Removed in
-                           ENDQUOTE.
-#Q_SPACE_ADJ               The flexible amount of whitespace to add before
-                           and after a quote/blockquote
-#Q_TOP                     Vertical place on page that a quote starts
-#QUOTE                     1=PQUOTE, 2=BQUOTE
-#QUOTE_COLOR               Color quotes (poetic)? (toggle)
-#QUOTE_LN                  Linenumber quotes? (toggle)
-#RECTO_VERSO               Switch HEADER_LEFT and HEADER_RIGHT on
-                           alternate pages? (toggle); default=0
-#REF_HYPHENATE             Hyphenate REFs? (toggle)
-#REF_WARNING               Have we issued a ref warning? (toggle)
-#REPEAT                    Number of times to repeat linebreak
-                           character
-#RESERVED_SPACE            Just enough room to put 1 more line of
-                           footnotes on the page
-#RESET_EN_PP               Holds value of register #EN_PP_INDENT
-#RESET_FN_COUNTERS         1 = "moved" footnote collected in a diversion
-                           2 = "deferred" fn collected in a diversion
-#RESET_FN_NUMBER           Should fn# start at 1 on every page?
-                           (toggle)
-#RESET_L_LENGTH            Stores current line length when necessary
-#RESET_PARA_SPACE          Holds current value of toggle register
-                           #PP_SPACE
-#RESET_PP_INDENT           Stores value of PP_INDENT when necessary
-#RESET_QUOTE_SPACING       Stores value of toggle register
-                           #FULLSPACE_QUOTES (used in endnotes)
-#RESTORE_DOC_LEAD          Holds value of current doc lead (used in
-                           endnotes)
-#RESTORE_HY                Restore hyphenation after .][? (toggle)
-#RESTORE_OFFSET            Page offset at moment footer trap is sprung;
-                           not currently used
-#RESTORE_TOC_PN_PADDING    Saves #TOC_PN_PADDING in TOC prior to
-                           processing $FIRST_DOC_TITLE
-#RIGHT_CAP_HEIGHT          Cap height of right string in
-                           headers/footers
-#RULED                     Tells FOOTNOTE if a rule (or space has been
-                           put above the first footnote on the page
-#RUNON_FN_IN_DIVER         If #LN=1, if we're in a (block)quote, instructs
-                           FOOTNOTE to unformat diversion RUNON_FN_IN_DIVER
-#RUNON_FOOTNOTES           If #LN=1, instructs FOOTNOTE to unformat
-                           diversion RUNON_FOOTNOTES
-#RUN_ON                    Are we using run-on footnotes? (toggle)
-#SAVED_DIVER_FN_COUNT      In the case of a footnote inside a
-                           diversion that should be treated as a
-                           "normal" footnote, FOOTNOTE needs to
-                           distinguish between a "normal" deferred
-                           footnote (always the 1st footnote on the
-                           page) and one that only looks as if
-                           it should be deferred, when, in fact,
-                           it's an overflow; this register lets
-                           FOOTNOTE know whether the diversion
-                           footnote is, in fact, the first on the
-                           page.
-#SAVED_FN_COUNT            #FN_COUNT+1 prior to +#FN_COUNT; used
-                           in FOOTNOTES while gathering fns inside
-                           diversions
-#SAVED_FN_COUNT_FOR_COLS   #FN_COUNT_FOR_COLS+1 prior to
-                           +#FN_COUNT_FOR_COLS; used in FOOTNOTES
-                           while gathering fns inside diversions
-#SAVED_FN_DEPTH_1          Footnote depth prior to adding footnote
-                           diversion depth to FN_DEPTH; used when
-                           footnote text will overflow
-#SAVED_FN_DEPTH_2          Footnote depth after to adding footnote
-                           diversion depth to FN_DEPTH; used when
-                           footnote text will overflow
-#SAVED_FOOTER_POS          Position of FOOTER in DO_QUOTE (hack)
-#SAVED_LEAD                In FOOTER and DO_FOOTER, stores the
-                           lead in effect prior to outputting
-                           FOOTNOTES or performing either
-                           PROCESS_FN_LEFTOVER or
-                           PROCESS_FN_IN_DIVERSION; both the
-                           diversion FOOTNOTES and the two macros
-                           have, for PRINT_STYLE 2, an AUTOLEAD
-                           call, which requires that an LS be
-                           performed with the #SAVED_LEAD in
-                           order to remove register #AUTO_LEAD or
-                           #AUTO_LEAD_FACTOR.
-#SEP_TYPE                  Set to 1 if LIST separator is ( or [ or {
-#SH_LEAD_ADJUST            #DOC_LEAD/8 (TYPESET) or /2 (TYPEWRITE)
-                           (used for subhead spacing)
-#SH_NUM                    Subhead number
-#SHIM                      Amount of lead required to advance to
-                           next legal baseline
-#SILENT_BQUOTE_LN          "Silently" linenumber blockquotes? (toggle)
-#SILENT_QUOTE_LN           "Silently" linenumber quotes? (toggle)
-#SINGLE_SPACE              Is TYPEWRITE in single space mode? (toggle)
-#SKIP_FOOTER               If 1, instructs DO_FOOTER to do nothing
-                           if B_MARGIN falls below FOOTER_MARGIN
-#SLANT_MEANS_SLANT         For TYPEWRITE.  1=yes; 0=no
-#SLANT_WAS_ON              Keeps track of SLANT when it needs to go off
-                           for a while
-#SPACE_REMAINING           Space remaining to footer trap; used to
-                           decide whether or not to defer a footnote
-#SR_ADJ_FACTOR             An adjustment factor that compensates
-                           for the fact that #SPACE_REMAINING
-                           sometimes reports a fractionally larger
-                           space than is actually available for
-                           footnote text.
-#START                     If 1, signals completion of START
-#START_FOR_FOOTERS         Toggle set in START; signals to
-                           PRINT_HDRFTR that START has been invoked,
-                           allowing PRINT_HDRFTR to decide whether or
-                           not to print a footer on page 1
-#START_FOR_MNinit          If 1, defer processing MN_INIT until #START
-#STORED_PP_INDENT          Temporarily holds value of #PP_INDENT
-#SUITE                     Current page number (for letters)
-#SUP_PT_SIZE               Point size of superscript
-#SUSPEND_PAGINATION        Suspend pagination prior to endnotes?
-#SWITCH_HDRFTR             Switch HDRFTR_LEFT and HDRFTR_RIGHT?
-                           (toggle)
-#T_MARGIN_LEAD_ADJ         \n(.v-12000; ensures critically accurate
-                           placement of first lines on pages when
-                           doc processing is not being used and
-                           a T_MARGIN has been set
-#TAB_OFFSET#               "#" at the end is from $CURRENT_TAB
-#TERMINATE                 Has TERMINATE been called? (toggle)
-#TOC_AUTHORS               Whether to append author(s) to toc doc
-                           title entries (toggle)
-#TOC_ENTRY_PN              Current page number when a toc entry is
-                           collected
-#TOC_FIRST_PAGE            If 1, tells PRINT_PAGE_NUMBER that this
-                           is the first page of the toc
-#TOC_LEAD                  Leading of toc pages
-#TOC_PN_PADDING            Max. # of placeholders for toc entries
-                           page numbers
-#TOC_PS                    Point size of toc pages
-#TOC_RV_SWITCH             Switch L/R margins of toc pages
-#TOC_HEAD_INDENT           Indent of toc head entries
-#TOC_HEAD_SIZE_CHANGE      ps in/decrease of toc head entries****
-#TOC_PH_INDENT             Indent of toc parahead entries
-#TOC_PH_SIZE_CHANGE        ps in/decrease of toc parahead entries****
-#TOC_SH_INDENT             Indent of toc subhead entries
-#TOC_SH_SIZE_CHANGE        ps in/decrease of toc subhead entries****
-#TOC_TITLE_INDENT          Indent of toc doc title entries
-#TOC_TITLE_SIZE_CHANGE     ps in/decrease of toc doc title entries****
-#TOTAL_FIELDS              Total number of letter header fields
-#UNDERLINE_ITALIC          For TYPEWRITE.  1=yes; 0=no
-#UNDERLINE_QUOTE           Underline pquotes? (toggle)
-#UNDERLINE_SLANT           For TYPEWRITE.  1=yes; 0=no
-#UNDERLINE_WAS_ON          In HEADER to re-enable running text
-                           UNDERLINE (toggle)
-#USERDEF_HDRFTR            User defined single string recto/verso
-                           header/footer? (toggle)
-#USERDEF_HDRFTR_RECTO_QUAD 1=left, 2=CENTER, 3=right
-#USERDEF_HDRFTR_VERSO_QUAD 1=left, 2=CENTER, 3=right
-#USER_DEF_HEADER_CENTER    User defined CENTER title? (1=yes);
-                           used in COPYSTYLE
-#USER_DEF_HEADER_LEFT      User defined CENTER title? (1=yes);
-                           used in COPYSTYLE
-#USER_DEF_HEADER_RIGHT     User defined CENTER title? (1=yes);
-                           used in COPYSTYLE
-#VARIABLE_FOOTER_POS       Wandering trap position for processing
-                           footnotes and footers; pos depends on
-                           footnotes
-#VISUAL_B_MARGIN           Set in TRAPS, what \n(nl would report
-                           on the last line of running text before
-                           FOOTER is sprung.
-#VFP_DIFF                  #FN_DEPTH minus #SAVED_FN_DEPTH; the
-                           number of footnote lines that will fit
-                           on the page when there will be over, and
-                           therefore the amount by which to raise
-                           the VFP for footnotes with overflow after
-                           the 1st footnote.
-y                          Vertical position stored with mk in hdrftrs.
- 
-+++STRINGS+++
-
-$1ST_LETTER                      First letter of first arg to LIST
-$ADJUST_BIB_LEAD                 2nd arg to BIBLIOGRAPHY_LEAD; if not blank
-                                 adjust bib leading
-$ATTRIBUTE_STRING               "by" line in doc header
-$AUTHOR_1...9                    Document author(s)
-$AUTHOR_FAM                      Family to use for author in doc header
-$AUTHOR_FT                       Font to use for author in doc header
-$AUTHOR_SIZE_CHANGE              ps in/decrease of author in doc header*
-$AUTHOR_PT_SIZE                  Absolute ps of authors
-$BIB_FAM                         Bibliography page family
-$BIB_FT                          Bibliography page font
-$BIB_LEAD                        Base leading for bibliographies
-$BIB_LIST_SEPARATOR              Separator between enumerator and text
-                                 when outputting bibliographies in LIST style
-$BIB_LIST_PREFIX                 Prefix before enumerator when outputting
-                                 bibliographies in LIST style
-$BIB_PN_STYLE                    Format of bibliography page numbers
-$BIB_SPACE                       Post entry space for bibliographies
-$BIB_STRING                      Bibliography title string
-$BIB_STRING_FAM                  Bib title family
-$BIB_STRING_FT                   Bib title font
-$BIB_STRING_QUAD                 Bib title quad
-$BIB_STRING_SIZE_CHANGE          Bib title size (+ or -)
-$BQ_LN_GUTTER                    Gutter between line numbers and bquotes in
-                                 bquotes
-$BQUOTE_COLOR                    Blockquote color
-$BQUOTE_FAM                      Family to use for blockquotes
-$BQUOTE_FT                       Font to use for blockquotes
-$BQUOTE_QUAD                     Quad value for blockquotes
-$BQUOTE_SIZE_CHANGE              ps in/decrease of blockquotes*
-$CENTER_TITLE                    What to put in the middle of header
-                                 title
-$CHAPTER                         The chapter number
-$CHAPTER_STRING                  What to print whenever the word
-                                 "chapter" is required
-$CHAPTER_TITLE                   Chapter title (if there is one)
-$CHAPTER_TITLE_FAM               Family of chapter title
-$CHAPTER_TITLE_FT                Font of chapter title
-$CHAPTER_TITLE_SIZE_CHANGE       ps in/decrease of chapter title*
-$CHAPTER_TITLE_PT_SIZE           Absolute ps of chapter title
-$CHAPTER_TITLE_COLOR             Color of chapter title
-$COPYRIGHT_FAM                   Copyright line family
-$COPYRIGHT_FT                    Copyright line font
-$COPYRIGHT_SIZE_CHANGE           Copyright line size*
-$COPYRIGHT_COLOR                 Copyright line color
-$COPYRIGHT_QUAD                  Copyright line quad direction
-$COPY_STYLE                      DRAFT or FINAL
-$COVER_FAM                       Overall cover family
-$COVER_COLOR                     Overall cover color
-$COVER_TITLE                     User-defined cover title string
-$COVER_TITLE_FAM                 Cover title family
-$COVER_TITLE_FT                  Cover title font
-$COVER_TITLE_SIZE_CHANGE         Cover title size*
-$COVER_TITLE_COLOR               Cover title color
-$COVER_SUBTITLE_FAM              Cover subtitle family
-$COVER_SUBTITLE_FT               Cover subtitle font
-$COVER_SUBTITLE_SIZE_CHANGE      Cover subtitle size*
-$COVER_SUBTITLE_COLOR            Cover subtitle color
-$COVER_ATTRIBUTE_COLOR           Cover attribution string color
-$COVER_AUTHOR_FAM                Cover author(s) family
-$COVER_AUTHOR_FT                 Cover author(s) font
-$COVER_AUTHOR_SIZE_CHANGE        Cover author(s) size*
-$COVER_AUTHOR_COLOR              Cover author(s) color
-$COVER_DOCTYPE_FAM               Cover doctype family
-$COVER_DOCTYPE_FT                Cover doctype font
-$COVER_DOCTYPE_SIZE_CHANGE       Cover doctype size*
-$COVER_DOCTYPE_COLOR             Cover doctype color
-$COVER_COPYRIGHT_FAM             Cover copyright family
-$COVER_COPYRIGHT_FT              Cover copyright font
-$COVER_COPYRIGHT_SIZE_CHANGE     Cover copyright size*
-$COVER_COPYRIGHT_COLOR           Cover copyright color
-$COVER_MISC_FAM                  Cover misc family
-$COVER_MISC_FT                   Cover misc font
-$COVER_MISC_SIZE_CHANGE          Cover misc size*
-$COVER_MISC_COLOR                Cover misc color
-$CURRENT_EV                      \n[.ev] at REF_BRACKETS_START
-$DOC_COVER_FAM                   Overall doc cover family
-$DOC_COVER_COLOR                 Overall doc cover color
-$DOC_COVER_TITLE                 User-defined doc cover title string
-$DOC_COVER_TITLE_FAM             Doc cover title family
-$DOC_COVER_TITLE_FT              Doc cover title font
-$DOC_COVER_TITLE_SIZE_CHANGE     Doc cover title size*
-$DOC_COVER_TITLE_COLOR           Doc cover title color
-$DOC_COVER_SUBTITLE_FAM          Doc cover subtitle family
-$DOC_COVER_SUBTITLE_FT           Doc cover subtitle font
-$DOC_COVER_SUBTITLE_SIZE_CHANGE  Doc cover subtitle size*
-$DOC_COVER_SUBTITLE_COLOR        Doc cover subtitle color
-$DOC_COVER_ATTRIBUTE_COLOR       Doc cover attribution string color
-$DOC_COVER_AUTHOR_FAM            Doc cover author(s) family
-$DOC_COVER_AUTHOR_FT             Doc cover author(s) font
-$DOC_COVER_AUTHOR_SIZE_CHANGE    Doc cover author(s) size*
-$DOC_COVER_AUTHOR_COLOR          Doc cover author(s) color
-$DOC_COVER_DOCTYPE_FAM           Doc cover doctype family
-$DOC_COVER_DOCTYPE_FT            Doc cover doctype font
-$DOC_COVER_DOCTYPE_SIZE_CHANGE   Doc cover doctype size*
-$DOC_COVER_DOCTYPE_COLOR         Doc cover doctype color
-$DOC_COVER_COPYRIGHT_FAM         Doc cover copyright family
-$DOC_COVER_COPYRIGHT_FT          Doc cover copyright font
-$DOC_COVER_COPYRIGHT_SIZE_CHANGE Doc cover copyright size*
-$DOC_COVER_COPYRIGHT_COLOR       Doc cover copyright color
-$DOC_COVER_MISC_FAM              Doc cover misc family
-$DOC_COVER_MISC_FT               Doc cover misc font
-$DOC_COVER_MISC_SIZE_CHANGE      Doc cover misc size*
-$DOC_COVER_MISC_COLOR            Doc cover misc color
-$DOC_FAM                         Predominant font family used in the
-                                 document
-$DOC_QUAD                        Quad used for body text (justified or
-                                 left) 
-$DOC_TITLE                       Overall doc title that gets printed in
-                                 headers/footers (mostly for use with
-                                 collated docs where each doc is an
-                                 article with a different title)
-$DOC_TYPE                        Document type (default, chapter, named,
-                                 letter)
-$DOCHEADER_COLOR                 Color of docheader
-$DOCHEADER_FAM                   Family used for all parts of the docheader
-$DOCHEADER_LEAD_ADJ              +|- value applied to #DOC_LEAD to
-                                 in/decrease leading of doc header
-$DOCTYPE_FAM                     Family to use for DOCTYPE string in
-                                 doc header
-$DOCTYPE_FT                      Font to use for DOCTYPE string in
-                                 doc header
-$DOCTYPE_SIZE_CHANGE             ps in/decrease of DOCTYPE string in
-                                 doc header*
-$DOCTYPE_PT_SIZE                 Absolute ps of DOCTYPE
-$DRAFT                           The draft number (string valued)
-$DRAFT_STRING                    What to print whenever the word "draft"
-                                 is required
-EN_MARK                          Inline, gets #EN_MARK (\(ln)
-$EN_CLOSE_BRACKET                Close bracket for line-number enumerated
-                                 endnotes
-$EN_FAMILY                       Family for endnotes
-$EN_FT                           Font for endnotes
-$EN_LINENUMBER                   String to print for line-number enumerators
-                                 in line-numbered endnotes
-$EN_LN_FAM                       Family for line-numbers in line-number
-                                 identified endnotes
-$EN_LN_FT                        Font for line-numbers in line-number
-                                 identified endnotes
-$EN_LN_GAP                       Gap to leave in initial endnote lines
-                                 between line-number identifies and text
-$EN_OPEN_BRACKET                 Open bracket for line-number enumerated
-                                 endnotes
-$EN_LN_SIZE_CHANGE               Size change (+ or -) for line-numbers in
-                                 line-number identified endnotes
-$EN_PN_STYLE                     Pagenumbering style for endnotes pages
-$EN_QUAD                         Quad for endnotes
-$EN_STRING                       Endnotes page head
-$EN_STRING_FAM                   Endnotes page head family
-$EN_STRING_FT                    Endnotes page head font
-$EN_STRING_QUAD                  Endnotes page head quad direction
-$EN_STRING_SIZE_CHANGE           Endnotes page head size***
-$EN_TITLE                        Endnote document identifier
-$EN_TITLE_FAM                    Endnote document identifier family
-$EN_TITLE_FT                     Endnote document identifier font
-$EN_TITLE_QUAD                   Endnote document identifier quad
-                                 direction
-$EN_TITLE_SIZE_CHANGE            Endnote document identifier size***
-$EN_NUMBER_FAM                   Endnote numbering family
-$EN_NUMBER_FT                    Endnote numbering font
-$EN_NUMBER_SIZE_CHANGE           Endnote numbering size***
-$EPI_AUTOLEAD                    Autolead value (decimals ok) of
-                                 epigraphs
-$EPI_COLOR                       Color of epigraphs
-$EPI_FAM                         Family to use in epigraphs
-$EPI_FT                          Font to use in epigraphs
-$EPI_QUAD                        Quad in block-style epigraphs
-                                 (justified or left)
-$EPI_SIZE_CHANGE                 ps in/decrease of epigraphs*
-$EVAL_BIB_SPACE                  Temporary string to find out if the
-                                 arg to BIBLIOGRAPHY_SPACING ended in "v"
-$FINIS_COLOR                     Color of FINIS string
-$FINIS_STRING                    What to print when FINIS macro is
-                                 invoked
-$FIRST_DOC_TITLE                 1st doc's title captured in COLLATE
-FN_MARK                          Inline, gets #FN_MARK (\n(ln)
-$FN_CLOSE_BRACKET                Close bracket for line-number identified
-                                 footnotes
-$FN_FAM                          Family used in footnotes
-$FN_FT                           Font used in footnotes
-$FN_LINENUMBER                   String to print before footnotes when
-                                 line-numbering enabled for footnotes
-$FN_LN_SEP                       Separator after line-number identified
-                                 footnotes
-$FN_OPEN_BRACKET                 Open bracket for line-number identified
-                                 footnotes
-$FN_QUAD                         Quad used in footnotes
-$FN_SIZE_CHANGE                  ps in/decrease of footnotes*
-$FOOTNOTE_COLOR                  Footnote color
-$HDRFTR_CENTER                   What to put in CENTER part of headers;
-                                 default doctype
-$HDRFTR_CENTER_FAM               Family of CENTER part of headers
-$HDRFTR_CENTER_FT                Font of centre part of headers
-$HDRFTR_CENTER_NEW               HDRFTR_CENTER after the start of TOC;
-                                 defined in HDRFTR_CENTER if
-                                 HDRFTR_CENTER is called as
-                                 FOOTER_CENTER
-$HDRFTR_CENTER_OLD               HDRFTR_CENTER just prior to start of
-                                 TOC; defined in HDRFTR_CENTER if
-                                 HDRFTR_CENTER is called as
-                                 FOOTER_CENTER
-$HDRFTR_CENTER_SIZE_CHANGE       ps in/decrease of centre title in
-                                 headers**
-$HDRFTR_COLOR                    Color of headers/footers
-$HDRFTR_FAM                      Family to use in headers
-$HDRFTR_LEFT_FAM                 Family of left part of headers
-$HDRFTR_LEFT_FT                  Font of left part of headers
-$HDRFTR_LEFT_SIZE_CHANGE         ps in/decrease of author in headers**
-$HDRFTR_LEFT                     What to put in left part of headers;
-                                 default author
-$HDRFTR_RIGHT_FAM                Family of right part of headers
-$HDRFTR_RIGHT_FT                 Font of right part of headers
-$HDRFTR_RIGHT_SIZE_CHANGE        ps in/decrease of right part of
-                                 headers**
-$HDRFTR_RIGHT                    What to put in right part of headers;
-                                 default title
-$HDRFTR_SIZE_CHANGE              ps in/decrease of headers*
-$HDRFTR_TMP_SIZE_CHANGE_SWITCH   Temporarily holds
-                                 HDRFTR_LEFT_SIZE_CHANGE if
-                                 #SWITCH_HDRFTRS=1
-$HDRFTR_TMP_SWITCH               Temporarily holds HDRFTR_LEFT if
-                                 #SWITCH_HDRFTRS=1
-$HEAD_COLOR                      Head color
-$HEAD_FAM                        Family to use for section titles
-$HEAD_FT                         Font to use for section titles
-$HEAD_QUAD                       Quad value of section titles
-$HEAD_SIZE_CHANGE                ps in/decrease of section titles*
-$LINEBREAK_CHAR                  Character that marks line breaks
-$LINEBREAK_CHAR_V_ADJ            +|- amount by which to raise/lower
-                                 linebreak character
-$LAST_CHAR                       Temporary string used to discover whether
-                                 user has remembered to put a digit after
-                                 ROMAN or roman in arg to LIST
-$LINEBREAK_COLOR                 Linebreak color
-$LIST_ARG_1                      The first arg to LIST (minus digits if
-                                 ROMAN or roman
-$LN_GUTTER                       Gutter to leave between line numbers
-                                 and text
-$LN_INC                          2nd arg to NUMBER_LINES as a string
-$LN_NUM                          1st arg to NUMBER_LINES as a string
-$MISC_COLOR                      Misc line color
-$MISC_QUAD                       Misc line quad
-PAGE#                            For use in hdrftr strings where page #
-                                 is needed; \*[PAGE]
-$PAGENUM_COLOR                   Page number color
-$PAGENUM_STYLE                   String passed to PAGENUM_STYLE
-$PAGE_NUM_FAM                    Family of page numbers
-$PAGE_NUM_FT                     Font of page numbers
-$PAGE_NUM_SIZE_CHANGE            ps in/decrease of page numbers
-$PAPER                           Paper size (LETTER, A4, LEGAL);
-                                 default=LETTER
-$PH_COLOR                        Parahead color
-$PP_FT                           Font used in paragraphs
-$ROMAN_WIDTH                     The digit(s) appended to ROMAN or
-                                 roman LIST args
-$Q_LN_GUTTER                     Gutter between linenumbers and quotes
-                                 in quotes
-$QUOTE_COLOR                     Quote (poetic) color
-$QUOTE_FAM                       Family to use for pquotes
-$QUOTE_FT                        Font to use for pquotes
-$QUOTE_SIZE_CHANGE               ps in/decrease of pquotes*
-$REF_BIB_INDENT                  2nd line indent value for references in
-                                 bibliographies
-$REF_EN_INDENT                   2nd line indent value for references in
-                                 endnotes
-$REF_FN_INDENT                   2nd line indent value for references in
-                                 footnotes
-$RESTORE_SS_VAR                  Saves \*[$SS_VAR] for use with ref*build
-#REVISION                        The revision number (string valued)
-$REVISION_STRING                 What to print whenever the word
-                                 "revision" is required
-$SH_FAM                          Family to use in subheads
-$SH_FT                           Font to use in subheads
-$SH_SIZE_CHANGE                  ps in/decrease of subheads*
-$SH_COLOR                        Subhead color
-$SUBTITLE                        Document subtitle
-$SUBTITLE_FAM                    Family to use for subtitle in doc
-                                 header
-$SUBTITLE_FT                     Font to use for subtitle in doc header
-$SUBTITLE_SIZE_CHANGE            ps in/decrease of subtitle*
-$SUBTITLE_PT_SIZE                Absolute ps of subtitle
-$SUITE                           The #SUITE number register
-$TITLE                           Document title
-$TITLE_FAM                       Family to use for title in doc header
-$TITLE_FT                        Font to use for title in doc header
-$TITLE_PT_SIZE                   Absolute point size of title in docheader
-$TITLE_SIZE_CHANGE               ps in/decrease of title in doc header*
-$TOC_AUTHORS                     What to print after toc doc title entry
-                                 if #TOC_AUTHORS=1
-$TOC_FAM                         Family to use on toc pages
-$TOC_HEAD_FAM                    Family of toc head entries
-$TOC_HEAD_FT                     Font of toc head entries
-$TOC_HEAD_ITEM                   A head as collected for TOC_ENTRIES
-$TOC_HEADER_FAM                  Family to use for "Contents"
-$TOC_HEADER_FT                   Font to use for "Contents"
-$TOC_HEADER_QUAD                 Quad direction of "Contents"
-$TOC_HEADER_SIZE                 ps in/decrease of "Contents"****
-$TOC_HEADER_STRING               Header string of first toc page
-$TOC_PN                          Sets up toc leaders + entry pn
-                                 (typeset)
-$TOC_PN_FAM                      Family for toc entries page numbers
-$TOC_PN_FT                       Font for toc entries page numbers
-$TOC_PN_SIZE_CHANGE              ps in/decrease of toc entries page
-                                 numbers
-$TOC_PN_STYLE                    Page-numbering style of toc pages
-$TOC_PN_TYPEWRITE                Sets up toc leaders + entry pn
-                                 (typewrite)
-$TOC_PH_FAM                      Family of toc parahead entries
-$TOC_PH_FT                       Font of toc parahead entries
-$TOC_PARAHEAD_ITEM               A parahead collected for TOC_ENTRIES
-$TOC_SH_FAM                      Family of toc subhead entries
-$TOC_SH_FT                       Font of toc subhead entries
-$TOC_SH_ITEM                     A subhead collected for TOC_ENTRIES
-$TOC_TITLE_FAM                   Family of toc doc title entries
-$TOC_TITLE_FT                    Font of toc doc title entries
-$USER_SET_TITLE_ITEM             User defined toc doc title entry as
-                                 set by TOC_TITLE_ENTRY
-$UR_PAGINATION_STYLE             Pagination style prior to endnotes
-$USERDEF_HDRFTR_RECTO            User defined header/footer recto string
-$USERDEF_HDRFTR_VERSO            User defined header/footer verso string
-
-   *relative to #DOC_PT_SIZE
-  **relative to overall ps of headers as set by HEADER_SIZE
- ***relative to overall ps of endnotes
-****relative to overall ps of toc pages
-
-+++PREPROCESSOR KEYWORDS+++
-
-(eqn)
-EQ
-EN
-
-(grn)
-GS
-GE
-GF
-
-(pic)
-PS
-PE
-
-(refer)
-R1
-R2
-[
-]
-
-(tbl)
-TS
-TE
-TH
-
-(grap)
-G1
-G2
-
-(ideal)
-IS
-IE
-
-(chem)
-cstart
-cend
-
-+++ALIASES+++
-
-Please note:
-
-Prior to version 1.1.9, all macros that included the word COLOR had
-aliases that used COLOUR instead.  This convenience has now been
-removed, in an effort to reduce the size of the om.tmac file.
-
-Furthermore, if you want the convenience, you'll have to edit the
-om.tmac file.  Simply aliasing, say, HEAD_COLOR as HEAD_COLOUR will
-not work, owing to significant changes in the handling of
-docelement control macros that end in _COLOR.
-
-+++The following are for convenience, and header/footer management+++
-
-BREAK_BLOCKQUOTE      BREAK_QUOTE
-BREAK_CITATION        BREAK_QUOTE
-BREAK_CITE            BREAK_QUOTE
-CITATION              BLOCKQUOTE
-CITE                  BLOCKQUOTE
-COL_BREAK             COL_NEXT
-DOC_FAM               DOC_FAMILY
-DOC_LLENGTH           DOC_LINE_LENGTH
-DOC_L_LENGTH          DOC_LINE_LENGTH
-DOC_L_MARGIN          DOC_LEFT_MARGIN
-DOC_LMARGIN           DOC_LEFT_MARGIN
-DOC_LS                DOC_LEAD
-DOC_PS                DOC_PT_SIZE
-DOC_R_MARGIN          DOC_RIGHT_MARGIN
-DOC_RMARGIN           DOC_RIGHT_MARGIN
-FOOTER_CENTER_CAPS    HDRFTR_CENTER_CAPS
-FOOTER_CENTER         HDRFTR_CENTER
-FOOTER_CENTRE_CAPS    HDRFTR_CENTER_CAPS
-FOOTER_CENTRE         HDRFTR_CENTER
-FOOTER_LEFT_CAPS      HDRFTR_LEFT_CAPS
-FOOTER_LEFT           HDRFTR_LEFT
-FOOTER_PLAIN          HDRFTR_PLAIN
-FOOTER_RECTO          HDRFTR_RECTO
-FOOTER_RIGHT_CAPS     HDRFTR_RIGHT_CAPS
-FOOTER_RIGHT          HDRFTR_RIGHT
-FOOTER_RULE_GAP       HDRFTR_RULE_GAP
-FOOTER_RULE           HDRFTR_RULE
-FOOTER_VERSO          HDRFTR_VERSO
-HDRFTR_RULE_INTERNAL  HDRFTR_RULE
-HEADER_CENTER_CAPS    HDRFTR_CENTER_CAPS
-HEADER_CENTER         HDRFTR_CENTER
-HEADER_CENTRE_CAPS    HDRFTR_CENTER_CAPS
-HEADER_CENTRE         HDRFTR_CENTER
-HEADER_LEFT_CAPS      HDRFTR_LEFT_CAPS
-HEADER_LEFT           HDRFTR_LEFT
-HEADER_PLAIN          HDRFTR_PLAIN
-HEADER_RECTO          HDRFTR_RECTO
-HEADER_RIGHT_CAPS     HDRFTR_RIGHT_CAPS
-HEADER_RIGHT          HDRFTR_RIGHT
-HEADER_RULE_GAP       HDRFTR_RULE_GAP
-HEADER_RULE           HDRFTR_RULE
-HEADER_VERSO          HDRFTR_VERSO
-PAGENUM               PAGENUMBER
-PAGINATION            PAGINATE
-PP_FT                 PP_FONT
-PRINT_FOOTNOTE_RULE   FOOTNOTE_RULE
-SWITCH_FOOTERS        SWITCH_HDRFTR
-SWITCH_HEADERS        SWITCH_HDRFTR
-TOC_LS                TOC_LEAD
-TOC_PS                TOC_PT_SIZE
-
-+++The following are used for docelement type-style control+++
-
-AUTHOR_FAMILY                 _FAMILY
-AUTHOR_FONT                   _FONT
-AUTHOR_SIZE                   _SIZE
-BIBLIOGRAPHY_FAMILY           _FAMILY
-BIBLIOGRAPHY_FONT             _FONT
-BIBLIOGRAPHY_FOOTER_CENTER    BIBLIOGRAPHY_HDRFTR_CENTER
-BIBLIOGRAPHY_FOOTER_CENTRE    BIBLIOGRAPHY_HDRFTR_CENTRE
-BIBLIOGRAPHY_HEADER_CENTER    BIBLIOGRAPHY_HDRFTR_CENTER
-BIBLIOGRAPHY_HEADER_CENTRE    BIBLIOGRAPHY_HDRFTR_CENTRE
-BIBLIOGRAPHY_QUAD             _QUAD
-BIBLIOGRAPHY_STRING_FAMILY    _FAMILY
-BIBLIOGRAPHY_STRING_FONT      _FONT
-BIBLIOGRAPHY_STRING_QUAD      _QUAD
-BIBLIOGRAPHY_STRING_SIZE      _SIZE
-BLOCKQUOTE_AUTOLEAD           Q_AUTOLEAD
-BLOCKQUOTE_AUTOLEAD           QUOTE_AUTOLEAD
-BLOCKQUOTE_COLOR              _COLOR
-BLOCKQUOTE_FAMILY             _FAMILY
-BLOCKQUOTE_FONT               _FONT
-BLOCKQUOTE_QUAD               _QUAD
-BLOCKQUOTE_SIZE               _SIZE
-CHAPTER_TITLE_COLOR           _COLOR
-CHAPTER_TITLE_FAMILY          _FAMILY
-CHAPTER_TITLE_FONT            _FONT
-CHAPTER_TITLE_SIZE            _SIZE
-COVER_ATTRIBUTE_COLOR         _COLOR
-COVER_AUTHOR_COLOR            _COLOR
-COVER_AUTHOR_FAMILY           _FAMILY
-COVER_AUTHOR_FONT             _FONT
-COVER_AUTHOR_SIZE             _SIZE
-COVER_COLOR                   _COLOR
-COVER_COPYRIGHT_COLOR         _COLOR
-COVER_COPYRIGHT_FAMILY        _FAMILY
-COVER_COPYRIGHT_FONT          _FONT
-COVER_COPYRIGHT_QUAD          _QUAD
-COVER_COPYRIGHT_SIZE          _SIZE
-COVER_DOCTYPE_COLOR           _COLOR
-COVER_DOCTYPE_FAMILY          _FAMILY
-COVER_DOCTYPE_FONT            _FONT
-COVER_DOCTYPE_SIZE            _SIZE
-COVER_FAMILY                  _FAMILY
-COVER_MISC_COLOR              _COLOR
-COVER_MISC_QUAD               _QUAD
-COVER_SUBTITLE_COLOR          _COLOR
-COVER_SUBTITLE_FAMILY         _FAMILY
-COVER_SUBTITLE_FONT           _FONT
-COVER_SUBTITLE_SIZE           _SIZE
-COVER_TITLE_COLOR             _COLOR
-COVER_TITLE_FAMILY            _FAMILY
-COVER_TITLE_FONT              _FONT
-COVER_TITLE_SIZE              _SIZE
-DOC_COVER_ATTRIBUTE_COLOR     _COLOR
-DOC_COVER_AUTHOR_COLOR        _COLOR
-DOC_COVER_AUTHOR_FAMILY       _FAMILY
-DOC_COVER_AUTHOR_FONT         _FONT
-DOC_COVER_AUTHOR_SIZE         _SIZE
-DOC_COVER_COLOR               _COLOR
-DOC_COVER_COPYRIGHT_COLOR     _COLOR
-DOC_COVER_COPYRIGHT_FAMILY    _FAMILY
-DOC_COVER_COPYRIGHT_FONT      _FONT
-DOC_COVER_COPYRIGHT_QUAD      _QUAD
-DOC_COVER_COPYRIGHT_SIZE      _SIZE
-DOC_COVER_DOCTYPE_COLOR       _COLOR
-DOC_COVER_DOCTYPE_FAMILY      _FAMILY
-DOC_COVER_DOCTYPE_FONT        _FONT
-DOC_COVER_DOCTYPE_SIZE        _SIZE
-DOC_COVER_FAMILY              _FAMILY
-DOC_COVER_MISC_COLOR          _COLOR
-DOC_COVER_MISC_QUAD           _QUAD
-DOC_COVER_SUBTITLE_COLOR      _COLOR
-DOC_COVER_SUBTITLE_FAMILY     _FAMILY
-DOC_COVER_SUBTITLE_FONT       _FONT
-DOC_COVER_SUBTITLE_SIZE       _SIZE
-DOC_COVER_TITLE_COLOR         _COLOR
-DOC_COVER_TITLE_FAMILY        _FAMILY
-DOC_COVER_TITLE_FONT          _FONT
-DOC_COVER_TITLE_SIZE          _SIZE
-DOCHEADER_COLOR               _COLOR
-DOCHEADER_FAMILY              _FAMILY
-DOC_QUAD                      _QUAD
-DOCTYPE_FAMILY                _FAMILY
-DOCTYPE_FONT                  _FONT
-DOCTYPE_SIZE                  _SIZE
-ENDNOTE_BLOCKQUOTE_AUTOLEAD   Q_AUTOLEAD
-ENDNOTE_BLOCKQUOTE_AUTOLEAD   QUOTE_AUTOLEAD
-ENDNOTE_FAMILY                _FAMILY
-ENDNOTE_FONT                  _FONT
-ENDNOTE_LINENUMBER_FAMILY     _FAMILY
-ENDNOTE_LINENUMBER_FONT       _FONT
-ENDNOTE_LINENUMBER_SIZE       _SIZE
-ENDNOTE_NUMBER_FAMILY         _FAMILY
-ENDNOTE_NUMBER_FONT           _FONT
-ENDNOTE_NUMBER_SIZE           _SIZE
-ENDNOTE_QUAD                  _QUAD
-ENDNOTE_QUOTE_AUTLOEAD        Q_AUTOLEAD
-ENDNOTE_QUOTE_AUTOLEAD        QUOTE_AUTOLEAD
-ENDNOTE_STRING_FAMILY         _FAMILY
-ENDNOTE_STRING_FONT           _FONT
-ENDNOTE_STRING_QUAD           _QUAD
-ENDNOTE_STRING_SIZE           _SIZE
-ENDNOTE_TITLE_FAMILY          _FAMILY
-ENDNOTE_TITLE_FONT            _FONT
-ENDNOTE_TITLE_QUAD            _QUAD
-ENDNOTE_TITLE_SIZE            _SIZE
-EPIGRAPH_COLOR                _COLOR
-EPIGRAPH_FAMILY               _FAMILY
-EPIGRAPH_FONT                 _FONT
-EPIGRAPH_QUAD                 _QUAD
-EPIGRAPH_SIZE                 _SIZE
-FINIS_COLOR                   _COLOR
-FOOTNOTE_COLOR                _COLOR
-FOOTNOTE_FAMILY               _FAMILY
-FOOTNOTE_FONT                 _FONT
-FOOTNOTE_QUAD                 _QUAD
-FOOTNOTE_SIZE                 _SIZE
-HDRFTR_CENTER_FAMILY          _FAMILY
-HDRFTR_CENTER_FONT            _FONT
-HDRFTR_CENTER_SIZE            _SIZE
-HDRFTR_COLOR                  _COLOR
-HDRFTR_FAMILY                 _FAMILY
-HDRFTR_LEFT_FAMILY            _FAMILY
-HDRFTR_LEFT_FONT              _FONT
-HDRFTR_LEFT_SIZE              _SIZE
-HDRFTR_RIGHT_FAMILY           _FAMILY
-HDRFTR_RIGHT_FONT             _FONT
-HDRFTR_RIGHT_SIZE             _SIZE
-HDRFTR_RULE_COLOR             _COLOR
-HDRFTR_SIZE                   _SIZE
-HEAD_COLOR                    _COLOR
-HEAD_FAMILY                   _FAMILY
-HEAD_FONT                     _FONT
-HEAD_QUAD                     _QUAD
-HEAD_SIZE                     _SIZE
-LINEBREAK_COLOR               _COLOR
-MISC_COLOR                    _COLOR
-MISC_QUAD                     _QUAD
-PAGENUM_COLOR                 _COLOR
-PAGENUM_FAMILY                _FAMILY
-PAGENUM_FONT                  _FONT
-PARAHEAD_COLOR                _COLOR
-PARAHEAD_FAMILY               _FAMILY
-PARAHEAD_FONT                 _FONT
-PARAHEAD_SIZE                 _SIZE
-QUOTE_COLOR                   _COLOR
-QUOTE_FAMILY                  _FAMILY
-QUOTE_FONT                    _FONT
-QUOTE_INDENT                  _INDENT
-QUOTE_SIZE                    _SIZE
-REF_INDENT                    INDENT_REFS
-REF)                          REF_BRACKETS_END
-REF]                          REF_BRACKETS_END
-REF}                          REF_BRACKETS_END
-REF(                          REF_BRACKETS_START
-REF[                          REF_BRACKETS_START
-REF{                          REF_BRACKETS_START
-SUBHEAD_COLOR                 _COLOR
-SUBHEAD_FAMILY                _FAMILY
-SUBHEAD_FONT                  _FONT
-SUBHEAD_SIZE                  _SIZE
-SUBTITLE_COLOR                _COLOR
-SUBTITLE_FAMILY               _FAMILY
-SUBTITLE_FONT                 _FONT
-SUBTITLE_SIZE                 _SIZE
-TITLE_COLOR                   _COLOR
-TITLE_FAMILY                  _FAMILY
-TITLE_FONT                    _FONT
-TITLE_SIZE                    _SIZE
-TOC_FAM                       _FAMILY
-TOC_FAMILY                    _FAMILY
-TOC_HEADER_FAMILY             _FAMILY
-TOC_HEADER_FONT               _FONT
-TOC_HEADER_QUAD               _QUAD
-TOC_HEADER_SIZE               _SIZE
-TOC_HEAD_FAMILY               _FAMILY
-TOC_HEAD_FONT                 _FONT
-TOC_HEAD_SIZE                 _SIZE
-TOC_PARAHEAD_FAMILY           _FAMILY
-TOC_PARAHEAD_FONT             _FONT
-TOC_PARAHEAD_SIZE             _SIZE
-TOC_PN_FAMILY                 _FAMILY
-TOC_PN_FONT                   _FONT
-TOC_PN_SIZE                   _SIZE
-TOC_PT_SIZE                   _SIZE
-TOC_SUBHEAD_FAMILY            _FAMILY
-TOC_SUBHEAD_FONT              _FONT
-TOC_SUBHEAD_SIZE              _SIZE
-TOC_TITLE_FAMILY              _FAMILY
-TOC_TITLE_FONT                _FONT
-TOC_TITLE_SIZE                _SIZE
-
- -
-Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/toc.html b/contrib/groff/contrib/mom/momdoc/toc.html deleted file mode 100644 index 515740449cfc..000000000000 --- a/contrib/groff/contrib/mom/momdoc/toc.html +++ /dev/null @@ -1,329 +0,0 @@ - - - - -Mom, version 1.3-a -- Table of Contents - - - - - -

Table of Contents for mom, version 1.3-a

- -The table of contents has grown quite large. If you've been using -mom for a while, you might prefer the -Quick Reference Guide. -

-If you're new to mom, click on any link in the -Quick Table of Contents -to go to the -appropriate section of the Full Table of Contents. -

-Or click -here -to go directly to the Full Table of Contents. -

-


- -

Quick Table of Contents

-INTRODUCTORY STUFF - -TYPESETTING WITH MOM - -

-DOCUMENT PROCESSING WITH MOM -

-
-
- -

Full Table of Contents

- - -
  • 1. WHAT IS MOM? - - -
  • 2. DEFINITIONS OF TERMS USED IN THIS MANUAL - - -
  • 3. USING MOM - - -
  • 4. THE TYPESETTING MACROS - - - -
  • 5. DOCUMENT PROCESSING WITH MOM - - -
  • 6. QUICK REFERENCE GUIDE TO MOM -

    - -

  • 7. APPENDICES - - - - diff --git a/contrib/groff/contrib/mom/momdoc/typemacdoc.html b/contrib/groff/contrib/mom/momdoc/typemacdoc.html deleted file mode 100644 index bedd031905bc..000000000000 --- a/contrib/groff/contrib/mom/momdoc/typemacdoc.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - -Mom -- Typesetting macros in document processing - - - - - -Next   -Prev   -Back to Table of Contents -

    - - - -

    USING TYPESETTING MACROS DURING DOCUMENT PROCESSING

    - - -During document processing, most of the -typesetting macros -affect type in the document globally. For example, if you turn kerning -off, pairwise kerning is disabled not only in paragraphs, but -also in headers, footers, quotes, and so on. -

    -Typesetting macros that alter margins and line lengths affect -running text -globally (or at least try to), but leave headers/footers and footnotes -alone. (To indent footnotes, see the full explanation of the -FOOTNOTE -macro.) -

    -Mom's tabs -(both -typesetting tabs -and -string tabs) -behave as expected in running text during document processing. Tab -structures that do not exceed the line length of running text are -preserved sensibly from page to page, and, if -COLUMNS -are enabled, from column to column. -

    -Some typesetting macros, however, when used during document -processing, behave in special ways. These are the macros that deal -with the basic parameters of type style: horizontal and vertical -margins, line length, -family, -font, -point size, -leading, -and -quad. - -

    -Mom assumes that any changes to these parameters -stem from a temporary need to set type in a style different from that -provided by mom's -document element tags. -In other words, you need to do a bit of creative typesetting in the -middle of a document. -

    -The following lists those typesetting macros whose behaviour during -document processing requires some explanation. -(Please refer to -Top and bottom margins in document processing -for information on how mom interprets -T_MARGIN -and -B_MARGIN -in document processing. Additionally, see -ADD_SPACE -if you encounter the problem of trying to get mom -to put space at the tops of pages after the first.) - -

    -MACRO           EFFECT DURING DOCUMENT PROCESSING
    ------           ---------------------------------
    -
    -L_MARGIN        *The left margin of all running text
    -                 assumes the new value.
    -
    -                *The line length remains unaltered.
    -
    -                *The header and footer left margin
    -                 remain at the current document default.
    -
    -                (You won't use this often by itself.  Most
    -                 likely, you'll use it in combination with
    -                 R_MARGIN or LL.)
    -
    -R_MARGIN        *The right margin of all running text
    -                 assumes the new value.  In other words,
    -                 the line length is altered.
    -
    -                *The header and footer right margin
    -                 remain at the current document default.
    -
    -LL              *The line length of all running text
    -                 is set to the new value.
    -
    -                *The header and footer line length remain
    -                 at the current document default.
    -
    -FAMILY          *Changes family for the duration of the
    -                 current tag only.  As soon as another document
    -                 element tag is invoked, the family reverts to
    -                 the current default for the new tag.
    -
    -FT              *Changes font for the duration of the
    -                 current tag only.  As soon as another document
    -                 element tag is entered, the font reverts
    -                 to the current default for the new tag.
    -
    -                 N.B. -- \*[SLANT] and \*[BOLDER] affect
    -                 paragraph text, and remain in effect for all
    -                 paragraphs until turned off.  If you want to
    -                 use them in a macro that takes a string
    -                 argument, include the escape in the string.
    -                 \*[COND] and \*[EXT] behave similarly.
    -
    -PT_SIZE         *Changes point size for the duration of the
    -                 current tag only.  As soon as another document
    -                 element tag is entered, the point size reverts
    -                 to the current document default for the new
    -                 tag.
    -
    -LS              *Changes line space for the duration of the
    -                 current tag only.  As soon as another document
    -                 element tag is entered, the line space reverts to
    -                 the current document default for the new
    -                 tag.
    -
    -                 Using LS to temporarily change leading within a
    -                 document will almost certainly result in a bottom
    -                 margin that doesn't align with the bottom margin
    -                 of subsequent pages.  You'll need to use the SHIM
    -                 macro to get mom back on track when you're ready
    -                 to return to the document's default leading.
    -
    -QUAD            *Changes quad for the duration of the
    -                 current tag only.  As soon as another document
    -                 element tag is entered, the quad reverts to
    -                 the current document default for the new
    -                 tag.
    -
    -                 N.B. -- Line-for-line quadding macros
    -                 (LEFT, CENTER, RIGHT) are also temporary,
    -                 overridden by the QUAD value of any subsequent
    -                 document element tag.
    -
    -
    - - - - -

    Top and bottom margins in document processing

    -
    - -Normally, mom establishes the top and bottom margins -of -running text -in documents from the values of HEADER_MARGIN + -HEADER_GAP and FOOTER_MARGIN + FOOTER_GAP -respectively. However, if you invoke -T_MARGIN -or -B_MARGIN -either before or after -START, -they set the top and bottom margins of running text irrespective -of HEADER_GAP and FOOTER_GAP. -

    -Put another way, in document processing, T_MARGIN -and B_MARGIN set the top and bottom margins of -running text, but have no effect on the placement of -headers, -footers, -or page numbers. - - -

    ADD_SPACE

    - - -

    -Occasionally, you may want to insert space before the start of -running text -on pages after the first. -

    -You might have tried using -ALD -or -SPACE -and found it did nothing. This is because mom -normally inhibits any extra space before the start of running text -on pages after the first. -

    -If you need the space, you must use the macro, -ADD_SPACE, in conjuction with -NEWPAGE. -ADD_SPACE takes as its single argument the -distance you want mom to advance from the normal -baseline position at the top of the page. A -unit of measure -is required. - -

    -For example, say you wanted to insert 2 inches of space before the -start of running text on a page other than the first. You'd -accomplish it with - -

    -

    -	.NEWPAGE
    -	.ADD_SPACE 2i
    -
    - -which would terminate your current page, break to a new page, -print the header (assuming headers are on) and insert 2 inches of -space before the start of running text. -

    -Since adding space in this way is almost sure to disrupt -mom's ability to guarantee perfectly flush bottom -margins, I highly recommend using the -SHIM -macro immediately after ADD_SPACE. -

    -


    -Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/momdoc/typesetting.html b/contrib/groff/contrib/mom/momdoc/typesetting.html deleted file mode 100644 index a161c5b4c341..000000000000 --- a/contrib/groff/contrib/mom/momdoc/typesetting.html +++ /dev/null @@ -1,4189 +0,0 @@ - - - - -Mom -- Typesetting Macros - - - - - -Next   -Prev   -Back to Table of Contents -

    - - -

    THE TYPESETTING MACROS

    - - -Introduction to the typesetting macros -
    - -

    -


    - -

    Introduction to the typesetting macros

    - -Mom's typesetting macros provide access to -groff's typesetting capabilities. Aside from controlling basic -type parameters (family, font, line length, point size, leading), -mom's macros fine-tune wordspacing, letterspacing, -kerning, hyphenation, and so on. In addition, mom -has true typesetting tabs, string tabs, multiple indent styles, -line padding, and a batch of other goodies. -

    -In some cases, mom's typesetting macros merely imitate -groff primitives. In others, they approach typesetting concerns in -conceptually new ways (for groff, at least). This should present no -problem for newcomers to groff who are learning mom. -Old groff hands should be careful. Just because it looks like a -duck and walks like a duck does not, in this instance, mean that it -is a duck. When using mom, stay away from groff -primitives if mom provides a macro that accomplishes -the same thing. -

    -Mom's typesetting macros can be used as a standalone -package, independent of the -document processing macros. -With them, you can typeset on-the-fly. Book covers, your best -friend's résumé, a poster for a lost dog--none of these requires -structured document processing (page headers, paragraphs, heads, -footnotes, etc). What they do demand is precise control over every -element on the page. The typesetting macros give you that control. -

    -


    - - - - - - -

    Page setup: paper size and page margins

    -
    - -The page setup macros establish the physical dimensions of your -page and the margins you want it to have. Groff -has defaults for these, but I recommend setting them at the top -of your files anyway unless you're using mom's -document processing macros -and are content with her defaults. -

    -The -PAPER -macro provides a shortcut for setting the page to the correct dimensions -for a number of well-known, established paper sizes. The -PAGE -macro provides a convenient way of setting the page dimensions and -some or all of the page margins with a single macro. -

    - - -

    Page setup macros list

    - - - -

    - - - -


    -

    Page width

    -
    -Macro: PAGEWIDTH <width of printer sheet> -
    -*Requires a unit of measure - -

    -The argument to PAGEWIDTH is the width of your -printer sheet. PAGEWIDTH requires a unit of measure. -Decimal fractions are allowed. Hence, to tell mom -the width of your printer sheet is 8-1/2 inches, you enter -

    -

    -	.PAGEWIDTH 8.5i
    -
    - - - -
    -

    Page length

    -
    -Macro: PAGELENGTH <length of printer sheet> -
    -*Requires a unit of measure - -

    -PAGELENGTH tells mom how long your -printer sheet is. It works just like -PAGEWIDTH. Therefore, to tell -mom your printer sheet is 11 inches long, you -enter -

    -

    -	.PAGELENGTH 11i
    -
    - - - -
    -

    Paper

    -
    -Macro: PAPER <paper type> - -

    -PAPER provides a convenient way to set the page -dimensions for some common printer sheet sizes. <paper -type> can be one of: -

    -

    -	LETTER
    -	LEGAL
    -	STATEMENT
    -	TABLOID
    -	LEDGER
    -	FOLIO
    -	QUARTO
    -	10x14
    -	EXECUTIVE
    -	A3
    -	A4
    -	A5
    -	B4
    -	B5 
    -
    - -Say, for example, you have A4-sized sheets in your printer. -It's shorter (and easier) to enter -

    -

    -	.PAPER A4
    -
    - -than to remember the correct dimensions and enter -

    -

    -	.PAGEWIDTH  595p
    -	.PAGELENGTH 842p
    -
    - - - -
    -

    Left margin

    -
    -Macro: L_MARGIN <left margin> -
    -*Requires a unit of measure - -

    -L_MARGIN establishes the distance from the left edge -of the printer sheet at which you want your type to start. It may -be used any time, and remains in effect until you enter a new value. -

    -Left indents -and -tabs -are calculated from the value you pass to L_MARGIN, -hence it's always a good idea to invoke it before starting any serious -typesetting. A unit of measure is required. Decimal fractions are -allowed. Therefore, to set the left margin at 3 picas (1/2 inch), -you'd enter either -

    -

    -	.L_MARGIN 3P
    -	  or
    -	.L_MARGIN .5i
    -
    - -If you use the macros -PAGE, -PAGEWIDTH -or -PAPER -without invoking L_MARGIN (either before -or afterwards), mom automatically sets -L_MARGIN to 1 inch. -

    -NOTE: L_MARGIN behaves in a special way when you're -using the -document processing macros. -See -Typesetting Macros in Document Processing -for an explanation. -

    - - - -


    -

    Right margin

    -
    -Macro: R_MARGIN <right margin> -
    -*Requires a unit of measure - -

    -R_MARGIN establishes the amount of space you -want between the end of typeset lines and the right hand edge -of the printer sheet. In other words, it sets the line length. -R_MARGIN requires a unit of measure. Decimal -fractions are allowed. -

    -The line length macro (LL) can -be used in place of R_MARGIN. In either case, the -last one invoked sets the line length. The choice of which to use is -up to you. In some instances, you may find it easier to think of a -section of type as having a right margin. In others, giving a line -length may make more sense. -

    -For example, if you're setting a page of type you know should have -6-pica margins left and right, it makes sense to enter a left and -right margin, like this: -

    -

    -	.L_MARGIN 6P
    -	.R_MARGIN 6P
    -
    - -That way, you don't have to worry about calculating the line -length. On the other hand, if you know the line length for a -patch of type should be 17 picas and 3 points, entering the line -length with LL is much easier than calculating the -right margin. -

    -

    -	.LL 17P+3p
    -
    - -If you use the macros -PAGE, -PAGEWIDTH -or -PAPER -without invoking R_MARGIN afterwards, -mom automatically sets R_MARGIN -to 1 inch. If you set a line length after these macros (with -LL), -the line length calculated by R_MARGIN is, of course, -overridden. -

    -IMPORTANT: R_MARGIN, if used, MUST come after -PAPER, -PAGEWIDTH, -L_MARGIN -and/or -PAGE -(if a right margin isn't given to PAGE). -The reason is that R_MARGIN calculates line -length from the overall page dimensions and the left margin. -Obviously, it can't make the calculation if it doesn't know the page -width and the left margin. -

    -NOTE: R_MARGIN behaves in a special way -when you're using the -document processing macros. -See -Typesetting Macros in Document Processing -for an explanation. -

    - - - -


    -

    Top margin

    -
    -Macro: T_MARGIN <top margin> -
    -*Requires a unit of measure - -

    -T_MARGIN establishes the distance from the top of -the printer sheet at which you want your type to start. It requires -a unit of measure, and decimal fractions are allowed. To set a top -margin of 2-1/2 centimetres, you'd enter -

    -

    -	.T_MARGIN 2.5c
    -
    - -T_MARGIN calculates the vertical position of the -first line of type on a page by treating the top edge of the printer -sheet as a baseline. Therefore, -

    -

    -	.T_MARGIN 1.5i
    -
    - -puts the baseline of the first line of type 1-1/2 inches beneath -the top of the page. -

    -IMPORTANT: T_MARGIN does two -things: it establishes the top margin for pages that come after -it AND it moves to that position on the current page. Therefore, -T_MARGIN should only be used at the top of a file -(prior to entering text) or after -NEWPAGE, -like this: -

    -

    -	.NEWPAGE
    -	.T_MARGIN 6P
    -	<text>
    -
    - -NOTE: T_MARGIN means something -slightly different when you're using the -document processing macros. -See -Top and bottom margins in document processing -for an explanation. -

    - - - -


    -

    Bottom margin

    -
    -Macro: B_MARGIN <bottom margin> -
    -*Requires a unit of measure - -

    -B_MARGIN sets a nominal position at the bottom -of the page beyond which you don't want your type to go. When the -bottom margin is reached, mom starts a new page. -B_MARGIN requires a unit of measure. Decimal -fractions are allowed. To set a nominal bottom margin of 3/4 inch, -enter -

    -

    -	.B_MARGIN .75i
    -
    - -Obviously, if you haven't spaced the type on your pages so that -the last lines fall perfectly at the bottom margin, the margin will -vary from page to page. Usually, but not always, the last line of -type that fits on a page before the bottom margin causes -mom to start a new page. -

    -Occasionally, owing to a peculiarity in groff, -an extra line will fall below the nominal bottom margin. If you're -using the -document processing macros, -this is unlikely to happen; the document processing macros are very -hard-nosed about aligning bottom margins. -

    -NOTE: The meaning of B_MARGIN is -slightly different when you're using the document processing macros. -See -Top and bottom margins in document processing -for an explanation. -

    - - - -


    -

    Page

    -
    -Macro: PAGE -<width> [ <length> [ <lm> [ <rm> [ <tm> [ <bm> ] ] ] ] ] -
    -*All arguments require a unit of measure - -

    -PAGE lets you establish paper dimensions and page -margins with a single macro. The only required argument is page width. -The rest are optional, but they must appear in order and you can't -skip over any. <lm>, <rm>, <tm> -and <bm> refer to the left, right, top and bottom -margins respectively. -

    -Assuming your page dimensions are 11 inches by 17 inches, and that's -all you want to set, enter -

    -

    -	.PAGE 11i 17i
    -
    - -If you want to set the left margin as well, say, at 1 inch, -PAGE would look like this: -

    -

    -	.PAGE 11i 17i 1i
    -
    - -Now suppose you also want to set the top margin, say, at 1-1/2 -inches. <tm> comes after <rm> -in the optional arguments, but you can't skip over any arguments, -therefore to set the top margin, you must also give a right margin. -The PAGE macro would look like this: -

    -

    -        .PAGE 11i 17i 1i 1i 1.5i
    -                         |   |
    -        required right___|   |___top margin
    -                margin
    -
    - -Clearly, PAGE is best used when you want a convenient -way to tell mom just the dimensions of your printer -sheet (width and length), or when you want to tell her everything -about the page (dimensions and all the margins), for example -

    -

    -	.PAGE 8.5i 11i 45p 45p 45p 45p
    -
    - -This sets up an 8-1/2 by 11 inch page with margins of 45 points -(5/8-inch) all around. -

    -NOTE: Only use PAGE at the -start of a document, before entering any text. And remember, -when you're using the -document processing macros, -top margin and bottom margin mean something slightly different than -when you're using just the typesetting macros (see -Top and bottom margins in document processing). -

    -Additionally, if you invoke PAGE with a top margin -argument, any macros you invoke after PAGE will -almost certainly move the -baseline -of the first line of text down by one linespace. To compensate, do -

    -

    -	.RLD 1v
    -
    - -immediately before entering any text, or, if it's feasible, make -PAGE the last macro you invoke prior to entering text. -

    - - - -


    -

    Start a new page

    -
    -Macro: NEWPAGE - -

    -Whenever you want to start a new page, use NEWPAGE, by -itself with no argument. Mom will finish up -processing the current page and move you to the top of a new one -(subject to the top margin set with -T_MARGIN. -

    -Experts: Prior to version 1.1.9, -NEWPAGE was simply an alias of -.bp. As of 1.1.9, NEWPAGE, -is its own mom macro. While the new macro -should be backwardly compatible with documents created using -pre-1.1.9 moms, I suggest that from this version -onward, if you were in the habit of using .bp -whenever you wanted to break to a new page, you now begin to use -NEWPAGE instead. -

    -


    - - - - - - -

    Basic Typesetting Parameters

    -
    - -Basic parameter macros deal with the fundamental requirements -for setting type: family, font, point size, leading and line length. -

    -If you're using the typesetting macros only, the arguments passed -to the basic parameter macros remain in effect until you change them. -The document processing macros handle things differently. See -Typesetting Macros in Document Processing -for an explanation. -

    - -

    Basic parameter macros list

    - - - - -
    -

    Type family

    -
    -Macro: FAMILY <family> -
    -Alias: FAM - -

    -FAMILY takes one argument: the name of the -family -you want. Groff comes with a number of PostScript families, each -identified by a 1-, 2- or 3-letter mnemonic. The standard families -are: - - - -
    AAvant Garde -
    BM Bookman -
    HHelvetica -
    HNHelvetica Narrow -
    NNew Century Schoolbook -
    PPalatino -
    TTimes Roman
    ZCMZapf Chancery
    -

    -The argument you pass to FAMILY is the identifier at -left, above. For example, if you want Helvetica, enter -

    -

    -	.FAMILY H
    -
    - -NOTE: The -font macro -(FT) lets you specify both the type family -and the desired font with a single macro. While this saves a few -keystrokes, I recommend using FAMILY for family, -and FT for font, except where doing so is genuinely -inconvenient. ZCM, for example, only exists in one -style: Italic (I). Therefore, .FT ZCMI -makes more sense than setting the family to "ZCM", then -setting the font to "I". -

    - -ADDITIONAL NOTE: As of mom, version -1.1.9-a, if you are running a version of groff lower -than 1.19.2, you MUST follow all FAMILY -requests with a FT request, otherwise -mom will set all type up to the next -FT request in the -fallback font. -

    -If you are running a version of groff greater than or equal -to 1.19.2, when you invoke the FAMILY macro, -mom "remembers" the font style (Roman, -Italic, etc) currently in use (if the font style exists in the new -family) and will continue to use the same font style in the new -family. For example: -

    -

    -	.FAMILY BM   \" Bookman family
    -	.FT     I    \" Medium Italic
    -	<some text>  \" Bookman Medium Italic
    -	.FAMILY H    \" Helvetica family
    -	<more text>  \" Helvetica Medium Italic
    -
    - -However, if the font style does not exist in the new family, -mom will set all subsequent type in the -fallback font -(by default, Courier Medium Roman) until she encounters a -.FT -request that's valid for the family. For example, assuming -you don't have the font "Medium Condensed Roman" -(mom extension "CD") -in the Helvetica family: -

    -

    -	.FAMILY UN    \" Univers family
    -	.FT     CD    \" Medium Condensed
    -	<some text>   \" Univers Medium Condensed
    -	.FAMILY H     \" Helvetica family
    -	<more text>   \" Courier Medium Roman!
    -
    - -In the above example, you must follow .FAMILY H with a -FT request that's valid for Helvetica. -

    -Experts: -
    -If you add other PostScript families to groff's /font/devps directory, -I recommend following the groff standard for naming families and fonts. -For example, if you add the Garamond family, name the font files -

    -

    -	GARAMONDR
    -	GARAMONDI
    -	GARAMONDB
    -	GARAMONDBI
    -
    - -GARAMOND then becomes a legal family name you can pass to -FAMILY. (You could, of course, shorten GARAMOND to just -G, or GD.) R, I, B, and BI after GARAMOND are the roman, italic, -bold and bold-italic fonts respectively. -

    -Please see the Appendices, -Adding PostScript fonts to groff, -for information on adding fonts and families to groff, as well as -to see a list of the extensions mom provides to -groff's basic R, I, B, BI styles. -

    - - - -


    -

    Font

    -
    -Macro: FT R | I | B | BI | <any other valid font style> - -

    -By default, groff permits FT to take one of four -possible arguments specifying the desired font: - - -
    R = (Medium) Roman -
    I = (Medium) Italic -
    B = Bold (Roman) -
    BI = Bold Italic
    -

    -For example, if your -family -is Helvetica, entering -

    -

    -	.FT B
    -
    - -will give you the Helvetica bold -font. -If your family were Palatino, you'd get the Palatino bold font. -

    -(As of mom, version 1.1.9-a, the range of arguments -that can be passed to FT has been considerably -extended, allowing access to a greater variety of font -weights -and -shapes. -Please see the -NOTE, -below.) -

    -How mom reacts to an invalid argument to -FT depends on which version of groff you're using. -If your groff version is greater than or equal to 1.19.2, -mom will issue a warning and, depending on how -you've set up the -fallback font, -either continue processing using the fallback font, or abort -(allowing you to correct the problem). If your groff version is less -than 1.19.2, mom will silently continue processing, -using either the fallback font or the font that was in effect prior -to the invalid FT call. -

    -FT will also accept, as an argument, a full -family+font name. For example, -

    -

    -	.FT HB
    -
    - -will set subsequent type in Helvetica Bold. However, I strongly -recommend keeping family and font separate except where doing so is -genuinely inconvenient. -

    -For inline control of fonts, see -Inline Escapes, font control. -

    - -NOTE: mom, versions 1.1.9-a and higher, -considerably extends the range of arguments you can pass to -FT, making it more convenient to add and access -fonts of differing -weights -and -shapes -within the same family. Have a look -here -for a list of the weight/style arguments mom -allows. -

    -Be aware, though, that you must have the fonts, correctly -installed and named, in order to use the arguments. (See -How to create a PostScript font for use with groff -for how to add fonts to groff.) Please also read the -ADDITIONAL NOTE -found in the description of the FAMILY macro. -

    - - - -


    -

    Fallback font

    -
    -Macro: FALLBACK_FONT <fallback font> [ ABORT | WARN ] | ABORT | WARN - -

    -In the event that you pass an invalid argument to -.FAMILY -(i.e. a non-existent family), mom, by default, uses -the fallback font, Courier Medium Roman (CR), in order to continue -processing your file. -

    -If you'd prefer another fallback font, pass -FALLBACK_FONT the full family+font name -of the font you'd like. For example, if you'd rather the -fallback font were Times Roman Medium Roman, - -

    -	.FALLBACK_FONT TR
    -
    -

    -would do the trick. -

    -Additionally, if your version of groff accepts accepts "if -F" and "if S" (see -above), -mom issues a warning whenever a -font style set with -.FT -does not exist, either because you haven't registered the style -(see -here -for instructions on registering styles), or because the font style -does not exist in the current family set with -.FAMILY. -By default, mom then aborts, which allows you to -correct the problem. -

    -If you'd prefer that mom not abort on non-existent -fonts, but rather continue processing using a fallback font, -you can pass FALLBACK_FONT the argument -WARN, either by itself, or in conjunction with your -chosen fallback font. -

    -Some examples of invoking FALLBACK_FONT: -
    -

      -
    • .FALLBACK_FONT WARN -
      - mom will issue a warning whenever you try - to access a non-existent font but will continue processing - your file with the default fallback font, Courier Medium Roman. -
    • .FALLBACK_FONT TR WARN -
      - mom will issue a warning whenever you try - to access a non-existent font but will continue processing - your file with a fallback font of Times Roman Medium Roman; - additionally, "TR" will be the fallback font whenever - you try to access a family that does not exist. -
    • .FALLBACK_FONT TR ABORT -
      - mom will abort whenever you try to access a - non-existent font, and will use the fallback font - "TR" whenever you try to access a family - that does not exist. -
    -

    -If, for some reason, you want to revert to ABORT, just enter -.FALLBACK_FONT ABORT and mom will once -again abort on font errors. -

    - - - -


    -

    Point size of type

    -
    -Macro: PT_SIZE <size of type in points> -
    -*Does not require a unit of measure - -

    -PT_SIZE (Point Size) takes one argument: the size of type -in points. Unlike most other macros that establish the size or measure -of something, PT_SIZE does not require that you supply a -unit of measure since it's a near universal convention that type size -is measured in points. Therefore, to change the type size to, say, -11 points, enter -

    -

    -	.PT_SIZE 11
    -
    - -Point sizes may be fractional (e.g. 10.25 or 12.5). -

    -You can prepend a plus or a minus sign to the argument to -PT_SIZE, in which case the point size will be changed by + -or - the original value. For example, if the point size is 12, -and you want 14, you can do -

    -

    -	.PT_SIZE +2
    -
    - -then later reset it to 12 with -

    -

    -	.PT_SIZE -2
    -
    - -The size of type can also be changed inline. See -Inline Escapes, changing point size. -

    -NOTE: It is unfortunate that the pic -pre-processor uses PS, and thus -mom's macro for setting point sizes can't use it. -However, if you aren't using pic, you might want to -alias PT_SIZE as PS, since -there'd be no conflict. -

    -

    -	.ALIAS PS PT_SIZE
    -
    - -would allow you to set point sizes with .PS. -

    - - - -


    -

    Line spacing/leading

    -
    -Macro: LS <distance between lines> -
    -*Does not require a unit of measure - -

    -LS (Line Space) takes one argument: the distance you want, typically -in points, from baseline to baseline of type. The argument may -be fractional (e.g. 12.25 or 14.5). Like PT_SIZE, -LS does not require a unit of measure, since -leading -is most often given in points. Therefore, to set the linespace to -14 points, you would enter -

    -

    -	.LS 14
    -
    - -However, if you wish, you may specify a unit of measure by appending -it directly to the argument passed to LS. For example, -if you want a linespace of 1/4 of an inch, enter -

    -

    -	.LS .25i
    -
    - -You can prepend a plus or a minus sign to the argument to -LS, in which case the line spacing will be changed -by + or - the original value. For example, if the line spacing is -14 points, and you want 17 points, you can do -

    -

    -	.LS +3
    -
    - -then later reset it to 14 points with -

    -

    -	.LS -3
    -
    - -Experts: -
    -LS should not be confused with the groff primitive -ls. LS acts like vs. -mom does not provide a macro analogous to -ls. -

    - - - -


    -

    Automatic line spacing

    -
    -Macro: AUTOLEAD <amount of automatic leading> [FACTOR] -
    -*Does not require a unit of measure - -

    -Without the FACTOR argument, AUTOLEAD -calculates the linespace for you by adding its argument to the -current point size of type. All subsequent PT_SIZE -requests automatically update the linespacing by the autolead amount. -

    -Used in this way, AUTOLEAD does not require a unit -of measure; points is assumed. However, you may use an alternate -unit of measure by appending it to the argument. The argument may -be a decimal fraction (e.g. .5 or 2.75). -

    -As an example, if your current point size of type is 12, entering -

    -

    -	.AUTOLEAD 2
    -
    - -changes the linespace to 14 points, regardless any linespacing -already in effect. From here on, every change to the size of type -(with PT_SIZE, not -inline) -changes the linespace as well. If you decrease the type size to 9 -points, the leading decreases to 11 points. If you increase the type -size to 16 points, the leading increases to 18 points. -

    -Automatic updating of the linespacing continues until you enter a -"manual" line space value with LS. -

    -If you give AUTOLEAD the optional -FACTOR argument, AUTOLEAD -calculates the line space as a factor of the -numeric argument -you gave AUTOLEAD. For example, if your point -size is 12, -

    -

    -	.AUTOLEAD 1.125 FACTOR
    -
    -sets the leading at 13.5 points. If you change the point size -to 14, the leading automatically changes to 15.75 (14 x 1.125). -

    -NOTE: There's no need to prepend a plus sign (+) -to AUTOLEAD's argument, although you may do so if you -wish. -

    - - - -


    -

    Line length

    -
    -Macro: LL <line length> -
    -*Requires a unit of measure - -

    -LL (Line Length) takes one argument: the distance from the -left margin of the page to the maximum allowable point on the -right at which groff should place type. The line length, in -other words, as the macro suggests. -

    -LL requires a unit of measure. Therefore, to set the line -length to 39 picas, you would enter -

    -

    -	.LL 39P
    -
    - -As with other macros that require a unit of measure, the argument to -LL may be fractional. For example, -

    -

    -	.LL 4.5i
    -
    - -sets the line length to 4-1/2 inches. - -

    -Additionally, you may express a new line length relative to the -current line length by prepending a plus or minus sign to the -argument. Thus, if you wanted to increase the line length by 3 -points, you could -do -

    -

    -	.LL +3p
    -
    - -This is especially handy when you want to "hang" -punctuation outside the right margin since you can pass groff's -\w -escape as the argument to LL, like this: -

    -

    -	.LL +\w'.'u
    -
    - -The above example increases the current line length by the width of -a period. Notice that you must append the -unit of measure, -u, to the escape since .LL requires a unit of -measure. - -

    -NOTE: The right margin -macro (R_MARGIN) can also be used to set line -length. -

    -


    - - - - - - -

    Justifying, quadding, filling and breaking lines

    -
    - -The justification and quadding macros deal with how type aligns along -the left and right margins. In a nutshell, type either aligns at the -left margin, at the right margin, at both margins, or at neither margin -(centred). -

    -These macros also determine whether or not -input lines -are joined and -filled -during output. -

    -Additionally, macros that deal with how to break -output lines -are covered in this section, as is the -inline escape -for joining input lines. -

    -You may encounter some words here that are unfamiliar. Refer to -Typesetting terms -and -Groff terms -for an explanation. - -

    Justification, quad, fill, and break macro list

    -

    -

      -
    • Fill modes -
        -
      • JUSTIFY (set lines justified) -
      • QUAD (set filled lines flush left, right or centred) -
      -
    • Nofill modes -
        -
      • LEFT (set non-filled lines flush left) -
      • RIGHT (set non-filled lines flush right) -
      • CENTER (set non-filled lines centred) -
      -
    • Breaking lines -
        -
      • BR (manually break an output line) -
      • EL (break a line without advancing to the next output line) -
      • SPACE (break a line and add space before the next output line) -
      • SPREAD (break and force-justify an output line) -
      -
    • Joining input lines in - nofill mode -
        -
      • \c inline escape -
      -
    - - - -
    -

    Justify lines

    -
    -Macro: JUSTIFY -
    -Fill mode - -

    -JUSTIFY doesn't take an argument. -Input lines -after JUSTIFY are -filled and -justified -upon output. -

    -To break lines and prevent them from being filled and justified, -use the -BR macro. -

    - - - -


    -

    Quad lines left, right, or centre

    -
    -Macro: QUAD L | LEFT | R | RIGHT | C | CENTER | J | JUSTIFY -
    -Alias: FILL -
    -Fill mode - -

    -QUAD takes one argument: the direction in which lines -should be -quadded. -Input lines -after QUAD are -filled -upon output. -

    -If L or LEFT, type is set flush -along the left margin. -

    -If R or RIGHT, type is -set flush along the right margin. -

    -If C or CENTER type is set centred -on the current line length. -

    -J and JUSTIFY justify text, -and are included as a convenience only. Obviously, if text is -justified, it isn't quadded. QUAD J and -QUAD JUSTIFY have exactly the same effect as JUSTIFY. -

    -To break lines and prevent them from being filled, use the -BR macro. -

    - - - -


    -

    Set non-filled lines flush left, right, or centred

    -
    -Macro: LEFT -  Macro: RIGHT -  Macro: CENTER - (alias CENTRE) -
    -Nofill mode - -

    -LEFT, RIGHT and -CENTER let you enter text on a line for line basis -without having to use the -BR macro after each line. -Consider the following: -

    -

    -	.QUAD LEFT
    -	So runs my dream, but what am I?
    -	.BR
    -	An infant crying in the night
    -	.BR
    -	An infant crying for the light
    -	.BR
    -	And with no language but a cry.
    -	.BR
    -
    - -Because text after QUAD is -filled, you have to use the -BR -macro to prevent the lines from running together. Not only is this -annoying to type, it's awkward to read in a text editor. Much better -to do -

    -

    -	.LEFT
    -	So runs my dream, but what am I?
    -	An infant crying in the night
    -	An infant crying for the light
    -	And with no language but a cry.
    -
    - -IMPORTANT: Because LEFT, -RIGHT and CENTER are nofill -modes, groff does not always respect the current line length. -Input lines -that run long may exceed it, or get broken in undesirable ways. -Therefore, when using these three macros, you should preview your -work to ensure that all lines fit as expected. -

    - - - -


    -

    Manually break lines

    -
    -Macro: BR - -

    -When using JUSTIFY or QUAD, -BR tells mom about partial lines -that you want broken (as opposed to -filled). -Any partial -output line -that immediately precedes BR will be -quadded -in the direction of the current quad, or set flush left if text is -justified. - -

    -Most of the time, you won't need the BR macro. -In fill modes, mom tries to be sensible about -where breaks are needed. If the nature of a macro is such that under -most circumstances you'd expect a break, mom puts -it in herself. Equally, in macros where a break isn't normally -desirable, no break occurs. This means text files don't get cluttered -with annoying BR's. -

    -NOTE: Lines of text in -nofill mode -never require a BR. Furthermore, in nofill mode, -ALL macros cause a break. If a break is not desired, use the -\c -inline escape. - -

    -Experts: BR is an alias for br. -You can use either, or mix 'n' match with impunity. -

    - - - -


    -

    Manually break a line without advancing on the page

    -
    -Macro: EL -
    -*In nofill modes (LEFT, RIGHT, CENTER), you must terminate the -line input preceding EL with the \c inline -escape. See -NOTES, -below. -
    -*If you find remembering whether to put in the \c -bothersome, you may prefer to use the -inline escape -alternative to -.EL, -\*[B], -which works consistently regardless of the fill mode. -
    -*EL does not work after the PAD macro. -See -PAD -for the way around this
    . -

    -The mnemonic "EL" is borrowed from old Compugraphic typesetting -systems, where it stood for "End Line." Conceptually, -EL is equivalent to the notion of a carriage return -with no linefeed. - -

    -Note to groff jocks: EL is -unrelated to groff's .el. If you find the -similarity confusing, you may want to alias EL as -something else (but don't use EOL; it's already -taken.) - -

    -EL's function is simple: it breaks a line without -advancing on the page. -As -an example of where you might use it, -imagine that you're working from marked-up copy. The markup -indicates 24 points of space between two given lines, but the -prevailing line spacing is 12.5 points. You may find it more -convenient to break the first line with EL and -instruct mom to advance 24 points to the next line -instead of calculating the lead that needs to be added to 12.5 to -get 24. To demonstrate: -

    -

    -	.LEFT
    -	.LS 12.5
    -	A line of text.\c
    -	.EL
    -	.ALD 24p
    -	The next line of text.
    -
    - -may be more intuitive than -

    -

    -	.LEFT
    -	.LS 12.5
    -	A line of text.
    -	.ALD 11.5p
    -	The next line of text.
    -
    - -The first example has the further advantage that should you wish -to change the prevailing line space but keep the 24 points lead, -you don't have to recalculate the extra space. -

    -"ALD" in the above examples stands for "Advance -LeaD" (another mnemonic borrowed -from Compugraphic), which is covered in the section -Vertical movement. -

    -NOTES: -

    -In versions of mom prior to 1.1.9, EL did not -always work as advertised on the last -output line -of pages that contained a footer trap (e.g. one set with -B_MARGIN -or in documents formatted using the -document processing macros). -

    -EL has been re-written so that this should no longer be the -case. However, in order for it to work in the -nofill -modes -(LEFT, -RIGHT -or -CENTER), -you must always "join" .EL to the line -before it using the -\c -inline escape, -like this: -

    -

    -	.LEFT
    -	A line I don't want to advance\c
    -	.EL
    -
    - -Conversely, in -fill modes -(QUAD LEFT, -QUAD RIGHT, -QUAD CENTER -or -JUSTIFY), -the \c must not be used. -

    -If EL is used after most macros or groff -primitives -(see the exception, below), you don't have to worry about this, -regardless of the fill mode. Just type .EL -
    - - - -


    -

    Break lines and add space between

    -
    -Macro: SPACE <space to add between lines> -
    -Alias: SP - -

    -SPACE breaks a line, just like -BR, then adds space after the line. With no -argument, it adds an extra line space of a value equal to the -current -leading. -If you pass it a numeric argument without supplying a -unit of measure, -it advances that number of extra line spaces. For example: -

    -

    -	.SPACE
    -
    - -breaks the line then adds an extra linespace, whereas -

    -

    -	.SPACE 2
    -
    - -breaks the line and adds two extra linespaces. - -

    -If you supply a unit of measure, SPACE breaks the -line then advances one linespace (at the current -leading) -PLUS the specified amount of extra space given to -SPACE, -as in -

    -

    -	.SPACE 6p
    -
    - -which breaks the line and advances one full linespace plus six -points. - -

    -SUGGESTION: SPACE and -ALD -can be used interchangeably (.SPACE 6p and -.ALD 6p are equivalent). However, -ALD without an argument does nothing, whereas -SPACE without an argument adds an extra line -space. I recommend using SPACE when you -want an extra line space (or multiple thereof), and -ALD whenever you want some other value of space -after a line. - -

    -Experts: SPACE is an alias of sp. -You can use either, or mix 'n' match with impunity. -

    - - - -


    -

    Break and force justify (spread) lines

    -
    -Macro: SPREAD - -

    -Sometimes, you need to break a line of -justified -text and have it come out fully justified, not -quadded -left the way it would be with the BR macro. -An example of where you'd do this would be when you want to prevent a -word at the end of a line from being hyphenated (say, a proper name). -SPREAD is the macro that lets you break the line -and have it came out fully justified. - -

    -Experts: SPREAD is an alias for brp. -You can use either, or mix 'n' match with impunity. -

    - - - -


    -

    Join input lines

    -
    -Inline: \c - -

    -Sometimes, especially when in one of the -nofill modes, -a macro will cause a break where you don't want one. In order -to prevent this from happening (in other words, to join -input lines -together, forming one -output line), -use the groff -inline escape -\c at the end of each input line to -be joined to another, like this: -

    -

    -	.LEFT
    -	.FAMILY T
    -	.FT R
    -	Some lines of text to be \c
    -	.FAMILY H
    -	.FT B
    -	joined \c
    -	.FAMILY T
    -	.FT R
    -	together.
    -
    - -Upon output, the lines will be joined together to read -

    -

    -	Some lines of text to be joined together.
    -
    - -with the word "joined" in Helvetica bold. Note the -space before \c. Without it, the last three -words of the output line would read -

    -

    -	bejoinedtogether
    -
    - -Please also note that had the example been in one of the -fill modes, -there'd have been no need for the \c. -

    -Addendum: The example, above, is designed to -demonstrate the use of \c. However, an easier and -more intuitive way to accomplish the family/font change in the -example would be with the groff -inline escape, -\f. -

    -

    -	Some lines of text to be \f[HB]joined\*[PREV] together.
    -
    -

    -


    - - - - - - -

    Typographic refinements

    -
    - -The macros in this section help you tweak groff's behaviour, -ensuring that your documents look typographically professional. -
    - - -

    Typographic refinements macro list

    -
    -
      -
    • Word and sentence spacing -
        -
      • WS (word spacing) -
      • SS (sentence space) -
      -
    • Letter spacing (track kerning) - -
    • Hyphenation -
        -
      • HY (turn auto hyphenation on/off, or set specific hyphenation parameters) -
      • HY_SET (set all hyphenation parameters) -
      -
    • Automatic kerning and ligatures -
        -
      • KERN (turn automatic pairwise kerning on or off) -
      • LIGATURES (turn automatic generation of ligatures on or off) -
      -
    - - - -
    -

    Word spacing

    -
    -Macro: WS <+|-wordspace> | DEFAULT - -

    -WS (Word Space) increases or decreases the amount -of space between words. In -nofill modes, -or if -QUAD -is in effect, the space between words is fixed. Therefore, if you -change the word spacing with WS, the change applies -uniformly to the space between every word on every line. However, -when text is -justified, -the space between words varies from line to line (in order to justify -the text). Consequently, the change you make with WS -represents the minimum (and ideal) space groff will try to put between -words before deciding whether to hyphenate a final word or to stretch -the word spacing. - -

    -Word space is relative to type size. Knowing how it's calculated is -unimportant. What matters is having a sense of how the value passed -to WS affects the look of your type. Generally, -in/decreasing the word space by a value of 1 or 2 produces a difference -that in many cases is scarcely visible; in/decreasing by a value of 5 -or so produces a subtle but noticeable difference; and in/decreasing -by a value greater than 10 is always apparent. You should preview -your work to assess the effect of WS. - -

    -WS -takes as its argument a whole number preceded by a plus or minus sign. -Therefore, to decrease the word space slightly, you might enter -

    -

    -	.WS -4
    -
    - -To increase it by a noticeable amount, you might enter -

    -

    -	.WS +12
    -
    - -You can reset the word spacing to its previous value by switching -the plus or minus sign, like this: -

    -

    -	.WS +4
    -	A line of text
    -	.WS -4
    -
    - -The .WS -4 undoes the effect of .WS -+4. You can also reset WS to -its groff default by entering -

    -

    -	.WS DEFAULT
    -
    - -This can be particularly useful if you've been playing around -with plus and minus values, and can't remember by how much you -have to in/decrease the word space to get it back to normal. -

    - - - -


    -

    Sentence space

    -
    -Macro: SS <+sentence space> | 0 | DEFAULT - -

    -SS (Sentence Space) tells groff how to treat double -spaces it encounters between sentences in -input lines. -If you use SS, input sentences with two spaces -after them AND input sentences that fall at the end of input lines -all receive a normal word space plus an additional amount of space -whose size is determined by the + value passed as an argument to -SS. Thus, -

    -

    -	.SS +2
    -
    - -means that input sentences with two spaces after them receive a normal -word space PLUS the +2 value passed to SS. -

    -Like -WS, increasing the sentence space by a value of -1 or 2 produces a difference that in many cases is scarcely visible; -increasing by a value of 5 or so produces a subtle but noticeable -difference (i.e. the space between double-spaced input sentences will -be slightly but visibly greater than the space between words); and -increasing by a value greater than 10 is always apparent. You should -preview your work to assess the effect of SS. -

    -There's an additional argument you can pass SS: -the number zero (without the + sign). It's the argument you'll -use most often. Typeset copy should never have two spaces between -sentences, and the "zero" argument tells groff to give the extra -spaces no space at all (effectively removing them). Therefore, -if you double-space your sentences (as you should when writing in a -text editor), get in the habit of putting -

    -

    -	.SS 0
    -
    - -at the top of your files. - -

    -If you do use SS for something other than ensuring -that you don't get unwanted sentence spaces in output copy, you -can set or reset the sentence space to the groff default (the same -width as a word space, i.e. double-spaced input sentences will appear -double-spaced on output as well) with -

    -

    -	.SS DEFAULT
    -
    - -If you're using the -document processing macros -and your -PRINTSTYLE -is TYPEWRITE, .SS DEFAULT is the default, -because you do want double spaces between sentences in copy -that imitates the look of a typewritten document. -

    -IMPORTANT: SS with an argument other than -"0" should only be used if you're of the old (and wise) -school of typists that puts two spaces between sentences. If you -ignore this advice and use SS when you habitually -put only one space between sentences, you risk producing output where -the space between sentences is not equal. -

    - - - -


    -

    Automatic hyphenation control

    -
    -Macro: HY toggle -
    -Macro: HY LINES <max. number of consecutive hyphenated lines> -
    -Macro: HY MARGIN <size of hyphenation margin> -
    -Macro: HY SPACE <extra interword spacing to prevent hyphenation> -
    -Macro: HY DEFAULT -
    -Aliases: HYPHENATE, HYPHENATION - -

    -HY, as you can see, can be invoked with a number of -arguments. In all cases, the aliases HYPHENATE -or HYPHENATION can be used in place of -HY. To aid in understanding the various arguments -you can pass to HY, I've broken them down into -separate sections. - -

    1. HY

    -HY by itself (i.e. with no argument) simply turns -automatic hyphenation on. Any argument other than LINES, -MARGIN, SPACE or DEFAULT, turns automatic -hyphenation off. For example, as explained in -How to read macro arguments, -you could turn HY off by entering -

    -

    -	.HY OFF
    -	   or
    -	.HY X
    -	   or
    -	.HY END
    -
    - -HY observes the following default hyphenation rules: -
    -
      -
    1. Last lines (i.e. ones that will spring a trap--typically - the last line on a page) will not be hyphenated. -
    2. The first and last two characters of a word are never - split off. -
    - -

    2. HY LINES

    -HY LINES sets the maximum number of consecutive -hyphenated lines that will appear in output copy. 2 is a very -good choice, and you'd set it with -

    -

    -	.HY LINES 2
    -
    - -By default, when you turn automatic hyphenation on, there is no -limit to the number of consecutive hyphenated lines. - -

    -NOTE: -Discretionary hyphens -count when groff is figuring out how many lines to hyphenate; -explicit hyphens do not. - -

    3. HY MARGIN

    -HY MARGIN sets the amount of room allowed at -the end of a line before hyphenation is tripped (e.g. if there's -only 6 points left at the end of a line, groff won't try to hyphenate -the next word). HY MARGIN only applies if you're -using -QUAD, and is really only useful if you're -using QUAD LEFT. - -

    -As an example, if you don't want groff to hyphenate words when there's -only 18 points of space left at the end of a left-quadded line, -you'd enter -

    -

    -	.HY MARGIN 18p
    -
    - -NOTE: The numeric argument after HY -MARGIN requires a -unit of measure. - -

    4. HY SPACE

    -HY SPACE sets an amount of extra interword -space that groff will try to put between words on a -line in order to PREVENT hyphenation. HY SPACE -applies only to -justified lines. Generally speaking, -you'll want this value to be quite small, since too big a value -will result in lines with gaping holes between the words. A reasonable -value might be half a point, or one point, which you'd set with -

    -

    -	.HY SPACE .5p
    -	    or
    -	.HY SPACE 1p
    -
    - -NOTE: The numeric argument after HY -SPACE requires a -unit of measure. - -

    5. HY DEFAULT

    -HY DEFAULT resets automatic hyphenation to its -default behaviour, cancelling any changes made with LINES, -MARGIN, and/or SPACE. - -

    A note on hyphenation in general

    -Hyphenation is a necessary evil. If it can be avoided, it should be. -If it can't be, it should occur infrequently. That's the reason for -the number of parameters you can set with HY. - -

    -Furthermore, hyphenation in -rag -copy requires a great deal of attention. At best, it should be -avoided completely by individually adjusting the number of words -on consecutive lines to achieve a pleasing, natural-looking rag. -Since such adjustments are often too fussy for document -processing, I recommend playing around with HY MARGIN -a bit if your copy looks hyphen-heavy. -

    - - - -


    -

    Set hyphenation parameters all at once

    -
    -Macro: HY_SET <lines> [ <margin> [ <space> ] ] -
    -Alias: HYSET - -

    -HY_SET lets you set the parameters for hyphenation -with a single macro. <lines>, <margin> and <space> -correspond to the numeric values required by -LINES, MARGIN and -SPACE as described -above. - -

    -To set just the maximum number of consecutive hyphenated lines, -you'd enter -

    -

    -	.HY_SET 2
    -
    - -If you wanted the same number of maximum consecutive hyphenated lines -and a hyphenation margin for use with -rag -copy, -

    -

    -	.HY_SET 2 36p
    -
    - -would set the hyphenation margin to 36 points. - -

    -If you wanted the same number of maximum consecutive hyphenated -lines and a hyphenation space of 2 points for use with -justified -copy, -

    -

    -	.HYSET 2 0 2p
    -
    - -is how you'd do it. -

    - - - -


    -

    Reduce whitespace

    -
    -Macro: RW <amount of whitespace reduction between letters> -
    - -

    -RW (Reduce Whitespace) and its corresponding macro, -EW (Expand Whitespace), allow you to tighten -(or loosen) -output lines -by uniformly reducing or expanding the space between characters. -This is particularly useful when you want to squeeze or stretch -lines on a narrow measure. - -

    -The value passed to RW may be a whole number or a -decimal fraction. Since a value of 1 produces a noticeable reduction -in the space between letters at text sizes, you'll most likely use -small decimal values when tightening lines. For example, -

    -

    -	.RW .1
    -	  or
    -	.RW .2
    -
    - -may be just enough to squeeze an extra character or two on a -line without the change in letter spacing being obvious. I -highly recommend previewing your work to assess the effect of -RW. - -

    -

    -IMPORTANT: In versions prior to 1.1.9-a, -RW affected all -fonts -in the -family -current at the time it was invoked. As of 1.1.9-a, this behaviour -has been changed. RW affects only the font -current at the time it's invoked, and remains in effect for that -font every time the font is called, hence must be reset to zero to -cancel its effect (.RW 0) on that font. -

    -NOTE: By default, RW does not deposit a -break -(BR) when it's invoked if you're in one of the -fill -modes (i.e. -QUAD -L, R, C, J or -JUSTIFY). -If you want -RW to break at the ends of the previous -input lines -while you're in a fill mode, tell mom -that's what you want by invoking the -BR_AT_LINE_KERN -toggle macro. -

    - - - -


    -

    Expand whitespace

    -
    -Macro: EW <amount of whitespace expansion between letters> -
    - -

    -EW (Expand Whitespace) expands the amount of -whitespace between letters, effectively "loosening" lines -of type. - -

    -The value passed to EW may be a whole number or a -decimal fraction. Since a value of 1 produces a noticeable -expansion in the space between letters at text sizes, you'll most likely use -small decimal values when loosening lines. For example, -

    -

    -	.EW .1
    -	  or
    -	.EW .2
    -
    - -may be just enough to open up a line without the change in letter -spacing being obvious. I highly recommend previewing your work to -assess the effect of EW. -

    -IMPORTANT: In versions prior to 1.1.9-a, -EW affected all -fonts -in the -family -current at the time it was invoked. As of 1.1.9-a, this behaviour -has been changed. EW affects only the font -current at the time it's invoked, and remains in effect for that -font every time the font is called, hence must be reset to zero to -cancel its effect (.EW 0) on that font. -

    -NOTE: By default, EW does not deposit a -break -(BR) when it's invoked if you're in one of the -fill -modes (i.e. -QUAD -L, R, C, J or -JUSTIFY). -If you want -EW to break at the ends of the previous -input lines -while you're in a fill mode, tell mom -that's what you want by invoking the -BR_AT_LINE_KERN -toggle macro. -

    - - - -


    -

    Break before line kerning

    -
    -Macro: BR_AT_LINE_KERN toggle -
    - -

    -By default, in -fill -modes (i.e. -QUAD -L, R, C, J or -JUSTIFY) -mom does not break -input lines -when you invoke RW or EW. -If you'd like her to break input lines prior to RW -or EW, invoke BR_AT_INPUT_LINE -without any argument. To disable the breaks, invoke -BR_AT_INPUT_LINE with any argument (OFF, -QUIT, Q, X...), like this -

    -

    -	.BR_AT_LINE_KERN OFF
    -	    or
    -	.BR_AT_LINE_KERN X
    -
    - -In QUAD L, R or C, -mom simply breaks the line. In QUAD J -(or JUSTIFY, which is the same thing), she breaks -and -force justifies -the line prior to EW or RW. -
    - - - -
    -

    Automatic kerning

    -
    -Macro: KERN toggle -
    - -

    -By itself (i.e. with no argument), KERN turns -automatic pairwise -kerning -on. With any argument (e.g. OFF, Q, X), pairwise kerning is turned -off. -

    -Kerning of individual character pairs can be controlled with the -inline escapes -\*[BU <n>] and \*[FU <n>]. See -Inline Escapes, kerning. -

    - - - -


    -

    Automatic ligature generation

    -
    -Macro: LIGATURES toggle -
    -Alias: LIG - -

    -Provided your current font has -ligatures, -LIGATURES, by itself, turns on automatic -generation of ligatures. When automatic ligature generation is -on, simply typing the letters of a ligature combination will -produce the correct ligature upon output. For example, if you -type the word "finally", the fi combination will be -output as an fi ligature. Generally speaking, ligatures are A -Good Thing, hence mom has them on by default. -

    -LIGATURES with any argument turns automatic -ligature generation off. -

    -NOTE: Not all fonts support ligatures. -

    -


    - - - - - - -

    Type modifications: pseudo-italic, -bold, -condensed, -extended

    -
    - -It sometimes happens that a PostScript -family -doesn't contain all the fonts you need. You might, for example, -be missing an italic font, or a bold font. Or you might not be able -to get your hands on a condensed family. That's where these macros -and inline escapes come in. With them, you can fake the fonts -you're missing. A word of caution, though: "faked" -fonts are just that--faked. You should only use them as a -last resort, and then only sparingly. A word or two or a line -or two in a faked font will pass unnoticed; large patches of -type in a faked font look typographically cheap. -
    - - -

    Type modifications macro list

    -
    - -
      -
    • Pseudo italic -
        -
      • SETSLANT -- degree of pseudo-italicizing -
      • \*[SLANT] -- inline escape for pseudo-italicizing type -
      -
    • Pseudo bold - -
    • Pseudo condensed -
        -
      • CONDENSE -- percentage for pseudo-condensed type -
      • \*[COND] -- inline escape for pseudo-condensed type -
      -
    • Pseudo extended -
        -
      • EXTEND -- percentage for pseudo-extended type -
      • \*[EXT] -- inline escape for pseudo-extending -
      -
    - - - -
    -

    Set degree of slant for pseudo-italicizing

    -
    -Macro: SETSLANT <degrees to slant type> | RESET - -

    -Pseudo-italicizing of type is accomplished by slanting a roman font -a certain number of degrees to the right. SETSLANT -lets you fix the number of degrees. Mom's -default is 15, which produces an acceptable approximation of an -italic font. If you want another value -- say, 13 degrees -- -you'd set it by entering -

    -

    -	.SETSLANT 13
    -
    - -If you change the degree of slant and later want to set it back -to the mom default, do -

    -

    -	.SETSLANT RESET
    -
    - -NOTE: By itself, SETSLANT -will not start pseudo-italicizing type; it merely tells -mom what degree of slant you want. To start -pseudo-italicizing, use the -inline escape -\*[SLANT]. -

    - - - -


    -

    Pseudo italic on/off

    -
    -Inline: \*[SLANT] -- turn pseudo-italic on -
    -Inline: \*[SLANTX] -- turn pseudo-italic off - -

    -\*[SLANT] begins pseudo-italicizing type. -\*[SLANTX] turns the feature off. Both are -inline escapes, -therefore they should not appear as separate lines, but rather -be embedded in text lines, like this: -

    -

    -	Not \*[SLANT]everything\*[SLANTX] is as it seems.
    -
    - -Alternatively, if you wanted the whole line pseudo-italicized, -you'd do -

    -

    -	\*[SLANT]Not everything is as it seems.\*[SLANTX]
    -
    - -Once \*[SLANT] is invoked, it remains in effect -until turned off. - -

    -NOTE: If you're using the -document processing macros -with -PRINTSTYLE TYPEWRITE, -mom underlines pseudo-italics by default. To -change this behaviour, use the special macro -SLANT_MEANS_SLANT. -

    - - - -


    -

    Set amount of emboldening

    -
    -Macro: SETBOLDER <amount of emboldening, in machine units> | RESET - -

    -Emboldening of type is accomplished by printing characters -twice; the second printing is slightly offset from the first, -effectively "thickening" the character. -SETBOLDER lets you set the number of -machine units -for the offset. Mom's default is 700 units, which -produces an acceptable approximation of a bold font. If you want -another value -- say, 500 units -- you'd set it by entering -

    -

    -	.SETBOLDER 500
    -
    - -If you change the emboldening offset and later want to set it back -to the mom default, do -

    -

    -	.SETBOLDER RESET
    -
    - -NOTE: By itself, SETBOLDER -will not start emboldening type; it merely tells -mom what you want the emboldening offset to be. -To start emboldening, use the -inline escape -\*[BOLDER]. -

    - - - -


    -

    Emboldening on/off

    -
    -Inline: \*[BOLDER] -- turn emboldening on -
    -Inline: \*[BOLDERX] -- turn emboldening off - -

    -\*[BOLDER] begins emboldening type. -\*[BOLDERX] turns the feature off. Both are -inline escapes, -therefore they should not appear as separate lines, but rather -be embedded in text lines, like this: -

    -

    -	Not \*[BOLDER]everything\*[BOLDERX] is as it seems.
    -
    - -Alternatively, if you wanted the whole line emboldened, -you'd do -

    -

    -	\*[BOLDER]Not everything is as it seems.\*[BOLDERX]
    -
    - -Once \*[BOLDER] is invoked, it remains in effect -until turned off. - -

    -NOTE: If you're using the -document processing macros -with -PRINTSTYLE TYPEWRITE, -mom ignores \*[BOLDER] -requests. -

    - - - -


    -

    Set percentage for pseudo-condensed type

    -
    -Macro: CONDENSE <pseudo-condense percentage> - -

    -Pseudo-condensing of type is accomplished by reducing the width of -characters at a given point size without reducing their height, -effectively narrowing them so they look like condensed type. -CONDENSE tells mom what -percentage of the normal character width you want the characters -to be condensed. -

    -Mom has no default value for -CONDENSE, therefore you must set it before using the -inline escape -\*[COND]. -80 percent of the normal character width is a good value, and -you'd set it like this: -

    -

    -	.CONDENSE 80
    -
    - -NOTE: By itself, CONDENSE -will not start pseudo-condensing type; it merely tells -mom what percentage of the normal character -width you want characters to be condensed. -To start pseudo-condensing, use the -inline escape -\*[COND]. -

    -Additional note: Make sure that pseudo-condensing -is off (with -\*[CONDX]) -before before making any changes to the pseudo-condense percentage -with CONDENSE. -

    - - - -


    -

    Pseudo-condensing on/off

    -
    -Inline: \*[COND] -- turn pseudo-condensing on -
    -Inline: \*[CONDX] -- turn pseudo-condensing off - -

    -\*[COND] begins pseudo-condensing type. -\*[CONDX] turns the feature off. Both are -inline escapes, -therefore they should not appear as separate lines, but rather -be embedded in text lines, like this: -

    -

    -	\*[COND]Not everything is as it seems.\*[CONDX]
    -
    - -\*[COND] remains in effect until you turn it -off with \*[CONDX]. - -

    -IMPORTANT: You MUST turn \*[COND] -off before making any changes to the point size of your type, either -via the -PT_SIZE -macro or with the \s inline escape. If you wish -the new point size to be pseudo-condensed, simply reinvoke -\*[COND] afterwards. Equally, -\*[COND] must be turned off before changing the -condense percentage with CONDENSE. - -

    -NOTE: If you're using the -document processing macros -with -PRINTSTYLE TYPEWRITE, -mom ignores \*[COND] -requests. -

    - - - -


    -

    Set percentage for pseudo-extended type

    -
    -Macro: EXTEND <pseudo-extend percentage> - -

    -Pseudo-extending of type is accomplished by increasing the width of -characters at a given point size without increasing their height, -effectively widening them so they look like extended type. -EXTEND tells mom what -percentage of the normal character width you want the characters -to be extended. -

    -Mom has no default value for -EXTEND, therefore you must set it before using the -inline escape -\*[EXT]. -120% of the normal character width is a good value, and -you'd set it like this: -

    -

    -	.EXTEND 120
    -
    - -NOTE: By itself, EXTEND -will not start pseudo-extending type; it merely tells -mom what percentage of the normal character -width you want characters to be extended. -To start pseudo-extending, use the -inline escape -\*[EXT]. - -

    -Additional note: Make sure that -pseudo-extending is off (with -\*[EXTX]) -before before making any changes to the pseudo-extend percentage -with EXTEND. -

    - - - -


    -

    Pseudo-extending on/off

    -
    -Inline: \*[EXT] -- turn pseudo-extending on -
    -Inline: \*[EXTX] -- turn pseudo-extending off - -

    -\*[EXT] begins pseudo-extending type. -\*[EXTX] turns the feature off. Both are -inline escapes, -therefore they should not appear as separate lines, but rather -be embedded in text lines, like this: -

    -

    -	\*[EXT]Not everything is as it seems.\*[EXTX]
    -
    - -\*[EXT] remains in effect until you turn it -off with \*[EXTX]. - -

    -IMPORTANT: You MUST turn \*[EXT] -off before making any changes to the point size of your type, either -via the -PT_SIZE -macro or with the \s inline escape. If you wish -the new point size to be pseudo-extended, simply reinvoke -\*[EXT] afterwards. Equally, -\*[EXT] must be turned off before changing the -extend percentage with EXTEND. - -

    -NOTE: If you're using the -document processing macros -with -PRINTSTYLE TYPEWRITE, -mom ignores \*[EXT] -requests. -

    -


    - - - - - - -

    Vertical movement

    -
    - -The two macros in this section allow you to move down or up on the page -relative to the current -baseline. - - -

    Vertical movement macro list

    -
    -
      -
    • ALD -- Advance Lead -
    • RLD -- Reverse Lead -
    - - - -
    -

    Advance Lead (move downward)

    -
    -Macro: ALD <distance to move downward> -
    -*Requires a unit of measure - -

    -ALD takes one argument: the distance to move downward -on the page relative to the current vertical position. -

    -Used by itself, or preceded by -BR, -ALD will advance by one line space plus the -distance you specify. Preceded by -EL, -it will advance by exactly the distance you specify. -

    -ALD requires a unit of measure. Decimal fractions -are allowed, and values may be combined. Therefore, to move down -on the page by 1/4 of an inch, you could enter either -

    -

    -	.ALD .25i
    -	    or
    -	.ALD 1P+6p
    -
    - -As the mnemonic (Advance -LeaD) suggests, you'll most often -use ALD with -points -of lead. - -

    -NOTE: if you want to use ALD -at the top of a page (i.e. to advance to the starting position -of type on a page), combine the value you want with -1v (minus -one line space), like this: -

    -

    -	.ALD 1i-1v
    -
    - -At the top of a page, this will advance one inch from the -top edge of the paper. Without the -1v, the same command would -advance one inch from the top of the page plus the distance of -one line space. -

    -Important: Do NOT use ALD in this -way if you have set a top margin with -T_MARGIN -or -PAGE. -

    - - - -


    -

    Reverse Lead (move upward)

    -
    -Macro: RLD <distance to move upward> -
    -*Requires a unit of measure - -

    -RLD takes one argument: the distance to move -upward on the page relative to the current vertical position. -

    -Used by itself, or preceded by -BR, -RLD will advance by one line space, then -reverse by the distance you specify. Preceded by -EL, -it will reverse by exactly the distance you specify. -

    -RLD requires a unit of measure. Decimal fractions -are allowed, and values may be combined. Therefore, to move up -on the page by 1/4 of an inch, you could enter either -

    -

    -	.RLD .25i
    -	    or
    -	.RLD 1P+6p
    -
    - -As the mnemonic (Rdvance -LeaD) suggests, you'll most often -use RLD with -points -of lead. -

    -


    - - - - - - -

    Tabs

    -
    - -Mom provides two different kinds of tab setup: -typesetting tabs and string tabs. Neither one has anything to -do with the tab key on your keyboard, and both are utterly -divorced from groff's notion of tabs. I recommend reading this -section carefully in order to understand how -mom handles tabs. -

    -NOTE: see the section -Using typesetting macros during document processing -for re-assuring information on the use of tabs during -document processing. -

    - -

    Typesetting tabs

    -

    -Typesetting tabs are defined by both an indent from the left margin and -a line length. This is quite different from typewriter-style tab stops -(the groff norm) that only define the left indent. In conjunction -with the -multi-column macros, -typesetting tabs significantly facilitate -tabular and columnar work. -

    -Typesetting tabs are created with the -TAB_SET -macro. TAB_SET identifies the tab (by number), -establishes its left indent and line length, and optionally sets -a quad direction and fill mode. After tabs have been created with -TAB_SET, they can be called at any time with the -TAB -macro. -

    - -

    Quickie tutorial on typesetting tabs

    -

    -Say you want to set up three tabs to produce an employee evaluation -that looks something like this: -

    - -

    -	CRITERION       EVALUATION     COMMENTS
    -
    -	Service           Good         Many clients specifically request
    -	                               support from Joe by name.
    -
    -	Punctuality    Satisfactory    Tends to arrive after 8:00am, but
    -	                               often works through lunch hour.
    -
    -	Team spirit     Needs work     Persistently gives higher priority
    -	                               to helping clients than respecting
    -	                               organizational hierarchy.
    -
    - -You want the first tab ("CRITERION") -
    -
      -
    • to begin at the left margin of the page (i.e. no indent) -
    • to have a line length of 5 picas -
    • to be set flush left -
    -
    -Tabs must be numbered, and each has to be set up with a separate -TAB_SET -line. Therefore, to set up tab 1, you enter -

    -

    -   .TAB_SET  1  0  5P  L
    -             |  |  |   |
    -      tab #__|  |  |   |__direction
    -                |  |
    -        indent__|  |__length
    -
    - -You want the second tab ("EVALUATION") -
    -
      -
    • to begin 8 picas from the left margin -
    • to have a length of 9 picas -
    • to be set centred. -
    -
    -You set it up like this: -

    -

    -   .TAB_SET  2  8P  9P  C
    -             |  |   |   |
    -      tab #__|  |   |   |__direction
    -                |   |
    -        indent__|   |__length
    -
    - -You want the third tab ("COMMENTS") -
    -
      -
    • to begin 19 picas from the left margin -
    • to have a length of 17 picas -
    • to be set flush left, filled -
    -
    -The setup looks like this: -

    -

    -   .TAB_SET  3  19P  17P  L  QUAD
    -             |   |    |   |    |
    -             |   |    |   |    |__fill output lines
    -             |   |    |   |
    -      tab #__|   |    |   |__direction
    -                 |    |
    -         indent__|    |__length
    -
    - -Once the tabs are set up, you can call them in one of two ways: -
    -
      -
    • TAB (with the tab - number as an argument) breaks the current line, - advances one linespace, and calls the tab. -
    • TN (Tab Next) keeps - you on the current line and moves over to the next - tab in sequence (i.e. from 1 to 2, 2 to 3, etc.). -
    -
    -To exit from tabs and restore your original left margin, line length, -quad direction and fill mode, use -TQ -(Tab Quit). -

    -Here's how the input for our sample employee evaluation looks -(with some introductory parameters): -

    -

    -	.PAGE 8.5i 11i 1i 1i 1i
    -	.FAMILY  T
    -	.FT      R
    -	.PT_SIZE 14
    -	.LS      16
    -	.QUAD    LEFT
    -	.KERN
    -	.HY OFF
    -	.SS 0
    -	.TAB_SET 1 0   5P  L
    -	.TAB_SET 2 8P  9P  C
    -	.TAB_SET 3 19P 17P L QUAD
    -	.TAB 1
    -	CRITERION
    -	.TN
    -	EVALUATION
    -	.TN
    -	COMMENTS
    -	.SP
    -	.TAB 1
    -	Service
    -	.TN
    -	Good
    -	.TN
    -	Many clients specifically request support from Joe by name.
    -	.SP
    -	.TAB 1
    -	Punctuality
    -	.TN
    -	Satisfactory
    -	.TN
    -	Tends to arrive after 8:00am, but often works through lunch hour.
    -	.SP
    -	.TAB 1
    -	Team spirit
    -	.TN
    -	Needs work
    -	.TN
    -	Persistently gives higher priority to helping clients
    -	than respecting organizational hierarchy.
    -	.TQ
    -
    - -Try setting this up and previewing it with -

    -

    -	groff -mom -X <filename>
    -
    - -Notice how .TN simply moves over to the next tab, -while the combination .SP/.TAB 1 breaks the -line, advances by one extra linespace, and calls the first tab. -

    -Notice, too, how the QUAD argument passed to -tab 3 means you don't have to worry about the length of -input lines; -mom -fills -the tab and sets the type flush left. -

    -

    String tabs (autotabs)

    -

    -String tabs let you mark off tab positions with -inline escapes -embedded in -input lines. -Left indents and line lengths are calculated from the beginning and -end positions of the marks. This is especially useful when tab -indents and lengths need to be determined from the text that goes in -each tab. -

    -Setting up string tabs is a two-step procedure. First, you enter an -input line in which you mark off where you want tabs to begin and end. -(This is often best done in conjunction with the -SILENT -macro.) -

    -Next, you invoke the -ST -macro for every string tab you defined, and optionally pass quad and -fill information to it. That done, string tabs are called with -the -TAB -macro, just like typesetting tabs. -

    -In combination with the -PAD -macro and the groff inline escape -\h -(move horizontally across the page) or mom's -\*[FWD <distance>] -(move forward) inline, string tabs provide -tremendous flexibility in setting up complex tab structures. -

    -

    Quickie tutorial on string tabs

    -

    -Say you want to set up tabs for the -employee evaluation form -used as an example in the -typesetting tabs tutorial. -This time, though, you want to play around with the point size of -type, so you can't know exactly how long the tabs will be or where -they should start. All you know is -
    -

      -
    • CRITERION is the longest line in tab 1 -
    • EVALUATION is the longest line in tab 2 -
    • tab 3 should extend to the current right margin -
    • you want a 1 pica gutter between each tab -
    -
    -This is an ideal job for string tabs. -

    -The first thing you need for string tabs is an -input line -with tab positions marked on it. Tabs are marked with the -inline escapes -\*[ST<n>] -and -\*[ST<n>X], -where <n> -is the number you want the tab to have. (In this example, we -enclose the input line with the -SILENT -macro so the line doesn't print. We also use the -PAD -macro to permit defining tab 3 as simply "the amount of -space remaining on the input line.") -

    -The setup looks like this: -

    -

    -	.SILENT
    -	.PAD "\*[ST1]CRITERION\*[ST1X]\*[FWD 12p]\*[ST2]EVALUATION\*[ST2X]\*[FWD 12p]\*[ST3]#\*[ST3X]"
    -	.SILENT OFF
    -
    - -The long line after .PAD looks scary, but it isn't. -Here's what it means when broken down into its component parts: -
    -
      -
    • The longest line in tab 1 is "CRITERION", so we - enclose CRITERION with begin/end markers for string tab 1: -

      - \*[ST1]CRITERION\*[ST1X] -
      -

    • We want a 1 pica (12 points) gutter between tab 1 and 2, - so we insert 12 points of space with \*[FWD 12p] - (ForWarD 12 points): -

      - \*[FWD 12p] -
      -

    • The longest line in tab 2 is "EVALUATION", so - we enclose EVALUATION with begin/end markers for string - tab 2: -

      - \*[ST2]EVALUATION\*[ST2X] -
      -

    • We want 1 pica (12 points) between tab 2 and 3, so we - insert 12 points of space with another \*[FWD 12p]: -

      - \*[FWD 12p] -
      -

    • We want tab 3 to be as long as whatever space remains on - the current line length, so we enclose the - pad marker - (#) with begin/end markers for string tab 3: -

      - \*[ST3]#\*[ST3X] -
      -

    -
    -The tabs are now defined, but they require -quad direction -and -fill -information. For each string tab defined above, enter a -separate -ST -line, like this: -

    -

    -	.ST  1  L
    -	.ST  2  L
    -	.ST  3  L  QUAD
    -	     |  |   |
    -	     |  |   |__fill output lines
    -	     |  |
    -	tab__|  |__direction
    -	number
    -
    - -From here on in, you call the tabs with -TAB -and -TN -just like typesetting tabs (see -typesetting tabs tutorial). -

    -Here's the complete setup and entry for the sample employee -evaluation form utilizing string tabs. -

    -

    -	.PAGE 8.5i 11i 1i 1i 1i
    -	.FAMILY  T
    -	.FT      R
    -	.PT_SIZE 14
    -	.LS      16
    -	.QUAD    LEFT
    -	.KERN
    -	.HY OFF
    -	.SS 0
    -	.SILENT
    -	.PAD "\*[ST1]CRITERION\*[ST1X]\*[FWD 12p]\*[ST2]EVALUATION\*[ST2X]\*[FWD 12p]\*[ST3]#\*[ST3X]"
    -	.SILENT OFF
    -	.ST  1  L
    -	.ST  2  L
    -	.ST  3  L  QUAD
    -	.TAB 1
    -	CRITERION
    -	.TN
    -	EVALUATION
    -	.TN
    -	COMMENTS
    -	.SP
    -	.TAB 1
    -	Service
    -	.TN
    -	Good
    -	.TN
    -	Many clients specifically request support from Joe by name.
    -	.SP
    -	.TAB 1
    -	Punctuality
    -	.TN
    -	Satisfactory
    -	.TN
    -	Tends to arrive after 8:00am, but often works through lunch hour.
    -	.SP
    -	.TAB 1
    -	Team spirit
    -	.TN
    -	Needs work
    -	.TN
    -	Persistently gives higher priority to helping clients
    -	than respecting organizational hierarchy.
    -	.TQ
    -
    - -Try setting this up and previewing it with -

    -

    -	groff -mom -X <filename>
    -
    - -Now, change the point size of the above sample to 12 and preview -it again. You'll see that the tab structure remains identical (tab -1=CRITERION, tab 2=EVALUATION, tab 3=space remaining, and the gutter -between tabs is still 1 pica), while the position and length -of the tabs have altered because of the new point size. -

    -Now try increasing the gutters to 2 picas (\*[FWD 24p] or -\*[FWD 2P] instead of \*[FWD 12p]). Preview the -file again, and notice how the tab structure remains the same, but -the gutters are wider. -

    - - -

    Tabs macro list

    - - -
      -
    • TAB_SET (create typesetting tabs) -
    • \*[ST]...\*[STX] (inline escapes for marking String Tabs) -
    • ST (set String Tabs) -
    • TAB (call tabs) -
    • TN (Tab Next; call next tab in a sequence) -
    • TQ (Tab Quit) -
    - - - -
    -

    Set up typesetting tabs

    -
    -Macro: TAB_SET <tab number> <indent> <length> L | R | C | J [ QUAD ] -
    -*<indent> and <length> require a unit of measure - -

    -TAB_SET creates typesetting tabs that later can be -called with -TAB. -Typesetting tabs are numbered, and defined by an indent, a length, -and a "direction", hence TAB_SET has -four required arguments: -
    -

      -
    • a tab number -
    • an indent (measured from the left margin of the page, - or, if you're already in a tab, from the left margin of the tab) -
    • a length -
    • a direction -
    -
    -To set up a centred tab 6 picas long and 9 points from the left -margin, you'd enter -

    -

    -	.TAB_SET 1 9p 6P C
    -
    - -The tab number in the above ("1") is simply an -identifier. It could have been 4, or 17, or 296. There's no -need to set up tabs in numerical sequence. -

    -By default, tabs are in -nofill -mode, meaning you can enter text in tabs on a line-for-line basis -without having to use the -BR -macro. If you want a tab to be -filled, -pass the optional argument QUAD, which will -make the tab behave as if you'd entered .QUAD L | R | -C. -

    -For -justified -tabs, simply pass the argument J (without the -QUAD argument), like this: -

    -

    -	.TAB 1 9p 6P J
    -
    - -Once tabs are set, they can be called at any time with the -TAB # -macro, where "#" is the number of the desired tab. -

    -You can set up any number of typesetting tabs. However, be -aware that -string tabs -are also called with TAB #, so be careful that you -don't set up a typesetting tab numbered, say, 4, when you already -have a string tab numbered 4. Every tab, typesetting or string, -must have a unique numeric identifier. -

    -NOTE: If you use TAB_SET while -you're currently inside a tab, the indent argument is the distance from -the tab's left margin, not the left margin of the page. Therefore, -you should exit tabs (with -TQ) -before creating new tabs (unless, of course, you want to set -up a tab structure within the confines of an existing tab). -

    -IMPORTANT: Turn all indents off (see -Indents) -before setting up tabs with TAB_SET, or -mom may get confused. -

    - - - -


    -

    Mark positions of string tabs

    -
    -Inlines: \*[ST<number>]...\*[ST<number>X] -
    -*Quad -direction must be LEFT or JUSTIFY (see -QUAD -and -JUSTIFY) -or the -no-fill mode -set to -LEFT. -Please see -IMPORTANT, -below. -

    -String tabs need to be marked off with -inline escapes -before being set up with the -ST -macro. Any input line may contain string tab markers. -<number>, above, means the numeric identifier of -the tab. The following shows a sample input line with string -tab markers. -

    -

    -	\*[ST1]Now is the time\*[ST1X] for all \*[ST2]good men\*ST2X] to come to the aid of the party.
    -
    - -String tab 1 begins at the start of the line and ends after the word -"time". String tab 2 starts at "good" and ends -after "men". Inline escapes (e.g. font or point size -changes, or horizontal movements, including -padding) -are taken into account when mom determines the -position and length of string tabs. -

    -Up to nineteen string tabs may be marked (not necessarily all on -the same line, of course), and they must be numbered between 1 -and 19. -

    -Once string tabs have been marked in input lines, they have to -be "set" with -ST, -after which they may be called, by number, with -TAB. -

    -NOTE: Lines with string tabs marked off in them -are normal input lines, i.e. they get printed, just like any -input line. If you want to set up string tabs without the line -printing, use the -SILENT -macro. -

    -IMPORTANT: -Owing to the way groff processes -input lines -and turns them into -output lines, -it is not possible for mom to "guess" the -correct starting position of string tabs marked off in lines that -are centered or set flush right. -

    -Equally, she cannot guess the starting position if a line is fully -justified and broken with -SPREAD. -

    -In other words, in order to use string tabs, -LEFT -must be active, or, if -QUAD LEFT -or -JUSTIFY -are active, the line on which the string tabs are marked must be -broken "manually" with -BR -(but not -SPREAD). -

    -To circumvent this behaviour, I recommend using the -PAD -to set up string tabs in centered or flush right lines. Say, for -example, you want to use a string tab to underscore the text of a -centered line with a rule. Rather than this, -

    -

    -	.CENTER
    -	\*[ST1]A line of text\*[ST1X]\c
    -	.EL
    -	.ST 1
    -	.TAB 1
    -	.PT_SIZE 24
    -	.ALD 3p
    -	\*[RULE]
    -	.RLD 3p
    -	.TQ
    -
    - -you should do: -

    -

    -	.QUAD CENTER
    -	.PAD "#\*[ST1]A line of text\*[ST1X]#"
    -	.EL
    -	.ST 1
    -	.TAB 1
    -	.PT_SIZE 24
    -	.ALD 3p
    -	\*[RULE] \" Note that you can't use \*[UP ] or \*[DOWN] with \*[RULE]
    -	.RLD 3p
    -	.TQ
    -
    - -

    - - - -


    -

    Set string tabs

    -
    -Macro: ST <tab number> L | R | C | J [ QUAD ] - -

    -After string tabs have been marked off on an input line (see -\*[ST]...\*[STX]), -you need to "set" them by giving them a direction -and, optionally, the QUAD argument. In this -respect, ST is like -TAB_SET -except that you don't have to give ST an indent -or a line length (that's already taken care of, inline, by -\*[ST]...\*[STX]). If you want string tab 1 to be -left, enter -

    -

    -	.ST 1 L
    -
    - -If you want it to be left and -filled, enter -

    -

    -	.ST 1 L QUAD
    -
    - -If you want it to be justified, enter -

    -

    -	.ST 1 J
    -
    - -See the -Quickie tutorial on string tabs -for a full explanation of setting up string tabs. -

    - - - -


    -

    Call tabs

    -
    -Macro: TAB <tab number> -
    -Alias: TB -

    -After tabs have been defined (either with -TAB_SET -or -ST), -TAB moves to whatever tab number you pass it as -an argument. For example, -

    -

    -	.TAB 3
    -
    - -moves you to tab 3. -

    - -NOTE: TAB breaks the line preceding -it and advances 1 linespace. Hence, -

    -

    -	.TAB 1
    -	A line of text in tab 1.
    -	.TAB 2
    -	A line of text in tab 2.
    -
    - -produces, on output -

    -

    -	A line of text in tab 1.
    -	                           A line of text in tab 2.
    -
    - -If you want the tabs to line up, use -TN -(Tab Next), like this: -

    -

    -	.TAB 1
    -	A line of text in tab 1.
    -	.TN
    -	A line of text in tab 2.
    -
    - -which produces -

    -

    -	A line of text in tab 1.   A line of text in tab 2.
    -
    - -If the text in your tabs runs to several lines, and you want the -first lines of each tab to align, you must use the -multi-column macros. -

    -ADDITIONAL NOTE: Any indents in effect prior to -calling a tab are automatically turned off by TAB. -If you were happily zipping down the page with a left indent of 2 -picas turned on, and you call a tab whose indent from the left margin -is 6 picas, your new distance from the left margin will be 6 picas, -not 6 picas plus the 2 pica indent. -

    - - - -


    -

    Tab Next

    -
    -Macro: TN -
    -*In tabs that aren't given the QUAD argument when they're set up -with -TAB_SET -or -ST, you must terminate the line preceding -TN with the \c inline escape. See the -ADDITIONAL NOTE, -
    -*If you find remembering whether to put in the \c -bothersome, you may prefer to use the -inline escape -alternative to -.TN, -\*[TB+], -which works consistently regardless of the fill mode.
    - -

    -TN moves over to the next tab in numeric -sequence (tab n+1) without advancing on the page. See the -NOTE -in the description of the TAB macro for an -example of how TN works. -

    -NOTE: You must put text in the -input line -immediately after TN. "Stacking" of -TN's is not allowed. In other words, you cannot -do -

    -

    -	.TAB 1
    -	Some text
    -	.TN
    -	Some more text
    -	.TN
    -	.TN
    -	Yet more text
    -
    - -The above example, assuming tabs numbered from 1 to 4, should be entered -

    -

    -	.TAB 1
    -	Some text
    -	.TN
    -	Some more text
    -	.TAB 4
    -	Yet more text
    -
    -

    -ADDITIONAL NOTE: -In versions of mom prior to 1.1.9, TN did not -always work as advertised on the last -output line -of pages that contained a footer trap (e.g. one set with -B_MARGIN -or in documents formatted using the -document processing macros). -

    -TN has been re-written so that this should no longer be the -case. However, in order for it to work in tabs that have not been -given a QUAD argument (see -TAB_SET -and -ST) -you must always "join" .TN to the line -before it using the -\c -inline escape, -as in the following example: -

    -

    -	.TAB_SET 1 0  1P  L
    -	.TAB_SET 2 1P 20P L
    -	.TAB 1
    -	1.\c
    -	.TN
    -	The first rule of survival is "make and keep good friends."
    -
    - -When output, the example will look like this: -

    -

    -	1.  The first rule of survival is "make and keep good friends."
    -
    - -Conversely, if you did give a QUAD argument -to TAB_SET or ST, the -\c must not be used. -

    - - - -


    -

    Tab Quit

    -
    -Macro: TQ -
    - -

    -TQ takes you out of whatever tab you were in, -advances 1 linespace, and restores the left margin, line length, -quad direction and -fill mode -that were in effect prior to invoking any tabs. -

    -


    - - - - - - -

    Multi-Columns

    -
    - -Tabs are not by nature columnar, which is to say that if the text -inside a tab runs to several lines, calling another tab does not -automatically move to the -baseline -of the first line in the previous tab. To demonstrate: -

    -

    -	.TAB 1
    -	Carrots
    -	Potatoes
    -	Broccoli
    -	.TAB 2
    -	$1.99/5 lbs
    -	$0.25/lb
    -	$0.99/bunch
    -
    - -produces, on output -

    -

    -	Carrots
    -	Potatoes
    -	Broccoli
    -	           $1.99/5 lbs
    -	           $0.25/lb
    -	           $0.99/bunch
    -
    - -The multi-column macros allow you to set tabs in columnar -fashion, rather than line by line. When you invoke multi-column -mode (with -MCO), -mom saves the position of the current baseline. -MCR -(Multi-column return) at any point while multi-columns are on -returns you to the saved position. Exiting multi-columns -(MCX) -quits the current tab (if you're in one) and moves you to the -bottom of the longest column. (Note that you do not have to use -multi-columns in conjunction with tabs.) -

    -Using our example above, but setting it in multi-column mode, -

    -

    -	.MCO
    -	.TAB 1
    -	Carrots
    -	Potatoes
    -	Broccoli
    -	.MCR
    -	.TAB 2
    -	$1.99/5 lbs
    -	$0.25/lb
    -	$0.99/bunch
    -	.MCX
    -
    - -produces -

    -

    -	Carrots   $1.99/5 lbs
    -	Potatoes  $0.25/lb
    -	Broccoli  $0.99/bunch
    -
    - -NOTE: Do not confuse MCO with -the -COLUMNS -macro in the -document processing macros. -

    - -

    Columns macro list

    - - - - - -
    -

    Begin multi-column setting

    -
    -Macro: MCO -
    - -

    -MCO -(Multi-Column On) -is the macro you use to begin multi-column setting. It marks -the current -baseline -as the top of your columns, for use later with -MCR. See the -introduction to columns -for an explanation of multi-columns and some sample -input. -

    -NOTE: Do not confuse MCO with -the -COLUMNS -macro in the -document processing macros. -

    - - - -


    -

    Return to top of column

    -
    -Macro: MCR -
    - -

    -Once you've turned multi-columns on (with -MCO), -MCR, at any time, returns you to the top of -your columns. -

    - - - -


    -

    Exit multi-columns

    -
    -Macro: MCX [ <distance to advance below longest column> ] -
    -*Optional argument requires a unit of measure - -

    -MCX takes you out of any tab you were in (by silently -invoking -TQ) and advances to the bottom of the longest -column. -

    -Without an argument, MCX advances 1 linespace -below the longest column. Linespace, in this instance, is the -leading -in effect at the moment MCX is -invoked. -

    -If you pass the <distance> argument to -MCX, it advances 1 linespace below the longest -column (see above) PLUS the distance specified by the argument. -The argument requires a unit of measure; therefore, to advance -an extra 6 points below where MCX would -normally place you, you'd enter -

    -

    -	.MCX 6p
    -
    - -NOTE: If you wish to advance a precise distance -below the -baseline -of the longest column, use MCX with an -argument of 0 (zero; no unit of measure required) in conjunction -with the -ALD -macro, like this: -

    -

    -	.MCX 0
    -	.ALD 24p
    -
    - -The above advances to precisely 24 points below the baseline -of the longest column. -

    -


    - - - - - - -

    Indents

    -
    - -With mom's indents, you can indent from the left, -the right, or both margins. In addition, mom -provides temporary left indents (i.e. only one line is indented, -as at the start of a paragraph) and "hanging" left indents -(the reverse of a temporary indent; the first line isn't indented, -subsequent lines are). -

    -

    A brief explanation of how mom handles indents

    -

    -Mom provides five kinds of indents: left, right, -both, temporary, and hanging. Each is invoked by its own name: -
    -

      -
    • IL = Indent Left -
    • IR = Indent Right -
    • IB = Indent Both -
    • HI = Hanging Indent -
    • TI = Temporary Indent -
    -
    -In addition, there are four macros to control exiting from -indents: -
    -
      -
    • IQ  = quit all active indents -
    • ILX = exit indent style left -
    • IRX = exit indent style right -
    • IBX = exit indent style both -
    -
    -This section deals exclusively with IL, IR and -IB. For an explanation -of hanging and temporary indents -- how they work and how to use -them -- see -Hanging indents -and -Temporary indents. -

    -The first time you invoke any of mom's indents, -you must supply a measure. For example, -

    -

    -	.IL 2P
    -
    - -indents text 2 picas from the left margin (or current tab -indent). -

    -When you want to exit the above indent, use either -

    -

    -	.IQ
    -	 or
    -	.ILX
    -
    - -The next time you want the same indent, invoke it without the -argument, like this: -

    -

    -	.IL
    -
    - -As you can see, once you've supplied a measure to an indent macro -mom stores the value, obviating the need to repeat -it on subsequent invocations. And mom doesn't just -store the measure -- she hangs on to it tenaciously. Arguments passed -to IL, IR and IB are additive. -Consider the following: -

    -

    -	.LL 20P
    -	.IR 2P    \"Indent right by 2 picas
    -	A first block of text...
    -	...
    -	...
    -	.IQ       \"Turn indent off
    -	A second block of text...
    -	...
    -	...
    -	.IR 2P    \"Indent right by an additional 2 picas (i.e. 4 picas)
    -	A third block of text...
    -	...
    -	...
    -
    - -The first block of text is right indented by 2 picas (i.e. the line -length is shortened by 2 picas to 18 picas). The second block of -text, after IQ, is, as you'd expect, set to the full -measure. The third block of text -- the one to pay attention to -- -is not right indented by 2 picas, but rather by 4 picas. -Mom adds the value of arguments to IL, -IR and IB to whatever value is already -in effect. -

    -If you wanted the third block of text in the example above to -be right indented by just 2 picas (the original measure given to -IR), you would enter .IR without an -argument. -

    -Because indent arguments are additive, putting a minus sign in front -of the argument can be used to subtract from the current value. -In the following example, the first line is indented 18 points, the -second is indented 36 points (18+18), and the third is again indented -18 points (36-18). -

    -

    -	.IL 18p     \"Indent left by 18 points      = 18 points
    -	Now is the time
    -	.IL 18p     \"Indent left by 18 points more = 36 points
    -	for all good men to come
    -	.IL -18p    \"Indent left by 18 points less = 18 points
    -	to the aid of the party.
    -
    - -Sometimes, you may want to clear out the stored indent values -- let -mom start indenting with a clean slate, as it were. -Giving the optional argument CLEAR to any of the -"indent quit" macros resets them to zero. -
    -
      -
    • IQ CLEAR  = quit and clear all indents -
    • ILX CLEAR = quit and clear indent style left -
    • IRX CLEAR = quit and clear indent style right -
    • IBX CLEAR = quit and clear indent style both -
    -
    -Indent styles may be combined and manipulated separately. You could, -for example, have a left indent of 4 picas and a right indent of 6 -picas and control each separately, as in the following example. -

    -

    -	.IL 4P     \"Indent left 4 picas
    -	.IR 6P     \"Indent right 6 picas
    -	Some text
    -	.IRX       \"Turn off the right indent only
    -	More text  \"Text is still indented 4 picas left
    -
    - -If, at .IRX, you wanted the text afterwards to have no -indents (either left or right), you would enter .IQ, -which exits all indent styles at once. -

    -A word of advice: Indents are best used only when -you have a compelling reason not to change the current left margin or -line length. In many instances where indents might seem expedient, -it's better to use tabs, or actually change the left margin or the -line length. Mom's indenting macros are flexible -and powerful, but easy to get tangled up in. Personally, I don't -use them much, except for cutarounds and multi-level lists à la html, -at which they excel. -

    -NOTE: see the section -Typesetting Macros in Document Processing -for information and advice on using indents with the -document processing macros. -

    -

    Indents macro list

    -
      -
    • IL  (Indent left) -
    • IR  (Indent right) -
    • IB  (Indent both) -
    • TI  (Temporary indent, left) -
    • HI  (Hanging Indent) - -
    • IQ  (Quit indents, all) -
    • ILX (Exit indent style left) -
    • IRX (Exit indent style right) -
    • IBX (Exit indent style both) -
    - - - -
    -

    Indent left

    -
    -Macro: IL [ <measure> ] -
    -*The optional argument requires a unit of measure - -

    -IL indents text from the left margin of the page, -or if you're in a tab, from the left edge of the tab. Once -IL is on, the left indent is applied uniformly to -every subsequent line of text, even if you change the line length. -

    -The first time you invoke IL, you must give it a -measure. Subsequent invocations with a measure add to the previous -measure. A minus sign may be prepended to the argument to subtract -from the current measure. The -\w -inline escape -may be used to specify a text-dependent measure, in which case -no unit of measure is required. For example, -

    -

    -	.IL \w'margarine'
    -
    - -indents text by the width of the word "margarine". -

    -With no argument, IL indents by its last -active value. See the -brief explanation of how mom handles indents -for more details. -

    -NOTE: Calling a tab (with -TAB) -automatically cancels any active indents. -

    -ADDITIONAL NOTE: Invoking IL -automatically turns off IB. -

    - - - -


    -

    Indent right

    -
    -Macro: IR [ <measure> ] -
    -*The optional argument requires a unit of measure - -

    -IR indents text from the right margin of the -page, or if you're in a tab, from the end of the tab. -

    -The first time you invoke IR, you must give it a -measure. Subsequent invocations with a measure add to the previous -indent measure. A minus sign may be prepended to the argument to -subtract from the current indent measure. The -\w -inline escape -may be used to specify a text-dependent measure, in which case -no unit of measure is required. For example, -

    -

    -	.IR \w'jello'
    -
    - -indents text by the width of the word "jello". -

    -With no argument, IR indents by its last -active value. See the -brief explanation of how mom handles indents -for more details. -

    -NOTE: Calling a tab (with -TAB) -automatically cancels any active indents. -

    -ADDITIONAL NOTE: Invoking IR -automatically turns off IB. -

    - - - -


    -

    Indent both

    -
    -Macro: IB [ <left measure> <right measure> ] -
    -*The optional arguments require a unit of measure - -

    -IB allows you to set or invoke a left and a right -indent at the same time. -

    -At its first invocation, you must supply a measure for both indents; -at subsequent invocations when you wish to supply a measure, both must -be given again. As with IL and IR, -the measures are added to the values previously passed to the macro. -Hence, if you wish to change just one of the values, you must -give an argument of zero to the other. -

    -A word of advice: If you need to manipulate left and -right indents separately, use a combination of IL -and IR instead of IB. You'll -save yourself a lot of grief. -

    -A minus sign may be prepended to the arguments to subtract from their -current values. The -\w -inline escape -may be used to specify text-dependent measures, in which case -no unit of measure is required. For example, -

    -

    -	.IB \w'margarine' \w'jello'
    -
    - -left indents text by the width of the word "margarine" -and right indents by the width of "jello". -

    -Like IL and IR, IB -with no argument indents by its last active values. See the -brief explanation of how mom handles indents -for more details. -

    -NOTE: Calling a tab (with -TAB) -automatically cancels any active indents. -

    -ADDITIONAL NOTE: Invoking IB -automatically turns off IL and -IR. -

    - - - -


    -

    Temporary (left) indent

    -
    -Macro: TI [ <measure> ] -
    -*The optional argument requires a unit of measure - -

    -A temporary indent is one that applies only to the first line of -text that comes after it. Its chief use is indenting the first -line of paragraphs. (Mom's -PP -macro, for example, uses a temporary indent.) -

    -The first time you invoke TI, you must give it -a measure. If you want to indent the first line of a -paragraph by, say, 2 -ems, -do -

    -

    -	.TI 2m
    -
    - -Subsequent invocations of TI do not require you -to supply a measure; mom keeps track of the -last measure you gave it. -

    -Because temporary indents are temporary, there's no need to turn -them off. -

    -IMPORTANT: Unlike IL, IR and -IB, measures given to TI -are NOT additive. In the following example, the second .TI -2P is exactly 2 picas. -

    -

    -	.TI 1P
    -	The beginning of a paragraph...
    -	.TI 2P
    -	The beginning of another paragraph...
    -
    - - - -
    -

    Hanging indent

    -
    -Macro: HI [ <measure> ] -
    -*The optional argument requires a unit of measure - -

    -A hanging indent looks like this: -

    -

    -	The thousand injuries of Fortunato I had borne as best I
    -	    could, but when he ventured upon insult, I vowed
    -	    revenge.  You who so well know the nature of my soul
    -	    will not suppose, however, that I gave utterance to a
    -	    threat, at length I would be avenged...
    -
    - -The first line of text "hangs" outside the left -margin. -

    -In order to use hanging indents, you must first have a left indent -active (set with either -IL -or -IB). -Mom will not hang text outside the left margin set with -L_MARGIN -or outside the left margin of a tab. -

    -The first time you invoke HI, you must give it -a measure. If you want the first line of a paragraph to hang by, -say, 1 pica, do -

    -

    -	.IL 1P
    -	.HI 1P
    -
    - -Subsequent invocations of HI do not require you -to supply a measure; mom keeps track of the -last measure you gave it. -

    -Generally speaking, you should invoke HI immediately -prior to the line you want hung (i.e. without any intervening -control lines). -And because hanging indents affect only one line, there's no need to turn -them off. -

    -

    A recipe for numbered lists

    -

    -PLEASE NOTE: mom now has macros for setting lists (see -Nested lists), -making this recipe superfluous. It remains here in the hope that -it will clarify the use of hanging indents generally, if no longer -specifically. -

    -Consider the following example: -

    -

    -	.PAGE 8.5i 11i 1i 1i 1i 1i
    -	.FAMILY  T
    -	.FT      R
    -	.PT_SIZE 12
    -	.LS      14
    -	.JUSTIFY
    -	.KERN
    -	.SS 0
    -	.IL \w'\0\0.'    \"Indent left by 2 figure spaces and a period
    -	.HI \w'\0\0.'    \"Hang first line of text back by 2 figure spaces and a period
    -	1.\0The most important point to be considered is whether the
    -	answer to the meaning of life, the universe, and everything
    -	really is 42.  We have no-one's word on the subject except
    -	Mr. Adams'.
    -	.HI
    -	2.\0If the answer to the meaning of life, the universe,
    -	and everything is indeed 42, what impact does this have on
    -	the politics of representation?  42 is, after all not a
    -	prime number.  Are we to infer that prime numbers don't
    -	deserve equal rights and equal access in the universe?
    -	.HI
    -	3.\0If 42 is deemed non-exclusionary, how do we present it
    -	as the answer and, at the same time, forestall debate on its
    -	exclusionary implications?
    -
    - -First, we invoke a left indent with a measure equal to the width -of 2 -figures spaces -plus a period (using the -\w -inline escape). At this point, the left indent is active; text -afterwards would normally be indented. However, we invoke a hanging -indent of exactly the same width, which hangs the first line (and -first line only!) to the left of the indent by the same distance -(in this case, that means "out to the left margin"). -Because we begin the first line with a number, a period, and a -figure space, the actual text ("The most important point...") -starts at exactly the same spot as the indented lines that -follow. -

    -Notice that subsequent invocations of HI without a -measure produce exactly the same effect. -

    -Paste the example above into a file and preview it with groff -mom -X -<filename> to see hanging indents in action. -

    -IMPORTANT: Unlike IL, IR and -IB, measures given to HI -are NOT additive. Each time you pass a measure to -HI, the measure is treated literally. -

    - - - -


    -

    Quitting indents

    -
    -Macro: IQ  [ CLEAR ]  (quit any/all indents -- see *IMPORTANT NOTE) -
    -Macro: ILX [ CLEAR ]  (exit Indent Left) -
    -Macro: IRX [ CLEAR ]  (exit Indent Right) -
    -Macro: IBX [ CLEAR ]  (exit Indent Both) - -

    -*IMPORTANT NOTE: -
    -    Formerly, the macro for quitting all indents was -.IX. This usage is now deprecated, in favour -of .IQ. .IX will -continue to behave as before, but mom will -issue a warning to stderr indicating that you should update your -documents. -
    -    As a consequence of this change,
    -ILX, IRX and IBX may -now also be invoked as ILQ, IRQ and -IBQ. Both forms are acceptable. -

    -Without an argument, the macros to quit indents merely restore your -original margins and line length. The measures stored in the -indent macros themselves are saved so you can call them again without -having to supply a measure. -

    -If you pass these macros the optional argument CLEAR, -they not only restore your original left margin and line length, -but also clear any values associated with a particular indent style. -The next time you need an indent of the same style, you have to supply -a measure again. -

    -IQ CLEAR, as you'd suspect, quits and clears -the values for all indent styles at once. - -

    -


    -Next   -Prev   -Top   -Back to Table of Contents - - - diff --git a/contrib/groff/contrib/mom/momdoc/using.html b/contrib/groff/contrib/mom/momdoc/using.html deleted file mode 100644 index 1265eec8cd97..000000000000 --- a/contrib/groff/contrib/mom/momdoc/using.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - -Using mom - - - - - -Next   -Prev   -Back to Table of Contents -

    - - -

    USING MOM

    - - -Introduction -
    -Inputting macros -
    -Invoking groff -
    -Previewing documents -

    -


    -

    Introduction

    - -As explained in the section -What is mom?, -mom can be used in two ways: for straight typesetting -or for document processing. The difference between the two is -that in straight typesetting, every macro is a literal -typesetting instruction that determines precisely how text -following it will look. Document processing, on the other hand, -uses markup "tags" (e.g. .PP for -paragraphs, .HEAD for heads, .FOOTNOTE -for footnotes, etc.) that make a lot of typesetting decisions -automatically. -

    -You tell mom that you want to use the document -processing macros with the -START -macro, explained below. After START, -mom determines the appearance of text following -the markup tags automatically, although you, the user, can easily -change how mom interprets the tags. This gives you -nearly complete control over document design. In addition, the -typesetting macros, in combination with document processing, let you -meet all sorts of typesetting needs that just can't be covered by -"one macro fits all" markup tags. -

    - -

    How to input mom's macros

    - - -Regardless of which way you use mom, the -following apply. -
    -
      -
    1. You need a good text editor for inputting - mom files. -

      - I cannot recommend highly enough that you use an - editor that lets you write syntax highlighting - rules for mom's macros and - inline escapes. - I use the vi clone called elvis, and find it a pure - joy in this regard. Simply colourizing macros and - inlines to half-intensity can be enough to make text stand - out clearly from formatting commands. -

    2. All mom's macros begin with a period - (dot) and must be entered in upper case (capital) - letters. -
    3. Macro - arguments - are separated from the macro itself by spaces. Multiple - arguments to the same macro are separated from each - other by spaces. Any number of spaces may be used. All - arguments to a macro must appear on the same line as the - macro. -
    4. Any argument (except a - string argument) - that is not a digit must be entered in upper case - (capital) letters. -
    5. Any argument that requires a plus or minus sign must - have the plus or minus sign prepended to the argument - with no intervening space (e.g. +2, -4). -
    6. Any argument that requires a - unit of measure - must have the unit appended directly to the argument, - with no intervening space (e.g. 4P, .5i, 2v). -
    7. String arguments, - in the sense that the term is used in this manual, must - be surrounded by double-quotes ("text of - string"). Multiple string arguments are separated - from each other by spaces (each argument surrounded by - double-quotes, of course). -
    8. If a string argument, as entered in your text editor, - becomes uncomfortably long (i.e. runs longer than the - visible portion of your screen or window), you may break - it into two or more lines by placing the backslash - character (\) at the ends of lines to break - them up, like this: -

      -

      -	.SUBTITLE "An In-Depth Consideration of the \
      -	Implications of Forty-Two as the Meaning of Life, \
      -	The Universe, and Everything"
      -	
      -
    - -It's important that formatted documents be easy to read/interpret -when you're looking at them in a text editor. One way to achieve -this is to group macros that serve a similar purpose together, and -separate them from other groups of macros with a blank comment line. -In groff, that's done with \# on a line by itself. -Consider the following, which is a template for starting the -chapter of a book. -

    -

    -	.TITLE   "My Pulitzer Novel"
    -	.AUTHOR  "Joe Blow"
    -	.CHAPTER  1
    -	\#
    -	.DOCTYPE    CHAPTER
    -	.PRINTSTYLE TYPESET
    -	\#
    -	.FAM     P
    -	.PT_SIZE 10
    -	.LS      12
    -	\#
    -	.START
    -
    - - -

    Printing -- invoking groff with mom

    -
    - -After you've finished your document, naturally you will want to -print it. This involves invoking groff from the command line. -In all likelihood, you already know how to do this, but in case -you don't, here are two common ways to do it. -

    -

    -	groff -mom -l <filename>
    -	groff -mom <filename> | lpr
    -
    - -In the first, the -l option to groff tells -groff to send the output to your printer. In the second, you're -doing the same thing, except you're telling groff to pipe the -output to your printer. Basically, they're the same thing. The -only advantage to the second is that your system may be set up -to use something other than lpr as your print -command, in which case, you can replace lpr -with whatever is appropriate to your box. -

    -Sadly, it is well beyond the scope of this manual to tell you -how to set up a printing system. See the README file for -minimum requirements to run groff with mom. -

    -NOTE FOR ADVANCED USERS: I've sporadically had groff -choke on perfectly innocent sourced files within mom -documents. You'll know you have this problem when groff complains that -it can't find the sourced file even when you can plainly see that the -file exists, and that you've given .so the right path and -name. Should this happen, pass groff the -U (unsafe mode) -option along with the other options you require. Theoretically, you -only need -U with .open, .opena, .pso, .sy, -and .pi, however reality seems, at times, to dictate -otherwise. -

    - -

    How to preview documents

    - - -Other than printing out hard copy, there are two well-established -methods for previewing your work. Both assume you have a working -X server. -

    -Groff itself comes with a quick and dirty previewer called -gxditview. Invoke it with -

    -

    -	groff -X -mom filename
    -
    - -It's not particularly pretty, doesn't have many navigation -options, requires a lot of work if you want to use other than -the "standard" groff PostScript fonts, and occasionally -has difficulty accurately reproducing some of -mom's macro effects -(smartquotes -and -leaders -come to mind). What it does have going for it is that it's fast and -doesn't gobble up system resources. -

    -A surer way to preview documents is with gv -(ghostview). This involves processing documents with groff, -and directing the output to a PostScript file, like this, -

    -

    -	groff -mom filename > filename.ps
    -
    -then opening .ps file in gv. -

    -While that may sound like a lot of work, I've set up my editor -(elvis) to do it for me. Whenever I'm working on a document that -needs previewing/checking, I fire up gv with the -"Watch File" option turned on. To look at the file, I -tell elvis to process it (with groff) and send it to a temporary -file (groff -mom filename > filename.ps), then open -the file inside gv. Ever after, when I want to -look at any changes I make, I simply tell elvis to work his magic -again. The Watch File option in gv registers that -the file has changed, and automatically loads the new version. -Voilà! --instant previewing. - -

    -


    -Next   -Prev   -Top   -Back to Table of Contents - - diff --git a/contrib/groff/contrib/mom/om.tmac b/contrib/groff/contrib/mom/om.tmac deleted file mode 100644 index 37e9161fd841..000000000000 --- a/contrib/groff/contrib/mom/om.tmac +++ /dev/null @@ -1,15889 +0,0 @@ -.\" om.tmac -.ig -Mom -- a typesetting/document-processing macro set for groff. - -Copyright (C) 2002, 2003 Free Software Foundation, Inc. - Written by Peter Schaffter (peter@faustus.dyn.ca) - -This file is part of groff. - -groff is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. - -groff is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License along -with groff; see the file COPYING. If not, write to the Free Software -Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -Version 1.3-a -------------- -Antoine de St-Exupéry asserted that elegance in engineering is -achieved not when there is nothing left to add, but when there is -nothing left to take away. - -By those standards, mom is a Rube Goldberg contraption. She was -created over the years while groff, and my understanding of it, -changed and evolved. However, I'm a firm believer in "if it -ain't broke, don't fix it," so I'm leaving any major clean-up -of redundancies and whatnot for a rainy day. - -Inasmuch as possible, macros that turn a feature on or off follow -a similar style. Invoking the macro without an argument turns -the feature on. Invoking it with any other argument turns it off. -Use of the argument OFF is recommended, but not required; users -may find other conventions preferable (e.g. NO, X, END, QUIT, etc.). - -"" in the description of arguments that can be passed -to a macro means that any argument turns the feature off. -.. -\# -\# ==================================================================== -\# -\# Check which version of groff is being run -.if (\n[.x]\n[.y] < 118) \ -. ab You need GNU troff version 1.18 or higher to run this version of mom. -\# Check that GNU troff is being run -.if !\n[.g]=1 \ -. ab The mom macros require that you be running GNU troff. -.if \n(.C \ -. ab The groff mom macros do not work in compatibility mode. -\# Add supplementary styles -.sty \n[.fp] L \" Light Roman -.sty \n[.fp] LI \" Light Italic -.sty \n[.fp] LCD \" Light Condensed Roman -.sty \n[.fp] LCDI \" Light Condensed Italic -.sty \n[.fp] LEX \" Light Extended Roman -.sty \n[.fp] LEXI \" Light Extended Italic -.sty \n[.fp] CD \" Medium/Book Condensed Roman -.sty \n[.fp] CDI \" Medium/Book Condensed Italic -.sty \n[.fp] EX \" Medium/Book Extended Roman -.sty \n[.fp] EXI \" Medium/Book Extended Italic -.sty \n[.fp] DB \" DemiBold Roman -.sty \n[.fp] DBI \" DemiBold Italic -.sty \n[.fp] BCD \" Bold Condensed Roman -.sty \n[.fp] BCDI \" Bold Condensed Italic -.sty \n[.fp] BEX \" Bold Extended Roman -.sty \n[.fp] BEXI \" Bold Extended Italic -.sty \n[.fp] HV \" Heavy Roman -.sty \n[.fp] HVI \" Heavy Italic -.sty \n[.fp] HVCD \" Heavy Condensed Roman -.sty \n[.fp] HVCDI \" Heavy Condensed Italic -.sty \n[.fp] HVEX \" Heavy Extended Roman -.sty \n[.fp] HVEXI \" Heavy Extended Italic -.sty \n[.fp] BL \" Black Roman -.sty \n[.fp] BLI \" Black Italic -.sty \n[.fp] BLCD \" Black Condensed Roman -.sty \n[.fp] BLCDI \" Black Condensed Italic -.sty \n[.fp] BLEX \" Black Extended Roman -.sty \n[.fp] BLEXI \" Black Extended Italic -.sty \n[.fp] UBL \" Ultra-Black Roman -.sty \n[.fp] UBLI \" Ultra-Black Italic -\# -\# ==================================================================== -\# -\# TYPESETTING MACROS, STRINGS, AND ALIASES -\# ======================================== -\# -\# +++ALIASES+++ -\# -\# Alias .als as ALIAS, and .aln (number registers) as ALIASN -\# -.als ALIAS als -.als ALIASN aln -\# -\# -\# ALIASES FOR GROFF REQUESTS -\# -------------------------- -\# -.ALIAS MAC de -.ALIAS BR br -.ALIAS SP sp -.ALIAS PAGELENGTH pl -.ALIAS SPREAD brp -.ALIAS ESC_CHAR ec -.ALIAS STRING ds -\# -\# ALIASES FOR NUMBER REGISTERS -\# ---------------------------- -\# -.ALIASN #PT_SIZE .ps \"fractional point size in units -.ALIASN #DIVER_DEPTH dn \"diversion depth -.ALIASN #DIVER_WIDTH dl \"diversion width -.ALIASN #TRAP_DISTANCE .t \"distance to next trap -.ALIASN #LEAD .v \"line space (.vs, not .ls) -.ALIASN #PAGE_LENGTH .p \"page length -.ALIASN #NUM_ARGS .$ \"number of arguments passed to a macro -.ALIASN #INDENT .i \"value of current indent -\# -\# ==================================================================== -\# -\# MISCELLANEOUS -\# ============= -.nr #L_MARGIN \n(.o \" Tabs, etc require #L_MARGIN -.cflags 4 /\(en \" So slash and en-dashes get broken -.warn 8192 -\# -.ig -About the warn level --------------------- - -There's a lot of testing for the presence of number registers and -strings in this macro file. Many of the registers and strings -pop into and out of existence on the fly. For convenience, I -often use - - .if \\n[whatever] and .if !\\n[whatever] - -to test "if the register exists and is (not) empty." Groff, -encountering such tests when called with the -ww options, emits - - warning: number register whatever not defined. - -Groff also warns about strings similarly tested for. - -The warn level, above, is high in order to shut off those -warnings. If you're futzing in this file and need more verbose -warnings, either comment out ".warn 8192" or set the warnlevel -to the one you need (but be ready for lots of what I've just -described). -.. -\# -\# ==================================================================== -\# -\# +++PAGE LAYOUT+++ -\# -\# Macros that control the physical layout of the page: paper size -\# and margins. -\# -\# PAGE WIDTH -\# ---------- -\# *Argument: -\# -\# *Function: -\# Stores user supplied page width in register #PAGE_WIDTH. -\# *Notes: -\# #PAGE_WIDTH is used to establish the default LL (and right margin). -\# Requires unit of measure. -\# -.MAC PAGEWIDTH END -. br -. nr #PAGE_WIDTH \\$1 -. if !r#L_MARGIN \{ .L_MARGIN \\n(.o \} -. if !r#R_MARGIN \{ .R_MARGIN 1i \} -.END -\# -\# -\# L_MARGIN -\# -------- -\# *Argument: -\# -\# *Function: -\# Stores user supplied page offset in register #L_MARGIN. -\# Sets .po to user supplied offset. -\# *Notes: -\# Requires unit of measure. -\# -.MAC L_MARGIN END -. br -. nr #L_MARGIN (\\$1) -. po \\n[#L_MARGIN]u -.END -\# -\# -\# R_MARGIN -\# -------- -\# *Argument: -\# -\# *Function: -\# Stores user supplied right margin in register #R_MARGIN. -\# *Notes: -\# This is a pseudo-margin. Right margin is actually a function of -\# line length. The macro calculates line length from the page offset -\# and the value plugged into #R_MARGIN. -\# -\# N.B. -- PAGEWIDTH and L_MARGIN have to be defined before R_MARGIN. -\# -\# Requires unit of measure. -\# -.MAC R_MARGIN END -. br -. nr #R_MARGIN (\\$1) -. ll \\n[#PAGE_WIDTH]u-\\n[#L_MARGIN]u-\\n[#R_MARGIN]u -. ta \\n(.lu -. nr #L_LENGTH \\n(.l -.END -\# -\# -\# T_MARGIN -\# -------- -\# *Argument: -\# -\# *Function: -\# Stores the user supplied top margin in register #T_MARGIN. -\# Advances user supplied depth from the top of the page. -\# *Notes: -\# Requires unit of measure. -\# -.MAC T_MARGIN END -. nr #T_MARGIN (\\$1) -. nr #TOP 1 -. if !\\n[#DOCS] \{\ -. sp |\\n[#T_MARGIN]u-1v -. \} -. wh 0i DO_T_MARGIN -.END -\# -\# -\# B_MARGIN -\# -------- -\# *Argument: -\# -\# *Function: -\# Stores the user supplied bottom margin in register #B_MARGIN. -\# *Notes: -\# Requires unit of measure. -\# -.MAC B_MARGIN END -. br -. nr #B_MARGIN (\\$1) -. nr #ORIGINAL_B_MARGIN \\n[#B_MARGIN] -. nr #B_MARGIN_SET 1 -. wh -\\n[#B_MARGIN]u DO_B_MARGIN -.END -\# -\# -\# PAGE -\# ---- -\# *Arguments: -\# [pagelength [leftmargin [rightmargin [topmargin [bottommargin]]]]] -\# *Function: -\# Page set-up. Collects arguments and passes them to the appropriate -\# macros. -\# *Notes: -\# All arguments after pagewidth are optional, but must appear -\# in the order given above. (User can fill in as much or as -\# little as desired.) -\# -\# All arguments require a unit of measure. -\# -.MAC PAGE END -. br -. PAGEWIDTH \\$1 -. PAGELENGTH \\$2 -. ie '\\$3'' \{ .L_MARGIN \\n(.o \} -. el \{ .L_MARGIN \\$3 \} -. ie '\\$4'' \{ .R_MARGIN 1i \} -. el \{ .R_MARGIN \\$4 \} -. if !'\\$5'' \{ .T_MARGIN \\$5 \} -. if !'\\$6'' \{ .B_MARGIN \\$6 \} -.END -\# -\# ===================================================================== -\# -\# +++PAGE CONTROL+++ -\# -\# Generic macros for breaking pages. -\# -\# DO_T_MARGIN -\# ----------- -\# *Argument: -\# -\# *Function: -\# Plants the top margin at the top of each page. -\# *Notes: -\# The trap is set in .T_MARGIN or .PAGE -\# -.MAC DO_T_MARGIN END -. ev T_MARGIN -. nr #TOP 1 -. sp |\\n[#T_MARGIN]u-1v -. ev -. sp -\\n[#T_MARGIN_LEAD_ADJ]u -.END -\# -\# -\# DO_B_MARGIN -\# ----------- -\# *Argument: -\# -\# *Function: -\# Plants the bottom margin at the bottom of each page. -\# *Notes: -\# The trap is set in .B_MARGIN or .PAGE. -\# -.MAC DO_B_MARGIN END -. nr #T_MARGIN_LEAD_ADJ \\n[#LEAD]-12000 -. ev B_MARGIN -. bp -. ev -.END -\# -\# -\# NEWPAGE -\# ------- -\# *Argument: -\# -\# *Function: -\# Breaks to a new page. -\# *Notes: -\# If a B_MARGIN has been set, processes that, otherwise, just -\# breaks to a new page. -\# -.MAC NEWPAGE END -. br -. nr #NEWPAGE 1 -. ie \\n[#B_MARGIN_SET]=1 \{\ -. ie !\\n[#DOCS]=1 \{\ -. ev NP -. bp -. ev -. \} -. el \{\ -. if \\n[#COLUMNS]=1 \{ .nr #COL_NUM \\n[#NUM_COLS] \} -. ie !\\n[#FN_DEPTH] \{\ -. ch FN_OVERFLOW_TRAP -. DO_B_MARGIN -. wh -(\\n[#FN_OVERFLOW_TRAP_POS]u) FN_OVERFLOW_TRAP -. \} -. el \{\ -. DO_B_MARGIN -. \} -. \} -. \} -. el \{\ -. DO_B_MARGIN -. \} -.END -\# -\# ===================================================================== -\# -\# +++GENERAL STYLE MACROS+++ -\# -\# Macros that are likely to appear together to define general -\# type style: line length, family, font, point size, and line -\# spacing. -\# -\# LINE LENGTH -\# ----------- -\# *Argument: -\# -\# *Function: -\# Stores user supplied line length in register #L_LENGTH. -\# Sets .ll to #L_LENGTHu -\# *Notes: -\# Requires unit of measure. -\# -.MAC LL END -. nr #USER_SET_L_LENGTH 1 -. ll \\$1 -. nr #L_LENGTH \\n(.l -. ta \\n(.lu -.END -\# -\# -\# +++FAMILY AND FONT+++ -\# -\# FALLBACK FONT -\# ------------- -\# *Argument: -\# [ ABORT | WARN ] | ABORT | WARN -\# *Function: -\# Sets register #ABORT_FT_ERRORS to 1, or defines a fallback font -\# called "dummy" at font position 0. -\# *Notes: -\# Calls to non-existent families cause mom to continue processing -\# files using the fallback font until a valid family is entered. -\# -\# Calls to non-existent fonts generate warnings. If ABORT is passed -\# to FALLBACK_FONT, mom stops processing files after the warning. -\# Otherwise, she continues to process files using the fallback font -\# after the warning is issued. The default fallback font is CR; the -\# default for font warnings is to abort. -\# -.MAC FALLBACK_FONT END -. if \\n[#NUM_ARGS]=1 \{\ -. if '\\$1'ABORT' \{ .nr #ABORT_FT_ERRORS 1 \} -. if '\\$1'WARN' \{\ -. if r#ABORT_FT_ERRORS \{ .nr #ABORT_FT_ERRORS 0 \} -. \} -. if !'\\$1'ABORT' \{\ -. if !'\\$1'WARN' \{\ -. fp 0 dummy \\$1 -. \} -. \} -. \} -. if \\n[#NUM_ARGS]=2 \{\ -. fp 0 dummy \\$1 -. if '\\$2'ABORT' \{ .nr #ABORT_FT_ERRORS 1 \} -. if '\\$2'WARN' \{ .nr #ABORT_FT_ERRORS 0 \} -. \} -.END -\# -.FALLBACK_FONT CR ABORT -\# -\# FAMILY -\# ------ -\# *Argument: -\# -\# *Function: -\# Stores user supplied font family in string $FAMILY. Sets .fam -\# to $FAMILY. -\# -.MAC FAMILY END -. if \\n[#PRINT_STYLE]=1 \{\ -. fam C -. return -. \} -. if \\n[#IGNORE] \{\ -. fam C -. return -. \} -. if (\\n[.x]\\n[.y]\\n[.Y] >= 1192) \{\ -. ds $SAVED_STYLE \\n[.sty] -. \} -. ds $FAMILY \\$1 -. ft 0 -. fam \\*[$FAMILY] -. if (\\n[.x]\\n[.y]\\n[.Y] >= 1192) \{\ -. ft \\*[$SAVED_STYLE] -. if !F\\n[.fn] \{\ -. ft 0 -. \} -. \} -. if \\n[#COLLATE]=1 \{\ -. if !r#START \{ .DOC_FAM \\*[$FAMILY] \} -. \} -.END -\# -\# -\# FONT -\# ---- -\# *Argument: -\# R | I | B | BI | -\# *Function: -\# Stores user supplied font in $FONT and sets .ft to $FONT. -\# -.MAC FT END -. if \\n[#PRINT_STYLE]=1 \{\ -. ie '\\$1'I' \{\ -. if \\n[#UNDERLINE_ITALIC]=1 \{\ -. UNDERLINE -. return -. \} -. if \\n[#ITALIC_MEANS_ITALIC]=1 \{\ -. ds $FONT \\$1 -. ft \\*[$FONT] -. return -. \} -. \} -. el \{ .UNDERLINE OFF \} -. return -. \} -. ds $FONT \\$1 -. ft 0 -. ft \\*[$FONT] -. if if (\\n[.x]\\n[.y]\\n[.Y] >= 1192) \{\ -. if '\\n[.sty]'' \{\ -. if !F\\n[.fn] \{\ -. if !S\\*[$FONT] \{\ -. tm1 "[mom]: Font style "\\*[$FONT]" at line \\n(.c has not been registered. -. ie \\n[#ABORT_FT_ERRORS]=0 \{\ -. tm1 " Continuing to process using fallback font. -. \} -. el .ab Aborting. -. \} -. if \\n[.f]=0 \{\ -. tm1 "[mom]: Either font style "\\*[$FONT]" at line \\n(.c does not exist in family "\\n[.fam]", -. tm1 " or family "\\n[.fam]" has not been installed in font/devps. -. ie \\n[#ABORT_FT_ERRORS]=0 \{\ -. tm1 " Continuing to process using fallback font. -. \} -. el .ab Aborting. -. \} -. \} -. \} -. \} -.END -\# -\# -\# POINT SIZE -\# ---------- -\# *Arguments: -\# -\# *Function: -\# Sets point size to user supplied value in scaled points. -\# If #AUTO_LEAD is on, sets .vs to #AUTOLEAD_VALUE+#PT_SIZE. -\# *Notes: -\# Must NOT use a unit of measure. -\# -.MAC PT_SIZE END -. if \\n[#PRINT_STYLE]=1 \{ .return \} -. if \\n[#IGNORE] \{ .return \} -. nr #PT_SIZE_SET 1 -. ps \\$1 -. if \\n[#AUTO_LEAD] \{\ -. ie \\n[#AUTOLEAD_FACTOR] \{ .vs \\n[#PT_SIZE]u*\\n[#AUTOLEAD_VALUE]u/1000u \} -. el \{ .vs \\n[#PT_SIZE]u+\\n[#AUTOLEAD_VALUE]u \} -. \} -. nr #PT_SIZE_IN_UNITS \\n[.ps] -.END -\# -\# -\# SIZE (inline) -\# ------------- -\# *Arguments: -\# -\# *Function: -\# Sets point size to user supplied value in scaled points. -\# Intended to be called inline with \*[SIZE ] -\# *Notes: -\# Can be used with a unit of measure or not. -\# -.MAC SIZE END -\c -.ps \\$1 -.END -\# -\# -\# LEADING -\# ------- -\# *Argument: -\# -\# *Function: -\# Turns off #AUTOLEAD if it's on. -\# Sets .vs to user supplied value. -\# *Notes: -\# Does not require unit of measure. LS automatically turns off AUTOLEAD. -\# -.MAC LS END -. br -. nr #OLD_LEAD \\n(.v -. if \\n[#PRINT_STYLE]=1 \{ .return \} -. if \\n[#IGNORE] \{ .return \} -. if \\n[#AUTO_LEAD] \{\ -. rr #AUTO_LEAD -. rr #AUTOLEAD_FACTOR -. \} -. vs \\$1 -. if \\n[#TOP] \{\ -. nr #TOP_BASELINE_ADJ \\n(.v-\\n[#OLD_LEAD] -. sp -\\n[#TOP_BASELINE_ADJ]u -. rr #TOP -. rr #TOP_BASELINE_ADJ -. \} -.END -\# -.MAC RESET_LEAD END -' vs -. ch RESET_LEAD -.END -\# -\# -\# AUTOLEAD -\# -------- -\# *Argument: -\# [FACTOR] -\# *Function: -\# Stores user supplied auto-lead value in register #AUTOLEAD_VALUE. -\# Adds #AUT0LEAD_VALUE to #PT_SIZE when invoked to set leading. -\# All subsequent PT_SIZE requests reset the leading in the same way until -\# AUTOLEAD is turned off. -\# *Notes: -\# With the optional FACTOR argument, the current point size is -\# multiplied by #AUTOLEAD_VALUE instead of the two being added -\# together. -\# -.MAC AUTOLEAD END -. if \\n[#PRINT_STYLE]=1 \{ .return \} -. if \\n[#IGNORE] \{ .return \} -. nr #AUTO_LEAD 1 -. nr #OLD_LEAD \\n(.v -. nr #AUTOLEAD_VALUE (p;\\$1) -. ie \\n[#NUM_ARGS]=2 \{\ -. if '\\$2'FACTOR' \{\ -. nr #AUTOLEAD_FACTOR 1 -. vs \\n[#PT_SIZE]u*\\n[#AUTOLEAD_VALUE]u/1000u -. \} -. \} -. el \{\ -. vs \\n[#PT_SIZE]u+\\n[#AUTOLEAD_VALUE]u -. \} -. if \\n[#TOP] \{\ -. nr #TOP_BASELINE_ADJ \\n(.v-\\n[#OLD_LEAD] -. sp -\\n[#TOP_BASELINE_ADJ]u -. rr #TOP -. rr #TOP_BASELINE_ADJ -. \} -.END -\# -\# -\# STRINGS FOR INLINE CONTROL OF GENERAL TYPE STYLE -\# ------------------------------------------------ -.ds ROM \EfR -.ds IT \EfI -.ds BD \EfB -.ds BDI \Ef(BI -.ds PREV \EfP -.ds S \Es -\# -\# ===================================================================== -\# -\# +++KERNING+++ -\# -\# AUTOMATIC PAIRWISE KERNING -\# -------------------------- -\# *Arguments: -\# | -\# *Function: -\# Turns automatic pairwise kerning on or off. -\# -.MAC KERN END -. ie '\\$1'' \{\ -. kern -. nr #KERN 1 -. \} -. el \{\ -. kern 0 -. nr #KERN 0 -. \} -.END -\# -\# -.ig -INLINE KERNING AND HORIZONTAL MOVEMENT --------------------------------------- -Kerning - -Inline kerning provides a simple method for users to adjust the -amount of space between any two letters. It's predicated on a -unit of measure "U", which is 1/36 of the current point size as -returned by \n[.ps]. E.g., if the current point size is 18, -\n[.ps] returns 18000u, therefore U=500u. Since U remains -proportional relative to the current point size, the amount -of kerning between two letters as expressed in Us remains -visually similar regardless of changes in point size. - -N.B.--the amount of inline kerning supplied by \*[BU] or -\*[FU] is added to or subtracted from any kerning that already -takes place between two characters when automatic kerning is -turned on. - -In groff v. 1.17.2, it was not possible to pass arguments to macros that -were called with inline escapes, nor thence to evaluate conditional -expressions. Consequently, each pseudo-escape \[BU] had to be defined -separately with ".char". - -As of v. 1.18, one can pass arguments to inline strings/macros, -hence it is now possible to do \*[BU n] where n, inline, is the desired -number of kern units. The original .char definitions have been left in -for backward compatibility with documents created prior to mom-1.1.3c. -.. -\# -.nr #KERN_UNIT 36 -.ds BU \h'-(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\\$1u)' -.ds FU \h'(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\\$1u)' -\# -\# Initialize strings for pre-1.1.3c-style BU and FU -\# -.nr #LOOP 0 1 -.while \n+[#LOOP]<37 \{\ -. ds BU\n[#LOOP] \h'-(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\n[#LOOP]u)' -.\} -\# -.nr #LOOP 0 1 -.while \n+[#LOOP]<37 \{\ -. ds FU\n[#LOOP] \h'(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\n[#LOOP]u)' -.\} -.rr #LOOP -\# -.ig -Horizontal movements - -BP1...12.75 and FP1...12.75 move backwards or forwards inline by the -specified number of points. -Left in for backward compatibility with mom-1.1.3c, the -preferred methods for inline horizontal movements are now -\*[BCK ] and \*[FWD ]. -.. -\# -.ds BCK \h'-\\$1' -.ds FWD \h'\\$1' -\# -.ds BP.25 \h'-.25' -.ds BP.5 \h'-.5' -.ds BP.75 \h'-.75' -.ds BP1 \h'-1p' -.ds BP1.25 \h'-1.25p' -.ds BP1.5 \h'-1.5p' -.ds BP1.75 \h'-1.75p' -.ds BP2 \h'-2p' -.ds BP2.25 \h'-2.25p' -.ds BP2.5 \h'-2.5p' -.ds BP2.75 \h'-2.75p' -.ds BP3 \h'-3p' -.ds BP3.25 \h'-3.25p' -.ds BP3.5 \h'-3.5p' -.ds BP3.75 \h'-3.75p' -.ds BP4 \h'-4p' -.ds BP4.25 \h'-4.25p' -.ds BP4.5 \h'-4.5p' -.ds BP4.75 \h'-4.75p' -.ds BP5 \h'-5p' -.ds BP5.25 \h'-5.25p' -.ds BP5.5 \h'-5.5p' -.ds BP5.75 \h'-5.75p' -.ds BP6 \h'-6p' -.ds BP6.25 \h'-6.25p' -.ds BP6.5 \h'-6.5p' -.ds BP6.75 \h'-6.75p' -.ds BP7 \h'-7p' -.ds BP7.25 \h'-7.25p' -.ds BP7.5 \h'-7.5p' -.ds BP7.75 \h'-7.75p' -.ds BP8 \h'-8p' -.ds BP8.25 \h'-8.25p' -.ds BP8.5 \h'-8.5p' -.ds BP8.75 \h'-8.75p' -.ds BP9 \h'-9p' -.ds BP9.25 \h'-9.25p' -.ds BP9.5 \h'-9.5p' -.ds BP9.75 \h'-9.75p' -.ds BP10 \h'-10p' -.ds BP10.25 \h'-10.25p' -.ds BP10.5 \h'-10.5p' -.ds BP10.75 \h'-10.75p' -.ds BP11 \h'-11p' -.ds BP11.25 \h'-11.25p' -.ds BP11.5 \h'-11.5p' -.ds BP11.75 \h'-11.75p' -.ds BP12 \h'-12p' -.ds BP12.25 \h'-12.25p' -.ds BP12.5 \h'-12.5p' -.ds BP12.75 \h'-12.75p' -\# -.ds FP.25 \h'.25' -.ds FP.5 \h'.5' -.ds FP.75 \h'.75' -.ds FP1 \h'1p' -.ds FP1.25 \h'1.25p' -.ds FP1.5 \h'1.5p' -.ds FP1.75 \h'1.75p' -.ds FP2 \h'2p' -.ds FP2.25 \h'2.25p' -.ds FP2.5 \h'2.5p' -.ds FP2.75 \h'2.75p' -.ds FP3 \h'3p' -.ds FP3.25 \h'3.25p' -.ds FP3.5 \h'3.5p' -.ds FP3.75 \h'3.75p' -.ds FP4 \h'4p' -.ds FP4.25 \h'4.25p' -.ds FP4.5 \h'4.5p' -.ds FP4.75 \h'4.75p' -.ds FP5 \h'5p' -.ds FP5.25 \h'5.25p' -.ds FP5.5 \h'5.5p' -.ds FP5.75 \h'5.75p' -.ds FP6 \h'6p' -.ds FP6.25 \h'6.25p' -.ds FP6.5 \h'6.5p' -.ds FP6.75 \h'6.75p' -.ds FP7 \h'7p' -.ds FP7.25 \h'7.25p' -.ds FP7.5 \h'7.5p' -.ds FP7.75 \h'7.75p' -.ds FP8 \h'8p' -.ds FP8.25 \h'8.25p' -.ds FP8.5 \h'8.5p' -.ds FP8.75 \h'8.75p' -.ds FP9 \h'9p' -.ds FP9.25 \h'9.25p' -.ds FP9.5 \h'9.5p' -.ds FP9.75 \h'9.75p' -.ds FP10 \h'10p' -.ds FP10.25 \h'10.25p' -.ds FP10.5 \h'10.5p' -.ds FP10.75 \h'10.75p' -.ds FP11 \h'11p' -.ds FP11.25 \h'11.25p' -.ds FP11.5 \h'11.5p' -.ds FP11.75 \h'11.75p' -.ds FP12 \h'12p' -.ds FP12.25 \h'12.25p' -.ds FP12.5 \h'12.5p' -.ds FP12.75 \h'12.75p' -\# -\# -\# WHOLE LINE KERNING (RW and EW) -\# ----------------------------- -\# -.ig -The line kerning macros are special instances of track kerning, -used where a complete line needs to be tightened (or relaxed) in -order to accomodate or remove one or two more characters -than the default justification permits. -.. -\# -\# *Argument: -\# -\# *Function: -\# Invokes .tkf (track kerning) for the current font with -\# 1 as both the upper and lower point size limits, so that -\# the value entered by the user applies regardless of point -\# size. RW ("Reduce Whitespace") reduces the amount of space -\# between all characters by an equal amount. EW ("Extra -\# Whitespace") increases the amount of space. -\# *Notes: -\# Decimal values are acceptable. -\# -.ig -The groff documentation is a tad confusing about what unit of -measure is used in track kerning, only that the width of each -character is increased or decreased by the amount(s) passed as -arguments to .tkf, and something about linear function of point -size. In fact, with the way I've put this macro together, it -doesn't matter. All the user needs to know is that a value of -one will produce an unacceptably tight or loose line at most text -point sizes; therefore, effective use of RW and EW is in the -fractional range below 1 (e.g. .25, .5). Given that RW and EW -are for massaging type, a certain amount of experimentation and -previewing is expected and necessary. - -\n(.f holds the current font number, which is acceptable to .tkf. - -RW and EW must be reset to 0 to cancel their effect on subsequent -output lines. -.. -\# -.MAC RW END -. if \\n[#BR_AT_LINE_KERN] \{\ -. ie \\n[#JUSTIFY]=1 \{ .brp \} -. el \{ .br \} -. \} -. tkf \\n(.f 1 -\\$1 1 -\\$1 -.END -\# -\# -.MAC EW END -. if \\n[#BR_AT_LINE_KERN] \{\ -. ie \\n[#JUSTIFY]=1 \{ .brp \} -. el \{ .br \} -. \} -. tkf \\n(.f 1 \\$1 1 \\$1 -.END -\# -\# -\# BREAK AT LINE KERN -\# ------------------ -\# *Arguments: -\# toggle -\# *Function: -\# Enables/disables .br's before .RW and .EW -\# *Notes: -\# Mostly, users will want .br's before any kind of line kerning, but -\# there may be cases where they don't. BR_BEFORE_LINE_KERN is off by -\# default and must be invoked explicitly. -\# -.MAC BR_AT_LINE_KERN END -. ie '\\$1'' \{ .nr #BR_AT_LINE_KERN 1 \} -. el \{ .rr #BR_AT_LINE_KERN \} -.END -\# -\# ===================================================================== -\# -\# +++HYPHENATION+++ -\# -\# AUTO HYPHENATION -\# ---------------- -\# *Arguments: -\# | | DEFAULT -\# or -\# LINES | MARGIN | SPACE -\# *Function: -\# Turns auto hyphenation on or off, resets the hyphenation style -\# to default, or permits the setting of various hyphenation -\# parameters. -\# *Notes: -\# HY, by itself, defaults to .hy 14, i.e. no hyphens after the -\# first two or before the last two characters of a word, and no -\# hyphenation of the last line prior to a trap (e.g., at the -\# bottom of a page). -\# -\# HY DEFAULT resets the hyphenation style to .hy 14 (see -\# above) if that behaviour is desired after changes have been -\# made to LINES, MARGIN, or SPACE. -\# -\# HY LINES sets the number of allowable consecutive hyphenated lines. -\# -\# HY MARGIN sets the amount of space (ipPcm) allowed at the end -\# of a line in QUAD mode before hyphenation is tripped (e.g. if there's -\# only 6 points left, groff won't try to hyphenate the next word). -\# -\# HY SPACE sets the amount of extra interword space (ipPcm) that can -\# be added in JUSTIFY mode to prevent a line from being hyphenated. -\# -.MAC HY END -. ie '\\$1'' \{\ -. hy 14 -. nr #HYPHENATE 1 -. \} -. el \{\ -. if !'\\$1'LINES' \{\ -. nh -. nr #HYPHENATE 0 -. \} -. if !'\\$1'MARGIN' \{\ -. nh -. nr #HYPHENATE 0 -. \} -. if !'\\$1'SPACE' \{\ -. nh -. nr #HYPHENATE 0 -. \} -. if !'\\$1'DEFAULT' \{\ -. nh -. nr #HYPHENATE 0 -. \} -. if '\\$1'LINES' \{ .hlm \\$2 \} -. if '\\$1'MARGIN' \{ .hym \\$2 \} -. if '\\$1'SPACE' \{ .hys \\$2 \} -. if '\\$1'DEFAULT' \{\ -. hlm -1 -. hym 0 -. hys 0 -. \} -. \} -.END -\# -\# -\# HYPHENATION PARAMETERS -\# ---------------------- -\# *Arguments: -\# <# of lines> | | -\# *Function: -\# Allows user to specify .HY LINES, MARGIN, and SPACE with a single command. -\# -.MAC HY_SET END -. nr #HY_SET 1 -. hlm \\$1 -. hym \\$2 -. hys \\$3 -.END -\# -\# ===================================================================== -\# -\# +++VERTICAL SPACING+++ -\# -\# ADVANCE LEAD -\# ------------ -\# *Argument: -\# -\# *Function: -\# Creates or modifies register #ALD. Adds user supplied lead -\# below current baseline. -\# *Notes: -\# Requires a unit of measure. -\# -.MAC ALD END -. if \\n(nl=0 \{ .nr #TOP 1 \} -. if '\\$0'ALD' \{\ -. nr #ALD (\\$1) -. sp \\n[#ALD]u -. \} -. if '\\$0'ADD_SPACE' \{\ -. nr #ALD (\\$1) -. rs -. sp \\n[#ALD]u -. \} -. if '\\$0'SPACE' \{\ -. sp \\$1u -. \} -. if '\\$0'SP' \{\ -. sp \\$1u -. \} -.END -\# -\# -\# REVERSE LEAD -\# ------------ -\# *Argument: -\# -\# *Function: -\# Creates or modifies register #RLD. Reverses user supplied -\# lead above current baseline. -\# *Notes: -\# Requires a unit of measure. -\# -.MAC RLD END -. nr #RLD (\\$1) -. sp -\\n[#RLD]u -.END -\# -\# ALD/RLD STRINGS -\# --------------- -.ig -The strings \*[ALD.25]...\*[ALD12.75] and their corresponding -\*[RLD] forms have been left in for backward compatibility with -documents created using mom-1.1.3c or earlier. The prefered methods -of advancing and reversing on the page inline are \*[UP ] -and \*[DOWN ]. -.. -\# -.ds DOWN \v'\\$1' -.ds UP \v'-\\$1' -\# -.ds ALD.25 \v'.25p' -.ds ALD.5 \v'.5p' -.ds ALD.75 \v'.75p' -.ds ALD1 \v'1p' -.ds ALD1.25 \v'1.25p' -.ds ALD1.5 \v'1.5p' -.ds ALD1.75 \v'1.75p' -.ds ALD2 \v'2p' -.ds ALD2.25 \v'2.25p' -.ds ALD2.5 \v'2.5p' -.ds ALD2.75 \v'2.75p' -.ds ALD3 \v'3p' -.ds ALD3.25 \v'3.25p' -.ds ALD3.5 \v'3.5p' -.ds ALD3.75 \v'3.75p' -.ds ALD4 \v'4p' -.ds ALD4.25 \v'4.25p' -.ds ALD4.5 \v'4.5p' -.ds ALD4.75 \v'4.75p' -.ds ALD5 \v'5p' -.ds ALD5.25 \v'5.25p' -.ds ALD5.5 \v'5.5p' -.ds ALD5.75 \v'5.75p' -.ds ALD6 \v'6p' -.ds ALD6.25 \v'6.25p' -.ds ALD6.5 \v'6.5p' -.ds ALD6.75 \v'6.75p' -.ds ALD7 \v'7p' -.ds ALD7.25 \v'7.25p' -.ds ALD7.5 \v'7.5p' -.ds ALD7.75 \v'7.75p' -.ds ALD8 \v'8p' -.ds ALD8.25 \v'8.25p' -.ds ALD8.5 \v'8.5p' -.ds ALD8.75 \v'8.75p' -.ds ALD9 \v'9p' -.ds ALD9.25 \v'9.25p' -.ds ALD9.5 \v'9.5p' -.ds ALD9.75 \v'9.75p' -.ds ALD10 \v'10p' -.ds ALD10.25 \v'10.25p' -.ds ALD10.5 \v'10.5p' -.ds ALD10.75 \v'10.75p' -.ds ALD11 \v'11p' -.ds ALD11.25 \v'11.25p' -.ds ALD11.5 \v'11.5p' -.ds ALD11.75 \v'11.75p' -.ds ALD12 \v'12p' -.ds ALD12.25 \v'12.5p' -.ds ALD12.5 \v'12.5p' -.ds ALD12.75 \v'12.75p' -\# -.ds RLD.25 \v'-.25p' -.ds RLD.5 \v'-.5p' -.ds RLD.75 \v'-.75p' -.ds RLD1 \v'-1p' -.ds RLD1.25 \v'-1.25p' -.ds RLD1.5 \v'-1.5p' -.ds RLD1.75 \v'-1.75p' -.ds RLD2 \v'-2p' -.ds RLD2.25 \v'-2.25p' -.ds RLD2.5 \v'-2.5p' -.ds RLD2.75 \v'-2.75p' -.ds RLD3 \v'-3p' -.ds RLD3.25 \v'-3.25p' -.ds RLD3.5 \v'-3.5p' -.ds RLD3.75 \v'-3.75p' -.ds RLD4 \v'-4p' -.ds RLD4.25 \v'-4.25p' -.ds RLD4.5 \v'-4.5p' -.ds RLD4.75 \v'-4.75p' -.ds RLD5 \v'-5p' -.ds RLD5.25 \v'-5.25p' -.ds RLD5.5 \v'-5.5p' -.ds RLD5.75 \v'-5.75p' -.ds RLD6 \v'-6p' -.ds RLD6.25 \v'-6.25p' -.ds RLD6.5 \v'-6.5p' -.ds RLD6.75 \v'-6.75p' -.ds RLD7 \v'-7p' -.ds RLD7.25 \v'-7.25p' -.ds RLD7.5 \v'-7.5p' -.ds RLD7.75 \v'-7.75p' -.ds RLD8 \v'-8p' -.ds RLD8.25 \v'-8.25p' -.ds RLD8.5 \v'-8.5p' -.ds RLD8.75 \v'-8.75p' -.ds RLD9 \v'-9p' -.ds RLD9.25 \v'-9.25p' -.ds RLD9.5 \v'-9.5p' -.ds RLD9.75 \v'-9.75p' -.ds RLD10 \v'-10p' -.ds RLD10.25 \v'-10.25p' -.ds RLD10.5 \v'-10.5p' -.ds RLD10.75 \v'-10.75p' -.ds RLD11 \v'-11p' -.ds RLD11.25 \v'-11.25p' -.ds RLD11.5 \v'-11.5p' -.ds RLD11.75 \v'-11.75p' -.ds RLD12 \v'-12p' -.ds RLD12.25 \v'-12.5p' -.ds RLD12.5 \v'-12.5p' -.ds RLD12.75 \v'-12.75p' -\# -\# ===================================================================== -\# -\# +++REFINEMENTS+++ -\# -\# AUTOMATIC LIGATURES -\# ------------------- -\# *Arguments: -\# | -\# *Function: -\# Turns automatic ligature generation on or off. -\# *Notes: -\# Ligatures may be supplied manually with \(fi, \(fl, etc. -\# -.MAC LIGATURES END -. ie '\\$1'' \{\ -. lg -. nr #LIGATURES 1 -. \} -. el \{\ -. lg 0 -. nr #LIGATURES 0 -. \} -.END -\# -\# -\# SMARTQUOTES -\# ----------- -\# *Arguments: -\# [ ,, ] | [ << ] | [ >> ] | -\# or -\# [ DA | DE | ES | FR | IT | NL | NO | PT | SV ] | -\# *Function: -\# Turns smartquotes on (optionally with a quoting style from the -\# argument list, or off). -\# *Notes: -\# The " character is read outside the macro when mom is -\# processed. The strings for open/close ($QUOTE) are then -\# defined in the macro. -\# -\# (Note to myself: code for " is \N'34'.) -\# -.char " \\*[$QUOTE\\n[#OPEN_CLOSE]]\R'#OPEN_CLOSE (1-\\n[#OPEN_CLOSE])' -\# -.MAC SMARTQUOTES END -. rr #ARGS_TO_SQ -. ie '\\$1'' \{\ -. nr #OPEN_CLOSE 0 -. ds $QUOTE0 \\[lq] -. ds $QUOTE1 \\[rq] -. \} -. el \{\ -. if '\\$1',,' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[Bq] -. ds $QUOTE1 \\[lq] -. \} -. if '\\$1'<<' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[Fo] -. ds $QUOTE1 \\[Fc] -. \} -. if '\\$1'>>' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[Fc] -. ds $QUOTE1 \\[Fo] -. \} -. if '\\$1'DA' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[Fc] -. ds $QUOTE1 \\[Fo] -. \} -. if '\\$1'DE' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[Bq] -. ds $QUOTE1 \\[lq] -. \} -. if '\\$1'ES' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[lq] -. ds $QUOTE1 \\[rq] -. \} -. if '\\$1'FR' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[Fo]\\| -. ds $QUOTE1 \\|\\[Fc] -. \} -. if '\\$1'IT' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[Fo]\\| -. ds $QUOTE1 \\|\\[Fc] -. \} -. if '\\$1'NL' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[rq] -. ds $QUOTE1 \\[rq] -. \} -. if '\\$1'NO' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[Fo] -. ds $QUOTE1 \\[Fc] -. \} -. if '\\$1'PT' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[Fo] -. ds $QUOTE1 \\[Fc] -. \} -. if '\\$1'SV' \{\ -. nr #ARGS_TO_SQ 1 -. ds $QUOTE0 \\[Fc] -. ds $QUOTE1 \\[Fc] -. \} -. if !r#ARGS_TO_SQ \{\ -. ds $QUOTE0 \\[dq] -. ds $QUOTE1 \\[dq] -. \} -. \} -.END -\# -.ds $QUOTE0 \[dq] -.ds $QUOTE1 \[dq] -\# -\# Strings for foot and inch marks -\# -.ds FOOT \(fm -.ds INCH \(fm\(fm -\# -\# ===================================================================== -\# -\# +++LINE BREAKS+++ -\# -\# NO-SPACE BREAK -\# -------------- -\# *Argument: -\# -\# *Function: -\# Breaks a line without advancing. -\# *Notes: -\# EL is the mnemonic used on older, dedicated typesetting machines -\# to indicate "process the line, without advancing the galley -\# medium." It stands for End Line. -\# -\# The \c inline must be appended to the end of input lines when in -\# nofill mode; in fill modes, the \c inline must not be used. -\# -.MAC EL END -. TRAP OFF -. if \\n[#PSEUDO_FILL]=1 \& -. br -. sp -1v -. TRAP -.END -\# -\# An inline escape to accomplish the same thing. Actually -\# preferable, since it works with filled and non-filled copy and -\# doesn't require the user to remember to use (or not use) the \c. -\# -.ds B \h'|0'\c -\# -\# ===================================================================== -\# -\# +++FILLING/QUADDING/JUSTIFYING+++ -\# -\# JUSTIFY -\# ------- -\# *Argument: -\# -\# *Function: -\# Turns fill on and sets .ad to b. -\# *Notes: -\# Justifies text left and right. -\# -.MAC JUSTIFY END -. if \\n[#TAB_ACTIVE]=0 \{\ -. nr #QUAD 1 -. ds $RESTORE_QUAD_VALUE \\*[$QUAD_VALUE] -. \} -' ce 0 -. QUAD J -. if \\n[#PRINT_STYLE]=1 \{ .QUAD L \} -. nr #PSEUDO_FILL 0 -.END -\# -\# -\# QUAD -\# ---- -\# *Arguments: -\# L | LEFT | R | RIGHT | C | CENTER/CENTRE -\# *Function: -\# Turns fill on and sets .ad to l, r, or c. -\# *Notes: -\# Terminology is a problem here. Some people call quad left -\# left justified, flush left, or flush left/rag right (and the -\# reverse for quad right). Quad center is sometimes called rag -\# both. For our purposes, all "quad" modes mean that groff fill -\# mode is enabled. -\# -.MAC QUAD END -. ds $QUAD_VALUE \\$1 -. if \\n[#TAB_ACTIVE]=0 \{\ -. nr #QUAD 1 -. ds $RESTORE_QUAD_VALUE \\*[$QUAD_VALUE] -. \} -' ce 0 -' fi -. if '\\*[$QUAD_VALUE]'L' \{\ -. nr #JUSTIFY 0 -. ad l -. \} -. if '\\*[$QUAD_VALUE]'LEFT' \{\ -. nr #JUSTIFY 0 -. ad l -. \} -. if '\\*[$QUAD_VALUE]'R' \{\ -. nr #JUSTIFY 0 -. ad r -. \} -. if '\\*[$QUAD_VALUE]'RIGHT' \{\ -. nr #JUSTIFY 0 -. ad r -. \} -. if '\\*[$QUAD_VALUE]'C' \{\ -. nr #JUSTIFY 0 -. ad c -. \} -. if '\\*[$QUAD_VALUE]'CENTER' \{\ -. nr #JUSTIFY 0 -. ad c -. \} -. if '\\*[$QUAD_VALUE]'CENTRE' \{\ -. nr #JUSTIFY 0 -. ad c -. \} -. if '\\*[$QUAD_VALUE]'J' \{\ -. nr #JUSTIFY 1 -. ad b -. \} -. if '\\*[$QUAD_VALUE]'JUSTIFY' \{\ -. nr #JUSTIFY 1 -. ad b -. \} -. nr #PSEUDO_FILL 0 -.END -\# -\# -\# LEFT, RIGHT, AND CENTER -\# ----------------------- -\# -.ig -The purpose of these macros is to allow the user to enter lines of -text that will be quadded LRC *without* the user having to enter .BR -or .br between lines. For the sake of consistency, all three appear -to behave similarly (from the point of view of the user), although -the underlying primitives don't. For this reason, LEFT, RIGHT, and -CENTER must be followed by .QUAD [L R C J] or .JUSTIFY to restore -text to groff fill mode. -.. -\# -\# LEFT -\# ---- -\# *Argument: -\# -\# *Function: -\# Turns fill mode off. Allows user to quad lines left without -\# requiring the .BR or .br macro. -\# *Notes: -\# LEFT simply turns fill off. Lines that exceed the current LL will -\# not be broken, just continued (indefinitely) until a return is -\# encountered. Note that this behaviour differs from the RIGHT and -\# CENTER macros. -\# -.MAC LEFT END -. if \\n[#TAB_ACTIVE]=0 \{\ -. rr #QUAD -. ds $RESTORE_QUAD_VALUE LEFT -. \} -. ce 0 -. nf -. nr #PSEUDO_FILL 1 -.\" Fix for a little conflict with DOCTYPE LETTER -. if '\\n(.z'LETTERHEAD1' \{ .rr #DATE_FIRST \} -.END -\# -\# -\# RIGHT -\# ----- -\# *Argument: -\# -\# *Function: -\# Turns fill on. Allows user to quad lines right without -\# requiring the .BR or .br macro. -\# *Notes: -\# Lines that exceed the current LL will be broken, with the excess -\# text quadded right. -\# -.MAC RIGHT END -. if \\n[#TAB_ACTIVE]=0 \{\ -. rr #QUAD -. ds $RESTORE_QUAD_VALUE RIGHT -. \} -. fi -. rj 100000 -. nr #PSEUDO_FILL 1 -.END -\# -\# -\# CENTER -\# ------ -\# *Argument: -\# -\# *Function: -\# Turns fill on. Allows user to center lines without -\# requiring the .BR or .br macro. -\# *Notes: -\# Lines that exceed the current LL will be broken, with the excess -\# text centered. -\# -.MAC CENTER END -. if \\n[#TAB_ACTIVE]=0 \{\ -. rr #QUAD -. ds $RESTORE_QUAD_VALUE CENTER -. \} -. fi -. ce 100000 -. nr #PSEUDO_FILL 1 -.END -\# -\# ===================================================================== -\# -\# +++TABS+++ -\# -.ig -There are two different kinds of tabs available: typesetting tabs -and string tabs. - -Typesetting tabs are set with TAB_SET, which requires a tab number, -an indent (offset) from the left margin and a length (optionally -with a quad direction and an instruction to fill lines). After tabs -are set with TAB_SET, they are called with .TAB n, where "n" -corresponds to the number passed to TAB_SET as a valid tab number. - -String tabs allow the user to mark off tab positions inline. Tab -indents and lengths are calculated from the beginning and end -positions of the marks. Up to 19 string tabs may be created, -numbered 1-19. Once created, they are called with .TAB n, -just like typesetting tabs. - -Setting up string tabs is a two-step procedure. First, the user -enters an input line in which s/he wants to mark off string tabs. -The beginning of a tab is marked with \*[STn], where "n" is -the desired number of the tab. The end of the the tab is marked -with \*[STnX]. All ST's must have a matching STX. String tabs -may be nested. - -Next, the user invokes .ST n for every string tab defined, and -optionally passes quad information to it. That done, string tabs -can be called just like typesetting tabs. - -String tabs don't preview properly with gxditview. Use gv instead. -.. -\# -\# Strings for string tab inlines -\# ------------------------------ -\# -\# Initialize string tab markers numbered 1 to 19. -\# -.nr #LOOP 0 1 -.while \n+[#LOOP]<20 \{\ -. ds ST\n[#LOOP] \Ek[#ST\n[#LOOP]_OFFSET] -.\} -\# -.nr #LOOP 0 1 -.while \n+[#LOOP]<20 \{\ -. ds ST\n[#LOOP]X \Ek[#ST\n[#LOOP]_MARK] -.\} -.rr #LOOP -\# -\# -\# These are reserved ST numbers for internal use -.ds ST100 \Ek[#ST100_OFFSET] -.ds ST100X \Ek[#ST100_MARK] -.ds ST101 \Ek[#ST101_OFFSET] -.ds ST101X \Ek[#ST101_MARK] -\# -\# -\# QUAD AND SET STRING TABS -\# ------------------------ -\# *Arguments: -\# L | R | C | J [QUAD] -\# *Function: -\# Creates strings $ST<#>_QUAD_DIR and $ST<#>_FILL, then sets up a -\# tab based on the collected information. -\# *Notes: -\# Like TAB_SET, ST invoked without a quad direction will default to LEFT. -\# If lines should be filled and quadded, use the optional argument QUAD. -\# N.B. -- indents *must* be turned off before setting string tabs -\# inside .PAD -\# -.MAC ST END -. ds $ST\\$1_QUAD_DIR \\$2 -. if \\n[#NUM_ARGS]=3 \{\ -. ds $ST\\$1_FILL QUAD -. \} -. nr #ST\\$1_LENGTH \\n[#ST\\$1_MARK]-\\n[#ST\\$1_OFFSET] -. ie \\n[#IN_TAB] \{\ -. TAB_SET \\$1 \\n[#ST\\$1_OFFSET]u+\\n[#ST_OFFSET]u \\n[#ST\\$1_LENGTH]u \\*[$ST\\$1_QUAD_DIR] \\*[$ST\\$1_FILL] -. \} -. el \{\ -. TAB_SET \\$1 \\n[#ST\\$1_OFFSET]u \\n[#ST\\$1_LENGTH]u \\*[$ST\\$1_QUAD_DIR] \\*[$ST\\$1_FILL] -. \} -.END -\# -\# -\# TAB SET -\# ------- -\# *Arguments: -\# ident(ipPcm) length(ipPcm) [L | R | C | J [QUAD]] -\# *Function: -\# Creates macros TABn and TAB n, where "n" is any arbitrary number. -\# TABn is a typesetting tab (i.e. a tab defined as an indent -\# from the page left offset plus a line length.) -\# *Notes: -\# n = arbitrary digit to identify the tab -\# indent = indent from left margin; unit of measure required -\# length = length of tab (unit of measure required; can be -\# \w''u--if more than one word in string, surround -\# with double quotes "\w''" -\# LRCJ = quad for tab (left, right, center, justified) -\# If option QUAD afterwards is not given, quad is line for line -\# (no fill mode), meaning that there's no need for .BR or .br -\# between lines. -\# QUAD = fill tab (so it behaves as if .QUAD LRC or .JUSTIFY -\# had been given). -\# -\# N.B. -- indents *must* be turned off before setting tabs -\# -.ig -Examples: --------- - -.TAB_SET 1 2P+6p 12P C - -means "create a tab numbered 1 that starts 2 picas and 6 points from -the left margin, is 12 picas long, and centre each input line." - -.TAB_SET 1 2P+6P 12P C QUAD - -means exactly the same thing, except that input lines are joined and -the area delimted by the tab filled with centered text. - -TAB n can be called at any time after being set. - -Tabs are NOT columnar in behaviour. If the text inside a -tab runs to several lines, when you call the next tab a break -occurs, meaning that the new tab starts one line below the last -line in the previous tab. For columnar behaviour, you must -use the multi-column macros in addition to tabs. - -If you want tabs to line up bottom-line to bottom-line (most likely -single line tabs), use .TN (provided the tabs are numbered sequentially). -Otherwise, you must use .EL then .TAB if you want them to align. - -If you want to reset tabs, you must use .TQ before .TAB_SET. - -Note that indents are turned off automatically whenever a new -tab is called with TAB . - -Tabs themselves are user-invoked using the TAB macro with a numeric -argument, e.g. TAB 1. - -Generally, in order not to get confused, it's a good idea -to make sure all indents are off before setting tabs. -.. -\# -.MAC TAB_SET END -. br -. nr #TAB_NUMBER \\$1 -. ds $CURRENT_TAB \\n[#TAB_NUMBER] -. nr #TAB_OFFSET (\\$2) -. nr #TAB_LENGTH (\\$3) -. MAC TAB\\n[#TAB_NUMBER] DONE \"Define TAB macro -. if !\\\\n[#TB+]=1 \{ .br \} -. if \\\\n[#TB+]=1 \{\ -. EL -. vpt 0 -. rr #TB+ -. \} -. in 0 -. nr #TAB_ACTIVE 1 -. nr #CURRENT_TAB \\n[#TAB_NUMBER] -. ds $CURRENT_TAB \\*[$CURRENT_TAB] -. nr #TAB_OFFSET\\*[$CURRENT_TAB] \\n[#TAB_OFFSET] -. nr #ST_OFFSET \\n[#TAB_OFFSET] -. po \\\\n[#L_MARGIN]u+\\\\n[#TAB_OFFSET\\\\*[$CURRENT_TAB]]u -. ll \\n[#TAB_LENGTH]u -. ta \En(.lu -. ie '\\$5'QUAD' \{\ -. if '\\$4'L' \{ .QUAD L \} -. if '\\$4'R' \{ .QUAD R \} -. if '\\$4'C' \{ .QUAD C \} -. if '\\$4'J' \{ .JUSTIFY \} -. \} -. el \{\ -. if '\\$4'' \{ .LEFT \} -. if '\\$4'L' \{ .LEFT \} -. if '\\$4'R' \{ .RIGHT \} -. if '\\$4'C' \{ .CENTER \} -. if '\\$4'J' \{ .JUSTIFY \} -. \} -. if \\\\n[#TN]=1 \{\ -. TRAP -. rr #TN -. \} -.DONE -. rr #TAB_ACTIVE -.END -\# -\# -\# TAB -\# --- -\# *Arguments: -\# -\# *Function: -\# Moves to tab number passed as an argument. -\# -.MAC TAB END -. ds $TAB_NUMBER \\$1 -. TAB\\*[$TAB_NUMBER] -. nr #IN_TAB 1 -.END -\# -\# -\# TAB NEXT -\# -------- -\# *Argument: -\# -\# *Function: -\# Automagically moves to TAB on the same line as the last -\# line of the previous tab. -\# *Notes: -\# The \c inline must be appended to the end of input lines when in -\# nofill mode; in fill modes, the \c inline must not be used. -\# -.MAC TN END -. nr #TN 1 -. TRAP OFF -. sp -1v -. nr #NEXT_TAB \\n[#CURRENT_TAB]+1 -. TAB\\n[#NEXT_TAB] -. TRAP -.END -\# -\# An inline escape to accomplish the same thing. Actually -\# preferable, since it works with filled and non-filled copy and -\# doesn't require the user to remember to use (or not use) the \c. -\# -.ds TB+ "\c\\R'#TB+ 1'\\R'#TN 1'\\R'#NEXT_TAB \\n[#CURRENT_TAB]+1'\\*[TAB\\n[#NEXT_TAB]]\c -\# -\# TAB QUIT -\# -------- -\# *Argument: -\# -\# *Function: -\# Sets #TAB_ACTIVE to "0" (off). -\# Resets left margin to value in effect prior to tabs. -\# Resets line length to value in effect prior to tabs. -\# Checks #QUAD to see if we were in flush or quad mode -\# prior to tabs (0=off, 1=on). -\# Resets QUAD [ L|R|C ], LEFT, RIGHT, CENTER, or JUSTIFY -\# in effect prior to tabs. -\# *Notes: -\# TQ *must* come before setting any new tabs if you want the -\# tabs' indents measured from page left. Otherwise, the tabs' -\# indents are measured from the left margin of the tab you're -\# currently in. -\# -.MAC TQ END -. br -. rr #TAB_ACTIVE -. rr #IN_TAB -. po \\n[#L_MARGIN]u -. ll \\n[#L_LENGTH]u -. ta \\n(.lu -. ie \\n[#QUAD] \{\ -. ie '\\*[$RESTORE_QUAD_VALUE]'J' \{ .JUSTIFY \} -. el \{ .QUAD \\*[$RESTORE_QUAD_VALUE] \} -. \} -. el \{\ -. if '\\*[$RESTORE_QUAD_VALUE]'LEFT' \{ .LEFT \} -. if '\\*[$RESTORE_QUAD_VALUE]'RIGHT' \{ .RIGHT \} -. if '\\*[$RESTORE_QUAD_VALUE]'CENTER' \{ .CENTER \} -. \} -.END -\# -\# ==================================================================== -\# -\# COLOR HANDLING -\# ============== -\# -\# COLOR -\# ----- -\# *Arguments: -\# -\# *Function: -\# Allows the inline escape for setting color to be called -\# as a macro. -\# -.MAC COLOR END -.ie \\n(.u=1 \{\ -\c -\\*[\\$1]\c -.\} -.el \{ \\*[\\$1] \} -.END -\# -\# -\# NEWCOLOR -\# -------- -\# *Arguments: -\# [] -\# *Function: -\# Based on .defcolor, allows users to name and define colors using -\# one of the four color schemes rgb, cmy, cmyk and grey. The new -\# color is then defined as a string so that it can be called inline -\# with \*[COLORNAME] or with .COLOR. -\# *Notes: -\# With only two args, the default color scheme is rgb. -\# -\# It is highly recommended that users define new colors as -\# all-cap strings, to differentiate them from x colors, which must -\# be in lower case. -\# -.MAC NEWCOLOR END -. if \\n[#NUM_ARGS]=2 \{\ -. defcolor \\$1 rgb \\$2 -. \} -. if \\n[#NUM_ARGS]=3 \{\ -. if '\\$2'RGB' .ds $COLOR_SCHEME rgb -. if '\\$2'CYM' .ds $COLOR_SCHEME cym -. if '\\$2'CMYK' .ds $COLOR_SCHEME cmyk -. if '\\$2'GRAY' .ds $COLOR_SCHEME gray -. if '\\$2'GREY' .ds $COLOR_SCHEME gray -. defcolor \\$1 \\*[$COLOR_SCHEME] \\$3 -. \} -. ds \\$1 \\m[\\$1] -.END -\# -\# -\# XCOLOR -\# ------ -\# *Arguments: -\# [] -\# *Function: -\# Defines a string of x color name (i.e. a predefined x -\# color). If is given, creates a string of -\# that references the x color name of the first argument. -\# *Notes: -\# The color name must be a legal color name from rgb.txt, and -\# must be given entirely in lower case, all one word. -\# -.MAC XCOLOR END -. ds \\$1 \m[\\$1] -. if \\n[#NUM_ARGS]=2 .ds \\$2 \m[\\$1] -.END -\# -\# Pre-define xcolors black and white -\# -.ds black \m[black] -.ds BLACK \m[black] -.ds white \m[white] -.ds WHITE \m[WHITE] -\# -\# ===================================================================== -\# -\# +++MISCELLANEOUS USEFUL MACROS AND STRINGS+++ -\# -\# UNDERLINE -\# --------- -\# *Arguments: -\# | -\# *Function: -\# When on, underlines all letters, words, and digits in a passage, -\# ignoring punctuation and spaces. -\# *Notes: -\# Only for use when the font family is COURIER, to simulate -\# typewriter-style underlining of italic passages. -\# -.MAC UNDERLINE END -. ie '\\$1'' \{\ -. nr #UNDERLINE_ON 1 -. char A _A -. char B _B -. char C _C -. char D _D -. char E _E -. char F _F -. char G _G -. char H _H -. char I _I -. char J _J -. char K _K -. char L _L -. char M _M -. char N _N -. char O _O -. char P _P -. char Q _Q -. char R _R -. char S _S -. char T _T -. char U _U -. char V _V -. char W _W -. char X _X -. char Y _Y -. char Z _Z -. char \[`A] _\[`A] -. char \[^A] _\[^A] -. char \['A] _\['A] -. char \[:A] _\[:A] -. char \[oA] _\[oA] -. char \[~A] _\[~A] -. char \[AE] _\[AE] -. char \[`E] _\[`E] -. char \[^E] _\[^E] -. char \['E] _\['E] -. char \[:E] _\[:E] -. char \[`I] _\[`I] -. char \[^I] _\[^I] -. char \['I] _\['I] -. char \[:I] _\[:I] -. char \[`O] _\[`O] -. char \[^O] _\[^O] -. char \['O] _\['O] -. char \[:O] _\[:O] -. char \[~O] _\[~O] -. char \[/O] _\[/O] -. char \[`U] _\[`U] -. char \[^U] _\[^U] -. char \['U] _\['U] -. char \[:U] _\[:U] -. char \[,C] _\[,C] -. char \[-D] _\[-D] -. char \[~N] _\[~N] -. char \[TP] _\[TP] -. char \['Y] _\['Y] -. char \[:Y] _\[:Y] -. char a _a -. char b _b -. char c _c -. char d _d -. char e _e -. char f _f -. char g _g -. char h _h -. char i _i -. char j _j -. char k _k -. char l _l -. char m _m -. char n _n -. char o _o -. char p _p -. char q _q -. char r _r -. char s _s -. char t _t -. char u _u -. char v _v -. char w _w -. char x _x -. char y _y -. char z _z -. char \[`a] _\[`a] -. char \[^a] _\[^a] -. char \['a] _\['a] -. char \[:a] _\[:a] -. char \[oa] _\[oa] -. char \[~a] _\[~a] -. char \[ae] _\[ae] -. char \[`e] _\[`e] -. char \[^e] _\[^e] -. char \['e] _\['e] -. char \[:e] _\[:e] -. char \[`i] _\[`i] -. char \[^i] _\[^i] -. char \['i] _\['i] -. char \[:i] _\[:i] -. char \[`o] _\[`o] -. char \[^o] _\[^o] -. char \['o] _\['o] -. char \[:o] _\[:o] -. char \[~o] _\[~o] -. char \[/o] _\[/o] -. char \[`u] _\[`u] -. char \[^u] _\[^u] -. char \['u] _\['u] -. char \[:u] _\[:u] -. char \[,c] _\[,c] -. char \[Sd] _\[Sd] -. char \[~n] _\[~n] -. char \[Tp] _\[Tp] -. char \['y] _\['y] -. char \[:y] _\[:y] -. char \[ss] _\[ss] -. char ' _' -. char 1 _1 -. char 2 _2 -. char 3 _3 -. char 4 _4 -. char 5 _5 -. char 6 _6 -. char 7 _7 -. char 8 _8 -. char 9 _9 -. char 0 _0 -. \} -. el \{\ -. nr #UNDERLINE_ON 0 -. rchar A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \ - a b c d e f g h i j k l m n o p q r s t u v w x y z \ - \[`A] \[^A] \['A] \[:A] \[oA] \[~A] \[AE] \[`E] \[^E] \['E] \[:E] \ - \[`I] \[^I] \['I] \[:I] \[`O] \[^O] \['O] \[:O] \[~O] \[/O] \[`U] \ - \[^U] \['U] \[:U] \[,C] \[-D] \[~N] \[TP] \['Y] \[:Y] \ - \[`a] \[^a] \['a] \[:a] \[oa] \[~a] \[ae] \[`e] \[^e] \['e] \[:e] \[`i] \ - \[^i] \['i] \[:i] \[`o] \[^o] \['o] \[:o] \[~o] \[/o] \[`u] \[^u] \['u] \ - \[:u] \[,c] \[Sd] \[~n] \[Tp] \['y] \[:y] \[ss] \ - ' 1 2 3 4 5 6 7 8 9 0 -. \} -.END -\# -\# -\# UL/ULX -\# ------ -\# *Arguments: -\# -\# *Function: -\# Underscores all letters, words, and digits in a passage, -\# ignoring punctuation and spaces. -\# *Notes: -\# Intended to be called with inline escapes \*[UL] (underline -\# on) and \*[ULX] (underline off). Only works when the font family -\# is COURIER, to simulate typewriter-style underlining of italic -\# passages. -\# -.MAC UL END -\c\R'#UNDERLINE_ON 1' -. char A _A -. char B _B -. char C _C -. char D _D -. char E _E -. char F _F -. char G _G -. char H _H -. char I _I -. char J _J -. char K _K -. char L _L -. char M _M -. char N _N -. char O _O -. char P _P -. char Q _Q -. char R _R -. char S _S -. char T _T -. char U _U -. char V _V -. char W _W -. char X _X -. char Y _Y -. char Z _Z -. char \[`A] _\[`A] -. char \[^A] _\[^A] -. char \['A] _\['A] -. char \[:A] _\[:A] -. char \[oA] _\[oA] -. char \[~A] _\[~A] -. char \[AE] _\[AE] -. char \[`E] _\[`E] -. char \[^E] _\[^E] -. char \['E] _\['E] -. char \[:E] _\[:E] -. char \[`I] _\[`I] -. char \[^I] _\[^I] -. char \['I] _\['I] -. char \[:I] _\[:I] -. char \[`O] _\[`O] -. char \[^O] _\[^O] -. char \['O] _\['O] -. char \[:O] _\[:O] -. char \[~O] _\[~O] -. char \[/O] _\[/O] -. char \[`U] _\[`U] -. char \[^U] _\[^U] -. char \['U] _\['U] -. char \[:U] _\[:U] -. char \[,C] _\[,C] -. char \[-D] _\[-D] -. char \[~N] _\[~N] -. char \[TP] _\[TP] -. char \['Y] _\['Y] -. char \[:Y] _\[:Y] -. char a _a -. char b _b -. char c _c -. char d _d -. char e _e -. char f _f -. char g _g -. char h _h -. char i _i -. char j _j -. char k _k -. char l _l -. char m _m -. char n _n -. char o _o -. char p _p -. char q _q -. char r _r -. char s _s -. char t _t -. char u _u -. char v _v -. char w _w -. char x _x -. char y _y -. char z _z -. char \[`a] _\[`a] -. char \[^a] _\[^a] -. char \['a] _\['a] -. char \[:a] _\[:a] -. char \[oa] _\[oa] -. char \[~a] _\[~a] -. char \[ae] _\[ae] -. char \[`e] _\[`e] -. char \[^e] _\[^e] -. char \['e] _\['e] -. char \[:e] _\[:e] -. char \[`i] _\[`i] -. char \[^i] _\[^i] -. char \['i] _\['i] -. char \[:i] _\[:i] -. char \[`o] _\[`o] -. char \[^o] _\[^o] -. char \['o] _\['o] -. char \[:o] _\[:o] -. char \[~o] _\[~o] -. char \[/o] _\[/o] -. char \[`u] _\[`u] -. char \[^u] _\[^u] -. char \['u] _\['u] -. char \[:u] _\[:u] -. char \[,c] _\[,c] -. char \[Sd] _\[Sd] -. char \[~n] _\[~n] -. char \[Tp] _\[Tp] -. char \['y] _\['y] -. char \[:y] _\[:y] -. char \[ss] _\[ss] -. char ' _' -. char 1 _1 -. char 2 _2 -. char 3 _3 -. char 4 _4 -. char 5 _5 -. char 6 _6 -. char 7 _7 -. char 8 _8 -. char 9 _9 -. char 0 _0 -.END -\# -\# -.MAC ULX END -\c\R'#UNDERLINE_ON 0' -. rchar A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \ - a b c d e f g h i j k l m n o p q r s t u v w x y z \ - \[`A] \[^A] \['A] \[:A] \[oA] \[~A] \[AE] \[`E] \[^E] \['E] \[:E] \ - \[`I] \[^I] \['I] \[:I] \[`O] \[^O] \['O] \[:O] \[~O] \[/O] \[`U] \ - \[^U] \['U] \[:U] \[,C] \[-D] \[~N] \[TP] \['Y] \[:Y] \ - \[`a] \[^a] \['a] \[:a] \[oa] \[~a] \[ae] \[`e] \[^e] \['e] \[:e] \[`i] \ - \[^i] \['i] \[:i] \[`o] \[^o] \['o] \[:o] \[~o] \[/o] \[`u] \[^u] \['u] \ - \[:u] \[,c] \[Sd] \[~n] \[Tp] \['y] \[:y] \[ss] \ - ' 1 2 3 4 5 6 7 8 9 0 -.END -\# -\# -\# UNDERSCORE -\# ---------- -\# *Arguments: -\# [points below baseline] "text" -\# *Function: -\# Places an underscore 2 points under the string if no lead given, -\# otherwise places underscore under string by user specified amount. -\# *Notes: -\# When using this macro, the string to be underscored must begin -\# with double-quotes ("), regardless of whether it's the sole -\# argument or the second. -\# E.g.: -\# .UNDERSCORE "Text to be underscored -\# or -\# .UNDERSCORE 2p "Text to be underscored -\# -\# All text is underscored (including punctuation and spaces). -\# This is the primary difference between UNDERLINE and UNDERSCORE, -\# aside from the fact the UNDERLINE only works with Courier. -\# -\# UNDERSCORE does not work across line breaks. Each line of -\# text must be entered separately with UNDERSCORE. If the -\# UNDERSCORE begins in the middle of a line and crosses over a -\# break, the portion before the break must be entered in its own -\# UNDERSCORE, as must the portion that comes after the break. -\# -.MAC UNDERSCORE END -. nr #RESTORE_PT_SIZE \\n[#PT_SIZE] -. ie \\n[#NUM_ARGS]=1 \{ \\$1\\s(12\\v'+2p'\\l'|0'\\v'-2p'\\s[\\n[#RESTORE_PT_SIZE]u] \} -. el \{ \\$2\\s(12\\v'+(\\$1)'\\l'|0'\\v'-(\\$1)'\\s[\\n[#RESTORE_PT_SIZE]u] \} -. rr #RESTORE_PT_SIZE -.END -\# -\# -\# DOUBLE UNDERSCORE -\# ----------------- -\# *Arguments: -\# [points below baseline] [points distance between rules] "text" -\# *Function: -\# Same as UNDERSCORE, except it produces a double underscore. The default -\# distance between the rules is 2 points. -\# *Notes: -\# The same double-quote requirement as UNDERSCORE. -\# -.MAC UNDERSCORE2 END -. nr #RESTORE_PT_SIZE \\n[#PT_SIZE] -. if \\n[#NUM_ARGS]=1 \{\ -. PRINT \\$1\\s(12\\v'+2p'\\l'|0'\\v'+2p'\\l'|0'\\v'-4p'\\s[\\n[#RESTORE_PT_SIZE]u] -. \} -. if \\n[#NUM_ARGS]=2 \{\ -. PRINT \\$2\\s(12\\v'+\\$1'\\l'|0'\\v'+2p'\\l'|0'\\v'-(2p+\\$1)'\\s[\\n[#RESTORE_PT_SIZE]u] -. \} -. if \\n[#NUM_ARGS]=3 \{\ -. PRINT \\$3\\s(12\\v'+\\$1'\\l'|0'\\v'+\\$2'\\l'|0'\\v'-(\\$2+\\$1)'\\s[\\n[#RESTORE_PT_SIZE]u] -. \} -. rr #RESTORE_PT_SIZE -.END -\# -\# -\# SUPERSCRIPT INLINES -\# ------------------- -\# *Function: -\# Prints everything after invocation as superscript. -\# *Notes: -\# \*[SUP] and \*[SUPX] turn superscript on and off respectively. -\# If running type is pseudo-condensed/expanded, invoke the superscript -\# strings as \*[CONDSUP] or \*[EXTSUP] and turn off with \*[CONDSUPX] -\# and \*[EXTSUPX] respectively. -\# -.ds SUP \ -\R'#PT_SIZE_IN_UNITS \En[.ps]'\ -\R'#SUP_PT_SIZE \En[#PT_SIZE_IN_UNITS]u*6u/10u'\ -\s[\En[#PT_SIZE_IN_UNITS]u]\v'-.26m'\s[\En[#SUP_PT_SIZE]u] -\# -.ds SUPX \s[\En[#PT_SIZE_IN_UNITS]u]\v'.26m' -\# -.ds CONDSUP \ -\R'#PT_SIZE_IN_UNITS \En[.ps]'\ -\R'#SUP_PT_SIZE \En[#PT_SIZE_IN_UNITS]u*6u/10u'\ -\s[\En[#PT_SIZE_IN_UNITS]u]\v'-.3m'\s[\En[#SUP_PT_SIZE]u]\E*[COND_FOR_SUP] -\# -.ds CONDSUPX \s[\En[#PT_SIZE_IN_UNITS]u]\v'.3m'\E*[COND] -\# -.ds EXTSUP \ -\R'#PT_SIZE_IN_UNITS \En[.ps]'\ -\R'#SUP_PT_SIZE \En[#PT_SIZE_IN_UNITS]u*6u/10u'\ -\s[\En[#PT_SIZE_IN_UNITS]u]\v'-.3m'\s[\En[#SUP_PT_SIZE]u]\E*[EXT_FOR_SUP] -\# -.ds EXTSUPX \s[\En[#PT_SIZE_IN_UNITS]u]\v'.3m'\E*[EXT] -\# -\# -\# SLANT -\# ----- -\# -\# SETSLANT -\# -------- -\# *Arguments: -\# | RESET -\# *Function: -\# Modifies register #DEGREES for use with \*[SLANT], or resets -\# it to the default. Defines string \*[SLANTX] -\# *Notes: -\# \*[SLANT] permits pseudo-italicizing of a font in cases where -\# no italic font exists in a particular family. -\# -\# Default # of degrees is 15. -\# -\# Do not use unit of measure with arg to SETSLANT. -\# -\# It may be necessary to adjust the spacing on either side of -\# [SLANT] and [SLANTX]. -\# -\# In docs, SLANT carries over from para to para. -\# -.nr #DEGREES 15 -.ds SLANT \ER'#SLANT_ON 1'\ES'\En[#DEGREES]' -.ds SLANTX \ER'#SLANT_ON 0'\ES'0' -\# -.MAC SETSLANT END -. ie '\\$1'RESET' \{\ -. nr #DEGREES 15 -. if \\n[#PRINT_STYLE]=1 \{\ -. if \\n[#UNDERLINE_SLANT] \{ .return \} -. \} -. ds SLANT \ER'#SLANT_ON 1'\ES'\En[#DEGREES]' -. \} -. el \{\ -. nr #DEGREES \\$1 -. if \\n[#PRINT_STYLE]=1 \{\ -. if \\n[#UNDERLINE_SLANT] \{ .return \} -. \} -. ds SLANT \ER'#SLANT_ON 1'\ES'\En[#DEGREES]' -. \} -. ds SLANTX \ER'#SLANT_ON 0'\ES'0' -.END -\# -\# -\# BOLDER -\# ------ -\# -\# SETBOLDER -\# --------- -\# *Arguments: -\# | RESET -\# *Function: -\# Modifies register #BOLDER_UNITS for use with \*[BOLDER], or resets -\# it to the default 700 units. -\# *Notes: -\# \*[BOLDER] allows pseudo-emboldening of a font where no bold -\# font exists in a particular family. -\# -\# Default for SETBOLDER is 700 units. Do not use unit of measure -\# with arg to SETBOLDER. -\# -.nr #BOLDER_UNITS 700 -\# -.MAC SETBOLDER END -. if \\n[#IGNORE]=1 \{ .return \} -. ie '\\$1'RESET' \{ .nr #BOLDER_UNITS 700 \} -. el \{ .nr #BOLDER_UNITS \\$1 \} -.END -\# -\# -.MAC BOLDER END -\c -.bd \\n(.f \\n[#BOLDER_UNITS] -.END -\# -\# -.MAC BOLDERX END -\c -.bd \\n(.f -.END -\# -\# +++CONDENSE/EXTEND+++ -\# -\# CONDENSE/EXTEND -\# --------------- -\# *Arguments: -\# -\# *Function: -\# Stores current point size in z's in #PT_SIZE_IN_UNITS, figures out -\# new point size (for character width) from arg, and defines string -\# COND or EXT, which set the type size to the new character width, -\# and sets the height of type to the value stored in CURRENT_PT_SIZE -\# *Notes: -\# CONDENSE_OR_EXTEND is invoked from the aliases -\# CONDENSE and EXTEND. CONDENSE implies <100, EXTEND -\# implies >100. Do not use a percent sign in the argument. -\# -\# There is no default setting for CONDENSE or EXTEND. -\# 80 is a good approximation of condensed type, 120 is okay -\# for extended. -\# -\# The value set by CONDENSE or EXTEND applies to all -\# subsequent \*[COND] or \*[EXT] escapes until a new value is set. -\# -\# \*[COND] or \*[EXT] must be turned off before all changes of point -\# size and reinvoked afterwards (if so desired). This refers to -\# changes of point size via control lines AND with via inlines. -\# -.MAC CONDENSE_OR_EXTEND END -. if '\\$0'CONDENSE' \{\ -. ds $COND_PERCENT \\$1 -. if \\n[#PRINT_STYLE]=1 \{\ -. rm $COND_PERCENT -. ds $COND_PERCENT 100 -. \} -. ds COND \ -\R'#PT_SIZE_IN_UNITS \En[.ps]'\ -\R'#CONDENSE 1'\ -\R'#COND_WIDTH (\En[#PT_SIZE_IN_UNITS]u*\E*[$COND_PERCENT]u)/100'\ -\Es[\En[#COND_WIDTH]u]\EH'\En[#PT_SIZE_IN_UNITS]u' -. ds COND_FOR_SUP \ -\R'#COND_WIDTH (\En[#SUP_PT_SIZE]u*\E*[$COND_PERCENT]u)/100'\ -\Es[\En[#COND_WIDTH]u]\H'\En[#SUP_PT_SIZE]u' -. \} -. if '\\$0'EXTEND' \{\ -. ds $EXT_PERCENT \\$1 -. if \\n[#PRINT_STYLE]=1 \{\ -. rm $EXT_PERCENT -. ds $EXT_PERCENT 100 -. \} -. ds EXT \ -\R'#PT_SIZE_IN_UNITS \En[.ps]'\ -\R'#EXTEND 1'\ -\R'#EXT_WIDTH (\En[#PT_SIZE_IN_UNITS]u*\E*[$EXT_PERCENT]u)/100'\ -\Es[\En[#EXT_WIDTH]u]\EH'\En[#PT_SIZE_IN_UNITS]u' -. ds EXT_FOR_SUP \ -\R'#EXT_WIDTH (\En[#SUP_PT_SIZE]u*\E*[$EXT_PERCENT]u)/100'\ -\Es[\En[#EXT_WIDTH]u]\H'\En[#EXT_PT_SIZE]u' -. \} -.END -\# -.ds CONDX \ER'#CONDENSE 0'\Es0\R'#PT_SIZE_IN_UNITS \En[.ps]'\H'\En[#PT_SIZE_IN_UNITS]u' -.ds EXTX \ER'#EXTEND 0'\Es0\R'#PT_SIZE_IN_UNITS \En[.ps]'\H'\En[#PT_SIZE_IN_UNITS]u' -\# -\# -\# +++PAD LINES+++ (insert space) -\# -\# PAD MARKER -\# ---------- -\# *Arguments: -\# -\# *Function: -\# Defines string $PAD_MARKER, used in PAD -\# *Notes: -\# $PAD_MARKER is normally # (the pound sign). -\# -.MAC PAD_MARKER END -. ds $PAD_MARKER \\$1 -.END -\# -\# -\# PAD -\# --- -\# *Argments: -\# "" -\# *Function: -\# Defines and redefines padding character (default=pound sign -\# unless padding character has been set with PAD_MARKER) -\# several times so that when the string is output at the end -\# of the macro, every # has been converted to an equal-sized -\# amount of padding (blank space) on a line. # is equivalent to -\# CompuGraphic's old . -\# *Notes: -\# String tabs may be marked off during PAD. -\# -.MAC PAD END -. if \\n(.u=1 \{ .nr #FILL_MODE 1 \} -. nf -. if !d$PAD_MARKER .ds $PAD_MARKER # -. char \\*[$PAD_MARKER] \R'#PAD_COUNT \En[#PAD_COUNT]+1' -. ds $FAMILY_FOR_PAD \\n[.fam] -\#. fp \\n[.fp] \\*[$FONT] -. fp \\n[.fp] \\n[.sty] -. ds $FONT_FOR_PAD \\*[$FONT] -. nr #SIZE_FOR_PAD \\n[.ps] -. ds $PAD_STRING \\$1 -. as $PAD_STRING \Ekp -. di PAD_STRING -. fam \\*[$FAMILY_FOR_PAD] -\\f[\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING] -. br -. di -. char \\*[$PAD_MARKER] \R'#SPACE_TO_END \En(.l-\Enp'\R'#PAD_SPACE \En[#SPACE_TO_END]/\En[#PAD_COUNT]' -. di PAD_STRING -. fam \\*[$FAMILY_FOR_PAD] -\\f]\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING] -. br -. di -. char \\*[$PAD_MARKER] \h'\En[#PAD_SPACE]u' -. ie \\n[#SILENT] \{\ -. SILENT -. fam \\*[$FAMILY_FOR_PAD] -\\f[\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING] -. br -. SILENT OFF -. \} -. el \{\ -. fam \\*[$FAMILY_FOR_PAD] -\\f[\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING] -. br -. \} -. if \\n[#FILL_MODE]=1 \{\ -. fi -. rr #FILL_MODE -. \} -. rr #PAD_COUNT -. rr #SPACE_TO_END -. rr #PAD_SPACE -. rm $PAD_STRING -. rm PAD_STRING -. rchar # -. if '\\$2'NOBREAK' \{\ -. TRAP OFF -. EOL -. TRAP -. \} -.END -\# -\# -\# +++LEADERS+++ -\# -.ig -The leader mechanism is primitive, but it works. Basically, every -macro in this set that includes a line length also sets a single -groff tab stop at the right hand end of the line. That way, -whenever Ctrl-A is invoked (always at the end of an input line), -leader of the correct length gets deposited. Ctrl-A is accessed by -the string LEADER (i.e. inline, as \*[LEADER]). Leaders within tabs -get their length from the tab line length. -.. -\# -\# SET LEADER CHARACTER -\# -------------------- -\# *Arguments: -\# -\# *Function: -\# Set leader character. -\# -.MAC LEADER_CHARACTER END -. lc \\$1 -.END -\# -.ds LEADER  -\# -\# +++DROP CAPS+++ -\# -\# DROP CAP FAMILY -\# --------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $DC_FAM. -\# -.MAC DROPCAP_FAMILY END -. ds $DC_FAM \\$1 -.END -\# -\# -\# DROP CAP FONT -\# ------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $DC_FT. -\# -.MAC DROPCAP_FONT END -. ds $DC_FT \\$1 -.END -\# -\# -\# DROPCAP COLOR -\# ------------- -\# *Arguments: -\# -\# *Function: -\# Defines string $DC_COLOR to argument. -\# *Notes: -\# User must define an XCOLOR or NEWCOLOR before using -\# DC_COLOR. -\# -.MAC DROPCAP_COLOR END -. if \\n[#PRINT_STYLE]=1 \{ .return \} -. nr #DC_COLOR 1 -. ds $DC_COLOR \\$1 -.END -\# -\# -\# DROP CAP GUTTER -\# --------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies register #DC_GUT. -\# *Notes: -\# Requires unit of measure. Default is 3p. -\# -.MAC DROPCAP_GUTTER END -. nr #DC_GUT (\\$1) -.END -\# -\# -\# DROP CAP ADJUST -\# --------------- -\# *Argument: -\# <+|- # of points to in/decrease point size of drop cap letter> -\# *Function: -\# Creates or modifies string $DC_ADJUST. -\# *Notes: -\# Despite its best efforts, DROPCAP doesn't always get the point -\# size of the drop cap critically perfect. DROPCAP_ADJUST lets -\# the user add or subtract points (or fractions of points) to -\# get the size right. -\# -\# Requires the + or - sign. -\# -.MAC DROPCAP_ADJUST END -. ds $DC_ADJUST \\$1 -.END -\# -\# -\# DROP CAP -\# -------- -\# *Arguments: -\# <# of lines> [COND <% to condense> | EXT <% to extend>] -\# *Function: -\# Calculates point size of dropcap based on # of lines passed as -\# arg 2. Sets indent for text based on dropcap width+gutter. -\# Advances and prints dropcap; reverses and prints indented text -\# to bottom of dropcap, then resets indent to left margin (plus -\# any indent that was in effect prior to invoking DROPCAP). -\# *Notes: -\# Drop caps put a strain on on resource-challenged systems. -\# -\# Drop caps when using the doc processing macro PP only work with -\# initial paragraphs (i.e. at doc start, or after heads), only when -\# DROPCAPS comes immediately after PP, and only when the PRINTSTYLE -\# is TYPESET. If these conditions aren't met, DROPCAPS is silently -\# ignored. -\# -\# The COND or EXT argument are processed separately from all -\# other COND or EXT inlines or macros, hence passing COND or -\# EXT has no effect on running type. -\# -.MAC DROPCAP END -. if #IGNORE \{ .return \} -. br -. if \\n[#DOCS] \{\ -. if \\n[#PRINT_STYLE]=1 \{ .return \} -. if \\n[#PRINT_STYLE]=2 \{\ -. if \\n[#PP_STYLE]=2 \{ .return \} -. if \\n[#PP]>1 \{ .return \} -. ti 0 -. \} -. \} -. ds $DROPCAP \\$1 -. nr #DC_LINES \\$2-1 -. if \\n[#CONDENSE]=1 \{\ -. ds $RESTORE_COND \\*[$COND_PERCENT] -\\*[CONDX] -. nr #CONDENSE_WAS_ON 1 -. \} -. if \\n[#EXTEND]=1 \{\ -. ds $RESTORE_EXT \\*[$EXT_PERCENT] -\\*[EXTX] -. nr #EXTEND_WAS_ON 1 -. \} -. if '\\$3'COND' \{ .CONDENSE \\$4 \} -. if '\\$3'EXT' \{ .EXTEND \\$4 \} -. if !r#DC_GUT \{ .nr #DC_GUT (3p) \} -. ds $RESTORE_FAM \\n[.fam] -. ds $RESTORE_FT \\*[$FONT] -. nr #RESTORE_PT_SIZE \\n[#PT_SIZE] -. nr #RESTORE_INDENT \\n(.i -. SIZESPECS -. nr #DC_HEIGHT \\n[#DC_LINES]*\\n[#LEAD]+\\n[#CAP_HEIGHT] -. ie !d$DC_FAM \{ .FAM \\n[.fam] \} -. el \{ .FAM \\*[$DC_FAM] \} -. ie !d$DC_FT \{ .FT \\*[$FONT] \} -. el \{ .FT \\*[$DC_FT] \} -. while \\n[#GET_DC_HEIGHT]<\\n[#DC_HEIGHT] \{\ -. ps \\n[#PT_SIZE]u+100u -. SIZESPECS -. nr #GET_DC_HEIGHT \\n[#CAP_HEIGHT] -.\} -. if d$DC_ADJUST \{ .ps \\*[$DC_ADJUST]p \} -. mk x -. sp \\n[#DC_LINES]v -. ie \\n[#DC_COLOR]=1 \{\ -. ie !'\\$3'' \{\ -. ie '\\$3'COND' \{ .PRINT \m[\\*[$DC_COLOR]]\\*[COND]\\*[$DROPCAP]\\*[CONDX]\m[] \} -. el \{ .PRINT \m[\\*[$DC_COLOR]]\\*[EXT]\\*[$DROPCAP]\\*[EXTX]\m[] \} -. \} -. el \{ .PRINT \m[\\*[$DC_COLOR]]\\*[$DROPCAP]\m[] \} -. \} -. el \{\ -. ie !'\\$3'' \{\ -. ie '\\$3'COND' \{ .PRINT \\*[COND]\\*[$DROPCAP]\\*[CONDX] \} -. el \{ .PRINT \\*[EXT]\\*[$DROPCAP]\\*[EXTX] \} -. \} -. el \{ .PRINT \m[\\*[$DC_COLOR]]\\*[$DROPCAP]\m[] \} -. \} -. if '\\$3'COND' \{ \E*[COND] \} -. if '\\$3'EXT' \{ \E*[EXT] \} -. ie \\n(.i \{ .in +\w'\\*[$DROPCAP]'u+\\n[#DC_GUT]u \} -. el \{ .in \w'\\*[$DROPCAP]'u+\\n[#DC_GUT]u \} -. if '\\$3'COND' \{ \E*[CONDX]\c \} -. if '\\$3'EXT' \{ \E*[EXTX]\c \} -. rt \\nxu -. FAM \\*[$RESTORE_FAM] -. FT \\*[$RESTORE_FT] -. ps \\n[#RESTORE_PT_SIZE]u -. if \\n[#CONDENSE_WAS_ON] \{\ -. CONDENSE \\*[$RESTORE_COND] -\\*[COND]\c -. \} -. if \\n[#EXTEND_WAS_ON] \{\ -. EXTEND \\*[$RESTORE_EXT] -\\*[EXT]\c -. \} -. ie \\n(.u \{ .wh \\n(.du+\\n[#DC_HEIGHT]u-1v DROPCAP_OFF \} -. el \{ .wh \\n(.du+\\n[#DC_HEIGHT]u DROPCAP_OFF \} -. rr #CONDENSE_WAS_ON -. rr #EXTEND_WAS_ON -. rm $DROPCAP -. rr #DC_LINES -. rm $RESTORE_COND -. rm $RESTORE_EXT -. rm $RESTORE_FAM -. rm $RESTORE_FT -. rr #RESTORE_PT_SIZE -. rr #RESTORE_INDENT -. rr #DC_HEIGHT -. rr #GET_DC_HEIGHT -. rr x -.END -\# -.MAC DROPCAP_OFF END -' in \\n[#RESTORE_INDENT]u -.END -\# -\# -\# RULE -\# ---- -\# *Argument: -\# -\# *Function: -\# Draws a rule the length of the current measure. -\# *Notes: -\# -.MAC RULE END -\c -. EL -. if \\n(.u=1 \{\ -. nr #FILL_WAS_ON 1 -. ds $CURRENT_QUAD \\*[$QUAD_VALUE] -. nf -. \} -. ie \\n[#INDENT_ACTIVE] \{\ -. nr #RESTORE_L_LENGTH \\n(.l -. if \\n[#INDENT_BOTH_ACTIVE] \{ .ll \\n(.lu-\\n[#BL_INDENT]u \} -. if \\n[#INDENT_LEFT_ACTIVE] \{ .ll \\n(.lu-\\n[#L_INDENT]u \} -. PRINT \El'\En(.lu'\c -. ll \\n[#RESTORE_L_LENGTH]u -. rr #RESTORE_L_LENGTH -. \} -. el \{\ -. PRINT \El'\En(.lu'\c -. \} -. if r#FILL_WAS_ON \{\ -. fi -. rr #FILL_WAS_ON -. QUAD \\*[$CURRENT_QUAD] -. rm $CURRENT_QUAD -. \} -. EL -.END -\# -\# ===================================================================== -\# -\# +++WORD AND SENTENCE SPACING+++ -\# -\# WORD SPACE CONTROL -\# ------------------ -\# *Argument: -\# <+|->wordspace | DEFAULT -\# *Function: -\# Increases or decreases interword space by user supplied amount. -\# If DEFAULT, value is set to 12 (groff default). -\# *Notes: -\# $WS_CONSTANT is the groff default word space. -\# $WS_VAR is the user supplied amount by which to in/decrease word space. -\# $WS is a concatenation of WS_CONSTANT and WS_VAR. -\# -\# Because the user supplied value requires a literal + or - sign, -\# the macro argument is stored in a string. -\# -\# \n[.sss] holds the current sentence space value. -\# -.MAC WS END -. ds $WS_CONSTANT 12 -. ds $WS_VAR \\$1 -. ie '\\$1'DEFAULT' .ds $WS_VAR +0 -. el .ds $WS (\\*[$WS_CONSTANT]\\*[$WS_VAR]) -. ie \\n[.sss]=12 \{ .ss \\*[$WS] 12 \} -. el \{\ -. ss \\*[$WS] (\\*[$WS]\\*[$SS_VAR]) -. SS \\*[$SS_VAR] -. \} -.END -\# -\# -\# SENTENCE SPACE CONTROL -\# ---------------------- -\# *Argument: -\# <+-sentencespace> | 0 | DEFAULT -\# *Function: -\# Increases or decreases sentence space by user supplied amount. -\# If 0, sentence spaces are ignored. If DEFAULT, value is -\# set to 12 (groff default). -\# *Notes: -\# Because the user supplied value requires a literal + or - sign, -\# the macro argument is stored in a string. -\# -\# Sentence space applies only to input where sentences are separated -\# by two spaces (and/or, in fill mode [FLUSH L|R|C or JUSTIFY], an EOL). -\# Changing .SS when sentences are separated by only one space has -\# no effect on the space between sentences. -\# -\# \n[.ss] holds the current wordspace value. -\# \n[.sss] holds the current sentence space value. -\# -.MAC SS END -. ie '\\$1'0' \{ .ss \\n[.ss] (\\n[.ss]-\\n[.ss]) \} -. el \{\ -. ie '\\$1'DEFAULT' \{ .ss \\n[.ss] \} -. el \{\ -. ds $SS_VAR \\$1 -. ss \\n[.ss] (0\\*[$SS_VAR]) -. \} -. \} -.END -\# -\# -\# ===================================================================== -\# -\# +++INDENTS+++ -\# -.ig -There are five styles of indents: left, right, both, temporary, -and hanging. Each is set/invoked with a different macro. -Indent macros begin with the letter "I", hence .IL means "indent left," -.IR means "indent right," and so on. - -The first time any of the indent macros is used, it requires an -argument--the size of the indent (with a unit of measure). The -size may also be entered using the \w escape--very useful -for numbered lists using HI. The unit of measure is required. -Subsequent invocations don't require the argument; the indent -measure remains the same until it's changed by invoking the macro -with an argument again. - -If no indents are in effect, the arguments passed to indent macros are -measured from the left and right margins of the page. If a left indent -or a right indent is already in effect, the arguments passed to -the indent macros are calculated from the current values; in other words, -the arguments are additive. If you quit an indent and later return -to it, its value will be the value last in effect, unless you pass -it an argument. If you do pass an argument, it is added to the last -value in effect, unless you cleared the indent with one of -.IX/Q macros. - -Example -------- - -.IL 2P -...some text... -.IL 2P -...some text... -.IQ -...some text... -.IL -...some text... - -The first .IL 2P indents text 2P from the left margin. The second -.IL 2P indents text by an additional 2P, i.e. 4P from the left margin. -.IQ turns the indent off. The last .IL (which has no argument) -takes its value from the total of all arguments passed to .IL (in -this case, 2P and 2P), therefore it indents 2P+2P from the left -margin, i.e. 4P. If you wanted the last .IL to indent just 2P, -you'd either have to reset the .IL prior to .IQ (.IL -2P), or pass -the last .IL the argument 2P. - -To reverse the sense of an indent added to an indent, you may use -negative values. - -Indents can be turned off individually with ILX, IRX, and IBX. -LEFT and RIGHT indents may be combined and manipulated -separately, (e.g. you can have an IL of 2P and an IR of 4P -operative at the same time, and then change, say, the IL to -4P--thereby left indenting 6P--while the IR remains at 4P. - -IB automatically turns off IL and IR. They have to be reinvoked -again when needed. IL and IR automatically turn IB off; it, too, -has to be reinvoked with needed. - -All indents can be turned off at once with IQ. The ILX, IRX, IBX, -and IQ macros simply turn the indents off; the values stored in -the respective indent macros (IL, IR, IB) remain in effect. If -the user wishes to clear the values, the IX macros should be -invoked with the single argument CLEAR. IQ CLEAR clears out -the values stored for all indent styles. - -Indents *must* be turned off before settting string tabs -inside PAD. Generally, in order not to get confused, it's a -good idea to turn all indents off before setting any tabs. - -TI and HI are special cases. There's no need to turn them off, -since they affect only one line--the first after their -invocation. Like the other indent styles, the first time -they're invoked, they require a value in iPpcm; each subsequent -invocation without an argument will use the same value. To -change the value, simply pass a new value. Values for TI and HI -are *not* additive. - -HI presupposes that you already have a left or both indent on. -HI will never hang a line outside the left margin of a document -or column. In other words, you must have IL or IB on before you -can use HI. -.. -\# -\# INDENT LEFT -\# ----------- -\# -.MAC IL END -. if \\n[#INDENT_STYLE_BOTH] \{ .IBX \} -. nr #INDENT_STYLE_LEFT 1 -. nr #INDENT_ACTIVE 1 -. nr #INDENT_LEFT_ACTIVE 1 -. ie '\\$1'' \{\ -. br -. in \\n[#L_INDENT]u -. ta \\n(.lu-\\n[#L_INDENT]u -. \} -. el \{\ -. br -. nr #L_INDENT +(\\$1) -. in \\n[#L_INDENT]u -. ta \\n(.lu-\\n[#L_INDENT]u -. \} -.END -\# -\# -\# +++INDENT RIGHT+++ -\# -.MAC IR END -. if \\n[#INDENT_STYLE_BOTH] \{ .IBX \} -. nr #INDENT_STYLE_RIGHT 1 -. nr #INDENT_ACTIVE 1 -. nr #INDENT_RIGHT_ACTIVE 1 -. ie '\\$1'' \{\ -. br -. ie \\n[#TAB_ACTIVE] \{\ -. ll \\n(.lu-\\n[#R_INDENT]u -. ta \\n(.lu-\\n[#L_INDENT]u -. \} -. el \{\ -. ll \\n[#L_LENGTH]u-\\n[#R_INDENT]u -. ta \\n(.lu-\\n[#L_INDENT]u -. \} -. \} -. el \{\ -. br -. nr #R_INDENT +(\\$1) -. ie \\n[#TAB_ACTIVE] \{\ -. ll \\n(.lu-\\n[#R_INDENT]u -. ta \\n(.lu-\\n[#L_INDENT]u -. \} -. el \{\ -. ll \\n[#L_LENGTH]u-\\n[#R_INDENT]u -. ta \\n(.lu-\\n[#L_INDENT]u -. \} -. \} -.END -\# -\# -\# +++INDENT BOTH+++ -\# -.MAC IB END -. if \\n[#INDENT_STYLE_LEFT] \{ .ILX \} -. if \\n[#INDENT_STYLE_RIGHT] \{ .IRX \} -. nr #INDENT_STYLE_BOTH 1 -. nr #INDENT_ACTIVE 1 -. nr #INDENT_BOTH_ACTIVE 1 -. ie '\\$1'' \{\ -. br -. in \\n[#BL_INDENT]u -. ie \\n[#TAB_ACTIVE] \{\ -. ll \\n(.lu-\\n[#BR_INDENT]u -. ta \\n(.lu-\\n[#BR_INDENT]u -. \} -. el \{\ -. ll \\n[#L_LENGTH]u-\\n[#BR_INDENT]u -. ta \\n(.lu-\\n[#BR_INDENT]u -. \} -. \} -. el \{\ -. br -. nr #BL_INDENT (\\n[#INDENT]+\\$1) -. ie \\n[#NUM_ARGS]=2 \{ .nr #BR_INDENT +(\\$2) \} -. el \{ .nr #BR_INDENT \\n[#BL_INDENT] \} -. ie \\n[#TAB_ACTIVE] \{\ -. in \\n[#BL_INDENT]u -. ll \\n(.lu-\\n[#BR_INDENT]u -. ta \\n(.lu-\\n[#BL_INDENT]u -. \} -. el \{\ -. in \\n[#BL_INDENT]u -. ll \\n[#L_LENGTH]u-\\n[#BR_INDENT]u -. ta \\n(.lu-\\n[#BR_INDENT]u -. \} -. \} -.END -\# -\# -\# +++TEMPORARY INDENT+++ -\# -.MAC TI END -. br -. ie '\\$1'' \{\ -. ti \\n[#T_INDENT]u -. if \\n[#INDENT_LEFT_ACTIVE] \{\ -. ti \\n[#T_INDENT]u+\\n[#L_INDENT]u -. \} -. if \\n[#INDENT_BOTH_ACTIVE] \{\ -. ti \\n[#T_INDENT]u+\\n[#BL_INDENT]u -. \} -. \} -. el \{\ -. nr #T_INDENT (\\$1) -. ti \\n[#T_INDENT]u -. \} -.END -\# -\# -\# +++HANGING INDENT+++ -\# -.MAC HI END -. ie '\\$1'' \{ .ti -\\n[#HL_INDENT]u \} -. el \{\ -. nr #HL_INDENT (\\$1) -. ti -\\n[#HL_INDENT]u -. \} -.END -\# -\# -\# +++INDENTS OFF+++ -\# -.MAC ILX END -. br -. in 0 -. rr #INDENT_LEFT_ACTIVE -. if '\\$1'CLEAR' \{\ -. rr #L_INDENT -. rr #INDENT_STYLE_LEFT -. \} -.END -\# -\# -.MAC IRX END -. br -. rr #INDENT_RIGHT_ACTIVE -. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \} -. el \{\ -. ie \\n[#COLUMNS] \{\ -. ll \\n[#COL_L_LENGTH]u -. ta \\n(.lu -. \} -. el \{\ -. ll \\n[#L_LENGTH]u -. ta \\n(.lu -. \} -. \} -. if '\\$1'CLEAR' \{\ -. rr #R_INDENT -. rr #INDENT_STYLE_RIGHT -. \} -.END -\# -\# -.MAC IBX END -. br -. in 0 -. rr #INDENT_BOTH_ACTIVE -. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \} -. el \{\ -. ie \\n[#COLUMNS] \{\ -. ll \\n[#COL_L_LENGTH]u -. ta \\n(.lu -. \} -. el \{\ -. ll \\n[#L_LENGTH]u -. ta \\n(.lu -. \} -. \} -. if '\\$1'CLEAR' \{\ -. rr #BL_INDENT -. rr #BR_INDENT -. rr #INDENT_STYLE_BOTH -. \} -.END -\# -\# -.MAC IX END -. if '\\$0'IX' \{\ -. if !\\n[#IX_WARN] \{\ -. tm1 "[mom]: Use of .IX is now deprecated. Use .IQ instead. -. tm1 " .IX will continue to behave as before, but to -. tm1 " avoid this message, please update your document. -. nr #IX_WARN 1 -. \} -. \} -. br -. in 0 -. rr #INDENT_LEFT_ACTIVE -. rr #INDENT_RIGHT_ACTIVE -. rr #INDENT_BOTH_ACTIVE -. if \\n[#INDENT_STYLE_RIGHT] \{\ -. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \} -. el \{\ -. ie \\n[#COLUMNS] \{\ -. ll \\n[#COL_L_LENGTH]u -. ta \\n(.lu -. \} -. el \{\ -. ll \\n[#L_LENGTH]u -. ta \\n(.lu -. \} -. \} -. \} -. if \\n[#INDENT_STYLE_BOTH] \{\ -. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \} -. el \{\ -. ie \\n[#COLUMNS] \{\ -. ll \\n[#COL_L_LENGTH]u -. ta \\n(.lu -. \} -. el \{\ -. ll \\n[#L_LENGTH]u -. ta \\n(.lu -. \} -. \} -. \} -. if '\\$1'CLEAR' \{\ -. if \\n[#INDENT_STYLE_RIGHT] \{\ -. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \} -. el \{\ -. ie \\n[#COLUMNS] \{\ -. ll \\n[#COL_L_LENGTH]u -. ta \\n(.lu -. \} -. el \{\ -. ll \\n[#L_LENGTH]u -. ta \\n(.lu -. \} -. \} -. \} -. if \\n[#INDENT_STYLE_BOTH] \{\ -. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \} -. el \{\ -. ie \\n[#COLUMNS] \{\ -. ll \\n[#COL_L_LENGTH]u -. ta \\n(.lu -. \} -. el \{\ -. ll \\n[#L_LENGTH]u -. ta \\n(.lu -. \} -. \} -. \} -. rr #L_INDENT -. rr #R_INDENT -. rr #BL_INDENT -. rr #BR_INDENT -. rr #T_INDENT -. rr #H_INDENT -. rr #INDENT_STYLE_LEFT -. rr #INDENT_STYLE_RIGHT -. rr #INDENT_STYLE_BOTH -. \} -. rr #INDENT_ACTIVE -.END -\# -\# ===================================================================== -\# -\# +++MULTIPLE COLUMNS+++ -\# -\# MULTIPLE COLUMNS ON -\# ------------------- -\# *Arguments: -\# -\# *Function: -\# Marks the top of a column set -\# -.MAC MCO END -.mk c -.END -\# -\# MULTIPLE COLUMN RETURN -\# ---------------------- -\# *Arguments: -\# -\# *Function: -\# Returns to the top of a column set -\# -.MAC MCR END -. TRAP OFF -. sp |\\ncu -. TRAP -.END -\# -\# MULTIPLE COLUMNS OFF -\# -------------------- -\# *Arguments: -\# | -\# *Function: -\# Advances to the end of a column set -\# *Notes: -\# With no argument, advances to the next baseline (at the current -\# leading value) beneath the longest column. With an argument -\# (which requires a unit of measure), advances arg distance -\# beneath the baseline of the deepest column. If the argument -\# is zero, advances to the baseline of the deepest column. -\# -.MAC MCX END -. ie '\\$1'' \{\ -. TQ -. sp |\\n(.hu -. \} -. el \{\ -. nr #MCX_ALD (\\$1) -. TQ -. ie \\n[#MCX_ALD]=0 \{ .sp |\\n(.hu-1v \} -. el \{ .sp |\\n(.hu+\\n[#MCX_ALD]u \} -. rr #MCX_ALD -. \} -.END -\# -\# ===================================================================== -\# -\# +++TYPESETTING SUPPORT MACROS+++ -\# -\# TRAP -\# ---- -\# *Arguments: -\# toggle -\# *Function: -\# Enables/disables traps. -\# *Notes: -\# EL and TN don't function as advertised on the last line before -\# a trap (when they break the preceding line, they spring the -\# trap, and groff won't back up to the line preceding the trap). -\# TRAP is a kludge to get EL and TN work properly on last lines. -\# The user simply enloses the offending lines in TRAP OFF/TRAP. -\# -.MAC TRAP END -. ie '\\$1'' \{ .vpt 1 \} -. el \{ .vpt 0 \} -.END -\# -\# -\# SILENT -\# ------ -\# *Arguments: -\# | -\# *Function: -\# Diverts text so that it doesn't print, or turns the function off. -\# *Notes: -\# Useful for setting up autotabs where you don't want the line with -\# the tab marks to print. -\# -\# Also aliased as COMMENT, in case user wants to input a batch of -\# text that doesn't print. -\# -.MAC SILENT END -. nr #SILENT 1 -. if \\n[#QUAD] \{ .br \} -. ie '\\$1'' \{ .di NO_FLASH \} -. el \{\ -. br -. di -. rm NO_FLASH -. rr #SILENT -. \} -.END -\# -\# -\# PRINT -\# ----- -\# *Function: -\# Prints anything. A macro that helps keep my code nicely indented. -\# -.MAC PRINT END -. nop \\$* -.END -\# -\# -\# CAPS -\# ---- -\# *Arguments: -\# | -\# *Function: -\# Converts text to caps, or, if OFF, reverts to normal caps/lc. -\# -.MAC CAPS END -. ie '\\$1'' \{\ -. tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ -. tr à\[`A] -. tr â\[^A] -. tr á\['A] -. tr ä\[:A] -. tr å\[oA] -. tr ã\[~A] -. tr æ\[AE] -. tr è\[`E] -. tr ê\[^E] -. tr é\['E] -. tr ë\[:E] -. tr ì\[`I] -. tr î\[^I] -. tr í\['I] -. tr ï\[:I] -. tr ò\[`O] -. tr ô\[^O] -. tr ó\['O] -. tr ö\[:O] -. tr õ\[~O] -. tr ø\[/O] -. tr ù\[`U] -. tr û\[^U] -. tr ú\['U] -. tr ü\[:U] -. tr ç\[,C] -. tr ð\[-D] -. tr ñ\[~N] -. tr þ\[TP] -. tr ý\['Y] -. tr ÿ\[:Y] -. nr #CAPS_ON 1 -. \} -. el \{\ -. tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz -. tr à\[`a] -. tr â\[^a] -. tr á\['a] -. tr ä\[:a] -. tr å\[oa] -. tr ã\[~a] -. tr æ\[ae] -. tr è\[`e] -. tr ê\[^e] -. tr é\['e] -. tr ë\[:e] -. tr ì\[`i] -. tr î\[^i] -. tr í\['i] -. tr ï\[:i] -. tr ò\[`o] -. tr ô\[^o] -. tr ó\['o] -. tr ö\[:o] -. tr õ\[~o] -. tr ø\[/o] -. tr ù\[`u] -. tr û\[^u] -. tr ú\['u] -. tr ü\[:u] -. tr ç\[,c] -. tr ð\[Sd] -. tr ñ\[~n] -. tr þ\[Tp] -. tr ý\['y] -. tr ÿ\[:y] -. rr #CAPS_ON -. \} -.END -\# -\# SIZESPECS -\# --------- -\# Argument: -\# -\# Function: -\# Gets cap-height, x-height, and descender depth of the -\# current font at the current point size. -\# *Notes: -\# The routine is diverted so it remains invisible to output. -\# -.MAC SIZESPECS END -. di TYPESIZE -E\\R'#CAP_HEIGHT \\n[.cht]' -e\\R'#X_HEIGHT \\n[.cht]' -y\\R'#DESCENDER \\n[.cdp]' -. br -. di -.END -\# -\# ===================================================================== -\# -\# +++TYPESETTING ALIASES+++ -\# -.ALIAS ADD_SPACE ALD -.ALIAS CENTRE CENTER -.ALIAS COLOUR COLOR -.ALIAS COMMENT SILENT -.ALIAS CONDENSE CONDENSE_OR_EXTEND -.ALIAS EXTEND CONDENSE_OR_EXTEND -.ALIAS FAM FAMILY -.ALIAS HYPHENATE HY -.ALIAS HYPHENATION HY -.ALIAS HYSET HY_SET -.ALIAS IBQ IBX -.ALIAS ILQ ILX -.ALIAS IQ IX -.ALIAS IRQ IRX -.ALIAS LIG LIGATURES -.ALIAS NEWCOLOUR NEWCOLOR -.ALIAS PADMARKER PAD_MARKER -.ALIAS SP ALD -.ALIAS SPACE ALD -.ALIAS TABSET TAB_SET -.ALIAS TB TAB -.ALIAS UNDERSCORE_2 UNDERSCORE2 -.ALIAS XCOLOUR XCOLOR -\# -\# -\# ==================================================================== -\# -\# DOCUMENT PROCESSING MACROS, STRINGS AND ALIASES -\# =============================================== -\# -\# +++PAGE DIMENSIONS+++ -\# -\# PAPER SIZE -\# ---------- -\# *Arguments: -\# LETTER | LEGAL | STATEMENT | TABLOID | LEDGER | FOLIO | QUARTO | 10x14 | EXECUTIVE | A3 | A4 | A5 | B4 | B5 -\# *Function: -\# Sets up dimensions for different paper sizes. -\# -.MAC PAPER END -. ds $PAPER \\$1 -. if '\\*[$PAPER]'LETTER' \{\ -. PAGEWIDTH 8.5i -. PAGELENGTH 11i -. \} -. if '\\*[$PAPER]'LEGAL' \{\ -. PAGEWIDTH 8.5i -. PAGELENGTH 14i -. \} -. if '\\*[$PAPER]'STATEMENT' \{\ -. PAGEWIDTH 5.5i -. PAGELENGTH 8.5i -. \} -. if '\\*[$PAPER]'TABLOID' \{\ -. PAGEWIDTH 11i -. PAGELENGTH 17i -. \} -. if '\\*[$PAPER]'LEDGER' \{\ -. PAGEWIDTH 17i -. PAGELENGTH 11i -. \} -. if '\\*[$PAPER]'FOLIO' \{\ -. PAGEWIDTH 8.5i -. PAGELENGTH 13i -. \} -. if '\\*[$PAPER]'QUARTO' \{\ -. PAGEWIDTH 610p -. PAGELENGTH 780p -. \} -. if '\\*[$PAPER]'10x14' \{\ -. PAGEWIDTH 10i -. PAGELENGTH 14i -. \} -. if '\\*[$PAPER]'EXECUTIVE' \{\ -. PAGEWIDTH 7.25i -. PAGELENGTH 10.5i -. \} -. if '\\*[$PAPER]'A3' \{\ -. PAGEWIDTH 842p -. PAGELENGTH 1190p -. \} -. if '\\*[$PAPER]'A4' \{\ -. PAGEWIDTH 595p -. PAGELENGTH 842p -. \} -. if '\\*[$PAPER]'A5' \{\ -. PAGEWIDTH 421p -. PAGELENGTH 595p -. \} -. if '\\*[$PAPER]'B4' \{\ -. PAGEWIDTH 709p -. PAGELENGTH 1002p -. \} -. if '\\*[$PAPER]'B5' \{\ -. PAGEWIDTH 501p -. PAGELENGTH 709p -. \} -. if !r#L_MARGIN \{ .L_MARGIN \\n(.o \} -. if !r#R_MARGIN \{ .R_MARGIN 1i \} -.END -\# -\# -\# ==================================================================== -\# -\# +++PRINTSTYLE -- TYPEWRITE OR TYPESET+++ -\# -\# PRINTSTYLE -\# ---------- -\# *Arguments: -\# TYPESET | TYPEWRITE [SINGLESPACE] -\# *Function: -\# Sets type specs for typewriter-style or typeset output. -\# *Notes: -\# Number registers: TYPEWRITE=1, TYPESET=2. -\# -.MAC PRINTSTYLE END -. if !\\n[#COLLATE]=1 \{\ -. if !d$PAPER \{ .PAPER LETTER \} -. if '\\$1'TYPEWRITE' \{\ -. nr #PRINT_STYLE 1 -. if !\\n[#DOC_TYPE]=4 \{ .L_MARGIN 6P \} -. if !\\n[#DOC_TYPE]=4 \{ .R_MARGIN 6P \} -. TYPEWRITER -. color 0 -. ie '\\$2'SINGLESPACE' \{\ -. nr #SINGLE_SPACE 1 -. vs 12 -. nr #ORIGINAL_DOC_LEAD \\n(.v -. \} -. el \{\ -. vs 24 -. nr #ORIGINAL_DOC_LEAD \\n(.v -. \} -. QUAD L -. HY OFF -. SMARTQUOTES OFF -. if !\\n[#PP_INDENT] \{\ -. in 3P \"Set indent -. nr #PP_INDENT \\n(.i \"Read into #PP_INDENT -. in 0 \"Remove indent -. \} -. HDRFTR_RIGHT_CAPS -. nr #BOLDER_UNITS 0 -. nr #CONDENSE 0 -. nr #EXTEND 0 -. rm IT -. rm BD -. rm BDI -. rm PREV -. UNDERLINE_SLANT -. UNDERLINE_ITALIC -. UNDERLINE_QUOTES -. nr #IGNORE_COLUMNS 1 -. char \(em -- -. tr `' -. \} -. if '\\$1'TYPESET' \{\ -. nr #PRINT_STYLE 2 -. if !\\n[#DOC_TYPE]=4 \{ .L_MARGIN 6P \} -. if !\\n[#DOC_TYPE]=4 \{ .R_MARGIN 6P \} -. FAMILY T -. FT R -. if !\\n[#DOC_TYPE]=4 \{ .PT_SIZE 12.5 \} -. if !\\n[#DOC_TYPE]=4 \{ .LS 16 \} -. JUSTIFY -. HY -. HY_SET 2 36p 1p -. KERN -. LIG -. SS 0 -. SMARTQUOTES -. if !\\n[#PP_INDENT] \{\ -. in 2m \"Set indent -. nr #PP_INDENT \\n(.i \"Read into #PP_INDENT -. in 0 \"Remove indent -. \} -. HDRFTR_RIGHT_CAPS -. rr #IGNORE_COLUMNS -. \} -. \} -.END -\# -\# -\# Macros to control behaviour of PRINTSTYLE TYPEWRITE -\# -\# First, a little utility macro. -\# -.MAC TYPEWRITER END -. fam C -. ft R -. ps 12 -.END -\# -\# -\# ITALIC MEANS ITALIC -\# ------------------- -\# *Argument: -\# -\# *Function: -\# Instructs TYPEWRITE to treat italics as italics, whether -\# invoked via control lines or inline. -\# *Notes: -\# ITALIC_MEANS_ITALIC and UNDERLINE_ITALIC are mututally exclusive, -\# hence invoking the one automatically turns off the other. -\# -.MAC ITALIC_MEANS_ITALIC END -. if \\n[#PRINT_STYLE]=1 \{\ -. nr #ITALIC_MEANS_ITALIC 1 -. rr #UNDERLINE_ITALIC -. rm ROM -. rm IT -. rm PREV -. ds ROM \EfR -. ds IT \EfI -. ds PREV \EfR -. \} -.END -\# -\# -\# UNDERLINE ITALIC -\# ---------------- -\# *Argument: -\# -\# *Function: -\# Instructs TYPEWRITE to underline italics, whether invoked -\# via control lines or inline. -\# *Notes: -\# UNDERLINE_ITALIC and ITALIC_MEANS_ITALIC are mututally exclusive, -\# hence invoking the one automatically turns off the other. -\# -\# UNDERLINE_ITALIC is the default for TYPEWRITE. -\# -.MAC UNDERLINE_ITALIC END -. if \\n[#PRINT_STYLE]=1 \{\ -. nr #UNDERLINE_ITALIC 1 -. rr #ITALIC_MEANS_ITALIC -. rm ROM -. rm IT -. rm PREV -. ds ROM \E*[ULX] -. ds IT \E*[UL] -. ds PREV \E*[ULX] -. \} -.END -\# -\# -\# UNDERLINE SLANT -\# --------------- -\# *Arguments: -\# | -\# *Function: -\# Instructs TYPEWRITE to underline occurences of \*[SLANT], or -\# turns feature off. -\# *Notes: -\# Users may want \*[SLANT] to mean slant in TYPEWRITE, although -\# most of the time, \*[SLANT] most likely means the user wanted -\# italic but didn't have it, ergo the need to tell TYPEWRITE to -\# treat \*[SLANT] as italic (i.e. underlined). -\# -\# UNDERLINE_SLANT and SLANT_MEANS_SLANT are mututally exclusive, -\# hence invoking the one automatically turns off the other. -\# -\# UNDERLINE_SLANT is the default for TYPEWRITE. -\# -.MAC UNDERLINE_SLANT END -. if \\n[#PRINT_STYLE]=1 \{\ -. rr #SLANT_MEANS_SLANT -. nr #UNDERLINE_SLANT 1 -. rm SLANT -. rm SLANTX -. ds SLANT \ER'#SLANT_ON 1'\E*[UL] -. ds SLANTX \ER'#SLANT_ON 0'\E*[ULX] -. \} -.END -\# -\# -.MAC SLANT_MEANS_SLANT END -. if \\n[#PRINT_STYLE]=1 \{\ -. rr #UNDERLINE_SLANT -. nr #SLANT_MEANS_SLANT 1 -. rm SLANT -. rm SLANTX -. ds SLANT \ER'#SLANT_ON 1'\ES'\En[#DEGREES]' -. ds SLANTX \ER'#SLANT_ON 0'\ES'0' -. \} -.END -\# -\# -.MAC IGNORE_COLUMNS END -. if \\n[#PRINT_STYLE]=1 \{ .nr #NO_COLUMNS 1 \} -.END -\# -\# -\# ==================================================================== -\# -\# +++COPY STYLE -- DRAFT OR FINAL+++ -\# -\# COPY STYLE -\# ---------- -\# *Arguments: -\# DRAFT | FINAL -\# *Function: -\# Sets registers that are used to determine what to put -\# in the default header, and how to number pages. -\# *Notes: -\# DOCTYPE must come before COPYSTYLE. -\# -.MAC COPYSTYLE END -. ds $COPY_STYLE \\$1 -. if '\\*[$COPY_STYLE]'DRAFT' \{\ -. nr #COPY_STYLE 1 -. if !d$DRAFT \{ .DRAFT 1 \} -. \} -. if '\\*[$COPY_STYLE]'FINAL' \{ .nr #COPY_STYLE 2 \} -. if !d$CHAPTER_STRING \{ .CHAPTER_STRING "Chapter" \} -. if !d$DRAFT_STRING \{ .DRAFT_STRING "Draft" \} -. if !d$REVISION_STRING \{ .REVISION_STRING "Rev." \} -.\" Default -. if \\n[#DOC_TYPE]=1 \{\ -. ie \\n[#COPY_STYLE]=1 \{\ -. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \} -. el \{ .PAGENUM_STYLE roman \} -. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\ -. ie \\n[#DRAFT_WITH_PAGENUM] \{\ -. ds $HDRFTR_CENTER -. \} -. el \{\ -. ie '\\*[$REVISION]'' \{\ -. ds $HDRFTR_CENTER \ - \\*[$DRAFT_STRING]\\*[$DRAFT] -. \} -. el \{\ -. ds $HDRFTR_CENTER \ - \\*[$DRAFT_STRING]\\*[$DRAFT], \ - \\*[$REVISION_STRING] \\*[$REVISION] -. \} -. \} -. \} -. \} -. el \{\ -. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \} -. el \{ .PAGENUM_STYLE DIGIT \} -. if r#DRAFT_WITH_PAGENUM \{ .rr #DRAFT_WITH_PAGENUM \} -. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\ -. ds $HDRFTR_CENTER -. rr #USER_DEF_HDRFTR_CENTER -. \} -. \} -. \} -.\" Chapter -. if \\n[#DOC_TYPE]=2 \{\ -.\" Copystyle DRAFT -. ie \\n[#COPY_STYLE]=1 \{\ -. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \} -. el \{ .PAGENUM_STYLE roman \} -. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\ -. ie \\n[#DRAFT_WITH_PAGENUM] \{\ -. ie '\\*[$CHAPTER]'' \{\ -. ie !'\\*[$CHAPTER_TITLE]'' \{\ -. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE] -. \} -. el .ds $HDRFTR_CENTER \\*[$CHAPTER_STRING] -. \} -. el \{\ -. ie !'\\*[$CHAPTER_TITLE]'' \{\ -. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE] -. \} -. el .ds $HDRFTR_CENTER \\*[$CHAPTER_STRING] \\*[$CHAPTER] -. \} -. \} -. el \{\ -. ie '\\*[$REVISION]'' \{\ -. ie '\\*[$CHAPTER]'' \{\ -. ie !'\\*[$CHAPTER_TITLE]'' \{\ -. ie '\\*[$DRAFT]'' \{\ -. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE] -. \} -. el \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_TITLE], \ - \\*[$DRAFT_STRING]\\*[$DRAFT] -. \} -. \} -. el \{\ -. ie '\\*[$DRAFT]'' \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_STRING] -. \} -. el \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_STRING], \ - \\*[$DRAFT_STRING]\\*[$DRAFT] -. \} -. \} -. \} -. el \{\ -. ie !'\\*[$CHAPTER_TITLE]'' \{\ -. ie '\\*[$DRAFT]'' \{\ -. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE] -. \} -. el \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_TITLE], \ - \\*[$DRAFT_STRING]\\*[$DRAFT] -. \} -. \} -. el \{\ -. ie '\\*[$DRAFT]'' \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_STRING] \\*[$CHAPTER] -. \} -. el \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_STRING] \\*[$CHAPTER], \ - \\*[$DRAFT_STRING]\\*[$DRAFT] -. \} -. \} -. \} -. \} -. el \{\ -. ie '\\*[$CHAPTER]'' \{\ -. ie !'\\*[$CHAPTER_TITLE]'' \{\ -. ie '\\*[$DRAFT]'' \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_TITLE], \ - \\*[$REVISION_STRING] \\*[$REVISION] -. \} -. el \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_TITLE], \ - \\*[$DRAFT_STRING]\\*[$DRAFT], \ - \\*[$REVISION_STRING] \\*[$REVISION] -. \} -. \} -. el \{\ -. ie '\\*[$DRAFT]'' \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_STRING], \ - \\*[$REVISION_STRING] \\*[$REVISION] -. \} -. el \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_STRING], \ - \\*[$DRAFT_STRING]\\*[$DRAFT], \ - \\*[$REVISION_STRING] \\*[$REVISION] -. \} -. \} -. \} -. el \{\ -. ie !'\\*[$CHAPTER_TITLE]'' \{\ -. ie '\\*[$DRAFT]'' \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_TITLE], \ - \\*[$REVISION_STRING] \\*[$REVISION] -. \} -. el \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_TITLE], \ - \\*[$DRAFT_STRING]\\*[$DRAFT], \ - \\*[$REVISION_STRING] \\*[$REVISION] -. \} -. \} -. el \{\ -. ie '\\*[$DRAFT]'' \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_STRING] \\*[$CHAPTER], \ - \\*[$REVISION_STRING] \\*[$REVISION] -. \} -. el \{\ -. ds $HDRFTR_CENTER \ - \\*[$CHAPTER_STRING] \\*[$CHAPTER], \ - \\*[$DRAFT_STRING]\\*[$DRAFT], \ - \\*[$REVISION_STRING] \\*[$REVISION] -. \} -. \} -. \} -. \} -. \} -. \} -. \} -.\" Copystyle FINAL -. el \{\ -. if r#DRAFT_WITH_PAGENUM \{ .rr #DRAFT_WITH_PAGENUM \} -. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\ -. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \} -. el \{ .PAGENUM_STYLE DIGIT \} -. ie '\\*[$CHAPTER]'' \{\ -. ie !'\\*[$CHAPTER_TITLE]'' \{\ -. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE] -. \} -. el \{\ -. ds $HDRFTR_CENTER \\*[$CHAPTER_STRING] -. \} -. \} -. el \{\ -. ie !'\\*[$CHAPTER_TITLE]'' \{\ -. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE] -. \} -. el \{\ -. ds $HDRFTR_CENTER \\*[$CHAPTER_STRING] \\*[$CHAPTER] -. \} -. \} -. \} -. \} -. \} -.\" Named -. if \\n[#DOC_TYPE]=3 \{\ -. ie \\n[#COPY_STYLE]=1 \{\ -. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \} -. el \{ .PAGENUM_STYLE roman \} -. ie \\n[#DRAFT_WITH_PAGENUM] \{\ -. ds $HDRFTR_CENTER \\*[$DOC_TYPE] -. \} -. el \{\ -. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\ -. ie '\\*[$REVISION]'' \{\ -. ie '\\*[$DRAFT]'' \{\ -. ds $HDRFTR_CENTER \\*[$DOC_TYPE] -. \} -. el \{\ -. ds $HDRFTR_CENTER \ - \\*[$DOC_TYPE], \ - \\*[$DRAFT_STRING]\\*[$DRAFT] -. \} -. \} -. el \{\ -. ie '\\*[$DRAFT]'' \{\ -. ds $HDRFTR_CENTER \ - \\*[$DOC_TYPE], \ - \\*[$REVISION_STRING] \\*[$REVISION] -. \} -. el \{\ -. ds $HDRFTR_CENTER \ - \\*[$DOC_TYPE], \ - \\*[$DRAFT_STRING]\\*[$DRAFT], \ - \\*[$REVISION_STRING] \\*[$REVISION] -. \} -. \} -. \} -. \} -. \} -. el \{\ -. if r#DRAFT_WITH_PAGENUM \{ .rr #DRAFT_WITH_PAGENUM \} -. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\ -. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \} -. el \{ .PAGENUM_STYLE DIGIT \} -. ds $HDRFTR_CENTER \\*[$DOC_TYPE] -. \} -. \} -. \} -.END -\# -\# ==================================================================== -\# -\# +++COLLECT DOC INFO -- STRINGS AND REGISTERS FOR REFERENCE MACROS+++ -\# -\# *Arguments: -\# various string/register arguments -\# *Function: -\# Collect information about documents. -\# -\# -.MAC DOCTITLE END -. ds $DOC_TITLE \\$1 -.END -\# -.MAC TITLE END \"Document title -. ds $TITLE \\$1 -.END -\# -\# -.MAC SUBTITLE END \"Document sub-title -. ds $SUBTITLE \\$1 -.END -\# -\# -.MAC CHAPTER END \"If document is a chapter, the chapter number -. ds $CHAPTER \\$1 -.END -\# -\# -.MAC CHAPTER_TITLE END \" This defines what comes after Chapter # -. ds $CHAPTER_TITLE \\$1 -.END -\# -\# -.MAC DRAFT END \"Draft number -. ie '\\$1'' .ds $DRAFT -. el .ds $DRAFT " \\$1 -.END -\# -\# -.MAC REVISION END \"Revision number -. ds $REVISION \\$1 -.END -\# -\# -.MAC DRAFT_WITH_PAGENUMBER END \"Attach draft/revision strings to page number -. nr #DRAFT_WITH_PAGENUM 1 -.END -\# -\# -.MAC AUTHOR END \"Author. Enclose all args fully in double quotes. -. nr #AUTHOR_NUM -1 1 -. while \\n[#NUM_ARGS]>\\n[#AUTHOR_NUM] \{\ -. ds $AUTHOR_\\n+[#AUTHOR_NUM] \\$\\n[#AUTHOR_NUM] -.\} -. nr #NUM_AUTHORS \\n[#NUM_ARGS]%2 \"Use mod 2 to test if odd or even # of authors -. ie \\n[#NUM_AUTHORS]=1 \{ .nr #AUTHOR_LINES 0 \} -. el \{ .nr #AUTHOR_LINES 1 \} -.END -\# -\# -.MAC COPYRIGHT END \"For use on cover page only -. ds $COPYRIGHT \[co]\\$1 -.END -\# -\# -.MAC MISC END \"For use on cover page only; enclose all args in double quotes -. nr #MISC_NUM -1 1 -. while \\n[#NUM_ARGS]>\\n[#MISC_NUM] \{\ -. ds $MISC_\\n+[#MISC_NUM] \\$\\n[#MISC_NUM] -.\} -. nr #NUM_MISCS \\n[#NUM_ARGS] -.END -\# -\# -.MAC PAGENUMBER END \"Page # that appears on page one. -. nr #n%_AT_PAGENUM_SET \\n% -. nr #PAGE_NUM_ADJ \\$1-\\n[#n%_AT_PAGENUM_SET] -. rr #n%_AT_PAGENUM_SET -. nr #PAGE_NUM_SET 1 -.END -\# -\# ==================================================================== -\# -\# +++TYPE OF DOCUMENT+++ -\# -\# DOCUMENT TYPE -\# ------------- -\# *Argument: -\# DEFAULT | CHAPTER | NAMED " | LETTER -\# *Function: -\# Creates strings and sets registers for document types. -\# *Notes: -\# Number registers: DEFAULT=1, CHAPTER=2, NAMED=3, LETTER=4 -\# -.MAC DOCTYPE END -. if '\\$1'DEFAULT' \{\ -. nr #DOC_TYPE 1 -. \} -. if '\\$1'CHAPTER' \{\ -. nr #DOC_TYPE 2 -. \} -. if '\\$1'NAMED' \{\ -. ds $DOC_TYPE \\$2 -. nr #DOC_TYPE 3 -. \} -. if '\\$1'LETTER' \{\ -. nr #DOC_TYPE 4 -. L_MARGIN 1.125i -. R_MARGIN 1.125i -. PT_SIZE 12 -. LS 13.5 -. DOCHEADER OFF -. PARA_INDENT 3m -. INDENT_FIRST_PARAS -. PARA_SPACE -. ds $SUITE \En[#SUITE] -. HEADER_MARGIN 3P+6p -. HEADER_GAP 3P -. FOOTERS -. FOOTER_RULE OFF -. FOOTER_LEFT "" -. FOOTER_CENTER "" -. FOOTER_RIGHT_SIZE +0 -. FOOTER_RIGHT "\&.../\E*[$SUITE] -. FOOTER_ON_FIRST_PAGE -. em ALL_DONE -. \} -.END -\# -\# +++LETTER MACROS+++ -\# -\# First, create a register to hold incrementing numbers to be -\# appended to LETTERHEAD. -\# -.nr #FIELD 0 1 -\# -\# DATE -\# ---- -\# *Arguments: -\# -\# *Function: -\# Stores date (entered on the line after .DATE) in diversion -\# LETTERHEAD -\# -.MAC DATE END -. if !'\\n(.z'' \{ .di \} -. di LETTERHEAD\\n+[#FIELD] -. ie \\n[#FIELD]=1 \{\ -. nr #DATE_FIRST 1 -. RIGHT -. \} -. el \{\ -. LEFT -. \} -.END -\# -\# -\# TO -\# -- -\# *Arguments: -\# -\# *Function: -\# Stores addressee address (entered on the line after .TO) in -\# diversion LETTERHEAD -\# -.MAC TO END -. if !'\\n(.z'' \{ .di \} -. di LETTERHEAD\\n+[#FIELD] -. LEFT -.END -\# -\# -\# FROM -\# ---- -\# *Arguments: -\# -\# *Function: -\# Stores addresser address (entered on the line after .FROM) in -\# diversion LETTERHEAD -\# -.MAC FROM END -. if !'\\n(.z'' \{ .di \} -. di LETTERHEAD\\n+[#FIELD] -. LEFT -.END -\# -\# -\# GREETING -\# -------- -\# *Arguments: -\# -\# *Function: -\# Stores greeting (entered on the line after .GREETING) in -\# diversion LETTERHEAD -\# -.MAC GREETING END -. if !'\\n(.z'' \{ .di \} -. di LETTERHEAD\\n+[#FIELD] -. LEFT -.END -\# -\# -\# CLOSING -\# ------- -\# *Arguments: -\# -\# *Function: -\# Stores greeting in diversion CLOSING. -\# -.MAC CLOSING END -. br -. nr #CLOSING 1 -. di CLOSING -. LEFT -.END -\# -\# -\# NO SUITE -\# -------- -\# *Arguments: -\# -\# *Function: -\# Redefines $FOOTER_RIGHT to blank so that a suite number doesn't -\# appear at the bottom of letter pages. -\# -.MAC NO_SUITE END -. FOOTER_RIGHT "" -.END -\# -\# ==================================================================== -\# -\# +++DEFAULTS+++ -\# -\# TYPE-STYLE CONTROL MACROS -\# ------------------------- -\# -.ig -The control macros for family, font, size, quad and color are here -grouped together. Each (e.g. _FAMILY or _FONT) tests for a calling -alias before performing the action(s) appropriate to the calling -macro. Defaults for all these guys are set in DEFAULTS, and listed -in the "Control Macros" section of the documentation pertinent to -the macro whose style is to be changed. -.. -\# -.MAC _FAMILY END -. if '\\$0'AUTHOR_FAMILY' .ds $AUTHOR_FAM \\$1 -. if '\\$0'BIBLIOGRAPHY_FAMILY' .ds $BIB_FAM \\$1 -. if '\\$0'BIBLIOGRAPHY_STRING_FAMILY' .ds $BIB_STRING_FAM \\$1 -. if '\\$0'BLOCKQUOTE_FAMILY' .ds $BQUOTE_FAM \\$1 -. if '\\$0'CITATION_FAMILY' .ds $BQUOTE_FAM \\$1 -. if '\\$0'CITE_FAMILY' .ds $BQUOTE_FAM \\$1 -. if '\\$0'CHAPTER_TITLE_FAMILY' .ds $CHAPTER_TITLE_FAM \\$1 -. if '\\$0'COVER_AUTHOR_FAMILY' .ds $COVER_AUTHOR_FAM \\$1 -. if '\\$0'COVER_CHAPTER_TITLE_FAMILY' .ds $COVER_CHAPTER_TITLE_FAM \\$1 -. if '\\$0'COVER_COPYRIGHT_FAMILY' .ds $COVER_COPYRIGHT_FAM \\$1 -. if '\\$0'COVER_DOCTYPE_FAMILY' .ds $COVER_DOCTYPE_FAM \\$1 -. if '\\$0'COVER_FAMILY' .ds $COVER_FAM \\$1 -. if '\\$0'COVER_SUBTITLE_FAMILY' .ds $COVER_SUBTITLE_FAM \\$1 -. if '\\$0'COVER_TITLE_FAMILY' .ds $COVER_TITLE_FAM \\$1 -. if '\\$0'DOC_COVER_AUTHOR_FAMILY' .ds $DOC_COVER_AUTHOR_FAM \\$1 -. if '\\$0'DOC_COVER_CHAPTER_TITLE_FAMILY' .ds $DOC_COVER_CHAPTER_TITLE_FAM \\$1 -. if '\\$0'DOC_COVER_COPYRIGHT_FAMILY' .ds $DOC_COVER_COPYRIGHT_FAM \\$1 -. if '\\$0'DOC_COVER_DOCTYPE_FAMILY' .ds $DOC_COVER_DOCTYPE_FAM \\$1 -. if '\\$0'DOC_COVER_FAMILY' .ds $DOC_COVER_FAM \\$1 -. if '\\$0'DOC_COVER_SUBTITLE_FAMILY' .ds $DOC_COVER_SUBTITLE_FAM \\$1 -. if '\\$0'DOC_COVER_TITLE_FAMILY' .ds $DOC_COVER_TITLE_FAM \\$1 -. if '\\$0'DOCHEADER_FAMILY' .ds $DOCHEADER_FAM \\$1 -. if '\\$0'DOCTYPE_FAMILY' .ds $DOCTYPE_FAM \\$1 -. if '\\$0'ENDNOTE_FAMILY' .ds $EN_FAM \\$1 -. if '\\$0'ENDNOTE_NUMBER_FAMILY' .ds $EN_NUMBER_FAM \\$1 -. if '\\$0'ENDNOTE_LINENUMBER_FAMILY' .ds $EN_LN_FAM \\$1 -. if '\\$0'ENDNOTE_STRING_FAMILY' .ds $EN_STRING_FAM \\$1 -. if '\\$0'ENDNOTE_TITLE_FAMILY' .ds $EN_TITLE_FAM \\$1 -. if '\\$0'EPIGRAPH_FAMILY' .ds $EPI_FAM \\$1 -. if '\\$0'FOOTNOTE_FAMILY' .ds $FN_FAM \\$1 -. if '\\$0'HDRFTR_CENTER_FAMILY' .ds $HDRFTR_CENTER_FAM \\$1 -. if '\\$0'HDRFTR_FAMILY' \{\ -. ds $HDRFTR_FAM \\$1 -. ds $HDRFTR_LEFT_FAM \\$1 -. ds $HDRFTR_CENTER_FAM \\$1 -. ds $HDRFTR_RIGHT_FAM \\$1 -. \} -. if '\\$0'HDRFTR_LEFT_FAMILY' .ds $HDRFTR_LEFT_FAM \\$1 -. if '\\$0'HDRFTR_RIGHT_FAMILY' .ds $HDRFTR_RIGHT_FAM \\$1 -. if '\\$0'HEAD_FAMILY' .ds $HEAD_FAM \\$1 -. if '\\$0'PAGENUM_FAMILY' .ds $PAGE_NUM_FAM \\$1 -. if '\\$0'PARAHEAD_FAMILY' .ds $PH_FAM \\$1 -. if '\\$0'QUOTE_FAMILY' .ds $QUOTE_FAM \\$1 -. if '\\$0'SUBHEAD_FAMILY' .ds $SH_FAM \\$1 -. if '\\$0'SUBTITLE_FAMILY' .ds $SUBTITLE_FAM \\$1 -. if '\\$0'TITLE_FAMILY' .ds $TITLE_FAM \\$1 -. if '\\$0'TOC_FAMILY' .ds $TOC_FAM \\$1 -. if '\\$0'TOC_FAM' .ds $TOC_FAM \\$1 -. if '\\$0'TOC_HEADER_FAMILY' .ds $TOC_HEADER_FAM \\$1 -. if '\\$0'TOC_HEAD_FAMILY' .ds $TOC_HEAD_FAM \\$1 -. if '\\$0'TOC_PARAHEAD_FAMILY' .ds $TOC_PH_FAM \\$1 -. if '\\$0'TOC_PN_FAMILY' .ds $TOC_PN_FAM \\$1 -. if '\\$0'TOC_SUBHEAD_FAMILY' .ds $TOC_SH_FAM \\$1 -. if '\\$0'TOC_TITLE_FAMILY' .ds $TOC_TITLE_FAM \\$1 -.END -\# -\# -.MAC _FONT END -. if '\\$0'AUTHOR_FONT' .ds $AUTHOR_FT \\$1 -. if '\\$0'BIBLIOGRAPHY_FONT' .ds $BIB_FT \\$1 -. if '\\$0'BIBLIOGRAPHY_STRING_FONT' .ds $BIB_STRING_FT \\$1 -. if '\\$0'BLOCKQUOTE_FONT' .ds $BQUOTE_FT \\$1 -. if '\\$0'CITATION_FONT' .ds $BQUOTE_FT \\$1 -. if '\\$0'CITE_FONT' .ds $BQUOTE_FT \\$1 -. if '\\$0'CHAPTER_TITLE_FONT' .ds $CHAPTER_TITLE_FT \\$1 -. if '\\$0'COVER_AUTHOR_FONT' .ds $COVER_AUTHOR_FT \\$1 -. if '\\$0'COVER_CHAPTER_TITLE_FONT' .ds $COVER_CHAPTER_TITLE_FT \\$1 -. if '\\$0'COVER_COPYRIGHT_FONT' .ds $COVER_COPYRIGHT_FT \\$1 -. if '\\$0'COVER_DOCTYPE_FONT' .ds $COVER_DOCTYPE_FT \\$1 -. if '\\$0'COVER_SUBTITLE_FONT' .ds $COVER_SUBTITLE_FT \\$1 -. if '\\$0'COVER_TITLE_FONT' .ds $COVER_TITLE_FT \\$1 -. if '\\$0'DOC_COVER_AUTHOR_FONT' .ds $DOC_COVER_AUTHOR_FT \\$1 -. if '\\$0'DOC_COVER_CHAPTER_TITLE_FONT' .ds $DOC_COVER_CHAPTER_TITLE_FT \\$1 -. if '\\$0'DOC_COVER_COPYRIGHT_FONT' .ds $DOC_COVER_COPYRIGHT_FT \\$1 -. if '\\$0'DOC_COVER_DOCTYPE_FONT' .ds $DOC_COVER_DOCTYPE_FT \\$1 -. if '\\$0'DOC_COVER_SUBTITLE_FONT' .ds $DOC_COVER_SUBTITLE_FT \\$1 -. if '\\$0'DOC_COVER_TITLE_FONT' .ds $DOC_COVER_TITLE_FT \\$1 -. if '\\$0'DOCTYPE_FONT' .ds $DOCTYPE_FT \\$1 -. if '\\$0'ENDNOTE_FONT' .ds $EN_FT \\$1 -. if '\\$0'ENDNOTE_NUMBER_FONT' .ds $EN_NUMBER_FT \\$1 -. if '\\$0'ENDNOTE_LINENUMBER_FONT' .ds $EN_LN_FT \\$1 -. if '\\$0'ENDNOTE_STRING_FONT' .ds $EN_STRING_FT \\$1 -. if '\\$0'ENDNOTE_TITLE_FONT' .ds $EN_TITLE_FT \\$1 -. if '\\$0'EPIGRAPH_FONT' .ds $EPI_FT \\$1 -. if '\\$0'FOOTNOTE_FONT' .ds $FN_FT \\$1 -. if '\\$0'HDRFTR_CENTER_FONT' .ds $HDRFTR_CENTER_FT \\$1 -. if '\\$0'HDRFTR_LEFT_FONT' .ds $HDRFTR_LEFT_FT \\$1 -. if '\\$0'HDRFTR_RIGHT_FONT' .ds $HDRFTR_RIGHT_FT \\$1 -. if '\\$0'HEAD_FONT' .ds $HEAD_FT \\$1 -. if '\\$0'PAGENUM_FONT' .ds $PAGE_NUM_FT \\$1 -. if '\\$0'PARAHEAD_FONT' .ds $PH_FT \\$1 -. if '\\$0'QUOTE_FONT' .ds $QUOTE_FT \\$1 -. if '\\$0'SUBHEAD_FONT' .ds $SH_FT \\$1 -. if '\\$0'SUBTITLE_FONT' .ds $SUBTITLE_FT \\$1 -. if '\\$0'TITLE_FONT' .ds $TITLE_FT \\$1 -. if '\\$0'TOC_HEADER_FONT' .ds $TOC_HEADER_FT \\$1 -. if '\\$0'TOC_HEAD_FONT' .ds $TOC_HEAD_FT \\$1 -. if '\\$0'TOC_PARAHEAD_FONT' .ds $TOC_PH_FT \\$1 -. if '\\$0'TOC_PN_FONT' .ds $TOC_PN_FT \\$1 -. if '\\$0'TOC_SUBHEAD_FONT' .ds $TOC_SH_FT \\$1 -. if '\\$0'TOC_TITLE_FONT' .ds $TOC_TITLE_FT \\$1 -.END -\# -\# -.MAC _SIZE END -. if '\\$0'AUTHOR_SIZE' .ds $AUTHOR_SIZE_CHANGE \\$1 -. if '\\$0'BIBLIOGRAPHY_STRING_SIZE' .ds $BIB_STRING_SIZE_CHANGE \\$1 -. if '\\$0'BLOCKQUOTE_SIZE' .ds $BQUOTE_SIZE_CHANGE \\$1 -. if '\\$0'CITATION_SIZE' .ds $BQUOTE_SIZE_CHANGE \\$1 -. if '\\$0'CITE_SIZE' .ds $BQUOTE_SIZE_CHANGE \\$1 -. if '\\$0'CHAPTER_TITLE_SIZE' .ds $CHAPTER_TITLE_SIZE_CHANGE \\$1 -. if '\\$0'COVER_AUTHOR_SIZE' .ds $COVER_AUTHOR_SIZE_CHANGE \\$1 -. if '\\$0'COVER_CHAPTER_TITLE_SIZE' .ds $COVER_CHAPTER_TITLE_SIZE_CHANGE \\$1 -. if '\\$0'COVER_COPYRIGHT_SIZE' .ds $COVER_COPYRIGHT_SIZE_CHANGE \\$1 -. if '\\$0'COVER_DOCTYPE_SIZE' .ds $COVER_DOCTYPE_SIZE_CHANGE \\$1 -. if '\\$0'COVER_SUBTITLE_SIZE' .ds $COVER_SUBTITLE_SIZE_CHANGE \\$1 -. if '\\$0'COVER_TITLE_SIZE' .ds $COVER_TITLE_SIZE_CHANGE \\$1 -. if '\\$0'DOC_COVER_AUTHOR_SIZE' .ds $DOC_COVER_AUTHOR_SIZE_CHANGE \\$1 -. if '\\$0'DOC_COVER_CHAPTER_TITLE_SIZE' .ds $DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE \\$1 -. if '\\$0'DOC_COVER_COPYRIGHT_SIZE' .ds $DOC_COVER_COPYRIGHT_SIZE_CHANGE \\$1 -. if '\\$0'DOC_COVER_DOCTYPE_SIZE' .ds $DOC_COVER_DOCTYPE_SIZE_CHANGE \\$1 -. if '\\$0'DOC_COVER_SUBTITLE_SIZE' .ds $DOC_COVER_SUBTITLE_SIZE_CHANGE \\$1 -. if '\\$0'DOC_COVER_TITLE_SIZE' .ds $DOC_COVER_TITLE_SIZE_CHANGE \\$1 -. if '\\$0'DOCTYPE_SIZE' .ds $DOCTYPE_SIZE_CHANGE \\$1 -. if '\\$0'ENDNOTE_NUMBER_SIZE' .ds $EN_NUMBER_SIZE_CHANGE \\$1 -. if '\\$0'ENDNOTE_LINENUMBER_SIZE' .ds $EN_LN_SIZE_CHANGE \\$1 -. if '\\$0'ENDNOTE_STRING_SIZE' .ds $EN_STRING_SIZE_CHANGE \\$1 -. if '\\$0'ENDNOTE_TITLE_SIZE' .ds $EN_TITLE_SIZE_CHANGE \\$1 -. if '\\$0'EPIGRAPH_SIZE' .ds $EPI_SIZE_CHANGE \\$1 -. if '\\$0'FOOTNOTE_SIZE' .ds $FN_SIZE_CHANGE \\$1 -. if '\\$0'HDRFTR_CENTER_SIZE' .ds $HDRFTR_CENTER_SIZE_CHANGE \\$1 -. if '\\$0'HDRFTR_LEFT_SIZE' .ds $HDRFTR_LEFT_SIZE_CHANGE \\$1 -. if '\\$0'HDRFTR_RIGHT_SIZE' .ds $HDRFTR_RIGHT_SIZE_CHANGE \\$1 -. if '\\$0'HDRFTR_SIZE' .ds $HDRFTR_SIZE_CHANGE \\$1 -. if '\\$0'HEAD_SIZE' .ds $HEAD_SIZE_CHANGE \\$1 -. if '\\$0'PAGENUM_SIZE' .ds $PAGE_NUM_SIZE_CHANGE \\$1 -. if '\\$0'PARAHEAD_SIZE' .ds $PH_SIZE_CHANGE \\$1 -. if '\\$0'QUOTE_SIZE' .ds $QUOTE_SIZE_CHANGE \\$1 -. if '\\$0'SUBHEAD_SIZE' .ds $SH_SIZE_CHANGE \\$1 -. if '\\$0'SUBTITLE_SIZE' .ds $SUBTITLE_SIZE_CHANGE \\$1 -. if '\\$0'TITLE_SIZE' .ds $TITLE_SIZE_CHANGE \\$1 -. if '\\$0'TOC_HEADER_SIZE' .ds $TOC_HEADER_SIZE_CHANGE \\$1 -. if '\\$0'TOC_HEAD_SIZE' .ds $TOC_HEAD_SIZE_CHANGE \\$1 -. if '\\$0'TOC_PARAHEAD_SIZE' .ds $TOC_PH_SIZE_CHANGE \\$1 -. if '\\$0'TOC_PN_SIZE' .ds $TOC_PN_SIZE_CHANGE \\$1 -. if '\\$0'TOC_SUBHEAD_SIZE' .ds $TOC_SH_SIZE_CHANGE \\$1 -. if '\\$0'TOC_TITLE_SIZE' .ds $TOC_TITLE_SIZE_CHANGE \\$1 -.END -\# -\# -.MAC _COLOR END -. if \\n[#PRINT_STYLE]=1 \{ .return \} -. if '\\$0'ATTRIBUTE_COLOR' \{\ -. nr #ATTRIBUTE_COLOR 1 -. ds $ATTRIBUTE_COLOR \\$1 -. \} -. if '\\$0'AUTHOR_COLOR' \{\ -. nr #AUTHOR_COLOR 1 -. ds $AUTHOR_COLOR \\$1 -. \} -. if '\\$0'BLOCKQUOTE_COLOR' \{\ -. nr #BQUOTE_COLOR 1 -. ds $BQUOTE_COLOR \\$1 -. \} -. if '\\$0'CITATION_COLOR' \{\ -. nr #BQUOTE_COLOR 1 -. ds $BQUOTE_COLOR \\$1 -. \} -. if '\\$0'CITE_COLOR' \{\ -. nr #BQUOTE_COLOR 1 -. ds $BQUOTE_COLOR \\$1 -. \} -. if '\\$0'CHAPTER_TITLE_COLOR' \{\ -. nr #CHAPTER_TITLE_COLOR 1 -. ds $CHAPTER_TITLE_COLOR \\$1 -. \} -. if '\\$0'COVER_ATTRIBUTE_COLOR' \{\ -. nr #COVER_ATTRIBUTE_COLOR 1 -. ds $COVER_ATTRIBUTE_COLOR \\$1 -. \} -. if '\\$0'COVER_AUTHOR_COLOR' \{\ -. nr #COVER_AUTHOR_COLOR 1 -. ds $COVER_AUTHOR_COLOR \\$1 -. \} -. if '\\$0'COVER_CHAPTER_TITLE_COLOR' \{\ -. nr #COVER_CHAPTER_TITLE_COLOR 1 -. ds $COVER_CHAPTER_TITLE_COLOR \\$1 -. \} -. if '\\$0'COVER_COLOR' \{\ -. nr #COVER_COLOR 1 -. ds $COVER_COLOR \\$1 -. \} -. if '\\$0'COVER_COPYRIGHT_COLOR' \{\ -. nr #COVER_COPYRIGHT_COLOR 1 -. ds $COVER_COPYRIGHT_COLOR \\$1 -. \} -. if '\\$0'COVER_MISC_COLOR' \{\ -. nr #COVER_MISC_COLOR 1 -. ds $COVER_MISC_COLOR \\$1 -. \} -. if '\\$0'COVER_TITLE_COLOR' \{\ -. nr #COVER_TITLE_COLOR 1 -. ds $COVER_TITLE_COLOR \\$1 -. \} -. if '\\$0'COVER_SUBTITLE_COLOR' \{\ -. nr #COVER_SUBTITLE_COLOR 1 -. ds $COVER_SUBTITLE_COLOR \\$1 -. \} -. if '\\$0'COVER_DOCTYPE_COLOR' \{\ -. nr #COVER_DOCTYPE_COLOR 1 -. ds $COVER_DOCTYPE_COLOR \\$1 -. \} -. if '\\$0'DOC_COVER_ATTRIBUTE_COLOR' \{\ -. nr #DOC_COVER_ATTRIBUTE_COLOR 1 -. ds $DOC_COVER_ATTRIBUTE_COLOR \\$1 -. \} -. if '\\$0'DOC_COVER_AUTHOR_COLOR' \{\ -. nr #DOC_COVER_AUTHOR_COLOR 1 -. ds $DOC_COVER_AUTHOR_COLOR \\$1 -. \} -. if '\\$0'DOC_COVER_CHAPTER_TITLE_COLOR' \{\ -. nr #DOC_COVER_CHAPTER_TITLE_COLOR 1 -. ds $DOC_COVER_CHAPTER_TITLE_COLOR \\$1 -. \} -. if '\\$0'DOC_COVER_COLOR' \{\ -. nr #DOC_COVER_COLOR 1 -. ds $DOC_COVER_COLOR \\$1 -. \} -. if '\\$0'DOC_COVER_COPYRIGHT_COLOR' \{\ -. nr #DOC_COVER_COPYRIGHT_COLOR 1 -. ds $DOC_COVER_COPYRIGHT_COLOR \\$1 -. \} -. if '\\$0'DOC_COVER_MISC_COLOR' \{\ -. nr #DOC_COVER_MISC_COLOR 1 -. ds $DOC_COVER_MISC_COLOR \\$1 -. \} -. if '\\$0'DOC_COVER_TITLE_COLOR' \{\ -. nr #DOC_COVER_TITLE_COLOR 1 -. ds $DOC_COVER_TITLE_COLOR \\$1 -. \} -. if '\\$0'DOC_COVER_SUBTITLE_COLOR' \{\ -. nr #DOC_COVER_SUBTITLE_COLOR 1 -. ds $DOC_COVER_SUBTITLE_COLOR \\$1 -. \} -. if '\\$0'DOC_COVER_DOCTYPE_COLOR' \{\ -. nr #DOC_COVER_DOCTYPE_COLOR 1 -. ds $DOC_COVER_DOCTYPE_COLOR \\$1 -. \} -. if '\\$0'DOCHEADER_COLOR' \{\ -. nr #DOCHEADER_COLOR 1 -. ds $DOCHEADER_COLOR \\$1 -. \} -. if '\\$0'DOCTYPE_COLOR' \{\ -. nr #DOCTYPE_COLOR 1 -. ds $DOCTYPE_COLOR \\$1 -. \} -. if '\\$0'EPIGRAPH_COLOR' \{\ -. nr #EPI_COLOR 1 -. ds $EPI_COLOR \\$1 -. \} -. if '\\$0'FINIS_COLOR' \{\ -. nr #FINIS_COLOR 1 -. ds $FINIS_COLOR \\$1 -. \} -. if '\\$0'FOOTNOTE_COLOR' \{\ -. nr #FOOTNOTE_COLOR 1 -. ds $FOOTNOTE_COLOR \\$1 -. \} -. if '\\$0'HDRFTR_CENTER_COLOR' \{\ -. nr #HDRFTR_CENTER_COLOR 1 -. ds $HDRFTR_CENTER_COLOR \\$1 -. \} -. if '\\$0'HDRFTR_COLOR' \{\ -. nr #HDRFTR_COLOR 1 -. ds $HDRFTR_COLOR \\$1 -. \} -. if '\\$0'HDRFTR_LEFT_COLOR' \{\ -. nr #HDRFTR_LEFT_COLOR 1 -. ds $HDRFTR_LEFT_COLOR \\$1 -. \} -. if '\\$0'HDRFTR_RIGHT_COLOR' \{\ -. nr #HDRFTR_RIGHT_COLOR 1 -. ds $HDRFTR_RIGHT_COLOR \\$1 -. \} -. if '\\$0'HDRFTR_RULE_COLOR' \{\ -. nr #HDRFTR_RULE_COLOR 1 -. ds $HDRFTR_RULE_COLOR \\$1 -. \} -. if '\\$0'HEAD_COLOR' \{\ -. nr #HEAD_COLOR 1 -. ds $HEAD_COLOR \\$1 -. \} -. if '\\$0'LINEBREAK_COLOR' \{\ -. nr #LINEBREAK_COLOR 1 -. ds $LINEBREAK_COLOR \\$1 -. \} -. if '\\$0'PAGENUM_COLOR' \{\ -. nr #PAGE_NUM_COLOR 1 -. ds $PAGENUM_COLOR \\$1 -. \} -. if '\\$0'PARAHEAD_COLOR' \{\ -. nr #PH_COLOR 1 -. ds $PH_COLOR \\$1 -. \} -. if '\\$0'QUOTE_COLOR' \{\ -. nr #QUOTE_COLOR 1 -. ds $QUOTE_COLOR \\$1 -. \} -. if '\\$0'SUBHEAD_COLOR' \{\ -. nr #SH_COLOR 1 -. ds $SH_COLOR \\$1 -. \} -. if '\\$0'SUBTITLE_COLOR' \{\ -. nr #SUBTITLE_COLOR 1 -. ds $SUBTITLE_COLOR \\$1 -. \} -. if '\\$0'TITLE_COLOR' \{\ -. nr #TITLE_COLOR 1 -. ds $TITLE_COLOR \\$1 -. \} -.END -\# -\# -.MAC _QUAD END -. if '\\$0'BIBLIOGRAPHY_QUAD' \{\ -. ds $BIB_QUAD \\$1 -. if '\\*[$BIB_QUAD]'R' .ab Fatal error: \\$0 must be set to either L or J -. if '\\*[$BIB_QUAD]'C' .ab Fatal error: \\$0 must be set to either L or J -. \} -. if '\\$0'BIBLIOGRAPHY_STRING_QUAD' .ds $BIB_STRING_QUAD \\$1 -. if '\\$0'BLOCKQUOTE_QUAD' .ds $BQUOTE_QUAD \\$1 -. if '\\$0'CITATION_QUAD' .ds $BQUOTE_QUAD \\$1 -. if '\\$0'CITE_QUAD' .ds $BQUOTE_QUAD \\$1 -. if '\\$0'COVER_COPYRIGHT_QUAD' .ds $COVER_COPYRIGHT_QUAD \\$1 -. if '\\$0'COVER_MISC_QUAD' .ds $COVER_MISC_QUAD \\$1 -. if '\\$0'DOC_COVER_COPYRIGHT_QUAD' .ds $DOC_COVER_COPYRIGHT_QUAD \\$1 -. if '\\$0'DOC_COVER_MISC_QUAD' .ds $DOC_COVER_MISC_QUAD \\$1 -. if '\\$0'DOC_QUAD' \{\ -. ds $DOC_QUAD \\$1 -. QUAD \\*[$DOC_QUAD] -. \} -. if '\\$0'ENDNOTE_QUAD' \{\ -. ds $EN_QUAD \\$1 -. if '\\*[$EN_QUAD]'R' .ab Fatal error: \\$0 must be set to either L or J -. if '\\*[$EN_QUAD]'C' .ab Fatal error: \\$0 must be set to either L or J -. \} -. if '\\$0'ENDNOTE_STRING_QUAD' .ds $EN_STRING_QUAD \\$1 -. if '\\$0'ENDNOTE_TITLE_QUAD' .ds $EN_TITLE_QUAD \\$1 -. if '\\$0'EPIGRAPH_QUAD' .ds $EPI_QUAD \\$1 -. if '\\$0'FOOTNOTE_QUAD' .ds $FN_QUAD \\$1 -. if '\\$0'HEAD_QUAD' .ds $HEAD_QUAD \\$1 -. if '\\$0'SUBHEAD_QUAD' .ds $SH_QUAD \\$1 -. if '\\$0'TOC_HEADER_QUAD' .ds $TOC_HEADER_QUAD \\$1 -.END -\# -\# -\# DEFAULTS -\# -------- -\# *Arguments: -\# -\# *Function: -\# Sets up defaults if no values are entered prior to START. -\# *Notes: -\# The defaults for $CHAPTER_STRING, $DRAFT_STRING, and -\# $REVISION_STRING are in the COPYSTYLE macro. -\# -.MAC DEFAULTS END -. if !d$PAPER \{ .PAPER LETTER \} -. if !\\n[#DOC_TYPE] \{ .DOCTYPE DEFAULT \} -. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \} -. el \{\ -. if !\\n[#COPY_STYLE]=1 \{ .PAGENUM_STYLE DIGIT \} -. \} -. if !\\n[#COPY_STYLE] \{ .COPYSTYLE FINAL \} -. if \\n[#DRAFT_WITH_PAGENUM] \{ .COPYSTYLE \\*[$COPY_STYLE] \} -. if \\n[#DOC_TYPE]=4 \{\ -. if !\\n[#USER_SET_L_LENGTH] \{\ -. R_MARGIN \\n[#R_MARGIN]u -. rr #USER_SET_L_LENGTH -. \} -. if \\n[#PRINT_STYLE]=1 \{ .PRINTSTYLE TYPEWRITE SINGLESPACE \} -. \} -. if \\n[#COPY_STYLE]=1 \{\ -. COPYSTYLE DRAFT -. PAGENUMBER 1 -. \} -. if !r#DOC_HEADER \{ .DOCHEADER \} -. if !r#HEADERS_ON \{ .HEADERS \} -. if !r#PAGINATE \{ .PAGINATE \} -. if \\n[#FOOTERS_ON] \{\ -. HEADERS OFF -. if \\n[#PAGE_NUM_POS_SET]=0 \{ .PAGENUM_POS TOP CENTER \} -. \} -. if !r#HEADER_MARGIN \{ .HEADER_MARGIN 4P+6p \} -. if !r#HEADER_GAP \{ .HEADER_GAP 3P \} -. if \\n[#FOOTERS_ON] \{\ -. if \\n[#PAGINATE]=0 \{\ -. if !r#T_MARGIN \{ .T_MARGIN 6P \} -. \} -. \} -. if \\n[#HEADERS_ON]=0 \{\ -. if \\n[#FOOTERS_ON]=0 \{\ -. if !r#T_MARGIN \{ .T_MARGIN 6P \} -. \} -. \} -. if !r#T_MARGIN \{ .T_MARGIN \\n[#HEADER_MARGIN]+\\n[#HEADER_GAP] \} -. if !r#DOCHEADER_ADVANCE \{ .nr #DOCHEADER_ADVANCE \\n[#T_MARGIN] \} -. if !r#FOOTER_MARGIN \{ .FOOTER_MARGIN 3P \} -. if !r#FOOTER_GAP \{ .FOOTER_GAP 3P \} -. if !r#B_MARGIN \{ .B_MARGIN \\n[#FOOTER_MARGIN]u+\\n[#FOOTER_GAP]u \} -. if (\\n[#FOOTER_MARGIN]+\\n(.v)>\\n[#B_MARGIN] \{\ -. tm1 "[mom]: Your chosen bottom margin for running text is too close to the footer margin. -. tm1 " No footers or bottom-of-page page numbers will be printed. -. tm1 " Please reset B_MARGIN or FOOTER_MARGIN to allow enough space. -. tm1 " If no footers or bottom-of-page page numbers are required, -. tm1 " type in .FOOTER_MARGIN 0 before .START -. \} -. if !r#HDRFTR_RULE_GAP \{\ -. if \\n[#HEADERS_ON] \{ .HDRFTR_RULE_GAP 4p \} -. if \\n[#FOOTERS_ON] \{ .HDRFTR_RULE_GAP 4p \} -. \} -. if !r#HDRFTR_RULE \{ .HDRFTR_RULE \} -. if !r#PAGE_NUM_SET \{ .PAGENUMBER 1 \} -.\" Read in number registers and strings for type parameters -. nr #DOC_L_MARGIN \\n[#L_MARGIN] -. nr #DOC_L_LENGTH \\n[#L_LENGTH] -. nr #DOC_R_MARGIN \\n[#PAGE_WIDTH]-(\\n[#DOC_L_MARGIN]+\\n[#L_LENGTH]) -. ds $DOC_FAM \\*[$FAMILY] -. nr #DOC_PT_SIZE \\n[#PT_SIZE] -. nr #DOC_LEAD \\n[#LEAD] -.\" #SAVED_DOC_LEAD is set in COLLATE -. if r#SAVED_DOC_LEAD \{\ -. if !\\n[#DOC_LEAD]=\\n[#SAVED_DOC_LEAD] \{ .nr #RERUN_TRAPS 1 \} -. \} -. ie \\n[#ADJ_DOC_LEAD]=1 \{ . \} -. el \{\ -. if !\\n[#DOC_LEAD_ADJUST_OFF] \{\ -. DOC_LEAD_ADJUST -. \} -. \} -. ds $DOC_QUAD \\*[$QUAD_VALUE] -. ds $PP_FT \\*[$FONT] -.\" Counters -. nr #PP 0 -. nr #FN_NUMBER 0 1 -. nr #EN_NUMBER 0 1 -. nr #FN_COUNT_FOR_COLS 0 1 -. nr #DONE_ONCE 0 1 -. RESET_HEAD_NUMBER -. RESET_SUBHEAD_NUMBER -. RESET_PARAHEAD_NUMBER -.\" General style defaults for both PRINTSTYLEs -. nr #PP_STYLE 1 -. PARA_INDENT \\n[#PP_INDENT]u -. if !d$HDRFTR_FAM \{ .HDRFTR_FAMILY \\*[$DOC_FAM] \} -. if !d$HDRFTR_SIZE_CHANGE \{ .HDRFTR_SIZE +0 \} -. if !d$PAGE_NUM_FAM \{ .PAGENUM_FAMILY \\*[$DOC_FAM] \} -. if !d$PAGE_NUM_FT \{ .PAGENUM_FONT R \} -. if !d$PAGE_NUM_SIZE_CHANGE \{ .PAGENUM_SIZE +0 \} -. if !r#PAGE_NUM_POS_SET \{ .PAGENUM_POS BOTTOM CENTER \} -. ie \\n[#PAGE_NUM_HYPHENS_SET] \{\ -. if \\n[#PAGE_NUM_HYPHENS]=0 \{ .PAGENUM_HYPHENS OFF \} -. if \\n[#PAGE_NUM_HYPHENS]=1 \{ .PAGENUM_HYPHENS \} -. \} -. el \{ .PAGENUM_HYPHENS \} -. if !d$HEAD_QUAD \{ .HEAD_QUAD CENTER \} -. if !r#HEAD_CAPS \{ .HEAD_CAPS \} -. if !r#HEAD_UNDERLINE \{ .HEAD_UNDERLINE \} -. if !d$SH_QUAD \{ .SUBHEAD_QUAD LEFT \} -. if !r#HDRFTR_RIGHT_CAPS \{ .HDRFTR_RIGHT_CAPS \} -. if \\n[#HDRFTR_RIGHT_CAPS]=0 \{\ -. if !d$HDRFTR_RIGHT_SIZE_CHANGE \{ .HDRFTR_RIGHT_SIZE +0 \} -. \} -. if !d$FN_FAM \{ .FOOTNOTE_FAMILY \\*[$DOC_FAM] \} -. if !d$FN_FT \{ .FOOTNOTE_FONT R \} -. if !d$FN_QUAD \{ .FOOTNOTE_QUAD \\*[$DOC_QUAD] \} -. if !r#FN_RULE \{ .FOOTNOTE_RULE \} -. if !r#FN_MARKERS \{ .FOOTNOTE_MARKERS \} -. if !\\n[#FN_MARKER_STYLE] \{ .FOOTNOTE_MARKER_STYLE STAR \} -. if !\\n[#EN_MARKER_STYLE] \{ .ENDNOTE_MARKER_STYLE NUMBER \} -. if !d$EN_PN_STYLE \{ .ENDNOTES_PAGENUM_STYLE digit \} -. if !d$EN_FAM \{ .ENDNOTE_FAMILY \\*[$DOC_FAM] \} -. if !d$EN_FT \{ .ENDNOTE_FONT R \} -. if !d$EN_QUAD \{ .ENDNOTE_QUAD \\*[$DOC_QUAD] \} -. if !d$EN_STRING \{ .ENDNOTE_STRING "Endnotes" \} -. if !d$EN_STRING_FAM \{ .ENDNOTE_STRING_FAMILY \\*[$EN_FAM] \} -. if !d$EN_STRING_QUAD \{ .ENDNOTE_STRING_QUAD CENTER \} -. if !r#EN_STRING_UNDERSCORE \{ .ENDNOTE_STRING_UNDERSCORE 2 \} -. if !r#EN_STRING_CAPS \{ .ENDNOTE_STRING_CAPS \} -. if !d$EN_TITLE \{\ -. ie \\n[#DOC_TYPE]=2 \{\ -. ie '\\*[$CHAPTER]'' \{ .ENDNOTE_TITLE "\\*[$CHAPTER_STRING]" \} -. el \{ .ENDNOTE_TITLE "\\*[$CHAPTER_STRING] \\*[$CHAPTER]" \} -. \} -. el \{ .ENDNOTE_TITLE "\\*[$TITLE]" \} -. \} -. if !d$EN_TITLE_FAM \{ .ENDNOTE_TITLE_FAMILY \\*[$EN_FAM] \} -. if !d$EN_TITLE_QUAD \{ .ENDNOTE_TITLE_QUAD LEFT \} -. if !r#EN_TITLE_UNDERSCORE \{ .ENDNOTE_TITLE_UNDERSCORE \} -. if !d$EN_NUMBER_FAM \{ .ENDNOTE_NUMBER_FAMILY \\*[$EN_FAM] \} -. if !r#EN_NUMBERS_ALIGN_LEFT \{\ -. if !r#EN_NUMBERS_ALIGN_RIGHT \{ .ENDNOTE_NUMBERS_ALIGN_RIGHT 2 \} -. \} -. if !d$EN_LN_GAP \{ .ENDNOTE_LINENUMBER_GAP 1.5n \} -. if !d$BIB_PN_STYLE \{ .BIBLIOGRAPHY_PAGENUM_STYLE digit \} -. if !d$BIB_FAM \{ .BIBLIOGRAPHY_FAMILY \\*[$DOC_FAM] \} -. if !d$BIB_FT \{ .BIBLIOGRAPHY_FONT R \} -. if !d$BIB_QUAD \{ .BIBLIOGRAPHY_QUAD \\*[$DOC_QUAD] \} -. if !d$BIB_STRING \{ .BIBLIOGRAPHY_STRING "Bibliography" \} -. if !d$BIB_STRING_FAM \{ .BIBLIOGRAPHY_STRING_FAMILY \\*[$BIB_FAM] \} -. if !d$BIB_STRING_QUAD \{ .BIBLIOGRAPHY_STRING_QUAD CENTER \} -. if !r#BIB_STRING_UNDERSCORE \{ .BIBLIOGRAPHY_STRING_UNDERSCORE 2 \} -. if !r#BIB_STRING_CAPS \{ .BIBLIOGRAPHY_STRING_CAPS \} -. if !d$TOC_HEADER_STRING \{ .TOC_HEADER_STRING "Contents" \} -. if !d$TOC_HEADER_QUAD \{ .TOC_HEADER_QUAD LEFT \} -. if !d$TOC_PN_STYLE \{ .TOC_PAGENUM_STYLE roman \} -. if !r#TOC_PN_PADDING \{ .TOC_PADDING 3 \} -. if !r#TOC_TITLE_INDENT \{ .TOC_TITLE_INDENT 0 \} -. if !r#TOC_HEAD_INDENT \{ .TOC_HEAD_INDENT 18p \} -. if !r#TOC_SH_INDENT \{ .TOC_SUBHEAD_INDENT 30p \} -. if !r#TOC_PH_INDENT \{ .TOC_PARAHEAD_INDENT 42p \} -.\" String defaults for both PRINTSTYLEs -. ie \\n[#DOC_TYPE]=1 \{\ -. ie '\\*[$DOC_TITLE]'' \{\ -. if \\n[#USER_DEF_HDRFTR_LEFT]=0 .ds $HDRFTR_LEFT \\*[$AUTHOR_1] -. rr #USER_DEF_HDRFTR_LEFT -. if \\n[#USER_DEF_HDRFTR_RIGHT]=0 .ds $HDRFTR_RIGHT \\*[$TITLE] -. rr #USER_DEF_HDRFTR_RIGHT -. \} -. el \{\ -. if \\n[#COPY_STYLE]=1 \{ .DRAFT_WITH_PAGENUMBER \} -. if \\n[#USER_DEF_HDRFTR_LEFT]=0 .ds $HDRFTR_LEFT \\*[$AUTHOR_1] -. rr #USER_DEF_HDRFTR_LEFT -. if \\n[#USER_DEF_HDRFTR_CENTER]=0 .ds $HDRFTR_CENTER \\*[$TITLE] -. rr #USER_DEF_HDRFTR_CENTER -. if \\n[#USER_DEF_HDRFTR_RIGHT]=0 .ds $HDRFTR_RIGHT \\*[$DOC_TITLE] -. rr #USER_DEF_HDRFTR_RIGHT -. \} -. \} -. el \{\ -. if \\n[#USER_DEF_HDRFTR_LEFT]=0 .ds $HDRFTR_LEFT \\*[$AUTHOR_1] -. rr #USER_DEF_HDRFTR_LEFT -. if \\n[#USER_DEF_HDRFTR_RIGHT]=0 .ds $HDRFTR_RIGHT \\*[$TITLE] -. rr #USER_DEF_HDRFTR_RIGHT -. \} -. if !d$ATTRIBUTE_STRING \{ .ATTRIBUTE_STRING "by" \} -. if !d$FINIS_STRING \{ .FINIS_STRING "END" \} -.\" Covers -. if !r#DOC_COVERS_OFF \{ .nr #DOC_COVERS 1 \} -. if !r#COVERS_OFF \{ .nr #COVERS 1 \} -. if !d$COVER_COPYRIGHT_QUAD \{ .COVER_COPYRIGHT_QUAD R \} -. if !d$COVER_MISC_QUAD \{ .COVER_MISC_QUAD L \} -. if !d$DOC_COVER_COPYRIGHT_QUAD \{ .DOC_COVER_COPYRIGHT_QUAD R \} -. if !d$DOC_COVER_MISC_QUAD \{ .DOC_COVER_MISC_QUAD L \} -.\" Defaults for printstyle TYPEWRITE -. if \\n[#PRINT_STYLE]=1 \{\ -. if \\n[#UNDERLINE_QUOTES]=1 \{ .UNDERLINE_QUOTES \} -. if \\n[#UNDERLINE_QUOTES]=0 \{ .UNDERLINE_QUOTES OFF \} -.\" +Quotes and blockquotes -. if !r#Q_OFFSET_VALUE \{ .QUOTE_INDENT 2 \} -.\" +Epigraphs -. if !r#EPI_OFFSET_VALUE \{ .EPIGRAPH_INDENT 2 \} -.\" +Linebreaks -. if !d$LINEBREAK_CHAR \{ .LINEBREAK_CHAR * 3 2p \} -.\" +Footnotes -. if !d$FN_SIZE_CHANGE \{ .FOOTNOTE_SIZE +0 \} -. if !r#FN_RULE_LENGTH \{ .FOOTNOTE_RULE_LENGTH 2i \} -.\" +Paragraph heads -. if !r#PH_INDENT \{ .PARAHEAD_INDENT \\n[#PP_INDENT]u/2u \} -.\" +Endnotes -. if !r#EN_PP_INDENT \{ .ENDNOTE_PARA_INDENT \\n[#PP_INDENT] \} -.\" +Footnotes -. if !r#FN_RULE_ADJ \{ .FOOTNOTE_RULE_ADJ 6p \} -.\" +Slant stuff -. if !r#SLANT_MEANS_SLANT \{\ -. ie \\n[#UNDERLINE_SLANT]=1 \{ .UNDERLINE_SLANT \} -. el \{ .UNDERLINE_SLANT OFF \} -. \} -. \} -.\" Defaults for printstyle TYPESET -. if \\n[#PRINT_STYLE]=2 \{\ -. if !d$DOCHEADER_LEAD_ADJ \{\ -. ie !'\\*[$CHAPTER_TITLE]'' \{\ -. ie !'\\*[$CHAPTER_STRING]'' \{\ -. DOCHEADER_LEAD +4 -. \} -. el \{ .DOCHEADER_LEAD +0 \} -. \} -. el \{ .DOCHEADER_LEAD +0 \} -. \} -.\" +Cover -. if !d$COVER_LEAD_ADJ \{ .COVER_LEAD +0 \} -. if !d$COVER_FAM \{ .COVER_FAMILY \\*[$DOC_FAM] \} -.\" (title) -. if !d$COVER_TITLE_FAM \{\ -. ie !d$COVER_FAM \{ .COVER_TITLE_FAMILY \\*[$DOC_FAM] \} -. el \{ .COVER_TITLE_FAMILY \\*[$COVER_FAM] \} -. \} -. if !d$COVER_TITLE_FT \{ .COVER_TITLE_FONT B \} -. if !d$COVER_TITLE_SIZE_CHANGE \{ .COVER_TITLE_SIZE +3.5 \} -.\" (chapter title) -. if !d$COVER_CHAPTER_TITLE_FAM \{\ -. ie !d$COVER_FAM \{ .COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_FAM] \} -. el \{ .COVER_CHAPTER_TITLE_FAMILY \\*[$COVER_FAM] \} -. \} -. if !d$COVER_CHAPTER_TITLE_FT \{ .COVER_CHAPTER_TITLE_FONT BI \} -. if !d$COVER_CHAPTER_TITLE_SIZE_CHANGE \{ .COVER_CHAPTER_TITLE_SIZE +4 \} -.\" (subtitle) -. if !d$COVER_SUBTITLE_FAM \{\ -. ie !d$COVER_FAM \{ .COVER_SUBTITLE_FAMILY \\*[$DOC_FAM] \} -. el \{ .COVER_SUBTITLE_FAMILY \\*[$COVER_FAM] \} -. \} -. if !d$COVER_SUBTITLE_FT \{ .COVER_SUBTITLE_FONT R \} -. if !d$COVER_SUBTITLE_SIZE_CHANGE \{ .COVER_SUBTITLE_SIZE +0 \} -.\" (attribution and author[s]) -. if !d$COVER_AUTHOR_FAM \{\ -. ie !d$COVER_FAM \{ .COVER_AUTHOR_FAMILY \\*[$DOC_FAM] \} -. el \{ .COVER_AUTHOR_FAMILY \\*[$COVER_FAM] \} -. \} -. if !d$COVER_AUTHOR_FT \{ .COVER_AUTHOR_FONT I \} -. if !d$COVER_AUTHOR_SIZE_CHANGE \{ .COVER_AUTHOR_SIZE +0 \} -.\" (doctype if "named") -. if !d$COVER_DOCTYPE_FAM \{\ -. ie !d$COVER_FAM \{ .COVER_DOCTYPE_FAMILY \\*[$DOC_FAM] \} -. el \{ .COVER_DOCTYPE_FAMILY \\*[$COVER_FAM] \} -. \} -. if !d$COVER_DOCTYPE_FT \{ .COVER_DOCTYPE_FONT BI \} -. if !d$COVER_DOCTYPE_SIZE_CHANGE \{ .COVER_DOCTYPE_SIZE +3 \} -.\" (copyright) -. if !d$COVER_COPYRIGHT_FAM \{\ -. ie !d$COVER_FAM \{ .COVER_COPYRIGHT_FAMILY \\*[$DOC_FAM] \} -. el \{ .COVER_COPYRIGHT_FAMILY \\*[$COVER_FAM] \} -. \} -. if !d$COVER_COPYRIGHT_FT \{ .COVER_COPYRIGHT_FONT R \} -. if !d$COVER_COPYRIGHT_SIZE_CHANGE \{ .COVER_COPYRIGHT_SIZE -2 \} -.\" +Doc cover -. if !d$DOC_COVER_LEAD_ADJ \{ .DOC_COVER_LEAD +0 \} -. if !d$DOC_COVER_FAM \{ .DOC_COVER_FAMILY \\*[$DOC_FAM] \} -.\" (title) -. if !d$DOC_COVER_TITLE_FAM \{\ -. ie !d$DOC_COVER_FAM \{ .DOC_COVER_TITLE_FAMILY \\*[$DOC_FAM] \} -. el \{ .DOC_COVER_TITLE_FAMILY \\*[$DOC_COVER_FAM] \} -. \} -. if !d$DOC_COVER_TITLE_FT \{ .DOC_COVER_TITLE_FONT B \} -. if !d$DOC_COVER_TITLE_SIZE_CHANGE \{ .DOC_COVER_TITLE_SIZE +3.5 \} -.\" (chapter title) -. if !d$DOC_COVER_CHAPTER_TITLE_FAM \{\ -. ie !d$DOC_COVER_FAM \{ .DOC_COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_FAM] \} -. el \{ .DOC_COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_COVER_FAM] \} -. \} -. if !d$DOC_COVER_CHAPTER_TITLE_FT \{ .DOC_COVER_CHAPTER_TITLE_FONT BI \} -. if !d$DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE \{ .DOC_COVER_CHAPTER_TITLE_SIZE +4 \} -.\" (subtitle) -. if !d$DOC_COVER_SUBTITLE_FAM \{\ -. ie !d$DOC_COVER_FAM \{ .DOC_COVER_SUBTITLE_FAMILY \\*[$DOC_FAM] \} -. el \{ .DOC_COVER_SUBTITLE_FAMILY \\*[$DOC_COVER_FAM] \} -. \} -. if !d$DOC_COVER_SUBTITLE_FT \{ .DOC_COVER_SUBTITLE_FONT R \} -. if !d$DOC_COVER_SUBTITLE_SIZE_CHANGE \{ .DOC_COVER_SUBTITLE_SIZE +0 \} -.\" (attribution and author[s]) -. if !d$DOC_COVER_AUTHOR_FAM \{\ -. ie !d$DOC_COVER_FAM \{ .DOC_COVER_AUTHOR_FAMILY \\*[$DOC_FAM] \} -. el \{ .DOC_COVER_AUTHOR_FAMILY \\*[$DOC_COVER_FAM] \} -. \} -. if !d$DOC_COVER_AUTHOR_FT \{ .DOC_COVER_AUTHOR_FONT I \} -. if !d$DOC_COVER_AUTHOR_SIZE_CHANGE \{ .DOC_COVER_AUTHOR_SIZE +0 \} -.\" (doctype if "named") -. if !d$DOC_COVER_DOCTYPE_FAM \{\ -. ie !d$DOC_COVER_FAM \{ .DOC_COVER_DOCTYPE_FAMILY \\*[$DOC_FAM] \} -. el \{ .DOC_COVER_DOCTYPE_FAMILY \\*[$DOC_COVER_FAM] \} -. \} -. if !d$DOC_COVER_DOCTYPE_FT \{ .DOC_COVER_DOCTYPE_FONT BI \} -. if !d$DOC_COVER_DOCTYPE_SIZE_CHANGE \{ .DOC_COVER_DOCTYPE_SIZE +3 \} -.\" (copyright) -. if !d$DOC_COVER_COPYRIGHT_FAM \{\ -. ie !d$DOC_COVER_FAM \{ .DOC_COVER_COPYRIGHT_FAMILY \\*[$DOC_FAM] \} -. el \{ .DOC_COVER_COPYRIGHT_FAMILY \\*[$DOC_COVER_FAM] \} -. \} -. if !d$DOC_COVER_COPYRIGHT_FT \{ .DOC_COVER_COPYRIGHT_FONT R \} -. if !d$DOC_COVER_COPYRIGHT_SIZE_CHANGE \{ .DOC_COVER_COPYRIGHT_SIZE -2 \} -.\" +Docheader -. if !d$DOCHEADER_FAM \{ .DOCHEADER_FAMILY \\*[$DOC_FAM] \} -. if !d$TITLE_FAM \{\ -. ie !d$DOCHEADER_FAM \{ .TITLE_FAMILY \\*[$DOC_FAM] \} -. el \{ .TITLE_FAMILY \\*[$DOCHEADER_FAM] \} -. \} -. if !d$TITLE_FT \{ .TITLE_FONT B \} -. if !d$TITLE_SIZE_CHANGE \{\ -. ie \\n[#DOC_TYPE]=2 \{ .TITLE_SIZE +4 \} -. el \{ .TITLE_SIZE +3.5 \} -. \} -. if !d$CHAPTER_TITLE_FAM \{\ -. ie !d$DOCHEADER_FAM \{ .CHAPTER_TITLE_FAMILY \\*[$DOC_FAM] \} -. el \{ .CHAPTER_TITLE_FAMILY \\*[$DOCHEADER_FAM] \} -. \} -. if !d$CHAPTER_TITLE_FT \{ .CHAPTER_TITLE_FONT BI \} -. if !d$CHAPTER_TITLE_SIZE_CHANGE \{ .CHAPTER_TITLE_SIZE +4 \} -. if !d$SUBTITLE_FAM \{\ -. ie !d$DOCHEADER_FAM \{ .SUBTITLE_FAMILY \\*[$DOC_FAM] \} -. el \{ .SUBTITLE_FAMILY \\*[$DOCHEADER_FAM] \} -. \} -. if !d$SUBTITLE_FT \{ .SUBTITLE_FONT R \} -. if !d$SUBTITLE_SIZE_CHANGE \{ .SUBTITLE_SIZE +0 \} -. if !d$AUTHOR_FAM \{\ -. ie !d$DOCHEADER_FAM \{ .AUTHOR_FAMILY \\*[$DOC_FAM] \} -. el \{ .AUTHOR_FAMILY \\*[$DOCHEADER_FAM] \} -. \} -. if !d$AUTHOR_FT \{ .AUTHOR_FONT I \} -. if !d$AUTHOR_SIZE_CHANGE \{ .AUTHOR_SIZE +0 \} -. if !d$DOCTYPE_FAM \{\ -. ie !d$DOCHEADER_FAM \{ .DOCTYPE_FAMILY \\*[$DOC_FAM] \} -. el \{ .DOCTYPE_FAMILY \\*[$DOCHEADER_FAM] \} -. \} -. if !d$DOCTYPE_FT \{ .DOCTYPE_FONT BI \} -. if !d$DOCTYPE_SIZE_CHANGE \{ .DOCTYPE_SIZE +3 \} -.\" +Headers and footers -. if !d$HDRFTR_LEFT_FAM \{ .HDRFTR_LEFT_FAMILY \\*[$DOC_FAM] \} -. if !d$HDRFTR_LEFT_FT \{ .HDRFTR_LEFT_FONT R \} -. if \\n[#HDRFTR_LEFT_CAPS] \{\ -. if !d$HDRFTR_LEFT_SIZE_CHANGE \{ .HDRFTR_LEFT_SIZE -2 \} -. \} -. if !d$HDRFTR_LEFT_SIZE_CHANGE \{ .HDRFTR_LEFT_SIZE -.5 \} -. if !d$HDRFTR_CENTER_FAM \{ .HDRFTR_CENTER_FAMILY \\*[$DOC_FAM] \} -. if !d$HDRFTR_CENTER_FT \{ .HDRFTR_CENTER_FONT I \} -. if \\n[#HDRFTR_CENTER_CAPS] \{\ -. if !d$HDRFTR_CENTER_SIZE_CHANGE \{ .HDRFTR_CENTER_SIZE -2 \} -. \} -. if !d$HDRFTR_CENTER_SIZE_CHANGE \{ .HDRFTR_CENTER_SIZE -.5 \} -. if !d$HDRFTR_RIGHT_FAM \{ .HDRFTR_RIGHT_FAMILY \\*[$DOC_FAM] \} -. if !d$HDRFTR_RIGHT_FT \{ .HDRFTR_RIGHT_FONT R \} -. if \\n[#HDRFTR_RIGHT_CAPS] \{\ -. if !d$HDRFTR_RIGHT_SIZE_CHANGE \{ .HDRFTR_RIGHT_SIZE -2 \} -. \} -. if !d$HDRFTR_RIGHT_SIZE_CHANGE \{ .HDRFTR_RIGHT_SIZE -.5 \} -.\" +Heads -. if !d$HEAD_FAM \{ .HEAD_FAMILY \\*[$DOC_FAM] \} -. if !d$HEAD_FT \{ .HEAD_FONT B \} -. if !d$HEAD_SIZE_CHANGE \{ .HEAD_SIZE +1 \} -. if !r#HEAD_SPACE \{ .HEAD_SPACE \} -.\" +Subheads -. if !d$SH_FAM \{ .SUBHEAD_FAMILY \\*[$DOC_FAM] \} -. if !d$SH_FT \{ .SUBHEAD_FONT B \} -. if !d$SH_SIZE_CHANGE \{ .SUBHEAD_SIZE +.5 \} -.\" +Paragraph heads -. if !d$PH_FAM \{ .PARAHEAD_FAMILY \\*[$DOC_FAM] \} -. if !d$PH_FT \{ .PARAHEAD_FONT BI \} -. if !d$PH_SIZE_CHANGE \{ .PARAHEAD_SIZE -.25 \} -. if !r#PH_INDENT \{ .PARAHEAD_INDENT \\n[#PP_INDENT]u/2u \} -.\" +Quotes -. if !d$QUOTE_FAM \{ .QUOTE_FAMILY \\*[$DOC_FAM] \} -. if !d$QUOTE_FT \{ .QUOTE_FONT I \} -. if !d$QUOTE_SIZE_CHANGE \{ .QUOTE_SIZE +0 \} -. if !r#Q_OFFSET_VALUE \{ .QUOTE_INDENT 3 \} -.\" +Blockquotes -.\" Note: the leading for quotes and blockquotes is set after .DEFAULTS in START -. if !d$BQUOTE_FAM \{ .BLOCKQUOTE_FAMILY \\*[$DOC_FAM] \} -. if !d$BQUOTE_FT \{ .BLOCKQUOTE_FONT R \} -. if !d$BQUOTE_SIZE_CHANGE \{ .BLOCKQUOTE_SIZE -1 \} -. if !d$BQUOTE_QUAD \{ .BLOCKQUOTE_QUAD LEFT \} -.\" +Epigraphs -. if !d$EPI_FAM \{ .EPIGRAPH_FAMILY \\*[$DOC_FAM] \} -. if !d$EPI_FT \{ .EPIGRAPH_FONT R \} -. if !d$EPI_SIZE_CHANGE \{ .EPIGRAPH_SIZE -1.5 \} -. if !r#EPI_AUTOLEAD \{ .EPIGRAPH_AUTOLEAD 2 \} -. if !d$EPI_QUAD \{ .EPIGRAPH_QUAD \\*[$DOC_QUAD] \} -. if !r#EPI_OFFSET_VALUE \{ .EPIGRAPH_INDENT 3 \} -.\" +Linebreaks -. if !d$LINEBREAK_CHAR \{ .LINEBREAK_CHAR * 3 3p \} -.\" +Footnotes -. if !r#FN_RULE_LENGTH \{ .FOOTNOTE_RULE_LENGTH 4P \} -. if !r#FN_RULE_ADJ \{ .FOOTNOTE_RULE_ADJ 3p \} -. if !d$FN_SIZE_CHANGE \{ .FOOTNOTE_SIZE -2 \} -. if !r#FN_AUTOLEAD \{ .FOOTNOTE_AUTOLEAD 2 \} -.\" +Endnotes -. if !r#EN_PS \{ .ENDNOTE_PT_SIZE \\n[#DOC_PT_SIZE]u \} -. if !d$EN_STRING_FT \{ .ENDNOTE_STRING_FONT B \} -. if !d$EN_STRING_SIZE_CHANGE \{ .ENDNOTE_STRING_SIZE +1 \} -. if !d$EN_TITLE_FT \{ .ENDNOTE_TITLE_FONT B \} -. if !d$EN_TITLE_SIZE_CHANGE \{ .ENDNOTE_TITLE_SIZE +0 \} -. if !d$EN_NUMBER_FT \{ .ENDNOTE_NUMBER_FONT B \} -. if !d$EN_NUMBER_SIZE_CHANGE \{ .ENDNOTE_NUMBER_SIZE +0 \} -. if !r#EN_PP_INDENT \{ .ENDNOTE_PARA_INDENT 1.5m \} -.\" +Bibliography -. if !r#BIB_LIST \{ .BIBLIOGRAPHY_TYPE LIST . \} -. if !r#BIB_PS \{ .BIBLIOGRAPHY_PT_SIZE \\n[#DOC_PT_SIZE]u \} -. if !d$BIB_STRING_FT \{ .BIBLIOGRAPHY_STRING_FONT B \} -. if !d$BIB_STRING_SIZE_CHANGE \{ .BIBLIOGRAPHY_STRING_SIZE +1 \} -.\" +Table of contents -. if !d$TOC_FAM \{ .TOC_FAMILY \\*[$DOC_FAM] \} -. if !r#TOC_PS \{ .TOC_PT_SIZE \\n[#DOC_PT_SIZE]u \} -. if !r#TOC_LEAD \{ .TOC_LEAD \\n[#DOC_LEAD]u ADJUST \} -. if !d$TOC_HEADER_FAM \{ .TOC_HEADER_FAMILY \\*[$TOC_FAM] \} -. if !d$TOC_HEADER_SIZE_CHANGE \{ .TOC_HEADER_SIZE +4 \} -. if !d$TOC_HEADER_FT \{ .TOC_HEADER_FONT B \} -. if !d$TOC_TITLE_FAM \{ .TOC_TITLE_FAMILY \\*[$TOC_FAM] \} -. if !d$TOC_PN_FAM \{ .TOC_PN_FAMILY \\*[$TOC_FAM] \} -. if !d$TOC_HEAD_FAM \{ .TOC_HEAD_FAMILY \\*[$TOC_FAM] \} -. if !d$TOC_SH_FAM \{ .TOC_SUBHEAD_FAMILY \\*[$TOC_FAM] \} -. if !d$TOC_PH_FAM \{ .TOC_PARAHEAD_FAMILY \\*[$TOC_FAM] \} -. if !d$TOC_TITLE_FT \{ .TOC_TITLE_FONT BI \} -. if !d$TOC_PN_FT \{ .TOC_PN_FONT R \} -. if !d$TOC_HEAD_FT \{ .TOC_HEAD_FONT B \} -. if !d$TOC_SH_FT \{ .TOC_SUBHEAD_FONT R \} -. if !d$TOC_PH_FT \{ .TOC_PARAHEAD_FONT I \} -. if !d$TOC_TITLE_SIZE_CHANGE \{ .TOC_TITLE_SIZE +.5 \} -. if !d$TOC_PN_SIZE_CHANGE \{ .TOC_PN_SIZE +0 \} -. if !d$TOC_HEAD_SIZE_CHANGE \{ .TOC_HEAD_SIZE +.5 \} -. if !d$TOC_SH_SIZE_CHANGE \{ .TOC_SUBHEAD_SIZE +0 \} -. if !d$TOC_PH_SIZE_CHANGE \{ .TOC_PARAHEAD_SIZE +0 \} -. \} -.\" +Refer support -. if !r#ENDNOTE_REFS \{ .nr #FN_REFS 1 \} -. if '\\*[$REF_FN_INDENT]'' \{\ -. if \\n[#PRINT_STYLE]=1 \{ .INDENT_REFS FOOTNOTE 2m \} -. if \\n[#PRINT_STYLE]=2 \{ .INDENT_REFS FOOTNOTE 1.5m \} -. \} -. if '\\*[$REF_EN_INDENT]'' \{\ -. if \\n[#PRINT_STYLE]=1 \{ .INDENT_REFS ENDNOTE 2m \} -. if \\n[#PRINT_STYLE]=2 \{ .INDENT_REFS ENDNOTE 1.5m \} -. \} -. if '\\*[$REF_BIB_INDENT]'' \{\ -. if \\n[#PRINT_STYLE]=1 \{ .INDENT_REFS BIBLIO 2m \} -. if \\n[#PRINT_STYLE]=2 \{ .INDENT_REFS BIBLIO 1.5m :\} -. \} -.\" Adjust doc leading for PRINTSTYLE TYPESET -. if \\n[#PRINT_STYLE]=2 \{\ -. ie \\n[#ADJ_DOC_LEAD]=1 \{ .DOC_LEAD_ADJUST \} -. el \{ . \} -. \} -.\" This diversion is to get a value for #FN_AUTOLEAD -. di NULL -. ev NULL -. if \\n[#PRINT_STYLE]=1 \{\ -. ps 12 -. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#ORIGINAL_DOC_LEAD]u \} -. el \{ .vs \\n[#ORIGINAL_DOC_LEAD]u/2u \} -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$FN_SIZE_CHANGE] -. AUTOLEAD \\n[#FN_AUTOLEAD] -. \} -. nr #FN_LEAD \\n[#LEAD] -. if \\n[#PRINT_STYLE]=2 \{ .LS \\n[#DOC_LEAD]u \} -. ev -. di -. ie !\\n[#COLLATE] \{\ -.\" DOC_LEAD adjusted (or not) here -. TRAPS -. rr #DOC_LEAD_ADJUST_OFF -.\" Endnote, bibliography and toc leading -. nr #OK_PROCESS_LEAD 1 -. nr #RESTORE_DOC_LEAD \\n(.v -. nr #RESTORE_B_MARGIN \\n[#B_MARGIN] -. if \\n[#PRINT_STYLE]=1 \{\ -. ie \\n[#SINGLE_SPACE] \{\ -. ENDNOTE_LEAD 12 ADJUST -. BIBLIOGRAPHY_LEAD 12 ADJUST -. \} -. el \{\ -. ie \\n[#EN_SINGLESPACE] \{ .ENDNOTE_LEAD 12 ADJUST \} -. el \{ .ENDNOTE_LEAD 24 ADJUST \} -. ie \\n[#BIB_SINGLESPACE] \{ .BIBLIOGRAPHY_LEAD 12 ADJUST \} -. el \{ .BIBLIOGRAPHY_LEAD 24 ADJUST \} -. \} -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. ie !d$EN_LEAD \{ .ENDNOTE_LEAD 14 ADJUST \} -. el \{ .ENDNOTE_LEAD \\*[$EN_LEAD] \\*[$ADJUST_EN_LEAD] \} -. ie !d$BIB_LEAD \{ .BIBLIOGRAPHY_LEAD 14 ADJUST \} -. el \{ .BIBLIOGRAPHY_LEAD \\*[$BIB_LEAD] \\*[$ADJUST_BIB_LEAD] \} -. ie !d$TOC_LEAD \{ .TOC_LEAD \\n[#RESTORE_DOC_LEAD]u \} -. el \{ .TOC_LEAD \\*[$TOC_LEAD] \\*[$ADJUST_TOC_LEAD] \} -. rm $ADJUST_EN_LEAD -. rm $ADJUST_BIB_LEAD -. rm $ADJUST_TOC_LEAD -. \} -. ie !d$BIB_SPACE \{ .BIBLIOGRAPHY_SPACING 1v \} -. el \{\ -. if \\n[#DEFER_BIB_SPACING]=1 \{\ -. BIBLIOGRAPHY_SPACING \\*[$BIB_SPACE] -. rr #DEFER_BIB_SPACING -. \} -. \} -. DOC_LEAD \\n[#RESTORE_DOC_LEAD]u -. nr #B_MARGIN \\n[#RESTORE_B_MARGIN] -. \} -. el \{\ -. if \\n[#COLLATE] \{\ -. if !\\n[#PRINT_STYLE]=1 \{\ -. if \\n[#RERUN_TRAPS] \{ .TRAPS \} -. \} -. \} -. \} -. if \\n[#PRINT_STYLE]=1 \{ .nr #IGNORE 1 \} -.END -\# -\# ==================================================================== -\# -\# +++START THE DOCUMENT+++ -\# -\# THE START MACRO -\# --------------- -\# *Arguments: -\# -\# *Function: -\# Reads in default document style parameters and any parameter -\# the user has changed before issuing START. -\# Using the information gathered in the opening macros, -\# prints appropriate title (or chapter #), subtitle, author -\# and document type (if appropriate). -\# *Notes: -\# The .PRINT \& (zero-width character) is required to get the -\# subsequent .sp request to work as advertised. -\# -\# The overall document line length, family, and point-size -\# are stored in #DOC_L_LENGTH, $DOC_FAM, and #DOC_PT_SIZE for -\# use in the HEADER and FOOTER macros. -\# -\# First, define some strings for point sizes -\# -\# Doc cover -.ds $DOC_COVER_AUTHOR_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_AUTHOR_SIZE_CHANGE] -.ds $DOC_COVER_CHAPTER_TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE] -.ds $DOC_COVER_COPYRIGHT_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_COPYRIGHT_SIZE_CHANGE] -.ds $DOC_COVER_DOCTYPE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_DOCTYPE_SIZE_CHANGE] -.ds $DOC_COVER_SUBTITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_SUBTITLE_SIZE_CHANGE] -.ds $DOC_COVER_TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_TITLE_SIZE_CHANGE] -\# Cover -.ds $COVER_AUTHOR_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_AUTHOR_SIZE_CHANGE] -.ds $COVER_CHAPTER_TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_CHAPTER_TITLE_SIZE_CHANGE] -.ds $COVER_COPYRIGHT_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_COPYRIGHT_SIZE_CHANGE] -.ds $COVER_DOCTYPE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_DOCTYPE_SIZE_CHANGE] -.ds $COVER_SUBTITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_SUBTITLE_SIZE_CHANGE] -.ds $COVER_TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_TITLE_SIZE_CHANGE] -\# Docheader -.ds $AUTHOR_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$AUTHOR_SIZE_CHANGE] -.ds $CHAPTER_TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$CHAPTER_TITLE_SIZE_CHANGE] -.ds $COPYRIGHT_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COPYRIGHT_SIZE_CHANGE] -.ds $DOCTYPE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOCTYPE_SIZE_CHANGE] -.ds $SUBTITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$SUBTITLE_SIZE_CHANGE] -.ds $TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$TITLE_SIZE_CHANGE] -\# -\# Next, some utility macros for various routines to prevent repetition -\# -.MAC PRINT_AUTHORS END -. nr #AUTHORS \\n[#AUTHOR_NUM] -. nr #NEXT_AUTHOR 0 1 -. ie r#DOING_COVER \{\ -. if \\n[#COVER]=1 \{\ -. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\ -. ie \\n[#COVER_AUTHOR_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[] -. \} -. el \{ .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]] \} -.\} -. \} -. if \\n[#DOC_COVER]=1 \{\ -. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\ -. ie \\n[#DOC_COVER_AUTHOR_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[] -. \} -. el \{ .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]] \} -.\} -. \} -. \} -. el \{\ -. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\ -. ie \\n[#AUTHOR_COLOR]=1 \{\ -. PRINT \m[\\*[$AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[] -. \} -. el \{ .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]] \} -.\} -. \} -.END -\# -.MAC DEFAULT_DOCHEADER END -. CENTER -. FAMILY \\*[$TITLE_FAM] -. FT \\*[$TITLE_FT] -. PT_SIZE \\*[$TITLE_PT_SIZE] -. LS \\n[#DOCHEADER_LEAD]u -. ie \\n[#TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$TITLE_COLOR]]\\*[$TITLE]\m[] -. \} -. el \{ .PRINT \\*[$TITLE] \} -. if !'\\*[$SUBTITLE]'' \{\ -. FAMILY \\*[$SUBTITLE_FAM] -. FT \\*[$SUBTITLE_FT] -. PT_SIZE \\*[$SUBTITLE_PT_SIZE] -. ie \\n[#SUBTITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$SUBTITLE_COLOR]]\\*[$TITLE]\m[] -. \} -. el \{ .PRINT \\*[$SUBTITLE] \} -. \} -. if !'\\*[$AUTHOR_1]'' \{\ -. FAMILY \\*[$AUTHOR_FAM] -. FT \\*[$AUTHOR_FT] -. PT_SIZE \\*[$AUTHOR_PT_SIZE] -. if !'\\*[$ATTRIBUTE_STRING]'' \{\ -. ie \\n[#ATTRIBUTE_COLOR]=1 \{\ -. PRINT \m[\\*[$ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[] -. \} -. el \{ .PRINT \\*[$ATTRIBUTE_STRING] \} -. \} -. PRINT_AUTHORS -. \} -.END -\# -\# -.MAC CHAPTER_DOCHEADER END -. CENTER -. FAMILY \\*[$TITLE_FAM] -. FT \\*[$TITLE_FT] -. PT_SIZE \\*[$TITLE_PT_SIZE] -. LS \\n[#DOCHEADER_LEAD]u -.\" Chapter title only -. ie '\\*[$CHAPTER]'' \{\ -. ie !'\\*[$CHAPTER_TITLE]'' \{\ -. if \\n[#PRINT_STYLE]=2 \{\ -. FAMILY \\*[$CHAPTER_TITLE_FAM] -. FT \\*[$CHAPTER_TITLE_FT] -. PT_SIZE \\*[$CHAPTER_TITLE_PT_SIZE] -. LS \\n[#DOCHEADER_LEAD]u -. \} -. ie \\n[#TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$TITLE_COLOR]]\\*[$CHAPTER_TITLE]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_TITLE] \} -. \} -. el \{\ -. ie \\n[#TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$TITLE_COLOR]]\\*[$CHAPTER_STRING]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_STRING] \} -. \} -. \} -.\" Chapter string, possibly with a chapter title -. el \{\ -. ie \\n[#TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] \} -. if !'\\*[$CHAPTER_TITLE]'' \{\ -. if \\n[#PRINT_STYLE]=1 \{ .PRINT \\*[$CHAPTER_TITLE] \} -. if \\n[#PRINT_STYLE]=2 \{\ -. FAMILY \\*[$CHAPTER_TITLE_FAM] -. FT \\*[$CHAPTER_TITLE_FT] -. PT_SIZE \\*[$CHAPTER_TITLE_PT_SIZE] -. LS \\n[#DOCHEADER_LEAD]u -. ie \\n[#CHAPTER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$CHAPTER_TITLE_COLOR]]\\*[$CHAPTER_TITLE]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_TITLE] \} -. RLD \\n[#DOC_LEAD]u \" Just looks better this way -. \} -. \} -. \} -.END -\# -\# -.MAC NAMED_DOCHEADER END -. CENTER -. FAMILY \\*[$TITLE_FAM] -. FT \\*[$TITLE_FT] -. PT_SIZE \\*[$TITLE_PT_SIZE] -. LS \\n[#DOCHEADER_LEAD]u -. ie \\n[#TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$TITLE_COLOR]]\\*[$TITLE]\m[] -. \} -. el \{ .PRINT \\*[$TITLE] \} -. if !'\\*[$SUBTITLE]'' \{\ -. FAMILY \\*[$SUBTITLE_FAM] -. FT \\*[$SUBTITLE_FT] -. PT_SIZE \\*[$SUBTITLE_PT_SIZE] -. ie \\n[#SUBTITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$SUBTITLE_COLOR]]\\*[$TITLE]\m[] -. \} -. el \{ .PRINT \\*[$SUBTITLE] \} -. \} -. if !'\\*[$AUTHOR_1]'' \{\ -. FAMILY \\*[$AUTHOR_FAM] -. FT \\*[$AUTHOR_FT] -. PT_SIZE \\*[$AUTHOR_PT_SIZE] -. if !'\\*[$ATTRIBUTE_STRING]'' \{\ -. ie \\n[#ATTRIBUTE_COLOR]=1 \{\ -. PRINT \m[\\*[$ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[] -. \} -. el \{ .PRINT \\*[$ATTRIBUTE_STRING] \} -. \} -. PRINT_AUTHORS -. \} -. FAMILY \\*[$DOCTYPE_FAM] -. FT \\*[$DOCTYPE_FT] -. PT_SIZE \\*[$DOCTYPE_PT_SIZE] -. LS \\n[#DOCHEADER_LEAD]u -. ALD \\n[#DOCHEADER_LEAD]u -. ie \\n[#DOCTYPE_COLOR]=1 \{\ -. COLOR \\*[$DOCTYPE_COLOR] -. UNDERSCORE "\\*[$DOC_TYPE] -. \} -. el .UNDERSCORE "\\*[$DOC_TYPE] -.END -\# -\# -\# COVER PAGE -\# ---------- -\# *Arguments: -\# TITLE | DOCTITLE | CHAPTER | CHAPTER_TITLE | CHAPTER+TITLE | COVERTITLE ... -\# ... [ SUBTITLE AUTHOR DOCTYPE COPYRIGHT MISC ] -\# *Function: -\# Toggles the number register for each cover page element -\# passed as an argument. -\# *Notes: -\# TITLE, DOCTITLE, CHAPTER, CHAPTER_TITLE or CHAPTER+TITLE must -\# be supplied. After that, users may enter as many or as few of -\# the arguments as they like; however, the arguments must appear -\# in the order given above. -\# -\# If called as DOC_COVER, performs the same operations, but -\# applies everything to a doc cover. -\# -.MAC COVER END -. ie '\\$0'DOC_COVER' \{\ -. nr #DOC_COVER 1 -. if '\\$1'TITLE' \{ .nr #DOC_COVER_TITLE 1 \} -. if '\\$1'DOCTITLE' \{ .nr #DOC_COVER_TITLE 2 \} -. if '\\$1'CHAPTER' \{ .nr #DOC_COVER_TITLE 3 \} -. if '\\$1'CHAPTER_TITLE' \{ .nr #DOC_COVER_TITLE 4 \} -. if '\\$1'CHAPTER+TITLE' \{ .nr #DOC_COVER_TITLE 5 \} -. if '\\$1'COVERTITLE' \{ .nr #DOC_COVER_TITLE 6 \} -. if '\\$2'SUBTITLE' \{ .nr #DOC_COVER_SUBTITLE 1 \} -. if '\\$2'AUTHOR' \{ .nr #DOC_COVER_AUTHOR 1 \} -. if '\\$2'DOCTYPE' \{ .nr #DOC_COVER_DOCTYPE 1 \} -. if '\\$2'COPYRIGHT' \{ .nr #DOC_COVER_COPYRIGHT 1 \} -. if '\\$2'MISC' \{ .nr #DOC_COVER_MISC 1 \} -. if '\\$3'AUTHOR' \{ .nr #DOC_COVER_AUTHOR 1 \} -. if '\\$3'DOCTYPE' \{ .nr #DOC_COVER_DOCTYPE 1 \} -. if '\\$3'COPYRIGHT' \{ .nr #DOC_COVER_COPYRIGHT 1 \} -. if '\\$3'MISC' \{ .nr #DOC_COVER_MISC 1 \} -. if '\\$4'DOCTYPE' \{ .nr #DOC_COVER_DOCTYPE 1 \} -. if '\\$4'COPYRIGHT' \{ .nr #DOC_COVER_COPYRIGHT 1 \} -. if '\\$4'MISC' \{ .nr #DOC_COVER_MISC 1 \} -. if '\\$5'COPYRIGHT' \{ .nr #DOC_COVER_COPYRIGHT 1 \} -. if '\\$5'MISC' \{ .nr #DOC_COVER_MISC 1 \} -. if '\\$6'MISC' \{ .nr #DOC_COVER_MISC 1 \} -. \} -. el \{\ -. nr #COVER 1 -. if '\\$1'TITLE' \{ .nr #COVER_TITLE 1 \} -. if '\\$1'DOCTITLE' \{ .nr #COVER_TITLE 2 \} -. if '\\$1'CHAPTER' \{ .nr #COVER_TITLE 3 \} -. if '\\$1'CHAPTER_TITLE' \{ .nr #COVER_TITLE 4 \} -. if '\\$1'CHAPTER+TITLE' \{ .nr #COVER_TITLE 5 \} -. if '\\$1'COVERTITLE' \{ .nr #COVER_TITLE 6 \} -. if '\\$2'SUBTITLE' \{ .nr #COVER_SUBTITLE 1 \} -. if '\\$2'AUTHOR' \{ .nr #COVER_AUTHOR 1 \} -. if '\\$2'DOCTYPE' \{ .nr #COVER_DOCTYPE 1 \} -. if '\\$2'COPYRIGHT' \{ .nr #COVER_COPYRIGHT 1 \} -. if '\\$2'MISC' \{ .nr #COVER_MISC 1 \} -. if '\\$3'AUTHOR' \{ .nr #COVER_AUTHOR 1 \} -. if '\\$3'DOCTYPE' \{ .nr #COVER_DOCTYPE 1 \} -. if '\\$3'COPYRIGHT' \{ .nr #COVER_COPYRIGHT 1 \} -. if '\\$3'MISC' \{ .nr #COVER_MISC 1 \} -. if '\\$4'DOCTYPE' \{ .nr #COVER_DOCTYPE 1 \} -. if '\\$4'COPYRIGHT' \{ .nr #COVER_COPYRIGHT 1 \} -. if '\\$4'MISC' \{ .nr #COVER_MISC 1 \} -. if '\\$5'COPYRIGHT' \{ .nr #COVER_COPYRIGHT 1 \} -. if '\\$5'MISC' \{ .nr #COVER_MISC 1 \} -. if '\\$6'MISC' \{ .nr #COVER_MISC 1 \} -. \} -.END -\# -\# -.MAC COVERTITLE END -. ie '\\$0'DOC_COVERTITLE' .ds $DOC_COVER_TITLE \\$1 -. el .ds $COVER_TITLE \\$1 -.END -\# -\# -\# COVER PAGE LEADING -\# ------------------ -\# *Arguments: -\# <+|- amount by which to in/decrease leading of cover/doc cover> -\# *Function: -\# Stores user supplied lead in/decrease in string $COVER_LEAD_ADJ -\# or $DOC_COVER_LEAD_ADJ, depending on whether the macro was called -\# with an alias (DOC_COVER_LEAD). -\# *Notes: -\# A unit of measure must be supplied. Decimal fractions OK. -\# Default is +0, i.e. same as DOC_LEAD. -\# -.MAC COVER_LEAD END -. ie '\\$0'DOC_COVER_LEAD' \{\ -. ds $DOC_COVER_LEAD_ADJ \\$1 -. \} -. el \{\ -. ds $COVER_LEAD_ADJ \\$1 -. \} -.END -\# -\# -\# COVER PAGE START POSITION -\# ------------------------- -\# *Arguments: -\# -\# *Function: -\# Stores user supplied lead in/decrease in #COVER_START_POS -\# or #DOC_COVER_START_POS, depending on whether the macro was -\# called by an alias (DOC_COVER_ADVANCE). -\# *Notes: -\# A unit of measure must be supplied. Decimal fractions OK. -\# If user doesn't invoke this macro, the default starting -\# position for both covers and doc covers is 1/3 of the way -\# down the page (setup in DO_COVER). -\# -.MAC COVER_ADVANCE END -. ie '\\$0'DOC_COVER_ADVANCE' \{\ -. nr #DOC_COVER_START_POS (\\$1) -. \} -. el \{\ -. nr #COVER_START_POS (\\$1) -. \} -.END -\# -\# -\# COVERS - WHETHER TO PRINT -\# ------------------------- -\# *Arguments: -\# | -\# *Function: -\# Creates or removes registers #COVERS and #COVERS_OFF, checked for -\# in DEFAULTS (in START) prior to printing -\# -.MAC COVERS END -. ie '\\$0'DOC_COVERS' \{\ -. ie '\\$1'' \{\ -. rr #DOC_COVERS_OFF -. nr #DOC_COVERS 1 -. \} -. el \{\ -. rr #DOC_COVERS -. nr #DOC_COVERS_OFF 1 -. \} -. \} -. el \{\ -. ie '\\$1'' \{\ -. rr #COVERS_OFF -. nr #COVERS 1 -. \} -. el \{\ -. rr #COVERS -. nr #COVERS_OFF 1 -. \} -. \} -.END -\# -\# -.MAC DO_COVER END -. nr #DOING_COVER 1 -. ev COVER -. evc 0 -. TRAP OFF -. if \\n[#PAGINATE]=1 \{\ -. nr #PAGINATION_WAS_ON 1 -. rr #PAGINATE -. \} -. if \\n[#HEADERS_ON]=1 \{\ -. nr #HEADERS_WERE_ON 1 -. HEADERS OFF -. \} -. if \\n[#FOOTERS_ON]=1 \{\ -. nr #FOOTERS_WERE_ON 1 -. FOOTERS OFF -. \} -. if \\n[#COLUMNS]=1 \{\ -. nr #COLUMNS_WERE_ON 1 -. rr #COLUMNS -. \} -.\" Doc cover -. ie '\\$0'DO_DOC_COVER' \{\ -. if !r#DOC_COVER_START_POS \{\ -. nr #DOC_COVER_START_POS \\n[#PAGE_LENGTH]/3 -. \} -. if \\n[#PRINT_STYLE]=1 \{\ -. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u*2u \} -. el \{ .vs \\n[#DOC_LEAD]u \} -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. LS \\n[#DOC_LEAD]u\\*[$DOC_COVER_LEAD_ADJ] -. nr #DOC_COVER_LEAD \\n[#LEAD] -. \} -. PRINT \& -. sp |\\n[#DOC_COVER_START_POS]u-1v -. if \\n[#DOC_COVER_COLOR]=1 \{\ -. nf -\m[\\*[$DOC_COVER_COLOR]] -. EOL -. \} -. CENTER -. FAMILY \\*[$DOC_COVER_TITLE_FAM] -. FT \\*[$DOC_COVER_TITLE_FT] -. PT_SIZE \\*[$DOC_COVER_TITLE_PT_SIZE] -. LS \\n[#DOC_COVER_LEAD]u -. if \\n[#PRINT_STYLE]=1 \{ .TYPEWRITER \} -. if \\n[#DOC_COVER_TITLE]=1 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. UNDERSCORE "\\*[$TITLE]" -. CAPS OFF -. \} -. el \{\ -. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$TITLE]\m[] -. \} -. el \{ .PRINT \\*[$TITLE] \} -. \} -. \} -. if \\n[#DOC_COVER_TITLE]=2 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. UNDERSCORE "\\*[$DOC_TITLE]" -. CAPS OFF -. \} -. el \{\ -. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$DOC_TITLE]\m[] -. \} -. el \{ .PRINT \\*[$DOC_TITLE] \} -. \} -. \} -. if \\n[#DOC_COVER_TITLE]=3 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] -. CAPS OFF -. \} -. el \{\ -. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] \} -. \} -. \} -. if \\n[#DOC_COVER_TITLE]=4 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. UNDERSCORE "\\*[$CHAPTER_TITLE]" -. CAPS OFF -. \} -. el \{\ -. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$CHAPTER_TITLE]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_TITLE] \} -. \} -. \} -. if \\n[#DOC_COVER_TITLE]=5 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] -. CAPS OFF -. \} -. el \{\ -. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] \} -. \} -. if !'\\*[$CHAPTER_TITLE]'' \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. UNDERSCORE "\\*[$CHAPTER_TITLE]" -. \} -. el \{\ -. FAMILY \\*[$DOC_COVER_CHAPTER_TITLE_FAM] -. FT \\*[$DOC_COVER_CHAPTER_TITLE_FT] -. PT_SIZE \\*[$DOC_COVER_CHAPTER_TITLE_PT_SIZE] -. ie \\n[#DOC_COVER_CHAPTER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_CHAPTER_TITLE_COLOR]]\\*[$CHAPTER_TITLE]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_TITLE] \} -. \} -. \} -. \} -. if \\n[#DOC_COVER_TITLE]=6 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. UNDERSCORE "\\*[$DOC_COVER_TITLE]" -. CAPS OFF -. \} -. el \{\ -. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$DOC_COVER_TITLE]\m[] -. \} -. el \{ .PRINT \\*[$DOC_COVER_TITLE] \} -. \} -. \} -. if \\n[#DOC_COVER_SUBTITLE]=1 \{\ -. FAMILY \\*[$DOC_COVER_SUBTITLE_FAM] -. FT \\*[$DOC_COVER_SUBTITLE_FT] -. PT_SIZE \\*[$DOC_COVER_SUBTITLE_PT_SIZE] -. if \\n[#PRINT_STYLE]=1 \{ .TYPEWRITER \} -. ie \\n[#DOC_COVER_SUBTITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_SUBTITLE_COLOR]]\\*[$SUBTITLE]\m[] -. \} -. el \{ .PRINT \\*[$SUBTITLE] \} -. \} -. if \\n[#PRINT_STYLE]=1 \{\ -. if !r#DOC_COVER_SUBTITLE \{ .SP \} -. \} -. if \\n[#DOC_COVER_AUTHOR]=1 \{\ -. FAMILY \\*[$DOC_COVER_AUTHOR_FAM] -. FT \\*[$DOC_COVER_AUTHOR_FT] -. PT_SIZE \\*[$DOC_COVER_AUTHOR_PT_SIZE] -. if \\n[#PRINT_STYLE]=1 \{\ -. TYPEWRITER -. vs \\n[#DOC_LEAD]u/2u -. \} -. if !'\\*[$ATTRIBUTE_STRING]'' \{\ -. ie \\n[#DOC_COVER_ATTRIBUTE_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[] -. \} -. el \{ .PRINT \\*[$ATTRIBUTE_STRING] \} -. \} -. PRINT_AUTHORS -. \} -. FAMILY \\*[$DOC_COVER_DOCTYPE_FAM] -. FT \\*[$DOC_COVER_DOCTYPE_FT] -. PT_SIZE \\*[$DOC_COVER_DOCTYPE_PT_SIZE] -. SP -. if \\n[#DOC_COVER_DOCTYPE]=1 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. TYPEWRITER -. vs \\n[#DOC_LEAD]u -. UNDERSCORE2 "\\*[$DOC_TYPE] -. \} -. el \{\ -. ie \\n[#DOC_COVER_DOCTYPE_COLOR]=1 \{\ -. COLOR \\*[$DOC_COVER_DOCTYPE_COLOR] -. UNDERSCORE "\\*[$DOC_TYPE] -. \} -. el .UNDERSCORE "\\*[$DOC_TYPE] -. \} -. \} -. sp |\\n[#VISUAL_B_MARGIN]u+\\n[#DOC_LEAD]u -. ie \\n[#PRINT_STYLE]=1 \{\ -. TYPEWRITER -. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u \} -. el \{ .vs \\n[#DOC_LEAD]u/2u \} -. \} -. el \{\ -. FAMILY \\*[$DOC_COVER_COPYRIGHT_FAM] -. FT \\*[$DOC_COVER_COPYRIGHT_FT] -. AUTOLEAD 2 -. PT_SIZE \\*[$DOC_COVER_COPYRIGHT_PT_SIZE] -. \} -. if \\n[#DOC_COVER_COPYRIGHT]=1 \{\ -. QUAD \\*[$DOC_COVER_COPYRIGHT_QUAD] -. ie \\n[#DOC_COVER_COPYRIGHT_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_COPYRIGHT_COLOR]]\\*[$COPYRIGHT]\m[] -. \} -. el \{ .PRINT \\*[$COPYRIGHT] \} -. \} -. sp |\\n[#VISUAL_B_MARGIN]u+\\n[#DOC_LEAD]u -. if \\n[#DOC_COVER_MISC]=1 \{\ -. QUAD \\*[$DOC_COVER_MISC_QUAD] -. nr #MISCS \\n[#MISC_NUM] -. sp -\\n[#MISCS]+1 -. nr #NEXT_MISC 0 1 -. while \\n[#MISCS]>\\n[#NEXT_MISC] \{\ -. ie \\n[#DOC_COVER_MISC_COLOR]=1 \{\ -. PRINT \m[\\*[$DOC_COVER_MISC_COLOR]]\\*[$MISC_\\n+[#NEXT_MISC]]\m[] -. br -. \} -. el \{\ -. PRINT \\*[$MISC_\\n+[#NEXT_MISC]] -. br -. \} -.\} -. \} -. \} -.\" Cover -. el \{\ -. if !r#COVER_START_POS \{\ -. nr #COVER_START_POS \\n[#PAGE_LENGTH]/3 -. \} -. if \\n[#PRINT_STYLE]=1 \{\ -. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u*2u \} -. el \{ .vs \\n[#DOC_LEAD]u \} -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. LS \\n[#DOC_LEAD]u\\*[$COVER_LEAD_ADJ] -. nr #COVER_LEAD \\n[#LEAD] -. \} -. PRINT \& -. sp |\\n[#COVER_START_POS]u-1v -. if \\n[#COVER_COLOR]=1 \{\ -. nf -\m[\\*[$COVER_COLOR]] -. EOL -. \} -. CENTER -. FAMILY \\*[$COVER_TITLE_FAM] -. FT \\*[$COVER_TITLE_FT] -. PT_SIZE \\*[$COVER_TITLE_PT_SIZE] -. LS \\n[#COVER_LEAD]u -. if \\n[#PRINT_STYLE]=1 \{ .TYPEWRITER \} -. if \\n[#COVER_TITLE]=1 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. UNDERSCORE "\\*[$TITLE]" -. CAPS OFF -. \} -. el \{\ -. ie \\n[#COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_TITLE_COLOR]]\\*[$TITLE]\m[] -. \} -. el \{ .PRINT \\*[$TITLE] \} -. \} -. \} -. if \\n[#COVER_TITLE]=2 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. UNDERSCORE "\\*[$DOC_TITLE]" -. CAPS OFF -. \} -. el \{\ -. ie \\n[#COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_TITLE_COLOR]]\\*[$DOC_TITLE]\m[] -. \} -. el \{ .PRINT \\*[$DOC_TITLE] \} -. \} -. \} -. if \\n[#COVER_TITLE]=3 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] -. CAPS OFF -. \} -. el \{\ -. ie \\n[#COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] \} -. \} -. \} -. if \\n[#COVER_TITLE]=4 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. UNDERSCORE "\\*[$CHAPTER_TITLE]" -. CAPS OFF -. \} -. el \{\ -. ie \\n[#COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_TITLE_COLOR]]\\*[$CHAPTER_TITLE]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_TITLE] \} -. \} -. \} -. if \\n[#COVER_TITLE]=5 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] -. CAPS OFF -. \} -. el \{\ -. ie \\n[#COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] \} -. \} -. if !'\\*[$CHAPTER_TITLE]'' \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. UNDERSCORE "\\*[$CHAPTER_TITLE]" -. \} -. el \{\ -. FAMILY \\*[$COVER_CHAPTER_TITLE_FAM] -. FT \\*[$COVER_CHAPTER_TITLE_FT] -. PT_SIZE \\*[$COVER_CHAPTER_TITLE_PT_SIZE] -. ie \\n[#COVER_CHAPTER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_CHAPTER_TITLE_COLOR]]\\*[$CHAPTER_TITLE]\m[] -. \} -. el \{ .PRINT \\*[$CHAPTER_TITLE] \} -. \} -. \} -. \} -. if \\n[#COVER_TITLE]=6 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. CAPS -. UNDERSCORE "\\*[$COVER_TITLE]" -. CAPS OFF -. \} -. el \{\ -. ie \\n[#COVER_TITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_TITLE_COLOR]]\\*[$COVER_TITLE]\m[] -. \} -. el \{ .PRINT \\*[$COVER_TITLE] \} -. \} -. \} -. if \\n[#COVER_SUBTITLE]=1 \{\ -. FAMILY \\*[$COVER_SUBTITLE_FAM] -. FT \\*[$COVER_SUBTITLE_FT] -. PT_SIZE \\*[$COVER_SUBTITLE_PT_SIZE] -. if \\n[#PRINT_STYLE]=1 \{ .TYPEWRITER \} -. ie \\n[#COVER_SUBTITLE_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_SUBTITLE_COLOR]]\\*[$SUBTITLE]\m[] -. \} -. el \{ .PRINT \\*[$SUBTITLE] \} -. \} -. if \\n[#PRINT_STYLE]=1 \{\ -. if !r#COVER_SUBTITLE \{ .SP \} -. \} -. if \\n[#COVER_AUTHOR]=1 \{\ -. FAMILY \\*[$COVER_AUTHOR_FAM] -. FT \\*[$COVER_AUTHOR_FT] -. PT_SIZE \\*[$COVER_AUTHOR_PT_SIZE] -. if \\n[#PRINT_STYLE]=1 \{\ -. TYPEWRITER -. vs \\n[#DOC_LEAD]u/2u -. \} -. if !'\\*[$ATTRIBUTE_STRING]'' \{\ -. ie \\n[#COVER_ATTRIBUTE_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[] -. \} -. el \{ .PRINT \\*[$ATTRIBUTE_STRING] \} -. \} -. PRINT_AUTHORS -. \} -. FAMILY \\*[$COVER_DOCTYPE_FAM] -. FT \\*[$COVER_DOCTYPE_FT] -. PT_SIZE \\*[$COVER_DOCTYPE_PT_SIZE] -. SP -. if \\n[#COVER_DOCTYPE]=1 \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. TYPEWRITER -. vs \\n[#DOC_LEAD]u -. UNDERSCORE2 "\\*[$DOC_TYPE] -. \} -. el \{\ -. ie \\n[#COVER_DOCTYPE_COLOR]=1 \{\ -. COLOR \\*[$COVER_DOCTYPE_COLOR] -. UNDERSCORE "\\*[$DOC_TYPE] -. \} -. el .UNDERSCORE "\\*[$DOC_TYPE] -. \} -. \} -. sp |\\n[#VISUAL_B_MARGIN]u+\\n[#DOC_LEAD]u -. ie \\n[#PRINT_STYLE]=1 \{\ -. TYPEWRITER -. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u \} -. el \{ .vs \\n[#DOC_LEAD]u/2u \} -. \} -. el \{\ -. FAMILY \\*[$COVER_COPYRIGHT_FAM] -. FT \\*[$COVER_COPYRIGHT_FT] -. AUTOLEAD 2 -. PT_SIZE \\*[$COVER_COPYRIGHT_PT_SIZE] -. \} -. if \\n[#COVER_COPYRIGHT]=1 \{\ -. QUAD \\*[$COVER_COPYRIGHT_QUAD] -. ie \\n[#COVER_COPYRIGHT_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_COPYRIGHT_COLOR]]\\*[$COPYRIGHT]\m[] -. \} -. el \{ .PRINT \\*[$COPYRIGHT] \} -. \} -. sp |\\n[#VISUAL_B_MARGIN]u+\\n[#DOC_LEAD]u -. if \\n[#COVER_MISC]=1 \{\ -. QUAD \\*[$COVER_MISC_QUAD] -. nr #MISCS \\n[#MISC_NUM] -. sp -\\n[#MISCS]+1 -. nr #NEXT_MISC 0 1 -. while \\n[#MISCS]>\\n[#NEXT_MISC] \{\ -. ie \\n[#COVER_MISC_COLOR]=1 \{\ -. PRINT \m[\\*[$COVER_MISC_COLOR]]\\*[$MISC_\\n+[#NEXT_MISC]]\m[] -. br -. \} -. el \{\ -. PRINT \\*[$MISC_\\n+[#NEXT_MISC]] -. br -. \} -.\} -. \} -. \} -. EOL -. TRAP -. NEWPAGE -. ev -. if \\n[#PAGINATION_WAS_ON] \{\ -. rr #PAGINATION_WAS_ON -. PAGINATE -. PAGENUMBER \\n%+\\n[#PAGE_NUM_ADJ]-1 -. \} -. if \\n[#HEADERS_WERE_ON] \{\ -. rr #HEADERS_WERE_ON -. HEADERS -. \} -. if \\n[#FOOTERS_WERE_ON] \{\ -. rr #FOOTERS_WERE_ON -. FOOTERS -. \} -. if \\n[#COLUMNS_WERE_ON]=1 \{\ -. rr #COLUMNS_WERE_ON 1 -. nr #COLUMNS 1 -. \} -. rr #DOING_COVER -.END -\# -\# -.MAC START END -. if !\\n[#PRINT_STYLE] \{\ -. PRINTSTYLE TYPEWRITE -. PRINT \& -. po 6P -. ll 39P -. ta \\n(.lu -. sp |1i-1v -. CENTER -. PRINT "You neglected to enter a PRINTSTYLE" -. fl -. ab PRINTSTYLE missing -. \} -. nr #DOCS 1 -. if \\n[#LINENUMBERS]=1 \{\ -. NUMBER_LINES OFF -. nr #LINENUMBERS 2 -. \} -. if \\n[#COLLATE] \{\ -. COPYSTYLE \\*[$COPY_STYLE] -. nr #HEADERS_ON \\n[#HEADER_STATE] -. if \\n[#PAGE_NUM_V_POS]=1 \{ .nr #PAGINATE \\n[#PAGINATION_STATE] \} -. sp |\\n[#HEADER_MARGIN]u -. PRINT \& -. if !'\\*[$RESTORE_PAGENUM_STYLE]'' \{\ -. PAGENUM_STYLE \\*[$RESTORE_PAGENUM_STYLE] -. rm $RESTORE_PAGENUM_STYLE -. \} -. \} -. DEFAULTS -.\" Quote and blockquote default leads are the same as #DOC_LEAD, so -.\" they have to be set after DEFAULTS (where DOC_LEAD is finalized) -. if !r#Q_AUTOLEAD \{ .nr #Q_LEAD \\n[#DOC_LEAD] \} -. if !r#BQ_AUTOLEAD \{ .nr #BQ_LEAD \\n[#DOC_LEAD] \} -. if !r#EN_Q_AUTOLEAD \{ .nr #EN_Q_LEAD \\n[#EN_LEAD] \} -. if !r#EN_BQ_AUTOLEAD \{ .nr #EN_BQ_LEAD \\n[#EN_LEAD] \} -.\" Covers and doc covers -. if \\n[#DOC_COVERS]=1 \{\ -. if \\n[#DOC_COVER]=1 \{\ -. DO_DOC_COVER -. rr #DOC_COVER -. rr #DOC_COVER_TITLE -. rr #DOC_COVER_SUBTITLE -. rr #DOC_COVER_AUTHOR -. rr #DOC_COVER_DOCTYPE -. rr #DOC_COVER_COPYRIGHT -. rr #DOC_COVER_MISC -. \} -. \} -. if \\n[#COVERS]=1 \{\ -. if \\n[#COVER]=1 \{\ -. DO_COVER -. rr #COVER -. rr #COVER_TITLE -. rr #COVER_SUBTITLE -. rr #COVER_AUTHOR -. rr #COVER_DOCTYPE -. rr #COVER_COPYRIGHT -. rr #COVER_MISC -. \} -. \} -.\" Collate related stuff -. ie \\n[#COLLATED_DOC]=1 \{\ -.\" Collect TITLE for TOC. -. nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ] -. af #TOC_ENTRY_PN \\g[#PAGENUMBER] -. ie \\n[#USER_SET_TITLE_ITEM] \{\ -. ds $TOC_TITLE_ITEM \\*[$USER_SET_TITLE_ITEM]\\| -. rr #USER_SET_TITLE_ITEM -. rm $USER_SET_TITLE_ITEM -. \} -. el \{\ -. ie \\n[#DOC_TYPE]=2 \{\ -. ie '\\*[$CHAPTER_TITLE]'' \{\ -. ds $TOC_TITLE_ITEM \\*[$CHAPTER_STRING] \\*[$CHAPTER]\\| -. \} -. el \{\ -. ie '\\*[$CHAPTER]'' \{\ -. ds $TOC_TITLE_ITEM \\*[$CHAPTER_TITLE]\\| -. \} -. el \{\ -. ds $TOC_TITLE_ITEM \\*[$CHAPTER_STRING] \\*[$CHAPTER]: \\*[$CHAPTER_TITLE]\\| -. \} -. \} -. \} -. el \{\ -. ds $TOC_TITLE_ITEM \\*[$TITLE]\\| -. \} -. \} -. if \\n[#TOC_AUTHORS]=1 \{\ -. ie '\\*[$TOC_AUTHORS]'' \{\ -. as $TOC_TITLE_ITEM /\\|\\*[$AUTHOR_1]\\| -. \} -. el \{\ -. as $TOC_TITLE_ITEM /\\|\\*[$TOC_AUTHORS]\\| -. rm $TOC_AUTHORS -. \} -. \} -.\" Note the use of \!, which transparently embeds the macros used -.\" in the TOC_ENTRIES diversion. The elements they control must be -.\" processed literally when the diversion is output. -. ev TOC_EV -. da TOC_ENTRIES -. if \\n[#PRINT_STYLE]=1 \{\ -\!. fam C -\!. ft R -\!. ps 12 -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -\!. FAMILY \\*[$TOC_TITLE_FAM] -\!. FT \\*[$TOC_TITLE_FT] -\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE_CHANGE] -. \} -\!. TRAP OFF -. ie \\n[#PRINT_STYLE]=1 \{\ -\!. PAD "\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN_TYPEWRITE]" -. \} -. el \{\ -\!. PAD "\\h'\\n[#TOC_TITLE_INDENT]u'\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN]" -. \} -\!. EOL -\!. ST 100 L -\!. ST 101 R -. if \\n[#PRINT_STYLE]=2 \{\ -\!. FAMILY \\*[$TOC_PN_FAM] -\!. FT \\*[$TOC_PN_FT] -\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE] -. \} -\!. TAB 100 -\!. PRINT \\*[LEADER] -\!. TN -\!. TRAP -\!. PRINT \\n[#TOC_ENTRY_PN] -\!. TQ -. di -. ev -. \} -. el \{\ -. nr #FIRST_DOC_TITLE_PN \\n%+\\n[#PAGE_NUM_ADJ] -. af #FIRST_DOC_TITLE_PN \\g[#PAGENUMBER] -. nr #FIRST_DOC_TOC_PN_PADDING \\n[#TOC_PN_PADDING] -. \} -.\" End TITLE collection -. if \\n[#PRINT_PAGENUM_ON_PAGE_1] \{\ -. sp |\\n[#HEADER_MARGIN]u -. PRINT_PAGE_NUMBER -. \} -. rr #COLLATE -. rr #PAGINATION_STATE -.\" End collate stuff -. ie \\n[#DOC_HEADER]=0 \{\ -. PRINT \& -. if \\n[#DOC_TYPE]=4 \{\ -. if !'\\n(.z'' \{ .di \} -. \} -. nr #STORED_PP_INDENT \\n[#PP_INDENT] -. PARA_INDENT 0 -. PP -. PARA_INDENT \\n[#STORED_PP_INDENT]u -. rr #STORED_PP_INDENT -. ie r#ADVANCE_FROM_TOP \{\ -. sp |\\n[#ADVANCE_FROM_TOP]u-1v -. if \\n[#ADJ_DOC_LEAD]=1 \{ .SHIM \} -. \} -. el \{ .sp |\\n[#T_MARGIN]u-1v \} -. if \\n[#COLUMNS] \{\ -. mk dc -. nr #COL_NUM 0 1 -. po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u -. nr #L_MARGIN \\n(.o -. ll \\n[#COL_L_LENGTH]u -. \} -. nr #PP 0 -. rr #DOC_HEADER -. if r#ADVANCE_FROM_TOP \{ .rr #ADVANCE_FROM_TOP \} -. \} -. el \{\ -. if \\n[#PRINT_STYLE]=2 \{ .LS \\n[#DOC_LEAD]u\\*[$DOCHEADER_LEAD_ADJ] \} -. nr #DOCHEADER_LEAD \\n[#LEAD] -.\" Default -. if \\n[#DOC_TYPE]=1 \{\ -. PRINT \& -. sp |\\n[#DOCHEADER_ADVANCE]u-1v -. ev DOCHEADER -. if \\n[#DOCHEADER_COLOR]=1 \{\ -. nf -\m[\\*[$DOCHEADER_COLOR]] -. EOL -. \} -. L_MARGIN \\n[#DOC_L_MARGIN]u -. LL \\n[#DOC_L_LENGTH]u -. ta \\n(.lu -. if \\n[#PRINT_STYLE]=1 \{\ -. CENTER -. TYPEWRITER -. ie \\n[#SINGLE_SPACE] \{ .vs \\n[#DOC_LEAD]u*2u \} -. el \{ .vs \\n[#DOC_LEAD]u \} -. CAPS -. if !'\\*[$TITLE]'' \{ .UNDERSCORE "\\*[$TITLE]\} -. CAPS OFF -. if !'\\*[$SUBTITLE]'' \{\ -. ie \\n[#SINGLE_SPACE] \{ .vs \\n[#DOC_LEAD]u*2u \} -. el \{ .vs \\n[#DOC_LEAD]u \} -. PRINT \\*[$SUBTITLE] -. \} -. if '\\*[$SUBTITLE]'' \{\ -. ALD \\n[#DOC_LEAD]u -. \} -. ie !'\\*[$AUTHOR_1]'' \{\ -. ie \\n[#SINGLE_SPACE] \{ .vs \\n[#DOC_LEAD]u \} -. el \{ .vs \\n[#DOC_LEAD]u/2u \} -. if !d$SUBTITLE \{\ -. ie \\n[#SINGLE_SPACE] \{ .ALD \\n[#DOC_LEAD]u \} -. el \{ .ALD \\n[#DOC_LEAD]u*2u \} -. \} -. PRINT \\*[$ATTRIBUTE_STRING] -. nr #AUTHORS \\n[#AUTHOR_NUM] -. nr #NEXT_AUTHOR 0 1 -. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\ -. PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]] -.\} -. if \\n[#AUTHOR_LINES]=1 \{\ -. ie \\n[#SINGLE_SPACE] \{ .RLD \\n[#DOC_LEAD]u \} -. el \{ .ALD \\n[#DOC_LEAD]u/2u \} -. \} -. \} -. el \{\ -. ie !d$SUBTITLE \{\ -. ie \\n[#SINGLE_SPACE] \{ .RLD \\n[#DOC_LEAD]u*2u \} -. el \{ .RLD \\n[#DOC_LEAD]u \} -. \} -. el \{\ -. ie \\n[#SINGLE_SPACE] \{ .RLD \\n[#DOC_LEAD]u*2u \} -. el \{ .ALD \\n[#DOC_LEAD]u \} -. \} -. \} -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. DEFAULT_DOCHEADER -. di DOCHEADER_DIVERSION \" This diversion is only -. br \" necessary to find the depth of the -. DEFAULT_DOCHEADER \" docheader -. br -. di -. nr #DOCHEADER_DEPTH \\n(dn-\\n[#DOCHEADER_LEAD] \"Storing the depth (height) of the diversion -. \"in #DOCHEADER_DEPTH -. rm DOCHEADER_DIVERSION \" Removing the diversion macro -. \} -. ev -. \} -.\" Chapter -. if \\n[#DOC_TYPE]=2 \{\ -. PRINT \& -. sp |\\n[#DOCHEADER_ADVANCE]u-1v -. ev DOCHEADER -. if \\n[#DOCHEADER_COLOR]=1 \{\ -. nf -\m[\\*[$DOCHEADER_COLOR]] -. EOL -. \} -. L_MARGIN \\n[#DOC_L_MARGIN]u -. LL \\n[#DOC_L_LENGTH]u -. ta \\n(.lu -. if \\n[#PRINT_STYLE]=1 \{\ -. CENTER -. TYPEWRITER -. vs \\n[#DOC_LEAD]u -. ie '\\*[$CHAPTER]'' \{\ -. CAPS -. ie !'\\*[$CHAPTER_TITLE]'' \{\ -. PRINT \\*[$CHAPTER_TITLE] -. \} -. el \{\ -. CAPS -. PRINT \\*[$CHAPTER_STRING] -. \} -. CAPS OFF -. \} -. el \{\ -. CAPS -. PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] -. CAPS OFF -. if !'\\*[$CHAPTER_TITLE]'' \{\ -. if \\n[#SINGLE_SPACE] \{ .ALD \\n[#DOC_LEAD]u \} -. UNDERSCORE "\\*[$CHAPTER_TITLE] -. \} -. \} -. if \\n[#SINGLE_SPACE] \{ .ALD \\n[#DOC_LEAD]u \} -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. CHAPTER_DOCHEADER -. di DOCHEADER_DIVERSION \" This diversion is only -. br \" necessary to find the depth of the -. CHAPTER_DOCHEADER \" docheader -. br -. di -. nr #DOCHEADER_DEPTH \\n(dn-\\n[#DOCHEADER_LEAD] \" Storing the depth (height) of the diversion -. \" in #DOCHEADER_DEPTH -. rm DOCHEADER_DIVERSION \" Removing the diversion macro -. \} -. ev -. \} -.\" Named -. if \\n[#DOC_TYPE]=3 \{\ -. PRINT \& -. sp |\\n[#DOCHEADER_ADVANCE]u-1v -. ev DOCHEADER -. if \\n[#DOCHEADER_COLOR]=1 \{\ -. nf -\m[\\*[$DOCHEADER_COLOR]] -. EOL -. \} -. L_MARGIN \\n[#DOC_L_MARGIN]u -. LL \\n[#DOC_L_LENGTH]u -. ta \\n(.lu -. if \\n[#PRINT_STYLE]=1 \{\ -. CENTER -. TYPEWRITER -. ie \\n[#SINGLE_SPACE] \{ .vs \\n[#DOC_LEAD]u*2u \} -. el \{ .vs \\n[#DOC_LEAD]u \} -. CAPS -. if !'\\*[$TITLE]'' \{ .UNDERSCORE "\\*[$TITLE]\} -. CAPS OFF -. if !'\\*[$SUBTITLE]'' \{\ -. ie \\n[#SINGLE_SPACE] \{ .vs \\n[#DOC_LEAD]u*2u \} -. el \{ .vs \\n[#DOC_LEAD]u \} -. PRINT \\*[$SUBTITLE] -. \} -. if '\\*[$SUBTITLE]'' \{\ -. ALD \\n[#DOC_LEAD]u -. \} -. ie !'\\*[$AUTHOR_1]'' \{\ -. ie \\n[#SINGLE_SPACE] \{ .vs \\n[#DOC_LEAD]u \} -. el \{ .vs \\n[#DOC_LEAD]u/2u \} -. if !d$SUBTITLE \{\ -. ie \\n[#SINGLE_SPACE] \{ .ALD \\n[#DOC_LEAD]u \} -. el \{ .ALD \\n[#DOC_LEAD]u*2u \} -. \} -. PRINT \\*[$ATTRIBUTE_STRING] -. nr #AUTHORS \\n[#AUTHOR_NUM] -. nr #NEXT_AUTHOR 0 1 -. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\ -. PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]] -.\} -. if \\n[#AUTHOR_LINES]=1 \{\ -. ie \\n[#SINGLE_SPACE] \{ .RLD \\n[#DOC_LEAD]u \} -. el \{ .ALD \\n[#DOC_LEAD]u/2u \} -. \} -. vs \\n[#DOC_LEAD]u -. \} -. el \{\ -. ie !d$SUBTITLE \{\ -. ie \\n[#SINGLE_SPACE] \{ .RLD \\n[#DOC_LEAD]u*2u \} -. el \{ .RLD \\n[#DOC_LEAD]u \} -. \} -. el \{\ -. ie \\n[#SINGLE_SPACE] \{ . \} -. el \{ .RLD \\n[#DOC_LEAD]u \} -. \} -. \} -. ie \\n[#SINGLE_SPACE] \{ .ALD \\n[#DOC_LEAD]u*2u \} -. el \{ .ALD \\n[#DOC_LEAD]u \} -. UNDERSCORE2 "\\*[$DOC_TYPE] -. if \\n[#SINGLE_SPACE] \{ .ALD \\n[#DOC_LEAD]u \} -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. NAMED_DOCHEADER -. di DOCHEADER_DIVERSION \" This diversion is only -. br \" necessary to find the depth of the -. NAMED_DOCHEADER \" docheader -. br -. di -. nr #DOCHEADER_DEPTH \\n(dn-\\n[#DOCHEADER_LEAD] \"Storing the depth (height) of the diversion -. \"in #DOCHEADER_DEPTH -. rm DOCHEADER_DIVERSION \" Removing the diversion macro -. \} -. ev -. \} -. if !\\n[#DOC_TYPE]=4 \{\ -. if \\n[#PRINT_STYLE]=1 \{ .ALD \\n[#DOC_LEAD]u \} -. nr #DOCHEADER_SPACE_ADJ \\n[#DOCHEADER_DEPTH]%\\n[#DOC_LEAD] -. ie !\\n[#DOCHEADER_SPACE_ADJ]=0 \{ .nr #DOCHEADER_EXTRA_SPACE \\n[#DOC_LEAD]-\\n[#DOCHEADER_SPACE_ADJ] \} -. el \{ .nr #DOCHEADER_EXTRA_SPACE 0 \} -. if \\n[#PRINT_STYLE]=2 \{ .ALD (\\n[#DOC_LEAD]u*2u)+\\n[#DOCHEADER_EXTRA_SPACE]u \} -. if \\n[#COLUMNS] \{\ -. nr #COL_NUM 0 1 -. nr #L_LENGTH_FOR_EPI \\n[#L_LENGTH] -. po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u -. nr #L_MARGIN \\n(.o -. LL \\n[#COL_L_LENGTH]u -. ta \\n(.lu -. mk dc -. \} -. \} -. \} -. LS \\n[#DOC_LEAD]u -. if \\n[#ADJ_DOC_LEAD]=1 \{ .SHIM \} -. QUAD \\*[$DOC_QUAD] -. CLEANUP_DEFAULTS -. nr #START_FOR_FOOTERS 1 -. if \\n[#COLLATED_DOC]=1 \{\ -. if !\\n[MNinit_DEFERRED]=1 \{\ -. MN_INIT rerun -. \} -. \} -. if \\n[#MNinit_DEFERRED]=1 \{\ -. rr #MNinit_DEFERRED -. nr #START_FOR_MNinit 1 -. MN_INIT \\*[$MN-arg1] \\*[$MN-arg2] \\*[$MN-arg3] \\*[$MN-arg4] \\*[$MN-arg5] \\*[$MN-arg6] \\*[$MN-arg7] \\*[$MN-arg8] \\*[$MN-arg9] -. \} -. nr #START_FOR_MNinit 2 -. if !\\n[#DOC_TYPE]=4 \{ .em TERMINATE \} -. if \\n[#LINENUMBERS]=2 \{\ -. NUMBER_LINES RESUME -. nr #LINENUMBERS 1 -. \} -. if \\n[#RUN_ON]=1 \{\ -. if \\n[#FN_MARKER_STYLE]=1 \{ .RUNON_WARNING \} -. if \\n[#FN_MARKER_STYLE]=2 \{ .RUNON_WARNING \} -. \} -.END -\# -.MAC CLEANUP_DEFAULTS END -. nr #START 1 -.\" Family strings for docheader -. rm $AUTHOR_FAM -. rm $CHAPTER_TITLE_FAM -. rm $DOCTYPE_FAM -. rm $SUBTITLE_FAM -. rm $TITLE_FAM -.\" Family strings for cover -. rm $COVER_AUTHOR_FAM -. rm $COVER_CHAPTER_TITLE_FAM -. rm $COVER_COPYRIGHT_FAM -. rm $COVER_DOCTYPE_FAM -. rm $COVER_LEAD_ADJ -. rm $COVER_SUBTITLE_FAM -. rm $COVER_TITLE_FAM -.\" Family strings for doc cover -. rm $DOC_COVER_AUTHOR_FAM -. rm $DOC_COVER_CHAPTER_TITLE_FAM -. rm $DOC_COVER_COPYRIGHT_FAM -. rm $DOC_COVER_DOCTYPE_FAM -. rm $DOC_COVER_LEAD_ADJ -. rm $DOC_COVER_SUBTITLE_FAM -. rm $DOC_COVER_TITLE_FAM -.\" Quad args to copyright and misc -. rm $COVER_COPYRIGHT_QUAD -. rm $COVER_MISC_QUAD -. rm $DOC_COVER_COPYRIGHT_QUAD -. rm $DOC_COVER_MISC_QUAD -.\" Miscellaneous strings -. rm $TOC_TITLE_ITEM -. rm $DOCHEADER_LEAD_ADJ -.\" Various registers -. rr #ADJ_DOC_LEAD -. rr #ADVANCE_FROM_TOP -. rr #AUTHOR_NUM -. rr #AUTHORS -. rr #COVER_LEAD -. rr #DEPTH_1 -. rr #DEPTH_2 -. rr #DOC_COVER_LEAD -. rr #DOCHEADER_ADVANCE -. rr #DOCHEADER_EXTRA_SPACE -. rr #DOCHEADER_LEAD -. rr #DOCHEADER_SPACE_ADJ -. rr #MISC_NUM -. rr #MISCS -. rr #NEXT_AUTHOR -. rr #NEXT_MISC -. rr #NUM_AUTHORS -.END -\# -\# ==================================================================== -\# -\# +++MACROS TO CHANGE SOME DEFAULTS+++ -\# -\# DOCUMENT HEADER -\# --------------- -\# *Argument: -\# | [distance to advance from top of page] -\# *Function: -\# Turns printing of document header on or off. If a second argument -\# in units of measure is given, advances that distance from the -\# top of the page without printing the document header. -\# *Notes: -\# Default is on. If the 1st argument is (which turns -\# document headers off), the optional 2nd argument may be given -\# (with a unit of measure). -\# -.MAC DOCHEADER END -. ie '\\$1'' \{ .nr #DOC_HEADER 1 \} -. el \{\ -. if !'\\$2'' \{ .nr #ADVANCE_FROM_TOP (\\$2) \} -. nr #DOC_HEADER 0 -. \} -.END -\# -\# -\# DOCUMENT HEADER LEADING -\# ----------------------- -\# *Arguments: -\# <+|- amount by which to in/decrease leading of doc header> -\# *Function: -\# Stores user supplied lead in/decrease in string $DOCHEADER_LEAD_ADJ. -\# *Notes: -\# A unit of measure must be supplied. Decimal fractions OK. -\# Default is +0, i.e. same as DOC_LEAD. -\# -.MAC DOCHEADER_LEAD END -. ds $DOCHEADER_LEAD_ADJ \\$1 -.END -\# -\# -\# DOCHEADER ADVANCE -\# ----------------- -\# *Arguments: -\# -\# *Function: -\# Creates register #DOCHEADER_ADVANCE, used in START. -\# *Notes: -\# Unit of measure required. -\# Default is same as T_MARGIN. -\# -.MAC DOCHEADER_ADVANCE END -. nr #DOCHEADER_ADVANCE (\\$1) -.END -\# -\# -\# DOCUMENT LEFT MARGIN -\# -------------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies register #DOC_L_MARGIN. -\# *Notes: -\# Affects EVERYTHING on the page. -\# -.MAC DOC_LEFT_MARGIN END -. br -. nr #DOC_L_MARGIN (\\$1) -. L_MARGIN \\n[#DOC_L_MARGIN]u -.END -\# -\# -\# DOCUMENT RIGHT MARGIN -\# --------------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies register #DOC_R_MARGIN. -\# *Notes: -\# Affects EVERYTHING on the page. -\# -.MAC DOC_RIGHT_MARGIN END -. br -. nr #DOC_R_MARGIN (\\$1) -. R_MARGIN \\n[#DOC_R_MARGIN] -. nr #DOC_L_LENGTH \\n[#L_LENGTH] -.END -\# -\# -\# DOCUMENT LINE LENGTH -\# -------------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $DOC_L_LENGTH. -\# *Notes: -\# Affects EVERYTHING on the page. -\# -.MAC DOC_LINE_LENGTH END -. br -. nr #DOC_L_LENGTH (\\$1) -. LL \\n[#DOC_L_LENGTH]u -. ta \\n(.lu -.END -\# -\# -\# DOCUMENT FAMILY -\# --------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $DOC_FAM. -\# *Notes: -\# Affects everything EXCEPT headers and footers. -\# -.MAC DOC_FAMILY END -. br -. ds $DOC_FAM \\$1 -. ds $FAMILY \\*[$DOC_FAM] -. TITLE_FAMILY \\*[$DOC_FAM] -. SUBTITLE_FAMILY \\*[$DOC_FAM] -. AUTHOR_FAMILY \\*[$DOC_FAM] -. DOCTYPE_FAMILY \\*[$DOC_FAM] -. HEAD_FAMILY \\*[$DOC_FAM] -. SUBHEAD_FAMILY \\*[$DOC_FAM] -. QUOTE_FAMILY \\*[$DOC_FAM] -. BLOCKQUOTE_FAMILY \\*[$DOC_FAM] -. EPIGRAPH_FAMILY \\*[$DOC_FAM] -. HDRFTR_FAMILY \\*[$DOC_FAM] -. FOOTNOTE_FAMILY \\*[$DOC_FAM] -.END -\# -\# -\# DOCUMENT POINT SIZE -\# ------------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies register #DOC_PT_SIZE. -\# *Notes: -\# DOC_PT_SIZE is the basis for calculating all type sizes in -\# a document. -\# -.MAC DOC_PT_SIZE END -. if \\n[#IGNORE] \{ .return \} -. br -. PT_SIZE \\$1 -. nr #DOC_PT_SIZE \\n[#PT_SIZE] -.END -\# -\# -\# DOCUMENT LEAD -\# ------------- -\# *Argument: -\# [ADJUST] -\# *Function: -\# Creates or modifies register #DOC_LEAD. If the optional -\# ADJUST argument is given, adjusts leading so that the last -\# line of text falls exactly on #B_MARGIN. -\# *Notes: -\# DOC_LEAD is the basis for calculating all leading changes in -\# a document. Default for TYPESET is 16; 24 for TYPEWRITE. -\# -\# Because the visible bottom or footer margin of a page depends -\# on the overall document lead supplied by the register #DOC_LEAD, -\# DOC_LEAD, in the body of a document, should always be associated -\# with the start of a new page (in other words, just before or -\# just after a manual NEWPAGE). -\# -.MAC DOC_LEAD END -. if \\n[#IGNORE] \{ .return \} -. br -. vs \\$1 -. nr #DOC_LEAD \\n[#LEAD] -. if '\\$2'ADJUST' \{ .TRAPS \} -.END -\# -\# -\# ADJUST DOCUMENT LEAD -\# -------------------- -\# *Arguments: -\# | -\# *Function: -\# Adjusts document lead so that the last line of text falls exactly -\# on #B_MARGIN. -\# -.MAC DOC_LEAD_ADJUST END -. ie '\\$1'' \{\ -. nr #ADJ_DOC_LEAD 1 -. \} -. el \{\ -. nr #ADJ_DOC_LEAD 0 -. nr #DOC_LEAD_ADJUST_OFF 1 -. \} -.END -\# -\# -\# SHIM -\# ---- -\# *Argument: -\# None -\# *Function: -\# Advances to the next "legal" baseline. -\# *Notes: -\# If a user plays around with spacing in a doc (say, with ALD), -\# it isn't easy to get mom back on track so she can achieve -\# perfectly flush bottom margins. Any time SHIM is used, it -\# ensures that the next output line falls on a legal baseline. -\# -\# First, a little convenience macro -\# -.MAC PROCESS_SHIM END -. while \\n+[#LEGAL_BASELINE]<\\n[#CURRENT_V_POS] \{\ -. -.\} -. nr #SHIM \\n[#LEGAL_BASELINE]-\\n[#CURRENT_V_POS] -.END -\# -\# -.MAC SHIM END -. nr #LEGAL_BASELINE \\n[#T_MARGIN]-1v \\n[#DOC_LEAD] -. if !r#CURRENT_V_POS \{ .nr #CURRENT_V_POS \\n(.d \} -. ie r#ADVANCE_FROM_TOP \{\ -. ie \\n[#CURRENT_V_POS]<(\\n[#T_MARGIN]-1v) \{\ -. while \\n-[#LEGAL_BASELINE]>\\n[#CURRENT_V_POS] \{\ -. -.\} -. nr #LEGAL_BASELINE +\\n[#DOC_LEAD] -. nr #SHIM \\n[#LEGAL_BASELINE]-\\n[#CURRENT_V_POS] -. \} -. el \{\ -. PROCESS_SHIM -. \} -. \} -. el \{\ -. PROCESS_SHIM -. \} -. ALD \\n[#SHIM]u -. rr #CURRENT_V_POS -.END -\# -\# -\# -\# ==================================================================== -\# -\# +++INTERNATIONALIZATION+++ -\# -\# ATTRIBUTE STRING -\# ---------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $ATTRIBUTE_STRING. -\# *Notes: -\# Default is "by". A blank string ("") may be used if no -\# attribution is desired. -\# -.MAC ATTRIBUTE_STRING END -. ds $ATTRIBUTE_STRING \\$1 -.END -\# -\# -\# CHAPTER STRING -\# -------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $CHAPTER_STRING. -\# *Notes: -\# Default is "chapter". -\# -.MAC CHAPTER_STRING END -. ds $CHAPTER_STRING \\$1 -.END -\# -\# -\# DRAFT STRING -\# ------------ -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $DRAFT_STRING. -\# *Notes: -\# Default is "draft". -\# -.MAC DRAFT_STRING END -. ds $DRAFT_STRING \\$1 -.END -\# -\# -\# REVISION STRING -\# --------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $REVISION_STRING. -\# *Notes: -\# Default is "revision". -\# -.MAC REVISION_STRING END -. ds $REVISION_STRING \\$1 -.END -\# -\# -\# FINIS STRING -\# ------------ -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $FINIS_STRING. -\# *Notes: -\# Default is "END". -\# -.MAC FINIS_STRING END -. nr #FINIS 1 -. CAPS -. ds $FINIS_STRING \\$1 -. CAPS OFF -.END -\# -\# -\# ==================================================================== -\# -\# +++RECTO/VERSO+++ -\# -\# RECTO_VERSO -\# ----------- -\# *Arguments: -\# | -\# *Function: -\# Switches HDRFTR_LEFT and HDRFTR_RIGHT on alternate pages. Also -\# switches page numbers left and right if either is chosen rather -\# than the default centered page numbers. Switches left and right -\# margins if differing values have been entered. -\# *Notes: -\# Default is OFF. -\# -.MAC RECTO_VERSO END -. ie '\\$1'' \{ .nr #RECTO_VERSO 1 \} -. el \{ .nr #RECTO_VERSO 0 \} -.END -\# -\# ==================================================================== -\# -\# +++EPIGRAPHS+++ -\# -\# EPIGRAPH INDENT -\# --------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies register #EPI_OFFSET_VALUE. -\# *Notes: -\# Default is 2 for TYPEWRITE, 3 for TYPESET. -\# -.MAC EPIGRAPH_INDENT END -. nr #EPI_OFFSET_VALUE \\$1 -.END -\# -\# -\# EPIGRAPH AUTOLEAD -\# ----------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies register #EPI_AUTOLEAD. -\# *Notes: -\# Default is 2 (for TYPESET; TYPEWRITE doesn't require this). -\# -.MAC EPIGRAPH_AUTOLEAD END -. nr #EPI_AUTOLEAD \\$1 -.END -\# -\# -\# EPIGRAPH -\# -------- -\# *Arguments: -\# BLOCK | -\# *Function: -\# Places an epigraph before the document's text, after the -\# document header, or after a HEAD. -\# *Notes: -\# #EPIGRAPH 1 = centered; 2 = block -\# -\# By default, epigraphs are centered, allowing the user -\# to input them on a line per line basis. To change this -\# behaviour, the user can supply the argument BLOCK, which -\# will produce indented, filled text similar to BLOCKQUOTE. -\# -\# If a block epigraph contains more than one para, ALL paras of -\# the epigraph must be preceded by PP. Otherwise, PP is optional. -\# -.MAC EPIGRAPH END -. nr #PP_STYLE 2 -. nr #Q_PP 0 -. if \\n[#LINENUMBERS]=1 \{\ -. NUMBER_LINES OFF -. nr #LINENUMBERS 2 -. \} -. if \\n[#START] \{\ -. if \\n[#PRINT_STYLE]=1 \{\ -. if \\n[#AUTHOR_LINES]=1 \{ .ALD \\n[#DOC_LEAD]u \} -. \} -. \} -. ie '\\$1'' \{\ -. nr #EPIGRAPH 1 -. ev EPIGRAPH -. nr #IN_DIVER 1 -. ll \\n[#L_LENGTH]u -. ta \\n(.lu -. CHECK_INDENT -. if \\n[#COLUMNS] \{\ -. ie \\n[#START] \{\ -. ll \\n[#DOC_L_LENGTH]u -. ta \\n(.lu -. \} -. el \{\ -. ll \\n[#COL_L_LENGTH]u -. ta \\n(.lu -. \} -. \} -. CENTER -. if \\n[#PRINT_STYLE]=1 \{\ -. fam C -. ft R -. if '\\*[$EPI_FT]'I' \{\ -. FT I -. \} -. ps 12 -. ie \\n[#SINGLE_SPACE] \{ .vs \\n[#DOC_LEAD]u \} -. el \{ .vs \\n[#DOC_LEAD]u/2u \} -. nr #EPI_LEAD \\n[#LEAD] -. nr #EPI_LEAD_DIFF \\n[#DOC_LEAD]-\\n[#EPI_LEAD] -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. FAMILY \\*[$EPI_FAM] -. FT \\*[$EPI_FT] -. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$EPI_SIZE_CHANGE] -. if \\n[#EPI_COLOR]=1 \{\ -. nf -\m[\\*[$EPI_COLOR]] -. EOL -. \} -. AUTOLEAD \\n[#EPI_AUTOLEAD] -. nr #EPI_LEAD \\n[#LEAD] -. nr #EPI_LEAD_DIFF \\n[#DOC_LEAD]-\\n[#EPI_LEAD] -. \} -. di EPI_TEXT -. nr #DIVERSIONS_HY_MARGIN (p;\\n[.ps]u*2.75)/1000 -. HY_SET 1 \\n[#DIVERSIONS_HY_MARGIN]u (\\n[#PT_SIZE]u/1000u/8u)p -. hy 14 -. nr #EPI_ACTIVE 1 -. \} -. el \{\ -. ie '\\$1'BLOCK' \{\ -. nr #EPIGRAPH 2 -. ev EPIGRAPH -. ie \\n[#START] \{\ -. ie \\n[#COLUMNS] \{\ -. ll \\n[#L_LENGTH_FOR_EPI]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u)) -. ta \\n(.lu -. \} -. el \{\ -. ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u)) -. ta \\n(.lu -. \} -. \} -. el \{\ -. ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u)) -. ta \\n(.lu -. if \\n[#COLUMNS] \{\ -. ll \\n[#COL_L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u)) -. ta \\n(.lu -. \} -. CHECK_INDENT -. \} -. if \\n[#PRINT_STYLE]=1 \{\ -. fam C -. ft R -. if '\\*[$EPI_FT]'I' \{\ -. FT I -. \} -. ps 12 -. ie \\n[#SINGLE_SPACE] \{ .vs \\n[#DOC_LEAD]u \} -. el \{ .vs \\n[#DOC_LEAD]u/2u \} -. QUAD LEFT -. HY OFF -. nr #EPI_LEAD \\n[#LEAD] -. nr #EPI_LEAD_DIFF \\n[#DOC_LEAD]-\\n[#EPI_LEAD] -. di EPI_TEXT -. nr #EPI_ACTIVE 1 -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. FAMILY \\*[$EPI_FAM] -. FT \\*[$EPI_FT] -. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$EPI_SIZE_CHANGE] -. if \\n[#EPI_COLOR]=1 \{\ -. nf -\m[\\*[$EPI_COLOR]] -. EOL -. \} -. AUTOLEAD \\n[#EPI_AUTOLEAD] -. QUAD \\*[$EPI_QUAD] -. nr #DIVERSIONS_HY_MARGIN (p;\\n[.ps]u*2.75)/1000 -. HY_SET 1 \\n[#DIVERSIONS_HY_MARGIN]u (\\n[#PT_SIZE]u/1000u/8u)p -. hy 14 -. nr #EPI_LEAD \\n[#LEAD] -. nr #EPI_LEAD_DIFF \\n[#DOC_LEAD]-\\n[#EPI_LEAD] -. di EPI_TEXT -. nr #EPI_ACTIVE 1 -. \} -. \} -. el \{\ -. DO_EPIGRAPH -. \} -. \} -.END -\# -\# -\# DO EPIGRAPH -\# ----------- -\# *Arguments: -\# -\# *Function: -\# Ends diversion started in EPIGRAPH. Makes spacing -\# adjustments to compensate for the difference between epigraph -\# leading and overall document leading, so that the bottom of -\# the pages remain flush. -\# *Notes: -\# In addition to its usual place at the beginning of a -\# document, EPIGRAPH may also be used after HEAD. -\# -.MAC DO_EPIGRAPH END -. br -. di -. rr #IN_DIVER -. if \\n[#RESET_FN_COUNTERS]=2 \{\ -. if !\\n[#FN_COUNT]=1 \{\ -. if ((\\n[#PAGE_LENGTH]+\\n[#VARIABLE_FOOTER_POS])+\\n[#DIVER_DEPTH])>(\\n[#PAGE_LENGTH]+\\n[#VARIABLE_FOOTER_POS]) \{\ -. DIVER_FN_2_POST -. rr #RESET_FN_COUNTERS -. \} -. \} -. \} -. nr #SAVED_FN_NUMBER \\n[#FN_NUMBER] -. nr #DONE_ONCE 0 1 -. REMOVE_INDENT -. ev -. nr #EPI_DEPTH \\n[#DIVER_DEPTH]-\\n[#EPI_LEAD] -. nr #EPI_LINES \\n[#EPI_DEPTH]/\\n[#EPI_LEAD] -. ie \\n[#START] \{\ -. RLD \\n[#SHIM]u -. nr #EPI_WHITESPACE (\\n[#DOC_LEAD]*\\n[#EPI_LINES])-\\n[#EPI_DEPTH] -. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\ -. nr #EPI_WHITESPACE -\\n[#DOC_LEAD] -.\} -. if \\n[#PRINT_STYLE]=2 \{\ -. RLD \\n[#DOC_LEAD]u -. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{\ -. ALD \\n[#EPI_LEAD_DIFF]u+(\\n[#EPI_WHITESPACE]u/2u) -. \} -. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\ -. ALD \\n[#EPI_LEAD_DIFF]u+(\\n[#EPI_WHITESPACE]u/2u)-\\n[#DOC_LEAD]u -. \} -. \} -. \} -. el \{\ -. ie \\n[#EPI_DEPTH]<\\n[#TRAP_DISTANCE] \{\ -. nr #EPI_FITS 1 -. nr #EPI_WHITESPACE (\\n[#DOC_LEAD]*\\n[#EPI_LINES])-\\n[#EPI_DEPTH] -. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\ -. nr #EPI_WHITESPACE -\\n[#DOC_LEAD] -.\} -. ie \\n[#PRINT_STYLE]=1 \{\ -. if \\n[#EPI_WHITESPACE]=\\n[#DOC_LEAD] \{ .ALD \\n[#EPI_WHITESPACE]u/2u \} -. \} -. el \{\ -. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{\ -. ALD \\n[#EPI_LEAD_DIFF]u+(\\n[#EPI_WHITESPACE]u/2u) -. \} -. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\ -. ALD \\n[#EPI_LEAD_DIFF]u+(\\n[#EPI_WHITESPACE]u/2u)-\\n[#DOC_LEAD]u -. \} -. \} -. if \\n[#DIVER_FN]=2 \{ .rr #DIVER_FN \} -. \} -. el \{\ -. nr #EPI_LINES_TO_TRAP 0 1 -. while \\n[#EPI_LEAD]*\\n+[#EPI_LINES_TO_TRAP]<\\n[#TRAP_DISTANCE] \{\ -. nr #LOOP 1 -.\} -. nr #EPI_LINES_TO_TRAP -1 -. nr #EPI_WHITESPACE (\\n[#EPI_LINES_TO_TRAP]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_TRAP]*\\n[#EPI_LEAD]) -. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\ -. nr #EPI_WHITESPACE -\\n[#DOC_LEAD] -.\} -. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{ .ALD \\n[#EPI_WHITESPACE]u \} -. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{ .ALD \\n[#EPI_WHITESPACE]u-\\n[#DOC_LEAD]u \} -. \} -. \} -. if \\n[#EPIGRAPH]=1 \{\ -. po \\n[#L_MARGIN]u -. if \\n[#COLUMNS] \{\ -. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u -. nr #L_MARGIN \\n(.o -. \} -. \} -. if \\n[#EPIGRAPH]=2 \{\ -. nr #EPI_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE]) -. if \\n[#COLUMNS] \{\ -. nr #EPI_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE]) -. \} -. po \\n[#EPI_OFFSET]u -. \} -. nf -. EPI_TEXT -. br -. ie \\n[#START] \{\ -. if \\n[#PRINT_STYLE]=1 \{\ -. ie \\n[#SINGLE_SPACE] \{ .ALD \\n[#DOC_LEAD]u \} -. el \{\ -. ie \\n[#EPI_LINES]%2=1 \{ .ALD \\n[#DOC_LEAD]u \} -. el \{ .ALD \\n[#DOC_LEAD]u/2u \} -. \} -. SHIM -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{\ -. ALD \\n[#EPI_WHITESPACE]u/2u -. \} -. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\ -. ALD (\\n[#EPI_WHITESPACE]u/2u)-\\n[#DOC_LEAD]u -. \} -. SHIM -. \} -. \} -. el \{\ -. rr #EPI_ACTIVE -. ie \\n[#EPI_FITS] \{\ -. ie \\n[#FN_FOR_EPI] \{\ -. nr #EPI_LINES_TO_END 1 -. nr #EPI_WHITESPACE (\\n[#EPI_LINES_TO_END]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_END]*\\n[#EPI_LEAD]) -. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\ -. nr #EPI_WHITESPACE -\\n[#DOC_LEAD] -.\} -. ALD \\n[#EPI_WHITESPACE]u-(\\n[#DOC_LEAD]u-\\n[#EPI_LEAD]u) -. \} -. el \{\ -. ie \\n[#PRINT_STYLE]=1 \{\ -. if \\n[#EPI_WHITESPACE]=\\n[#DOC_LEAD] \{ .ALD \\n[#EPI_WHITESPACE]u \} -. \} -. el \{\ -. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{\ -. ALD \\n[#EPI_WHITESPACE]u/2u -. \} -. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\ -. ALD (\\n[#EPI_WHITESPACE]u/2u)-\\n[#DOC_LEAD]u -. \} -. \} -. \} -. \} -. el \{\ -. nr #EPI_LINES_TO_END \\n[#EPI_LINES]-\\n[#EPI_LINES_TO_TRAP] -. if \\n[#LOOP] \{ .nr #EPI_LINES_TO_END +1 \} -. rr #LOOP -. nr #EPI_WHITESPACE (\\n[#EPI_LINES_TO_END]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_END]*\\n[#EPI_LEAD]) -. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\ -. nr #EPI_WHITESPACE -\\n[#DOC_LEAD] -.\} -. ALD \\n[#EPI_WHITESPACE]u-(\\n[#DOC_LEAD]u-\\n[#EPI_LEAD]u) -. if \\n[#PRINT_STYLE]=1 \{\ -. if !\\n[#SINGLE_SPACE] \{\ -. nr #EPI_LINES_EVEN \\n[#EPI_LINES_TO_END]%2 -. ie \\n[#EPI_LINES_EVEN] \{ .ALD .5v \} -. el \{ .RLD .5v \} -. rr #EPI_LINES_EVEN -. \} -. \} -. \} -. \} -. nr #PP_STYLE 1 -. rr #EPI_FITS -. ALD \\n[#DOC_LEAD]u -. QUAD \\*[$DOC_QUAD] -. po \\n[#L_MARGIN]u -. if \\n[#COLUMNS] \{\ -. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u -. nr #L_MARGIN \\n(.o -. \} -. if \\n[#START] \{\ -. if \\n[#COLUMNS] \{\ -. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u -. nr #L_MARGIN \\n(.o -. mk dc -. \} -. \} -. if \\n[#LINENUMBERS]=2 \{\ -. NUMBER_LINES RESUME -. nr #LINENUMBERS 1 -. \} -.END -\# -\# ==================================================================== -\# -\# +++FINIS MACRO+++ -\# -\# FINIS -\# ----- -\# *Arguments: -\# -\# *Function: -\# Deposits --END-- at the end of a document. -\# -.MAC FINIS END -. br -. ev FINIS -. evc 0 -. if \\n[#TAB_ACTIVE] \{ .TQ \} -. if \\n[#INDENT_ACTIVE] \{ .IQ CLEAR \} -. nr #EM_ADJUST (1m/8) -. if \\n[#COLUMNS] \{\ -. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u -. nr #L_MARGIN \\n(.o -. \} -. ALD \\n[#DOC_LEAD]u -. CENTER -. if \\n[#PRINT_STYLE]=1 \{ .PRINT "--\\*[$FINIS_STRING]--\} -. if \\n[#PRINT_STYLE]=2 \{\ -. ie \\n[#FINIS_COLOR] \{\ -. PRINT "\m[\\*[$FINIS_COLOR]]\v'-\\n[#EM_ADJUST]u'\(em\v'+\\n[#EM_ADJUST]u'\\*[$FINIS_STRING]\v'-\\n[#EM_ADJUST]u'\*[FU1]\(em\m[] -. \} -. el \{ .PRINT \v'-\\n[#EM_ADJUST]u'\(em\v'+\\n[#EM_ADJUST]u'\\*[$FINIS_STRING]\v'-\\n[#EM_ADJUST]u'\*[FU1]\(em\m[] \} -. \} -. ev -.END -\# -\# ==================================================================== -\# -\# +++HEADERS/FOOTERS+++ -\# -\# Define a string so that the current page number can be incorporated -\# into the strings for hdrftr left, right, and center. NOTE: This is -\# not the same thing as using the shortform # in hdrftr strings. -\# -.ds PAGE# \En[#PAGENUMBER] -\# -\# -\# HDRFTR RULE GAP -\# --------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies register #HDRFTR_RULE_GAP to hold amount -\# of space between header/footer and header/footer rule. -\# *Notes: -\# Default is 4p. -\# -.MAC HDRFTR_RULE_GAP END -. nr #HDRFTR_RULE_GAP (\\$1) -.END -\# -\# -\# HDRFTR LEFT -\# ----------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $HDRFTR_LEFT. -\# Creates register #USER_DEF_HDRFTR_LEFT, which, if 1, -\# overrides the $HDRFTR_LEFT string created by default -\# in DEFAULTS. -\# *Notes: -\# Especially useful if doc has more than one author, and a list -\# of authors by last name is desired in header/footers. -\# Default is author. -\# -\# If the argument is the # character, simply prints the current -\# page number. -\# -\# If the user wants to *incorporate* the page number into the string, -\# \*[PAGE#] must be used. For example, if the user wants to put -\# an elipsis before the page number in the string, s/he should use -\# ...\*[PAGE#], not ...# -\# -.MAC HDRFTR_LEFT END -. nr #USER_DEF_HDRFTR_LEFT 1 -. ds $HDRFTR_LEFT \\$1 -.END -\# -\# -\# HDRFTR LEFT CAPS -\# ---------------- -\# *Argument: -\# | -\# *Function: -\# Turns capitalisation of $HDRFTR_LEFT (typically, the author of -\# the document) on or off. -\# *Notes: -\# Default is on. -\# -.MAC HDRFTR_LEFT_CAPS END -. ie '\\$1'' \{\ -. nr #HDRFTR_LEFT_CAPS 1 -. \} -. el \{\ -. nr #HDRFTR_LEFT_CAPS 0 -. ds $HDRFTR_LEFT_SIZE_CHANGE +0 -. \} -.END -\# -\# -\# HDRFTR CENTER -\# ------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $HDRFTR_CENTER. -\# Creates register #USER_DEF_HDRFTR_CENTER, which, if 1, -\# overrides the $HDRFTR_CENTER string created by default -\# in COPYSTYLE. -\# *Notes: -\# Default is document type if DOCTYPE NAMED, Chapter # if DOCTYPE -\# CHAPTER, draft and revision number if COPYSTYLE DRAFT. -\# -\# If the argument is the # character, simply prints the current -\# page number. -\# -\# If the user wants to *incorporate* the page number into the string, -\# \*[PAGE#] must be used. For example, if the user wants to put -\# an elipsis before the page number in the string, s/he should use -\# ...\*[PAGE#], not ...# -\# -.MAC HDRFTR_CENTER END -. nr #USER_DEF_HDRFTR_CENTER 1 -. if '\\$0'FOOTER_CENTER' \{\ -. ds $HDRFTR_CENTER_OLD \\*[$HDRFTR_CENTER] -. ds $HDRFTR_CENTER_NEW \\$1 -. \} -. if '\\$0'FOOTER_CENTRE' \{\ -. ds $HDRFTR_CENTER_OLD \\*[$HDRFTR_CENTER] -. ds $HDRFTR_CENTER_NEW \\$1 -. \} -. ds $HDRFTR_CENTER \\$1 -.END -\# -\# -\# HDRFTR CENTER CAPS -\# ------------------ -\# *Argument: -\# | -\# *Function: -\# Turns capitalisation of $HDRFTR_CENTER (typically, doctype of -\# the document) on or off. -\# *Notes: -\# Default is on. -\# -.MAC HDRFTR_CENTER_CAPS END -. ie '\\$1'' \{\ -. nr #HDRFTR_CENTER_CAPS 1 -. \} -. el \{\ -. nr #HDRFTR_CENTER_CAPS 0 -. ds $HDRFTR_CENTER_SIZE_CHANGE +0 -. \} -.END -\# -\# -\# HDRFTR CENTER PADDING -\# --------------------- -\# *Argument: -\# LEFT | RIGHT -\# *Function: -\# Creates or modifies registers #HDRFTR_CTR_PAD_LEFT or -\# #HDRFTR_CTR_PAD_RIGHT. -\# *Notes: -\# By default, the HDRFTR_CENTER string is centered on the doc -\# line length. Long titles or long author names can screw up -\# visual centering, or create overprints. This macro allows the -\# user to pad the center string by the specified amount of space -\# to fix these problems. Use only one of LEFT or RIGHT. -\# -\# A unit of measure is required. -\# -.MAC HDRFTR_CENTER_PAD END -. if '\\$1'LEFT' \{\ -. nr #HDRFTR_CTR_PAD_LEFT (\\$2) -. \} -. if '\\$1'RIGHT' \{\ -. nr #HDRFTR_CTR_PAD_RIGHT (\\$2) -. \} -.END -\# -\# -\# SWITCH HDRFTR CENTER PADDING SIDE - support macro -\# -------------------------------- -\# *Argument: -\# -\# *Function: -\# Switches the padding side of hdrftr center padding. -\# *Notes: -\# Required to keep spacing around hdrftr string constant -\# in recto/verso documents. -\# -.MAC SWITCH_HDRFTR_CENTER_PAD END -. nr #HDRFTR_CTR_PAD_TMP \\n[#HDRFTR_CTR_PAD_LEFT] -. HDRFTR_CENTER_PAD LEFT \\n[#HDRFTR_CTR_PAD_RIGHT]u -. HDRFTR_CENTER_PAD RIGHT \\n[#HDRFTR_CTR_PAD_TMP]u -.END -\# -\# -\# HDRFTR RIGHT -\# ------------ -\# *Argument: -\# -\# *Function: -\# Creates or modifies string $HDRFTR_RIGHT. -\# Creates register #USER_DEF_HDRFTR_RIGHT, which, if 1, -\# overrides the $HDRFTR_RIGHT string created by default -\# in DEFAULTS. -\# *Notes: -\# Default is document title. -\# -\# If the argument is the # character, simply prints the current -\# page number. -\# -\# If the user wants to *incorporate* the page number into the string, -\# \*[PAGE#] must be used. For example, if the user wants to put -\# an elipsis before the page number in the string, s/he should use -\# ...\*[PAGE#], not ...# -\# -.MAC HDRFTR_RIGHT END -. nr #USER_DEF_HDRFTR_RIGHT 1 -. ds $HDRFTR_RIGHT \\$1 -.END -\# -\# -\# HDRFTR RIGHT CAPS -\# ----------------- -\# *Argument: -\# | -\# *Function: -\# Turns capitalisation of $HDRFTR_RIGHT (typically, the title of -\# the document) on or off. -\# *Notes: -\# Default is on. -\# -.MAC HDRFTR_RIGHT_CAPS END -. ie '\\$1'' \{\ -. nr #HDRFTR_RIGHT_CAPS 1 -. \} -. el \{\ -. nr #HDRFTR_RIGHT_CAPS 0 -. ds $HDRFTR_RIGHT_SIZE_CHANGE +0 -. \} -.END -\# -\# -\# HDRFTR RULE -\# ----------- -\# *Arguments: -\# | -\# *Function: -\# If invoked via the alias HDRFTR_RULE_INTERNAL in HDRFTR, prints a rule -\# under the header/over the footer. Otherwise, turns HDRFTR_RULE -\# on or off. -\# -.MAC HDRFTR_RULE END \"To print rule under header/over footer. -. ie '\\$0'HDRFTR_RULE_INTERNAL' \{\ -. ie \\n[#USERDEF_HDRFTR] \{\ -. nr #CAP_HEIGHT_ADJUST \\n[#HDRFTR_HEIGHT] -. ps 12 -. if \\n[#HEADERS_ON] \{\ -. rt \\nyu -. ALD \\n[#HDRFTR_RULE_GAP]u -. \} -. if \\n[#FOOTERS_ON] \{\ -. rt \\nyu -. RLD \\n[#HDRFTR_RULE_GAP]u+\\n[#CAP_HEIGHT_ADJUST]u+1p -. \} -. ie \\n[#HDRFTR_RULE_COLOR]=1 \{\ -. PRINT \m[\\*[$HDRFTR_RULE_COLOR]]\\l'\\n[#DOC_L_LENGTH]u'\m[] -. \} -. el \{\ -. PRINT \\l'\\n[#DOC_L_LENGTH]u' -. \} -. br -. \} -. el \{\ -. if \\n[#PRINT_STYLE]=1 \{\ -. nr #CAP_HEIGHT_ADJUST \\n[#CAP_HEIGHT] -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. ie \\n[#LEFT_CAP_HEIGHT]>\\n[#CENTER_CAP_HEIGHT] \{\ -. nr #CAP_HEIGHT_ADJUST \\n[#LEFT_CAP_HEIGHT] -. \} -. el \{ .nr #CAP_HEIGHT_ADJUST \\n[#CENTER_CAP_HEIGHT] \} -. ie \\n[#CAP_HEIGHT_ADJUST]>\\n[#RIGHT_CAP_HEIGHT] \{\ -. nr #CAP_HEIGHT_ADJUST \\n[#CAP_HEIGHT_ADJUST] -. \} -. el \{ .nr #CAP_HEIGHT_ADJUST \\n[#RIGHT_CAP_HEIGHT] \} -. \} -. ps 12 -. if \\n[#HEADERS_ON] \{\ -. rt \\nyu -. ALD \\n[#HDRFTR_RULE_GAP]u -. \} -. if \\n[#FOOTERS_ON] \{\ -. rt \\nyu -. RLD \\n[#HDRFTR_RULE_GAP]u+\\n[#CAP_HEIGHT_ADJUST]u+1p -. \} -. ie \\n[#HDRFTR_RULE_COLOR]=1 \{\ -. PRINT \m[\\*[$HDRFTR_RULE_COLOR]]\\l'\\n[#DOC_L_LENGTH]u'\m[] -. \} -. el \{\ -. PRINT \\l'\\n[#DOC_L_LENGTH]u' -. \} -. br -. \} -. \} -. el \{\ -. ie '\\$1'' \{ .nr #HDRFTR_RULE 1 \} -. el \{ .nr #HDRFTR_RULE 0 \} -. \} -.END -\# -\# -.ALIAS HDRFTR_RULE_INTERNAL HDRFTR_RULE -\# -\# -\# HDRFTR PLAIN -\# ------------ -\# *Arguments: -\# -\# *Function: -\# Sets the family, font, and point size of all strings in -\# header/footers to the same family and point size as running -\# text. Font for the header/footer becomes roman throughout. -\# -.MAC HDRFTR_PLAIN END -. HDRFTR_FAMILY \\*[$DOC_FAM] -. HDRFTR_PT_SIZE \\n[#DOC_PT_SIZE] -. HDRFTR_LEFT_FAMILY \\*[$DOC_FAM] -. HDRFTR_LEFT_FONT R -. HDRFTR_LEFT_SIZE +0 -. HDRFTR_LEFT_CAPS OFF -. HDRFTR_CENTER_FAMILY \\*[$DOC_FAM] -. HDRFTR_CENTER_FONT R -. HDRFTR_CENTER_SIZE +0 -. HDRFTR_CENTER_CAPS OFF -. HDRFTR_RIGHT_FAMILY \\*[$DOC_FAM] -. HDRFTR_RIGHT_FONT R -. HDRFTR_RIGHT_SIZE +0 -. HDRFTR_RIGHT_CAPS OFF -.END -\# -\# -\# SWITCH HDRFTR -\# ------------- -\# *Arguments: -\# | -\# *Function: -\# Creates or modifies register #SWITCH_HDRFTR, used to switch -\# default location of HDRFTR_LEFT and HDRFTR_RIGHT. -\# *Notes: -\# -.ig -Typically, the author string appears at the left of header/footers, -and the title string appears at the right. This switches the -location of the two. Useful in conjuction with RECTO_VERSO to tweak -switches on alternate pages to come out as the user wishes. The -assumption of RECTO_VERSO is that the first page of the document -(recto) is odd, and even though it has no header/footer, if it did -have one, it would print as AUTHOR...CENTER...TITLE (or whatever -strings the user has supplied for HDRFTR_LEFT/RIGHT), meaning that -the next page, which does have a header/footer, will come out as -TITLE...CENTER...AUTHOR (or whatever strings the user has supplied -for HDRFTR_LEFT/RIGHT). SWITCH_HDRFTRS allows the user to get the -desired string in the desired place on the desired recto/verso page. - -Default is OFF. -.. -\# -.MAC SWITCH_HDRFTR END -. ie '\\$1'' \{ .nr #SWITCH_HDRFTR 1 \} -. el \{ .nr #SWITCH_HDRFTR 0 \} -.END -\# -\# -\# USER DEFINED HDRFTR RECTO -\# ------------------------- -\# *Arguments: -\# L | LEFT | C | CENTER | CENTER | R | RIGHT -\# *Function: -\# Toggles #USERDEF_HDRFTR on, stores quad as #USERDEF_HDRFTR_RECTO_QUAD, -\# stores string in $USERDEF_HDRFTR_RECTO. -\# *Notes: -\# For use when users don't want 3-part headers/footers, but rather -\# want to design their own headers/footers and need different -\# headers/footers on recto and verso pages. Using just -\# HEADER_RECTO, even when recto/verso is not on, allows users to -\# design their own headers/footers for doc pages. -\# -.MAC HDRFTR_RECTO END -. nr #USERDEF_HDRFTR 1 -. if '\\$1'L' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 1 \} -. if '\\$1'LEFT' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 1 \} -. if '\\$1'C' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 2 \} -. if '\\$1'CENTER' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 2 \} -. if '\\$1'CENTRE' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 2 \} -. if '\\$1'R' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 3 \} -. if '\\$1'RIGHT' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 3 \} -. ds $USERDEF_HDRFTR_RECTO \\$2 -.END -\# -\# -\# USER DEFINED HDRFTR VERSO -\# ------------------------- -\# *Arguments: -\# L | LEFT | C | CENTER | CENTER | R | RIGHT -\# *Function: -\# Toggles #USERDEF_HDRFTR on, stores quad as #USERDEF_HDRFTR_VERSO_QUAD, -\# stores string in $USERDEF_HDRFTR_VERSO. -\# *Notes: -\# For use when users don't want 3-part headers/footers, but rather -\# want to design their own headers/footers and need different -\# headers/footers on recto and verso pages. -\# -.MAC HDRFTR_VERSO END -. nr #USERDEF_HDRFTR 1 -. if '\\$1'L' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 1 \} -. if '\\$1'LEFT' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 1 \} -. if '\\$1'C' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 2 \} -. if '\\$1'CENTER' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 2 \} -. if '\\$1'CENTRE' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 2 \} -. if '\\$1'R' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 3 \} -. if '\\$1'RIGHT' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 3 \} -. ds $USERDEF_HDRFTR_VERSO \\$2 -.END -\# -\# -\# PRINT FOOTER ON FIRST PAGE -\# -------------------------- -\# *Arguments: -\# | -\# *Function: -\# Toggles register #PRINT_FOOTER_ON_PAGE_1 -\# *Notes: -\# Lets user choose whether to print footer on first -\# page of doc. -\# -.MAC FOOTER_ON_FIRST_PAGE END -. ie '\\$1'' \{ .nr #PRINT_FOOTER_ON_PAGE_1 1 \} -. el \{ .rr #PRINT_FOOTER_ON_PAGE_1 \} -.END -\# -\# -\# PRINT PAGE NUMBER ON FIRST PAGE -\# ------------------------------- -\# *Arguments: -\# | -\# *Function: -\# Toggles register #PRINT_PAGENUM_ON_PAGE_1 -\# *Notes: -\# Lets user choose whether to print page number on first -\# page of doc and after collate when footers are on or page numbering -\# has been user set at top of page. -\# -.MAC PAGENUM_ON_FIRST_PAGE END -. ie '\\$1'' \{ .nr #PRINT_PAGENUM_ON_PAGE_1 1 \} -. el \{ .rr #PRINT_PAGENUM_ON_PAGE_1 \} -.END -\# -\# -\# PRINT HEADER/FOOTER -\# ------------------- -\# *Arguments: -\# -\# *Function: -\# Based on defaults or values entered by user, prints a -\# three-part title at either the top or the bottom of the page. -\# *Notes: -\# Called from within either HEADER or FOOTER. -\# -.MAC PRINT_HDRFTR END -. if \\n[#DOC_TYPE]=4 \{\ -. nr #SUITE \En[.pn] -. \} -. if \\n[#FOOTERS_ON] \{\ -. if \\n[#START_FOR_FOOTERS] \{\ -. rr #START_FOR_FOOTERS -. if !\\n[#PRINT_FOOTER_ON_PAGE_1] \{ .return \} -. \} -. \} -. if \\n[#USERDEF_HDRFTR] \{\ -. PRINT_USERDEF_HDRFTR -. return -. \} -. if \\n[#SWITCH_HDRFTR] \{\ -. ds $HDRFTR_TMP_SWITCH \\*[$HDRFTR_LEFT] -. ds $HDRFTR_LEFT \\*[$HDRFTR_RIGHT] -. ds $HDRFTR_RIGHT \\*[$HDRFTR_TMP_SWITCH] -. ds $HDRFTR_TMP_SIZE_CHANGE_SWITCH \\*[$HDRFTR_LEFT_SIZE_CHANGE] -. ds $HDRFTR_LEFT_SIZE_CHANGE \\*[$HDRFTR_RIGHT_SIZE_CHANGE] -. ds $HDRFTR_RIGHT_SIZE_CHANGE \\*[$HDRFTR_TMP_SIZE_CHANGE_SWITCH] -. nr #HDRFTR_TMP_CAPS_SWITCH \\n[#HDRFTR_LEFT_CAPS] -. nr #HDRFTR_LEFT_CAPS \\n[#HDRFTR_RIGHT_CAPS] -. nr #HDRFTR_RIGHT_CAPS \\n[#HDRFTR_TMP_CAPS_SWITCH] -. ds $HDRFTR_TMP_COLOR_SWITCH \\*[$HDRFTR_LEFT_COLOR] -. ds $HDRFTR_LEFT_COLOR \\*[$HDRFTR_RIGHT_COLOR] -. ds $HDRFTR_RIGHT_COLOR \\*[$HDRFTR_TMP_COLOR_SWITCH] -. rr #HDRFTR_TMP_CAPS_SWITCH -. rm $HDRFTR_TMP_SWITCH -. rm $HDRFTR_TMP_SIZE_CHANGE_SWITCH -. rm $HDRFTR_TMP_COLOR_SWITCH -. nr #SWITCH_HDRFTR 0 -. \} -. nr #PAGENUMBER \\n%+\\n[#PAGE_NUM_ADJ] -. if \\n[#ENDNOTES] \{ .PAGENUM_STYLE \\*[$EN_PN_STYLE] \} -. if \\n[#PRINT_STYLE]=1 \{\ -. if \\n[#FOOTERS_ON] \{\ -. di NULL -. SIZESPECS -. nr #LEFT_CAP_HEIGHT \\n[#CAP_HEIGHT] -. di -. \} -. if o \{ .RIGHT \} -. if e \{ .LEFT \} -. if \\n[#RECTO_VERSO]=0 \{ .LEFT \} -. if \\n[#HDRFTR_LEFT_CAPS] \{ .CAPS \} -. ie '\\*[$HDRFTR_LEFT]'#' \{\ -. PRINT \\n[#PAGENUMBER] -. \} -. el \{\ -. ie !'\\*[$HDRFTR_LEFT]'' \{ . PRINT \\*[$HDRFTR_LEFT] \} -. el \{ .PRINT \& \} -. \} -. if \\n[#HDRFTR_LEFT_CAPS] \{ .CAPS OFF \} -. CENTER -. if \\n[#HDRFTR_CENTER_CAPS] \{ .CAPS \} -. rt \\nyu -. ie '\\*[$HDRFTR_CENTER]'#' \{\ -. PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\n[#PAGENUMBER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u' -. \} -. el \{\ -. ie !'\\*[$HDRFTR_CENTER]'' \{ .PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\*[$HDRFTR_CENTER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u' \} -. el \{ .PRINT \& \} -. \} -. if \\n[#HDRFTR_CENTER_CAPS] \{ .CAPS OFF \} -. if o \{ .LEFT \} -. if e \{ .RIGHT \} -. if \\n[#RECTO_VERSO]=0 \{ .RIGHT \} -. if \\n[#HDRFTR_RIGHT_CAPS] \{ .CAPS \} -. rt \\nyu -. ie '\\*[$HDRFTR_RIGHT]'#' \{\ -. PRINT \\n[#PAGENUMBER] -. \} -. el \{\ -. ie !'\\*[$HDRFTR_RIGHT]'' \{ .PRINT \\*[$HDRFTR_RIGHT] \} -. el \{ .PRINT \& \} -. \} -. if \\n[#HDRFTR_RIGHT_CAPS] \{ .CAPS OFF \} -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. if \\n[#HDRFTR_COLOR]=1 \{\ -. nf -\m[\\*[$HDRFTR_COLOR]] -. EOL -. \} -. fam \\*[$HDRFTR_LEFT_FAM] -. ft \\*[$HDRFTR_LEFT_FT] -. ps \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_LEFT_SIZE_CHANGE] -. vs 12 -. if \\n[#FOOTERS_ON] \{\ -. di NULL -. SIZESPECS -. nr #LEFT_CAP_HEIGHT \\n[#CAP_HEIGHT] -. di -. \} -. if o \{ .LEFT \} -. if e \{ .RIGHT \} -. if \\n[#RECTO_VERSO]=0 \{ .LEFT \} -. if \\n[#HDRFTR_LEFT_CAPS] \{ .CAPS \} -. ie '\\*[$HDRFTR_LEFT]'#' \{\ -. ie \\n[#HDRFTR_LEFT_COLOR]=1 \{\ -. PRINT \m[\\*[$HDRFTR_LEFT_COLOR]]\\n[#PAGENUMBER]\m[] -. \} -. el \{\ -. PRINT \\n[#PAGENUMBER] -. \} -. \} -. el \{\ -. ie !'\\*[$HDRFTR_LEFT]'' \{\ -. ie \\n[#HDRFTR_LEFT_COLOR]=1 \{\ -. PRINT \m[\\*[$HDRFTR_LEFT_COLOR]]\\*[$HDRFTR_LEFT]\m[] -. \} -. el \{\ -. PRINT \\*[$HDRFTR_LEFT] -. \} -. \} -. el \{ .PRINT \& \} -. \} -. if \\n[#HDRFTR_LEFT_CAPS] \{ .CAPS OFF \} -. fam \\*[$HDRFTR_CENTER_FAM] -. ft \\*[$HDRFTR_CENTER_FT] -. ps \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_CENTER_SIZE_CHANGE] -. vs 12 -. if \\n[#FOOTERS_ON] \{\ -. di NULL -. SIZESPECS -. nr #CENTER_CAP_HEIGHT \\n[#CAP_HEIGHT] -. di -. \} -. CENTER -. if \\n[#HDRFTR_CENTER_CAPS] \{ .CAPS \} -. rt \\nyu -. ie '\\*[$HDRFTR_CENTER]'#' \{\ -. ie \\n[#HDRFTR_CENTER_COLOR]=1 \{\ -. PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\m[\\*[$HDRFTR_CENTER_COLOR]]\\n[#PAGENUMBER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'\m[] -. \} -. el \{\ -. PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\n[#PAGENUMBER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u' -. \} -. \} -. el \{\ -. ie !'\\*[$HDRFTR_CENTER]'' \{\ -. ie \\n[#HDRFTR_CENTER_COLOR]=1 \{\ -. PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\m[\\*[$HDRFTR_CENTER_COLOR]]\\*[$HDRFTR_CENTER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'\m[] -. \} -. el \{\ -. PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\*[$HDRFTR_CENTER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u' -. \} -. \} -. el \{ .PRINT \& \} -. \} -. if \\n[#HDRFTR_CENTER_CAPS] \{ .CAPS OFF \} -. fam \\*[$HDRFTR_RIGHT_FAM] -. ft \\*[$HDRFTR_RIGHT_FT] -. ps \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_RIGHT_SIZE_CHANGE] -. vs 12 -. if \\n[#FOOTERS_ON] \{\ -. di NULL -. SIZESPECS -. nr #RIGHT_CAP_HEIGHT \\n[#CAP_HEIGHT] -. di -. \} -. if o \{ .RIGHT \} -. if e \{ .LEFT \} -. if \\n[#RECTO_VERSO]=0 \{ .RIGHT \} -. if \\n[#HDRFTR_RIGHT_CAPS] \{ .CAPS \} -. rt \\nyu -. ie '\\*[$HDRFTR_RIGHT]'#' \{\ -. ie \\n[#HDRFTR_RIGHT_COLOR]=1 \{\ -. PRINT \m[\\*[$HDRFTR_RIGHT_COLOR]]\\n[#PAGENUMBER]\m[] -. \} -. el \{\ -. PRINT \\n[#PAGENUMBER] -. \} -. \} -. el \{\ -. ie !'\\*[$HDRFTR_RIGHT]'' \{\ -. ie \\n[#HDRFTR_RIGHT_COLOR]=1 \{\ -. PRINT \m[\\*[$HDRFTR_RIGHT_COLOR]]\\*[$HDRFTR_RIGHT]\m[] -. \} -. el \{\ -. PRINT \\*[$HDRFTR_RIGHT] -. \} -. \} -. el \{ .PRINT \& \} -. \} -. if \\n[#HDRFTR_RIGHT_CAPS] \{ .CAPS OFF \} -. \} -. if \\n[#HDRFTR_RULE] \{\ -. HDRFTR_RULE_INTERNAL -. \} -. br -.END -\# -\# -\# PRINT USER DEFINED HEADER/FOOTER -\# -------------------------------- -\# *Arguments: -\# -\# *Function: -\# Based on defaults or values entered by user, prints a single part -\# (i.e. not 3-part) title at either the top or the bottom of the page. -\# *Notes: -\# Called from within PRINT_HDRFTR. -\# -.MAC PRINT_USERDEF_HDRFTR END -. nr #PAGENUMBER \\n%+\\n[#PAGE_NUM_ADJ] -. fc ^ # -. if \\n[#PRINT_STYLE]=2 \{\ -. FAMILY \\*[$HDRFTR_FAM] -. FT R -. PT_SIZE \\n[#HDRFTR_PT_SIZE]u -. if \\n[#HDRFTR_COLOR]=1 \{\ -. nf -. COLOR \\*[$HDRFTR_COLOR] -. \} -. \} -. ie \\n[#RECTO_VERSO] \{\ -. if o \{\ -. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=1 \{ .LEFT \} -. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=2 \{ .CENTER \} -. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=3 \{ .RIGHT \} -. PRINT \\*[$USERDEF_HDRFTR_RECTO] -. EOL -. if \\n[#FOOTERS_ON] \{\ -. di NULL -. SIZESPECS -. nr #HDRFTR_HEIGHT \\n[#CAP_HEIGHT] -. di -. \} -. \} -. if e \{\ -. ie !'\\*[$USERDEF_HDRFTR_VERSO]'' \{\ -. if \\n[#USERDEF_HDRFTR_VERSO_QUAD]=1 \{ .LEFT \} -. if \\n[#USERDEF_HDRFTR_VERSO_QUAD]=2 \{ .CENTER \} -. if \\n[#USERDEF_HDRFTR_VERSO_QUAD]=3 \{ .RIGHT \} -. PRINT \\*[$USERDEF_HDRFTR_VERSO] -. EOL -. if \\n[#FOOTERS_ON] \{\ -. di NULL -. SIZESPECS -. nr #HDRFTR_HEIGHT \\n[#CAP_HEIGHT] -. di -. \} -. \} -. el \{\ -. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=1 \{ .LEFT \} -. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=2 \{ .CENTER \} -. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=3 \{ .RIGHT \} -. PRINT \\*[$USERDEF_HDRFTR_RECTO] -. EOL -. if \\n[#FOOTERS_ON] \{\ -. di NULL -. SIZESPECS -. nr #HDRFTR_HEIGHT \\n[#CAP_HEIGHT] -. di -. \} -. \} -. \} -. \} -. el \{\ -. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=1 \{ .LEFT \} -. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=2 \{ .CENTER \} -. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=3 \{ .RIGHT \} -. PRINT \\*[$USERDEF_HDRFTR_RECTO] -. EOL -. if \\n[#FOOTERS_ON] \{\ -. di NULL -. SIZESPECS -. nr #HDRFTR_HEIGHT \\n[#CAP_HEIGHT] -. di -. \} -. \} -. fc -. if \\n[#PRINT_STYLE]=2 \{\ -. ie \\n[#HDRFTR_COLOR]=1 \m[\\*[$HDRFTR_COLOR]] -. el \m[black] -. \} -. if \\n[#HDRFTR_RULE] \{\ -. HDRFTR_RULE_INTERNAL -. \} -.END -\# -\# -\# +++HEADERS+++ -\# -\# HEADERS (off or on) -\# ------------------- -\# *Arguments: -\# | -\# *Function: -\# Turns headers at the top of the page off or on. -\# *Notes: -\# Default is on. -\# -.MAC HEADERS END -. ie '\\$1'' \{ .nr #HEADERS_ON 1 \} -. el \{ .nr #HEADERS_ON 0 \} -.END -\# -\# -\# HEADER MARGIN -\# ------------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies register #HEADER_MARGIN to hold amount -\# of space between top of page and header. -\# *Notes: -\# Requires unit of measure. Default is 4P+6p, measured top-of-page -\# to baseline. -\# -.MAC HEADER_MARGIN END -. nr #HEADER_MARGIN (\\$1) -.END -\# -\# -\# HEADER GAP -\# ---------- -\# *Argument: -\# -\# *Function: -\# Creates or modifies register #HEADER_GAP to hold amount -\# of space between header and running text. -\# *Notes: -\# Default is 1P+6p. -\# -.MAC HEADER_GAP END -. nr #HEADER_GAP (\\$1) -.END -\# -\# -\# HEADER -\# ------ -\# *Arguments: -\# -\# *Function: -\# Prints header appropriate to DOC_TYPE, PRINTSTYLE, and COPYSTYLE. -\# *Notes: -\# In order to convert the title string to caps in the header (in the -\# event that the user enters .TITLE in caps/lc), I've used -\# quad left, quad centre, and quad right to arrange the three bits -\# of the header, rather than .tl. This allows the use of the CAPS macro. -\# The downside is that I have to add \\v'-(\\n[#LEAD]u*) in order -\# for -Tlatin1 output to align the header/footer strings on the baseline. -\# The console output still isn't brilliant, but at least it's -\# comprehensible. -\# -.MAC HEADER END -. MNtop -. rr #FROM_FOOTER -. nr #FROM_HEADER 1 -. nr #LAST_FN_COUNT_FOR_COLS \\n[#FN_COUNT_FOR_COLS] -. if \\n[#FN_DEPTH] \{ .PROCESS_FN_LEFTOVER \} -. rr #RULED -. if \\n[#RESET_FN_NUMBER] \{ .nr #FN_NUMBER 0 1 \} -. po \\n[#DOC_L_MARGIN]u -. if \\n[#RECTO_VERSO] \{\ -. if !\\n[#TOC_RV_SWITCH] \{\ -. nr #DOC_LR_MARGIN_TMP \\n[#DOC_L_MARGIN] -. DOC_LEFT_MARGIN \\n[#DOC_R_MARGIN]u -. DOC_RIGHT_MARGIN \\n[#DOC_LR_MARGIN_TMP]u -. SWITCH_HDRFTR_CENTER_PAD -. \} -. rr #TOC_RV_SWITCH -. \} -. ev HEADER -. if \\n[#PAGE_NUM_V_POS]=1 \{ .vs 0 \} -. sp |\\n[#HEADER_MARGIN]u-1v -. mk y -. ll \\n[#DOC_L_LENGTH]u -. ta \\n(.lu -. if \\n[#PRINT_STYLE]=1 \{\ -. fam C -. ft R -. ps 12\\*[$HDRFTR_SIZE_CHANGE] -. \} -. if \\n[#PRINT_STYLE]=2 \{\ -. fam \\*[$HDRFTR_FAM] -. ft R -. ps \\n[#DOC_PT_SIZE]u\\*[$HDRFTR_SIZE_CHANGE] -. vs 12 -. \} -. nr #HDRFTR_PT_SIZE \\n[#PT_SIZE] -. if \\n[#CAPS_ON] \{\ -. nr #CAPS_WAS_ON 1 -. CAPS OFF -. \} -. if \\n[#UNDERLINE_ON] \{\ -. nr #UNDERLINE_WAS_ON 1 -. UNDERLINE OFF -. \} -. if \\n[#PRINT_STYLE]=1 \{\ -. if \\n[#ENDNOTES]=1 \{\ -.\" Single-spaced endotes have a different lead -. if \\n[#EN_SINGLESPACE] \{\ -. nr #RESTORE_DOC_LEAD \\n[#DOC_LEAD] -. nr #DOC_LEAD \\n[#EN_LEAD]u -. \} -. \} -. \} -. ie \\n[#HEADERS_ON] \{\ -. PRINT_HDRFTR -. sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u -. \} -. el \{\ -. ie \\n[#PAGE_NUM_V_POS]=1 \{\ -. ie \\n[#PAGINATE] \{\ -. PRINT_PAGE_NUMBER -. sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u -. \} -. el \{ .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u \} -. \} -. el \{ .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u \} -. \} -. if \\n[#PRINT_STYLE]=1 \{\ -. if \\n[#ENDNOTES]=1 \{\ -. if \\n[#EN_SINGLESPACE] \{\ -. nr #DOC_LEAD \\n[#RESTORE_DOC_LEAD]u -. rr #RESTORE_DOC_LEAD -. \} -. \} -. \} -. nr #PAGE_TOP \\n(nl -. ev -. po \\n[#L_MARGIN]u -. if \\n[#RECTO_VERSO] \{\ -. nr #L_MARGIN +\\n[#L_MARGIN_DIFF] -. \} -. if \\n[#CAPS_WAS_ON] \{\ -. CAPS -. rr #CAPS_WAS_ON -. \} -. if \\n[#UNDERLINE_WAS_ON] \{\ -. UNDERLINE -. rr #UNDERLINE_WAS_ON -. \} -. if \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \} -. if \\n[#QUOTE] \{\ -. ie \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \} -. el \{\ -. nr #Q_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE]) -. po \\n[#Q_OFFSET]u -. \} -. ALD \\n[#Q_LEAD_DIFF]u -. \} -. if \\n[#EPIGRAPH] \{\ -. ie \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \} -. el \{\ -. nr #EPI_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE]) -. po \\n[#EPI_OFFSET]u -. \} -. \} -. ie \\n[#EPIGRAPH] \{\ -. ie !\\n[#EPI_ACTIVE] \{\ -. ns -. rr #EPI_ACTIVE -. \} -. el \{\ -. ie \\n[#EPI_FITS] \{ .ns \} -. el \{ .ALD \\n[#DOC_LEAD]u-\\n[#EPI_LEAD]u \} -. \} -. \} -. el \{ .ns \} -. ns -. if \\n[#COLUMNS] \{\ -. nr #FN_COUNT_FOR_COLS 0 1 -. nr #L_MARGIN \\n[#DOC_L_MARGIN] -. if \\n[#RECTO_VERSO] \{ .COLUMNS \\n[#NUM_COLS] \\n[#GUTTER]u \} -. nr #COL_NUM 0 1 -. mk dc -. po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u -. nr #L_MARGIN \\n(.o -. if \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \} -. ll \\n[#COL_L_LENGTH]u -. ta \\n(.lu -. if \\n[#QUOTE] \{\ -. po +(\\n[#PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u) -. \} -. if \\n[#EPIGRAPH] \{\ -. if \\n[#EPI_ACTIVE] \{\ -. ie \\n[#EPI_FITS] \{ . \} -. el \{ .nr dc -\\n[#EPI_LEAD_DIFF] \} -. \} -. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u+(\\n[#PP_INDENT]u*\\n[#EPI_OFFSET_VALUE]u) -. \} -. \} -. if \\n[#RESET_FN_COUNTERS]=1 \{\ -. rr #RESET_FN_COUNTERS -. PROCESS_FN_IN_DIVER -. nr #FN_COUNT \\n[#SAVED_FN_COUNT] 1 -. if \\n[#COLUMNS]=1 \{ .nr #FN_COUNT_FOR_COLS \\n[#SAVED_FN_COUNT_FOR_COLS] 1 \} -. ie \\n[#RESET_FN_NUMBER]=1 \{ .nr #FN_NUMBER \\n[#SAVED_FN_NUMBER] 1 \} -. el \{ .nr #FN_NUMBER \\n[#FN_NUMBER] 1 \} -. rm FN_IN_DIVER -. if dRUNON_FN_IN_DIVER \{ .rm RUNON_FN_IN_DIVER \} -. \} -. if \\n[#PRINT_STYLE]=1 \{\ -. if \\n[#SLANT_ON] \{\ -. if \\n[#UNDERLINE_SLANT] \{ .UNDERLINE \} -. \} -. \} -. rr #FROM_HEADER -. rr #DEFER_SPACE_ADDED -. if !\\n[#FN_DEPTH] \{\ -. if r#DIVERTED \{ .rr #DIVERTED \} -. \} -. if \\n[#MN_OVERFLOW_LEFT]=1 \{\ -. MN LEFT -. nf -. MN_OVERFLOW_LEFT -. MN -. \} -. if \\n[#MN_OVERFLOW_RIGHT]=1 \{\ -. MN RIGHT -. nf -. MN_OVERFLOW_RIGHT -. MN -. \} -. rm MN_OVERFLOW_LEFT -. rr #MN_OVERFLOW_LEFT -. rr #no-repeat-MN-left -. rm MN_OVERFLOW_RIGHT -. rr #MN_OVERFLOW_RIGHT -. rr #no-repeat-MN-right -.END -\# -\# ==================================================================== -\# -\# +++FOOTERS+++ -\# -\# FOOTERS (off or on) -\# ------------------- -\# *Arguments: -\# | -\# *Function: -\# Turns footers at the bottom of the page off or on. -\# *Notes: -\# Default is off. If on, page numbers automatically go at -\# the top, centered, unless pagination has been turned off, -\# or the pagenumber position has been changed to left or right. -\# -.MAC FOOTERS END -. ie '\\$1'' \{\ -. nr #FOOTERS_ON 1 -. PAGE_NUM_POS TOP CENTER -. \} -. el \{ .nr #FOOTERS_ON 0 \} -.END -\# -\# -\# FOOTER MARGIN -\# ------------- -\# *Argument: -\#