
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: