123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001 |
- @c history and some customization sections from the texi2html manual
- @c (only partly edited), excised
- @c because the new tree-based translator is likely to obviate them.
- @c Doesn't format on its own, is just here (for now) for archival purposes.
- @c
- @c Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- @c 2001, 2002, 2003, 2004, 2009, 2010, 2011, 2013 Free Software
- @c Foundation, Inc.
- @c
- @c See texinfo.etxi for copying conditions.
- @node Texi2HTML
- @appendix Texi2HTML history and relations with @command{makeinfo}
- In 2010 Texi2HTML was merged in GNU Texinfo. Some informations are
- retained here, mainly for historical purposes.
- @menu
- * Texi2HTML history:: Texi2HTML history and makeinfo.
- * Texi2HTML texi2any differences::
- * Texi2HTML changes:: History of incompatibilities.
- @end menu
- @node Texi2HTML history
- @appendixsec Texi2HTML history and merge in Texinfo
- In early 1998 @command{makeinfo} wasn't able to produce
- HTML output format, but people still wanted documentation in
- HTML. This was the birthing hour for @command{texi2html},
- with original author Lionel Cons. The basic purpose of
- @command{texi2html} was to convert Texinfo documents into HTML.
- Since then, HTML support in @command{makeinfo} improved, but
- @command{texi2html} was still stronger in some areas, including the degree to
- which it allows customization. After being briefly maintained by Karl
- Berry in 1999, Olaf Bachmann was the maintainer until 2000, adding many
- features. Adrian Aichner and Derek Price took over maintainance in 2001
- and Derek was the maintainer from 2003 to 2010, with some help from
- Patrice Dumas.
- In 2010, @command{texi2html}, then hosted
- at @uref{http://www.nongnu.org/texi2html/} was made
- compatible with @command{makeinfo}, losing the focus on HTML to become a
- more generic translator, and merged in
- @uref{http://www.gnu.org/software/texinfo/, GNU Texinfo} to
- replace @command{makeinfo} in C.
- @command{texi2html} is now installed as part of the texinfo package install,
- as an alias of @command{texi2any}. The @command{texi2html} documentation
- is also merged here in the Texinfo manual, as
- the @command{texi2any}/@command{makeinfo} documentation.
- @node Texi2HTML texi2any differences
- @appendixsec Differences between @command{texi2html} and @command{texi2any} invokation
- There are some differences between an invokation of @command{texi2any} or
- @command{makeinfo} and @command{texi2html}. With @command{texi2html}:
- @itemize @bullet
- @item HTML is the default output, as with @option{--html}.
- @item Command line is not parsed exactly like GNU getopt does. To be on the safe
- side:
- @itemize @bullet
- @item always use two dashes for long options.
- @item do not bundle short options, that is, use @code{-v -o -P} and not @code{-voP}.
- @end itemize
- @item Some options, although obsoleted are still available.
- @item The defaults for the HTML formatting may be slightly different.
- Have a look at the function @code{t2h_default_set_variables_texi2html}
- in @file{texi2html.pm}.
- @end itemize
- @node Texi2HTML changes
- @appendixsec Texi2HTML incompatibilities with previous versions
- @command{texi2html} has accumulated a lot of incompatibilities in previous
- versions, and more were added after the merge in Texinfo. Many
- incompatibilities were introduced in version 1.68. API changed also a
- lot between 1.78 and 1.80. Between 1.82 and 5.0 API changed also quite
- a bit, and more importantly, the whole internationalization handling was
- changed.
- @itemize @bullet
- @item API changes between 5.0 and later versions
- @itemize @bullet
- @item no default initialization file for latex2html. ALso don't search in
- directories for the latex2html initialization file, simply use the file
- given in argument.
- @item don't show menu with @option{--no-headers} as said in the makeinfo documentation.
- @item obsolete the @option{--iso} command line option.
- @item obsolete texi2html specific variables. Here is the list with the associated
- configuration variables that may be set instead, with @option{--set-init-variable}:
- @multitable {@option{--ignore-preamble-text}} {@code{IGNORE_PREAMBLE_TEXT}}
- @item @option{--toc-links} @tab @code{TOC_LINKS}
- @item @option{--short-ext} @tab @code{SHORTEXTN}
- @item @option{--prefix} @tab @code{PREFIX}
- @item @option{--short-ref} @tab @code{SHORT_REF}
- @item @option{--idx-sum} @tab @code{IDX_SUMMARY}
- @item @option{--def-table} @tab @code{DEF_TABLE}
- @item @option{--ignore-preamble-text} @tab @code{IGNORE_PREAMBLE_TEXT}
- @item @option{--html-xref-prefix} @tab @code{EXTERNAL_DIR}
- @item @option{--l2h} @tab @code{L2H}
- @item @option{--l2h-l2h} @tab @code{L2H_L2H}
- @item @option{--l2h-skip} @tab @code{L2H_SKIP}
- @item @option{--l2h-tmp} @tab @code{L2H_TMP}
- @item @option{--l2h-file} @tab @code{L2H_FILE}
- @item @option{--l2h-clean} @tab @code{L2H_CLEAN}
- @item @option{--use-nodes} @tab @code{USE_NODES}
- @item @option{--monolithic} @tab @code{MONOLITHIC}
- @item @option{--top-file} @tab @code{TOP_FILE}
- @item @option{--toc-file} @tab @code{TOC_FILE}
- @item @option{--frames} @tab @code{FRAMES}
- @item @option{--menu} @tab @code{SHOW_MENU}
- @item @option{--debug} @tab @code{DEBUG}
- @item @option{--doctype} @tab @code{DOCTYPE}
- @item @option{--frameset-doctype} @tab @code{FRAMESET_DOCTYPE}
- @item @option{--test} @tab @code{TEST}
- @end multitable
- @item remove completly $INVISIBLE_MARK, $USE_GLOSSARY, $CHECK, $EXPAND,
- $ENCODING, $CENTER_IMAGE, $HREF_DIR_INSTEAD_FILE, $USE_MENU_DIRECTIONS
- they have been obsolete, sometimes for many years.
- @item DATE is now set as today, DOCUMENT_ENCODING as documentencoding,
- extension as EXTENSION and DOCUMENT_DESCRIPTION as documentdescription.
- @item Don't use perl variables for configuration variables anymore. Instead,
- they should be set by
- @code{set_from_init_file('VARIABLE', value);}.
- For example
- @example
- $SPLIT = 'node';
- @end example
- should be replaced by
- @example
- set_from_init_file('SPLIT', 'node');
- @end example
- @item configuration variables are not in @code{Texi2HTML::THISDOC} directly
- anymore, but in @code{Texi2HTML::THISDOC@{'variables'@}->@{$var@}}. they
- should be accessed
- through @code{get_conf($var)}.
- @item remove $Texi2HTML::THISDOC@{'program_authors'@}. $Texi2HTML::THISDOC@{'program_and_version'@}
- holds the program and version, while $Texi2HTML::THISDOC@{'program'@} is only
- the program name.
- @end itemize
- @item API changes between 1.82 and 5.0:
- @itemize @bullet
- @item complex format handling API changed. $complex_format_map is replaced by
- a real hash %complex_format_map and the begin and end are no more
- evaluated.
- @item In the default case a gettext-like framework is now used for in document
- string translations. The old framework is still available by setting
- $I18N_PERL_HASH.
- @item Information that can be set by @@-commands should now be accessed
- through get_conf.
- @item $format_list_item_texi should now modify directly the @@item argument
- and apply the @@-command given as @@table argument. Correspondingly,
- some arguments of $table_item have been removed.
- @item Formatting of titlepage changed, and @@title, @@subtitle and @@author
- are now handled by $line_command
- @item $SEPARATED_FOOTNOTES has been replaced by $FOOTNOTESTYLE, that takes the
- same argument than @@footnotestyle.
- @item replace $LANG by $DOCUMENTLANGUAGE.
- @item replace $DO_CONTENTS by $CONTENTS and $DO_SCONTENTS by $SHORTCONTENTS.
- @item replace $TRANSLITERATE_NODE by $TRANSLITERATE_FILE_NAMES.
- @item replace $SECTION_NAVIGATION by $HEADERS.
- @item @@verbatiminclude is now a $raw command argument distinct from @@verbatim.
- @item @@direntry is formatted like a menu and passed down to $menu_command.
- @item add $NODE_FILENAMES to use node names for files associated with nodes,
- such that $NODE_FILES is only means creating redirection files.
- @item Remove the user from footer, and the corresponding USER variable and
- $Texi2HTML::THISDOC@{user@}.
- @item Don't treat _setfilename as a value set. It should be available through
- get_conf. Same for all the other @@-commands previously avaiable as
- values.
- @item change in class attribute for html elements:
- for ul to class "no-bullet" ($NO_BULLET_LIST_ATTRIBUTE). @@top
- and @@centerchap have now their command name as class.
- @@node heading class is now "node-heading", instead of "node".
- The whole header is in an element with class "header"
- (was "node" when !$HEADER_IN_TABLE).
- @item print_element_header is obsoleted,
- things should be directly done in element_heading.
- @item Add 'inline_attribute' for an XML attribute that should be closed at
- paragraph end and reopened at paragraph begin. Consequently the closing
- and opening of 'attribute' isn't done anymore in paragraph and
- preformatted.
- @item USE_ISO now only determines if @code{''}, @code{``} @code{---} and @code{--} are transformed
- into entities. t2h_default_set_iso_symbols sets or unsets USE_ISO,
- %things_map/%pre_map/%simple_format_simple_map_texi,
- $OPEN_QUOTE_SYMBOL and $CLOSE_QUOTE_SYMBOL.
- %iso_symbols is unused now.
- @item change in the normal_text function reference API, now there is an
- input variable true if in @@math.
- @item change the external_ref API, fourth argument is now the file name and
- add the node as an extra argument.
- @item rename $Texi2HTML::THISDOC@{css_lines@} as $Texi2HTML::THISDOC@{css_rule_lines@}
- @end itemize
- @item API changes between 1.78 and 1.80:
- @itemize @bullet
- @item what was done in the beginning of the $print_section
- function reference is now done in $print_element_header.
- @item there is a new argument for $normal_text.
- @item there is a new argument for $menu_link and $simple_menu_link, and the
- name argument is always set, even if there is no explicit name. The new
- argument is true if there really was an explicit name.
- @item $internal_ref and $external_ref don't change inforef to xref anymore.
- @item in $table_item the text is not formatted with the format command,
- the text_formatted argument is.
- @item definition index entries are now formatted with $definition_index_entry,
- not with $definition_category anymore.
- @item $printindex is called if an index appears, even if the index is not
- defined or there are no index entries.
- @item new argument (@@-command name) for $quotation and $quotation_prepend_text.
- @item change in the heading API. THIS_HEADER is not used anymore.
- New function reference, element_heading to format a node or a section
- heading, including navigation and label. Accordingly, print_Top and
- one_section don't print the element header anymore. Also it is
- reported if the element is a new element, is the main element and
- more arguments, and top element heading is always done in heading.
- @item print_element_header and print_navigation now return their result.
- @item the @code{copying} key of %Texi2HTML::THISDOC is now called
- @code{copying_comment}.
- @item TOC_LIST_ATTRIBUTE is now called NO_BULLET_LIST_ATTRIBUTE.
- @item TOC_LIST_STYLE is now called NO_BULLET_LIST_STYLE.
- @item the $unknown function reference has a new argument, the pass number.
- @item @option{--sec-nav} is replaced by @option{--headers}.
- @item @option{--Verbose} is replaced by @option{--verbose}.
- @item @option{--lang} is replaced by @option{--document-language}.
- @item @option{--separated-footnotes} is replaced by @option{--footnote-style}.
- @item @option{--lang} is replaced by @option{--document-language}.
- @item @code{&$menu_comment} is removed, @code{menu_comment} is now handled
- like an @@-command.
- @item @code{@@detailmenu} is now formatted more like @code{@@menu}, and
- the @code{&$menu} function reference is replaced by @code{&$menu_command}.
- @code{&$menu} is kept for backward compatibility. If @code{&$menu} is defined,
- @code{@@detailmenu} is ignored.
- @item the API for the formatting of menus completly changed. $simple_menu_link
- is removed, everything should be done in $menu_link.
- @item image API changed, and is unstable, so not documented.
- @item image file paths are not completed anymore in the default case.
- The previous
- behaviour can be restored with @code{$COMPLETE_IMAGE_PATHS} set to true.
- @item in %misc_command @samp{texi} is not used anymore. The value and macros
- are expanded as they should be unconditionnally.
- @item there is a new 'style' key in $complex_format_map, to be able to
- differentiate complex formats inheriting fonts and code_style (like
- @@format, @@display).
- @item $EXTENSION should be undef if one doesn't want an extension to be added.
- @item THISDOC@{'title'@} and similar are now for @@title since only one @@title
- should appear in the document. @@settitle is tried first to set fulltitle.
- @item Configuration variables are modified anymore, instead the variable
- value is put in $Texi2HTML::THISDOC@{'VAR'@}. This is the case for
- DO_CONTENTS, DO_SCONTENTS, CSS_LINES, BODYTEXT, DOCUMENT_DESCRIPTION,
- DOCUMENT_ENCODING, IN_ENCODING, ENCODING_NAME, OUT_ENCODING.
- For example, if $CSS_LINES is defined, the value is put in
- $Texi2HTML::THISDOC@{'CSS_LINES'@} which is used for formatting, and if
- $CSS_LINES is not defined, $Texi2HTML::THISDOC@{'CSS_LINES'@} is
- autodetected.
- @item When there is no section and $USE_NODES is not set don't split by node.
- This behaviour and the previous aren't documented, so it could change
- in the future.
- @end itemize
- @item API changes between 1.76 and 1.78:
- @itemize @bullet
- @item paragraph has new arguments
- with indentation information, added as the third argument, and
- other context information. The formatting linked with commands
- opened before the paragraph and closed after the paragraph are done
- in the formatting function. Similar
- things are done for preformatted.
- @item normal_text
- changed completely. There
- are much more arguments to give informations about the context, and
- normal_text now does more text manipulation.
- @item New arguments for image the alt text, the height and width,
- the path to working dir and the path to image file relative
- to working dir. More image formatting is
- done in the formatting function.
- @item New argument for empty_line.
- @item End of line removal is done in formatting function of definition line
- formatting.
- @item node_file_name now should only returns the node file, since the
- redirection file isn't used anymore. element_file_name only is used for
- file names, whatever NODES_FILES is.
- @end itemize
- @item changes between 1.66 and 1.68:
- @itemize @bullet
- @item When the manual is split the default is to put resulting files in
- a directory with name the manual file basename (previously they were left in
- the current directory). To avoid that, call texi2html with
- @option{-output .}. This has been changed to be compatible with
- @command{makeinfo} and also because it fits better with the cross
- manuals reference scheme.
- @item The option @option{--output} signification changed. It now
- has the same meaning than for @command{makeinfo}. It seems
- that in 1.66 it was the same than @option{-out-file}.
- @option{--output} new meaning allows to replace @option{-out-file} and
- @option{-subdir} with a unique option.
- More precisely @option{-out-file} forces the output to be unsplit
- while @option{--output} behaves differently when split (it specifies
- the directory
- where the manual files should be outputted) and unsplit (it specifies
- the output file). @option{-subdir} is retained for backward compatibility.
- If you want a backward compatibility you can use @option{-subdir}
- for the output directory if the document is split, and @option{-out-file}
- if the document isn't split. This hasn't been tested extensively though.
- @item Many options has been obsoleted but they are retained for
- backward compatibility.
- @item The init files are searched in new directories, however they
- are still searched for in the old directories for backward
- compatibility.
- @item the option @option{--glossary} doesn't do anything. Likely
- nothing specific is done regarding bibliographies. This has been
- decided because this added some semantics to the texinfo formatting
- language that weren't part of texinfo.
- It should be possible to do
- something similar with macros. See for example @file{glossary.texi}
- for glossary and @file{my-bib-macros.texi} for bibliography
- in the directory @file{examples}. In the web2c package there is
- an example of use of BibTeX, see @url{http://tug.org/texlive/devsrc/Build/source/TeX/texk/web2c/doc/} (the examples for bibliography are taken from the
- texinfo home page @url{http://www.gnu.org/software/texinfo/texinfo.html}).
- @item don't use @code{T2H_CENTER_IMAGE}. @code{@@center} should be used
- insead, it will give the right output for all the formats.
- @item If a directory creation fails the program aborts. This is much safer.
- @item The interface for internationalisation changed, although
- the previous wasn't documented a lot.
- @item the API described in this manual changed a lot. A important
- change was to use the @code{Texi2HTML::Config} names space instead of
- variables prefixed with @samp{T2H_} or @samp{t2h_}. To cope with
- the change the prefix should be removed from variables in init files.
- Some variables are now in @code{%Texi2HTML::THISDOC}.
- @item @code{@@ifinfo} regions are not expanded by default. This may lead
- to warnings or errors especially if the Top node is enclosed in
- @code{@@ifinfo}, as some node won't appear in menus. The quick fix
- is to call @command{texi2html} with the option @option{--ifinfo} and
- the right way should be to make more use of @code{@@ifnottex}.
- @item The code appearing before the first node is now outputted, it was
- ignored before. @option{--ignore-preamble-text} revert to the previous
- behaviour. Enclosing in @code{@@ifnothtml} would be much cleaner.
- @end itemize
- @end itemize
- @node texi2any Output Customization
- @chapter @command{texi2any} Output Customization
- @cartouche
- @quotation Warning
- All of this information, with the exception of command-line options
- and search directories (@pxref{Loading Init Files}), may become
- obsolete in a future Texinfo release. Right now, the ``API''
- described in this chapter is immature, badly designed and incomplete,
- so we must keep open the possibility of incompatible, possibly major,
- changes. Of course we try to avoid incompatible changes, but it is
- not a promise.
- @end quotation
- @end cartouche
- This chapter describes how to customize many aspects of the
- @command{texi2any} HTML output. Although some of the features here
- can technically be used with other output formats, it's not especially
- useful to do so, so we'll write the documentation as if HTML were the
- target format.
- @menu
- * Loading Init Files:: Finding and writing initialization files.
- * Init File Basics:: What init files can contain and do.
- * Output Elements:: The main unit of output documents.
- * Navigation Panel Customization:: Navigation buttons and more.
- * Customizing HTML Page Layout:: Page headers, footers, sections.
- * Customizing Special Elements:: The top, toc, about, etc., elements.
- * Customizing Output-Related Names:: File names and target names.
- * Customizing HTML Headings:: Sectioning commands.
- * Customizing Indices:: Manipulating index entries.
- * Customizing CSS:: CSS customization for HTML.
- @end menu
- @node Loading Init Files
- @section Loading Initialization Files and Search Paths
- @cindex Loading init files
- @cindex Initialization files, loading
- @cindex Search paths, for initialization files
- @pindex Config @r{init files loaded}
- You can write so-called @dfn{initialization files}, or @dfn{init
- files} for short, to modify almost every aspect of output formatting.
- The program loads init files named @file{Config} each time it is run.
- Those files are looked for in the following directories (where
- @var{prog} is the name of the program invoked on the command line,
- normally @code{makeinfo} or @code{texi2any}):
- @table @file
- @item @var{datadir}/@var{prog}/
- (where @var{datadir} is the system data directory specified at
- compile-time, e.g., @file{/usr/local/share})
- @item @var{sysconfdir}/@var{prog}/
- (likewise specified at compile time, e.g., @file{/usr/local/etc})
- @item ~/.@var{prog}/
- (where @code{~} is the current user's home directory)
- @item ./.@var{prog}/
- (under the current directory)
- @item ./
- (the current directory)
- @end table
- All @file{Config} files found are loaded, in the above order. Thus,
- @file{./Config} can override entries in, say,
- @file{/usr/local/share/makeinfo/Config}.
- @opindex --init-file
- However, the most common way to load an initialization file is with
- the @option{--init-file} option, explicitly specifying the file to be
- loaded. By default the following directories are searched, in the
- following order, where @var{prog} is the name of the program invoked
- on the command line (@command{makeinfo}, @command{texi2any}, etc.).
- Only the first file found is used:
- @enumerate
- @item The current directory @file{./};
- @item @file{./.@var{prog}/} under the current directory;
- @item @file{~/.@var{prog}/}
- where @code{~} is the current user's home directory;
- @item @file{@var{sysconfdir}/@var{prog}/}
- where @var{sysconfdir} is the system configuration directory
- specified at compile-time, e.g., @file{/usr/local/etc};
- @item @file{@var{datadir}/@var{prog}/}
- Where @var{datadir} is the system data directory likewise specified at
- compile time, e.g., @file{/usr/local/share};
- @item @file{./.texinfo/init/} under the current directory;
- @item @file{~/.texinfo/init/} under the current home directory;
- @item @file{@var{sysconfdir}/texinfo/init/} with @var{sysconfdir} as above;
- @item @file{@var{datadir}/texinfo/init/} with @var{datadir} as above.
- @end enumerate
- Additional directories may be prepended to the list with the
- @option{--conf-dir} option (@pxref{Invoking texi2any}).
- @node Init File Basics
- @section Init File Basics
- @cindex Init file basics
- @cindex Perl, language for init files
- Init files are written in Perl, and by convention have extension
- @file{.init} or @file{.pm}. Several init files are included in the Texinfo
- distribution (some are crucial components of the program), and can
- serve as a good model for writing your own. In particular, the
- @file{texi2html.pm} file is used to set all the defaults for
- Texinfo. Although it is large, it contains many useful examples of
- settings. Smaller examples include @file{utf8.pm},
- @file{html32.pm}, and plenty more.
- @menu
- * Init File Variables:: Configuration & other variables, function references.
- * Init File Namespaces:: @code{Texi2HTML::Config}, @code{Texi2HTML}, and @code{main}.
- * Init File Functions:: Redefining functions through references.
- * Setting and Getting Configuration Variables::
- * Init File Global Information:: Accessing document title, file name, etc.
- * Init File Encodings:: Overriding input and output encodings.
- * texi2any's Three Passes:: Macro expansion, document structure, output
- * Init File Calling at Different Stages:: Calling functions at various times.
- * Init File Formatting of Commands:: Overriding default formatting completely.
- * Init File General Block Commands:: Customizing usual environments.
- * Init File Expansion Contexts:: Normal, preformatted, string, math.
- * Internationalization of Strings::
- @end menu
- @node Init File Variables
- @subsection Init File Variables
- @cindex Initialization file variables
- @cindex Variables, in initialization files
- We divide the kinds of variables that can appear in initialization
- files into three general categories:
- @table @asis
- @item configuration variables
- @cindex Configuration variables
- Configuration variables are set and accessed through specific
- functions in initialization files (@pxref{@command{texi2any} Configuration
- Variables}).
- @item scalars, lists and hashes
- @cindex Perl variables
- Normal Perl variables. The order of loading of initialization files
- and of command-line options is important: later changes override
- earlier ones.
- @item function references
- @cindex Function references
- These allow dynamic redefinition of functions used to produce output.
- As such functions are defined by a reference name, we will always use
- the reference name in function prototypes. For the function arguments
- we will use @code{\@@array} to indicate a reference to an array
- (a.k.a.@: list, in Perl terminology) and @code{\%hash} for a reference
- to a hash.
- To illustrate these conventions, here is the prototype for the
- function associated with a function reference
- @samp{$formatting_function}:
- @deftypefn {Function Reference} $text formatting_function $arg1 \@@arg2
- @code{formatting_function} has a first argument @var{$arg1},
- a second argument a reference to an array @var{\@@arg2},
- and returns the formatted text @var{$text}.
- @end deftypefn
- To redefine this function, you would write:
- @example
- $formatting_function = \&my_formatting_function;
- sub my_formatting_function($ $)
- @{
- my $arg1 = shift;
- my $arg2 = shift;
- # prepare $formatted_text
- ...
- return $formatted_text;
- @}
- @end example
- @end table
- Since the program can process more than one file on the command line,
- you must ensure that you properly initialize the variables used during
- formatting. It is possible to call functions at different stages to
- help with that (@pxref{Init File Calling at Different Stages}).
- @node Init File Namespaces
- @subsection Init File Namespaces
- @cindex Init file namespaces
- @cindex Namespaces, for init files
- @cindex Perl namespaces, for init files
- @vindex Texi2HTML::Config @r{namespace}
- Initialization file are loaded from the main program via a
- @code{require} call in the @code{Texi2HTML::Config} namespace. This
- means that the namespace of the main program and the namespace of
- initialization files are distinct, which minimizes the chance of a
- name clash. The program's own variables are declared with @code{use
- vars}, so that it should be possible to use the @code{use strict}
- pragma in initialization files.
- @vindex Texi2HTML @r{namespace}
- @vindex main @r{namespace}
- To avoid accidentally altering the variables in the @code{main}
- namespace, all the global variables which could be of use in init
- files are available in the @code{Texi2HTML} namespace.
- The functions of the main program, however, are still in the
- @code{main} namespace.
- @node Init File Functions
- @subsection Init File Functions
- @cindex Init file functions
- @cindex Functions, overriding in init files
- @cindex Overriding functions in init files
- To redefine a function you must replace the appropriate function
- reference with a reference to your function: write your function, give
- it a name you ensure is unique in the @code{Texi2HTML::Config}
- namespace, and then override the value of the function reference with
- your own. When another function from the main program (or anywhere
- else) calls the reference, your function will be used.
- For example, the function reference to the function called when
- handling an anchor is called @code{$anchor}. Thus, to override the
- corresponding function you could write:
- @example
- # override the function reference:
- $anchor = \&my_anchor_fn;
- # define the function to do the work:
- sub my_anchor_fn @{
- # process arguments, return an html anchor
- @}
- @end example
- @node Setting and Getting Configuration Variables
- @subsection Setting and Getting Configuration Variables
- @cindex Configuration variables, setting and getting
- The basic operations on configuration variables are to set and
- retrieve their values.
- To set the value of a configuration variable from an initialization file,
- you should use @code{set_from_init_file}:
- @defun set_from_init_file ($variable_name, $variable_value)
- @var{$variable_name} is a string containing the name of the variable
- you want to set, and @var{$variable_value} is the value to which you
- want to set it. @var{$variable_value} may be @samp{undef}.
- @end defun
- For example,
- @example
- set_from_init_file('documentlanguage', 'fr');
- @end example
- @noindent overrides the @code{@@documentlanguage} from the
- document. It would be overridden by @option{--document-language} on
- the command line.
- Another example:
- @example
- set_from_init_file('SPLIT', 'chapter');
- @end example
- @noindent overrides the default splitting of the document. It would be
- overridden by @option{--split} on the command line.
- A final example:
- @example
- set_from_init_file('NO_CSS', 1);
- @end example
- @noindent overrides the default value for @code{NO_CSS}. It would be
- overridden by @code{--set-init-variable NO_CSS=1} on the command line.
- To get the value of a variable, the function is @code{get_conf}:
- @defun get_conf ($variable_name)
- @var{$variable_name} is the name of the variable; its value (possibly
- @code{undef}) is returned.
- @end defun
- For example:
- @example
- if (get_conf('footnotestyle') eq 'separate') @{ ... @}
- @end example
- For the configuration variables associated with @@-commands, see
- @ref{Configuration Variables for @@-Commands}. For the configuration
- variables associated with command line options, see @ref{Configuration
- Variables and Options}.
- @node Init File Global Information
- @subsection Init File Global Information
- @c @ignore
- @c FIXME those are still undocumented
- @c 'split_level'
- @c 'variable_levels' 'variables'
- @c do_about
- @c 'FH' 'state' 'format_from_command_line'
- @c command_stack
- @c line_nr
- @c %htmlxref
- @c %hyphenation
- @c @end ignore
- @cindex Init files, and global information
- @cindex Global information, in init files
- Much global information about the document is available as the basis
- for customization in init files.
- @menu
- * Title String Variables:: @code{@@author}, @code{@@title}, etc.
- * Command Line String Variables:: Input and output file names, etc.
- * Global Document String Variables:: @code{@@copying}, CSS, TOC, etc.
- * Index String Variables:: @code{defindex}, @code{@@synindex}, etc.
- * Init File Flag Values:: @code{@@set} values.
- * Program String Customization:: For the About element and footers.
- @end menu
- @node Title String Variables
- @subsubsection Title String Variables
- @cindex Title string variables
- For title-related @@-commands, such as @code{@@title},
- @code{@@titlefont}, and @code{@@author}, a variety of information is
- available, with diverse formatting.
- @code{@@author} and @code{@@subtitle} are multiline title-related
- commands, since they may appear more than once. Multiline
- title-related commands are associated with strings that are
- constructed by concatenating all the command occurences. They are
- also associated with arrays, and the name of the arrays is constructed
- by appending a @samp{s} to the command name, as in @code{authors}.
- Some information is also deduced from the title commands:
- @dfn{simpletitle} reflects @code{@@settitle} vs.\
- @code{@@shorttitlepage}, and @dfn{fulltitle} is constructed by trying
- all the title-related commands, including @code{@@top} and
- @code{@@titlefont}, in the top element.
- @vindex Texi2HTML::THISDOC
- The information associated with @code{@@top}, @code{@@title},
- @code{@@settitle}, @code{@@shorttitlepage}, @code{@@author},
- @code{@@subtitle}, @code{simpletitle} and @code{fulltitle} are
- associated with the following keys in the @code{%Texi2HTML::THISDOC}
- hash, where @var{command} is the title @@-command:
- @table @code
- @item @var{command}_texi
- The original Texinfo code.
- @item @var{command}
- The corresponding text formatted.
- @item @var{command}_no_texi
- The text formatted as simple plain text.
- @item @var{command}_simple_format
- The text formatted as a string without formatting elements
- (@pxref{Init File Expansion Contexts}).
- @item @var{command}_line_nr
- An opaque structure corresponding with the line where the @@-comand
- appeared. Not available for @code{@@titlefont}, multiline
- title-related commands and derived information.
- @end table
- For multiline commands, the following array references are associated
- with the following keys in the @code{%Texi2HTML::THISDOC} hash, where
- @var{command} is the title @@-command:
- @table @code
- @item @var{command}s
- Reference to an array containing all lines set by
- @code{@@@var{command}}, formatted.
- @item @var{command}s_texi
- Reference to an array containing all the original Texinfo lines.
- @item @var{command}s_line_nr
- Reference to an array of opaque structures corresponding with the
- line where the @@-command lines appeared.
- @end table
- @node Command Line String Variables
- @subsubsection Command Line String Variables
- @cindex Command-line string variables
- These entries in the @code{%Texi2HTML::THISDOC} hash are related to
- the command-line processing:
- @table @code
- @item destination_directory
- Destination directory for the output files.
- @item file_base_name
- Base name of the Texinfo input file.
- @item filename
- This is a reference to a hash that holds the filenames for special
- elements. These files may not be used in certain cases, for example
- the @code{toc} element file name may not be relevant if table of
- contents is not output separately. The keys are:
- @table @code
- @item doc
- If not split, the document file; if split, the top element file.
- @item top
- Top element file name.
- @item toc
- Table of contents element file name.
- @item stoc
- Overview (a.k.a.@: short table of contents) element file name.
- @item about
- About element file name.
- @item foot
- Footnotes element file name.
- @item frame
- Main frame file.
- @item toc_frame
- Table of contents frame file name.
- @end table
- @item input_directory
- Path to the directory containing the Texinfo input file being processed.
- @item input_file_name
- Name of the Texinfo input file as given on the command line.
- @item input_file_number
- Number of the Texinfo input file from the command line which is
- currently being processed.
- @item program
- The name of the command generating the output.
- @item program_and_version
- The name and version of the command generating the output.
- @item program_homepage
- Home page of the command generating the output.
- @end table
- @node Global Document String Variables
- @subsubsection Global Document String Variables
- @cindex Global document strings
- These entries in the @code{%Texi2HTML::THISDOC} hash provide other
- global document information.
- @table @code
- @item copying_comment
- Text appearing in @code{@@copying} with all the Texinfo commands
- put into comments (@pxref{copying,,@code{@@copying}}).
- @item css_import_lines
- Reference to an array containing the @code{@@import} lines of
- @acronym{CSS} files (@pxref{HTML CSS}).
- @item css_rule_lines
- Reference to an array containing the normal lines of @acronym{CSS}
- files.
- @item dircategory_texi
- The Texinfo @code{@@dircategory} argument (@pxref{Installing Dir Entries}).
- @item dircategory
- The formatted @code{@@dircategory} argument.
- @item inline_contents
- A reference to a hash containing two keys, one for each type of table
- of contents: @code{contents} and @code{shortcontents}. Each
- associated value is a reference to an array containg the lines
- resulting from formatting the respective type of table of contents,
- including a heading and a reference.
- @item stoc_file
- The file name of the Overview (short table of contents).
- @item toc_file
- The file name of the table of contents.
- @end table
- @node Index String Variables
- @subsubsection Index String Variables
- @cindex Index strings
- These entries in the @code{%Texi2HTML::THISDOC} hash provide other
- index-related information.
- @table @code
- @item defindex
- @itemx defcodeindex
- References to arrays holding the corresponding @@-command
- arguments.
- @item merged_index
- Reference to a hash whose keys are the index names merged in
- the values.
- @item index_letters_array
- @itemx index_entries_array
- @itemx index_entries_region_array
- @itemx index_entries
- @itemx indices_numbers
- @itemx indices
- References to hashes holding information about the index entries
- and whole indices.
- @item synindex
- @itemx syncodeindex
- Reference to arrays containing array references with two elements,
- the two arguments of @code{@@synindex}
- (@pxref{synindex,,@code{@@synindex}}).
- @end table
- @node Init File Flag Values
- @subsubsection Init File Flag Values
- @cindex Init file flag values
- @cindex Flag values, in init files
- @cindex @code{@@set} values, in init files
- @vindex %main::value
- Flags defined with @code{@@set} (@pxref{set value})
- may be accessed through the @code{%main::value} hash. The key is the
- flag name, and the value is the flag value.
- @node Program String Customization
- @subsubsection Program String Customization
- @cindex Program string customization
- @cindex Customization of program string
- @vindex PROGRAM_NAME_IN_FOOTER
- The following function reference may be used to construct a string
- advertising the program used to generate the output. It may be used
- in the @code{About} element, and in the footers if
- @code{PROGRAM_NAME_IN_FOOTER} is set.
- @deftypefn {Function Reference} $program_string_formatted program_string
- This function reference should return the formatted program
- string.
- @end deftypefn
- @node Init File Encodings
- @subsection Init File Encodings
- @cindex Init file encodings
- @cindex Encodings, in init files
- There are four encoding-related variables, which are autodetected
- if not set:
- @vtable @code
- @item documentencoding
- This configuration variable may be set, overriding any encoding
- set by @code{@@documentencoding} (@pxref{documentencoding,,
- @code{@@documentencoding}}).
- @item IN_ENCODING
- The encoding of the Texinfo files may be set independently with this
- variable. If not, then when @code{documentencoding} is set,
- @code{IN_ENCODING} is also set if the encoding is supported by Perl.
- @item ENCODING_NAME
- The encoding advertised in output files. If not set, the value of
- this variable is based on the other ENCODING values, and if they are
- all undefined, the variable @code{DEFAULT_ENCODING} is used.
- @item OUT_ENCODING
- The encoding of the output files. If not set, the value of
- @code{ENCODING_NAME} or @code{IN_ENCODING} is used if one of these
- variables is set.
- @end vtable
- In general, the @code{documentencoding} and @code{IN_ENCODING} are set
- to the appropriate values with no need to override.
- @code{OUT_ENCODING} is set according to @code{ENCODING_NAME}. To
- force a given encoding for the output, it's best to set
- @code{ENCODING_NAME}. The default output encoding for Info is ASCII,
- and for other formats is UTF-8.
- The values for the encoding related variables are set in the default
- @code{init_out} function reference (@pxref{Output Initialization}).
- @node texi2any's Three Passes
- @subsection @code{texi2any}'s Three Passes: Macro Expansion, Document Structure, Output
- @cindex @code{texi2any's} three passes
- @cindex Passes, of @code{texi2any}
- @cindex Three passes, of @code{texi2any}
- @command{texi2any} operates in three passes to transform the original
- input to the final output. In pass@tie{}0, the @code{@@macro} calls
- are expanded; in pass@tie{}1, the document structure is gathered; and
- in pass@tie{}2 the result is output. In most cases this organization
- does not matter, as output customization is almost always done in
- pass@tie{}2. Only if you want to do something during an earlier pass
- do you need to consider this, as explained below.
- After the Texinfo input file has been parsed, some information is
- available which can be used to modify some variables and prepare for
- the output. For example, even such basic things as the document
- language, the document encoding, values set with @code{@@set} or
- @code{@@setfilename}, etc., cannot be known before the Texinfo
- parsing.
- @anchor{Output Initialization}
- @cindex Output initialization
- @cindex Initialization of output
- The following function reference may be redefined to be called after
- Texinfo processing and before document generation, i.e., for output
- initialization:
- @deffn {Function Reference} init_out
- This function performs the initialization of variables and other
- tasks before document output.
- @end deffn
- By default, the hashes @code{%BUTTONS_NAME} (@pxref{Navigation Panel
- Button Specification}) and @code{%BUTTONS_GOTO} (@pxref{About Element
- Customization}) are initialized. The initialization of these
- variables depends on the document language. Similarly, the encoding
- variables are set based on the information now available (@pxref{Init
- File Encodings}). When generating HTML, aditionally, the
- @code{%NAVIGATION_TEXT} hash is initialized.
- To perform the default initializations, which are almost surely
- desired, and also add more code, the best way is to save the default
- function reference and then call it in your new function, like this:
- @example
- my $default_init_out = $init_out;
- $init_out = \&my_init_out;
- sub my_init_out()
- @{
- &$default_init_out();
- $NAVIGATION_TEXT@{'NodeForward'@} = ' > ';
- @}
- @end example
- @anchor{Output Finalization}
- @cindex Output finalization
- @cindex Finalization of output
- At the other end of things, if you want to do some clean-up after the
- document was generated (write at the end of the output files, issue
- messages, @dots{}), the following function reference may be overridden:
- @deffn {Function Reference} finish_out
- This function is called after the document generation.
- @end deffn
- The default is to do nothing.
- These function references are mostly redundant with the handlers described
- in the next section (@pxref{Init File Calling at Different Stages}).
- @node Init File Calling at Different Stages
- @subsection Init File Calling at Different Stages
- @cindex Init file calling functions at different stages
- @cindex Calling functions at different stages
- @cindex Functions, calling at different stages
- Arbitrary user-defined functions may be called between the different
- Texinfo parsing and outputting passes (see previous section). This
- could be used, for example, to initialize variables before collecting
- the @@-commands and their text, expanding them between the collecting
- and expansion phase and doing clean-up after the expansion pass.
- There are five places for user defined functions, each associated with
- an array. The function references in each array are called one after
- another. The arrays correspond with the different stages:
- @vtable @code
- @item @@command_handler_setup
- Called before anything is done, including collecting the output file
- names. The input file names' directories are available.
- @item @@command_handler_init
- Called as soon as the input file names are known. It may be at
- different moments: before processing anything, right after
- @code{@@setfilename}, or at the end of pass@tie{}0 (after
- @code{@@macro} and @code{@@include} expansions). At that time the
- information available is essentially just the input file names.
- @item @@command_handler_names
- Called right after pass@tie{}1, the main input collection. At that
- time all the special @@-commands have been collected as explained
- above, but no output has been produced, and the element (node and
- section) names have not been processed.
- @item @@command_handler_process
- Called after the element names have been processed, but
- before the main output initialization.
- @item @@command_handler_output
- Called right before the main output processing, so that more
- information is available, such as the title (@pxref{Init File Global
- Information}).
- @item @@command_handler_finish
- Called after output generation is finished.
- @end vtable
- Because these are arrays, you should use @code{push} to add your
- functions to them, like this (a real example from the @LaTeX{}2HTML
- support):
- @example
- push (@@command_handler_init,
- \&Texi2HTML::LaTeX2HTML::init);
- push (@@command_handler_process,
- \&Texi2HTML::LaTeX2HTML::latex2html);
- push (@@command_handler_finish,
- \&Texi2HTML::LaTeX2HTML::finish);
- @end example
- For a real-life example, see the @LaTeX{}2HTML support.
- @node Init File Formatting of Commands
- @subsection Init File Formatting of Commands
- @cindex Init file formatting of commands
- @cindex Formatting of commands, in init file
- @cindex Commands, custom formatting
- It is possible to bypass completely the normal formatting of
- @@-commands with braces and the block commands of ``raw'' input such
- as @code{@@html} and @code{@@tex} (@pxref{Raw Formatter Commands}).
- In these cases the @@-commands and the text within are passed to a
- user-defined function early, right after the document structure
- determination of pass@tie{}1 (@pxref{texi2any's Three Passes}).
- Another user-defined function is called during the output expansion
- phase.
- @vindex %command_handler
- These user-defined functions are specified as values in the
- @code{%command_handler} hash, with the key being the command to
- override. The associated value is itself a hash reference, whose keys
- can be @code{'init'} for the function reference called during the
- first pass, and @code{'expand'} during the expansion pass.
- Here is an example for an @@-command with braces, @code{math}, used
- for in the @LaTeX{}toHTML support:
- @example
- $command_handler@{'math'@} =
- @{ 'init' => \&Texi2HTML::LaTeX2HTML::to_latex,
- 'expand' => \&Texi2HTML::LaTeX2HTML::do_tex
- @};
- @end example
- @cindex Raw region, overriding formatting of
- Handling a raw region @@-command is the same:
- @example
- $command_handler@{'tex'@} =
- @{ 'init' => \&Texi2HTML::LaTeX2HTML::to_latex,
- 'expand' => \&Texi2HTML::LaTeX2HTML::do_tex
- @};
- @end example
- These function references are called as follows, respectively:
- @deftypefn {Function Reference} $status @
- $command_handler@{'$command'@}->@{'init'@} $command $text $count
- @var{$command} is the @@-command name, @var{$text} is the text
- appearing within the @@-command, and @var{$count} counts how many
- times this @@-command has appeared. @var{$status} is a boolean to return,
- true if the collection was succesful. If it is false, the @@-command
- and the text are discarded.
- @end deftypefn
- @deftypefn {Function Reference} $result @
- $command_handler@{'$command'@}->@{'expand'@} $command $count \%state $text
- @var{$command} is the @@-command name, @var{$count} counts how many
- times this @@-command has appeared, and @var{\%state} is a hash
- reference with detailed context information; @var{$text} should be
- empty. @var{$result} is the expanded resulting text.
- @end deftypefn
- @node Init File General Block Commands
- @subsection Init File General Block Commands
- @cindex Init file general block commands
- @cindex General block commands, in init files
- @cindex Block commands, in init files
- A @dfn{general block @@-command} is any @@-command which is paired
- with an @code{@@end @var{cmdname}}, with the exception of those
- @@-commands selecting whether input is processed (such as
- @code{@@ignore} and @code{@@ifhtml}) and ``raw'' @@-commands (such as
- @code{@@verbatim} and @code{@@html}).
- @deftypefn {Function Reference} $line begin_format_texi $command $line \%state
- @var{$command} is the format command, @var{$line} is the rest of the
- line following the @@-command, and @var{\%state} is a hash reference
- with detailed context information. The function can modify
- @code{$line} and return something else.
- @end deftypefn
- By default, this is used to keep track of multitable nesting, and so
- it is linked with multitable formating.
- @c oldapi @pxref{Multitable Formatting}
- @node Init File Expansion Contexts
- @subsection Init File Expansion Contexts: Normal, Preformatted, String, Math
- @cindex Init file expansion contexts
- @cindex Expansion contexts, for init files
- @cindex Contexts for expansion in init files
- There are four expansion contexts of interest:
- @table @emph
- @item normal context
- @cindex Normal expansion context
- Paragraphs, index entries, tables, @enddots{}
- @item preformatted context
- @cindex Preformatted expansion context
- When spaces between words are kept. For example, within the
- @code{@@display} (@pxref{display,, @code{@@display}}) and
- @code{@@example} environments (@pxref{example,, @code{@@example}}), and
- in menu comments. The preformatted regions
- are usually rendered using @code{<pre>} elements in HTML.
- @c oldapi (@pxref{Menu formatting})
- @item string context
- @cindex String expansion context
- When rendering strings without formatting elements, for example in
- comments (@pxref{Comments}) and titles. We have two string contexts,
- one that produces plain text, and a second that allows for limited
- formatting, typically without any element when producing HTML or XML,
- so the value can be used in an attribute.
- @item math context
- @cindex Math expansion context
- Math (@pxref{math,, @code{@@math}}).
- @end table
- @node Internationalization of Strings
- @subsection Internationalization of Strings in the Output Document
- @cindex I18n
- @cindex Internationalization of strings in the output document
- @cindex Output documentation, internationalization of
- @vindex documentlanguage @r{configuration variable}
- @command{texi2any} writes some fixed strings in the generated document
- at various places: for cross references, in page footers, on the help
- page, alternate text for images, and so on. The string chosen depends
- on the value of the configuration variable @code{documentlanguage} at
- the time of the string being output (@pxref{documentlanguage}, for the
- Texinfo command interface).
- @pindex libintl-perl @r{Gettext implementation}
- The Gettext framework is used for those strings (@pxref{Top,,,
- gettext, Gettext}). The @code{libintl-perl} package is used as
- the @code{gettext} implementation; more specifically, the pure Perl
- implementation is used, so Texinfo can support consistent behavior
- across all platforms and installations, which would not otherwise be
- possible. @code{libintl-perl} is included in the Texinfo distribution
- and always installed, to be sure that it is available if needed. It
- is also possible to use the system @code{gettext}; currently decided
- at build-time).
- @vindex texinfo_document @r{Gettext domain}
- The Gettext domain @samp{texinfo_document} is used for the strings,
- and the subroutine @code{gdt} is used for translated
- strings:
- @defun gdt ($string, \%variables_hash, \%state)
- @var{$string} is the string to be translated, @var{\%variables_hash}
- is a hash reference holding the variable parts of the translated
- string, and @var{\%state} is a hash reference with detailed context
- information.
- @end defun
- @cindex Perl format strings for translation
- Translated strings are written as Texinfo, and may include
- @@-commands. In translated strings, the varying parts of the string
- are not usually denoted by @code{%s} and the like, but by
- @samp{@{arg_name@}}. (This convention is common for @code{gettext} in
- Perl and is fully supported in GNU Gettext; @pxref{perl-format,, Perl
- Format Strings, gettext, GNU Gettext}.) For example, in the
- following, @samp{@{section@}} will be replaced by the section name:
- @example
- see @{section@}
- @end example
- These Perl-style brace format strings are used for two reasons: first,
- changing the order of @code{printf} arguments is only available since
- Perl@tie{}5.8.0; second, and more importantly, the order of the
- argument is unpredictable, since @@-command expansion may lead to
- different orders depending on the output format. The expansion of
- a translation string is done like this:
- @enumerate
- @item First, the string is translated. The locale
- is @var{@@documentlanguage}@code{.}@var{@@documentencoding}.
- @cindex @code{us-ascii} encoding, and translations
- If the @var{@@documentlanguage} has the form @var{ll_CC}, @var{ll_CC}
- is tried first, and then @var{ll}. If that does not exist, and the
- encoding is not @code{us-ascii}, then @code{us-ascii} is tried. The
- idea is that if there is a @code{us-ascii} encoding, it means that all
- the characters in the charset may be expressed as @@-commands. For
- example, there is a @code{fr.us-ascii} locale that can accommodate any
- encoding, since all the Latin@tie{}1 characters have associated
- @@-commands. On the other hand, Japanese has only a translation
- @code{ja.utf-8}, since there are no @@-commands for Japanese
- characters.
- @item Next, the args in string are protected. For example,
- @samp{@{ arg_name @}} becomes@*
- @samp{@@internal_translation_open_brace@{@} arg_name@*
- @@internal_translation_close_brace@{@}}
- (this part is skipped if there is nothing to expand).
- @item Next, the string is expanded as Texinfo.
- @samp{@@internal_translation_open_brace@{@}} expands to @samp{@{} and
- @samp{@@internal_translation_close_brace@{@}} expands to @samp{@}},
- such that in the end one still gets @samp{@{arg_name@}} within an
- expanded string (this part is skipped if there is nothing to expand).
- @item Finally, the arguments are substituted; for
- example, @samp{@{arg_name@}} is replace by the corresponding actual
- argument.
- @end enumerate
- @vindex duplicate @r{in @code{%state} hash}
- In the following example, @samp{@{date@}}, @samp{@{program_homepage@}}
- and @samp{@{program@}} are the arguments of the string. Since they
- are used in @code{@@uref}, their order is not predictable. The
- @samp{@{'duplicate'=>1@}} means that the document state should be used
- when expanding the string. @samp{@{date@}},
- @samp{@{program_homepage@}} and @samp{@{program@}} are substituted
- after the expansion, which means that they should already be
- acceptable output:
- @example
- gdt('Generated on @@emph@{@{date@}@} using
- @@uref@{@{program_homepage@}, @@emph@{@{program@}@}@}.',
- @{
- 'date' => $date,
- 'program_homepage' => $Texi2HTML::THISDOC@{'program_homepage'@},
- 'program' => $Texi2HTML::THISDOC@{'program_and_version'@} @},
- @{'duplicate'=>1,
- @});
- @end example
- This approach is admittedly a bit complicated. Its usefulness is that
- it supports having translations available in different encodings for
- encodings which can be covered by @@-commands, and also specifying how
- the formatting for some commands is done, independently of the output
- format---yet still be language dependent. For example, a
- @samp{@@pxref} translation string may be:
- @example
- see @{node_file_href@} section `@{section@}\' in @@cite@{@{book@}@}
- @end example
- @noindent
- which allows specifying a string independently of the output format,
- but with rich formatting that may be translated appropriately in many
- languages.
- @vindex keep_texi @r{in @code{%state} hash}
- Expansion can be prevented by setting the key @code{keep_texi} in the
- @code{state} hash.
- When an @code{@@documentlanguage} line appears in the document and the
- language was not set on the command line, it is convenient for the
- translations to redefine some variables based on the new language.
- Therefore, Texinfo has a function reference which is called each time
- @code{@@documentlanguage} is encountered:
- @deffn {Function Reference} $translate_names
- Called each time @code{@@documentlanguage} is encountered, if the
- language was not set on the command line. It should be used to
- retranslate strings based on the new language.
- @end deffn
- @node Output Elements
- @section Output Elements
- @cindex Output elements
- @cindex Elements, main unit of output documents
- We will call the main unit of output documents an @dfn{element}. An
- element's association with output files is determined by the split
- options (@pxref{Splitting Output}). This section describes precisely
- how these output elements work, with details for customization.
- @menu
- * Defined: Output Elements Defined.
- * Labels: Output Element Labels.
- * Lines: Output Element Lines.
- @end menu
- @node Output Elements Defined
- @subsection Output Elements Defined
- @cindex Output elements, defined
- The output elements are:
- @table @emph
- @item Normal elements
- @cindex Normal elements
- These are normal sections and nodes. Usually a node is associated
- with a following sectioning command, while a sectioning command is
- associated with a previous node; they both together make up the
- element. Either the node or the sectioning command is considered to
- be the main element component, depending on the values of the
- configuration variables @code{USE_NODES} and @code{USE_SECTIONS}
- (@pxref{@command{texi2any} Configuration Variables}).
- For example, when generating Info, the nodes are the elements; when
- generating Docbook, sectioning commands are the main element
- component; and when generating HTML, either case may happen
- (@pxref{Two Paths}).
- @item Top element
- @cindex Top element
- The top element is the highest element in the document structure. If
- the document has an @code{@@top} section (@pxref{makeinfo top}), it is
- the element associated with that section; otherwise, it is the element
- associated with the document's @code{@@node Top} (@pxref{The Top
- Node}). If there is no @code{@@node Top}, the first element in the
- document is the top element.
- The top element may end up formatted differently from normal elements
- if there is an @code{@@top} section or the @code{@@node Top} is not
- associated with a sectioning command.
- @item Miscellaneous elements
- @cindex Table of contents, output element
- @cindex Short table of contents, output element
- @cindex Overview, output element
- @cindex Footnotes, output element
- @cindex About page, output element
- The remaining elements are associated with different files if the
- document is split, and also if @code{MONOLITHIC} is not set. There
- are four such miscellaneous elements:
- @enumerate
- @item Table of contents
- @item Short table of contents, also called Overview
- @item Footnotes page
- @item About page
- @end enumerate
- More details:
- @itemize
- @item The @emph{Table of contents} should only be formatted if
- @code{@@contents} is present in the document.
- @item Similarly the @emph{Overview} should only appear if
- @code{@@shortcontents} or @code{@@summarycontents} is present.
- @item The configuration variables @code{contents} and
- @code{shortcontents} may be set to trigger the output of the
- respective elements.
- @item If @code{INLINECONTENTS} is set, the @emph{Table of contents} and
- @emph{Overview} elements are directly included within the document,
- rather than as separate pages (@pxref{Contents and Overview Elements
- Customization}).
- @item When generating HTML, the @emph{Footnotes page} should only
- be present if the footnotes appear on a separate page (@pxref{Footnote
- Styles}). However, a footnote element is present if the document is
- not split.
- @item The @emph{About page} shouldn't be present for documents
- consisting of only one sectioning element, or for monolithic documents
- without navigation information.
- @end itemize
- @end table
- It is common not to have anything but normal elements, especially in
- case of monolithic output. It is usually with HTML output that
- special elements may be present.
- The main component of elements is sections if @code{USE_SECTIONS} is
- set or @code{USE_NODES} is set to 0; conversely, the main component is
- nodes if @code{USE_NODES} is set or @code{USE_SECTIONS} is 0. If both
- configuration variables are undefined, heuristics are used, influenced
- by the presence of nodes or sectioning elements in the document: if
- there are no nodes, sectioning elements are preferred and vice versa.
-
- When sections are the main components of elements, ``isolated'' nodes
- not directly associated with a sectioning command are associated with
- the following sectioning command, while sectioning commands without
- nodes constitute an element. Conversely, when nodes are the main
- components of elements, isolated sections not associated with nodes
- are associated with the previous node, and isolated nodes are
- elements.
- @node Output Element Labels
- @subsection Output Element Labels
- @cindex Output element labels
- @cindex Element labels
- A variety of data items, called @dfn{element labels}, are associated
- with elements. They may be used in the formatting functions, and/or
- associated with a button (@pxref{Navigation Panel Button Specification}).
- Each element label has a name and a reference to the element they
- represent, when such an element exists. The element is either a
- global element (for example, the first element) or relative to the
- current element (for example, the next element). Such relative
- elements are determined with respect to the document structure defined
- by the section structuring commands (@code{@@chapter},
- @code{@@unnumbered}@dots{}) or by the nodes if the node pointers are
- specified on @code{@@node} lines or in menus, as explained above
- (@pxref{Two Paths}).
- Here is the list of element labels:
- @table @emph
- @item @samp{@ }
- An empty button.
- @item Top
- Top element. The associated name is @code{$TOP_HEADING} if that variable is
- defined. This variable is not set by default.
- @item About
- About (help) page.
- @item Contents
- Table of contents.
- @item Overview
- Overview: short table of contents.
- @item Footnotes
- Corresponds to the @code{Footnotes} element (@pxref{Output Elements
- Defined}).
- @item Index
- The first chapter with @code{@@printindex}. The associated name is
- @code{$INDEX_CHAPTER}, if the variable is set. This variable is not
- set by default.
- @item This
- The current element.
- @item Forward
- Next element in reading order.
- @item First
- First element in reading order.
- @item Last
- Last element in reading order.
- @item Back
- Previous element in reading order.
- @item FastForward
- Next chapter.
- @item FastBack
- Beginning of this chapter, or previous chapter if the element is a chapter.
- @item Next
- Next section at the same level.
- @item Prev
- Previous section at the same level.
- @item Up
- Up section.
- @item SectionNext
- Next in section reading order.
- @item SectionPrev
- Previous in section reading order.
- @item SectionUp
- Up in section reading order.
- @item NodeNext
- Next node.
- @item NodeForward
- Next node in node reading order.
- @item NodeBack
- Previous node in node reading order.
- @item NodePrev
- Previous node.
- @item NodeUp
- Up node.
- @end table
- The element labels may also be accessed when formatting elements.
- Four hashes are available, with their keys being the elements items,
- and their values as follows:
- @vtable @code
- @item %Texi2HTML::NAME
- The formatted element name.
- @item %Texi2HTML::HREF
- The element hypertext reference.
- @item %Texi2HTML::NODE
- The element node name.
- @item %Texi2HTML::NO_TEXI
- The element name after removal of texi commands.
- @end vtable
- For example, @code{$Texi2HTML::NAME@{'Back'@}} is the name of the
- previous element in reading order.
- @node Output Element Lines
- @subsection Output Element Lines
- @cindex Output elements lines
- @cindex Formatted lines, of output elements
- The following array references holds formatted lines relating to
- various output elements.
- @vtable @code
- @item $Texi2HTML::OVERVIEW
- Lines of the short table of contents. @xref{Contents and Overview
- Elements Customization}.
- @item $Texi2HTML::THIS_SECTION
- Lines of the current element.
- @item $Texi2HTML::TITLEPAGE
- The title page formatted. @xref{HTML Title Page Customization}.
- @item $Texi2HTML::TOC_LINES
- Lines of table of contents. @xref{Contents and Overview Elements
- Customization}.
- @end vtable
- @node Navigation Panel Customization
- @section Navigation Panel Customization
- @cindex Customization, of navigation panel
- @cindex Navigation panel, customization of
- The @dfn{navigation panel} is the line of links (and labels) that
- typically appears at the top of each node, so that users can easily
- get to the next node, the table of contents, and so on. It can be
- customized extensively.
- Considerable customization can done with straightforward variable
- assignments, especially special arrays. The configuration variables
- @code{VERTICAL_HEAD_NAVIGATION}, @code{ICONS}, @code{HEADERS},
- @code{HEADER_IN_TABLE}, @code{USE_ACCESSKEY} and @code{USE_REL_REV}
- may be used to change the the navigation panel formatting.
- @xref{@command{texi2any} Configuration Variables}.
- In the unusual case that this isn't enough, it is also possible to
- redefine the function doing the navigation panel formatting.
- @menu
- * Buttons: Navigation Panel Button Specification.
- * Functions: Navigation Panel Formatting Functions.
- @end menu
- @node Navigation Panel Button Specification
- @subsection Navigation Panel Button Specification
- @cindex Navigation panel button specification
- @cindex Button specification, navigation panel
- Several arrays and hashes enable precise control over the navigation
- panel buttons and their display. The following arrays determine the
- buttons present in the various navigation panels:
- @vtable @code
- @item @@SECTION_BUTTONS
- Specifies the navigation panel buttons present at the beginning of
- sectioning elements. If the output is split at nodes or sections,
- they are also used at the page footer, and in the case of section
- navigation being enabled, at the page header.
- @item @@SECTION_FOOTER_BUTTONS
- @itemx @@NODE_FOOTER_BUTTONS
- These arrays specify the navigation panel buttons present in the page
- footer when the output is split at sections or nodes, respectively.
- @vindex WORDS_IN_PAGE
- If @code{WORDS_IN_PAGE} is set and the output is split at nodes, these
- buttons are only included if the sectioning element text has more than
- @code{WORDS_IN_PAGE} words. The word counting is only approximate and
- includes punctuation marks, html elements, numbers. The default is to
- include the buttons for elements larger than 300 words.
- @item @@CHAPTER_BUTTONS
- Specifies the buttons appearing at the page footer if split at
- chapters, and at the page header if split at chapters and there is no
- section navigation.
- @item @@MISC_BUTTONS
- Specifies the buttons appearing at the beginning of special elements
- and, if the output is split, at the end of such elements.
- @item @@LINKS_BUTTONS
- Used for @code{<link>} elements if they are output in the headers.
- @item @@TOP_BUTTONS
- Specifies the buttons used in the top element (@pxref{Output Elements
- Defined}).
- @end vtable
- Each array specifies which buttons are included, and how they are
- displayed. Each array element is associated with a button of the
- navigation panel from left to right. The meaning of the array element
- values is the following:
- @table @emph
- @item function reference
- The function is called with one boolean argument, true if the
- navigation panel should be vertical. Should return the formatted
- button text.
- @item scalar reference
- The scalar value is printed. @xref{Output Element Labels}, for some
- scalars that may be useful here.
- @item array reference
- Here, the first array element should be a reference to a text string
- and the second element an element label. A link to the element
- associated with the element label with the given text is generated.
- For example, if the button array element is
- @example
- [ 'Next', \$Texi2HTML::NODE@{Next@} ]
- @end example
- @noindent
- Then the button will be a link to the next section with text
- @code{$Texi2HTML::NODE@{Next@}}.
- @item element label
- @vindex %NAVIGATION_TEXT
- @vindex init_out
- If icons are not used, the button is a link to the corresponding
- element whose text is defined by the value associated with the element
- label in the @code{%NAVIGATION_TEXT} hash, surrounded by @samp{[} and
- @samp{]}. If the element label is @samp{ }, the @samp{[} and @samp{]}
- are omitted. The elements of the @code{%NAVIGATION_TEXT} hash are
- defined dynamically, in the @code{init_out} function reference
- (@pxref{Output Initialization}).
- @vindex %ACTIVE_ICONS
- @vindex %BUTTONS_NAME
- @vindex %PASSIVE_ICONS
- @vindex %NAVIGATION_TEXT
- @cindex Icons, in navigation buttons
- If icons are used, the button is an image whose file is determined by
- the value associated with the element label in the
- @code{%ACTIVE_ICONS} hash if the link leads to an element, or in the
- @code{%PASSIVE_ICONS} hash if there is no element to link to. If
- there is a link to the element, the icon links to that element. The
- button name and button description are given as HTML attributes to
- have a textual description of the icon. The corresponding strings are
- in @code{%BUTTONS_NAME} for the button name and
- @code{%NAVIGATION_TEXT} for the description.
- @end table
- @vindex %BUTTONS_ACCESSKEY
- @cindex @code{accesskey} navigation
- If the configuration variable @code{USE_ACCESSKEY} is set, the
- @code{accesskey} attribute is used in navigation. The
- @code{%BUTTONS_ACCESSKEY} hash is then used for the @code{accesskey}
- attributes.
- @vindex %BUTTONS_REL@r{, for navigation}
- @cindex @code{rel} navigation
- Similarly, if the @code{USE_REL_REV} configuration variable is set,
- the @code{rel} attribute is used in navigation. In that case the
- @code{%BUTTONS_REL} hash is used for the @code{rel} attribute.
- @node Navigation Panel Formatting Functions
- @subsection Navigation Panel Formatting Functions
- @cindex Navigation panel formatting functions
- @cindex Formatting functions, for navigation panel
- In the unusual event that your needs are not met by changing the
- navigation buttons (see the previous section), you can completely
- control the formatting of navigation panels by redefining function
- references.
- The overall display of navigation panels is controlled via this
- function reference, @code{print_navigation}:
- @deftypefn {Function Reference} $navigation_text print_navigation @
- \@@buttons $vertical
- @var{\@@buttons} is an array reference holding the specification of
- the buttons for that navigation panel. @var{$vertical} is true if the
- navigation panel should be vertical. Returns the formatted navigation
- panel in @var{$navigation_text}.
- @end deftypefn
- The function reference @code{button_formatting} does the formatting of
- one button:
- @deftypefn {Function Reference} $formatted_button button_formatting @
- $button $vertical
- @var{$button} holds the specification of the button as explained
- above. @var{$vertical} is true if the navigation panel should be
- vertical. Returns the formatted result in @var{$formatted_button}.
- @end deftypefn
- By default, the function associated with @code{$print_head_navigation}
- formats the navigation panel for the page header.
- @deftypefn {Function Reference} $page_head print_head_navigation @
- $filehandle \@@buttons $first_in_page $previous_is_top \%element
- @itemize @bullet
- @item @var{$filehandle} is the opened filehandle the function should
- write to, if defined. If not defined the function should return the
- formatted page header as a string.
- @item @var{\@@buttons} is an array reference holding the specification
- of the buttons for the navigation panel.
- @item @var{$first_in_page} should be set if this is the first navigation
- panel in the page.
- @item @var{$previous_is_top} is true if the previous element is the
- top element.
- @item @var{\%element} is a hash reference with information about
- the element.
- @end itemize
- @end deftypefn
- Similarly, the function associated with @code{$print_foot_navigation}
- formats the navigation panel for the page footer.
- @deffn {Function Reference} print_foot_navigation @
- $filehandle \@@buttons $rule $print_navigation_panel \%element $maybe_in_page
- @itemize @bullet
- @item @var{$filehandle}, @var{\@@buttons}, and @var{\%element} are as above.
- @item @var{$rule} is a rule that may be used to separate the navigation panel
- from the preceding text.
- @item @var{$print_navigation_panel} is a boolean specifying
- whether the navigation panel itself should be printed.
- @item @var{$maybe_in_page} is set if the present footer is between
- regular elements and the top, or between regular elements and special
- elements, that is, not at the end of a file.
- @end itemize
- @end deffn
- @node Customizing HTML Page Layout
- @section Customizing HTML Page Layout
- @command{texi2any} provides for customization of the HTML page
- headers, footers, and the section layout in between. (These are
- unrelated to the headings and ``footings'' produced in @TeX{} output;
- @pxref{Headings,, Page Headings}.)
- @menu
- * Headers: Customizing HTML Page Headers.
- * Sections: Customizing HTML Section Layout.
- * Footers: Customizing HTML Page Footers.
- @end menu
- @node Customizing HTML Page Headers
- @subsection Customizing HTML Page Headers
- @cindex Customizing HTML page headers
- @cindex Headers, customizing for HTML
- The following three function references give full control over the
- page header formatting done at the top of each HTML output file. The
- @code{$print_page_head} function is called for all pages. After that,
- the @code{$print_chapter_header} function is called if the output is
- split at chapters, or the @code{$print_section_header} function if the
- split at sections.
- @deftypefn {Function Reference} print_page_head $filehandle
- @cindex @code{<body>} tag, outputting
- @var{$filehandle} is the opened filehandle to which the function
- should write. This function should print the page header, in HTML,
- including the @code{<body>} element.
- @end deftypefn
- @deffn {Function Reference} print_chapter_header $filehandle \%element
- @var{$filehandle} is the opened filehandle to which the function
- should write. @var{\%element} is a hash reference with information
- about the element. This function is called if the output is split
- at chapters, after @code{$print_page_head}.
- @end deffn
- @deffn {Function Reference} print_section_header $filehandle \%element
- @var{$filehandle} and @var{\%element} are as above. This function is
- called if the output is split at sections, after
- @code{$print_page_head}.
- @end deffn
- @vindex $EXTRA_HEAD
- @vindex $AFTER_BODY_OPEN
- @cindex @code{<head>} block, adding to
- You can define the variable @code{$EXTRA_HEAD} to add text within the
- @code{<head>} HTML element. Similarly, the value of
- @code{$AFTER_BODY_OPEN} is added just after @code{<body>} is output.
- These variables are empty by default.
- @vindex BODYTEXT@r{, in customization}
- @cindex @code{<body>} tag, attributes of
- The @code{<body>} element attributes may be set by defining the
- configuration variable @code{BODYTEXT}.
- @vindex ENCODING_NAME
- @cindex Encoding, in HTML output
- By default, the encoding name from @code{ENCODING_NAME} is used. If
- this variable is not defined, it is automatically determined
- (@pxref{Init File Encodings}).
- @vindex $DATE_IN_HEADER
- @cindex Date, in header
- A date is output in the header if @code{$DATE_IN_HEADER} is set.
- @cindex Document description, in HTML output
- The description from @code{@@documentdescription} (or a value set as a
- configuration variable) is used in the header
- (@pxref{documentdescription}).
- @vindex @@LINKS_BUTTONS@r{, in customization}
- @vindex %BUTTONS_REL@r{, in customization}
- @code{<link>} elements are used in the header if @code{$USE_LINKS} is
- set, in which case @code{@@LINKS_BUTTONS} determines which links are
- used and @code{%BUTTONS_REL} determines the link type associated with
- the @code{rel} attribute. @xref{Navigation Panel Button
- Specification}.
- @node Customizing HTML Section Layout
- @subsection Customizing HTML Section Layout
- @cindex Customizing HTML section layout
- @cindex Section layout, customizing for HTML
- The following function references are used for the formatting of
- sections in HTML output:
- @deffn {Function Reference} print_section $filehandle @
- $first_in_page $previous_is_top \%element
- @table @var
- @item $filehandle
- The opened filehandle to which the function should write.
- @item $first_in_page
- True if this section is the first section in the page.
- @item $previous_is_top
- True if this section is the section following the top section.
- @item \%element
- A hash reference with information about the element.
- @end table
- The function should print the current section contents.
- @end deffn
- @deffn {Function Reference} end_section $filehandle @
- $last_element_or_before_top \%element
- @var{$filehandle} and @var{\%element} are as above.
- @var{$last_element_or_before_top} is true if this section precedes the
- top element or is the last one in page, or before the special
- elements.
- @end deffn
- @node Customizing HTML Page Footers
- @subsection Customizing HTML Page Footers
- @cindex Customizing HTML page footers
- @cindex Footer, customizing for HTML
- The following function references give full control over the page
- footer formatting done at the bottom of each HTML output file. The
- @code{$print_chapter_footer} function is called if the output is split
- at chapters, or the @code{$print_section_footer} footer is called if
- split at sections. After that, the @code{$print_page_foot} function
- is called.
- @deffn {Function Reference} print_page_foot $filehandle
- @cindex @code{</body>} tag, outputting
- @var{$filehandle} is the opened filehandle to which the function
- should write. This function should print the page footer, including
- the @code{</body>} element.
- @end deffn
- @deffn {Function Reference} print_chapter_footer $filehandle \%element
- @var{$filehandle} is the opened filehandle to which the function
- should write. @var{\%element} is a reference to a hash with
- information about the element. This function is called if the
- output is split at chapters, before @code{$print_page_foot}.
- @end deffn
- @deffn {Function Reference} print_section_footer $filehandle \%element
- @var{$filehandle} and @var{\%element} are as above.
- This function is called if the output is split at sections, before
- @code{$print_page_foot}.
- @end deffn
- @vindex $PRE_BODY_CLOSE
- You can define the variable @code{$PRE_BODY_CLOSE} to add text just
- before the HTML @code{</body>} element. Nothing is added by default.
- @vindex $PROGRAM_NAME_IN_FOOTER
- If @code{$PROGRAM_NAME_IN_FOOTER} is set, the date and name of the
- program that generated the output are output in the footer.
- @node Customizing Special Elements
- @section Customizing Special Elements
- Various function references allow you to customize both the content
- and layout of the HTML output of the special elements (@pxref{Output
- Elements Defined}).
- @menu
- * Content: Customizing Content of Special Elements.
- * Layout: Customizing Layout of Special Elements.
- @end menu
- @node Customizing Content of Special Elements
- @subsection Customizing Content of Special Elements
- @cindex Customizing special elements content
- @cindex Special elements content, customizing
- @cindex Content of special elements, customizing
- The label for the special elements (@pxref{Output Elements Defined}),
- except for the top element, is formatted according to the function
- reference @code{$misc_element_label}:
- @deftypefn {Function Reference} $misc_element_label misc_element_label @
- $identifier $page_name
- @var{$identifier} is the identifier associated with the special
- element. @var{$page_name} is the special element name. The function
- should return a label that can be used for references to the special
- element.
- @end deftypefn
- The following sections describe the details for the special elements
- other than footnotes, which are formatted when the @code{@@footnote}
- command is expanded.
- @c oldapi (@pxref{Customizing HTML Footnotes}).
- @menu
- * Top Element Customization::
- * Contents and Overview Elements Customization::
- * About Element Customization::
- * HTML Title Page Customization::
- @end menu
- @node Top Element Customization
- @subsubsection Top Element Customization
- @cindex Customization of top element
- @cindex Top element, customizing
- The top element formatting is controlled by three functions which also
- controls the layout of the top element page or section. The associated
- function references are:
- @deffn {Function Reference} print_Top_header $filehandle $begin_page
- @var{$filehandle} is the opened filehandle to which the function
- should write. @var{$begin_page} is true if the element is the first
- in a page. This function should begin the top element. At the time
- this function is called, the top element text has not been parsed.
- @end deffn
- @deffn {Function Reference} print_Top $filehandle $has_top_heading \%element
- @var{$filehandle} is the opened filehandle to which the function
- should write. @var{$has_top_heading} is true if there is a
- @code{@@heading} command or @code{@@titlefont} command appearing in
- the top element text. @var{\%element} is a hash reference with
- information about the element. This function should be used to format
- the top element text and navigation panel.
- @end deffn
- @deffn {Function Reference} print_Top_footer $filehandle $end_page \%element
- @var{$filehandle} and @var{\%element} are as above. @var{$end_page}
- is true if the element is the last in a page. This function should
- end the top element.
- @end deffn
- @node Contents and Overview Elements Customization
- @subsubsection Contents and Overview Elements Customization
- @cindex Customization of tables of contents elements
- @cindex Contents, customizing elements
- @cindex Short table of contents element, customizing
- @cindex Overview element, customizing
- To begin with, the table of contents and short table of contents can
- be made to appear at either the beginning (the default) or end of the
- document.
- @vindex INLINE_CONTENTS
- By default, the configuration variable
- @code{INLINE_CONTENTS} is set, specifying that the tables of contents
- are not output as separate elements but instead where the
- corresponding @@-command, for example @code{@@contents}, is set. This
- behavior is consistent with @command{texi2dvi}.
- If @code{INLINE_CONTENTS} is not set, the tables of contents are
- output in separate elements, either at the end of the document if the
- output is unsplit or in separate files if not. This makes sense
- when menus are used for navigation.
- @txicmdindex @@setcontentsaftertitlepage @r{and HTML output}
- If @code{@@setcontentsaftertitlepage} appears in the document, even if
- @code{INLINE_CONTENTS} is set, the tables of contents are merged into
- the title material, which in turn is not output by default;
- @pxref{HTML Title Page Customization}.
- Next, the following variables allow for some useful control of the
- formatting of table of contents and short table of contents:
- @vtable @code
- @item $BEFORE_TOC_LINES
- Inserted before the table of contents text.
- @item $AFTER_TOC_LINES
- Inserted after the table of contents text.
- @item $BEFORE_OVERVIEW
- Inserted before the short table of contents text.
- @item $AFTER_OVERVIEW
- Inserted after the short table of contents text.
- @item $NO_BULLET_LIST_STYLE
- Expected to contain the CSS style used for the list style when there
- is no bullet.
- @item $NO_BULLET_LIST_CLASS
- Used for the class associated with the $NO_BULLET_LIST_STYLE CSS
- style.
- @item $NO_BULLET_LIST_ATTRIBUTE
- Used as attribute text for the list element when there is no bullet.
- It is used in the tables of contents if they are formatted as a list.
- @end vtable
- Finally, the following function reference provides even more control
- over the table of contents and short table of contents formatting
- reference:
- @deffn {Function Reference} toc_body \@@elements
- @var{\@@elements} is an array reference containing information about
- all the elements of the document. Each entry of this array is a hash
- reference, useful keys of which are as follows:
- @table @code
- @item top
- True if the element is the top element.
- @item index_page
- True if the element is an index page added because of index splitting.
- @item toc_level
- Level of the element in the table of contents: the highest level is 1
- for the top element and for chapters, appendices, etc., 2 for
- sections, unnumbered sections, etc., and so on.
- @item tocid
- Label to be used for references linking to this element within the
- table of contents.
- @item file
- The file containing the element, part of the link if the output is
- split.
- @item text
- Text of the element, with section number,
- @item name
- Text of the element, without section number.
- @end table
- @vindex $Texi2HTML::TOC_LINES@r{, in customization}
- @vindex $Texi2HTML::OVERVIEW@r{, in customization}
- This function doesn't return anything. Instead, it should fill the
- array corresponding to the @code{$Texi2HTML::TOC_LINES} and
- @code{$Texi2HTML::OVERVIEW} references with the text for the
- respective tables of contents. @xref{Output Element Lines}.
- @end deffn
- By default, @code{$toc_body} calls two specialized function
- references, one for the contents and the other for the short contents.
- @deftypefn {Function Reference} \@@contents_lines contents @
- \@@elements $contents_file
- @var{\@@elements} is an array reference as above.
- @var{$contents_file} is the name of the file containing the table of
- contents. This function should return the formatted table of contents
- lines.
- @end deftypefn
- @deftypefn {Function Reference} \@@shortcontents_lines shortcontents @
- \@@elements $shortcontents_file
- @var{\@@elements} is an array reference as above.
- @var{$shortcontents_file} is the name of the file containing the table
- of contents. This function should return the formatted overview
- (short table of contents) lines.
- @end deftypefn
- Another function reference is used to add a heading and a reference,
- to be used with @code{INLINE_CONTENTS} or merged into the title
- material. Its output is not used when the tables of contents are
- separate elements.
- @deftypefn {Function Reference} \@@inline_contents_lines inline_contents @
- $filehandle $command \%element \@@elements
- Return a reference to an array holding the lines containing the
- contents, heading and reference. @var{$filehandle} is a reference to
- the currently opened file if the function is called because a
- @code{@@contents} or @code{@@shortcontents} command was encountered,
- and @code{undef} otherwise. @var{$command} is either @samp{contents}
- or @samp{shortcontents}. @var{\%element} is a reference to a hash
- holding information about the element where the contents appeared.
- Relevant keys are:
- @table @code
- @item target
- The identifier associated with the table of contents, used
- to link to the table of contents.
- @item id
- The identifier associated with the element, used to do labels.
- Usually but not necessarily the same as @code{target}.
- @item file
- The file name containing the table of contents.
- @end table
- @var{\@@elements} is an array reference as above.
- @end deftypefn
- @node About Element Customization
- @subsubsection About Element Customization
- @cindex Customization of about element
- @cindex About element, customizing
- The default About element has an explanation of the buttons used in
- the document (controlled by @code{@@SECTION_BUTTONS};
- @pxref{Navigation Panel Button Specification}) and an example showing
- the button targets. The formatting of this text may be influenced by
- the following:
- @table @code
- @item $PRE_ABOUT
- @itemx $AFTER_ABOUT
- @vindex $PRE_ABOUT
- @vindex $AFTER_ABOUT
- Each of these variables may be a scalar or a function reference. If a
- scalar, the value is used. If a function reference, it is called and
- the returned text is used. The text is added before or after the main
- About text, respectively.
- @item %BUTTONS_GOTO
- @vindex %BUTTONS_GOTO
- The keys of this hash are element labels (@pxref{Output Element
- Labels}), and the values are the text associated with each element
- label in the About text. By default, the elements of the hash are
- defined dynamically in the @code{init_out} function reference
- (@pxref{Output Initialization}).
- @item %BUTTONS_EXAMPLE
- @vindex %BUTTONS_EXAMPLE
- Like @code{%BUTTONS_GOTO}, except the values are the text from the
- About example, typically a section number.
- @end table
- If the above is not enough and you want to control exactly the
- formatting of the about text, the following function reference may be
- overridden:
- @deftypefn {Function Reference} $about_text about_body
- This function returns the about text.
- @end deftypefn
- @node HTML Title Page Customization
- @subsubsection HTML Title Page Customization
- @vindex $Texi2HTML::TITLEPAGE
- The HTML title page is first formatted using the text appearing in the
- @code{@@titlepage} section, and put in the
- @code{$Texi2HTML::TITLEPAGE} array reference (@pxref{Output Element
- Lines}). More formatting can be done using the following function
- reference:
- @deffn {Function Reference} titlepage \@@titlepage_lines @
- $text $comment $simple_text
- @var{\@@titlepage_lines} is an array containing the Texinfo lines in
- @code{@@titlepage}. @var{$text} is the text appearing in
- @code{@@titlepage}, formatted. @var{$comment} is the text with
- Texinfo markup removed, thus should be simple plain text.
- @var{$simple_text} is the text formatted in a string context with
- minimal formatting but no elements. This function should complete
- @code{$Texi2HTML::TITLEPAGE}.
- @end deffn
- By default, this function outputs the title if there is no title page,
- and adds the table of contents and short table of contents if they are
- to be output and @code{@@setcontentsaftertitlepage} or
- @code{@@setshortcontentsaftertitlepage} appear in the document
- (@pxref{Contents and Overview Elements Customization}).
- @vindex USE_TITLEPAGE_FOR_TITLE
- @vindex SHOW_TITLE
- The resulting title page output is used in the document if
- @code{USE_TITLEPAGE_FOR_TITLE} and @code{SHOW_TITLE} are set.
- @node Customizing Layout of Special Elements
- @subsection Customizing Layout of Special Elements
- @cindex Customizing special elements layout
- @cindex Special elements layout, customizing
- @cindex Layout of special elements, customizing
- The formatting of each of the special elements is controlled by a
- function, as listed in the following table:
- @ftable @code
- @item print_Top
- @item print_Top_header
- @item print_Top_footer
- Formatting of the top element. It is also used for the formatting of
- the top element text (@pxref{Top Element Customization}).
- @item print_Toc
- Formatting of the table of contents element.
- @item print_Overview
- Formatting of the short table of contents element.
- @item print_About
- Formatting of about (help) element.
- @item print_Footnotes
- Formatting of the footnote elements.
- @end ftable
- @findex print_misc
- @findex print_misc_header
- @findex print_misc_footer
- In the default case, @code{$print_Top} calls @code{$print_Top_header}
- for the header and @code{$print_Top_footer} for the footer of top
- element. All the other functions call @code{$print_misc} which in
- turn calls @code{$print_misc_header} for the headers and
- @code{$print_misc_footer} for the footers.
- @node Customizing Output-Related Names
- @section Customizing Output-Related Names
- It is possible to control both output file names and target
- identifiers in detail.
- @menu
- * File: Customizing Output File Names.
- * Target: Customizing Output Target Names.
- @end menu
- @node Customizing Output File Names
- @subsection Customizing Output File Names
- @cindex Customizing output file names
- @cindex Output file names, customizing
- @vindex PREFIX
- @vindex SUBDIR
- @vindex EXTENSION
- It is possible to specify the output file names with more control than
- merely the command line option @option{--output} (@pxref{Invoking
- texi2any}). The @code{PREFIX} configuration variable overrides the
- base name of the file given by @code{@@setfilename} or the file name
- and should not contain any directory components. To alter
- intermediate directories, use the @code{SUBDIR} configuration
- variable. Finally, The extension may also be overriden by the
- configuration variable @code{EXTENSION}. This variable should be
- @code{undef} if no extension is to be added.
- @vindex TOP_FILE
- @vindex TOC_FILE
- Furthermore, the configuration variables @code{TOP_FILE} and
- @code{TOC_FILE} override the output file name for the top and contents
- elements.
- @vindex NODE_FILES
- Two function references enable further customization. The first,
- @code{node_file_name}, is especially useful when @code{NODE_FILES} is
- true; it is used to customize the node file name.
- @deftypefn {Function Reference} $node_file node_file_name \%node $type
- @var{\%node} is a hash reference with the following interesting keys
- (there are many others): the string @code{texi}, for the Texinfo node
- name, and the boolean @code{with_section}, true if associated with a
- section. @var{$type} is @code{top} if the node is the top element.
- The function should return the node file name (@var{$node_file}).
- @end deftypefn
- The other function reference, @code{element_file_name}, is used to
- customize the file names associated with each element, and the name of
- the file associated with the special elements (@pxref{Output Elements
- Defined}).
- @deftypefn {Function Reference} $file element_file_name @
- \%element $type $txi_file_name
- @var{\%element} is undefined for the special elements (@pxref{Output
- Elements Defined}), Otherwise, it is a hash reference with the
- following interesting keys (there are many others):
- @table @code
- @item texi
- The Texinfo element name.
- @item number
- The number associated with a section.
- @item doc_nr
- A number incremented whenever a new file should begin, based on how the
- document is split (@pxref{Splitting Output}).
- @item text
- The element text.
- @item name
- The element text without section number.
- @end table
- @var{$type} is empty for normal elements. For the top element it is
- @samp{top}; for the table of contents it is @samp{toc}; for the
- overview it is @samp{stoc}; for footnotes it is @samp{foot}; and for
- the about element it is @samp{about}.
- @vindex FRAMES@r{, customizing output names of}
- If frames are used, due to the @code{FRAMES} configuration variable,
- the function reference is also called for @samp{frame}, the frame file
- name, and @samp{toc_frame}, the table of contents frame file name.
- @var{$txi_file_name} is the basename of the Texinfo manual.
- The function should return the file name for the element (@var{$file}).
- @end deftypefn
- @node Customizing Output Target Names
- @subsection Customizing Output Target Names
- @cindex Customizing output target names
- @cindex Target names, customizing
- @cindex Id names, customizing
- Similar to file names, so-called target and id names may be set. The
- @dfn{id} is placed where the item is located, while the @dfn{target}
- is used to construct references to that item. Usually, these should
- be the same.
- @c xx, but not always, for example in the default case, the
- @c xx target for a section is the node id.
- The following function reference is for target items (nodes, anchors,
- floats):
- @deftypefn {Function Reference} {($target,$id)} node_target_name @
- \%node $default_target $default_id $type
- @var{\%node} is the same as in the @code{node_file_name} function
- reference in the previous section. @var{$default_target} is the
- target that has been already set (it is also in
- @code{$node->@{'target'@}}), and @var{$default_id} is, similarly, the
- id already set. @var{$type} is @code{top} if the node is the top
- node. The function should return a two-element list of the target and
- id names.
- @end deftypefn
- For elements (@pxref{Output Elements Defined}), the function
- reference is:
- @deftypefn {Function Reference} {($target,$id)} element_target_name @
- \%element $default_target $default_id
- @var{\%element} is the same as in @code{element_file_name} in the
- previous section, and @var{$default_target}, @var{$default_id}, and
- the return value, are as above.
- @end deftypefn
- The file, target, and id of ``placed'' items, namely floats,
- footnotes, index entries, anchors, contents, shortcontents and
- headings, may also be set, although the default should be suitable.
- Nevertheless, the following function reference can be used:
- @deftypefn {Function Reference} {($target, $id, $file)} @
- placed_target_file_name \%placed_item \%element @
- $default_target $default_id $default_file $context
- @var{\%placed_item} is a hash reference describing the placed item, as
- in the above, likewise @var{\%element}. @var{$default_file},
- @var{default_id} and @var{$default_target} are the file, id and target
- already set. @var{$context} describes the context; this is set to
- @samp{footnotes} if in footnotes, to @samp{no_associated_element} if
- the placed item is outside of any element (e.g., @code{@@titlepage},
- @code{@@copying}), and is otherwise empty.
- @end deftypefn
- @vindex %misc_pages_targets
- For special elements, the @code{%misc_pages_targets} hash is used to
- set the target and id. The possibilities for the keys are
- @samp{Overview}, @samp{Contents}, @samp{Footnotes} and @samp{About}.
- @node Customizing HTML Headings
- @section Customizing HTML Headings
- @cindex Headings, customizing HTML
- A function reference may be defined to do the formatting of the heading
- text (usually changing font and underlining):
- @deftypefn {Function Reference} $heading_text_formatted heading_text @
- $command $text $level
- @var{$command} is the @@-command name associated with the heading.
- @var{$text} is the heading @@-command argument, formatted.
- @var{$level} is the level of the heading in the document tree.
- @end deftypefn
- @findex heading_text_preformatted
- A similar function reference is available for preformatted context,
- @code{heading_text_preformatted}.
- A function controls the formatting of element headings,
- @code{heading}. By default its main job is to determine whether the
- @code{heading_text} function reference should be called. Normally,
- heading text is not output for a node on its, only for any associated
- sectioning element (@pxref{Two Paths}).
- @deftypefn {Function Reference} $heading_text heading \%element $command @
- $command_texi_arg $formatted_arg $in_preformatted $one_section @
- $element_heading
- @table @var
- @item \%element
- A hash reference representing the sectioning element. The
- following keys are of interest:
- @table @code
- @item text
- The heading text.
- @item text_nonumber
- The heading text without section number.
- @item node
- True if the sectioning element is a node without an associated
- structuring command.
- @item level
- The level of the element in the document tree: @samp{0} for
- @code{@@top}, @samp{1} for @code{@@chapter}, and so on.
- @item tag_level
- The sectioning element name, with @code{@@raisesections} and
- @code{@@lowersections} taken into account.
- @item top
- True if it is the top element.
- @end table
- @item $command
- The heading @@-command.
- @item $command_texi_arg
- The argument of the @@-command, unformatted.
- @item $formatted_arg
- The argument of the @@-command, formatted.
- @item $in_preformatted
- True if in preformatted environment.
- @item $one_section
- True if there is only one section.
- @item $element_heading
- True if the heading is the main component of the element.
- @end table
- @end deftypefn
- It is also possible to customize the heading text with section number
- with this function reference (called for headings and nodes):
- @deftypefn {Function Reference} $result_texi heading_texi @
- $heading_command $heading $number
- @var{$heading_command} is the sectioning @@-command of that heading.
- @var{$heading} is the Texinfo input for that heading. @var{$number}
- is the heading number classically-computed with dots between numbers,
- and letters for top-level appendix numbering. This function should
- return the Texinfo text corresponding with the numbered heading.
- @end deftypefn
- The label associated with the heading that can appear before the
- heading itself and even before the navigation panel can be customized
- with this function reference:
- @deftypefn {Function Reference} $element_label element_label @
- $identifier \%element $command $unformatted_line
- @var{$identifier} is the identifier associated with the heading.
- @var{\%element} is the same as above. @var{$command} is the
- @@-command appearing on the line, and @var{$unformatted_line} is the
- line, unformatted.
- @end deftypefn
- Additionally, for @code{@@node} and sectioning @@-commands, the
- formatting of the label, navigation panel and heading is controlled
- by:
- @deftypefn {Function Reference} $element_heading_text element_heading @
- \%element $command $command_texi_arg $formatted_arg @
- $in_preformatted $one_section $element_heading $first_in_page @
- $is_top $previous_is_top $unformatted_line $element_id $new_element
- @var{\%element}, @var{$command}, @var{$command_texi_arg},
- @var{$formatted_arg}, @var{$in_preformatted}, @var{$one_section}, and
- @var{$element_heading} are as above. For the rest:
- @table @var
- @item $first_in_page
- True if this is the first heading in a page.
- @item $is_top
- True if the heading is considered as a top element heading.
- @item $previous_is_top
- True if the previous element was a top element.
- @item $unformatted_line
- Holds the whole line, unformatted.
- @item $element_id
- The id of the heading.
- @item $new_element
- True if the heading is the first of an element.
- @end table
- @end deftypefn
- @node Customizing Indices
- @section Customizing Indices
- @cindex Customizing indices
- @cindex Indices, customizing
- @vindex IDX_SUMMARY
- To do something special with index entries outside of the Texinfo
- source document (@pxref{Indices}), you should first set the
- configuration variable @code{IDX_SUMMARY} true. After that, various
- function references will be called for each non-empty index: one for
- initialization, one for each index entry, and one for finalization.
- Another way to work with the index (and tables of contents) entries is
- to specify the @option{--internal-links} option and use the resulting
- table; @pxref{Invoking texi2any}.
- @deffn {Function Reference} index_summary_file_begin $index_name @
- $is_printed $manual_name
- This function is called once for each non-empty index used in the
- document, before any calls to @code{index_summary_file_entry}.
- @table @var
- @item $index_name
- The two-letter name of the index.
- @item $is_printed
- True if this index has a corresponding @code{@@printindex} command.
- @item $manual_name
- The manual basename.
- @end table
- @end deffn
- @deffn {Function Reference} index_summary_file_entry $index_name @
- $entry_text $entry_reference $formatted_entry $texi_entry @
- $entry_element_reference $entry_element_header $is_printed $manual_name
- This function is called for each entry of an index, in sorted order.
- The sorting happens regardless of whether the index is actually printed.
- @table @var
- @item $index_name
- The two-letter name of the index.
- @item $entry_text
- @itemx $formatted_entry
- @itemx $texi_entry
- The entry in plain text, formatted, and original source, respectively.
- @item $entry_reference
- The reference used for the index entry, in the form @samp{file#id}.
- @item $entry_element_reference
- The reference to the beginning of the element containing the index
- entry, also in the form @samp{file#id} (@pxref{Output Elements
- Defined}).
- @item $entry_element_header
- The formatted header of the element containing the index entry.
- @item $is_printed
- True if this index has a corresponding @code{@@printindex} command.
- @item $manual_name
- The manual basename.
- @end table
- @end deffn
- @deffn {Function Reference} index_summary_file_end $index_name $is_printed @
- $manual_name
- This function is called once for each non-empty index used in the
- document, after all calls to @code{index_summary_file_entry}. The
- arguments are the same as for @code{index_summary_file_begin}, above.
- @end deffn
- @node Customizing CSS
- @section Customizing the CSS lines
- @cindex Customizing CSS
- @cindex CSS customization
- @vindex %css_map
- @vindex INLINE_CSS
- @vindex NO_CSS
- The @code{NO_CSS} configuration option turns off CSS support. Instead
- of CSS lines being output at the beginning of the document, they may
- be added to HTML attributes, if @code{INLINE_CSS} is set.
- The configuration variable holds the CSS specification lines when CSS
- is not inline. It is possible to modify the CSS lines by modifying
- the entries or adding to the @code{%css_map} hash. Each key is a CSS
- selector, the corresponding value is a style string.
- It is also possible to change completely how CSS lines are generated
- by redefining the following function reference:
- @deffn {Function Reference} css_lines \@@import_lines \@@rule_lines
- This function should set the variable @code{CSS_LINES}.
- @var{\@@import_lines} is an array reference holding the
- @code{@@import} lines of the files specified with
- @option{--include-css}. @var{\@@rule_lines} is an array reference
- holding the CSS lines of those. files.
- @end deffn
- * Customizing HTML Basic Commands:: Commands with no arguments, images, etc.
- * Customizing HTML References:: @code{@@xref}, external node pointers, etc.
- * Customizing HTML Footnotes:: Footnotes.
- * Customizing HTML Block Commands:: Environments.
- * Paragraph and preformatted region::
- * Lists tables and definitions formatting::
- * Menus indices and floats formatting::
- * Handling special regions::
- * Other and unknown commands::
- @node Customizing HTML Basic Commands
- @section Customizing HTML Basic Commands
- This section describes customizing the HTML output for the basic
- Texinfo commands used within the running text.
- @menu
- * Argless: HTML Customization for Commands Without Arguments.
- * @@-Colon: HTML Customization After @@-Colon.
- * Simple: HTML Customization for Simple Commands. Indicators, accents, etc.
- * Anchors: HTML Customization for Anchors.
- * Images: HTML Customization for Images.
- * sp: HTML Customization for @code{sp}.
- * Abbrs: HTML Customization for Abbreviations. @code{@@acronym}, @code{@@abbr}.
- * Text: HTML Customization for Text Sequences. @code{-- --- `` ''}, etc.
- * Title: HTML Customization for Title Commands. @code{@@title}, etc.
- @end menu
- @node HTML Customization for Commands Without Arguments
- @subsection HTML Customization for Commands Without Arguments
- @cindex HTML customization for commands without arguments
- @cindex Commands without arguments, customizing HTML for
- @cindex Insertion commands, customizing HTML for
- These commands include those whose names are a single nonletter
- character, such as @code{@@@@}, and those with a normal alphabetic
- name but whose braces should be empty, such as @code{@@TeX@{@}} and
- @code{@@AA@{@}}.
- Each of these categories of commands have associated hashes for each
- expansion context: normal, preformatted, string, and math (@pxref{Init
- File Expansion Contexts}). The keys of each hash are the command
- names, the associated value is the text replacing the command. In
- math context, if a command is not a key of these hashes, the defaults
- for the command are used.
- @vindex %simple_map
- @vindex %things_map
- @vindex %simple_map_pre
- @vindex %pre_map
- @vindex %simple_map_texi
- @vindex %texi_map
- @vindex %simple_map_math
- @vindex %math_map
- The hashes are:
- @multitable {preformatted} {one nonlettered character} {empty braces}
- @headitem command type @tab one nonlettered character @tab empty braces
- @item normal @tab @code{%simple_map} @tab @code{%things_map}
- @item preformatted @tab @code{%simple_map_pre} @tab @code{%pre_map}
- @item string @tab @code{%simple_map_texi} @tab @code{%texi_map}
- @item math @tab @code{%simple_map_math} @tab @code{%math_map}
- @end multitable
- To change the formatting of a command, change the associated value in
- the desired hash. For example, if you want @code{­} to be output
- for @code{@@-} in normal and preformatted context, write this in your
- init file:
- @example
- $simple_map@{'-'@} = '­';
- $simple_map_pre@{'-'@} = '­';
- @end example
- @vindex %sorting_things_map
- An additional hash is used preferentially when sorting indices,
- overriding @code{%texi_map} entries: @code{%sorting_things_map}.
- For better control, function references are available, although they
- are not used in string context. @code{simple_command} is for
- formatting of the single-nonletter @@-commands:
- @deftypefn {Function Reference} $formatted_command simple_command
- @ $command $in_preformatted $in_math $line_nr \%state
- @var{$command} is the @@-command name. @var{$in_preformatted} is true
- if in a preformatted region. @var{$in_math} is true if in math.
- @var{$line_nr} is an opaque structure containing information about the
- line number of the @@-command. @var{\%state} holds information about
- the current context.
- @end deftypefn
- For @@-commands with empty brace arguments, @code{thing_command} may
- be redefined:
- @deftypefn {Function Reference} $formatted_command thing_command
- @ $command $text $in_preformatted $in_math $line_nr \%state
- @var{$text} is the formatted text appearing in the @@-command. It is
- invalid Texinfo to have anything other than the empty string there.
- @var{$command}, @var{$in_preformatted}, @var{$in_math},
- @var{$line_nr}, and @var{\%state} are as above.
- @end deftypefn
- @node HTML Customization After @@-Colon
- @subsection HTML Customization After @@-Colon
- @cindex HTML customization after @code{@@:}
- @cindex Punctuation after @code{@@:}, customizing HTML for
- @cindex Sentence punctuation, customizing HTML for
- @vindex %colon_command_punctuation_characters
- The formatting of a punctuation character followed by @code{@@:} is
- determined by the hash @code{%colon_command_punctuation_characters}.
- If a @code{@@:} command is preceded by a character in this hash, it is
- replaced by the associated value. By default, the associated value is
- also the character, so this leaves the punctuation character
- unmodified.
- The following function reference may be redefined to handle characters
- that are in @code{%colon_command_punctuation_characters}:
- @deftypefn {Function Reference} $punctuation colon_command $character
- @var{$character} is a character appearing in
- @code{%colon_command_punctuation_characters} and preceding an
- @code{@@:} command. By default, the associated value in
- @code{%colon_command_punctuation_characters} is returned.
- @end deftypefn
- @node HTML Customization for Simple Commands
- @subsection HTML Customization for Simple Commands
- @cindex HTML customization for simple commands
- @cindex Simple commands, customizing HTML for
- @cindex Style commands, customizing HTML for
- @cindex Accent commands, customizing HTML for
- @vindex %style_map
- @vindex %style_map_pre
- @vindex %style_map_texi
- @vindex %style_map_math
- The formatting of the output produced by ``indicator'' and font
- commands (e.g., @code{@@code}, @code{@@t}, @code{@@titlefont}), the
- accent-related commands with arguments (e.g., @code{@@'},
- @code{@@udotaccent}, @code{@@dotless}) and other simple commands with
- arguments (e.g., @code{@@w}, @code{@@uref}, @code{@@math},
- @code{@@asis}) is controlled by the following hashes by default
- (@pxref{Init File Expansion Contexts}):
- @table @code
- @item %style_map
- In normal context.
- @item %style_map_pre
- In preformatted context.
- @item %style_map_texi
- In string context.
- @item %style_map_math
- Preferentially in math context, falling back to other hashes if not found.
- @end table
- If defined, a function reference is called at the @@-command opening:
- @deffn {Function Reference} begin_style_texi $command \%state \@@stack @
- $real_style_or_accent $remove_texi
- @table @var
- @item $command
- The @@-command name.
- @item \%state
- Information about the current context.
- @item \@@stack
- An opaque variable.
- @item $real_style_or_accent
- Set if the command is an accent or a font command.
- @item $remove_texi
- Set if in a context where output is simple text.
- @end table
- @end deffn
- @vindex %accent_map
- The nonlettered accent commands where the following character is taken
- as the argument (e.g., @code{@@`a}) should be keys of the
- @code{%accent_map} hash, even if no value is associated.
- Command with braces may be handled differently; @pxref{Init File
- Formatting of Commands}. For example, this is used for @code{@@math}
- if @LaTeX{}2HTML is used.
- The key of the hashes are the command names. The values may be
- strings or hash references. The hash reference interface is the only
- one described in this manual, the other is retained primarily for
- backward compatibility. You can also define your own interface.
- @menu
- * Hash Interface for Simple HTML Customization::
- * Custom Interface for Simple HTML Customization::
- @end menu
- @node Hash Interface for Simple HTML Customization
- @subsubsection Hash Interface for Simple HTML Customization
- @cindex Hash interface for simple HTML customization
- @cindex Interface for simple HTML customization, hash
- The keys of the hashes given above are Texinfo command names. The
- values determine how the command argument is formatted. Each value is
- a hash reference. In this value hash, each key corresponds with a
- type of information for formatting, and the value is the corresponding
- data.
- Here's an example:
- @example
- $style_map@{'command'@} = @{
- 'args' => ['code'],
- 'inline_attribute' => 'code',
- @};
- @end example
- Here, the arguments for @code{@@command} are interpreted as specified
- by the values associated with the @samp{args} key, namely a code
- argument; and the @code{inline_attribute} associated with that command
- is @samp{<code>}.
- Here is a list of the possible keys in the value hashes:
- @table @samp
- @item args
- @anchor{Reference Hash Args}
- The value associated is an array reference. Each element of the array
- defines how the corresponding argument (separated by @samp{,} in the
- Texinfo input) for the @@-command should be formatted. The
- possibilities are:
- @table @code
- @item normal
- for normal text,
- @item code
- for text where @samp{---}, @samp{--}, @samp{''}, and @samp{``} should
- be kept as-is, and
- @item keep
- if the input should be kept entirely as-is, with no interpretation of
- any @@-commands.
- @end table
- The default is @samp{['normal']} for one normally-interpreted argument.
- For example, we specify
- @example
- $style_map@{'email'@}->@{'args'@} = ['code', 'normal'];
- @end example
- because @samp{---}, @samp{--}, @samp{''} and @samp{``} should be kept
- as-is in the first argument of @code{@@email}
- (@pxref{email,, @code{@@email}}).
- @item attribute
- If the associated value is a word, it is considered to be an XML
- element name, and the argument is enclosed between the element opening
- and the element closing. For example, if the value is @code{elem}, the
- resulting HTML is @code{<elem>@var{arg}</elem>}.
- If the text is a word followed by some text, the word is interpreted
- as above, and the text is considered to be the attributes text of the
- element. Thus @code{elem class="elem"} leads to @code{<elem
- class="elem">@var{arg}</elem>}. This only works if there is only one
- argument.
- @item inline_attribute
- Like @code{attribute}, except that it is closed at each paragraph end
- and reopened at each beginning of paragraph. This is more often used
- than @samp{attribute} since it allows to have well-formed HTML and
- XML.
- @item inline_begin
- The associated value is added in front of the text and each time a
- paragraph is restarted while within the command.
- @item inline_end
- The associated value is added after the text and each time a paragraph
- is ended while within the command.
- @item begin
- The associated value is added in front of the text.
- @item end
- The associated value is added after the text.
- @item quotes
- If the corresponding value is true, the result is enclosed in quotes
- associated with configuration variables @code{OPEN_QUOTE_SYMBOL} and
- @code{CLOSE_QUOTE_SYMBOL}; the defaults depend on the output format
- but fall back to @samp{`} and @samp{'}.
- @item function
- The corresponding value should be a function reference, which is
- called with the following arguments:
- @table @code
- @item $command
- The @@-command name.
- @item \@@args
- An array reference containing the arguments of the @@-command.
- @item \@@command_stack
- An array reference with the names of the @@-commands containing the
- @@-command being formatted, latest on top.
- @item \%state
- A hash reference containing context information.
- @item $line_nr
- An opaque structure containing line number information for the
- @@-command. It can be used to call @code{main::line_error} or
- @code{main::line_warn} with the first argument being the message, and
- the second argument @code{$line_nr}.
- @item \@@line_numbers
- An array reference containing the line numbers (the same opaque
- structure as above) of the lines produced by the @@-command.
- @end table
- @end table
- @node Custom Interface for Simple HTML Customization
- @subsubsection Custom Interface for Simple HTML Customization
- @cindex Custom interface for simple HTML customization
- @cindex Interface for simple HTML customization, custom
- If the hash interface described in the previous section does not
- suffice, it is possible to change how the ``simple'' Texinfo commands
- are processed by redefining the following function reference:
- @deftypefn {Function Reference} $resulting_text style $style $command $text @
- $args $no_close $no_open $line_nr \%state $command_stack \@@line_numbers
- @table @var
- @item $command
- The @@-command
- @item $style
- The value associated with the @var{$command} in the @code{%style_map},
- @code{%style_map_pre} or @code{%style_map_texi} hashes.
- @item $text
- The argument text appearing within the @@-command braces.
- @item $args
- Array reference containing the command arguments, formatted according
- to the same conventions as the hash reference style (provided that the
- value associated with the @@-command is a hash reference with an
- @var{$arg} key; @pxref{Reference Hash Args}).
- @item $no_close
- @itemx $no_open
- If @var{$text} is split into paragraphs, each paragraph is passed
- through the function, and @var{$no_close} is true if this is not the
- last paragraph, while @var{$no_open} is true if this is not the first
- paragraph.
- @item $line_nr
- @itemx \%state
- @itemx $command_stack
- @itemx \@@line_numbers
- See the previous section.
- @end table
- @end deftypefn
- @node HTML Customization for Anchors
- @subsection HTML Customization for Anchors
- @cindex HTML customization for anchors
- @cindex Anchors, customizing HTML for
- The HTML formatting of anchors (@pxref{anchor,, @code{@@anchor}}) is
- controlled by functions. To customize the output, the function
- reference @code{$anchor_label} should be redefined. The function
- should return the formatted text.
- @deftypefn {Function Reference} $anchor_label anchor_label $identifier $anchor
- @var{$identifier} is the anchor identifier, and @var{$anchor} is the
- @code{@@anchor} argument.
- @end deftypefn
- By default, this uses a function reference, @code{$anchor}, which can
- do a reference target or link. This is especially relevant for HTML
- but can potentially be used in other formats, since it is a rather
- common element among output formats.
- @deftypefn {Function Reference} $anchor anchor @
- $identifier $href $text $attributes
- If @var{$identifier} is not empty, its value should be used to create
- a target for links (typically associated with a name or id attribute
- in HTML). The @var{$href} argument specifies a hypertext reference
- which should be used to link to a target. If both @var{$identifier}
- and @var{$href} are given, the text produced should be both a target
- for @var{$identifier} and a link to @var{$href}. @var{$text} is the
- text to be displayed. @var{$attributes} are additional attributes for
- an @code{<a>} HTML element.
- @end deftypefn
- @node HTML Customization for Images
- @subsection HTML Customization for Images
- @cindex HTML customization for images
- @cindex Images, customizing HTML for
- @vindex @@IMAGE_EXTENSIONS
- To customize the images produced by @code{@@image} (@pxref{Images}),
- the first possibility is to modify the @code{@@IMAGE_EXTENSIONS}
- array, which holds a list of filename extensions for image files.
- Second, it is also possible to redefine the function used to determine
- the filename of the image:
- @deftypefn {Function Reference} $filename image_files @
- $basename $extension $texi_base $texi_extension
- @var{$basename} is the first @code{@@image} argument, and
- @var{$extension} is the corresponding @code{@@image} argument; both
- are formatted. @var{$texi_base} is the first @code{@@image} argument
- and @var{$texi_extension} is the extension, unformatted. This
- function reference should return an array of array references, each
- holding both formatted and unformatted image filenames without any path
- for which the main program should look.
- @end deftypefn
- Third, it is possible to control the formatting of @code{@@image} by
- redefining this:
- @deftypefn {Function Reference} $image image $file_path $basename @
- $preformatted $file_name $alt_text $width $height $raw_alt @
- $extension $working_dir $file_relative_path $in_paragraph @
- \@@file_locations $base_simple_format @
- $extension_simple_format $file_name_simple_format $line_nr
- @table @var
- @item $file_path
- The image file name with the path from the output directory to the
- source manual directory prepended.
- @item $basename
- The file name without extension---the first argument to the
- @code{@@image} command.
- @item $preformatted
- True if the image appears in preformatted text.
- @item $file_name
- The file name without path but with extension.
- @item $alt_text
- The alternate text, possibly undefined.
- @item $width
- @itemx $height
- The corresponding @code{@@image} arguments.
- @item $raw_alt
- The unmodified alternate-text @code{@@image} argument.
- @item $extension
- The corresponding @code{@@image} argument.
- @item $working_dir
- Path to the working directory relative to the output directory.
- @item $file_relative_path
- The file name relative to @var{$working_dir}.
- @item $in_paragraph
- True if within a paragraph.
- @item \@@file_locations
- Array reference holding another array reference with 3 elements: the
- file name array reference as returned by @code{image_files}; the image
- location if it was found, or undef; and the file name formatted using
- simple formatting in string context.
- @item $base_simple_format
- @itemx $extension_simple_format
- @itemx $file_name_simple_format
- The corresponding arguments formatted using simple formatting in
- string context.
- @item $line_nr
- An opaque structure containing the information about the line number
- of the @@-command.
- @end table
- @end deftypefn
- @node HTML Customization for @code{sp}
- @subsection HTML Customization for @code{sp}
- @cindex HTML customization for @code{sp}
- @cindex @code{sp}, customizing HTML for
- The formatting of @code{@@sp} (@pxref{sp,,@code{@@sp}}) is controlled by:
- @deftypefn {Function Reference} $sp sp $number $preformatted
- @var{$number} is the numeric argument of @code{@@sp}.
- @var{$preformatted} is true if the @code{@@sp} appears in preformatted
- text.
- @end deftypefn
- @node HTML Customization for Abbreviations
- @subsection HTML Customization for Abbreviations
- @cindex HTML customization for abbreviations
- @cindex @code{abbr}, customizing HTML for
- @cindex @code{acronym}, customizing HTML for
- The formatting of @code{@@acronym} and @code{@@abbr} (@pxref{acronym,,
- @code{@@acronym}} and @ref{abbr,, @code{@@abbr}}) is controlled by:
- @deftypefn {Function Reference} $acronym acronym_like @
- $acronym_texi $acronym_text $with_explanation \@@explanation_lines @
- $explanation_text $explanation_simply_formatted
- @var{$acronym_texi} is the original acronym argument with @@-commands,
- while @var{$acronym_text} is formatted.
- The other arguments are related to the explanation (the second arg of
- the acronym). @var{$with_explanation} is true if the second argument
- of the acronym command is present. If an explanation exists, coming
- from a previous @code{@@acronym} or as an argument to the present
- command, the remaining arguments are defined:
- @table @var
- @item \@@explanation_lines
- Array reference containing simply formatted explanation lines
- (@pxref{Init File Expansion Contexts}).
- @item $explanation_text
- Formatted explanation text.
- @item $explanation_simply_formatted
- Explanation simply formatted in a string context.
- @end table
- @end deftypefn
- @node HTML Customization for Text Sequences
- @subsection HTML Customization for Text Sequences
- @cindex HTML customization for text sequences
- @cindex Text sequences, customizing HTML for
- @cindex Ligatures in text, customizing HTML for
- Some character sequences are processed especially in text: @samp{---},
- @samp{--}, @samp{``} and @samp{''}. This should only be done only if
- in normal text and not within commands for preformatted output
- (@code{@@code}, @code{@@env}@dots{}). A function reference is called
- to process the text and take care of these constructs. It may also be
- used to transform the text, for example, convert to upper case if it
- is in @code{@@sc}. The function should also take care of protecting
- special characters.
- @deftypefn {Function Reference} $processed_text normal_text $text @
- $in_raw_text $in_preformatted $in_code $in_math $in_simple $command_stack
- Process @var{$text} and return @var{$processed_text}. The other
- arguments give some information about the context of the text.
- @table @var
- @item $in_raw_text
- True if the text appears in a place where there is no formatting at
- all; e.g., in comments.
- @item $in_preformatted
- True if within a preformatted environemnt
- @item $in_code
- True if within a special command such as @code{@@code} or @code{@@env}
- where the text sequences should be left as is.
- @item $in_math
- True if within @code{@@math}.
- @item $in_simple
- True if in a string context with minimal formatting.
- @item $command_stack
- Array containing the name of the formatting @@-commands that enclose
- the text.
- @end table
- By default, the @samp{---}, @samp{--}, @samp{``} and @samp{''}
- constructs are expanded if needed and the text is upper-cased if in
- @code{@@sc}. Special characters (@samp{&}, @samp{"}, @samp{<} and
- @samp{>} in HTML) are protected if needed.
- @end deftypefn
- @cindex Protecting special output characters
- @cindex Output format characters, protecting
- @cindex HTML characters, protecting
- Some characters are special in a particular output format, such as
- @samp{<} in HTML. Some text is not processed by the above function,
- but still needs protection before output. This is done by the
- following:
- @deftypefn {Function Reference} $protected_text protect_text $text
- Process the general text @var{$text} and return the resulting
- protected text @var{$protected_text}.
- @end deftypefn
- @cindex Empty lines, removing
- Empty lines are processed by the following function reference, which
- can be useful if empty lines are to be removed.
- @cindex Definition commands, empty lines after
- @deftypefn {Function Reference} $resulting_text empty_line $empty_line $state
- Process @var{$empty_line} and return @var{$resulting_text}.
- @var{$state} is a structure holding information about the state of
- parsing. By default, empty lines are left as-is except right after a
- definition @@-command.
- @end deftypefn
- @node HTML Customization for Title Commands
- @subsection HTML Customization for Title Commands
- @cindex HTML customization for title commands
- @cindex Title commands, customizing HTML for
- @vindex %line_command_map
- Some @@-commands related to titles appear on a line by themselves and
- take the rest of the line as their argument: @code{@@titlepage},
- @code{@@title}, @code{@@subtitle}, and @code{@@author}
- (@pxref{Titlepage & Copyright Page}). These are listed in
- @code{%line_command_map} and the following function reference is used
- to format them:
- @deftypefn {Function Reference} $resulting_text line_command @
- $command $arg_text $arg_texi \%state
- @var{$command} is the @@-command, @var{$arg_text} is the
- @@-command's formatted argument, and @var{$arg_texi} is the @@-command
- argument without any formatting. @var{\%state} is a hash reference
- containing context information. The function returns
- @var{$resulting_text}.
- @end deftypefn
- For more customization of title pages, @pxref{HTML Title Page
- Customization}.
- @node Customizing HTML References
- @section Customizing HTML References
- @cindex References, HTML customization for
- @cindex Cross references, HTML customization for
- @menu
- * Internal: HTML Customization for Internal References.
- * External: HTML Customization for External References.
- @end menu
- @node HTML Customization for Internal References
- @subsection HTML Customization for Internal References
- @cindex HTML customization for internal references
- @cindex Internal references, HTML customization for
- This function reference is used to format a reference to a node in the
- current manual (@pxref{Cross References}).
- @deftypefn {Function Reference} $text internal_ref $command $href $short_name @
- $name $is_section \@@args_texi \@@formatted_args \%element
- @table @var
- @item $command
- The reference command, namely @code{ref}, @code{xref}, @code{pxref} or
- @code{inforef}).
- @item $href
- An HTML href to the node.
- @item $short_name
- @itemx $name
- The text for the reference. @var{$short_name} can be the node name
- which is assumed to be no longer than the section name.
- @item $is_section
- True if the reference is to a sectioning element.
- @item \@@args_texi
- @itemx \@@formatted_args
- Array references containing the @@-command arguments, not formatted
- and formatted, respectively.
- @item \%element
- Hash reference with information about the target element of the
- reference.
- @end table
- The function should return the full formatted text of the internal
- reference.
- @end deftypefn
- @node HTML Customization for External References
- @subsection HTML Customization for External References
- @cindex HTML customization for external references
- @cindex External references, HTML customization for
- These references are produced by one of two function references:
- @code{external_href} is used for menu items which refer to other
- manuals (@pxref{Other Info Files}), while @code{external_ref} is used
- for full external cross references (@pxref{Four and Five Arguments}).
- @deftypefn {Function Reference} $href external_href $node $node_identifier @
- $xml_node_identifier $file
- This function formats a reference to a node in an external Texinfo manual.
- @table @var
- @item $node
- The node name, with @@-commands.
- @item $node_identifer
- The node name mapped to an identifier acceptable as a file name.
- @item $xml_node_identifier
- The node name mapped to an identifier acceptable for XML.
- @item $file
- The manual file name of the external reference.
- @end table
- The function should return an HTML href for the external reference.
- @xref{HTML Xref}, for how the identifiers are built in order to allow
- for cross references to external manuals to succeed.
- @end deftypefn
- @deftypefn {Function Reference} $text external_ref $command $section $book @
- $file $href $cross_ref_name \@@args_texi \@@formatted_args $node
- This function formats a general cross reference to an external Texinfo manual.
- @table @var
- @item $command
- The reference command (@code{ref}, @code{xref}, @code{pxref} or
- @code{inforef}).
- @item $section
- The section in the external manual; may be empty.
- @item $book
- The book title; may be empty.
- @item $file
- The manual file name.
- @item $href
- An HTML href to the external manual constructed using the above
- @code{external_href} function.
- @item $cross_ref_name
- Optional cross reference name appearing in the reference command.
- @item \@@args_texi
- @itemx \@@formatted_args
- Array references containing the @@-command arguments, not formatted
- and formatted, respectively.
- @item $node
- The node name, formatted.
- @end table
- The function should return the HTML text for the external manual
- reference.
- @end deftypefn
- @node Customizing HTML Footnotes
- @section Customizing HTML Footnotes
- @cindex Customizing HTML footnotes
- @cindex Footnotes, customizing HTML
- Each footnote is associated with a footnote entry. Several footnote
- entries are grouped in a footnote section. When a footnote appears,
- two things must be formatted: the footnote text, and the place in the
- main text where the footnote marker appears.
- It is possible to replace the footnote with other text before
- formatting the footnote. The following function reference
- is used for this if it is defined:
- @deftypefn {Function Reference} $added_text footnote_texi $footnote_text @
- \%state \@@command_stack
- @table @var
- @item $footnote_text
- The footnote text.
- @item \%state
- Hash referencing with information about the context of the footnote
- location in the main document. Specifically, the entries
- @code{\%state->@{'outside_document'@}} or
- @code{\%state->@{'multiple_pass'@}} can be used.
- @item \@@command_stack
- Array reference containing the commands enclosing the footnote.
- @end table
- This function should return new formatted text for the footnote.
- @end deftypefn
- Two functions, with corresponding function references, control the
- formatting of the footnotes:
- @deftypefn {Function Reference} {(\@@lines $doc_text)} foot_line_and_ref @
- $number_in_doc $number_in_page $footnote_id $place_id @
- $document_file $footnote_file \@@lines \%state
- @table @var
- @item $number_in_doc
- The footnote number counted through the whole document,
- @item $number_in_page
- The footnote number counted on the current page.
- @item $footnote_id
- An identifier for the footnote text, which should be used to make the
- target for references to the footnote.
- @item $place_id
- Identifier for the location of the footnote in the main document.
- @item $document_file
- Name of the file containing the text where the footnote appears in the
- main document
- @item $footnote_file
- Name of the file where the footnote text appears.
- @item \@@lines
- Array reference containing the footnote text lines, formatted.
- @item \%state
- Information about the context at the footnote location in the main
- document. As usual, the most useful entry is @code{preformatted},
- which is true if the footnote appears in a preformatted context.
- @end table
- The function should return a list of two elements: an array reference
- (@var{\@@lines}) containing the updated footnote text for the footnote
- entry, and a string (@var{$doc_text}), for the text to appear at the
- location of the footnote in the main document, i.e., linking to the
- footnote entry.
- @end deftypefn
- The following function is only used when footnotes are at the bottom
- of a page and the document is split. For customization in the case
- when footnotes are on a separate page or section, @pxref{Customizing
- Layout of Special Elements}. The footnote location is determined by
- @code{footnotestyle} (@pxref{Footnote Styles}).
- @deffn {Function Reference} foot_section \@@footnotes_lines
- This function formats a group of footnotes. @var{\@@footnotes_lines}
- is an array reference holding the lines of all the footnote entries
- formatted as explained above. The function should modify the
- reference.
- @end deffn
- @node Customizing HTML Block Commands
- @section Customizing HTML Block Commands
- @cindex Customizing HTML block commands
- @cindex Block commands, customizing HTML
- @cindex Environments, customizing HTML
- @menu
- * Align: HTML Customization of Alignment Commands. @code{@@flushleft}, etc.
- * Preformatted block command formatting::
- * Other block commands formatting::
- @end menu
- @node HTML Customization of Alignment Commands
- @subsection HTML Customization of Alignment Commands
- @cindex HTML customization of alignment environments
- @cindex Customization of alignment environments
- @cindex Alignment environments, HTML customization of
- @cindex @code{@@center}, HTML customization of
- @cindex @code{@@flushleft}, HTML customization of
- @cindex @code{@@flushright}, HTML customization of
- @vindex %paragraph_style
- When a block with special text alignment of text is used, namely
- @code{@@center} (@pxref{titlefont center sp},,
- @code{@@titlefont}@comma{} @code{@@center}@comma{} and @code{@@sp}),
- @code{@@flushleft} or @code{@@flushright} (@pxref{flushleft &
- flushright,, @code{@@flushleft} and @code{@@flushright}}, the main
- program takes care of opening and closing paragraphs. The alignment
- commands are the keys in the @code{%paragraph_style} hash. The value
- is used in the function doing the formatting of the paragraphs
- (@pxref{Paragraph and preformatted region}).
- This function reference allows for customizing the formatting of the
- command argument.
- @deftypefn {Function Reference} $result paragraph_style_command $command $text
- @var{$command} is the command name and @var{$text} is the text
- appearing within the command. This function should return the
- formatted text. The default is to return the text unmodified.
- @end deftypefn
- @node Preformatted block command formatting
- @subsection Preformatted block command (@code{@@example}, @code{@@display}@dots{}) formatting
- Here we see how a whole preformatted block command is
- formatted. For the formatting
- of the text, see @ref{Paragraph and preformatted region}.
- @vindex %complex_format_map
- The formatting of the block commands is ultimately controlled by a
- function, however the default for this function uses a hash and
- changing the hash values should be enough in most cases. This
- hash is called @code{%complex_format_map}. It has a key for each
- of the preformatted block commands (@code{example}, @code{smallexample},
- @code{lisp}, @code{smalllisp}, @code{display}, @code{smalldisplay},
- @code{format}, @code{smallformat}).
- The associated value is a reference on a hash. The keys are:
- @table @code
- @item begin
- The @code{begin} should lead to the beginning of the
- formatted output.
- @item end
- The @code{end} should lead to the end of the
- formatted output.
- @item class
- The HTML class. If not defined, the command name.
- @item pre_style
- The preformatted style. If not defined the corresponding @acronym{CSS} style
- is used.
- @item style
- If the associated value is @code{code}, the format is assumed to be in
- code style, where
- with @samp{---}, @samp{--}, @samp{''} and @samp{``} kept as is.
- If the key is absent the format inherits the code style
- and the font from the enclosing context.
- @end table
- The enclosed text will be formatted as described in
- @ref{Paragraph and preformatted region}, and the name of the complex
- format will be available to the function formatting the text.
- If you aren't satisfied with this scheme, you can redefine the following
- function reference for a better control over the complex format formatting:
- @deftypefn {Function Reference} $complex_format_text complex_format $format_name $preformatted_text
- @var{$format_name} is the complex format name, @var{$preformatted_text} is the
- text allready formatted as described in @ref{Paragraph and preformatted region}.
- This function returns the whole complex format.
- @end deftypefn
- @node Other block commands formatting
- @subsection Formatting of other block commands (@code{@@verbatim}, @code{@@cartouche}, @code{@@quotation}, @code{@@html})
- @c FIXME verbatiminclude is distinct
- Regions corresponding with raw text, like @code{@@verbatim}, @code{@@html},
- @code{@@tex} or the content of the file given in @code{@@verbatiminclude}
- argument are formatted according to the following function reference:
- @deftypefn {Function Reference} $raw_region raw $command $text
- @var{$command} is the command name, @var{$text} is the raw text.
- In the default case, if @var{$command} is @code{verbatiminclude}
- the text is the content of the @code{@@verbatiminclude} file argument.
- @end deftypefn
- If La@TeX{}2HTML is used, @code{@@tex} regions are handled differently,
- (@pxref{Init File Formatting of Commands}).
- The @code{@@cartouche} command formatting is controlled by the
- function reference:
- @deftypefn {Function Reference} $cartouche cartouche $text
- @var{$text} is the text appearing within the cartouche.
- @end deftypefn
- The formatting of @code{@@quotation} and @code{@@smallquotation}
- is controlled by two function references.
- The first one is usefull in case the @code{@@quotation} has an argument, as
- it allows to prepend a string to the quotation text:
- @deftypefn {Function Reference} $prepended_string quotation_prepend_text $command $text
- @var{$command} is the @@-command.
- @var{$text} is the argument of the quotation with @@-commands not
- interpreted. This function
- can return a string which will be prepended to the quotation text.
- @end deftypefn
- The whole quotation is formatted by:
- @deftypefn {Function Reference} $quotation quotation $command $quotation_text $argument_text $argument_text_texi \@@quote_authors
- @var{$command} is the @@-command.
- @var{$quotation_text} is the quotation text, formatted, with the text
- prepended by the function above. @var{$argument_text} is the argument
- of the @code{@@quotation}, formatted. @var{$argument_text_texi} is the argument
- of the @code{@@quotation}, simply formatted.
- @var{\@@quote_authors} is a reference on an array holding information
- about the @code{@@author} command arguments appearing within the
- @code{@@quotation}. Each of the array element is a reference on a
- hash with the following keys:
- @table @code
- @item author_texi
- Texinfo code of this @code{@@author} line.
- @item author_text
- Formatted argument of the @code{@@author} line.
- @end table
- @end deftypefn
- @node Paragraph and preformatted region
- @section Formatting of paragraph and preformatted regions
- @c FIXME not sure that it is stable enough to be documented?
- If defined, the following function reference is called at the paragraph
- opening:
- @deffn {Function Reference} begin_paragraph_texi $paragraph_or_preformatted \@@paragraph_at_commands $context_command \%state \@@stack
- @var{$paragraph_or_preformatted} is @samp{paragraph} when opening a paragraph,
- or @samp{preformatted} at the beginning of a preformatted region.
- @var{\@@paragraph_at_commands} is a reference on an array containing the
- listof th ecommands with brace opened outside of the paragraph or
- preformatted. @var{$context_command} is a reference on a structure describing
- in what generalized block @@-command we are.
- @var{\%state} holds informations about the current context.
- @var{\@@stack} is an opaque variable.
- @end deffn
- @menu
- * Paragraph and preformatted formatting::
- * Avoiding paragraphs::
- @end menu
- @node Paragraph and preformatted formatting
- @subsection Paragraph and preformatted region formatting
- The formatting of a paragraph region or a preformatted region, is controlled
- by function references:
- @deftypefn {Function Reference} $paragraph_text paragraph $text $alignement $index $formatting_command $formatting_command_formatted \$paragraph_number $format $item_number $enumerate_style $number $command_stack_at_end $command_stack_at_begin
- This function formats a paragraph. @var{$text} is the text of the paragraph,
- @var{$alignement} is the empty string when no alignement command has
- been seen, otherwise it is the current alignement command name (see
- the previous section).
- @var{$indent} holds @samp{noindent} or @samp{indent} if the corresponding
- @@-command appeared in the paragraph.
- @var{$command_stack_at_end} and @var{$command_stack_at_begin} are arrays
- containing the opened @@-commands at end and at beginning of the paragraph,
- latest on top.
- The remaining arguments are usefull when the paragraph appears within a
- list or table. It is usefull whenever the paragraph has to be formatted
- differently when appearing in such environments.
- Moreover in that case the format command (@code{@@itemize}@dots{})
- may have an associated formatting command.
- @var{$formatting_command} is this formatting command
- (like @code{@@minus}).
- @var{$formatting_command_formatted} is the command formatted in html
- in case the formatting command is a leading command (like @code{@@minus})
- which should be leading the first paragraph.
- @var{\$paragraph_number} is a reference on the number of
- paragraphs in that format command. The corresponding variable should be
- increased when a paragraph is added. @var{$format} is the format command.
- @xref{Table and list items formatting}.
- If the @var{$format} is an enumerate, @var{$item_number} is the number of
- the item in the list, @var{$enumerate_style} is the argument of the enumerate,
- @var{$number} is the number or letter corresponding with this item.
- @end deftypefn
- @deftypefn {Function Reference} $preformatted_text preformatted $text $style $region_name $formatting_command $formatting_command_formatted \$preformatted_number $format $item_number $enumerate_style $number $command_stack_at_end $command_stack_at_begin
- This function formats a preformatted region. @var{$text} is the text of the
- preformatted region, @var{$style} is the css style associated with that
- preformatted region (@pxref{Customizing CSS}). @var{$region_name} is the
- name of the command opening
- the preformatted region (@code{example}@dots{}, see @ref{Preformatted block command formatting})
- or a identifier for the preformatted context (for example
- @code{menu-comment}, see @ref{Menu formatting}).
- The alignment commands are not taken into account, as the spaces are
- preserved in preformatted regions, you should flush and center by hand.
- @var{$command_stack_at_end} and @var{$command_stack_at_begin} are arrays
- containing the opened @@-commands at end and at beginning of the preformatted
- region, latest on top.
- The remaining arguments are usefull when the preformatted region appears
- within a list or table. It is usefull whenever the preformatted region
- has to be formatted
- differently when appearing in such environments.
- Moreover in that case the format command (@code{@@itemize}@dots{})
- may have
- an associated formatting command.
- @var{$formatting_command} is this formatting command
- (like @code{@@minus}).
- @var{$formatting_command_formatted} is the command formatted in html
- in case the formatting command is a leading command (like @code{@@minus})
- which should be leading the first preformatted region.
- @var{\$preformatted_number} is a reference on the number of
- preformatted regions in that format command. The corresponding variable
- should be increased when a preformatted region is added. @var{$format} is the
- format command.
- @xref{Table and list items formatting}.
- If the @var{$format} is an enumerate, @var{$item_number} is the number of
- the item in the list, @var{$enumerate_style} is the argument of the enumerate,
- @var{$number} is the number or letter corresponding with this item.
- @end deftypefn
- A special function reference is called instead if the preformatted
- is empty and the function reference is defined:
- @deftypefn {Function Reference} $preformatted_text empty_preformatted $text
- @var{$text} is the text of th epreformatted which should contain only
- spaces. The function refernece should return the formatted text for
- this empty preformatted region.
- @end deftypefn
- @node Avoiding paragraphs
- @subsection Avoiding paragraphs in @@-commands
- @cindex Avoid paragraph opening
- @vindex %format_in_paragraph
- It is possible to avoid that a format closes the previous paragraph or
- preformatted region and reopens one, by putting the format command in a
- hash, @code{%format_in_paragraph} with a true value. This only
- makes sense for few commands since otherwise the nesting of formats and
- paragraphs could become wrong.
- @vindex %no_paragraph_commands
- If the value of @code{%no_paragraph_commands} associated with a command is
- true, no paragraph is started by the command if outside of a paragraph
- (after an empty line, for example). If the value is set to 0, it will start
- a paragraph. If the value is not set, reasonable defaults are
- set.
- @vindex %stop_paragraph_command
- It is also possible to stop a paragraph when an @@-command happens by
- putting the @@-command in the @code{%stop_paragraph_command} hash
- associated with a true value.
- @node Lists tables and definitions formatting
- @section Lists, tables and definitions formatting
- @menu
- * Lists and tables formatting::
- * Definition formatting::
- @end menu
- @node Lists and tables formatting
- @subsection Customizing the formatting of lists and tables
- The formatting of lists and tables is done at two levels:
- @itemize
- @item
- At the level of the whole region (table or list),
- @item
- At the level of the individual items, rows or cells of the list or table.
- @end itemize
- @menu
- * Table and list items formatting::
- * Whole table and list formatting::
- @end menu
- @node Table and list items formatting
- @subsubsection Formatting individual table and list items
- In texinfo it is possible to give @code{@@itemize} or table command (hereafter
- called a @dfn{format command}) a @dfn{formatting command}.
- For example @code{@@minus} is the formatting command here:
- @example
- @@table @@minus
- @end example
- @vindex %special_list_commands
- The default is to apply the command to the text item, however it is possible
- to avoid it.
- The hash @code{%special_list_commands} has an entry for each of the
- format command. Each of these entries is a hash reference. If a formatting
- command is a key of the hash reference, then the formatting command is not
- applied to the text item for that format command. For example, if we have:
- @example
- $special_list_commands@{'itemize'@} = @{ 'bullet' => '' @};
- @end example
- and we have the following @code{@@itemize}:
- @example
- @@itemize @@bullet
- @@item an item
- @@end itemize
- @end example
- then @code{@@bullet} will not be applied to @code{an item}.
- Every time a @code{@@tab} or an @code{@@item} is encountered, the following
- function reference is called, if defined:
- @deftypefn {Function Reference} $result_line tab_item_texi $command \@@command_stack \@@stack \%state $line $line_nr
- @var{$command} is the command name.
- @var{\@@command_stack} is an array with all the @@-commands opened, latest
- on top.
- @var{\@@stack} is an opaque variable.
- @var{\%state} holds informations about the current context.
- @var{$line} is the line appearing after the command.
- @var{$line_nr}
- is an opaque structure containing the information about the line number of the
- @@-command.
- The function returns the line that may be further processed.
- @end deftypefn
- More control of the text before formatting of the line or the item is
- achieved with the following function reference:
- @deftypefn {Function Reference} ($result_line, $open_command) format_list_item_texi $format $line $prepended $command $number
- The @var{$format} is the list or table @@-command,
- @var{$line} is the item line, @var{$command} is the @dfn{format command},
- @var{$prepended} is set to the text folllowing the @dfn{format command}
- on the format argument line.
- The @var{$number} is the number of the item, as set in @code{@@enumerate}.
- The @var{$result_line} replaces the item argument.
- @var{$open_command} is an obsolete return code that can be set to
- anything.
- @end deftypefn
- Then the different @@-commands items are formatted thanks to
- function references:
- @table @strong
- @item lists
- The items of lists are formatted using the following function reference:
- @deftypefn {Function Reference} $list_item list_item $text $format $command $formatted_command $item_number $enumerate_style $number $prepended_texi $prepended_formatted $only_inter_item_commands $before_items $item_command
- This function formats the text between @code{@@item} commands. @var{$text}
- is the text corresponding with the item. @var{$format} is the type of format,
- @samp{itemize} or @samp{enumerate}. @var{$command} is the formatting command
- given in argument to @code{@@itemize}, @var{$formatted_command} is this command
- formatted if it is a leading command, like @code{@@minus}.
- If the @var{$format} is an enumerate, @var{$item_number} is the number of
- the item in the list, @var{$enumerate_style} is the argument of the enumerate,
- @var{$number} is the number or letter corresponding with this item.
- If the @var{$format} is an itemize, @var{$prepended_texi} is the text that
- appeared on the itemize line, maybe after the formatting command
- (if any), and @var{$prepended_formatted} is the corresponding text,
- formatted.
- @var{$only_inter_item_commands} is true if there are only @@-commands
- that are not considered as the item argument in the item, like
- index entries.
- @var{$before_items} is set if there is in fact no leading @code{@@item}
- for the text, as it may happen for some text following the @var{$format}
- @@-command, as in
- @example
- @@table @@asis
- Tex before items.
- @end example
- @var{$item_command} is the item command name.
- @end deftypefn
- @item two column tables
- The two columns tables (@code{@@table}, @code{@@ftable} and @code{@@vtable}),
- items are formatted using two function references,
- one for the first line located on the @code{@@item} line corresponding
- with the first column, the other for the text appearing on the
- following lines, corresponding with the second column text.
- @deftypefn {Function Reference} $table_item table_item $item_text $index_label_text $format $command \@@command_stack $item_command $formatted_index_entry
- This function is used to format the text on the @code{@@item} line.
- @var{$item_text} is the text line. In case there is an index entry
- associated with the @code{@@item} (as with @code{@@ftable} and
- @code{@@vtable}), @var{$index_label_text} is the text inserted at
- the place where an index entry appears. @xref{Index entry place formatting}.
- @var{$format} is the type of format,
- @samp{table}, @samp{ftable} or @samp{vtable}. @var{$command} is the formatting command
- given in argument to the table format command.
- @var{\@@command_stack} is an array with all the @@-commands opened, latest
- on top.
- @var{$item_command} is the item command, @samp{@@item} or @samp{@@itemx}.
- @var{$formatted_index_entry} is the index entry formatted.
- @end deftypefn
- @deftypefn {Function Reference} $table_line table_line $text
- This function is used to format the text on the lines following
- the @code{@@item} line. @var{$text} is the corresponding text.
- @end deftypefn
- @item multitable
- @anchor{Multitable Formatting}
- The multitable elements formatting is controlled by the functions associated
- with two function references. One for a cell, and the other for a row.
- @deftypefn {Function Reference} $multitable_cell cell $text $item_command \@@columnfractions \@@prototype_row \@@prototype_lengths $column_number
- This function is used to format the text of a multitable cell, the text
- following a @code{@@item} or a @code{@@tab}.
- @var{$text} is the corresponding text. @var{$item_command} is the command
- used to introduce the row, such that it is possible to distinguish
- between @code{@@item} and @code{@@headitem}.
- @var{\@@columnfractions} is a reference on an array
- containing the @code{@@columnfraction} arguments, if any, and
- @var{\@@prototype_row} is a reference on an array containing the row prototypes
- given on the @code{@@multitable} line, if any.
- @var{\@@prototype_lengths} array contains the lengths of the row prototypes
- formatted.
- @var{$column_number} is the maximal number of columns.
- @end deftypefn
- @deftypefn {Function Reference} $multitable_row row $text $item_command \@@columnfractions \@@prototype_row \@@prototype_lengths $column_number
- This function is used to format a multitable row. @var{$text} is
- the row text, with cells allready formatted with the @code{$cell}
- function reference. @var{$item_command}, @var{\@@columnfractions},
- @var{\@@prototype_row}, @var{\@@prototype_lengths}
- and @var{$column_number} are the same than in the function reference above.
- @end deftypefn
- @end table
- By default, this function is interlinked with
- @code{$begin_format_texi} (@pxref{Init File General Block Commands})
- and @code{@@multitable} formatting since a stack of possibly nested
- multitables is stored in order to know the cell number.
- @node Whole table and list formatting
- @subsubsection Formatting of a whole table or list
- @vindex %format_map
- If the Texinfo command is a key of the @code{%format_map}, the associated
- value is used to specify the formatting of the construct, otherwise a function
- is called.
- The value in @code{%format_map} associated with a command is interpreted
- similarly with values associated with more simpler commands:
- @itemize
- @item
- If the text is a word, in HTML or XML, it is considered to be an XML
- or HTML element
- name, and the whole table or list is enclosed between the element opening
- and the element closing.
- @item
- If the text is a word followed by some text,
- the word and is interpreted as above, and the
- text is considered to be the attributes text of the element.
- @item
- If the text is empty nothing is added to the text.
- @end itemize
- In case the @code{%format_map} isn't used, a function reference called
- @code{$table_list}
- should be redefined, the associated function will be called each time
- a command isn't found in @code{%format_map}.
- @deftypefn {Function Reference} $whole_table_list table_list $format_command $text $command $formatted_command $item_nr $enumerate_style $prepended_texi $prepended_formatted \@@columnfractions \@@prototype_row \@@prototype_lengths $column_number
- @var{$format_command} is the Texinfo command name, @var{$text} is the
- formatted items. @var{$command} is the @dfn{format command} given in argument
- to the format command, @var{$formatted_command} is the same, but formatted.
- @var{$prepended_texi} is the remaining text on the format command line,
- @var{$prepended_formatted} is the same, but formatted.
- Only relevant in @code{@@enumerate}, @var{$item_nr} is the item number, and
- @var{$enumerate_style} is the @code{@@enumerate} style. Only relevant in
- @code{@@multitable}
- @var{\@@columnfractions} is a reference on an array
- containing the @code{@@columnfraction} arguments, if any,
- @var{\@@prototype_row} is a reference on an array containing the row prototypes
- given on the @code{@@multitable} line, if any,
- @var{\@@prototype_lengths} array contains the lengths of the row prototypes
- formatted and
- @var{$column_number} is the maximal number of columns.
- @end deftypefn
- If you still want to use @code{%format_map} but differently from
- the default, it is possible to redefine the following function reference:
- @deftypefn {Function Reference} $whole_table_list format $command $format $text
- @var{$command} is the @@-command, @var{$format} is the entry associated with
- @var{$command} in @code{%format_map}. @var{$text} is the formatted items.
- @end deftypefn
- @node Definition formatting
- @subsection Interpretation and formatting of the definition formatting
- The formatting of definition commands is controlled by a main hash,
- 3 strings and another hash, and and five
- functions. The main hash describes how the text on the definition line is
- interpreted, the functions control the formatting of the definition line
- and the definition function text.
- @menu
- * Definition line interpretation::
- * Definition command formatting::
- @end menu
- @node Definition line interpretation
- @subsubsection Customizing the interpretation of a definition line
- @vindex %def_map
- The keys of the hash @code{%def_map} are definition command names.
- There are two types of entries:
- @itemize
- @item If the command is a shortcut for
- another definition command the value is a text and the definition
- command is replaced by the text.
- For example if we have:
- @example
- $def_map@{'deftruc'@} = '@@defvr @{A truc@}';
- @end example
- and a line like
- @example
- @@deftruc var
- @end example
- the line will be transformed in
- @example
- @@defvr @{A truc@} var
- @end example
- @item
- If the command is not a shortcut, it is associated with an array
- reference. The first element is @samp{f}, @samp{v} or @samp{t} corresponding
- with the index type (@samp{f} for function, @samp{v} for variable,
- @samp{t} for type).
- The remaining of the array describes how to interpret the text following
- the definition command on the definition command line.
- The entry item specify what corresponds
- with the next bracketed item or word. Currently the possibilities are
- @samp{category}, @samp{name}, @samp{type}, @samp{class}, @samp{arg}
- and @samp{argtype}. @samp{arg} means that the arguments are not mixed
- with type definitions, with @samp{argtype} types are mixed with
- definitions. When there is no @samp{arg} nor @samp{argtype} it is
- the same than @samp{argtype}.
- For example if we have
- @example
- def_map@{'defvr'@} = [ 'v', 'category', 'name' ];
- @end example
- The first bracketed item following @code{@@defvr} is considered
- to be the category and the next one is the name. The index associated
- with the definition line is the variables index.
- @end itemize
- Some characters are special with regard with definition parsing, they
- are delimiters, the can have a role in definition argument determination,
- and also hae a special meaning in arguments parsing.
- This is not very well documented in the Texinfo manual,
- so it is subject to change. Strings allow to determine the delimiters:
- @vtable @code
- @item $def_argument_separator_delimiters
- Characters that separate arguments, currently @code{()[],}.
- @item $def_always_delimiters
- Character that are always delimiters, if they appear in a type or a
- parameter,
- @code{()[]}.
- @item $def_in_type_delimiters
- Character that are considered as delimiters only if in a type. In
- a parameter they are part of the parameter.
- @end vtable
- @node Definition command formatting
- @subsubsection Customization of the definition formatting
- Five functions are used when formatting a definition command:
- @table @strong
- @item category name
- @deftypefn {Function Reference} $category definition_category $category $class $style $command
- This function precise a category name associating a class
- @var{$class} (if given) with @var{$category}. The @var{$style} of the
- definition may be @samp{f}, for function, @samp{v}, for variable or @samp{t},
- for type. The @var{$command} is the definition @@-command.
- @end deftypefn
- @deftypefn {Function Reference} $entry definition_index_entry $name $class $style $command
- This function precise a name associating a class
- @var{$class} (if given) with @var{$name}. This is used to do an index
- entry associated with th edefinition command. The @var{$style} of the
- definition may be @samp{f}, for function, @samp{v}, for variable or @samp{t},
- for type. The @var{$command} is the definition @@-command.
- @end deftypefn
- @item formatting of the definition line
- @deftypefn {Function Reference} $line def_line $class_category_class $name $type $arguments $index_label \@@arguments_array \@@arguments_type_array \@@unformatted_arguments_array $command $class_name $category $class $style $original_command
- This function formats the definition line. @var{$class_category} is the
- category
- formatted with @code{$definition_category}, @var{$name}, @var{$type} and
- @var{arguments} are the element of the definition line. @var{$index_label} is
- the text inserted at the place where an index entry appears.
- @xref{Index entry place formatting}.
- @var{\@@arguments_array} is an array holding the definition arguments,
- formatted. @var{\@@arguments_type_array} holds the type of the definition
- arguments, like @samp{name}, @samp{type} and similar arguments,
- @samp{paramtype}.
- @samp{delimiter} and @samp{param}. @var{\@@unformatted_arguments_array}
- holds the arguments without @@-command substitution. @var{$command} is the
- definition command, after substitution.
- @var{$class_name} is the class applied on name, formatted
- as specified in @code{definition_index_entry}. @var{$category} and
- @var{$class} are the corresponding arguments. @var{$style} corresponds
- with the index style, as explained above. @var{$original_command} is the
- unmodified definition @@-command.
- @end deftypefn
- @item definition text
- @deftypefn {Function Reference} $definition_text def_item $text $only_inter_item_commands $command
- This function formats the definition text, @var{$text}.
- @var{$only_inter_item_commands} is true if there are only @@-commands
- that are not considered as the definition argument in the definition
- text, like index entries.
- @var{$command} is the definition @@-command.
- @end deftypefn
- @item the whole definition
- @deftypefn {Function Reference} $definition def $text $command
- This function formats the whole definition. The definition line and text
- formatted by the above functions are in @var{$text}.
- @var{$command} is the definition @@-command.
- @end deftypefn
- @end table
- @node Menus indices and floats formatting
- @section Menus, indices and floats formatting
- @menu
- * Menu formatting::
- * Indices formatting::
- * Floats and lists of floats formatting::
- @end menu
- @node Menu formatting
- @subsection Menu formatting
- There are two possibilities for menu formatting:
- @itemize @bullet
- @item format the whole menu in a preformatted environment, like
- in @ref{Preformatted block command formatting};
- @item format the menu in table with more specialized formatting for each
- part of the menu;
- @end itemize
- The simple formatting in a preformatted is used if
- the configuration variable @code{SIMPLE_MENU} is true,
- otherwise the format with tables is used (this is the default).
- In HTML, if the configuration variable @code{USE_ACCESSKEY} is set,
- the @code{accesskey} attribute is used in anchors. In that case the
- @code{%BUTTONS_ACCESSKEY} hash is used for the access key.
- In @command{texi2any}, a menu is considered to be composed of 2 parts, the
- @dfn{menu entries} and the @dfn{menu comments} (@pxref{Writing a Menu}).
- Menu entries are further
- divided in an @dfn{entry link} and optionnaly an @dfn{entry description}.
- The entry link consists in a node name and an optional menu entry
- name (@pxref{Menu Parts}).
- @menu
- * Menu components formatting::
- * Simple menu formatting:: formatting of a whole menu in a simple
- preformatted environement
- * Table menu formatting:: formatting of a whole menu in a
- table environment
- @end menu
- @node Menu components formatting
- @subsubsection The formatting of the different menu components
- If in a preformatted context (and @code{SIMPLE_MENU} isn't set), the
- menu link and description are put in the same preformatted environment.
- This can be avoided with the configuration variable
- @code{SEPARATE_DESCRIPTION}.
- Two function references are associated with the formatting of the
- different parts of a menu:
- @deftypefn {Function Reference} $link menu_link $section \%state $href $node $name $ending $has_name \@@command_stack $preformatted $node_normalized_formatted
- @var{$section} is the section name corresponding with the link, @var{$href}
- is the link hypertextual reference. @var{$href} may be absent.
- @var{\%state} holds informations about the current context.
- @var{$node} is the node name, @var{$name} is the
- name of the node. @var{$ending} is the text ending the link entry,
- in general @samp{::} followed by some spaces.
- @var{$has_name} is true if the entry has an explicit name, otherwise
- @var{$name} has been constructed using the formatted node name.
- @var{\@@command_stack} is an array containing the commands enclosing
- the menu link. It is used in the default case to detect if the
- menu link is right in the @command{@@menu} or not, since if it is not
- right below the menu the formatting is simpler.
- @var{$preformatted} is true if in preformatted context.
- @xref{Init File Expansion Contexts}.
- @var{$node_normalized_formatted} is the node with spaces normalized
- and formatted.
- @end deftypefn
- This command is not called if @code{SIMPLE_MENU} is set.
- @deftypefn {Function Reference} $description menu_description $description_text \%state $element_text
- @var{$description_text} is the text of the menu description.
- The formatted link is also here if in preformatted context and
- @code{SEPARATE_DESCRIPTION} is not set.
- @var{\%state}
- should be used similarly than for the menu link. @var{$element_text}
- is the heading of the element associated with the node.
- @var{$command_stack} and @var{$preformatted} are the same than for the
- menu link.
- @end deftypefn
- The @dfn{menu comment} part is formatted like a normal command,
- called @code{menu_comment}. It is only used if not in preformatted
- environment.
- The default is to have it be formatted
- like a @ref{Preformatted block command formatting}, with
- @example
- $complex_format_map@{'menu_comment'@} =
- @{
- 'begin' => "<tr><th colspan=\"3\" align=\"left\" valign=\"top\">",
- 'end' => "</th></tr>", 'class' => 'menu-comment',
- @}
- @end example
- @node Simple menu formatting
- @subsubsection Simple menu formatting in a preformatted environment
- If the menu is to be formatted in a single preformatted environment,
- an entry for @samp{menu} and @samp{detailmenu}
- should be added to the @code{%complex_format_map}
- hash (@pxref{Preformatted block command formatting}).
- In the default case, if the user didn't add an entry himself, a very simple
- entry is used, with:
- @example
- $complex_format_map->@{'menu'@} = @{ 'begin' => '' , 'end' => '',
- 'class' => 'menu-preformatted' @};
- @end example
- @node Table menu formatting
- @subsubsection The formatting of the menu in a table
- In the default case, the name of the section corresponding with the
- node is used instead of the node name. If the configuration
- variable @code{NODE_NAME_IN_MENU} is
- true, however, node names are used. If the configuration variable
- @code{AVOID_MENU_REDUNDANCY}
- is true and menu entry equal menu description the description is not printed.
- This is the default. Likewise, if node or section name equal entry name,
- do not print entry name.
- @vindex $MENU_SYMBOL
- @vindex $UNNUMBERED_SYMBOL_IN_MENU
- A symbol, @code{$MENU_SYMBOL} is put at the beginning of menu entries
- when the node name is used. The default is @samp{•} for HTML, @samp{*}
- for text formats.
- If @code{$UNNUMBERED_SYMBOL_IN_MENU} is true it is
- also put at the beginning of unnumbered section names (in HTML). This is not
- done by default.
- @vindex $MENU_PRE_STYLE
- @vindex $MENU_PRE_COMPLEX_FORMAT
- The menu comments are considered to be preformatted text. The style
- associated with this preformatted text is determined by
- @code{$MENU_PRE_STYLE}. Default is @samp{font-family: serif}.
- The entry similar with an entry in @code{%complex_format_map}
- (@pxref{Preformatted block command formatting}) used when the menu
- appears in a preformatted
- enviroment is in
- @code{$MENU_PRE_COMPLEX_FORMAT}, and, in the default case is:
- @example
- $MENU_PRE_COMPLEX_FORMAT = @{
- 'pre_style' => $MENU_PRE_STYLE,
- 'class' => 'menu-preformatted'
- @};
- @end example
- The CSS class associated with menu comments is @code{menu-comments}.
- The following function reference controls the formatting of a wole menu
- or a detailmenu in that case:
- @deftypefn {Function Reference} $menu menu_command $command $menu_components_text
- @var{$command} is the menu command, currently @samp{menu}, @samp{detailmenu}
- or @samp{direntry}.
- @var{$menu_components_text} is the formatted menu components text, obtained
- as explained above.
- @end deftypefn
- @node Indices formatting
- @subsection Indices formatting
- Two different things needs to be handled for indices formatting, the place
- where the index term appears, the index entry, and the index list itself.
- The indexing commands like @code{@@cindex} determines where index entries
- appear, and the index list is printed with a @code{@@printindex} command.
- @menu
- * Index entry place formatting:: Index entries in the main document are
- targets for hypertext references
- * Index list formatting:: Customizing the formatting of the index list
- @end menu
- @node Index entry place formatting
- @subsubsection Formatting of index entries
- Index entry places in the main text may be the target for
- references. Their formatting
- is controlled by the function associated with the following function
- reference:
- @deftypefn {Function Reference} $target index_entry_label $identifier $preformatted $entry $index_name $index_command $texi_entry $formatted_entry $in_region_not_in_output \%index_entry
- @var{$identifier} should be used to create
- a target for links (typically associated with a name or id
- attribute in HTML).
- @var{$preformatted} is true if the index entry appeared in preformatted text.
- @var{$entry} is the index entry with all the @@-commands removed.
- @var{$index_name} is the index name, @var{$command} is the index command which
- may be a index command like @code{@@cindex}, but also a definition or
- a table. @var{$texi_entry} is the index entry with @@-commands, and
- @var{$formatted_entry} the entry formatted.
- @var{$in_region_not_in_output} is set if the index entry appears in a region
- formatting (for example @code{@@titlepage}) and not in the
- output document.
- @var{\%index_entry} is a reference on a hash holding informations about
- the index entry.
- @end deftypefn
- Regular index entries are (like @code{@@cindex}) are
- formatted using the following function reference:
- @deftypefn {Function Reference} $index_entry index_entry_command $command $index_name $label $entry_texi $entry_formatted
- @var{$command}, @var{$index_name}, @var{$entry_texi} and @var{$entry_formatted}
- are the same as above, and @var{$label} is what could be used as a label,
- formatted using the function above.
- @end deftypefn
- @node Index list formatting
- @subsubsection Customizing the formatting of index lists
- There is an elaborate default index formatting, with
- index summary by letter linking to index entries grouped by letters too,
- with the possibility of index pages split accross files. This system may be
- completly bypassed by redefining the function reference that is called when
- @code{@@printindex} is encountered:
- @deftypefn {Function Reference} $index_text printindex $index_name \%printindex
- @var{$index_name} is the index name appearing on the
- @code{@@printindex} line.
- @var{\%printindex} is a reference on a hash holding informations
- on the index.
- The index formatted should be returned by this function reference.
- @end deftypefn
- If the default index formatting is used, there are still possibilities
- to customize part of the formatting.
- The index entries are sorted alphabetically. A whole index list is
- considered to be composed of letter entries. A letter entry is composed
- by all the index entries beginning with that letter. A letter may
- be a non alphabetical character, but we call it letter here.
- An index summary appears at the beginning and at the end of an index list,
- and should be used to jump directly to a letter entry. Indices lists
- may be split across pages, thus the different letters may appear on different
- files. The number of index entries appearing on each page is determined
- by a configuration variable @code{SPLIT_INDEX}, if set. The default is not
- to split indices.
- The formatting of all these elements is controlled by the following
- function references:
- @table @emph
- @item formatting of a letter in a summary
- @deftypefn {Function Reference} {($result_letter, $identifier, $is_symbol)} summary_letter $letter $file $identifier $index_element_id $number $index_element $index_name
- This function is used to format a letter appearing in a summary, refering
- to a letter entry in the index list.
- @var{$letter} is the letter. @var{$file} is the file name where the letter
- entry appears. More precisely, it is empty when the letter entry is on the
- same page than the summary, it contains the file name when the index page
- is split accross page. @var{$identifier} is an identifier for the target
- letter entry. @var{$index_element_id} is the identifier associated with the
- element holding the letter. @var{$number} and @var{$index_element} are
- not specified. @var{$index_name} is the name of the index.
- The function returns the resulting letter @var{$result_letter}, an
- identifier for the letter @var{$identifier}, to be used in anchors, for example
- and @code{$is_symbol} should be true if the letter is not a regular letter
- but a symbol.
- @end deftypefn
- @item formatting of a summary
- @deftypefn {Function Reference} $summary index_summary \@@alphabetical_letters \@@nonalphabetical_letters
- @var{\@@alphabetical_letters} and @var{\@@nonalphabetical_letters} contain the
- formatted summary letters, formatted with the above function.
- @end deftypefn
- @item formatting of an index entry
- @deftypefn {Function Reference} $entry index_entry $entry_href $entry_text $element_href $element_heading $entry_file $element_file $entry_target $entry_element_target $in_region_not_in_output \%index_entry
- @var{$entry_href} is a reference to the place where the index entry
- appeared, @var{$entry_text} is the corresponding text. @var{$element_href}
- is a reference to the beginning of the element containing
- the index entry, @var{$element_heading} is the heading of the element.
- @var{$entry_file} is the file where the index entry appear, while
- @var{$element_file} is the file of the element. @var{$entry_target} is the
- target of the index entry, @var{$entry_element_target} is the
- element target.
- @var{$in_region_not_in_output} is set if the index entry appears in a region
- formatting (for example @code{@@titlepage}) and not in the
- output document.
- @var{\%index_entry} is a reference on a hash holding informations about
- the index entry.
- @end deftypefn
- @item formatting of letter entry
- @deftypefn {Function Reference} $letter_entry index_letter $letter $identifier $index_entries_text
- This function formats a letter entry, consisting in all the index entries
- beginning with this letter. @var{$letter} is the letter, @var{$identifier}
- should be used to create a target for links (typically links from summaries),
- and @var{$index_entries_text} is the text of the index entries formatted as
- described above.
- @end deftypefn
- @item formatting of whole index
- @deftypefn {Function Reference} $index print_index $index_text $index_name
- @var{$index_text} is the text of all the index entries grouped by letter
- appearing in that page formatted as above. It is undef if there are
- no entries or theindex name isn't known. @var{index_name} is the name of
- the index, the argument of @code{@@printindex}.
- @end deftypefn
- @end table
- @node Floats and lists of floats formatting
- @subsection Floats and lists of floats
- Floats appear in the @code{@@float} environment, optionaly with a style
- and a label, and with optionnal @code{@@caption} and @code{@@shortcaption}.
- Their list appear after a @code{@@listoffloats}.
- A hash reference is associated with each float, it is available in some
- formatting functions. The keys are:
- @table @code
- @item caption_texi
- @itemx shortcaption_texi
- A reference on an array containing the caption or shortcaption lines,
- with texi @@-commands.
- @item style_texi
- The style with texi @@-commands.
- @item style_id
- The unique identifier associated with the style.
- @item style
- The style formatted.
- @item nr
- The number with the same conventions than makeinfo (use the chapter number a
- dot and then the number of the float of that style in the chapter, or an
- absolute number if in unnumbered).
- @item chapter_nr
- The number of the chapter containing the float.
- @item nr_in_chapter
- The number of the float in the chapter.
- @item absolut_nr
- The number of the float in the document.
- @item texi
- The label with @@-commands.
- @item name
- The label formatted.
- @item id
- The unique identifier associated with the label. Usefull to make an anchor
- or a reference.
- @item target
- The target that can be used to refer to that float.
- @item element
- A reference on a structure representing the element the float appear in.
- @end table
- @menu
- * Float formatting:: Formatting of floats
- * List of floats formatting:: Formatting the lists of floats
- @end menu
- @node Float formatting
- @subsubsection Formatting a float
- First there is an occasion to construct a texinfo text for the caption, using
- the caption texinfo lines and the informations in the float structure.
- The returned lines will be formatted in the main program. A function reference
- is used here:
- @deftypefn {Function Reference} {(\@@caption_lines_returned, \@@shortcaption_lines_returned)} caption_shortcaption \%float \@@caption_lines \@@shortcaption_lines
- @var{\%float} is the structure defined above. @var{\@@caption_lines} and
- @var{\@@shortcaption_lines} are references on arrays containing the
- texinfo lines for caption and short caption. @var{\@@caption_lines_returned}
- and @var{\@@shortcaption_lines_returned} are references on an array
- containing the texinfo lines for the caption and shortcaption.
- @end deftypefn
- Then the float is formatted with the following function reference:
- @deftypefn {Function Reference} $text float $float_text \%float $caption_text $shortcaption_text
- @var{$float_text} is the text appearing within the @code{@@float}, formatted.
- @var{\%float} is still the structure defined above. @var{$caption_text} and
- @var{$shortcaption_text} are the caption and short caption build with the
- above function and formatted.
- @end deftypefn
- It is also possible to do something when a caption or a shortcaption appear
- with the following function reference:
- @deftypefn {Function Reference} $text caption_shortcaption_command $command $formatted_caption \@@texi_lines \%float
- @var{$command} is the @@-command, @samp{caption} or @samp{shortcaption}.
- @var{$formatted_caption} is the caption text, formatted, while
- @var{\@@texi_lines} is a reference on an array containing the caption lines,
- this time without any formatting.
- @var{\%float} is still the structure defined above.
- In the default case this function reference returns an empty string.
- @end deftypefn
- @node List of floats formatting
- @subsubsection Formatting lists of floats
- A list of floats is introduced by @code{@@listoffloats}. The argument of
- @code{@@listoffloats} is the @dfn{style}. First the style texinfo can be
- modified with the following function reference:
- @deftypefn {Function Reference} $style_texi_returned listoffloats_style $style_texi
- @var{$style_texi} is the @code{@@listoffloats} argument with texinfo
- @@-commands kept. It is possible to make changes to the @var{$style_texi} and
- return a modified string, still with @@-commands. The modified string
- is formatted in the main program.
- @end deftypefn
- After that, for each of the floats with that style, first there is a
- possibility to modify the float style and the float caption before they
- are formatted in the main program, with the following function references:
- @deftypefn {Function Reference} $float_style_texi_returned listoffloats_float_style $style_texi \%float
- @var{$style_texi} is the style, and @var{\%float} is the structure described
- above. This function reference returns a style to be formatted in the
- main program.
- @end deftypefn
- @deftypefn {Function Reference} (\@@caption_texi_returned, $caption_or_shortcaption) listoffloats_caption \%float
- @var{\%float} is the structure described
- above. This function reference returns a caption to be formatted in the
- main program, @var{\@@caption_texi_returned}, and a string,
- @var{$caption_or_shortcaption} that is either @samp{caption} or
- @samp{shortcaption} that can be used by the main program if this information
- is needed.
- @end deftypefn
- Each entry is formatted by:
- @deftypefn {Function Reference} $listoffloats_entry listoffloats_entry $style_texi \%float $float_style $caption $href
- @var{$style_texi} is the style with @@-commands, @var{$float_style} is the
- style returned by the above function and formatted. @var{$caption} is the
- caption returned by the above function formatted. @var{\%float} is the
- structure corresponding with the float, and @var{$href} is an href pointing to
- the float location.
- @end deftypefn
- Lastly, the whole @code{@@listoffloats} is formatted by:
- @deftypefn {Function Reference} $listoffloats listoffloats $style_texi $style \@@listoffloats_entries
- @var{$style_texi} is the style with @@-commands, @var{$style} is the
- style returned by the above function and formatted. The array reference
- @var{\@@listoffloats_entries} holds the entries formatted by the above
- function.
- @end deftypefn
- @node Handling special regions
- @section Handling special regions
- @vindex %region_formats_kept
- Special regions @code{@@titlepage}, @code{@@documentdescription} and
- @code{@@copying} are removed from the document before the last pass in the
- default case. They can be kept if the value associated with the @@-command
- in the @code{%region_formats_kept} hash is true.
- The following function reference is called when starting the
- formatting of a special region, if defined:
- @deffn {Function Reference} begin_special_region $region_name \%state \@@region_lines
- @var{$region_name} is the region name.
- @var{\%state} holds informations about the context of the region formatting.
- @var{\@@region_lines} holds the region lines.
- @end deffn
- The following function reference is called when ending the formatting
- of the special region, if defined:
- @deftypefn {Function Reference} $formatting_result end_special_region $region_name \%state $formatted_region
- @var{$region_name} is the region name.
- @var{\%state} holds informations about the context of the region formatting.
- @var{$formatted_region} is the result of the region formatting.
- The function reference returns the result of the region formatting, after
- possibly modifying it.
- @end deftypefn
- The @code{@@insertcopying} @@-command is formatted by
- @deftypefn {Function Reference} $insertcopying insertcopying $text $comment $simple_text
- @var{$text} is the text appearing in @code{@@copying}, formatted.
- @var{$comment} is the text with texi removed, should be very simple
- text.
- @var{$simple_text} is the text formatted in string context
- with minimal formatting but no elements.
- @end deftypefn
- The copying commane that is to be used at the beginning of output
- files is formatted by
- @deftypefn {Function Reference} $copying_comment_formatted copying_coment \@@copying_lines $text $comment $simple_text
- @var{\@@copying_lines} is an array containing the Texinfo lines in @code{@@copying}.
- @var{$text} is the text appearing in @code{@@copying}, formatted.
- @var{$comment} is the text with texi removed, should be very simple
- text.
- @var{$simple_text} is the text formatted in string context
- with minimal formatting but no elements.
- @end deftypefn
- @code{@@documentdescription} is handled by the following function
- reference, that should set the configuration variable @code{documentdescription}:
- @deffn {Function Reference} documentdescription \@@documentdescription_lines $text $comment $simple_text
- @var{\@@documentdescription_lines} is an array containing the Texinfo lines in @code{@@documentdescription}.
- @var{$text} is the text appearing in @code{@@documentdescription}, formatted.
- @var{$comment} is the text with texi removed, should be very simple
- text.
- @var{$simple_text} is the text formatted in string context
- with minimal formatting but no elements.
- @end deffn
- @xref{HTML Title Page Customization}, for specifics about the title
- page handling.
- @node Other and unknown commands
- @section Customizing other commands, and unknown commands
- @cindex skipped command
- @cindex unknown command
- Many commands without braces are available in Texinfo, sometimes with
- a specific syntax. For example we have @code{@@sp}, @code{@@noindent},
- @code{@@documentlanguage}, @code{@@oddheading}, @code{@@headings},
- @code{@@shortcontents}, @code{@@shorttitlepage} or @code{@@comment}.
- @command{texi2any} interprets
- some of these commands and some functions or variables are used for
- their formatting or to access their information.
- In the default case, however, most of these constructs are ignored.
- It is possible to change how the things following these commands
- on the line are handled, what is considered to be an arg for those
- commands and it is also possible to keep them instead of discarding
- them such that it is possible to handle them specially, with the
- same function than the one used for unknown commands.
- @vindex %misc_command
- Those special commands without braces are the key of a hash:
- @code{%misc_command}. The associated value is a reference on a
- hash enabling to set the properties of these commands. The
- keys of this hash reference is the name of a property, the value
- is the value of the property. For example here we have @code{line}
- for the @code{arg} property for the @code{command} @@-command.
- @example
- $misc_command@{'command'@} = @{'arg' => 'line', 'skip' => 'space'@};
- @end example
- The properties and possible values are:
- @table @code
- @item skip
- This property enables to set what is skipped after the command arguments.
- Here are the possible values:
- @table @code
- @item line
- The remaining of the line is skipped.
- @item space
- Spaces are skipped but not newline.
- @item whitespace
- Spaces are skipped
- @item linewhitespace
- Spaces are skipped if there are only spaces remaining on the line.
- @item linespace
- Spaces are skipped, but not newline if
- there are only spaces remaining on the line
- @end table
- @item arg
- If the associated value is @code{line} the line is considered to be the
- argument. If it is a number it is the number of args (separated by spaces).
- @item keep
- If true the args and the macro are kept, otherwise they are discarded.
- The defaut is to have @code{keep} undef for all the commands.
- If @code{keep} is true for @code{@@verbatiminclude} the default
- action for this macro is not done.
- @end table
- These commands are processed by the @code{misc_command_line} function
- reference. This is somehow redundant with @ref{HTML Customization for
- Title Commands} xx.
- @deftypefn {Function Reference} {($command, $line, $result)} misc_command_line $command $line \@@args \@@stack \%state
- @var{$command} is the @@-command name. @var{$line} is what the main program
- would leave on the line. @var{\@@args} holds the @@-command arguments.
- @var{\@@stack} is an opaque variable.
- @var{\%state} holds informations about the current context.
- The result is the @@-command that should be considered in the
- main program, the line that should be processed further and
- the result of the command formatting.
- @end deftypefn
- Commands which do not appear in the hashes
- @code{%simple_map}, @code{%simple_map_pre},
- @code{%simple_map_texi}, @code{%line_command_map} or @code{%misc_command},
- or that appear in
- @code{%misc_command} but with @code{keep} true are processed by the
- following function reference:
- @deftypefn {Function Reference} {($result_line, $result, $result_text, $message)} unknown $command $line $pass
- @var{$command} is the @@-command, @var{$line} is the line following
- the @var{$command}. @var{$pass} is the pass of texi2html
- (@pxref{texi2any's Three Passes}). @var{$result} is a boolean. If it
- is true then the other return values are taken into account otherwise
- the default actions are used. In case @var{$result} is true,
- @var{$result_line} is the new line to be processed further,
- @var{$result_text} is the resulting formatted text and @var{$message},
- if defined is a message outputted to the output with line number added
- by @command{texi2any}.
- @end deftypefn
- Commands with braces not specified above
- nor in @code{%style_map}, @code{%style_map_pre} and
- @code{%style_map_texi} are processed
- by the following function reference
- @deftypefn {Function Reference} {($result, $result_text, $message)} unknown_style $command $text \%state $no_close $no_open
- @var{$command} is the @@-command, @var{$text} is the text appearing within
- the braces (allready formatted).
- @var{\%state} holds informations about the current context.
- If @var{$text} is split in paragraphs each paragraph is passed through
- the function, and @var{$no_close} is true if it is not the last paragraph,
- while @var{$no_open} is true if it is not the first paragraph.
- @var{$result} is a boolean. If it is true then the other return
- values are taken into account otherwise the default actions are
- used. In case @var{$result} is true, @var{$result_text} is the resulting
- formatted text
- and @var{$message}, if defined is a message outputted to the output
- with line number added by @command{texi2any}.
- @end deftypefn
|