Re: a new release
Dumas Patrice <[email protected]> Wed, 24 Sep 2003 16:09:39 +0200
| Newsgroups | gmane.comp.tex.texi2html.devel |
|---|---|
| Message-ID | <[email protected]> |
--dDRMvlgZJXvWKvBx Content-Type: text/plain; charset=us-ascii Content-Disposition: inline > I won't be too picky about requiring this for the release. We can > change the NEWS file to read something like, see the i18n/* files for > examples. > > When you're ready to do doc, you can send me patches and I can go over Well I have allready done that. I didn't made patches because there were so much changes that I think reading the new files is simpler. I attached the updated manual files. I made a mail some time ago explaining that I posted the updated manual on a website... The attached files are the latest versions and in sync with the code, except that there is nothing about i18n. > them and correct your English and commit them, if that's what you mean, > though your English is pretty good. I've certainly seen much worse, and > in open source manuals. :) > > Not, "maid", in this sense. It's "made". Maids clean up after people. > :) The pronunciation is the same. :))) You see that my english isn't so good... Maybe there are even more funny things in the manual ;-). > If it's not something a non-developer would touch, I wouldn't worry > about it. Implementation details should be left out of the NEWS file. > The NEWS file is intended for users, not developers. It is something a non developer could touch, because those structures were global and there were some comments on how to use them to customize things. However I believe not a lot of people really used that, as it wasn't in the texi2html.init but rather in texi2html.pl. > As far as other developers are concerned, there aren't many of us and > the mailing list, the ChangeLog, and CVS commands will probably do the > trick. If you really think those sources won't be sufficient, you could > always create a DEVELOPER-NEWS file or the like. Right. I think too that there is allready enough information. Pat --dDRMvlgZJXvWKvBx Content-Type: application/x-texinfo Content-Disposition: attachment; filename="texi2html.texi" Content-Transfer-Encoding: quoted-printable \input texinfo @c -*-texinfo-*-=0A@c=0A@c This is the ``Texinfo to HTML Con= verter'' manual which=0A@c which is part of the ``texi2html'' distribution.= =0A@c=0A@c License:=0A@c Copyright (C) 1999, 2000 Free Software Foundat= ion, Inc.=0A@c=0A@c This program is free software; you can redistribute = it=0A@c and/or modify it under the terms of the GNU General Public=0A@c = License as published by the Free Software Foundation;=0A@c either ver= sion 2 of the License, or (at your option) any=0A@c later version.=0A@c= =0A@c This program is distributed in the hope that it will be=0A@c us= eful, but WITHOUT ANY WARRANTY; without even the implied=0A@c warranty o= f MERCHANTABILITY or FITNESS FOR A PARTICULAR=0A@c PURPOSE. See the GNU= General Public License for more=0A@c details.=0A@c=0A@c You should h= ave received a copy of the GNU General=0A@c Public License along with th= is program; if not, write to=0A@c the Free Software Foundation, Inc., 59= Temple Place, Suite=0A@c 330, Boston, MA 02111-1307 USA=0A@c=0A@c=0A@= c Revisions:=0A@c $Id: texi2html.texi,v 1.3 2001/09/15 09:37:50 reiter Exp = $=0A@c=0A@c Author:=0A@c Karl Heinz Marbaise <[email protected]>=0A@c=0A@= c --------------------------------------------------------=0A@c=0A@c Curren= tly most of the material is copied out of=0A@c texi2html.init file. It's ju= st a start point.=0A@c In other words this is a draft manual ;-)=0A@c=0A@se= tfilename texi2html.info=0A@c ---------------------------------------------= -----------=0A@c Edition and last update date of the manual which might=0A@= c differ to the scripts last update date etc.=0A@set MANUAL_UPD 14. August = 2000=0A@set MANUAL_ED 0.21=0A@c=0A@set MANUAL_AUTHOR Karl Heinz Marbaise=0A= @set MANUAL_AUTHOR_EMAIL khmarbaise@@gmx.de=0A@c=0A@c Get the version of th= e script itself through=0A@c configure/autoconf etc.=0A@c version.texi is a= utomatically generated through=0A@c configure/autoconf.=0A@include version.= texi=0A@c --------------------------------------------------------=0A@c Ind= ex for command line options=0A@defindex op=0A@c ---------------------------= -----------------------------=0A@settitle Texinfo to HTML=0A@c @setchaptern= ewpage on=0A@setchapternewpage odd=0A@footnotestyle separate=0A@ifset short= titlepage-enabled=0A@shorttitlepage Texinfo to HTML=0A@end ifset=0A@c -----= ---------------------------------------------------=0A@c support old style = Info Dir entries.=0A@ifset OLDSTYLE-INFO-DIR=0A@ifinfo=0A@format=0ASTART-IN= FO-DIR-ENTRY=0A* Texi2html: (texi2html). Texinfo 2 HTML Converter (texi2ht= ml).=0AEND-INFO-DIR-ENTRY=0A@end format=0A@end ifinfo=0A@end ifset=0A@c ---= -----------------------------------------------------=0A@c Informations for= install-info.=0A@c I think the conversion script should be found=0A@c wher= e the documentation system lives.=0A@c What do you think?=0A@dircategory Te= xinfo documentation system=0A@direntry=0A* Texi2html: (texi2html). Texinfo= to HTML Converter.=0A@end direntry=0A@c ----------------------------------= ----------------------=0A@ifnottex=0AThis file documents the texi2html scri= pt which converts=0ATexinfo into HTML.=0A=0ACopyright (C) 1999, 2000 Free = Software Foundation, Inc.=0A=0AThis edition is for texi2html version @value= {VERSION},=0A@value{UPDATED}.=0A=0APermission is granted to make and distri= bute verbatim=0Acopies of this manual provided the copyright notice and=0At= his permission notice are preserved on all copies.=0A=0A@ignore=0APermissio= n is granted to process this file through TeX and=0Aprint the results, prov= ided the printed document carries=0Acopying permission notice identical to = this one except for=0Athe removal of this paragraph (this paragraph not bei= ng=0Arelevant to the printed manual).=0A=0A@end ignore=0APermission is gran= ted to copy and distribute modified=0Aversions of this manual under the con= ditions for verbatim=0Acopying, provided that the entire resulting derived = work is=0Adistributed under the terms of a permission notice=0Aidentical to= this one.=0A=0APermission is granted to copy and distribute translations= =0Aof this manual into another language, under the above=0Aconditions for m= odified versions, except that this=0Apermission notice may be stated in a t= ranslation approved=0Aby the Free Software Foundation.=0A@end ifnottex=0A@c= --------------------------------------------------------=0A@titlepage=0A@t= itle Texinfo to HTML Converter=0A@subtitle Manual Edition @value{MANUAL_ED}= =0A@subtitle Last Update: @value{MANUAL_UPD}=0A@subtitle for Version @value= {VERSION} of @command{texi2html} script.=0A@author Lionel Cons=0A@author Ka= rl Berry=0A@author Olaf Bachmann=0A@author and many others.=0A@author Karl = Heinz Marbaise (manual)=0A@page=0A@vskip 0pt plus 1filll=0ACopyright @copyr= ight{} Lionel Cons@*=0ACopyright @copyright{} Karl Berry@*=0ACopyright @cop= yright{} Olaf Bachmann@*=0ACopyright @copyright{} and many others.@*=0ACopy= right @copyright{} Karl Heinz Marbaise (manual)@*=0A=0APermission is grante= d to make and distribute verbatim=0Acopies of this manual provided the copy= right notice and=0Athis permission notice are preserved on all copies.=0A= =0APermission is granted to copy and distribute modified=0Aversions of this= manual under the conditions for verbatim=0Acopying, provided that the enti= re resulting derived work is=0Adistributed under the terms of a permission = notice=0Aidentical to this one.=0A=0APermission is granted to copy and dist= ribute translations=0Aof this manual into another language, under the above= =0Aconditions for modified versions, except that this=0Apermission notice m= ay be stated in a translation approved=0Aby the Free Software Foundation.= =0A@end titlepage=0A@c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A@summarycontents=0A@contents= =0A@c=0A@ifnottex=0A@c @page=0A@c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A@c @node Top, Over= view, (dir), (dir)=0A@c @top=0A@c @chapter About=0A@node Top=0A@top Texi2ht= ml=0A=0AThis Manual (Edition @value{MANUAL_ED}, last updated at=0A@value{MA= NUAL_UPD}) describes the @command{texi2html} Perl=0Ascript which converts= =0A@c The following construct allows me to get=0A@c real URL link in HTML a= nd working refs in=0A@c info.=0A@c (pertusus: some support for html cross m= anual now=0A@c exists in texi2html, but it implies having the texinfo=0A@c = html manual at the right place, which isn't the case=0A@c in most cases). A= nd also the resulting ref is less=0A@c pretty in info.=0A@ifhtml=0A@uref{ht= tp://www.texinfo.org,Texinfo}=0A@end ifhtml=0A@ifnothtml=0ATexinfo (@pxref{= Top,,Texinfo,Texinfo})=0A@end ifnothtml=0Ainto @acronym{HTML}.=0A=0APlease = send bug reports about this manual to Karl Heinz=0AMarbaise @email{khmarbai= se@@gmx.de}. Please state exact=0Aversion/edition of the manual (can be fou= nd at start of=0ATexinfo source file; use the entry Id under Revisions).=0A= =0APlease note:=0A@example=0AThis manual is currently under=0Aconstruction = and of course incomplete ;-)=0A@end example=0A=0A@c The following line with= in a menu does not work!=0A@c (pertusus: what doesn't work ?)=0A@c * Why te= xi2html and not Makeinfo?:whytexi2html. Why texi2html and not makeinfo= ?.=0A@menu=0A@c * MenuName:NodeName. Description.=0A* Overview:: = Overview about @emph{texi2html}.=0A* Installation:: = Installation process.=0A* Invoking texi2html:: Description of th= e command line options.=0A* Initialization files:: What kind of variab= les and subroutines appear=0A in init files an= d how they are called.=0A* Changing the page layout:: Fine tuning of the p= age layout.=0A* Customizing HTML:: Fine tuning of the @acronym{HTM= L} elements associated=0A with the texinfo con= structs.=0A* Indexop:: Command Line Option Index.=0A* Ind= exvr:: Variable Index.=0A* Indexcp:: Co= ncept Index.=0A@c functions are scattered through the manual...=0A@c * Refe= rence:: Reference Manual of functions.=0A=0A@detailmenu=0A= =0A/// The Detailed Node Listing ///=0A=0A--- Overview ---=0A=0A* Why texi2= html and not Makeinfo?:whytexi2html. Why =0A texi2htm= l and not makeinfo?=0A=0A--- Invoking @command{texi2html} ---=0A=0A* Splitt= ig output:: How the texinfo manual is split.=0A* Output files:: = Determining output file and directory names.=0A* Expansion:: = Specify what region get expanded.=0A* Texinfo related options= :: Command line options related with =0A texi= nfo language features.=0A* Page layout options:: Customize output pag= e layout with command line=0A options=0A* Styl= e options:: Customize @acronym{HTML} and text style with=0A = command line options=0A* Expanding TeX regions:: = Expand @code{@@tex} and @code{@@math} regions using La@TeX{}2HTML=0A* U= sing init files:: Specifying initialization files for fine tuning.= =0A=0A--- Initialization files ---=0A=0A* Redefining functions:: Funct= ion redefinition is achieved with =0A redefini= tion of references on functions.=0A* Function prototypes:: Convention= s used in that manual for function =0A referen= ce prototypes display.=0A =0A--- Customization= of the pages layout ---=0A=0A* The different pages:: The different c= ategories of pages.=0A* The page layout:: The elements of a page.= =0A* Navigation panel:: How to change the navigation panel.=0A* Pr= ogram variables:: The available main program variables and some =0A= usefull functions from the main program.=0A* = css:: Customizing css lines.=0A* Customizing header::= =0A* Customizing section::=0A* Customizing footer::=0A* Special pages:: = Customizing table of contents, top, about page.=0A=0A--- Customiza= tion of the @acronym{HTML} produced by the texinfo commands ---=0A=0A* Two = contexts:: there are two different contexts for command=0A = expansion: normal text and preformatted tex= t.=0A* Commands without argument:: =0A* Style and accent commands:: =0A*= Anchors images and spaces:: Formatting of @code{@@anchor}, @code{@@imag= e} and @code{@@sp}=0A* Text:: Some characters are s= pecial in @acronym{HTML} and=0A should be p= rotected=0A* Skipped commands:: =0A* References::=0A* Alignement = commands:: @code{@@center}, @code{@@flushleft}@dots{}=0A* Paragra= ph and preformatted region::=0A* Complex formats:: @code{@@exa= mple}, @code{@@display}@dots{}=0A* Lists tables and quotation::=0A* Definit= ions::=0A* Headings::=0A* Special regions:: @code{@@verbatim},= @code{@@cartouche}=0A* Menus:: =0A* Indices::=0A* Footn= otes::=0A=0A--- Indices ---=0A=0A* Indexop:: Command Line= Option Index.=0A* Indexvr:: Variable Index.=0A* Indexcp:= : Concept Index.=0A=0A@end detailmenu=0A@end menu=0A@end = ifnottex=0A@c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A@node Overview=0A@chapter Overview abou= t @emph{texi2html}=0A@uref{http://www.texinfo.org,Texinfo} is the official= =0Adocumentation format of the @uref{http://www.gnu.org,GNU}=0Aproject. It = uses a single source file to produce both=0Aonline information and printed = output.=0A=0A@c much thinking about ...=0AIt is often proposed to have a wa= y to produce=0A@acronym{HTML} from Texinfo sources, like the GNU-Info=0Afor= mat. It is much simpler to create one converter instead=0Aof writing all do= cumentation new in @acronym{HTML}, cause=0Athere is so much documentation i= n Texinfo all over=0Athe world.=0A=0ASome time ago @command{makeinfo} wasn'= t able to produce=0A@acronym{HTML} output format, but there were needs to h= ave=0A@acronym{HTML}. This was the borning hour for=0A@emph{texi2html}. The= basic purpose of @emph{texi2html}=0Ais to convert Texinfo documents into @= acronym{HTML}.=0A=0ANowadays, the main interests of @emph{texi2html} are th= e possibilites=0Aof customization. Some important parameters of the =0Aresu= lting files may be specified by command line options, and the use of =0Aini= tialization=0Afiles provides further possibilities of fine tuning of most a= spects of=0Athe generated manual. =0AInitialization files are written in = =0A@command{perl}, like the main program. Everything being specified as=0Aa= command line switch may also be written down in an initialization =0Afile,= by giving some values to variables associated with command line =0Aoptions= . More variables are=0Acustomizable in the initialization files, and some f= unctions can also=0Abe defined, to be called from the main program and achi= eve a high degree =0Aof customization.=0A=0AFor an example of what you can = produces with=0A@emph{texi2html} have a look at the following sites:=0A@ure= f{http://www.singular.uni-kl.de/Manual/html/}=0A=0A@menu=0A* whytexi2html::= Why texi2html and not makeinfo?.=0A@end menu=0A@c ------------------= --------------------------------------=0A=0A@node whytexi2html=0A@section W= hy texi2html and not makeinfo?=0A=0AYou would like to @acronym{HTML} files = out of your Texinfo=0Afiles? There exist two ways which you can go.=0AThe f= irst is to use @command{makeinfo} to produce=0A@acronym{HTML} output (@pxre= f{Generating HTML,,Generating HTML,texinfo,Texinfo}). The second is to use= =0A@command{texi2html}.=0A=0AThe basic idea of @command{makeinfo}'s @acrony= m{HTML}=0Aoutput was to get a readable @acronym{HTML} output.=0ANothing sop= histicated.=0A@c nor good styling just readable.=0AThe current development = of texi2html is going into=0Adifferent direction.=0A=0AThe main purpose of = texi2html development is to be able to have =0Acustomizable style and desig= n of the created @acronym{HTML} pages. =0AThis is achieved by using command= line options and =0Apossibly changing initialization files to fit your=0Ao= wn needs.=0A=0A@c The main disadvantage of @acronym{makeinfo}'s=0A@c @acron= ym{HTML} output is your getting only one big file.=0A@c This is of course r= eadable but not very usable. The problem=0A@c of this is, while you like to= have splitted chapters or=0A@c nodes the Texinfo source has to be read at = minimum twice=0A@c times. This makes it impossible to implement this in=0A@= c @command{makeinfo}. This would result in complete new=0A@c implementation= of @command{makeinfo}'s source.=0A=0A@c think more about this????=0AIn con= trast to the @acronym{HTML} produced by @command{makeinfo=0A--html} (the @c= ommand{makeinfo} program is part of the=0ATexinfo distribution), the @acron= ym{HTML} output of @command{texi2html}=0Ais highly configurable. Among othe= r differences, =0A@command{texi2html} allows you to customize the entire=0A= page layout (like headers, footers, style sheets, etc)=0Aand the low level = @acronym{HTML} formatting, to =0Asplit documents at various levels, and to = use=0A@command{latex2html} to convert @code{@@tex} sections.=0A=0A@command{= texi2html} should reasonably convert all Texinfo=0A4.6 constructs. If not, = please send a bug report to=0A@c @email{texi2html@@mathematik.uni-kl.de}.= =0A@email{users@@texi2html.cvshome.org}.=0A=0A@c =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A@no= de Installation=0A@chapter Installation of @emph{texi2html}=0A@cindex Insta= llation=0A=0ATo run @command{texi2html} you need @command{perl} version =0A= 5.004 or above. The current version has not been tested=0Aextensively on ve= rsions below 5.6, however.=0A=0A@emph{texi2html} is a standard Automake-bas= ed distribution.=0AIf you have a source version, you should run @command{./= configure}=0Ato regenerate the script file @file{texi2html}. This leads to= =0Athe inclusion in @file{texi2html.pl} of three files:=0A@itemize=0A@item = @file{MySimple.pm} which =0Ahandles the command line options, =0A@item @fil= e{texi2html.init} the =0Adefault configuration file and =0A@item @file{T2h_= i18n.pm} used for =0Ainternationalisation.=0A@end itemize=0A=0ATo make the = documentation run @command{make}.=0A =0AInstalling @command{texi2html} in y= our path should be sufficient =0Ato run it. In case you want to use a confi= guration file for=0ALa@TeX{}toHTML when using @command{latex2html} to =0Aco= nvert @code{@@tex} sections (@pxref{Expanding TeX regions}), or you =0Awant= to have some=0Adefault initialization files, you should install these file= s =0Ain a suitable directory (usually @file{/usr/share/texi2html/} or=0A@fi= le{/usr/local/share/texi2html/} depending on the =0A@option{--pkgdatadir=3D= dir} option of the=0A@command{configure} script, see @ref{Using init files}= ). =0A=0A@command{make install} will=0Ado the installation for you. If you = want to change the location of the =0Adirectories used by @command{texi2htm= l} you should use the =0Aappropriate @command{configure} options (see @comm= and{./configure --help}).=0A=0A@c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A@node Invoking tex= i2html=0A@chapter Invoking @command{texi2html}=0A=0ATo produce an html manu= al, run @command{texi2html} with a texinfo file as =0Aargument. For example= this manual is created with:=0A=0A@example=0A$ texi2html texi2html.texi=0A= @end example=0A=0AThe behaviour of @command{texi2html} may be changed with = command line=0Aoptions. These command line options are always associated wi= th corresponding=0A@command{perl} variables which may appear in init files,= and these =0Avariables are presented each=0Atime a switch is described. = =0A=0AThe boolean command line switch always have=0Aa corresponding negated= switch, obtained by prepending @samp{no} or =0A@samp{no-} to the switch na= me. For example @option{--nomenu} does the =0Areverse of @option{--menu}.= =0A=0A@menu=0A* Splittig output:: The @acronym{HTML} output may b= e split at =0A different levels.=0A* Output fi= les:: Determining output file and directory names.=0A* Expansi= on:: Specify what region get expanded.=0A* Texinfo related = options:: Command line options related with =0A = texinfo language features.=0A* Page layout options:: Customize out= put page layout with command line=0A options= =0A* Style options:: Customize @acronym{HTML} and text style wi= th=0A command line options=0A* Expanding TeX r= egions:: Expand @@tex and @@math regions using La@TeX{}2HTML=0A* Using = init files:: Specifying initialization files for fine tuning.=0A@e= nd menu=0A=0A@c --------------------------------------------------------=0A= @node Splittig output=0A@section Specifying the splitting of the document= =0A=0AThe @acronym{HTML} manual resulting from the processing of the Texinf= o source=0Amay be splitted in files at different levels. This is specified = with the=0Aoption @option{--split} which takes an argument, namely the leve= l of splitting=0A(variable: @code{$SPLIT}). This level may be: =0A=0A@table= @asis=0A@item @samp{chapter}=0AThe document is split at @code{@@chapter}, = @code{@@appendix}, or @code{@@unnumbered}.=0A@item @samp{section}=0AThe doc= ument is split at chapter, and also at @code{@@section}, @code{@@appendixse= c} or @code{@@unnumberedsec}.=0A@item @samp{node}=0AThe document is split a= t each sectionning command. It is not necessarily =0Asplit at each node, if= the @code{@@node} structure doesn't correspond with=0Athe sectionning comm= ands structure (see below).=0A@item @samp{none}=0AThe document isn't split.= This is the default.=0A@end table=0A=0AThere are two kind of commands whic= h may be used to define sectionning=0Aelements in Texinfo: @code{@@node} an= d structuring commands (@code{@@top},=0A@code{@@section}, @code{@@appendixs= ubsec} and so on). =0AIn any case a node just preceding a structuring comma= nd is=0Aconsidered to be part of the same sectionning element than that com= mand.=0AIf the @code{@@node Top} isn't associated with a structuring comman= d it=0Aalso defines a sectionning element.=0A=0AIn the default setting, nod= es which aren't associated with a structuring =0Acommand are not considered= to be sectionning commands, they are always =0Aconsidered to =0Abe part of= a sectionning element defined by a structuring command.=0AIt is possible t= o change =0Athis behaviour, by setting @option{--use-nodes} (variable @code= {$USE_NODES}).=0AIn that case nodes not associated with structuring command= which aren't the =0A@samp{Top} node are also considered as sectionning com= mands and define a=0Asectionning element.=0A=0AThe default behaviour mimics= @command{texi2dvi} behaviour, which ignores =0A@code{@@node} commands for = the purprose of sectionning, while the second=0Alooks like @command{makeinf= o} behaviour (@pxref{Two Paths, , Two Path, texinfo, Texinfo}). =0A=0AFor a= n illustration, we show how a sample Texinfo code is divided in =0Asectionn= ing elements with @option{--use-nodes} used or not:=0A=0A@c @multitable @co= lumnfractions 1 1 1=0A@multitable { @@chapter node 1} { @@chapter= node 1} { @@chapter node 1}=0A@item=0ATexinfo code=0A=0A@tab=0Adefaul= t case=0A=0A@tab=0Awith --use-nodes=0A=0A@item=0A@*=0A@*=0A@example=0A@@nod= e node1=0A@@chapter node 1=0Anode1 text=0A=0A@@node node2=0Anode2 text=0A= =0A@@node node3=0Anode3 text=0A@@chapter node 3=0Achapter text=0A@end examp= le=0A=0A@tab=0A=0Afirst element:=0A=0A@example=0A@@node node1=0A@@chapter n= ode 1=0Anode1 text=0A=0A@@node node2=0Anode2 text=0A@end example=0A=0Asecon= d element:=0A=0A@example=0A@@node node3=0Anode3 text=0A@@chapter node 3=0Ac= hapter text=0A@end example=0A=0A@tab=0A=0Afirst element:=0A=0A@example=0A@@= node node1=0A@@chapter node 1=0Anode1 text=0A@end example=0A=0Asecond eleme= nt:=0A=0A@example=0A@@node node2=0Anode2 text=0A@end example=0A=0Athird ele= ment:=0A=0A@example=0A@@node node3=0Anode3 text=0A@@chapter node 3=0Achapte= r text=0A@end example=0A=0A@end multitable=0A=0A@c ------------------------= --------------------------------=0A@node Output files=0A@section Output fil= e and directory names=0A=0AThe default behaviour is to put files in the cur= rent directory. The basename=0Afor the files is constructed by stripping e= nding @samp{.texi}, @samp{.txi}, =0A@samp{.texinfo} or @samp{.txinfo} from = the Texinfo file name. If the =0Aoutput is split, an underscore followed by= a number is appended to that =0Abasename for the files corresponding with = sectionning elements except for =0Athe top element. The files containing sp= ecial elements pages have an underscore=0Aand a 3 letters code correspondin= g with the kind of page (@samp{toc} for=0Atable of contents, @samp{abt} for= about, @samp{ovr} for overview) appended.=0AA file extension @samp{.html} = it then appended.=0A=0AThus, if the texinfo file @file{afile.texi} is proce= ssed and split at chapters=0Ain 3 files, the generated files will be:=0A=0A= @example=0Aafile.html --> @code{@@node Top} or @code{@@top} section= =0Aafile_1.html=0Aafile_2.html=0Aafile_toc.html --> table of contents= =0Aafile_abt.html --> about page=0A@end example=0A=0AQuite a lot of opt= ions permit the modification of that behaviour.=0AIf the output isn't split= , the file name may be overrided by @option{--output}=0A(variable @code{$OU= T}). If the output is split, and @option{--output} is =0Aalso set, the file= s are placed in the directory specified by the option.=0A=0AThe basename ma= y be overrided with @option{--prefix} (variable @code{$PREFIX}).=0AIf @opti= on{--short-ext} is given @samp{.htm} is appended instead of @samp{.html}.= =0AThe option @option{--top-file} enables to specify a name for the=0Atop e= lement file (variable @code{$TOP_FILE}). This can be usefull if you =0Awant= to use @samp{index.html} for your top element file. Similarly=0A @option{-= -toc-file} changes the name of the table of contents file (variable=0A@code= {$TOC_FILE}).=0A=0AIf we reuse the same example as above, but this time cal= l=0A=0A@example=0A$ texi2html --split chapter --prefix manual --short-ext -= -top-file index.htm --toc-file contents.htm=0A@end example=0A=0Awe get:=0A= =0A@example=0Aindex.htm --> @code{@@node Top} or @code{@@top} sect= ion=0Amanual_1.htm=0Amanual_2.htm=0Acontents.htm --> table of content= s=0Amanual_abt.htm --> about page=0A@end example=0A=0AThe file names ge= nerated by @command{texi2html} differ from those generated=0Aby @command{ma= keinfo}, as @command{makeinfo} use the node name to construct=0Athe file na= mes while splitting at nodes. It is possible to do the same=0Awith @command= {texi2html} by specifying @option{--node-files} (variable =0A@code{NODE_FIL= ES}). If the output isn't split at nodes, @command{texi2html}=0Awill nevert= heless output files with name the nodes names, without real content=0Abut r= edirecting to the right file. With this trick it is possible for the=0Agene= rated html manual to be a target for the cross-references of other=0Amanual= s generated by @command{makeinfo} or @command{texi2html}. =0A@strong{Warnin= g}: the way @command{makeinfo} (and hopefully =0A@command{texi2html})=0Ado = html manual cross references should change in the future.=0A=0A@c ---------= -----------------------------------------------=0A@node Expansion=0A@sectio= n Specify what region get expanded=0A=0AThe default for @command{texi2html}= is to expand the @code{@@ifhtml}, =0A@code{@@html}, @code{@@menu} regions,= all the @code{@@ifnot} regions =0Aexcept @code{@@ifnothtml} and no other @= code{@@if} region of output =0Astyle specific region.=0A=0AIt is possible t= o expand other regions by setting @option{--if<region>}=0Awith @samp{<regio= n>} replaced by the name of the region. Symetrically,=0Aif @option{--no-if<= region>} is precised, the region @samp{<region>} is=0Aignored. In the confi= guration file an array, @code{@@EXPAND}, holds the =0Anames of region expan= ded in addition to html regions.=0AIf @option{--nomenu} is set, the @code{@= @menu} sections are not expanded=0A(variable @code{$SHOW_MENU}).=0A=0A@c --= ------------------------------------------------------=0A@node Texinfo rela= ted options=0A@section Command line options related with Texinfo constructs= =0A =0AMiscalleneous Texinfo related things might be specified with comman= d line=0Aoptions. =0A=0A@table @asis=0A@item @option{--lang} =0ASets the do= cument language similarly than with @code{@@documentlanguage} (variable =0A= @code{$LANG}).=0A@item @option{--no-validate}=0ASuppress node cross-referen= ce validation, same than @code{@@novalidate}.=0A@item @option{-D}=0ASets to= true the specified value. Equivalent to @code{@@set <value> 1}.=0A@item @o= ption{-U}=0AClearss the specified value. Equivalent to @code{@@clear <value= >}.=0A@item @option{-P}=0APrepend the specified directory to the list of di= rectories where =0A@code{@@include} files are searched for before the direc= tory of the Texinfo=0Afile being processed (the associated array is @code{@= @PREPEND_DIRS}).=0A@item @option{-I}=0AAppend the specified directory to th= e list of directories where =0A@code{@@include} files are searched for afte= r the directory of the=0ATexinfo file being processed (the associated array= is @code{@@INCLUDE_DIRS}).=0A@end table=0A=0A@c --------------------------= ------------------------------=0A@node Page layout options=0A@section Page = layout related command line options=0A=0AIf the option @option{--frames} is= specified, @acronym{HTML} frames =0Aare used. A file describing the frame = layout is generated, and the=0Adocument page is associated with a frame whe= re the short table of=0Acontent appears (variable @code{$FRAMES}).=0A=0AOth= erwise the page layout cannot be customized a lot with command line =0Aopti= ons. It is only possible to suppress sections navigation panel with=0A@opti= on{--nosec-nav} (variable @code{$SECTION_NAVIGATION}), or=0Ato specify whet= her footnotes should appear in the same page=0Awhere they are called or in = a separated page with @option{--separated-footnotes}=0A(variable @code{$SEP= ARATED_FOOTNOTES}).=0A=0A@c -----------------------------------------------= ---------=0A@node Style options=0A@section Changing @acronym{HTML} and text= style=0A=0AMiscalleneous style changes may be achieved with command line o= ptions. =0A=0A@table @option=0A@item --doctype=0A@itemx --frameset-doctype= =0AYou can specify the document DTD by setting these options. =0A@option{--= frameset-doctype} applies to the file describing the frames when =0Aframes = are used (corresponding variables are @code{$DOCTYPE} and =0A@code{$FRAMESE= T_DOCTYPE}).=0A=0AFor example, the default for the document doctype is:=0A@= example=0A<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h= ttp://www.w3.org/TR/html401/loose.dtd">=0A@end example=0A=0A@item --iso=0AI= f this option is set, ISO8859 entities are used for some special symbols,= =0Alike Copyright (variable @code{$USE_ISO}).=0A@item --css-include=0AThis = command line switch is provided for inclusion of external css file.=0AMore = than one file may be specified, and @samp{-} stands for the standard=0Ainpu= t (the associated array is @code{@@CSS_FILES}, holding the file names). =0A= =0AThe @code{@@import} lines of the file are pasted before the @command{tex= i2html}=0Acss rules, and the external file css rules are pasted after the = =0A@command{texi2html} css rules. This does the same than the corresponding= =0A@command{makeinfo} switch (@pxref{HTML CSS,,HTML CSS,texinfo,Texinfo}).= =0A=0A@item --html-xref-prefix=0AThis option sets the base directory for ex= ternal @acronym{HTML} texinfo manuals =0A(variable @code{$EXTERNAL_DIR}). T= he default is=0A@samp{../}.=0A@item --def-table=0AIf this option is set, @a= cronym{HTML} tables are used to format definition =0Acommands, instead of d= efinitions (variable @code{$DEF_TABLE}).=0A@item --short-ref=0AIf this opti= on is set cross-references are given without section numbers=0A(variable @= code{$SHORT_REF}).=0A@item --number=0AIf this option is negated, sections a= re not numbered (variable @code{$NUMBER_SECTIONS}).=0A@item --toc-links=0AI= f this option is set, links from headings to toc entries are created (varia= ble=0A@code{$TOC_LINKS}).=0A@end table=0A=0A@c ----------------------------= ----------------------------=0A@node Expanding TeX regions=0A@section Expan= d @code{@@tex} and @code{@@math} regions using La@TeX{}2HTML=0A=0A@c @opind= ex @option{}=0A@opindex @option{--l2h-l2h}=0A=0AIt is possible to use @uref= {http://www.latex2html.org/, La@TeX{}2HTML} =0Ato process @code{@@tex} reg= ions and @code{@@math@{@}} commands. This=0Ais very usefull in case you wan= t to have some mathematical constructs=0Anicely displayed in the @acronym{H= TML} manual. The option @option{--l2h}=0Aactivates that feature (variable @= code{$L2H}). In most cases it is better =0Ato expand @code{@@tex} sections = in that case (@pxref{Expansion}).=0A=0AThe option @option{--l2h-l2h} enable= s changing the name/location of the program=0Aprocessing @TeX{} (variable @= code{$L2H_L2H}). @option{--l2h-tmp} sets the =0Adirectory used for temporar= y files, this name shouldn't contain a dot @samp{.} =0A(variable is @code{$= L2H_TMP}). The file specified by @option{--l2h-file} is=0Aused as La@TeX{}2= HTML init file. It is searched at the same places than=0Ainit files (@pxref= {Using init files}), and the default is @file{l2h.init}.=0A=0A@c ----------= ----------------------------------------------=0A@node Using init files=0A@= section Use initialization files for fine tuning=0A=0AInitialization variab= les are read first from=0A@file{/usr/local/etc/texi2htmlrc} (the exact loca= tion being=0Achangeable with the @option{--sysconfdir=3Ddir} option of the= =0A@command{configure} script, see @ref{Installation}), then from=0A@file{$= HOME/.texi2htmlrc}. Any command-line option can override=0Athe correspondin= g option set in init file, and the option @option{--init-file}=0Aspecifies = an init file to be loaded, with later settings=0Aoverriding earlier ones.= =0A=0AThe init files specified with @option{--init-file} are searched=0Afir= st in the current directory, then in the @file{$HOME/.texi2html/}=0Adirecto= ry, in the @file{/usr/local/etc/texi2html/} directory=0A(the exact location= being=0Achangeable with the @option{--sysconfdir=3Ddir} option of the=0A@c= ommand{configure} script), and lastly in the =0A@file{/usr/local/share/texi= 2html/} directory=0A(the exact location being=0Achangeable with the @option= {--pkgdatadir=3Ddir} option of the=0A@command{configure} script, see @ref{I= nstallation}).=0A=0AThe default initialization options are defined in the= =0A@file{texi2html.init} file contained in the @emph{texi2html}=0Adistribut= ion (which gets included near the beginning of the=0A@command{texi2html} sc= ript that gets installed).=0A=0ATo customize @file{texi2html} it is best if= you copy the=0Aappropriate sections from the @file{texi2html.init}=0Aconte= nts into an appropriate local initialization file,=0Amake the necessary cha= nges there, and then have=0A@command{texi2html} read this initialization fi= le by one of=0Athe means described above.=0A=0A@c =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A@no= de Initialization files=0A@chapter Overview of initialization files content= and loading=0A=0AThe initialization files are @command{perl} files, read a= s explained =0Ain @ref{Using init files}. You don't need to know much of @c= ommand{perl}=0Ato do some simple changes in variable values, however, to be= able to =0Areally take advantage of all the features of the initialization= file,=0Aa good knowledge of @command{perl} is required.=0A=0AIn initializa= tion file two kind of variables appear. These are normal=0Avariables (inclu= ding arrays and hashes) and references on functions. =0AThe later permits t= he dynamic redefinition of functions used to produce=0Athe @acronym{HTML} m= anual. You should be able to change the value of some =0Anormal variables = without a deep knowledge of @command{perl}, by looking=0Aat the existing ex= amples. The possible mistakes in that case could be=0Aomitted @samp{;}, and= bad quoting.=0A=0AInitialization file are loaded from the main program by= =0Athe mean of a @code{require}, while in the @code{Texi2HTML::Config}=0Ana= mespace. This means that the namespace of the main program and=0Athe namesp= ace of inititalization files are distinct, which ensures=0Athat no name cla= sh should happen. The variables are declared with the=0A@code{our} specifie= r, such that it should be possible to use the =0A@code{use strict} pragma i= n the initialization file code.=0A=0ATo avoid messing with the variables in= the @code{main} namespace=0Aall the global variables which could be of use= in the init files =0Aare in the @code{Texi2HTML} namespace. Notice that th= e functions =0Aof the main program are still in the @code{main} namespace.= =0A=0A@menu=0A* Redefining functions:: Function redefinition is achiev= ed with =0A redefinition of references on func= tions.=0A* Function prototypes:: Conventions used in that manual for = function =0A reference prototypes display.=0A@= end menu=0A=0A@c --------------------------------------------------------= =0A@node Redefining functions=0A@section Redefining functions in initializa= tion files=0A=0ATo redefine a function you must replace the corresponding f= untion=0Areference with a reference on your function. =0AThus you should wr= ite your function, give it a name you=0Aare certain it is unique in the @co= de{Texi2HTML::Config} namespace,=0Aand override the value of the function r= eference with your own =0Afunction reference. When another function from th= e main program=0A(or from another functions of an initialization file) call= s the reference,=0Ayour function will be used. =0A=0AFor example the functi= on=0Areference corresponding with the function called when doing an=0Aancho= r is called @code{$anchor}. Thus if you want to override the=0Acorrespondin= g function=0Ayou could write:=0A=0A@example=0A# override the function refer= ence=0A$anchor =3D \&my_own_function;=0A=0A# the function reference now ref= ers to=0Asub my_own_function @{=0A# process arguments and return an html an= chor=0A@}=0A@end example=0A=0A@c ------------------------------------------= --------------=0A@node Function prototypes=0A@section Conventions used for = function prototypes=0A=0AAs the functions are defined by a reference name, = we will always=0Ause the reference name in function prototypes. For the fun= ction arguments=0Awe will use @code{\@@array} for a reference on an array a= nd similarly =0A@code{\%hash} for a reference on a hash.=0A=0AThus, the pro= totype for the function associated with the function=0Areference @samp{$for= matting_function} will be:=0A=0A@deftypefn {Function Reference} $text forma= tting_function $arg1 \@@arg2=0A@code{$formatting_function} takes as first a= rgument @var{$arg2},=0Aas second argument a reference on an array @var{\@@a= rg2}=0Aand returns the formatted text @var{$text}.=0A@end deftypefn=0A=0ATo= redefined the corresponding function, you should write:=0A=0A@example=0A$f= ormatting_function =3D \&my_formatting_function=0A=0Asub my_formatting_func= tion($$)=0A@{=0A my $arg1 =3D shift;=0A my $arg2 =3D shift;=0A # p= repare $formatted_text=0A .....=0A return $formatted_text=0A@}=0A@end= example=0A=0A@c --------------------------------------------------------= =0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D=0A@c =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A@in= clude custpage.texi=0A@c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A@include custhtml.texi=0A@c= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A=0A@c commandline option index.=0A@node Indexop=0A@= appendix Command Line Option Index=0A@printindex op=0A@c ------------------= --------------------------------------=0A@node Indexvr=0A@appendix Variable= Index=0A@printindex vr=0A@c ----------------------------------------------= ----------=0A@node Indexcp=0A@appendix Concept Index=0A@printindex cp=0A@by= e=0A --dDRMvlgZJXvWKvBx Content-Type: application/x-texinfo Content-Disposition: attachment; filename="custhtml.texi" Content-Transfer-Encoding: quoted-printable @c=0A@c This file is part of the ``Texinfo to HTML Converter'' manual=0A@c = which is part of the ``texi2html'' distribution.=0A@c=0A@c License:=0A@c = =0A@c Copyright (C) 2003 Free Software Foundation, Inc.=0A@c =0A@c = Permission is granted to make and distribute verbatim=0A@c copies of thi= s manual provided the copyright notice and=0A@c this permission notice a= re preserved on all copies.=0A@c =0A@c Permission is granted to copy = and distribute modified=0A@c versions of this manual under the condition= s for verbatim=0A@c copying, provided that the entire resulting derived = work is=0A@c distributed under the terms of a permission notice=0A@c = identical to this one.=0A@c =0A@c Permission is granted to copy and d= istribute translations=0A@c of this manual into another language, under = the above=0A@c conditions for modified versions, except that this=0A@c = permission notice may be stated in a translation approved=0A@c by the = Free Software Foundation.=0A@c=0A@c Revisions:=0A@c $Id$=0A@c=0A@c Author:= =0A@c Dumas Patrice <[email protected]>=0A@c=0A@c Description:=0A@c = Informations about customizing html and text style in =0A@c initializati= on files.=0A@c=0A@c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=0A@node Customizing HTML=0A@chap= ter Customizing @acronym{HTML} and text style in init files=0A=0ASome simpl= e customization may be achieved with the redefinition of the =0Avariables = =0Aassociated with the command line options. For the description and an =0A= explanation of the meaning of these variables, @ref{Style options}.=0A=0AOt= her variables and hash entries can be modified in initialization file=0Ato = achieve more customization.=0ALastly, functions references corresponding wi= th functions called from =0Athe main program and initialization files may = =0Abe redefined.=0A=0A@menu=0A* Two contexts:: there are tw= o different contexts for command=0A expansi= on: normal text and preformatted text.=0A* Commands without argument:: =0A*= Style and accent commands:: =0A* Anchors images and spaces:: Formatt= ing of @code{@@anchor}, @code{@@image} and @code{@@sp}=0A* Text:: = Some characters are special in @acronym{HTML} and=0A = should be protected=0A* Skipped commands:: = =0A* References::=0A* Alignement commands:: @code{@@center}, @= code{@@flushleft}@dots{}=0A* Paragraph and preformatted region::=0A* Comple= x formats:: @code{@@example}, @code{@@display}@dots{}=0A* List= s tables and quotation::=0A* Definitions::=0A* Headings::=0A* Special regio= ns:: @code{@@verbatim}, @code{@@cartouche}=0A* Menus:: = =0A* Indices::=0A* Footnotes::=0A=0A@end menu=0A=0A@c ---------= -----------------------------------------------=0A@node Two contexts=0A@sec= tion Two contexts for command and test expansion: preformatted and normal= =0A=0AThere are two contexts of interest, one is the normal context, the ot= her=0Ais a special context, called the @dfn{preformatted} context. The pref= ormatted=0Acontext occurs when the spacing between words is kept. This is t= he=0Acase, for example, in @code{@@display} or @code{@@example} regions, an= d in =0Amenu comments (@pxref{Menus}). The preformatted regions are usually= =0Arendered in @code{<pre>} elements in @acronym{HTML}.=0A=0ASome @acronym{= HTML} elements are not allowed in preformatted context.=0AThis is the case = for @code{<table>}, for example.=0AThus, sometime, a function doing some fo= rmatting have to reopen and =0Areclose the preformatted context around the = newly generated text.=0A=0AFor example, we suppose we have @acronym{HTML} r= esulting from command =0A@example=0A@@foo=0A@@item an item=0A@@end foo=0A@e= nd example=0Alooking like:=0A@example=0A<table><tr><td>an item</td></tr></t= able>=0A@end example=0Awith @code{foo_item} the function formating the @cod= e{@@foo} @code{@@item} =0Aline.=0A=0AAnd the @acronym{HTML} resulting from:= =0A@example=0A@@example=0Asome text=0A@@end example=0A@end example=0Alooks = like =0A@example=0A<pre>=0Asome text=0A</pre>=0A@end example=0A=0ASuppose t= hat we want to handle the construct:=0A@example=0A@@example=0A@@foo = =0A@@ite= m an item=0A@@end foo=0A@@end example=0A@end example=0AThis could lead to t= he invalid @acronym{HTML}:=0A@example=0A<pre>=0A<table><tr><td>an item</td>= </tr></table>=0A</pre>=0A@end example=0ATo avoid that, @code{@@foo} will cl= ose the preformatted context=0Aopened by @code{@@example}, and the function= @code{foo_item} will have to=0Areopen it, leading to=0A@example=0A<table><= tr><td><pre>=0Aan item=0A</pre></td></tr></table>=0A@end example=0Awhich is= valid.=0A=0AAll such function should allready have an hash reference passe= d as one of their=0Aarguments, the @dfn{state}. The only entry of interest = in the corresponding=0Ahash is @code{'preformatted'} which is true if the f= unction was called=0Ain a preformatted context.=0AOpening and closing the p= reformatted context should then be done by calling =0Aa function from the m= ain program, @code{main::do_preformatted} with the =0Atext and the state as= arguments.=0A=0AHere is an example:=0A=0A@example=0Asub foo_item=0A@{=0Amy= $arg1 =3D shift;=0Amy $arg2 =3D shift;=0Amy $state =3D shift;=0A=0Aif ($st= ate->@{'preformatted'@})=0A@{=0A my $text;=0A # add some text to $tex= t, =0A # possibly using $arg1 and $arg2.=0A return '<td>' . main::do_= preformatted($text, $state) . '</td>';=0A@}=0Aelse=0A@{=0A .....=0A@}=0A= @end example=0A=0A@c ------------------------------------------------------= --=0A@node Commands without argument=0A@section Customizing the formatting = of commands without argument=0A=0AThis includes the commands whose name is = a nonletter character like @code{@@@@}, =0Athe commands with lettered chara= cters and braces=0Abut whose braces should be empty, like @code{@@TeX@{@}},= or some commands=0Aassociated with accentted letters like @code{@@AA@{@}}.= If there happens to=0Abe something within the braces, it is put after the = command, thus=0A@example=0A@@TeX@{something@}=0A@end example=0Aleads to the= same than=0A@example=0A@@TeX@{@} something=0A@end example=0A=0AEach of the= se categories of commands have two associated hash, one for normal=0Acontex= t, the other for preformatted context. The keys of the hashes are the =0Aco= mmand names, the associated value is the text replacing the command.=0A=0AT= he hashes are:=0A@multitable {one nonlettered character} {in normal text} {= in preformatted text}=0A@item command type @tab in normal text @tab in pref= ormatted text=0A@item one nonlettered character @tab @code{%simple_map} @ta= b @code{%simple_map_pre}=0A@item nothing in braces @tab @code{%things_map} = @tab @code{%pre_map}=0A@end multitable=0A=0ATo change the @acronym{HTML} re= sulting from these constructs, just change the=0Avalue. For example, if you= want @code{­} to be outputted for @code{@@-}=0Ain normal and preformat= ted context, write in your init file:=0A=0A@example=0A$simple_map@{'-'@} = =3D '­';=0A$simple_map_pre@{'-'@} =3D '­';=0A@end example=0A=0A@c -= -------------------------------------------------------=0A@node Style and a= ccent commands=0A@section Customizing accent, style and other simple comman= ds=0A=0AThe formatting of the @acronym{HTML} produced by style and indicatr= ic =0Acommands (@code{@@tt}, @code{@@code}, =0A@code{@@email}, @code{@@titl= efont}), the accentuation related=0Acommands taking argument (@code{@@'}, @= code{@@udotaccent}, @code{@@dotless})=0Aand miscalleneous commands (@code{@= @email}, @code{@@verb}, @code{@@w}, =0A@code{@@uref}, @code{@@math}, @code{= @@asis}) is controlled by two hash, =0A@code{%style_map} for normal context= and @code{%style_map_pre} for=0Apreformatted context. =0A=0AThe keys are t= he command names. The value determine how the command argument=0Ais formatt= ed. If the value begins with @samp{"}, the result is =0Aenclosed in quotes = @samp{`} and @samp{'}. The remaining of the value text=0A(or the value text= if there were no @samp{"}) is interpreted as follow:=0A=0A@itemize=0A@item= =0AIf a text is empty the argument of the command is left as is. =0A@item= =0AIf the text is a @samp{&} followed by a name,=0Alike @samp{&function}, t= he name is considered to be a function name, =0Aand this function is called= to format the argument of the command. The=0Afirst argument of the functio= n is the command name, the second is =0Athe command argument. For example, = if the value associated with the=0A(fictituous) command @code{@@foo} is @co= de{&my_func}=0Aand we have:=0A=0A@example=0Asub my_func=0A@{=0A my @@arg= s =3D split /,\s*/ $_[1];=0A return "$_[0]: $args[0]" if ($args[1] =3D 1= );=0A return "$args[0]";=0A@}=0A@end example=0A=0AThe result of =0A@exam= ple =0A@@foo@{truc, 1@}=0A@@foo@{truc, bidule@}=0A@end example =0Awill be= =0A@example=0Afoo: truc=0Atruc=0A@end example=0A@item=0AIf the text is a wo= rd, it is considered to be an @acronym{HTML} element=0Aname, and the argume= nt is enclosed between the element opening=0Aand the element closing. For e= xample, if the value is @code{elem}, the=0Aresulting @acronym{HTML} is @cod= e{<elem>@var{arg}</elem>}.=0ASimilarly @code{"quoted} leads to=0A@code{`<qu= oted>@var{arg}</quoted>'}.=0A@item=0AIf the text is a word followed by some= text, =0Athe word and is interpreted as above, and the=0Atext is considere= d to be the attributes text of the element. =0AThus @code{elem class=3D"ele= m"} leads to =0A@code{<elem class=3D"elem">@var{arg}</elem>}.=0A@end itemiz= e=0A=0ASome remarks are in order:=0A=0A@itemize=0A@item =0AThe command argu= ment is allready formatted as @acronym{HTML}.=0A@item=0AThe nonlettered acc= ent commands which following character is considered=0Ato be the argument (= like in @code{@@`a}) should be keys of the=0Ahash @code{%accent_map} hash, = even if no value is associated.=0A@item=0A@code{@@math} is handled differen= tly if La@TeX{}2HTML is used.=0A@end itemize=0A=0A@c ----------------------= ----------------------------------=0A@node Anchors images and spaces=0A@sec= tion Formatting of special simple commands=0A=0AThe formatting of special s= imple commands is controlled by functions. To=0Acustomize the output, the c= orresponding function references should be=0Aredefined.=0A=0AThe formatting= of anchors is controlled by @code{$anchor}, but the function=0Aassociated = with the function reference does more, it is usefull=0Ato produce a referen= ce target or link.=0A@deftypefn {Function Reference} $anchor anchor $identi= fier $href $text $attributes=0AIf @var{$identifier} is not empty, this valu= e should be used to create=0Aa target for links (typically associated with = a name or id =0Aattribute in @acronym{HTML}).=0AThe @var{$href} argument sp= ecifies a hpertextual reference which should be=0Aused to link to a target.= =0AIn case both @var{$identifier} and @var{$href} are given the text produ= ced=0Ashould be both a target for @var{$identifier} and a link to @var{$hre= f}.=0A@var{$text} is the text to be displayed. =0A@var{$attributes} are add= itional attributes.=0AIt should be reasonable to assume that the attributes= are for a @code{<a>}=0A@acronym{HTML} element. =0A@end deftypefn=0A=0AThe = formatting of @code{@@image} is controlled by:=0A@deftypefn {Function Refer= ence} $image image $file_name $basename $preformatted=0A@var{$file_name} is= the image file name, @var{$basename} is the file name=0Awithout extension.= @var{$preformatted} is true if the image appears in =0Apreformatted text.= =0A@end deftypefn=0A=0AThe formatting of @code{@@sp} is controlled by:=0A@d= eftypefn {Function Reference} $sp sp $number $preformatted=0A@var{$number} = is the numeric argument of @code{@@sp}.=0A@var{$preformatted} is true if th= e @code{@@sp} appears in preformatted text.=0A@end deftypefn=0A=0A@c ------= --------------------------------------------------=0A@node Text=0A@section = Protecting special @acronym{HTML} characters in text=0A=0ASome characters a= re special in @acronym{HTML} (@samp{&}, @samp{"}, @samp{<} and=0A@samp{>}) = and should be protected.=0AThis is done by the function associated with the= function reference=0A=0A@deftypefn {Function Reference} $protected_text pr= otect_html $text=0AThe function processes the unprotected text @var{$text} = and returns=0Athe resulting protected text @var{$protected_text}.=0A@end de= ftypefn=0A=0A@c --------------------------------------------------------=0A= @node Skipped commands=0A@section Customizing ignored commands and text=0AT= he ignored commands are the keys of two hashes: @code{%to_skip_texi}=0Afor = commands skipped during the first pass (expansion of macros and values)=0Aa= nd @code{%to_skip} for the commands skipped during the second pass=0A(deter= mination of the document structure).=0A=0AThe associated value determines h= ow things following the ignored=0Acommand are handled. There are four possi= bilities:=0A=0A@table @asis=0A@item @code{1}=0Aonly the command is ignored,= =0A@item @code{space}=0Aspaces following the command are skipped,=0A@item @= code{arg}=0Aan argument following the command is skipped,=0A@item @code{lin= e}=0AThe line following the command is skipped.=0A@end table=0A=0A@c ------= --------------------------------------------------=0A@node References=0A@se= ction References=0A=0AThe references are produced with two function referen= ces, one for the reference=0Ato external manuals the other for refences wit= hin the manual. =0A=0A@deftypefn {Function Reference} $text external_ref $c= ommand $section $book $node_and_file $href $cross_ref_name=0AThis function = formats a reference to an external texinfo manual.=0AThe @var{$command} is = the ref command (@code{ref}, @code{xref} or =0A@code{pxref}, in text, at se= ntence beginning or in parenthesis).=0AThe optionnal @var{$section} argumen= t is the section in the book and =0A @var{book} is the book title.=0A@var{$= node_and_file} is the node and file name formatted according to the =0Aconv= ention used in info: @samp{(file)node}. @var{$href} it an hypertextual=0Are= ference to the distant manual constructed using the same conventions=0Athan= @command{makeinfo}. @var{$cross_ref_name} is an optionnal cross=0Areferenc= e name appearing in the reference command. This function returns=0Athe text= corresponding with the external html manual reference.=0AThis function ret= urns the full formatted text of the external reference.=0A@end deftypefn=0A= =0A@deftypefn {Function Reference} $text internal_ref $command $href $short= _name $name $is_section=0AThis function formats a reference to a node in th= e current manual.=0AThe @var{$command} is the ref command (@code{ref}, @cod= e{xref} or =0A@code{pxref}, in text, at sentence beginning or in parenthesi= s).=0A@var{$href} it an hypertextual reference linking to the corresponding= =0Anode or section. @var{$short_name} and @var{$name} hold the text for the= =0Areference but @var{$short_name} can be the node name which is assumed t= o =0Abe shorter than the section name.=0A@var{$is_section} is a boolean tru= e if the reference is a reference to a =0Asection. This function returns th= e full formatted text of the internal =0Areference.=0A@end deftypefn=0A=0A@= c --------------------------------------------------------=0A@node Aligneme= nt commands=0A@section Commands used for centering and flushing of text=0A= =0AWhen a command controlling the alignement of text is used (@code{@@cente= r},=0A@code{@@flushleft} and @code{@@flushright}), the main program takes= =0Acare of opening and closing paragraphs. The only thing which can be=0Aco= ntrolled is an argument given to the function doing the formatting of =0Apa= ragraphs. This is achieved by the mean of a hash, @code{%paragraph_style}.= =0AThe keys are the names of the Texinfo commands, the value is the argumen= t=0Apassed down to the function doing the formatting of the paragraphs. =0A= @xref{Paragraph and preformatted region}.=0A=0A@c -------------------------= -------------------------------=0A@node Paragraph and preformatted region= =0A@section Formatting a paragraph or a preformatted region=0A=0AThe format= ting of a paragraph region or a preformatted region, is controlled=0Aby fun= ction references:=0A=0A@deftypefn {Function Reference} $paragraph_text para= graph $text $alignement=0AThis function formats a paragraph. @var{$text} is= the text of the paragraph,=0A@var{$alignement} is a specifier for the alig= nement of the paragraph.=0A@xref{Alignement commands}.=0A@end deftypefn=0A= =0A@deftypefn {Function Reference} $preformatted_text preformatted $text $r= egion_name=0AThis function formats a preformatted region. @var{$text} is th= e text of the=0Apreformatted region, @var{$region_name} is the name of the = command opening=0Athe preformatted region (@code{example}@dots{}, see @ref{= Complex formats}) =0Aor a identifier for the preformatted context (for exam= ple =0A@code{menu-comment}, see @ref{Menus}).=0A=0AThe alignment commands a= re not taken into account, as the spaces are=0Apreserved in preformatted re= gions, you should flush and center by hand.=0A@end deftypefn=0A=0A@c ------= --------------------------------------------------=0A@node Complex formats= =0A@section Formatting of complex formats (@code{@@example}, @code{@@displa= y}@dots{})=0A=0AHere we see how a whole complex format is formatted. For th= e formatting=0Aof the text, see @ref{Paragraph and preformatted region}.=0A= =0AThe formatting of the complex formats is ultimately controlled by a=0Afu= nction, however the default for this function uses a hash reference and =0A= changing the hash reference values should be enough in most cases. This=0Ah= ash reference is called @code{$complex_format_map}. It has a key for each= =0Aof the complex format commands (@code{example}, @code{smallexample}, =0A= @code{lisp}, @code{smalllisp}, @code{display}, @code{smalldisplay}, =0A@cod= e{format}, @code{smallformat}).=0A=0AThe associated value is also a referen= ce on a hash. The keys are @code{begin}=0Aand @code{end}. An eval of @code{= begin} should lead to the beginning of the=0Aformatted @acronym{HTML}, an e= val of @code{end} should lead to the end of the =0Aformatted @acronym{HTML}= . The enclosed text will be formatted as described in=0A@ref{Paragraph and = preformatted region}, and the name of the complex=0Aformat will be availabl= e to the function formatting the text.=0A=0AIf you aren't satisfied with th= is scheme, you can redefine the following=0Afunction reference for a better= control over the complex format formatting:=0A=0A@deftypefn {Function Refe= rence} $complex_format_text complex_format $format_name $preformatted_text= =0A=0A@var{$format_name} is the complex format name, @var{$preformatted_tex= t} is the =0Atext allready formatted as described in @ref{Paragraph and pre= formatted region}.=0AThis function returns the whole complex format.=0A@end= deftypefn=0A=0A@c --------------------------------------------------------= =0A@node Lists tables and quotation=0A@section Customizing the formatting o= f lists, tables and quotations=0A=0AThe formatting of lists and tables is d= one at two levels:=0A@itemize=0A@item =0AAt the level of the whole region (= table, list or quotation),=0A@item=0AAt the level of the individual items, = rows or cells of the list or table.=0A@end itemize=0A=0A@menu=0A* Table and= list items::=0A* Whole table list and quotation::=0A@end menu=0A=0A@c -=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D=0A@node Table and list items=0A@subsect= ion Formatting individual table and list items=0A=0AIn texinfo it is possib= le to give @code{@@itemize} or table command (hereafter=0Acalled a @dfn{for= mat command}) a @dfn{formatting command}. =0AFor example @code{@@minus} is = the formatting command here:=0A@example=0A@@table @@minus=0A@end example=0A= =0AThe default is to apply the command to the text item, however it is poss= ible=0Ato avoid it.=0AThe hash @code{%special_list_commands} has an entry f= or each of the =0Aformat command. Each of these entries is a hash reference= . If a formatting=0Acommand is a key of the hash reference, then the format= ting command is not=0Aapplied to the text item for that format command. For= example, if we have:=0A=0A@example=0A$special_list_commands@{'itemize'@} = =3D @{ 'bullet' =3D> '' @};=0A@end example=0A=0Aand we have the following @= code{@@itemize}:=0A@example=0A@@itemize @@bullet=0A@@item an item=0A@@end i= temize=0A@end example=0A=0Athen @code{@@bullet} will not be applied to @cod= e{an item}.=0A=0A@table @emph=0A@item lists=0AThe items of lists are format= ted using the following function reference:=0A@deftypefn {Function Referenc= e} $list_item list_item $text $format $command=0AThis function formats the = text between @code{@@item} commands. @var{$text} =0Ais the text correspondi= ng with the item. @var{$format} is the type of format,=0A@samp{itemize} or = @samp{enumerate}. @var{$command} is the formatting command=0Agiven in argum= ent to @code{@@itemize}.=0A@end deftypefn=0A=0A@item two column tables=0ATh= e two columns tables (@code{@@table}, @code{@@ftable} and @code{@@vtable}),= =0Aitems are formatted using two function references,=0Aone for the first = line located on the @code{@@item} line corresponding=0Awith the first colum= n, the other for the text appearing on the=0Afollowing lines, corresponding= with the second column text.=0A=0A@deftypefn {Function Reference} $table_i= tem table_item $item_text $index_label_text $format $command=0AThis functio= n is used to format the text on the @code{@@item} line.=0A@var{$text_item} = is the text line. In case there is an index entry =0Aassociated with the @c= ode{@@item} (as with @code{@@ftable} and =0A@code{@@vtable}), @var{$index_l= abel_text} is the text inserted at =0Athe place where an index entry appear= s. @xref{Index entry place}.=0A@var{$format} is the type of format,=0A@samp= {table}, @samp{ftable} or @samp{vtable}. @var{$command} is the formatting c= ommand=0Agiven in argument to the table format command.=0A@end deftypefn=0A= =0A@deftypefn {Function Reference} $table_line table_line $text=0AThis func= tion is used to format the text on the lines following=0Athe @code{@@item} = line. @var{$text} is the corresponding text. =0A@end deftypefn=0A=0A@item m= ultitable=0AThe multitable elements formatting is controlled by the functio= ns associated=0Awith two function references. One for a cell, and the other= for a row.=0A=0A@deftypefn {Function Reference} $multitable_cell cell $tex= t=0AThis function is used to format the text of a multitable cell, the text= =0Afollowing a @code{@@item} or a @code{@@tab}.=0A@var{$text} is the corre= sponding text. =0A@end deftypefn=0A=0A@deftypefn {Function Reference} $mult= itable_row row $text=0AThis function is used to format a multitable row. @v= ar{$text} is=0Athe row text, with cells allready formatted with the @code{$= cell}=0Afunction reference.=0A@end deftypefn=0A@end table=0A=0A@c -=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D=0A@node Whole table list and quotation=0A@subs= ection Formatting of a whole table, list or quotation=0A=0AIf the Texinfo c= ommand is a key of the @code{%format_map}, the associated=0Avalue is used t= o specify the formatting of the construct, otherwise a function =0Ais calle= d. =0AThe value in @code{%format_map} associated with a command is interpre= ted =0Asimilarly with values associated with more simpler commands:=0A=0A@i= temize=0A@item=0AIf the text is a word, it is considered to be an @acronym{= HTML} element=0Aname, and the whole table or list is enclosed between the e= lement opening=0Aand the element closing.=0A@item=0AIf the text is a word f= ollowed by some text, =0Athe word and is interpreted as above, and the=0Ate= xt is considered to be the attributes text of the element. =0A@end itemize= =0A=0AIn case the @code{%format_map} isn't used, a function reference calle= d=0A@code{$table_list}=0Ashould be redefined, the associated function will = be called each time=0Aa command isn't found in @code{%format_map}.=0A=0A@de= ftypefn {Function Reference} $whole_table_list table_list $command $text=0A= @var{$command} is the Texinfo command name, @var{$text} is the formatted=0A= items.=0A@end deftypefn=0A=0A@c -------------------------------------------= -------------=0A@node Definitions=0A@section Definition commands formatting= =0A=0AThe formatting of definition commands is controlled by a hash and fou= r =0Afunctions. The hash describes how the text on the definition line is = =0Ainterpreted, the functions control the formatting of the definition line= =0Aand the definition function text.=0A=0A@menu=0A* Definition line::=0A* D= efinition formatting::=0A@end menu=0A=0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D=0A@node Definition line =0A@subsection Customizing the interpretati= on of a definition line=0A=0AThe keys of the hash @code{%def_map} are defin= ition command names.=0AThere are two types of entries:=0A=0A@itemize=0A=0A@= item If the command is a shortcut for =0Aanother definition command the val= ue is a text and the definition =0Acommand is replaced by the text.=0A=0AFo= r example if we have:=0A@example=0A$def_map@{'deftruc'@} =3D '@@defvr @{A t= ruc@}';=0A@end example=0A=0Aand a line like=0A@example =0A@@deftruc var=0A@= end example=0A=0Athe line will be transformed in=0A@example=0A@@defvr @{A t= ruc@} var=0A@end example=0A=0A@item=0AIf the command isn't a shortcut, it i= s associated with an array=0Areference. The first element is @samp{f}, @sam= p{v} or @samp{t} corresponding=0Awith the index type (@samp{f} for function= , @samp{v} for variable,=0A@samp{t} for type).=0A=0AThe remaining of the ar= ray describes how to interpret the text following=0Athe definition command = on the definition command line. If the entry begins=0Awith @samp{@{}, then = the corresponding item is the next bracketed item=0Aor the next word. The r= emaining of the entry word specify what corresponds=0Awith this item. Curre= ntly the word may be @samp{category}, @samp{name},=0A@samp{type}, @samp{cla= ss} and @samp{arg}.=0A=0AFor example if we have=0A@example=0Adef_map@{'defv= r'@} =3D [ 'v', '@{category', '@{name' ];=0A@end example=0A=0AThe first bra= cketed item following @code{@@defvr} is considered=0Ato be the category and= the next one is the name. The index associated=0Awith the definition line = is the variables index.=0A@end itemize=0A=0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D=0A@node Definition formatting=0A@subsection Customization of th= e definition formatting=0A=0AFour functions are used when formatting a defi= nition command:=0A=0A@table @asis=0A@item category name=0A@deftypefn {Funct= ion Reference} $category definition_category $category_or_name $class $styl= e=0AThis function precise a category or an index entry name associating a c= lass =0A@var{$class} (if given) with @var{$category_or_name}. The @var{$sty= le} of the=0Adefinition may be @samp{f}, for function, @samp{v}, for variab= le or @samp{t}, =0Afor type.=0A@end deftypefn=0A@item formatting of the def= inition line=0A@deftypefn {Function Reference} $line def_line $category $na= me $type $arguments $index_label=0AThis function formats the definition lin= e. @var{$category} is the category=0Aformatted with @code{$definition_categ= ory}, @var{$name}, @var{$type} and =0A@var{arguments} are the element of th= e definition line. @var{$index_label} is=0Athe text inserted at the place w= here an index entry appears. =0A@xref{Index entry place}.=0A@end deftypefn= =0A=0A@item definition text=0A@deftypefn {Function Reference} $definition_t= ext def_item $text=0AThis function formats the definition text, @var{$text}= .=0A@end deftypefn=0A=0A@item the whole definition=0A@deftypefn {Function R= eference} $definition def $text=0AThis function formats the whole definitio= n. The definition line and text =0Aformatted by the above functions are in = @var{$text}.=0A@end deftypefn=0A=0A@end table=0A=0A@c ---------------------= -----------------------------------=0A@node Headings=0A@section Customizing= headings formatting=0A=0AA function controls the formatting of sectionning= element headings, =0Awith the corresponding function reference:=0A@deftype= fn {Function Reference} $heading_text heading \%element_reference=0AThe @va= r{\%element_reference} is a reference on a hash corresponding=0Awith the se= ctionning element. The following keys are of interest:=0A@table @code=0A@it= em text=0AThe heading text=0A@item name=0AThe heading text without section = number=0A@item node=0Atrue if the sectionning element is a node without ass= ociated structuring command=0A@item level=0AThe level of the element in the= document tree. @samp{0} is for @code{@@top},=0A@samp{1} for @code{@@chapte= r} and so on=0A@item tag_level=0Athe sectionning element name, with @code{@= @raisesections} and =0A@code{@@lowersections} taken into account=0A@end tab= le=0A@end deftypefn=0A=0A@c -----------------------------------------------= ---------=0A@node Special regions=0A@section Formatting of special regions = (@code{@@verbatim}, @code{@@cartouche})=0A=0ARegions corresponding with raw= text, like @code{@@verbatim}, @code{@@html}=0Aor @code{@@tex} are formatte= d according to the following function reference:=0A=0A@deftypefn {Function = Reference} $raw_region raw $command $text=0A@var{$command} is the command n= ame, @var{$text} is the raw text.=0A@end deftypefn=0A=0AIf La@TeX{}2HTML is= used, @code{@@tex} regions are handled differently,=0Afrom within the main= program.=0A=0AThe @code{@@cartouche} command formatting is controlled by t= he=0Afunction reference:=0A=0A@deftypefn {Function Reference} $cartouche ca= rtouche $text=0A@var{$text} is the text appearing within the cartouche.=0A@= end deftypefn=0A=0A@c -----------------------------------------------------= ---=0A@node Menus=0A@section Menu formatting=0A=0ATo understand how the for= matting of menus is controlled, the different=0Aparts of a menu are first d= escribed, then how to control the formatting=0Aof each of these parts.=0A= =0A@menu=0A* Menu parts:: A menu consists in menu entry and= menu =0A comments=0A* Menu formatting::=0A@e= nd menu=0A=0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D=0A@node Menu parts= =0A@subsection The structure of a menu=0A=0AIn @emph{texi2html}, a menu is = considered to be composed of 2 parts, the=0A@dfn{menu entries} and the @dfn= {menu comments}. Menu entries are further =0Adivided in an @dfn{entry link}= and optionnaly an @dfn{entry description}.=0AThe entry link consists in a = node name and an optionnal menu entry=0Aname.=0A=0AA menu entry begins wit= h @samp{*} at the beginning of the line. It begins=0Awith the entry link, f= ollowed by the description. The description spans until=0Athe next menu ent= ry, or some text begining at the first character of a line=0Aor an empty li= ne, not contained within a command block which begun in the =0Adescription.= An empty line or a line with text at the first character=0Astarts a menu c= omment, which spans until the next menu entry.=0A=0AHere is an illustration= of these rules:=0A=0A@example=0A@@menu=0A* node name: entry name. d= escription begins=0A description continues=0A* another menu entry::=0A = description begins=0A description continues=0A=0A A me= nu comment, after an empty line=0A=0A* node:: descri= ption begins=0AA menu comment. The line starts at the first character=0A=0A= * last entry:: description begins @emph{text=0Aof the description, = even if the line begins at the first character,=0Abecause we are in @@emph}= .=0A@@end menu=0A@end example=0A=0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= =0A@node Menu formatting=0A@subsection The formatting of the different menu= components=0A=0ASome processing of the menu entry is done in the main prog= ram without=0Aa possibility of total control. =0AHowever this process may b= e influenced=0Aby some variable values. =0A=0AIn the default case, the name= of the section corresponding with the =0Anode is used instead of the node = name. If @code{$NODE_NAME_IN_MENU} is true,=0Ahowever, node names are used.= If @code{$AVOID_MENU_REDUNDANCY}=0Ais true and menu entry equal menu descr= iption the description isn't printed.=0ALikewise, if node or section name e= qual entry name, do not print entry name.=0A=0AA symbol, @code{$MENU_SYMBOL= } is put at the beginning of menu entries=0Awhen the node name is used. If = @code{$UNNUMBERED_SYMBOL_IN_MENU} it is also=0Aput at the beginning of unnu= mbered section names.=0A=0AThe menu comments are considered to be preformat= ted text. The style =0Aassociated with this preformatted text is determined= by =0A@code{$MENU_PRE_STYLE}. The css class associated with menu comments = is =0A@code{menu-comments}.=0A=0AAlthough the main program controls the tex= t of the different components,=0Acontrol over the formatting of the compone= nts themselves is achieved=0Athrough the call of 5 functions. The correspon= ding function references =0Ashould be redefined to change the default forma= tting.=0A=0AThree function references are associated with the formatting of= the =0Adifferent parts of a menu:=0A@deftypefn {Function Reference} $link = menu_link $link_text \%state $href=0A@var{$link_text} is the text correspon= ding with the link name, @var{$href}=0Ais the link hypertextual reference. = @var{$href} may be absent. @var{\%state}=0Aholds informations about the cur= rent context. The only key which could be=0Aof interest is @code{preformatt= ed}, true if the context is a preformatted=0Acontext. @xref{Two contexts}.= =0A@end deftypefn=0A=0A@deftypefn {Function Reference} $description menu_de= scription $description_text \%state=0A@var{$description_text} is the text o= f the menu description. @var{\%state}=0Ashould be used similarly than for t= he menu link.=0A@end deftypefn=0A=0A@deftypefn {Function Reference} $menu_c= omment menu_comment $text=0A@var{$text} is the text of the menu comment. It= is in a preformatted =0Aenvironment.=0A@end deftypefn=0A=0AThe following f= unction reference controls the formatting of a wole menu:=0A=0A@deftypefn {= Function Reference} $menu menu $menu_components_text=0A@var{$menu_component= s_text} is the formatted menu components text, obtained=0Aas explained abov= e.=0A@end deftypefn=0A=0AThe last function reference corresponds with a spe= cial case. It=0Ais used when a menu entry appears within another block comm= and, to=0Aavoid the possibilities of invalid @acronym{HTML} production.=0AI= n that case the menu description and menu comments are not formatted =0Aspe= cially, but treated like normal text.=0A@deftypefn {Function Reference} $li= nk simple_menu_link $link_text $href=0A@var{$link_text} is the text corresp= onding with the link name, @var{$href}=0Ais the link hypertextual reference= .=0A@end deftypefn=0A=0A@c ------------------------------------------------= --------=0A@node Indices=0A@section Indices formatting=0A=0ATwo different t= hings needs to be handled for indices formatting, the place=0Awhere the ind= ex term appears, the index entry, and the index list itself.=0AThe indexing= commands like @code{@@cindex} determines where index entries=0Aappear, and= the index list is printed with a @code{@@printindex} command. =0A=0A@menu= =0A* Index entry place:: Index entries in the main document are= =0A targets for hypertext references=0A* = Index list:: Customizing the formatting of the index lis= t=0A@end menu=0A=0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D=0A@node Index e= ntry place=0A@subsection Formatting of index entries=0A=0AIndex entry place= s in the main text may be the target for hypertext =0Areferences. Their for= matting=0Ais controlled by the function associated with the following funct= ion =0Areference:=0A=0A@deftypefn {Function Reference} $target index_entry_= label $identifier $preformatted=0A@var{$identifier} should be used to creat= e=0Aa target for links (typically associated with a name or id =0Aattribute= in @acronym{HTML}).=0A@var{$preformatted} is true if the index entry appea= red in preformatted text.=0A@end deftypefn=0A=0A@c -=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D-=3D=0A@node Index list=0A@subsection Customizing the formatting= of index lists=0A=0AThe index entries are sorted alphabetically. A whole i= ndex list is =0Aconsidered to be composed of letter entries. A letter entry= is composed=0Aby all the index entries beginning with that letter. A lette= r may=0Abe a non alphabetical character, but we call it letter here.=0A=0AA= n index summary appears at the beginning and at the end of an index list,= =0Aand should be used to jump directly to a letter entry. Indices lists=0Am= ay be split across pages, thus the different letters may appear on differen= t=0Afiles. The number of index entries appearing on each page is determined= =0Aby a variable @code{$SPLIT_INDEX}.=0A=0AThe formatting of all these elem= ents is controlled by the following=0Afunction references:=0A=0A@table @emp= h=0A@item formatting of a letter in a summary=0A@deftypefn {Function Refere= nce} $letter summary_letter $letter $file $identifier=0AThis function is us= ed to format a letter appearing in a summary, refering=0Ato a letter entry = in the index list.=0A@var{$letter} is the letter. @var{$file} is the file n= ame where the letter=0Aentry appears. More precisely, it is empty when the = letter entry is on the =0Asame page than the summary, it contains the file = name when the index page=0Ais split accross page. @var{$identifier} is an i= dentifier for the target =0Aletter entry. =0A@end deftypefn=0A=0A@item form= atting of a summary=0A@deftypefn {Function Reference} $summary index_summar= y \@@alphabetical_letters \@@nonalphabetical_letters=0A@var{\@@alphabetical= _letters} and @var{\@@nonalphabetical_letters} contain the=0Aformatted summ= ary letters, formatted with the above function.=0A@end deftypefn=0A=0A@item= formatting of an index entry=0A@deftypefn {Function Reference} $entry inde= x_entry $entry_href $entry_text $section_href $section_heading=0A@var{$entr= y_href} is a reference to the place where the index entry =0Aappeared, @var= {$entry_text} is the corresponding text. @var{$section_href}=0Ais a referen= ce to the beginning of the sectionning element containing =0Athe index entr= y, @var{$section_heading} is the heading of the element.=0A@end deftypefn= =0A=0A@item formatting of letter entry=0A@deftypefn {Function Reference} $l= etter_entry index_letter $letter $identifier $index_entries_text=0AThis fun= ction formats a letter entry, consisting in all the index entries =0Abeginn= ing with this letter. @var{$letter} is the letter, @var{$identifier} =0Asho= uld be used to create a target for links (typically links from summaries),= =0Aand @var{$index_entries_text} is the text of the index entries formatted= as =0Adescribed above.=0A@end deftypefn=0A=0A@item formatting of whole ind= ex=0A@deftypefn {Function Reference} $index print_index $index_text $index_= name=0A@var{$index_text} is the text of all the index entries grouped by le= tter=0Aappearing in that page formatted as above. @var{index_name} is the n= ame of=0Athe index, the argument of @code{@@printindex}.=0A@end deftypefn= =0A@end table=0A=0A@c -----------------------------------------------------= ---=0A@node Footnotes=0A@section Customizing the footnotes formatting=0A=0A= Each footnote is associated with a footnote entry. Several footnote entries= =0Aare grouped in a footnote section. When a footnote appears, two things m= ust=0Abe formatted: in the main text the place where the footnote appear=0A= and the footnote text. =0A=0ATwo functions, with corresponding function ref= erences control the formatting=0Aof the footnotes:=0A=0A@deftypefn {Functio= n Reference} {(\@@lines $text_for_document)} foot_line_and_ref $number_in_d= oc $number_in_page $footnote_id $place_id $document_file $footnote_file \@@= lines \%state=0A@var{$number_in_doc} is the footnote number in the whole do= cument, =0A@var{$number_in_page} is the footnote number in the current page= .=0A@var{$footnote_id} is an identifier for the footnote in the footnote te= xt=0Awhich should be used to make target for references to that footnote,= =0Awhile @var{$place_id} is an identifier for the location of the footnote= =0Ain the main document. Similarly, @var{$document_file} is the file name= =0Aof the file containing the text where the footnote appears in the main = =0Adocument, while @var{$footnote_file} is the file name of the file where = =0Athe footnote text appears. =0A=0A@var{\@@lines} is a reference on an arr= ay containing the footnote text=0Alines, allready formatted.=0AAnd @var{\%s= tate} holds informations about the context at the footnote=0Aplace in the m= ain document. As usual the most usefull entry is =0A@code{preformatted} whi= ch is true if the footnote appears in a preformatted =0Acontext. =0A=0AThis= function returns a reference on an array, @var{\@@lines} containing=0Athe = updated footnote text for the footnote entry, and @var{$text_for_document},= =0Athe text appearing at the footnote place in the main document, linking= =0Ato the footnote entry.=0A@end deftypefn=0A=0AThe following function is o= nly used when footnotes are at the bottom=0Aof a page and the document is s= plit. =0AFor customization of the footnotes page in case they are on a sepa= rated =0Apage or section, @ref{Special pages layout}. For =0Athe determinat= ion of the footnote locations, @ref{Page layout options}.=0A=0A@deffn {Func= tion Reference} foot_section \@@footnotes_lines=0AThis function formats a g= roup of footnotes. @var{\@@footnotes_lines} is a=0Areference on an array ho= lding the lines of all the footnote entries=0Aformatted as explained above.= This function modifies the reference.=0A@end deffn=0A=0A@c ---------------= -----------------------------------------=0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D=0A@c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A --dDRMvlgZJXvWKvBx Content-Type: application/x-texinfo Content-Disposition: attachment; filename="custpage.texi" Content-Transfer-Encoding: quoted-printable @c=0A@c This file is part of the ``Texinfo to HTML Converter'' manual=0A@c = which is part of the ``texi2html'' distribution.=0A@c=0A@c License:=0A@c = =0A@c Copyright (C) 2003 Free Software Foundation, Inc.=0A@c =0A@c = Permission is granted to make and distribute verbatim=0A@c copies of thi= s manual provided the copyright notice and=0A@c this permission notice a= re preserved on all copies.=0A@c =0A@c Permission is granted to copy = and distribute modified=0A@c versions of this manual under the condition= s for verbatim=0A@c copying, provided that the entire resulting derived = work is=0A@c distributed under the terms of a permission notice=0A@c = identical to this one.=0A@c =0A@c Permission is granted to copy and d= istribute translations=0A@c of this manual into another language, under = the above=0A@c conditions for modified versions, except that this=0A@c = permission notice may be stated in a translation approved=0A@c by the = Free Software Foundation.=0A@c=0A@c Revisions:=0A@c $Id$=0A@c=0A@c Author:= =0A@c Dumas Patrice <[email protected]>=0A@c=0A@c Description:=0A@c = Informations about customizing page layout in initialization files.=0A@c= =0A@c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=0A=0A@node Changing the page layout=0A@chapter Fin= e tuning of the page layout=0A=0ASome features of the page layout might be = specified with command line=0Aoptions, the corresponding variables are desc= ribed in =0A@ref{Page layout options}.=0AFine tuning of the page layout may= be achieved=0Awith redefinition of other variables and function references= in the =0Ainitialization files.=0A=0A@menu=0A* The different pages:: = The different categories of pages.=0A* The page layout:: The ele= ments of a page.=0A* Navigation panel:: How to change the navigati= on panel.=0A* Program variables:: The available main program variab= les and some =0A usefull functions from the ma= in program.=0A* css:: Customizing css lines.=0A* Cust= omizing header::=0A* Customizing section::=0A* Customizing footer::=0A* Spe= cial pages:: Customizing table of contents, top, about page.=0A= @end menu=0A=0A@c --------------------------------------------------------= =0A@node The different pages=0A@section The different categories of pages a= nd sectionning elements=0A=0AThe following sectionning elements can be asso= ciated with pages:=0A=0A@table @emph=0A@item Normal elements=0AThese are no= rmal sections or nodes. Their association with pages is=0Adetermined by the= splitting of the document. @xref{Splittig output}.=0A@item Top element=0AT= he top element is the higher element in the document structure.=0AIf there = is a @code{@@top} section it is the element associated with=0Athat section.= Otherwise it is the element associated with the =0A@code{@@node Top}. If t= here is no @code{@@node Top} the first element is the =0Atop element.=0A=0A= The top element is formatted differently than a normal element if there=0Ai= s a @code{@@top} section or the @code{@@node Top} isn't associated =0Awith = a sectionning command.=0A@item Misc elements=0AThese elements are associate= d with pages if the document is split.=0AThere are four misc elements:=0A@e= numerate=0A@item Table of contents=0A@item Short table of contents, also ca= lled Overview=0A@item Footnotes page=0A@item About page=0A@end enumerate=0A= =0AThe @emph{About page} shouldn't be present for documents consisting=0Ain= only one sectionning element. The @emph{Footnote page} should only=0Abe pr= esent if the footnotes appear on a separated page =0A(@pxref{Page layout op= tions}), however a footnote element is present if=0Athe document isn't spli= t. The @emph{Table of contents} should only=0Abe formatted if @code{@@conte= nts} is present in the document.=0ASimilarly the @emph{Overview} should onl= y appear if @code{@@shortcontents}=0Aor @code{@@summarycontents} is present= .=0A@end table=0A=0A@c ----------------------------------------------------= ----=0A@node The page layout=0A@section Page layout and navigation panel ov= erview=0A=0AA page is broken up in three parts. A page header, the sections= =0Aand a page footer. A common element in the page layout is a navigation= =0Apanel with icons or text linking to other sections or pages. Another=0Ac= ommon element is a rule, separating sections or footer. The navigation=0Apa= nel and the rules may be part of the sections or part of headers or=0Afoote= rs. You may use the variables @code{$SMALL_RULE}, @code{$DEFAULT_RULE}, =0A= @code{$MIDDLE_RULE} and @code{$BIG_RULE} for rules of different sizes.=0A= =0AIn the header some important meta data may be defined, like the=0Atitle = or style information, and textual informations may be present=0Ain comments= . All this doesn't appear directly in the displayed =0A@acronym{HTML}, thou= gh.=0A=0AThe page layout is mainly controlled by functions, the precise fun= ctions =0Acalled depending on the document splitting. The navigation panel,= however,=0Acan be customized with variables.=0A=0A@subheading Element labe= ls=0A@anchor{Element labels}=0A=0AThere are 19 items associated with elemen= ts. Each of these=0Ais associated with a name and a reference to the =0Aele= ment they represent, when such an element exists. =0AThe element is either = a global element or an element relative to the current=0Aelement. The relat= ive elements are found with respect with the document=0Astructure defined b= y the section structuring commands (@code{@@chapter}, =0A@code{@@unnumbered= }@dots{}) or by the nodes (in that case the node =0Adirections are specifie= d on node line or in menu organization).=0AThese items are called @dfn{elem= ent labels}. They may be associated with =0Aa button (@pxref{Button specifi= cations}), and used in the formatting functions =0A(@pxref{Program variable= s}).=0A=0AHere is the list:=0A=0A@table @emph=0A@item @samp{@ }=0AAn empty = button=0A@item Top=0ATop element. The associated name is @code{$TOP_HEADING= } if that variable is =0Adefined.=0A@item Contents=0ATable of contents=0A@i= tem About=0AAbout (help) page=0A@item Overview=0AOverview, short table of c= ontents=0A@item First=0AFirst element in reading order=0A@item Last=0ALast = element in reading order=0A@item Index=0AThe first chapter with @code{@@pri= ntindex}. The associated name =0Ais @code{$INDEX_CHAPTER}, if the variable= is set.=0A@item This=0AThe current element=0A@item Back=0APreceding elemen= t in reading order=0A@item FastBack=0ABeginning of this chapter or previous= chapter if the element is a chapter=0A@item Prev=0APrevious section on the= same level =0A@item NodePrev=0APrevious node=0A@item Forward =0ANext eleme= nt in reading order=0A@item FastForward=0ANext chapter=0A@item Next=0ANext = section on the same level=0A@item NodeNext=0ANext node=0A@item Following=0A= Next node in node reading order=0A@item Up=0AUp section=0A@item NodeUp=0AUp= node=0A@end table=0A=0A@c ------------------------------------------------= --------=0A@node Navigation panel=0A@section Customization of the navigatio= n panels buttons=0A=0AA lot of customization of the navigation panel may be= achieved without=0Aredefining functions, with variables redefinition. =0AI= n case it isn't enough, it is also possible to redefine the function =0Adoi= ng the navigation panel formatting.=0A=0A@menu =0A* General purpose variabl= es:: Variables controlling the navigation panel=0A = at a global level=0A* Button specifications::=0A* Panel form= atting function::=0A@end menu=0A=0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= =0A@node General purpose variables=0A@subsection Controlling the navigation= panel panel at a high level=0A=0AThe global formatting of the navigation p= anels may be=0Achanged with the following variables:=0A=0A@vtable @code=0A@= item $VERTICAL_HEAD_NAVIGATION=0AA vertical navigation panel will be used f= or the header navigation =0Apanel if this variable is true.=0A@item $ICONS= =0AIcons are used instead of=0Atextual buttons if this variable is true.=0A= @item $SECTION_NAVIGATION=0AIf this variable is false there is no section n= avigation, no navigation =0Apanels for the elements within the pages, only = at =0Athe beginning and the end of the page (@pxref{Page layout options}).= =0A@end vtable=0A=0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D=0A@node Button= specifications=0A@subsection Specifying the buttons formatting=0A=0ASevera= l arrays and hashes enable a precise control on the buttons and =0Atheir di= splay. =0AThe following arrays determine the buttons present in navigation = panels:=0A=0A@vtable @code=0A@item @@SECTION_BUTTONS=0AThis array is used f= or the navigation panel buttons present at the begining=0Aof sectionning el= ements. If split at node or section they are also used =0Aat the page foote= r, and in the case of section navigation at the page header.=0A@item @@SECT= ION_FOOTER_BUTTONS=0AThis array is used for the navigation panel buttons pr= esent at the footer=0Aof pages when split at node or at section. =0A=0AIf @= code{$WORDS_IN_PAGE} is set and the output is split at nodes, these =0Abutt= ons are only present if there are more than @code{$WORDS_IN_PAGE}=0Awords i= n the sectionning element text.=0A@item @@CHAPTER_BUTTONS=0AThis array is u= sed for the buttons appearing at the page footer if split at =0Achapter, an= d at the page header if split at chapter and there is no section=0Anavigati= on.=0A@item @@MISC_BUTTONS=0AThese buttons appear at the beginning of speci= al and sections =0Aand at the end of these section pages if the output is = split.=0A@end vtable=0A=0AThe array specify the buttons displayed in naviga= tion panels, =0Aand how the button is displayed.=0AEach element is associat= ed with=0Aa button of the navigation panel from left to right.=0AThe signif= ication of the array element value is the following:=0A=0A@table @emph=0A@i= tem reference on a function=0AThe function is called with first argument a = filehandle reference on the=0Acurrent file and second argument a boolean tr= ue if the navigation =0Apanel should be vertical.=0A@item reference on a sc= alar=0AThe scalar value is printed. For some possibly=0Ausefull scalars, @r= ef{Elements hashes}.=0A@item reference on an array=0AIn this case the first= array element should be a reference on text and the =0Asecond element an e= lement label. In that case a link to the =0Aelement associated with the ele= ment label with the scalar value=0Atext is generated.=0A=0AFor example if t= he buttons array element is=0A@example=0A[ 'Next', \$Texi2HTML::NODE@{Next@= } ] =0A@end example=0A=0AThe button will be a link to the next section with= text =0A@code{$Texi2HTML::NODE@{Next@}}.=0A@item element label=0AIf icons = are not used, the button is a link to the corresponding=0Aelement which tex= t is defined by the value associated with the =0Aelement label in the @code= {%NAVIGATION_TEXT} hash, surrounded=0Aby @samp{[} and @samp{]}. If the elem= ent label is @samp{ }, there is=0Ano @samp{[} and @samp{]}.=0A=0AIf icons a= re used, the button is an image with file determined by=0Athe value associa= ted with the element label in the @code{%ACTIVE_ICONS}=0Ahash if the the li= nk really leads to an element, or in the @code{%PASSIVE_ICONS}=0Ahash if th= ere is no element to link to. Of course if there is a link to the =0Aelemen= t the icon links to that element.=0A@end table=0A=0A@c -=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D=0A@node Panel formatting function=0A@subsection Changin= g the navigation panel formatting=0A=0AIf you are not satisfied with this s= cheme, it is possible to=0Acontrol exactly the formatting of navigation pan= els by redefining a function =0Areference. The function controlling the dis= play of navigation panel is =0Aassociated with the following function refer= ence:=0A=0A@deffn {Function Reference} print_navigation $filehandle \@@butt= ons $vertical=0A@var{$filehandle} is the opened filehandle the function sho= uld write to.=0A@var{\@@buttons} is an array reference which should hold th= e specification of =0Athe buttons for that navigation panel. @var{$vertical= } is true if the =0Anavigation panel should be vertical.=0A@end deffn=0A=0A= @c --------------------------------------------------------=0A@node Program= variables=0A@section Main program variables and usefull functions=0A=0AIn = the functions =0Acontrolling the page layout some global variables set by t= he main=0Aprogram are available, with value corresponding with the current= =0Alayout element.=0A=0A@menu =0A* Elements hashes:: Accessing = information related with the =0A different e= lements =0A* Global informations:: Accessing global informations,= like date, =0A title@dots{}=0A* Global func= tions:: main program usefull functions=0A@end menu=0A=0A=0A@c -= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D=0A@node Elements hashes=0A@subsection = Accessing elements informations=0A=0AFour hashes are available, with key th= e elements labels (as described=0Ain @ref{Element labels}) and values:=0A= =0A@vtable @code=0A@item %Texi2HTML::NAME=0AThe formatted element name=0A@i= tem %Texi2HTML::HREF=0AThe element hypertext reference=0A@item %Texi2HTML::= NODE=0AThe element node name=0A@item %Texi2HTML::NO_TEXI=0AThe element name= after removal of texi commands=0A@end vtable=0A=0A@c -=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D=0A@node Global informations=0A@subsection Accessing global= informations=0A=0AThree kinds of global informations are available, miscal= leneous global=0Astrings, flags set by @code{@@set} and special flags and s= ection lines.=0A=0A@subsubheading Global strings=0AThe @code{%Texi2HTML::TH= ISDOC} hash holds some global informations:=0A=0A@table @code=0A@item fullt= itle=0Atitle set by @code{@@title}. If there is no @code{@@title} other =0A= possibilities are tried (@code{@@settitle}, @code{@@shorttitlepage}@dots{})= .=0A@item title=0Atitle set by @code{@@settitle}, or @code{fulltitle}.=0A@i= tem author=0AAuthors list set by @code{@@author}.=0A@item copying=0AText ap= pearing in @code{@@copying} with all the texinfo commands removed,=0Aput in= comments.=0A@item program=0AThe name and version of @emph{texi2html}.=0A@i= tem program_homepage=0AHomepage for @emph{texi2html}.=0A@item program_autho= rs=0AAuthors of @emph{texi2html}.=0A@item toc_file=0AThe file name of the t= able of contents.=0A@item today=0AThe date.=0A@end table=0A=0A@subsubheadin= g Flags=0AFlags defined by @code{@@set} may be accessed through the =0A@cod= e{%main::value} hash. The key is the flag name, the value is the=0Aflag val= ue at the end of the document. =0A=0ASpecial flags are set by the main prog= ram. They correspond with a texinfo=0Acommand, like @code{@@setfilename}, o= r @code{@@settitle}, =0A@code{@@author}@dots{} The corresponding flag is th= e command name with =0A@samp{_} appended, for example, @code{_titlefont} co= rresponds with =0A@code{@@titlefont}. Like other flags they are available i= n =0A@code{%main::value}.=0A=0A=0A@subsubheading Section lines=0A=0AThe fol= lowing array references or arrays holds formatted lines:=0A=0A@vtable @code= =0A@item $Texi2HTML::THIS_SECTION=0ALines of the current element.=0A@item $= Texi2HTML::THIS_HEADER=0ALines of the current element appearing before the = element label (anchors).=0A@item $Texi2HTML::OVERVIEW=0ALines of short tabl= e of contents. @xref{Special pages}.=0A@item $Texi2HTML::TOC_LINES=0ALines = of table of contents. @xref{Special pages}.=0A@end vtable=0A=0A@c -=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D=0A@node Global functions=0A@subsection Functio= n usefull in page formatting=0A=0AThe usefull function is a function used t= o print an array of lines, which =0Aalso counts the number of words in the = array, if needed.=0A=0A@deftypefun $words_number main::print_lines $fileha= ndle \@@lines_array=0A@var{$filehandle} is the opened filehandle the functi= on should write to.=0A@var{\@@lines_array} is the array line the function s= hould write to the file.=0AIf this argument is omitted, the function uses @= code{$Texi2HTML::THIS_SECTION}.=0A@var{$words_number} is the number of word= s in the array, only defined if=0Asplit at nodes and @code{$WORDS_IN_PAGE} = is defined.=0A@end deftypefun=0A=0A@c -------------------------------------= -------------------=0A@node css=0A@section Customizing the @emph{texi2html}= css lines=0A=0AIt is possible to modify the @emph{texi2html} css lines by = modifying=0Athe entries or adding to the @code{%css_map} hash. Each key is = a css=0Aselector, the corresponding value is a style string.=0A=0AThe whole= css text is in the variable @code{$CSS_LINES}. If this =0Avariable is defi= ned the variable value is used instead of being =0Aconstructed using the @c= ode{%css_map} entries. For example if you don't=0Awant any css entries, set= =0A=0A@example=0A$CSS_LINES =3D '';=0A@end example=0A=0AIt is also possible= to change completely the way @code{$CSS_LINES} are=0Agenerated by redefini= ng the following function reference:=0A=0A=0A@deffn {Function Reference} cs= s_lines \@@import_lines \@@rule_lines=0AThis function should be used to con= struct the @code{$CSS_LINES}.=0A@var{\@@import_lines} are the @code{@@impor= t} lines of the =0Afiles specified with @option{-include-css}, =0Aand @var{= \@@rule_lines} are the css commands lines of these files.=0A@xref{Style opt= ions}.=0A@end deffn=0A=0A@c -----------------------------------------------= ---------=0A@node Customizing header=0A@section Customizing the page header= =0A=0AIt is possible to add lines to the text within the @code{<head>} =0A= @acronym{HTML} elements, by defining the variable @code{$EXTRA_HEAD}.=0ASim= ilarly it is possible to add text just after the @code{<body>} =0Aelement w= ith the variable @code{$AFTER_BODY_OPEN}.=0AThe encoding of the document is= defined by @code{$ENCODING} if=0Ano @code{@@documentencoding} appears in t= he document.=0A=0AThe @code{<body>} element attributes may be set by defini= ng the=0Avariable @code{$BODYTEXT}. If you want to define that variable=0Ad= ynamically, you could redefine the following function reference:=0A=0A@deff= n {Function Reference} set_body_text=0AThis function should set @code{$BODY= TEXT}.=0A@end deffn=0A=0AThe default functions call the function associated= with =0A@code{$print_head_navigation} to format the navigation panel for t= he =0Apage header. Thus you can control parts of the formatting by=0Aredefi= ning the function reference.=0A=0A@deffn {Function Reference} print_head_na= vigation $filehandle \@@buttons=0A@var{$filehandle} is the opened filehandl= e the function should write to.=0A@var{\@@buttons} is an array reference wh= ich should hold the specification of =0Athe buttons for the navigation pane= l. =0A@end deffn=0A=0AIf you want even more control, you can have full cont= rol over the page header =0Aformatting by redefining three function referen= ces. The function associated=0Awith @code{$print_page_head} is called for a= ll the pages, and after that,=0Athe function associated with @code{$print_c= hapter_header} is called=0Aif the document is split at chapters, or the fun= ction associated with=0A@code{$print_section_header} is called if the docum= ent is split at sections.=0A=0A@deffn {Function Reference} print_page_head = $filehandle=0A@var{$filehandle} is the opened filehandle the function shoul= d write to.=0AThis function should print the page head, including the @code= {<body>}=0Aelement.=0A@end deffn=0A=0A@deffn {Function Reference} print_cha= pter_header $filehandle=0A@var{$filehandle} is the opened filehandle the fu= nction should write to.=0AThis function is called if the document is split = at chapters, after =0A@code{print_page_head}.=0A@end deffn=0A=0A@deffn {Fun= ction Reference} print_section_header $filehandle=0A@var{$filehandle} is th= e opened filehandle the function should write to.=0AThis function is called= if the document is split at sections, after =0A@code{print_page_head}.=0A@= end deffn=0A=0A@c --------------------------------------------------------= =0A@node Customizing section=0A@section Customizing the sections=0A=0AThe f= unctions associated with the following function references are used for =0A= the formatting of sections:=0A=0A@deffn {Function Reference} print_section = $filehandle $first_in_page $previous_is_top=0A@var{$filehandle} is the open= ed filehandle the function should write to.=0A@var{$first_in_page} is true = if this section is the first section in the page.=0A@var{$previous_is_top} = is true if this section is the section following the =0ATop section.=0AThis= function should print the current section.=0A@end deffn=0A=0A@deffn {Funct= ion Reference} end_section $filehandle $last_element_or_before_top=0A@var{$= filehandle} is the opened filehandle the function should write to.=0A@var{$= last_element_or_before_top} is true if this section precedes the top =0Aele= ment or is the last one in page, or before the special elements.=0A@end def= fn=0A=0A@c --------------------------------------------------------=0A@node= Customizing footer=0A@section Customizing the page footer=0A=0AIt is possi= ble to add text just before the @code{</body>} =0Aelement with the variable= @code{$PRE_BODY_CLOSE}.=0A=0A@ignore=0AThe footer text may be influenced b= y @code{$ADDRESS} which should hold=0Ainformation about who created the doc= ument and how.=0AIf you want to define that variable=0Adynamically, you cou= ld redefine the following function reference:=0A=0A@deftypefn {Function Ref= erence} $address_text address $user $date=0AThis function should return the= address. @var{$user} is the user name=0Aof the user running texi2html, @va= r{$date} is the date of the day.=0A@end deftypefn=0A@end ignore=0A=0AThe de= fault functions call the function associated with =0A@code{$print_foot_navi= gation} to format the navigation panel for the =0Apage footer. Thus you can= control parts of the formatting by=0Aredefining the function reference.=0A= =0A@deffn {Function Reference} print_foot_navigation $filehandle \@@buttons= =0A@var{$filehandle} is the opened filehandle the function should write to.= =0A@var{\@@buttons} is an array reference which should hold the specificati= on of =0Athe buttons for the navigation panel. =0A@end deffn=0A=0AIf you wa= nt even more control, you can have full control the page footer =0Aformatti= ng by redefining three function references.=0AThe function associated with = @code{$print_chapter_footer} is called=0Aif the document is split at chapte= rs, or the function associated with=0A@code{$print_section_footer} is calle= d if the document is split at sections.=0AAfter that the function associate= d with @code{$print_page_foot} is called.=0A=0A@deffn {Function Reference} = print_page_foot $filehandle=0A@var{$filehandle} is the opened filehandle th= e function should write to.=0AThis function should print the page foot, inc= luding the @code{</body>}=0Aelement.=0A@end deffn=0A=0A@deffn {Function Ref= erence} print_chapter_footer $filehandle=0A@var{$filehandle} is the opened = filehandle the function should write to.=0AThis function is called if the d= ocument is split at chapters, before =0A@code{print_page_foot}.=0A@end deff= n=0A=0A@deffn {Function Reference} print_section_footer $filehandle=0A@var{= $filehandle} is the opened filehandle the function should write to.=0AThis = function is called if the document is split at sections, before=0A@code{pri= nt_page_foot}.=0A@end deffn=0A=0A=0A@c ------------------------------------= --------------------=0A@node Special pages=0A@section Special pages formatt= ing=0A=0AFor the special elements, two things must be formatted: the conten= t=0Aand the page layout=0A=0A@menu=0A* Special pages content::=0A* Special = pages layout::=0A@end menu=0A=0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D=0A= @node Special pages content=0A@subsection Customizing the content of the sp= ecial pages=0A=0A@menu=0A* Top element text::=0A* Contents and Overview tex= t::=0A* Footnotes text::=0A* About text::=0A@end menu=0A=0A@c -=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D=0A@node Top element text=0A@subsubsection Top elem= ent text formatting=0AThe top element formatting is controlled by a functio= n which also=0Acontrols the layout of the top element page or section. The = associated=0Afunction reference is:=0A=0A@deffn {Function Reference} print_= Top $filehandle $has_top_heading=0A@var{$filehandle} is the opened filehand= le the function should write to.=0A@var{$has_top_heading} is true if there = is a @code{@@heading} command or=0A@code{@@titlefont} command appearing in = the Top element text.=0A@end deffn=0A=0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D=0A@node Contents and Overview text=0A@subsubsection Table of conten= ts and Short table of contents=0ASeveral variables may be used to control t= he formatting of table of contents =0Aand short table of contents:=0A=0A@ta= ble @code=0A@item $BEFORE_OVERVIEW=0AThe variable value is inserted before = the short table of contents text.=0A@item $AFTER_OVERVIEW=0AThe variable va= lue is inserted after the short table of contents text.=0A@item $BEFORE_TOC= _LINES=0AThe variable value is inserted before the table of contents text.= =0A@item $AFTER_TOC_LINES=0AThe variable value is inserted after the table = of contents text.=0A@item $TOC_LIST_STYLE=0AThis should contain a css style= used for the list style if the tables of=0Acontent are formatted with a li= st.=0A@item $TOC_LIST_ATTRIBUTE=0AThis should contain an attribute text use= d for the list element if the tables of=0Acontent are formatted with a list= .=0A@end table=0A=0AMore control on the table of contents and short table o= f contents formatting=0Amay be achieved by redefining a function with the f= ollowing associated =0Afunction reference:=0A=0A@deffn {Function Reference}= toc_body \@@elements $has_content $has_scontent=0A@var{\@@elements} is an = array reference contining informations about=0Aall the elements of the docu= ment. Each of the entry of this array is an hash=0Areference which entries = correspond with different informations=0Aabout the element. Interesting key= s have the following meaning:=0A=0A@table @code=0A@item top=0Atrue if the e= lement is the top element,=0A@item index_page=0Atrue if the element is an i= ndex page added because of index splitting,=0A@item toc_level=0Alevel of th= e element in the table of content. Highest level=0Ais 1 for the top element= and for chapters, appendix and so on,=0A2 for section, unnumberedsec and s= o on...=0A@item tocid=0Alabel used for reference linking to the element in = table of=0Acontents,=0A@item file =0Athe file containing the element, usefu= ll to do href to that file=0Ain case the document is split,=0A@item text=0A= text of the element, with section number,=0A@item name=0Atext of the elemen= t, without section number.=0A@end table=0A=0A@var{$has_content} is true if = @code{@@contents} appears in the document.=0A@var{$has_scontent} is true if= @code{@@shortcontents} appears in the document.=0A@end deffn=0A=0AThis fun= ction doesn't return anything but should fill the array corresponding=0Awit= h the =0A@code{$Texi2HTML::TOC_LINES} and=0A@code{$Texi2HTML::OVERVIEW} ref= erences with the table of contents and short =0Atable of contents.=0A=0A@c = -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D=0A@node Footnotes text=0A@subsubsec= tion Formatting of footnotes text=0A=0AThe footnotes text is allready forma= tting when @code{@@footnote} commands=0Aare expanded. @xref{Footnotes}.=0A= =0A@c -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D=0A@node About text=0A@subsubsec= tion Formatting of about text=0A=0AThe default about element contains an ex= plaination of the buttons used=0Ain the document (@code{@@SECTION_BUTTONS},= @ref{Button specifications}) and =0Aan example locating the buttons target= s in an example.=0AThe formatting of this text may be influenced by the fol= lowing =0Ahashes and variables:=0A=0A@table @code=0A@item $PRE_ABOUT =0A@it= emx $AFTER_ABOUT=0AThis variable may be a scalar or a function reference. = =0AIf it is a scalar, the value is used.=0AIf this is a function reference = it is expanded and the returned text is=0Aused. The text is added before or= after the main about text.=0A@item %BUTTONS_GOTO=0A=0AThe keys of this has= h are element labels (@pxref{Element labels}). The value=0Ais the text asso= ciated with the element label in the about text.=0A=0A@item %BUTTONS_EXAMPL= E=0A=0AThe keys of this hash are element labels (@pxref{Element labels}). = The value=0Ais the text associated with the element label in the about exam= ple, =0Atypically a section number.=0A=0A@end table=0A=0AIf this is not eno= ugh and you want to control exactly the formatting of=0Athe about text, you= can redefine the function associated with the following =0Afunction refere= nce:=0A=0A@deftypefn {Function Reference} $about_text print_about=0AThis fu= nction should return the about text.=0A@end deftypefn=0A=0A@c -=3D-=3D-=3D-= =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D=0A@node Special pages layout=0A@subsection Customi= zing the layout of the special pages=0A=0AThe formatting of each of the spe= cial pages, or section in case =0Athe document is not split, is controlled = by a function.=0AThe associated function reference is called accordingly:= =0A=0A@ftable @code=0A@item print_Top=0AFormatting of top element page or s= ection. It is also used for the formatting=0Aof the top element text (@pxre= f{Top element text}).=0A@item print_Toc=0AFormatting of table of contents p= age or section=0A@item print_Overview=0AFormatting of short table of conten= ts page or section=0A@item print_About=0AFormatting of about (help) page or= section=0A@item print_Footnotes=0AFormatting of footnotes section or page = in case footnotes are on a =0Aseparated page or the document isn't split.= =0A@end ftable=0A=0AIn the default case, @code{$print_Top} calls @code{$pri= nt_Top_header} for=0Athe header and @code{$print_Top_footer} for the footer= of top element.=0AAll the other function call @code{$print_misc} which in = turn calls=0A@code{$print_misc_header} for the headers and @code{$print_mi= sc_footer} =0Afor the footers.=0A=0A=0A --dDRMvlgZJXvWKvBx--