(linenum→info "unix/slp.c:2238")

gauche/0.8.12/doc/texinfo.t2p

    1: % texinfo.t2p
    2: % Dorai Sitaram
    3: 
    4: % This macro file is loaded by TeX2page when processing
    5: % Texinfo files.  If the input document, say
    6: % jobname.texi, needs additional TeX2page-specific
    7: % macros, you may put them in jobname.t2p (as for input
    8: % documents in plain or LaTeX).  If you wish to
    9: % redefine any of the macros already defined in
   10: % texinfo.t2p, you will need to explicitly \input
   11: % texinfo.t2p in jobname.t2p, _before_ the
   12: % redefinitions.  Whether or not jobname.t2p explicitly
   13: % \inputs it, texinfo.t2p will be loaded by TeX2page
   14: % only once.  If jobname.t2p does not exist, or if it
   15: % does _not_ explicitly \input texinfo.t2p,
   16: % jobname.texi will implicitly \input 
   17: % texinfo.t2p where it tries to \input texinfo.
   18: 
   19: % [SK] this is an attempt to make Dorai's tex2page work on
   20: % Gauche-ref?.texi.  So far I haven't succeeded, but I put
   21: % this in CVS anyway to work in future.
   22: % $Id: texinfo.t2p,v 1.1 2004/02/02 11:43:01 shirok Exp $
   23: 
   24: \ifx\ifinfo\undefined
   25: \let\endloadingtexinfotiipnow\relax
   26: \else
   27: \let\endloadingtexinfotiipnow\endinput
   28: \message{texinfo.t2p already loaded}
   29: \fi
   30: \endloadingtexinfotiipnow
   31: 
   32: \let\comment\TIIPcomment
   33: \let\c\comment
   34: \let\changepagesizes\c
   35: \let\internalpagesizes\c
   36: \let\setchapternewpage\c
   37: \let\setfilename\c
   38: %\let\settitle\c
   39: \let\headings\c
   40: \let\synindex\c
   41: \let\syncodeindex\c
   42: \let\footnotestyle\c
   43: \let\paragraphindent\c
   44: \let\dircategory\c
   45: \let\defcodeindex\c
   46: \let\shorttitlepage\c
   47: 
   48: \def\settitle#1
   49: {\externaltitle{#1}}
   50: 
   51: \def\.{.}
   52: 
   53: %\let\contents\tableofcontents
   54: 
   55: 
   56: \def\contents{\evalh{
   57: (toss-back-string "\\tableofcontents")
   58: (toss-back-string
   59: (if *using-chapters?*
   60: "\\NONTEXINFOchapter*{Contents}"
   61: "\\NONTEXINFOsection*{Contents}"))
   62: }}
   63: 
   64: \def\titlefont#1{{\Huge #1}}
   65: 
   66: %\def\titlepage{\let\pageOLD\page
   67: %\TIIPendgraf\begingroup\large
   68: %\def\page{\endgroup\pageOLD\titlepage}}
   69: %
   70: %\let\endtitlepage\endgroup
   71: 
   72: 
   73: \let\titlepage\relax
   74: \let\endtitlepage\relax
   75: 
   76: \def\titlepage{\TIIPendgraf\begingroup\large}
   77: \let\endtitlepage\endgroup
   78: 
   79: \evalh{(define *texinfo-values* '())}
   80: 
   81: \def\setQii{%
   82: \evalh{
   83: (let* ((var (get-peeled-group))
   84:        (val (get-peeled-group)))
   85:   (set! *texinfo-values* 
   86:     (cons (cons var val) *texinfo-values*)))
   87: }}
   88: 
   89: \def\set#1 #2
   90: {\setQii{#1}{#2}}
   91: 
   92: \def\value{%
   93: \evalh{
   94: (let* ((var (get-peeled-group))
   95:        (c (assoc var *texinfo-values*)))
   96:   (when c
   97:   (tex2page-string (cdr c))))
   98: }}
   99: 
  100: \let\NONTEXINFOend\end
  101: 
  102: %\def\end#1 {\csname end#1\endcsname}
  103: 
  104: \let\group\begingroup
  105: 
  106: %\let\NONTEXINFOnode\node
  107: 
  108: %\def\node#1
  109: %{\NONTEXINFOnode{#1}}
  110: 
  111: \def\ignorespacestillnewlineinclusive{\evalh{
  112: (let loop ()
  113:   (let ((c (snoop-actual-char)))
  114:     (unless (eof-object? c)
  115:       (when (char-whitespace? c)
  116:         (get-actual-char)
  117:         (unless (char=? c #\newline) (loop))))))
  118: }}
  119: 
  120: \def\node{\evalh{
  121: (let loop ((r '()))
  122:   (let ((c (snoop-actual-char)))
  123:     (cond ((or (char=? c #\,)
  124:                (char=? c #\return)
  125:                (char=? c #\newline))
  126:            (if (char=? c #\,) (eat-till-eol))
  127:            (set! *recent-node-name*
  128:              ;htmlize-label?
  129:              (list->string (reverse r))))
  130:           (else (get-actual-char) (loop (cons c r))))))
  131: }}
  132: 
  133: \def\anchor#1{\tag{#1}{#1}}
  134: 
  135: \def\menu{\iffalse}
  136: \def\endmenu{\fi}
  137: 
  138: \def\macro{\iffalse}
  139: \def\endmacro{\fi}
  140: 
  141: \def\direntry{\iffalse}
  142: \def\enddirentry{\fi}
  143: 
  144: \def\ignore{\iffalse}
  145: \def\endignore{\fi}
  146: 
  147: \def\ifinfo{\iffalse}
  148: \def\endifinfo{\fi}
  149: 
  150: \def\ifnottex{\iffalse}
  151: \def\endifnottex{\fi}
  152: 
  153: \let\ifhtml\htmlonly
  154: \let\endifhtml\endhtmlonly
  155: 
  156: \let\html\rawhtml
  157: \let\endhtml\endrawhtml
  158: 
  159: %
  160: 
  161: \def\uref#1{\urefQii #1,,,\finish}
  162: 
  163: \def\urefQii#1,#2,#3,#4\finish{%
  164: \def\urefQiii{#2}%
  165: \ifx\urefQiii\empty\url{#1}%
  166: \else\urlh{#1}{\urefQiii}\fi}
  167: 
  168: %
  169: 
  170: \let\include\input
  171: 
  172: %\verbescapechar\\
  173: \let\code\texttt
  174: \let\samp\texttt
  175: 
  176: \def\xref{See \S\ref}
  177: 
  178: \def\pxref{see \S\ref}
  179: 
  180: \let\\\TIIPbackslash
  181: 
  182: \let\dfn\textit
  183: \let\file\texttt
  184: \let\cite\textit
  185: \let\b\textbf
  186: \let\var\textit
  187: \let\t\texttt
  188: \let\sc\textsc
  189: \let\email\texttt
  190: \let\r\textrm
  191: 
  192: % index
  193: 
  194: \def\cindex#1
  195: {\index{#1}}
  196: 
  197: \def\pindex#1
  198: {\index{#1@{\tt#1}}}
  199: 
  200: \let\findex\pindex
  201: 
  202: \let\kindex\pindex
  203: 
  204: \let\vindex\pindex
  205: 
  206: \let\opindex\index
  207: 
  208: \let\cmindex\index
  209: 
  210: \let\footnote\numfootnote
  211: 
  212: \def\center#1
  213: {\centerline{#1}\TIIPnewline}
  214: 
  215: \let\NONTEXINFOitem\item
  216: 
  217: \let\TABLEitemstyle\relax
  218: 
  219: \def\TABLEitem#1
  220: {\NONTEXINFOitem \TABLEitemstyle{#1}\break}
  221: 
  222: \def\table#1
  223: {\begingroup\description
  224: \def\TABLEitemstyle{#1}
  225: \let\item\TABLEitem
  226: \let\itemx\TABLEitem
  227: }
  228: 
  229: \def\endtable{\enddescription\endgroup}
  230: 
  231: \let\ftable\table
  232: \let\endftable\endtable
  233: 
  234: \let\multitable\table
  235: \let\endmultitable\endtable
  236: 
  237: \def\sp#1
  238: {\par}
  239: 
  240: \let\NONTEXINFOitemize\itemize
  241: 
  242: \def\itemize#1
  243: {\NONTEXINFOitemize}
  244: 
  245: \def\example{\par\TIIPendgraf\bgroup\tt\obeywhitespace\ignorespacestillnewlineinclusive}
  246: 
  247: \def\endexample{\egroup\par}
  248: 
  249: \let\lisp\example
  250: \let\endlisp\endexample
  251: 
  252: \let\NONTEXINFOenumerate\enumerate
  253: \let\NONTEXINFOendenumerate\endenumerate
  254: \def\enumerate#1
  255: {\bgroup\NONTEXINFOenumerate
  256: \let\item\NONTEXINFOitem}
  257: 
  258: \def\endenumerate{\NONTEXINFOendenumerate\egroup}
  259: 
  260: \def\display#1
  261: {\par\bgroup\obeywhitespace}
  262: \def\enddisplay{\egroup\par}
  263: 
  264: %
  265: 
  266: \let\NONTEXINFOauthor\author
  267: \let\NONTEXINFOchapter\chapter
  268: \let\NONTEXINFOsection\section
  269: \let\NONTEXINFOsubsection\subsection
  270: \let\NONTEXINFOsubsubsection\subsubsection
  271: \let\NONTEXINFOappendix\appendix
  272: 
  273: 
  274: \let\page\eject
  275: 
  276: \let\NONTEXINFOtitle\title
  277: 
  278: \def\title#1
  279: {\NONTEXINFOtitle{#1}\hrule}
  280: 
  281: \def\subtitle#1
  282: {\rightline{#1}}
  283: 
  284: \newcount\authorcalled
  285: 
  286: \def\author#1
  287: {\ifnum\authorcalled=0
  288: \bigskip\bigskip\bigskip
  289: \global\authorcalled=1
  290: \plainfootnote{\ }{}
  291: \fi
  292: \leftline{\bf#1}}
  293: 
  294: \def\appendix{\NONTEXINFOappendix
  295: \let\NONTEXINFOappendix\relax
  296: \chapter}
  297: 
  298: %\def\author#1
  299: %{\NONTEXINFOauthor{#1}}
  300: 
  301: \let\top\title
  302: 
  303: \def\chapter#1
  304: {\NONTEXINFOchapter{#1}\label{#1}}
  305: 
  306: \def\unnumbered#1
  307: {\NONTEXINFOchapter*{#1}}
  308: 
  309: \def\section#1
  310: {\NONTEXINFOsection{#1}\label{#1}}
  311: 
  312: \def\unnumberedsec#1
  313: {\NONTEXINFOsection*{#1}}
  314: 
  315: \def\subsection#1
  316: {\NONTEXINFOsubsection{#1}\label{#1}}
  317: 
  318: \def\subsubsection#1
  319: {\NONTEXINFOsubsubsection{#1}\label{#1}}
  320: 
  321: \def\appendixsec#1
  322: {\NONTEXINFOappendix\NONTEXINFOsection{#1}\label{#1}}
  323: 
  324: \def\appendixsubsec#1
  325: {\NONTEXINFOappendix\NONTEXINFOsubsection{#1}\label{#1}}
  326: 
  327: \def\appendixsubsubsec#1
  328: {\NONTEXINFOappendix\NONTEXINFOsubsubsection{#1}\label{#1}}
  329: 
  330: \def\chapheading#1
  331: {\NONTEXINFOchapter*{#1}}
  332: \def\heading#1
  333: {\NONTEXINFOsection*{#1}}
  334: \def\subheading#1
  335: {\NONTEXINFOsubsection*{#1}}
  336: \def\subsubheading#1
  337: {\NONTEXINFOsubsubsection*{#1}}
  338: 
  339: %only one index
  340: 
  341: \def\printindex#1#2{
  342: \def\printindex##1##2{}
  343: \NONTEXINFOchapter*{Index}
  344: {\let\end\NONTEXINFOend
  345: \inputindex}}
  346: 
  347: \def\printindex#1#2{%
  348: \def\printindex##1##2{}%
  349: {\let\end\NONTEXINFOend
  350: \inputindex}}
  351: 
  352: % is foll right?
  353: 
  354: \def\iftex{\bgroup
  355: \def\tex{\fi\iftrue}
  356: \def\endtex{\fi\iffalse}
  357: \iffalse}
  358: \def\endiftex{\fi\egroup}
  359: 
  360: % defun-type stuff
  361: \def\deffn#1#2
  362: {\rawhtml
  363: <pre>--#1--#2--</pre>
  364: \endrawhtml
  365: }
  366: 
  367: \def\defun#1
  368: {\deffn {Function} #1
  369: }
  370: 
  371: \evalh{
  372: (set! *tex-format* 'texinfo)
  373: 
  374: (define *texi-file-suffix* "-Z-T-")
  375: (define *texi-file-count* 0)
  376: 
  377: (define texi-to-tex
  378:   (lambda (f)
  379:     (write-log 'separation-space) (write-log #\{)
  380:     (write-log f) (write-log 'separation-space) (write-log "->")
  381:     (write-log 'separation-space)
  382:     (set! *texi-file-count* (+ *texi-file-count* 1))
  383:     (let ((fo (string-append *aux-dir/* *jobname* *texi-file-suffix*
  384:                              (number->string *texi-file-count*) ".tex")))
  385:       (ensure-file-deleted fo)
  386:       (write-log fo)
  387:       ;this makes tex2page not read past newline
  388:       ;when eating whitespace
  389:       (call-with-input-file/buffered
  390:        f
  391:        (lambda ()
  392:          (call-with-output-file fo
  393:            (lambda (o)
  394:              (fluid-let ((*not-processing?* #t)
  395:                          (*esc-char* #\@))
  396:                (let loop ()
  397:                  (let ((c (snoop-actual-char)))
  398:                    (unless (eof-object? c)
  399:                      (cond ((char=? c #\@)
  400:                             (let ((x (get-ctl-seq)))
  401:                               (display x o)
  402:                               (cond ((string=? x "\\tex") (dump-till-end-tex o))
  403:                                     ((string=? x "\\end") (ignorespaces)))
  404:                               (loop)))
  405:                            ((ormap (lambda (x) (char=? c x))
  406:                                    '(#\\ #\% #\$ #\#))
  407:                             (get-actual-char)
  408:                             (write-char #\\ o) (write-char c o) (loop))
  409:                            (else (get-actual-char)
  410:                                  (write-char c o) (loop)))))))))))
  411:       (write-log #\})
  412:       (write-log 'separation-space)
  413:       fo)))
  414: 
  415: (define dump-till-end-tex
  416:   (lambda (o)
  417:     (let loop ()
  418:       (let ((c (snoop-actual-char)))
  419:         (cond ((eof-object? c) (terror 'dump-till-end-tex))
  420:               ((char=? c #\@)
  421:                (let ((x (get-ctl-seq)))
  422:                  (cond ((string=? x "\\end")
  423:                         (ignorespaces)
  424:                         (toss-back-string "@end")
  425:                         (set! x (get-ctl-seq))
  426:                         (display x o)
  427:                         (unless (string=? x "\\endtex")
  428:                           (loop)))
  429:                        ((string=? x "\\comment")
  430:                         (write-char #\% o) (newline o)
  431:                         (eat-till-eol) (loop))
  432:                        (else (display x o)
  433:                          (loop)))))
  434:               (else (get-actual-char)
  435:                 (write-char c o)
  436:                 (loop)))))))
  437: 
  438: (set! tex2page-massage-file
  439:   (lambda (f)
  440:     (let ((e (file-extension f)))
  441:       (cond ((and e (member/string-ci=? 
  442:                      e '(".t2p" ".ind" ".bbl")))
  443:              (deactivate-cdef #\newline)
  444:              f)
  445:             (else (tex-def-char #\newline '() "\\TIIPnewline" #f)
  446:                   (texi-to-tex f))))))
  447: 
  448: 
  449: }
  450: 
  451: \let\backslash\\
  452: 
  453: \def\\input texinfo{%
  454: %\csname Texinfohook\endcsname
  455: \global\let\\\backslash}
  456: 
Syntax (Markdown)