#!/bin/sh # MFOUR="m4 -B 8192" MFOUR="m4" #- (la)TeX characters which are special: NonTT='$^%&~_{}#' # #- '^': NON-special chars -- can be used with TT : sedT='[^()'"${NonTT}]*" # (cat << 'END' undefine(`eval') undefine(`index') undefine(`format') undefine(`include') undefine(`substr') undefine(`paste') define(KEYWORD,`') define(COMMENT,`') define(TITLE,` \begin{Header}{$1}{$2}') define(USAGE,`\begin{verbatim} $1 \end{verbatim} \end{Header} BLANK') define(ALIAS,`dnl') define(BEGIN_ARGUMENTS,`\begin{Arguments}') define(END_ARGUMENTS,`\end{Arguments}') define(ARGUMENTS,`\begin{Arguments} $1 \end{Arguments} BLANK') define(ARG,``\item[\texttt{$1}:] $2'') define(ITEM,`\item[\texttt{$1}:] $2') define(DESCRIPTION,`\begin{Description} $1 \end{Description} BLANK') define(NOTE,`\begin{Note} $1 \end{Note} BLANK') define(VALUE,`\begin{Value} $1 \end{Value} BLANK') define(SECTION,`\begin{Section}{$1} $2 \end{Section} BLANK') define(VALUES,`\begin{Values}{$1} $2 \end{Values} BLANK') define(REFERENCES,`\begin{References} $1 \end{References} BLANK') define(SEEALSO,`\begin{SeeAlso} $1 \end{SeeAlso} BLANK') define(EXAMPLES,`\begin{Examples} \begin{verbatim} $1\end{verbatim} \end{Examples} BLANK') define(LINK,`$1') define(CTRL,`\symbol{94}$1') define(LANG,`\verb@$1@')dnl define(ITALIC,`\emph{$1}')dnl define(TT,`\texttt{$1}')dnl define(BOLD,`\textbf{$1}')dnl define(PARA,`BLANK')dnl define(LDOTS,`\ldots') define(EQUALS,`=') define(LT,<) define(LE,`\le') define(GE,`\ge') define(GT,>) define(LOG,`\log') define(EXP,`\exp') define(SQRT,`\sqrt{$1}') define(DISPLAYSTYLE,`{\displaystyle $1}') define(OVER,{{$1} \over {$2}}) define(SUP,`{{$1}^{$2}}') define(SUB,`{{$1}_{$2}}') define(CHOOSE,`{$1 \choose $2}') define(PAREN,`{\left( $1 \right)}') define(SP,`') define(greekGamma,`\Gamma') define(greekalpha,`\alpha') define(greekpi,`\pi') define(greekmu,`\mu') define(greeksigma,`\sigma') define(greeklambda,`\lambda') define(boldgreekbeta,`\boldsymbol{\beta}') define(boldgreekepsilon,`\boldsymbol{\varepsilon}') define(EQBOLD,`\mathbf{$1}') define(EQN,`$ $1 $') define(DEQN,`\[ $1 \]') define(DEQTEX,`\[ $1 \]') define(DEQHTML,`') END # Fix up the input to protect things that m4 is sensitive about. # # Should add s/[${NonTT}]/\\\&/g however only if NOT in verbatim things # -- just no use with 'sed' -- would need perl or such, alas.... sed " s/LANG(\(${sedT}\))/TT(\1)/g s/LANG(\(${sedT}(${sedT})${sedT}\))/TT(\1)/g "' /^ALIAS/,/^EXAMPLES/s/^ *// /^ARGUMENTS/,/^EXAMPLES/s/^ *// /^DESCRIPTION/,/^EXAMPLES/s/^ *// s/unix/M4_unix/g s/#/M4_HASH/g s/\\(/M4_LP/g s/\\)/M4_RP/g s/`/M4_LQ/g s/'\''/M4_RQ/g s/LDOTS,/LDOTS(),/g s/,/M4_COMMA/g s/ @@ ?/,/g s/@@/,/g s/ifelse/M4_IFELSE/g ' $* ) | $MFOUR |sed ' /^$/d s/^BLANK[ ]*$// s/DOTS/\.\.\./g s/M4_unix/unix/g s/M4_HASH/#/g s/M4_LP/(/g s/M4_RP/)/g s/M4_LQ/`/g s/M4_RQ/'\''/g s/M4_COMMA/,/g s/M4_IFELSE/ifelse/g '