From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- help/uk-tex-faq/CHANGES-3.16b | 55 + help/uk-tex-faq/CHANGES-3.16c | 52 + help/uk-tex-faq/CHANGES-3.17 | 58 + help/uk-tex-faq/CHANGES-3.18 | 46 + help/uk-tex-faq/CHANGES-3.19 | 67 + help/uk-tex-faq/CHANGES-3.19a | 44 + help/uk-tex-faq/CHANGES-3.19c | 44 + help/uk-tex-faq/CHANGES-3.19d | 34 + help/uk-tex-faq/CHANGES-3.20 | 40 + help/uk-tex-faq/CHANGES-3.21 | 47 + help/uk-tex-faq/CHANGES-3.22 | 45 + help/uk-tex-faq/CHANGES-3.23 | 50 + help/uk-tex-faq/CHANGES-3.24 | 41 + help/uk-tex-faq/CHANGES-3.25 | 47 + help/uk-tex-faq/CHANGES-3.26 | 59 + help/uk-tex-faq/CHANGES-3.27 | 43 + help/uk-tex-faq/CHANGES-3.28 | 66 + help/uk-tex-faq/ChangeLog | 17802 ++++++++++++++++++++++++++++++++++ help/uk-tex-faq/Makefile | 226 + help/uk-tex-faq/Makefile-CTAN | 103 + help/uk-tex-faq/README | 34 + help/uk-tex-faq/archive.cfg | 13 + help/uk-tex-faq/dirctan.tex | 990 ++ help/uk-tex-faq/faq-adj-types.tex | 3671 +++++++ help/uk-tex-faq/faq-backgrnd.tex | 1220 +++ help/uk-tex-faq/faq-biblio.tex | 1468 +++ help/uk-tex-faq/faq-bits+pieces.tex | 1174 +++ help/uk-tex-faq/faq-docs.tex | 1305 +++ help/uk-tex-faq/faq-dvi.tex | 148 + help/uk-tex-faq/faq-fmt-conv.tex | 465 + help/uk-tex-faq/faq-fonts.tex | 1316 +++ help/uk-tex-faq/faq-getit.tex | 361 + help/uk-tex-faq/faq-graphics.tex | 1035 ++ help/uk-tex-faq/faq-how-do-i.tex | 4134 ++++++++ help/uk-tex-faq/faq-hyp+pdf.tex | 636 ++ help/uk-tex-faq/faq-images.tex | 25 + help/uk-tex-faq/faq-install.tex | 1021 ++ help/uk-tex-faq/faq-intro.tex | 203 + help/uk-tex-faq/faq-jot-err.tex | 2467 +++++ help/uk-tex-faq/faq-lab-ref.tex | 182 + help/uk-tex-faq/faq-litprog.tex | 81 + help/uk-tex-faq/faq-mac-prog.tex | 3724 +++++++ help/uk-tex-faq/faq-projects.tex | 644 ++ help/uk-tex-faq/faq-support.tex | 188 + help/uk-tex-faq/faq-symbols.tex | 613 ++ help/uk-tex-faq/faq-t-g-wr.tex | 467 + help/uk-tex-faq/faq-texsys.tex | 488 + help/uk-tex-faq/faq-the-end.tex | 167 + help/uk-tex-faq/faq-wdidt.tex | 2142 ++++ help/uk-tex-faq/faq.cls | 93 + help/uk-tex-faq/faq.sty | 1281 +++ help/uk-tex-faq/faqfont.cfg | 4 + help/uk-tex-faq/faqfont.cfg.cmfonts | 6 + help/uk-tex-faq/faqfont.cfg.lmfonts | 19 + help/uk-tex-faq/faqfont.cfg.mbvj | 11 + help/uk-tex-faq/faqfont.cfg.ugm | 12 + help/uk-tex-faq/filectan.tex | 107 + help/uk-tex-faq/gather-faqbody.tex | 57 + help/uk-tex-faq/install-CTAN | 48 + help/uk-tex-faq/letterfaq.pdf | Bin 0 -> 2933477 bytes help/uk-tex-faq/letterfaq.tex | 64 + help/uk-tex-faq/locations.mk | 17 + help/uk-tex-faq/markup-syntax | 237 + help/uk-tex-faq/newfaq.pdf | Bin 0 -> 3094571 bytes help/uk-tex-faq/newfaq.tex | 67 + 65 files changed, 51374 insertions(+) create mode 100644 help/uk-tex-faq/CHANGES-3.16b create mode 100644 help/uk-tex-faq/CHANGES-3.16c create mode 100644 help/uk-tex-faq/CHANGES-3.17 create mode 100644 help/uk-tex-faq/CHANGES-3.18 create mode 100644 help/uk-tex-faq/CHANGES-3.19 create mode 100644 help/uk-tex-faq/CHANGES-3.19a create mode 100644 help/uk-tex-faq/CHANGES-3.19c create mode 100644 help/uk-tex-faq/CHANGES-3.19d create mode 100644 help/uk-tex-faq/CHANGES-3.20 create mode 100644 help/uk-tex-faq/CHANGES-3.21 create mode 100644 help/uk-tex-faq/CHANGES-3.22 create mode 100644 help/uk-tex-faq/CHANGES-3.23 create mode 100644 help/uk-tex-faq/CHANGES-3.24 create mode 100644 help/uk-tex-faq/CHANGES-3.25 create mode 100644 help/uk-tex-faq/CHANGES-3.26 create mode 100644 help/uk-tex-faq/CHANGES-3.27 create mode 100644 help/uk-tex-faq/CHANGES-3.28 create mode 100644 help/uk-tex-faq/ChangeLog create mode 100644 help/uk-tex-faq/Makefile create mode 100644 help/uk-tex-faq/Makefile-CTAN create mode 100644 help/uk-tex-faq/README create mode 100644 help/uk-tex-faq/archive.cfg create mode 100644 help/uk-tex-faq/dirctan.tex create mode 100644 help/uk-tex-faq/faq-adj-types.tex create mode 100644 help/uk-tex-faq/faq-backgrnd.tex create mode 100644 help/uk-tex-faq/faq-biblio.tex create mode 100644 help/uk-tex-faq/faq-bits+pieces.tex create mode 100644 help/uk-tex-faq/faq-docs.tex create mode 100644 help/uk-tex-faq/faq-dvi.tex create mode 100644 help/uk-tex-faq/faq-fmt-conv.tex create mode 100644 help/uk-tex-faq/faq-fonts.tex create mode 100644 help/uk-tex-faq/faq-getit.tex create mode 100644 help/uk-tex-faq/faq-graphics.tex create mode 100644 help/uk-tex-faq/faq-how-do-i.tex create mode 100644 help/uk-tex-faq/faq-hyp+pdf.tex create mode 100644 help/uk-tex-faq/faq-images.tex create mode 100644 help/uk-tex-faq/faq-install.tex create mode 100644 help/uk-tex-faq/faq-intro.tex create mode 100644 help/uk-tex-faq/faq-jot-err.tex create mode 100644 help/uk-tex-faq/faq-lab-ref.tex create mode 100644 help/uk-tex-faq/faq-litprog.tex create mode 100644 help/uk-tex-faq/faq-mac-prog.tex create mode 100644 help/uk-tex-faq/faq-projects.tex create mode 100644 help/uk-tex-faq/faq-support.tex create mode 100644 help/uk-tex-faq/faq-symbols.tex create mode 100644 help/uk-tex-faq/faq-t-g-wr.tex create mode 100644 help/uk-tex-faq/faq-texsys.tex create mode 100644 help/uk-tex-faq/faq-the-end.tex create mode 100644 help/uk-tex-faq/faq-wdidt.tex create mode 100644 help/uk-tex-faq/faq.cls create mode 100644 help/uk-tex-faq/faq.sty create mode 100644 help/uk-tex-faq/faqfont.cfg create mode 100644 help/uk-tex-faq/faqfont.cfg.cmfonts create mode 100644 help/uk-tex-faq/faqfont.cfg.lmfonts create mode 100644 help/uk-tex-faq/faqfont.cfg.mbvj create mode 100644 help/uk-tex-faq/faqfont.cfg.ugm create mode 100644 help/uk-tex-faq/filectan.tex create mode 100644 help/uk-tex-faq/gather-faqbody.tex create mode 100644 help/uk-tex-faq/install-CTAN create mode 100644 help/uk-tex-faq/letterfaq.pdf create mode 100644 help/uk-tex-faq/letterfaq.tex create mode 100644 help/uk-tex-faq/locations.mk create mode 100644 help/uk-tex-faq/markup-syntax create mode 100644 help/uk-tex-faq/newfaq.pdf create mode 100644 help/uk-tex-faq/newfaq.tex (limited to 'help/uk-tex-faq') diff --git a/help/uk-tex-faq/CHANGES-3.16b b/help/uk-tex-faq/CHANGES-3.16b new file mode 100644 index 0000000000..1a9ab7d229 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.16b @@ -0,0 +1,55 @@ +Changes in version 3.16c + +This file incorporates the changes from version 3.16 that previously +appeared in file CHANGES-3.16a and -3.16b; new changes for this +release (3.16c) are marked with a plus ("+") sign. + + +New answer: + +Label isdef: "is this command defined?" tests + Label optionclash: clashing package options error in LaTeX + +Revised answers: + +Label bibprefixsort: two new examples + +Label citeURL: provide a list (rather than a bunch) of alternative + styles, mention babelbib + Label ECfonts: reword discussion of mathematics and EC fonts (i.e., + emphasise that there's no direct relation) + Label filename: extend macro definitions, hopefully expanding the + usefulness and usability of the answer + Label hyperdupdest: other sources of the error than repeated pages + Label minitoc: corrected error in q-minitoc code, tidy comments + Label minxampl: include the word "minimal", since it's a common search term + +Label multirow: mention the case of multicolumn-multirow + Label music: mention Lilypond as a source of TeX-compatible music + +Label music: correct Web output of package list at end of answer + +Label oarglikesect: mention kernel command \@dblarg + Label poster: mention Nicola Talbot's experimental flowfram layout package + +Label secthead: rewritten accounts of sectsty & titlesec + Label texinfo: rewritten in parts, following a reader comment + Label texsystems: miktex installation has changed with v2.5 + Label tutbitslatex: added pointers to TUG-maintained material on fonts + +Label tutbitslatex: added pointer to Fauske's page on PGF/TikZ + Label virtualfonts: re-thought through + +Label watermark: noted that package draftcopy doesn't work with pdflatex, + +Label watermark: mention draftwatermark + +Label whatbst: correct reed.edu link + +Bugfixes: + Label cmdstar: part of the example code was just wrong + Label enumerate: unclarity in text caused by a typo + Bug in "introduction=yes" HTML code corrected + Label atsigns: mark-up error caused curious HTML output (editorial + improvement too) + +Release dates are now represented in ISO format (yyyy-mm-dd) -- + previously we used the LaTeX format, using solidus instead of hyphen + +Future releases: + Despite missing the nominal "end August 2006" delivery (through an + unfortunate combination of events), I'm aiming to maintain the + stream of (approximately) monthly "bugfix" releases. There are no + current plans for a major release, though work on the new web-based + version continues. + +Robin Fairbairns +2006-10-02 diff --git a/help/uk-tex-faq/CHANGES-3.16c b/help/uk-tex-faq/CHANGES-3.16c new file mode 100644 index 0000000000..8a651ecab8 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.16c @@ -0,0 +1,52 @@ +Changes in version 3.16c + +This file incorporates the changes from version 3.16 that previously +appeared in file CHANGES-3.16a and -3.16b; new changes for this +release (3.16c) are marked with a plus ("+") sign. + + +New answer: + +Label isdef: "is this command defined?" tests + Label optionclash: clashing package options error in LaTeX + +Revised answers: + +Label bibprefixsort: two new examples + +Label citeURL: provide a list (rather than a bunch) of alternative + styles, mention babelbib + Label ECfonts: reword discussion of mathematics and EC fonts (i.e., + emphasise that there's no direct relation) + Label filename: extend macro definitions, hopefully expanding the + usefulness and usability of the answer + Label hyperdupdest: other sources of the error than repeated pages + Label minitoc: corrected error in q-minitoc code, tidy comments + Label minxampl: include the word "minimal", since it's a common search term + +Label multirow: mention the case of multicolumn-multirow + Label music: mention Lilypond as a source of TeX-compatible music + +Label music: correct Web output of package list at end of answer + +Label oarglikesect: mention kernel command \@dblarg + Label poster: mention Nicola Talbot's experimental flowfram layout package + +Label secthead: rewritten accounts of sectsty & titlesec + Label texinfo: rewritten in parts, following a reader comment + Label texsystems: miktex installation has changed with v2.5 + Label tutbitslatex: added pointers to TUG-maintained material on fonts + +Label tutbitslatex: added pointer to Fauske's page on PGF/TikZ + Label virtualfonts: re-thought through + +Label watermark: noted that package draftcopy doesn't work with pdflatex, + +Label watermark: mention draftwatermark + +Label whatbst: correct reed.edu link + +Bugfixes: + Label cmdstar: part of the example code was just wrong + Label enumerate: unclarity in text caused by a typo + Bug in "introduction=yes" HTML code corrected + Label atsigns: mark-up error caused curious HTML output (editorial + improvement too) + +Release dates are now represented in ISO format (yyyy-mm-dd) -- + previously we used the LaTeX format, using solidus instead of hyphen + +Future releases: + There are no current plans for a major release, though work on the + new web-based version continues. + +Robin Fairbairns +2006-12-18 diff --git a/help/uk-tex-faq/CHANGES-3.17 b/help/uk-tex-faq/CHANGES-3.17 new file mode 100644 index 0000000000..c5c26c2c45 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.17 @@ -0,0 +1,58 @@ +Changes in version 3.16d + +This file incorporates the changes from version 3.16 that previously +appeared in file CHANGES-3.16a, -3.16b and -3.16c; new changes for +this release (3.16d) are marked with a plus ("+") sign. + + +New answers: + +Label biblatex: discusses BibTeX replacements (amsrefs, biblatex) + +Label checksum: "checksum error in font" message + +Label figurehere: how to avoid floating figures/tables altogether + +Label entercompmode: "entering compatibility mode" message + +Label fontsize: how to program arbitrary font sizes in LaTeX + +Label latexqual: assessing the quality of your LaTeX + +Label mathonlyref: only referenced equations are numbered + +Label run-fn-nos: running footnote numbers when class numbers per chapter + +Revised answers: + +Label altabcr: extended examples and tidied a bit + +Label BibTeXing: add reference to Shell & Hoadley's btxFAQ + +Label books mention LaTeX Graphics Companion 2nd edition; use ISBN-13 + +Label CD: now couched in terms of the TeX collection + +Label changebar: mention changes.sty + +Label commercial:update details of Textures + +Label dec_comma: mention numprint as possible way to get things right + +Label docpictex: mention PiCTeX summary now on CTAN + +Label fonts-pln: mention pdcmac bundle + +Label ftnsect: rewrite to make recommendations clearer + +Label getbitmap: reworded to suggest that bitmaps aren't standard any more + +Label LaTeXtoPlain: suggest ways forward for aspiring translators + +Label make: mention autolatex + +Label man-latex: mention Grätzer's "short course" + +Label minxampl: editorial work, including (perhaps) clarifying web version + +Label newfont*: was newfont; content rearranged between this, plninltx* and + the new label fontsize + +Label newfunction: expand description + +Label ol-books: TeX by Topic now available from CTAN + +Label papersize: mention Acrobat Reader's default scaling + +Label plninltx*: was plninltx; content rearranged between this, newfont* and + the new fontsize + +Label protect: clarify lists of commands known to be fragile, etc + +Label psfchoice: add links to papers about maths fonts in tex; add fouriernc, + mathdesign/FS Garamond, kpfonts, minionpro and mnsymbol + +Label running-nos: rearrange to emphasise package chngctr + +Label tabcellalign: rationalised, reduced range of recommendations + +Label tocbibind: mention \phantomsection for when doing the job "by hand" + +Label twooptarg: mention the xargs package + +Label unkgrfextn: mention grffile package + +Label wdnohyph: mention \uchyph (not that it's much use) + +Bugfixes: + +Future releases: + There are no current plans for a major release, though work on the + new web-based version continues. + +Robin Fairbairns +2007-10-?? diff --git a/help/uk-tex-faq/CHANGES-3.18 b/help/uk-tex-faq/CHANGES-3.18 new file mode 100644 index 0000000000..75f90d12bc --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.18 @@ -0,0 +1,46 @@ +Changes in version 3.18 + +This file lists changes since its most recent release (with version 3.17 +of the FAQ). + +New answers: + +Label acroantics:getting Adobe Reader to produce the right size output + +Label inst-scut: introduction to the old inst-miktex and to inst-tds-zip + +Label inst-tds-zip: installing a package using .tds.zip files + +Label onna-stick:making MikTeX run from a memory key + +Label papergeom: how to select the correct paper geometry + +Label prept1font:the generating metrics part of old instt1font + +Label tds-zip: brief outline of TDS ZIP files + +Revised answers: + +Label biblatex: now discusses crossTeX too + +Label bibtranscinit: discuss truly excessive sets of initials + +Label chngmargonfly: mention new changepage package + +Label findfiles: correct one of the search address links + +Label fmtconv: add tex4ht as a route to word format, tidy up + +Label footintab: I _think_ the answer now says what I meant it to say! + +Label labelfig: mention (auto-)pst-pdf + +Label letterspace: microtype now covers the functionality of old letterspace + +Label luatex: detail some recent developments + +Label oddpage: mention new changepage package + +Label papersize: rewritten as intro to new acroantics and papergeom + +Label parallel: mention the pdfcolparallel package + +Label patch: rewrite to downplay patch, add mention of ted and etoolbox + +Label pkfix: mention pkfix-helper + +Label poster: updated with further informative links, etc. + +Label protect: rewritten (again) + +Label psfchoice: add kpfonts, link to the font catalogue at various points + mention font catalogue (as a whole) and maths font survey +Web interface: + A mechanism is now in place, whereby old question labels may be used to get + to the nearest current equivalent of the question. It does not cover *all* + old questions: please mail faq-devel@tex.ac.uk if you have a problem with an + old question label that you have stored. + +Bugfixes: + Bits of silliness in the web interface continue to surface. They get mended + as soon as I work out how; the most recent was a tendency not to translate + \textbackslash -- I know how to correct it, but not why it happened... + +Robin Fairbairns +2008-06-20 diff --git a/help/uk-tex-faq/CHANGES-3.19 b/help/uk-tex-faq/CHANGES-3.19 new file mode 100644 index 0000000000..1e429919a2 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.19 @@ -0,0 +1,67 @@ +Changes in version 3.19 + +This file lists changes since its most recent release (with version 3.18 +of the FAQ). + +New answers: + +Label grffilenames: "modern" file names in graphics + +Label keyval: using key-value input in macros and package + +Label linmacnames: why non-letters in macro names are a bad idea + +Label osf: using fonts with "old-style" numbers + +Label pdf-fig-chars: disappearing glyphs in pdfTeX figures (from Thanh) + +Label texorpdf: error "not allowed in PDFDocEncoded string" + +Label texthings: what all these TeX names are + +Label usesymb: using symbols + +Label whatmacros:brief outline of macros for "bits and pieces" section + +Label wideflt: centre a float wider than text area + +Relabelled answers: + +Label xfigetc: discusses xfig and asymptote (so far) (was label xfig) + +Revised answers: + +Label askquestion: what to do if your minimal example needs a figure + +Label acroantics:content of old label outszwrng merged in + +Label biblatex: updated, now also mentions biber + +Label books: mention Lulu version of TeX by Topic + +Label chngmargonfly: mention addlines package + +Label compactbib:mention the compactbib package (surprise!) + +Label drawing: describe pictex, epic and eepic (all previously skated over) + +Label editors: mention texworks + +Label figurehere:mention \MakeSorted from perpage package + +Label fonts-pln: mention varisize + +Label footnpp: mention zref package perpage module + +Label ftncapt: clarification (I hope) + +Label latex2html:mention plastex + +Label latexe: reworked for clarity + +Label latexpronounce: following on from latexe + +Label linenos: numline package now obsolete + +Label luatex: tidied up, now I'm clearer about LuaTeX, myself + +Label logos: clarified, in light of changes to printing layout we now use + +Label man-latex: added pointer to first-latex-doc + +Label marginpkgs:changepage package supplants chngpage + +Label mcite: mention mciteplus and collref packages + +Label nonfree: explain what went wrong and what is happening + +Label ifpdf: mention ifxetex and ifluatex + +Label noroom: tidied up e-TeX related part of answer + +Label ref-doc: mention latexcheat + +Label setURL: mention spaces and hyphens options of url.sty + +Label texsystems:mention MikTeX-for-Linux + +Label wordcount: mention TeXcount + +Label writecls: mention Oberdiek's splendid source2e pdf file + +Label wygexpts: preview-latex now part of auctex + +Deleted answers: + +Label outszwrng +(remember, as of the previous release, links to "old" labels remain +valid, pointing to an answer that is as near relevant as possible) + +Web interface: + The initial list of questions no longer gives a URL containing all + the answers -- Google was returning that for every match, which + didn't help! + All links to CTAN files, directory .zips and directories for + browsing are now http, and there's no longer any mention of .tar.gz + archives of CTAN directories (since they're no longer available) + +Robin Fairbairns +2009-06-10 diff --git a/help/uk-tex-faq/CHANGES-3.19a b/help/uk-tex-faq/CHANGES-3.19a new file mode 100644 index 0000000000..a9d2e1b0a4 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.19a @@ -0,0 +1,44 @@ +Changes in version 3.19 + +This file lists changes since its most recent release (with version 3.18 +of the FAQ). + +New answers: +[none yet] + +Label grffilenames: "modern" file names in graphics + +Label keyval: using key-value input in macros and package + +Label linmacnames: why non-letters in macro names are a bad idea + +Label osf: using fonts with "old-style" numbers + +Label pdf-fig-chars: disappearing glyphs in pdfTeX figures (from Thanh) + +Label texorpdf: error "not allowed in PDFDocEncoded string" + +Label texthings: what all these TeX names are + +Label usesymb: using symbols + +Label whatmacros:brief outline of macros for "bits and pieces" section + +Label wideflt: centre a float wider than text area + +Relabelled answers: +[none yet] + +Label xfigetc: discusses xfig and asymptote (so far) (was label xfig) + +Revised answers: + +Label impgraph: changed the question title + +Label man-latex: mention Philip Hirschhorn's "getting up and running..." + +Label mathstext: correct discussion of \textrm in maths + +Deleted answers: +[none yet] + +Label outszwrng +(remember, as of the previous release, links to "old" labels remain +valid, pointing to an answer that is as near relevant as possible) + +Web interface: +[no changes yet] + The initial list of questions no longer gives a URL containing all + the answers -- Google was returning that for every match, which + didn't help! + All links to CTAN files, directory .zips and directories for + browsing are now http, and there's no longer any mention of .tar.gz + archives of CTAN directories (since they're no longer available) + +Robin Fairbairns +2009-06-16 diff --git a/help/uk-tex-faq/CHANGES-3.19c b/help/uk-tex-faq/CHANGES-3.19c new file mode 100644 index 0000000000..dacd59d989 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.19c @@ -0,0 +1,44 @@ +Changes in version 3.19c + +This file lists changes since its most recent release (with version 3.19a +of the FAQ -- version 3.19b was a bug-fix patch). + +New answers: + + +Relabelled answers: + + +Revised answers: + +Label adobetypen: mention xetex and luatex where previously said OTF unusable + +Label amfonts: mention DVI dis-/re-assembly to get rid of am fonts refs + +Label buildbib: mention Google Scholar's bibtex output + +Label cd: update details of the TeX collection + +Label context: attempt closer tally with reality (further input welcome!) + +Label doc-dirs: Herbert Voss's "tips and tricks" has gone + +Label errmissitem: remove spurious command in example code + +Label findfiles: update address given for dante search page + +Label figurehere: mention the re-implemented here package + +Label footintab: mention threeparttablex package + +Label keyval: replace keys3 mention with l3keys[2e] + +Label latex3: tidy, update broken references + +Label luatex: better English(!), mention release of 0.50.0 + +Label mathml: correct link to mathtex + +Label nonfree: the non-free tree has disappeared... + +Label patch: sort out examples + +Label privinst: change recommended use of kpsewhich + default home texmf is different for MacTeX + +Label psfchoice: mention txfontsb + +Label what-tds: change recommended use of kpsewhich (as privinst) + + (throughout): use mirrors.ctan.org rather than www.tex.ac.uk + where appropriate + +Deleted answers: + + +Web interface: + One bug fix (code examples containing \let tended to be lost) + +Robin Fairbairns +2010-01-19 diff --git a/help/uk-tex-faq/CHANGES-3.19d b/help/uk-tex-faq/CHANGES-3.19d new file mode 100644 index 0000000000..f447a03924 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.19d @@ -0,0 +1,34 @@ +Changes in version 3.19d + +This file lists changes since its most recent release (with version 3.19c +of the FAQ). + +New answers: + +Label plaintex: explains "writing in tex", was part of Label whattex + +Relabelled answers: + + +Revised answers: + +Label codelist: mention the minted package + +Label docs: single reference to epslatex (via catalogue) + +Label etex: add ctan link + +Label filesused: rewrite to clarify the issue with \input + +Label luatex: now version 0.60.0 + +Label fonts-pln: replace some complete gibberish (undoing mis-edits, I guess) + +Label parallel: mention the pdfcolparcolumns package + +Label seccntfmt: remove superfluous \expandafter in programming, tidy text + +Label tabcellalign: editorial on \PBS macro discussion + +Label texfuture: rehashed, in light of today's situation + +Label whattex: simplified by removal of material for Label plaintex + +Deleted answers: + + +Web interface: + Extension of links to catalogue, to packages "distributed as part of..." + Abbreviate header text (omitting long list of "helpers" -- which will + ultimately be available in a separate file online) + Convert all alphabetic SGML entities to use numeric equivalents + +Robin Fairbairns diff --git a/help/uk-tex-faq/CHANGES-3.20 b/help/uk-tex-faq/CHANGES-3.20 new file mode 100644 index 0000000000..346afcbdb1 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.20 @@ -0,0 +1,40 @@ +Changes since version 3.19d + +New answers: + +Label initex: why is there no initex? + +Label sysunix: TeX for Unix and GNU/Linux systems, revised from TeXsystems + added the tex-gpc distribution + +Label syswin: TeX for Windows 32, etc., systems, revised from TeXsystems + +Label sysmac: TeX for Macintosh systems, revised from TeXsystems + +Label sysother: TeX for other systems, revised from TeXsystems + +Relabelled answers: + + +Revised answers: + +Label baselinepar: rewritten, taking info account a recent issue from ctt + +Label biblatex: can now give a CTAN link for Biber + +Label cd: reworded to reflect current realities + +label extsizes: mention some classes that have non-standard font sizes + +label filename: bugfix for (simple) macros saving "current file name" + +Label letterclass: mention knuth's letter stuff and isodoc class + +Label manymathalph:correction to us of controls on alphabets in bm + +Label mathml: recognise STIX fonts as potential contribution + +Label mcite: revtex 4.1 has its own mechanism + +Label metrics: rewrite text about LY1 encoding + +Label multidoc: mention docmute, standalone and subdocs + +Label nopagebrk: correct assertion about lists vs. samepage environment + +Label poster: mention beamerposter + +Label psfchoice: add URW Classico to the list + +Label reallyblank: mention emptypage package + +Label slidecls: mention lecturer and present packages (neither is a class) + +Label TeXsystems: now a list of links to the new sys* labels + +Label widows: rewritten with clarification from Peter Moulder + +Deleted answers: + + +Web interface: + Links to packages, etc., now use http://mirror.ctan.org + +Robin Fairbairns diff --git a/help/uk-tex-faq/CHANGES-3.21 b/help/uk-tex-faq/CHANGES-3.21 new file mode 100644 index 0000000000..1d7abd0014 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.21 @@ -0,0 +1,47 @@ +Changes since version 3.20 + +New answers: + +Label spawnprog: the \write18 mechanism for spawning programs + +Label whatengine: am I running pdfTeX, XeTeX or luaTeX? + +Label write: the \write primitive for writing text files + +Relabelled answers: + + +Revised answers: + +Label biblatex: mention bibtex8, even though biblatex+biber are winning + +Label codelist: extend coverage of minted package (and Pygments) + +Label commercial: remove Y&Y (not commercial any longer) + +Label dpfloat: mention floatpage package + +Label drawing: mention "embedded source" packages for asy, gplot, mp + +Label editors: rationalise, removing "wildcard" + +Label filename: add currfile, remove "DIY" code (which never worked right) + +Label floats: update discussion of morefloats package, mention etex.sty + +Label fmtconv: mention openoffice route for MS-word + +Label gethelp: link "latex community" and "latex stack exchange" + +Label graphicspath: rephrase discussion of \graphicspath + +Label instt1font: attempt to clarify updmap vs. updmap-sys + +Label labelfig: mention (new) lpic package + +Label latex2html: link to info on tug.org (note tex4ht now sourced there) + +Label mathml: link to info on tug.org + +Label music: rewritten following rearrangements on ctan + +Label nopagebrk: discuss \pagebreak, \nopagebreak (!) + +Label papergeom: discuss dvipdfm and its extensions + +Label psfchoice: report one (at least) known problem with [pt]xfonts + +Label pspreview: simplify, given that it's far less of a problem now + +Label ref-doc remove link to NASA latex ref, add link to gna.org one + +Label textflow: mention cutwin package + +Label tmupfl: mention morefloats package, with caveats + +Label verbwithin: mention cprotect package + +Label WYGexpts: drop "activetex" -- seems no longer available + +Label zerochap: rewrite for clarification + +Deleted answers: + +Label ifpdf: subsumed in new "whatengine" answer (link rerouted there) + +Label lollipop: no longer relevant (a pity) + +Web interface, etc.: + Some LaTeX command translations were broken, and have been mended + Work has started on a major reorganisation of the "fonts" section + +Robin Fairbairns diff --git a/help/uk-tex-faq/CHANGES-3.22 b/help/uk-tex-faq/CHANGES-3.22 new file mode 100644 index 0000000000..b874fc0814 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.22 @@ -0,0 +1,45 @@ +Changes since version 3.21 + +New answers: + +Label inlgrphapp: inline code to standalone graphics (new: gmp, mpgraphics) + +Label inst-texlive: install a package from TeX live + +Label startup: getting started with (La)TeX + +Relabelled answers: + + +Revised answers: + +Label archives: redo and update for 2 CTAN archives, cover mirror.ctan.org + +Label codelist: updated and reformatted + +Label drawing: removed inline code stuff to +inlgrphapp + mention XeTeX driver for pstricks + +Label dtx: mention sty2dtx + +Label findfiles: a more uniform description of what happens + +Label fontsize: deal with omissions from fix-cm + +Label hash: describe command-defs-within-commands in LaTeX syntax, too + +Label logos: mention hologos, metalogo + +Label ltxcmds: show use of (la)texdef package + +Label luatex: correct pdfTeX version number, add links to distributions + +Label man-latex: add CTAN reference for "Getting something out of LaTeX" + +Label mathml: expand font details to all known current free maths fonts + +Label mpprologues: mpsproof.tex has now moved on the archive + +Label oddpage: clarify use of \ifoddpage for LaTeX users + +Label pdftexgraphics: describe use of auto-pst-pdf + +Label psfchoice: discuss MathTime Pro 2 Lite fonts + +Label scriptfonts: mention rsfso, mnsymbol, mathabx and urwchancal + +Label struttab: describe use of makecell + +Label textrace: offer mf2pt1 (about time, too!) + +Label uploads: general update, including mirroring technologies + +Label xetex: add link to documentation + +Label xfigetc: replace link for jfig + +Deleted answers: + + +Web interface, etc.: + Work on a slightly more sane layout is under way, but not yet in a + shape to be released + Since the start of March 2011, "last edited" tags have been added to/updated + in answers that have changed + +Robin Fairbairns diff --git a/help/uk-tex-faq/CHANGES-3.23 b/help/uk-tex-faq/CHANGES-3.23 new file mode 100644 index 0000000000..47449bc125 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.23 @@ -0,0 +1,50 @@ +Changes since version 3.22 + +New answers: + +Label book-lists: redirector to the dismembered parts of old "label books" + +Label ctan: summary of the salient points of the archives + +Label catalogue: outline of the CTAN catalogue + +Label latex-books: the LaTeX part of old "label books" + +Label other-books: the miscellanea from old "label books" + +Label subdepth: getting even subscripts in your maths + +Label tex-books: TeX and Plain TeX part of old "label books" + +Label type-books: typesetting part of old "label books" + +Relabelled answers: + + +Revised answers: + +Label altabcr: error can be caused by insufficient columns in a matrix + +Label clsvpkg: rewritten with a LaTeX 2e perspective (rather than 2.09) + +Label context: add detail following Hans Hagen's outline in Tugboat 100 + +Label destable: more details of caption above table + +Label doc-dirs: correct link to TUG India tutorials page + +Label drawing: link to intro doc on pgf/TikZ, and sparse docs of DraTeX + +Label gethelp: rewritten for (slightly) improved clarity + +Label hyphen: LuaTeX's hyphenation pattern loading is different + +Label keyval: references to expl3, xpackages replaced with l3* versions + keyval: mention getoptk + +Label labelfig: mention pst-layout; mention that pgf/TikZ is also capable + +Label latex2e: mention "frozen" state + +Label latex3: references to expl3, xpackages replaced with l3* versions + +Label latexqual: mention lacheck + +Label luatex: "clarify" statement about future changes to PDFTeX + luatex: updated versions mentioned; MikTeX now offers LuaTeX + +Label MF: mention sidelining of Metafont in the modern world + +Label patch: use letltxmacro where necessary + +Label RCS: mention gitinfo + +Label texthings: clarify description of luatex + +Label tfm: XeTeX and LuaTeX don't need TFM files + +Label underscore: \_ in OT1 encoding is bad news + +Label useMF: a step in removing archaic baggage from this answer + +Deleted answers: + +Label books: dismembered to produce the new *-books above (the + label is now redirected to book-lists) + +Web interface, etc.: + A small change to the HTML generation has (to the author's eye) + improved the appearance of pages on the web. There remain problems + in this area, despite the improvement. + +Robin Fairbairns diff --git a/help/uk-tex-faq/CHANGES-3.24 b/help/uk-tex-faq/CHANGES-3.24 new file mode 100644 index 0000000000..9217a662a4 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.24 @@ -0,0 +1,41 @@ +Changes since version 3.23 + +New answers: + +Label labelcount: use the "value" of a label in counter operations + +Label optclash: LaTeX package options clash + +Label printvar: print the contents of a "variable" + +Label unicode: "Unicode for TeX users" + +Relabelled answers: + + +Revised answers: + +Label bug: reworded in the light of more on-line help available + +Label dvi: tidied, mention of XeTeX and its XDV format + +Label ECfonts: brought up to date (a bit: more remains to be done) + +Label editors: updated comments about TeXworks + +Label include: clarification of page number constraint + +Label LaTeX3: add git repository link, mention state of formats + +Label latex-books: add "LaTeX Beginner's Guide" and Herbert Voss's UIT books + +Label mathml: outline the use of MathJax + +Label missbegdoc: rewritten to take account of the BOM issue + +Label multind: add amsmind and imakeidx packages + +Label music: reflect restructuring of fonts + +Label sysmac: mention root privilege requirement for MacTeX + +Label sysother: discourage any hope of a current VMS version + +Label tds: toned-down and untangled the text, a bit + +Label texthings: mention ProTeXt among distributions + +Label TUG* corrected contact details + +Label tutbitslatex: revise statement about Herbert Voss's mathmode book + incorporate para about TUG India tutorials from doc-dirs + +Label underline: remove obsolete statement about ulem docs + +Label virtualfonts: rewrite, improving clarity (I hope...) + +Label wordcount: add health warnings for detex-like counts + +Deleted answers: + +Label doc-dirs: subsumed in label tutbitslatex + +Web interface, etc.: + + +Robin Fairbairns diff --git a/help/uk-tex-faq/CHANGES-3.25 b/help/uk-tex-faq/CHANGES-3.25 new file mode 100644 index 0000000000..766f3062f3 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.25 @@ -0,0 +1,47 @@ +Changes since version 3.24 + +New answers: + +Label includeother:LaTeX refuses to \include from (some) other directories + +Relabelled answers: + + +Revised answers: + +Label acrobat: Rearranged and extended somewhat (dropped V-TeX details) + +Label bibinline: Outline use of the new usebib package + +Label citesort: Show how to do the job with biblatex + +Label cmdstar: Suggest use of xparse for *-commands + +Label crossref: Clarified wording, and removed incorrect "effect" of error + +Label eqnarray: Added link to Stefan Kottwitz blog entry on the problem + +Label euro: Updated note about using marvosym font + +Label extrabrace: Some clarification (and a new solution) + +Label filesused: Discuss mkjobtexmf + +Label findfont: Rewritten, downplaying Metafont and covering TTF and OTF + +Label footintab: Discuss tablefootnote package + +Label i18nbib: BibLaTeX is another candidate + +Label inlgrphapp: Add picture environment to list, mention picture package + +Label isitanum: Improve \testnum definition + +Label labelfig: Describe pinlabel package + +Label man-latex: Correct link to Chris Harrison's (now) tutorial; + Mention van Dongen's, Wilkins' and Buxbaum's offerings + +Label marginpkgs: Discuss zwpagelayout + +Label mfptutorials:Restore (lost) link to MetaFun manual + +Label noroom: Mention morewrites for lots of (pretend) output streams + +Label papergeom: Outline use of zwpagelayout package + +Label ref-doc: Added reference to macros2e document + +Label slashbox: Recommend diagbox package in preference to slashbox + +Label syswin32: Miktex 2.9 no longer beta ... so catch up! + +Label tutbitslatex:Rearrange stuff on pgf/tikz, after new management of site + +Label tutorials*: Changed question title to "... TeX-based systems" + +Label usesymb: Add fdsymbol, mdsymbol + +Label verbwithin: Suggest "v" argument type of xparse + +Label watermark: Discuss xwatermark and use of pdftk + +Label whatengine: Sort out erroneous wording, correct HTML of example code + +Deleted answers: + + +Web interface, etc.: + + +Robin Fairbairns diff --git a/help/uk-tex-faq/CHANGES-3.26 b/help/uk-tex-faq/CHANGES-3.26 new file mode 100644 index 0000000000..ed71bfd11e --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.26 @@ -0,0 +1,59 @@ +Changes since version 3.25 + +New answers: + +Label expl3-old: package needs a newer LaTeX 3 harness + +Label latex3-prog: learning LaTeX 3 programming + +Label repeat-num: repeat an operation a given number of times + +Label repeat-set: repeat an operation for each element of a set + +Label whatenv: brief outline of what environments are + +Relabelled answers: + + +Revised answers: + +Label acrobat: [tidying layout] + +Label archives: largely rewritten for "new" archive arrangements + +Label chapbib: show biblatex-based approach + +Label codelist: more on use of minted package + +Label complist: clarified description of "what's going on" + +Label cmdstar: clarified use of LaTeX 3, here + +Label conditional: suggest stampinclude for rapid (partial) compilation + +Label ctan: revised following recent changes to archive access + +Label dolldoll: elaborated "reasons" from a tex.stackexchange answer + +Label dpfloat: describe use of caption package for the job + +Label drawing: reword text about PGF/TikZ + +Label extsizes: describe use of scrextend package for document font sizes + +Label ftncapt: clarify example + +Label hyphenaccents: the "future" (unicode hyphenation tables) is here! + +Label ltxcmds: more detail of the latexdef application + +Label latexqual: add a proviso about l2tabu/nag + +Label make: add recommendation for arara + +Label man-latex: Nicola Talbot's stuff has moved to a new web site + +Label minxampl: discuss support packages + +Label nofm: suggest zref-lastpage + +Label oddpage: suggest the ifoddpage package + +Label patch: describe the regexpatch package + +Label pkgdoc: mention the site texdoc.net, miktex mthelp + +Label pdftexgraphics: mention pdftricks2 + +Label psfchoice: update mathdesign outline, add newtx and garamondx + +Label readML: Context can do the job (rather well, one understands ;-) + +Label readtex: suggest asking for a PDF instead ;-) + +Label spell: update, add recommendation for (exptl) spelling package + +Label struttab: removed internal macros in example of cellspace + +Label symbols: rearrange, and mention unicode maths symbol table + +Label tocloft: mention new (straightforward) etoc package + +Label uploads: rewritten for the (new) archive arrangements + +Label vertspacefloat: moved to a new location in question list + +Label virtualfonts: change question "title" to be a question + +Label xetex: change question "title" to match other projects' titles, + redo answer, based on a tex/sx post + +Deleted answers: + + +Web interface, etc.: + The "default archive" (used in links from answers) is now mirror.ctan.org + (i.e., it's not an archive, but a selector of a mirror of the archive) + +Robin Fairbairns +Hapless FAQer of Cambridge diff --git a/help/uk-tex-faq/CHANGES-3.27 b/help/uk-tex-faq/CHANGES-3.27 new file mode 100644 index 0000000000..f41f88cfa0 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.27 @@ -0,0 +1,43 @@ +Changes since version 3.26 + +New answers: + + +Relabelled answers: + + +Revised answers: + +Label buffovl: link to ghostscript and gsview homes, not CTAN + +Label catalogue: editorial clarification + +Label cmdstar: [tidying layout] + +Label commercial: remove mention of the (defunct) Textures distribution :-( + +Label dolldoll: editorial tidy (un-knotting tortuous text) + +Label dtx: suggest dtxgen + +Label dvipdfmgraphics: link to ghostscript home, not CTAN + +Label editors: add texstudio (to texworks) in list + +Label fontsize: recommend anyfontsize package, too + +Label footintab: clarify "table in minipage" (should have been "tabular") + +Label latexbug: removed "upload latex bug by email" (no longer available) + +Label luatex: revised for updates from the project, and clarified + +Label make: add arara and try; add vpp to ctan links list + +Label man-latex: two more links to "Dickimaw" books + +Label notWYSIWYG: rewritten after a bit of historical research + +Label osf: \oldstylenums does use bold face to match surrounding text + +Label otherprinters: link ghostscript home, not CTAN + +Label previewers: link ghostscript home, not CTAN + +Label psfchoice: mention newpx, give CTAN links for URW fonts in newpx,newtx + +Label pspreview: link ghostscript, gsview home, not CTAN + +Label recovertex: link ghostscript home, not CTAN + +Label repeatgrf: link ghostscript home, not CTAN + +Label scriptfonts: removed mention of ghostscript, add tg-chorus + +Deleted answers: + -Label y2k: removed as no longer relevant + +Web interface, etc.: + A statement of the FAQ's (PD) licence is shown in the introduction. + Now use standard glyph for arrows, rather than "hyphen-greater" + Translate \beta and \pi to greek letters rather than the letters' "names" + +Robin Fairbairns +Hapless FAQer of Cambridge diff --git a/help/uk-tex-faq/CHANGES-3.28 b/help/uk-tex-faq/CHANGES-3.28 new file mode 100644 index 0000000000..29409bb0a0 --- /dev/null +++ b/help/uk-tex-faq/CHANGES-3.28 @@ -0,0 +1,66 @@ +Changes since version 3.27 + +New answers: + +Label centre-flt: deals with center environment around a float + +Label cpy-srchpdf: replaces label srchpdf, and covers copying text, too + +Label getnff: support for fonts "not allowed" in distributions + +Label lollipop: restored entry, given new maintainer + +Label ltx-csv: how to deal with CSV files in LaTeX + +Label otf-maths: typeset maths using OpenType fonts + +Label parmoderr: about the error "not in outer par mode" + +Relabelled answers: + + +Revised answers: + +Label bibtexing: link to www.bibtex.org + +Label boldgreek: clarify some really old text + +Label catalogue: update in light of new www.ctan.org + +Label clsvpkg: clarify some distinctions + +Label cmdstar: \makeatletter was incorrectly placed in example + +Label commercial: remove entry for Micropress, Inc (once vTeX suppliers) + +Label conditional: discuss use of the tagging package + +Label context: editorial (for better relation to reality, one hopes ;-) + +Label custbib: discourage "beginners" from attempting biblatex styles + +Label dtx: add discussion of generating output from the files + +Label filesused: change reference from teTeX to TeX-live(!) + +Label findfont: tidy, add more reference details + +Label gethelp: add reference to TeX/StackExchange "starter" summary + +Label hyphexcept: deal, perfunctorily, with Unicode hyphenation + +Label hyphoff: editorial change only + +Label nohyph: {ditto} + +Label labelfig: discuss pdfrack + +Label latexandplain: re-write -- previous version seemed not to help, much + +Label latextoplain: re-dump my mental image of what goes on ... looks better + +Label ltxcmds: clarification (editorial changes only) + +Label makeindex: further work on xindy description + +Label mfptutorials: remove one dead link, refer to Voipio's TUGboat papers + +Label mp: MetaPost can also create SVG output + +Label music: update discussion of lilypond, and mention lilyglyphs pkg + +Label normalszmiss: rewritten (a simple answer is difficult to write "well"!) + +Label numbersets: add boondox, newpx and newtx fonts as a potential source + +Label oldfontnames: tidied up + +Label papergeom: remove special case for vTeX + +Label plninltx*: clarification (editorial changes only) + +Label psfchoice: provide link to +otf-maths + +Label readtex: add a bit about using on-line LaTeX servers + +Label slidecls: mention a beamer gallery linked from post in TeX/sx + +Label spell: suggest hunspell (which is even part of recent MacOS X) + +Label sysother: remove references to vTeX + +Label sysunix: remove mention of MikTeX/Unix, and references to vTeX + +Label tocloftwrong: add actual answer (as well as reference to answer...) + +Label usepictex: remove reference to vTeX + +Label verbwithin: suggest newverbs, verbatim box-writing (tcolorbox,verbatim) + +Label whereFAQ: remove link to texnik.de + +Label xspace: clarify, play down the value of the command + +Deleted answers: + +Label srchpdf: replaced by answer labelled cpy-srchpdf + +Web interface, etc.: + Links in the section at the end of each answer now go via the mirror + selector mirror.ctan.org (previously all links went via the Cambridge + CTAN node). + +Robin Fairbairns +Hapless FAQer of Cambridge diff --git a/help/uk-tex-faq/ChangeLog b/help/uk-tex-faq/ChangeLog new file mode 100644 index 0000000000..7eca576bcd --- /dev/null +++ b/help/uk-tex-faq/ChangeLog @@ -0,0 +1,17802 @@ +2014-06-10 Robin Fairbairns + + * texfaq2html: tidy blank lines + + * sanitize.pl: a few changes from -beta + + * gather-faqbody.tex: new version + + * faq-intro.tex: + * faq-mac-prog.tex + * faq-wdidt.tex: + * add-general.tex: \nothtml{\noindent}!!! + +2014-06-09 Robin Fairbairns + + * faq-how-do-i.tex (q-conditional): mention the tagging package + +2014-06-03 Robin Fairbairns + + * faq-bits+pieces.tex (q-dtx): first stab at description of "using" a + .dtx/.ins combination to produce packages and docs + +2014-05-30 Robin Fairbairns + + * faq-fmt-conv.tex (q-latextoplain): clarification (i hope!) + + * faq-backgrnd.tex (q-context): attempting a better path for beginners + +2014-05-21 Robin Fairbairns + + * faq-backgrnd.tex (q-readtex): dash off ref to online compilers + +2014-05-18 Robin Fairbairns + + * faq-t-g-wr.tex (q-oldfontnames): historic stuff cleared away, + slight rewording + +2014-05-07 Robin Fairbairns + + * faq-adj-types.tex (q-makeindex): work on description of using xindy + + * sanitize-beta.pl (sanitize_line): add \luatex and \lualatex + + * faq.sty: add \luatex and \lualatex + +2014-05-02 Robin Fairbairns ron.cummins@gmail.com + + * faq-biblio.tex (q-custbib): discourage beginners from attempting + their own biblatex style; editorial + +2014-04-25 Robin Fairbairns + + * dirctan.tex: restore lollipop (w/cat link) + + * faq-backgrnd.tex (q-lollipop): renew, from add-general + +2014-04-23 Robin Fairbairns + + * dirctan.tex: drop fonts/armenian (fonts now part of armtex) + + * add-general.tex (q-lollipop): recreated entry for lollipop + +2014-04-04 Robin Fairbairns + + * faq-mac-prog.tex (q-cmdstar): bug fix from javier mora + +2014-03-19 Robin Fairbairns + + * faq-getit.tex (q-findfiles): editorial + +2014-03-18 Robin Fairbairns + + * faq-backgrnd.tex (q-catalogue): yet another iteration + (q-context): typos + (q-latexandplain): rewrite. who knows if it's worth it... + +2014-03-17 Robin Fairbairns + + * faq-backgrnd.tex (q-catalogue): 2 iterations towards + comprehensibility + +2014-03-14 Robin Fairbairns + + * faq-docs.tex (q-latex-books): sort out html of more math into latex + (still not terribly good, but no more actual latex...) + +2014-03-05 Robin Fairbairns + + * add-general.tex (q-getnff,q-otf-maths): removed as already in main + (q-outer-err): removed, similarly + +2014-03-04 Robin Fairbairns + + * faq-docs.tex: missing close brace + +2014-02-18 Robin Fairbairns + + * faq-docs.tex (q-mfptutorials): add links to the voipio papers, + and remove the (dead) one to Heck's + +2014-02-16 Robin Fairbairns + + * faq-hyp+pdf.tex (q-pdfpagelabels): add {} to a \dots call + (q-cpy-srchpdf): deal with broken parens + +2014-02-10 Robin Fairbairns + + * add-general.tex: remove q-ltx-csv (now in faq-mac-prog) + +2014-01-31 Robin Fairbairns + + * faq-biblio.tex (q-custbib): typo + +2014-01-29 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): remove {} from pattern \\The{}\{\} ? + +2014-01-28 Robin Fairbairns + + * faq-docs.tex (q-gethelp): warning of abrasiveness on tex/sx + +2014-01-26 Robin Fairbairns + + * faq-how-do-i.tex (Q-filesused): convert tetex ref to texlive-unix(!) + +2014-01-22 Robin Fairbairns + + * faq-adj-types.tex (q-dropping): remove ref to vtex + + * faq-graphics.tex (q-labelfig): remove refs to vtex + + * faq-hyp+pdf.tex (q-acrobat): remove ref to vtex + + * faq-t-g-wr.tex (q-usepictex): root out reference to vtex + + * faq-fonts.tex (q-otf-maths): new, from add-general + (q-psfchoice): editorial, incl reference to q-otf-maths + +2014-01-21 Robin Fairbairns + + * faq-getit.tex (q-findfont): tidy, and fill in missing holes + +2013-12-10 Robin Fairbairns + + * faq-backgrnd.tex (q-mp): mp output may be svg, too + +2013-12-04 Robin Fairbairns + + * faq-symbols.tex (q-numbersets): add boondox as a source, mention + newpx, newtx as preferable to pxfonts/txfonts + +2013-11-28 Robin Fairbairns + + * add-general.tex (q-cap-out-flt): new error answer + +2013-11-27 Robin Fairbairns + + * faq-backgrnd.tex (q-whattex): reworded for clarity + +2013-11-26 Robin Fairbairns + + * faq-wdidt.tex (q-xspace): play the command down (after reading a post + on tex/sx by david carlisle, tidy the whole question. + +2013-11-20 Robin Fairbairns + + * faq-jot-err.tex (q-normalszmiss): rewritten. not easy to do, without + sounding patronising + +2013-11-19 Robin Fairbairns + + * faq-install.tex,faq-biblio.tex: editorial (% signs) + + * faq-wdidt.tex (q-center-flt): new, from add-general + + * sanitize-beta.pl (sanitize_line): move \textpercent{} to immediately + below "dump comments" code + + * faq-adj-types.tex (a-outszwrng): braces after \textpercent + +2013-11-05 Robin Fairbairns + + * add-general.tex (q-inputenc): show structure of multiple-encoding docs + +2013-10-28 Robin Fairbairns + + * faq-adj-types.tex (q-linespace): editorial + +2013-10-22 Robin Fairbairns + + * faq-fonts.tex (q-getnff): new, from add-general + + * add-general.tex (q-getnff): mention distinction between -sys and + user versions of the script + +2013-10-21 Robin Fairbairns + + * faq-wdidt.tex (q-verbwithin): mention verbatim writing using + tcolorbox and moreverb (and mention the comments in the doc of + verbatim, for diy enthusiasts). + + * faq-intro.tex: add martin garrod to the list, mark drucbert deceased + + * faq-bits+pieces.tex (q-clsvpkg): remove duplicate "report" (!) + +2013-10-18 Robin Fairbairns + + * add-general.tex (q-catcodes): doodling with better explanation + (not got very far) + + * faq-docs.tex (q-latex-books): reference digital version of tlc2 + + * FAQ-wdidt.tex (q-verbwithin): typo (extra closing paren) + +2013-10-15 Robin Fairbairns + + * faq-docs.tex (q-bibtexing): mention www.bibtex.org + +2013-10-10 Robin Fairbairns + + * faq-backgrnd.tex (q-context): provide link to minimals (even though + it's not the neatest of web sites...) + +2013-10-09 Robin Fairbairns + + * dirctan.tex: add context-contrib + + * faq-backgrnd.tex (q-context): edited for more realism re. ctan + + * faq-getit.tex (q-findfiles): rsync is the only mirroring protocol + +2013-10-02 Robin Fairbairns + + * faq-support.tex (q-spell): weave in hunspell (not on ctan...) + +2013-09-27 Robin Fairbairns + + * faq-mac-prog.tex (q-plninltx*): editorial (hoping for clarification) + (q-ltxcmds): editorial (again aiming for clarification) + + * faq-adj-types.tex (q-music): typo for \progname + +2013-09-25 Robin Fairbairns + + * faq-docs.tex (q-gethelp): change junk edit date to today + +2013-09-23 Robin Fairbairns + + * dirctan.tex: makeinfo's moved + + * faq-adj-types.tex (q-music): use of lilyglyphs as option + +2013-09-20 Robin Fairbairns + + * faq-how-do-i.tex (q-nohyph): minor editorial + (q-hyphoff): ditto + (q-hyphexcept): editorial, add a bit of text discussing unicode + hyphenation + +2013-09-13 Robin Fairbairns + + * gather-faqbody.tex: comment out debugging stuff + + * faq-docs.tex (q-gethelp): mention tex/sx "getting started" page + +2013-09-11 Robin Fairbairns + + * dirctan.tex: pgf dir is actually the base above graphics/pgf + add cat link for picinpar + * faq-mac-prog.tex (q-ltx-csv): new, from add-general + +2013-09-09 Robin Fairbairns + + * faq-jot-err.tex (q-parmoderr): new, from add-general + + * add-general.tex (q-parmoderr): tweaks for clarification + +2013-08-29 Robin Fairbairns + + * faq-adj-types.tex (q-overstrike): suggest pdfcomment + + * dirctan.tex: add pdfcomment + +2013-08-21 Robin Fairbairns + + * faq-how-do-i.tex (q-mathlips): sort out refs to yhmath (now in just + the one place on ctan + + * dirctan.tex: add belleek (from broken filectan entry) + + * faq-hyp+pdf.tex (q-cpy-srchpdf): extended replacement for q-srchpdf + + * dirctan.tex: add mmap, belleek; remove one of the verbdef entries + +2013-08-20 Robin Fairbairns + + * faq-intro.tex: editorial + + * faq-wdidt.tex (q-tocloftwrong): missing brace + +2013-08-19 Robin Fairbairns + + * dirctan.tex: remove duplicate of verbdef + +2013-07-18 Robin Fairbairns + + * dirctan.tex: tidy up copies + + * faq-texsys.tex (throughout): remove vtex + (q-sysunix): purge mention of unix miktex + dirctan.tex: remove biolinum + +2013-07-17 Robin Fairbairns + + * faq-adj-types.tex (q-slidecls): link to beamer theme gallery + +2013-07-15 Robin Fairbairns + + * faq-adj-types.tex (q-papergeom): no more vtex + + * faq-texsys.tex (q-sysother): expunge reference to vtex + +2013-07-14 Robin Fairbairns + + * faq-wdidt.tex (q-tocloftwrong): give answers as well as reference! + (needs some reference to koma-script) + +2013-07-12 Robin Fairbairns + + * faq-graphics.tex (q-labelfig): add text discussing pdfrack + + * dirctan.tex: add pdfrack + +2013-07-09 Robin Fairbairns + + * faq-bits+pieces.tex (q-clsvpkg): editorial + +2013-07-02 Robin Fairbairns + + * faq-docs.tex (q-whereFAQ): remove voss's texnik.de (no longer there) + +2013-06-25 Robin Fairbairns + + * faq-backgrnd.tex (q-eplain): editorial + (q-whyfree): editorial on licence issues + (q-tug*): tidy conditional sections + +2013-06-20 Robin Fairbairns + + * dirctan.tex: add verbatimbox + + * faq-wdidt.tex (q-verbwithin): add bullet item about verbatimbox + +2013-06-17 Robin Fairbairns + + * faq-backgrnd.tex (q-context): flagged potential need for context + minimals; this file is wildly different to its supposed rcs copy... + needs review when i've learnt more about minimals + +2013-06-12 Robin Fairbairns + + * faqbody.tex: version 3.28, today + + * faq-symbols.tex (q-boldgreek): largely rewritten, with more detail + about the reasons for the acrobatics needed (also remove incorrect + assertion about amsmath and \mathbf) + +2013-06-10 Robin Fairbairns + + * faq-wdidt.tex (q-verbwithin): newverbs helps -- like verbdef, etc + + * dirctan.tex: add newverbs + +2013-06-07 *** Release 3.27 *** + +2013-06-06 Robin Fairbairns + + * add-general.tex (q-otf-maths): minor tweak + + * faq-install.tex (q-what-TDS): editorial + +2013-06-05 Robin Fairbairns + + * faq-symbols.tex (q-scriptfonts): mention tgchorus + + * faq-wdidt.tex (q-dolldoll): editorial clarification (hopefully...) + +2013-06-04 Robin Fairbairns + + * dirctan.tex: add anyfontsize, remove ghostscript, gsview, + correct polyglossia + + * faq-mac-prog.tex (q-fontsize): editorial, incorporate + anyfontsize package + +2013-06-03 Robin Fairbairns + + * faq-backgrnd.tex (q-notWYSIWYG): flesh out, note demise of textures, + editorial + + * texfaq2html-beta: ignore intro by scanning file for \end{introduction} + + * faq-jot-err.tex (q-buffovl): editorial + + * faq-graphics.tex (q-labelfig,q-repeatgrf,q-dvipdfmgraphics): gs + from web + +2013-05-31 Robin Fairbairns + + * faq-hyp+pdf.tex (q-hyper, q-acrobat): tidies, gs from web + +2013-05-29 Robin Fairbairns + + * faq-fonts.tex (q-psfchoice): add URW base35 in their own right + to discussion of txfonts + + * faq-graphics.tex (q-mpprologues): href for ghostscript + (q-labelfig): href for gsview + + * faq-fonts.tex (q-psfchoice): href for ghostscript + + * faq-dvi.tex (q-otherprinters): href for ghostscript + +2013-05-24 Robin Fairbairns + + * texfaq2html: minuscule changes from -beta + + * sanitize.pl (sanitize_line): minuscule changes from -beta + +2013-05-21 Robin Fairbairns + + * faq-backgrnd.tex (q-texfuture): end date for luatex 2014 (i think) + + * sanitize-beta.pl (sanitize_line): add entity xlations for \beta, \pi + + * faq-projects.tex (q-luatex): update somewhat + + * faq-backgrnd.tex (q-ctan): editorial + (q-catalogue): editorial + (q-y2k): commented out (no longer relevant) + +2013-05-20 Robin Fairbairns + + * faq-texsys.tex (q-editors): reword mention of texworks, add texstudio + +2013-05-14 Robin Fairbairns + + * faq-symbols.tex (q-osf): \oldstylenums _does_ use bold style + +2013-05-13 Robin Fairbairns + + * dirctan.tex: add try + + * faq-how-do-i.tex (q-make): add try + + * faq-backgrnd.tex (q-catalogue): editorial + +2013-04-29 Robin Fairbairns + + * faq-intro.tex: added subsection about licence + +2013-04-23 Robin Fairbairns + + * faq-graphics.tex (q-mpprologues): untangle some prose. slightly. + +2013-04-22 Robin Fairbairns + + * faq-fonts.tex (q-pspreview): ghostscript, gsview from web + (q-psfchoice): remove ghostscript mention in discussing urw fonts; + reference newpx from pxfonts, and newtx from txfonts, add urw-base35 + to ctanrefs as locations of palladio and NimbusRomanNo9 + +2013-04-19 Robin Fairbairns + + * faq-dvi.tex (q-dvi-bmp): typo + +2013-04-18 Robin Fairbairns + + * faq-jot-err.tex (q-buffovl): ghostscript and gsview from the net + +2013-04-17 Robin Fairbairns + + * dirctan.tex: add dtxgen + + * faq-bits+pieces.tex (q-dtx): mention dtxgen + + * faq-projects.tex (q-luatex): revise version statement, editorial + +2013-04-16 Robin Fairbairns + + * faq-texsys.tex (q-commercial): remove bluesky :-( + +2013-04-16 Robin Fairbairns + + * faq-fmt-conv.tex (q-recovertex): munge ghostscript refs, remove it + from ctanrefs + + * faq-dvi.tex (q-dvi-bmp): editorial + + * add-general.tex (q-tangle-weave): editorial, link to doc of web2c on + tug site + +2013-04-12 Robin Fairbairns + + * faq-fmt-conv.tex (q-fmtconv): tidy, re-organise + +2013-04-11 Robin Fairbairns + + * faq-fmt-conv.tex (q-readML): correct a \Qref call + + * faq-fonts.tex (q-psfchoice): add newpx to the list + + * faq-texsys.tex (q-syswin32): miktex 2.9 (in ctanrefs) + + * faq-dvi.tex (q-otherprinters): reword because gs no longer on ctan + (q-previewers): ditto + +2013-04-09 Robin Fairbairns + + * faq-symbols.tex (q-scriptfonts): elide mention of ghostscript, + since (a) it doesn't add anything, and (b) it's no longer + available on ctan + + * dirctan.tex: add newpx + +2013-03-28 Robin Fairbairns + + * filectan.tex: remove + + * dirctan.tex: add , ; correct ; remove + , ghostscript-[gpl|ghostgum] + + * faq-adj-types.tex (q-codelist): add showexpl + +2013-03-26 Robin Fairbairns + + * faq-docs.tex (q-man-latex): add link to nicola's phd and admin books + +2013-03-22 Robin Fairbairns + + * add-general.tex (q-tangle-weave): new: the basics of web + +2013-03-21 Robin Fairbairns + + * faq-how-do-i.tex (q-make): add ctan link for vpp + +2013-03-15 Robin Fairbairns + + * faq-bits+pieces.tex (q-dvi): editorial, hoping to clarify + +2013-03-11 Robin Fairbairns + + * faq-how-do-i.tex (q-footintab): don't suggest putting a "table" in + minipage ... good sense from ulrike fischer + +2013-03-08 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): \arrowhyph translate to → + +2013-03-07 Robin Fairbairns + + * gather-faqbody.tex: v3.26b, today + + * faq-the-end.tex (q-latexbug): removed "upload bug by email"; editorial + +2013-03-05 Robin Fairbairns + + * add-general.tex (q-varitoc): start of an answer starting from the + ideas of the tableof package + + * faq-adj-types.tex (q-minitoc): editorial + +2013-03-04 Robin Fairbairns + + * texfaq2html, texfaq2html-beta, sanitize.pl, sanitize-beta.pl: + correct \ctanhref coding (never-used flexibility in early coding + had confused me summat rotten) + +2013-03-01 Robin Fairbairns + + * faq-intro: remove a spurious "

" (huh?) + + * faq-jot-err.tex (q-manymathalph): point out that the problem can also + be avoided by using xetex/luatex + + * gather-faqbody.tex: version 3.26a, today (released as beta) + + * faq-mac-prog.tex (q-repeat-num): tone down "tex.ne.prog language" + (q-repeat-set): consequential changes to match -repeat-num + +2013-02-28 Robin Fairbairns + + * faq-mac-prog.tex (q-cmdstar): this was buggy; corrected + +2013-02-26 Robin Fairbairns + + * faqbody.tex: update \faqfiledate + + *** released 3.26 *** + +2013-02-21 Robin Fairbairns + + * faq-support.tex (q-spell): editorial + + * faq-fmt-conv.tex (q-readml): question links for context, luatex + +2013-02-20 Robin Fairbairns + + * faq-graphics.tex (q-pdftexgraphics): \lastedit + + * faq-adj-types.tex (q-nofm): \lastedit + + * faq-mac-prog.tex (q-latexqual): \lastedit + + * faq-how-do-i.tex (q-dpfloat, q-ftncapt): \lastedit + + * faq-wdidt.tex (q-dolldoll): editorial + + * faq-backgrnd.tex (q-ctan): editorial + + * faq-adj-types.tex (q-codelist): editorial + + * faq-bits+pieces.tex (q-whatenv): editorial + + * faq-jot-err.tex (q-expl3-old): editorial + + * faq-mac-prog.tex (q-repeat-num): editorial + +2013-02-19 Robin Fairbairns + + * sanitize.pl (sanitize_line): updates from -beta (not many) + +2013-02-15 Robin Fairbairns + + * faq-wdidt.tex (q-verbwithin): \lastedit outside ctanrefs(!) + (q-noline): question title in quotes + +2013-02-08 Robin Fairbairns + + * dirctan.tex: add arara + + * faq-how-do-i.tex (q-make): add arara + +2013-02-07 Robin Fairbairns + + * texfaq2html-beta: align with texfaq2html (regular) + +2013-02-01 Robin Fairbairns + + * faq-projects.tex (q-omegaleph): editorial + + * faq-jot-err.tex (q-expl3-old): editorial (too many parens) + + * faq-how-do-i.tex (q-dpfloat): describe \ContinuedFloat + + * faq-projects.tex (q-xetex): change question title to match others in + the section + +2013-01-31 Robin Fairbairns + + * faq-getit.tex (q-uploads): reflect changed situation + + * faq-backgrnd.tex (q-ctan): reflect changed situation + +2013-01-30 Robin Fairbairns + + * dirctan.tex: add ucharclasses, xecjk + + * add-general.tex (q-xetex*): new, from an answer in stackexchange + +2013-01-28 Robin Fairbairns + + * faq.sty: add \ctan for all those \acro calls + + * gather-faqbody.tex: file date today. may be near, now... + +2013-01-10 Robin Fairbairns + + * faq-docs.tex (q-pkgdoc): mthelp on miktex rather than texdoc + +2013-01-09 Robin Fairbairns + + * dirctan.tex: add mwe, blindtext and lipsum + + * faq-docs.tex (q-minxampl): more detail about support packages, etc; + editorial + +2013-01-04 Robin Fairbairns + + * faq-biblio.tex (q-chapbib): show biblatex-based approach + +2012-12-21 Robin Fairbairns + + * dirctan.tex: remove biolinum-type1 (never actually used in a + published version...) + + * faq-mac-prog.tex (q-patch): mention regexpatch + + * dirctan.tex: add regexpatch + +2012-12-14 Robin Fairbairns + + * faq-getit.tex (q-archives): first stab at "new world" + (q-uploads): only one upload method, nowadays + +2012-12-07 Robin Fairbairns + + * dirctan.tex: add spelling + + * faq-support.tex (q-spell): update text, and add spelling package + + * sanitize-beta.pl (sanitize_line): add \^o + +2012-12-03 Robin Fairbairns + + * faq-bits+pieces.tex (q-spawnprog): editorial + (q-hyphen): editorial, ref q-hyphenaccents + +2012-11-29 Robin Fairbairns + + * faq-docs.tex (q-man-latex): omit frivolous comment about uea users + being taught by nicola + (q-latex3-prog): moved here from faq-mac-prog + +2012-11-28 Robin Fairbairns + + * faq-how-do-i.tex (q-conditional): suggest stampinclude + + * dirctan.tex: add commado + + * faq-mac-prog.tex (q-repeat-set): add commado and filesdo + + * filectan.tex: add interface3-doc, expl3-doc + + * faq-mac-prog.tex (q-latex3-prog): new, from stack exchange + +2012-11-26 Robin Fairbairns + + * faq-adj-types.tex (q-codelist): elaborate on use of minted + + * faq-fmt-conv.tex (q-readml): give context mkiv pride of place + (coming from nowhere in the previous release ;-) + +2012-11-21 Robin Fairbairns + + * add-general.tex (q-center-flt): typo + +2012-11-20 Robin Fairbairns + + * faq-graphics.tex (q-pdftexgraphics): add pdftricks2 + + * faq-adj-types.tex (q-tocloft): mention etoc + + * faq-fonts.tex (q-psfchoice): add garamondx extn to newtx + + * dirctan.tex: add garamondx, pdftricks2; correct pdftricks; remove all + "libertine*" except libertine itself; add cat link for newtx + +2012-11-19 Robin Fairbairns + + * add-general.tex (q-samepage): editorial twiddle + + * faq-adj-types.tex (q-extsizes): caveat text for scrextend, about + design (perhaps restructure so as to have just one caveat for both + packages) + +2012-11-16 Robin Fairbairns + + * faq-litprog.tex (q-lit): sort empty link target + + * faq-support.tex (q-texcad): sort empty link target + + * faq-how-do-i.tex (q-vertspacefloat): removed + + * faq-wdidt.tex (q-vertspacefloat): come from faq-how-do-i + + * faq-bits+pieces.tex (q-whatenv): point out args don't propagate to + end env code + + * add-general.tex (q-center-flt): new, following q on c.t.t (or summat) + +2012-11-15 Robin Fairbairns + + * dirctan.tex: add shorttoc + + * add-general.tex (q-shorttoc): new answer (copied from tex/sx) + + * gather-faqbody.tex: v3.26, today (premature...) + +2012-11-09 Robin Fairbairns + + * faq-jot-err.tex (q-expl3-old): new, from add-general + + * faq-docs.tex (q-pkgdoc): mention texdoc.net + +2012-11-01 Robin Fairbairns + + * faq-adj-types.tex (q-extsizes): show use of scrextend for random sizes + +2012-10-31 Robin Fairbairns + + * faq-wdidt.tex (q-verbwithin): editorial don't refer to expl3 directly + + * add-general.tex (q-expl3-old): new, about the common error message + +2012-10-30 Robin Fairbairns + + * filectan.tex: add memoir-man + + * faq-how-do-i.tex (q-complist): editorial, for clarification, incl + pointer to memoir manual section + +2012-10-29 Robin Fairbairns + + * faq-biblio.tex (q-usebibtex): editorial (testing macros) + +2012-10-26 Robin Fairbairns + + * archive.cfg: use mirror.ctan.org for arch ptrs + + * add-general.tex (q-otf-maths): editorial + +2012-10-25 Robin Fairbairns + + * add-general.tex (q-otf-maths): started yesterday -- what it says + +2012-10-24 Robin Fairbairns + + * faq-fonts.tex (q-psfchoice): change question answered, update listed + coverage of mathdesign + (q-pspreview): editorial + (q-charshift): note now vanishingly unlikely + +2012-10-22 Robin Fairbairns + + * add-general.tex (q-bib-trblshoot): new answer, from sx/63852 + + * faq-wdidt.tex (q-dolldoll): tidy, on the basis of sx/503 + +2012-10-19 Robin Fairbairns + + * faq-texsys.tex (q-texsystems): no empty arg to \qref + + * faq-graphics.tex (q-drawing): clarify statements about pgf + + * sanitize.pl (sanitize_line): pick up changes in -beta + + * sanitize-beta.pl (sanitize_line): only one \pictex, with "i" flag + + * faq-bits+pieces.tex (q-virtualfonts): correct href to knuth on vfs + + * texfaq2html-gamma: use label-to-file.pl + + * faq-bits+pieces.tex (q-dvi,q-pk,q-tfm,q-virtualfonts): editorial + +2012-10-17 Robin Fairbairns + + * add-general.tex (q-simple-maths): remove refs to libgreek, libertine, + biolinum (since libgreek is based on libertine-legacy) + + * faq-fonts.tex (q-psfchoice): libertine-legacy->libertine-type1 + + * dirctan.tex: add libertine, libertine-t1, biolinum-t1, remove + libertine-legacy + +2012-10-17 Robin Fairbairns + + * dirctan.tex: remove libertine-legacy, add libertine, {}-type1, + biolinum-type1 + +2012-10-16 Robin Fairbairns + + * faq-adj-types.tex (q-nofm): zref-lastpage does a LastPage label, too + +2012-10-15 Robin Fairbairns + + * add-general.tex (q-gensym): opening out old proto-answer + +2012-10-10 Robin Fairbairns + + * patchdates.tex: is this really necessary + + * add-general.tex (q-detknize): probably dead -- mark as such + + * faq-bits+pieces.tex (q-whatenv): new, from add-general + + * faq-backgrnd.tex (q-ctan): tweak description of mirror.ctan + (q-whyfree): add closing paren in first sentence! + (q-readtex): add a let-out clause at the end ;-) + +2012-10-09 Robin Fairbairns + + * faq-mac-prog.tex (q-ltxcmds): diddle with margins for narrowversion + + * add-general.tex (q-whatenv): basic body of answer complete + + * faq-t-g-wr.tex,faq-docs.tex,faq-graphics.texfaq-how-do-i.tex + (throughout): use \pictex{} + + * faq.sty: \pictex so as to avoid typos ;-) + + * filectan.tex: remove l2tabuen, l2tabuen.src + + * faq-docs.tex (q-man-latex): unify reference to l2tabu + + * faq-mac-prog.tex (q-ltxcmds): more examples of the performance of + latexdef, for environments + (q-latexqual): tone down the dogmatism about l2tabu/nag + +2012-10-08 Robin Fairbairns + + * add-general.tex (q-prog-tex): a start on this, too + (q-prog-tex): another paragraph + +2012-10-05 Robin Fairbairns + + * add-general.tex (q-whatenv): a start... + +2012-10-02 Robin Fairbairns + + * faq-adj-types.tex (q-poster): update nlct link, add comments giving + status of links [CHANGES] + +2012-09-18 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): remove \quotify again (problems + with nested quotes) + + * faq-jot-err.tex (q-badhyph): write out effect of \quotify; editorial + + * faq.sty: remove \quotify again (see sanitize reversion) + +2012-09-17 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): process \quotify + + * texfaq2html-beta: open $archive_list from $home (why did it work?) + + * faq.sty: define \quotify (according to hyperversion) + + * faq-jot-err.tex (q-badhyph): modernise markup with \cmdinvoke, + \quotify, etc + + * faq-how-do-i.tex (q-hyphenaccents): the future (unicode + hyphenation) is here, so cover it (however briefly) + + * faq.sty: suppress font list from pdftex (per heiko's tip on texhax) + + * faq-jot-err.tex (q-optionclash): correct quote env matching + +2012-09-16 Robin Fairbairns + + * faq-jot-err.tex (q-optclash): clarification, in light of several + tex/sx comments on a question there [needs checking!] + +2012-09-12 Robin Fairbairns + + * texfaq2html-beta: default_archive now mirror.ctan + + * archive.list: add mirror.ctan.org, remove tug + +2012-09-07 Robin Fairbairns + + * faq-adj-types.tex (q-multind): editorial + +2012-09-03 Robin Fairbairns + + * faq-docs.tex (q-symbols): reorganise, add unimath-symbols + + * add-general.tex (q-nolnerr): new, "no line to end" + +2012-09-02 Robin Fairbairns + + * faq-wdidt.tex (q-newlineargs): editorial + +2012-08-29 Robin Fairbairns + + * add-general.tex (q-view-rot): outline for new answer + +2012-08-23 Robin Fairbairns + + * faq-fonts.tex: correct doc link for txfontsb + +2012-08-16 Robin Fairbairns + + * dirctan.tex: add newtx, references to libertine support, etc. + + * faq-fonts.tex (q-psfchoice): editorial, add text about newtx + +2012-07-26 Robin Fairbairns + + * faq-how-do-i.tex (q-struttab): don't do \cmdinvoke in verbatim! + +2012-07-25 Robin Fairbairns + + * faq-docs.tex (q-man-latex): uprate the wiki latex book + +2012-07-09 Robin Fairbairns + + * faq-mac-prog.tex (q-repeat-set): correct typo + +2012-07-06 Robin Fairbairns + + * faq-mac-prog.tex (q-repeat-num): comment-out repeat package (oops!) + +2012-07-04 Robin Fairbairns + + * faq-mac-prog.tex (q-repeat-num): restore para left behind in + q-repeat-set when the two were split + + * add-general.tex (q-multiling): lots of editorial, trying not to + change sense, except my confusion in thinking polyglossia works with + luatex + +2012-07-03 Robin Fairbairns + + * faq-mac-prog.tex (q-patch): typo + +2012-06-26 Robin Fairbairns + + * dirctan.tex: add dowith + + * faq-mac-prog.tex (q-repetition): add dowith package (probably more i + need to write about, but this will do for the time being) + +2012-06-22 Robin Fairbairns + + * faq-mac-prog.tex (q-repetition): new, from add-general + +2012-06-20 Robin Fairbairns + + * add-general.tex (q-repetition): big thrash toward a releasable thing + + * dirctan.tex: add etextools, etoolbox, datatool, forarray + + * filectan.tex: add repeat + +2012-06-15 Robin Fairbairns + + * dirctan.tex: standardise on libertineOTF as directory name + + * add-general.tex: yet more diddling of list of repeater packages + +2012-04-27 Robin Fairbairns + + * dirctan.tex: add ifoddpage + + * faq-mac-prog.tex (q-oddpage): add ifoddpage + +2012-04-20 Robin Fairbairns + + * faq-bits+pieces.tex (q-unicode): unicode bundle now ucs; reword text + around utf8 inputenc option selection + + * dirctan.tex: libertine now *-legacy and *otf + + * add-general.tex (q-simple-maths): split libertine links to otf, legacy + + * faq-adj-types.tex (q-music): m-tx in ctanrefs + + * dirctan.tex: rename unicode entry->ucs, mtx->m-tx + +2012-04-12 Robin Fairbairns + + * faq-how-do-i.tex (q-ftncapt): clarify example, per note from david c + + * faq-bits+pieces.tex (q-virtualfonts): change title to question + +2012-03-29 Robin Fairbairns + + * gather-faqbody.tex: v 3.25, today + + * faq-wdidt.tex (q-eqnarray): link to kottwitz's tex blog entry + +2012-03-28 Robin Fairbairns + + * faq-hyp+pdf.tex (q-acrobat): tidying, dragging into 21st century... + + * faq-texsys.tex (q-syswin32): miktex 2.9 no longer beta, and so luatex + available on miktex too + +2012-03-27 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): accept \mf, \mp as well as uc vrsn + + * faq.sty: new \mf, \mp, existing uc vrsn each only use initial capital + + * faq-getit.tex (q-findfont): rewritten in rather different style, + noting the decline of mf and the appearance of alternate engines + +2012-03-26 Robin Fairbairns + + * faq-texsys.tex (q-sysunix): editorial -- clarify that tlmgr works + however you install tl + +2012-03-23 Robin Fairbairns + + * dirctan.tex: add usebib + + * faq-biblio.tex (q-i18nbib): biblatex does this too + (q-bibinline): suggest usebib + +2012-03-16 Robin Fairbairns + + * faq-graphics.tex (q-inlgrphapp): add picture environment to list, and + mention picture package with it + + * faq-mac-prog.tex (q-printvar): \verb in verbatim sections is silly, + and in typeset sections doesn't get translated by process.pl ... + +2012-03-14 Robin Fairbairns + + * add-general.tex (q-parmoderr): not in outer par mode + +2012-03-09 Robin Fairbairns + + * faq-t-g-wr.tex (q-msxy): mention berthold horn's partial msym + +2012-03-08 Robin Fairbairns + + * add-general.tex (q-inputenc,q-fontenc): proof-reading corrections + (probably meaning that other questions aren't any longer useful; these + questions marked...) + +2012-03-07 Robin Fairbairns + + * add-general.tex (q-ltx-csv): \LastEdit tag + (q-archives-rev): editorial + + * faq-bits+pieces.tex (q-unicode): editorial clarification + +2012-02-20 Robin Fairbairns + + * dirctan.tex: add datatool + + * add-general.tex (q-ltx-csv): new answer on csv lists + +2012-02-17 Robin Fairbairns + + * faq-graphics.tex (q-labelfig): editorial work + +2012-02-16 Robin Fairbairns + + * dirctan.tex: add macros2e + + * faq-docs.tex (q-ref-doc): add macros2e + +2012-02-14 Robin Fairbairns + + * dirctan.tex: add mdframed + remove metafont(actually mac-),mctex,mewltx + + * faq-adj-types.tex (q-subsubsub): editorial + (q-breakbox): add mdframed as another solution + +2012-02-13 Robin Fairbairns + + * faq-wdidt.tex (q-verbwithin): xparse arguments for verbatim use + + * sanitize-beta.pl (sanitize_line): get \{, \}, and \[oc]bracesymbol + working with numeric entities + + * faq-jot-err.tex (q-includeother): it's \File not \FileName!!! + + * faq-mac-prog.tex (q-whatengine): correct wording, and coding of + \ifthenelse example to make it do correct html + +2012-02-11 Robin Fairbairns + + * faq-wdidt.tex (q-verbwithin): verbatim arg in \NewDocumentCommand etc + +2012-02-10 Robin Fairbairns + + * faq-jot-err.tex (q-includeother): more editorial expansion + + * faq-biblio.tex (q-citesort): mention biblatex number-comp style + +2012-02-09 Robin Fairbairns + + * faq-jot-err.tex (q-extrabrace): more rationalisation + +2012-02-08 Robin Fairbairns + + * faq-jot-err.tex (q-extrabrace): slip in a \Qref + +2012-02-08 Robin Fairbairns + + * faq-install.tex (q-inst-tds-zip): in "that are that's" remove "that's" + +2012-02-07 Robin Fairbairns + + * faq-jot-err.tex (q-includeother): came from add-general + + * CHANGES-3.25: tags for cmdstar and crossref + + * faq-projects.tex (q-latex3): explain the concept of "harness", tidy + + * faq-mac-prog.tex (q-cmdstar): outline use of xparse to define *-macros + + * faq-wdidt.tex (q-crossref): dang! -- it could never have had a + "previous figure number" + other editing + + * faq-how-do-i.tex (q-footintab): move tablefootnotes "further up" + +2012-02-06 Robin Fairbairns + + * faq-install.tex (q-install-find): tidying and clarification + (q-instmffont): more clarification + +2012-02-01 Robin Fairbairns + + * faq.sty, sanitize-beta.pl: add \LeadFrom + + * faq-adj-types.tex (q-runheadtoobig): include an actual example of + using titlesec pkg + +2012-01-27 Robin Fairbairns + + * dirctan.tex: add morewrites + + * faq-jot-err.tex: move q-optionclash and q-optclash together, for + easier editing + (q-noroom): tidies, mention morewrites package + +2012-01-19 Robin Fairbairns + + * faq-docs.tex (q-tutbitslatex): stefan kottwitz runs texample.net, + editorial + + * faq-wdidt.tex: odd bits of editorial + +2012-01-16 Robin Fairbairns + + * faq-docs.tex (q-bibtexing): correct parentheses + + * dirctan.tex: add fdsymbol, mdsymbol + + * faq-symbols.tex (q-usesymb): add fdsymbol and mdsymbol with mnsymbol + +2012-01-10 Robin Fairbairns + + * faq-intro.tex: comment on matthias' latest contribution + + * faq-mac-prog.tex (q-isitanum): correct def of \testnum, per matthias + +2012-01-08 Robin Fairbairns + + * faq-jot-err.tex (q-noroom): circumspection around the numbers of + floats that may be reserved + +2012-01-04 Robin Fairbairns + + * faq-adj-types.tex (q-poster): correct (old) typo + +2012-01-03 Robin Fairbairns + + * faq-docs.tex (q-man-latex): add van dongen's, wilkins' and buxbaum's + oeuvres + + * dirctan.tex: add latex-course + +2011-12-29 Robin Fairbairns + + * faq-docs.tex (q-pkgdoc): editorial (awful english) + +2011-12-21 Robin Fairbairns + + * add-general.tex (q-fontenc): editorial + +2011-12-19 Robin Fairbairns + + * faq-symbols.tex (q-numbersets): editorial reducing verbosity + +2011-12-15 Robin Fairbairns + + * faq-intro.tex: credit william adams + + * faq-docs.tex (q-man-latex): new link for chris harrison's tutorial + +2011-12-12 Robin Fairbairns + + * dirctan.tex: add pinlabel + + * faq-graphics.tex (q-labelfig): mention pinlabel + + * dirctan.tex: add zwpagelayout + + * faq-adj-types.tex (q-papergeom): zwpagelayout usage outline + (q-marginpkgs): mention that zwpagelayout is also available + +2011-12-01 Robin Fairbairns + + * faq-hyp+pdf.tex (q-acrobat): trying to drag into c.21 + + * add-general.tex (q-pdf-encr): re-arrange to make clear that pdftk is + worth considering + +2011-11-30 Robin Fairbairns + + * dirctan.tex: add xwatermark + + * faq-adj-types.tex (q-watermark): add xwatermark, discuss pdftk + +2011-11-29 Robin Fairbairns + + * dirctan.tex: add mkjobtexmf + + * faq-how-do-i.tex (q-filesused): discuss mkjobtexmf + +2011-11-28 Robin Fairbairns + + * dirctan.tex: add tablefootnote + + * faq-how-do-i.tex (q-footintab): mention tablefootnote + +2011-11-22 Robin Fairbairns + + * add-general.tex (q-position): editorial stuff (seems ok, so far) + +2011-11-22 Robin Fairbairns + + * dirctan.tex: add diagbox + + * faq-how-do-i.tex (q-slashbox): convert to use diagbox, with slashbox + as an also-ran + +2011-11-21 Robin Fairbairns + + * add-general.tex (q-position): first more or less complete version + + * faq-docs.tex (q-mfptutorials): restore link to metafun manual + + * faq-symbols.tex (q-euro): update (incl. usage of marvosym) + +2011-11-16 Robin Fairbairns + + * add-general.tex (q-repetition): memo about csv commands + +2011-11-08 Robin Fairbairns + + * faq-docs.tex (q-tutorials*): change question title to avoid clash + with q-tutbitslatex + (q-tutbitslatex): remove pTeX tutorial link (seems to have gone) + + * faq-adj-types.tex (q-slidecls): add ctanref for pdfscreen + + * dirctan.tex: add pdfscreen + +2011-11-07 Robin Fairbairns + + * add-general.tex (q-detknize): correct link for q-filename + +2011-11-04 Robin Fairbairns + + * faq-wdidt.tex (q-t1enc): tidy-up: \'e + (throughout): remove | except in a \verb command in verbatim env + +2011-11-02 Robin Fairbairns + + * faq-backgrnd.tex (q-context): add link to context standalone site + + * faq-projects.tex (q-luatex): diddle with version numbers, add web doc + link + + *** release 3.24 *** + +2011-11-01 Robin Fairbairns + + * sanitize.pl (sanitize_line): add \FontFormat (from -beta) + + * gather-faqbody.tex: today (had hoped to release yesterday) + + * faq-adj-types.tex (q-music): more tweaking + +2011-10-31 Robin Fairbairns + + * faq-adj-types.tex (q-music): changes for musixtex-fonts, lots of + tweaking following advice from bob tennent + + * gather-faqbody.tex: v3.24, today + +2011-10-29 Robin Fairbairns + + * faq-support.tex (q-wordcount): add provisos about detex-like routes + + * faq-jot-err.tex (q-missbegdoc): restore a bit that got dropped + +2011-10-28 Robin Fairbairns + + * faq-the-end.tex (q-bug): reword advice on on-line help + (q-latexbug): moved _after_ q-bug + +2011-10-27 Robin Fairbairns + + * faq-jot-err.tex (q-missbegdoc): rewritten to include the bom issue + (taking the text of q-missing-begin) + +2011-10-26 Robin Fairbairns + + * add-general.tex (q-missing-begin): new answer + +2011-10-25 Robin Fairbairns + + * faq-bits+pieces.tex (q-unicode): new, from add-general (slight edits) + +2011-10-25 Robin Fairbairns + + * faq-bits+pieces.tex (q-tds): tone down some of the wilder claims + + * faq.sty: add \FontFormat + + * sanitize-beta.pl: add \FontFormat + + * dirctan.tex: add cm-unicode + + * faq-bits+pieces.tex (q-ecfonts): lots of edits (from work in kent) + +2011-10-20 Robin Fairbairns + + * faq-docs.tex (q-tex-books): clarifying edit ... of a comment ;-) + +2011-10-17 Robin Fairbairns + + * faq-projects.tex (q-mathml): mathtex rather than mimetex in sample! + +2011-10-17 Robin Fairbairns + + * faq-projects.tex (q-mathml): add stuff about MathJax + +2011-10-16 Robin Fairbairns + + * dirctan.tex: correct dvistd, marvosym-fonts + + * filectan.tex: remove varwidth, version + + * dirctan.tex: add varwidth, version + +2011-10-15 Robin Fairbairns + + * faq-bits+pieces.tex (q-specials,q-write): minor editorial + +2011-10-14 Robin Fairbairns + + * faq-t-g-wr.tex (q-underline): remove statement about ulem docs + (saying there's no "real" docs, now false) + +2011-10-12 Robin Fairbairns + + * faq-bits+pieces.tex (q-whatmacros): another challenging bit of + clarification (hem hem) + +2011-10-12 Robin Fairbairns + + * faq-bits+pieces.tex (q-virtualfonts): rearrange and clarify + + * faq-intro.tex: added david epstein to the grand list + + * faq-adj-types.tex (q-algorithms): minor tidy, add comment about + algorithmicx (as requested by David Epstein) + +2011-10-10 Robin Fairbairns + + * faq-bits+pieces.tex (q-driver,q-pk): tidied + (q-tfm): minor editorial + + * dirctan.tex: add dvistd + + * faq-bits+pieces.tex (q-dvi): tidy, mention xetex, ref dvistd + +2011-10-06 Robin Fairbairns + + * faq-intro.tex: editorial + +2011-10-06 Robin Fairbairns + + * faq-jot-err.tex (q-optclash): new, from add-general + + * add-general.tex (q-inputenc): further iterations towards an answer + +2011-10-05 Robin Fairbairns + + * faq-texsys.tex (q-sysmac): mention root requirement for installing + mactex + (q-sysother): hedge statements about vms tex + +2011-10-05 Robin Fairbairns + + * dirctan.tex: add enctex + + * faq-intro.tex: talk about the way the set of answers changes + + * faq-wdidt.tex (q-include): clarify page number constraints + +2011-10-04 Robin Fairbairns + + * faq-projects.tex (q-latex3): rehash stuff about acquiring the + sources, add comments about using l3 as a format + +2011-09-30 Robin Fairbairns + + * add-general.tex (q-fontfmt): typo + +2011-09-29 Robin Fairbairns + + * add-general.tex (q-fontfmt): draft replacement for q-adobetypen + +2011-09-26 Robin Fairbairns + + * faq-docs.tex (q-tutorials*): remove link to q-docdirs + + * faq-backgrnd.tex (q-texthings): remove link to q-docdirs + +2011-09-22 Robin Fairbairns + + * dirctan.tex: add tex-overview, remove texline, unstar mimetex + + * faq-backgrnd.tex (q-texthings): add protext to discussion of distrs, + link to ctan copy of tex-overview + +2011-09-21 Robin Fairbairns + + * faq-texsys.tex (q-editors): revise text on texworks + +2011-09-19 Robin Fairbairns + + * faq-backgrnd.tex (q-tug*): contact via web, only; all back tugboat + +2011-09-12 Robin Fairbairns + + * faq-docs.tex (q-tutbitslatex): removed "specialised" from title, add + old q-doc-dirs on tug india stuff, adjust statement about voss' + mathmode document book form + (q-doc-dirs): gone + +2011-09-10 Robin Fairbairns + + * faq-adj-types.tex (q-multind): describe amsmidx, imakeidx + + * dirctan.tex: add amscls, imakeidx; correct texmacs + +2011-09-09 Robin Fairbairns + + * faq-docs.tex (q-latex-books): add herbert voss's books under latex + +2011-09-09 Robin Fairbairns + + * faq-mac-prog.tex (q-printvar, q-labelcount): add \LastEdit* (oops) + + * faq-docs.tex (q-latex-books): add latex beginner's guide + +2011-09-08 Robin Fairbairns + + * faq-docs.tex (q-ref-doc): patch minor translation effect (\) + (q-doc-wiki): editorial, mostly + (q-doc-dirs): a lot more than two in tug india's thing, now + +2011-09-08 Robin Fairbairns + + * faq-intro.tex: list Gernot Hassenpflug + + * faq-mac-prog.tex: add q-printvar and q-labelcount from add-general + + * patchdates.tex: updated. this is silly. + +2011-09-07 Robin Fairbairns + + * faq-intro.tex (list of helpers): cite another thing from dan l + + * faq-backgrnd.tex (q-texthings): correct \input texinfo (!) + +2011-09-06 Robin Fairbairns + + * faq-mac-prog.tex (q-keyval): tweak words about getoptk + (too late for release...) + + *** Release 3.23 *** + + * texfaq2html, texfaq2html-beta: change "last modified" to "released" + in question footers + + * gather-faqbody.tex: change version, date + + * texfaq2html: minor change from -beta + +2011-09-04 Robin Fairbairns + + * faq-fonts.tex (q-usemf): further attempts to drag it into c.21 + (q-keepfonts): modernise and tidy to today's standards + (q-getbitmap): modernisation, again + +2011-09-01 Robin Fairbairns + + * faq-backgrnd.tex (q-mp): reword the initial discussion (which had + multiple concepts in the same clause, at one point) + +2011-08-30 Robin Fairbairns + + * faq-projects.tex (q-latex3): add l3experimental + + * dirctan.tex: add gitinfo, l3experimental + + * faq-how-do-i.tex (q-rcs): mention gitinfo + +2011-08-19 Robin Fairbairns + + * add-general.tex (q-font-fmts): to replace q-adobetypen -- starts + with its content (ha ha) + + * faq-bits+pieces.tex (q-adobetypen): editorial + + * faq-how-do-i.tex (q-destable): editorial + + * faq-backgrnd.tex (q-latex2e): describe frozen state; editorial stuff + +2011-08-17 Robin Fairbairns + + * faq-symbols.tex (q-scriptfonts): correct typo + + * faq.sty: add \latexo (all lc) + + * faq-symbols.tex (q-underscore): editorial+ref q-activechars + +2011-08-16 Robin Fairbairns + + * faq-symbols.tex (q-underscore): drop stuff about \us, add spiel about + using T1 and \textunderscore + (q-atsign): @ was a special character rather than command + +2011-07-21 Robin Fairbairns + + * filectan.tex: remove screensty, add cat link for vf-howto + + * faq-fmt-conv.tex (q-toascii): editorial on catdvi, remove screen.sty + +2011-07-19 Robin Fairbairns + + * faq-docs.tex (q-pkgdoc): memoir doc not typo tutorial any more, + mention pgf as an example of separately-written stuff + (q-writecls): bit of editorial + +2011-07-14 Robin Fairbairns + + * add-general.tex (q-optclash): new answer about package options + +2011-07-13 Robin Fairbairns + + * faq-backgrnd.tex (q-etex): correct ref to luatex in disc of context + (q-eplain): minute editorial + +2011-07-11 Robin Fairbairns + + * faq-bits+pieces.tex (q-clsvpkg): rewrite + +2011-07-10 Robin Fairbairns + + * faq-bits+pieces.tex (q-whatmacros): minor editorial + + * faq-projects.tex (q-luatex): update versions, miktex now has luatex + + * faq-bits+pieces.tex (q-tfm): mention xetex and luatex don't need 'em + +2011-07-09 Robin Fairbairns + + * faq-mac-prog.tex (q-keyval): add getoptk + +2011-07-08 Robin Fairbairns + + * faq-how-do-i.tex (q-destable): clarify caption package details for + captions above tables + +2011-07-06 Robin Fairbairns + + * faq-jot-err.tex (q-altabcr): mention limit to sizes of matrices + +2011-07-06 Robin Fairbairns + + * faq-backgrnd.tex (q-whyfree): twiddle discussion of gpl + (q-texfuture): reword statement of luatex's release goal + + * faq-docs.tex (q-latex-books): math into latex -> more + +2011-07-05 Robin Fairbairns + + * faq-bits+pieces.tex (q-write): editorial + (q-spawnprog): correct typo (epstopf), add cat link for epstopdf at end + + * filectan.tex: add cat link to vf-howto + +2011-07-03 Robin Fairbairns + + * faq-backgrnd.tex (q-mf): caveat about the "modern" sidelining of mf + +2011-07-01 Robin Fairbairns + + * faq-bits+pieces.tex (q-ctan): minor editorial + (q-dvi): tidy contorted xref + (q-ok): preparatory work (may not come to anything) + + * faq-docs.tex (q-symbols): only pdf of symbol list, now + + * filectan.tex: add cat link for metafp + +2011-06-29 Robin Fairbairns + + * faq-docs.tex (q-doc-dirs): correct tug india link + +2011-06-29 Robin Fairbairns + + * faq-mac-prog.tex (q-patch): recommend letltxcmd for macros with + opt arguments + +2011-06-21 Robin Fairbairns + + * add-general.tex (q-long-outer): mention getting round \outer w/csname + (q-outer-err): new answer pointing to q-long-outer + +2011-06-16 Robin Fairbairns + + * add-general.tex (q-includeother): new jot-err answer + +2011-06-12 Robin Fairbairns + + * faq-backgrnd.tex (q-context): explain difference between mkii and + mkiv (from hans' article in tb100) + +2011-06-08 Robin Fairbairns + + * faq-projects.tex (q-latex3): replace expl3, xpackages with l3kernel, + l3packages + + * faq-mac-prog.tex (q-keyval): replace expl3, xpackages with l3kernel, + l3packages + + * dirctan.tex: remove expl3, xpackages; add l3kernel, l3packages + +2011-06-06 Robin Fairbairns + + * faq-bits+pieces.tex (q-hyphen): mention luatex's more relaxed table + loading + +2011-06-03 Robin Fairbairns + + * faq-graphics.tex (q-drawing): typos, plus hack on text about dratex + +2011-06-02 Robin Fairbairns + + * faq-mac-prog.tex (q-fontsize): mention cmdunh, cmfib missing from + fix-cm + +2011-06-02 Robin Fairbairns + + * dirctan.tex: add pst-layout + + * faq-graphics.tex (q-drawing): link to cremeronline intro tutorial + (q-labelfig): mention pst-layout, and make reference to similar + power of pgf, capable of anything pstricks can do for this problem + + * dirctan.tex: add multido (again...note, different machine) + +2011-06-01 Robin Fairbairns + + * add-general.tex (q-repetition): add multido + + * dirctan.tex: add multido + +2011-06-01 Robin Fairbairns + + * faq-how-do-i.tex,faq-fonts.tex.tex,faq-graphics.tex,faq-jot-err.tex, + faq-jot-err.tex,faq-wdidt.tex,faq-backgrnd.tex,faq-adj-types.tex, + faq-bits+pieces.tex,faq-docs (throughout): replace q-books refs as + appropriate + + * faq-docs.tex (q-book-lists,q-tex-books,q-latex-books,q-other-books): + formed by dismembering the old q-books + +2011-05-31 Robin Fairbairns + + * faq-how-do-i.tex (q-subdepth): new, slightly edited from add-general + + * faq-images.tex: new, for snippets to be served as images + + * sanitize-beta.pl (sanitize_line): add exptl \includegraphics + +2011-05-28 Robin Fairbairns + + * faq-projects.tex (q-luatex): minor editorial to match q-texthings + + * faq-backgrnd.tex (q-texthings): tidy and tweak xetex, rewrite luatex + a bit + +2011-05-27 Robin Fairbairns + + * faq-docs.tex (q-gethelp): identify stack exchange before referring to + it; don't link to latex project team when saying that the user + shouldn't contact them + +2011-05-24 Robin Fairbairns + + * dirctan.tex: add unicode + + * add-general.tex (q-inputenc,q-fontenc): new, from q-whatenc + (q-unicode) skeleton only, so far + + * faq-bits+pieces.tex (q-hyphen): editorial + (q-whatenc): minor editorial, preparing for split + + * dirctan.tex: add cat link for lacheck + + * faq-mac-prog.tex (q-latexqual): mention lacheck + +2011-05-22 Robin Fairbairns + + * add-general.tex (q-sansmath): add hfbright to list of things + + * dirctan.tex: add cmbright + +2011-05-20 Robin Fairbairns + + * add-general.tex (q-sansmath): currently just a placeholder + +2011-05-19 Robin Fairbairns + + * add-general.tex (q-subheight): typo + + * faq-bits+pieces.tex (q-ctan,q-catalogue): new, from add-general + + * faq-docs.tex (q-gethelp): complete replacement from add-general + q-gethelp* + +2011-05-10 Robin Fairbairns + + * faq-projects.tex (q-luatex): clarification on "no changes to pdftex" + statement + +2011-05-08 Robin Fairbairns + + * add-general.tex (q-gethelp*): (new) rewriting q-gethelp for the "new + philosophy" + (q-catalogue): further knocking into shape + +2011-05-06 Robin Fairbairns + + * sanitize-beta.pl: html list-alike environments issue

their end, + to cause paragraph style to be invoked + + * faq.sty: require pdf14.sty since thumbpdf has problems otherwise + +2011-05-04 Robin Fairbairns + + * faq-fmt-conv.tex (q-latextoplain): undo mess in ctanrefs on web + + *** Release 3.22 *** + + * faq-support.tex (q-xfigetc): add \LastEdit + + * faq-how-do-i.tex (q-struttab): add \LastEdit + + * faq-getit.tex (q-archives): add \LastEdit + +2011-05-02 Robin Fairbairns + + * faq-support.tex (q-xfigetc): new link for jfig + + * faq-how-do-i.tex (q-struttab): describe use of makecell package + +2011-04-30 Robin Fairbairns + + * add-general.tex (q-repetition): minor editorial + (q-labelcount): title "counter values" rather than "counters" + +2011-04-27 Robin Fairbairns + + * gather-faqbody.tex: v3.22, today + + * texfaq2html (throughout): tidy p tags + + * sanitize.pl (sanitize_line): line up one comment with -beta + + * dirctan.tex: cat links for ofs, pdcmac + remove pfm2afm, penelope, pbm2tex, pbmtopk + +2011-04-26 Robin Fairbairns + + * add-general.tex (q-getnff): typo + + * faq-getit.tex (q-archives): correct addresses(!) + + * add-general.tex (q-repetition): modest tidies, detail of \multiput in + real text (works!) + + * dirctan.tex: add cat links to a few euro* entries (not euro-fonts...) + remove lollipop + +2011-04-24 Robin Fairbairns + + * add-general.tex (q-archives-rev): redo in context of q-ctan + +2011-04-23 Robin Fairbairns + + * dirctan.tex: cat link for nonumonpart, remove nrc (not used) + +2011-04-20 Robin Fairbairns + + * add-general.tex (q-repetition): lots of tinkering + + * dirctan.tex: add forloop + +2011-04-19 Robin Fairbairns + + * add-general.tex (q-repetition): new, commands for repeating things + (only a skeleton, so far) + +2011-04-19 Robin Fairbairns + + * add-general.tex (q-ctan): ref. twg on archives + (q-archives-rev): interim version of q-archives to go with q-ctan + +2011-04-14 Robin Fairbairns + + * add-general.tex (q-printvar): examples of \printlength + +2011-04-13 Robin Fairbairns + + * faq-backgrnd.tex (q-eplain): qualify statement about "docs online" + + * faq-install.tex (q-privinst): deconfuse emacs source colouring in one + or two places + + * faq-backgrnd.tex (q-etex): stop suggesting that etex is context's + prime target + +2011-04-12 Robin Fairbairns + + * faq-projects.tex (q-textrace): mention mf2pt1 (about time too) + +2011-04-11 Robin Fairbairns + + * faq-backgrnd.tex (q-context): tidy-up + +2011-04-08 Robin Fairbairns + + * faq-graphics.tex (q-drawing): mention pstricks xetex driver + +2011-04-07 Robin Fairbairns + + * add-general.tex (q-xml2tex,q-subheight,q-multiling): editorial + +2011-04-01 Robin Fairbairns + + * faq-adj-types.tex (q-parskip): mention that (some?) koma-script + classes have the facility (in spades, by the look of it) + +2011-03-30 Robin Fairbairns + + * dirctan.tex: add metalogo + +2011-03-30 Robin Fairbairns + + * faq-symbols.tex (q-scriptfonts): editorial + + * add-general.tex (q-outputrtn, q-whatfloats): editorial + +2011-03-27 Robin Fairbairns + + * add-general.tex (q-simple-maths): add libgreek to ctanrefs, plus a + bit of editorial + + * faq-install.tex: editorial + +2011-03-24 Robin Fairbairns + + * faq-how-do-i.tex (q-logos): add text for hologo and metalogo + +2011-03-24 Robin Fairbairns + + * dirctan.tex: correct alphabetical order in one place + + * faq-graphics.tex (q-pdftexgraphics): add auto-pst-pdf + + * sanitize.pl, sanitize-beta.pl: alter pattern for |...| to "=" delims + +2011-03-23 Robin Fairbairns + + * add-general.tex: add q-simple-maths + + * dirctan.tex: add mtp2lite, mathastext, cat link for mtx, and + libertine, libgreek + + * faq-fonts.tex (q-psfchoice): mention mathtime pro 2 lite + +2011-03-18 Robin Fairbairns + + * add-general.tex (q-referencl): new, about referring to enclosing thing + +2011-03-17 Robin Fairbairns + + * sanitize.pl, sanitize-beta.pl (sanitize_line): align use of + as subs + delimiter between the two files + + * dirctan.tex: add texdef + + * faq-mac-prog.tex (q-ltxcmds): mention texdef (neat!) + +2011-03-16 Robin Fairbairns + + * filectan.tex: remove mpsproof + + * faq-graphics.tex (q-inlgrphapp): new, from add-general + (q-mpprologues): mpsproof now part of \mp{} itself + +2011-03-14 Robin Fairbairns + + * faq-graphics.tex (q-drawing): remove egplot from link list + + * dirctan.tex: add cat link to gmp + + * add-general.tex (q-inlgrphapp): slight tidy, add egplot to link list + +2011-03-12 Robin Fairbairns + + * dirctan.tex: add gmp + + * faq-graphics.tex (q-drawing): remove inline graphics app stuff to new + answer q-inlgrphapp + + * add-general.tex: new q-inlgrphapp + +2011-03-11 Robin Fairbairns + + * add-general.tex (q-attach): new answer, from stackexchange + + * dirctan.tex: add attachfile, navigator + + * faq.sty: add \xelatex + + * sanitize-beta.pl (sanitize_line): add \xelatex + +2011-03-11 Robin Fairbairns + + * faq-graphics.tex (q-drawing): editorial + +2011-03-10 Robin Fairbairns + + * faq-backgrnd.tex (q-texthings): grinding on through (summary remains) + +2011-03-10 Robin Fairbairns + + * faq-backgrnd.tex (q-texthings): grinding through the lists + + * texfaq2html-beta: initialise $item_extra + + * sanitize-beta.pl (sanitize_line): experimental $item_extra for style + + * texfaq2html-beta: add descr style to inline css + + * sanitize-beta.pl (sanitize_line): a whiff of '"'-sanitisation + + * faq-backgrnd.tex (q-mf): editorial, modernisation + +2011-03-10 Robin Fairbairns + + * faq-backgrnd.tex (q-mp): tidying, tweaking, etc. + (q-texthings): regularise various things + +2011-03-09 Robin Fairbairns + + * faq-wdidt.tex (q-crossref): rewrite and lay out less tortuously + (throughout) tidy quote envs + + * faq-t-g-wr.tex (throughout): tidied quote (in one instance only!) + + * faq-projects.tex (q-latex3): sort out unterminated sentence after + alert from bruno le floch + + * faq-mac-prog.tex: (throughout): tidied quotes, eliminated short verbs + + * faq-symbols.tex (throughout): tidied quotes + + * faq-how-do-i.tex (q-proof): add QED + (throughout): verbatim<->quotes checks + + * faq-lab-ref.tex: verbatim<->quotes, again + + * faq-adj-types.tex (throughout): verbatim/quote check + + * texfaq2html-beta: tweak margins of

    (== itemize lists) + + * faq-adj-types.tex (q-codelist): check, update, reformat + +2011-03-08 Robin Fairbairns + + * faq-hyp+pdf.tex, faq-fonts.tex, faq-install.tex: juggling with + verbatim and quotes + + * faq-support.tex: change one verbatim to quoted + + * faq-symbols.tex (q-scriptfonts): add mathabx and urwchancal + + * dirctan.tex: add mpgraphics, mathabx[-type1], urwchancal + + * faq-graphics.tex (q-drawing): mention mpgraphics for inline + +2011-03-07 Robin Fairbairns + + * faq-adj-types.tex (q-papergeom): slight tidying + + * texfaq2html-beta: add trivial para-margin css + +2011-03-04 Robin Fairbairns + + * texfaq2html-beta (throughout): fiddling with html structure + + * faq-backgrnd.tex (q-startup): new, from add-general + + * faq-intro.tex: minor tweaks + +2011-03-03 Robin Fairbairns + + * dirctan.tex: add asana-math, stix, unicode-math and xits + + * faq-projects.tex (q-mathml): redo unicode maths fonts bit + +2011-03-02 Robin Fairbairns + + * faq-backgrnd.tex (q-context): editorial + (q-texthings): correct one of 2 texi2pdf, to texi2dvi + + * add-general.tex (q-startup): new answer + +2011-02-28 Robin Fairbairns + + * faq-mac-prog.tex (q-hash): rewrite for both latex and plain forms + + * faq-docs.tex (q-man-latex): add ctanref for "getting something..."(!) + +2011-02-25 Robin Fairbairns + + * dirctan.tex: add polyglossia + + * add-general.tex (q-multiling): new, on multilingual work, then&now + + * faq-projects.tex (q-luatex): minor updates, add ctan link, correct + version no of current pdftex + + * dirctan.tex: add xetexref, luatex + + * faq-projects.tex (q-xetex): add ctan link to will r's doc + +2011-02-23 Robin Fairbairns + + * faq-mac-prog.tex (q-fontsize): mention fix-cm's omissions (and + suggest replacements) + +2011-02-22 Robin Fairbairns + + * dirctan.tex: add sty2dtx + + * faq-bits+pieces.tex (q-dtx): mention sty2dtx, tidy + + * faq-getit.tex (q-archives): reverse http and ftp "recommendations", + remove last trace of reference to usa site + + * faq-bits+pieces.tex (q-fontname): minor editorial + + * faq-install.tex (q-inst-texlive): simple command line instructions, + only, for now + (q-inst-scut): promote tex live to same level as miktex here + +2011-02-21 Robin Fairbairns + + * faq-install.tex (q-inst-texlive): stub for filling in... + + * faq-getit.tex (q-archives): remove refs to tug.ctan.org as a ctan + site, update remarks about mirror.ctan.org, etc. + (q-uploads): update list of requirements for upload, mention rsync + protocol, update suggestions for mirroring + (q-findfiles): going over and rationalisation + +2011-02-21 Robin Fairbairns + + * add-general.tex (q-labelcount): new, use of refcount package + + * faq-mac-prog.tex (q-oddpage): detail use of changepage, incl use of + ifthen pkg for those who don't understand \if + +2011-02-18 Robin Fairbairns + + * dirctan.tex: add rsfso + + * faq-symbols.tex (q-scriptfonts): mention rsfso + + * sanitize.pl (sanitize_line): updated from -beta + + *** Release 3.21 *** + + * gather-faqbody.tex: today's date (must stop dithering) + +2011-02-17 Robin Fairbairns + + * add-general.tex (q-ctan): proposed new answer to replace existing + q-archives, or to provide background for a revision of that + +2011-02-15 Robin Fairbairns + + * faq-install.tex (q-instt1font): clarify updmap situation (perhaps) + (q-inst1cm): minor editorial + + * faq-fonts.tex (q-pspreview): simplify, given that most browsers can + do the job on their own, nowadays + +2011-02-14 Robin Fairbairns + + * faq-fonts.tex (q-psfchoice): preliminary adjustments + + * sanitize-beta.pl (sanitize_line): add \ttype and \otype + + * faq.sty: add \ttype and \otype, add a few comments + + * faq-fonts.tex (q-usepsfont): a spot more tweaking + (subsection{mf fonts}): moved to end of section (was first subsect) + +2011-02-14 Robin Fairbairns + + * faq-backgrnd.tex: remove q-lollipop + + * faq-fonts.tex (q-usepsfont): remove reference to lollipop, tidy + + * dirctan.tex: add lpic + + * faq-graphics.tex (q-labelfig): mention lpic + + * add-general.tex (q-whatfloats): editorial + (q-outputrtn): more editorial + +2011-02-13 Robin Fairbairns + + * faq-bits+pieces.tex (q-spawnprog): minor editorial + +2011-02-11 Robin Fairbairns + + * faq-bits+pieces.tex (q-write,q-spawnprog): new, from add-general + + * faq-mac-prog.tex (q-whatengine): new, from add-general, replaces + q-ifpdf + + * dirctan.tex: remove acorn, epson + + * filectan.tex: remove miktex-usb + + * faq-biblio.tex (q-custbib): mention biblatex as an alternative route + +2011-02-10 Robin Fairbairns + + * faq-litprog.tex (section{Literate programming}): + + * dirctan.tex: add catalogue ref for ps2pk,ghostscript,gsftopk,fweb and + noweb + remove all entries for derivatives of noweb (leaving noweb itself...) + + * faq-backgrnd.tex (q-whatpdftex): use \The {} in thanh's name + + * faq-wdidt.tex (q-why-inp-font): \ss -> \ss {} + + * faq-docs.tex,faq-graphics.tex (various): vo\ss -> vo\ss {} + + * faq-how-do-i.tex (q-wholerow): space after \textasciicircum (euch) + + * sanitize-beta.pl (sanitize_line): correct delimiter in pattern that + (seems to match) any letter-command name with empty arg [why is that + there in the first place?]; also correct \textasciicircum and \ss + patterns to require a space at the end (pro tem, at least); add \The + +2011-02-09 Robin Fairbairns + + * add-general.tex (q-whatfloats): editorial tidies prior to moving + to main body + (q-write and q-write18): editorial, mostly + + * faq-t-g-wr.tex (q-floats): editorial stuff + +2011-02-08 Robin Fairbairns + + * dirctan.tex: add etex-pkg + + * faq-t-g-wr.tex (q-floats): note interaction between morefloats and + etex packages + + * faq-projects.tex (q-mathml): lowercase tex4ht in ctanrefs (for + consistency with other instances) + (q-wygexpts): remove ref to activetex, seems to have disappeared in its + original form + + * faq-fmt-conv.tex (q-fmtconv): add web ref to tex4ht dev stuff in + ctanrefs for question + +2011-01-28 Robin Fairbairns + + * faq-how-do-i.tex (q-filename): remove the broken code and simply + report that "it's not easy" ;-) + +2011-01-13 Robin Fairbairns + + * add-general.tex (q-write18): new proposed question + (q-write): on reflection, we need this preface to q-write18 + + * sanitize-beta.pl (sanitize_line): catch up with changes to faq.sty + + * faq.sty: lc versions of \progname, \package and \class + +2011-01-12 Robin Fairbairns + + * dirctan.tex: add cprotect; remote convert, cortex-email.dir, conrado + + * faq-wdidt.tex (q-verbwithin): mention cprotect + +2010-12-29 Robin Fairbairns + + * faq-adj-types.tex (q-codelist): extend words about minted/Pygments + +2010-12-27 Robin Fairbairns + + * add-general.tex (q-whatfloats): more fiddling + +2010-12-26 Robin Fairbairns + + * faq-docs.tex: re-do tidies re. bibtex setup + +2010-12-23 Robin Fairbairns + + * faq-docs.tex (q-bibtexing): rewrite to deal with bibtex setup + + * faq-biblio.tex (q-custbib): replace bibtex-doc link with just bibtex + + * dirctan.tex: correct cat link for filehook, add bibtex + + * filectan.tex: correct xampl-bib + +2010-12-19 Robin Fairbairns + + * add-general.tex (q-whatengine): new answer to replace q-ifpdf + +2010-12-12 Robin Fairbairns + + * faq-adj-types.tex (q-papergeom): update for the various extensions of + dvipdfm and rewrite descriptions + +2010-12-11 Robin Fairbairns + + * faq-texsys.tex (q-editors): re-ordered, rationalised a bit, removed + "wildcard" bullet + (q-commercial): clear up debris after removing y&y + +2010-12-09 Robin Fairbairns + + * faq-how-do-i.tex (q-filename): add currfile, mention fink gives way + + * faq-backgrnd.tex (q-texthings): correct typo from yesterday + + * dirctan.tex: add currfile, filehook, restore latex4jed (hah!) + +2010-12-08 Robin Fairbairns + + * dirctan.tex: removed latex4jed, larch, laserjet, since they irritated + me and won't ever be used + + * faq-backgrnd.tex (q-texthings}: link to tug.org/levels.html, context + executable now texmfstart, i'm told + + * faq-docs.tex (q-ref-doc): the nasa latex thing is no more; remove it + and add a ref to karl's thing at gna.org (and on ctan) + +2010-12-06 Robin Fairbairns + + * faq-fonts.tex (q-psfchoice): remove text about docs for [pt]xfonts + (now available via catalogue), mention bad spacing + +2010-12-02 Robin Fairbairns + + * add-general.tex (q-whatfloats): add sketch of mechanism + +2010-11-30 Robin Fairbairns + + * faq-graphics.tex (q-drawing): mention asymptote, egplot and emp as + inline graphics mechanisms + + * faq-adj-types.tex (q-music): correct "current" musixtex link + + * gather-faqbody.tex: v3.21, today (probably shan't release until after + christmas, but...) + + * filectan.tex: remove vertbars (now own dir); simpl-latex now pdf + + * dirctan.tex: add cutwin, vertbars, egplot; biblatex[-contrib] now on + m/l/c + + * faq-how-do-i.tex (q-textflow): mention cutwin + +2010-11-23 Robin Fairbairns + + * add-general.tex (q-xml2tex): more work on peter f's input + +2010-11-18 Robin Fairbairns + + * dirctan.tex: add cat link for html2latex + +2010-11-15 Robin Fairbairns + + * add-general.tex (subsection{Format conversions}): new q-xml2tex + +2010-11-13 Robin Fairbairns + + * faq-fmt-conv.tex (q-readml): minor editorial + +2010-10-28 Robin Fairbairns + + * dirctan.tex: add cat link to catdvi (ho ho) + +2010-10-28 Robin Fairbairns + + * faq-projects.tex (q-mathml): point to tug page in ctanrefs + + * faq-fmt-conv.tex (q-latex2html): add pointer to real tug.org page + on tex4ht (hence real location), in ctanrefs + + * filectan.tex: tex4ht now on obsolete + + * dirctan.tex: add memdesign + + * faq-docs.tex (q-typo-style): memdesign rather than memman + +2010-10-22 Robin Fairbairns + + * faq-adj-types.tex (q-nopagebrk): discuss \pagebreak, \nopagebreak + +2010-10-07 Robin Fairbairns + + * add-general.tex (q-whatfloats): a start of a first stab + + * faq-adj-types.tex (q-music): large rehash around musixtex and opustex + +2010-10-06 Robin Fairbairns + + * faq-jot-err.tex (q-tmupfl,q-atvert): tidies, incl indent'n of quotes + +2010-10-04 Robin Fairbairns + + * filectan.tex: remove morefloats, parskip, path, printlen + + * dirctan.tex: add morefloats, parskip, path, printlen; new location + for musixtex-egler + + * faq-jot-err.tex (q-tmupfl): mention morefloats, with caveats + +2010-10-02 Robin Fairbairns + + * faq-t-g-wr.tex (q-floats): updated morefloat, mention etex + restrictions-regardless-of-number-of-registers + +2010-09-28 Robin Fairbairns + + * add-general.tex (q-onna-stick): comment-out the entire question -- + moot now (i think, but am not _certain_) + + * faq-graphics.tex (q-graphicspath): rephrase discussion of + \graphicspath's (potential) problems + +2010-09-28 Robin Fairbairns + + * add-general.tex (q-outputrtn): new potential answer + +2010-09-27 Robin Fairbairns + + * faq-graphics.tex (q-drawing): mention asyfig, too + + * dirctan.tex: add asyfig and emp + + * faq-graphics.tex (q-drawing): mention emp + +2010-09-24 Robin Fairbairns + + * dirctan.tex: transmute latex-help-texinfo to latex2e-... + + * add-general.tex (q-getnff): new answer for the font installation mess + + * faq-wdidt.tex (q-zerochap): reword for better comprehensibility + +2010-09-21 Robin Fairbairns + + * faq-fmt-conv.tex (q-fmtconv): add openoffice route for ms-word + +2010-09-14 Robin Fairbairns + + * faq-how-do-i.tex (q-filename): editorial, incl. emphasise latex form + of \input, only + +2010-09-11 Robin Fairbairns + * filectan.tex: remove cat link from miktex-setup (confusion); remove + miktex-usb (no longer needed) + +2010-09-09 Robin Fairbairns + + * faq-projects.tex (q-biblatex): mention bibtex8, refine biblatex/biber + + * dirctan.tex: add bibtex8 + +2010-09-07 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add translation for \bibtex + + * faq.sty: add \bibtex + + * faq-projects.tex (q-biblatex): rehash to reflect current realities + (biblatex+biber take over the world) + +2010-09-01 Robin Fairbairns + + * add-general.tex (q-detknize): yet more diddling + +2010-08-31 Robin Fairbairns + + * faq-intro.tex: add gregor zattler, anonymise "not covered" comment + + * faq-bits+pieces.tex (q-adobetypen): typo + +2010-08-29 Robin Fairbairns + + * dirctan.tex: add fltpage + + * faq-how-do-i.tex (q-dpfloat): mention fltpage + +2010-08-27 Robin Fairbairns + + * add-general.tex (q-detknize): printing the contents of a macro + + * faq-docs.tex (q-gethelp): add latex community and stack exchange to + the list of places to ask + +2010-08-19 Robin Fairbairns + + * faq-wdidt.tex (q-baselinepar): editorial work ("an quote environ...") + +2010-08-18 Robin Fairbairns + + * add-general.tex (q-detknize): rewrite last sentence + + * faq.sty: use tmp/comment.cut instead of comment.sty's default; this + is a big win when reading files over nfs, if tmp -> /tmp + +2010-08-17 Robin Fairbairns + + * texfaq2html: bring up-to-date from -beta + + * sanitize.pl: bring up-to-date from -beta + + * gather-faqbody.tex: v3.20 (let's live dangerously!), today + + * mk-makefile: add -t option + + [RELEASE 3.20] + +2010-08-15 Robin Fairbairns + + * faq-intro.tex (section improvement; general typos): add siart for + correction of q-manymathalph + + * faq-jot-err.tex (q-manymathalph): correct usage of bm + +2010-08-14 Robin Fairbairns + + * faq-t-g-wr.tex (subsection{Things "gone away"}): new q-initex from + add-general + + * faq-texsys.tex (q-syswin32): comments about miktex 2.9 (beta) + + * add-general.tex (q-initex): further diddling on miktex statement (now + woollier still...) + +2010-08-13 Robin Fairbairns + + * faq-how-do-i.tex (q-filename): bug fix for the simple \input patch + +2010-08-12 Robin Fairbairns + + * dirctan.tex: add isodoc + + * filectan.tex: add knuth-letter + + * faq-adj-types.tex (q-lettercls): add isodoc and give location of + knuth's letter.tex + +2010-08-11 Robin Fairbairns + + * dirctan.tex: add present + + * faq-adj-types.tex (q-slidecls): mention present + +2010-08-07 Robin Fairbairns + + * faq-adj-types.tex (q-extsizes): mention classes with size ranges + that differ from the norm + + * add-general.tex (q-initex): reword last para slightly to avoid + impression that i know more about miktex than i actually do + +2010-08-05 Robin Fairbairns + + * dirctan.tex: add lecturer + + * faq-adj-types.tex (q-slidecls): mention lecturer + + * sanitize-beta.pl (sanitize_line): restore old \CONTeXt command + + * faq.sty: add \context command + +2010-07-29 Robin Fairbairns + + * faq-adj-types.tex (q-fancyhdr): add keywords for fancyhdr + (q-reallyblank): correct ref to fancyhdr + +2010-07-28 Robin Fairbairns + + * texfaq2file: add $mirror_selector, use extended dirctan, filectan + previously developed in texfaq2html-beta + +2010-07-27 Robin Fairbairns + + * dirctan.tex: add beamerposter + + * faq-adj-types.tex (q-slidecls): minor editorial + (q-poster): add beamerposter + + * faq-intro.tex: add nicola talbot + + * faq-adj-types.tex (q-poster): correct link for nicola's tutorial, + tidy link list + +2010-07-22 Robin Fairbairns + + * faq-adj-types.tex (q-nopagebrk): correct assertion about samepage vs. + list items + + * add-general.tex: new answer q-samepage in "why does it do that" + + * faq.sty: add \alltex, \latex, \latexe, \pdflatex + + * sanitize-beta.pl: more of the lower-case bumpy road commands, extend + replacement of " by + in substitute commands + +2010-07-18 Robin Fairbairns + + * faq-bits+pieces.tex (q-fontname): elaborate a bit (why foundries' + names don't help) + +2010-07-08 Robin Fairbairns + + * faq-fonts.tex (q-metrics): rewrite text around ly1 + + * faq-graphics.tex (q-dvipsgraphics): bmeps now part of dktools + + * dirctan.tex: add titleref, dktools; remove bmeps; edit ly1, + pdftex-graphics + + * filectan.tex: remove titleref + + * faq-intro.tex: mention moulder in helpers list + + * faq-t-g-wr.tex (q-widows): rewrite with clarification from peter + moulder + +2010-07-07 Robin Fairbairns + + * faq.sty: hack around the non-existence of \textcurrency in ptmr + + * dirctan.tex: make revtex ref revtex4-1 (for clarity) + + * faq-biblio.tex (q-mcite): deal with revtex 4.1 situation + +2010-06-28 Robin Fairbairns + + * dirctan.tex: add cat link for ite + +2010-06-22 Robin Fairbairns + + * sanitize-beta.pl (generate_CTAN_ref): use $mirror_selector + + * texfaq2html-beta: add $mirror_selector + +2010-06-08 Robin Fairbairns + + * faq-adj-types.tex (q-secnumdep): give actual commands for + manipulating secnumdepth and tocdepth, in tocvsec2 and memoir + +2010-05-29 Robin Fairbairns + + * faq-projects.tex (q-mathml): gasp! stix now released + + * dirctan.tex: fontspec moved to m/l/c + + * faq-backgrnd.tex (q-triptrap): sort out paren at end of last para + +2010-05-16 Robin Fairbairns + + * filectan.tex: del needspace,notoccite,nopageno,optional,underscore + + * dirctan.tex: add needspace,notoccite,nopageno,optional,underscore + + * faq-how-do-i.tex (q-conditional): xcomment now in own dir + +2010-05-09 Robin Fairbairns + + * faq-how-do-i.tex (q-footnpp): editorial on perpage vs zref-perpage + +2010-05-02 Robin Fairbairns + + * faq-projects.tex (q-mathml): try to sound cheery about stix + +2010-05-01 Robin Fairbairns + + * dirctan.tex: add emptypage + + * faq-adj-types.tex (q-reallyblank): mention emptypage package + +2010-04-28 Robin Fairbairns + + * faq-texsys.tex (q-syswin32,q-sysunix): tl portable + (q-sysunix): we do now have reports of tex-gpc running + + * faq-wdidt.tex (q-baselinepar): rewrite, with solutions after each + example, and dealing with the business of size change at end par + +2010-04-27 Robin Fairbairns + + * faq-intro.tex (list of contributors): add bob tennent, comment mike + vulis + + * dirctan.tex: add classico, sansmath + + * faq-fonts.tex (subsection{Adobe Type 1 fonts}): add entry to list in + q-psfchoice for urw classico + + * CHANGES-3.19e: mention above change + +2010-04-20 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add \macosx{} + + * faq-texsys.tex (section{TeX Systems}): editorial in q-sysmac, + q-sysother + +2010-04-20 Robin Fairbairns + + * faq-texsys.tex: diddle with oztex and cmactex stuff in q-sysmac; + editorial in q-sysother + +2010-04-19 Robin Fairbairns + + * dirctan.tex: add atari-cstex + + * faq-texsys.tex (section{TeX Systems}): various tidies in the various + q-sys* answers (removing the last of the description environments) + +2010-04-18 Robin Fairbairns + + * faq-texsys.tex (section{TeX Systems}): split out 4 sub-answers + (q-sys*) from q-TeXsystems, which then becomes (mostly) a list of + references + +2010-04-17 Robin Fairbairns + + * dirctan.tex: add tex-gpc + + * faq-texsys.tex (section{TeX Systems}): another thrash at windows, + incl commenting-out w32tex pending possible developments; amalgamate + "unix" and "linux" entries, and add tex-gpc + +2010-04-16 Robin Fairbairns + + * faq-texsys.tex (section{TeX Systems}): further iteration of windows + dists, removing w32tex (which i can't get to at all now) and rehashing + text around the miktex/tex live compare and contrast thing + + * faq-getit.tex (q-cd): redo text after thinking about the faq-texsys + stuff about windows + +2010-04-15 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add \textcurrency, \texteuro + + * faq.sty: add \etex + + * faq-intro.tex: qualify entry for scott pakin in list of the great and + good + + * faq-adj-types.tex (q-codelist): correct ctanref for minted + +2010-04-14 Robin Fairbairns + + * faq-texsys.tex (section{TeX Systems}): chunk of work on miktex/ + texlive for windows. needs reviewing before release!!! + + * sanitize-beta.pl (sanitize_line): \tex{} for TeX, similarly for + several other tex-variants + +2010-04-14 Robin Fairbairns + + * dirctan.tex: add biber + + * faq-projects.tex (q-biblatex): add ctanref to biber + +2010-04-13 Robin Fairbairns + + * faq-adj-types.tex: add subdocs to q-multidoc (feels dodgy as i write + the description...) + + * sanitize-beta.pl (sanitize_line): semicolon at end of \hyperflat(!) + + * texfaq2html: load sanitize.pl not -beta! + +2010-04-11 Robin Fairbairns + + * faq.sty: create skeleton of collecting catalogue entries in ctanrefs + + * faq-adj-types.tex (q-replstdcls): editorial tidies + + * faq.sty: add \hyperflat as long-term replacement for \latexhtml + + * sanitize-beta.pl (sanitize_line): deal with \hyperflat + + * faq-intro.tex (list of contributors): add tomek + + * faq-adj-types.tex (subsection{Alternative document classes}): add + blurb about standalone in q-multidoc + +2010-04-10 Robin Fairbairns + + * dirctan.tex: add docmute, standalone + + * faq-adj-types.tex (subsection{Alternative document classes}): add + docmute in q-multidoc + +2010-04-09 Robin Fairbairns + + * dirctan.tex: add docmute, cat link for docmfp + +2010-04-08 Robin Fairbairns + + * faq-docs.tex (section{Documentation and Help}): retitle q-doc-wiki as + wiki _books_, bits of editorial + +2010-04-08 Robin Fairbairns + + * faq-mac-prog.tex (q-latexwords): typo corrected + +RELEASE 3.19d (2nd attempt) + +2010-04-08 Robin Fairbairns + + * faq-adj-types.tex (subsection{Typesetting specialities}): editorial + in q-makeindex (including two separate texindex entries in list) + + * dirctan.tex: add catalogue link idxtex to glo+idxtex + +2010-04-06 Robin Fairbairns + + * texfaq2html, sanitize.pl: update + + * sanitize-beta.pl (sanitize_line): massive shambles in [lr]brace + + * faq-mac-prog.tex (subsection{"Generic" macros and techniques}): + correct ref to shortvrb in ctanrefs of q-activechars, and tidy + verbatim stuff in 2nd para of answer + +2010-04-05 Robin Fairbairns + + * faq-adj-types.tex (subsection{Alternative document classes}): add + example structures for combine and subfiles alternatives in q-multidoc + +2010-04-04 Robin Fairbairns + + * faq-projects.tex (section{Current TeX-related projects}): accommodate + luatex 0.60.0 in scribble about luatex + +2010-04-02 Robin Fairbairns + + * gather-faqbody.tex: v3.19d, today (to be revised ;-) + + * faq-intro.tex: omit unnecessary stuff in html mode (looks a bit bare + now, but ought to improve if/when i can sort out a css for the output) + +2010-04-01 Robin Fairbairns + + * faq-intro.tex: minute delta-comment in list of helpers + + * faq-how-do-i.tex: correct typo in q-hyphoff + +2010-03-26 Robin Fairbairns + + * faq-graphics.tex,faq-biblio.tex,faq-lab-ref.tex,faq-how-do-i.tex, + faq-symbols.tex,faq-mac-prog.tex,faq-t-g-wr.tex,faq-wdidt.tex, + faq-jot-err.tex,faq-projects.tex (throughout): add individual cat + links for "distributed as part of" ctanrefs + +2010-03-24 Robin Fairbairns + + * faq-fonts.tex (Macros for using fonts): editorial on some rubbish in + q-fonts-pln + +2010-03-23 Robin Fairbairns + + * faq-adj-types.tex (Page Layout): mention pdfcolparcolumns in + q-parallel + (throughout): add individual cat links for "as part of" ctanrefs + + * dirctan.tex: add minted + + * faq-adj-types.tex (Typesetting specialities): add minted in q-codelist + + * sanitize-beta.pl (sanitize_line): add flatversion in the $ignoring + twiddling at the end + + * faq.sty: add flatversion env (== non-hyperversion) + +2010-03-22 Robin Fairbairns + + * dirctan.tex: add vruler + + * filectan.tex: remove vruler + + * faq-adj-types.tex (Page Layout): editorial in q-parallel, add own cat + entry for pdfcolparallel + +2010-03-18 Robin Fairbairns + + * dirctan.tex: add fncylab, ifmtarg, import (hypernat was here already) + + * filectan.tex: remove fncylab, hypernat, ifmtarg, import + +2010-03-15 Robin Fairbairns + + * faq-docs.tex: epslatex one ref only, now, relying on catalogue + + * sanitize-beta.pl (generate_CTAN_ref, etc.): generate per reference + catalogue entries if opt argument of \CTANref + + * dirctan.tex: add cat link for everypage + + * faq-texsys.tex: editorial to avoid multiple \ctanref per line + + * faq-graphics.tex: single reference to epslatex (doc from catalogue) + + * filectan.tex: remove epslatex_(ps|pdf) + + * dirctan.tex: add epslatex + + * faq.sty: have \CTANref check for following optional argument (and + ignore it) + + * faq-adj-types.tex: mention atbegshi in q-watermark + +2010-03-10 Robin Fairbairns + + * dirctan.tex: add framed, verbdef (despite believing it already done!) + + * faq-biblio.tex (subsection{Creating citations}): qualify ctanref for + chapterbib in q-chapbib + +2010-03-08 Robin Fairbairns + + * dirctan.tex: add threeparttable + correct directory for bigstrut (it's multirow) + + * filectan.tex: remove threeparttable + +2010-03-02 Robin Fairbairns + + * faq-how-do-i.tex (subsection{Document management}): try to clear + ambiguity about \input in q-filesused + + * Makefile: make "index" opt come out in help + + * dirctan.tex: add framed, verbdef dirs + + * filectan.tex: removed framed, verbdef + +2010-02-28 Robin Fairbairns + + * filectan.tex: remove excludeonly + + * dirctan.tex: add bigstrut, excludeonly + + * faq-how-do-i.tex (subsection{Tables, figures and diagrams}): remark + about docs of tabls and bigstrut now not needed; bigstrut now has own + registered directory + +2010-02-27 Robin Fairbairns + + * dirctan.tex: add tabls qua directory + + * filectan.tex: remove tabls + +2010-02-26 Robin Fairbairns + + * faq-how-do-i.tex (subsection{Tables, figures and diagrams}): correct + incompletely edited reference to \PBS in q-tabcellalign + +2010-02-24 Robin Fairbairns + + * Makefile: add web-index target to updated (dir|file)ctan for when + ctan structure is changing + +2010-02-23 Robin Fairbairns + + * faq-how-do-i.tex (subsection{Floating tables, figures, etc.}): remove + mention of docs of dpfloat + + * faq-wdidt.tex (subsection{Common errors}): use fix2col package + direct, rather than ref to carlisle bundle + + * filectan.tex: remove anonchap, bold-extra, braket, cancel, chngcntr, + dblfloatfix + + * dirctan.tex: add anonchap, bold-extra, braket, cancel, chngcntr, + fix2col, dblfloatfix + +2010-02-18 Robin Fairbairns + + * faq-intro.tex (section improvement; general typos): add enrico + gregorio (help with q-seccntfmt) + + * faq-mac-prog.tex (subsection{LaTeX macro programming}): redo + switching code in q-seccntfmt + +2010-02-12 Robin Fairbairns + + * texfaq2html-beta: convert (rather smaller number of) entities + + * sanitize-beta.pl (sanitize_line): convert all alphabetic entities to + numerical entities + +2010-02-08 Robin Fairbairns + + * faq-backgrnd.tex (section{The Background}): rehash q-texfuture, as + suggested by karl berry + +2010-02-07 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): scrunge hyperversion + + * faq.sty: add a hyperversion env + + * dirctan.tex: add knuth-dist + + * faq-backgrnd.tex (section{The Background}): split q-plaintex from + q-whattex (controversial?) + + * filectan.tex: add knuth-tds + +2010-02-05 Robin Fairbairns + + * faq-backgrnd.tex (section{The Background}): add ctan link in q-etex + + * dirctan.tex: add etex + +2010-02-05 Robin Fairbairns + + * texfaq2html-beta: an even more abstruse grep command for registering + labels than was the old for registering question nos (do we really + need to convert + to space? are user-generated questions significant? + -- because if not there never will be "xxx + yyy") + +2010-02-03 Robin Fairbairns + + * dirctan.tex: add ulem "stand-alone" + + * filectan.tex: remove ulem + +2010-02-02 Robin Fairbairns + + * faq-mac-prog.tex (subsection{LaTeX macro programming}): remove + superflous \expandafter in q-seccntfmt, and tidy text a bit + +2010-02-02 Robin Fairbairns + + * add-general.tex (subsection{"Generic" macros and techniques}): move + q-ovwtsym and q-long-outer to start of text + add q-detknize + +RELEASE 3.19c + +2010-01-26 Robin Fairbairns + + * mk-makefile: deal with CHANGES files + +2010-01-22 Robin Fairbairns + + * dirctan.tex: correct catalogue link for revtex + + * filectan.tex: remove capt-of, url + + * dirctan.tex: add capt-of, url + +2010-01-20 Robin Fairbairns + + * faq-docs.tex (section{Documentation and Help}): herbert voss's handy + "tips and tricks" has disappeared, leaving q-doc-dirs very thin + + * dirctan.tex: add dtl, dviasm + + * faq-t-g-wr.tex (subsection{Things have "gone away"}): suggest dis/re- + assembling dvi files to get rid of am font refs in q-amfonts + +2010-01-19 Robin Fairbairns + + * faq-docs.tex,faq-fonts.tex,faq-getit.tex,faq-how-do-i.tex: use + mirrors.ctan.org where reasonable + + * dirctan.tex: add txfontsb + + * faq-fonts.tex (subsection{Adobe Type1 fonts}): mention txfontsb + +2010-01-08 Robin Fairbairns + + * gather-faqbody.tex: update version and date + + * sanitize.pl (sanitize_line): brought -beta changes to mainstream + +2010-01-05 Robin Fairbairns + + * gather-faqbody.tex: extend comment on the line making \faqinput work + when processing with latex + + * build-faqbody (gather_process): slightly refine the regexp that + was ignoring all lines beginning \let ;-) + +2010-01-05 Robin Fairbairns + + * sub-luximono.sty: jiffy for when \not\exists luximono + + * faq.sty: provide for no luximono + +2010-01-04 Robin Fairbairns + + * faq-biblio.tex (subsection{Creating bibliographies}): mention google + scholar in q-buildbib + +2009-12-27 Robin Fairbairns + + * faq-intro.tex (section improvement; general typos): add uwe lueck + + * faq-t-g-wr.tex (subsection{Getting things to fit}): correct the name + of the author of pictexwd (courtesy uwe lueck) + +2009-12-25 Robin Fairbairns + + * faq-projects.tex (section{Current TeX-related projects}): mention + luatex 0.50.0, and tidy up the paragraph, in q-luatex + +2009-12-24 Robin Fairbairns + + * faq-install.tex (section{Installing (La)TeX files}): change two + (different) uses of kpsewhich to find a variable to use -var-value + instead, in q-what-tds and q-privinst + +2009-12-19 Robin Fairbairns + + * faq-getit.tex (section{Acquiring the Software}): minor edit of + q-archives + + * faq-bits+pieces.tex (section{Bits and pieces of (La)TeX}): change + anchor for liang's thesis in q-hyphen + (section{Bits and pieces of (La)TeX}): ctan link for auc-tex in q-dtx + (section{Bits and pieces of (La)TeX}): minor edit of q-ecfonts + (section{Bits and pieces of (La)TeX}): redo q-tds somewhat + +2009-12-18 Robin Fairbairns + + * faq-bits+pieces.tex (section{Bits and pieces of (La)Tex}) rehash + q-dvi and q-specials somewhat + + * dirctan.tex: typo in miktex + + * filectan.tex: remove pdftex-oztex (moved, but no longer used anyway), + and move both install-tl links down from 2008/ subdir + +2009-12-17 Robin Fairbairns + + * faq-getit.tex (section{Acquiring the Software}): reword q-nonfree to + reflect the actual disappearance of the nonfree tree + (section{Acquiring the Software}): update details of the tex collection + from the web site (in q-cd, of course) + (section{Acquiring the Software}): use official address for dante + search page, in q-findfiles + +2009-12-11 Robin Fairbairns + + * faq-projects.tex (section{Current TeX-related projects}): tidy up + q-latex3 (used to ref unpackages) + + * faq-texsys.tex (section{TeX Systems}): tidy up miktex, and ref to + miktex under linux; removed commented non-386 nt refs + + * dirctan.tex: kill two non-intel miktex links, add miktex "plain" + +2009-12-10 Robin Fairbairns + + * gather-faqbody.tex: v3.19b, date + + * dirctan.tex: add threeparttablex + + * faq-how-do-i.tex (subsection{Footnotes}): add threeparttablex, and + rewrite somewhat... + +2009-12-09 Robin Fairbairns + + * faq-backgrnd.tex (section{The Background}): context is already + running on luatex (in q-context) + (section{The Background}): \luatex without {} in q-texfuture :-( + + * sanitize-beta.pl (sanitize_line): translate \LuaTeX{} + +2009-12-08 Robin Fairbairns + + * faq-how-do-i.tex (subsection{Document management}): rewrite blurb + around pdftex in intro of q-changebars + +2009-11-22 Robin Fairbairns + + * dirctan.tex: add here.sty + + * faq-how-do-i.tex (subsection{Floating tables, figures, etc.}): add + here package to q-figurehere + +2009-11-21 Robin Fairbairns + + * faq-install.tex (section{Installing (La)TeX files}): mention mactex + default location for home texmf, in q-privinst + +2009-11-20 Robin Fairbairns + + * faq-hyp+pdf.tex (section{Hypertext and PDF}): first attempt at + sorting out q-pdfpagelabels + +2009-11-12 Robin Fairbairns + + * add-general.tex (subsection{Things have gone away}): minor typo in + q-initex + + * faq-projects.tex (section{Current TeX-related projects}): work on + q-luatex to minimise hostages to fortune. (miktex 2.8 _wasn't_ + released with a luatex implementation, for example) + + * faq-intro.tex (section{Introduction}): explain what the visual faq is + about + +2009-11-11 Robin Fairbairns + + * faq-intro.tex: add steve mayer to the grand old list + + * faq-projects.tex (section{Current TeX-related projects}): correct + link to mathtex + +2009-10-30 Robin Fairbairns + + * faq-intro.tex (section improvement; general typos): add david jansen + + * sanitize-beta.pl (sanitize_line): deal with \ltxcounter + + * faq.sty: add command \ltxcounter + + * faq-jot-err.tex (section{The joy of TeX errors}): remove *two* + spurious \end{enumerate} from example code in q-errmissitem + +2009-10-29 Robin Fairbairns + + * faq-mac-prog.tex (subsection{"Generic" macros and techniques}): orig + command copy missing (more than once) in q-patch + +2009-10-23 Robin Fairbairns + + * faq-intro.tex (subsection{Origins}): extend comment on joseph w + + * faq-mac-prog.tex (subsection{"Generic" macros and techniques}): add + l3keys[2e] to discussion in q-keyval + +2009-10-21 Robin Fairbairns + + * faq-projects.tex (section{Current TeX-related projects}): remove ref + to and link to dir of keys3 + + * faq-mac-prog.tex (subsection{"Generic" macros and techniques}): + remove mention of keys3 in q-keyval + + * filectan.tex: xtexcad off nonfree tree + + * dirctan.tex: add changepage directory + + * filectan.tex: remove changepage + +2009-10-18 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): treat typesetversion like + dviversion (which ought to be right...) + + * faq.sty: add environment typesetversion + + * dirctan.tex: add subdepth, remove qms, quicspool + + * add-general.tex (subsection{Mathematics}): add q-subdepth + +2009-10-11 Robin Fairbairns + + * faq-docs.tex (section{Documentation and Help}): change link for ams + "short math guide" + +2009-10-09 Robin Fairbairns + + * faq-bits+pieces.tex (section{Bits and pieces of (La)TeX}): ref xetex + and luatex in q-adobetypen + + * faq-intro.tex (introduction): add a para at the end of the list of + "real" contributors, to point out that lots of people help without + realising i'm snapping up their words... + + * texfaq2html: use \end{introduction} to recognise end of intro copying + add code to read in catalogue details for files (oops) + + * texfaq2html-beta: use \end{introduction} to recognise end of intro + copying + + * dirctan.tex: various font-related catalogue entries (from psfchoice) + +2009-10-09 Robin Fairbairns + +RELEASE 3.19a + +2009-10-08 Robin Fairbairns + + * CHANGES-3.19a: new, for release + + * faq-wdidt.tex (subsection{Common misunderstandings}): new q-emptynum + from add-general + + * Makefile ($(HTMLDIR)/index.html): add faqbody.tex to prereqs + +2009-10-07 Robin Fairbairns + + * sanitize.pl: incorporate developments in -beta + + * texfaq2file: correct root addr (in reading archive.list) + +2009-10-06 Robin Fairbairns + + * faq-how-do-i.tex (subsection{Document management}): add latex-make, + latex_maker and vpp discussion to q-make + + * dirctan.tex: add latex-make, latex_maker and vpp + +2009-10-04 Robin Fairbairns + + * faq-docs.tex (section{Documentation and Help}): add texlive and + miktex maintainers to people it's not good to ask direct, in q-gethelp + +2009-09-11 Robin Fairbairns + + * faq-biblio.tex (subsection{Creating bibliographies}): append further + stuff to the last sentence of q-capbibtex + +2009-08-31 Robin Fairbairns + + * faq-wdidt.tex (subsection{Why shouldn't I?}): editorial in q-dolldoll + (subsection{Why shouldn't I?}): correct typo in q-2letterfontcmd + +2009-08-29 Robin Fairbairns + + * faq-adj-types.tex (subsection{Document structure}): remove caveat + about front- and backmatter in q-secthead + + * faq-install.tex (section{Installing (La)TeX files}): another + editorial hack at q-instt1font + +2009-08-28 Robin Fairbairns + + * faq-install.tex (section{Installing (La)TeX files}): minor editorial + in q-instt1font + +2009-08-26 Robin Fairbairns + + * faq-install.tex (section{Installing (La)TeX files}): hack viciously + at q-inst1cm, move it to end of section + + * Makefile (clean): remove faqbody.tex too + (): correct variable names, correct dependencies + +2009-08-25 Robin Fairbairns + + * faq-install.tex (section{Installing (La)TeX files}): deal with + confusion at the start of q-instt1font (spotted by jos\'e carlos + santos, again...) + + * faq-bits+pieces.tex (section{Bits and pieces of (La)TeX}): tidy up + the shambles of q-ecfonts + +2009-08-25 Robin Fairbairns + + * dirctan.tex: correct three typos created while adding catalogue links + + * faq-mac-prog.tex (subsection{"Generic" macros and techniques}): in + q-patch, extend discussion of ted package, change patchcmd + accordingly, and do a few editorial diddles + +2009-08-23 Robin Fairbairns + + * faq-fonts.tex (subsection{Macros for using fonts}): mention + font-change in q-fonts-pln + + * dirctan.tex: add font-change + +2009-08-02 Robin Fairbairns + + * faq-intro.tex: add RIP note for Eitan Gurari ... much missed already + + * dirctan.tex: sort out a couple of catalogue links + + * check-ctan-lists: display missing cat entries + + * filectan.tex: add cat links + +2009-08-01 Robin Fairbairns + + * dirctan.tex: remove t1tidy,t1tools,t1utils,uktug,umddvi,umlaute, + ugaritic,umrand,unadobe,uncompressing,undump,unix,unpacked,untex,usl, + utthesis,va,vector,vector,vga2mf,vietnamese,vispeech,vm-cms,vplutils, + vrb,vslitex,vutex,w2latex,wasy2,webtoc,whatstex,williams,winw2ltx, + word2tex,word_tex,wsuipa,xetal,xypic -- cat links completed + +2009-07-31 Robin Fairbairns + + * faq-docs.tex (section{Documentation and Help}): editorial in + q-maillists* + + * dirctan.tex: remove pstab, pxlgen, qfig, quicspool, ransom, + recycle, redit, reduce, relabel, review, rmit, rune, rweb, s2latex; + cat links to end r* + remove sanskrit,saiter,sbtex,schemetex,screenview,script,scripttex, + sisisi, slant,sml,softfonts,southarabian,spain,spelchek,spell, + spiderweb,srune,ssl,ssqqote,stmaryrd,subeqnarray,sueterlin,swebib, + swedish,sweet-tex,swiftex,syriac + cat links to end s* + remove tamil,tbe,tcd-manual,tde-macros,teencontrex,tek2eepic,telugu, + tengwar,tex--xet,tex-d-l,tex-implementors,tex-primer_vms-specific, + tex-surface,texcalc,texchord,texdraw,texed,texfilt,texgraph, + texi2roff,texix,texpert,texproc,text1,text2dvi,textool,textures, + textures_figs,texutils,texware,thai,tie,tiff,translit,tree,tsipa, + tspell,turing[+],turkish,twcal,tx1,typingtex + cat links to end t* + restore spiderweb,spain,swebib + + +2009-07-28 Robin Fairbairns + + * add-general.tex (subsection{Why does it do that?}): new q-emptynum + containing an offcut from q-nopageno + + * faq-adj-types.tex (subsection{Page layout}): further tidying of + q-nopageno, remove matter for q-emptynum + +2009-07-27 Robin Fairbairns + + * faq-adj-types.tex (subsection{Page layout}): further tidying of + q-nopageno + +2009-07-21 Robin Fairbairns + + * faq-adj-types.tex (subsection{Page layout}): amalgamate + q-nopageno and q-ps@empty (which talked about the same sorts of thing) + (subsection{Page layout}): change ref to \ps@empty in q-fancyhdr to + q-nopageno (not entirely reasonable just now, but we're getting there) + + * add-general.tex (subsection{Things have "gone away"}): new q-initex + +2009-07-20 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): \dots->… (not ellipsis!) + +2009-07-16 Robin Fairbairns + + * dirctan.tex: cat links to end p* + +2009-07-15 Robin Fairbairns + + * dirctan.tex: added lshort, more cat links (up to l* now) + + * filectan.tex: removed lshort (now in dirctan) + +2009-07-14 Robin Fairbairns + + * faq-docs.tex (section{Documentation and Help}): add link to the + symbol classifier, in q-symbols + + * dirctan.tex: still more catalogue links + +2009-07-13 Robin Fairbairns + + * dirctan.tex: bunch of new catalogue links (no particular order) + + * texfaq2html-beta: deal with \CTANdirectory* and a cat link, and + \CTANfile ditto + + * sanitize-beta.pl (generate_CTAN_ref): generate refs for directories + +2009-07-12 Robin Fairbairns + + * dirctan.tex: catalogue links up to f* + +2009-07-10 Robin Fairbairns + + * faq-support.tex (section{Support Packages for TeX}): add link to + cygwin installation advice in q-xfigetc + + * faq-projects.tex (section{Current TeX-related projects}): typo + spotted by fran\c{c}ois charette in q-biblatex, and further editorial + work starting from another of his observations + +2009-07-06 Robin Fairbairns + + * faq-biblio.tex (section{References from articles}): add warning about + citeref's problems with cite.sty in q-backref + +2009-07-03 Robin Fairbairns + + * dirctan.tex: cat linkparallels up to cm-super + + * add-general.tex (subsection{Bits and pieces of (La)TeX}): new + q-howfonts + + * faq-mac-prog.tex (subsection{LaTeX macro programming}): correct one + instance of spelling of chngcntr in q-running-nos + +2009-07-02 Robin Fairbairns + + * faq.sty: get rid of optional args to \CTAN-(directory|file) + +2009-06-30 Robin Fairbairns + + * faq-fonts.tex (subsection{MF fonts}): bluesky fonts from amsfonts in + q-getbitmap + + * faq-install.tex (section{Installing (La)TeX files}): remove "bluesky" + from name of q-inst1cm + + * dirctan.tex: remove bluesky stuff + +2009-06-30 Robin Fairbairns + + * dirctan.tex: alpha now back to main tree + + * faq-t-g-wr.tex (subsection{Things have "gone away"}): use amsfonts + + * faq-install.tex (section{Installing (La)TeX files}): ams and cm fonts + type 1 links both go to amsfonts now + + * dirctan.tex: add amsfonts-only link + + * faq-fonts.tex (subsection{Adobe PS fonts}): replace refs to + ams-amstype1 + + * faq-symbols.tex (section{Symbols, etc.}): all ams things are in + amsfonts now + + * dirctan.tex: added catalogue links up to babel + +2009-06-29 Robin Fairbairns + + * texfaq2html-beta: revert to oldstyle css, having experienced a + stronger yuck reaction to hufthammer's other suggestions + + * dirctan.tex: add cat link for footmisc + + * texfaq2html-beta: decode catalogue entry name (trailing [foo]) after + \CTANdirectory, non-starred versions only pro tem + + * sanitize-beta.pl (generate_CTAN_ref): add catalogue link if available + +2009-06-24 Robin Fairbairns + + * add-general.tex (subsection{"Generic" macros and techniques}): a bit + of work on q-bgroup + +2009-06-23 Robin Fairbairns + + * texfaq2html-beta: try Steely style sheet for today... + + * faq-docs.tex (section{Documentation and Help}): add reference to a + "full" tug india latex guide on sarovar + +2009-06-22 Robin Fairbairns + + * texfaq2html-beta: add css link to header of docs (Oldstyle) + + * faq-docs.tex (section{Documentation and Help}): mention hisrchhorn's + amslatex-primer in q-man-latex + (section{Documentation and Help}): comment about difficulty of reading + in q-ref-doc + +2009-06-18 Robin Fairbairns + + * faq-graphics.tex (section{Graphics}): change title of q-impgraph + + * patchdates.tex: update patch version and date (was 2007...) + + * add-general.tex (subsection{"Generic" macros and techniques}): new + answer q-bgroup + + * sanitize-beta.pl (sanitize_line): make \dots{} produce &ellipsis; + +2009-06-16 Robin Fairbairns + + * faq-how-do-i.tex (subsection{Mathematics}): correct statements about + \textrm in q-mathstext (after enlightenment from Philipp Stephani...) + +2009-06-15 Robin Fairbairns + + * letterfaq.tex,newfaq-patch.tex,newfaq.tex: use gather-faqbody in jf's + lovely \afterassignment\endinput\input line... + + * Makefile: include subdocuments.mk, add $(SUBDOCS) to BODY + + * subdocuments.mk: list of things gathered by gather-faqbody + +2009-06-13 Robin Fairbairns + + * newfaq.tex,newfaq-patch.tex,letterfaq.tex: use gather-faqbody + + * gather-faqbody.tex: new name for faqbody, as gutted (see below) + + * faq-intro.tex,faq-backgrnd.tex,faq-docs.tex,faq-bits+pieces.tex, + faq-getit.tex,faq-texsys.tex,faq-dvi.tex,faq-support.tex, + faq-litprog.tex,fmt-conv.tex,faq-install.tex,faq-fonts.tex, + faq-hyp+pdf.tex,faq-graphics.tex,faq-biblio.tex,faq-adj-types.tex, + faq-lab-ref.tex,faq-how-do-i.tex,faq-symbols.tex,faq-mac-prog.tex, + faq-t-g-wr.tex,faq-wdidt.tex,faq-jot-err.tex,faq-projects.tex, + faq-the-end.tex: split out sections of faqbody.tex + + * faqbody.tex: split sections out into their own faq-*.tex, make + this predominantly a set of \faqinput commands + + * faq.sty: deal with LastEdit* + + * sanitize-beta.pl (sanitize_line): process \LastEdit* + + * faqbody.tex: adding \LastEdit to q-texorpdf,q-recovertex, + q-linmacnames,q-latexpronounce,q-logos,q-mcite,q-texthings + +2009-06-11 Robin Fairbairns + + * Makefile (newfaq.aux): move label to linf of its own + + * Makefile.CTAN (CHANGES): do this properly (may need -new rather than + -replace) + + * dirctan.tex: add figflow + + * faqbody.tex (subsection{Tables, figures and diagrams}): add figflow + to q-textflow (at bnb's suggestion), and remove "in latex" qualifier + in question title + + * faq.sty: add \LastEdit (to gobble, pro tem at least) + + * sanitize-beta.pl (sanitize_line): add \LastEdit + + * faqbody.tex: v3.19a, today + (paragraph{Modified tex executables}): a couple of typos spotted by + scott pakin in q-texthings, add experimental \LastEdit + + * sanitize-beta.pl (sanitize_line): move \ISBN .. \Newsgroup above + \section, etc., so that those things can be in section arguments + +2009-06-11 Robin Fairbairns + + * sanitize.pl (generate_CTAN_ref): change worked for -beta, so here too + + * sanitize-beta.pl (generate_CTAN_ref): missing "/" found by bnb + +2009-06-10 Robin Fairbairns + + * CHANGES-3.19: final released version + + * faqbody.tex: today's date + + * Makefile.CTAN (CHANGES): muck about with installation of new file + + * locations.mk: add HTMLDIREL, define HTMLDIR in relation to it + + * Makefile (release): new target, generate pdfs and html tar file + +2009-06-09 Robin Fairbairns + + * dirctan.tex: add collref; bring macros/blu, systems/msdos/e4t, + support/et, support/jpeg2ps, macros/scripttex from nonfree; junk + oztex-german (now obsolete), patches (nonsense) + + * faqbody.tex (section{References from articles}): rearrange q-mcite a + bit, and add collref to it + +2009-06-09 Robin Fairbairns + + * Makefile.CTAN: don't do .ps files any longer + + * Makefile: don't generate .ps files in "all", just pdf + + * sanitize.pl: up to date with -beta changes + + * texfaq2html: up to date with -beta changes + + * texfaq2html-beta: removed debugging statements (already commented) + +2009-06-08 Robin Fairbairns + + * faqbody.tex (section{Background}): micro-editorial in q-latexpron... + +2009-06-07 Robin Fairbairns + + * faqbody.tex (section{Background}): untangle logos in re. q-latexe, + and modify q-latexpronounce accordingly + (subsection{Odds and ends}): adjust q-logos to cope with non-bumpy text + such as we now use + + * faq.sty: add \latexe + +2009-06-03 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): new + q-linmacname from add-general + +2009-05-29 Robin Fairbairns + + * add-general.tex (subsection{"Generic" macros and techniques}): change + name of q-macronames to q-linmacnames, yet more editorial + + * faqbody.tex (section{Format conversions}): editorial in q-recovertex + (section{The joy of TeX errors}): new q-texorpdf from add-general + +2009-05-29 Robin Fairbairns + + * add-general.tex (subsection{"Generic" macros and techniques}): a bit + of editorial on q-macronames + +2009-05-28 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): translate \c{c} + + * faqbody.tex (section{Current TeX-related projects}): revised q-xetex + from francois charette + (intro): add francois to list of acknowledgements + (first line): today's date + +2009-05-27 Robin Fairbairns + + * faqbody.tex (section{Graphics}): minor editorial on q-drawing + + * dirctan.tex: add epic + + * faqbody.tex (section{Graphics}): add brief descriptions of pictex, + epic and eepic[emu] to q-drawing + +2009-05-25 Robin Fairbairns + + * dirctan.tex: add first-latex-doc + + * faqbody.tex: today's date + (section{Documentation and Help}): mention first-latex-doc in + q-man-latex + +2009-05-20 Robin Fairbairns + + * faqbody.tex (section{Symbols, etc.}): new q-osf from add-general + + * add-general.tex (subsection{"Generic" macros and techniques}): refer + to q-whatmacros rather than spelling out the rules, in q-macronames + +2009-05-19 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): update link for textures in + q-commercial + (various places): minor editorial work + + * add-general.tex (subsection{Odds and ends}): editorial on q-osf + + * faqbody.tex (section{Support Packages for TeX}): correct \href for + texcount,in q-wordcount + + * dirctan.tex: add asymptote + + * faqbody.tex (section{Support Packages for TeX}): retitle q-xfig as + q-figetc, and mention asymptote in it (now it's on ctan!) + +2009-05-18 Robin Fairbairns + + * faqbody.tex (section{Graphics}): q-grffilenames from add-general + + * add-general.tex (subsection{Graphics}): tidy q-grffilenames, correct + previous text about knuthian constraints on input file name format + + * faqbody.tex (section{Bits and pieces of (La)TeX}): moved q-whatmacros + from add-general *already* + (subsection{Floating tables, figures, etc.}): q-wideflt from + add-general, too!! + + * add-general.tex (subsection{Bits and pieces of (La)TeX}): new "what + are macros" (q-whatmacros) + (subsection{Tables, figures and diagrams}): new "wide figures and + tables" (q-wideflt) + (subsection{Odds and ends}): editorial on q-osf + +2009-05-16 Robin Fairbairns + + * filectan.tex: add miktex-portable + + * faqbody.tex (section{TeX Systems}): mention miktex-portable in + q-texsystems + +2009-05-14 Robin Fairbairns + + * faq.sty: tidy include/exclude comments; make introduction into a real + env + + * faqbody.tex (intro): simplify \nothtml code in introduction env + +2009-05-13 Robin Fairbairns + + * faqbody.tex (intro): v3.19, today + +2009-05-12 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): yet more + editorial on q-keyval + + * sanitize-beta.pl (sanitize_line): translate \par{} as
    + +2009-05-10 Robin Fairbairns + + * add-general.tex (subsection{"Generic" macros and techniques}): yet + another diddle of q-macronames ... just can't quite satisfy myself + about this thing + +2009-05-08 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): list macro + names for class/package options in xkeyval + +2009-05-07 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): mention + ifxetex and ifluatex in q-ifpdf + + * add-general.tex (subsection{"Generic" macros and techniques}): yet + more diddling with q-macronames + (subsection{\LaTeX{} macro tools and techniques}): wrap a terrible wide + line in an example in q-keyval + + * dirctan.tex: add texcount + + * faqbody.tex (section{Support Packages for TeX}): add ctan links for + (la)texcount and description of texcount in q-wordcount + +2009-05-03 Robin Fairbairns + + * add-general.tex (subsection{"Generic" macros and techniques}): minor + update of q-macronames on internal macros and why they work + +2009-05-02 Robin Fairbairns + + * dirctan.tex: psfig back on main tree; xypic link as catalogue, now; + xfig, xdvi and usergrps now browse-only; + remove arc521, arj, atob, binhex, boo, bsplit, checksum, comm, compact, + compress, filehdr, ftpd, ftpmail, hexbin, lharc, machdr, macunpack, + macutils, mcvert, mirror, mixed, parc, stuffit, tar, tex88, tex8fmts, + transname, unarj, unpack, unstuff, uue, uuencode, vtree, vtree-fix, + vvcode, xbin (tools/*); + remove two borceux subdirs -- diagram, user-guides + + * add-general.tex (subsection{LaTeX macro tools and techniques}): add + final(?) paragraphs of q-keyval + +2009-05-01 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro tools and techniques}): add + pgfkeys to q-keyval, and make a start on scrbase + + * dirctan.tex: add biblatex-contrib + + * faqbody.tex (section{Current TeX-related projects}): update + q-biblatex and mention biber therein + +2009-04-29 Robin Fairbairns + + * faqbody.tex (subsection{Typesetting specialities}): mention setspaces + spaces and hyphens options of url.sty, in q-setURL + + * add-general.tex (subsection{"Generic" macros and techniques}): don't + use |$| in q-catcodes, since it confuses auctex's text colouring -- + \texttt{\$} instead + (subsection{"Generic" macros and techniques}): hack at q-macronames + after staring at it a bit + + * faqbody.tex (subsection{Tables, figures and diagrams}): give + \textasciicircum a null argument in q-wholerow + +2009-04-18 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro tools and techniques}): add + xkeyval to q-keyval + + * faqbody.tex (rogue's gallery): add joseph wright and philipp stephani + in recognition of help on q-keyval answer + +2009-04-17 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro tools and techniques}): add + kvoptions and kvsetkeys to q-keyval + +2009-04-14 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro tools and techniques}): more + work on q-keyval + +2009-04-14 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro tools and techniques}): new + q-keyval + + * faqbody.tex (subsection{Why does it do that?}): editorial on + q-pdf-fig-chars following thanh's comment + +2009-04-13 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): new q-pdf-fig-chars from + add-general + + * add-general.tex (subsection{Graphics}): flesh out q-grffilenames + +2009-04-12 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): complete sentence that + previously ended "but" (no full stop!) in q-changemargin + + * add-general.tex (subsection{Why does it do that?}): further editorial + on q-pdf-fig-chars + + * texfaq2html-beta: remove the "complete set" link at bottom of search + + * faqbody.tex (subsection{Adobe Type 1 (PS) fonts}): editorial on cm + bright in T1 (now a bit less pompous, i hope) + +2009-04-12 (small hours) Robin Fairbairns + + * add-general.tex (subsection{Why does it do that?}): new + q-pdf-fig-chars at thanh's request + +2009-04-11 Robin Fairbairns + + * faqbody.tex (section{Current TeX-related projects}): improvements to + q-luatex from manuel pegourie-gonnard + (intro): add mpg to list of names + +2009-04-09 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): editorial on + q-mfptutorials + (section{Acquiring the Software}): editorial on q-nonfree + + * dirctan.tex: add latex-tds + + * faqbody.tex (section{Documentation and Help}): mention heiko's + source2e in q-writecls + + * filectan.tex: add latexcheat + + * faqbody.tex (section{Documentation and Help}): add bullet item about + figures in q-askquestion + (section{Documentation and Help}): editorial on q-man-latex, + q-typo-style + (section{Documentation and Help}): correct link for pgf/tikz examples + in q-tutbitslatex + (section{Documentation and Help}): add cheat sheet in q-ref-doc + +2009-04-07 Robin Fairbairns + + * faqbody.tex (paragraph{TeX distributions}): editorial work on + q-texthings, q-plainvltx, q-amspkg, q-eplain, q-texfuture + (section{Documentation and Help}): editorial work on q-wherefaq, + q-gethelp, q-maillists* + +2009-04-04 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of (La)TeX}): add link to + liang's thesis in q-hyphen + +2009-04-02 Robin Fairbairns + + * faqbody.tex (section{The Background}): add sentence to the end of + first para of q-whattex; hack away at q-whatpdftex + + * dirctan.tex: delete preview-latex & fptex, make auctex browse only + + * faqbody.tex (section{Current TeX-related projects}): preview-latex + now part of auctex, in q-wygexpts + + * dirctan.tex: remove ghostview, move plnfss up one and remove * + + * faqbody.tex (subsection{Finding the Files}): further iteration, + now checked in all 3 formats + (section{Hypertext and PDF}): ghostview now an unprogram in q-acrobat + (subsection{Adobe Type 1 fonts}): replace ghostview with gv + + * Makefile (web,web-beta): correct shell syntax of yesterday's patch(!) + +2009-04-01 Robin Fairbairns + + * faqbody.tex (subsection{Finding the Files}): further iteration + + * Makefile (update web files): deal with case that file doesn't exist + +2009-03-31 Robin Fairbairns + + * faqbody.tex (subsection{Finding the Files}): get rid of a link- + without-visible-anchor in the pdf, generally tidy + +2009-03-27 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): stupid error in sub of \wideonly + + * texfaq2file: various errors thrown up by -w ... so remove -w + +2009-03-26 Robin Fairbairns + + * sanitize-beta.pl (generate_CTAN_ref): + + * texfaq2file: restore list of protocols and hosts (since they're used) + ... but don't overdo it ... this lot is a mess and needs tidying + + * label-to-file.pl: the list of file names corresponding to q labels + + * texfaq2file+texfaq2html-beta: use label-to-file.pl in place of list + in file + +2009-03-25 Robin Fairbairns + + * filectan.tex: add compactbib + + * faqbody.tex (subsection{Creating citations}): mention compactbib in + q-compactbib (where else? ;-) + +2009-03-21 Robin Fairbairns + + * dirctan.tex: rename bibtex-doc-pdf to bibtex-doc (overwriting old + one) so that link takes you to something readable + + * faqbody.tex: 3.18b, today + (section{Documentation and Help}): make bibtex docs link just + bibtex-doc -- see dirctan change + (subsection{Creating bibliographies}): ditto in q-custbib + +2009-03-20 Robin Fairbairns + + * check-ctan-lists: check status of directory .zip files ... + + * dirctan.tex: bunch of anomalies shown up by latest version of scanner + + * sanitize-beta.pl (generate_CTAN_ref): suppress .tar.gz link + + * texfaq2html-beta: sort lists of matching answers numerically, at last + (initialisation): close CTANFILES and CTANDIR after reading them... + + * faqbody.tex (section{Current TeX-related projects}): more twiddling + with q-xetex + (section{Current TeX-related projects}): ditto q-luatex + (section{Current TeX-related projects}): ditto q-omegaleph (more + downbeat still than previously :-( + (section{Symbols, etc.}): add q-usesymb from add-general + +2009-03-19 Robin Fairbairns + + * add-general.tex (subsection{Symbols, etc.}): add initial body for + q-usesymb + + * faqbody.tex (section{TeX Systems}): mention miktex-for-linux in + q-texsystems + (section{Current TeX-related projects}): more hacking at q-luatex + (section{Current TeX-related projects}): rearrange q-omegaleph, + q-xetex, q-luatex, q-ant, q-extex into that order + +2009-03-18 Robin Fairbairns + + * faqbody.tex (section{Current TeX-related projects}): more fiddling + with latex project answer + (section{Current TeX-related projects}): mimetex now superseded by + mathtex + (section{Current TeX-related projects}): don't compare ant to nts, + since we no longer mention nts ;-) + (section{Current \TeX{}-related projects}): hack at q-luatex + + * dirctan.tex: add keys3, numparse3 + + * faqbody.tex (section{Format conversions}): reword q-fmtconv as + suggested by jose carlos santos + + * dirctan.tex: add yagusylo + + * add-general.tex (subsection{Symbols, etc.}): skeleton q-usesymb + +2009-03-12 Robin Fairbairns + + * faqbody.tex (subsection{Footnotes}): try to clarify text of q-ftncapt + in re. complaint on c.t.t + (section{The joy of TeX errors}): tidy up talk about etex.sty in + q-noroom, and mention \reserveinserts + +2009-03-10 Robin Fairbairns + + * dirctan.tex: add blackboard + + * faqbody.tex (section{Symbols, etc.}): redo q-numbersets, mention + blackboard doc + +2009-03-09 Robin Fairbairns + + * dirctan.tex: add urw-base35, remove plain urw + + * faqbody.tex (section{Symbols, etc.}): redo refs to urw chancery, add + link to URW base35, in q-scriptfonts + +2009-03-07 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): tidy wording about tbt + in q-books + +2009-03-06 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): typo in q-editors + +2009-03-04 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): slightly less frivolity, in + pursuit of better comprehensibility, among the unix editors + + * sanitize-beta.pl (sanitize_line): translate \texshop{}, \texworks{}; + reorganise the list of "programs" for ease of editing + + * faq.sty: define \texshop, \texworks + + * faqbody.tex (section{TeX Systems}): add a wildcard entry to the list + for texworks, in q-editors + +2009-02-12 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): micro- + typo in q-patch + +2009-02-11 Robin Fairbairns + + * dirctan.tex: add expl3, xpackages + + * faqbody.tex (section{Current TeX-related projects}): update q-latex3 + +2009-02-09 Robin Fairbairns + + * faqbody.tex (section{The Background}): add q-texthings, from + add-general + +2009-01-29 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): add q-texorpdf + +2009-01-22 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): revise view of the + wiki books (which seem to have improved a lot) + +2009-01-21 Robin Fairbairns + + * texfaq2html-beta: correct period positioning after previous mod + + * faqbody.tex (subsection{Document structure}): chappg documented + "normally" now in q-pagebychap + (subsection{Document structure}): remove q-outszwrng + (subsection{Document structure}): merge (and condense) list from old + q-outszwrng into q-acroantics + + +2009-01-19 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): exptl translation for \paragraph + + * faq.sty: redefine \paragraph, too + + * add-general.tex (subsection{"Generic" macros and techniques}): more + minor diddling with q-macronames + (subsection{The Background}): similar for q-texthings + +2009-01-13 Robin Fairbairns + + * faqbody.tex (subsection{Document structure}): rewrite warning about + programming zoonekynd's stuff, in q-secthead + +2009-01-06 Robin Fairbairns + + * dirctan.tex: add revised tth ;-) + + * filectan.tex: remove tth + +2009-01-05 Robin Fairbairns + + * faqbody.tex (subsection{Typesetting specialities}): tidy up following + obsoleting of numline, in q-linenos + + * dirctan.tex: remove rsfs-type1 + + * faqbody.tex (section{Symbols, etc.}): rsfs type 1 now part of base + distribution in q-scriptfonts + + * filectan.tex: numline now in obsolete + +2008-12-31 Robin Fairbairns + + * add-general.tex (subsection{The Background}): editorial on list of + enhanced tex engines + +2008-12-28 Robin Fairbairns + + * add-general.tex (subsection{"Generic" macros and techniques}): add + q-macronames from scott pakin + (subsection{The Background}): add q-texthings from scott pakin + +2008-12-14 Robin Fairbairns + + * faqbody.tex (section{Graphics}): typo in q-graphicspath spotted by + jim diamond + +2008-11-27 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): minor tidy of q-tds-zip + (section{Installing (La)TeX files}): clear up gross \qref error in + q-inst-tds-zip, and tidy up rest of question + +2008-11-26 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): mention tl network install, tl + and miktex package net update + + * filectan.tex: add texlive-unix, texlive-windows + + * faqbody.tex (section{Current TeX-related projects}): a bit of + rewording of the presumed prospects for omega 2 + +2008-11-26 Robin Fairbairns + + * faqbody.tex ([throughout]): minor edits for untidinesses spotted by + karl berry + +2008-11-07 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of (La)TeX}): minor ed of q-eps + + * add-general.tex (subsection{Graphics}): added q-grffilenames + (initial stab ... not even complete in itself) + +2008-09-21 Robin Fairbairns + + * texfaq2html: as -beta + + * texfaq2html-beta: add home link at end of answer, after next/prev + links if present + +2008-09-19 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): correct + invocation of topcapt package in q-destable + +2008-09-14 Robin Fairbairns + + * faqbody.tex (section{Graphics}): try to refer to dvipdfmx in parallel + in q-dvipdfmgraphics + +2008-09-13 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): add ptr to emory + latex2e ref in q-ref-doc + +2008-08-31 Robin Fairbairns + + * Makefile (dist): new target for manual pegouri\'e-gonnard + +2008-08-28 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): mention lulu version + of tbt, both in q-ol-books and q-books + +2008-08-22 Robin Fairbairns + + * dirctan.tex: add varisize + + * faqbody.tex (subsection{Macros for using fonts}): mention varisize in + q-fonts-pln + +2008-08-18 Robin Fairbairns + + * faqbody.tex (subsection{Typesetting specialities}): deprecate + dropping, rewrite descr of lettrine appropriately + (subsection{Floating tables, figures, etc.}): mention perpage's + \MakeSorted in q-figurehere + +2008-08-13 Robin Fairbairns + + * add-general.tex (subsection{Generic macros and techniques}): store + a copy of donald a's \moverlay in q-ovwtsym, for future reference + +2008-08-10 Robin Fairbairns + + * dirctan.tex: add addlines + + * faqbody.tex (section{Graphics}): mention eplain as a plain route to + to loading graphics in q-impgraph (per kb's suggestion) + (subsection{Page layout}): mention addlines in q-chngmargonfly + +2008-07-31 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add \htmlentity to deal with + q-dropping guillemet problem + + * faqbody.tex (subsection{Typesetting specialities}): use \htmlentity + in \latexhtml (guillemets) in q-dropping + +2008-07-30 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): remove chngpage from + q-marginpkgs + + * filectan.tex: chngpage->changepage; remove pdftex + + * dirctan.tex: add mciteplus, pdftex, record move of aro-bend + + * faqbody.tex (subsection{Creating citations}): mention mciteplus in + q-mcite + +2008-07-28 Robin Fairbairns + + * texfaq2file: ruthless stamping on problems produces a use full output + +2008-07-28 Robin Fairbairns + + * texfaq2file: more minor adjustments + + * faqbody.tex (section{Introduction}): now a real (unnumbered) section + +2008-07-25 Robin Fairbairns + + * faq.sty: include comment introduction + + * faqbody.tex: put environment introduction around introduction + +2008-07-22 Robin Fairbairns + + * texfaq2html-gamma: minor tidies, use index.html for intro, pro tem + + * faqbody.tex (subsection{Common errors}): editorial in q-verbwithin + +2008-07-21 Robin Fairbairns + + * texfaq2html-gamma: correct repeated-code subroutine from 19th + (print_intro_para, etc): attempt to sort out coherent "whole path" + +2008-07-19 Robin Fairbairns + + * texfaq2html-gamma: some tidying of repeated code, clarification of + logic of the code -- lots more still to do... + +2008-07-14 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): discuss + \ifpatchable in the bit about etoolbox in q-patch + (section{Current TeX-related projects}): brief scribble about how lua + operates inside tex, in q-luatex + +2008-07-12 Robin Fairbairns + + * faqbody.tex (subsection{Footnotes}): mention zref/perpage in + q-footnpp + +2008-07-09 Robin Fairbairns + + * faqbody.tex (subsection{MetaFont fonts}): more modernisation of + q-usemf (no longer mentions virmf, for example) + +2008-07-08 Robin Fairbairns + + * texfaq2html-gamma: major upheavals: beginning to show signs of + working in the various parts separately + + * faqbody.tex (subsection{Alternative document classes}): tidy text of + both q-thesis and q-journalpaper + (subsection{MetaFont fonts}): tidy up q-usemf (though whether to keep + it at all remains a matter of debate) + +2008-07-07 Robin Fairbairns + + * dirctan.tex: add plastex + + * faqbody.tex (section{Format conversions}): add plastex to + q-latex2html + +2008-07-02 Robin Fairbairns + + * faqbody.tex (subsection{Alternative document classes}): enumerate the + complete set of memoir document sizes in q-extsizes + +2008-07-02 Robin Fairbairns + + * Makefile: add target inst-perl-gamma (just texfaq2html-gamma) + + * texfaq2html-gamma: add description meta element to start_html + + * texfaq2html-beta: added a description meta element + + * texfaq2html-gamma: comment out setting of $seclevel hash, since it's + not used and therefore logging errors + +2008-07-01 Robin Fairbairns + + * faqbody.tex (section{Current TeX-related projects}): miktex already + has xetex ('cos it's got to 2.7 already) + +2008-06-23 Robin Fairbairns + + * Makefile: delete FAQ-html.tar.gz in "clean" + +2008-06-22 Robin Fairbairns + + * faqbody.tex: today's date + (section{Documentation and Help}): make clear we're talking about latex + packages in re. the comp. list in q-symbols + +2008-06-21 Robin Fairbairns + + * texfaq2file: add inst-miktex* to label_to_file (per mpg); + correct generation of links from index.html (per jonathan k) + + * faqbody.tex: 3.18a, today + (subsection{Lists}): add mention of expdlist in q-interruptlist + + **FAQ-html.tar.gz patched on archive** + +2008-06-20 Robin Fairbairns + + * faqbody.tex: today's date, for release + (section{Bits and pieces of (La)TeX}): correct typo in q-dtx + wideversion + + **RELEASE** + +2008-06-19 Robin Fairbairns + + * texfaq2html: carried -beta modifications forward + + * sanitize.pl (sanitize_line): carried -beta modifications forward + +2008-06-17 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): tidy descr + of patch.doc in q-patch, and mention ted and etoolbox + +2008-06-13 Robin Fairbairns + + * faqbody.tex (head): today's date + (section{Acquiring the Software}): rewrite of some of q-tds-zip + (section{Current TeX-related projects}): discuss luatex schedule for + distribution, and firm up demise of pdftex devel, in q-luatex + (section{Acquiring the Software}): \Qref* to q-psfchoice in link + in q-findfont (rather weird without the * ;-) + +2008-06-10 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): new q-tds-zip + (section{Installing (La)TeX files}): refer to q-tds-zip in + q-inst-tds-zip + +2008-06-09 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): reorganise to make + the text flow slightly more coherently in q-install-find + + * dirctan.tex: add winedt (browse only) + + * filectan.tex: add mathsurvey.(pdf|html), remove winedt + + * faqbody.tex (subsection{Adobe Type 1 ("PostScript") fonts}): mention + Hartke's survey in q-psfchoice, add ctanref to it + +2008-06-08 Robin Fairbairns + + * faqbody.tex (subsection{Adobe Type1 ("PostScript") fonts}): mention + the tex font catalogue in q-psfchoice + (subsection{Adobe Type 1 (PostScript) fonts}): add links to the + catalogue for fonts we _do_ list, in q-psfchoice + (section{Installing (La)TeX files}): editorial on q-instmffont + +2008-06-06 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): recognise "\textbackslash "; + (hopefully) throughout routine, escape semicolons in substitution text + + * faqbody.tex (section{Installing (La)TeX files}): diddle endlessly + with q-what-tds to get \textbackslash to work + (throughout): \textbackslash{} -> "\textbackslash " (dunno why) + +2008-06-05 Robin Fairbairns + + * faqbody.tex (subsection{Hyphenation}): mention none option of + hyphenat package in q-hyphoff, and point out it's incompatible with + babel + + * texfaq2html-beta: correct typo in no-mod branch of translation of + question labels + +2008-06-04 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): rearrange (and do a + smidgeon of editing while we're at it) q-install-find + +2008-06-02 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): change initexmf -u + to --update-fndb (official version) in q-inst-wlcf + (section{Installing (La)TeX files}): tidy up q-what-tds (last of + proof-reading stuff?) + +2008-05-31 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): proof-reading work + on q-installthings, q-install-find, q-install-unpack + +2008-05-30 Robin Fairbairns + + * texfaq2html-beta: remove papersize* from label_to_file + + * faqbody.tex (subsection{Page layout}): remove old q-papersize, rename + q-papersize* as q-papersize + (section{Installing (La)TeX files}): oops -- had missed the \Question + command of q-instt1font + (header) version 3.18, today + +2008-05-29 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): hack some more at + q-instt1font, and split q-prept1font from the front of it + +2008-05-29 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): major hacking of + q-instt1font, with a view to splitting it in two + +2008-05-27 Robin Fairbairns + + * texfaq2html-beta: require aliasfile.list, use its hash to update + input labels + + * faq.sty: write aliasquestion.list as a perl module creating a hash + +2008-05-24 Robin Fairbairns + + * Makefile (targets web and web-beta): add aliasquestion.list to the + files copied + + * texfaq2html-beta,texfaq2html-gamma: add inst-miktex* to label_to_file + hash + + * add-general.tex (subsection{Particular font families}): in q-mathtime + change ref to q-inst-miktex to q-inst-miktex* (even though mathtime + question has now presumably timed out) + + * faqbody.tex (section{Installing \AllTeX{} files}): add questions + q-inst-scut, q-inst-miktex* and q-inst-tds-zip (from add-general) + in place of q-inst-miktex + +2008-05-22 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add \AliasQuestion (ignored) + + * faqbody.tex (section{Documentation and Help}): minor editorial in + q-pkgdoc + +2008-05-20 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): add body to + q-inst-tds-zip + + * Makefile (target clean): add aliasquestion.list + + * faqbody.tex (section{Bits and pieces of (La)TeX}): editorial tidies + in q-pk and q-tfm + +2008-05-20 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): minor edit of + q-inst-miktex* + +2008-05-12 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): add alias + instpackages (for installthings) and wherefiles (for inst-wlcf) + + * add-general.tex (subsection{Installing (La)TeX files}): add alias for + q-inst-scut, for testing purposes + + * faq.sty: add \AliasQuestion and supporting mechanisms + +2008-05-08 Robin Fairbairns + + * faqbody.tex (section{TeX Systems errors}): tidy q-endingroup markup + +2008-05-05 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): stupid typo spotted by + keith briggs, in q-changebars + + * sanitize-beta.pl (sanitize_line): \texlive, again + + * faq.sty: \texlive according to karl b + +2008-05-01 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): tidy up the english + and the markup of q-install-unpack, a bit + +2008-05-01 Robin Fairbairns + + * faqbody.tex: v3.17-3, today; add ernst to list of helpers + (subsection{Footnotes}): clarify text around mdw's packages in + q-footintab + +2008-04-12 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): mention textures on osx + +2008-04-11 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): correct tug box search + address in q-findfiles + +2008-04-09 Robin Fairbairns + + * filectan.tex: correct dvitype, moved as part of texware (v.i.) + + * dirctan.tex: correct errata, tex--xet, texware and web (knuth-isms + moved); add vc + + * faqbody.tex (subsection{Document management}): add vc to q-rcs and + make various minor adjustments to accommodate it + (header) today's date, add hennig to list of contributors + +2008-04-01 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): mention tex4ht as a route + to word format in q-fmtconv; re-sort list to make it more reasonable + for today's use + (header) v3.17-2, today + +2008-03-27 Robin Fairbairns + + * dirctan.tex: correct committee font, lgrind and mfware; add ziffer + + * filectan.tex: add changepage, remove ziffer, correct figsinltx + + * faqbody.tex (subsection{Spacing of characters and lines}): the + letterspace package is no more so change description to microtype + in q-letterspace + (subsection{LaTeX macro programming}): mention changepage in q-oddpage, + (subsection{Page layout}): mention changepage in q-chngmargonfly + +2008-03-24 Robin Fairbairns + + * texfaq2html-beta, texfaq2html-gamma: add papersize* to label mapping + list + + * faqbody.tex (subsection{Page layout}): comment out q-papersize, add + q-papersize*, q-acroantics, q-papergeom from add-general + +2008-03-10 Robin Fairbairns + + * faqbody.tex: update \faqfiledate + +2008-03-09 Robin Fairbairns + + * faqbody.tex (subsection{Footnotes}): rearrange recommendations in + q-footnpp + +2008-02-22 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): tfti is gnu _free_ + documentation licence, in q-ol-books + +2008-02-13 Robin Fairbairns + + * faqbody.tex (throughout): correct usage of \bsbs + +2008-02-02 Robin Fairbairns + + * add-general.tex (subsection{Page layout}): tidy text in q-acroantics + so the italic of \ProgName doesn't get confused with emphasis + (subsection{Odds and ends}): minor edit of q-osf + +2008-02-01 Robin Fairbairns + + * add-general.tex (subsection{Page layout}): add memoir section to + q-papergeom + +2008-01-31 Robin Fairbairns + + * add-general.tex (subsection{Page layout}): more diddling with + q-papergeom + +2008-01-30 Robin Fairbairns + + * add-general.tex (subsection{Page layout}): replacement for + q-papersize (3 qs: q-papersize*, q-acroantics, q-papergeom) + +2008-01-20 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add \plaintex{} + + * faq.sty: add \plaintex{} + + * faqbody.tex (subsection{Page layout}): lots of diddling of + q-papersize + (throughout) [Pp]lain[ ~]\TeX{} -> \plaintex{} + +2008-01-18 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): muck about with % (which fools + sanitize) in q-papersize quoted material about acrobat + (subsection{Page layout}): more hacking at this, trying to make it read + as if written by a human being + +2008-01-15 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): change url for + nicola's latex for novices, in q-man-latex + +2008-01-14 Robin Fairbairns + + * add-general.tex (subsection{Hypertext and PDF}): new q-pdf-encr + +2008-01-11 Robin Fairbairns + + * faqbody.tex (intro): add william ingram + +2008-01-03 Robin Fairbairns + + * dirctan.tex: * def of crosstex + + * faqbody.tex (section{Current TeX-related projects}): lots of hacking + at q-biblatex + +2008-01-02 Robin Fairbairns + + * faqbody.tex (section{The Background}): micro-change to q-etex + +2008-01-02 Robin Fairbairns + + * faqbody.tex (section{Graphics}): add a word of caution about about + bmeps bitmap patch for dvips, in q-dvipsgraphics + +2008-01-02 Robin Fairbairns + + * dirctan.tex: add crosstex + + * faqbody.tex (section{Current TeX-related projects}): mention crosstex + in q-biblatex + +2008-01-01 Robin Fairbairns + + * faqbody.tex: today's date + (subsection{Creating bibliographies}): dealing with p.m. de f. forster + in q-bibtranscinit + +2007-12-20 Robin Fairbairns + + * dirctan.tex: add preview, remove ps4mf + + * faqbody.tex (section{Graphics}): update text around pstricks in + q-drawing (the question may need more root-and-branch attention) + +2007-12-10 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): mention pdfcolparallel in + q-parallel + +2007-12-03 Robin Fairbairns + + * filectan.tex: add miktex-usb + + * add-general.tex (section{TeX Systems}): add q-onna-stick + +2007-11-27 Robin Fairbairns + + * add-general.tex (subsection{"Generic" macros and techniques}): yet + more mucking with q-long-outer (mostly trimming narrowversion lines) + + * Makefile (clean): add htmltex/* for cleaning + +2007-11-26 Robin Fairbairns + + * add-general.tex (subsection{"Generic" macros and techniques}): more- + or less finished q-long-outer + +2007-11-24 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add \textasciicircum{} + + * dirctan.tex: add picins + + * filectan.tex: remove picins + + * faqbody.tex (subsection{Tables, figures and diagrams}): heroic attack + on command skeletons in q-textflow + (throughout): lots of hacking to get rid of |...| verbatims + + * faq.sty: \cmdinvoke accepts parenthesised arguments + + * faqbody.tex (subsection{MF fonts}): tidy narrow/wide interaction in + basic mf commands in q-usemf + (subsection{Creating bibliographies}): get rid of inline verb in + q-bibaccent, and merge html and non-html versions + +2007-11-23 Robin Fairbairns + + * add-general.tex (subsection{"Generic" macros and techniques}): new + q-long-outer + + * faqbody.tex (throughout (remaining)): spell-checked + (section{Symbols, etc.}): minor editorial on q-underscore + +2007-11-22 Robin Fairbairns + + * faqbody.tex (throughout first ~50%): spell-checked + +2007-11-20 Robin Fairbairns + + * dirctan.tex: add auto-pst-pdf (yet to be installed, but...) + + * faqbody.tex (section{Graphics}): mention (auto-)pst-pdf in q-labelfig + +2007-11-19 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macro tools and techniques}): replace + "places to look for are" (!) with "candidates are" in q-protect + +2007-11-16 Robin Fairbairns + + * faqbody.tex: add john harper to preamble list of helpers + (subsection{LaTeX macro tools and techniques}): yet another rehash + of q-protect, following further input from john harper + +2007-11-15 Robin Fairbairns + + * dirctan.tex: add pkfix-helper + * faqbody.tex (subsection{Mathematics}): changed name of q-theoremfmt, + minor editorial work + (section{Hypertext and PDF}): mention pkfix-helper in q-pkfix + +2007-11-14 Robin Fairbairns + + * dirctan.tex: add fontspec + + * add-general.tex (subsection{Odds and ends}): tidy, ref fontspec pkg + in re. xetex use of fancy otf features, in q-osf + +2007-11-11 Robin Fairbairns + + * faqbody.tex (heading); today's date, add david kraus + (subsection{Tables of contents and indexes}): correct bug spotted by + david kraus, in q-tocbibind; also add example of koma options + +2007-11-10 Robin Fairbairns + + * add-general.tex (subsection{Odds and ends}): more work on q-osf + + * faqbody.tex (subsection{Alternative document classes}): update norman + gray's link, add nicola talbot's and rob clark's, and expand all the + other links in q-poster + (section{Bits and pieces of (La)TeX}): remove assertions about matt + swift's doc-tex stuff in q-dtx -- auctex now does the job, says dak; + tidy tortuous ref to both q-mf and q-mp, now to work for narrow and + wide versions rather than \latexhtml + +2007-11-09 Robin Fairbairns + + * faqbody.tex (head): v3.17-1, today + (subsection{Document structure}): remove incorrect note about fncychap + docs in q-secthead (they're quite standard now) + +2007-11-08 [Released as 3.17] + +2007-11-07 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): extend reference to + nlct's tutorials page in q-man-latex + + * faq.sty: change pdfpagemode to UseNone (but mailing ho for assurance) + + * faqbody.tex (section{Bits and pieces of (La)TeX}): typo in q-pk + +2007-11-05 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): update german minimal + example link + +2007-11-05 Robin Fairbairns + + * faqbody.tex: v3.17, today + + * sanitize.pl,texfaq2html: bring forward changes from -beta + + * faqbody.tex (throughout): ensure all \dots have empty arg + +2007-11-01 Robin Fairbairns + + * dirctan.tex: add xargs, xkeyval + + * faqbody.tex (subsection{LaTeX macro tools and techniques}): discuss + xargs in q-twooptarg + +2007-10-31 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): reword + q-empty for clarity + +2007-10-30 Robin Fairbairns + + * faqbody.tex (section{DVI Drivers and Previewers}): editorial diddles + with q-dvi-bmp + + * dirctan.tex: restore dviljk; pretend ghostscript is on free tree + (it will be, it will); make gv browse-only + + * faqbody.tex (section{TeX Systems}): editorial work in q-editors + (section{TeX Systems}): two minor changes in q-commercial + (section{DVI Drivers and Previewers}): dviljk has reappeared + +2007-10-30 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): link to latest unsatisfactory + source for xemtex + (section{TeX Systems}): elide the mail address from atari listing in + q-texsystems + + * filectan.tex: remove the protext entry (moved to dirctan for + symmetry reasons...) + + * dirctan.tex: * the mactex entry, add protext + + * faqbody.tex (section{Acquiring the Software}): rehash q-findfont + (section{Acquiring the Software}): mention ctan copies in q-cd + +2007-10-29 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): new link for troy + henderson's previewer in q-mfptutorials + (section{Documentation and Help}): and delete link to the metafun + tutorial, which seems to have vanished from the web :-( + (intro): today's date, add troy henderson + +2007-10-24 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): ref new askinclude in + q-conditional + (section{Acquiring the Software}): micro-edit of q-uploads + + * filectan.tex: remove askinclude + +2007-10-23 Robin Fairbairns + + * faqbody.tex (subsection{Adobe Type 1 fonts}): update mtpro stuff for + mtpro2, incl providing working web link + + * sanitize-beta.pl (sanitize_line): translate \par (one instance only!) + + * faqbody.tex (section{Acquiring the Software}): add link to catalogue + set of licences in q-nonfree (rms' suggestion) + + * filectan.tex: add cat-licences + + * dirctan.tex: add kpfonts, minionpro, mnsymbol + + * faqbody.tex (subsection{Adobe Type 1 fonts}): add kpfonts and + minionpro/mnsymbol + +2007-10-22 Robin Fairbairns + + * dirctan.tex: add fouriernc + + * faqbody.tex (subsection*{Origins}): extend the list to members of the + committee, thus reducing the confusion (in my mind) about who is/was + and who isn't/wasn't + (subsection{Adobe Type 1 fonts}): add web location for berthold horn's + paper, add thierry bouche, similarly, in q-psfchoice + (subsection{Adobe Type 1 fonts}): add fouriernc to list; add fontsite + garamond to the list of mathdesign fonts, in q-psfchoice + +2007-10-17 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): edit q-uploads + +2007-10-17 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): remove \xxx|...| forms of + \ProgName, \FontName, \Package, \Class, \Email, \mailto, \File and + \Newsgroup + + * faqbody.tex (section{The joy of TeX errors}): remove last two + instances of \ProgName|...|, in q-8000 + (throughout): remove last three instances of \Email|...| + + * sanitize-beta.pl (sanitize_line): implement \ISBN* + + * faq.sty: add \ISBN* (2 args) version, for ISBN10+ISBN13 + + * faqbody.tex (section{Documentation and Help}): use \ISBN* for tlc2 + and tlgc2 (latter newly converted from original tlgc entry) + +2007-10-16 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of (La)TeX}): bits of editorial + work in q-adobetypen, q-resolns, q-fontname + (section{Acquiring the Software}): mention mirror.ctan.org in + q-archives + +2007-10-15 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of (La)TeX}): hack at q-dtx + (have asked dak about dtx in emacs...) + (section{Bits and pieces of (La)TeX}): minor editorial on q-whatenc and + q-ecfonts + (section{Bits and pieces of (La)TeX}): work on q-eps + +2007-10-14 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of (La)TeX}): rehash q-special + (section{Bits and pieces of (La)TeX}): minor editorial to q-hyphen + +2007-10-13 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro tools and techniques}): bit + more work on q-printvar + + * faqbody.tex (subsection{LaTeX macro tools and techniques}): yet more + twiddling with q-protect + +2007-10-12 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of (La)TeX}): lots of hacking of + q-virtualfonts + +2007-10-12 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro tools and techniques}): new + q-printvar contributed by gernot hassenpflug + + * faqbody.tex (subsection{LaTeX macro tools and techniques}): change to + q-protect developed from john harper's contribution + intro: v3.16z-4, today; add john harper to list of helpers + +2007-10-11 Robin Fairbairns + + * dirctan.tex: add texbytopic + + * faqbody.tex (subsection{Hyphenation}): tidy up alternatives at the + end of q-hyphoff + (subsection{Hyphenation}): mention \uchyph in q-wdnohyph + (section{Documentation and Help}): tex by topic now ctan in q-ol-books + +2007-10-09 Robin Fairbairns + + * faqbody.tex (section{The Background}): remove latexhtml around + thanh's full name in q-whatpdftex + (section{The Background}): link to q-latextoplain from q-latexandplain + (section{The Background}): tidy up references to other projects, + add luatex in q-texfuture + (section{The Background}): replace last para of q-readtex + (section{The Background}): add \href to tug's web site in q-tug* + (section{The Background}): correct a couple of \luatex (capitalised) + + * sanitize-beta.pl (sanitize_line): add def of \The (for thanh) + +2007-10-08 Robin Fairbairns + + * dirctan.tex: add autolatex + + * faqbody.tex (section{TeX Systems}): refer to makefile question in + q-editors, rather than just mentioning latexmk (not the only thing + wrong with that answer) + (subsection{Document management}): mention autolatex in q-make + +2007-10-05 Robin Fairbairns + + * faqbody.tex (subsection{Spacing of characters and lines}): sanity + adjustment in q-flushboth ("latest version" was 2003) + +2007-10-04 Robin Fairbairns + + * faqbody.tex (section{Current TeX-related projects}): q-biblatex from + add-general + (section{Current \TeX{}-related projects}): minor edit to q-luatex + + * dirctan.tex: amsrefs now on m/l/c + + * add-general.tex (subsection{Current TeX-related projects}): declare + that amsrefs is currently supported; while this seems true (as a + phenomenon) i wonder whether it's a good thing to rely on... + + * faqbody.tex (section{Current TeX-related projects}): diddle with + q-xetex + +2007-09-25 Robin Fairbairns + + * dirctan.tex: add dir excel2latex + + * filectan.tex: remove the .zip distro of excel2latex + + * faqbody.tex (section{Installing (La)TeX files}): reword text about + readme files in q-install-unpack + +2007-09-24 Robin Fairbairns + + * faqbody.tex (throughout): correct references to new installation qs + +2007-09-18 Robin Fairbairns + + * faqbody.tex: v3.16z-1, today + (section{Installing (La)TeX files}): bunch of answers from add-general, + replacing most of the section + +2007-09-13 Robin Fairbairns + + * faqbody.tex (section{You're still stuck?}): "carefule" corrected ;-) + + * add-general.tex (subsection{Installing (La)TeX files}): lots of work + on q-what-tds and q-install-where, to clarify what's going on + +2007-09-04 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): more emphasis on ctan + supply of documentation, in q-gethelp + (subsection{Document management}): a bit extra on changes.sty in + q-changebar (whole question needs reviewing) + (section{Documentation and Help}): ctan supply of docs, again, in + q-man-latex + +2007-08-24 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): new q-entercompmode + and q-checksum from add-general + +2007-08-19 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): updated uk address for sciword + +2007-08-17 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): add a warning about + mailing inappropriate people in q-gethelp + (section{Current \TeX{}-related projects}): the project is latex, not + latex3 -- correct some of the text of q-latex3 + (subsection{Tables of contents and indexes}): mention the use of + \phantomsection in q-tocbibind + + * dirctan.tex: amslatex-primer moved to info/amslatex/primer, now + +2007-08-16 Robin Fairbairns + + * add-general.tex (subsection{Odds and ends}): add ref to mathpazo on + ctan, in q-osf + + * faqbody.tex (subsection{Floating tables, figures, etc.}): new + q-figurehere from add-general + +2007-07-27 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of AllTeX}): restored "\" to + "acro" in q-virtualfonts + +2007-07-25 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): typo in + q-struttab, spotted by karl b + +2007-07-23 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): extend typo examples, + and tidy coding, in q-altabcr + (subsection{Tables, figures and diagrams}): rationalise, reduce range + of overlapping recommendations in q-tabcellalign + +2007-07-16 Robin Fairbairns + + * dirctan.tex: add cmolddig, eco + + * add-general.tex (subsection{Current TeX-related projects}): write + more on biblatex in q-biblatex + (subsection{Odds and ends}): mention vf access in q-osf + +2007-07-15 Robin Fairbairns + + * add-general.tex (subsection{Current TeX-related projects}): first + stab at new q-biblatex + + * dirctan.tex: add biblatex and amsrefs; remove dvi2xx and dvilj4, + correct lollipop + +2007-07-14 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): editorial tidies of + q-writecls, mention clsguide.pdf + +2007-07-03 Robin Fairbairns + + * faqbody.tex: v3.16c-17, today; add axel sommerfeldt to list + (section{The joy of TeX errors}): add further text in q-hyperdupdest, + as suggested by axel sommerfeldt + +2007-06-29 Robin Fairbairns + + * add-general.tex (subsection{Odds and ends}): new q-osf + +2007-06-28 Robin Fairbairns + + * faqbody.tex: v 3-16c-15, today; mention neto's input on numprint in + list of helpers + + * dirctan.tex: add numprint + + * faqbody.tex (subsection{Typesetting specialities}): mention numprint + in q-dec_comma + +2007-06-13 Robin Fairbairns + + * dirctan.tex: add texlive + + * faqbody.tex (section{TeX Systems}): add details of a mactex mailing + list in q-texsystems + +2007-06-11 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): mention fragility of \url in + q-verbwithin + (subsection{Typesetting specialities}): mention lack of robustness in + q-seturl, and explain use of \urldef to deal with the problem + +2007-06-10 Robin Fairbairns + + * faq.sty: yet another small typo (in the fail branch, this time) + + * filectan.tex: add mil-short (gratzer's offering) + + * faqbody.tex (section{Documentation and Help}): add gratzer's short + course to q-man-latex + +2007-06-06 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): editorial correction + of q-optionclash + +2007-06-05 Robin Fairbairns + + * faq.sty: check for etex + + * add-general.tex (subsection{Installing (La)TeX files}): add some + actual text to q-inst-tidy and q-what-tds + (subsection{The Joy of TeX errors}): new q-entercompmode + +2007-06-04 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): editorial + in q-install-where and q-inst-wlcf + + * dirctan.tex: correct fptex link (even though nothing now uses it...) + +2007-06-02 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): flynn's classes.dtx + article now rev., in tub (q-writecls) + +2007-06-01 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): mention texshop in mactex distr, + in q-editors + (section{TeX Systems}): deal with oztex and cmactex's relation to os/x + (so far as i understand what's going on) in q-texsystems + +2007-05-31 Robin Fairbairns + + * add-general.tex (subsection{Generic macros and techniques}): complete + and clarify q-ovwtsym + +2007-05-30 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add \xetex + + * faq.sty: add \xetex + + * faqbody.tex: v3.16c-15, today + (section{Current TeX-related projects}): xetex is available in texlive + and will be in miktex 2.7, mention bidi capabilities in q-xetex + +2007-05-29 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): extend and make less + abrupt the stuff of q-latextoplain + + * add-general.tex (subsection{Installing (La)TeX files}): trying to bed + this set of answers down -- work on several of the questions + +2007-05-24 Robin Fairbairns + + * faqbody.tex: v3.16c-14, today + (section{Documentation and Help}): attempt to clarify q-minxampl + +2007-05-23 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): tidy the two + references to nicola talbot in q-man-latex + +2007-05-21 Robin Fairbairns + + * faqbody.tex: v3.16c-13, today + (subsection{Metafont fonts}): hack at q-getbitmap to hint that bitmap + fonts aren't really the world's prime concern any more + +2007-05-14 Robin Fairbairns + + * faqbody.tex (subsection{Labels and references}): list zref's options + in q-nameref + (section{The joy of TeX errors}): correct error in q-errmissitem + (inserted yesterday at home :-( ) + +2007-05-13 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): discuss lists inside + tables, in q-errmissitem + +2007-05-11 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): miktex stuff + given a bit of a going-over in q-install-where (plus a few + consequential changes + + * sanitize-beta.pl (sanitize_line): add \textbackslash{} + +2007-05-10 Robin Fairbairns + + * faqbody.tex (subsection{Lists}): expand details of enumitem in + q-complist + +2007-05-09 Robin Fairbairns + + * faqbody.tex (subsection{Lists}): expand on enumitem stuff in + q-interruptlist (it _does_ allow nested interruptions ... sort of + +2007-05-08 Robin Fairbairns + + * faqbody.tex: v3.16c-12, today + (subsection{LaTeX macro programming}): new q-latexqual from add-general + (subsection{Mathematics}): new q-mathonlyref from add-general + +2007-05-08 Robin Fairbairns + + * faqbody.tex (subsection{Macros for using fonts}): mention that eplain + doesn't do font selection in q-fonts-pln + (subsection{LaTeX macro tools and techniques}): editorial on q-atsigns + +2007-05-05 Robin Fairbairns + + * texfaq2html-beta: use &[lr][sd]quo; in decorating text + + * dirctan.tex: add pdcmac + + * faqbody.tex (subsection{Macros for using fonts}): mention pdcmac in + q-fonts-pln + +2007-05-05 Robin Fairbairns + + * locations.mk: correct path to cgi, tidy + +2007-05-04 Robin Fairbairns + + * texfaq2html-beta: escape characters in keyword strings + + * sanitize-beta.pl (sanitize_line): add \extension + + * faqbody.tex (section{The joy of TeX errors}): mention grffile package + in q-unkgrfextn + + * faq.sty: add \extension command + + * faqbody.tex: v3.16c-11, today + +2007-05-03 Robin Fairbairns + + * texfaq2html-beta: redo decoding of % in code reading switches + + * faq.sty: correct typo + +2007-04-29 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add pictex(!) and texlive + + * faq.sty: add def of \texlive + + * faqbody.tex: v3.16c-10, today + (subsection{Alternative document classes}): add a pointer to context + resources in q-slidecls + (throughout): typeset variants of texlive -> \texlive{} + +2007-04-27 Robin Fairbairns + + * dirctan.tex: remove tetex-beta, tetex to point at obsolete/ tree + + * filectan.tex: add bibtex-faq + + * faqbody.tex (subsection{Page layout}): mention ar scaling issues in + q-papersize, and tidy rest of text, too + (section{Documentation and Help}): remove unnecessary conditionals in + q-gethelp + (section{Documentation and Help}): tidy q-bibtexing, add reference to + btxfaq + +2007-04-25 Robin Fairbairns + + * Makefile (inst-perl[-beta]): everything on standard web server, use + cp -p instead of copy -t, adjust help + +2007-04-24 Robin Fairbairns + + * faqbody.tex: version 3.16c-9, today + (subsection{Footnotes}): rewrite answer q-ftnsect + (section{TeX Systems}): update bluesky information in q-commercial + +2007-04-16 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): stick some + text in q-install-doc + +2007-04-10 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): further + clarification of options in q-install-find + (subsection{Installing (La)TeX files}): flesh out answer + q-install-unpack, elaborating on what appears in q-dtx + (subsection{Installing (La)TeX files}): new q-install-doc placeholder + + * faqbody.tex: v3.16c-8, today + (subsection{Tables, figures and diagrams}): tidy up refs to ltxtable in + q-fixwidtab + +2007-04-03 Robin Fairbairns + + * newfaq-patch.tex: add patch option to \documentclass + + * faq.cls: deal with option patch, produce different page footer if so + +2007-04-01 Robin Fairbairns + + * faqbody.tex (subsection{Footnotes}): mention bigfoot in q-multfoot + +2007-03-27 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macro tools and techniques}): correct + \dots (with no {}) in q-ltxabbrv + +2007-03-22 Robin Fairbairns + + * faqbody.tex: v3.16c-7; remove all references to package web2c + +2007-03-21 Robin Fairbairns + + * dirctan.tex: remove web2c, web2c* + + * filectan.tex: remove unixtex.ftp, correct protext + +2007-03-20 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): tops-20 ftp link regularised + (section{Acquiring the Software}): redo description of ctan sites, + with alternative versions for hyper (wide) and non-hyper (narrow) + version in q-archives + + * sanitize-beta.pl (sanitize_line): \FTP to accept braced args only + +2007-03-19 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): another thrash at q-texsystems + +2007-03-18 Robin Fairbairns + + * faqbody.tex: v3.16c, today + (throughout): remove traces of tetex, and rewrite as necessary + +2007-03-17 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): redo q-cd to talk + about the tex collection, rather than just tex live + (section{TeX Systems}): work (so far) on unix, linux and win32 + (win32 contains a line of "+++..." to follow on with) + +2007-03-16 Robin Fairbairns + + * faqbody.tex: v3.16c-5, today + (section{The Background}): 2^16->2^15 in q-etex (!) + (subsection{Why shouldn't I?}): replace q-newfont with q-newfont* from + add-general + (subsection{LaTeX macro tools and techniques}): replace q-plninltx with + q-plninltx* from add-general + (subsection{LaTeX macro programming}): new q-fontsize from add-general + (subsection{Footnotes}): new q-run-fn-nos from add-general + +2007-03-15 Robin Fairbairns + + * texfaq2html-beta: attempts at introducing some sanity into the + search code; notably unsuccessful, to date + + * add-general.tex (subsection{Odds and ends}): proof-reading + corrections in q-run-fn-nos, q-newfont*, q-plninltx* and q-fontsize + +2007-03-11 Robin Fairbairns + + * texfaq2file: as for texfaq2html-beta + + * texfaq2html-gamma: as for texfaq2html-beta + + * texfaq2html-beta: add new *-names to %label_to_file + + * add-general.tex (subsection{Odds and ends}): new q-fontsize, + q-plninltx* and q-newfont* (three questions from the old 2 non-*) + +2007-03-09 Robin Fairbairns + + * CHANGES-3.16d: revised q-running-nos + + * faqbody.tex (subsection{LaTeX macro tools and techniques}): restore + commented-out hack above q-ltxabbrv; it's not clever and it's not + pretty, but the printed output is less awful than without the hack + +2007-03-08 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macro programming}): recommend chngctr + first, the two fragment alternatives second in q-running-nos + + * add-general.tex (subsection{Footnotes}): new q-run-fn-nos + +2007-03-02 Robin Fairbairns + + * texfaq2html-gamma: modest doodling + +2007-02-21 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): odd tinkering + with answers in this section -- needs concerted attack + +2007-02-15 Robin Fairbairns + + * add-general.tex (subsection{Odds and ends}): new q-fontsize, to meld + with (new) q-plninltx* and q-newfont* + + * faqbody.tex (section{Current TeX-related projects}): make mention of + lua itself in q-luatex into a hyperref + +2007-02-14 Robin Fairbairns + + * faq.sty: add \LuaTeX + + * faqbody.tex: v3.16c-4, today + (section{The Background}): rewrite of q-context from Aditya Mahajan + (intro): Aditya Mahajan in list of helpers + (section{Current TeX-related projects}): tidy luatex thing a bit, add + link to luatex.org site + +2007-02-06 Robin Fairbairns + + * faqbody.tex (subsection{Mathematics}): correct typo in q-limits + (introduced, but change not documented, on 2007-01-30) + + * add-general.tex (subsection{Mathematics}): new q-mathonlyref + +2007-01-30 Robin Fairbairns + + * faqbody.tex: today's date + (subsection{Mathematics}): more detail about "ad hoc" operators in + q-newfunction + +2007-01-26 Robin Fairbairns + + * faqbody.tex: today's date + (section{Introduction}): make links to pdf copies \CTANhref + +2007-01-24 Robin Fairbairns + + * dirctan.tex: add changes + remove nonfree from bakoma-tex, dvi2tty, foiltex + + * faqbody.tex: today's date + (subsection{Document management}): mention changes pkg in q-changebars + +2007-01-23 Robin Fairbairns + + * dirctan.tex: list listbib and biblist + + * faqbody.tex: today's date + (subsection{Manipulating whole bibliographies}): mention listbib and + biblist in q-nocite* + +2007-01-22 Robin Fairbairns + + * newfaq-patch.tex: input additions (!) + + * faqbody.tex (section{Documentation and Help}): correct ctan ref for + pictex-summary + +2007-01-22 Robin Fairbairns + + * faqbody.tex: v3.16c-3, today + (subsection{Spacing of characters and lines}): mention microtype's + letterspace.sty in q-letterspace + +2007-01-05 Robin Fairbairns + + * patchdates.tex: pl4.14, today + + * add-general.tex (subsection{The Joy of TeX errors}): new q-checksum + +2006-12-28 Robin Fairbairns + + * dirctan.tex: add pictex-summary + + * faqbody.tex: v3.16c-2, today + (section{Documentation and Help}): pictex summary in q-docpictex + +2006-12-20 Robin Fairbairns + + * faqbody.tex (section{Support Packages for TeX}): correct text about + ispell vs. aspell + +2006-12-18 Robin Fairbairns + + *** released *** + + * Makefile ($(WEB_BETA)*): use cp rather than copy (!) + + * sanitize.pl (sanitize_line): add \narrowonly, \wideonly + + * faqbody.tex: v3.16c-1, today (for release) + +2006-12-15 Robin Fairbairns + + * letterfaq.tex: do the single column trick here too, for letterfaq.pdf + +2006-12-13 Robin Fairbairns + + * faqbody.tex (everything up to section{Graphics}): use \Qref* when + appropriate, using \narrowonly, \wideonly as necessary + + * sanitize-beta.pl (sanitize_line): deal with \narrowonly, \wideonly + + * faq.sty: define \narrowonly, \wideonly + +2006-12-13 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): major edits to q-acrobat, + following cogent comments from karl berry + (section{Hypertext and PDF}): liberal use of \qref* makes q-dvips-pdf + more nearly comprehensible, when read as pdf + + * dirctan.tex: add dvipdfmx, gv + + * newfaq-patch.tex: make pdf output single column, as in newfaq.tex + +2006-12-11 Robin Fairbairns + + * faqbody.tex: v3.16c + + * faq.sty: bludgeon \CTANhref in pdf mode + + * faqbody.tex: v3.16b-6, today + (subsection{Document structure}): put titlesec and sectsty into + different paras, offer rationale for choice om q-secthead + (subsection{LaTeX macro tools and techniques}): mention \@dblarg in + q-oarglikesect + +2006-12-07 Robin Fairbairns + + * filectan.tex: shiny new *longer* path for btxmac + +2006-12-02 Robin Fairbairns + + * faqbody.tex (subsection{Typesetting specialities}): correct typos in + ctanrefs in q-music + +2006-12-01 Robin Fairbairns + + * faqbody.tex (subsection{Creating citations}): correct reed.edu link, + thanks to barbara b + +2006-11-30 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): make an itemised + list of alternative styles in q-citeurl, add babelbib to list + +2006-11-28 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): add two more + examples in q-bibprefixsort + +2006-11-26 Robin Fairbairns + + * faqbody.tex: v3.16b-5, today + (section{Documentation and Help}): reference kmf's page about pgf/tikz + +2006-11-22 Robin Fairbairns + + * faqbody.tex: v3.16b-4, today + (subsection{Spacing of characters and lines}): \linestretch -> + \linespread (per ulrike fischer) in q-linespace + +2006-11-20 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): correct sciword uk phone nos in + q-commercial + +2006-11-17 Robin Fairbairns + + * dirctan.tex: add everypage and draftwatermark; correct wd2latex, + remove wasy and xymtex + + * faqbody.tex (subsection{Page layout}): mention draftwatermark (and + its everypage) in q-watermark + +2006-11-15 Robin Fairbairns + + * faqbody.tex (section{Graphics}): ctan ref for mptopdf + in q-mpprologues + + * dirctan.tex: add pdftex-graphics + + * faqbody.tex (section{The joy of TeX errors}): mention "h" response + in q-optionclash + +2006-11-14 Robin Fairbairns + + * add-general.tex (subsection{Floating tables, figures, etc.}): new + q-figurehere + +2006-11-13 Robin Fairbairns + + * faqbody.tex (preamble): today's date; input archive.cfg regardless of + whether we're using pdf + + * faq.sty: yet more baroquery towards \CTANhref + +2006-11-13 Robin Fairbairns + + * faqbody.tex (section{Introduction}): ref to vis faq in "how to use" + + * faq.sty: new command \CTANhref works for dvi version so far; + no longer requires \Status for pdf working, uses ifpdf pkg instead; + a fair bit of more minor tidying + +2006-11-09 Robin Fairbairns + + * faqbody.tex (subsection{Floating tables, figures, etc.}): example + code in {quote} in q-vertspacefloat and q-mcfloat + +2006-11-06 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): mention the + case of multirow-multicolumn in q-multirow + (subsection{"Generic" macros and techniques}): new q-isdef from + add-general + +2006-11-03 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): correct \cmdinvoke{c}{arg1}{arg2} + sanitize.pl (sanitize_line): -beta works, so correct here too + +06-11-02 Robin Fairbairns + + * add-general.tex (subsection{"Generic" macros and techniques}): bunch + of editorials in q-isdef + (subsection{"Generic" macros and techniques}): tidy narrow layout of + example, add wide version and hack at words a bit in q-ovwtsym + +2006-10-31 Robin Fairbairns + + * add-general.tex (subsection{Generic macros}): \csx{relax} in place of + \relax(!) in q-isdef + + * dirctan.tex: add pspicture + + * faqbody.tex (section{Graphics}): correct ctan ref for pspicture + +2006-10-31 Robin Fairbairns + + * faqbody.tex: today's date, v3.16b-3 + (subsection{LaTeX macro programming}): dot \makeat* liberally around + examples in q-running-nos + +2006-10-23 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): draftcopy doesn't work with + pdflatex (in q-watermark) + +2006-10-19 Robin Fairbairns + + * faqbody.tex: version 3.16b-2, date now iso format (with hyphens) + + * patchdates.tex: pl4.13, date now iso format (with hyphens) + + * add-general.tex (subsection{Generic macros and techniques}): new + q-ovwtsym from a post by enrico gregorio (latest instance of an + oft-repeated answer) + +2006-10-05 Robin Fairbairns + + * Makefile.CTAN: basis of mechanism to install CHANGES files + +2006-10-05 Robin Fairbairns + + * texfaq2html: sigh...merge in intro patch from texfaq2html-beta + + * dirctan.tex: add figflow + + * faqbody.tex: v3.16c, today + (subsection{Tables, figures and diagrams}): add figflow for plain, tidy + some of the ghastly verbatim in q-textflow + +2006-10-04 Robin Fairbairns + + * faqbody.tex: 3.16b-1, today + (section{Format conversions}): correct address for stil, in q-sgml2tex + +2006-10-02 Robin Fairbairns + + * sanitize.pl (sanitize_line): updates from -beta + + * faqbody.tex: v3.16b, today + +2006-09-28 Robin Fairbairns + + * add-general.tex (subsection{``Generic'' macros and techniques}): new + q-isdef + + * sanitize-beta.pl (sanitize_line): move \csx before text shape + changing commands, so we can have emphasised control seqq + +2006-09-23 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macro programming}): misspelling of + corrollary (over and over again) in q-addtoreset + +2006-09-20 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): reference testflow in + q-dvips-pdf + (section{Documentation and Help}): link to q-dvips-pdf in tutbitslatex + (section{Hypertext and PDF}): trivial editorials in q-acrobat + (section{Documentation and Help}): remove caveat about epslatex in + q-tutbitslatex + +2006-09-19 Robin Fairbairns + + * faqbody.tex: v3.16a-6, today + (section{Documentation and Help}): add the word "minimal" (to assist + searching - suggestion from brooks moses) and tidy q-minxampl a bit + (section{The joy of TeX errors}): new q-optionclash from add-general + +2006-09-18 Robin Fairbairns + + * faqbody.tex (subsection{Alternative document classes}): mention + nicola talbot's experimental jpgfdraw in q-poster + +2006-09-12 Robin Fairbairns + + * faqbody.tex (section{The Background}): rewrite q-texinfo + +2006-09-11 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): yet more fun + with q-optionclash + + * faqbody.tex: v3.16a-5, today + (throughout): t1 and ot1 done consistently (remains to check other + encodings like t2 series, etc) + (section{Installing AllTeX files}): correct \latinfamily in + q-instt1font + +2006-09-10 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): rewrite + recommendations for q-optionclash + + * faqbody.tex (subsection{LaTeX macro tools and techniques}): add + \makeatletter to example in q-ltxcmds + +2006-09-05 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): add + q-optionclash + +2006-08-27 Robin Fairbairns + + * check-ctan-lists: add miktex-setup to list of known links + + * dirctan.tex: correct dvipaste + + * filectan.tex: correct miktex-setup, metafp-pdf + +2006-08-26 Robin Fairbairns + + * faqbody.tex (section{The Background}): q-omegaleph tidy-ups in + q-texfuture, q-books, q-texsystems + (section{Current TeX-related projects}): q-omegaleph and q-luatex from + add-general + +2006-08-25 Robin Fairbairns + + * add-general.tex (subsection{Current TeX-related projects}): minor + editorial on q-luatex + + * faqbody.tex (section{The Background}): typo in q-whatpdftex + +2006-08-19 Robin Fairbairns + + * faqbody.tex: v3.16a-4, today + (section{Bits and pieces of (La)TeX}): rehash q-virtualfonts + + * faq.sty: make \htmlonly careful about spacing (thought experiment led + to this -- don't know that it's actually a concern) + +2006-08-16 Robin Fairbairns + + * texfaq2html-gamma: lots more diddling (trying to get all keys into a + hash, and working from there ... not successful) + + * faqbody.tex (section{Graphics}): suggestion from donald for \raisebox + alignment of graphics in q-topalign + +2006-08-15 Robin Fairbairns + + * texfaq2html-gamma: yet more thrashing about + + * faqbody.tex (section{The joy of TeX errors}): other reasons for the + error in q-hyperdupdest + (_the_ list): add iain murray + +2006-08-14 Robin Fairbairns + + * texfaq2html-gamma: further extension of yesterday's fun; added + ?intro(duction) [needs work on texfaq2file] and more debugging + + * add-general.tex (subsection{Current TeX-related projects}): tidy + q-omegaleph, extend q-luatex and (hopefully) make it more coherent + +2006-08-13 Robin Fairbairns + + * add-general.tex (subsection{Current TeX-related projects}): new + questions (rather, bases for questions) q-omegaleph and q-luatex + + * faqbody.tex: version 3.16a-3, today + (section{TeX Systems}): different instructions for miktex installation + in q-texsystems + (subsection{Footnotes}): change ctan link for perpage in q-footnpp + (subsection{LaTeX macro programming}): change ctan link for perpage in + q-addtoreset + (subsection{Typesetting specialities}): mention lilypond in q-music + (subsection*{Origins}): add comment to contributor entry about dak, + remove the silly footnote about full stops + + * filectan.tex: correct epsf (should be link to dir?), metafp, + metafont-for-beginners, miktex-setup (not *right*...); delete + miktex-install, perpage + + * dirctan.tex: correct arabtex, cellspace, dvipaste pst-pdf, texindex; + add epsf + + * faqbody.tex (subsection{Common misunderstandings}): spelling error in + q-paraparam + + * texfaq2html-gamma: done a debugging session; add search-box + switching; add a modicum of doc in comments; allow to be run from + command line (editable pointer) + + * faqbody.tex (section{Introduction}): capa_bi_lities (!) + +2006-08-11 Robin Fairbairns + + * faqbody.tex: v3.16a-2, today + (section{Documentation and Help}): add tug font resources to + q-tutbitslatex + +2006-08-07 Robin Fairbairns + + * faqbody.tex (throughout): correct spelling of separate & derivatives + + * add-general.tex (subsection{LaTeX macro programming}): new + q-latexqual for nag, texidate + + * dirctan.tex: add a (multilingual, as it were) browsable l2tabu + +2006-08-06 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macro tools and techniques}): correct + typo in, and editorial on q-atsigns + + * sanitize-beta.pl (sanitize_line): translate \LaTeX{} (!) + + * faqbody.tex (subsection{Tables of contents and indexes}): correct + sample code and slick up descr slightly, in q-minitoc + (subsection*{Origins}): mention Jean-Pierre Drucbert in _the_ list + +2006-08-05 Robin Fairbairns + + * faqbody.tex (throughout): delete doubling of "the" (!) + +2006-08-04 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of (La)TeX}): rewrite the note + about maths fonts in q-ecfonts + +2006-08-03 Robin Fairbairns + + * faqbody.tex (section{Current TeX-related projects}): tweak wording + slightly + + *** release 3.16a *** + +2006-07-31 Robin Fairbairns + + * texfaq2html-gamma: separate section for searches, trim final else + + * faqbody.tex (section{The Background}): correct current mf version no + +2006-07-25 Robin Fairbairns + + * faqbody.tex: v3.16a, today + +2006-07-25 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): extend q-filename with + a simpler file-name saver, and show how to strip .tex from fink + filenames + + * texfaq2html-beta: more careful about \section test for end of intro + +2006-07-07 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macro tools and techniques}): stupidity + in q-cmdstar, spotted by Kasper van den Berg + +2006-07-06 Robin Fairbairns + + * faqbody.tex (subsection{Lists}): typo in q-enumerate spotted by + Samuel Lelievre + +2006-06-30 Robin Fairbairns + + * faqbody.tex: v3.16, today + + * sanitize.pl: bring up to date with sanitize-beta.pl + + * texfaq2html-gamma: remove %SymbolChar table + + * faqbody.tex (section{Documentation and Help}): typo in q-tutbitslatex + (wideversion only, so only now detected) + +2006-06-29 Robin Fairbairns + + * faqbody.tex: today's date + (subsection{Creating citations}): q-whatbst from add-general + (subsection{Macros for using fonts}): (new subsection) q-fonts-pln from + add-general + (section{Graphics}): new q-repeatgrf from add-general + + * add-general.tex (subsection{Creating bibliographies}): proof-reading + corrections of q-whatbst + +2006-06-28 Robin Fairbairns + + * add-general.tex (subsection{Fonts}): proof-reading corrections in + q-fonts-pln + (subsection{Graphics}): proof-reading corrections in q-repeatgrf + +2006-06-28 Robin Fairbairns + + * add-general.tex (subsection{Graphics}): mention dvips version, and + add missing pdf bit in q-repeatgrf + +2006-06-27 Robin Fairbairns + + * add-general.tex (subsection{Graphics}): mention graphicx-psmin + + * dirctan.tex: add graphicx-psmin + +2006-06-27 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): first stab at + body for q-install-find + + * faqbody.tex: today's date + (subsection{Common misunderstandings}): new q-gutter from add-general + (subsection{Common errors}): new q-matchbrak from add-general + +2006-06-26 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): skeleton of + new installation question structure + +2006-06-23 Robin Fairbairns + + * faqbody.tex (section{Graphics}): editorial tidying of q-graphicspath + plus emphasise the need for trailing slash on \graphicspath dirs + (section{Graphics}): minor editorial in q-graph-pspdf q-mpprologues too + (subsection{Creating bibliographies}): editorials on q-bibstrtl + +2006-06-22 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): deal with \subsection* (i.e., + ignore it, for intro \latexhtml command) + + * faqbody.tex: version 3.16alpha, today + (section{Introduction}): rearrange to limit the amount we need to show + on the web by default + +2006-06-22 Robin Fairbairns + + * faqbody.tex: today's date -- rehash the intro + +2006-06-21 Robin Fairbairns + + * add-general.tex (subsection{Why does it do that?}): actual text for + q-gutter + + * additions.tex: let's change patch version and date, for once! + +2006-06-19 Robin Fairbairns + + * faqbody.tex: today's date + (section{Documentation and Help}): add smith's latex for logicians to + q-tutbitslatex + (section{TeX Systems}): make ref to w32tex, move dos & os/2 offerings + down below win32 in the doc (q-texsystems) + +2006-06-15 Robin Fairbairns + + * add-general.tex (subsection{Graphics}): comment-out + q-dvipdfmgraphics* -- seems to have been a mistake + + * faqbody.tex (subsection{Page layout}): restructure the list of + related answers in q-changemargin with an intersticial remark + (subsection{Page layout}): develop and extend q-chngmargonfly + +2006-06-14 Robin Fairbairns + + * faqbody.tex: today's date in preamble + (subsection{Page layout}): split Q-changemargin into intro and 3 bits + of detail + +2006-06-13 Robin Fairbairns + + * add-general.tex (subsection{Why does it do that?}): a huge start on + new q-gutter (i.e., wrote \Question command) + + * faqbody.tex (subsection{Page layout}): start of rehash of + q-changemargin + +2006-06-05 Robin Fairbairns + + * dirctan.tex: add cellspace + + * faqbody.tex (subsection{Tables, figures and diagrams}): mention + cellspace in q-struttab + +2006-06-02 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): give framed a + paragraph of its own in q-changebars + +2006-06-01 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): no longer mention + troff-to-latex in q-fmtconv + + * dirctan.tex: add moderncv + chappg,mathdots,shade from filectan; correct pst-pdf; delete tr2tex, + troff-to-latex + + * faqbody.tex (subsection{Alternative document classes}): refine the + statement about europecv, in q-cv + (section{TeX Systems}): redo note on y&y in q-commercial + (subsection{Alternative document classes}): mention moderncv in q-cv + +2006-05-30 Robin Fairbairns + + * faqbody.tex (section{Current TeX-related projects}): simplify q-xetex + and mention xetex for linux + (section{Current TeX-related projects}): remove q-pdftex + + * faq.sty: another iteration of ctanrefs: sanitising isn't right, since + we often have real commands in there, so use \scantokens -- which + means we need always to use an e-tex + + * faqbody.tex (subsection{Document structure}): "simple minded" example + now no longer uses 2.09 fonts in q-secthead + +2006-05-28 Robin Fairbairns + + * faqbody.tex (section{The Background}): add qualifier to actions of + distributors in q-triptrap + + * dirctan.tex: add a2ping, sam2p + + * faqbody.tex (section{Graphics}): tidy q-dvipsgraphics, add + sam2p/a2ping as alternatives for bitmaps + +2006-05-27 Robin Fairbairns + + * add-general.tex (subsection{Fonts}): new q-fonts-pln + + * faq.sty: \@onelevel@sanitize \item args in ctanrefs env + + * dirctan.tex: add ec-plain, font_selection, fontch, plnfss and ofs + + * faqbody.tex (section{TeX Systems}): stupid logo macros in xemtex + description + +2006-05-24 Robin Fairbairns + + * dirctan.tex: add labelcas + + * faqbody.tex (subsection{Alternative document classes}): get q-poster + from add-general + (subsection{Why shouldn't I?}): get q-newfont from add-general + (subsection{LaTeX macro programming}): mention labelcas package in + q-labundef + + * add-general.tex (subsection{Alternative document classes}): mention + multicol for "unadorned" a0poster-posters in q-poster + + * faqbody.tex: today's date + (section{Bits and pieces of (La)TeX}): tidy up (and extend) q-ecfonts + +2006-05-21 Robin Fairbairns + + * faqbody.tex: today's date + (section{Acquiring the Software}): mention bytopic.html in q-findfiles + +2006-05-15 Robin Fairbairns + + * add-general.tex (subsection{Alternative document classes}): q-poster + + * dirctan.tex: add sciposter, a0poster, flowfram + +2006-05-10 Robin Fairbairns + + * faqbody.tex: today's date + (section{Documentation and Help}): add chris harrison's book to + q-man-latex + +2006-05-08 Robin Fairbairns + + * faqbody.tex: today's date + (section{Current TeX-related projects}): add \href to berlios site, and + make link to CTAN rather than old site + +2006-05-04 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): elide all reference to + "quote site index" from q-findfiles + +2006-04-24 Robin Fairbairns + + * faqbody.tex: today's date + (subsection{LaTeX macro programming}): correct recipe given in + Q-seccntfmt + (section{Installing (La)TeX files}): correct link to map update stuff + in miktex in q-instt1font and q-uselmfonts + +2006-04-23 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): yet another tidying of \cmdinvoke + +2006-04-15 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): mention tex-ptr-faq in + q-wherefaq + (section{You're still stuck?}): correct bnb's address in q-bug + +2006-04-10 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): annotation at end of + q-noline to mention other instances that could need covering + +2006-04-06 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): mention bernard + gaulle's faqs in q-wherefaq; emphasise that the fr.c.t.t one is no + longer in the land of the living [check!] + +2006-04-04 Robin Fairbairns + + * add-general.tex (subsection{Why does it do that?}): new q-matchbrak + +2006-04-03 Robin Fairbairns + + * faqbody.tex: today's date + (section{Documentation and Help}): new q-doc-wiki from add-general + (section{Documentation and Help}): link q-doc-wiki in q-tutorials* + (section{The Background}): new q-whatpdftex from add-general + (throughout): refs to q-pdftex -> q-whatpdftex + +2006-03-30 Robin Fairbairns + + * faqbody.tex: today's date + + * sanitize-beta.pl: couple of changes to introduce quoteverbatim + + * faq.sty: add quoteverbatim environment, for verbatim output of + verbatim environments (used by new q-verbwithin, of course) + + * examples/verbwithin.tex: new file + + * faqbody.tex (subsection{Common errors}): extend description of + failures of verbatim environment, in q-verbwithin + +2006-03-29 Robin Fairbairns + + * faqbody.tex (section{Graphics}): new address for pstricks site in + q-drawing and q-labelfig + + * dirctan.tex: remove ps4pdf, add pst-pdf + + * faqbody.tex: today's date + (section{Graphics}): ps4pdf->pst-pdf in q-pdftexgraphics, new address + for hv's web stuff + +2006-03-27 Robin Fairbairns + + * locations.mk: add HTMLDIR, HTMDIR_GAMMA and GAMMADIR + + * Makefile: remove inst-html target, add inst-gamma + + * sanitize-beta.pl (sanitize_line): translate both double and single + quotes to entities + (sanitize_line): make \end{quote} issue a

    for the benefit of the + css mechanisms in -gamma + + * texfaq2file: use sanitize-beta + + * add-general.tex (subsection{The Background}): iterate q-whatpdftex + +2006-03-21 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): braces around + \multirow *s (distinction without a difference...) + +2006-03-17 Robin Fairbairns + + * faqbody.tex: today's date + (section{Documentation and Help}): update details for wheildon in + q-typebooks + +2006-03-09 Robin Fairbairns + + * faqbody.tex: today's date + (subsection{Creating bibliographies}): minor rewording of q-bibinline + +2006-03-08 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): deal with dviversion and pdfversion + (sanitize_line): deal with --- => — -- => – + + * faqbody.tex: today's date on first line + (section{Documentation and Help}): mention visualFAQ in q-wherefaq + + * filectan.tex: add visualFAQ + + * faqbody.tex (section{The Background}): yet another minuscule + iteration of q-texpronounce + +2006-03-02 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): mention .pool, .fmt, + .base and .mem locations, tidy text a bit, in q-wherefiles + +2006-03-01 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): typo in q-changebars + (section{Creating citations}): tidy up q-bibinline a bit more + +2006-02-28 Robin Fairbairns + + * faqbody.tex (section{DVI Drivers and Previewers}): cut q-dvips down + to its bare bones (whole section needs a going-over) + (subsection{Hyphenation}): correct typo in q-hyphexcept + +2006-02-26 Robin Fairbairns + + * faqbody.tex (section{Creating citations}): sort out *my* + understanding of footbib, in q-bibinline + +2006-02-25 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): mention urs oswald's + things in q-mfptutorials + +2006-02-24 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macro programming}): mention the + koma-script facilities in q-oddpage + +2006-02-24 Robin Fairbairns + + * faqbody.tex: today's date + (subsection{Common errors}): "typeset" page number rather than + "set" page number in q-wrongpn + (subsection{Creating bibliographies}): remove snide comment about + tex2bib documentation -- it's standard now + +2006-02-22 Robin Fairbairns + + * README: try to avoid the contradictions; may need to take poli's + advice more nearly wholesale... + + * faqbody.tex: today's date + (section{Graphics}): redo ref to epslatex in q-impgraph + + * filectan.tex: ref epslatex -> epslatex_pdf + + * faqbody.tex (section{Documentation and Help}): mention zoonekynd's + series in q-tutbitslatex, and reorganise references to epslatex (given + we're supposed to have source rsn) + +2006-02-20 Robin Fairbairns + + * faqbody.tex: today's date + (section{Graphics}): mention psfragx in q-labelfig + (section{Bits and pieces of (La)TeX}): mention "eps" as an abbr, + in q-eps (seems it's never previously been used!) + +2006-02-17 Robin Fairbairns + + * faqbody.tex: today's date + (section{You're still stuck?}): improve layout of q-noans, tidy + text a bit + + * filectan.tex: add xampl-bib + + * add-general.tex (subsection{Creating bibliographies}): new q-whatbst + + * faqbody.tex (section{Graphics}): mention tikz in q-drawing + +2006-02-14 Robin Fairbairns + + * faqbody.tex: today's date + (subsection{Adobe Type~1 fonts}): minor typo in q-usepsfont + (subsection{Common errors}): breakurl patches \url by default in + q-breaklinks + (section{Introduction}): add vilar camara neto to list + +2006-02-08 Robin Fairbairns + + * faqbody.tex: today, note more input from ulrike f + (subsection{LaTeX macro tools and techniques}): extend \DefaultOpt + example in q-oarglikesect + +2006-02-07 Robin Fairbairns + + * faqbody.tex: today's date, note chris walker's further contribution + (subsection{Mathematics}): add \operatorname to q-newfunction + + * dirctan.tex: add ite + + * faqbody.tex (section{Graphics}): correct pstricks homepage link, + and add reference to ite in q-labelfig (Chris Walker) + +2006-02-06 Robin Fairbairns + + * faqbody.tex (subsection{Getting things to fit}): re-describe mathspic + to tally with current reality + + * dirctan.tex: correct paths of mathspic, bdfchess + + * filectan.tex: correct tex2bib paths (2 off) + +2006-02-06 Robin Fairbairns + + * add-general.tex (subsection{Documentation and help}): new q-doc-wiki + + * faqbody.tex (subsection{Lists}): mention multenum in q-complist + + * dirctan.tex: add multenum + +2006-01-29 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): correct url (and name) + for the note on ptex in q-tutbitslatex + +2006-01-23 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): gosh -- a mention of + quote site index, still...removed from q-findfiles + +2006-01-10 Robin Fairbairns + + * faqbody.tex (subsection{Alternative document classes}): hack around + at the text about includex, and add newclude + +2006-01-05 Robin Fairbairns + + * dirctan.tex: add rotfloat + + * faqbody.tex: today's date + (subsection{Page layout}): mention rotfloat in q-rotating + +2005-12-27 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): mention verbatim environment + in the intro to q-verbwithin + +2005-12-24 Robin Fairbairns + + * add-general.tex (subsection{The Background}): new q-whatpdftex (just + a start, so far) + + * faqbody.tex (section{Graphics}): change title of "making \mp output + display..." + +2005-12-23 Robin Fairbairns + + * faqbody.tex: today's date, v3.15b + +2005-12-22 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): remove rogue character on keywords + line + + * faqbody.tex (subsection{Page layout}): restore lost text to + q-parallel (from RCS file :-}) + +2005-12-07 Robin Fairbairns + + * filectan.tex: add ttb-pdf + + * faqbody.tex (section{Documentation and Help}): add ttb to q-bibtexing + +2005-12-05 Robin Fairbairns + + * filectan.tex: add bidstobibtex + + * faqbody.tex (subsection{Creating bibliographies}): make ref to + bids.to.bibtex in q-buildbib + +2005-11-30 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): new url for andy + roberts' latex page + +2005-11-29 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): remove code for \symbol + + * faqbody.tex (section{Current TeX-related projects}): correct links in + q-latex3 + (section{TeX Systems}): remove fptex, add xemtex + (section{Acquiring the Software}): replace fptex with protext in q-cd + (throughout): remove all remaining fptex options + (subsection{"Generic" macros and techniques}): don't use \symbol in + q-activechars + (subsection{Common errors}): do away with \symbol for underscore in + q-verbwithin (also rename \bs to \us for underscore, in the example) + +*** RELEASE 3.15 *** + + * sanitize.pl,sanitize-beta.pl: attempts to solve the $symbolchar + lunacy (failed) + + * faqbody.tex: 3.15a, today's date (already: at 10am!) + (section{Symbols, etc.}): \_ for underscores in q-underscore + (section{Current TeX-related projects}): correct urls in q-latex3 + + * texfaq2html,texfaq2html-beta,texfaq2file: correct *-list + + * sanitize.pl (sanitize_line): add changes from -beta + +2005-11-28 Robin Fairbairns + + * dirctan.tex: add mactex + + * faqbody.tex (subsection{Creating citations}): new q-formbiblabel from + add-general + (subsection{Tables, figures and diagrams}): new q-varwidcol from + add-general + (header): v3.15, today + (section{Documentation and Help}): suppress link to mimi's documentation + at fsu -- they've removed it already, the fools + (section{Documentation and Help}): add ref to memoir manual in + q-typo-style + (section{TeX Systems}): mention mactex on ctan + +2005-11-27 Robin Fairbairns + + * texfaq2file,texfaq2html,texfaq2html-beta,texfaq2html-gamma: add + maillists* to translation list + + * faqbody.tex (section{Documentation and Help}): new q-maillists* from + the rest of the old q-maillists (leaving a few bits out, admittedly) + +2005-11-26 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): build q-gethelp from + the old q-maillists + +2005-11-25 Robin Fairbairns + + * faqbody.tex: today's date + (section{The joy of TeX errors}): reword (not change) advice in + q-errmissitem + (subsection{Mathematics}): new q-brkinline from add-general + (section{Hypertext and PDF}): new q-srchpdf from add-general + + * add-general.tex (subsection{Why shouldn't I?}): change recommendation + to fix-cm in q-newfont, but retain mention of type1cm/ec for old latex + dists + + * filectan.tex: add fix-cm (path to file) + +2005-11-24 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macro programming}): editorial work on + q-seccntfmt and q-labundef + + * sanitize-beta.pl (sanitize_line): sort out order of \cmdinvoke* + patterns + +2005-11-22 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macro programming}): emphasise internal + commands in q-seccntfmt + (subsection{LaTeX macro tools and techniques}): reword to avoid blame + on the companion, and to use a tlc2 example in q-atsigns + + * filectan.tex: get abstract.bst from biblio/bibtex/utils/bibtools + rather than contrib + +2005-11-21 Robin Fairbairns + + * dirctan.tex: point lucida at new metrics, add lucida-psnfss + + * faqbody.tex (subsection{Adobe Type~1 fonts}): reinstate lucida + bright/math and add link to karl's interim web page + +2005-11-21 Robin Fairbairns + + * add-general.tex (subsection{Tables, figures and diagrams}): iteration + of q-varwidcol + (subsection{Hypertext and PDF}): iteration of q-srchpdf + + * faqbody.tex (section{Current TeX-related projects}): tinkering with + q-aleph (needs rewrite to eliminate ref to q-omega, which is destined + to go some time soon + + * add-general.tex (subsection{Why shouldn't I?}): change link for + type1cm (shouldn't this be fix-cm?) + + * faqbody.tex (subsection{LaTeX macro tools and techniques}): new + answer q-ltxhash from add-general + (subsection{LaTeX macro programming}): was (confusingly) described as + techniques, too + (section{The joy of TeX errors}): new q-errparnum and q-fllost from + add-general + (section{Bits and pieces of (La)TeX}): move q-hyphen up above q-dtx + (section{Bits and pieces of (La)TeX}): new q-clsvpkg from add-general + +2005-11-21 Robin Fairbairns + + * add-general.tex (subsection{Tables, figures and diagrams}): new + q-varwidcol + +2005-11-20 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): mention alternative + locations for .map files following new tds, bit of editorial work + (section{Documentation and Help}): reinstate link to bausum's stuff in + q-ref-doc + +2005-11-18 Robin Fairbairns + + * dirctan.tex: axodraw is a directory now + + * filectan.tex: remove axodraw, correct finplain + + * faqbody.tex (subsection{Common misunderstandings}): correct path for + textcase in q-casechange + (subsection{Tables, figures and diagrams}): correct path for tabulary + in q-tabcellalign and q-fixwidtab + + * dirctan.tex: add tabulary,textcase + + * faqbody.tex (section{The Background}): add q-etex from add-general, + and edit it a bit + (throughout): remove references to q-nts, in favour of q-etex + (section{Current TeX-related projects}): dump q-nts + (section{Current TeX-related projects}): rewrite antecedent text in + q-aleph + + * add-general.tex (subsection{Graphics}): ref to q-tutorial -> + q-tutbitslatex in q-repeatgrf + + * Makefile (PATCH): remove add-tutorial + + * dirctan.tex: add cmap + + * add-general.tex (subsection{Hypertext and PDF}): add q-srchpdf + +2005-11-17 Robin Fairbairns + + * texfaq2html-gamma,texfaq2html-beta,texfaq2html,texfaq2file: add + q-tutorials* to %label_to_file initialisation + + * faqbody.tex: v3.14c, today's date + (section{Documentation and Help}): add reference to syropoulos' book + (section{Documentation and Help}): replace q-tutorials with + q-tutorials* and friends (fix up refs to q-tutorials from elsewhere) + + * add-tutorial.tex (subsection{Documentation and help}): final + rearrangement and tidy; add the guide to ptex posted yesterday + + * faq.sty: pdfstartview=FitH since FitBH seems no longer to work with + AR7 or the latest pdftex or something + +2005-11-14 Robin Fairbairns + + * faqbody.tex: today's date + (section{Introduction}): add steve peter to contributors + (throughout): bunch of corrections from steve peter + +2005-11-14 Robin Fairbairns + + * faq.sty: load textcomp + + * dirctan.tex: add mutex + +2005-11-08 Robin Fairbairns + + * README: remove my name and email address + + * newfaq(-patch).tex,letterfaq.tex: null \author + + * texfaq2html(-beta),texfaq2file: remove claim that i'm involved with + maintenance + + * faqbody.tex (throughout): replace my name with "another idiot" + +2005-11-08 Robin Fairbairns + + * add-tutorial.tex (subsection{Documentation and help}): yet more + rearrangement + +2005-11-07 Robin Fairbairns + + * faqbody.tex: v3.14b, today + +2005-11-07 Robin Fairbairns + + * filectan.tex: bbl2html and notex.bst moved + + * add-tutorial.tex (subsection{Documentation and help}): more + rearrangement + +2005-11-05 Robin Fairbairns + + * faqbody.tex (subsection{Hyphenation}): correct def of \hyph in + q-nohyph, do a bunch of quote-env stuff in whole subsection; also, + more enthusiastic wrapping of the quote about catalan + +2005-10-26 Robin Fairbairns + + * add-general.tex (subsection{Mathematics}): mention bracing to + suppress breaks in maths + +2005-10-22 Robin Fairbairns + + * faqbody.tex (subsection{Mathematics}): suggest \textstyle/ + \displaystyle alternative for q-limits + +2005-10-15 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): extend q-breaklinks to cover + the toc/lof/lot... case, and to outline circumstances where there's no + help to be had + +2005-10-10 Robin Fairbairns + + * texfaq2html-gamma: sort regex in opening of ?section= code + +2005-10-07 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): add the offered text to + q-acrobat; this question is a mess and needs rearranging (probably + splitting into two) + + * dirctan.tex: remove aix3.2, move miktexppc, miktex-AXP + + * texfaq2html-gamma: start work on index/fullindex switching + + * texfaq2file: secondary index now full-index.html + + * add-general.tex (subsection{Bits and pieces of (La)TeX}): new q-etex + + * faqbody.tex: v3.14a.3, today + (section{TeX Systems}): mention texlive mac distro + +2005-10-03 Robin Fairbairns + + * texfaq2file: more of same + + * texfaq2html-gamma: yet more twiddling + + * filectan.tex: epsf.tex moved + + * sanitize.pl,sanitize-beta.pl (sanitize_line): add \nolinkURL + +2005-09-26 Robin Fairbairns + + * texfaq2html-gamma: restructure q_label_list + + * faqbody.tex (section{Current TeX-related projects}): correct web addr + in q-extex + + * texfaq2file: iterate -w actions + +2005-09-25 Robin Fairbairns + + * filectan.tex: patch and shade have moved + + * texfaq2html-gamma: label argument may be a list + +2005-09-23 Robin Fairbairns + + * filectan.tex: letterspacing,backgrnd moved + +05-09-22 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): minor edits in q-type1T1 + (section{The Background}): revised q-eplain from Oleg Katsitadze + (): today's date, add katsitadze to credits + + * dirctan.tex: remove icelandic, which we weren't using + + * filectan.tex: mathdots has moved + +2005-09-16 Robin Fairbairns + + * dirctan.tex: add luximono, microtype; move tip pointer + + * faqbody.tex: today's date + (subsection{Document structure}): new first para for q-fancyhdr + (subsection{Common misunderstandings}): reword description of + \emergencystretch and discuss microtype in q-overfull + (subsection{Odds and ends}): add luximono to q-bold-extras + +2005-09-14 Robin Fairbairns + + * dirctan.tex: add powerdot + + * faqbody.tex (subsection{Alternative document classes}): mention + powerdot in q-slidecls + +2005-09-11 Robin Fairbairns + + * faq.sty: add \nolinkURL definitions + + * add-general.tex (subsection{Graphics}): a proto-q-dvipdfmgraphics + redefinition (hrrumph) + +2005-09-03 Robin Fairbairns + + * faqbody.tex: v3.14a.2 + (section{Introduction}): mention that the texlive version is no better + than the "current on the web" + + [interim web release 3.14a.1] + +2005-09-03 Robin Fairbairns + + * faqbody.tex: today's date + (section{You're still stuck?}): faq-devel@tex.ac.uk in q-noans + +2005-08-28 Robin Fairbairns + + * faqbody.tex (throughout): all remaining miktex references via \miktex + +2005-08-10 Robin Fairbairns + + * filectan.tex: correct pointers for the two epslatex entries + + * faqbody.tex (section{Installing (La)TeX files}): text about mpm in + q-miktexinst (and convert to \miktex in that question, where + appropriate) + +2005-08-07 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): tidy + \htmlignore stuff in q-textflow + +2005-08-06 Robin Fairbairns + + * dirctan.tex: add talk + + * faqbody.tex (subsection{Alternative document classes}): add talk to + q-slidecls + +2005-08-05 Robin Fairbairns + + * add-general.tex (subsection{Bits and pieces of (La)TeX}): new answer + q-clsvpkg on the distinction between classes and packages + + * faqbody.tex (section{Bits and pieces of (La)TeX}): change of section + name + +2005-08-02 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): try to avoid the acronym + ASCII except where necessary in q-toascii + +2005-08-01 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): minor editorial in + q-conditional + +2005-07-31 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): new q-fllost + +2005-07-20 Robin Fairbairns + + * faqbody.tex (section{You're still stuck?}): warn about non-latex bug + reports in q-latexbug and q-bug + (intro) v3.14a.1, today + +2005-07-19 Robin Fairbairns + + * README: faq->faq-devel in email addrs, except munged one for me in + sig line at bottom + + * faqbody.tex (subsection{Odds and ends}): remove "not doing away with + bumpy-road logos" comment, since i now have done so + + * sanitize.pl,sanitize-beta.pl (sanitize_line): sigh -- \\textless... + +2005-07-19 Robin Fairbairns + + * sanitize.pl,sanitize-beta.pl (sanitize_line): yet another iteration + of the < > translation fiasco + +2005-07-15 Robin Fairbairns + + * dirctan.tex: add quotchap + + * faqbody.tex (subsection{Page layout}): add quotchap to q-epigraph and + rewrite intro to question somewhat. + +2005-07-10 Robin Fairbairns + + * faqbody.tex (section{You're still stuck?}): faq->faq-devel in + q-newans + + * sanitize.pl (sanitize_line): as -beta (now it's been tested ;-) + + * sanitize-beta.pl (sanitize_line): sort out translations of <> when + not converting + +2005-07-09 Robin Fairbairns + + * Makefile: remove inst-html target + (FAQ-html.tar.gz): make depend on html/index.html (does this do it?) + +2005-07-07 Robin Fairbairns + + * faqbody.tex: v3.14a, today + (subsection{Document management}): boondoggle in q-rcs html output + + * faqbody.tex: v3.14, today + New version installed + + * faqbody.tex (section{Introduction}): mention static .zip files in + html-only bit about retrieving directories + (section{Acquiring the Software}): remove exact location names for + individual ctans, in q-archives + (section{Acquiring the Software}): rewrite the stuff about searching in + q-findfiles + +2005-07-05 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): add fancyhdr commands (to do + empty plain style) to q-ps@empty + + * texfaq2html-beta,texfaq2file: as texfaq2html + + * texfaq2html: switch .tar.gz and .zip in retrieval + +2005-07-04 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): add q-wrongpn and + q-breaklinks from add-general + (preamble) v3.13b.5, today + (subsection{Footnotes}): rewrite q-ftncapt, aiming for clarity (hah!) + (section{Acquiring the Software}): remove mention of ftpmail and finger + of ctan user + + * dirctan.tex: add breakurl + + * add-general.tex (subsection{Why does it do that?}): mention breakurl + in q-breaklinks -- looks as if this makes the answer usable... + + * faqbody.tex (subsection{Tables, figures and diagrams}): correct + blatant error in q-tabcellalign (spotted by ulrike fischer) + (section{Introduction}): hack the note about the pdf version slightly, + add ulrike fischer to list of contributors + +2005-07-01 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): add ref to + http://www.latex-einfuehrung.de/ in q-minxampl + +2005-06-29 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): correct advice on + over-long urls and url.sty in q-citeurl + +2005-06-12 Robin Fairbairns + + * faqbody.tex: v3.13b.4, tonight + + * faqbody.tex (section{Introduction}): add chris walker + (section{Bits and pieces of TeX}): \Qref* in q-dtx + (subsection{Tables of contents and indexes}): \Qref* in q-tocloft + + * dirctan.tex: add revtex(!) + + * faqbody.tex (subsection{Creating citations}): note that mcite doesn't + play with revtex, in q-mcite + +2005-06-09 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): mention use + of pict2e in q-slashbox + +2005-06-07 Robin Fairbairns + + * faqbody.tex (section{You're still stuck?}): slight editorial in q-bug + + * add-tutorial.tex: bunch of work, throughout, which seems not to have + been recorded or even copied to backed-up space before now... + + * faqbody.tex (section{Installing (La)TeX files}): mention .map and + .enc trees, and alternative inputs such as .sto, .clo and .cfg in + q-wherefiles + + * filectan.tex: add nextpage + + * faqbody.tex (subsection{Document structure}): mention nextpage + package in q-reallyblank + +2005-06-02 Robin Fairbairns + + * faqbody.tex (section{Graphics}): mention pspicture as a superseded + package in q-drawing + (section{Documentation and Help}): slight iteration of q-pkgdoc + +2005-05-23 Robin Fairbairns + + * faqbody.tex (subsection{Why shouldn't I?}): mention vertical spacing + inconsistencies in q-dolldoll + +2005-05-19 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): add philip + ratcliffe's fake-accent solution to q-bibtranscinit + (preamble): v3.13b.3 (ok, i don't know what i'm doing here...), today + (section{Introduction}): add philip ratcliffe to thanks list + + * add-general.tex (subsection{Why does it do that?}): add q-wrongpn + + * faqbody.tex (subsection{LaTeX macro tools and techniques}): renamed + subsection, moved q-oarglikesect and q-twooptarg from "latex macros" + (subsection{LaTeX macro tools and techniques}): change name to "more + than one opt arg" + (subsection{LaTeX macro tools and techniques}): new q-cmdstar, from + add-general + +2005-05-18 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): add q-minxampl + from add-tutorial + (section{Documentation and Help}): ref to q-minxampl from q-askquestion + (section{You're still stuck?}): ref to q-minxampl from q-latexbug + +2005-05-17 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macro tools}): add q-plninltx (from + add-general), and split this of from the more simple stuff (now + subsection "latex macro techniques"); other ones in here are + q-atsigns, q-protect, q-edef, q-ltxcmds and q-ltxabbrv + + * faq.sty: remove spurious guff at start of ctanrefs env (was solemnly + forcing horizontal mode, thus confusing \addvspace at start of list) + + * add-general.tex (subsection{Creating citations}): add q-formbiblabel + +2005-04-29 Robin Fairbairns + + * dirctan.tex: add splitbib + + * faqbody.tex (section{References from articles}): mention splitbib in + q-multbib + +2005-04-28 Robin Fairbairns + + * dirctan.tex: add placeins as a directory + + * filectan.tex: change beginlatex to its latest incarnation + remove placeins + +2005-04-26 Robin Fairbairns + + * faq.sty: make robust a few commands that get to appear in tocs + +2005-04-22 Robin Fairbairns + + * texfaq2file: put correct cross question links if -w + + * texfaq2html-gamma: miscellaneous tidies from debugging session + +2005-04-19 Robin Fairbairns + + * filectan.tex: add clsguide + + * dirctan.tex: add makedtx + + * faqbody.tex (section{Bits and pieces of TeX}): mention makedtx in + q-dtx; list clsguide.pdf in links + +2005-04-17 Robin Fairbairns + + * faqbody.tex (subsection{Adobe Type1 ("PS") fonts}): add mathdesign to + the list in q-psfchoice + +2005-04-16 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): correct + \csx{listfiles} to \Package{snapshot} (!) as data collection mech for + bundledoc, in q-filesused + +2005-04-12 Robin Fairbairns + + * faqbody.tex (subsection{Common misunderstandings}): minor editorial + to q-xspace + +2005-04-11 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): remove some text that's + crept in unawares to q-tmupfl + +2005-04-07 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): new q-errparnum + + * faqbody.tex (subsection{"Generic" macros and techniques}): a bit of + desultory macro-usage editing + + * add-general.tex (subsection{LaTeX macro programming}): new q-ltxhash + +2005-03-27 Robin Fairbairns + + * add-tutorial.tex (subsection{Documentation and help}): (changed name + for the subsection) new answer q-minxampl + + * Makefile (PATCH): add add-tutorial (can't we automate this?) + +2005-03-26 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): new q-errmissitem from + add-general + (section{Documentation and Help}): editorials on q-askquestion + + * add-general.tex (subsection{LaTeX macro programming}): minor + editorial to q-plninltx + +2005-03-25 Robin Fairbairns + + * dirctan.tex: correct path to obsolete/support/undump; point + umlaute at the latex package (rather than support/); remove umlaut + +2005-03-24 Robin Fairbairns + + * add-general.tex (subsection{Why shouldn't I?}): new q-newfont + (subsection{LaTeX macro programming}): use \font rather than \newfont + in examples in q-plninltx + +2005-03-23 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro programming}): lots more + fiddling with q-plninltx, including extending the font stuff + +2005-03-22 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro programming}): add example of + font encoding confusion arising from \newfont, in q-plninltx + (subsection{LaTeX macro programming}): have narrow/wideversion of one + example in q-cmdstar + +2005-03-21 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): mention javier's + checkend package in q-endingroup + +2005-03-01 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): editorial on + q-errmissitem, plus mention of \mbox, \makebox, \framebox + +2005-02-28 Robin Fairbairns + + * add-general.tex (subsection{Mathematics}): new q-brkinline + + * sanitize-beta.pl (sanitize_line): convert \< (never used) to + \textless, \> (ditto) to \textgreater ... so now i can use the beasts + + * add-general.tex (subsection{The Joy of TeX errors}): mention \section + as another case of misbehaviour in q-errmissitem + +2005-02-27 Robin Fairbairns + + * faq.sty: rewrite \href (non-hyper version) so as to get quoting + actually right, and not to lose trailing spaces... + + * faqbody.tex (subsection{Typesetting specialities}): mention c2latex + in q-codelist (previously, the program was in ctanrefs only); also add + an actual recommendation for listings, but suggest the others may be + worth considering; add tgrind, sitting with lgrind + (section{Graphics}): rewrite item about mfpic, and add one about pgf, + in q-drawing + +2005-02-25 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): new + q-errmissitem + +2005-02-23 Robin Fairbairns + + * add-tutorial.tex: add a subsection heading (who cares there are 10?) + + * faqbody.tex (subsection{Footnotes}): mention threeparttable in + q-ftncapt (suggestion by don arseneau) + +2005-02-17 Robin Fairbairns + + * faqbody.tex (section{Current TeX-related projects}): reword etex + description in q-nts + + * add-general.tex (subsection{LaTeX macro programming}): new q-cmdstar + + * sanitize-beta.pl (sanitize_line): add \elatex and \miktex translation + + * faq.sty: add \elatex and \miktex commands + + * faqbody.tex (section{The joy of TeX errors}): elatex as a progname-> + \elatex{} in q-endingroup + +2005-02-17 Robin Fairbairns + + * faqbody.tex (throughout): MiKTeX!!! + +2005-02-15 Robin Fairbairns + + * faqbody.tex (section{DVI Drivers and Previewers}): xdvi and xdvik are + no longer separate + + * dirctan.tex: delete xet,xdvik,hp2xx311; correct addindex + + * filectan.tex: correct pdftex, latexcount + + * faqbody.tex: v3.13b.1, today + + * filectan.tex: add vf-howto + + * faqbody.tex (section{Bits and pieces of TeX}): mention virtual fonts + howto in q-virtualfonts + +2005-02-09 Robin Fairbairns + + * faq.sty: minor twiddling with default font loading; + + * faqbody.tex: v3.13b, today + + * texfaq2file: generate labels that go to the modified file names + rather than to the raw label name, in .aux scan + +2005-02-04 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macros}): correct enumii->enumi in one + of the "recipes" in q-labelformat + +2005-02-03 Robin Fairbairns + + * faqbody.tex (section{Current TeX-related projects}): \qref* for etex + and aleph in q-omega mention of aleph + (subsection{Typesetting specialities}): remove rogue line break in + q-upquote + + * faqfont.cfg.ugm: new: for typesetting with urw garamond + + * faq.sty: require lmodern regardless (for sans fonts) + +2005-01-21 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): correct details for + ctan-ann, and mention mail-archive.com in q-maillists + (section{TeX Systems}): mention tetex mailing list (not -announce or + -pretest...), plus RSS feed, in q-texsystems + +2005-01-16 Robin Fairbairns + + * faqbody.tex (section{Support Packages for TeX}): make clear that + 4spell comes from a package that's now defunct + +2005-01-15 Robin Fairbairns + + * dirctan.tex: add pseudocode + + * faqbody.tex (subsection{Typesetting specialities}): mention + pseudocode package in q-algorithms + +2005-01-11 Robin Fairbairns + + * filectan.tex: single file ispell (is this supportable?) + + * dirctan.tex: remove ispell + +2005-01-10 Robin Fairbairns + + * dirctan.tex: add aspell + + * faqbody.tex (section{Support Packages for TeX}): tidy up reference to + aspell in q-spell, given that it's now on ctan + +2005-01-08 Robin Fairbairns + + * dirctan.tex: add svn, svninfo + + * faqbody.tex (subsection{Document management}): add svn and svninfo to + q-rcs + +2005-01-07 Robin Fairbairns + + * faqbody.tex: v3.13a.1, today + (section{TeX Systems}): update sciword bumf from mail from mabb + (section{Documentation and Help}): typo in q-mfptutorials + (subsection{Particular font families}): typos in both q-uselmfonts and + q-concrete + (section{TeX Systems}): add a link to the y&y mailing list page at the + end of q-commercial + +2005-01-04 Robin Fairbairns + + * faqbody.tex: v3.13a + (subsection{Document management}): correction+more details of extract + package in q-conditional + +2005-01-04 Robin Fairbairns + + * faqbody.tex: v3.13, today (release) + +2005-01-02 Robin Fairbairns + + * faqbody.tex (section{Symbols, etc.}): add bbm and doublestroke, and + do various editorial changes (including pouring more derision on the + "lazy person's" macros) + + * dirctan.tex: add bbm-macros, doublestroke + +2005-01-01 Robin Fairbairns + + * faqbody.tex (subsection{Particular font families}): mention that lm + fonts are already in tetex 3.0, and may (at least) be added to miktex + automatically, also bring updmap stuff up to date for miktex + (section{Installing (La)TeX files}): same change in q-instt1font + (section{Installing (La)TeX files}): editorials in q-miktexinst + (section{Installing (La)TeX files}): mention non-standard things like + .cfg and .drv files in q-wherefiles + + * sanitize.pl (sanitize_line): bring up-to-date with -beta + + * sanitize-beta.pl (sanitize_line): add \href* pattern + + * faq.sty: add * and quote detection to \href (non-hyper version; * + simply ignored \ifpdf) + + * faqbody.tex (section{Documentation and Help}): make reference to the + rutgers typography guidelines in q-tutorials + +2004-12-30 Robin Fairbairns + + * dirctan.tex: add extract + + * faqbody.tex: v3.13rc2, today + (subsection{Document management}): mention extract.sty in q-conditional + +2004-12-27 Robin Fairbairns + + * add-hammond.tex (subsection{William Hammond's contributions}): more + work on q-sgml2tex* ... i'm bogging down here :-( + + * faqbody.tex (subsection{LaTeX macros}): correct spelling of optparams + in q-twooptarg + +2004-12-26 Robin Fairbairns + + * faqbody.tex (section{Current TeX-related projects}): replacement for + q-mathml from add-hammond (where it was q-mathml*) + (section{Current TeX-related projects}): move all the \URL entries to + body of q-textrace, and add link to fontforge + (subsection{Adobe Type 1 fonts}): remove mathtime, mathtime plus and + lucida; add mathtime pro + (section{TeX Systems}): correct details of personal tex inc from web + +2004-12-25 Robin Fairbairns + + * add-hammond.tex (subsection{William Hammond's contributions}): + mention inkscape in q-mathml*, as a free svg editor + (subsection{William Hammond's contributions}): general other editorials + throughout q-mathml* + +2004-12-24 Robin Fairbairns + + * dirctan.tex: add wallpaper + + * faqbody.tex (subsection{Page layout}): add wallpaper package to + q-watermark + +2004-12-22 Robin Fairbairns + + * faqbody.tex: v3.13rc1, today + + * dirctan.tex: add metatype1 + + * faqbody.tex (section{Current TeX-related projects}): provide + sourceforge link to autotrace and potrace, and talk up mftrace in + q-textrace; also add description of metatype1 and change title of + question to emphasise that it covers a bunch of projects; remove + references to actual fonts in the ctanrefs list + (section{Hypertext and PDF}): make reference to metatype1 via + q-textrace, in q-type1t1 + +2004-12-20 Robin Fairbairns + + * add-tutorial.tex: new file: replacements for q-tutorials + +2004-12-19 Robin Fairbairns + * add-hammond.tex (subsection{William Hammond's contributions}): yet + more editorials on q-sgml2tex* + +2004-12-17 Robin Fairbairns + + * add-hammond.tex (subsection{William Hammond's contributions}): edit- + orial work in both q-readml* and q-sgml2tex* + + * faqbody.tex (subsection{Document management}): add xcomment with + example of use to q-conditional + +2004-12-16 Robin Fairbairns + + * 3.12a/faqbody.tex: v3.12a-p4, today + (subsection{Document management}): correct \includeversion -> + \includecomment in q-conditional (and install) + + * faqbody.tex: v3.12a.9, today + (subsection{Document management}): correct \includeversion -> + \includecomment in q-conditional, and add an example + +2004-12-12 Robin Fairbairns + + * faqbody.tex (section{Why does it do that?}): couple of typos in + q-marginparside, spotted by vladimir volovich + +2004-12-07 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): typo in q-papersize... + + * check-ctan-lists: distinguish linked files, + + * filectan.tex: correct path for protext + + * dirctan.tex: correct basix (yoyoy?) + +2004-12-02 Robin Fairbairns + + * add-hammond.tex (subsection{William Hammond's contributions}): editor + work on q-readml* + +2004-11-30 Robin Fairbairns + + * add-hammond.tex (subsection{William Hammond's contributions}): re- + write text around sgmls and stil in q-sgml2tex* + + * dirctan.tex: add euler-latex + + * faqbody.tex (subsection{Particular font families}): add mention of + euler package and eulervm to q-concrete + +2004-11-29 Robin Fairbairns + + * filectan.tex: add protext + + * faqbody.tex (section{TeX Systems}): mention protext + +2004-11-26 Robin Fairbairns + + * faqbody.tex (section{Introduction}): mention william hammond + (section{DVI Drivers and Previewers}): slight mod suggested by author + of dvipng to q-dvi-bmp + + * add-hammond.tex (subsection{William Hammond's contributions}): edit- + orial on q-mathml*, q-sgml2tex* + +2004-11-25 Robin Fairbairns + + * Makefile (newfaq-patch.dvi,.pdf): run find-add-files + (clean): remove additions.tex, too + + * patchdates.tex: new; the patch levels that were mastered in + additions.tex; now pl4.12g, today + + * find-add-files: perl jiffy to find what add-* files exist just now, + and to create a suitable additions.tex + + * add-general.tex: remove hammond answers + + * add-hammond.tex: new, hammond revised answers + +2004-11-23 Robin Fairbairns + + * add-general.tex (subsection{William Hammond's contributions}): add + q-mathml*, q-sgml2tex* and q-readml* + + * dirctan.tex: add gellmu and jadetex + +2004-11-23 Robin Fairbairns + + * faqbody.tex: v3.12a.8, today + (subsection{Typesetting specialities}): add c2latex to q-codelist + +2004-11-22 Robin Fairbairns + + * faq.sty: provide a definition for \textoslash + + * sanitize-beta.pl (sanitize_line): \textoslash for \o (but why does + perl substitution of \o not work?) + + * faqbody.tex (section{Introduction}): \textoslash for \o + +2004-11-20 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add \o{} + + * faqbody.tex (section{Current TeX-related projects}): ant now has + insertions, so suggest it's worth investigating as a system. + (section{Introduction}): add morten h + +2004-11-19 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): new q-ouparmd from + add-general + + * add-general.tex (subsection{The Joy of TeX errors}): editorials on + q-ouparmd + + * faqbody.tex (subsection{Page layout}): q-changemargin replaced by the + body of q-changemargin* from add-general + + * add-general.tex (subsection{Page layout}): q-changemargin* editorials + + * dirctan.tex: add algorithmicx + + * faqbody.tex (subsection{Typesetting specialities}): add algorithmicx + to q-algorithms + +2004-11-12 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): mention parcolumns in + q-parallel, add examples + +2004-11-11 Robin Fairbairns + + * faqbody.tex (subsection{Making things stay where you want them}): use + of infinite value for widow and club penalties in q-widow + +2004-11-10 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): add reference to jim's + one-person system web page, under tutorials (this question needs re- + working, methinks...) + +2004-11-09 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): new + q-subverttoks from add-general + (subsection{Creating citations}): q-i18nbib from add-general + (subsection{Tables, figures and diagrams}): q-rulethk from add-general + + * dirctan.tex: add bib2xhtml + + * faqbody.tex (section{Hypertext and PDF}): correction for words about + plainpages=false, from dan luecking + (subsection{Manipulating whole bibliographies}): add bib2xhtml to + q-htmlbib + + * texfaq2file: missing

before subsections in normal mode + +2004-11-08 Robin Fairbairns + + * faqbody.tex (section{Current TeX-related projects}): ec-type1->tt2001 + in q-textrace + +2004-10-27 Robin Fairbairns + + * filectan.tex: correct context-tmf to current location + + * faqbody.tex (section{Graphics}): correct pdftricks link in + q-pdftexgraphics + +04-10-26 Robin Fairbairns + + * faqbody.tex (subsection{Odds and ends}): mention bold csc fonts in + knuth-style t1-encoded fonts to q-bold-extras + (section{Hypertext and PDF}): add tt2001 to q-type1t1 + + * dirctan.tex: remove fonts/ps-type1/ec, add fonts/ps-type1/tt2001 + + * faqbody.tex: v3.12a.7, today + +2004-10-22 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): provide morten's witty + example of the problems with \iffalse in q-conditional + +2004-10-17 Robin Fairbairns + + * faqbody.tex (subsection{Hyphenation}): rejig q-newlang to mention the + use of texconfig to do the format rebuild in tetex + +2004-10-10 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): editorial on + q-extrabrace + + * sanitize.pl (sanitize_line): as -beta + + * sanitize-beta.pl (sanitize_line): add \cmdinvoke*{cmd}[opt]{mand} and + \cmdinvoke*{cmd}[opt]{mand1}{mand2} + + * faqbody.tex (subsection{Mathematics}): add reference to + \shortintertext in q-mathstext, and show how to do short intertexts + using flalign + + * dirctan.tex: add mh + + * add-general.tex (subsection{Creating citations}): add norbib to + q-i18nbib + +2004-10-08 Robin Fairbairns + + * dirctan.tex: add dk-bib + + * add-general.tex (subsection{Creating citations}): add dk-bib to + q-i18nbib, and reorganise the list + +2004-10-07 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): excise european modern from + q-type1T1 + +2004-10-06 Robin Fairbairns + + * faqbody.tex (throughout): purge references to y&y + +2004-10-05 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of TeX}): editorial, + particularly on q-virtualfonts + +2004-10-03 Robin Fairbairns + + * faqbody.tex (section{Graphics}): mention pstricks overlaying stuff in + q-labelfig + + * add-general.tex (subsection{Why does it do that?}): new q-breaklinks + +2004-09-27 Robin Fairbairns + + * faqbody.tex (subsection{Adobe Type 1 ("PS") fonts}): mention CH math + +2004-09-26 Robin Fairbairns + + * faqbody.tex: 3.12a.6, today + (section{Current TeX-related projects}): minimum change to reflect + what's happened since john's omega bombshell, plus ref to aleph + (section{TeX Systems}): mention the miktex cd with miktex descr + (section{Acquiring the Software}): make q-cd talk about nothing but the + tex live distribution + (section{Current TeX-related projects}): describe etex as today's + thing, in the article on nts. + +2004-09-22 Robin Fairbairns + + * faqbody.tex (section{Symbols, etc.}): mention fourier in q-numbersets + +2004-09-19 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): q-atvert problem + happens in maths mode too + (section{Adjusting the typesetting}): add ctanref for fancyhdr in + q-reallyblank, supply missing text about memoir + +2004-09-18 Robin Fairbairns + + * additions.tex: pl4.12f, today + + * add-general.tex (subsection{Page layout}): q-changemargin* (revision + from donald) + +2004-09-17 Robin Fairbairns + + * faqbody.tex: v3.12a.5, today + (subsection{Adobe Type 1 ("PS") fonts}): merry upheaval of q-psfchoice + (subsection{LaTeX macros}): mention optparams in q-twooptarg + +2004-09-16 Robin Fairbairns + + * faqbody.tex (subsection{Alternative document classes}): ha-prosper is + a package, not a class + +2004-09-14 Robin Fairbairns + + * faqbody.tex (section{The Background}): mention eplain online docs and + mailing list + +2004-09-14 Robin Fairbairns + + * dirctan.tex: add fourier and utopia + corrected swebib and elsevier entries + added bigfoot (for suffix.sty) + + * faqbody.tex: v3.12a.4, today + (subsection{Typesetting specialities}): add concrete examples of using + listings package + (subsection{Adobe Type1 ("PS") fonts}): add blurb about fourier + +2004-09-13 Robin Fairbairns + + * faqbody.tex (throughout): standardise on \ProgName{Perl} (note cap) + and \ProgName{Python} (all of one change) + + * dirctan.tex: add latexdiff, remove language, and resort in that area + + * faqbody.tex (subsection{Document management}): mention latexdiff in + q-changebar + +2004-09-12 Robin Fairbairns + + * faqbody.tex (subsection{Creating citations}): provide criterion for + choosing jurabib instead of footbib in q-bibinline + +2004-09-11 Robin Fairbairns + + * faqbody.tex (subsection{Labels and references}): tidy up description + of byname in q-nameref + +2004-09-09 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): bring in parallel with sanitize.pl + + * faqbody.tex (subsection{Odds and ends}): \bsbs (twice) in q-varwidth + (subsection{Common errors}): \bsbs -> \texttt{\bsbs } in q-noline + (section{The joy of TeX errors}): \bsbs in q-altabcr + (subsection{Tables, figures and diagrams}): \bsbs in q-tabcellalign + + * sanitize.pl (sanitize_line): make \bsbs gobble a single following + space + +2004-09-07 Robin Fairbairns + + * add-general.tex (subsection{Creating citations}): putative completion + of q-i18nbib + + * faqbody.tex (section{The Background}): mention the wiki in q-context + +2004-09-06 Robin Fairbairns + + * add-general.tex (subsection{Creating citations}): bit more on + q-i18nbib -- probably more language contributions to be found, but + there's enough here for the time being + + * dirctan.tex: add spain and bib-fr + + * faqbody.tex (subsection{Creating bibliographies}): rewrite the + description of the custom-bib mechanism in q-custbib + +2004-09-04 Robin Fairbairns + + * add-general.tex (subsection{Creating citations}): start on q-i18nbib + + * filectan.tex: add finplain.bst + + * dirctan.tex: add bibgerm, swebib + +2004-08-30 Robin Fairbairns + + * faqbody.tex (section{The Background}): new (tug) list address for + q-mp, and add reference to tug mp page + + * add-general.tex (subsection{The Joy of TeX errors}): new q-ouparmd + +2004-08-29 Robin Fairbairns + + * dirctan.tex: add ebib + multibbl, texpower now both in (regular) latex/contrib + + * faqbody.tex (subsection{Creating bibliographies}): add ref to ebib in + q-buildbib + +2004-08-28 Robin Fairbairns + + * add-general.tex (subsection{Tables, figures and diagrams}): new + q-rulethk + + * faqbody.tex (subsection{Tables, figures and diagrams}): editorial, + q-destable, and add reference to memoir implementing booktabs commands + +2004-08-25 Robin Fairbairns + + * faqbody.tex (subsection{Mathematics}): add karl berry's suggestion to + q-mathsize + (subsection{Tables of contents and indexes}): editorial on q-tocbibind + +2004-08-24 Robin Fairbairns + + * faqbody.tex (subsection{Floating tables, figures, etc.}): correct + startling error in q-vertposfp (courtesy of donald -- i can't work out + how i came to write the original rubbish in the first place) + (section{TeX Systems}): correct address for truetex + (subsection{Adobe Type 1 ("PS") fonts}): mention truetex using type 1 + fonts under xp + +2004-08-23 Robin Fairbairns + + * sanitize[-beta].pl (sanitize_line): provide \mailto{} + +2004-08-22 Robin Fairbairns + + * faqbody.tex (subsection{Adobe Type 1 ("PS") fonts}): editorial on + q-pspreview + (subsection{Adobe Type 1 ("PS") fonts}): editorial on q-psfchoice (more + remains to be done) + (subsection{Adobe Type 1 ("PS") fonts}): editorial on q-concrete + (subsection{Adobe Type 1 ("PS") fonts}): editorial on q-uselmodern + +2004-08-21 Robin Fairbairns + + * faqbody.tex (subsection{Metafont fonts}): editorial on q-getbitmap + (subsection{Adobe Type 1 ("PS") fonts}): editorial on q-usepsfont + +2004-08-20 Robin Fairbairns + + * faqbody.tex: v3.12a.3, today + (section{TeX Systems}): forward ref to q-buildbib from q-editors + (section{Installing (La)TeX files}): refer to "specific font families" + in q-instfont + (throughout): \FontName|...| -> \FontName{...} + +2004-08-20 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): add mention of + JabRef + (section{The Background}): editorial on q-latexe + (section{The Background}): editorial on q-context + (section{The Background}): editorial on q-amspkg + (section{Acquiring the Software}): editorial (big time) on q-uploads + +2004-08-19 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): carry forward changes from non-beta + + * sanitize.pl (sanitize_line): correct \Newsgroup{} + +2004-08-18 Robin Fairbairns + + * sanitize.pl (sanitize_line): make all the variants of \cmdinvoke use + the \\ trick we already have for \csx, to deal with + \@ problem + +2004-08-02 Robin Fairbairns + + * filectan.tex: add ziffer + + * faqbody.tex (subsection{Typesetting specialities}): mend typo in q- + dec_comma, and add reference to ziffer + +2004-08-01 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): first stab at updating + package doc question + + * add-general.tex (subsection{"Generic" macros and techniques}): new + answer on \[ex]def -- going to need a lot more thought + + * faqbody.tex (section{Documentation and Help}): add link to edith + hodgen's magnum opus + +2004-07-31 Robin Fairbairns + + * faqbody.tex (subsection{Mathematics}): superseded theorem.sty with + amsthm.sty in the quaintly named "roman theorems" answer + +2004-07-30 Robin Fairbairns + + * faqbody.tex: 3.12a.2, today + + * filectan.tex: add voss-mathmode (again?!) + +2004-07-27 Robin Fairbairns + + * dirctan.tex: add texniccenter + + * faqbody.tex (section{TeX Systems}): add texniccenter to q-editors + +2004-07-24 Robin Fairbairns + + * filectan.tex: add voss-mathmode + + * faqbody.tex (throughout): change \Newsgroup|...| -> {...} + (section{Documentation and Help}): refer to ctan version of herbert + voss' mathmode thing + + * sanitize.pl,sanitize-beta.pl (sanitize_line): add closing in + \marg (!), and allow \Newsgroup{...} + +2004-07-23 Robin Fairbairns + + * faqbody.tex: 3.12a.1, today + + * 3.12a/faqbody.tex: pl2, today + (section{The Background}): 3.141592 + (various): remaining ctanrefs to enumitem + + * faqbody.tex (subsection{Lists}): document \begin{enumerate}[resume] + from enumitem (and tidy up remaining ctanrefs to enumitem) + +2004-07-22 Robin Fairbairns + + * Makefile.CTAN: remove all mention of -cm targets + +2004-07-22 Robin Fairbairns + + * Makefile: remove -cm targets from "all" + + * faq.sty: use T1 encoding, times & luximono fonts, by default + +2004-07-21 Robin Fairbairns + + * 3.12a/faqbody.tex: change version to -p1, today's date (for web + release with enumitem directory correct) + +2004-07-20 Robin Fairbairns + + * faqbody.tex (section{The Background}): correct tex version no, and + add link to copy of knuth's paper in maps archive + +2004-07-19 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): add andy roberts' + stuff + +2004-07-19 Robin Fairbairns + + * dirctan.tex: move fonts/ps-type1/lm up one + + * faqbody.tex (subsection{Lists}): change location of enumitem + + * dirctan.tex: add enumitem + +2004-07-15 Robin Fairbairns + + * faqbody.tex: v3.12a + (subsection{"Generic" macros and techniques}): editorial in q-patch + +*** RELEASE 3.12 *** + +2004-07-15 Robin Fairbairns + + * faqbody.tex (subsection{Mathematics}): sigh -- narrowversion stuff in + q-mathstext + + * sanitize.pl (sanitize_line): transfer change to table defs + + * faqbody.tex: v3.12, today + + * faq.sty: suppress \pdfavoidoverfull if the cs doesn't exist + add pdfstring disable command for \marg + +2004-07-14 Robin Fairbairns + + * faqbody.tex (subsection{Alternative document classes}): q-slidecls + from add-general + (subsection{LaTeX macros}): suppress the stupid coding for this release + since adding the new answer has obviated the need pro tem + +2004-07-14 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macros}): stupid coding to prevent + spacing silliness around q-ltxabbrv; this will need reviewing at every + release unless i can think of some better way around the problem + + * add-general.tex (subsection{Alternative document classes}): minor + tweak to slides question + + * sanitize-beta.pl (sanitize_line): add cellpadding to + + * faqbody.tex (section{Documentation and Help}): change address of + teencontrex (sent reply to prompt check whether the latest stuff + really is on ctan...) + (subsection{Mathematics}): point maths sizes at q-ltxabbrv + (subsection{LaTeX macros}): q-ltxabbrv from add-general + +2004-07-13 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): add pybliographer + to the list of "managers not on ctan" + 3.12RC2, today + +2004-07-12 Robin Fairbairns + + * dirctan.tex: add ppr-prv, ha-prosper + + * add-general.tex (subsection{Alternative document classes}): write up + prosper, with ppr-prv and ha-prosper + + * dirctan.tex: add pgf,xcolor + + * add-general.tex (subsection{Alternative document classes}): write up + beamer, add links for pgf and xcolor + +2004-07-11 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): new q-buildbib + from add-general + (subsection{Creating citations}): new q-usebibtex from add-general + (subsection{Common errors}): new q-zerochap from add-general + + * dirctan.tex: add ps4pdf + + * faqbody.tex (section{Graphics}): mention ps4pdf and pdftricks, and + reference voss' page for various support options + +2004-07-10 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): add texmaker after kile in + q-editors + (subsection{Typesetting specialities}): elaborate situation of texindex + in q-makeindex, and add reference to ltxindex + + * add-general.tex (subsection{Creating bibliographies}): write up the + bibtex db management systems + + * dirctan.tex: add xbibfile and btOOL + +2004-07-05 Robin Fairbairns + + * faqbody.tex: today's date + (subsection{Common errors} and elsewhere): adjust spacing of + ellipsis in question title + + * add-general.tex (subsection{Why does it do that?}): new q-zerochap + + * faq.sty: debug \Qref*{}{}'' + +2004-07-05 Robin Fairbairns + + * faqfont.cfg.mbvj: add definition of \acro + +2004-07-04 Robin Fairbairns + + * faq.sty: adjust "null" \acro command so as not to gobble following + space in the toc! + + * add-general.tex (subsection{Alternative document classes}): work on + the slides question + +2004-07-03 Robin Fairbairns + + * faqbody.tex (subsection{Tables of contents and indexes}): correct + section number of companion reference + (section{Installing (La)TeX files}): moved up to before fonts + (subsection{Document structure}): add section number for companion + reference + +2004-07-02 Robin Fairbairns + + * additions.tex: pl4.12e, today + + * faqbody.tex: today's date + (subsection{LaTeX macros}): two more editorials on q-ltxcmds + +2004-07-01 Robin Fairbairns + + * dirctan.tex: add chapterfolder + + * faqbody.tex: today's date + (subsection{Common misunderstandings}): add another example of trouble + to q-baselinepar + (subsection{Document management}): add chapterfolder to q-docotherdir + +2004-06-30 Robin Fairbairns + + * texfaq2html, texfaq2html-beta, texfaq2file: align all three with + sanitize changes + + * sanitize.pl: up to date with sanitize-beta + + * faqbody.tex (throughout): \path|...| -> \path{...} + + * sanitize-beta.pl (sanitize_line): add \path{...} + + * faqfont.cfg.mbvj: boldmath not available + + * faqfont.cfg.cmfonts: boldmath is available + + * faq.sty: define \ifboldmathavail and set false in default font setup + + * faqbody.tex: today's date + (subsection{Tables of contents and indexes}): editorial on q-secnumdep + (subsection{LaTeX macros}): debugging and editorial on q-ltxcmds + (throughout): tidy \boldmath for question (etc) titles + +2004-06-28 Robin Fairbairns + + * faqbody.tex (subsection{Typesetting specialities}): correct \href for + "highlight" home site + +2004-06-24 Robin Fairbairns + + * add-general.tex (subsection{Why does it do that?}): new q-zerochap + +2004-06-22 Robin Fairbairns + + * faqbody.tex (section{Current TeX-related projects}): q-extex and + q-xetex from add-general + (subsection{Hyphenation}): q-hyphexcept from add-general + (subsection{Common misunderstandings}): q-tocloftwrong from add-general + (subsection{Page layout}): q-outszwrng from add-general + + * add-general.tex (subsection{LaTeX macro programming}): change \hline + in q-ltxabbrv (on the off-chance we can introduce this answer to the + running version) + (subsection{Current \TeX-related projects}): editorial on xetex + + * sanitize-beta.pl (sanitize_line): fiddle trying to make \hline equiv + commands show up in tables + + * faq.sty: define \acro conditionally in body of file; define it as + null (apart from \@) in default font setup, but not in cmfonts version + + * faqbody.tex (section{TeX Systems}): links for gwtex and texshop, + reword availability statements for oztex and cmactex (looks like the + only "generally" pre-macosX version is textures, now :-( ) + +2004-06-21 Robin Fairbairns + + * faqbody.tex: 3.12RC1, today + (subsection{Typesetting specialities}): rewrite highlight stuff to be + more upbeat about it (and to mention its valuable properties) + +2004-06-19 Robin Fairbairns + + * add-general.tex (subsection{Macro programming}): new q-subverttoks + +2004-06-18 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macros}): missing \csx in q-fixnam + +2004-06-17 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): editorial + on q-ifpdf + +2004-06-16 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): use the + \relax trick in q-empty + + * sanitize-beta.pl (sanitize_line): move the zapping of \relax to after + that of {}, so that \cmdinvoke{cmd}{\relax} describes empty arg + +2004-06-16 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro programming}): first stab at + "abbreviations" answer (q-ltxabbrv) + +2004-06-15 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): ftpmail only at dante, + only one answer about searching, in q-archives + (section{Acquiring the Software}): mend ref in q-nonfree + (section{Acquiring the Software}): replace refs in q-uploads + (section{Installing (La)TeX files}): ... and in q-instpackages + (subsection{Alternative document classes}): and in q-journalpaper + (subsection{Common errors}): jf contribution to q-verbwithin + +2004-06-15 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): replace q-findpkg, + q-siteindex and q-websearch by q-findfiles from add-general + (subsection{Common errors}): rewrite my\string_name in q-verbdef + +2004-06-14 Robin Fairbairns + + * faqbody.tex: version 3.11h, tomorrow + + * add-general.tex (subsection{Acquiring the software}): minor edits of + q-findfiles + +2004-06-14 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): q-ifpdf + from add-general + (section{The joy of TeX errors}): new q-divzero, q-missbegdoc, + q-normalszmiss and q-manymathalph from add-general + (subsection{Creating citations}): new q-compactbib and q-bibtocorder + from add-general + +2004-06-13 Robin Fairbairns + + * add-general.tex (subsection{Current TeX-related projects}): new + q-xetex + + * faqbody.tex (throughout): \mailto|...| -> \mailto{...} + + * filectan.tex: add notoccite, remove tocunscite + + * add-general.tex (subsection{Macro programming}): typo in q-ifpdf + + * faqbody.tex (several places): deal with companion issues or mark + further work needed with ******** + + * dirctan.tex: add tlc2 + + * faqbody.tex (section{Documentation and Help}): add reference to tlc2 + examples + +2004-06-12 Robin Fairbairns + + * faq.sty: make \mailto accept either sort of arg, \ifpdf + +2004-06-11 Robin Fairbairns + + * faqbody.tex (subsection{Mathematics}): tweak q-mathsize + +2004-06-10 Robin Fairbairns + + * filectan.tex: add fontmath and fontdef (in some order) + + * faqbody.tex (subsection{Mathematics}): clarification (one hopes) of + q-mathsize + +2004-06-08 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): warn about non-error in + q-verbwithin + +2004-06-07 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): emphasise + that \ifnoerror is a fantasy... + + * add-general.tex (subsection{Macro programming}): new q-ifpdf + +2004-06-05 Robin Fairbairns + + * faqbody.tex (subsection{Alternative document classes}): tidy q-cv + +2004-06-04 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): mention amsmath in the \\ q + + * CHANGES-3.12: mention europecv + + * dirctan.tex: add europecv + + * faqbody.tex (subsection{Alternative document classes}): add europecv + to q-cv + +2004-06-02 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros and techniques}): comments + on "is it an integer" from donald + +2004-06-01 Robin Fairbairns + + * add-general.tex (subsection{Common misunderstandings}): new + q-tocloftwrong dealing with numbers in toc and so on, basically just a + pointer to q-tocloft + + * faqbody.tex (section{Documentation and Help}): refer aspirant authors + to tex books and to q-dtx + +2004-05-31 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): expand q-extrabrace a + bit, adding stuff about \caption and non-moving opt args + +2004-05-27 Robin Fairbairns + + * dirctan.tex: remove french-le and french-pro (not actually used, and + french-le has disappeared, at least temporarily) + + * filectan.tex: correct litprog-faq + comment-out compan-ctan + + * faqbody.tex (section{Documentation and Help}): correct pointer to + voss's latex stuff (twice) + +2004-05-26 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): add keywords for + q-extrabrace (also touch up verbatim quoting) + (subsection{LaTeX macros}): mention definition of fragile commands in + lamport, and that some robust commands (e.g., \cite) get redefined + fragile + (section{TeX Systems}): mention texshop as an editor/shell for macos x + +2004-05-25 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): correction to + q-bibprefixsort from james szinger + +2004-05-24 Robin Fairbairns + + * add-general.tex (subsection{Page layout}): first draft of "output + size wrong" + +2004-05-24 Robin Fairbairns + + * faqbody.tex (section{Graphics}): provide documentation, etc., links + for pstricks + +2004-05-23 Robin Fairbairns + + * faqbody.tex (section{Introduction}): correct maarten sneep's name + (subsection{Common errors}): correct the example in q-alreadydef + + * dirctan.tex: e4t moved to nonfree/ (though we don't use it...) + + * CHANGES-3.12: document 4alltex and miktex changes to faqbody + + * faqbody.tex (section{TeX Systems}): slightly more expansive about + kile, and a link to sourceforge in q-editors; also remove mention of + eddi4tex (defunct?) and the 4alltex cdrom + (subsection{Adobe Type 1 (postscript) fonts}): texlive 7 is no longer + the type example of a system that does dvips 5.90 (or better) + (section{Acquiring the Software}): mention the miktex cdrom (a good + deal, imo) + +2004-05-21 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): add keywords to + q-newlineargs + +2004-05-20 Robin Fairbairns + + * texfaq2html (oh_dear): put an (obfuscated) mail address in the + message (does it need obfuscation?) + +2004-05-18 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): deal with the table things + + * faq.sty: macros for use in tables + + * faqbody.tex (subsection{LaTeX macros}): tabular for *name macros + +2004-05-16 Robin Fairbairns + + * add-general.tex (throughout): get rid \cs usage + + * faqbody.tex (section{The Background}): rewrite that nasty para in + q-texpronounce + (subsection{Creating bibliographies}): correct use of \csx for \& + +2004-05-11 Robin Fairbairns + + * faqbody.tex: v3.11f, today + (section{The Background}): another paragraph (shock!) to elucidate + the relationship to "technology" (i have a nasty feeling...) + +2004-05-11 Robin Fairbairns + + * faq.sty: redefine \csx to allow its argument to expand, remove \cs + + * faqbody.tex (section{Symbols, etc.}): use \symbol{95} for underscore + in several places + (subsection{"Generic" macros and techniques}): use \symbol{95} + + * texfaq2html-beta: remove symbol character table + + * sanitize-beta.pl: add symbol character table, with 95=>"_", remove + \cs + + * add-general.tex (subsection{Creating bibliographies}): note bibdesk + (in comment) + +2004-05-10 Robin Fairbairns + + * faqbody.tex (subsection{\LaTeX{} macros}): reinstate minor changes + done here over the w/e + +2004-05-10 Robin Fairbairns + + * faqbody.tex (subsection{Typesetting specialities}): redo text at + start of q-codelist -- wasn't translating properly to html + + * faq.sty: squeeze list indentations a fair bit + + * faqbody.tex (throughout): enumerate->itemize wherever reasonable, + plus associated tidying of markup + +2004-05-09 Robin Fairbairns + + * filectan.tex: add the FILES.* requirements + + * add-general.tex (subsection{Acquiring the software}): q-findfiles + more or less complete + +2004-05-07 Robin Fairbairns + + * add-general.tex (subsection{Acquiring the software}): first serious + chunk of a q-findfiles to replace the existing three answers + +2004-05-03 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): fidgeting with the + "find stuff" answers; these ought all to be one :-( + + * filectan.tex: move T1instguide one directory down in the tree (nb, + keeping companion.ctan entry, even though the file's not on archive, + on the basis that i've to rewrite the file for ed.2) + + * faqbody.tex (section{Acquiring the Software}): more hacking at + q-findpkg + +2004-05-02 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): removed the "more + dynamic is" rubbish from intro to lshort + (subsection{Mathematics}): tidying markup to avoid verbatim, use quote + env, in q-proof + (section{Acquiring the Software}): purge references to companion.ctan + +2004-04-29 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): allow narrow + version of \normalsize error message + +2004-04-28 Robin Fairbairns + + * add-general.tex (subsection{Graphics}): new q-repeatgrf + +2004-04-27 Robin Fairbairns + + * CHANGES-3.12: mention mimetex reference + + * faqbody.tex (section{Current TeX-related projects}): tidy up narrow + column stuff in q-mathml + +2004-04-26 Robin Fairbairns + + * dirctan.tex: add MimeTeX + + * faqbody.tex: v3.11e, today + (section{Current TeX-related projects}): mention techexplorer as + introduction to mimetex in q-mathml + + * commands-to-define: add \addvspace (simplified defn) + +2004-04-20 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): mention + \tabularnewline in q-tabcellalign + +2004-04-20 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): whinge about age of emtex and + djgpp, suggesting users who want up-to-date systems need to go to + win32 :-( + + * dirctan.tex: emtexTDS now obsolete + +2004-04-19 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): mend markup in + q-bibplain + (subsection{Spacing of characters and lines}): markup in q-flushboth + (subsection{Page layout}): shambles in q-landscape + + * sanitize.pl,sanitize-beta.pl (sanitize_line): move \qref and + \cmdinvoke down below def of all "font-change-only" commands (things + that could be in args) + +2004-04-15 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): redo tex2bib + references in q-makebib + +2004-04-14 Robin Fairbairns + + * filectan.tex: add tex2bib entries (one for doc too) + + * dirctan.tex: remove incorrect tex2bib entry + + * add-general.tex (subsection{Creating bibliographies}): added tex2bib + to q-buildbib + +2004-04-12 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): tidy markup of + q-siteindex + + * texfaq2file,texfaq2html-gamma,texfaq2html-beta,texfaq2html: add + symbol 94 for work on q-siteindex + +2004-04-10 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): q-manymathalph + complete (first pass) + +2004-04-09 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): a start to + q-manymathalph (interrupted by falling asleep...) + + * faqbody.tex: v3.11d, today + (section{Documentation and Help}): add reference to kindersley book in + q-typebooks + (section{Introduction}): added isaac khabaza to list + (section{Documentation and Help}): fourth edition of k&d, 2nd of tlc + (section{Documentation and Help}): sort out ~ in an \href line (twice) + +2004-04-06 Robin Fairbairns + + * faqbody.tex (subsection{Typesetting specialities}): deal with line- + broken \Qref command in q-seturl + (subsection{Typesetting specialities}): it's M-Tx not M_Tx in q-music + + * Makefile.CTAN: drop stupid_names.sty + + * sanitize.pl (sanitize_line): line up with changes to -beta + + * additions.tex: pl 4.12a, today + + * faqbody.tex: v3.11c, today + (subsection{The Joy of TeX errors}): q-altabcr from add-general + + * add-general.tex (subsection{The Joy of TeX errors}): new q-missbegdoc + (subsection{The Joy of TeX errors}): new q-normalszmiss + + * sanitize-beta.pl (sanitize_line): remove $...$ re, add \beta, \marg{} + + * faqbody.tex (throughout): replace $...$ with \ensuremath{...} + +2004-04-05 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): comment on relation to + grouping level errors in q-semanticnest + + * add-general.tex (subsection{Creating citations}): correct typo in + Q-compactbib + + * faq.sty: arrange that \Qref doesn't eat following space (by + converting \@ifnextchar to \afterassignment with "\let\@tempa= " + +2004-04-04 Robin Fairbairns + + * add-general.tex (subsection{Creating citations}): jiffy on compact + thebibliography lists + +2004-04-01 Robin Fairbairns + + * sanitize[-beta].pl (throughout): align the two files (2-way process) + + * faqbody.tex: v3.11b, today + (subsection{Floating tables, figures, etc.}): note bottom double float + restrictions and complications + +2004-03-30 Robin Fairbairns + + * texfaq2file: add -2 switch, and corresponding tidies; correct a + few things detected by perl -w + + * sanitize.pl (generate_CTAN_ref): correct = -> == in conditional(!) + +2004-03-29 Robin Fairbairns + + * faq.sty: define a bunch of stupid name macros to free us of these + idiot logos for ever; also define \MF and \MP without package mflogo + +2004-03-26 Robin Fairbairns + + * add-general.tex (subsection{The Joy of \TeX{} errors}): graphicx + height/division question q-divzero + +2004-03-25 Robin Fairbairns + + * add-general.tex (subsection{Hyphenation}): writing hyphenation + exceptions q-hyphexcept + +2004-03-25 Robin Fairbairns + + * faqbody.tex (section{Support Packages for TeX}): typo in q-fig title + (section{The Background}): correct the earlier twaddle about X in + Q-TeXpronounce (courtesy of Ulrich Klauer) + (section{Introduction}): added Ulrich Klauer + (subsection{Tables, figures and diagrams}): editorial on q-tabcellalign + (section{Documentation and Help}): add reference to shipman's texcrib + +2004-03-24 Robin Fairbairns + + * faqbody.tex (subsection{Common misunderstandings}): typo, found + courtesy of bil kleb + +2004-03-22 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): new q-altabcr + + * faqbody.tex (subsection{Tables, figures and diagrams}): tidy up + q-tabcellalign, adding refs to q-altabcr, and correcting errors + +2004-03-21 Robin Fairbairns + + * faq.sty: remove unnecessary \pdfstringdisable commands, sanitise \nts + and \texxet (but comment out \texxet and also \mltex, which aren't + used) + + * sanitize-beta.pl (sanitize_line): get rid of \texsis + + * faqbody.tex (subsection{Typesetting specialities}): write out in full + the one instance of use of \texsis... + + * faq.sty: de-sillify \tex, \etex, \extex, \latex, \alltex, \context, + \pdftex, \pdflatex, \twee ... and junk \texsis + +2004-03-19 Robin Fairbairns + + * add-general.tex (subsection{Current TeX-related projects}): complete + first stab at extex question + + * sanitize-beta.pl (sanitize_line): add \Omega + +2004-03-18 Robin Fairbairns + + * README: modify final paragraph (about distributing modified versions) + + * sanitize-beta.pl (sanitize_line): remove \Q + + * faq.sty: suppress \Q (temporarily, just possibly: it's going from + texfaq2html, anyway) + +2004-03-16 Robin Fairbairns + + * faqbody.tex (subsection{Why shouldn't I?}): correct fantasy in html + of q-2letterfontcommands + + * filectan.tex: add vruler + + * faqbody.tex: 3.11a, today + (section{The Background}): editorial on q-triptrap + (section{Introduction}): add brooks moses to list + (subsection{Typesetting specialities}): add vruler to q-linenos + + * sanitize.pl (sanitize_line): sanitize_beta changes + +2004-03-15 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): removed \ldots, added \psatempty + + * faqbody.tex (subsection{Page layout}): minor editorials for ps@empty + +2004-03-15: release 3.11 + +2004-03-14 Robin Fairbairns + + * faq.sty: disable \, in \pdfstringdisablecommands; define \psatempty + + * faqbody.tex (subsection{Page layout}): use \psatempty in question + title for label ps@empty + +2004-03-13 Robin Fairbairns + + * faqbody.tex (section{The Background}): don't refer to individual + latex doc files (not sensible since none is now html) + (section{Documentation and Help}): mention clsguide via directory only + + * dirctan.tex: latex documentation directory + +2004-03-12 Robin Fairbairns + + * dirctan.tex: add texcnvfaq as a directory + + * filectan.tex: remove texcnvfaq + +2004-03-12 Robin Fairbairns + + * faqbody.tex: v3.11, today + (subsection{Page layout}): clarify "pdf output" for pdflscape + +2004-03-11 Robin Fairbairns + + * faqbody.tex (section{DVI Drivers and Previewers}): new text about + dvipng, from its author + +2004-03-10 Robin Fairbairns + + * faq.sty: document \Qref in the course of checking it... + + * faqbody.tex (throughout): check on "\Qref..." -- ensure sensible + usage, specifically avoiding "(see question x)" + +2004-03-09 Robin Fairbairns + + * faqbody.tex (subsection{Lists}): tidy "interrupting lists" answer + + * CHANGES-3.11: 2 more answers listed + + * additions.tex: pl4.12, today + + * faqbody.tex (subsection{Why shouldn't I?}): q-2letterfontcmd from + add-general + (section{Graphics}): q-dvipdfmgraphics from add-general + v3.11RC4, today + + * add-general.tex (subsection{Why shouldn't I?}): editorials on + q-2letterfontcmd and q-dvipdfmgraphics + +2004-03-08 Robin Fairbairns + + * add-general.tex (subsection{Graphics}): edit the dvipdfm answer a bit + +2004-03-08 Robin Fairbairns + + * additions.tex: pl4.11b, today + + * add-general.tex (subsection{Graphics}): graphics in dvipdfm + +2004-02-28 Robin Fairbairns + + * faqbody.tex: v 3.11RC3, today + (section{Introduction}): contributors contributions, added szinger + +2004-02-27 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add \bsbs{} + + * faq.sty: add \bsbs + + * filectan.tex: beginlatex and tex4ht changed names + + * dirctan.tex: add pict2e, remove/amend things to match changes on + the archive + + * faqbody.tex + (subsection{Odds and ends}): add pbox and eqparbox to q-varwidth + (section{Graphics}): mention pict2e in "drawing in latex" + + * dirctan.tex: add eqparbox and pbox + +2004-02-26 Robin Fairbairns + + * faqbody.tex: date today, of course! + (subsection{Adobe Type 1 ("Postscript") fonts}): rearrange list of + fonts to clump free ones together better [more still to be done] + +2004-02-26 Robin Fairbairns + + * faqbody.tex (subsection{Odds and ends}): tidy up coding around stupid + logos answer + v3.11RC2 + + * filectan.tex: texnames.sty from info/biblio + + * Makefile.CTAN: texnames.sty -> stupid_names.sty + + * faq.sty: load stupid_names + + * stupid_names.sty: renamed [my] texnames.sty + +2004-02-25 Robin Fairbairns + + * dirctan.tex: add smallcap + + * add-general.tex (subsection{Why shouldn't I?}): New q-2letterfontcmd + + * faqbody.tex (section{Installing AllTeX files}): add note about public + fonts directories + (subsection{Odds and ends}): mention texhash for bold-extra installs + +2004-02-23 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): mention that memoir doesn't + choke on verbatim in footnotes in q-verbwithin + (subsection{LaTeX macros}): note koma-script \chapterformat (etc.) + functions in q-seccntformat + (subsection{Common errors}): q-tabacc and q-alreadydef from add-general + (subsection{Common misunderstandings}): q-linespread and q-baselinepar + from add-general + (section{Hypertext and PDF}): q-pdfpagelabels from add-general + (subsection{Odds and ends}): q-varwidth from add-general + (subsection{Creating bibliographies}): q-bibtranscinit from add-general + (subsection{Creating citations}): q-sortbib from add-general + [preamble]: v3.11RC1, today + (section{The joy of TeX errors}): q-inputlev and q-hyperdupdest from + add-general + +2004-02-22 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): new options for + q-changebars, from peter w; ditto comment env in memoir, for + q-conditional; totals counters in memoir for q-howmanypp + (subsection{"Generic" macros and techniques}): mention memoir's + \ifinteger setup in q-isitanum; ifmtarg in memoir for q-empty + (subsection{LaTeX macros}): chngcntr in memoir for q-running-nos; + q-oddpage stuff in memoir + +2004-02-19 Robin Fairbairns + + * faqbody.tex: v3.10k, today + (section{Bits and pieces of TeX}): tidy up text about bitmap type 3 + fonts in q-adobetypen + +2004-02-17 Robin Fairbairns + + * add-general.tex (subsection{Creating bibliographies}): correct + conditional code in Q-bibtranscinit + (subsection{Creating bibliographies}): bit more on Q-buildbib + +2004-02-14 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): mention koma + \captionabove command + +2004-02-09 Robin Fairbairns + + * faqbody.tex (subsection{Labels and references}): twiddle further with + reference-by-name answer (i wonder if it's comprehensible?) + +2004-02-08 Robin Fairbairns + + * dirctan.tex: add smartref + + * faqbody.tex (subsection{Tables of contents and indexes}): reword text + about splitidx package to take account of split option; more work + needed on this answer still :-{ + (subsection{Labels and references}): note memoir titleref functions, + and mention byname + +2004-02-06 Robin Fairbairns + + * faq.sty (\Qref): new whistle in case "\Qref..." + + * faqbody.tex (subsection{Page layout}): editorial work on ps@empty + +2004-02-05 Robin Fairbairns + + * faqbody.tex: v3.10j, today + + * additions.tex: pl4.10f, today + +2004-02-02 Robin Fairbairns + + * texfaq2html-gamma: first tentative steps towards a new web script + (nothing much to do with tex, as yet...) + + * texfaq2file: add switches to control what is output, for grand new + scheme of things + +2004-01-31 Robin Fairbairns + + * faqbody.tex (subsection{Tables of contents and indexes}): correct + reference to index package + + * dirctan.tex: add index + +2004-01-29 Robin Fairbairns + + * dirctan.tex: add ledmac + +2004-01-25 Robin Fairbairns + + * faqbody.tex: qq159,161 (in wilson's notes) for memoir + q163 for both memoir and koma-script + + * add-general.tex (subsection{Why does it do that?}): close paren in + q-baselinepar + (subsection{Odds and ends}): new q-varwidth + + * filectan.tex: add varwidth + +2004-01-24 Robin Fairbairns + + * add-general.tex (subsection{Why does it do that?}): finished (first + draft of) q-baselinepar + + * faqbody.tex (subsection{"Generic" macros and techniques}): correct a + typo (or perhaps "braino") pointed out by hendrik maryns + +2004-01-21 Robin Fairbairns + + * add-general.tex (subsection{Why does it do that?}): new q-baselinepar + and a link to it from + + * faqbody.tex (subsection{Common misunderstandings}): bit more scrunge + at end of q-paraparam + +2004-01-20 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of TeX}): mention swiftex in dtx + answer + +2004-01-19 Robin Fairbairns + + * faqbody.tex: v3.10i, today + (subsection{Document structure}): refer to zoonekynd's title, chapter + and section style pages + + * additions.tex: pl4.10e, yesterday + +2004-01-18 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): correct miktex + "update database" key name + + * add-general.tex (subsection{Why does it do that?}): nearing + completion of q-linespread + +2004-01-16 Robin Fairbairns + + * faqbody.tex (throughout): don't have comment.sty \end{xyz} other than + in column 1 + + * filectan.tex: add savesym + + * add-general.tex (subsection{Why does it do that?}): new Q-alreadydef + +2004-01-14 Robin Fairbairns + + * faqbody.tex (subsection{Common misunderstandings}): reword paraparam, + having recommended it to someone :-} + +2004-01-14 Robin Fairbairns + + * dirctan.tex: add Tabbing + + * add-general.tex (subsection{Why does it do that?}): complete q-tabacc + +2004-01-14 Robin Fairbairns + + * add-general.tex (subsection{Why does it do that?}): new q-tabacc (not + yet quite complete) + +2004-01-13 Robin Fairbairns + + * dirctan.tex: subfigure->subfig, in case i ever get to use it... + +2004-01-13 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): remove references to ntex + (subsection{Common misunderstandings}): quote work complete to end + of this subsection + +2004-01-12 Robin Fairbairns + + * faqbody.tex (subsection{Common misunderstandings}): more work on the + quote and verbatim + +2004-01-12 Robin Fairbairns + + * additions.tex: pl 4.10d, today + + * add-general.tex (subsection{Hypertext and PDF}): new answer + q-pdfpagelabels + (subsection{The Joy of TeX errors}): new q-hyperdupdest + + * faqbody.tex (section{Hypertext and PDF}): tidy qrefs to get rid of + stray space in html; reword intro to make clear what the answer will + tell us + +2004-01-11 Robin Fairbairns + + * faqbody.tex (throughout): still more work on tidying + (subsection{Getting things to fit}): remove question on miktex failing + to generate latex format + (subsection{Common errors}): mention dblfloatfix in "dbl float order" + v3.10h, today + +2004-01-10 Robin Fairbairns + + * faqbody.tex (throughout, again): more work on conditionals + (correcting gross errors of yesterday) and tidying layout (more quote + environments, f'rex) + +2004-01-09 Robin Fairbairns + + * faqbody.tex (throughout): redoing conditional control + +2004-01-09 Robin Fairbairns + + * add-general.tex (subsection{Creating bibliographies}): start of scan + of database offerings + +2004-01-08 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): memoir does crop marks + +2004-01-08 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): couple of editorials + from christina thiele + +2004-01-06 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): q-nopageno and q-ps@empty, + update for memoir and koma-script + +2004-01-05 Robin Fairbairns + + * faqbody.tex (section{Installing (La)TeX files}): new q-privinst from + add-general + (section{Installing (La)TeX files}): new q-instt1font from add-general + (section{Bits and pieces of TeX}): new q-resolns from add-general + (section{Bits and pieces of TeX}): new q-fontname from add-general + (subsection{Tables of contents and indexes}): new q-minitoc from + add-general + +2004-01-04 Robin Fairbairns + + * faqbody.tex (section{Graphics}): add a stricture against using epsfig + unless really necessary + (subsection{Document structure}): mention memoir in "page numbering" + (subsection{Page layout}): note typearea's capabilities in q-papersize + + * add-general.tex (subsection{Creating bibliographies}): wrap bib + entries in dviversion for transcribed initials question + + * faqbody.tex (subsection{Document structure}): dealt with the stuff + about marks + +2004-01-02 Robin Fairbairns + + * add-general.tex (subsection{Creating bibliographies}): new answer + from martin sneep, about transcribed initial letters + + * faqbody.tex (subsection{Document structure}): \clearempty... koma + stuff in Q-reallyblank + (section{Documentation and Help}): typesetting japanese tutorial from + matsusaka u. in japan + (section{Current TeX-related projects}): mention lambda in q-omega, + and add a health warning to the \ctanref about omega itself + +2004-01-01 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): mention + tabulary + (subsection{Document structure}): koma-script scrpage2, memoir into + q-fancyhdr + (subsection{Page layout}): mention koma \chapterpagestyle in Q-ps@empty + +2003-12-31 Robin Fairbairns + + * filectan.tex: add capt-of + + * faqbody.tex (subsection{Document structure}): record change back from + caption2 to caption + (subsection{Document structure}): koma & memoir appendix facilities + (section{Document structure}): caption facilities of koma and memoir, + and add capt-of too + +2003-12-29 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): refer to mimi's pages + next to tim love's + (section{Documentation and Help}): remove reference to basum (bausum?) + page on tug.org since it's shortly to be no more, and remove the ltx-2 + one too, since we seem to have a latex one in the offing + +2003-12-28 Robin Fairbairns + + * faqbody.tex (section{Graphics}): mention mptopdf in "mp in gs" q + + * add-general.tex (subsection{Creating citations}): mention ken + turner's list of reference styles + + * faqbody.tex (section{Documentation and Help}): list herbert voss' + thing under both faqs and tutorials + + * add-general.tex (subsection{Installing (La)TeX files}): tidy up the + private installation thing to fit in the columns (still needs proper + proof-reading) + +2003-12-27 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): yet more + verbosity about home texmf trees (this stuff needs proof-reading!!!) + + * faqbody.tex (subsection{Document structure}): koma, memoir additions + to q-secthead + +2003-12-25 Robin Fairbairns + + * add-general.tex (subsection{Tables of contents and indexes}): finish + off minitoc q with reference to hyperref; nb no reference to + minitoc-hyper (since no-one else has complained about it) + +2003-12-24 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): new question + q-privinst (incomplete so far) + + * sanitize-beta.pl (sanitize_line): remove translation of \& to bare & + (which surely isn't safe?) + +2003-12-23 Robin Fairbairns + + * faqbody.tex (subsection{Alternative document classes}): remove + statement that koma and memoir classes are "still under development" + with its unfortunate suggestion that they're still incomplete + (subsection{Document structure}): mention koma and memoir's titling + capabilities + +2003-12-22 Robin Fairbairns + + * add-general.tex (subsection{Bits and pieces of TeX}): fontname q + (subsection{Installing AllTeX files}): refer to q-fontname in + q-instt1font + (subsection{Creating citations}): restored q-sortbib ... + + * faq.sty: redo definition of \ProgName (and hence various others) + to work with latest url.sty (if it's available) + +2003-12-21 Robin Fairbairns + + * faqbody.tex (subsection{Particular font families}): optimise \Qref in + lmfonts question + (subsection{Alternative document classes}): updated other sizes + question to mention koma and memoir + + * add-general.tex (subsection{Installing AllTeX files}): another batch + of work on "installing type 1 fonts" + + * filectan.tex: excalibur now apparently 4.0.2 + +2003-12-18 Robin Fairbairns + + * add-general.tex (subsection{Creating citations}): new Q-sortbib + +2003-12-15 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): current gs version (in "old + gs" q) changed to 8.12 (dec 2003) + (preamble): v3.10g, today + (section{Installing (La)TeX files}): changes for new fptex + +2003-12-11 Robin Fairbairns + + * filectan.tex: add dblfloatfix + + * faqbody.tex (subsection{Floating tables, figures, etc.}): mention + dblfloatfix in Q-2colfloat + +2003-12-02 Robin Fairbairns + + * faqbody.tex (subsection{Tables of contents and indexes}): correction + of multind example [how _could_ i have got it so wrong?] + (preamble): v3.10f, today + +2003-11-28 Robin Fairbairns + + * faq.sty: pdftitle uk _tex_ faq (not tug) + + * faqbody.tex (section{TeX Systems}): typos in emacs names + +2003-11-19 Robin Fairbairns + + * additions.tex: pl 4.10a + + * add-general.tex (subsection{Tables of contents and indexes}): minitoc + question answered + +2003-11-18 Robin Fairbairns + + * faqbody.tex: v3.10e, today + (throughout): refer to koma-script (the object, as opposed to the ctan + address) as KOMA-script + +2003-11-13 Robin Fairbairns + + * faqbody.tex (section{References from articles}): minor extra + editorial + +2003-11-13 Robin Fairbairns + + * faqbody.tex: v3.10d, today + (section{References from articles}): clarification of, and expansion of + examples in, q-mcite + +2003-11-12 Robin Fairbairns + + * faqbody.tex: v3.10c, today + (subsection{Creating bibliographies}): correct @preamble for \noopsort + (section{References from articles}): correct location for unsrtnat, + plainnat + +2003-11-08 Robin Fairbairns + + + + * dirctan.tex: FirstSteps, lgc, lwc -> info/examples + + * faqbody.tex: v3.10b, today + (section{Documentation and Help}): corrections to mf/mp tutorials, plus + two additions (from jose santos) + + * texfaq2html: vital item left out yesterday when doing changes from + -beta + +2003-11-07 Robin Fairbairns + + * faqbody.tex: v3.10a + (subsection{Document structure}): typo in appendices question + + * texfaq2html: changes from -beta + + * sanitize.pl (sanitize_line): changes from -beta + + * faqbody.tex: v3.10 today + +2003-10-30 Robin Fairbairns + + * dirctan.tex: remove kostas entry (corresponding directory seems to + have disappeared from CTAN without trace...) + + * faqbody.tex (subsection{Tables of contents and indexes}): extend and + tidy examples in "multiple indexes" + + * sanitize-beta.pl (sanitize_line): add \Email{ } + + * faqbody.tex (subsection{Typesetting specialities}): correct mail list + details for tex-music (now at icking archive) + (throughout): change \Email|...| to \Email{...} + + * dirctan.tex: algorithm2e + + * faqbody.tex: 3.10RC2, today + (subsection{Typesetting specialities}): mention algorithm2e in + Q-algorithms + +2003-10-24 Robin Fairbairns + + * additions.tex: pl4.9g, today + + * faqbody.tex: v3.10RC1, today + (section{Documentation and Help}): various small editorials + +2003-10-23 Robin Fairbairns + + * add-general.tex (subsection{Document Structure}): editorial work on + the appendix answer + +2003-10-23 Robin Fairbairns + + * add-general.tex (subsection{Labels and references}): tidy q-extref + + * dirctan.tex: removed web/glasgow and all subdir references + + * add-general.tex (subsection{Labels and references}): faithfully add + reference to xr-hyper's url optional argument (though i've not tried + heiko's new version of hyperref that he says makes it work) + + * dirctan.tex: add appendix + + * add-general.tex (subsection{Document Structure}): new Q-appendix + +2003-10-21 Robin Fairbairns + + * faqbody.tex (subsection{Why shouldn't I?}): add example of how to + code align in place of eqnarray; make all questions in section have ? + at their ends (just for once, they _are_ written as questions) + (subsection{Common errors}): mention Q-eqnarray in Q-newlineargs where + eqnarray is used as an example + +2003-10-19 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): q-toodeep from + add-general + (subsection{Mathematics}): q-mathstext and q-reuseq from add-general + (subsection{Common misunderstandings}): q-exscale from add-general + (subsection{Page layout}): q-epigraph from add-general + (section{Current TeX-related projects}): q-aleph from add-general + (subsection{Footnotes}): q-footnpp from add-general + (subsection{LaTeX macros}): q-addtoreset from add-general + (subsection{Tables, figures and diagrams}): removed superfluous + \endhtmlignore in q-wholerow + + * add-general.tex (subsection{LaTeX macro programming}): mention per + page resetting problem and the perpage package, in answer "master and + slave counters" (done once before, and obviously lost :-( ) + +2003-10-18 Robin Fairbairns + + * additions.tex: pl4.9f, today + + * faqbody.tex (section{Support Packages for TeX}): mention aspell under + q-spell; remove mention of fig2mf under q-fig, and expand list of + known export formats (which now includes mf) + + * add-general.tex (subsection{The Joy of TeX errors}): finished + editorial work on q-toodeep -- removed wibble about pressing on past + the error + (subsection{Creating citations}): minor editorial on the "howto" + +2003-10-17 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro programming}): mention per + page resetting problem and the perpage package, in newly-renamed + answer "master and slave counters" + +2003-10-17 Robin Fairbairns + + * texfaq2html-beta: remove $original_keyword (no longer used); make + $keyword have spaces exchanged for + signs; if not providing link to + list of questions, ... + +2003-10-17 Robin Fairbairns + + * add-general.tex (subsection{Footnotes}): typo; add example of perpage + and list sources of documentation + +2003-10-16 Robin Fairbairns + + * add-general.tex (subsection{Creating bibliographies}): more work on + how to + (subsection{Mathematics}): re-use of equation + +2003-10-14 Robin Fairbairns + + * add-general.tex (subsection{Creating bibliographies}): start on "how + to write a .bib file" + +2003-10-13 Robin Fairbairns + + * filectan.tex: add versions.sty + + * faqbody.tex (subsection{Document management}): add versions.sty to + conditional compilation answer + +2003-10-12 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): remove the historical + stricture about the bibtex man page, and tidy the rest of the answer + up a bit + +2003-10-11 Robin Fairbairns + + * add-general.tex (subsection{Footnotes}): new subsection, new + Q-footnpp + +2003-10-10 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): add crippled keyword to + questions about fuzzy fonts + +2003-10-09 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): too deep (list + nesting error answer + + * sanitize-beta.pl (sanitize_line): add \"u + + * faqbody.tex (section{Documentation and Help}): reference to l2tabuen + as a -ve tutorial + + * filectan.tex: add l2tabuen and l2tabuen.src + +2003-10-08 Robin Fairbairns + + * filectan.tex: add fncyref + +2003-10-07 Robin Fairbairns + + * faqbody.tex: v3.9d, today + (subsection{"Generic" macros and techniques}): renamed section, added + Q-empty, tidied up quoting further up section + (subsection{LaTeX macros}): added Q-labundef + (section{The joy of TeX errors}): added Q-8000 + (subsection{Why shouldn't I?}): add Q-dolldoll + (subsection{LaTeX macros}): mention latex kernel problem with \p@<*>, + and list the patch; also mention fncylab and point out that list + reference patching is best done with enumitem + +2003-10-05 Robin Fairbairns + + * add-general.tex (subsection{Labels and references}): new question on + xr and xr-hyper + + * faqbody.tex (subsection{Labels and references}): hyperref defines + \nameref for itself; nameref doesn't need hyperref + + * dirctan.tex: add clrscode + + * faqbody.tex (subsection{Typesetting specialities}): mention clrscode + + * sanitize-beta.pl (sanitize_line): add narrowversion and wideversion + + * faq.sty: add narrowversion and wideversion + + * add-general.tex (subsection{Labels and references}): new subsection, + for (new) q-extref + + * faqbody.tex (subsection{Labels and references}): new, so far just + contains q-nameref + +2003-10-03 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro programming}): add an + \@addtoreset answer + + * sanitize-beta.pl (sanitize_line): correct order of + \cmdinvoke*{c}{a1}{a2}{a3} and \cmdinvoke*{c}{a1}{a2}; add + \cmdinvoke*{c}{a1}[a2] + + * faqbody.tex (subsection{Typesetting specialities}): slight tidying of + algorithm answer + +2003-10-01 Robin Fairbairns + + * dirctan.tex: add epigraph + + * add-general.tex (subsection{Creating citations}): fiddling with cites + in how to bibtex question + (subsection{Page layout}): answer on epigraphs + +2003-09-30 Robin Fairbairns + + * add-general.tex (subsection{Creating citations}): how to run bibtex + +2003-09-28 Robin Fairbairns + + * dirctan.tex: add bezos + + * faqbody.tex (subsection{Lists}): add enumitem to the same two answers + + * add-general.tex (subsection{Mathematics}): correction, following + discussion on c.t.t + +2003-09-27 Robin Fairbairns + + * dirctan.tex: add paralist, savetrees + + * faqbody.tex (subsection{Lists}): add commentary on paralist and + savetrees to compaction of lists, and re-organise rest of question; + turn "fancy enumeration" upside down (to mention the package first), + and add side reference to paralist + +2003-09-25 Robin Fairbairns + + * additions.tex: v4.9d. 22nd + + * faqbody.tex: v3.9c, today + (section{Documentation and Help}): mention www.macrotex.net/texbooks + +2003-09-23 Robin Fairbairns + + * faqbody.tex (subsection{Creating citations}): consistent set of + examples for all three candidate packages, and compare-and-contrast + stuff to help users choose + +2003-09-22 Robin Fairbairns + + * faqbody.tex (subsection{Creating citations}): add ctan ref for + multibbl + + * add-general.tex (subsection{Mathematics}): add \intertext command to + answer on text in maths (example copied from amsldoc) + +2003-09-20 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): add ref to latex2html + mailing list + + * dirctan.tex: add texpower, beamer + + * add-general.tex (subsection{Alternative document classes}): bits and + pieces added on to slides question + +2003-09-19 Robin Fairbairns + + * texfaq2file: complete filename mapping to avoid nasty chars + + * add-general.tex (subsection{Mathematics}): new answer: text in maths + +2003-09-18 Robin Fairbairns + + * add-general.tex (subsection{Why shouldn't I?}): sort out $$ answer + + * faqbody.tex (subsection{Common misunderstandings}): micro-tutorial on + the way \marginpar works + +2003-09-17 Robin Fairbairns + + * add-general.tex (subsection{Common misunderstandings}): add exscale q + +2003-09-16 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): reference odp tex area + + * add-general.tex (subsection{LaTeX macro programming}): add answer on + detecting whether a label's undefined + +2003-09-15 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add 4-arg \cmdinvoke* + + * dirctan.tex: add zoon-mp-eg + + * faqbody.tex (section{Documentation and Help}): add zoonekynd's + example set to list of mp tutorials + +2003-09-14 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): bunch of + changes \Package| | to \Package{ } + (subsection{Getting things to fit}): advise etex/etex.sty for pictex + (section{The joy of TeX errors}): mention etex for dealing with + register problems + +2003-09-13 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): mention + bigstrut + + * dirctan.tex: add multirow + + * add-general.tex (subsection{Tables, figures and diagrams}): Add q on + multirow + +2003-09-12 Robin Fairbairns + + * add-general.tex (subsection{Tables, figures and diagrams}): question + on modifying single rows + +2003-09-11 Robin Fairbairns + + * dirctan.tex: add aleph + + * add-general.tex (subsection{Current TeX-related projects}): little + answer on the aleph project + +2003-09-10 Robin Fairbairns + + * dirctan.tex: directory for TftI + + * faqbody.tex (section{Documentation and Help}): add tex for the + impatient to the list of books released "free" + +2003-09-09 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): \label outside environment + enclosing \caption, too + (section{The joy of TeX errors}): play the htmlversion trick in + semanticnest + +2003-09-08 Robin Fairbairns + + * add-general.tex (subsection{Bits and pieces of TeX}): question on + resolutions + + * faqbody.tex: today's date + (section{Documentation and Help}): mention mptut.pdf + (subsection{Getting things to fit}): + +2003-09-07 Robin Fairbairns + + * faqbody.tex: today's date + (section{Documentation and Help}): recommend TUG India tutorial page + +2003-09-06 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): complete rewrite + of the "mismatched mode" answer + + * dirctan.tex: add bakoma-texfonts + + * faqbody.tex: v3.9a, today; move hypertext section beyond fonts + (section{Graphics}): reorder questions, make all titles of answers that + refer to imported graphics actually say "imported" + (section{Documentation and Help}): minor editorial on mf books + (section{Documentation and Help}): mention herbert voss' maths tutorial + (section{Documentation and Help}): tidy up references to texhax + (section{Documentation and Help}): remark on the nasa latex thing + referring to 2.09 + (section{Bits and pieces of TeX}): minor editorial + (section{Acquiring the Software}): minor editorial + (section{Hypertext and PDF}): add ctan ref for bakoma fonts + +2003-09-05 Robin Fairbairns + + * texfaq2file: start on facility for changing file names of awkwardly- + labelled questions + +2003-08-29 Robin Fairbairns + + * faqbody.tex: v3.9 + +2003-08-28 Robin Fairbairns + + * faqbody.tex: v3.9RC2, today + + * additions.tex: pl4.8a, today + + * add-general.tex (subsection{Creating citations}): use donald's + simpler scheme for doing unsrt styles by hand... still no tocunsrt :-( + + * faqbody.tex (section{Graphics}): rename the "graphics in" to + "imported graphics in", and rename q-graph-pspdf to "portable imported + graphics + (subsection{Creating bibliographies}): trivial anglicisation + (subsection{Typesetting specialities}): mention sverb.sty in the + verbatim input question, and tidy the whole mess up + (subsection{Typesetting specialities}): tidy ctanrefs of music answer + (section{The joy of TeX errors}): reorder the question about "missing + number", and refer to mathptmx to replace the old times package + +2003-08-27 Robin Fairbairns + + * faqbody.tex (section{The Background} and elsewhere): yet more typos + noticed by jose carlos santos + +2003-08-12 Robin Fairbairns + + * sanitize.pl (sanitize_line): bring up-to-date with changes to -beta + + * sanitize-beta.pl (sanitize_line): move {} pattern to end of funtion + + * faqbody.tex: 3.9RC1, today + (subsection{Spacing of characters and lines}): documentation (such as + it is) of setspace + + * companion.ctan: remove contrib/(supported|other) with a lot of help + from reinhard + + * faqbody.tex (subsection{Tables of contents and indexes}): put code + example in quote environment (seems to set it off rather well) + +2003-08-12 Robin Fairbairns + + * dirctan.tex,filectan.tex: remove all remaining contrib/supported + +2003-08-11 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): ignore \bgroup, \egroup (the latter + has to have trailing space in its pattern, for some reason) + + * faqbody.tex (section{References from articles}): tidy up ctanrefs + (subsection{Tables of contents and indexes}): add example of the use of + index.sty (other two to come) + +2003-08-11 Robin Fairbairns + + * faqbody.tex (subsection{Odds and ends}): advise against nameref with + hyperref + + * dirctan.tex: added cm-lgc + +2003-08-10 Robin Fairbairns + + * faqbody.tex (subsection{Spacing of characters and lines}): rewrite + doublespacing question for less pomposity + +2003-08-09 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): use \Qref* + (subsection{Particular font families}): use \Qref* + (section{Hypertext and PDF}): rework the 8-bit fonts question to + include cm-lgc, with caveats about its size range, and also to compare + the three type 1 alternatives to cm shapes + +2003-08-08 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macros}): further slight tweaks + +2003-08-08 Robin Fairbairns + + * faqbody.tex: 3.8c, today + (subsection{LaTeX macros}): add argument-version to \collect@body q + +2003-08-07 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): typo in + Q-slashbox + + * sanitize-beta.pl (sanitize_line): deal with \Qref* (twice) -- same as + \Qref here + + * faq.sty: deal with \Qref* + + * faqbody.tex (subsection{Tables, figures and diagrams}): couple of + typos in destable, and use \Qref* + +2003-08-05 Robin Fairbairns + + * faqbody.tex: v3.8b, today + (section{Current TeX-related projects}): reference to pdftex in its own + right on ctan + + * filectan.tex: add pdftex + +2003-08-01 Robin Fairbairns + + * sanitize.pl, sanitize-beta.pl (sanitize_line): add \File{ } + + * faqbody.tex: v3.8a, today + (section{Hypertext and PDF}): typo in Q-fuzzy-type3 + +2003-07-31 Robin Fairbairns + + * Makefile.CTAN: remove texfaq2{file,html}, but install faq-html.tar.gz + + * Makefile (inst-html): muck about with html .tar.gz creation + + * additions.tex: pl4.8, today + + * faqbody.tex (subsection{Creating bibliographies}): merge Q-capbibtex + and Q-bibcase to convert the latter to just Q-bibaccent + v3.8, today ** release ** + +2003-07-29 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): use new fantasies + around the production of \~ + + * sanitize-beta.pl (sanitize_line): deal with \~ + + * sanitize.pl (sanitize_line): deal with \~, bring up to date with + sanitize-beta + + * faqbody.tex (subsection{Creating bibliographies}): \htmlignore around + dvi/pdf versions in examples of case protection + +2003-07-29 Robin Fairbairns + + * dirctan.tex: add lshort-parent + + * faqbody.tex (section{Documentation and Help}): make sure that every + tutorial mentions it's available from ctan if it is; suggest browsing + for other language versions + +2003-07-28 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): add testflow to list + of tutorials + + * additions.tex: pl4.7c, today + + * faqbody.tex: v3.8RC2, today + +2003-07-27 Robin Fairbairns + + * faqbody.tex (throughout): \ProgName|...| -> \ProgName{...} + +2003-07-26 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): add epslatex to list + of tutorials + +2003-07-25 Robin Fairbairns + + * faqbody.tex (section{The Background}): remove claim about the + regularity of tugboat :-) + +2003-07-24 Robin Fairbairns + + * faqbody.tex (subsection{Typesetting specialities}): Q-upquot, Q-time + and Q-the-commands from add-general (slight edit to Q-the-commands) + (subsection{Particular font families}): lm question from add-general + (subsection{Creating bibliographies}): sorting from add-general + (subsection{Tables, figures and diagrams}): Q-slashbox from add-general + v3.8RC1, today + +2003-07-23 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): turned the 8-bit fonts + question upside down so as to emphasise cm-like fonts. + (section{Current TeX-related projects}): change section title, and + adjust emphasis in the textrace/mftrace answer (as well as moving + download addresses to the ctanrefs section) + (section{Current TeX-related projects}): new answer on ANT (to what + question? you may well ask :-), from add-general + +2003-07-22 Robin Fairbairns + + * add-general.tex (subsection{Particular font families}): new one on lm + + * faqbody.tex (section{Hypertext and PDF}): add lm fonts to type1T1 + +2003-07-21 Robin Fairbairns + + * dirctan.tex: add lm fonts + +2003-07-18 Robin Fairbairns + + * add-general.tex (subsection{Creating citations}): \noopsort question + + * faqbody.tex (subsection{Creating bibliographies}): mention the natbib + styles and custom-bib _above_ harvard :-} + +2003-07-14 Robin Fairbairns + + * faqbody.tex (subsection{Adobe Type 1 ("PS") fonts}): mention cm-super + and hfbright as sources of type 1 cm bright + + * dirctan.tex: add latex4jed; move mcite, mdwtools, mfnfss, ssqquote, + textfit and tocvsec2 up/down/sideways one; also multibbl and foiltex + on the nonfree tree; add hfbright + + * faqbody.tex: v3.7.1a, today + (section{TeX Systems}): mention latex4jed + +2003-07-11 Robin Fairbairns + + * dirctan.tex: move minitoc, ms, multibib, nrc, ntheorem, rcs, rcsinfo, + refcheck, rotating, sectsty, showlabels, snapshot, sttools, + supertabular, titling and tocloft down one (or up one -- who cares?); + delete schroeder entry (pointing to the ms directory) + + * faqbody.tex (two places): ctanref schroeder -> ms + +2003-07-10 Robin Fairbairns + + * dirctan.tex: move mparhack, ncctools, newlfm, oberdiek, soul and + tocbibind up one + +2003-07-09 Robin Fairbairns + + * add-general.tex (subsection{Current TeX-related projects}): minor + tidies + (subsection{Current TeX-related projects}): add a sentence on _why_ + separation of languages might be a good thing + +2003-07-09 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add \textsf as a no-op (like \acro) + + * add-general.tex (subsection{Typesetting specialities}): still more + tidying, after sleeping on the problem + (subsection{Current TeX-related projects}): (new title for the section) + new question on ANT + +2003-07-08 Robin Fairbairns + + * add-general.tex (subsection{Typesetting specialities}): another pass + over the wording of the advice in the \the_xxx_ question + +2003-07-08 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add 2-arg *'d \cmdinvoke + + * add-general.tex (subsection{Typesetting specialities}): remove \emph + from the arguments of \csx in Q-the-commands + + * dirctan.tex: move jknappen, jurabib and mailing down one level + +2003-07-07 Robin Fairbairns + + * dirctan.tex: move toppages, type1cm and ucthesis down one level + +2003-07-07 Robin Fairbairns + + * dirctan.tex: add datetime; move memoir, utthesis, vector and vmargin + down one level + +2003-07-06 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macros}): add twoopt.sty to Q-twooptarg + +2003-07-05 Robin Fairbairns + + * faqbody.tex (subsection{Document structure}): tidy q-captsty (incl + documentation reference, and add reference to Q-atsigns in the early + bit about diy + +2003-07-04 Robin Fairbairns + + * additions.tex: pl4.7b, today + + * add-general.tex (subsection{Typesetting specialities}): new question + on typesetting the time + + * faqbody.tex (subsection{Creating bibliographies}): btxmac is actually + part of eplain; reference eplain, too + +2003-07-02 Robin Fairbairns + + * dirctan.tex: add slashbox; move textpos, was, wordcount, wrapfig, + xtab and xymtex down from contrib/supported + + * add-general.tex (subsection{Tables, figures and diagrams}): answer + containing a recommendation of slashbox (but presenting thomas lotze's + suggestion from textex_355 as an alternative) + + * filectan.tex: add tocunscite (it's not there yet, mind) + + * add-general.tex (subsection{Creating citations}): answer for unsrt + with table of contents (etc) + + * faqbody.tex (section{Current TeX Projects}): added mailing list + details for pdftex from tug site + (section{The Background}): maillist address for MP (didn't know it had + one!) + (subsection{Alternative document classes}): scrlettr->scrlttr2 + +2003-07-01 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of TeX}): reference docmfp in + Q-dtx (is this the right place for it?) + (section{The Background}): rewrite text about mp in pdflatex, including + making reference to Q-pdflatexgraphics rather than to the pdflatex + project itself + (section{Current TeX Projects}): update pdftex answer; still needs + reference for new mailing list sign-up + + * dirctan.tex: add docmfp + + * faqbody.tex: v3.7.1, today + (subsection{Spacing of characters and lines}): mention the justify + stuff in latest ragged2e + (subsection{Document structure}): mention fncychap's restriction re. + front/backmatter in Q-secthead + +2003-06-25 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macro programming}): aide-memoir + for vertical spacing commands in plain-in-latex + +2003-06-20 Robin Fairbairns + + * faqbody.tex: release... + + * sanitize.pl (sanitize_line): corrections from -beta + + * sanitize-beta.pl (sanitize_line): move \csx so it can appear in \Qref + (sanitize_line): correct \^e + + * faqbody.tex (section{Hypertext and PDF}): reorganise reference to + dvisstrip + (subsection{Typesetting specialities}): minor editorial + + * sanitize-beta.pl (sanitize_line): add \ensuremath + + * faqbody.tex: v3.7, today (i'm determined...) + (section{Format conversions}): refer to hennings' faq via href, not an + entry in ctanrefs + (section{Hypertext and PDF}): minor editorial in fuzzy-type3 + +2003-06-19 Robin Fairbairns + + * dirctan.tex: correct subeqnarray, subfigure, subfiles + +2003-06-18 Robin Fairbairns + + * dirctan.tex: correct arabtex, ifmslide, natbib, titlesec + +2003-06-17 Robin Fairbairns + + * add-general.tex (subsection{Typesetting specialities}): new question + on upright (Xterm-like) quotes + + * filectan.tex: add upquote + +2003-06-16 Robin Fairbairns + + * faqbody.tex: v3.7RC3, today + (section{Format conversions}): tidy up "others" question a bit, and add + mention of tex2word and word2tex; no longer first in section + +2003-06-15 Robin Fairbairns + + * additions.tex: pl4.7a, today + + * add-general.tex (subsection{The Joy of TeX errors}): new answer on + 8000dpi gsftopk attempts + + * faqbody.tex: 3.7RC2, today + (section{The joy of TeX errors}): non-PDF-special from add-general + +2003-06-14 Robin Fairbairns + + * filectan.tex: add ifmtarg + + * add-general.tex (subsection{Macro programming}): empty arg answer + +2003-06-12 Robin Fairbairns + + * faqbody.tex: 3.7RC1, today + (section{Hypertext and PDF}): replace q-dvips-pdf from add-general qs + (section{Installing (La)TeX files}): 4 font install answers ditto + + * add-general.tex (subsection{Hypertext and PDF}): real error message + from dvips when font missing: not mentioning latest version, since + systems will have the fonts anyway + +2003-06-11 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): change reference to fuzzy + fonts question in "8-bit fonts" + (subsection{Typesetting specialities}): pseudocode, from add-general + + * add-general.tex (subsection{Hypertext and PDF}): several editorial + and typographic changes + +2003-06-10 Robin Fairbairns + + * faqbody.tex: v3.6.1d, today + + * additions.tex: pl4.6b, today + + * faqbody.tex (section{Graphics}): add graphics needed... from + add-general + + * dirctan.tex: harvard, hyper, hyperref and hyphenat + + * faqbody.tex (subsection{"Generic" macros}): minor edits of "spaces" + + * add-general.tex (subsection{Installing (La)TeX files}): tidies of + some of these font answers + (subsection{Graphics}): minor edit + (subsection{Hypertext and PDF}): add proviso about acroread 6 + + * dirctan.tex: psfig change + +2003-06-09 Robin Fairbairns + + * dirctan.tex: add urlbst + + * faqbody.tex (subsection{Creating bibliographies}): mention urlbst in + Q-citeurl + +2003-06-08 Robin Fairbairns + + * faqbody.tex (subsection{Typesetting specialities}): reference to + Q-algorithms in Q-proglist; also be more positive still about listings + package (when did anyone last recommend lgrind?) + + * add-general.tex (subsection{Hypertext and PDF}): minor edits + (subsection{Typesetting specialities}): minor adjustments + +2003-06-07 Robin Fairbairns + + * faqbody.tex: v3.6.1c, today + (section{Hypertext and PDF}): mention pstill in q-pkfix + (section{The joy of TeX errors}): \$ needs {} (eh!?) + +2003-06-06 Robin Fairbairns + + * faqbody.tex (section{DVI Drivers and Previewers}): bitmap drivers + + * add-general.tex (subsection{Hypertext and PDF}): split "quality of + pdf" into two, so all "problems" are on the same level; slight + editorials (some as a result of split) + + * faqbody.tex: v3.6.1b, today + (subsection{Page layout}): page sizes from add-general; + (subsection{Tables, figures and diagrams}): table design from + add-general + (subsection{Common errors}): float ordering question from add-general + + * add-general.tex (subsection{Typesetting specialities}): remove the + "short" option; tidy up description of algorithms bundle; mention + float.sty; write documentation notes + (subsection{Page layout}): minor editorial of page sizes + + * dirctan.tex: bunch of directories contrib/supported->contrib + +2003-06-02 Robin Fairbairns + + * additions.tex: pl4.6a, today + +2003-06-02 Robin Fairbairns + + * dirctan.tex: add algorithms,alg,newalg; junk old (cyrillic) "program" + in favour of pseudocode one for scott's answer(s); deal with labels, + lineno, listings, refman and wasysym (now links) + + * add-general.tex (subsection{Typesetting specialities}): both + alternatives of scott pakin's take on algorithm typesetting + + * faqbody.tex: today's date + (subsection{Typesetting specialities}): minor edit of q-codelist + +2003-06-02 Robin Fairbairns + + * faqbody.tex (subsection{Document structure}): mention doc of fncychap + +2003-06-01 Robin Fairbairns + + * filectan.tex: add topcapt + + * add-general.tex (subsection{Tables, figures and diagrams}): new + design of tables answer + + * dirctan.tex: add ctable + + * faqbody.tex: v3.6.1a, today + (subsection{Footnotes}): reference ctable.sty in footintab + +2003-05-21 Robin Fairbairns + + * add-general.tex (subsection{Graphics}): more editorial, mentions of + dvipdfm + +2003-05-20 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): further + iterations, including reference to new bluesky-maps in place of clunky + instructions on generating the beastly things + + * dirctan.tex: add bluesky-maps + + * add-general.tex (subsection{Hypertext and PDF}): move Q-fuzzy-t1 up + one so questions are in order of itemize + +2003-05-20 Robin Fairbairns + + * add-general.tex (subsection{Hypertext and PDF}): editorial work on + quality; put related answers into an itemize + (subsection{Installing (LaTeX files}): editorial work on bluesky + +2003-05-19 Robin Fairbairns + + * dirctan.tex: move mflogo and moreverb "down one" + +2003-05-18 Robin Fairbairns + + * faqbody.tex (section{Graphics}): mention mp doesn't need help from + psfrag + +2003-05-16 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): mention winedt + changebar macros + +2003-05-16 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): add "revision bars" to + Q-changebars + +2003-05-15 Robin Fairbairns + + * add-general.tex (subsection{Page layout}): new question on paper size + +2003-05-14 Robin Fairbairns + + * additions.tex: pl4.6, today + + * add-general.tex (subsection{Graphics}): trim ps+pdf graphics q title + + * faqbody.tex: v3.6.1, today + (subsection{Typesetting specialities}): add highlight to Q-codelist + + * dirctan.tex: add highlight + +2003-05-13 Robin Fairbairns + + * dirctan.tex: collapse koma-script address + + * sanitize.pl,sanitize-beta.pl (sanitize_line): correct \^E->\^e, bring + sanitize.pl up to date + + * faqbody.tex (section{Documentation and Help}): texhax now at tug.org + (subsection{Spacing of characters and lines}): mention \centering in + "cancelling ragged" question + +2003-05-12 Robin Fairbairns + + * add-general.tex (subsection{Common Errors}): slight diddle on + fixltx2e question + +2003-05-11 Robin Fairbairns + + * dirctan.tex: add hvfloat + +2003-05-10 Robin Fairbairns + + * dirctan.tex: add fnbreak; bunch of contrib/supported directories -> + contrib directories, and also picked up other link directories + (allowing some to remain links for clarity) + + * faqbody.tex: 3.6RC5, today + (subsection{Common misunderstandings}): mention fnbreak in q-splitfoot + +2003-05-07 Robin Fairbairns + + * additions.tex: pl4.5f, today + + * add-general.tex (subsection{DVI drivers and previewers}): editorials + (subsection{Common Errors}): new question on fix2col/fixltx2e + +2003-05-05 Robin Fairbairns + + * additions.tex: pl4.5e, today + + * add-general.tex (subsection{The Joy of TeX errors}): answer on + "unknown special ignored" + + * sanitize-beta.pl (sanitize_line): add ê + +2003-05-03 Robin Fairbairns + + * add-general.tex (subsection{DVI drivers and previewers}): minor typos + and editorial corrections + (subsection{Graphics}): mention dvipdfm option, and auto driver + selection, in q about ambivalent output generation + +2003-05-02 Robin Fairbairns + + * faqbody.tex (subsection{Alternative document classes}): correct + spelling of résumé + +2003-04-22 Robin Fairbairns + + * Makefile (clean): add *.png + + * add-general.tex (subsection{DVI drivers and previewers}): bunch of + tidies in this and other questions answered recently + + * additions.tex: pl4.5d, today + +2003-04-21 Robin Fairbairns + + * filectan.tex: correct tex4ht-mn.zip, remove usergrps-list + + * dirctan.tex: remove geralpha, which has gone from the archive + + * check-ctan-lists: make to work on gordon + + * dirctan.tex: add dvipng + + * add-general.tex (subsection{Hypertext and PDF}): new Q-fuzzy-t1 on + the effect of type3 fonts when switching to T1 + (subsection{DVI drivers and previewers}): new Q-dvi-bmp + +2003-04-20 Robin Fairbairns + + * add-general.tex (subsection{Hypertext and PDF}): replacement `quality + of PDF' answer (part 1) + (subsection{Hypertext and PDF}): Q-gs-pdfqual (part 2 of same) + (subsection{Hypertext and PDF}): Q-distill-prob (part 3 of same) + +2003-04-17 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): Add \FontName + + * faq.sty: add \FontName + + * add-general.tex (subsection{Installing (La)TeX files}): yet more on + Q-instprinterfont + +2003-04-16 Robin Fairbairns + + * add-general.tex (subsection{Particular font families}): move mathtime + back where it started! + (subsection{Installing (La)TeX files}): more on Q-instprinterfont + +2003-04-14 Robin Fairbairns + + * texfaq2file: name question files by label, rather than by number; add + web link for question at end; change regexp for \Question to require + label, and to return it alone as $1 (did have [] too); remove + provision for generating a list of all questions + + * faqbody.tex: v3.6RC4, today + (subsection{Why shouldn't I?}): Q-eqnarray from add-general + (section{Bits and pieces of \TeX}): Q-adobetypen from add-general + (subsection{LaTeX macros}): Q-spaftend, Q-cmdasenv from add-general + +2003-04-13 Robin Fairbairns + + * additions.tex: pl4.5c, today + + * faqbody.tex (section{Documentation and Help}): more on how to ask a + question + (section{Graphics}): mention graphicx.tex as well as miniltx + +2003-04-12 Robin Fairbairns + + * add-general.tex (subsection{Installing AllTeX files}): installing + mathtime, back from faqbody (not ready for prime time: reinstate when + new version released so it appears in beta again + (subsection{Bits and pieces of TeX}): new q-adobetypen on font formats + + * filectan.tex: contrib/other/fragments -> contrib/fragments + + * dirctan.tex: remove "other" (whole contrib/other directory!); move + all contrib/other stuff down to contrib + +2003-04-11 Robin Fairbairns + + * faq.sty: introduce \ifusePSfont, set true if using times + + * faqbody.tex (subsection{Adobe Type1 ("PS") fonts}): remove reference + to fonts/psfonts in Q-metrics + +2003-04-10 Robin Fairbairns + + * faqbody.tex (section{Graphics}): add mpsproof to question on mp + output in ghostscript + + * filectan.tex: add mpsproof + +2003-04-09 Robin Fairbairns + + * filectan.tex: latex/contrib/(other|supported)/misc -> contrib/misc + +2003-04-08 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): only options now, in + Q-CD, are texlive and the ctan cds. + +2003-04-07 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): dvistrip corrected to + dvipsstrip + + * dirctan.tex: remove fonts/psfonts + + * faqbody.tex (subsection{Adobe Type 1 (postscript) fonts}): remove + reference to psfonts directory + + * add-general.tex (subsection{Macro programming}): slight elaboration + of command-as-env question + (subsection{Macro programming}): move Q-spaftend in here + (subsection{LaTeX macro programming}): moved up (with one so far + incoherent question) so as to redesignate previous two questions as + latex + +2003-04-06 Robin Fairbairns + + * add-general.tex (subsection{Macro programming}): finally a usable + question on commands-as-environments, Q-cmdasenv + +2003-04-04 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): slight tidy Q-dvips-pdf + + * add-general.tex (subsection{Why shouldn't I?}): new Q-eqnarray + +2003-04-03 Robin Fairbairns + + * faqbody.tex: 3.6RC3, today + (subsection{Typesetting specialities}): add discouragement of the use + of path.sty with latex + +2003-04-02 Robin Fairbairns + + * add-general.tex (subsection{Why does it do that?}): new Q-spaftend + +2003-03-31 Robin Fairbairns + + * dirctan.tex: oops -- remove line break in decl of psnfssx-mathtime + + * faqbody.tex: v3.6RC2, today + (subsection{Creating bibliographies}): add Q-bibcase from add-general + (subsection{Mathematics}): add Q-limits and Q-mathlips from add-general + (subsection{Particular font families}): add Q-mathtime from add-general + + * add-general.tex (subsection{Mathematics}): add csnames as keywords + for Q-mathlips + (subsection{Mathematics}): \CTANref for graphics.sty + + * additions.tex: pl4.5b, today + + * add-general.tex (subsection{Creating bibliographies}): small changes, + plus text-wrapping in verbatim examples + +2003-03-30 Robin Fairbairns + + * add-general.tex (subsection{Creating bibliographies}): new Q-bibcase + +2003-03-29 Robin Fairbairns + + * faqbody.tex (subsection{Mathematics}): revise reference to + \DeclareMathOperator with reference to Q-limits + + * filectan.tex: add T1instguide + + * add-general.tex (subsection{Installing (La)TeX files}): add reference + to lehman's guide + (subsection{Mathematics}): new question Q-limits + +2003-03-28 Robin Fairbairns + + * dirctan.tex: add yhmath-(fonts|macros) + + * add-general.tex (subsection{Mathematics}): new question on ellipses + + * filectan.tex: add mathdots + + * faqbody.tex: v3.6RC1, today + (section{The joy of TeX errors}): Q-formatstymy from add-general + + * add-general.tex: tidy after removing questions + + * faqbody.tex (section{Graphics}): typos in Q-graphicspath + (subsection{Document structure}): typos in Q-captsty + (subsection{Alternative document classes}): missing close paren in Q-cv + (section{The joy of TeX errors}): Q-bufovfl from add-general + (subsection{Mathematics}): Q-mathsize from add-general + +2003-03-27 Robin Fairbairns + + * faqbody.tex: v3.5.1c, today + + * filectan.tex: add ltablex + + * faqbody.tex (subsection{Tables, figures and diagrams}): refer + disparagingly to ltablex.sty + +2003-03-27 Robin Fairbairns + + * dirctan.tex: removed beginlatex again, having changed policy + + * faqbody.tex (section{Documentation and Help}): update tutorials to + reference "production" version of beginner's latex + + * dirctan.tex: mps2eps + + * faqbody.tex (section{Graphics}): reference mps2eps in "mp output in + gs" question + +2003-03-26 Robin Fairbairns + + * dirctan.tex: info/beginlatex + +2003-03-25 Robin Fairbairns + + * additions.tex: pl4.5a, today + + * add-general.tex (subsection{Mathematics}): new, Q on + \DeclareMathSizes + + * sanitize-beta.pl (sanitize_line): add a 5-argument form of \cmdinvoke + +2003-03-24 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): new, on format + error stymying + +2003-03-20 Robin Fairbairns + + * faqbody.tex: v3.5.1b, today + (subsection{Lists}): change \parsep to \parskip in patched definition + of itemize in q on compacting lists + (section{Introduction}): added simon law to list of helpers + +2003-03-17 Robin Fairbairns + + * add-general.tex (subsection{Particular font families}): added a + miktex url for font map management + +2003-03-15 Robin Fairbairns + + * faqbody.tex: v3.5.1a, today + + * filectan.tex: add excludeonly + + * faqbody.tex (subsection{Document management}): mention excludeonly in + Q-conditional + +2003-03-12 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): add a couple of keywords to + Q-dvips-pdf (at scott pakin's suggestion) + +2003-03-12 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): minor editorial + on Q-buffov + + * faqbody.tex: v3.5.1, today + +2003-03-11 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): up-to-date with sanitize.pl + + * sanitize.pl (sanitize_line): bunch of "g" qualifiers missing on and + after patterns for \cmdinvoke, and on \csx + + * faqbody.tex (section{Documentation and Help}): typo in Q-pkgdoc + (section{Documentation and Help}): typo in Q-mfptutorials + (section{Current TeX Projects}): separate "real" ~ from url so as to + avoid hacking by sanitize + (section{Current TeX Projects}): couple of typos in Q-mathml + (section{Current TeX Projects}): \textpercent mayn't be followed by {}, + so use \ for space + (section{The joy of TeX errors}): several small typos + + * Makefile (clean): add *.tpt (thumbpdf-related, afaict) + + * sanitize.pl: bring up to date with -beta + + * Makefile.CTAN: remove references to .lab files + + * additions.tex: pl4.5, today + + * add-general.tex (subsection{The Joy of TeX errors}): minor + tidies of Q-buffov + + * faqbody.tex: 3.5, today + (section{Hypertext and PDF}): tidy stuff in the distillation question + +2003-03-10 Robin Fairbairns + + * texfaq2file: bring up-to-date, too + + * texfaq2html: brought up-to-date with texfaq2html-beta + + * texfaq2html-beta: removed presetting of value in search fields + + * faqbody.tex (subsection{MF fonts}): editorials on bitmap fonts q + + * dirctan.tex: correct path for gsview + + * faqbody.tex: 3.5RC1, today + (section{Hypertext and PDF}): implement jose santos' remark about AR + +2003-03-08 Robin Fairbairns + + * filectan.tex: add latexcount + + * faqbody.tex (section{Support Packages for TeX}): mention latexcount + (section{Current TeX Projects}): use revised name for mftrace (was + pktrace) + +2003-03-07 Robin Fairbairns + + * faqbody.tex: today's date + (subsection{Why shouldn't I?}): \ss now now {} after it... + + * sanitize-beta.pl (sanitize_line): stupid change to \ss + + * texfaq2html-beta: patch in the google searching stuff + +2003-03-06 Robin Fairbairns + + * faqbody.tex: v3.4b.4, today + (subsection{Why shouldn't I?}): new subsection of "why does it do that" + +2003-03-05 Robin Fairbairns + + * dirctan.tex: add psnfssx-mathtime, and remove a couple of essentially + defunct mathtime directories + + * add-general.tex (subsection{Particular font families}): start of + question on installing mathtime + +2003-03-02 Robin Fairbairns + + * faqbody.tex (section{Graphics}): mention \epsfig in Q-impgraph + +2003-03-01 Robin Fairbairns + + * additions.tex: pl4.4c, yesterday + + * faqbody.tex: v3.4b.3, today + (section{TeX Systems}): yet more mucking about with the words about + tetex + + * dirctan.tex: tetex2->tetex, using current/ rather than 2.0/; restore + tetex-beta + + * faqbody.tex (section{Graphics}): mention withdrawal of tiff from + pdftex graphics + +2003-02-28 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): add decoding of \hphantom -- + converted to (another) gobble operation + (sanitize_line): don't detect an argument in regexps for \hphantom and + \nothtml (efficiency only) + + * filectan.tex: delete wrapfig + + * dirctan.tex: add wrapfig's new directory + + * faqbody.tex (subsection{Creating bibliographies}): Reconstructing bib + files from add-general + (section{Graphics}): graphics from somewhere else, from add-general + + * add-general.tex (subsection{Why shouldn't I}): oops: subsection + rename didn't take + + * faqbody.tex (section{Hypertext and PDF}): mention cm-super in type1T1 + +2003-02-27 Robin Fairbairns + + * texfaq2html-beta: add $host_[fd] for use in generate_CTAN_ref + + * sanitize-beta.pl (generate_CTAN_ref): tidy generation of http + references (which were ending up on $default_archive) + +2003-02-26 Robin Fairbairns + + * add-general.tex (subsection{Why shouldn't I?}): renamed from + "encoding" -- will go into "why does it _do_ that" + new question on why not use $$ for display maths in latex + + * faqbody.tex (section{Graphics}): correct \href in mentions of + hutchinson's paper + +2003-02-25 Robin Fairbairns + + * additions.tex: pl4.4b, today + + * sanitize-beta.pl (sanitize_line): add \ss{} + + * add-general.tex (subsection{Encoding (?~--- new)}): questions on + t1enc and on eliding inputenc-fontenc when the codings nearly match + + * faqbody.tex: v3.4b.2, today + (section{Graphics}): reference to hutchinson's graphics inclusion paper + +2003-02-24 Robin Fairbairns + + * filectan.tex: correct simpl-latex + + * dirctan.tex: add dvi2bitmap + +2003-02-21 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): corrected the address + for eric raymond on questions to get answers + +2003-02-19 Robin Fairbairns + + * texfaq2html-beta: add skip links to top of search, top of list of + questions, at very start, if the (now very long) intro is present + +2003-02-15 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): describe \jobname as a + primitive, not a "special macro" + +2003-02-14 Robin Fairbairns + + * faqbody.tex (subsection{Floating tables, figures, etc.}): prevent + \normalfont in the description env in Q-vertposfp \nothtml (also done + as running repair on source on web site) + +2003-02-13 Robin Fairbairns + + * texfaq2html-beta: remove extensive (but hugely incomplete) change log + at front of file; move def of $default_web, and define $href_script in + terms of it; two minor corrections to previous work + +2003-02-12 Robin Fairbairns + + * faqbody.tex: v3.4b.1, today + (section{Hypertext and PDF}): put comment from jose carlos santos in as + reminder of work needing to be done; note that gs8.00 is current (and + the date of the statement ;-), and claim that gs6.50 is the minimum + sensible; add proviso to recommendation of -G1 + +2003-02-10 Robin Fairbairns + + * texfaq2html-beta: set up protocols for new sanitize + + * texfaq2file: some updating w.r.t. latest texfaq2html + + * sanitize-beta.pl (generate_CTAN_ref): use of different protocols for + different things + + * add-general.tex (subsection{The Joy of TeX errors}): minor typo + +2003-02-09 Robin Fairbairns + + * additions.tex: date today + + * add-general.tex (subsection{Graphics}): and a bit more, to make the + thing make sense + (subsection{The Joy of TeX errors}): line too long for buffer error + +2003-02-08 Robin Fairbairns + + * add-general.tex (subsection{Graphics}): slight edit of yesterday's + question, to avoid bad line break + + * dirctan.tex: add tex2bib + + * add-general.tex (subsection{Creating bibliographies}): new question + on regenerating bibliographies + +2003-02-07 Robin Fairbairns + + * additions.tex: pl4.4a, today + + * add-general.tex (subsection{Graphics}): new question on \graphicspath + +2003-02-06 Robin Fairbairns + + * faq.sty: remove provisions for .lab files + + * all: checkin/release + + * faqbody.tex: changed date in first line + +2003-02-05 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): \ctanref to tetex (per se) + upgraded in windows section (talking about cygwin usage) + +2003-02-04 Robin Fairbairns + + * dirctan.tex: update tds + + * faqbody.tex: v4.3b, today + (section{Bits and pieces of TeX}): more tidying + +2003-02-04 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): reword talk about tetex around + current state of tetex2 + + * dirctan.tex: remove both instances of tetex 1.0 + +2003-02-03 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of TeX}): updated tds stuff, + after announcement of tds v1.0 + +2003-01-29 Robin Fairbairns + + * faq.sty: replace \CTAN with \@ctan@path + + * faqbody.tex: v3.4, today + (subsection{Typesetting specialities}): typo in Q-makeindex + (subsection{Typesetting specialities}): minor editorial in Q-verbfile + (subsection{Odds and ends}): there's no \CTAN macro! (error spotted by + Charles Cameron, in Q-bold-extras) + (section{Introduction}): credit CC, and now ... v3.4a + +2003-01-27 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): minor change to ensure match + between -beta and master version + + * texfaq2html-beta: match with master version (as far as poss) + + * faqbody.tex: 3.4RC4, today + (subsection{Page layout}): slightly less absolutist about samepage + environment in Q-nopagebrk + +2003-01-24 Robin Fairbairns + + * faqbody.tex: 3.4RC3, today + (section{TeX Systems}): add reference to tetex release candidates + (subsection{Page layout}): rewrite Q-abspos, to mention eso-pic + solution (which i learnt on c.t.t today) + (subsection{Page layout}): corrected statement of relation between + eso-pic and everyshi in Q-watermark + + * dirctan.tex: make testflow a browsable directory; add tetex2 + + * add-general.tex (subsection{Alternative document classes}): comment + on texpower expanded somewhat (must _really_ work on this some time) + +2003-01-21 Robin Fairbairns + + * dirctan.tex: ifmslide + + * add-general.tex (subsection{Alternative document classes}): make + reference to ifmslide (whatever that is) + +2003-01-17 Robin Fairbairns + + * faqbody.tex: 3.4RC2, today + (section{Adjusting the typesetting}): use a formulation of don + arseneau's for \sectionmark, in Q-runheadtoobig + +2003-01-16 Robin Fairbairns + + * dirctan.tex: add the catalogue + + * faqbody.tex (section{Acquiring the Software}): minor tidy in + Q-nonfree + (section{Acquiring the Software}): make reference to the catalogue in + Q-websearch + + * additions.tex: pl4.3i, today + + * faqbody.tex: v3.4RC1, today + + * sanitize.pl (generate_CTAN_ref): bring in updates from -beta + + * texfaq2html: bring in updates from -beta + + * faqbody.tex (section{The Background}): correct web address for + context + (section{Documentation and Help}): correct web address for metafun + (subsection{Footnotes}): Q-multfoot from add-general + (section{Acquiring the Software}): correct address for dante's upload + +2003-01-15 Robin Fairbairns + + * faqbody.tex: v3.3q, today + (section{Adjusting the typesetting}): slight adjustment of the text + referring to \sectionmark in runheadtoobig + +2003-01-14 Robin Fairbairns + + * texfaq2html-beta: split keyword lists and examine each separately, + case-independently (even) + + * faqbody.tex (section{Documentation and Help}): \url->\URL in writecls + +2003-01-06 Robin Fairbairns + + * faqbody.tex: v3.3p, today + + * additions.tex: pl4.3h, today + +2003-01-05 Robin Fairbairns + + * dirctan.tex: add ncctools + + * add-general.tex (subsection{Installing (La)TeX files}): editorial + work on the type1 cm fonts installation stuff. + (subsection{Footnotes}): question whose answer is manyfoot + + * faqbody.tex (section{Installing (La)TeX files}): mention /usr/local/ + share/texmf (suggestion from julian gilbey), and also suggest + kpsewhich as a source of the information for a tetex system + +2002-12-28 Robin Fairbairns + + * add-general.tex (subsection{Installing LaTeX files}): tidying + (perhaps even finishing!) the type 1 cmfonts installation question + +2002-12-24 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): more work on + cmfonts answer + +2002-12-17 Robin Fairbairns + + * faqbody.tex (subsection{Floating tables, figures, etc.}): Q-dpfloat, + Q-vertposfp from add-general + + * faq.sty: try forcing \l@section/\l@subsection onto next page if not + enough space (retracted ...) + +2002-12-09 Robin Fairbairns + + * add-general.tex (subsection{Installing (La)TeX files}): more work on + "installing CM type1" question + +2002-12-05 Robin Fairbairns + + * sanitize-beta.pl (generate_CTAN_ref): provide link terminator, in + case that the link doesn't have $ctanref_plus set true + + * texfaq2html-beta: forget about label "lastquestion", correct coding + of next/previous links in case of last question + +2002-12-04 Robin Fairbairns + + * sanitize-beta.pl (sanitize_line): first hopeful stab at multiple + formats (new file, copy of sanitize.pl) + + * texfaq2html-beta: first stab at provision for multiple format + directory retrieval + +2002-12-03 Robin Fairbairns + + * additions.tex: pl4.3g, today + + * add-general.tex (subsection{Floating tables, figures, etc.}): new + Q-vertposfp + +2002-11-29 Robin Fairbairns + + * faqbody.tex: v3.3o, today + (section{Documentation and Help}): move \CTANref of teencontrex to list + at end of question + (section{Documentation and Help}): refer to bibtex-doc-pdf in bibtex + docs question + (section{Format conversions}): move ref to html2latex to ctanrefs + (section{TeX Systems}): separate vtex-common in ctanrefs (twice) + (subsection{\MF fonts}): tidy up references in "running mf" q + (subsection{Document structure}): move ctan reference for abstract.sty + in Q-onecolabs + (section{Current TeX Projects}): move reference to ltx3pub + (subsection{Alternative document classes}): slight modification of ctan + references in Q-letterclass + + * dirctan.tex: add bibtex-doc-pdf + +2002-11-26 Robin Fairbairns + + * additions.tex: pl4.3f, today + + * faqbody.tex: v3.3n, today + (subsection{Document structure}): Q-pagebychap from add-general + (section{Documentation and Help}): Q-pkgdoc from add-general + + * add-general.tex (subsection{Floating tables, figures, etc.}): new + answer Q-dpfloat + (subsection{Page Layout}): minor editorial + + * faqbody.tex (subsection{Tables of contents and indexes}): refer to + spliti[n]d[e]x in Q-multind + + * dirctan.tex: add splitindex + +2002-11-25 Robin Fairbairns + + * faqbody.tex (subsection{Adobe Type1 ("PS") fonts}): more editorials + +2002-11-24 Robin Fairbairns + + * additions.tex: pl4.3e, today + + * add-general.tex (subsection{Documentation and help}): editorial + corrections to documentation question + + * faqbody.tex + (throughout): editorial corrections noted on train... + +2002-11-23 Robin Fairbairns + + * filectan.tex: add chappg + + * add-general.tex (subsection{Page Layout}): new question on page nos + by chapter + +2002-11-22 Robin Fairbairns + + * add-general.tex (subsection{Documentation and help}): new question on + package documentation + + * faqbody.tex (section{Bits and pieces of TeX}): slight tidy of Q-dtx + +2002-11-21 Robin Fairbairns + + * add-general.tex (subsection{Alternative document classes}): point at + miwie.org comparison of things in Q-slidecls + + * faqbody.tex (subsection{Mathematics}): add example of coding \qedhere + in Q-proof + +2002-11-20 Robin Fairbairns + + * faqbody.tex: v3.3l, today + (subsection{Mathematics}): typo left "i" at very end of answer + (subsection{Typesetting specialities}): note documentation of path and + url in Q-setURL + (subsection{Common errors}): note documentation of url and verbdef in + Q-verbwithin + +2002-11-19 Robin Fairbairns + + * faqbody.tex: v3.3k, today + (subsection{Typesetting specialities}): Q-overstrike from add-general + (subsection{Mathematics}): Q-cancel from add-general + (subsection{Hyphenation}): typo in Q-hyphoff + +2002-11-18 Robin Fairbairns + + * dirctan.tex: add eso-pic; remove ref2bib (which has gone, and whose + replacement's name i've forgotten) + + * faqbody.tex (subsection{Page layout}): separate references to eso-pic + and everyshi + +2002-11-14 Robin Fairbairns + + * faqbody.tex: v3.3j, today + (subsection{Page layout}): mention \filbreak in question about + suppressing page breaks + (subsection{Making things stay where you want them}): mention the + (common) need to load ulem with normalem option + + * additions.tex: pl4.3d, today + + * filectan.tex: add cancel + + * add-general.tex (subsection{Mathematics}): cancel.sty + (subsection{Typesetting specialities}): overstriking + +2002-11-13 Robin Fairbairns + + * faqbody.tex: v3.3i, today + (subsection{Common misunderstandings}): make clear what is actually + being redefined with \usepackage[overload]{textcase} + +2002-11-12 Robin Fairbairns + + * additions.tex: pl4.3c, today + + * add-general.tex (subsection{Installing (La)TeX files}): more scribble + on installing font files + + * faqbody.tex: v3.3h, today + (section{Installing (La)TeX files}): correct location of font source + files, and mention font families all in one directory + +2002-11-10 Robin Fairbairns + + * faqbody.tex (subsection{Creating bibliographies}): a bit more on the + capitalisation question + +2002-11-09 Robin Fairbairns + + * faqbody.tex: v3.3g, today + (section{The Background}): tidy eplain answer and add reference to the + project home page + +2002-11-06 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): minor typo in + non-html stuff on wrapfigure + (subsection{"Generic" macros}): slight iteration of active chars q + v3.3f, today + +2002-11-05 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros}): hacking to get html right + in active chars question + + * sanitize.pl (sanitize_line): remove requirement for {} after \textbar + +2002-11-01 Robin Fairbairns + + * additions.tex: pl4.3b, today + + * add-general.tex (subsection{Installing (La)TeX files}): another whole + paragraph for the question about installing fonts + + * faqbody.tex: v3.3e, today + (subsection{LaTeX macros}): make reference to newcommand in the + question about multiple optional arguments + + * dirctan.tex: add newcommand + + * faqbody.tex (subsection{"Generic macros}): more work on don A's + stuff + +2002-10-30 Robin Fairbairns + + * faqbody.tex (subsection{"Generic" macros}): mods to make tilde appear + in html output... + (subsection{"Generic" macros}): first pass at getting don A's revised + answer for activechars in (much interrupted -- needs checking) + +2002-10-29 Robin Fairbairns + + * faqbody.tex (subsection{Lists}): Q-interruptlist from add-general + v3.3d, today + +2002-10-17 Robin Fairbairns + + * additions.tex: pl4.3a, today + + * add-general.tex (subsection{Lists}): new question on suspending and + resuming lists + + * faqbody.tex: v3.3c, today + (section{Format conversions}): add mayer.dial.pipex.com samples url to + latex->html question (they *really* make tex4ht look good ;-) + +2002-10-14 Robin Fairbairns + + * dirctan.tex: add rcsinfo + + * faqbody.tex: v3.3b, today + (subsection{Document management}): refer to rcsinfo (ex norman gray) + + * Makefile (throughout): tabs before thumbpdf and following $(PDFLATEX) + seem to have gone missing -- reinstated + +2002-10-12 Robin Fairbairns + + * Makefile: add heiko's modification to run thumbpdf + + * faq.sty: new version from heiko; slight patch to do \@ReturnAfterFi + at outer level since i'm experiencing problems with it where he had + defined it + + * faqbody.tex (subsection{Document structure}): add a proviso about + sections in the question on marks different from the toc entry + (section{Symbols, etc.}): mention euro-ce + +2002-10-11 Robin Fairbairns + + * dirctan.tex: added euro-ce + +2002-10-08 Robin Fairbairns + + * faqbody.tex: v3.3, today + +2002-10-06 Robin Fairbairns + + * newfaq-patch.tex: remove a redundant \Dings + + * add-general.tex (subsection{LaTeX macro programming}): bit more of + non-equivalences between latex and plain commands + + * faqbody.tex (subsection{Page layout}): parallel setting from + add-general + + * add-general.tex (subsection{Page layout}): remove reference to nrc + classes in parallel setting question (they're not _that_ wonderful in + this context) + +2002-10-01 Robin Fairbairns + + * add-general.tex (subsection{Bits and pieces of TeX}): give skips + question a label (warned by new faq.sty ;-) + + * Makefile.CTAN (all): add (letterfaq|newfaq).lab, remove + newfaq.workers + + * Makefile (clean): remove pdf-newfaq-patch.tex, *.lab + + * newfaq.tex,newfaq-patch.tex,letterfaq.tex: \labellist + + * faq.sty: added \labellist stuff; make \Question complain if no label + + * faqbody.tex (throughout): final touches to last night's additions + +2002-09-30 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): add nopagebrk from add-general + (subsection{Hyphenation}): add wdnohyph from add-general + (subsection{Floating tables, figures, etc.}): 2 >1 column floats + questions from add-general + (section{Graphics}): topgraph from add-general + (subsection{Document management}): inclplain from add-general + (section{Symbols, etc.}): tradesyms from add-general + +2002-09-30 Robin Fairbairns + + * faqbody.tex: v3.2e, today + (subsection{Adobe Type 1 ("PS") fonts}): put version number on the + dvips that doesn't do charshift + + * add-general.tex (subsection{Alternative document classes}): start + question on producing slides + + * dirctan.tex: move foiltex to nonfree, to reflect reality, add + prosper, ppower4 + +2002-09-29 Robin Fairbairns + + * additions.tex: today's date, no change of version + + * add-general.tex (subsection{Page layout}): question on parallel + setting of texts + + * dirctan.tex: add parallel + +2002-09-27 Robin Fairbairns + + * add-general.tex (subsection{Symbols}): new question on trade symbols + + * additions.tex: pl4.2i, today + +2002-09-26 Robin Fairbairns + + * additions.tex: pl4.2h, today + + * add-general.tex (subsection{Floating tables, figures, etc.}): new + questions about single-column floats in multicols, and bottom- + placement of double-column floats in twocolumn + +2002-09-25 Robin Fairbairns + + * add-general.tex (subsection{Graphics}): new answer on top-aligning + + * additions.tex: pl2.4g, today + + * faqbody.tex: v3.2d, today + (section{Documentation and Help}): small tidying of book list + + * add-general.tex (subsection{Page Layout}): mention \enlargethispage + in "keeping things together on the page" + (subsection{LaTeX macro programming}): expand for tidiness sake + +2002-09-24 Robin Fairbairns + + * additions.tex: pl4.2f, today + + * faqbody.tex: v3.2d, today + (subsection{Document structure}): two questions from add-general + (subsection{Document management}): how many pp, from add-general + (section{Graphics}): limit width, from add-general + (subsection{Floating tables, figures, etc.}): extra vertical space from + add-general + + * add-general.tex (throughout): several minor editorials + +2002-09-23 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macros}): question plain commands + in latex code + (subsection{How do I \dots{}?~--- somewhere}): plain.sty question + + * faqbody.tex (section{How do I do ...?}): another change of name + +2002-09-20 Robin Fairbairns + + * faqbody.tex (subsection{Floating tables, figures, etc.}): new section + heading for explicit float things (currently only floats on their own + float pages) + + * add-general.tex (subsection{Graphics}): limit graphics width to page + (subsection{Floating tables, figures, etc.}): witter about vertical + space in figures + + * additions.tex: pl4.2e, today + + * faqbody.tex (subsection{Page layout}): slight tidy of watermark q's + ctanrefs env + + * dirctan.tex: add totpages + + * add-general.tex (section{Where? --- sort of support?}): "number of + pages in the document?" answer + +2002-09-18 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): booktabs _is_ + now compatible with at least some other table packages... + + * add-general.tex (subsection{Document structure}): add "page n of m" + + * filectan.tex: add mtw + + * faqbody.tex (section{Documentation and Help}): mention mtw on ctan + +2002-09-17 Robin Fairbairns + + * faqbody.tex: v3.2c, today + (section{Documentation and Help}): restore "making tex work" in the + books section, note that it's out of (print|date), and add link to + tutorials, which now lists sourceforge url + +2002-09-16 Robin Fairbairns + + * add-general.tex (subsection{Document structure}): new question about + fitting text into the running head. + + * faqbody.tex: v3.2b, today + (section{TeX Systems}): mention some vim scripts + (subsection{Mathematics}): moved Q-braket in here + (subsection{Page layout}): moved "changing margins" in here + + +2002-09-15 Robin Fairbairns + + * dirctan.tex: add pdftricks + + * faqbody.tex (section{Graphics}): reference pdftricks in the answer + about alternative drawing systems + +2002-09-13 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): tidy up "editors" entry for + ms-dos (for tidiness' sake, rather than because of the intrinsic + importance of the subject matter ;-) + +2002-09-12 Robin Fairbairns + + * faqbody.tex: v3.2a, today + (section{TeX Systems}): text on vim from schröcker + (section{Introduction}): mention schröcker + + * add-general.tex (subsection{Hyphenation}): rather feeble answer on + suppressing hyphenation of words + + * dirctan.tex: concmath is in supported... + + * additions.tex: pl4.2d, today + + * filectan.tex: add needspace, add .gz to latex209.tar + + * add-general.tex (subsection{Page Layout}): complete \needspace + question + +2002-09-11 Robin Fairbairns + + * add-general.tex (subsection{Page Layout}): start of a question on + keeping things on the same page + + * faqbody.tex (section{Graphics}): typo in dvipsgraphics + +2002-09-10 Robin Fairbairns + + * faq.sty: tidy up after stupidity working on text annotations in + pdf version (which preserved as botched-faq.sty) + +2002-09-10 Robin Fairbairns + + * faqbody.tex (subsection{LaTeX macros}): typo in "finding macros" + v3.2, today + +2002-09-09 Robin Fairbairns + + * faqbody.tex (subsection{Spacing of characters and lines}): remove + reference to tracking.sty, following notice of its bug + +2002-09-09 Robin Fairbairns + + * additions.tex: pl4.2c, today + + * faqbody.tex: v3.1c, today + (subsection{Creating citations}): "References from the bibliography to + the citation" from add-general + (section{Graphics}): "Labelling graphics" from add-general + (subsection{LaTeX macros}): "The definitions of LaTeX commands" from + add-general + (section{The joy of TeX errors}): add "missing $" and "font shape not + available" from add-general + + * add-general.tex (subsection{LaTeX macros}): editorial + (subsection{The Joy of TeX errors}): editorial + (subsection{Bibliographies (somewhere)}): editorial + (subsection{Graphics}): editorial + + * faq.sty: add a \toclevel@question with a view to shutting hyperref up + a bit + + * faqbody.tex (subsection{Page layout}): bit more description of + eso-pic (from a post by rolf niepraschk) + +2002-09-08 Robin Fairbairns + + * faqbody.tex (subsection{Document structure}): since i'm more informed + about titlesec, i might as well instruct the world as well... (losing + the reference to titletoc in passing -- dunno about that yet) + + * dirctan.tex: add citeref + + * add-general.tex (subsection{Bibliographies (somewhere)}): backwards + reference to citation answer + + * additions.tex: pl4.2b, today + + * add-general.tex (subsection{The Joy of TeX errors}): answer on font + substitution messages (at long last!!!) + + * filectan.tex: add type1ec + + * dirctan.tex: add type1cm + + * faqbody.tex: v3.1b, today + (subsection{Particular font families}): incorporate small correction + from José Carlos Santos + +2002-09-07 Robin Fairbairns + + * dirctan.tex: add overpic + + * add-general.tex (subsection{Graphics}): first stab at answer on + overlaying text on figures + +2002-09-06 Robin Fairbairns + + * add-general.tex (subsection{The Joy of TeX errors}): $ missing answer + +2002-09-06 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macros}): tidy and slightly expand + yesterday's work + +2002-09-05 Robin Fairbairns + + * faqbody.tex (section{Graphics}): add a label Q-impgraph + v3.1a, today + (section{Documentation and Help}): added "a tex primer for scientists" + (section{Introduction}): add Hartmut Henkel to list of helpers + (section{Literate programming}): promote noweb (which supersedes + spidery web) + v3.1a.1 (patched prior to re-release) + + * additions.tex: pl4.2a, today + + * add-general.tex (section{LaTeX macros}): tweak finding macro question + +2002-09-05 Robin Fairbairns + + * add-general.tex (section{LaTeX macros}): new answer: finding macro + definitions + +2002-09-04 Robin Fairbairns + + * faqbody.tex (subsection{Alternative document classes}): "replacing + the standard classes" from add-general + (subsection{LaTeX macros}): "presentation of section numbers" from + add-general + + * add-general.tex (subsection{LaTeX macros}): editorial on seccntformat + answer + + * faqbody.tex: v3.1, today + (section{Documentation and Help}): replace mention of uk tug (after + list of books) with notes on contributing + (section{Acquiring the Software}): editorial stuff; remove reference to + decus tape distribution + (section{\acro{DVI} Drivers and Previewers}): remove reference to decus + distribution holding a copy of dvips + (section{Format conversions}): remove troff translator in decus dist + +2002-09-03 Robin Fairbairns + + * add-general.tex (subsection{LaTeX macros}): add actual body to + \@seccntformat question + + * filectan.tex: add sober + + * add-general.tex (subsection{Alternative document classes}): editorial + on standard classes answer + + * dirctan.tex: add pstoedit and purifyeps + + * faqbody.tex (section{Graphics}): mention purifyeps in pdf question, + as route to something includable by pdflatex + +2002-09-03 Robin Fairbairns + + * faqbody.tex: v3.0.1v, today + (section{Documentation and Help}): moved ctan references out to + ctanrefs env after book list + + * additions.tex: pl4.1m, today + + * add-general.tex (subsection{Alternative document classes}): long- + awaited answer on ntgclass, koma-script and memoir + + * faqbody.tex (subsection{"Generic" macros}): defining characters, + active characters in command arguments, defining characters from + command arguments, and transcribing latex commands, from add-general + (subsection{Particular font families}): new section, to hold "using + concrete fonts", from add-general + (subsection{Document management}): add makefiles q from add-general + + * add-general.tex (subsection{How do I do X in (La)TeX}): editorial on + makefiles question + (subsection{Macro programming}): "macros from command arguments" solely + in terms of plain programming + (subsection{Fonts (or something)}): couple more editorials on concrete + + * faqbody.tex (section{Graphics}): moved "making \mp graphics display" + into this section + (subsection{Alternative document classes}): moved "other document font + sizes" into this section + (subsection{Typesetting specialities}): moved code listings up to top + of section + +2002-09-02 Robin Fairbairns + + * locations.mk: add FTPDIR + + * Makefile (inst-html): goes to $(FTPDIR) + + * add-general.tex (subsection{Macro programming}): rebalance + "characters commands as commands" and "active chars in command + arguments" + + * dirctan.tex: add concmath-f (the fonts) + + * add-general.tex (subsection{Fonts (or something)}): tidy up, and add + ctan references to the fonts mentioned + + * faqbody.tex (section{Fonts}): new section, to include metafont stuff + and postscript font issues (was \MF and \MP, and \PS and \TeX) + (section{Graphics}): new section, from add-general, plus \MP in + ghostscript (from old \MF and \MP) and drawing stuff from tables, + figures and diagrams + v3.0.1u, today + (subsection{Making things stay where you want them}): mention + flafter.sty in Q-floats + +2002-08-30 Robin Fairbairns + + * dirctan.tex: add latexmake + + * Makefile.CTAN (all): add Makefile itself + + * Makefile (ctan): remove commented-out ftp target + + * add-general.tex (subsection{How do I do X in (La)TeX}): more work on + the Makefile question (really for doc management, now, i suppose) + + * locations.mk: new file of "private" locations, that won't go on CTAN + + * Makefile: move explicit locations out to locations.mk + + * dirctan.tex: texhax is browsable + + * faqbody.tex (section{You're still stuck?}): typos/minor corrections + to latex bug and additions to the faq questions + (section{The joy of \TeX{} errors}): typend and unkgrfextn from + add-general + v3.0.1t, today + + * sanitize.pl (sanitize_line): add \pkgoption + + * faq.sty: add \pkgoption + + * add-general.tex (subsection{The Joy of TeX errors}): amalgamated + graphics extension bit with earlier one + + * additions.tex: pl4.1k, today + + * filectan.tex: add gkpmac + + * dirctan.tex: add ccfonts and concmath + + * add-general.tex (subsection{Fonts (or something)}): new subsection + for question from josé carlos santos about concrete + +2002-08-29 Robin Fairbairns + + * add-general.tex (subsection{Graphics}): provide some sort of + completion for pdftex graphics question, and do first version of dvips + graphics + (subsection{The Joy of TeX errors}): tidy up "... say \end" + + * dirctan.tex: add jpeg2ps, bmeps + + * filectan.tex: add resume + + * dirctan.tex: add currvita + + * faqbody.tex (subsection{Alternative document classes}): update + curriculum vita question with rec for currvita + (section{Introduction}): hans nordhaug to list of contributors + + * additions.tex: pl4.1j, today + + * add-general.tex (subsection{"Generic" macros}): first pass of + \newcommand answer complete (do we need \@ifundefined, \@ifnextchar?) + +2002-08-25 Robin Fairbairns + + * faqbody.tex (section{PS and TeX}): editorial from santos + +2002-08-24 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): mention pdflscape.sty in the + landscape question + v3.0.1r, today + +2002-08-23 Robin Fairbairns + + * faqbody.tex (subsection{Footnotes}): make reference to \footref in + "texts are identical" + + * add-general.tex (subsection{Installing AllTeX files}): editorials + + * faqbody.tex (subsection{Document management}): mention \gobble and + \iffalse ... \fi in "comments" question + + * sanitize.pl (sanitize_line): add cmdinvoke with mandatory argument + followed by optional one + + * dirctan.tex: add subfiles + + * faqbody.tex (subsection{Alternative document classes}): add reference + to subfiles system in "report from lots of articles" + v3.0.1q, today + + * additions.tex: pl4.1i, today + + * add-general.tex (subsection{The joy of TeX errors}): new answer (from + a post by heiko oberdiek), about "unknown graphics extension" + +2002-08-21 Robin Fairbairns + + * faqbody.tex (subsection{Tables of contents and indexes}): editorials, + including rearranging "unnumbered sections in toc" + (subsection{Typesetting specialities}): editorials + (subsection{Tables, figures and diagrams}): editorials + + * add-general.tex (subsection{"Generic" macros}): first paragraph of + question on understanding latex command declarations + + * faqbody.tex (section{Bits and pieces of TeX}): minor editorials + (section{Bibliographies and citations}): minor editorials, split into + subsections + (section{PS and TeX}): excise any mention of mathpple + + * filectan.tex: give TeX-FAQ a filename (ha ha) + + * dirctan.tex: remove TeX-FAQ (the old faq) + +2002-08-20 Robin Fairbairns + + * faqbody.tex (subsection{Typesetting specialities}): talk down + dropping package in Q-dropping (ha ha) + (subsection*{Finding the Files}): slight editorial + (section{The Background}): various holiday editorials + (section{Documentation and Help}): added joy of tex to list of books(!) + v3.0.1p, today + +2002-08-02 Robin Fairbairns + + * faqbody.tex: + 3.0.1o, today + (sections{The Background,Bits and pieces of TeX}): minor tidies and + updates + +2002-07-31 Robin Fairbairns + + * additions.tex: pl4.1h, today + + * add-general.tex + (subsections{Generic and LaTeX macros}): frameworks for a couple of new + questions + + * faqbody.tex + v3.0.1n, today + (section{Macro programming}): split into two halves, "generic" and + latex + +2002-07-29 Robin Fairbairns + + * faqbody.tex + (section{Documentation and Help}): add wilkins' pllong.pdf to the + tutorials section + v3.0.1m, today + +2002-07-25 Robin Fairbairns + + * faqbody.tex: today's date + (section{Symbols, etc.}): add mention of encoding problems, and suggest + \char`\_, in underscore question + +2002-07-24 Robin Fairbairns + + * faqbody.tex (subsection{Tables, figures and diagrams}): add stabular + to the long table stuff + v3.0.1l, today + +2002-07-23 Robin Fairbairns + + * faqbody.tex: v3.0.1k, today + (section{Bits and pieces of TeX}): record that ec fonts don't cover all + sami languages + (section{Introduction}): add Regnor Jernsletten to helpers' list + +2002-07-21 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): change \htmlonly to \nothtml in + Y&Y entry (!) + + * sanitize.pl (sanitize_line): move \htmlonly down with the other two + + * faqbody.tex (section{Current TeX Projects}): micro-typo in doc prep + (section{Bits and pieces of TeX}): \nothtml problem in encodings + (section{PS and TeX}): add licence remark to txfonts and pxfonts + (section{PS and TeX}): mention dvips -G1 bugfix (which version is it?) + v3.0.1j, today + +2002-07-18 Robin Fairbairns + + * sanitize.pl (sanitize_line): moved \nothtml and \latexhtml to the end + of the big block of conversions, so their arguments get processed + before they do (probably need to do same for other similar commands) + + * faqbody.tex (section{The Background}): \begin{footnoteenv} on a line + by itself (and three other places in the document) + (subsection{Things have "gone away"}): typo correction for msx/y font + ctanrefs environment + v3.0.1i, today + (section{Installing AllTeX files}): add Q-miktexinst from add-general + (section{The Background}): also tidy Q-MP + +2002-07-16 Robin Fairbairns + + * add-general.tex (subsection{Installing AllTeX files}): more work on + the cm-pfb fonts question + +2002-07-14 Robin Fairbairns + + * add-general.tex (subsection{Installing AllTeX files}): correct typos; + add disclaimer about miktex failing to know about a package + +2002-07-12 Robin Fairbairns + + * additions.tex: pl4.1g, today + + * add-general.tex (subsection{Installing (La)TeX files}): new question + about installing from miktex + + * faqbody.tex:: v3.0.1h, today + (section{Installing (La)TeX files}): make reference to new question on + miktex installation + +2002-07-10 Robin Fairbairns + + * additions.tex: pl4.1f, today + + * add-general.tex (subsection{Installing AllTeX files}): bit of editing + of the cm-type1 question + +2002-07-08 Robin Fairbairns + + * faqbody.tex: today's date + (section{Format conversions}): added info (from Alejandro Lopez- + Valencia) about using acrobat 5 to produce output via word 2000 (!) + +2002-07-07 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): add system and OS info + to the list of things people should report, when appropriate. + + * add-general.tex (subsection{Installing AllTeX files}): start on + questions about installing fonts, and installing type 1 cm in + particular + + * faqbody.tex (section{MF and MP}): make the reference to bluesky to + mention browsing + v3.0.1g, today + + * dirctan.tex: Make bluesky browsable + +2002-06-28 Robin Fairbairns + + * faqbody.tex: today's date (not changing minor version number) + (section{Support Packages for TeX}): correct support reference for + xfig, and mention jfig in that question + +2002-06-27 Robin Fairbairns + + * faqbody.tex (subsection{Common misunderstandings}): minor usage mods + in "rerun" question, suggested by john palmieri + + * sanitize.pl (sanitize_line): remove \end{document} + + * faqbody.tex: v3.0.1f, today + +2002-06-22 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): correct address for + Peter Flynn's intro, which has moved with site re-org + 3.0.1e, today + +2002-06-18 Robin Fairbairns + + * faqbody.tex (subsection{Page layout}): mention full document in + landscape orientation in landscape question, and include geometry for + that + v3.0.1d, today + +2002-06-14 Robin Fairbairns + + * faqbody.tex (section{Current TeX Projects}): url for x-symbol + v3.0.1c, today + +2002-06-13 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): CTAN-refer to oberdiek + + * dirctan.tex: add epstopdf, rename pagesel as oberdiek + + * add-general.tex (subsection{Graphics}): start on pdftex question + + * faqbody.tex (subsection{Mathematics}): deal with overflowing column + in second example definition of "log-like" \diag + +2002-06-11 Robin Fairbairns + + * Makefile.CTAN: removed required-questions + +2002-06-10 Robin Fairbairns + + * faqbody.tex (three places): remove \Destination commands + v3.0.1a, today + +2002-06-09 Robin Fairbairns + + * faqbody.tex: v3.0.1, today + (section{Current TeX Projects}): web2c* for sources; final editorial + work on document prep question + (section{DVI Drivers and Previewers}): weasel words around dvilj + + * dirctan.tex: add web2c*; remove pdftex, dviljk; update + french-(le|pro) + +2002-06-07 Robin Fairbairns + + * faqbody.tex (subsection{Typesetting specialities}): "typesetting a + file in verbatim" -> drop the "in" + (section{Current TeX Projects}): typo in the web question + (section{Current TeX Projects}): several gross typos in the wysiwyg + question, and new intro para + v3.0h, today + +2002-06-06 Robin Fairbairns + + * faqbody.tex: v3.0g, today + (section{Current TeX Projects}): new question re-derived from david + kastrup's input on wysiwyg + (section{The Background}): david kastrup's stuff moved away from here + + * sanitize.pl (sanitize_line): rearrange deckchairs slightly so + \cmdinvoke "long forms" are scanned before shorter equivalents + + * faqbody.tex (subsection{Spacing of characters and lines}): minor + reword to change emphasis of doublespace document + +2002-06-05 Robin Fairbairns + + * faqbody.tex: v3.0f, today + (section{Macro programming}): correct minor think-o in opt args + question yesterday + (section{The Background}): lots more editorial work on wysiwyg + + * texfaq2html-beta: require sanitize-beta.pl + + * Makefile (inst-perl-beta): install sanitize-beta + +2002-06-04 Robin Fairbairns + + * faqbody.tex (section{The Background}): moved wysiwyg question over + (section{Macro programming}): the two command argument answers, too + + * additions.tex: pl4.1e, today + + * add-general.tex (subsection{Macro programming}): new answer on >1 + optional argument + (subsection{The background}): editorial work on david kastrup's + splendid contribution + (subsection{Macro programming}): added ctanrefs for Q-moren9 + + * sanitize.pl (sanitize_line): add \cmdinvoke{name}[opt] + +2002-06-02 Robin Fairbairns + + * faqbody.tex (subsection{Mathematics}): refer to amsthm proof env + +2002-06-01 Robin Fairbairns + + * faqbody.tex (section{Installing AllTeX files}): add .mf to wherefiles + +2002-05-27 Robin Fairbairns + + * add-general.tex (subsection{The background}): revision of wysiwyg + question, courtesy of david kastrup + + * dirctan.tex: added texmacs and preview-latex + +2002-05-26 Robin Fairbairns + + * texfaq2file: distinguish sections and subsections in index.html, and + change the trailer of each question to be a bit like that of the web + version + + * texfaq2html,texfaq2html-beta: distinguish sections and subsections in + the listing of questions at the start + +2002-05-25 Robin Fairbairns + + * filectan.tex,dirctan.tex,faqbody.tex: uktug-faq -> faq throughout + (file names as well as email address) + + * Makefile (inst-html): add README + + * README: first stab at this; done for thomas esser's benefit + + * Makefile.CTAN: replace 00readme with README, add sanitize.pl and + texfaq2file + + * additions.tex: pl4.1c, today + + * faqbody.tex (section{Documentation and Help}): typo in words about + tex-by-topic on web, so reworded slightly, too + v3.0d, today + + * add-general.tex (subsection{Macro programming}): added question on >9 + arguments + (subsection{Graphics}): finished first pass on general question; added + headers for dvips and pdflatex graphics + +2002-05-23 Robin Fairbairns + + * additions.tex: pl4.1b, today + + * filectan.tex: add epsf.tex + + * add-general.tex (subsection{Graphics}): start of a witter about + graphics inclusion in general + + * dirctan.tex: add dtxtut + + * faqbody.tex: v3.0c, today + (section{Bits and pieces of TeX}): add ref to dtxtut + +2002-05-22 Robin Fairbairns + + * faqbody.tex (subsection{Document management}): rename question to + "conditional compilation and comments" + +2002-05-21 Robin Fairbairns + + * faqbody.tex (section{PS and TeX}): mathpazo now v1.003 + + * Makefile (ctan): use newly-defined $CTAN_ROOT and $CTAN_HOME + + * faqbody.tex (section{Symbols, etc.}): redo text about euro in light + of the discovery that the commission now accepts non-sans symbols + v3.0b, today + +2002-05-16 Robin Fairbairns + + * faqbody.tex (section{Macro programming}): \p@enumii needs + \renewcommand + + * add-general.tex (subsection{Macro programming}): tidy and extend + catcodes question + + * faqbody.tex (section{PS and TeX}): removed \acro round micropress + font name "capitals" part, and corrected "ps math"->"pa math"(!) + (section{Bibliographies and citations}): reword answer on multiple + citations + +2002-05-15 Robin Fairbairns + + * faqbody.tex (subsection{Document structure}): balancing columns (as + amended) from add-general + (subsection{Alternative document classes}): letter classes from add- + general + v3.0a, today + +2002-05-15 Robin Fairbairns + + * add-general.tex (subsection{How do I do X in (La)TeX}): remove + reference to baltools in "balancing columns" question + (subsection{Alternative document classes}): twiddle the wording a bit + (subsection{Macro programming}): more scribbling in "defining macro + from argument" + +2002-05-14 Robin Fairbairns + + * dirctan.tex: added testflow + +2002-05-14 Robin Fairbairns + + * dirctan.tex: add akletter, dinbrief, newlfm; remove aladdin + + * additions.tex: pl4.1, today + + * add-general.tex (subsection{Alternative document classes}): letter + classes + +2002-05-13 Robin Fairbairns + + * sanitize.pl (sanitize_line): \WYSIWYG translate as WYSIWYG(!) + + * additions.tex: pl4.0, today + + * faqbody.tex: v3.0, today + + * texfaq2html: added provision for subsections + + * faqbody.tex (section{Format conversions}): add latex->plain from + add-general + (section{The Background}): latex<->plain from add-general + (subsection{Document structure}): "really blank pages" from add-general + (subsection{Typesetting specialities}): decimal comma from add-general + (subsection{Document management}): RCS question from add-general + (subsection{Typesetting specialities}): breaking boxes from add-general + (subsection{Tables, figures and diagrams}): floats on their own float + pages from add-general + +2002-05-10 Robin Fairbairns + + * faqbody.tex (section{Things are Going Wrong...}): rearranged, and + stuff moved out; suppressed question about miktex format creation + (section{PostScript and TeX}): moved charshift in here for want of + anything better... + (subsection{Page layout}): landscape orientation (from "specialities") + + * add-general.tex (subsection{Format Conversions}): for part of the + latex->tex question (also edited a bit) + + * additions.tex: pl3.9m, today + + * faqbody.tex (section{You're still stuck?}): split bug question in + two, taking stuff from add-general + (section{Documentation and Help}): "how to ask a question" from + add-general + (section{Bibliographies and citations}): "bib->html" from add-general + (section{The Background}): add explanation of the acronym in the + wysiwyg question + v2.5.8u, today + +2002-05-08 Robin Fairbairns + + * additions.tex: pl3.9l, today + + * add-general.tex (subsection{You're still stuck?}): add details of + using the bugs web page to question on latex bug reports + (subsection{How do I do X in (La)TeX}): tidy wrapping in norman gray's + question + +2002-05-07 Robin Fairbairns + + * dirctan.tex: add rcs + + * add-general.tex (subsection{How do I do X in (La)TeX}): rcs question, + courtesy of norman gray + + * additions.tex: pl3.9k, today + + * faqbody.tex (section{TeX Systems}): tidied text about cygwin + +2002-05-06 Robin Fairbairns + + * faqbody.tex: v2.5.8t, today + (section{TeX Systems}): add reference to tetex for cygwin + +2002-04-30 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): added peter flynn's + tutorial to tutorials question + + * add-general.tex (subsection{Documentation and Help}): new question on + how to formulate questions (self-referential or what?) + (subsection{The Background}): minor tidy of translation question + (throughout): removed most \Destination commands + + * additions.tex: pl3.9j, today + + * faqbody.tex: v2.5.8s, today + (section{Documentation and Help}): reword text about google + +2002-04-29 Robin Fairbairns + + * faqbody.tex: various questions moved around and subsections created + +2002-04-29 Robin Fairbairns + + * faqbody.tex (section{DVI Drivers and Previewers}): suppress + suggestion that dvips is readily available + +2002-04-28 Robin Fairbairns + + * faqbody.tex: changed date to today + + * dirctan.tex: added feyn + + * faqbody.tex (subsection{Tables, figures and diagrams}): correct + ctanrefs references to picins; put picins at the end of the list in + the body of the answer + (subsection{Footnotes}): mention the "table notes" feature of + threeparttable + (subsection{Tables, figures and diagrams}): refer to feyn font package + +2002-04-27 Robin Fairbairns + + * faqbody.tex (subsection{Common misunderstandings}): correction and + improvement to Q-marginparside from Norman Gray + v2.5.8r, today + +2002-04-19 Robin Fairbairns + + * dirctan.tex: removed three directories that no longer exist + (including dviware/dvipsk) + +2002-04-16 Robin Fairbairns + + * additions.tex: pl3.9i, today + + * add-general.tex: 3 questions->faqbody + + * faqbody.tex: v2.5.8q, today + (subsection{Tables of contents and indexes}): bibliography and index in + toc from add-general + (subsection{Tables, figures and diagrams}): strutting tables, and long + tables from add-general + +2002-04-08 Robin Fairbairns + + * faqbody.tex (subsection{Something or other}): add mention of tracking + to the letterspacing question + + * filectan.tex: added tracking.sty + +2002-03-11 Robin Fairbairns + + * additions.tex: pl3.9h, today + + * faqbody.tex: bunch more shifting around of questions + v2.5.8p, today + (section{Current TeX Projects}): textrace question, from add-general + + * faq.cls: add \ProvidesClass declaration, use obeyspaces option when + loading url.sty + +2002-03-10 Robin Fairbairns + + * faqbody.tex (section{PS and TeX}): mention DVIWindo as capable of + direct rendering of type1 fonts + (section{Hypertext and PDF}): hack at "making hypertext documents" and + "making acrobat documents", and correct references to [tp]xfonts (the + package name is plural] + v2.5.8o, today + +2002-03-08 Robin Fairbairns + + * faqbody.tex (subsection{Common errors}): new, under why does it do + that?; plus a whole bunch of new subsections, with corresponding re- + arrangements of text of questions + + * texfaq2html-beta: treat \subsection the same as \section, pro tem + + * sanitize.pl (sanitize_line): ignore \subsection and its arguments + +2002-03-07 Robin Fairbairns + + * add-general.tex: move all the questions into subsections + + * faq.sty: today's date: deemed to be v1.1 (surely as good as any?) + define \subsection as a sort of mini-section (also \l@subsection) + +2002-03-06 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): mention that + \extracolsep can be cancelled + v2.5.8m, today + +2002-03-04 Robin Fairbairns + + * faq.sty: convert \def\file* + \typeout => \ProvidesPackage (v2.2) + + * add-general.tex (section{Proposed new questions}): minor rewording of + q on breaking boxes of text + +2002-02-26 Robin Fairbairns + + * faqbody.tex: v2.5.8l, today + (section{Documentation and Help}): refer to ams short math guide + +2002-02-21 Robin Fairbairns + + * additions.tex: pl3.9g, today + + * add-general.tex (section{Proposed new questions}): tidy up breakable + boxes question + + * faqbody.tex (section{Hypertext and PDF}): lates gs is 7.04 + v2.5.8k, today + (section{Special sorts of typesetting}): eplain defines \path; provide + recipe for using url.sty in plain + +2002-02-20 Robin Fairbairns + + * faqbody.tex (section{The Background}): stupid error in Q-latex2e + + * texfaq2html: the -beta version seems to work, so let's go live with + it... + + * faqbody.tex (section{You're still stuck?}): tidy noans and newans, in + particular making use of \href for the mailto url + [preamble]: v2.5.8j, today + + * texfaq2html-beta: first stab at labellisation + +2002-02-19 Robin Fairbairns + + * faqbody.tex: v2.5.8i, today + (section{The Background}): add link to Q-lit under description of tex + (section{Literate programming}): add reference to + literateprogramming.com in Q-lit + +2002-02-13 Robin Fairbairns + + * filectan.tex: add framed and shade + + * add-general.tex (section{Proposed new questions}): start of breakable + boxes question + +2002-02-07 Robin Fairbairns + + * dirctan.tex: added was (walter schmidt's bits and pieces) + + * add-general.tex (section{Proposed new questions}): question about + commas as decimal separators + +2002-02-01 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): correct a \URL|...| + +2002-01-30 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): first stab at + answer on under- and overfull boxes, made by strapping a few + other people's postings onto a bit of intro stuff of mine + + * additions.tex: pl3.9f, today + + * add-general.tex (section{Proposed new questions}): added pktrace to + textrace question + +2002-01-29 Robin Fairbairns + + * faqbody.tex (section{PS and TeX}): typo spotted by jose carlos santos + (section{Why does it do that?}): typo spotted by j.c.s (again) + +2002-01-17 Robin Fairbairns + + * additions.tex: pl3.9e, today + + * add-general.tex (section{Proposed new questions}): minor tweaking of + the bib->html question + +Tue Jan 15 08:02:18 2002 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): added web pointers to + some known latex documentation, rewrote mention of tex by topic + v2.5.8h, today + +Sun Jan 13 22:17:28 2002 Robin Fairbairns + + * additions.tex: pl3.9d, today + + * filectan.tex: add noTeX, bbl2html + + * add-general.tex (section{Proposed new questions}): add question on + bib->html, starting with noTeX, bbl2html + +2002-01-10 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): change information + about texhax, and provide url for finding info about tex lists via + heidelberg + v2.5.8g, today + +2002-01-09 Robin Fairbairns + + * faqbody.tex (section{Symbols, etc.}): mention the m$ euro code + + * faq.sty: change \Question \@startsection parameters to allow less + space between questions, and to use \normalsize bold text + +2002-01-08 Robin Fairbairns + + * additions.tex: pl3.9c, today + + * add-general.tex (section{Proposed new questions}): answer on + translating latex to plain, directly copied from Jules Bean on c.t.t + + * dirctan.tex: removed all the obsolete/dviware things, the format- + dumper fantasies, systems/knuth/dviware and dvitodvi + + * filectan.tex: correct axodraw + + * newfaq.tex,newfaq-patch.tex,letterfaq.tex: \typeout at end report + \thequestion, not \thesubsection + + * faq.sty: redo \question as a \@startsection in its own right with its + own counter), and remove all the kerfuffle needed to make it work + mapping to \subsection; also remove \subquestion and the like + +2002-01-07 Robin Fairbairns + + * faqbody.tex: v2.5.8f, today + (section{Introduction}): tidy reference to alternative html, remove + dick nickalls from the list of non-members of the committee + (section{The Background}): rewrite texinfo entry to mention texi2html + (section{The Background}): various other entries: provide pointers to + distributions in ctanrefs envs at end of questions + +2002-01-03 Robin Fairbairns + + * sanitize.pl (sanitize_line): remove requirement for \nobreakspace to + have trailing {} (dunno why this makes it work, mind you...) + + * faqbody.tex (section{Bibliographies and citations}): change ~ in + \href anchor to \nobreakspace + (section{Symbols, etc.}): change ~ at end of \href to \nobreakspace + +2002-01-02 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): all double-line + \Destination commands forced onto single line + (section{Proposed new questions}): tidy up question on long tables + + * sanitize.pl (sanitize_line): escape "*" in \cmdinvoke* :-} + +Tue Jan 1 09:12:47 2002 Robin Fairbairns + + * additions.tex: pl3.9b, today + + * add-general.tex (section{Proposed new questions}): finish off + longtable question + +Sat Dec 29 22:52:52 2001 Robin Fairbairns + + * faqbody.tex: v2.5.8e, today + (section{Documentation and Help}): various corrections to books, on + advice from Barbara Beeton (including removing Gr"atzer's math into + tex, which is superseded by math into latex) + +Wed Dec 26 00:28:32 2001 Robin Fairbairns + + * sanitize.pl (sanitize_line): add * version of 2-mandatory-arg + \cmdinvoke + + * faq.sty: make \cmdinvoke take * (for meta-arguments) + + * filectan.tex: add ltxtable + + * dirctan.tex: add xtab + + * add-general.tex (section{Proposed new questions}): start new question + on long tables + +Tue Dec 25 09:15:35 2001 Robin Fairbairns + + * faqbody.tex: 2.5.8d, today + +Mon Dec 24 17:37:18 2001 Robin Fairbairns + + * faqbody.tex: v2.5.8c, today + (section{Documentation and Help}): add tex by topic to "tutorials"; + remove it from "books" + (section{The Background}): switch reference to tex by topic + (section{Documentation and Help}): restore tex by topic to "books", at + victor's suggestion, and cross-link to tutorials + +2001-12-19 Robin Fairbairns + + * faqbody.tex: v2.5.8b, today + + * dirctan.tex: add nedit-latex + + * faqbody.tex (section{Current TeX Projects}): explain that the java + version is called nts + (section{TeX Systems}): added reference to the nedit stuff in editors + and shells + +2001-12-18 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): Added question on + submitting latex bug reports; minor tidies to question on array + spacing + (section{Proposed new questions}): new version of q-bug + +Sun Dec 16 10:17:08 2001 Robin Fairbairns + + * additions.tex: today + + * dirctan.tex: add booktabs + + * filectan.tex: add tabls + + * add-general.tex (section{Proposed new questions}): new question on + array strutting + + * sanitize.pl (sanitize_line): added \'o (for peter szabo) + +Sat Dec 15 10:56:39 2001 Robin Fairbairns + + * additions.tex: pl3.9a, today + + * add-general.tex (section{Proposed new questions}): question on + textrace, with references to existing outputs + + * dirctan.tex: added cm-super and ec-type1 + + * filectan.tex: added musixtex-type1 + + * Makefile.CTAN (all): remove newfaq.workers + + * faqbody.tex: v2.5.8a, today + (section{Symbols, etc.}): removed second mention of europs<->eurosans + difference in recommendation at end of adobe subsection + +2001-12-11 Robin Fairbairns + + * faqbody.tex (section{Symbols, etc.}): added mention of latin9 and its + implications + +2001-12-10 Robin Fairbairns + + * additions.tex: pl3.9 + + * faqbody.tex (section{Symbols, etc.}): added euro question from + add-general + (section{How do I do X in TeX or LaTeX}): added bold-xy and ragged + questions from add-general + v2.5.8 + + * add-general.tex (section{Proposed new questions}): yet more fiddling + with euro question + slight typo corrected in "cancelling ragged" question; comment out text + referring to donald's flushboth (which hasn't surfaced yet) + + * faqbody.tex (section{Current TeX Projects}): minor tidy of omega q + +Mon Dec 10 07:30:22 2001 Robin Fairbairns + + * faqbody.tex: v2.5.7i, today + + * add-general.tex (section{Proposed new questions}): revision and + slight extension of euro question + +Sun Dec 9 23:19:29 2001 Robin Fairbairns + + * faqbody.tex (section{Current TeX Projects}): slight further reduction + of random twaddle in text of nts q + +2001-12-07 Robin Fairbairns + + * dirctan.tex: add nts + + * faqbody.tex (section{Current TeX Projects}): deflower phil's text + about nts a bit, and add reference to public release of nts/java + + * additions.tex: pl3.8b, today + + * add-general.tex (section{Proposed new questions}): bunch of new stuff + on how to typeset euros (from yesterday and today) + + * dirctan.tex: add china2e, eurosym, eurofont + +2001-12-06 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): good start on euro + question + + * dirctan.tex: add euro-fonts, marvosym-fonts + +2001-12-05 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): added scott pakin's + keywords to symbol list question + v2.5.7h, today + (section{The Background}): correct \href for context + +2001-12-04 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): correct syntax + for latest version of pdfpages package + v2.5.4g, today + (section{Introduction}): add Andreas Matthias to list of benefactors + +2001-11-28 Robin Fairbairns + + * faqbody.tex: 2.5.7f, today + (section{PS and TeX}): tidy up question about metrics, add reference to + ly1 and to walter's site of extra goodies and, and, and... + +2001-11-27 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): spell martin + schröder's name right + +2001-11-26 Robin Fairbairns + + * faqbody.tex: v2.5.7e, today + + * additions.tex: pl4.8a, today + + * add-general.tex (section{Proposed new questions}): add question on + flushboth (after discussion with da) + + * faqbody.tex (throughout): saturday's -{}- -> -\relax- + +Sat Nov 24 09:47:06 2001 Robin Fairbairns + + * faqbody.tex (throughout): -- (in "verbatim" bits convert) to -{}-, + and where necessary convert |..--..| -> \texttt{..-{}-..} + v2.5.7d, today + (section{Introduction}): add thomas esser + +2001-11-23 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): amend words about + metafun manual, and redirect web address to ntg site + v2.5.7c, today + +2001-11-22 Robin Fairbairns + + * faqbody.tex (section{The Background}): \nothtml-tidy typo correction + +2001-11-20 Robin Fairbairns + + * faqbody.tex: v2.5.7b, today + (sections {The Background}, {Acquiring the Software}): micro-editorials + from Jose Carlos Oliveira Santos + (section{The Background}): added a ref to the ntg copy of context web + site (pending the arrival of a "real" one...) + +2001-11-15 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): "tiny typo" + (\pagnumbering) in "eliminating page numbers" + v2,5,7a, today + (section{TeX Systems}): first stab (pre-ctan availability) of reference + to macos x tetex and texshop; added reference under "unix" to "mac" + (section{Current TeX Projects}): correct signup address for omega list + (section{TeX Systems}): corrected spelling of wierda + (section{Documentation and Help}): tug.org copy of bausum's list + +2001-11-13 Robin Fairbairns + + * additions.tex: pl3.8, today + + * add-general.tex (section{Proposed new questions}): add a question on + bold tt and csc + + * filectan.tex: add bold-extra + + * faqbody.tex (throughout}): \CTAN{}->\acro{CTAN} + +2001-11-07 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): change references to miktex + v2.5.7, today + + * dirctan.tex: remove miktex directory + + * filectan.tex: replace miktex-zip with miktex-install and miktex-setup + +2001-11-05 Robin Fairbairns + + * additions.tex: pl3.7l, today + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): mention + ntheorem in "roman theorems", use \upshape instead of \rm in original + example + 2.5.6k, today + + * add-general.tex (section{Proposed new questions}): tocbibind question + +Sat Nov 3 15:29:07 2001 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): moved code + listings from "how do i do x" + (section{How do I do X in TeX or LaTeX}): removed text about 209 in + "log-like function" + (section{Things are Going Wrong}): remove rmnonsense question, and + reference to it in "missing symbol commands"; tidy up "missing symbol + commands", and add ctanrefs for amsfonts + (section{Things are Going Wrong}): ctanrefs for msx/y question + +Wed Oct 31 23:10:31 2001 Robin Fairbairns + + * faqbody.tex (section{PS and TeX}): finished belleek stuff + +Tue Oct 30 23:35:48 2001 Robin Fairbairns + + * filectan.tex: add belleek (just the .zip file) + + * faqbody.tex (section{PS and TeX}): mention belleek (needs url for + paper) + +2001-10-30 Robin Fairbairns + + * Makefile (inst-perl*): add sanitize_line + + * texfaq2file,texfaq2html,texfaq2html-beta: require sanitize.pl, remove + sanitize_line + + * sanitize.pl: new file, providing sanitize_line for texfaq2* + + * faqbody.tex (section{Current TeX Projects}): not :8080 for omega site + +Tue Oct 30 00:14:29 2001 Robin Fairbairns + + * faqbody.tex (section{Current TeX Projects}): update omega question + +Mon Oct 29 22:32:39 2001 Robin Fairbairns + + * faqbody.tex (section{PS and TeX}): use richard's words re. truetype + (section{How do I do X in TeX or LaTeX}): detail the further brilliant + things titlesec can do in re. \subsubsubsection + (section{Special sorts of typesetting}): remove misleading remark about + titlesec's capabilities re. \part + v2.5.6l, today + +2001-10-29 Robin Fairbairns + + * faqbody.tex (section{Bibliographies and citations}): change title + from just "bibliographies" + (section{PS and TeX}): change listing of {cm,ams}-amstype1 to "browse" + (section{TeX Systems}): change to truetex entry as per mail from + richard + +Sun Oct 28 09:19:36 2001 Robin Fairbairns + + * faqbody.tex (section{Why does it do that?}): correct html problem + spotted by donald a, and modify \xspace question according to his + caveats + + * texfaq2html,texfaq2html-beta,texfaq2file (sanitize_line): add + nullification of \relax at end + + * faqbody.tex (section{PS and TeX}): comlete tidying-up the outline + fonts question (no more now until i've viewed the result on paper) + +Sat Oct 27 00:55:30 2001 Robin Fairbairns + + * faqbody.tex (section{PS and TeX}): corrections/extensions from Walter + Schmidt, started work on ctanrefs env at end of question + (section{Introduction}): add Walter's name to list + + * dirctan.tex: add eulervm + + * faqbody.tex (section{Typesetting particular types of documents}): + moved typesetting a thesis here + (section{Bibliographies}): rearranged to put things relating to + creating the bib together at the start of the section, with "using" it + (macros etc) afterwards; moved citing urls in here + (section{The joy of TeX errors}): replacement "how to approach", + new "missing number" questions from add-general + + * additions.tex: pl3.7k, today + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): rewrite + parenthetical remarks about gill, correct parentheses later on + v2.5.6k, today + + * add-general.tex (section{Proposed new questions}): yet again correct + wrapping of examples in "macros from command arguments" (will get it + right eventually...) + +Mon Oct 22 12:48:28 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): work on active + character questions (can we do without a screed on catcodes + altogether?) + + * texfaq2file,texfaq2html,texfaq2html-beta (sanitize_line): add + \textbar + + * faq.sty: add definition of \textbar + +Sat Oct 20 08:26:05 2001 Robin Fairbairns + + * faqbody.tex (section{Introduction}): correct josé carlos santos' name + +2001-10-19 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): add a label to + "alignment of tabular cells" question + v2.5.6j, today + +2001-10-12 Robin Fairbairns + + * additions.tex: pl3.7.l1 {since redone}, today + + * add-general.tex (section{Proposed new questions}): redoing work done + at home decreasing the verbosity of the replacement error approach q, + and tidying it up + +2001-10-11 Robin Fairbairns + + * faqbody.tex (section{The joy of TeX errors}): slight rewording of + Q-atvert to take account of "improper \spacefactor" (which appeared in + a question on c.t.t) + v2.5.6i, today + +Sat Oct 6 09:17:26 2001 Robin Fairbairns + + * additions.tex: pl3.7k, today + + * add-general.tex (section{Proposed new questions}): tidied missing + number question, start on question on skips vs. dimens + +2001-10-04 Robin Fairbairns + + * additions.tex: pl3.7j, today + + * add-general.tex (section{Proposed new questions}): new question on + "missing number" + +Tue Oct 2 22:45:47 2001 Robin Fairbairns + + * additions.tex: pl3.7i, today + + * add-general.tex (section{Proposed new questions}): revision of + general approach errors question, taking account of trace package + +2001-10-02 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): gratuitous tidying of + mail list text + +2001-09-26 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): greek->Greek + (for epsilon in question about logos and things) + + * texfaq2file (oh_dear): don't print wrapper for message... + (two other places): replace "die" with call to oh_dear + +Mon Sep 24 22:41:48 2001 Robin Fairbairns + + * faqbody.tex: v2.5.6h, yesterday (forgot the change then) + + * additions.tex: pl3.7h, today + + * add-general.tex (section{Proposed new questions}): tiny typo + correction in \clearemptydoublepage answer + +2001-09-24 Robin Fairbairns + + * dirctan.tex: added memoir + + * add-general.tex (section{Proposed new questions}): question on + empty pages between chapters + +Sun Sep 23 15:37:53 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): new question on + what to do when asked to type \end + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): "referring to + things by name" from add-general + (section{Bibliographies}): "listing all bib entries" from add-general + + * add-general.tex (section{Proposed new questions}): wrap dvi version + of some of examples in "defining macro from arg" question (and adjust + the title of the question + + * faqbody.tex (section{Special sorts of typesetting}): a couple of + issues raised in proofreading (principally in description of xindy) + +Mon Sep 10 14:52:09 2001 Robin Fairbairns + + * faqbody.tex (section{Introduction}): muck about with the "alternative + versions text, and add reference to the pdf copies on ctan + + * filectan.tex: added uktug-faq-{a4,letter} + +Sun Sep 9 00:43:37 2001 Robin Fairbairns + + * filectan.tex: add titleref + + * add-general.tex (section{Proposed new questions}): question on title + references (first stab) + + * additions.tex: pl3.7g, today + + * add-general.tex (section{Proposed new questions}): new question on + \nocite{*} + + * dirctan.tex: add fonts/amsfonts/{latex/plaintex} + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): rehash of + blackboard bold question + +Sat Sep 8 22:02:04 2001 Robin Fairbairns + + * dirctan.tex: added ntheorem + + * faqbody.tex (section{Why does it do that?}): twiddling with the over- + full boxes question + (section{How do I do X in TeX or LaTeX}): answer the "end proof + environment with symbol" question in the affirmative, ref. ntheorem + v2.5.6g, today + +Fri Sep 7 17:01:12 2001 Robin Fairbairns + + * additions.tex: pl3.7f, today + + * faqbody.tex (section{Why does it do that?}): question on overfull + lines from add-general + v2.5.6f, today + +Thu Sep 6 09:54:29 2001 Robin Fairbairns + + * texfaq2html,texfaq2html-beta: minor tidies to make uniform with + texfaq2file + +Wed Sep 5 17:55:48 2001 Robin Fairbairns + + * faqbody.tex (section{The Background}): tidying wysiwyg question + (again) + +Tue Sep 4 23:03:11 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): a little tidying + of the new question + +Tue Sep 4 17:32:47 2001 Robin Fairbairns + + * additions.tex: pl3.7e, today + + * add-general.tex (section{Proposed new questions}): bit of tidying of + one-float-per-page question, new question on defining commands whose + name arrives in an argument + +Tue Aug 28 13:01:30 2001 Robin Fairbairns + + * faqbody.tex (section{Current TeX Projects}): correct typo + (section{The Background}): reading tex files, and why not wysiwyg from + add-general + (section{The joy of TeX errors}): \end in group from add-general + (section{Special sorts of typesetting}): dropped capitals from + add-general + +Tue Aug 28 11:37:17 2001 Robin Fairbairns + + * Makefile (clean): delete _all_ *.out + +Mon Aug 27 10:53:49 2001 Robin Fairbairns + + * faqbody.tex (section{Current TeX Projects}): normalise ctan etex and + pdftex references (and thus reword a little) + + * dirctan.tex: make e-tex and pdftex *-directories + + * add-general.tex (section{Proposed new questions}): new drop caps q + (should we mention dropcaps, if only to deprecate it?) + (section{Proposed new questions}): couple of \end{verbatim} missing + from end groups question(!) + + * dirctan.tex: add dropping, lettrine + +Sun Aug 26 10:24:31 2001 Robin Fairbairns + + * faqbody.tex: v2.5.6d, today + + * additions.tex: pl3.7d, today + + * add-general.tex (section{Proposed new questions}): minor proofreading + edits + + * faqbody.tex (section{Macro programming}): minor proofreading edits + +Sat Aug 25 19:59:17 2001 Robin Fairbairns + + * faqbody.tex (section{Macro programming}): added proposed question on + macro programming + + * add-general.tex (section{Proposed new questions}): tidying "\end + inside a group" + +Thu Aug 23 15:06:09 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): first outline of + "\end inside a group..." question + +Wed Aug 22 12:28:17 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): minor proof- + reading changes + + * faq.sty: make \WYSIWYG uppercase the first letter of the start of a + sentence ... mostly + +Sat Aug 18 09:29:00 2001 Robin Fairbairns + + * texfaq2html,texfaq2html-beta (sanitize_line): as texfaq2file + + * texfaq2file (sanitize_line): redo definition of \CONTeXT + + * faq.sty: redo definition of \CONTeXT + + * faqbody.tex (section{Why does it do that?}): standardise reference to + textcase package + (throughout): standardise on use of \CONTeXT macro + + * add-general.tex (section{Proposed new questions}): putative + completion of the wysiwig question (lordie, is it turgid) + + * faqbody.tex (section{Current TeX Projects}): typo in the "web" bullet + about svg + + * Makefile: have `clean' target get rid of html/* as well as _all_ + *.aux (no need to protect newfaq.aux nowadays), and remove a redundant + second (empty) `ctan' target + + * texfaq2html,texfaq2html-beta (sanitize_line): as texfaq2file + + * texfaq2file (sanitize_line): take {} requirements off definition of + \textasciitilde, so it can be used in \texttt + + * add-general.tex (section{Proposed new questions}): correction/ + improvement of spaces and active chars in arguments questions + +Fri Aug 17 00:53:10 2001 Robin Fairbairns + + * additions.tex: pl3.7c, today + + * faqbody.tex (section{Special sorts of typesetting}): remove (now + unwanted) braces after \textpercent + + * texfaq2html,texfaq2html-beta (sanitize_line): as texfaq2file + + * texfaq2file (sanitize_line): don't have \textpercent requiring braces + after it (since it'll inevitably appear in the argument of \texttt) + + * add-general.tex (section{Proposed new questions}): another new + question on unwanted space in macros + +Thu Aug 16 00:36:09 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): new question on + active chars in args of other commands + + * faqbody.tex (section{The joy of TeX errors}): correct example in + "structure of errors" + (section{Why does it do that?}): minor improvement of english in "rerun + messages" + (section{Why does it do that?}): move "hash signs doubled in macros" to + macro programming, and change title to "defining macros within macros" + + * add-general.tex (section{Proposed new questions}): a few more words + on wysiwygginess... + +Tue Aug 14 16:16:29 2001 Robin Fairbairns + + installed on ctan; checked-in + + * dirctan.tex,filectan.tex: texsis no longer nonfree + + * faqbody.tex (section{Format conversions}): revised address for + wilfried hennings' faq + v2.5.6c, today + +Mon Aug 13 01:01:12 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): more twiddles on + "what to do with a latex file" + (section{Proposed new questions}): new question on wysiwyg-ness + + * texfaq2file: sorted archive and format defaults (were left blank) + +Sun Aug 12 01:01:49 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): "what to do with a + (la)tex file" (first version) + + * additions.tex: pl3.7b, today + + * faqbody.tex (section{Documentation and Help}): stray char in + booklist; move reference to errata for math into latex back up where + it belongs near the reference to the book + + * add-general.tex (section{Proposed new questions}): change preamble of + each proposed question to use \Destination + (section{Proposed new questions}): add reference to paragraph parameter + problem in \tolerance question + + * faq.sty: add \Destination + + * texfaq2file (sanitize_line): add \Destination + + * texfaq2html,texfaq2html-beta (sanitize_line): as texfaq2file + + * texfaq2file (sanitize_line): redo definition of \keywords to produce + html comments (works! ... if not subsequently translated to html ;-), + and place it at the end of if (converting ...) section + + * faqbody.tex (section{Bits and pieces of TeX}): verbatim \'e (again) + (section{The joy of TeX errors}): and again + v2.5.6b, today + +Fri Aug 10 14:21:38 2001 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}): silliness of html trans + v2.5.6a, today -- checkin + +Thu Aug 9 12:42:56 2001 Robin Fairbairns + + * faq.sty: set \@rightskip, not \rightskip, in def of ctanrefs env + + * additions.tex: pl3.7a, today + + * add-general.tex (section{Proposed new questions}): start of question + about tolerance (yeah, man) + + * faqbody.tex (section{Things are Going Wrong...}): missing paren added + in Q-nohyph + +Tue Aug 7 14:41:37 2001 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): correct + list info for music list + +Mon Aug 6 16:50:12 2001 Robin Fairbairns + + * [various]: checkin + +Mon Aug 6 13:18:02 2001 Robin Fairbairns + + * additions.tex: pl3.7, today + + * Makefile.CTAN (DEST): new location (oops!) + + * faqbody.tex: 2.5.6, today + +Sun Aug 5 00:31:07 2001 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): correct urls for html + upload scripts + (section{Hypertext and PDF}): pkfix question from add-general + (section{Macro programming}): comparing the job name question (ditto) + (section{Why does it do that?}): commands gobbling space (ditto) + (section{How do I do X in TeX or LaTeX}): repeating footnotes (ditto) + (section{Macro programming}): argument a number (ditto) + (section{How do I do X in TeX or LaTeX}): altering tabular cell + alignment (ditto) + + * add-general.tex (section{Proposed new questions}): finally struggled + through section on catcodes of question on catcodes and tokens + + * texfaq2file,texfaq2html,texfaq2html-beta (sanitize_line): added + \environment translation(!) + + * add-general.tex (section{Proposed new questions}): |\\|->|\||\| + throughout + + * texfaq2file: add ability to read files whose names appear on $ARGV; + correct test for new faq sections at the start of while (NB + still a problem with \begin{center}\itshape in add-* files) + +Sat Aug 4 09:21:21 2001 Robin Fairbairns + + * texfaq2file (sanitize_line): update to latest version from ...2html + +Fri Aug 3 20:03:18 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): correct typos in + tabular cell alignment question + +Fri Aug 3 14:58:31 2001 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): added cross-references + for symbols, as suggested by scott pakin + v2.5.5f, today + + * additions.tex: today's date + + * add-general.tex (section{Proposed new questions}): completed question + (started last night at home) on \centering et al in tabular + +Thu Aug 2 22:11:35 2001 Robin Fairbairns + + * additions.tex: pl3.6f, today + + * add-general.tex (section{Proposed new questions}): new question on + detecting numbers + +Thu Aug 2 09:44:18 2001 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): ctan-ann at dante.de + v2.5.5e, today + +Wed Jul 25 11:27:01 2001 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): typo in eitan's name + + * add-general.tex (section{Proposed new questions}): new question about + \xspace + +Wed Jul 25 00:07:47 2001 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): add a word about + mirroring + + * faq.sty: define pdfversion and dviversion on the basis of \ifpdf + + * additions.tex: pl3.6e, today + + * faqbody.tex (section{Introduction}): added heiko's name to list of + helpers + + * add-general.tex (section{Proposed new questions}): new question about + comparing \jobname to something + +Tue Jul 24 22:25:54 2001 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): rewritten the upload + question to reflect what goes on in the real world now + + * texfaq2html[-beta] (sanitize_line): add \PS{} + + * faq.sty: add \PS command + + * faqbody.tex: v2.5.5d, today + (throughout): postscript->\PS{}, ghostscript all l-c; various other + minor changes + + * add-general.tex (section{Proposed new questions}): postscript->\PS{} + throughout + +Mon Jul 23 12:13:51 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): reword the pkfix + question + + * faqbody.tex (section{Support Packages for TeX}): add reference to + spell checkers in winedt and 4alltex (last available separately, + 4spell) + (section{TeX Systems}): junk win3.1 section of editors and shells + v2.5.5c, today + +Fri Jul 20 00:22:56 2001 Robin Fairbairns + + * additions.tex: pl3.6c, today + + * add-general.tex (section{Proposed new questions}): new question on + pkfix + +Thu Jul 19 17:31:25 2001 Robin Fairbairns + + * faqbody.tex (section{Macro programming}): minor typo in list + numbering question + +Thu Jul 19 13:55:55 2001 Robin Fairbairns + + * faqbody.tex: v2.5.5b, today + (section{The Background}): inappropriate line wrap corrected, given up + on \nobreakspace, pro tem + + * texfaq2html-beta (sanitize_line): add \nobreakspace [doesn't work...] + + * add-general.tex (section{Proposed new questions}): yet more fiddling + with the fixed footnotes question + +Tue Jul 17 13:41:03 2001 Robin Fairbairns + + * faqbody.tex (section{The Background}): witter about knuth's eminence + + * texfaq2html (sanitize_line): add \nobreakspace... + + * faqbody.tex (section{Documentation and Help}): \url->\URL in books + question + (section{The Background}): Donald E.\nobreakspace{}Knuth ;-) + + * additions.tex: today's date + + * add-general.tex (section{Proposed new questions}): tidy of fixed ftnt + question + +Mon Jul 16 17:54:15 2001 Robin Fairbairns + + * additions.tex: v3.6a, today + + * add-general.tex (section{Proposed new questions}): finished question + on fixed-text footnotes (1st draft, anyway) + +Sun Jul 15 22:14:41 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): start of a + question on repeating footnotes + + * dirctan.tex: added fixfoot + + * faqbody.tex (section{TeX Systems}): join up the two download lines + (and alternative urls) for miktex + (section{Hypertext and PDF}): adjust the blurb in the first question, + for consistency, and wind down the implication that the hypertex + project is an ongoing thing + (section{PostScript and TeX}): rehash the basic "using ps fonts" q, add + mention in the previewing question that recent xdvis cope with type1 + fonts + v2.5.5a, today + +Sat Jul 14 10:10:11 2001 Robin Fairbairns + + * faqbody.tex: v2.5.5, today + (section{Installing \AllTeX{} files}): new section, holding two + installation questions from "acquiring the software" and the "temp + installation question from add-general + + * additions.tex: pl3.6, today + + * add-general.tex (section{Proposed new questions}): move "format of + labels","multiple citations","widows and orphans","retrieving tex...", + "bits of docs" (changed title and label name),"extending tex paths" + (again, changed title to "temporary installation") -> faqbody + +Thu Jul 12 16:19:25 2001 Robin Fairbairns + + * faqbody.tex (section{MF and MP}): add further caveats to this + question (derived from a post by dan luecking) + + * add-general.tex (section{Proposed new questions}): final tweaking of + revised margins question -- back to faqbody, replacing old version + + * faqbody.tex (section{Special sorts of typesetting}): reference + harvard as a possible source of urls-in-biblios + v2.5.4q, today + +Tue Jul 10 10:34:16 2001 Robin Fairbairns + + * additions.tex: today's date + + * add-general.tex (section{Proposed new questions}): more fiddling with + the margins faq + +Mon Jul 9 16:46:44 2001 Robin Fairbairns + + * additions.tex: pl3.5o, today + + * add-general.tex (section{Proposed new questions}): proposed new + version of the change margins faq + +Thu Jul 5 16:17:44 2001 Robin Fairbairns + + * faqbody.tex (section{The Background}): insert Q-TUG* in place of + Q-TUG and the two following + (section{You're still stuck?}): change reference to be to Q-TUG* (and + elsewhere, plus change on reference to Q-othergroups to a reference to + ntg's website) + + * add-general.tex (section{Proposed new questions}): remove Q-TUG* + + * faqbody.tex: v2.5.4p, today + (section{How do I do X in TeX or LaTeX}): text from Norman Gray added + (section{Introduction}): add Norman Gray to the list of helpers + +Tue Jun 19 10:38:45 2001 Robin Fairbairns + + * dirctan.tex: add xpdf + + * additions.tex: pl5.5m, today + + * add-general.tex (section{Proposed new questions}): reference + pdftotext from xpdf in the "final->revisable" question + +Fri Jun 15 10:21:57 2001 Robin Fairbairns + + * texfaq2html-beta,texfaq2html (sanitize_line): deal with tildes in + urls in \href commands too + + * faqbody.tex (section{Documentation and Help}): add reference to hans' + metafun manual + v2.5.4o, today + (section{Introduction}): thanks to sanjoy mahajan + +Thu Jun 14 10:37:46 2001 Robin Fairbairns + + * texfaq2html[-beta] (sanitize_line): correct \textcbracesymbol in both + +Tue Jun 12 13:10:08 2001 Robin Fairbairns + + * texfaq2html: as -beta + + * texfaq2html-beta: translate keyword spaces to + (and vice versa) when + initialising $original_keyword and $keyword + +Mon May 28 10:30:47 2001 Robin Fairbairns + + * additions.tex: today's date + + * add-general.tex (section{Proposed new questions}): added question on + \p@... commands + +Sun May 27 23:58:37 2001 Robin Fairbairns + + * additions.tex: pl3.5l, today + + * add-general.tex (section{Proposed new questions}): quick question on + mcite + +Thu May 24 10:21:33 2001 Robin Fairbairns + + * faq.sty: add \environment command + + * add-general.tex (section{Proposed new questions}): one use of + \environment + + * faqbody.tex (section{Bibliographies}): moved "bibtex with plain tex" + from "how to do" + today's date (same version no) + (throughout): use \environment + + * additions.tex: pl3.5k, today + + * add-general.tex (section{Proposed new questions}): add ps2ascii to + the list of tools for retrieving source from final form output + +Wed May 23 09:32:48 2001 Robin Fairbairns + + * faqbody.tex (section{Why does it do that?}): more alternatives for + avoiding the use of \verb, in Q-verbwithin + 2.5.4n, today + +Tue May 22 09:43:20 2001 Robin Fairbairns + + * texfaq2html,texfaq2file (sanitize_line): add \Class translations from + texfaq2html-beta + +Mon May 21 18:04:02 2001 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): \endhtmlignore in + tutorial question!!! + (section{How do I do X in TeX or LaTeX}): \thispagestyle is what + chapters and things use ... change Q-nopageno + +Fri May 18 12:45:03 2001 Robin Fairbairns + + * faqbody.tex (section{The Background}): emphasised the scottishness of + "loch" in the silly thing about pronunciation + +Wed May 16 15:08:37 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): couple of typos in + balancing question + + * faqbody.tex (section{Documentation and Help}): add reference to david + basum's list of tex primitives to "online tutorials", pointing out + that it's reference rather than tutorial... + (section{Macro programming}): refer to patchcmd as a package... + (section{Current TeX Projects}): correct reference to latex + experimental code, minor tidies of omega, nts entries + +Mon May 14 15:15:23 2001 Robin Fairbairns + + * faqbody.tex: v2.5.4l, today + (throughout): bunch of "unguarded" \dots had {} appended... + +Wed May 2 00:07:49 2001 Robin Fairbairns + + * faqbody.tex (section{Hypertext and PDF}, {how do i do}, {macro + programming}, {special sorts of typesetting}, etc): accession of + questions from add-general.tex + + * additions.tex: pl3.5j, today + + * add-general.tex (section{Proposed new questions}): numerous minor + editorial hackettes... + +Tue May 1 23:50:40 2001 Robin Fairbairns + + * faqbody.tex: v2.5.4k, today + (section{Format conversions}): correct url for w3.org + (section{Why does it do that?}): no need for \verb if \texttt will do + (unamended...) + +Tue May 1 10:04:13 2001 Robin Fairbairns + + * faqbody.tex (section{Why does it do that?}): couple of tidies in + \verb question so's texfaq2html can cope (both applied to current web + copy too) + +Mon Apr 30 16:36:54 2001 Robin Fairbairns + + * faqbody.tex (section{Macro programming}): restore missing + \endhtmlignore in "optional arguments like \section" + +Fri Apr 27 12:02:02 2001 Robin Fairbairns + + * faqbody.tex (section{Bibliographies}): added reference to multibbl + + * dirctan.tex: added dpfloat + + * faqbody.tex (section{Typesetting particular types of documents}): add + reference to pdfpages to "report from lots of..." + + * additions.tex: pl3.5i, today + + * faqbody.tex (section{Why does it do that?}): add reference to \string + inside \texttt as a means of avoiding \verb in command args + v2.5.4j, today + + * add-general.tex (section{Proposed new questions}): new question on + widows and orphans + + * dirctan.tex: added curve (oh joy!) + + * faqbody.tex (section{Typesetting particular types of documents}): + added curve to the cv question + +Thu Apr 26 10:01:23 2001 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): \href-ise question on + sources of faqs, and add reference to the latex navigator + (section{The joy of \TeX{} errors}): removed {center}ed note of where + question was to go to, in Q-atvert... (emergency patch to copy on web + site, too!) + +Wed Apr 25 14:40:22 2001 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): added a bit of + uncertainty about the name of the localtexmf tree ;-) + (section{Special sorts of typesetting}): added multiple indexing + and zero paragraph indent questions from add-general + (section{How do I do X in TeX or LaTeX}): added footnotes in + captions question from add-general + +Tue Apr 24 12:00:01 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): added urls to tug + article + (section{Proposed new questions}): adjust the balance columns question + to mention patricks balance.sty and to rename mine baltools.sty + +Sun Apr 22 00:07:16 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): TUG article now + only awaiting urls + + * faqbody.tex (throughout): bunch of rewriting \URL commands as \href + commands (incomplete) + + * Makefile (html): new target to run texfaq2file + +Sat Apr 21 18:19:23 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): question on t1 + type 1 fonts, and one (as yet incomplete) to replace all three on TUG/ + other user groups + + * additions.tex: v3.5h, today + + * faqbody.tex (section{Hypertext and PDF}): new section starting with + three questions from the "format conversion" section + v2.5.4i, today + +Fri Apr 20 14:38:55 2001 Robin Fairbairns + + * additions.tex: pl3.5g, today + + * add-general.tex (section{Proposed new questions}): questions on + tabularx and so on, and on non-terminating "rerun" diagnostics + +Wed Apr 18 10:38:30 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): added a changebars + question + + * filectan.tex: add vertbars.sty and backgrnd.tex + + * dirctan.tex: moved our location to uk-tex-faq + + * additions.tex: pl3.5f, today + + * add-general.tex (section{Proposed new questions}): mention \[sub] + includefrom commands in the blurb about import.sty + + * faqbody.tex: 2.5.4h, today + (section{Acquiring the Software}): moved findpkg, siteindex and + websearch questions to "acquiring the software", and edit blooper out + of findpkg + +Mon Apr 16 00:16:21 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): start on question + about retrieving tex-ish source from final form files + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): added list + spacing question from add-general (should this really go to + typesetting?) + (section{Macro programming}): opt arg and counter-label questions from + add-general + (throughout): minor editorial change + (section{Acquiring the Software}): make reference to web access in the + question about archives, and remove reference to the DECUS collection + (section{Acquiring the Software}): tone down the question about finding + fonts (how does one do this nowadays?) + (section{Format conversions}): refer to w3c page on ->html conversion + +Sun Apr 15 00:12:06 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): removed the + "finding a document's files" proto-question, now taken over by + "extending search paths" + + * faqbody.tex (section{You're still stuck?}): add "you don't understand + the answer", and "submitting new answers" questions from add-general + (section renamed from "perhaps there isn't an answer") + v2.5.4g, today + + * markup-syntax: grand updating (for the submission faq) + + * add-general.tex (section{Proposed new questions}): more new uns: opt + args that behave like \section's, \refstepcounter and submitting + material to the faq + + * additions.tex: pl3.5e, today + + * add-general.tex (section{Proposed new questions}): two new questions, + on extending path searches (needs careful review) and on loading files + from other directories (the import package) + +Sat Apr 14 18:52:30 2001 Robin Fairbairns + + * filectan.tex: add import.sty (up-to-date or what?) + +Fri Apr 13 16:50:41 2001 Robin Fairbairns + + * dirctan.tex: added pkfix, preprint + +Thu Apr 12 11:28:24 2001 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): reference to + anonchap (and incidentally tocbibind) in "style of section headings" + + * filectan.tex: added anonchap + +Tue Apr 10 00:00:30 2001 Robin Fairbairns + + * faqbody.tex (section{\MF{} and \MP{}}): renamed section, added + question on \MP{} prologues from add-general + (section{Special sorts of typesetting}): added questions on style of + captions and of document titles, from add-general, and style of + section headings and indent after section headings from herein, "how + do I do?" + + * texfaq2file: removed redundant $href_script, remove echoing of + archive list + + * faqbody.tex: 2.5.4f, today + + * additions.tex: pl3.5d, today + + * faqbody.tex (section{Macro programming}): new section with vaguely + programming-related things (6 from "how to do X", one from "things are + going wrong" and one from "why does it", plus a new one from + add-general.tex + +Mon Apr 9 23:59:40 2001 Robin Fairbairns + + * faqbody.tex (section{Typesetting particular types of documents}): + changed section name + +Mon Apr 9 12:08:07 2001 Robin Fairbairns + + * faqbody.tex (section{Things are Going Wrong...}): + (section{How do I do X in TeX or LaTeX}): incorporated donald a's + comments on the hyphenation and raggedness questions + +Sun Apr 8 00:32:22 2001 Robin Fairbairns + + * texfaq2file: quick'n'dirty html file generator + +Sat Apr 7 16:35:58 2001 Robin Fairbairns + + * texfaq2html-beta (sanitize_line): define \Class + + * faq.sty: add definition of \Class + + * additions.tex: pl3.5c, today + + * add-general.tex (section{Proposed new questions}): question on zero + parindent/non-zero parskip + + * filectan.tex: add parskip + +Thu Apr 5 10:25:00 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): new question on + determining which side of the page we're on + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): hyphenation and + ragged right questions from add-general + v2.5.4e, today + +Wed Apr 4 13:16:41 2001 Robin Fairbairns + + * dirctan.tex: added patchcmd + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): refer to + patchcmd in question on (er) patching commands + + * add-general.tex (section{Proposed new questions}): bit more + detail on the behaviour of ragged2e + + * faqbody.tex (section{Bibliographies}): bibtex string too long + question moved here from "things going wrong" + +Wed Apr 4 00:09:17 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): question on ragged + right setting, needed by the now-finished hyphenation question + + * faqbody.tex (section{Things are Going Wrong...}): added reference to + hyphenat in question about why hyphenation isn't happening + + * dirctan.tex: added hyphenat, schroeder + + * additions.tex: today + + * add-general.tex (section{Proposed new questions}): started "no + hyphenation" question + +Tue Apr 3 00:21:27 2001 Robin Fairbairns + + * faqbody.tex (section{Why does it do that?}): tidy marginpar and + pictex questions + v2.5.4d, today + (section{Things are Going Wrong...}): \tenrm question, remove .sty from + rawfonts + + * add-general.tex (section{Proposed new questions}): minor tidies of + the two caption questions + + * additions.tex: today + + * add-general.tex (section{Proposed new questions}): do example in + caption format question in the usual three styles, and slight change + to text about typesetting caption.dtx for caption2 + +Mon Apr 2 07:56:15 2001 Robin Fairbairns + + * additions.tex: today's date + + * add-general.tex (section{Proposed new questions}): skeleton of + question on title formats (vehicle for titling.sty) + + * dirctan.tex: add titling + +Sun Apr 1 20:40:44 2001 Robin Fairbairns + + * filectan.tex: added chngcntr.sty + + * additions.tex: pl3.5b, today + + * add-general.tex (section{Proposed new questions}): added questions on + caption formats, and on footnotes in captions + + * dirctan.tex: added symbols, caption, ccaption + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): rationalise + mention of chngpage package in "adjusting the margins"; mention + ccaption in the wide figures question; reference to chngcntr in + counter manipulation question + (section{The joy of TeX errors}): slight reword of \@ question + (section{Documentation and Help}): added question about symbols list + (head of file): v2.5.4c, today + +Thu Mar 29 14:13:36 2001 Robin Fairbairns + + * texfaq2html-beta (sanitize_line): as production version + + * texfaq2html (sanitize_line): ignore \vspace* + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): tidied visual + typesetting so's texfaq2html could cope, added a missing \\ (names + question) + +Wed Mar 28 22:42:32 2001 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): added \seename + and \alsoname to the list of names + +Wed Mar 28 09:25:54 2001 Robin Fairbairns + + * filectan.tex: add excel2latex (the .zip file thereof) + + * faqbody.tex: v2.5.4a, today, for ctan installation, then v2.5.4b + (section{Format conversions}): added excel2latex + + * dirctan.tex: add fink + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): shortened + written-out code for retaining file names, and added reference to + fink package + +Tue Mar 27 13:05:22 2001 Robin Fairbairns + + * additions.tex: pl3.5a, today + + * add-general.tex (section{Proposed new questions}): new question on + multiple indexes + + * filectan.tex: added multind.sty + + * dirctan.tex: added camel + +Mon Mar 26 14:08:37 2001 Robin Fairbairns + + * additions.tex: pl3.5 + + * texfaq2html: bring up to date with -beta + + * faqbody.tex: v2.5.4, today, for release + +Mon Mar 26 00:11:55 2001 Robin Fairbairns + + * additions.tex: today's date + + * add-general.tex (section{Proposed new questions}): start of questions + on finding files in multi-file docs, and latex makefiles + +Sun Mar 25 10:17:04 2001 Robin Fairbairns + + * additions.tex: dated today + + * faqbody.tex (section{Bibliographies}): added bibtex capitalisation, + cite sorting, \subsubsubsection and file name qs from add-general + dated today + + * add-general.tex: new question on lists + (section{Proposed new questions}): add reference to the companion in + \sub*section question + +Sat Mar 24 15:22:18 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): minor tidying of + the missing chars question + + * faqbody.tex (section{Current TeX Projects}): added question on web + technologies, from add-general + (section{How do I do X in TeX or LaTeX}): added Q-fixnam, with list of + fixed names included + + * add-general.tex: added column balancing question + + * dirctan.tex: added nrc + + * additions.tex: pl3.4m, today + + * faqbody.tex (section{PostScript and TeX}): tidy up references to + ghostscript, gsview and (new) ghostview + (throughout): ensure ghostscript is properly referred to + v2.5.3r, today + + * dirctan.tex: restore gsview link as *-directory (this stuff needs + moving on ctan) + + * faqbody.tex (section{MF}): remove reference to paradissa which is no + longer on the archive + + * dirctan.tex: add sttools + removed remaining things found in ctan scan + + * faqbody.tex (throughout): impose consistency on part distributions in + ctanrefs environments + +Fri Mar 23 08:09:03 2001 Robin Fairbairns + + * faqbody.tex: v2.5.3q, yesterday + + * additions.tex: pl3.4k, today + + * add-general.tex (section{Proposed new questions}): major hack on the + new web technologies question; new question on what to do if you don't + understand + +Thu Mar 22 10:24:58 2001 Robin Fairbairns + + * dirctan.tex: added pmx and mtx + + * faqbody.tex (section{Special sorts of typesetting}): tidied feynmann + question, and added reference to axodraw + (section{Special sorts of typesetting}): updated the musi[cx] question, + with very aged input from werner icking + + * filectan.tex: added axodraw as a single file (after examining the + actual ctan holding) + + * dirctan.tex: removed axodraw + + * faqbody.tex (section{TeX Systems}): comment out the windows 3.1 stuff + in "editors and shells" (including the reference to eddi4tex), and + refer to the 4alltex cd under (current) windows + + * add-general.tex (section{Proposed new questions}): sorted list of + \*name commands (on the *-bits) and corrected somewhat + + * dirctan.tex: add pdfpages + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): mention + pdfpages in Q-conditional + +Wed Mar 21 13:43:55 2001 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): mention + \verbatimtabinput in verbfile + +Tue Mar 20 07:54:30 2001 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): suppress mention of + sgmlbase (in the absence of evidence that it's going anywhere beyond + the toy status); masses of tidying of questions + + * dirctan.tex: make psfonts browsable + + * texfaq2html-beta (sanitize_line): add a 3-mandatory-arg version of + \cmdinvoke; add \ae{} + + * Makefile: add a bunch of short aliases for parts of make patch + + * faq.sty: increase ctanrefs \topsep a bit (4pt: half of article.cls + default) + + * add-general.tex (section{Proposed new questions}): body to Q-fixnam + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): remove some + text of Q-latexwords to Q-fixnam and add reference to that question + today's date; tidy code listings, logos questions + + * add-general.tex (section{Proposed new questions}): put reference to + docs at end of bibtex caps question + +Mon Mar 19 23:18:19 2001 Robin Fairbairns + + * additions.tex: pl3.4j + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): add question on + patching commands from add-general + (section{The joy of TeX errors}): \@ question from add-general + v2.5.3p + + * add-general.tex (section{Proposed new questions}): corrected code in + "what's the name", rewrote sort&compress (for typographic reasons); + moved patching and \@ questions to faqbody + +Mon Mar 19 16:38:02 2001 Robin Fairbairns + + * dirctan.tex: added snapshot + + * add-general.tex (section{Proposed new questions}): added some words + about mike downes's snapshot package, and correct the etex csname i + couldn't remember while typing at home (\middle) + +Mon Mar 19 08:47:50 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): rather feeble + question on bibtex capitalisation + + * filectan.tex: add braket + + * add-general.tex (section{Proposed new questions}): mostly-complete + question on dirac brackets + + * additions.tex: today's date + + * faqbody.tex: today's date + (section{Special sorts of typesetting}): tidy the "typesetting urls" + and "citing urls" questions, and add mention of hyperref's ability to + ignore % in urls + + * dirctan.tex: add bundledoc + + * add-general.tex (section{Proposed new questions}): first stab at + "what files" question + +Sun Mar 18 08:33:36 2001 Robin Fairbairns + + * faqbody.tex: today's date, no change of versiion + (section{How do I do X in TeX or LaTeX}): tidy page-size question and + add reference to layout.sty for the diy-er; tidy the letterspacing + answer + +Sat Mar 17 13:35:37 2001 Robin Fairbairns + + * texfaq2html-beta (sanitize_line): \YandY->Y&Y (!) + + * add-general.tex (section{Proposed new questions}): sorting cites + question + + * filectan.tex: add patch + + * add-general.tex (section{Proposed new questions}): questions on file + name, patching commands + + * faq.sty: minor adjustments (a) to separate the list from its + preceding pargraph, so that raggedness doesn't propagate backwards + into that paragraph(!) and (b) to set \topsep zero (prob. not nec.) + + * faqbody.tex (section{The joy of TeX errors}): rehash unprocessed + floats question + v2.5.3o, today + + * add-general.tex (section{Proposed new questions}): new "errors" + question on \@ in vertical mode; minor hacks + + * faqbody.tex (section{Things are Going Wrong...}): tidy up (and + marginally correct) the \pagestyle{empty} question, and add soul to + the underline question; tidy old font names question; separate the two + case in missing symbols question; rehash the \@ question in the light + of Q-atvert + +Fri Mar 16 13:34:54 2001 Robin Fairbairns + + * faqbody.tex (section{Introduction}): added scott pakin to helpers + list + (section{Things are Going Wrong...}): typo \CTANref{morefloats} for + endfloat + + * add-general.tex (section{Proposed new questions}): removed tmupfl + question + + * faqbody.tex: v4.5.3n, today + (section{Documentation and Help}): deja->groups.google + (section{Things are Going Wrong...}): remove some of text from Q-floats + and replace with reference to Q-tmupfl + + * additions.tex: pl3.4i, today + +Fri Mar 16 00:19:03 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): changed title of + future web technologies + (section{Proposed new questions}): added tmupfl question + +Thu Mar 15 10:19:40 2001 Robin Fairbairns + + * faqbody.tex (section{Why does it _do_ that?}): added mdwlist to the + "no line here to end" question + + * additions.tex: pl3.4h, today + + * add-general.tex (section{Proposed new questions}): new thing (with + stuff from the latex2html question) about the nature of future web + technologies + + * faqbody.tex: 2.5.3m, today + (section{Format conversions}): yet another rehash of latex2html, + following further input from hutchinson + +Thu Mar 15 00:20:49 2001 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): yet another iteration, + following input from eitan + (section{Why does it _do_ that?}): added reference to expdlist for the + no line to end question + (section{How do I do X in TeX or LaTeX}): tidy conditional compilation + and bold greeks questions + +Wed Mar 14 09:48:48 2001 Robin Fairbairns + + * faq.sty: added \latex2html + + * texfaq2html-beta (sanitize_line): added \latexhtml + + * faqbody.tex (section{Why does it do that?}): added "no line" question + (section{How do I do X in TeX or LaTeX}): added "wide figure" question + + * add-general.tex (section{Proposed new questions}): add an actual + recommendation on setting wide equations, and move to faqbody + (section{Proposed new questions}): no line to end error message too + wide for 2-col text, sorted; question moved to faqbody + + * faqbody.tex: today (no change of version since nothing printed + (section{Introduction}): add peter wilson -- oops! + (section{Documentation and Help}): add "short history of the printed + word" + (section{Things are Going Wrong...}): minor honing of words of accented + hyphenation question and moving tables + (throughout): suppress (almost) all personal email addresses + (section{Things are Going Wrong...}): add mention of float.sty [H] in + the moving tables question + +Wed Mar 14 00:12:56 2001 Robin Fairbairns + + * texfaq2html-beta (sanitize_line): preserve ~ in arguments of URLs + +Tue Mar 13 22:59:56 2001 Robin Fairbairns + + * faqbody.tex (section{Things are Going Wrong...}): add the famous + arseneau parameters to the moving tables question, and add reference + to placeins.sty (simultaneously tidying up and de-ponceing the text a + bit) + v2.5.3k, today + (section{Format conversions}): input from eitan gurari and ian + hutchinson (coo, they were quick) + (section{Introduction}): added eitan gurari and ian hutchinson to the + hall of fame + +Mon Mar 12 11:33:47 2001 Robin Fairbairns + + * filectan.tex: added tth, tex4ht + + * faqbody.tex (section{Format conversions}): ->html question rehashed, + including reference to texpider and hevea (both off ctan) + + * dirctan.tex: make latex2html \CTANdirectory* + + * faqbody.tex (section{Format conversions}): rewrote the ->ascii + question, including reference to tex2mail and catdvi + v2.5.3j, today + + * dirctan.tex: added catdvi + + * faqbody.tex (section{TeX Systems}): removed arbortext and northlake + from list of commercial systems (advice from bnb); add keywords to the + two systems questions so's bnb can find them by searching + +Sun Mar 11 09:22:44 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): new question about + subsubsubsections + + * dirctan.tex: add latex (for base dir) and remove fonts/latex with the + same name + + * additions.tex: today (no change of patch level) + + * add-general.tex (section{Proposed new questions}): new question about + "no line here to end" + +Sat Mar 10 15:22:05 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): removed two + questions for the benefit of faqbody (vide infra) + (section{Proposed new questions}): new wide-figure question + + * faqbody.tex (section{TeX Systems}): added vtex for linux & os/2 + (section{DVI Drivers and Previewers}): new question about using + ghostscript in default of a printer-specific driver + (throughout): typos corrected + (section{Bits and pieces of TeX}): added encoding and eps questions + from add-general + v2.5.3i, today + + * faq.cls: added hyphens option when loading url.sty + +Fri Mar 9 10:41:09 2001 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): correcting a couple of + names, and a typo, in the section on conversion to "other formats" + +Thu Mar 8 09:15:30 2001 Robin Fairbairns + + * faqbody.tex: v2.5.3g, today + + * additions.tex: pl3.4f, today + + * add-general.tex (section{Proposed new questions}): remove questions + on character shifts in dvips output, toc, running equation etc, + crop marks and fixed positions + + * faqbody.tex (section{Format conversions}): reformat the general + conversions question + (section{Literate programming}): add reference to dtx in the literate + programming question, and tidy up the packages question + (section{Support Packages for \TeX{}}): tidy up the spelling, wordcount + and fig questions + (section{DVI Drivers and Previewers}): minor tidies of previewers + (including excision of reference to dviwin, which has been withdrawn) + and laserjet questions, and removed reference to dvitops from the ps + output program + (section{Things are Going Wrong...}): added question on character + shifts in dvips output + (section{Special sorts of typesetting}): add toc question (from + peter wilson, originally) + (section{How do I do X in TeX or LaTeX}): add running equation etc, + crop marks and fixed positions questions + + * dirctan.tex: add rtf2latex2e + + * faq.sty: compact decsription environment, too + + * faqbody.tex (section{Format conversions}): add question on quality of + PDF output, from add_general; tidy up question on generating pdf, link + to one on quality + +Tue Mar 6 23:18:23 2001 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): narrow some of + the lines of code in principal value integral question, when doing + tex-only output; tidy footnotes in tables question + + * add-general.tex (section{Proposed new questions}): wrap code in + running numbering question, when doing tex-only output + + * faqbody.tex (section{Macros for Particular Types of Documents}): add + peter wilson's combine stuff to the question on multi-article + documents, and minor tidy of the vita class question + +Tue Mar 6 10:03:40 2001 Robin Fairbairns + + * filectan.tex: added removefr + + * add-general.tex (section{Proposed new questions}): add "running + numbering" question + + * faqbody.tex (section{Bits and pieces of TeX}): yet more diddling with + ec question + + * additions.tex: pl3.4e, today + + * faqbody.tex (section{Acquiring the Software}): removed ip address of + wuarchive + (section{Bits and pieces of TeX}): small rewording of hyphenation q + v2.5.3f, today + (section{Bits and pieces of TeX}): extend and reword ec font q + + * add-general.tex (section{Proposed new questions}): minor improvements + to text of encoding and acrobat questions + +Mon Mar 5 11:40:20 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): two minor + improvements to the encodings, pdf output questions + + * faqbody.tex (section{Acquiring the Software}): fptex local default is + texmf-local + +Sun Mar 4 00:00:57 2001 Robin Fairbairns + + * faqbody.tex (chapter{Preface}): tidy "style of section headings" + (section{PostScript and TeX}): tidy wrapping of urls in the font + choice question + v2.5.3e, today + +Sat Mar 3 13:59:57 2001 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): tidying the + section (un)numbering question + + * dirctan.tex: added tocloft + + * add-general.tex (section{Proposed new questions}): dvips output for + pdf, weird character mapping questions + (section{Proposed new questions}): added peter wilson's tocloft + question + + * dirctan.tex: added textpos + + * add-general.tex (section{Proposed new questions}): crop and textpos + questions + + * faqbody.tex (section{\TeX{} Systems}): added brief info from carlos + santos re. windvi's printing capability + (section{Introduction}): added carlos santos to list of helpers + v2.5.3d, today + (section{Special sorts of typesetting}): tidied the fancyhdr question + + * additions.tex: today (no change of patch level) + + * add-general.tex (section{Proposed new questions}): yet again, hacking + at encodings question + +Fri Mar 2 14:22:08 2001 Robin Fairbairns + + * filectan.tex: askinclude now from latex/contrib/other/misc + + * dirctan.tex: removed mathpple + +Fri Mar 2 07:20:03 2001 Robin Fairbairns + + * additions.tex: today (no change of patch level) + + * add-general.tex (section{Proposed new questions}): yet more fiddling + with the encodings question ("philosophy") + +Thu Mar 1 21:20:49 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): filled out the + body of "what is encapsulated postscript" + + * additions.tex: pl3.4c, today + + * add-general.tex (section{Proposed new questions}): honing the words + in "what are encodings" + + * faqbody.tex (section{PostScript and TeX}): add mathpazo (serious drop + off that i hadn't mentioned it before) + + * dirctan.tex: add mathpazo + + * faqbody.tex: v2.5.3c, today + +Thu Mar 1 09:44:55 2001 Robin Fairbairns + + * faqbody.tex (section{PostScript and TeX}): added pxfonts to question + on font choice, updated txfonts outline + + * dirctan.tex: added emtextds, pxfonts + + * faqbody.tex (section{Things are Going Wrong...}): hack around to + cause texfaq2html not to be fazed by verbatim \\ commands + (section{TeX Systems}): ftp.math.utah.edu's ip address has changed -- + removed it altogether + + * texfaq2html-beta (sanitize_line): explicitly squash "{}" if it + survives to the end of the main conversion scan + + * filectan.tex: morefloats->latex/contrib/other/misc + +Tue Feb 27 07:20:48 2001 Robin Fairbairns + + * additions.tex: pl3.4b, today + + * faqbody.tex (section{TeX Systems}): slight rearrangement of ctanrefs + in "(la)tex for different systems" + + * add-general.tex (section{Proposed new questions}): three questions + transferred (see below) + (section{Proposed new questions}): bunch of diddling with the encodings + question (still not right, though) + + * faqbody.tex (section{Special sorts of typesetting}): hack the + indexing question (new style ctan references, expand remarks about + xindy and about makeindex sorting issues) + (throughout): minor markup adjustments/typo corrections + (section{Special sorts of typesetting}): verbatim input, line numbering + and typesetting urls questions tidied to new format + (section{How do I do X in TeX or LaTeX}): using underscores, no page + nos and typing "@", from add-general + + * dirctan.tex: * to xindy + + * faqbody.tex: v2.5.3b, today + +Sun Feb 25 00:09:42 2001 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): tidied up the freely-distributed + software question + (section{\TeX{} Systems}): further iteration of same (after a good + night's sleep ;-), also added more detail about web2c + (section{Special sorts of typesetting}): converted the `wrapping + figures' to new form, since it always did look untidy. + +Sat Feb 24 00:07:21 2001 Robin Fairbairns + + * faqbody.tex (section{TeX Systems}): start of rearranging the non- + commercial systems part of the section + + * dirctan.tex: added bakoma-tex + + * faqbody.tex (section{Bits and pieces of TeX}): add "what is hyphen- + ation" question + (section{The joy of TeX errors}): add "bad hyphenation" question + + * add-general.tex (section{Proposed new questions}): remove "what is + hyphenation" and "bad hyphenation" questions + + * additions.tex: pl3.4a, today + + * dirctan.tex: plain now refers to base only + + * faqbody.tex (section{Things are Going Wrong...}): added "no + hyphenation" question at start of section + + * add-general.tex (section{Proposed new questions}): removed "no + hyphenation" question + + * faqbody.tex (section{Metafont}): scale down the panic of the bitmap + fonts question -- convert into advice to start using type 1 versions + v2.5.3a, today + + * dirctan.tex: bluesky (was a reference to their mac mf port) becomes a + reference to the "bluesky" cm fonts + +Fri Feb 23 23:54:03 2001 Robin Fairbairns + + * dirctan.tex: ps-type1 -> \CTANdirectory* + +Thu Feb 22 12:28:58 2001 Robin Fairbairns + + * texfaq2html: brought in all -beta changes + + * texfaq2html-beta: sit on $_ (in case we're not producing an intro) so + as not to get a lone "introduction", and dump the "index" statement in + front of the list of questions; various other minor tidies + + * dirctan.tex: corrected dratex (another from dan l) + + * faqbody.tex (section{Special sorts of typesetting}): mfpic can now do + \MP output (alert from dan luecking) + +Thu Feb 22 07:30:54 2001 Robin Fairbairns + + * faqbody.tex (section{PostScript and TeX}): first stab at rehashing + the figures question (pretty major rewrite, but issues remain) + today's date + +Wed Feb 21 09:17:47 2001 Robin Fairbairns + + * texfaq2html-beta: blundering attempt to create a better header; and + similarly distance from uktug in the footer + + * faqbody.tex (section{PostScript and TeX}): redo question about + previewing files with type 1 fonts in 'em + (section{The Background}): less prissy about the reference to the list + of commercial vendors + (section{Format conversions}): tidy up question about generating pdf + (was talking about archaic versions of ghostscript) + (section{PostScript and \TeX{}}): renamed question deploying type 1 + fonts ... substantial rewrite + (section{Introduction}): added mike vulis to ack list (belatedly) + + * dirctan.tex: ghostscript nonfree; added gsview (with wrong value) + + * faqbody.tex: v2.5.3, today + +Tue Feb 20 11:46:36 2001 Robin Fairbairns + + * texfaq2html-beta: add a couple of
directives, after the + "preamble", and before the "tail" + + * dirctan.tex: added refcheck and crop + +Mon Feb 19 10:40:43 2001 Robin Fairbairns + + * faqbody.tex (section{Bibliographies}): entire new section + + * add-biblio.tex: ripped out entire text + + * faqbody.tex (section{Special sorts of typesetting}): added the + document font sizes question + + * add-general.tex (section{Proposed new questions}): removed the + document font sizes question + + * faqbody.tex (section{Special sorts of typesetting}): added the + landscape typesetting question + + * add-general.tex (section{Proposed new questions}): removed the + landscape typesetting question + + * faq.sty: added a bit of raggedness to the ctanrefs environment + + * faqbody.tex (section{Things are Going Wrong...}): add the end-line + question + + * add-general.tex (section{Proposed new questions}): removed the end- + line thing + + * texfaq2html: bring up to date with -beta (== -alpha) version + + * faqbody.tex (section{Introduction}): add dan luecking + + * add-general.tex (section{Proposed new questions}): added caveat about + viewing rotated output to landscape question + + * texfaq2html-alpha (sanitize_line): add \YandY [does a raw & really + work reliably in html?] + + * faq.sty: define \YandY + + * faqbody.tex (throughout): \YandY for the company, for consistent + typesetting + +Sun Feb 18 00:14:33 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): rewording of the + "what is hyphenation" and "encodings" questions + (section{Proposed new questions}): new question on landscape + typesetting + + * additions.tex: update to today + + * add-general.tex (section{Proposed new questions}): new question on + encodings (started yesterday) + +Sat Feb 17 15:56:43 2001 Robin Fairbairns + + * additions.tex: pl3.4, today + + * faqbody.tex: v2.5.2f, today + (throughout): article->FAQ where appropriate + (section{How do I do X in TeX or LaTeX): alter "changing babel's ideas" + to one that takes in the whole gamut, and thus renders redundant: + (section{Why does it do that?}): "why won't fixed names stay fixed", + which is therefore deleted + + * newfaq-patch.tex,letterfaq.tex,newfaq.tex: slim down heading, again + + * faqbody.tex (throughout): Plain \TeX{} now uniformly used + (subsection*{Finding the Files}): new slim-line slightly less pompous + intro (no tedious lists of committee members, which are impossible to + maintain when the committee don't maintain their web site) + + * add-general.tex (section{Proposed new questions}): filled out the + \hyphenation error question + + * texfaq2html-alpha: deal with label=, generate a label= URL at end for + people to quote, use \faqfiledate, \faqfileversion (oops) + +Fri Feb 16 13:59:41 2001 Robin Fairbairns + + * texfaq2html-alpha (sanitize_line): add code for \textbf + +Thu Feb 15 11:25:45 2001 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): add the babel + question at end of section + + * add-general.tex (section{Proposed new questions}): tidied up + representation of the babel error messages still further (option for + pdf printing, too) + (section{Proposed new questions}): removed babel question + + * additions.tex: pl3.3, today + + * faqbody.tex: 2.5.2e, today + + * add-general.tex (section{Proposed new questions}): add the miktex 2 + gen for the babel "add new language" question + + * faqbody.tex (section{Acquiring the Software}): minor typographic + consistency changes in description of miktex 2.0 package install + +Wed Feb 14 13:44:07 2001 Robin Fairbairns + + * faqbody.tex (section{Things are Going Wrong...}): tidied up the + question about hyphenating accented letters + v2.5.2d, today + + * add-general.tex (section{Proposed new questions}): start on question + about "improper hyphenation" error message + + * texfaq2html-beta (sanitize_line): added \csx + +Mon Feb 12 14:42:27 2001 Robin Fairbairns + + * faqbody.tex: 2.5.2c, today + (section{Documentation and Help}): recorded details of knuth boxed set + +Fri Feb 9 11:33:00 2001 Robin Fairbairns + + * faqbody.tex: v2.5.2b, today + (section{Documentation and Help}): replaced old references to french + and german faqs with a {booklist}, and added spanish and czech + (section{The Background}): slight iteration of the context question + +Thu Feb 8 13:41:36 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): question on \\ + arguments + +Wed Jan 31 11:41:12 2001 Robin Fairbairns + + * dirctan.tex: extra indirection (via texinfo) for both texinfo and + makeinfo + + * faqbody.tex (section{The Background}): texinfo to use whole (sub-) + directory reference + + * filectan.tex: removed texinfo-dist (no longer on archive) + + * faqbody.tex (section{Format conversions}): expand referencing of vtex + (this is going to look gross...) + + * dirctan.tex: pass to deal with check-ctan-lists diagnostics + + * faqbody.tex (section{Special sorts of typesetting}): \textpercent{} + + * texfaq2html-beta (sanitize_line): added \item[\normalfont{}...]; + require \textpercent{} + + * add-biblio.tex (section{Bibliographies}): added question on entries + in text of docs; added body of "writing your own .bst" question + + * dirctan.tex: added inlinebib, jurabib, footbib + +Wed Jan 31 00:04:26 2001 Robin Fairbairns + + * faqbody.tex,additions.tex: \faqfileversion, \faqfiledate (because of + the confusion with definitions introduced by nameref.sty + + * faqbody.tex: v2.5.2a, today + +Tue Jan 30 23:28:17 2001 Robin Fairbairns + + * additions.tex: pl3.1, today + + * newfaq.tex,letterfaq.tex,newfaq-patch.tex: use \ref* in the title, + \ifpdf; \faqfileversion, \faqfiledate + + * add-general.tex (section{Proposed new questions}): have the correct + layout of the babel message (in the "new language" question) for html + generation + +Mon Jan 29 12:17:28 2001 Robin Fairbairns + + * texfaq2html: bring up to date with latest thinking in -beta version + + * faq.sty: add \[oc]bracesymbol + + * texfaq2html-beta (sanitize_line): moved \symbol to the end + (sanitize_line): add \obracesymbol and \cbracesymbol + + * additions.tex: comment out add-errors, pl3.0, today + + * faqbody.tex (section{TeX Systems}): tidied miktex text + v2.5.2, today + (section{The joy of TeX errors}): moved en bloc from add-errors + +Tue Jan 23 16:58:28 2001 Robin Fairbairns + + * faqbody.tex (section{Things are Going Wrong...}): update the miktex + question with a reference to 2.0 + (section{TeX Systems}): update remarks about miktex + + * dirctan.tex: miktex itself now a *-reference to miktex/2.0 + + * filectan.tex: deleted miktex-latex, added miktex.zip + +Fri Jan 19 12:46:49 2001 Robin Fairbairns + + * Makefile (clean): add *patch.aux + + * add-general.tex (section{Proposed new questions}): question-ette + about typing @ signs + + * additions.tex: pl2.14, today + + * add-general.tex (section{Proposed new questions}): change reference + to carlisle to nopageno (\CTANref doesn't have a * form -- duh!) + +Thu Jan 18 11:37:53 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): new question on + "no page numbers" + + * req.qs: bbl2html question + +Wed Jan 17 13:33:56 2001 Robin Fairbairns + + * additions.tex: pl2.13, today + + * add-general.tex (section{Proposed new questions}): question on eps + (outline only, as yet) + +Tue Jan 16 12:05:46 2001 Robin Fairbairns + + * texfaq2html-beta (sanitize_line): definition of \item _doesn't_ need + "."s to separate the variable instances... + + * faqbody.tex (section{Introduction}): make reference to the dante faq + use \href + + * texfaq2html-beta (sanitize_line): add \href + + * faqbody.tex (section{The Background}): add knuth's url to the first + occurrence of his name + + * faq.sty: add an \href command, that only has effect in the absence of + pdf generation (hyperref providing the necessary otherwise) + + * faqbody.tex: v2.5.1d, today + (section{Documentation and Help}): corrected isbn for lamport 2nd ed + (section{Documentation and Help}): add reference to knuth's nimellium + boxed set (though no details since a-w can't get their act together) + (section{Documentation and Help}): update math into latex reference to + vol 3 + +Tue Jan 16 11:40:37 2001 Robin Fairbairns + + * additions.tex: pl2.12, today + + * filectan.tex: underscore + + * add-general.tex (section{Proposed new questions}): question on + underscore + +Sun Jan 14 20:59:29 2001 Robin Fairbairns + + * add-errors.tex (section{The joy of TeX errors}): more on the + structure question + + * additions.tex: pl2.11, today + + * add-errors.tex (section{The joy of TeX errors}): refer to structure + question from the philosophy question + + * add-general.tex (section{Proposed new questions}): reindented the + "missing character" messages for the tex versions + +Fri Jan 12 14:06:40 2001 Robin Fairbairns + + * additions.tex: today's date (previous pl not yet printed out) + + * add-general.tex (section{Proposed new questions}): finished the + hyphenation question, and added another about hyphenation problems and + their solution + +Thu Jan 11 21:42:45 2001 Robin Fairbairns + + * additions.tex: pl2.10, today + + * add-general.tex (section{Proposed new questions}): start of the body + of the hyphenation question + +Tue Jan 9 14:59:56 2001 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): minor tweaks to + the text of the babel question, and skeleton for a question on hyphen- + ation + + * additions.tex: pl2.9, today + + * add-errors.tex (section{The joy of \TeX{} errors}): v1 closure on + first question of section, and proposal for yet another new question + about the structure of error messages + + * faq.sty: adjust \topsep in itemize and enumerate, and do the same to + verbatim + + * faqbody.tex (section{The Background}): change reference to books + question + + * add-biblio.tex (section{Bibliographies}): some wrapping of verbatim + text, and minor text tidies + +Fri Jan 5 18:08:32 2001 Robin Fairbairns + + * additions.tex: pl2.8, today + + * add-general.tex (section{Proposed new questions}): added caveat about + running out of pattern memory when adding a new hyphenation pattern + +Thu Jan 4 15:44:41 2001 Robin Fairbairns + + * texfaq2html-beta (sanitize_line): process `` and '' to ", and + isolated ` to ' (for the benefit of m$ browsers) + evaluate $last_question, $next_question and $previous_question as + we go along, and use them to produce pointers to previous and + next in the footer of the generated page, if appropriate + +Tue Jan 2 14:17:33 2001 Robin Fairbairns + + * texfaq2html-beta (sanitize_line): make \ProgName and \Package accept + arguments in braces + + * faq.sty: make \FTP, \File, \CTAN and \ProgName robust + + * add-biblio.tex (section{Bibliographies}): lists of authors question + + * additions.tex: pl2.7, today + + * add-general.tex (section{Proposed new questions}): new question on mp + prologues + +Mon Jan 1 17:15:11 2001 Robin Fairbairns + + * texfaq2html-beta: normalise tabbing in perl code + +Sat Dec 30 16:35:47 2000 Robin Fairbairns + + * faqbody.tex: v2.5.1c, today + + * additions.tex: pl2.6, today + + * add-biblio.tex (section{Bibliographies}): ctanrefs at end of bibs per + section question + + * faqbody.tex (section{Why does it do that?}): add pointers to fancyvrb + and verbdef packages in the question on verbatim in arguments + + * filectan.tex: add verbdef.sty + + * add-general.tex (section{Proposed new questions}): bit more at end of + missing characters question + +Wed Dec 27 14:19:48 2000 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): missing characters + + * faq.sty: minor typo corrected + +Tue Dec 26 16:39:47 2000 Robin Fairbairns + + * faq.sty: compact the booklist and ctanrefs environments, and + compactify standard itemize and enumerate environments + +Sun Dec 24 10:26:08 2000 Robin Fairbairns + + * add-errors.tex (section{The joy of TeX errors}): filling out the + answer (work vaguely started last evening, and will probably take the + whole holiday...) + +Fri Dec 22 17:25:04 2000 Robin Fairbairns + + * additions.tex: pl2.4, today + + * faqbody.tex (section{Introduction}): added giuseppe bilotta and + michael dewey to list of helpers + + * add-general.tex (section{Proposed new questions}): provided format + generation instructions for the babel new language question + + * faqbody.tex (section{Acquiring the Software}): tidy list at end of + "installing" question + 2.5.1b, today + +Thu Dec 21 00:24:20 2000 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): tiny adjustment to + punctuation of \edef question, and a bit of rewording of one of + michael's sentences + +Wed Dec 20 16:56:43 2000 Robin Fairbairns + + * add-general.tex (section{Proposed new questions}): new question + on \protected@[ex]def using some nice words of mjd's + +Tue Dec 19 10:00:41 2000 Robin Fairbairns + + * Makefile (PATCH): add add-general + + * additions.tex: replace body by \input of add-general + + * add-general.tex: was body of additions.tex + + * archive.list: correct list + + * texfaq2html-beta: add code to deal with ctanrefs environment + (involves extra stuff in \item[...]) + change default to cam.ctan.org + + * Makefile (PATCH): add add-biblio.tex + add newfaq.aux as label parallel to newfaq.dvi; this satisfies a + dependency in the web and web-beta rules + + * additions.tex: pl2.2, today + + * faq.sty: define ctanrefs environment + + * add-biblio.tex (section{Bibliographies}): fill out multiple + bibliographies question, introduce new ctanrefs environment for the + places to pull stuff from + +Mon Dec 18 11:42:43 2000 Robin Fairbairns + + * dirctan.tex: added extsizes + + * additions.tex (section{Proposed new questions}): extsizes question + + * faqbody.tex: v2.5.1a, today + + * texfaq2html (sanitize_line): as -beta version + + * texfaq2html-beta (sanitize_line): add a couple of instances of + \cmdinvoke translation (cf comments on what's available in faq.sty) + + * faq.sty: added \cmdinvoke + + * faqbody.tex (section{Why does it do that?}): add reference to + textcase in the case-changing question + + * dirctan.tex: add carlisle + +Fri Dec 15 16:41:49 2000 Robin Fairbairns + + * add-biblio.tex (section{Bibliographies}): New file, some biblio + questions (mostly somewhat fragmentary), in a section of their own... + + * dirctan.tex: added cite (the arseneau stuff) and bibunits ... and + multibib and bibtopic + + * additions.tex: pl2.0, today; \input add-biblio + +Thu Dec 14 13:30:36 2000 Robin Fairbairns + + * faqbody.tex: change url referring to archive (twice) + v2.5.1 + + * add-errors.tex (section{The joy of TeX errors}): it's isn't a + possessive!!!!!! + + * texfaq2html: add provision for dealing with \symbol commands, tidy up + the url for the whole faq for the bottom of each message, and add "not + a help address" after email address + synchronise with texfaq2html-beta (incl adding title-modifier stuff) + + * Makefile: add targets inst-perl and inst-perl-beta + + * faqbody.tex (section{Things are Going Wrong...}): add reference to + new version of miktex's latex.zip + v2.5 (!) + + * filectan.tex: added miktex 1.20 latex.zip + + * faqbody.tex (throughout): htmlonly env -> htmlversion (oops!) + v2.4.8d, today + +Tue Dec 12 22:19:19 2000 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): couple of tidies in + question on using quote site index; add new question on web searching + (section{Acquiring the Software}): remove outline of the web search + facility from question on repositories, and make reference to both + searching questions in place of partial duplication and reference to + one + 2.4.8c, today + +Mon Dec 11 11:07:56 2000 Robin Fairbairns + + * faqbody.tex (section{Support Packages for TeX}): add the wordcount + question + (section{Special sorts of typesetting}): add the watermarks question + (section{Acquiring the Software}): hacked the commercial stuff out of + the CDs question, and corrected the 4alltex bit to refer to windoze + rather than ms-dog + + * add-errors.tex (section{The joy of TeX errors}): new section title, + and a couple of new questions (no room for a new..., and what to do + when epsf produces that diagnostic) + + * faqbody.tex: 2.4.8b, today + (section{Special sorts of typesetting}): moved the script fonts + question from additions + (section{Why does it do that?}): replaced question about pictex and + register usage with improved one from additions + + * additions.tex (section{Proposed new questions}): big hack on the + script fonts question, including lots of source references and + reference to the new scriptfonts thing; then moved question to faqbody + removed pictex, watermarks and wordcount questions + + * filectan.tex: add eucal and mathscript + + * dirctan.tex: add rsfs-type1 and jknappen-macros + + * additions.tex (section{Proposed new questions}): change title of + pictex question + + * Makefile (newfaq-patch): typo in yesterday's update + +Mon Dec 11 00:02:15 2000 Robin Fairbairns + + * additions.tex (section{Proposed new questions}): Tidied up Babel + question; still to complete the section on building a format at the + end (don't understand that at all -- does texconfig exist for other + than tetex systems, for example? + +Sun Dec 10 17:35:09 2000 Robin Fairbairns + + * Makefile: replace all use of latexmk with the while-loop/get cross + construct + + * additions.tex (section{Proposed new questions}): remove question + that's gone to faqbody + pl1.14, today + + * faqbody.tex (section{Documentation and Help}): add question on + writing latex classes and packages + 2.4.8a, today + + * filectan.tex: add latex-source + +Sat Dec 9 21:24:54 2000 Robin Fairbairns + + * additions.tex (section{Proposed new questions}): remove question + about conditional compilation + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): replace + question about excluding sections of a document with one about + "conditional compilation" + + * additions.tex (section{Proposed new questions}): remove miktex + question + (section{Proposed new questions}): touch up pictex question with words + from existing one (mentioning the contex module that the yesterday's + effort omitted) + + * faqbody.tex (section{Things are Going Wrong...}): add miktex question + (slightly reworded) + + * additions.tex: pl1.13, today + (section{Proposed new questions}): junk question on recognising new + package files, since we've now integrated all the matter on these + ideas into two questions that have gone to faqbody + (section{Proposed new questions}): wrap code in script fonts question + so's not to overrun the verbatim margins + + * faqbody.tex: v2.4.8, today + + * additions.tex (section{Proposed new questions}): Remove the first two + questions to faqbody.tex + + * faqbody.tex (section{Acquiring the Software}): Two new questions + lifted from additions.tex + +Fri Dec 8 09:51:42 2000 Robin Fairbairns + + * add-errors.tex,additions.tex (throughout): normalised \Question cmds + + * faqbody.tex: (throughout) TeX-systems (as Qref label) -> Q-TeXsystems + v2.4.7q, today + (throughout): normalise all \Question commands to have optional + argument [Q-] + + * additions.tex (section{Proposed new questions}): question about the + miktex-latex problem + pl1.12, today (happy birthday Ma) + + * faqbody.tex (section{PostScript and TeX}): removed comment at end of + type 1 fonts question (no date/time or version change this time) + +Tue Dec 5 10:22:48 2000 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): label on the pictex + manual question (and remove old commented-out text about the + arrangement that used to exist for getting it from tug) + v2.4.7p, today + (section{Introduction}): add dick nickalls to list of helpers + + * additions.tex (section{Proposed new questions}): added version.sty + and verbatim.sty to yesterday's question on conditional compilation + input add-errors at end + pl1.11, today + + * filectan.tex: add version.sty + + * add-errors.tex: errors section from additions.tex + +Mon Dec 4 13:23:04 2000 Robin Fairbairns + + * additions.tex (section{Proposed new questions}): question on + conditional compilation, from a c.t.t answer by donald arseneau + patch level 1.10, today + bunch of \Qref commands tidied not to produce "see" twice in the + printed output + + * filectan.tex: remove comment (it's in a directory of its own, now) + add askinclude + + * dirctan.tex: add pagesel (contrib/supported/oberdiek, in fact) + add comment + + * filectan.tex: add selectp.sty + + * faqbody.tex (section{Why does it do that?}): add label to \include + question + 2.4.7o, today + +Mon Nov 20 13:21:01 2000 Robin Fairbairns + + * additions.tex (section{Proposed new questions}): avoid column + overruns in verbatim `meta' sections in "where to put files" + +Tue Nov 14 13:23:57 2000 Robin Fairbairns + + * additions.tex (section{Proposed new questions}): tidied up + "installing a new package question + pl1.8, today + (section{Proposed new questions}): question on where to put files ... + very much in prototype stage just now (all in verbatim) + + * faqbody.tex (section{Current TeX Projects}): add subscription info + for the pdftex list + v2.4.7n, today + +Tue Nov 7 11:23:44 2000 Robin Fairbairns + + * faqbody.tex (section{PostScript and TeX}): txfonts now have t1 and ts + encodings + +Wed Nov 1 12:24:01 2000 Robin Fairbairns + + * faqbody.tex (section{Introduction}): added anthony goreham to + the list of helpers + + * additions.tex (section{Proposed new questions}): added a thing + on formal scripts from anthony goreham + +Tue Oct 31 10:00:51 2000 Robin Fairbairns + + * dirctan.tex: expunged all reference to gopher + + * faqbody.tex (section{TeX Systems}): do away with reference to ctan + copy of 4alltex + + * filectan.tex: corrected a bunch found by the script + + * check-ctan-lists: new, jiffy checking script for (dir|file)ctan.tex + +Mon Oct 30 23:46:55 2000 Robin Fairbairns + + * faqbody.tex (section{The Background}): Add a question on LaTeX2e + v 2.4.7m, today + +Sat Oct 28 14:56:43 2000 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): reference to + chngpage in question about changing margins + + * filectan.tex: add chngpage; correct entry for comment.sty + + * additions.tex (section{The joy of TeX error messages}): typo in + setting { (nb -- \symbol still not yet in texfaq2html) + + * filectan.tex: added pdftex-oztex + + * faq.sty: double accent for doing han the thanh `properly' + + * faqbody.tex: v2.4.7l, today + (section{Current TeX Projects}): remove question on latex2e; move small + amount of matter from it into updated question on latex3; tidy and + update questions on omega, nts and pdftex + +Thu Oct 26 09:57:20 2000 Robin Fairbairns + + * dirctan.tex: add txfonts + + * faqbody.tex (section{DVI Drivers and Previewers}): made a Ghostscript + reference uniform with rest (i.e., capitalised) + (section{PostScript and TeX}): details of the txfonts + v 2.4.7k, today + +Thu Oct 12 13:04:51 2000 Robin Fairbairns + + * dirctan.tex: dvi2tty -> nonfree + + * additions.tex (section{The joy of TeX error messages}): new question + about `extra }' (moving fragile command) + + * Makefile: made web target a modified copy of web-beta + + * filectan.tex: commented out fullpage + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): remove + reference to fullpage.sty, add geometry (by, that dates it); put a + label on footnotes in latex section headings + version 2.4.7j, today + + * dirctan.tex: added geometry + +Mon Oct 9 12:30:34 2000 Robin Fairbairns + + * additions.tex (section{The joy of TeX error messages}): new section; + first two questions are general advice, and semantic nest + +Tue Sep 26 12:05:29 2000 Robin Fairbairns + + * faq.sty: repeated and undefined CTAN label warnings NoLine; repeated + CTAN labels counted and re-warned \AtEndDocument (as undefined labels + have been for some time) + + * filectan.tex: abstract->abstract-bst + + * faqbody.tex (section{Things are Going Wrong...}): in the bibtex + question, abstract->abstract-bst + 2.4.7h1, today + + * additions.tex (section{Proposed new questions}): wordcount question; + pl5, today + + * dirctan.tex: added wordcount + +Wed Sep 20 10:43:17 2000 Robin Fairbairns + + * additions.tex (section{Proposed new questions}): added a question + about one float per float page; pl4, today + + * faqbody.tex (section{Things are Going Wrong...}): add Q-floats label + to moving tables and figures question + +Fri Sep 15 11:42:25 2000 Robin Fairbairns + + * faqbody.tex (section{Current \TeX{} Projects}): tidy up references to + omega implementations + +Thu Sep 14 10:27:00 2000 Robin Fairbairns + + * texfaq2html-beta: title to contain beta indicator + + * faqbody.tex (section{PostScript and \TeX{}}): added remaining + micropress font sample urls + + * texfaq2html-beta: new file; runs beta sources + added question number to title if exactly one question requested + + * faqbody.tex: 2.4.7h, today + (section{Documentation and Help}): removed frivolity about rtfm in + `where to get help' (at Manuel Gutierrez' suggestion) + + * additions.tex (section{Proposed new questions}): add note of + confirmation of the sequence for refreshing the fndb under miktex + +Tue Sep 12 23:20:53 2000 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): sound depressed about + deja + (preamble): today, v2.4.7g + +Sun Sep 10 10:22:45 2000 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): upgrade of the + unnumbered sections question (from peter wilson), and of the 1-column + abstract question (from same source) + + * dirctan.tex: added tocvsec2, tocbibind, abstract + +Sat Sep 9 14:15:21 2000 Robin Fairbairns + + * faqbody.tex (section{PostScript and TeX}): bunch of new stuff from + berthold and mike updating the section on scalable outline fonts + (section{Documentation and Help}): add a first reference to teencontrex + (section{Acquiring the Software}): correct address for the ctan list in + `contributing to the archives' + + * dirctan.tex: added hvmath, tmmath and teencontrex + + * faq.sty: make the tex logo robust + +Fri Sep 8 17:55:13 2000 Robin Fairbairns + + * dirctan.tex: redid reference to c++2latex + + * faqbody.tex (section{Documentation and Help}): correct a \dots + invocation in "where to get help"; recommend ctan search web address + rather than the catalogue direct + (section{How do I do X in TeX or LaTeX}): added reference to c++2latex + for typesetting code, at the suggestion of Michael Soulier + +Tue Aug 22 14:39:09 2000 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): slight tidying + of matter in question about dashed integrals + +Sun Aug 20 17:27:55 2000 Robin Fairbairns + + * dirctan.tex: added vmargin (now in supported) + + * filectan.tex: removed vmargin + +Mon Jul 24 09:26:41 2000 Robin Fairbairns + + * dirctan.tex: add ams-AMStype1 + + * faqbody.tex: v 2.4.7f, today + (section{PostScript and \TeX{}}): more work on the fonts stuff + +Sat Jul 22 10:24:05 2000 Robin Fairbairns + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): add donald's + "typesetting principal value integral" + v2.4.7d, today + (section{Introduction}): removed email address for bodenheimer, which + hasn't (afaik) worked for some time + +Fri Jul 21 17:46:09 2000 Robin Fairbairns + + * faqbody.tex (section{PostScript and TeX}): berthold's stuff on + outline fonts (mike's is harder work ;-) + v 2.4.7c, today + + * dirctan.tex: add cm-AMStype1 + +Wed Jul 19 10:18:36 2000 Robin Fairbairns + + * texfaq2html (sanitize_line): add \arrowhyph + + * faq.sty: added \arrowhyph + + * additions.tex (section{Proposed new questions}): moved Peter Wilson's + one on getting a new package + + * faqbody.tex: v2.4.7b, today + (section{Special sorts of typesetting}): correct address for mutex + +Mon Jul 10 15:07:48 2000 Robin Fairbairns + + * dirctan.tex: explicit location for tds (will presumably never now be + version 1.0 ... + + * faqbody.tex (section{Support Packages for \TeX{}}): removed vortex + (section{Bits and pieces of \TeX{}}): add pw's on the tds + +Fri Jul 7 12:26:22 2000 Robin Fairbairns + + * texfaq2html (sanitize_line): make \begin|\end{htmlversion} ignore + entire line + + * faqbody.tex (section{Documentation and Help}): new question on \MF + and \MP tutorials (pw again) + v2.4.7a, today + + * filectan.tex: added metafp.(ps|pdf) + + * faqbody.tex (section{The Background}): pw's revision to mp answer + (section{Documentation and Help}): couple of additions to booklists + (section{Documentation and Help}): pw's major addition to mail list + stuff + + * texfaq2html (sanitize_line): add \PDFLaTeX + + * faq.sty: add \PDFLaTeX + +Sat Jul 1 13:12:00 2000 Robin Fairbairns + + * faqbody.tex (section{Introduction}): added peter wilson to list of + acknowledgements + (section{Documentation and Help}): the first of peter wilson's new + answers -- books on type + +Fri Jun 23 12:26:31 2000 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): give locations for + ctan servers, and correct www address for tug box search script + +Wed Jun 21 13:41:17 2000 Robin Fairbairns + + * texfaq2html (sanitize_line): ignore \keywords argument + + * faq.sty: add \keywords command (ignores argument, carefully) + + * faqbody.tex (section{Why does it do that?}): question on renaming + fixed texts in the context of babel (has \keywords) + +Tue Jun 20 14:03:38 2000 Robin Fairbairns + + * faqbody.tex (section{Introduction}): acknowledge alan jeffrey's + design of the html version, and record use of dante material + + * dirctan.tex: add pictex-addon + + * filectan.tex: add context-tmf, delete doublespace + + * faqbody.tex (section{Why does it do that?}): question on pictex and + registers, largely lifted (with help from babelfish) from dante's faq + +Wed Jun 14 11:36:29 2000 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): caveat for non-ia32 versions + of miktex, mention the psu.edu mac-tex page + +Tue Jun 13 10:27:09 2000 Robin Fairbairns + + * faqbody.tex (section{The Background}): updated details for gutenberg + +Wed Jun 7 12:33:02 2000 Robin Fairbairns + + * faqbody.tex: version 2.4.5, today (for release) + (section{Acquiring the Software}): missing \endhtmlignore in nonfree + tree question + +Thu Jun 1 16:41:28 2000 Robin Fairbairns + + * faqbody.tex (section{Things are Going Wrong}): rewritten question + about capacity exceeded (scrapping assertions about pure methods of + hacking the tex web source, for goodness' sake!) + +Fri May 5 12:44:05 2000 Robin Fairbairns + + * filectan.tex: add reference to epslatex.ps + + * faqbody.tex (section{PostScript and TeX}): add reference to + epslatex.ps in question on graphics inclusion where previously only + the pdf was mentioned + +Wed Apr 26 11:17:34 2000 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): remove reference to + (now defunct) bitftp@pucc.bitnet + (section{Acquiring the Software}): add ctan.tug.org ftpmail + (section{Acquiring the Software}): hacking at search info (more to do) + (section{The Background}): update uk tug details + (throughout): remove parentheses from (+countrycode) + + * faq.sty: another iteration of pdfstartview + +Tue Apr 25 15:30:52 2000 Robin Fairbairns + + * faq.sty: tried alternative pdfstartview value -- no joy + +Fri Apr 14 15:20:33 2000 Robin Fairbairns + + * filectan.tex: add latex-classes, ltxguide + +Wed Apr 12 15:01:42 2000 Robin Fairbairns + + * faqbody.tex: v2.4.2, today + + * Makefile: add targets help, patch (==newfaq-patch) and web (==march) + + * dirctan.tex: remove gtex; stick a whole lot of obsolete/ prefixes in + dviware things (that are probably not, in all honesty, ever going to + be used again, but what the hell...) + + * faqbody.tex (section{DVI Drivers and Previewers}): remove all the + previewers that have been moved to obsolete/, rewrite the rest + mentioning miktex and fptex previewers, characterise emtex's thing as + dos+os/2 only, etc., etc. + (section{\TeX{} Systems}): remove references to gtex + (section{Special sorts of typesetting}): remove references to gtex + +Wed Apr 12 07:44 rf@huntingdon (using vi) + + * companion.ctan: update location of version.sty + +Thu Apr 6 18:52:52 2000 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): correct spelling of + bernice in sacks lipkin's name (oops) :-( + +Wed Apr 5 10:22:21 2000 Robin Fairbairns + + * faqbody.tex (section{PostScript and \TeX{}}): rewrite figure + inclusion with emphasis on the graphics package + + * dirctan.tex: add draftcopy and ms + + * additions.tex (section{Proposed new questions}): Add watermarks q + +Mon Apr 3 21:25:19 2000 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): tidy up gratzer's + latest (which _has_ been published now, or else...) and add reference + to lipkin's latex for linux + +Fri Mar 31 14:40:29 2000 Robin Fairbairns + + * faqbody.tex: v2.4, today + + * additions.tex: bunch of questions moved out; back to pl 1 (only + unfinished `new language in babel' question now left) + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): moved in 1-col + abstract, babel words and code listings questions + (section{Acquiring the Software}): moved in `nonfree' question + (section{Format conversions}): moved in `read SGML/XML direct' question + (section{Why does it \emph{do} that?}): moved in \marginpar question + +2000-03-27 Robin Fairbairns + + * newfaq-patch.tex: input faqbody for version and date before additions + + * additions.tex: make version reported derive from \fileversion from + faqbody + + * faqbody.tex (section{\TeX{} Systems}): removed listing for microtex + v2.3a2, today + +2000-03-24 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): correct details for truetex + + * faq.sty: define a url in pdf mode for the debian social contract, + _before_ loading hyperref; remove all the old (pre-url.sty) + definitions using the FAQverb mechanism; remove the attempts at + patching hyperref's normalisation mechanisms + + * additions.tex (section{Proposed new questions}): use defined url for + debian social contract address (to bypass hyperref boondoggle) + +Fri Mar 17 15:30:56 2000 Robin Fairbairns + + * additions.tex (section{Proposed new questions}): Completed new + questions added yesterday (but not, I see, documented) -- on listings + and \marginpar + + * dirctan.tex: add listings, tiny_c2l + +Thu Mar 16 10:01:02 2000 Robin Fairbairns + + * texfaq2html (sanitize_line): \URL argument in braces now + (sanitize_line): $e$ generalised to $$ (for $n$, just now) + +Thu Mar 2 14:27:03 2000 Robin Fairbairns + + * dirctan.tex: added mparhack + +Thu Feb 10 16:55:44 2000 Robin Fairbairns + + * dirctan.tex: add passivetex + + * faq.sty: \URL is _just_ \url now + + * additions.tex: v2.3a1 pl4, today + (throughout): convert all \URL commands to take arguments in braces + (section{Proposed new questions}): passivetex ctan reference now + only one version of reference to social contract + + * faqbody.tex (throughout): convert all \URL commands to take arguments + in braces + v2.3a1, today + +Fri Jan 21 14:09:59 2000 Robin Fairbairns + + * dirctan.tex: added xmltex + + * additions.tex (section{Proposed new questions}): added spqr's + question about typesetting *ml direct with tex; + 2.3a pl3, today + +Tue Dec 14 10:28:00 1999 Robin Fairbairns + + * faq.sty: attempted improvement of \ifpdf definition of \URL (trying + to use hyperref's sanitising facilities) + + * additions.tex (section{Proposed new questions}): outlines for babel + hyphenation, babel `foreign words' + (section{Proposed new questions}): wrap verbatim lines a bit + + * texfaq2html (sanitize_line): add \meta + + * faq.sty: add \meta command + +Fri Dec 3 09:34:24 1999 Robin Fairbairns + + * Makefile (newfaq-patch): new target (with ancillaries) to make pdf + and ps versions of the patched file + + * letterfaq.tex: bring into line with newfaq (was rather wonky) + + * additions.tex: new file -- proposed additions to faqbody + + * newfaq-patch.tex: new file -- newfaq, with the additions + + * newfaq.tex: eliminate reference to bodenheimer in the title, mention + the march 1999 printed issue + +Mon Nov 1 17:50:07 1999 Robin Fairbairns + + * texfaq2html (tail): add href to default address for script using `TeX + FAQ' as anchor + +Mon Sep 6 13:25:08 1999 Robin Fairbairns + + * faqbody.tex (section{Introduction}): removed phil taylor from list of + non-committee-members + +Thu Sep 2 14:11:02 1999 Robin Fairbairns + + * faqbody.tex: today's date, v2.3a + + * Makefile: add configuration variable CMFONTS(=cmz), and use it where + previously just said -Pcms + + * filectan.tex: added simpl-latex + + * faqbody.tex (section{PostScript and \TeX{}}): correct ref to mathpple + (section{Documentation and Help}): add ref to harvey greenbergs + simplified latex thing + + * faq.sty: defer \let\Qlabel\label to begin document in case that we're + using hyperref + +Wed Sep 1 09:11:00 1999 Robin Fairbairns + + * faq.sty: don't have \raggedright explicit in the definition of + \Question -- hyperref chokes, now -- redefine \subsection instead + + * faqbody.tex (section{PostScript and \TeX{}}): change description of + authorship of mathpple + + * filectan.tex: remove mathpple (dangling pointer into tetex) + + * dirctan.tex: add mathpple (fonts/mathpple) + +Mon Jul 26 14:34:46 1999 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): change wording around binary + availability for tetex + v2.3 (3.0 for the published version?), today + + * dirctan.tex: tetex binaries from distrib/binaries directory (change + label to tetex-bin from -install) + +Sat Jul 24 08:50:15 1999 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): retrieved text about + ghostscript caoability of viewing acrobat docs + (section{The Background}): minor typo in lollipop + +Fri Jul 23 21:19:39 1999 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): missing \\ in details for sci + word + (section{\TeX{} Systems}): updated with words from mike vulis about + vtex + (section{Format conversions}): add references to vtex & tidy a bit more + + * dirctan.tex: add vtex (and delete vtex-demo, ancient) + +Tue Jul 13 09:31:14 1999 Robin Fairbairns + + * faqbody.tex (section{Support Packages for \TeX{}}): change reference + to ispell to reflect browsing status + (section{Format conversions}): tidy the question on generating acrobat, + add url for getting acroread + (section{Acquiring the Software}): canonical ctan.org addresses for + everything, remove numeric addresses (most of which were wrong anyway) + + * dirctan.tex: make ispell directory browsable, and remove all + subdirectory references + + * filectan.tex: update version number for excalibur + +Sun Jul 4 00:01:06 1999 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): rewrote the section about + pdf output, including (inter alia) dvipdfm, and dropping reference to + dvipdf + (throughout): GhostScript->Ghostscript + + * dirctan.tex: add dvipdfm + + * faqbody.tex (section{Current \TeX{} Projects}): make NTS logo come + out bold in question title (using \afterquestion); use \afterquestion + for question about 2e + (section{The Background}): use \afterquestion (twice) in re. instances + of bold math characters in titles + +Sat Jul 3 10:02:22 1999 Robin Fairbairns + + * faq.sty: add \afterquestion command for use after \Question commands + inside groups + + * faqbody.tex (section{How do I do X in \TeX{} or \LaTeX{}}): refer to + sectsty, titlesec and fncychap as alternatives for changing section + headings + remove reference to NFSS question in roman theorems question + + * dirctan.tex: add sectsty, titlesec, fncychap + + * faqbody.tex (section{Current \TeX{} Projects}): section renamed from + `recent developments' + commented-out the nfss question (hardly current any more) + rewritten latex question to refer to june 1999, and to stand alone re + nfss issue + (section{Things are Going Wrong\dots{}}): get rid of references to the + NFSS question + (section{How do I do \textsl{X} in \TeX{} or \LaTeX{}}): no question + reference for NFSS in section headings question + + * dirctan.tex: add context + + * faqbody.tex (section{The Background}): Add a question about context + (section{The Background}): junk the commented-out stuff about AMS + things we no longer admit to... + version 2.2t, today + + * texfaq2html (sanitize_line): add \CONTeXT (and \PDFTeX, \NTS, \eTeX, + \Eplain, \TeXsis and \WYSIWYG ... oops) + + * faq.sty: add \CONTeXT + +Mon Jun 14 17:46:49 1999 Robin Fairbairns + + * faqbody.tex: today's date + + * texfaq2html (sanitize_line): add \'e + + * faqbody.tex (section{Documentation and Help}): add a proto- + question on tutorials + + * filectan.tex: add gentle, lshort (both pointing at .pdf files) and + change epslatex to point at the .pdf file + +Sun Jun 13 14:01:10 1999 Robin Fairbairns + + * faqbody.tex (section{Introduction}): rearranged list of committee + members to be more easily editable, and removed malcolm and kaveh's + names from the list of people said to have retired in 1998 + (section{Macros for Particular Types of Documents}): questions about + setting papers for journals, and creating a report from a bunch of + articles + v2.2q, today + + * dirctan.tex: add frankenstein + +Sat Jun 12 09:25:42 1999 Robin Fairbairns + + * faqbody.tex (section{How do I do \textsl{X} in \TeX{} or \LaTeX{}}): + struggling to make sense of the twaddle about logos, in html... + (section{Documentation and Help}): retrieved the isbn for knuth's + hardback + + * texfaq2html: define $home from $ENV{FAQ_HOME} if that exists + + * faqbody.tex (section{Documentation and Help}): \ISBN commands for tip + separate volumes; add first stab at entry for knuth's collected papers + (missing hardback isbn just now) + (section{Macros for Particular types of Documents}): new section, only + containing vita.cls as yet + (section{How do I do \textsl{X} in \TeX{} or \LaTeX{}}): be a bit ruder + still about the silly-logo syndrome; mention the \MP problem and the + difficulties with texnames.sty + (section{The Background}): credit hobby in \MP question + v2.2p, today + + * dirctan.tex: Add vita + + * faq.sty: \MP == MetaPost in public version (P was lower case) + (matches what's in texfaq2html) + +Thu Jun 10 09:41:01 1999 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): rewritten win32 part, + emphasising the info got from fabrice's talk at the uk tug meeting + + * dirctan.tex: added lwc, lgc + + * faqbody.tex (section{Documentation and Help}): commented out entry + for making tex work (no longer in ora catalogue), updated entry for + diller's organ, removed buerger's entry (no longer in mcgraw-hill + cat.) and shultis' (no longer in prentice hall cat.) + removed comment about what is/isn't good for latex2e, added reference + to lgc and lwc directories + + * texfaq2html (sanitize_line): moved \acro up above \emph + +Wed Jun 9 17:49:34 1999 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): Added lwc + v2.2o, today + +Sat Jun 5 11:10:19 1999 Robin Fairbairns + + * Makefile.CTAN (archive.cfg): needs distributing, too + + * faq.sty: NoLine for package warning about missing refs at end + damn -- need distinguished \CTANdirectory* in pdf case + + * faqbody.tex: v2.2n, today + + * faq.sty: make \CTANdirectory ignore * + + * faqbody.tex (section{\TeX{} Systems}): `browse' 2 tetex directories + + * texfaq2html: add \CTANdirectory* capability, for browsing dirs + + * dirctan.tex: added 0.4 into tetex and tetex-bin, convert all tetex + entries to *-form + +Tue May 25 14:52:12 1999 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): corrections to sciword stuff + 2.2m, today + +Mon May 24 14:29:21 1999 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): Updated sciword, etc., bumf + 2.2l, today + +Fri May 14 12:17:37 1999 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): restore yesterday's change... + +Thu May 13 10:02:58 1999 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): make the html redirect for + miktex go to the 1.20 directory, since miktex/index.html has gone :-( + +Fri May 7 10:05:15 1999 Robin Fairbairns + + * dirctan.tex: correct directory address of fptex (!) + + * Makefile.CTAN: add texfaq2html + + * faqbody.tex: change date to today + (section{\TeX{} Systems}): different references for miktex as + between the printed and web versions (ouch...) + (section{\TeX{} Systems}): remove commented-out text about getting + oztex on floppies... + + * dirctan.tex: add systems/win32/miktex + + * filectan.tex: removed the three miktex file entries + + * texfaq2html: add mail url for uktug-faq@tex.ac.uk in the tail + +Thu May 6 14:18:26 1999 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): Add reference to + ISO 690-2 online version in question about citing urls + v2.2j, today + +Fri Apr 23 11:45:35 1999 Robin Fairbairns + + * Makefile.march: new, update the things needed for the texfaq script, + _only_ + + * Makefile: add new target march to run Makefile.march in + VH-tex/faq-source + + * faqbody.tex (section{The Background}): new url for uk tug + (section{Introduction}): change url for the faq to cambridge, remove + footnote about it being a temporary one + + * texfaq2html: remove the `brought to you at' mucking about; change + $home; change web address for uktug + +Thu Apr 22 15:37:13 1999 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): Update details on K&D + to third edition + +Sat Apr 17 16:16:10 1999 Robin Fairbairns + + * texfaq2html: /usr/bin/perl (so as to work both on bescot and march) + +Wed Apr 7 14:10:47 1999 Robin Fairbairns + + * newfaq.workers: stupid file ... should i keep it? + + * Makefile.CTAN: add newfaq.ps (eh?!) + + * faqbody.tex (section{Documentation and Help}): kerfoodle to produce + the string /caption\\. as in-line verbatim in html + version 2.2g, today + +Sat Apr 3 08:57:10 1999 Robin Fairbairns + + * Makefile.CTAN: (new file) first stab at automating installation on + CTAN + + * Makefile.FTP: remove .dvi and .ps files from this distribution + + * Makefile: add symbols DVIPS, PDFLATEX and LATEX (which last rather + useless at present + + * faqbody.tex: today's date + (section{\acro{DVI} Drivers and Previewers}): remove reference to the + separately-available VMS version of dvips + + * dirctan.tex: add tetex-beta + + * faqbody.tex (section{\TeX{} Systems}): correct VMS entry + (section{Perhaps There \emph{isn't} an Answer}): sort screed about + consultants, and add pointer to TUG consultants page; correct + reference to latex project + (section{Recent Developments}): revise the text about the latex3 + project; add reference to cyrillic in the latex2e stuff, and otherwise + revise _that_ text; refer to packaged systems that include omega + (section{\TeX{} Systems}): urge packaged systems for unix, and refer to + tetex-beta + + * filectan.tex: remove all the old VMS references and add OpenVMSTeX + +Fri Apr 2 14:53:15 1999 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): reword fptex stuff, and change + label + (throughout): ensure that _all_ em-dashes are preceded by nobreakspace + and use \LaTeXo in place of spelling out the old version number (for + consistency of layout) + + * dirctan.tex: deal with latex packages directory (and delete the + `whole directory' label which wasn't used) + win32/web2c -> fptex + +Tue Mar 16 00:03:15 1999 Robin Fairbairns + + * faqbody.tex (section{The Background}): minor editorials on the Y2K + question + +Sun Mar 14 09:29:54 1999 Robin Fairbairns + + * faqbody.tex (section{The Background}): Add a question on Y2K + compliance (and give a \Qref to the outline of LaTeX) + (section{The Background}): Add a section on trip/trap + version 2.2e, dated today + (section{Introduction}): Add John Palmer to the footnote about the + committee + (section{Documentation and Help}): add isbn for mfbook paperback + (section{Documentation and Help}): mention wichura under the pictex + manual, and add reference to pti's web site (without mentioning the + price they charge for the damned manual!!!!!) + (section{Acquiring the Software}): remove information (which is surely + out of date) about the `next' (late 1997) release of 4alltex disc -- + no replacement since the situation isn't clear to me... + (section{Format conversions}): remove reference to jf's stuff (which + seems to have been abandoned in favour of activetex) + +Sat Nov 14 12:45:16 1998 Robin Fairbairns + + * filectan.tex: add a winedt entry + + * faqbody.tex (section{Introduction}): changes to lists of names + (section{\TeX{} Systems}): add a little thing about winedt (probably + not satisfactory) + + * filectan.tex: three separate miktex files + + * dirctan.tex: miktex (pc) _goes_ + + * faqbody.tex (section{Format conversions}): correct info about the + word processor conversions faq + (section{The Background}): remove reference to .zip file of texinfo + + * filectan.tex: texcnven no longer exists -- record the .zip file in + the directory; update the texinfo file name (removing the version + number and thereby relying on the link) and get rid of the .zip + reference (did such a file _ever_ exist?) + +Tue Aug 25 13:51:52 1998 Robin Fairbairns + + * faqbody.tex (section{The Background}): New version of tech wg stuff + from kaja christiansen + +Thu Jun 11 17:10:37 1998 Robin Fairbairns + + * Makefile (CONFIGS): new, another category of thing to depend on + +Wed Jun 10 12:58:02 1998 Robin Fairbairns + + * faqbody.tex (section{Bits and pieces of \TeX}): minor rewording of + text about ec fonts, correction of punctuation + +Tue Jun 9 20:40:05 1998 Robin Fairbairns + + * dirctan.tex: start suppressing unused directories + + * faq.sty: make \CTAN{directory,file} deal with case of active file or + directory name + + * faqbody.tex (section{Special sorts of typesetting}): make direct + reference to suppport/xindy into a \CTANref; minor typos corrected + + * archive.cfg: new file, configuration for {file,dir}ctan when make pdf + +Tue Jun 9 00:11:09 1998 Robin Fairbairns + + * faq.sty: distinguish two \Status targets, 1- and 2-column pdf (values + 1 and 2) + + * faq.cls: load packages before setting page dimens, don't change + horizontal dimens if single column version + + * faqbody.tex (section{Format conversions}): dvipdf lesenko spoke about + it in the past (was `hoping to speak' at tug'97); today's date; slight + rewording of basic outline of omega + +Mon Jun 8 17:21:15 1998 Robin Fairbairns + + * faq.sty: yet another fiddle with hyperref options; suppress multicol + when doing pdf + +Sun Jun 7 09:25:05 1998 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): Remove reference to + getting the old faq by ftpmail; increment patch number, date today + + * faq.sty: juggle with hyperref package options; remove spurious space + in `public' definition of \MF + + * Makefile: do pdf generation on the basis of pdf-{new,letter}faq.tex + +Sat Jun 6 00:59:02 1998 Robin Fairbairns + + * faq.cls: also require url.sty, since we again have a conflict with + hyperref + + * faqbody.tex (section{\TeX{} Systems}): remove claim that tug can + supply pc software or copies of oztex (and restructure the mac + question slightly as a result); refer to omega port in cmactex + + * faq.sty: replace all alan's old url-ish definitions with ones based + on url.sty (this is too slow processing dirctan.tex...) + + * Makefile: add new targets newfaq.pdf and letterfaq.pdf; parameterise + files we depend on; do away with old `all' target, and use body of + `public' one instead + +Fri Jun 5 20:23:09 1998 Robin Fairbairns + + * faq.cls: input multicol before faq, in case we're running pdflatex + (\Status=1) -- since hyperref changes \@footnotetext, and multicol + checks it, this is somewhat important... + + * faqbody.tex (section{Documentation and Help}): reword the sorry tale + of the pictex manual (i.e., not available at all) + +Thu May 28 14:52:14 1998 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): refer to + fancyvrb in `including verbatim files' and `line numbers' + v2.2a, today + + * dirctan.tex: add fancyvrb + +Tue May 5 11:05:11 1998 Robin Fairbairns + + * Makefile.FTP (all): removed non-cm .dvi files, .300ps files + +Mon May 4 21:56:52 1998 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): tug2->ctan.tug.org + (section{Acquiring the Software}): tug2->ctan.tug.org + + * faq.sty: add \Status game (cribbed from seb's work on tex-live doc) + +Sat May 2 17:49:11 1998 Robin Fairbairns + + * faqbody.tex (section{Introduction}): backing off bodenheimer, ref the + version on TeX Live CD + (section{Acquiring the Software}): tex-live now third edition + v2.2, today + + * Makefile (public): new `general' target, with no .300ps stuff + (newfaq.ps,letterfaq.ps): remove specification of elm + + * faq.sty: junk the old diddling with parameters for times (there've + been several new releases of the metrics since those were recommended) + define \ifpublicversion, talking of the fonts to be used, so we can + have a type1-fonts-only version + +Fri May 1 17:55:49 1998 Robin Fairbairns + + * faqbody.tex: 2.1o, today + + * dirctan.tex: add footmisc + + * filectan.tex: remove stblftnt + + * faqbody.tex (section{How do I do X in \TeX or \LaTeX}): refer to + footmisc rather than stblftnt + +Mon Apr 6 12:56:20 1998 Robin Fairbairns + + * Makefile (clean): add -f switch + + * faqbody.tex (section{\TeX{} Systems}): refer to pctex32 (as a windows + implementation) + version 2.1n, today's date (forgot that last time) + +Thu Mar 26 16:51:01 1998 Robin Fairbairns + + * faqbody.tex (section{Why does it \emph{do} that?}): redo the examples + for #-doubling in terms of + rather than -, so no need for farting + around with ligatures + (section{Introduction}): removed jf from list of resigned committee + members, added dpc, and brought committee list up to date + +Wed Mar 18 10:19:55 1998 Robin Fairbairns + + * companion.ctan: correct calc, changebar + +Fri Jan 16 09:58:18 1998 Robin Fairbairns + + * faqbody.tex: v2.1m, today + (section{The Background}): Correct address and phone nos for TUG + +Wed Nov 5 10:40:40 1997 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): minor typo in + line numbering q + +Tue Nov 4 11:03:45 1997 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): Avoid nested + braces in indexing question + (section{Introduction}): Refer to LaTeX2e rather than LaTeXe in intro + (html version only) + + * faq.sty: Define \oparen and \cparen commands + + +Wed Oct 29 16:33:41 1997 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): Update truetex web page + address (and source details) + +Mon Oct 27 09:20:15 1997 Robin Fairbairns + + * faq.sty: Comment about oddity of \CTAN command + + * faqbody.tex (section{Things are Going Wrong\dots{}}): Tidy up earlier + text (difficult to quote entire trivial lines, in-line) + +Sat Oct 25 23:37:11 1997 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): \CTAN takes + a real argument, not one in vertical bars + + * faq.sty: Add \TeXsis, \parens + +Sat Oct 25 10:52:42 1997 Robin Fairbairns + + * faqbody.tex: today's date + (section{Special sorts of typesetting}): Add questions on typesetting + URLs, and on citing them with BibTeX; reference texsis's indexing + macros, and mention xindy (not terribly satisfactorily, given the way + it's organised on CTAN) + + * dirctan.tex: Add xindy + + * filectan.tex: Add texsis-index + + * faq.sty: remove definition of \ifnotreadCTAN, define \htmlonly and + \textpercent + + * texfaq2html (sanitize_line): Add \htmlonly (as no-op), \\textpercent + rather than \\\% (!) + + * filectan.tex,dirctan.tex: Own protection against being read twice + + * newfaq.tex,letterfaq.tex,faqbody.tex: Do away with conditional around + loading {dir,file}ctan + +Fri Oct 24 19:34:37 1997 Robin Fairbairns + + * faqbody.tex (section{Introduction}): Add Oren Patashnik to list of + contributors (in anticipation...) + (section{Things are Going Wrong\dots{}}): Modify answer to offer Oren's + solution to the `BibTeX string too long' problem + Add a question about underlining + (top of file): v2.1l, today + + * filectan.tex: Add ulem.sty, abstract.bst + Excalibur entry now .sit.hqx (also corrected version no) + +Thu Oct 23 08:09:37 1997 Robin Fairbairns + + * filectan.tex: Add url.sty, update version number in the texinfo + distribution + + * faqbody.tex (section{How do I do X in TeX or LaTeX}): Rewrite the + initial text in a slightly less school-ma'am-ish way + +Fri Oct 10 19:40:06 1997 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): Add question on + line numbering + + * dirctan.tex: Add lineno + Delete a bunch of entries that are wrong/irrelevant/misleading + (including all the latex209 ones that didn't get moved to latex + by Seb in his LGC campaign, apart from ones that might figure in + a future question, like chbars, chem{struct,tex}) + Correct xymtex (to contrib/other), crossword (to contrib/other/ + crosswrd), elsevier (to contrib/supported), footnpag (to contrib/ + supported), ucthesis (to contrib/supported) + Replace epic with (macros/latex/contrib/other/)eepic + + * filectan.tex: Add numline, latex209-base + Correct ukhyph + +Fri Oct 10 11:41:13 1997 Robin Fairbairns + + * faqbody.tex (section{Recent Developments}): Correct John Plaice's + email address + +Fri Oct 10 07:01:24 1997 Robin Fairbairns + + * texfaq2html (sanitize_line): Process \mailto + Use $0 if environment SCRIPT_NAME isn't defined + + * faq.sty: Define \mailto + + * faqbody.tex (throughout): Convert \Email to \mailto for addresses + that should/could be mailable direct from the web instance of the FAQ + (section{\TeX{} Systems}): Note update date of pctex info + +Thu Oct 9 22:36:02 1997 Robin Fairbairns + + * faqbody.tex (section{Why does it \emph{do} that?}): Add a question on + the behaviour of \include; small extension of the question about \verb + to note other exciting error messages + +Wed Oct 8 16:38:52 1997 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): ctan-web from tug2 + rather from its old Oh Really site + +Wed Oct 8 00:26:29 1997 Robin Fairbairns + + * texfaq2html: Upgraded for perl5 (heaven knows whether it now works + under perl4 + + * faqbody.tex (section{Documentation and Help}): Add a url for + ctindex.html in addition to the full thing + +Mon Sep 6 13:50:51 1997 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): New email addresses for PTI + +Fri Sep 5 18:42:23 1997 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): correct URL for WC + CDROM information + +Wed Aug 20 10:51:16 1997 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): Add tug2.cs.umb.edu + (section{How do I do \textsl{X} in \TeX{} or \LaTeX{}}): Add Donald + Arseneau's note about \mathbf vs. AMSLaTeX + (section{Introduction}): Add Donald Arseneau to acknowledgements + +Wed Aug 13 11:27:55 1997 Robin Fairbairns + + * Makefile (clean): Only delete .aux files cgi-bin script doesn't use + + * dirctan.tex: amslatex from latex/packages, amstex from macros/amstex, + fontsel from latex209/amslatex/fontsel (oops); junk AMS author-info + and its guidelines + + * faqbody.tex (section{Why does it \emph{do} that?}): Mentioned + changing the text, and \enlargethispage for split footnotes + (section{How do I do \textsl{X} in \TeX{} or \LaTeX{}}): Add a question + on bold greek letters + +Tue Aug 12 14:39:30 1997 Robin Fairbairns + + * faqbody.tex (section{Why does it \emph{do} that?}): Add question on + split footnotes + v 2.1f, today + (section{Introduction}): Add David Kastrup to list of acknowledgements + +Mon Aug 11 16:07:37 1997 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): Quote a CPAN address for + SGMLS (was using a direct UOttawa address for dmeggins' directory) + 2.1e, today + +Tue Jul 22 12:37:17 1997 Robin Fairbairns + + * archive.list: List of acceptable archives (just archive name and root + so far, but abbrevs and acceptable formats also possible) + + * texfaq2html: Further work to make the archive list and archive + selection work + Make the selected archive and format hidden input from the search form + +Mon Jul 21 13:59:21 1997 Robin Fairbairns + + * texfaq2html: Add format (or f) and archive (or a) keywords + Add link at end to UK TUG home page + Add archive_list variable + + * archive.list: New file, list of allowable archives + +Thu Jul 10 11:26:42 1997 Robin Fairbairns + + * texfaq2html (sanitize_line): Add translation of \thinspace{} to space + + * faqbody.tex (section{\TeX{} Systems}): {} after \thinspace + +Tue Jul 8 09:48:20 1997 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): remove reference + to doublespace.sty + v2.1d, today + + * filectan.tex: threeparttable.sty is now a latex (rather than 209) + package + remove entry for alltt + + * texfaq2html: correct (to non-opaque html) translation of \pounds + + * faqbody.tex (section{\TeX{} Systems}): Refer to the win32 port of + Web2C, miktexppc and miktex-AXP, and the djgpp port of Web2C + + * dirctan.tex: Directory name djgpp (an obscure pointer to something + deep in the ps2pk tree) subverted to point at systems/msdos/djgpp + Add win32-web2c, miktexppc and miktex-AXP + +Wed Jun 18 15:57:57 1997 Robin Fairbairns + + * faqbody.tex: v2.1c, today + +Wed Jun 18 00:17:56 1997 Robin Fairbairns (robin@sams-machine) + +* faqbody.tex (section{Acquiring the Software}): Rearranged (and somewhat + reworded) the CDROM question, at Sebastian's suggestion + +Tue Jun 17 23:03:43 1997 Robin Fairbairns (robin@sams-machine) + +* faqbody.tex (section{Recent Developments}): Typos in PDFTeX stuff, change + assertion to say it is postgrad research rather than originating in an MSc + project (as I thought but Sebastian didn't) +(section{Perhaps There \emph{isn't} an Answer}): Make reference to TUG as + contact for TeX bugs a link + +Tue Jun 17 14:43:56 1997 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): fancyheadings-> + fancyhdr + (section{Format conversions}): Further iteration of the acrobat- + creation text + (section{Things are Going Wrong\dots{}}): fancyheadings->fancyhdr in + the first-page-empty thing... + (top of file) version 2.1b, today's date + (section{Acquiring the Software}): Correct \Qref in 4AllTeX text + + * dirctan.tex: other/fancyheadings->supported/fancyhdr + + * faq.sty: Added \PDFTeX + +Mon Jun 16 15:40:07 1997 Robin Fairbairns + + * dirctan.tex: Added pdftex + + * faqbody.tex (section{Introduction}): Add Mark to committee list, + change URL to www.tex.ac.uk and remove footnote about it being + temporary + (throughout): \emph{}asise `your name' in mailing list subscription + info + (section{The Background}): Correct address for TUG + (section{Format conversions}): dvips implements the hypertex specials + now + (section{Format conversions}): First stab at editing `making acrobat + documents' + (section{\MF{}}): Got rid of that awful American-style date in ln03 + mode file + (section{Recent Developments}): Added a pdftex question, moved all the + statements about eTeX into present tense, and linked to TeX live in + the CDROMs section + + * newfaq.tex: Edit note (beneath title) to refer to 1995 Christmas + edition, and to make availability via WWW present tense... + +Tue Jun 10 12:44:20 1997 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): Tidy question about + availability of the article, and reword pointer to Bodenheimer's one + since it's now just to the directory; + (section{Bits and pieces of \TeX{}}): Reword the question about DC + fonts to one about EC fonts. + (section{Acquiring the Software}): Add TeX Live to CD-ROM distributions + (section{\TeX{} Systems}): Remvoed the reference to the AIX and 386ix + distributions (which are wildly out of date), tidy up the text about + Linux, and add a caveat about the Slackware '96 disc + Top of file: change to version 2.1 + + * dirctan.tex: Add TeX-FAQ (in obsolete/help) + Remove dc, add ec in its place + + * filectan.tex: Remove TeX-FAQ + +Tue Jun 3 15:38:34 1997 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): add the LGC to the + book list, and change the phrasing of the `books that cover 2e' list + at the bottom of the list. + +Thu Apr 24 11:03:17 1997 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): Correct Kinch's details + just that little bit further + +Wed Apr 23 09:31:06 1997 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): New Web address for PTI + +Mon Apr 21 14:48:56 1997 Robin Fairbairns + + * dirctan.tex: Remove (confusing) faq and sgi dirs (both under fweb) + +Thu Apr 17 17:34:55 1997 Robin Fairbairns + + * faqbody.tex (section{The Background}): Final address for NTG's Web + offering... + +Wed Apr 2 13:57:22 1997 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): Update Kinch's web address + +Fri Mar 7 10:45:43 1997 Robin Fairbairns + + * faqbody.tex (section{How do I do \textsl{X} in \TeX{} or + \LaTeX{}}): Recode the expression of |\begin{comment}| ... it + would appear that the perl happily gobbles the \begin{comment} + because it's something it knows about + +Mon Mar 3 16:53:14 1997 Robin Fairbairns + + * companion.ctan: Bunch of changes from latex209->latex trees + +Wed Jan 29 15:44:52 1997 Robin Fairbairns + + * filectan.tex: Get xtexcad from graphics/xtexcad + + * faqbody.tex (section{Support Packages for \TeX{}}): xtexcad + definitely does work on other Unices + +Tue Jan 7 12:25:50 1997 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): Remove the (hopeless) + reference to news.answers archives of BB's FAQ, and add references to + source location of our FAQ and to the cstug, dante and (2) french FAQs + (section{Introduction}): Update the information about the committee, + add a pointer to the sources, and tidy + (throughout): convert URL and FAQ to \acro (and change the one instance + of "an FAQ" to "a FAQ" ... who knows which is right, after all?); a + few more Ulrik Vieth typos + (section{Recent Developments}): Add references to Omega and e-TeX + distributions + + * dirctan.tex: Add dante-faq, french-faq, uktug-faq, omega, e-TeX + +Thu Jan 2 13:56:25 1997 Robin Fairbairns + + * faqbody.tex (throughout): a small number of extra extra typos from + Ulrik Vieth + +Fri Dec 20 11:23:29 1996 Robin Fairbairns + + * faqbody.tex (throughout): Several typos corrected, mostly spotted by + Ulrik Vieth + Remove pointer to help/TeX-index/TeX-index from `finding packages', and + add a reference to www.ora.com instead + (section{Documentation and Help}): Add reference to www.dante.de in the + question on finding files on CTAN + + * filectan.tex: Remove TeX-index (since it's now no longer on CTAN) + +Thu Dec 12 12:35:35 1996 Robin Fairbairns + + * dirctan.tex: Add moreverb + + * faqbody.tex (section{The Background}): Correct the archive pointer + from the question on texinfo + (section{Special sorts of typesetting}): Add reference to moreverb in + the question on including a file in verbatim + (section{How do I do \textsl{X} in \TeX{} or \LaTeX{}}): Add a question + whose answer is (in part) stblftnt.sty + (section{Format conversions}): Add a reference to texcnven + + * filectan.tex: Change texinfo-macros to texinfo-dist, which points to + the .tar.gz file, and add a texinfo-dist-zip (oh dammit) + Add stblftnt.sty and texcnven + +Sat Oct 19 21:48:52 1996 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): Correct area code in Kinch's + telephone and fax nos + +Wed Jul 24 15:27:32 1996 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): Move ctan-ann to + Heidelberg ... + There are `other' TeX-related lists there now (!) + (section{Acquiring the Software}): Move ctan to Heidelberg too + +Mon Jul 1 11:26:32 1996 Robin Fairbairns + + * Makefile (clean): new target + + * faqbody.tex (section{Documentation and Help}): removed first + component of vm.urz.uni-heidelberg.de + +Thu Jun 27 15:06:50 1996 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): Downgrade the + reference to TeX-Index (should I junk reference to it altogether?), + and give catalogue.html top billing + (section{Acquiring the Software}): finger ctan@ftp.tex.ac.uk or + ctan@ftp.dante.de + + * filectan.tex: Add catalogue + +Thu Jun 20 13:29:07 1996 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): Remove reference to + ftpmail@shsu.edu + (section{Documentation and Help}): Nahhh... you can't get the FAQ from + SHSU's mail server (can you?) -- tell 'em to use ftpmail instead + +Tue Jun 18 17:10:49 1996 Robin Fairbairns + + * faqbody.tex (section{Acquiring the Software}): Removed SHSU from the + list of CTAN sites + +Mon May 27 13:49:23 1996 Robin Fairbairns + + * companion.ctan: Corrections submitted by Brian Ripley + +Wed May 22 14:25:07 1996 Robin Fairbairns + + * companion.ctan: Update moreverb + +Sat May 18 17:06:12 1996 Robin Fairbairns + + * dirctan.tex: Add mdwtools + + * filectan.tex: Add threeparttable + +Thu May 2 17:47:51 1996 Robin Fairbairns + + * Makefile: for the letterfaq.*ps, use -t letter (now that I've + installed it in the config files... ;-) ... not that it works at all + ... ah me, back to the drawing board ... + +Thu Apr 11 12:59:58 1996 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): Extended TCI's ZIP to 9 digits + (_big_ deal!) + +Thu Apr 4 10:52:35 1996 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): Updated V\TeX entry from + MicroPress' home page (mailed a copy to their support address for + their evaluation + +Thu Mar 21 18:03:59 1996 Robin Fairbairns + + * dirctan.tex: Add miktex + + * filectan.tex: Correct location of setspace + + * faqbody.tex (section{\TeX{} Systems}): Add mik\TeX + (section{Special sorts of typesetting}): Comment out the \subQ ahead of + the fancyheadings question, pending resolution of the problems with + the HTML-iser + +Wed Mar 13 11:08:11 1996 Robin Fairbairns + + * companion.ctan: setspace from contrib/supported/setspace + +Mon Mar 11 1996 Robin Fairbairns + + * companion.ctan: major revision from SPQR (forgot to log it...) + +Mon Mar 4 09:57:37 1996 Robin Fairbairns + + * companion.ctan: fnpara from contrib/other/misc + +Thu Feb 29 12:52:18 1996 Robin Fairbairns + + * faq.sty: Hideous hacking (no doubt, phase 1 only ;-) to get \subQ + working + +Thu Feb 22 11:59:26 1996 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): Added Q66a (but + it won't typeset yet, because I don't have \subQ coded...) + +Wed Jan 31 09:37:17 1996 Robin Fairbairns + + * faqbody.tex (section{Recent Developments}): Disembuggered a bit of + conditional code in \LaTeXe question + (section{The Background}): Minor typo editing + (section{The Background}): WG-92-05 contact:=Sebastian, WG-94-07:=Karl + Berry + (section{Things are Going Wrong\dots{}}): hyphen.cfg not lthyphen.cfg + (section{Things are Going Wrong\dots{}}): Add a word about the + alternative hyphenation character in DC fonts 1.2 + (section{Special sorts of typesetting}): Add descriptions of fenm[pf] + + * dirctan.tex: Change tds to point to tds/draft-standard + +Tue Jan 30 15:05:06 1996 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): Removed `May' from the + assertion about the date when JF hopes to release + (section{Bits and pieces of \TeX{}}): Add projected release date for EC + fonts (courtesy Ulrik Vieth), and add an exhortation about using + 1.2/pl1 at least + (section{PostScript and \TeX{}}): Add a reference to mathppl, in the + section on mathptm (of course) + + * filectan.tex: Add mathppl + +Fri Jan 19 09:33:25 1996 Robin Fairbairns + + * faqbody.tex: (Throughout): Odd bits of \acro-isation ... still, + and general proof-reading corrections + (section{The Background}): Restore \rightmargin for quote env for NTG + (section{Acquiring the Software}): Commented out the elaborate text + about the Decus TeX collection (we know there's up-to-date images, but + the only mirror I can find is dated Apr '94, and wuarchive times out + (section{\MF{}}): Use list rather than tabular for the log report + (section{PostScript and \TeX{}}): Remove the reference to PSNFSS in the + discussion about font metrics + (section{Recent Developments}): Further iteration of the panegyric + about the qualities of 2e; also removed the text about latexbug, since + it also appears in the last question + + * faq.sty: Today's date, slight increment of version + Add a command \fullline + +Thu Jan 18 14:15:23 1996 Robin Fairbairns + + * faqbody.tex (section{The Background}): Commented LAMSTeX out again + Gave the version today's date + (section{Recent Developments}): \acro-ised dvi throughout, except for + one instance where referring to the file name extension + (section{Special sorts of typesetting}): Removed the question + "insisting on changing the margins" (merged into the previous one), + reword the statements it makes slightly + (section{Special sorts of typesetting}): Added Seb's question on + drawing packages + (section{\TeX{} Systems}): Added a reference to TeXtelmExtel directory + + * dirctan.tex: Add TeXtelmExtel + + * production/bask5_6.tex: A bit more in the intro; \acro-ised + +Wed Jan 17 11:53:21 1996 Robin Fairbairns + + * faqbody.tex (section{Introduction}): Hacked out Bodenheimer's intro + (which used to be commented out anyway); change "has been" to "was" in + describing Bodenheimer's maintenance... + Gave the version today's date + A few more proofreading corrections + (section{Special sorts of typesetting}): Redone the examples in the + figures-in-text question to use explicit line breaks + (section{Things are Going Wrong\dots{}}): Add question on hyphenation + of accented words + (section{Bits and pieces of \TeX{}}): Add question on DC fonts + + * filectan.tex: Correct TeX-FAQ address (must have been wrong from the + start!!! + +Tue Jan 16 15:43:04 1996 Robin Fairbairns + + * faqbody.tex: Lots more \acro-isation + Up to v2.0d, dated today + Bunches of proof-reading corrections + (section{\TeX{} Systems}): Added TeXtelMextel to list of shells + + * faq.sty: \acro-ise ISBN + +Mon Jan 15 09:44:14 1996 Robin Fairbairns + + * faqbody.tex (section{The Background}): Added a web address for NTG + Surround both instances of `2e' in question names with \boldmath + +Sun Jan 14 18:01:19 1996 Robin Fairbairns + + * faqbody.tex: Surrounded a whole bunch of things in \acro + (section{The Background}): Added a few Web addresses for user groups + (throughout): Various proofreading corrections (DPC,MJC,RF) + + * dirctan.tex: Got rid of all the old references to fonts/metrics + + * faq.sty: In \AllTeX, kern equally on either side of the closing + parenthesis + \acroise \DANTE, \MSDOS and \CDROM + Declare a \twee macro (to append 2e if necessary) + Define a \careof macro (code out of tugboat.dtx) + +Tue Jan 9 13:19:42 1996 Robin Fairbairns + + * faqbody.tex (section{Format conversions}): Only one version of + "\AllTeX{} conversion to HTML" question title + (throughout): \TeX{}/\LaTeX{} -> \AllTeX{} + +Wed Jan 3 14:23:09 1996 Robin Fairbairns + + * faqbody.tex (section{Special sorts of typesetting}): Add a label to + the text flowing section, for reference in the editorial + (throughout): more minor editorials + + * production/faqfont.cfg: Null file, to suppress faq.sty's default to + using times + + * production/bask5_6.tex: Rewrote the editorial and the title of the + FAQ article itself + + * production/baskerv.cls: Changed (guest) editor name + Subsection titles to use \bfseries (rather than \itshape) + +Note: directory spqr renamed as production... + +Tue Jan 2 12:35:03 1996 Robin Fairbairns + + * spqr/bask5_6.tex: From bask4_6.tex, but added \thisyear + and \thismonth + + * spqr/5_6baskerv.cls: Changed subsection heading back to \bfseries + Select font encoding before selecting family mbvx, + \usepackage{t1enc}->\usepackage[T1]{fontenc} + + * faqbody.tex (throughout): Many minor editorial changes + Use \raggedwithindent + Subsume every occurrence of CTAN in an \acro + + * faq.sty: Add \@ wherever I consider it necessary (includes replacing + at least one instance of `\spacefactor1000 ' + Add a kern before the closing parenthesis in \AllTeX + Add an \acro command (and \textSMC as a result...) + Redo \Question using \newcommand with an optional argument, and set + raggedright in the question title (note: suppresses hyphenation) + Add \nothtml command (transparent) + +Mon Jan 1 16:37:53 1996 Robin Fairbairns + + * faqbody.tex (section{Introduction}): Add Donald Arseneau and + W. Henning (what's the man's first name?) + (section{The Background}): Remove line break in Dante details + (section{Format conversions}): Add text on TeX2RTF + (section{Format conversions}): Correct SPQR's reference to latex2rtf + (he was plainly talking about tex2rtf) + (section{The Background}): Add a label to the lollipop question + (section{PostScript and \TeX{}}): Refer to the lollipop question where + a side reference to it is made re. PostScript metrics + (section{Special sorts of typesetting}): Slight rearrangement of text + in the stuff on wrapping text around figures... + + * faq.sty: Add an \AllTeX command + + * 00readme: Update, dealing with the existence of 600dpi versions, + letterfaq (used only to be dealt with in one place) and possibility of + problems with old versions of 2e + + * Makefile.FTP: Add 00readme to `all' target + + * Makefile: Add the .300ps things as separate targets + Ensure the ftp-directory Makefile is writeable once it's there + +Sat Dec 30 17:20:05 1995 Robin Fairbairns + + * faqbody.tex: Upped the file version and given it today's date + (section{Documentation and Help}): Sort out the text about obsolete man + pages... + (section{Documentation and Help}): Tried a few apostrophe-s in the list + of book titles that cover 2e + (section{Documentation and Help}): Tidied up DPC's text a bit + (incidentally also dealing with a fantasy introduced by my spelling + checker!) + (section{Documentation and Help}): Couple of minor enhancements to + Carol's text + (section{Special sorts of typesetting}): Added the long-bruited + question on flowing text around figures + + * dirctan.tex: Added reference for floatflt + + * filectan.tex: Added references for picins and wrapfig + +Fri Dec 29 21:03:12 1995 Robin Fairbairns + + * Makefile: Move removal of the Makefile into the bracketed bit in + install + Let's have letterfaq.ps actually *make* letterfaq.ps rather than yet + another newfaq.ps, folks! + + * faqbody.tex (section{Acquiring the Software}): Added Walnut Creek + address and telephone nos from their Web site + +Thu Dec 28 18:53:45 1995 Robin Fairbairns + + * faqbody.tex (section{Documentation and Help}): Replaced + \Question[index]{Finding \TeX{}/\LaTeX{} macro packages} and + \Question[compan-files]{Finding \LaTeXe{}-related packages} with two + entirely new answers by the estimable Dr. C. + (section{Acquiring the Software}): Added a reference to Walnut Creek's + little baby (and despatched a message asking for more) + +Tue Dec 19 17:07:09 1995 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): Updated Kinch's details from + the email he sent me + + +Sat Dec 9 17:24:47 1995 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): Updated Kinch's entry as best + I can just now... + +Mon Dec 4 10:03:22 1995 Robin Fairbairns + + * faqbody.tex (section{PostScript and \TeX{}}): Rewrote paragraph about + Goel's document to cover Reckdahl's one as well + (section{Documentation and Help}): Rewrite `where to find' to make more + clear the distinction between Bodenheimer's article and ours (which + does, after all, get updated ;-) + (section{Documentation and Help}): Put all the subscribe messages in + the question on mailing lists into \texttt, so they can break + + * dirctan.tex: Delete reference for ps2psfrag, alter psfrag to 2e + version + Add subfigure + Convert (2.09) supertab to (2e) supertabular + + * filectan.tex: Added epslatex + + * newfaq.tex: Remove the reference to c.t.t FAQ in the note, since it's + plain that nothing will ever get into anything maintained by + Bodenheimer + +Fri Dec 1 16:30:56 1995 Robin Fairbairns + + * dirctan.tex: Add tweb + + * faqbody.tex (section{\MF{}}): Add a label to `getting \MF to do what + you want' + (section{Literate programming}): Add a reference to tweb + (section{Bits and pieces of \TeX{}}): Add Carol's set: dvi, driver, pk + and tfm (order probably needs attention) + (section{Format conversions}): Thrown out scribe + + * filectan.tex: Add dvitype + +Thu Nov 30 12:01:01 1995 Robin Fairbairns + + * faqbody.tex (throughout): Convert all reference to specific TUGboat + issues to use the \TUGboat macro, all other references to \textsl + (section{Format conversions}): Add Clark's DSSSL page where Seb wanted + one, and fill in the URL for stil (Seb found this) + (section{Things are Going Wrong\dots{}}): Suggest upgrading \LaTeXo + ("if they must"), nopageno.sty + (section{\TeX{} Systems}): Sort out the reference to emTeX + + * faq.sty: \ignorespaces before handing on to \@tugboat + + * dirctan.tex: Add latex209-base + + * filectan.tex: Add nopageno + +Wed Nov 29 16:33:39 1995 Robin Fairbairns + + * faqbody.tex (section{Why does it \emph{do} that?}): |\protect\cmd| -> + \cs|protect|\cs|cmd| so that it doesn't get (hem-hem) b*ed by Alan's + perl script + (section{The Background}): Add reference to tds in the TWG's blurb + (section{The Background}): Update T.V. Raman's email address + (section{Documentation and Help}): Note that the book list is only of + English ones + (): + (section{How do I do \textsl{X} in \TeX{} or \LaTeX{}}): Add reference + to \frontmatter, \backmatter in the thing about unnumbered sections in + the TOC + + * dirctan.tex: Add tds + +Tue Nov 28 10:14:34 1995 Robin Fairbairns + + * dirctan.tex: Add hyper and hyperref + Change psfonts to dos-psfonts (it wasn't referred to, anyway), and + create a new psfonts pointing at fonts/psfonts + + * faq.sty: Add definition of \TUGboat + Use \ProgName for \Package, pro tem + + * faqbody.tex: Change version number + (section{Recent Developments}): Junk Q-SGML (and the one reference to + it) + (section{Perhaps There \emph{isn't} an Answer}): uktex->texhax + (section{Format conversions}): Added questions on hyperTeX and + conversion to pdf, and replace Q-SGML2TeX and Q-LaTeX2HTML + (section{PostScript and \TeX{}}): Replace Q-usepsfont, Q-metrics, + psfonts-problems + (section{Why does it \emph{do} that?}): A bit more text from Alan about + uppercase shenanigans + (section{The Background}): Update TUG's address + +Sat Nov 18 12:23:58 1995 Robin Fairbairns + + * faqbody.tex (section{Perhaps There \emph{isn't} an Answer}): Added a + pointer to the bugs database in the last question (ASAJ's suggestion) + + * dirctan.tex: Remove emtex/betatest + +Sat Nov 18 00:05:11 1995 robin (robin@dosmachine) + + * faqbody.tex (section{Documentation and Help}): Added the metafont + list to the section on mailing lists + (section{Introduction}): Redone the list of committee names (it said + "1993-94" !!!), and added a paragraph acknowledging Rho's, Jonathan's + and Chris's efforts. + (section{Acquiring the Software}): Make the numeric addresses \FTP + addresses, too, so that they wrap + (section{Acquiring the Software}): Put `quote site index' (and, + separately, `site index') into \texttt (rather than verbatim) so that + it wraps if necessary + (section{Support Packages for \TeX{}}): Add a bit of explanation of + _why_ VorTeX isn't still being developed + + * dirctan.tex: Add metapost + +Fri Nov 17 23:29:42 1995 robin (robin@dosmachine) + + * faqfont.cfg: Deal with \Dings + + * faqbody.tex (section{Introduction}): Added John Hobby (because I'm + lifting some of his text) and Piet van Oostrum to the list of + contributors + (section{The Background}): Add a new question about MetaPost (does it + really need to be separate?) + +Fri Nov 17 13:12:10 1995 Robin Fairbairns + + * dirctan.tex: Correct teTeX base directory and add tetex-bin + + * faqbody.tex (section{Documentation and Help}): Disambiguate + references to Gratzer's books in the short para after the list of LaTeX + books + (section{\TeX{} Systems}): Add reference to the teTeX binaries + directory + (section{\TeX{} Systems}): Remove witter about emTeX betatest, and + reword the reference to memory extenders (emxrsx is now part of the + distribution) + +Wed Nov 8 11:41:47 1995 Robin Fairbairns + + * filectan.tex: Add mil + + * faqbody.tex (section{Documentation and Help}): Add reference to the + acrobat sampler of Gratzer's book + +Tue Nov 7 11:02:31 1995 Robin Fairbairns + + * faqbody.tex (section{\TeX{} Systems}): Updated scientific word's + telephone no, following mail from Christopher + (section{Documentation and Help}): Add Gratzer's new book, and correct + the text at the end of the list detailing 2e coverage + +Sat Aug 26 14:57:41 1995 Robin Fairbairns + + * faqbody.tex (section{Recent Developments}): Subscription information + for the omega list + +Mon Jul 3 15:01:38 1995 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * 00readme: Note that psfonts-beta is being used + + * dirctan.tex: Added the two musixtex directories + + * faqbody.tex: Added WWW entries for Bluesky, Personal TeX Inc. and TCI + Removed claim of "orchestral" music for MusicTeX, added a reference to + MusiXTeX + +Wed Jun 28 16:17:28 1995 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex: subscribe to texhax via texhax-request + give details of Kopka and Daly 2nd ed + changed fileversion to 1.9e + +Thu Jun 15 17:26:05 1995 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex: Added DPC's neato search for package.??? in quote site + index + +Wed May 3 10:06:54 1995 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * companion.ctan: Corrected companion.ctan re. curves + +Fri Apr 28 13:10:30 1995 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * simpl-sum.txt: A plain text version of the question `what is TeX' + +Fri Mar 31 11:15:23 1995 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * texnames.sty: Add definition of \mathcal if it's not there, and + redo \AMSLaTeX, \AMSTeX (et al) in terms of \AmS defined similarly + to how the definition of \AmSTeX was done + +Mon Mar 6 14:55:13 1995 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * companion.ctan: Added graphics.sty (not in companion?) + +Sat Feb 11 14:23:41 1995 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (section{\TeX{} Systems}): Update contact details for Y&Y + (section{Documentation and Help}): details of ctan-ann mailing list + Up to 1.9d + +Tue Jan 31 17:48:21 1995 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (section{Documentation and Help}): Add a proviso about + multiline-message suppression using `-' to the blurb about quote site + index + +Mon Jan 30 12:46:02 1995 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * updates.tex (section{Updates to the FAQ}): as its name implies -- a + contribution to BV 5.1 + + * faqbody.tex (section{Documentation and Help}): Corrected the + information about info-tex and ctt-digest and their mutual relationship + to comp.text.tex + + * filectan.tex: corrected file name of Tobin's metafont intro (and also + its directory!) + +Fri Jan 20 17:12:20 1995 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faq.cls: Adjust the page layout with a view to simplicity, symmetry, + and all those good things + +Fri Dec 16 13:22:52 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (section{The Background}): Remove the em-dashes between + the item labels and the TWG titles + (section{How do I do \textsl{X} in \TeX{} or \LaTeX{}}): Remove the + gratuitous \protect commands from the non-moving part of the [sub] + section arguments in the question on fiddling with the layout of + sectioning commands + (section{The Background}): Use \Emaildot for Yannis' address + (section{Format conversions}): Ditto for Nathan Torkington + (section{Documentation and Help}): Split the title boxes for both + Gr\"atzer's and Shultis' books + (section{\MF{}}): Insert @{} at every touch and turn in the + `table' specification for the instructions for inimf + + * faqfont.cfg: Add (null) definition of \Dings + + * faq.sty: If using PostScript, define \Dings + Add \Emaildot (as \Email, but dot-separates the first part of the + name) + + * letterfaq.tex: Same as original newfaq.tex (i.e., letter paper by + default), except for \Dings + + * newfaq.tex: Load faq.cls with a4paper option, use \Dings between toc + and body + + * faq.cls: Use the paper size we're loaded with; adjust size of text + relative to it (using same values SPQR does for A4 paper, not some wild + proportional values) + +Mon Dec 12 13:07:36 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex: Use \ifnotreadCTAN, set it once the configs read + + * faq.sty: Add \ifnotreadCTAN + +Sat Dec 10 10:21:36 1994 Robin Fairbairns (robin@home) + + * faq.cls: First iteration of a class -- aim is that it should + ultimately be `generic' as between paper sizes + + * newfaq.tex: Reword for `after the publication', add invocations of + multicols + +Sun Dec 4 13:54:02 1994 Robin Fairbairns (robin@home) (Sun 13:) + + * faqbody.sty (throughout): The red-biro attack. + (throughout, again): The red-fine-felt-tip-pen attack (JF). + (section{Recent Developments}): Add a short blurb about JF's work. + + * spqr/baskerv.cls: Cut down \topsep in \@listi to 4pt basic + + * spqr/bask4_6.tex: Add a paragraph about use of the December edition; + Don't bother with table of contents before the editorial; the only toc + is that within the article itself + +Wed Dec 7 12:07:47 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * dirctan.tex: Add sgml2tex + + * faqbody.tex (section{Recent Developments}): Add reference to the + conversion programs in the answer about JF's stuff + (section{Format conversions}): Add an answer about SGML2TeX conversion + programs + (section{\MF{}}): Modify the surroundings of the table for running MF, + to get rid of the unsightly space at the top + (section{Bits and pieces of \TeX{}}): Comment out that question on font + formats + +Tue Dec 6 13:54:07 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex: Change file version and date + (section{Bits and pieces of \TeX{}}): Add question on font formats + +Mon Dec 5 15:27:20 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * spqr/baskerv.cls: Hack the toc to make it not produce newarticle + entries whatsoever + + * faqbody.tex (throughout): Final consistency checks following + spell-check + +Sun Dec 4 13:54:02 1994 Robin Fairbairns (robin@home) + + * faqbody.sty (throughout): The red-biro attack. + (throughout, again): The red-fine-felt-tip-pen attack (JF). + (section{Recent Developments}): Add a short blurb about JF's work. + + * spqr/baskerv.cls: Cut down \topsep in \@listi to 4pt basic + + * spqr/bask4_6.tex: Add a paragraph about use of the December edition; + Don't bother with table of contents before the editorial; the only toc + is that within the article itself + +Fri Dec 2 17:49:38 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * texnames.sty: Use \mathcal rather than \cal + + * filectan.tex: Add morefloats.sty + + * faqbody.tex (section{Things are Going Wrong\dots{}}): Replaced two + questions on floats with one conglomerate one (by me) + +Thu Dec 1 22:04:45 1994 Robin Fairbairns (robin@home) + + * faqbody.tex (section{Why does it \emph{do} that?}): Add a new + question on #-doubling (from a post of David C's) + (section{Things are Going Wrong\dots{}}): Add a new question on BibTeX + string sizes + +Tue Nov 29 18:49:52 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * spqr/bask4_6.tex: Twiddled with secnumdepth/tocdepth to get things + looking roughly right + +Tue Nov 29 13:19:09 1994 Robin Fairbairns (robin@home) + + * faqbody.tex (section{Why does it \emph{do} that?}): Add a question on + uppercase, from Jonathan's input + (section{Acquiring the Software}): Move the CD question here from TeX + systems + (throughout): Minor editorials + + * faq.sty: Version no:=0.6, date changed + Added hacked-about LaTeX logo + +Mon Nov 28 13:32:53 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * spqr/bask4_6.tex: Moved setting secnumdepth/tocdepth to inside the + FAQ article + + * faqbody.tex (throughout): More of my minor editorials + (subsection*{Finding the Files}): Added note about the lack of + full stops + (section{Introduction}): Sorted list of helpers into alphabetical + order, removed dots from the end + +Sun Nov 27 18:23:34 1994 Robin Fairbairns (robin@home) + + * faqbody.tex (section{Why does it \emph{do} that?}): Add question on + the problems with \verb (from JF's input) + +Sat Nov 26 22:09:17 1994 Robin Fairbairns (robin@home) + + * faqbody.tex (section{\TeX{} Systems}): Added Tom Rokicki's details + (wot no contact number) and changed the `source' of the stuff from the + AMS listing + +Fri Nov 25 12:41:36 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (throughout): Barbara Beeton's comments and Alan + Jeffrey's niggles + (section{PostScript and \TeX{}}): Added reference to mathptm in + Berthold's question + (throughout) Minor markups by your truly + (section{Documentation and Help}): Added a question about email lists + + * faq.sty: Remove spurious space generated by \ProgName + Separate the hyphens in \TeXXeT. + +Thu Nov 24 15:29:47 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (throughout): Editorial markup after looking at + \BV-formatted version + (section{\TeX{} Systems}): Add a bit of blurb about Northlake Software + + * dirctan.tex: Add emtex-betatest + + * faq.sty: Define a new environment proglist (maps to booklist while + we've got program names italic) + + * spqr/baskerv.cls: Remove stuff from faq.sty, and add requirement of + the FAQ package + Comment out definition of \CTAN (to something inconsistent) + +Wed Nov 23 10:20:27 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faq.sty: Make program names typeset in italic (experimentally) + + * faqbody.tex: Released to SPQR for his work ... then: + (throughout): SPQR's editorial changes + +Tue Nov 22 22:53:24 1994 Robin Fairbairns (robin@home) + + * faqbody.tex: Iterate calls of \cs back again... + + * faq.sty: Define \cs in terms of robust \csx (which is exactly the + same as the original \cs); \cs|...| now + +Tue Nov 22 13:10:26 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * texnames.sty: Sort out the definition of BibTeX (\if re. \textsc was + in the wrong place), do similar thing for SliTeX + + * faqbody.tex (throughout): All \ldots -> \dots (and make sure there's + a {}!) + (section{Introduction}): Add Ulrik to the intro + (throughout): Two complete iterations of the syntax for \cs + + * faq.sty: Replace my implementation of footnoteenv by one posted by + David to comp.text.tex (on a different matter, but there we are...) + Change syntax of \cs to \cs|...|, then find that doesn't work and + change it again to \cs[...] + + * faqvers.tex: Removed, since now done in faqbody.tex + +Mon Nov 21 22:49:05 1994 Robin Fairbairns (robin@home) + + * faq.sty: Replace \def\Q with the version Seb had put in the faqbody + + * faqbody.tex: Remove \def\Q from front of file, and insert the content + of filevers.tex in its place (with comment about how it's to stay where + it is) + + * newfaq.tex: Instead of reading faqvers.tex, read the first two lines + of faqbody.tex and execute them to get the file version and date + +Mon Nov 21 12:52:09 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (throughout): Implement Ulrik Vieth's and Malcolm Clarks + (latest) comments; + (section{How do I do \textsl{X} in \LaTeX{}}): Add a question about + indenting the first line of sections (Ulrik's suggestion) + + * faq.sty: Added definition of \ISBN (to encourage uniformity) + \DANTE simply expands to DANTE (until someone else tells me + something different ;-) + + * dirctan.tex: Added rnototex (now that it exists) and tetex + +Sun Nov 20 16:16:26 1994 Robin Fairbairns (robin@home) + + * faqbody.tex (throughout): Deal with David C's comments + (section{Documentation and Help}): Add reference to LaTeX for + Scientists and Engineers; + (section{\TeX{} Systems}): Add some blurb about SciWord + (throughout): Deal with my editorial markup + Two new questions + + * newfaq.tex: Report the number of questions at the end + + * faq.sty: \ignorespaces at the beginning, \unskip at the end of + footnoteenv + + * filectan.tex: Add xtexcad, CTAN-sites (needs checking) + +Fri Nov 18 22:12:21 1994 Robin Fairbairns (robin@home) + + * faqbody.tex (section{Format conversions}): Correct Mark James' email + address, following mail from him saying that's OK (section name + changed, too) + (section{Acquiring the software}): Correct the DECUS address, telephone + no., etc., and Ted Nieland's email address; also add the proviso about + updating of the VMS material in the DECUS collection + (throughout): execute Reinhard Zierke's updates (though don't add his + complete set of ISBNs for von B ... yet: just leave them there behind + comment makers) + +Tue Nov 15 10:12:48 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * dirctan.tex: Add alpha (the mac editor) + + * faqbody.tex (section{The Background}): Added a question on Lollipop + (which may get updated if Eijkhout responds to my mail) + (section{Documentation and Help}): Three more book titles (ex Malcolm), + re-attribution of ISBNs Clark<->von Bechtolsheim + (section{\TeX{} Systems}): Further refinement of the commercial stuff + + * faqvers.tex: Upped to v1.5, changed date + + * filectan.tex: Add texinfo-macros + +Mon Nov 14 22:14:08 1994 Robin Fairbairns (robin@home) + + * faq.sty: Add a ghastly \TeXXeT logo (and a trivial \MLTeX) + + * faqbody.tex (section{The Background}): Add new questions on + \LAMSTeX{} (split out of \AMSTeX{}) and Texinfo + (throughout): "like"->"such as" (where appropriate) + +Mon Nov 14 12:02:44 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (throughout): editorials from loads of people, new stuff + for the AMSTeX question from Michael Downes, several new questions from + Sebastian... + + * filectan.tex: Added pk300[w] + + * faq.sty: Provide command \CDROM + +Sun Nov 13 20:27:34 1994 Robin Fairbairns (robin@home) + + * faqbody.tex (throughout): All incarnations of the name DOS converted + to \MSDOS{} + Lots of minor edits following another batch of comments from RAB; three + new questions + Berthold Horn's question on scaleable fonts (probably needs post- + printing review) + + * faq.sty: Redo definition of \cs to enable it to consume things other + than letters and others + Add definition of command \MSDOS + + * faqbody.tex (section{The background}): When referring to WEB, do it + in capitals for consistency (What is TeX?) + (section{Things are Going Wrong\ldots}): Change invocation of \cs + to be simply \cs{pagestyle{empty}}, following change to \cs +Fri Nov 11 11:45:59 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (section{\TeX{} Systems}): Modified the list of + commercial versions to say platform first, name of system second + (section{Introduction}): Add Malcolm's name to committee list!!!!! + +Thu Nov 10 12:38:03 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (from section{Bits and pieces of \TeX{}} to + section{Recent Developments} [i.e., the end]): sorted the html anchor + texts + (section{\TeX{} Systems}): Added Malcolm's body for the commercials + question + (section{The Background}): Added Damian Cugley's questions on + pronunciation + (section{Special sorts of typesetting}): Added Damian Cugley's question + on logos + + * filectan.tex: Get setspace from the latex tree rather than the 209 + one + Add texnames + +Wed Nov 9 14:44:25 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (section{Introduction}): Add Rick Zaccone to the list of + helpers + (up to section{Documentation and Help}): sorted the html anchor texts + +Tue Nov 8 11:43:02 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (section{Documentation and Help}): Added ISBNs (from + Malcolm) for his an von B's books + (section{PostScript and \TeX{}} and elsewhere): Small number of changes + arising from Alan's comments + + * filectan.tex: Add Excalibur-sea (we don't want them loading the + entire directory) + + * faqvers.tex: New, the settings of fileversion and filedate from + newfaq.tex + + * newfaq.tex: Replace setting of fileversion and filedate by inputting + of faqvers.tex + +Mon Nov 7 11:42:12 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faq.sty: define a footnoteenv as suggested by Alan + + * faqbody.tex (section{Acquiring the Software}): Removed the reference + to Flynn's ridiculously old "NETWORK SOURCES OF \TeX{}WARE" + (section{Acquiring the Software}): Couple of instances where there were + \\ commands at the end of a quote environment; this causes untoward + blank space after the environment, so they've been removed + (section{Bits and pieces of \TeX{}}): New section, with Seb's virtual + fonts question, and a version of \Rho's on \specials (will contain the + proposed .dvi and "what's a driver" questions, too) + (throughout): replace \footnote{}s with footnoteenv + +Sun Nov 6 20:10:52 1994 Robin Fairbairns (robin@home) + + * faqbody.tex: Slight editing, added questions on msx/y and am fonts + +Sat Nov 5 21:41:34 1994 Robin Fairbairns (robin@home) + + * faqbody.tex: Rearrange the intro slightly to include an outline of + what Usenet is about, for the benefit of members who aren't net- + connected (this at \Rho's suggestion) + Add question on paragraph setting parameters +Sat Nov 5 14:52:03 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faqbody.tex (section{The Background}): Changed our contact address to + Peter Abott + (section{Documentation and Help}): Implemented David's suggestion + re. the PicTeX manual + (section{\TeX{} Systems}): changed `public domain' to `freely + available' in re. PC versions + (section{Literate programming}): Added a short new question from David + on the whole concept + (section{Special sorts of typesetting}): Corrected yet more oddities in + the changemargin environment + (section{Special sorts of typesetting}): Changed `emphasised' to + `emboldened' in the LaTeX version + (section{Things are Going Wrong\ldots}): Add a reference to ukhyph + (section{\TeX{} Systems}): Add reference to shareware fee payments for + OzTeX + (section{Things are going wrong}): Put the \caption commands in a + tabular env, for the benefit of Baskervill narrow setting + (section{PostScript and \TeX{}}): Added Sebastian's new questions + (inter alia, replacing the original about setting in PS fonts) + + * filectan.tex: Add lw35nfss, LitProg-FAQ, ukhyph + +Wed Nov 2 01:26:47 1994 Robin Fairbairns (robin@home) + + * faqbody.tex: updated to match newfaq.tex (\Rho's questions added + yesterday) + +Tue Nov 1 09:58:40 1994 Sebastian the system admin (root@cygnet) + + * separated text into faqbody.tex and wrapper newfaq.tex; + this is to allow experimentation with Baskerville layout. + + * rewrote PostScript fonts question and the one on + metrics; added one on problems with PS fonts. + +Mon Oct 31 12:14:55 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex: Added a new section How do I do X in \LaTeX{}, as + suggested by \Rho, and stuck her remaining proposed questions in it + + * faq.sty: Added the stretchability recommendations from psnfss2e.tex + in case setting in times (and remove 'em again) + +Sun Oct 30 09:50:54 1994 Robin Fairbairns (robin@home) + + * faq.sty: define a \WYSIWYG command + + * filectan.tex: Change mf-beginners to refer to copy in documentation/, + add mf-list + + * newfaq.tex: Move BibTeX docs question above the one on the PicTeX + manual + (throughout): reformat every \Qref so that the content of the second + (first mandatory) argument is the whole of the anchor text + +Sat Oct 29 14:27:12 1994 Robin Fairbairns (robin@home) + + * filectan.tex: Add modes-file (to avoid `modes.mf in \CTANref{modes}') + and mf-beginners (needs checking) + + * newfaq.tex (throughout): Use \Eplain{} for Eplain + Another instance of `\eTeX.'!!! + Mark up program names with \ProgName, (more) file names with \File + Hack at \MF{} section, following Karl Berry's suggestions + + * faq.sty: Define \Eplain (nullish sort of definition), \ProgName + Require comment.sty and exclude a comment of htmlversion + +Fri Oct 28 14:05:37 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex (section{Acquiring the Software}): Record checking of + bitftp@pucc.bitnet, listserv@dhdurz1.bitnet + (section{Documentation and Help}): Add reference to Norm Walsh's book + +Thu Oct 27 10:39:12 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex (section{Special sorts of typesetting}): Added references + to abc2mtex, midi2tex (also uploaded 'em to CTAN) + (section{The Background}): Added comment about GNU copyleft to the `how + come it's free' question + (section{Documentation and Help}): Added new question about finding + \LaTeXe{} packages (as a place to hang a pointer to companion.ctan, + which I've almost finished...) + + * dirctan.tex: Added abc2mtex, midi2tex + + * filectan.tex: Added compan-ctan + +Wed Oct 26 23:39:41 1994 Robin Fairbairns (robin@home) + + * newfaq.tex (section{Documentation and Help}): Sort out formatting of + the book lists (ISBNs uniform, no wrapping of \item parameters, removed + redundant braces) + +Wed Oct 26 12:57:11 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex (section{Documentation and Help}): Added stuff about .dtx + files + (section{The Background}): Add a Question about Eplain (not exactly + frequently-asked, but there we are...) + (section{\TeX{} Systems}): Use Oz\TeX{} as the `logo' + (throughout): Various corrections following Alan's problems generating + html + + * dirctan.tex: Corrected spelling of symbols in amsfonts-symbols... + +Wed Oct 26 00:02:37 1994 Robin Fairbairns (robin@home) + + * faq.sty: Yet another iteration of the \AtEndDocument CTAN reference + checks... + + * newfaq.tex (section{Things are going wrong}): Add RAB's questions + Behaviour of \rm, etc.; Missing symbols; Word division; Moving tables + and figures; Disappearing tables and figures + Add some words about journals in the intro to the question on double + spacing + +Mon Oct 24 11:26:27 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex (section{Special sorts of typesetting}): Refine reference + to amsfonts, to get to the directory directly related to the symbols + Comment out the "lazy person's" stuff, which I didn't like, and \Rho + says doesn't work + + * dirctan.tex: Added amsfonts-symbols (a subdirectory of amsfonts) + + * newfaq.tex (throughout): Do away with the " (sic)" + construct + (throughout): Lots of minor (and not-so-minor) editorials by Rosemary + + * faq.sty: Add tie between reference to question and the question + number + +Sun Oct 23 00:25:48 1994 Robin Fairbairns (robin@home) + + * newfaq.tex: Change fileversion to 1.4, date to tomorrow + Add 1994/95 committee to the footnote + General editorial consistency tidy-up + Add question on which font files need to be kept after a run of mf + Add new section "why does it _do_ that", with Joachim's text about + protection (this is where the proposed question on paragraph parameters + will go, too) + + * faq.sty: Make provision for using faqfont.cfg + + * faqfont.cfg: Null configuration file to enable use of CM fonts + in the lab + +Sat Oct 22 15:41:11 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex (section{DVI Drivers and Previewers}): Extended the text + around dvips for VMS + + * filectan.tex: Added {AXP,VAX}VMSdvips, VMSdvips-{fonts,support} + + * dirctan.tex: Added l2a + +Sat Oct 22 13:30:17 1994 Robin Fairbairns (robin@home) + + * newfaq.tex: Removed the \NeedsTeXFormat (since it's now done in + faq.sty); also types out file versions and so on. + Modified text (sometimes by bodily shifts or even rewrites) to ensure + that if a \CTANref is at the end of a sentence, it's always also at the + end of a paragraph, with no full stop after it + Added references (which aren't yet satisfied) for VMS dvips executables + and l2a (do we want that, though?) + + * faq.sty: Moved \NeedsTeXFormat to style file + Define version number (now 0.4) and date, and type 'em out + +Fri Oct 21 09:52:11 1994 Robin Fairbairns (robin@home) + + * newfaq.tex (section{Documentation and Help}): Redo the lists somewhat + (throughout): Sort out {}s after acronym macros (where did those come + from?) + + * filectan.tex: Specify usergrps.tex as coming from usergrps/info + +Fri Oct 21 13:40:02 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex (section{Special sorts of typesetting}): Added reference + to vmargin (and posted a question about whether we still want vpage) + (section{Special sorts of typesetting}): Add reference to makeindex (to + match the one for macmakeindex) and idxtex (what's all this garbage + about texindex? -- the .tar.gz file in the directory is (shall we say) + peculiar...) + + * filectan.tex: Bit o' sorting into order... + Add fullpage, vmargin + + * texnames.sty: Make logo for BibTeX transportable (i.e., usable not in + LaTeX2e if required) + Add logos \LaTeXe and \LaTeXo + +Thu Oct 20 19:38:17 1994 Robin Fairbairns (robin@home) + + * newfaq.tex (section{Special Sorts of Typesetting}): First attempt at + defining the distinction between `indexing' (deciding what's to be + indexed and how) and `making an index' (generating the file to include + from the .ind) + Throughout: re-mark-up \Qrefs (though the ones in comments aren't + touched... + (section{DVI Drivers and Previewers}): use Mattes' own emTeX logo + (at least as it appears in his documentation...) + Throughout: verbatimise `ftp' + * dirctan.tex: change reference to fancyheadings to point into 2e + directory tree + + * texnames.sty: Define \BibTeX using \textsc rather than the ingenious + stuff that the original used (which, since it employs \sc, suppresses + the use of bold face in section titles) + + * faq.sty: \Qref now to have three arguments, the third being the + actual thing we're referring to (the second is for the html processor's + anchoring text) + +Mon Oct 17 21:03:06 1994 Robin Fairbairns (robin@home) + + * newfaq.tex (section{Documentation and Help}): Change list of books to + use booklist environment + (section{Introduction}): Added a \subsection* giving details of the + `elided' first directory of every path name (this surrounded by + \htmlignore ... \endhtmlignore) + + * faq.sty: Add environment booklist for use in the list of books + (egob!) + Define \htmlignore,\endhtmlignore to mean \relax + +Mon Oct 17 09:16:55 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex (section{Special sorts of typesetting}): Correct to a + reference to screensty + Tiny tweak of the intro note + (section{PostScript and \TeX{}}): Corrected reference to figsinlatex, + removed comments about the .dvi being available too... + + * dirctan.tex: Added vmspell, txtdist, texsgi declarations + Moved 2etools from newfaq.tex itself + + * newfaq.tex (section{PostScript and \TeX{}}): Record the fact that + EdMetrics is available on CTAN, rather than by writing to Bluew Sky + + * faq.sty: In \FAQverb only insert \leavevmode if actually in vertical + mode + + * newfaq.tex: Input dirctan.tex (instead of namectan) and filectan.tex + (instead of the inline definitions it contains) + Moved 2etools directory out to dirctan.tex + (section{PostScript and \TeX{}}): Give Blue Sky's telephone no. in + canonical form + (section{\TeX{} Systems}): Corrected the reference to science.utah.edu + (which is now ftp.math.utah.edu), checked that the files for TOPS-20 + are still there... + (section{Documentation and Help}): Corrected numeric address for + rtfm.mit.edu + (section{Documentation and Help}): Made reference to the index an + (section{Acquiring the Software}): refer to, rather than name, + README.uploads + *Reference* the index rather than (as previously) use \CTANfile (which + did nothing and typeset oddly ;-) + + * filectan.tex: New, the _files_ bit from newfaq.tex Added references + to README.uploads, TeX-index, EdMetrics, screen.sty, usergrps.tex + + * dirctan.tex: Renamed from namectan.tex + Added a reference to TeX-index + +Sun Oct 16 10:28:04 1994 Robin Fairbairns (robin@home) + + * newfaq.tex: Remove loading of package shortvrb and definition of the + short verb character + Changed layout of the path specified for the start of the CTAN archive + from "./tex-archive" to "tex-archive/" (and used \CTAN for reference in + place of \path) + Refer to ucthesis via its \CTANref + Change layout of the path reference for DECUS TeX on wuarchive (without + prejudice as to whether we actually want to retain the reference at + all, of course) + Quote DECUS library telephone number in the same way as all other nos + Correct reference to Barbara Beeton's email address + + * faq.sty: Comment out the use of path.sty, all of my old stuff about + the CTAN labels + Add Alan's versions of the same... (less transmission errors) + Load the shortvrb package, and define | as the short verbatim character + _before_ using it as a delimiter for the various path-like commands + Similarly, make sure `@' is catcoded to `other' before defining the + \Email macro + Start \FAQverb with \leavevmode, since otherwise we might find + ourselves trying to change language while in vertical mode + Define \path in terms of \FAQverb + +Sat Oct 15 22:08:23 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faq.sty: added, then removed again, \emergencystretch + +Sat Oct 15 10:08:43 1994 Robin Fairbairns (robin@home) + + * namectan.tex: add bibtex-doc, graphics + + * newfaq.tex: editorial work on questions 2,4-9,11,12,14-19,21,24 + Commented out the "alternative" FAQ sites (though left reference to + rtfm.mit.edu) + taken away the (sanitised) group around all the ctan directory/file + commands + + * faq.sty: give \Qref an optional first argument (intro text, default + "see question") + make \CTANdirectory open a group, sanitise, and then call \@CTANdir + which is the old version of the command and then \egroup (similarly for + \CTANfile, with \@CTANfile) + make the scribble for undefined references come out in \texttt + lots of kerfuffle to recover the situation of the directory (etc.) + declarations split + + * path.sty: define \@morediscreet, a version of the same as the + internal version of \discretionaries, except that it defines all the + active characters to become \relax, so that they can be \xdef'ed + +Fri Oct 14 22:38:58 1994 Robin Fairbairns (robin@home) + + * newfaq.tex: change \Qref{dvi-ps} to {Q-dvips} (one or the other had + to change, after all) + second \CTANfile{unixtexftp} was really a \CTANref + removed original entry in the systems list for Macs, since it's been + superseded by Seb's new one + second \CTANfile{btxmactex} was in fact a \CTANref + (outstanding package warnings re CTANrefs are texsgi,vmspell and + txtdist) + + * texnames.sty: made the name for SliTeX conform to the comment about + it (it's not a big deal now that it's dead, but lower-case `i' (as + opposed to small caps `i') looked really odd + + * faq.sty: Added some scribble text in case of an unassigned \CTANref + err ... yet another instance of \makeatletter ... and another + +Thu Oct 12 16:00 1994 Sebastian Rahtz (s.rahtz@elsevier.co.uk) + + * Removed all non-CTAN ftp references (to be put back as a table) + + * changed order of questions + + * added list of committee names + + * made all questions statements, not questions (as per JS) + + * made complete list of CTAN names (namectan.tex) + +Tue Oct 11 13:37:28 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faq.sty: add (null) definition of \checked macro + made \CTANfile and \CTANdirectory \gdef their reference commands, and + defined a \CTANsanitise command + + * newfaq.tex: last two \CTANlabels become one \CTANdirectory (ispell) + and two \CTANfiles (VMS TeX) + (section{\MF{}}): mf \smode=... into a verbatim env (rather than short + verb) + (section{\TeX{} Systems}): VAX/VMS item -> VMS item (added a \checked + macro) + (section{\TeX{} Systems}): Updated the amiga stuff to point to CTAN + only (added a \checked macro) + +Fri Oct 7 15:24:29 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex (throughout): more hacking at commands that split + themselves over lines, added {}s to the last few \LaTeXe's that needed + them + (section{\MF{}}): indent verbatim command sequences + (section{\TeX{} Systems}): unwrap Q-oztex \Question argument + (section{Documentation and Help}): use \LaTeX in Lamport's book title + (section{Special sorts of typesetting}): reference macmakeindex.sit + instead of giving an email address for Tolliver, which causes grief + with Alan's perl code... + + * faq.sty: Add a \DANTE command, at Alan's suggestion + +Thu Oct 6 14:05:36 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * faq.sty: provide the commands for doing the \CTANlabel/\CTANref game + + * newfaq.tex (section{Special sorts of typesetting}): Added remark + about the status of screenview + (throughout) try to ensure (as Alan requests) that all logos are + referenced as as \logoname{} _only_ + (throughout) install the \CTANref mechanism for referring to existing + CTAN addresses + updated \fileversion and \filedate... + +Mon Oct 3 09:05:14 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex (section{Documentation and Help}): Removed repeated TUG + address from PicTeX manual question (replaced with reference to TUG + question); then moved question down below TUG question + (section{\TeX{} Systems}): mailed Elizabeth Tachikawa about the Unix + tape service + (section{Documentation and Help}): mailed latex-help-coordinator about + LaTeX help service, but the response was "unknown user" -- deleted + question and answer + (section{Documentation and Help}): Added a question about national/ + regional user groups + (section{Documentation and Help}): rationalise use of \BibTeX (in + particular, bibtex.1 is a _file_, not something that can reasonably + be expressed as a logo (why doesn't bold small caps appear in question + titles?) + +Sun Oct 2 17:14:30 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex (section{The Background}): Added body to the questions + What is TeX?, What is LaTeX?, why's it free? + (section{Introduction}): added a reference to Alan's server (even + though it's inevitably out of date w.r.t. this document...) + +Sat Oct 1 (evening) 1994 Robin Fairbairns (robin@home) + + * newfaq.tex: significant upheaval (several new questions, fewer new + answers), following discussion with Jonathan; + add \NeedsTeXFormat requirement (should this be in faq.sty?); + new section The Background with some stuff moved out from Introduction, + containing questions What is TeX?, What is LaTeX?, should I use plain + or LaTeX?, why's it free?, why isn't it wysiwyg?, and what is the + future?; + Introduction completely re-written; + new questions in The Latest Developments, What is the NTS project?, + what is the LaTeX3 project? + + * faq.sty: new commands for \BV, \NTS, \eTeX and \URL + +Thu Sep 29 12:43:52 1994 Robin Fairbairns (robin@home) + + * newfaq.tex: lots of minor typos corrected; + yet more markup added; + one or two more of Joachim's comments addressed (but note new \Q about + LaTeX 2.09 and `weird hyphenatoin') + + * faq.sty: load times.sty only \IfFileExists (such taste; such + originality) + +Wed Sep 28 10:23:30 1994 Robin Fairbairns (robin@home) + + * newfaq.tex: modified so that all question references (that I've + spotted so far ;-) simply consist of a \Qref in parentheses; + first iteration of sticking stuff in new sections; + more books (well, one more) and into a new question; + more markup tidying (\Newsgroup, \CTAN, etc.); + now version 1.1, added \hfuzz and \emergencystretch + + * faq.sty: (possibly merely experimental ;-) made Questions into + subsections, removed subsection from \cl@section, numbered sections + alphabetically...; + make \Qref produce "see question \ref{#1}" + +Tue Sep 27 16:10:17 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex: change to use \BibTeX instead of \BiBTeX (since the + latter's not one of the forms the name appears in texnames.sty; + refer to PiCTeX, VorTeX through their (new) logo macros; + similarly (though not new logos) tex->\TeX, AMS[La]TeX, LaTeX, BibTeX, + SliTeX; + correct wording describing incorporation of SliTeX into 2e (ex Joachim + Schrod's suggestion) + + * texnames.sty: new, copied from eplain distribution, but with \PiCTeX + and \VorTeX added (pro tem, at least) + + * faq.sty: moved the font-setting commands, etc., into the package + +Tue Sep 27 14:17:51 1994 Robin Fairbairns (robin@home) + + * faq.sty: markup commands in separate package (ultimately to come in + several versions according to the environment it's to be processed in + -- e.g., versions for PS font usage/cm font usage, even a version for + processing to plain text?) + + * newfaq.tex: moved all the markup commands out to (new) faq.sty; + couple of typos corrected following input from Joachim Schrod + +Thu Sep 22 09:18:38 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex: (last night's work) new-style markup for question + references, label for last question (so we can see how well we're + doing), \makeshortverb of \| so as to get coherent log output + +Tue Sep 20 13:54:51 1994 Robin Fairbairns (rf@dorceus.cl.cam.ac.uk) + + * newfaq.tex: moved \documentclass, \usepackage above defs of + fileversion and date, so as not to pick up that from mflogo; + `getting a copy' - removed fileserv@shsu.bitnet, put various email + addresses in \Email; put NEWS.ANSWERS into more coherent form + (verbatim; and yes, it _does_ need to be upper case) + `pictex manual': escape the $s (!) + `oztex': it's now shareware, not PD + `fig and where to get it': remove escape from _ in \path (!) + `music': corrected email address for Taupin and his ftp site + `double-spacing': doublespace.sty is a file name; close paren round ref + to CTAN; "latest release of LaTeX"->"LaTeX2e" + `macros to do Y': verbatim site index command in text + `... for machine Y running Q': FTP.nwc is a file, and yes, it is there + ibid, both AIX and PC made explicit reference to fpt.dante.de + `blackboard bold': tech-support is an email address; add reference to + the extraordinary bbm fonts + `repositories': correct address corresponding to ftp.tex.ac.uk; put + site index command into verbatim + `Laserjet': converted S's \Q about Berry's prog into an actual + reference to it + `\pagestyle{empty}': correct (;-) spelling of behaviour, "is"->"if" + `NFSS': rewritten to clarify relationship to New LaTeX + New question about things like \tenrm in 2e added + `references wrong': line up corrected code in two columns + `change margins': indent code + `width of letter, etc.': indent examples; remove redundant `T' from + LaTeX + `LaTeX2e': first production release was June + `log-like functions': indent examples + `\@': "?" at end of question + `Companion ... @': space after LaTeX in question, "!" at end + `I've found a bug': slight elaboration of 2.09 case + New version of path.sty with some hacking; redo all S's (and my one) + markup commands + +Mon Sep 19 11:46:40 1994 Robin Fairbairns (robin@home) + + * define \Newsgroup (same as all the rest, pro tem) and use it for + comp.tex.tex, comp.unix.wizards, news.answers, comp.sources.unix, + comp.programming.literate, comp.sources.misc, comp.text, comp.fonts + + * added new questions "what's all this about \@", "but the companion + tells me to use \@startsection" and "I've found a bug: what do I do" + (which last was a suggestion of Jonathan's) + + * put \fileversion in the title (rather than \filedate twice) + + * defined command \cs (out of ltxdoc.cls) so that we can put commands + in question names, required for q32 about \pagestyle{emtpy} diff --git a/help/uk-tex-faq/Makefile b/help/uk-tex-faq/Makefile new file mode 100644 index 0000000000..1345d54113 --- /dev/null +++ b/help/uk-tex-faq/Makefile @@ -0,0 +1,226 @@ +# define variables WEB, WEB_BETA, CGI_BIN, HOME_DIR, CTAN_HOME, CTAN_ROOT +include locations.mk + +# list of subdocuments of gather-faqbody +include subdocuments.mk + +BODY = gather-faqbody.tex filectan.tex dirctan.tex $(SUBDOCS) +MACROS = faq.cls faq.sty +CONFIGS = archive.cfg +CMFONTS = cmz +PATCH = newfaq-patch.tex add-general.tex add-hammond.tex +MAKEF = Makefile + +HTML_TAR = FAQ-html.tar.gz + +LATEX = latex +PDFLATEX = pdflatex + +CTAN_HOME = help/uk-tex-faq + +#h +#hThe main targets of this Makefile are +#h release build a distribution +#h +#h patch build latest patched version +#h +#h ctan install distribution on CTAN +#h (to be run on the CTAN machine) +#h web install files required for web access +#h (must be run on the machine that hosts +#h the CGI script) +#h web-index web access files, just (dir|file)ctan +#h web-beta as web, except beta distribution +#h +#h inst-perl install texfaq2html and sanitize.pl +#h in the cgi-bin directory +#h inst-perl-beta ditto, for texfaq2html-beta, sanitize-beta +#h inst-perl-gamma ditto, for texfaq2html-gamma +#h +#h html make html files in html/ +#h html-gamma make html files in html, copy for -gamma tests + +help:; @sed -n 's/^#h//p' < $(MAKEF) + +release: all html-tar +all: newfaq.pdf letterfaq.pdf + +# did have faqfont.cfg in here, but that caused problems, since it +# typically doesn't exist... + +# pdf generation has to be done one a different base file name because +# of incompatibilities in the .aux and .toc files +newfaq.pdf: newfaq.tex $(BODY) $(MACROS) $(CONFIGS) + ln -sf newfaq.tex ./pdf-newfaq.tex + rm -f faqfont.cfg + while ( \ + $(PDFLATEX) \\def\\Status{1} \\input pdf-newfaq ; \ + grep "Rerun to get cross" pdf-newfaq.log > /dev/null ) do true ; \ + done + thumbpdf pdf-newfaq + $(PDFLATEX) \\def\\Status{1} \\input pdf-newfaq + mv pdf-newfaq.pdf newfaq.pdf + rm pdf-newfaq.tex + +letterfaq.pdf: letterfaq.tex $(BODY) $(MACROS) $(CONFIGS) + ln -sf letterfaq.tex ./pdf-letterfaq.tex + rm -f faqfont.cfg + while ( \ + $(PDFLATEX) \\def\\Status{1} \\input pdf-letterfaq ; \ + grep "Rerun to get cross" pdf-letterfaq.log > /dev/null ) do true ; \ + done + thumbpdf pdf-letterfaq + $(PDFLATEX) \\def\\Status{1} \\input pdf-letterfaq + mv pdf-letterfaq.pdf letterfaq.pdf + rm pdf-letterfaq.tex + +patch: newfaq-patch + +newfaq-patch: newfaq-patch.pdf newfaq-patch.ps + +patch.pdf: newfaq-patch.pdf + +newfaq-patch.pdf: $(PATCH) $(BODY) $(MACROS) $(CONFIGS) + ./find-add-files + ln -sf newfaq-patch.tex ./pdf-newfaq-patch.tex + rm -f faqfont.cfg + while ( \ + $(PDFLATEX) \\def\\Status{1} \\input pdf-newfaq-patch ; \ + grep "Rerun to get cross" pdf-newfaq-patch.log > /dev/null ) do true ; \ + done + thumbpdf pdf-newfaq-patch + $(PDFLATEX) \\def\\Status{1} \\input pdf-newfaq-patch + mv pdf-newfaq-patch.pdf newfaq-patch.pdf + ln -sf newfaq-patch.pdf patch.pdf + rm pdf-newfaq-patch.tex + +patch.dvi: newfaq-patch.dvi + +newfaq-patch.dvi: $(PATCH) $(BODY) $(MACROS) $(CONFIGS) + ./find-add-files + while ( \ + $(LATEX) newfaq-patch ; \ + grep "Rerun to get cross" newfaq-patch.log > /dev/null ) do true ; \ + done + ln -sf newfaq-patch.dvi patch.dvi + +newfaq.aux: newfaq.dvi + +newfaq.dvi: newfaq.tex $(BODY) $(MACROS) $(CONFIGS) + echo $(LATEX) + while ( \ + $(LATEX) newfaq ; \ + grep "Rerun to get cross" newfaq.log > /dev/null ) do true ; \ + done + +letterfaq.dvi: letterfaq.tex $(BODY) $(MACROS) $(CONFIGS) + while ( \ + $(LATEX) letterfaq ; \ + grep "Rerun to get cross" letterfaq.log > /dev/null ) do true ; \ + done + +newfaq-cm.dvi: newfaq.tex $(BODY) $(MACROS) $(CONFIGS) + ln -sf faqfont.cfg.cmfonts faqfont.cfg + ln -sf newfaq.tex newfaq-cm.tex + while ( \ + $(LATEX) newfaq-cm ; \ + grep "Rerun to get cross" newfaq-cm.log > /dev/null ) do true ; \ + done + rm faqfont.cfg newfaq-cm.tex + +letterfaq-cm.dvi: letterfaq.tex $(BODY) $(MACROS) $(CONFIGS) + ln -sf faqfont.cfg.cmfonts faqfont.cfg + ln -sf letterfaq.tex letterfaq-cm.tex + while ( \ + $(LATEX) letterfaq-cm ; \ + grep "Rerun to get cross" letterfaq-cm.log > /dev/null ) do true ; \ + done + rm faqfont.cfg letterfaq-cm.tex + +$(HTML_TAR): + tar czvf $(HTML_TAR) html/* + +ctan: $(HTML_TAR) + (cd $(CTAN_ROOT)/$(CTAN_HOME); \ + really -u ctan make -f /home/rf/tex/faq/Makefile.CTAN) + +# faqbody for all the webbery stuff +faqbody.tex: $(SUBDOCS) gather-faqbody.tex + ./build-faqbody + +web: $(WEB)/dirctan.tex $(WEB)/filectan.tex $(WEB)/faqbody.tex $(WEB)/newfaq.aux $(WEB)/archive.list + +web-index: $(WEB)/dirctan.tex $(WEB)/filectan.tex + +$(WEB)/dirctan.tex: dirctan.tex +$(WEB)/filectan.tex: filectan.tex +$(WEB)/faqbody.tex: faqbody.tex +$(WEB)/newfaq.aux: newfaq.aux +$(WEB)/archive.list: archive.list +$(WEB)/aliasquestion.list: aliasquestion.list +$(WEB)/label-to-file.pl: label-to-file.pl + +$(WEB)/dirctan.tex $(WEB)/filectan.tex $(WEB)/faqbody.tex $(WEB)/newfaq.aux $(WEB)/archive.list $(WEB)/aliasquestion.list $(WEB)/label-to-file.pl: + if [ -f $@ ]; then \ + chmod 644 $@; \ + cp -p $< $@-t; \ + mv $@-t $@; \ + else \ + cp -p $< $@; \ + fi + chmod 444 $@ + +web-beta: $(WEB_BETA)/dirctan.tex $(WEB_BETA)/filectan.tex $(WEB_BETA)/faqbody.tex $(WEB_BETA)/newfaq.aux $(WEB_BETA)/archive.list $(WEB_BETA)/aliasquestion.list $(WEB_BETA)/label-to-file.pl + +$(WEB_BETA)/dirctan.tex: dirctan.tex +$(WEB_BETA)/filectan.tex: filectan.tex +$(WEB_BETA)/faqbody.tex: faqbody.tex +$(WEB_BETA)/newfaq.aux: newfaq.aux +$(WEB_BETA)/archive.list: archive.list +$(WEB_BETA)/aliasquestion.list: aliasquestion.list +$(WEB_BETA)/label-to-file.pl: label-to-file.pl + +$(WEB_BETA)/dirctan.tex $(WEB_BETA)/filectan.tex $(WEB_BETA)/faqbody.tex $(WEB_BETA)/newfaq.aux $(WEB_BETA)/archive.list $(WEB_BETA)/aliasquestion.list $(WEB_BETA)/label-to-file.pl: + if [ -f $@ ]; then \ + chmod 644 $@; \ + cp -p $< $@-t; \ + mv $@-t $@; \ + else \ + cp -p $< $@; \ + fi + chmod 444 $@ + +inst-perl: $(CGI_BIN)/texfaq2html $(CGI_BIN)/sanitize.pl +inst-perl-beta: $(CGI_BIN)/texfaq2html-beta $(CGI_BIN)/sanitize-beta.pl +inst-perl-gamma: $(CGI_BIN)/texfaq2html-gamma + +$(CGI_BIN)/texfaq2html: $(HOME_DIR)/texfaq2html +$(CGI_BIN)/texfaq2html-beta: $(HOME_DIR)/texfaq2html-beta +$(CGI_BIN)/texfaq2html-gamma: $(HOME_DIR)/texfaq2html-gamma +$(CGI_BIN)/sanitize.pl: $(HOME_DIR)/sanitize.pl +$(CGI_BIN)/sanitize-beta.pl: $(HOME_DIR)/sanitize-beta.pl + +$(CGI_BIN)/texfaq2html $(CGI_BIN)/texfaq2html-beta $(CGI_BIN)/texfaq2html-gamma $(CGI_BIN)/sanitize.pl $(CGI_BIN)/sanitize-beta.pl: +# co -l $@ + cp -p $? $@ +# ci -u -m"automatic check-in" $@ + +html: $(HTMLDIR)/index.html + +$(HTMLDIR)/index.html: $(BODY) newfaq.aux faqbody.tex + ./texfaq2file + +html-tar: html + tar czf FAQ-html.tar.gz $(HTMLDIREL)/ + +html-gamma: $(HTMLDIR_GAMMA)/index.html + +$(HTMLDIR_GAMMA)/index.html: $(BODY) newfaq.aux faqbody.tex + ./texfaq2file -2 -w + cp -p $(HTMLDIR_GAMMA)/* $(GAMMADIR)/ + +clean: + rm -f *.pdf *.dvi *.log *.bak *.toc *.out *.lab *.tpt *.png + rm -f *.aux html/*.html html_gamma/*.html htmltext/*.txt + rm -f pdf-newfaq*.tex comment.cut additions.tex aliasquestion.list + rm -f faqbody.tex FAQ-html.tar.gz diff --git a/help/uk-tex-faq/Makefile-CTAN b/help/uk-tex-faq/Makefile-CTAN new file mode 100644 index 0000000000..52912fb5fc --- /dev/null +++ b/help/uk-tex-faq/Makefile-CTAN @@ -0,0 +1,103 @@ +# this file is auto-generated; edit mk-makefile, not this + +/anfs/ctan/tex-archive/help/uk-tex-faq/ChangeLog: ChangeLog +/anfs/ctan/tex-archive/help/uk-tex-faq/Makefile: Makefile +/anfs/ctan/tex-archive/help/uk-tex-faq/README: README +/anfs/ctan/tex-archive/help/uk-tex-faq/dirctan.tex: dirctan.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq.cls: faq.cls +/anfs/ctan/tex-archive/help/uk-tex-faq/faq.sty: faq.sty +/anfs/ctan/tex-archive/help/uk-tex-faq/filectan.tex: filectan.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/gather-faqbody.tex: gather-faqbody.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/letterfaq.tex: letterfaq.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/archive.cfg: archive.cfg +/anfs/ctan/tex-archive/help/uk-tex-faq/markup-syntax: markup-syntax +/anfs/ctan/tex-archive/help/uk-tex-faq/newfaq.tex: newfaq.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/letterfaq.pdf: letterfaq.pdf +/anfs/ctan/tex-archive/help/uk-tex-faq/newfaq.pdf: newfaq.pdf +/anfs/ctan/tex-archive/help/uk-tex-faq/faqfont.cfg.cmfonts: faqfont.cfg.cmfonts +/anfs/ctan/tex-archive/help/uk-tex-faq/FAQ-html.tar.gz: FAQ-html.tar.gz +/anfs/ctan/tex-archive/help/uk-tex-faq/CHANGES-3.25: CHANGES-3.25 +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-adj-types.tex: faq-adj-types.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-backgrnd.tex: faq-backgrnd.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-biblio.tex: faq-biblio.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-bits+pieces.tex: faq-bits+pieces.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-docs.tex: faq-docs.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-dvi.tex: faq-dvi.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-fmt-conv.tex: faq-fmt-conv.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-fonts.tex: faq-fonts.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-getit.tex: faq-getit.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-graphics.tex: faq-graphics.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-how-do-i.tex: faq-how-do-i.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-hyp+pdf-1.tex: faq-hyp+pdf-1.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-hyp+pdf.tex: faq-hyp+pdf.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-hyp-pdf-rev.tex: faq-hyp-pdf-rev.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-images.tex: faq-images.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-install.tex: faq-install.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-intro.tex: faq-intro.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-jot-err.tex: faq-jot-err.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-lab-ref.tex: faq-lab-ref.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-litprog.tex: faq-litprog.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-mac-prog.tex: faq-mac-prog.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-projects.tex: faq-projects.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-support.tex: faq-support.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-symbols.tex: faq-symbols.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-t-g-wr.tex: faq-t-g-wr.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-texsys.tex: faq-texsys.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-the-end.tex: faq-the-end.tex +/anfs/ctan/tex-archive/help/uk-tex-faq/faq-wdidt.tex: faq-wdidt.tex + +TARGETS = \ + /anfs/ctan/tex-archive/help/uk-tex-faq/ChangeLog \ + /anfs/ctan/tex-archive/help/uk-tex-faq/Makefile \ + /anfs/ctan/tex-archive/help/uk-tex-faq/README \ + /anfs/ctan/tex-archive/help/uk-tex-faq/dirctan.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq.cls \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq.sty \ + /anfs/ctan/tex-archive/help/uk-tex-faq/filectan.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/gather-faqbody.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/letterfaq.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/archive.cfg \ + /anfs/ctan/tex-archive/help/uk-tex-faq/markup-syntax \ + /anfs/ctan/tex-archive/help/uk-tex-faq/newfaq.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/letterfaq.pdf \ + /anfs/ctan/tex-archive/help/uk-tex-faq/newfaq.pdf \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faqfont.cfg.cmfonts \ + /anfs/ctan/tex-archive/help/uk-tex-faq/FAQ-html.tar.gz \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-adj-types.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-backgrnd.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-biblio.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-bits+pieces.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-docs.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-dvi.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-fmt-conv.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-fonts.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-getit.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-graphics.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-how-do-i.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-hyp+pdf-1.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-hyp+pdf.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-hyp-pdf-rev.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-images.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-install.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-intro.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-jot-err.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-lab-ref.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-litprog.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-mac-prog.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-projects.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-support.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-symbols.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-t-g-wr.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-texsys.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-the-end.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/faq-wdidt.tex \ + /anfs/ctan/tex-archive/help/uk-tex-faq/CHANGES-3.25 + +all: $(TARGETS) + echo $^ + if [ -f $^ ]; then \ + /anfs/ctan-maint/install/ctan_install -replace -silent -nozip $(F^) help/uk-tex-faq/$(F^); \ + else \ + /anfs/ctan-maint/install/ctan_install -new -silent $(F^) help/uk-tex-faq/$(F^); \ + fi + diff --git a/help/uk-tex-faq/README b/help/uk-tex-faq/README new file mode 100644 index 0000000000..1f452b06e0 --- /dev/null +++ b/help/uk-tex-faq/README @@ -0,0 +1,34 @@ + The UK TeX FAQ + +1. Origins and maintenance + +This FAQ was started as a committee effort by the UK TeX Users' Group. + +If you wish to offer help, or to comment on the content of the FAQ, +please mail faq-devel@tex.ac.uk + +2. Licence + +The source of the FAQ itself and its derived products (human-readable +versions presented as DVI, PostScript, Adobe Acrobat and HTML) are +placed in the public domain. + +You are permitted (nay, encouraged) to distribute the FAQ as widely as +you like. Please be careful to keep your copy of the FAQ up-to-date: +it's possible to mirror the FAQ's directory on CTAN, or to watch the +CTAN announcements mailing list (see the "answer" on mailing lists in +the FAQ itself). + +Further, you are urged to be very careful about modifying the FAQ: + +- the source and its relationship to the macros that support it, and + to the dubious Perl scripts that create HTML versions, is extremely + fragile; so changes are likely to be tricky to "get right" + +- there's a positive danger in publishing un-reviewed advice, + particularly if it claims to come from a usually reliable source. + +Therefore, if you do have changes to make, please consider submitting +them to faq-devel@tex.ac.uk at least in parallel with making changes +to your own copy. A statement that details what you've done, in your +copy of the FAQ, is particularly useful. diff --git a/help/uk-tex-faq/archive.cfg b/help/uk-tex-faq/archive.cfg new file mode 100644 index 0000000000..0d998ea78c --- /dev/null +++ b/help/uk-tex-faq/archive.cfg @@ -0,0 +1,13 @@ +% this file is loaded by the {file,dir}ctan files to define the local +% preferred archive and directory compression format + +% +% the archive itself +\def\LocalCTAN{http://mirror.ctan.org/} % could be anything + % out of CTAN.sites +% +% the format for use when retrieving directory hierarchies +\def\CTANDirFmt{.zip} % could be .(tar[.(Z|gz)]|tgz|zip) according to what + % the local archive is capable of and the users need + +\endinput diff --git a/help/uk-tex-faq/dirctan.tex b/help/uk-tex-faq/dirctan.tex new file mode 100644 index 0000000000..00f797453a --- /dev/null +++ b/help/uk-tex-faq/dirctan.tex @@ -0,0 +1,990 @@ +% $Id: dirctan.tex,v 1.302 2013/07/24 21:43:10 rf10 Exp rf10 $ +% +% protect ourself against being read twice +\csname readCTANdirs\endcsname +\let\readCTANdirs\endinput +% +% declarations of significant directories on CTAN +\CTANdirectory{2etools}{macros/latex/required/tools}[tools] +\CTANdirectory{4spell}{support/4spell}[fourspell] +\CTANdirectory*{Catalogue}{help/Catalogue} +\CTANdirectory*{MathTeX}{support/mathtex}[mathtex] +\CTANdirectory{MimeTeX}{support/mimetex}[mimetex] +\CTANdirectory{Tabbing}{macros/latex/contrib/Tabbing}[tabbing] +\CTANdirectory*{TeXtelmExtel}{systems/msdos/emtex-contrib/TeXtelmExtel} +\CTANdirectory{TftI}{info/impatient}[impatient] +\CTANdirectory{a0poster}{macros/latex/contrib/a0poster}[a0poster] +\CTANdirectory*{a2ping}{graphics/a2ping}[a2ping] +\CTANdirectory{a4}{macros/latex/contrib/a4}[a4] +\CTANdirectory*{abc2mtex}{support/abc2mtex} +\CTANdirectory{abstract}{macros/latex/contrib/abstract}[abstract] +\CTANdirectory{abstyles}{biblio/bibtex/contrib/abstyles} +\CTANdirectory{accents}{support/accents} +\CTANdirectory{acronym}{macros/latex/contrib/acronym}[acronym] +\CTANdirectory*{ada}{web/ada/aweb} +\CTANdirectory{addindex}{indexing/addindex} +\CTANdirectory{addlines}{macros/latex/contrib/addlines}[addlines] +\CTANdirectory{adjkerns}{fonts/utilities/adjkerns} +\CTANdirectory{ae}{fonts/ae}[ae] +\CTANdirectory{aeguill}{macros/latex/contrib/aeguill}[aeguill] +\CTANdirectory{afmtopl}{fonts/utilities/afmtopl} +\CTANdirectory{akletter}{macros/latex/contrib/akletter} +\CTANdirectory{aleph}{systems/aleph} +\CTANdirectory{alg}{macros/latex/contrib/alg} +\CTANdirectory{algorithm2e}{macros/latex/contrib/algorithm2e}[algorithm2e] +\CTANdirectory{algorithmicx}{macros/latex/contrib/algorithmicx}[algorithmicx] +\CTANdirectory{algorithms}{macros/latex/contrib/algorithms}[algorithms] +\CTANdirectory*{alpha}{systems/mac/support/alpha}[alpha] +\CTANdirectory{amiga}{systems/amiga} +\CTANdirectory{amscls}{macros/latex/required/amslatex/amscls}[amscls] +\CTANdirectory{amsfonts}{fonts/amsfonts}[amsfonts] +\CTANdirectory{amslatex}{macros/latex/required/amslatex}[amslatex] +\CTANdirectory{amslatex-primer}{info/amslatex/primer}[amslatex-primer] +\CTANdirectory{amspell}{support/amspell} +\CTANdirectory{amsrefs}{macros/latex/contrib/amsrefs}[amsrefs] +\CTANdirectory{amstex}{macros/amstex}[amstex] +\CTANdirectory{anonchap}{macros/latex/contrib/anonchap}[anonchap] +\CTANdirectory{answers}{macros/latex/contrib/answers}[answers] +\CTANdirectory{ant}{systems/ant}[ant] +\CTANdirectory{anyfontsize}{macros/latex/contrib/anyfontsize}[anyfontsize] +\CTANdirectory{apl}{fonts/apl} +\CTANdirectory{aplweb}{web/apl/aplweb} +\CTANdirectory{appl}{web/reduce/rweb/appl} +\CTANdirectory{appendix}{macros/latex/contrib/appendix}[appendix] +\CTANdirectory{arabtex}{language/arabic/arabtex} +\CTANdirectory{arara}{support/arara}[arara] +\CTANdirectory{aro-bend}{info/challenges/aro-bend}[aro-bend] +\CTANdirectory{asana-math}{fonts/Asana-Math}[asana-math] +\CTANdirectory{asc2tex}{systems/msdos/asc2tex} +\CTANdirectory{ascii}{fonts/ascii} +\CTANdirectory*{aspell}{support/aspell}[aspell] +\CTANdirectory{astro}{fonts/astro} +\CTANdirectory{asymptote}{graphics/asymptote}[asymptote] +\CTANdirectory{asyfig}{macros/latex/contrib/asyfig}[asyfig] +\CTANdirectory{atari}{systems/atari} +\CTANdirectory*{atari-cstex}{systems/atari/cs-tex}[atari-cstex] +\CTANdirectory{attachfile}{macros/latex/contrib/attachfile} +\CTANdirectory*{auctex}{support/auctex}[auctex] +\CTANdirectory{autolatex}{support/autolatex} +\CTANdirectory{auto-pst-pdf}{macros/latex/contrib/auto-pst-pdf}[auto-pst-pdf] +\CTANdirectory{aweb}{web/ada/aweb} +\CTANdirectory*{awk}{web/spiderweb/src/awk} +\CTANdirectory{axodraw}{graphics/axodraw}[axodraw] +\CTANdirectory{babel}{macros/latex/required/babel}[babel] +\CTANdirectory{babelbib}{biblio/bibtex/contrib/babelbib}[babelbib] +\CTANdirectory{badge}{macros/plain/contrib/badge} +\CTANdirectory{bakoma}{fonts/cm/ps-type1/bakoma}[bakoma-fonts] +\CTANdirectory*{bakoma-tex}{systems/win32/bakoma}[bakoma] +\CTANdirectory*{bakoma-texfonts}{systems/win32/bakoma/fonts} +\CTANdirectory*{bard}{fonts/bard} +\CTANdirectory{barr}{macros/generic/diagrams/barr} +\CTANdirectory{bashkirian}{fonts/cyrillic/bashkirian} +\CTANdirectory{basix}{macros/generic/basix} +\CTANdirectory{bbding}{fonts/bbding} +\CTANdirectory{bbfig}{support/bbfig} +\CTANdirectory{bbm}{fonts/cm/bbm}[bbm] +\CTANdirectory{bbm-macros}{macros/latex/contrib/bbm}[bbm-macros] +\CTANdirectory{bbold}{fonts/bbold}[bbold] +\CTANdirectory{bdfchess}{fonts/chess/bdfchess} +\CTANdirectory{beamer}{macros/latex/contrib/beamer}[beamer] +\CTANdirectory{beamerposter}{macros/latex/contrib/beamerposter}[beamerposter] +\CTANdirectory{beebe}{dviware/beebe} +\CTANdirectory{belleek}{fonts/belleek}[belleek] +\CTANdirectory{beton}{macros/latex/contrib/beton}[beton] +\CTANdirectory{bezos}{macros/latex/contrib/bezos}[bezos] +\CTANdirectory{bib-fr}{biblio/bibtex/contrib/bib-fr} +\CTANdirectory{bib2dvi}{biblio/bibtex/utils/bib2dvi} +\CTANdirectory{bib2xhtml}{biblio/bibtex/utils/bib2xhtml} +\CTANdirectory*{bibcard}{biblio/bibtex/utils/bibcard} +\CTANdirectory*{bibclean}{biblio/bibtex/utils/bibclean} +\CTANdirectory*{bibdb}{support/bibdb} +\CTANdirectory{biber}{biblio/biber}[biber] +\CTANdirectory{bibextract}{biblio/bibtex/utils/bibextract} +\CTANdirectory{bibgerm}{biblio/bibtex/contrib/germbib} +\CTANdirectory{bibindex}{biblio/bibtex/utils/bibindex} +\CTANdirectory{biblatex}{macros/latex/contrib/biblatex}[biblatex] +\CTANdirectory*{biblatex-contrib}{macros/latex/contrib/biblatex-contrib} +\CTANdirectory{biblio}{info/biblio} +\CTANdirectory{biblist}{macros/latex209/contrib/biblist} +\CTANdirectory{bibsort}{biblio/bibtex/utils/bibsort} +\CTANdirectory{bibtex}{biblio/bibtex/base}[bibtex] +\CTANdirectory*{bibtex8}{biblio/bibtex/8-bit}[bibtex8bit] +\CTANdirectory{bibtex-doc}{biblio/bibtex/contrib/doc}[bibtex] +\CTANdirectory{bibtool}{biblio/bibtex/utils/bibtool} +\CTANdirectory{bibtools}{biblio/bibtex/utils/bibtools} +\CTANdirectory{bibtopic}{macros/latex/contrib/bibtopic}[bibtopic] +\CTANdirectory{bibunits}{macros/latex/contrib/bibunits}[bibunits] +\CTANdirectory{bibview}{biblio/bibtex/utils/bibview} +\CTANdirectory{bigfoot}{macros/latex/contrib/bigfoot}[bigfoot] +\CTANdirectory{bigstrut}{macros/latex/contrib/multirow}[bigstrut] +\CTANdirectory{bit2spr}{graphics/bit2spr} +\CTANdirectory{black}{fonts/cm/utilityfonts/black} +\CTANdirectory{blackboard}{info/symbols/blackboard}[blackboard] +\CTANdirectory{blackletter}{fonts/blackletter} +\CTANdirectory{blindtext}{macros/latex/contrib/blindtext}[blindtext] +\CTANdirectory{blocks}{macros/text1/blocks} +\CTANdirectory{blu}{macros/blu} +\CTANdirectory{bm2font}{graphics/bm2font} +\CTANdirectory{boites}{macros/latex/contrib/boites}[boites] +\CTANdirectory{bold}{fonts/cm/mf-extra/bold} +\CTANdirectory{bold-extra}{macros/latex/contrib/bold-extra}[bold-extra] +\CTANdirectory{bonus}{systems/msdos/emtex-contrib/bonus} +\CTANdirectory{booktabs}{macros/latex/contrib/booktabs}[booktabs] +\CTANdirectory{boondox}{fonts/boondox}[boondox] +\CTANdirectory{borceux}{macros/generic/diagrams/borceux} +\CTANdirectory{braket}{macros/latex/contrib/braket}[braket] +\CTANdirectory{breakurl}{macros/latex/contrib/breakurl}[breakurl] +\CTANdirectory{bridge}{macros/plain/contrib/bridge} +\CTANdirectory{brief_t}{support/brief_t} +\CTANdirectory{bst}{biblio/bibtex/contrib/germbib/bst} +\CTANdirectory{btable}{macros/plain/contrib/btable} +\CTANdirectory{btex8fmt}{macros/generic/cptex/btex8fmt} +\CTANdirectory{btOOL}{biblio/bibtex/utils/btOOL} +\CTANdirectory{bundledoc}{support/bundledoc}[bundledoc] +\CTANdirectory{c}{web/spiderweb/src/c} +\CTANdirectory{c++}{web/spiderweb/src/c++} +\CTANdirectory{c++2latex}{support/C++2LaTeX-1_1pl1} +\CTANdirectory{c2cweb}{web/c_cpp/c2cweb} +\CTANdirectory{c2latex}{support/c2latex} +\CTANdirectory{c_cpp}{web/c_cpp} +\CTANdirectory{caesar-fonts-generic.dir}{macros/generic/caesarcm/caesar-fonts-generic.dir} +\CTANdirectory{caesarcm}{macros/generic/caesarcm} +\CTANdirectory{caesarcmfonts.dir}{macros/generic/caesarcm/caesarcmfonts.dir} +\CTANdirectory{caesarcmv2.dir}{macros/generic/caesarcm/caesarcmv2.dir} +\CTANdirectory{calendar}{macros/plain/contrib/calendar} +\CTANdirectory{calligra}{fonts/calligra} +\CTANdirectory{calrsfs}{macros/latex/contrib/calrsfs} +\CTANdirectory{cancel}{macros/latex/contrib/cancel}[cancel] +\CTANdirectory{capt-of}{macros/latex/contrib/capt-of}[capt-of] +\CTANdirectory{caption}{macros/latex/contrib/caption}[caption] +\CTANdirectory{carlisle}{macros/latex/contrib/carlisle}[carlisle] +\CTANdirectory{cascover}{macros/plain/contrib/cascover} +\CTANdirectory{casslbl}{macros/plain/contrib/casslbl} +\CTANdirectory{catdvi}{dviware/catdvi}[catdvi] +\CTANdirectory{ccaption}{macros/latex/contrib/ccaption}[ccaption] +\CTANdirectory{ccfonts}{macros/latex/contrib/ccfonts}[ccfonts] +\CTANdirectory{cellular}{macros/plain/contrib/cellular} +\CTANdirectory{cellspace}{macros/latex/contrib/cellspace}[cellspace] +\CTANdirectory{changebar}{macros/latex/contrib/changebar}[changebar] +\CTANdirectory{changepage}{macros/latex/contrib/changepage}[changepage] +\CTANdirectory{changes}{macros/latex/contrib/changes}[changes] +\CTANdirectory{chappg}{macros/latex/contrib/chappg}[chappg] +\CTANdirectory{chapterfolder}{macros/latex/contrib/chapterfolder}[chapterfolder] +\CTANdirectory{charconv}{support/charconv} +\CTANdirectory{charter}{fonts/charter} +\CTANdirectory{chbar}{macros/plain/contrib/chbar} +\CTANdirectory{chbars}{macros/latex209/contrib/chbars} +\CTANdirectory{check}{support/check} +\CTANdirectory{chemstruct}{macros/latex209/contrib/chemstruct} +\CTANdirectory{chemtex}{macros/latex209/contrib/chemtex} +\CTANdirectory{cheq}{fonts/chess/cheq} +\CTANdirectory{cherokee}{fonts/cherokee} +\CTANdirectory{chesstools}{support/chesstools} +\CTANdirectory{chi2tex}{support/chi2tex} +\CTANdirectory{china2e}{macros/latex/contrib/china2e} +\CTANdirectory{chinese}{language/chinese} +\CTANdirectory{chngcntr}{macros/latex/contrib/chngcntr}[chngcntr] +\CTANdirectory{circ}{macros/generic/diagrams/circ} +\CTANdirectory{circuit_macros}{graphics/circuit_macros} +\CTANdirectory{cirth}{fonts/cirth} +\CTANdirectory{cite}{macros/latex/contrib/cite}[cite] +\CTANdirectory{citeref}{macros/latex/contrib/citeref}[citeref] +\CTANdirectory{clark}{fonts/utilities/afmtopl/clark} +\CTANdirectory{classico}{fonts/urw/classico}[classico] +\CTANdirectory{clrscode}{macros/latex/contrib/clrscode}[clrscode] +\CTANdirectory{cm}{fonts/cm} +\CTANdirectory{cm-lgc}{fonts/ps-type1/cm-lgc}[cm-lgc] +\CTANdirectory{cm-super}{fonts/ps-type1/cm-super}[cm-super] +\CTANdirectory{cm-unicode}{fonts/cm-unicode}[cm-unicode] +\CTANdirectory{cmactex}{systems/mac/cmactex}[cmactex] +\CTANdirectory{cmap}{macros/latex/contrib/cmap} +\CTANdirectory{cmastro}{fonts/cmastro} +\CTANdirectory{cmbright}{fonts/cmbright}[cmbright] +\CTANdirectory{cmcyralt}{macros/latex/contrib/cmcyralt} +%[fonts/cmcyralt] +\CTANdirectory{cmfrak}{fonts/gothic/cmfrak} +\CTANdirectory{cmoefont}{fonts/cmoefont} +\CTANdirectory{cmolddig}{fonts/cmolddig} +\CTANdirectory{cmoutlines}{fonts/cm/cmoutlines}[cmoutlines] +\CTANdirectory{cmpica}{fonts/cmpica} +\CTANdirectory{cms_help_files}{macros/text1/cms_help_files} +\CTANdirectory{cmtest}{fonts/cm/cmtest} +\CTANdirectory{cnoweb}{web/c_cpp/cnoweb} +\CTANdirectory{collref}{macros/latex/contrib/collref} +\CTANdirectory{combine}{macros/latex/contrib/combine}[combine] +\CTANdirectory{commado}{macros/generic/commado}[commado] +\CTANdirectory{comment}{macros/latex/contrib/comment}[comment] +\CTANdirectory{committee}{fonts/unsupported/committee} +\CTANdirectory{comp-fonts-FAQ}{help/comp-fonts-FAQ} +\CTANdirectory{components-of-TeX}{info/components-of-TeX} +\CTANdirectory{compugraphics_8600}{macros/text1/compugraphics_8600} +\CTANdirectory{concmath}{macros/latex/contrib/concmath}[concmath] +\CTANdirectory{concmath-f}{fonts/concmath}[concmath-fonts] +\CTANdirectory{concrete}{fonts/concrete}[concrete] +\CTANdirectory{context}{macros/context/current}[context] +\CTANdirectory{context-contrib}{macros/context/contrib} +\CTANdirectory{cprotect}{macros/latex/contrib/cprotect}[cprotect] +\CTANdirectory{cptex}{macros/generic/cptex} +\CTANdirectory{crop}{macros/latex/contrib/crop}[crop] +\CTANdirectory*{crosstex}{biblio/crosstex}[crosstex] +\CTANdirectory{crosswrd}{macros/latex/contrib/crosswrd} +\CTANdirectory{crudetype}{dviware/crudetype}[crudetype] +\CTANdirectory{crw}{macros/plain/contrib/crw} +\CTANdirectory{cs-tex}{systems/atari/cs-tex} +\CTANdirectory{csvsimple}{macros/latex/contrib/csvsimple}[csvsimple] +\CTANdirectory{ctable}{macros/latex/contrib/ctable}[ctable] +\CTANdirectory{ctan}{help/ctan} +\CTANdirectory{cun}{fonts/cun} +\CTANdirectory{currfile}{macros/latex/contrib/currfile}[currfile] +\CTANdirectory{currvita}{macros/latex/contrib/currvita}[currvita] +\CTANdirectory{curve}{macros/latex/contrib/curve}[curve] +\CTANdirectory{curves}{macros/latex/contrib/curves} +\CTANdirectory{custom-bib}{macros/latex/contrib/custom-bib}[custom-bib] +\CTANdirectory{cutwin}{macros/latex/contrib/cutwin}[cutwin] +\CTANdirectory{cweb}{web/c_cpp/cweb} +\CTANdirectory{cweb-p}{web/c_cpp/cweb-p} +\CTANdirectory{cypriote}{fonts/cypriote} +\CTANdirectory{cyrillic}{language/cyrillic} +\CTANdirectory{cyrtug}{language/cyrtug} +\CTANdirectory{dante}{usergrps/dante} +\CTANdirectory{dante-faq}{help/de-tex-faq} +\CTANdirectory{databases}{biblio/bibtex/databases} +\CTANdirectory{datatool}{macros/latex/contrib/datatool}[datatool] +\CTANdirectory{datetime}{macros/latex/contrib/datetime} +\CTANdirectory{db2tex}{support/db2tex} +\CTANdirectory{dblfloatfix}{macros/latex/contrib/dblfloatfix}[dblfloatfix] +\CTANdirectory{dbtex}{support/dbtex} +\CTANdirectory{dc-latex}{language/hyphen-accent/dc-latex} +\CTANdirectory{dc-nfss}{language/hyphen-accent/dc-nfss} +\CTANdirectory{detex}{support/detex}[detex] +\CTANdirectory{devanagari}{language/devanagari} +\CTANdirectory{diagbox}{macros/latex/contrib/diagbox}[diagbox] +\CTANdirectory{diagrams}{macros/generic/diagrams} +\CTANdirectory{dijkstra}{web/spiderweb/src/dijkstra} +\CTANdirectory{dinbrief}{macros/latex/contrib/dinbrief} +\CTANdirectory{dingbat}{fonts/dingbat} +\CTANdirectory{djgpp}{systems/msdos/djgpp} +\CTANdirectory{dk-bib}{biblio/bibtex/contrib/dk-bib} +\CTANdirectory{dktools}{support/dktools}[dktools] +\CTANdirectory{dm-latex}{language/hyphen-accent/dm-latex} +\CTANdirectory{dm-plain}{language/hyphen-accent/dm-plain} +\CTANdirectory{doc2sty}{language/swedish/slatex/doc2sty} +\CTANdirectory{docmfp}{macros/latex/contrib/docmfp}[docmfp] +\CTANdirectory{docmute}{macros/latex/contrib/docmute}[docmute] +\CTANdirectory{docu}{support/makeprog/docu} +\CTANdirectory{document}{biblio/bibtex/contrib/germbib/document} +\CTANdirectory{dos-dc}{systems/msdos/dos-dc} +\CTANdirectory{dos-psfonts}{systems/msdos/emtex-fonts/psfonts} +\CTANdirectory{doublestroke}{fonts/doublestroke}[doublestroke] +\CTANdirectory{dowith}{macros/generic/dowith}[dowith] +\CTANdirectory{dpfloat}{macros/latex/contrib/dpfloat}[dpfloat] +\CTANdirectory{dpmigcc}{systems/msdos/dpmigcc} +\CTANdirectory{draftcopy}{macros/latex/contrib/draftcopy}[draftcopy] +\CTANdirectory{draftwatermark}{macros/latex/contrib/draftwatermark}[draftwatermark] +\CTANdirectory{dratex}{graphics/dratex}[dratex] +\CTANdirectory{drawing}{graphics/drawing} +\CTANdirectory{dropcaps}{macros/latex209/contrib/dropcaps} +\CTANdirectory{dropping}{macros/latex/contrib/dropping}[dropping] +\CTANdirectory{dtl}{dviware/dtl}[dtl] +\CTANdirectory{dtxgen}{support/dtxgen}[dtxgen] +\CTANdirectory{dtxtut}{info/dtxtut}[dtxtut] +\CTANdirectory{duerer}{fonts/duerer} +\CTANdirectory{dvgt}{dviware/dvgt} +\CTANdirectory{dvi-augsburg}{dviware/dvi-augsburg} +\CTANdirectory{dvi2bitmap}{dviware/dvi2bitmap}[dvi2bitmap] +\CTANdirectory{dvi2pcl}{dviware/dvi2pcl} +\CTANdirectory{dvi2tty}{dviware/dvi2tty}[dvi2tty] +\CTANdirectory{dviasm}{dviware/dviasm}[dviasm] +\CTANdirectory{dvibit}{dviware/dvibit} +\CTANdirectory{dvibook}{dviware/dvibook} +\CTANdirectory{dvichk}{dviware/dvichk} +\CTANdirectory{dvicopy}{dviware/dvicopy} +\CTANdirectory{dvidjc}{dviware/dvidjc} +\CTANdirectory{dvidvi}{dviware/dvidvi} +\CTANdirectory{dviimp}{dviware/dviimp} +\CTANdirectory{dviljk}{dviware/dviljk} +\CTANdirectory{dvimerge}{dviware/dvimerge} +\CTANdirectory{dvimfj}{systems/msdos/emtex-contrib/dvimfj} +\CTANdirectory{dvipage}{dviware/dvipage} +\CTANdirectory{dvipaste}{dviware/dvipaste} +\CTANdirectory{dvipdfm}{dviware/dvipdfm} +\CTANdirectory{dvipdfmx}{dviware/dvipdfmx}[dvipdfmx] +\CTANdirectory{dvipj}{dviware/dvipj} +\CTANdirectory{dvipng}{dviware/dvipng}[dvipng] +\CTANdirectory{dvips-pc}{systems/msdos/dviware/dvips} +\CTANdirectory{dvips}{dviware/dvips}[dvips] +\CTANdirectory{dvistd}{dviware/driv-standard} +\CTANdirectory{dvisun}{dviware/dvisun} +\CTANdirectory{dvitty}{dviware/dvitty} +\CTANdirectory{dvivga}{dviware/dvivga} +\CTANdirectory{e4t}{systems/msdos/e4t} +\CTANdirectory*{e-TeX}{systems/e-tex} +\CTANdirectory{easytex}{systems/msdos/easytex} +\CTANdirectory{ebib}{biblio/bibtex/utils/ebib} +\CTANdirectory{ec}{fonts/ec}[ec] +\CTANdirectory{ec-plain}{macros/ec-plain}[ec-plain] +\CTANdirectory{eco}{fonts/eco}[eco] +\CTANdirectory{economic}{biblio/bibtex/contrib/economic} +\CTANdirectory{edmac}{macros/plain/contrib/edmac}[edmac] +\CTANdirectory{ednotes}{macros/latex/contrib/ednotes}[ednotes] +\CTANdirectory{eepic}{macros/latex/contrib/eepic}[eepic] +\CTANdirectory{ega2mf}{fonts/utilities/ega2mf} +\CTANdirectory{egplot}{macros/latex/contrib/egplot}[egplot] +\CTANdirectory{eiad}{fonts/eiad} +\CTANdirectory{elvish}{fonts/elvish} +\CTANdirectory{elwell}{fonts/utilities/afmtopl/elwell} +\CTANdirectory{emp}{macros/latex/contrib/emp}[emp] +\CTANdirectory{emptypage}{macros/latex/contrib/emptypage}[emptypage] +\CTANdirectory{emt2tex}{systems/msdos/emtex-contrib/emt2tex} +\CTANdirectory{emtex}{systems/msdos/emtex} +\CTANdirectory{emtex-contrib}{systems/msdos/emtex-contrib} +\CTANdirectory{emtex-fonts}{systems/msdos/emtex-fonts} +\CTANdirectory{emtextds}{obsolete/systems/os2/emtex-contrib/emtexTDS} +\CTANdirectory{enctex}{systems/enctex}[enctex] +\CTANdirectory{endfloat}{macros/latex/contrib/endfloat}[endfloat] +\CTANdirectory{english}{language/english} +\CTANdirectory{engwar}{fonts/engwar} +\CTANdirectory{enumitem}{macros/latex/contrib/enumitem}[enumitem] +\CTANdirectory{environment}{support/lsedit/environment} +\CTANdirectory{epic}{macros/latex/contrib/epic}[epic] +\CTANdirectory{epigraph}{macros/latex/contrib/epigraph}[epigraph] +\CTANdirectory{eplain}{macros/eplain}[eplain] +\CTANdirectory{epmtex}{systems/os2/epmtex} +\CTANdirectory{epslatex}{info/epslatex}[epslatex] +\CTANdirectory*{epstopdf}{support/epstopdf}[epstopdf] +\CTANdirectory{eqparbox}{macros/latex/contrib/eqparbox}[eqparbox] +\CTANdirectory{ergotex}{systems/msdos/ergotex} +\CTANdirectory{errata}{systems/knuth/dist/errata} +\CTANdirectory{eso-pic}{macros/latex/contrib/eso-pic}[eso-pic] +\CTANdirectory{et}{support/et} +\CTANdirectory{etex}{systems/e-tex}[etex] +\CTANdirectory{etex-pkg}{macros/latex/contrib/etex-pkg}[etex-pkg] +\CTANdirectory{etextools}{macros/latex/contrib/etextools}[etextools] +\CTANdirectory{ethiopia}{language/ethiopia} +\CTANdirectory{ethtex}{language/ethiopia/ethtex} +\CTANdirectory{etoc}{macros/latex/contrib/etoc}[etoc] +\CTANdirectory{etoolbox}{macros/latex/contrib/etoolbox}[etoolbox] +\CTANdirectory{euler-latex}{macros/latex/contrib/euler}[euler] +\CTANdirectory{eulervm}{fonts/eulervm}[eulervm] +\CTANdirectory{euro-ce}{fonts/euro-ce}[euro-ce] +\CTANdirectory{euro-fonts}{fonts/euro} +\CTANdirectory{eurofont}{macros/latex/contrib/eurofont}[eurofont] +\CTANdirectory{europecv}{macros/latex/contrib/europecv}[europecv] +\CTANdirectory{eurosym}{fonts/eurosym}[eurosym] +\CTANdirectory{everypage}{macros/latex/contrib/everypage}[everypage] +\CTANdirectory{excalibur}{systems/mac/support/excalibur} +\CTANdirectory{excel2latex}{support/excel2latex} +\CTANdirectory{excerpt}{web/spiderweb/tools/excerpt} +\CTANdirectory{excludeonly}{macros/latex/contrib/excludeonly}[excludeonly] +\CTANdirectory{expdlist}{macros/latex/contrib/expdlist} +\CTANdirectory{extract}{macros/latex/contrib/extract}[extract] +\CTANdirectory{extsizes}{macros/latex/contrib/extsizes}[extsizes] +% cat links to here +\CTANdirectory{fancyhdr}{macros/latex/contrib/fancyhdr}[fancyhdr] +\CTANdirectory{fancyvrb}{macros/latex/contrib/fancyvrb}[fancyvrb] +\CTANdirectory{faq}{help/uk-tex-faq}[uk-tex-faq] +\CTANdirectory{fc}{fonts/jknappen/fc} +\CTANdirectory{fdsymbol}{fonts/fdsymbol}[fdsymbol] +\CTANdirectory{feyn}{fonts/feyn} +\CTANdirectory{feynman}{macros/latex209/contrib/feynman} +\CTANdirectory{feynmf}{macros/latex/contrib/feynmf}[feynmf] +\CTANdirectory{fig2eng}{graphics/fig2eng} +\CTANdirectory{fig2mf}{graphics/fig2mf} +\CTANdirectory{fig2mfpic}{graphics/fig2mfpic} +\CTANdirectory{figflow}{macros/plain/contrib/figflow}[figflow] +\CTANdirectory{filehook}{macros/latex/contrib/filehook}[filehook] +\CTANdirectory{fink}{macros/latex/contrib/fink}[fink] +\CTANdirectory{first-latex-doc}{info/first-latex-doc} +\CTANdirectory{fix2col}{macros/latex/contrib/fix2col}[fix2col] +\CTANdirectory{fixfoot}{macros/latex/contrib/fixfoot}[fixfoot] +\CTANdirectory{float}{macros/latex/contrib/float}[float] +\CTANdirectory{floatflt}{macros/latex/contrib/floatflt}[floatflt] +\CTANdirectory{flow}{support/flow} +\CTANdirectory{flowfram}{macros/latex/contrib/flowfram}[flowfram] +\CTANdirectory{fltpage}{macros/latex/contrib/fltpage}[fltpage] +\CTANdirectory{fnbreak}{macros/latex/contrib/fnbreak}[fnbreak] +\CTANdirectory{fncychap}{macros/latex/contrib/fncychap}[fncychap] +\CTANdirectory{fncylab}{macros/latex/contrib/fncylab} +\CTANdirectory{foiltex}{macros/latex/contrib/foiltex}[foiltex] +\CTANdirectory{font-change}{macros/plain/contrib/font-change}[font-change] +\CTANdirectory{fontch}{macros/plain/contrib/fontch}[fontch] +\CTANdirectory{fontinst}{fonts/utilities/fontinst}[fontinst] +\CTANdirectory{fontname}{info/fontname}[fontname] +\CTANdirectory{fontspec}{macros/latex/contrib/fontspec}[fontspec] +\CTANdirectory{font_selection}{macros/plain/contrib/font_selection}[font-selection] +\CTANdirectory{footbib}{macros/latex/contrib/footbib}[footbib] +\CTANdirectory{footmisc}{macros/latex/contrib/footmisc}[footmisc] +\CTANdirectory{footnpag}{macros/latex/contrib/footnpag}[footnpag] +\CTANdirectory{forarray}{macros/latex/contrib/forarray}[forarray] +\CTANdirectory{forloop}{macros/latex/contrib/forloop}[forloop] +\CTANdirectory{for_tex}{biblio/bibtex/contrib/germbib/for_tex} +\CTANdirectory{fourier}{fonts/fourier-GUT}[fourier] +\CTANdirectory{fouriernc}{fonts/fouriernc}[fouriernc] +\CTANdirectory{framed}{macros/latex/contrib/framed}[framed] +\CTANdirectory{frankenstein}{macros/latex/contrib/frankenstein}[frankenstein] +\CTANdirectory{french-faq}{help/LaTeX-FAQ-francaise} +\CTANdirectory{funnelweb}{web/funnelweb} +\CTANdirectory{futhark}{fonts/futhark} +\CTANdirectory{futhorc}{fonts/futhorc} +\CTANdirectory{fweb}{web/fweb}[fweb] +\CTANdirectory{garamondx}{fonts/garamondx}[garamondx] +\CTANdirectory{gellmu}{support/gellmu}[gellmu] +\CTANdirectory{genfam}{support/genfam} +\CTANdirectory{geometry}{macros/latex/contrib/geometry}[geometry] +\CTANdirectory{germbib}{biblio/bibtex/contrib/germbib} +\CTANdirectory{getoptk}{macros/plain/contrib/getoptk}[getoptk] +\CTANdirectory{gfs}{info/examples/FirstSteps} % gratzer's +\CTANdirectory{gitinfo}{macros/latex/contrib/gitinfo}[gitinfo] +\CTANdirectory{glo+idxtex}{indexing/glo+idxtex}[idxtex] +\CTANdirectory{gmp}{macros/latex/contrib/gmp}[gmp] +\CTANdirectory{gnuplot}{graphics/gnuplot} +\CTANdirectory{go}{fonts/go} +\CTANdirectory{gothic}{fonts/gothic} +\CTANdirectory{graphbase}{support/graphbase} +\CTANdirectory{graphics}{macros/latex/required/graphics}[graphics] +\CTANdirectory{graphics-plain}{macros/plain/graphics}[graphics-pln] +\CTANdirectory{graphicx-psmin}{macros/latex/contrib/graphicx-psmin}[graphicx-psmin] +\CTANdirectory{gray}{fonts/cm/utilityfonts/gray} +\CTANdirectory{greek}{fonts/greek} +\CTANdirectory{greektex}{fonts/greek/greektex} +\CTANdirectory{gsftopk}{fonts/utilities/gsftopk}[gsftopk] +\CTANdirectory{gut}{usergrps/gut} +\CTANdirectory*{gv}{support/gv}[gv] +\CTANdirectory{ha-prosper}{macros/latex/contrib/ha-prosper}[ha-prosper] +\CTANdirectory{half}{fonts/cm/utilityfonts/half} +\CTANdirectory{halftone}{fonts/halftone} +\CTANdirectory{hands}{fonts/hands} +\CTANdirectory{harvard}{macros/latex/contrib/harvard} +\CTANdirectory{harvmac}{macros/plain/contrib/harvmac} +\CTANdirectory{hebrew}{language/hebrew} +\CTANdirectory{help}{help} +\CTANdirectory{here}{macros/latex/contrib/here}[here] +\CTANdirectory{hershey}{fonts/hershey} +\CTANdirectory{hfbright}{fonts/ps-type1/hfbright}[hfbright] +\CTANdirectory{hge}{fonts/hge} +\CTANdirectory{hieroglyph}{fonts/hieroglyph} +\CTANdirectory{highlight}{support/highlight} +\CTANdirectory{histyle}{macros/plain/contrib/histyle} +\CTANdirectory{hp2pl}{support/hp2pl} +\CTANdirectory{hp2xx}{support/hp2xx} +\CTANdirectory{hpgl2ps}{graphics/hpgl2ps} +\CTANdirectory{hptex}{macros/hptex} +\CTANdirectory{hptomf}{support/hptomf} +\CTANdirectory{html2latex}{support/html2latex}[html2latex] +\CTANdirectory{htmlhelp}{info/htmlhelp} +\CTANdirectory{hvfloat}{macros/latex/contrib/hvfloat}[hvfloat] +\CTANdirectory{hvmath}{fonts/micropress/hvmath}[hvmath-fonts] +\CTANdirectory{hyacc-cm}{macros/generic/hyacc-cm} +\CTANdirectory{hyper}{macros/latex/contrib/hyper} +\CTANdirectory{hyperbibtex}{biblio/bibtex/utils/hyperbibtex} +\CTANdirectory{hypernat}{macros/latex/contrib/hypernat}[hypernat] +\CTANdirectory{hyperref}{macros/latex/contrib/hyperref}[hyperref] +\CTANdirectory{hyphen-accent}{language/hyphen-accent} +\CTANdirectory{hyphenat}{macros/latex/contrib/hyphenat}[hyphenat] +\CTANdirectory{hyphenation}{language/hyphenation} +\CTANdirectory{ibygrk}{fonts/greek/ibygrk} +\CTANdirectory{iching}{fonts/iching} +\CTANdirectory{icons}{support/icons} +\CTANdirectory{ifmtarg}{macros/latex/contrib/ifmtarg}[ifmtarg] +\CTANdirectory{ifmslide}{macros/latex/contrib/ifmslide}[ifmslide] +\CTANdirectory{ifoddpage}{macros/latex/contrib/ifoddpage}[ifoddpage] +\CTANdirectory{ifxetex}{macros/generic/ifxetex}[ifxetex] +\CTANdirectory{imakeidx}{macros/latex/contrib/imakeidx}[imakeidx] +\CTANdirectory{imaketex}{support/imaketex} +\CTANdirectory{impact}{web/systems/mac/impact} +\CTANdirectory{import}{macros/latex/contrib/import}[import] +\CTANdirectory{index}{macros/latex/contrib/index}[index] +\CTANdirectory{indian}{language/indian} +\CTANdirectory{infpic}{macros/generic/infpic} +\CTANdirectory{inlinebib}{biblio/bibtex/contrib/inlinebib} +\CTANdirectory{inrsdoc}{macros/inrstex/inrsdoc} +\CTANdirectory{inrsinputs}{macros/inrstex/inrsinputs} +\CTANdirectory{inrstex}{macros/inrstex} +\CTANdirectory{isi2bibtex}{biblio/bibtex/utils/isi2bibtex}[isi2bibtex] +\CTANdirectory{iso-tex}{support/iso-tex} +\CTANdirectory{isodoc}{macros/latex/contrib/isodoc}[isodoc] +\CTANdirectory{ispell}{support/ispell}[ispell] +\CTANdirectory{ite}{support/ite}[ite] +\CTANdirectory{ivd2dvi}{dviware/ivd2dvi} +\CTANdirectory{jadetex}{macros/jadetex} +\CTANdirectory{jemtex2}{systems/msdos/jemtex2} +\CTANdirectory{jknappen-macros}{macros/latex/contrib/jknappen} +\CTANdirectory{jpeg2ps}{support/jpeg2ps}[jpeg2ps] +\CTANdirectory{jspell}{support/jspell}[jspell] +\CTANdirectory{jurabib}{macros/latex/contrib/jurabib}[jurabib] +\CTANdirectory{kamal}{support/kamal} +\CTANdirectory{kane}{dviware/kane} +\CTANdirectory{karta}{fonts/karta} +\CTANdirectory{kd}{fonts/greek/kd} +\CTANdirectory{kelem}{web/spiderweb/src/kelem} +\CTANdirectory{kelly}{fonts/greek/kelly} +\CTANdirectory{klinz}{fonts/klinz} +\CTANdirectory{knit}{web/knit} +\CTANdirectory{knot}{fonts/knot} +\CTANdirectory{knuth}{systems/knuth} +\CTANdirectory{knuth-dist}{systems/knuth/dist}[knuth-dist] +\CTANdirectory{koma-script}{macros/latex/contrib/koma-script}[koma-script] +\CTANdirectory{korean}{fonts/korean} +\CTANdirectory{kpfonts}{fonts/kpfonts}[kpfonts] +\CTANdirectory{kyocera}{dviware/kyocera} +\CTANdirectory{l2a}{support/l2a}[l2a] +\CTANdirectory{l2sl}{language/swedish/slatex/l2sl} +\CTANdirectory*{l2tabu}{info/l2tabu} +\CTANdirectory{l2x}{support/l2x} +\CTANdirectory{la}{fonts/la} +\CTANdirectory{laan}{macros/generic/laan} +\CTANdirectory{laansort}{macros/generic/laansort} +\CTANdirectory{labelcas}{macros/latex/contrib/labelcas}[labelcas] +\CTANdirectory{labels}{macros/latex/contrib/labels} +\CTANdirectory{labtex}{macros/generic/labtex} +\CTANdirectory{lacheck}{support/lacheck}[lacheck] +\CTANdirectory{lametex}{support/lametex} +\CTANdirectory{lamstex}{macros/lamstex} +\CTANdirectory{lastpage}{macros/latex/contrib/lastpage}[lastpage] +\CTANdirectory{latex}{macros/latex/base} +\CTANdirectory{latex-course}{info/latex-course}[latex-course] +\CTANdirectory{latex-essential}{info/latex-essential} +\CTANdirectory{latex2e-help-texinfo}{info/latex2e-help-texinfo}[latex2e-help-texinfo] +\CTANdirectory{latex4jed}{support/jed}[latex4jed] +\CTANdirectory*{latex-tds}{macros/latex/contrib/latex-tds}[latex-tds] +\CTANdirectory*{latex2html}{support/latex2html}[latex2html] +\CTANdirectory{latex2rtf}{support/latex2rtf} +\CTANdirectory{latexdiff}{support/latexdiff}[latexdiff] +\CTANdirectory{latexdoc}{macros/latex/doc}[latex-doc] +\CTANdirectory{latexhlp}{systems/atari/latexhlp} +\CTANdirectory{latexmake}{support/latexmake}[latexmake] +\CTANdirectory{latex-make}{support/latex-make}[latex-make] +\CTANdirectory{latex_maker}{support/latex_maker}[mk] +\CTANdirectory{latexmk}{support/latexmk}[latexmk] +\CTANdirectory{lecturer}{macros/generic/lecturer}[lecturer] +\CTANdirectory{ledmac}{macros/latex/contrib/ledmac}[ledmac] +\CTANdirectory{lettrine}{macros/latex/contrib/lettrine}[lettrine] +\CTANdirectory{levy}{fonts/greek/levy} +\CTANdirectory{lextex}{macros/plain/contrib/lextex} +\CTANdirectory{lgc}{info/examples/lgc} +\CTANdirectory{lgrind}{support/lgrind}[lgrind] +\CTANdirectory{libertine}{fonts/libertine}[libertine] +\CTANdirectory{libgreek}{macros/latex/contrib/libgreek}[libgreek] +\CTANdirectory{lilyglyphs}{macros/luatex/latex/lilyglyphs} +\CTANdirectory{lineno}{macros/latex/contrib/lineno}[lineno] +\CTANdirectory{lipsum}{macros/latex/contrib/lipsum}[lipsum] +\CTANdirectory{listbib}{macros/latex/contrib/listbib}[listbib] +\CTANdirectory{listings}{macros/latex/contrib/listings}[listings] +\CTANdirectory{lm}{fonts/lm}[lm] +\CTANdirectory{lm-math}{fonts/lm-math}[lm-math] +\CTANdirectory{lollipop}{macros/lollipop}[lollipop] +\CTANdirectory{lookbibtex}{biblio/bibtex/utils/lookbibtex} +\CTANdirectory{lpic}{macros/latex/contrib/lpic}[lpic] +\CTANdirectory{lsedit}{support/lsedit} +\CTANdirectory{lshort}{info/lshort/english}[lshort-english] +\CTANdirectory*{lshort-parent}{info/lshort}[lshort] +\CTANdirectory{ltx3pub}{info/ltx3pub}[ltx3pub] +\CTANdirectory{ltxindex}{macros/latex/contrib/ltxindex}[ltxindex] +\CTANdirectory{luatex}{systems/luatex}[luatex] +\CTANdirectory{lucida}{fonts/psfonts/bh/lucida}[lucida] +\CTANdirectory{lucida-psnfss}{macros/latex/contrib/psnfssx/lucidabr}[psnfssx-luc] +\CTANdirectory{luximono}{fonts/LuxiMono}[luximono] +\CTANdirectory{lwc}{info/examples/lwc} +\CTANdirectory{ly1}{fonts/psfonts/ly1}[ly1] +\CTANdirectory*{mactex}{systems/mac/mactex}[mactex] +\CTANdirectory{macros2e}{info/macros2e}[macros2e] +\CTANdirectory{mactotex}{graphics/mactotex} +\CTANdirectory{mailing}{macros/latex/contrib/mailing} +\CTANdirectory{make_latex}{support/make_latex}[make-latex] +\CTANdirectory{makeafm.dir}{fonts/utilities/t1tools/makeafm.dir} +\CTANdirectory{makecell}{macros/latex/contrib/makecell}[makecell] +\CTANdirectory{makedtx}{support/makedtx}[makedtx] +\CTANdirectory{makeindex}{indexing/makeindex}[makeindex] +\CTANdirectory{makeinfo}{macros/texinfo/contrib/texinfo-hu/texinfo/makeinfo} +\CTANdirectory{makeprog}{support/makeprog}\CTANdirectory{maketexwork}{info/maketexwork} +\CTANdirectory{malayalam}{language/malayalam} +\CTANdirectory{malvern}{fonts/malvern} +\CTANdirectory{mapleweb}{web/maple/mapleweb} +\CTANdirectory{marvosym-fonts}{fonts/marvosym} +\CTANdirectory{mathabx}{fonts/mathabx}[mathabx] +\CTANdirectory{mathabx-type1}{fonts/ps-type1/mathabx}[mathabx-type1] +\CTANdirectory{mathastext}{macros/latex/contrib/mathastext}[mathastext] +\CTANdirectory*{mathdesign}{fonts/mathdesign}[mathdesign] +\CTANdirectory{mathdots}{macros/generic/mathdots} +\CTANdirectory{mathematica}{macros/mathematica} +\CTANdirectory{mathpazo}{fonts/mathpazo}[mathpazo] +\CTANdirectory{mathsci2bibtex}{biblio/bibtex/utils/mathsci2bibtex} +\CTANdirectory{mathspic}{graphics/mathspic}[mathspic] +\CTANdirectory{mcite}{macros/latex/contrib/mcite}[mcite] +\CTANdirectory{mciteplus}{macros/latex/contrib/mciteplus}[mciteplus] +\CTANdirectory{mdframed}{macros/latex/contrib/mdframed}[mdframed] +\CTANdirectory{mdsymbol}{fonts/mdsymbol}[mdsymbol] +\CTANdirectory{mdwtools}{macros/latex/contrib/mdwtools}[mdwtools] +\CTANdirectory{memdesign}{info/memdesign}[memdesign] +\CTANdirectory{memoir}{macros/latex/contrib/memoir}[memoir] +\CTANdirectory{messtex}{support/messtex} +\CTANdirectory{metalogo}{macros/latex/contrib/metalogo}[metalogo] +\CTANdirectory{metapost}{graphics/metapost} +\CTANdirectory{metatype1}{fonts/utilities/metatype1}[metatype1] +\CTANdirectory{mf2ps}{fonts/utilities/mf2ps} +\CTANdirectory{mf2pt1}{support/mf2pt1}[mf2pt1] +\CTANdirectory{mf_optimized_kerning}{fonts/cm/mf_optimized_kerning} +\CTANdirectory{mfbook}{fonts/cm/utilityfonts/mfbook} +\CTANdirectory{mff-29}{fonts/utilities/mff-29} +\CTANdirectory{mffiles}{language/telugu/mffiles} +\CTANdirectory{mflogo}{macros/latex/contrib/mflogo}[mflogo] +\CTANdirectory{mfnfss}{macros/latex/contrib/mfnfss} +\CTANdirectory{mfpic}{graphics/mfpic} +\CTANdirectory{mfware}{systems/knuth/dist/mfware} +\CTANdirectory{mh}{macros/latex/contrib/mh}[mh] +\CTANdirectory{miktex}{systems/win32/miktex}[miktex] +\CTANdirectory{microtype}{macros/latex/contrib/microtype}[microtype] +\CTANdirectory{midi2tex}{support/midi2tex} +\CTANdirectory{midnight}{macros/generic/midnight} +\CTANdirectory{minionpro}{fonts/minionpro}[minionpro] +\CTANdirectory{minitoc}{macros/latex/contrib/minitoc}[minitoc] +\CTANdirectory{minted}{macros/latex/contrib/minted}[minted] +\CTANdirectory{mkjobtexmf}{support/mkjobtexmf}[mkjobtexmf] +\CTANdirectory{mma2ltx}{graphics/mma2ltx} +\CTANdirectory{mmap}{macros/latex/contrib/mmap} +\CTANdirectory{mnsymbol}{fonts/mnsymbol}[mnsymbol] +\CTANdirectory{mnu}{support/mnu} +\CTANdirectory{models}{macros/text1/models} +\CTANdirectory{moderncv}{macros/latex/contrib/moderncv}[moderncv] +\CTANdirectory{modes}{fonts/modes} +\CTANdirectory{morefloats}{macros/latex/contrib/morefloats}[morefloats] +\CTANdirectory{moreverb}{macros/latex/contrib/moreverb}[moreverb] +\CTANdirectory{morewrites}{macros/latex/contrib/morewrites}[morewrites] +\CTANdirectory{mparhack}{macros/latex/contrib/mparhack}[mparhack] +\CTANdirectory{mpgraphics}{macros/latex/contrib/mpgraphics}[mpgraphics] +\CTANdirectory{mps2eps}{support/mps2eps} +\CTANdirectory{ms}{macros/latex/contrib/ms}[ms] +\CTANdirectory{msdos}{systems/msdos} +\CTANdirectory{msx2msa}{fonts/vf-files/msx2msa} +\CTANdirectory{msym}{fonts/msym} +\CTANdirectory{mtp2lite}{fonts/mtp2lite}[mtp2lite] +\CTANdirectory{m-tx}{support/m-tx}[m-tx] +\CTANdirectory{multenum}{macros/latex/contrib/multenum}[multenum] +\CTANdirectory{multibbl}{macros/latex/contrib/multibbl}[multibbl] +\CTANdirectory{multibib}{macros/latex/contrib/multibib}[multibib] +\CTANdirectory{multido}{macros/generic/multido}[multido] +\CTANdirectory{multirow}{macros/latex/contrib/multirow}[multirow] +\CTANdirectory{musictex}{macros/musictex}[musictex] +\CTANdirectory{musixtex-egler}{obsolete/macros/musixtex/egler} +\CTANdirectory{musixtex-fonts}{fonts/musixtex-fonts}[musixtex-fonts] +\CTANdirectory{musixtex}{macros/musixtex}[musixtex] +\CTANdirectory{mutex}{macros/mtex} +\CTANdirectory{mwe}{macros/latex/contrib/mwe}[mwe] +\CTANdirectory{mxedruli}{fonts/georgian/mxedruli} +\CTANdirectory{nag}{macros/latex/contrib/nag}[nag] +\CTANdirectory{natbib}{macros/latex/contrib/natbib}[natbib] +\CTANdirectory{navigator}{macros/generic/navigator}[navigator] +\CTANdirectory{nawk}{web/spiderweb/src/nawk} +\CTANdirectory{ncctools}{macros/latex/contrib/ncctools}[ncctools] +\CTANdirectory{needspace}{macros/latex/contrib/needspace}[needspace] +\CTANdirectory{newalg}{macros/latex/contrib/newalg}[newalg] +\CTANdirectory{newcommand}{support/newcommand}[newcommand] +\CTANdirectory{newlfm}{macros/latex/contrib/newlfm}[newlfm] +\CTANdirectory{newsletr}{macros/plain/contrib/newsletr} +\CTANdirectory{newpx}{fonts/newpx}[newpx] +\CTANdirectory{newtx}{fonts/newtx}[newtx] +\CTANdirectory{newverbs}{macros/latex/contrib/newverbs}[newverbs] +\CTANdirectory{nedit-latex}{support/NEdit-LaTeX-Extensions} +\CTANdirectory{nonumonpart}{macros/latex/contrib/nonumonpart}[nonumonpart] +\CTANdirectory{nopageno}{macros/latex/contrib/nopageno}[nopageno] +\CTANdirectory{norbib}{biblio/bibtex/contrib/norbib} +\CTANdirectory{notoccite}{macros/latex/contrib/notoccite}[notoccite] +\CTANdirectory{noweb}{web/noweb}[noweb] +\CTANdirectory{ntg}{usergrps/ntg} +\CTANdirectory{ntgclass}{macros/latex/contrib/ntgclass}[ntgclass] +\CTANdirectory{ntheorem}{macros/latex/contrib/ntheorem}[ntheorem] +\CTANdirectory{nts-l}{digests/nts-l} +\CTANdirectory{nts}{systems/nts} +\CTANdirectory{numprint}{macros/latex/contrib/numprint}[numprint] +\CTANdirectory{nuweb}{web/nuweb} +\CTANdirectory{nuweb0.87b}{web/nuweb/nuweb0.87b} +\CTANdirectory{nuweb_ami}{web/nuweb/nuweb_ami} +\CTANdirectory{oberdiek}{macros/latex/contrib/oberdiek}[oberdiek] +\CTANdirectory{objectz}{macros/latex/contrib/objectz} +\CTANdirectory{ocr-a}{fonts/ocr-a} +\CTANdirectory{ocr-b}{fonts/ocr-b} +\CTANdirectory{ofs}{macros/generic/ofs}[ofs] +\CTANdirectory{ogham}{fonts/ogham} +\CTANdirectory{ogonek}{macros/latex/contrib/ogonek} +\CTANdirectory{okuda}{fonts/okuda} +\CTANdirectory{omega}{systems/omega} +\CTANdirectory{optional}{macros/latex/contrib/optional}[optional] +\CTANdirectory{os2}{systems/os2} +\CTANdirectory{osmanian}{fonts/osmanian} +\CTANdirectory{overpic}{macros/latex/contrib/overpic}[overpic] +\CTANdirectory{oztex}{systems/mac/oztex} +\CTANdirectory{page}{support/lametex/page} +\CTANdirectory{palladam}{language/tamil/palladam} +\CTANdirectory{pandora}{fonts/pandora} +\CTANdirectory{paralist}{macros/latex/contrib/paralist}[paralist] +\CTANdirectory{parallel}{macros/latex/contrib/parallel}[parallel] +\CTANdirectory{parskip}{macros/latex/contrib/parskip}[parskip] +\CTANdirectory{passivetex}{macros/xmltex/contrib/passivetex}[passivetex] +\CTANdirectory{patchcmd}{macros/latex/contrib/patchcmd}[patchcmd] +\CTANdirectory{path}{macros/generic/path}[path] +\CTANdirectory{pbox}{macros/latex/contrib/pbox}[pbox] +\CTANdirectory{pcwritex}{support/pcwritex} +\CTANdirectory{pdcmac}{macros/plain/contrib/pdcmac}[pdcmac] +\CTANdirectory{pdfcomment}{macros/latex/contrib/pdfcomment}[pdfcomment] +\CTANdirectory{pdfpages}{macros/latex/contrib/pdfpages}[pdfpages] +\CTANdirectory{pdfrack}{support/pdfrack}[pdfrack] +\CTANdirectory{pdfscreen}{macros/latex/contrib/pdfscreen}[pdfscreen] +\CTANdirectory{pdftex}{systems/pdftex}[pdftex] +\CTANdirectory{pdftex-graphics}{graphics/metapost/contrib/tools/mptopdf}[pdf-mps-supp] +\CTANdirectory{pdftricks}{graphics/pdftricks}[pdftricks] +\CTANdirectory{pdftricks2}{graphics/pdftricks2}[pdftricks2] +\CTANdirectory{pgf}{graphics/pgf/base}[pgf] +\CTANdirectory{phonetic}{fonts/phonetic} +\CTANdirectory{phy-bstyles}{biblio/bibtex/contrib/phy-bstyles} +\CTANdirectory{physe}{macros/physe} +\CTANdirectory{phyzzx}{macros/phyzzx} +\CTANdirectory{picinpar}{macros/latex209/contrib/picinpar}[picinpar] +\CTANdirectory{picins}{macros/latex209/contrib/picins}[picins] +\CTANdirectory{pict2e}{macros/latex/contrib/pict2e}[pict2e] +\CTANdirectory{pictex}{graphics/pictex}[pictex] +\CTANdirectory{pictex-addon}{graphics/pictex/addon}[pictexwd] +\CTANdirectory{pictex-converter}{support/pictex-converter} +\CTANdirectory{pictex-summary}{info/pictex/summary}[pictexsum] +\CTANdirectory{pinlabel}{macros/latex/contrib/pinlabel}[pinlabel] +\CTANdirectory{pkbbox}{fonts/utilities/pkbbox} +\CTANdirectory{pkfix}{support/pkfix}[pkfix] +\CTANdirectory{pkfix-helper}{support/pkfix-helper}[pkfix-helper] +\CTANdirectory{placeins}{macros/latex/contrib/placeins}[placeins] +\CTANdirectory{plain}{macros/plain/base}[plain] +\CTANdirectory*{plastex}{support/plastex}[plastex] +\CTANdirectory{plnfss}{macros/plain/plnfss}[plnfss] +\CTANdirectory{plttopic}{support/plttopic} +\CTANdirectory{pmtex}{systems/os2/pmtex} +\CTANdirectory{pmx}{support/pmx} +\CTANdirectory{l3experimental}{macros/latex/contrib/l3experimental}[l3experimental] +\CTANdirectory{l3kernel}{macros/latex/contrib/l3kernel}[l3kernel] +\CTANdirectory{l3packages}{macros/latex/contrib/l3packages}[l3packages] +\CTANdirectory{polish}{language/polish} +\CTANdirectory{polyglossia}{macros/latex/contrib/polyglossia}[polyglossia] +\CTANdirectory{poorman}{fonts/poorman} +\CTANdirectory{portuguese}{language/portuguese} +\CTANdirectory{poster}{macros/generic/poster} +\CTANdirectory{powerdot}{macros/latex/contrib/powerdot}[powerdot] +\CTANdirectory{pp}{support/pp} +\CTANdirectory{preprint}{macros/latex/contrib/preprint}[preprint] +\CTANdirectory{present}{macros/plain/contrib/present}[present] +\CTANdirectory{preview}{macros/latex/contrib/preview}[preview] +\CTANdirectory{print-fine}{support/print-fine} +\CTANdirectory{printbib}{biblio/bibtex/utils/printbib} +\CTANdirectory{printlen}{macros/latex/contrib/printlen}[printlen] +\CTANdirectory{printsamples}{fonts/utilities/mf2ps/doc/printsamples} +\CTANdirectory{program}{macros/latex/contrib/program}[program] +\CTANdirectory{proofs}{macros/generic/proofs} +\CTANdirectory*{protext}{systems/win32/protext}[protext] +\CTANdirectory{ppower4}{support/ppower4}[ppower4] +\CTANdirectory{ppr-prv}{macros/latex/contrib/ppr-prv}[ppr-prv] +\CTANdirectory{prosper}{macros/latex/contrib/prosper}[prosper] +\CTANdirectory{ps-type3}{fonts/cm/ps-type3} +\CTANdirectory{ps2mf}{fonts/utilities/ps2mf} +\CTANdirectory{ps2pk}{fonts/utilities/ps2pk}[ps2pk] +\CTANdirectory{psbook}{systems/msdos/dviware/psbook} +\CTANdirectory{psbox}{macros/generic/psbox} +\CTANdirectory{pseudocode}{macros/latex/contrib/pseudocode}[pseudocode] +\CTANdirectory{psfig}{graphics/psfig}[psfig] +\CTANdirectory{psfrag}{macros/latex/contrib/psfrag}[psfrag] +\CTANdirectory{psfragx}{macros/latex/contrib/psfragx}[psfragx] +\CTANdirectory{psizzl}{macros/psizzl} +\CTANdirectory{psnfss}{macros/latex/required/psnfss}[psnfss] +\CTANdirectory{psnfss-addons}{macros/latex/contrib/psnfss-addons} +\CTANdirectory{psnfssx-mathtime}{macros/latex/contrib/psnfssx/mathtime} +\CTANdirectory{pspicture}{macros/latex/contrib/pspicture}[pspicture] +\CTANdirectory{psprint}{dviware/psprint} +\CTANdirectory{pst-layout}{graphics/pstricks/contrib/pst-layout}[pst-layout] +\CTANdirectory{pst-pdf}{macros/latex/contrib/pst-pdf}[pst-pdf] +\CTANdirectory{pstoedit}{support/pstoedit}[pstoedit] +\CTANdirectory{pstricks}{graphics/pstricks}[pstricks] +\CTANdirectory{psutils}{support/psutils} +\CTANdirectory{punk}{fonts/punk} +\CTANdirectory{purifyeps}{support/purifyeps}[purifyeps] +\CTANdirectory{pxfonts}{fonts/pxfonts}[pxfonts] +\CTANdirectory{qdtexvpl}{fonts/utilities/qdtexvpl}[qdtexvpl] +\CTANdirectory{qfig}{support/qfig} +\CTANdirectory{quotchap}{macros/latex/contrib/quotchap}[quotchap] +\CTANdirectory{r2bib}{biblio/bibtex/utils/r2bib}[r2bib] +\CTANdirectory{rcs}{macros/latex/contrib/rcs}[rcs] +\CTANdirectory{rcsinfo}{macros/latex/contrib/rcsinfo}[rcsinfo] +\CTANdirectory{realcalc}{macros/generic/realcalc} +\CTANdirectory{refcheck}{macros/latex/contrib/refcheck}[refcheck] +\CTANdirectory{refer-tools}{biblio/bibtex/utils/refer-tools} +\CTANdirectory{refman}{macros/latex/contrib/refman}[refman] +\CTANdirectory{regexpatch}{macros/latex/contrib/regexpatch}[regexpatch] +\CTANdirectory{revtex4-1}{macros/latex/contrib/revtex}[revtex4-1] +\CTANdirectory{rnototex}{support/rnototex}[rnototex] +\CTANdirectory{rotating}{macros/latex/contrib/rotating}[rotating] +\CTANdirectory{rotfloat}{macros/latex/contrib/rotfloat}[rotfloat] +\CTANdirectory{rsfs}{fonts/rsfs}[rsfs] +\CTANdirectory{rsfso}{fonts/rsfso}[rsfso] +\CTANdirectory{rtf2tex}{support/rtf2tex}[rtf2tex] +\CTANdirectory{rtf2html}{support/rtf2html} +\CTANdirectory{rtf2latex}{support/rtf2latex} +\CTANdirectory{rtf2latex2e}{support/rtf2latex2e}[rtf2latex2e] +\CTANdirectory{rtflatex}{support/rtflatex} +\CTANdirectory{rtfutils}{support/tex2rtf/rtfutils} +\CTANdirectory{rumgraph}{support/rumgraph} +\CTANdirectory{sam2p}{graphics/sam2p}[sam2p] +\CTANdirectory{sansmath}{macros/latex/contrib/sansmath}[sansmath] +\CTANdirectory{sauerj}{macros/latex/contrib/sauerj}[sauerj] +\CTANdirectory{savetrees}{macros/latex/contrib/savetrees}[savetrees] +\CTANdirectory{schemeweb}{web/schemeweb}[schemeweb] +\CTANdirectory{sciposter}{macros/latex/contrib/sciposter}[sciposter] +\CTANdirectory{sectsty}{macros/latex/contrib/sectsty}[sectsty] +\CTANdirectory{selectp}{macros/latex/contrib/selectp}[selectp] +\CTANdirectory{seminar}{macros/latex/contrib/seminar}[seminar] +\CTANdirectory{shade}{macros/generic/shade}[shade] +\CTANdirectory{shorttoc}{macros/latex/contrib/shorttoc}[shorttoc] +\CTANdirectory{showexpl}{macros/latex/contrib/showexpl}[showexpl] +\CTANdirectory{showlabels}{macros/latex/contrib/showlabels}[showlabels] +\CTANdirectory{slashbox}{macros/latex/contrib/slashbox}[slashbox] +\CTANdirectory{smallcap}{macros/latex/contrib/smallcap}[smallcap] +\CTANdirectory{smartref}{macros/latex/contrib/smartref}[smartref] +\CTANdirectory{snapshot}{macros/latex/contrib/snapshot}[snapshot] +\CTANdirectory{soul}{macros/latex/contrib/soul}[soul] +\CTANdirectory{spain}{biblio/bibtex/contrib/spain} +\CTANdirectory{spelling}{macros/luatex/generic/spelling}[spelling] +\CTANdirectory{spiderweb}{web/spiderweb}[spiderweb] +\CTANdirectory{splitbib}{macros/latex/contrib/splitbib}[splitbib] +\CTANdirectory{splitindex}{macros/latex/contrib/splitindex}[splitindex] +\CTANdirectory{standalone}{macros/latex/contrib/standalone}[standalone] +\CTANdirectory{stix}{fonts/stix}[stix] +\CTANdirectory{sttools}{macros/latex/contrib/sttools}[sttools] +\CTANdirectory{sty2dtx}{support/sty2dtx}[sty2dtx] +\CTANdirectory{subdepth}{macros/latex/contrib/subdepth}[subdepth] +\CTANdirectory{subfig}{macros/latex/contrib/subfig}[subfig] +\CTANdirectory{subfiles}{macros/latex/contrib/subfiles}[subfiles] +\CTANdirectory{supertabular}{macros/latex/contrib/supertabular}[supertabular] +\CTANdirectory{svn}{macros/latex/contrib/svn}[svn] +\CTANdirectory{svninfo}{macros/latex/contrib/svninfo}[svninfo] +\CTANdirectory{swebib}{biblio/bibtex/contrib/swebib} +\CTANdirectory*{symbols}{info/symbols/comprehensive}[comprehensive] +\CTANdirectory{tablefootnote}{macros/latex/contrib/tablefootnote}[tablefootnote] +\CTANdirectory{tabls}{macros/latex/contrib/tabls}[tabls] +\CTANdirectory{tabulary}{macros/latex/contrib/tabulary}[tabulary] +\CTANdirectory{tagging}{macros/latex/contrib/tagging} +\CTANdirectory{talk}{macros/latex/contrib/talk}[talk] +\CTANdirectory{tcolorbox}{macros/latex/contrib/tcolorbox}[tcolorbox] +\CTANdirectory{tds}{tds}[tds] +\CTANdirectory{ted}{macros/latex/contrib/ted}[ted] +\CTANdirectory*{testflow}{macros/latex/contrib/IEEEtran/testflow}[testflow] +\CTANdirectory*{tetex}{obsolete/systems/unix/teTeX/current/distrib}[tetex] +\CTANdirectory{tex2mail}{support/tex2mail}[tex2mail] +\CTANdirectory{tex2rtf}{support/tex2rtf}[tex2rtf] +\CTANdirectory{texbytopic}{info/texbytopic}[texbytopic] +\CTANdirectory{texcnvfaq}{help/wp-conv}[wp-conv] +\CTANdirectory{texcount}{support/texcount}[texcount] +\CTANdirectory{texdef}{support/texdef}[texdef] +\CTANdirectory{tex-gpc}{systems/unix/tex-gpc}[tex-gpc] +\CTANdirectory{tex-gyre}{fonts/tex-gyre}[tex-gyre] +\CTANdirectory{tex-gyre-math}{fonts/tex-gyre-math}[tex-gyre-math] +\CTANdirectory{tex-overview}{info/tex-overview}[tex-overview] +\CTANdirectory*{texhax}{digests/texhax}[texhax] +\CTANdirectory{texi2html}{support/texi2html}[texi2html] +\CTANdirectory{texindex}{indexing/texindex}[texindex] +\CTANdirectory{texinfo}{macros/texinfo/texinfo}[texinfo] +\CTANdirectory*{texlive}{systems/texlive}[texlive] +\CTANdirectory*{texmacs}{support/TeXmacs}[texmacs] +\CTANdirectory*{texniccenter}{systems/win32/TeXnicCenter}[texniccenter] +\CTANdirectory{texpower}{macros/latex/contrib/texpower}[texpower] +\CTANdirectory{texshell}{systems/msdos/texshell}[texshell] +\CTANdirectory{texsis}{macros/texsis}[texsis] +\CTANdirectory{textcase}{macros/latex/contrib/textcase}[textcase] +\CTANdirectory{textfit}{macros/latex/contrib/textfit}[textfit] +\CTANdirectory{textmerg}{macros/latex/contrib/textmerg}[textmerg] +\CTANdirectory{textpos}{macros/latex/contrib/textpos}[textpos] +\CTANdirectory{textures_figs}{systems/mac/textures_figs} +\CTANdirectory{texutils}{systems/atari/texutils} +\CTANdirectory{tgrind}{support/tgrind}[tgrind] +\CTANdirectory{threeparttable}{macros/latex/contrib/threeparttable}[threeparttable] +\CTANdirectory{threeparttablex}{macros/latex/contrib/threeparttablex}[threeparttablex] +\CTANdirectory{tib}{biblio/tib}[tib] +\CTANdirectory{tiny_c2l}{support/tiny_c2l}[tinyc2l] +\CTANdirectory{tip}{info/examples/tip} +\CTANdirectory{titleref}{macros/latex/contrib/titleref}[titleref] +\CTANdirectory{titlesec}{macros/latex/contrib/titlesec}[titlesec] +\CTANdirectory{titling}{macros/latex/contrib/titling}[titling] +\CTANdirectory{tlc2}{info/examples/tlc2} +\CTANdirectory{tmmath}{fonts/micropress/tmmath}[tmmath] +\CTANdirectory{tocbibind}{macros/latex/contrib/tocbibind}[tocbibind] +\CTANdirectory{tocloft}{macros/latex/contrib/tocloft}[tocloft] +\CTANdirectory{tocvsec2}{macros/latex/contrib/tocvsec2}[tocvsec2] +\CTANdirectory{totpages}{macros/latex/contrib/totpages}[totpages] +\CTANdirectory{tr2latex}{support/tr2latex}[tr2latex] +\CTANdirectory{transfig}{graphics/transfig}[transfig] +\CTANdirectory{try}{support/try}[try] +\CTANdirectory{tt2001}{fonts/ps-type1/tt2001}[tt2001] +\CTANdirectory{tth}{support/tth/dist}[tth] +\CTANdirectory{ttn}{digests/ttn} +\CTANdirectory{tug}{usergrps/tug} +\CTANdirectory{tugboat}{digests/tugboat} +\CTANdirectory{tweb}{web/tweb}[tweb] +\CTANdirectory{txfonts}{fonts/txfonts}[txfonts] +\CTANdirectory{txfontsb}{fonts/txfontsb}[txfontsb] +\CTANdirectory{txtdist}{support/txt}[txt] +\CTANdirectory{type1cm}{macros/latex/contrib/type1cm}[type1cm] +\CTANdirectory{ucharclasses}{macros/xetex/latex/ucharclasses}[ucharclasses] +\CTANdirectory{ucs}{macros/latex/contrib/ucs}[ucs] +\CTANdirectory{ucthesis}{macros/latex/contrib/ucthesis}[ucthesis] +\CTANdirectory{uktex}{digests/uktex} +\CTANdirectory{ulem}{macros/latex/contrib/ulem}[ulem] +\CTANdirectory{umrand}{macros/generic/umrand} +\CTANdirectory{underscore}{macros/latex/contrib/underscore}[underscore] +\CTANdirectory{unicode-math}{macros/latex/contrib/unicode-math}[unicode-math] +\CTANdirectory{unix}{systems/unix} +\CTANdirectory{unpacked}{macros/latex/unpacked} +\CTANdirectory{untex}{support/untex}[untex] +\CTANdirectory{url}{macros/latex/contrib/url}[url] +\CTANdirectory{urlbst}{biblio/bibtex/contrib/urlbst}[urlbst] +\CTANdirectory{urw-base35}{fonts/urw/base35}[urw-base35] +\CTANdirectory{urwchancal}{fonts/urwchancal}[urwchancal] +\CTANdirectory{usebib}{macros/latex/contrib/usebib}[usebib] +\CTANdirectory{utopia}{fonts/utopia}[utopia] +\CTANdirectory{varisize}{macros/plain/contrib/varisize}[varisize] +\CTANdirectory{varwidth}{macros/latex/contrib/varwidth}[varwidth] +\CTANdirectory{vc}{support/vc}[vc] +\CTANdirectory{verbatim}{macros/latex/required/tools}[verbatim] +\CTANdirectory{verbatimbox}{macros/latex/contrib/verbatimbox}[verbatimbox] +\CTANdirectory{verbdef}{macros/latex/contrib/verbdef}[verbdef] +\CTANdirectory{version}{macros/latex/contrib/version}[version] +\CTANdirectory{vertbars}{macros/latex/contrib/vertbars}[vertbars] +\CTANdirectory{vita}{macros/latex/contrib/vita}[vita] +\CTANdirectory{vmargin}{macros/latex/contrib/vmargin}[vmargin] +\CTANdirectory{vmspell}{support/vmspell}[vmspell] +\CTANdirectory{vpp}{support/view_print_ps_pdf}[vpp] +\CTANdirectory{vruler}{macros/latex/contrib/vruler}[vruler] +\CTANdirectory{vtex-common}{systems/vtex/common} +\CTANdirectory{vtex-linux}{systems/vtex/linux}[vtex-free] +\CTANdirectory{vtex-os2}{systems/vtex/os2}[vtex-free] +\CTANdirectory{wallpaper}{macros/latex/contrib/wallpaper}[wallpaper] +\CTANdirectory{was}{macros/latex/contrib/was}[was] +\CTANdirectory{wd2latex}{support/wd2latex} +\CTANdirectory{web}{systems/knuth/dist/web}[web] +\CTANdirectory*{winedt}{systems/win32/winedt}[winedt] +\CTANdirectory{wordcount}{macros/latex/contrib/wordcount}[wordcount] +\CTANdirectory{wp2latex}{support/wp2latex}[wp2latex] +\CTANdirectory{wrapfig}{macros/latex/contrib/wrapfig}[wrapfig] +\CTANdirectory{xargs}{macros/latex/contrib/xargs}[xargs] +\CTANdirectory{xbibfile}{biblio/bibtex/utils/xbibfile}[xbibfile] +\CTANdirectory{xcolor}{macros/latex/contrib/xcolor}[xcolor] +\CTANdirectory{xcomment}{macros/generic/xcomment}[xcomment] +\CTANdirectory*{xdvi}{dviware/xdvi}[xdvi] +\CTANdirectory{xecjk}{macros/xetex/latex/xecjk}[xecjk] +\CTANdirectory{xetexref}{info/xetexref}[xetexref] +\CTANdirectory*{xfig}{graphics/xfig}[xfig] +\CTANdirectory*{xindy}{indexing/xindy}[xindy] +\CTANdirectory{xits}{fonts/xits}[xits] +\CTANdirectory{xkeyval}{macros/latex/contrib/xkeyval}[xkeyval] +\CTANdirectory{xmltex}{macros/xmltex/base}[xmltex] +\CTANdirectory*{xpdf}{support/xpdf}[xpdf] +\CTANdirectory{xtab}{macros/latex/contrib/xtab}[xtab] +\CTANdirectory{xwatermark}{macros/latex/contrib/xwatermark}[xwatermark] +\CTANdirectory{yagusylo}{macros/latex/contrib/yagusylo}[yagusylo] +\CTANdirectory{yhmath}{fonts/yhmath}[yhmath] +\CTANdirectory{zefonts}{fonts/zefonts}[zefonts] +\CTANdirectory{ziffer}{macros/latex/contrib/ziffer}[ziffer] +\CTANdirectory{zoon-mp-eg}{info/metapost/examples}[metapost-examples] +\CTANdirectory{zwpagelayout}{macros/latex/contrib/zwpagelayout}[zwpagelayout] +\endinput diff --git a/help/uk-tex-faq/faq-adj-types.tex b/help/uk-tex-faq/faq-adj-types.tex new file mode 100644 index 0000000000..0906f918f4 --- /dev/null +++ b/help/uk-tex-faq/faq-adj-types.tex @@ -0,0 +1,3671 @@ +% $Id: faq-adj-types.tex,v 1.50 2014/01/22 17:29:03 rf10 Exp $ + +\section{Adjusting the typesetting} + +\subsection{Alternative document classes} + +\Question[Q-replstdcls]{Replacing the standard classes} + +People are forever concocting classes that replace the standard ones: +the present author produced an \Class{ukart} class that used the +\Package{sober} package, and a few British-specific things (such as +appear in the \Package{babel} package's British-english +specialisation) in the 1980s, which is still occasionally used. + +Similar public efforts were available well back in the days of +\LaTeXo{}: a notable example, whose pleasing designs seem not to have +changed much over all that time, is the \Class{ntgclass} bundle. +Each of the standard classes is replaced by a selection of classes, +named in Dutch, sometimes with a single numeric digit attached. So we +have classes \Class{artikel2}, \Class{rapport1}, \Class{boek3} and +\Class{brief}. These classes are moderately well documented in +English. + +The \Class{KOMA-script} bundle (classes named \Class{scr...}) are a +strong current contender. They are actively supported and are subject +to sensitive development; they are comprehensive in their coverage of +significant typesetting issues; they produce good-looking output and +they are well documented in both English (\Package{scrguien} in the +distribution) and German (\Package{scrguide} in the distribution). + +The other comparable class is \Class{memoir}. This aims to replace +\Class{book} and \Class{report} classes directly, and (like +\Class{KOMA-script}) is comprehensive in its coverage of small issues. +\Class{Memoir}'s documentation (\Package{memman}) is very highly +spoken of, and its lengthy introductory section is regularly +recommended as a tutorial on typesetting. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}KOMA-script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\item[\nothtml{\rmfamily}NTGclass bundle]\CTANref{ntgclass} +\item[sober.sty]\CTANref{sober} +\end{ctanrefs} + +\Question[Q-slidecls]{Producing presentations (including slides)} + +Lamport's original \LaTeX{} had a separate program (Sli\TeX{}) for +producing slides; it dates from the age when colour effects were +produced by printing separate slides in different-coloured inks, and +overlaying them, and was just about acceptable back then. When +\LaTeXe{} came along, the reason Sli\TeX{} had to be a separate +program went away, and its functionality was supplied by the +\Class{slides} class. While this makes life a little easier for +system administrators, it does nothing for the inferior functionality +of the class: no-one who ``knows'' uses \Class{slides} nowadays. + +The `classic' alternatives have been \Class{seminar} and \Class{foils} +(originally known as Foil\TeX{}). Both were originally designed to +produce output on acetate foils, though subsequent work has provided +environments in which they can be used with screen projectors (see +below). + +The advent of Microsoft \ProgName{PowerPoint} (feeble though early +versions of it were) has created a demand for ``dynamic'' slides~--- +images that develop their content in a more elaborate fashion than by +merely replacing one foil with the next in the way that was the norm +when \Class{slides}, \Class{foils} and \Class{seminar} were designed. + +The \Class{prosper} class builds on \Class{seminar} to provide dynamic +effects and the like; it retains the ability to provide \acro{PDF} for +a projected presentation, or to print foils for a foil-based +presentation. The add-on package \Package{ppr-prv} adds ``preview'' +facilities (that which is commonly called ``hand-out printing''). The +\Package{HA-prosper} package, which you load with \Class{prosper}, +mends a few bugs, and adds several facilities and slide design styles. +The (more recent) \Class{powerdot} class is designed as a +replacement for \Class{prosper} and \Package{HA-prosper}, co-authored +by the author of \Package{HA-prosper}. + +\Class{Beamer} is a relatively easy-to-learn, yet powerful, class that +(as its name implies) was designed for use with projection displays. +It needs the \Package{pgf} package (for graphics support), which in +turn requires \Package{xcolor}; while this adds to the tedium of +installing \Class{beamer} ``from scratch'', both are good additions to +a modern \LaTeX{} installation. \Class{Beamer} has reasonable +facilities for producing printed copies of slides. + +\Class{Talk} is another highly functional, yet easy-to-learn class +which claims to differ from the systems mentioned above, such as +\Class{beamer}, in that it doesn't impose a slide style on you. You +get to specify a bunch of slide styles, and you can switch from one to +the other between slides, as you need. The class itself provides +just the one style, in the package \Package{greybars}: the author's +suggestion that users should contribute their own has been +enthusiastically accepted~--- see (for example) the % !line break +\href{http://deic.uab.es/~iblanes/beamer_gallery/}{Beamer Gallery}. + +\Package{Lecturer} is a \emph{generic} solution (it works with +\plaintex{}, \latex{} and \context{}~mk~ii, but not~--- yet~--- with +\context{}~mk iv). By separating the functionality needed for a +presentation (using \tex{} for typesetting, and \acro{PDF} functions +for layering and dynamic effects) a clear structure emerges. While it +doesn't have the range of ``themes'' (presentation styles) of +\Class{beamer} it seems a useful alternative candidate. + +\Package{Present} is designed for use with \plaintex{} only; its +design is simple, to the extent that its author hopes that users will +themselves be able to tune its macros. + +\ProgName{Ppower4} (commonly known as \ProgName{pp4}) is a +\ProgName{Java}-based support program that will postprocess +\acro{PDF}, to `animate' the file at places you've marked with +commands from one of the \ProgName{pp4} packages. The commands don't +work on \acro{PDF} that has come from \ProgName{dvips} output; they +work with \acro{PDF} generated by \PDFLaTeX{}, \LaTeX{}, or +\ProgName{dvipdfm} running on \LaTeX{} output. + +\Package{Pdfscreen} and \Package{texpower} are add-on packages that +permit dynamic effects in documents formatted in ``more modest'' +classes; \Package{pdfscreen} will even allow you to plug +``presentation effects'' into an \Class{article}-class document. + +% ifmslide +%\noindent ifmslide: a few slides extolling virtues in \File{doc/ifmman.pdf} + +A more detailed examination of the alternatives (including examples +of code using many of them) may be found at Michael Wiedmann's fine +\URL{http://www.miwie.org/presentations/presentations.html} + +\CONTeXT{} users will find that much (if not all) of what they need is +already in \CONTeXT{} itself; there's a useful summary of what's +available, with examples, in +\URL{http://wiki.contextgarden.net/Presentation_Styles} +% +\begin{ctanrefs} +\item[beamer.cls]Download all of \CTANref{beamer} +\item[foils.cls]\CTANref{foiltex} +\item[greybars.sty]distributed with \CTANref{talk} +\item[HA-prosper.sty]\CTANref{ha-prosper} +%\item[ifmslide.sty]\CTANref{ifmslide} +\item[lecturer.sty]\CTANref{lecturer} +\item[seminar.cls]\CTANref{seminar} +\item[pdfscreen.sty]\CTANref{pdfscreen} +\item[pgf.sty]\CTANref{pgf} +\item[powerdot.cls]\CTANref{powerdot} +\item[pp4]\CTANref{ppower4} +\item[ppr-prv.sty]\CTANref{ppr-prv} +\item[present.tex]\CTANref{present} +\item[prosper.cls]\CTANref{prosper} +\item[talk.cls]\CTANref{talk} +\item[texpower]\CTANref{texpower} +\item[xcolor.sty]\CTANref{xcolor} +\end{ctanrefs} + +\Question[Q-poster]{Creating posters with \LaTeX{}} + +There is no complete ``canned solution'' to creating a poster (as, for +example, classes like \Class{seminar}, \Class{powerdot} and +\Class{beamer} serve for creating presentations in a variety of +styles). + +The nearest approach to the complete solution is the \Class{sciposter} +class, which provides the means to produce really rather good posters +according to the author's required style. A complete worked example +is provided with the distribution + +Otherwise, there is a range of tools, most of which are based on the +\Class{a0poster} class, which sets up an appropriately-sized piece of +paper, sets font sizes appropriately, and leaves you to your own +devices. + +Having used \Class{a0poster}, you can of course slog it out, and write +all your poster as an unadorned \LaTeX{} document (presumably in +multiple columns, using the \Package{multicol} package), but it's not really +necessary: the (straightforward) \Package{textpos} package provides a +simple way of positioning chunks of text, or tables or figures, on the +poster page. + +More sophisticated is the \Package{flowfram} package, whose basic aim +in life is flowing text from one box on the page to the next. One of +the package's design aims seems to have been the production of +posters, and a worked example is provided. The author of +\Package{flowfram} has an experimental tool called +\href{http://www.dickimaw-books.com/software.html#jpgfdraw}{JpgfDraw}, which +allows you to construct the outline of frames for use with +\Package{flowfram}. + +The \Package{beamerposter} package is added to a % ! line break +\Qref*{\Class{beamer} document}{Q-slidecls} to enable the user to work +as if in a \Class{a0poster} class. Thus \Class{beamer}'s neat +provisions for layout may be used when creating the poster. +Documentation of \Package{beamerposter} is sparse, but an example file +allows the user to get a grip on what's available. + +Despite the relative shortage of tools, there are a fair few web pages +that explain the process (mostly in terms of the \Class{a0poster} +route): +\begin{itemize} +\item from Norman Gray, % ! line break; this item checked 2012-10-02 + \href{http://nxg.me.uk/docs/posters/}{Producing posters using \LaTeX{}}; +\item from Nicola Talbot, % ! line break; this item checked 2012-10-02 + \href{http://www.dickimaw-books.com/latex/posters/}{Creating technical posters with \LaTeX{}} +\item From Rob Clark % ! line break; this item checked 2012-10-02 + \href{http://homepages.inf.ed.ac.uk/robert/posters/advanced.html}{Advanced LaTeX Posters} % ! line break + (which has links to code samples); +\item from Brian Wolven, % ! line break this item failed 2012-10-02 + \href{http://fuse.pha.jhu.edu/~wolven/posters.html}{LaTeX Poster Macros, Examples, and Accessories} % ! line break + (this page also provides macros and other support suggestions); and +\item from ``\emph{pjh}'' % ! line break; this item checked 2012-10-02 + \href{http://www.phys.ufl.edu/~pjh/posters/poster_howto_UF.html}{Making and printing a poster with \LaTeX{}}, % ! line break + which covers the specific issue of dealing with University of + Florida styled poster (offering supporting material as necessary), + but has hints which are generally useful. +\end{itemize} +\begin{ctanrefs} +\item[a0poster.cls]\CTANref{a0poster} +\item[beamer.cls]\CTANref{beamer} +\item[beamerposter.sty]\CTANref{beamerposter} +\item[flowfram.sty]\CTANref{flowfram} +\item[multicol.sty]Distributed as part of \CTANref{2etools}[multicol] +\item[sciposter.cls]\CTANref{sciposter} +\item[textpos.sty]\CTANref{textpos} +\end{ctanrefs} + +\Question[Q-thesis]{Formatting a thesis in \LaTeX{}} + +Thesis styles are usually very specific to your University, so it's +usually not profitable to ask around for a package outside your own +University. Since many Universities (in their eccentric way) still +require double-spaced thesis text, you may also need separately to set +up \Qref*{double spacing}{Q-linespace}. + +If you want to write a new thesis class of your own, a good place to +start is the University of California style, but remember that it's +often difficult to produce a thesis that both looks good and conforms +with the style that your Univeristy demands. +\begin{ctanrefs} +\item[UC thesis style]\CTANref{ucthesis} +\end{ctanrefs} + +\Question[Q-journalpaper]{Setting papers for journals} + +Publishers of journals have a wide range of requirements for the +presentation of papers, and while many publishers do accept electronic +submissions in \AllTeX{}, they don't often submit recommended macros to +public archives. + +Nevertheless, there are considerable numbers of macros of one sort or +another available on \acro{CTAN}; searching for your journal name in +the CTAN catalogue~--- see % ! line break +\Qref{searching \acro{CTAN}}{Q-findfiles})~--- +may well turn up what you're seeking. + +Failing that, you may be well advised to contact the prospective +publisher of your paper; many publishers have macros on their own web +sites, or otherwise available only upon application. + +Check that the publisher is offering you macros suitable to an +environment you can use: a few still have no macros for current +\LaTeX{}, for example, claiming that \LaTeXo{} is good enough\dots{} + +Some publishers rekey anything sent them anyway, so that it doesn't +really matter what macros you use. Others merely encourage you to use +as few extensions of a standard package as possible, so that they will +find it easy to transform your paper to their own internal form. + +\Question[Q-multidoc]{A `report' from lots of `article's} + +This is a requirement, for example, if one is preparing the +proceedings of a conference whose papers were submitted in \LaTeX{}. + +The nearest things to canned solutions are Peter Wilson's +\Class{combine} and Federico Garcia's \Class{subfiles} classes, but +many approaches have been proposed. Each of of the offerings has its +own advantages; in particular, several distinctly light-weight +solutions (for example, \Package{includex} and \Package{docmute}) are +available, well-suited to less formal documents. + +\Class{Combine} defines the means to `\csx{import}' entire documents, +and provides means of specifying significant features of the layout of +the document, as well as a global table of contents, and so on. The +complete set of facilities is pretty complex. An auxiliary package, +\Package{combinet}, allows use of the \csx{title}s and \csx{author}s +(etc.\@) of the \csx{import}ed documents to appear in the global table +of contents. The basic structure of a combined document would be: +\begin{quote} +\begin{verbatim} +\documentclass[...]{combine} +... +\begin{document} +... + +... +\begin{papers} +% title and author of first article, +% to go the the main ToC +\coltoctitle{...} +\coltocauthor{...} +\label{art1} +\import{art1} +... +\end{papers} +... + +... +\end{document} +\end{verbatim} +\end{quote} + +The \Class{subfiles} class is used in the component files of a multi-file +project, and the corresponding \Package{subfiles} package is used in the +master file; so the structure of the master file looks like: +\begin{quote} +\begin{verbatim} +\documentclass{} +... +\usepackage{subfiles} +... +\begin{document} +... +\subfile{subfile_name} +... +\end{document} +\end{verbatim} +\end{quote} +while a subfile has the structure: +\begin{quote} +\begin{verbatim} +\documentclass[mainfile_name]{subfiles} +\begin{document} +... +\end{document} +\end{verbatim} +\end{quote} +Arrangements may be made so that the component files will +be typeset using different page format, etc., parameters than those +used when they are typeset as a part of the main file. + +A more `raw' toolkit is offered by Matt Swift's \Package{includex} and +\Package{newclude} packages, both part of the \Package{frankenstein} +bundle. Note that Matt believes \Package{includex} is obsolete +(though it continues to work for this author); furthermore, its +replacement, \Package{newclude} remains ``in development'', as it has +been since 1999. + +Both \Package{includex} and \Package{newclude} enable you to +`\csx{includedoc}' complete articles (in the way that you +`\csx{include}' chapter files in an ordinary report). The preamble +(everything up to \cmdinvoke{begin}{document}), and everything after +\cmdinvoke{end}{document}, is ignored by both packages. Thus the +packages don't ``do the whole job'' for you, though: you need to +analyse the package use of the individual papers, and ensure that a +consistent set is loaded in the preamble of the main report. (Both +packages require \Package{moredefs}, which is also part of the +bundle.) + +A neat (and simple) toolkit is offered by the +\Package{docmute} package; once the package is loaded, anything +between \cmdinvoke{documentclass}[...]{...} and +\cmdinvoke{begin}{document} in an \csx{input}'ed or \csx{include}'d +document is ignored, and then the input is processed up to +\cmdinvoke{end}{document} in the input file. The package does nothing +about \csx{usepackage} (or anything else) in the preamble of the +included document; it's up to the user to ensure that any packages +needed are loaded, and any other necessary configuration is done, in +the parent document. + +The \Package{standalone} package develops on the ideas of +\Package{docmute}; it was designed to meet the needs of users who are +developing images from one of the more extreme new graphics packages +(notably \Package{pgf/tikz}) where the compile time of the graphics is +such that separate compilation is very desirable. +\Package{Standalone} provides a means of developing the graphics in a +convenient way, detached from the development of the document as a +whole; its value for use in multiple documents is clear. + +The user includes the \Package{standalone} package in the main +document, and each subfile uses the \Class{standalone} class. +(\Class{Standalone} uses \Class{article} for the ``real'' work in +stand-alone mode, but it may be asked to use another). + +The real difference from the \Package{docmute} package is +flexibility. In particular, you can ask that the preambles of the +included documents be gathered up, so that you can construct a good +preamble for the master document. + +A final ``compile-together'' approach comes from the \Package{subdocs} +package. The driver file contains a \csx{subdocuments} command: +\begin{quote} +\cmdinvoke*{subdocuments}[options]{file1, file2, ...} +\end{quote} +(the optional arguments provide layout options, such as control over +whether \csx{clearpage} or \csx{cleardoublepage} are used between the +files). Each of the sub-files will execute +\begin{quote} + \cmdinvoke*{usepackage}[master]{subdocs} +\end{quote} +to declare the name, \texttt{\emph{master}}, of the calling file; +each of the subfiles reads all the \extension{aux} files, so that +tables of contents may be produced. + +A completely different approach is to use the \Package{pdfpages} +package, and to include articles submitted in \acro{PDF} format into a +a \acro{PDF} document produced by \PDFLaTeX{}. The package +defines an \csx{includepdf} command, which takes arguments similar to +those of the \csx{includegraphics} command. With keywords in the +optional argument of the command, you can specify which pages you want +to be included from the file named, and various details of the layout +of the included pages. +\begin{ctanrefs} +\item[combine.cls]\CTANref{combine} +\item[combinet.sty]\CTANref{combine} +\item[docmute.sty]\CTANref{docmute} +\item[includex.sty]Distributed in the ``unsupported'' part of + \CTANref{frankenstein}[includex] +\item[moredefs.sty]Distributed as part of \CTANref{frankenstein}[moredefs] +\item[newclude.sty]Distributed as part of \CTANref{frankenstein}[newclude] +\item[pdfpages.sty]\CTANref{pdfpages} +\item[standalone.cls, standalone.sty]\CTANref{standalone} +\item[subdocs.sty]Distributed as part of \CTANref{bezos}[subdocs] +\item[subfiles.cls, etc.]\CTANref{subfiles} +\end{ctanrefs} + +\Question[Q-cv]{\emph{Curriculum Vitae} (R\'esum\'e)} + +Andrej Brodnik's class, \Class{vita}, offers a framework for producing +a \emph{curriculum vitae}. The class may be customised both for +subject (example class option files support both computer scientists +and singers), and for language (both the options provided are +available for both English and Slovene). Extensions may be written by +creating new class option files, or by using macros defined in the +class to define new entry types, etc. + +Didier Verna's class, \Class{curve}, is based on a model in which +the \acro{CV} is made of a set of \emph{rubrics} (each one dealing +with a major item that you want to discuss, such as `education', `work +experience', etc). The class's documentation is supported by a couple +of example files, and an emacs mode is provided. + +Xavier Danaux offers a class \Class{moderncv} which supports +typesetting modern \emph{curricula vitarum}, both in a classic and in a +casual style. It is fairly customizable, allowing you to define your +own style by changing the colours, the fonts, etc. + +The European Commission has recommended a format for % ! line break +\emph{curricula vitarum} within Europe, and Nicola Vitacolonna has +developed a class \Class{europecv} to produce it. While (by his own +admission) the class doesn't solve all problems, it seems well-thought +out and supports all current official EU languages (together with a +few non-official languages, such as Catalan, Galician and Serbian). + +The alternative to using a separate class is to impose a package on +one of the standard classes. An example, +Axel Reichert's \Package{currvita} package, has been recommended to the +\acro{FAQ} team. Its output certainly looks good. + +There is also a \LaTeXo{} package \Package{resume}, which comes with +little but advice \emph{against} trying to use it. +\begin{ctanrefs} +\item[currvita.sty]\CTANref{currvita} +\item[curve.cls]\CTANref{curve} +\item[europecv.cls]\CTANref{europecv} +\item[moderncv.cls]\CTANref{moderncv} +\item[resume.sty]\CTANref{resume} +\item[vita.cls]\CTANref{vita} +\end{ctanrefs} + +\Question[Q-letterclass]{Letters and the like} + +\LaTeX{} itself provides a \Class{letter} document class, which is +widely disliked; the present author long since gave up trying with +it. If you nevertheless want to try it, but are irritated by its way +of vertically-shifting a single-page letter, try the following hack: +\begin{quote} +\begin{verbatim} +\makeatletter +\let\@texttop\relax +\makeatother +\end{verbatim} +\end{quote} +in the preamble of your file. + +Doing-it-yourself is a common strategy; Knuth (for use with +\plaintex{}, in the \TeX{}book), and Kopka and Daly (in their Guide to +\LaTeX{}) offer worked examples. (The latest version of Knuth's +macros appear in his ``local library'' dump on the archive, which is +updated in parallel with new versions of \TeX{}~--- so not very often\dots{}) + +Nevertheless, there \emph{are} contributed alternatives~--- in fact +there are an awfully large number of them: the following list, of +necessity, makes but a small selection. + +The largest, most comprehensive, class is \Class{newlfm}; the \texttt{lfm} +part of the name implies that the class can create letters, faxes and +memoranda. The documentation is voluminous, and the package seems +very flexible. + +Other classes recommended for inclusion in this \acro{FAQ} are +\Class{akletter} and \Class{isodoc}. + +The \Class{dinbrief} class, while recommended, is only documented in +German. + +There are letter classes in each of the excellent +\Class{KOMA-script} (\Class{scrlttr2}: documentation is available in +English) and \Package{ntgclass} (\Class{brief}: documentation in Dutch +only) bundles. While these are probably good (since the bundles +themselves inspire trust) they've not been specifically recommended by +any users. +\begin{ctanrefs} +\item[akletter.cls]\CTANref{akletter} +\item[brief.cls]Distributed as part of \CTANref{ntgclass} +\item[dinbrief.cls]\CTANref{dinbrief} +\item[isodoc.cls]\CTANref{isodoc} +\item[\nothtml{\rmfamily}Knuth's letter.tex]\CTANref{knuth-letter} +\item[newlfm.cls]\CTANref{newlfm} +\item[scrlttr2.cls]Distributed as part of \CTANref{koma-script} +\end{ctanrefs} + +\Question[Q-extsizes]{Other ``document font'' sizes?} + +The \LaTeX{} standard classes have a concept of a (base) ``document +font'' size; this size is the basis on which other font sizes (those +from \csx{tiny} to \csx{Huge}) are determined. The classes are designed +on the assumption that they won't be used with sizes other than the +set that \LaTeX{} offers by default (10--12pt), but people regularly +find they need other sizes. The proper response to such a requirement +is to produce a new design for the document, but many people don't +fancy doing that. + +A simple solution is to use the \Package{extsizes} bundle. This +bundle offers ``extended'' versions of the article, report, book and +letter classes, at sizes of 8, 9, 14, 17 and 20pt as well as the +standard 10--12pt. Since little has been done to these classes other +than to adjust font sizes and things directly related to them, they +may not be optimal~--- but they are at least practical. + +More satisfactory are the \emph{\acro{KOMA}-script} classes, which are +designed to work properly with the class option files that come with +\Package{extsizes}, and the \Class{memoir} class that has its own +options for document font sizes 9pt--12pt, 14pt, 17pt, 20pt, 25pt, +30pt, 36pt, 48pt and 60pt. The classes also offer size setup for any +old font size, and the \Package{scrextend} package can extend this +facility for use with any class: +\begin{quote} +\begin{verbatim} +\usepackage[fontsize=12.3]{scrextend} +\end{verbatim} +\end{quote} +will indeed set up the main document font to have size \texttt{12.3pt} +with an appropriate default baselineskip. The package ``knows'' about +\emph{\acro{KOMA}-script}'s default sizes, and for eccentric sizes +such as the example, it will produce a warning: +\begin{quote} +\begin{verbatim} +Using fallback calculation to setup font sizes +\end{verbatim} +\end{quote} +(users should avoid becoming excited about that\dots{}). The package +suffers from the same problem as does \Package{extsizes}: the +resulting font sizes are the \emph{only} feature of the document that +is changed, and the appearance of the resulting document will probably +not be as good as if the document class had been designed for use at +the size chosen. + +Many classes, designed to produce typeset results other than on +``ordinary'' paper, will have their own font size mechanisms and +ranges of sizes. This is true, for example, of % ! line break +\Qref*{poster classes}{Q-poster} (such as \Class{a0poster}), and of +\Qref*{presentation and lecturing classes}{Q-slidecls} (such as +\Class{beamer}. +\begin{ctanrefs} +\item[a0poster.cls]\CTANref{a0poster} +\item[beamer.cls]\CTANref{beamer} +\item[extsizes bundle]\CTANref{extsizes} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\item[scrextend.sty]Distributed as part of \CTANref{koma-script} +\end{ctanrefs} +\LastEdit{2012-11-01} + +\subsection{Document structure} + +\Question[Q-titlsty]{The style of document titles} + +The \Package{titling} package provides a number of facilities that +permit manipulation of the appearance of a \csx{maketitle} command, the +\csx{thanks} commands within it, and so on. The package also defines a +\environment{titlingpage} environment, that offers something in between the +standard classes' \pkgoption{titlepage} option and the \environment{titlepage} +environment, and is itself somewhat configurable. + +The memoir class includes all the functionality of the +\Package{titling} package, while the \Class{KOMA-script} classes have +their own range of different titling styles. + +Finally, the indefatigable Vincent Zoonekynd supplies examples of how +to program alternative % don't let this \href suffer a line-break +\href{http://zoonek.free.fr/LaTeX/LaTeX_samples_title/0.html}{title styles}. +The web page is not useful to users unless they are willing to do +their own \LaTeX{} programming. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\item[titling.sty]\CTANref{titling} +\end{ctanrefs} + +\Question[Q-secthead]{The style of section headings} + +Suppose that the editor of your favourite journal has specified that section +headings must be centred, in small capitals, and subsection headings ragged +right in italic, but that you don't want to get involved in the sort of +programming described in section 2.2 of \emph{The \LaTeX{} Companion} +\begin{narrowversion} % really non-hyper + (\Qref{}{Q-latex-books}; the programming itself is discussed in + \Qref[question]{}{Q-atsigns}). +\end{narrowversion} +\begin{wideversion} % really hyper + (see \Qref{\latex{} books}{Q-latex-books}; the + \Qref{programming}{Q-atsigns} itself is discussed elsewhere in this + \acro{FAQ}). +\end{wideversion} +The following hack will +probably satisfy your editor. Define yourself new commands +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\newcommand{\ssection}[1]{% + \section[#1]{\centering\normalfont\scshape #1}} +\newcommand{\ssubsection}[1]{% + \subsection[#1]{\raggedright\normalfont\itshape #1}} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} % really non-hyper +\begin{verbatim} +\newcommand{\ssection}[1]{% + \section[#1]{\centering + \normalfont\scshape #1}} +\newcommand{\ssubsection}[1]{% + \subsection[#1]{\raggedright + \normalfont\itshape #1}} +\end{verbatim} +\end{narrowversion} +\end{quote} +and then use \csx{ssection} and \csx{ssubsection} in place of +\csx{section} and \csx{subsection}. This isn't perfect: section numbers +remain in bold, and starred forms need a separate redefinition. + +The \Package{titlesec} package offers a structured approach to the +problem, based on redefinition of the sectioning and chapter commands +themselves. This approach allows it to offer radical adjustment: its +options provide (in effect) a toolbox for designing your own +sectioning commands' output. + +The \Package{sectsty} package provides a more simply structured set of +tools; while it is less powerful than is \Package{titlesec}, it is +perhaps preferable for minor adjustments, since you can use it after +having read a smaller proportion of the manual. + +The \Package{fncychap} package provides a nice collection of customised +chapter heading designs. The \Package{anonchap} package provides a +simple means of typesetting chapter headings ``like section headings'' +(i.e., without the ``Chapter'' part of the heading); the +\Package{tocbibind} package provides the same commands, in pursuit of +another end. + +The \Class{memoir} class includes facilities that match +\Package{sectsty} and \Package{titlesec}, as well as a bundle of +chapter heading styles (including an \Package{anonchap}-equivalent). +The \Class{KOMA-script} classes also have sets of tools that provide +equivalent functionality, notably formatting specifications \csx{partformat}, +\csx{chapterformat}, \csx{sectionformat}, \dots{}, as well as several +useful overall formatting specifications defined in class options. + +Finally, the indefatigable Vincent Zoonekynd supplies examples of how +to program alternative % don't let these \href suffer line-breaks +\href{http://zoonek.free.fr/LaTeX/LaTeX_samples_chapter/0.html}{chapter heading styles} +and +\href{http://zoonek.free.fr/LaTeX/LaTeX_samples_section/0.html}{section heading styles}. +The web pages provide programming examples, and expect users to adapt +them to their own \LaTeX{} use. +\begin{ctanrefs} +\item[anonchap.sty]\CTANref{anonchap} +\item[fncychap.sty]\CTANref{fncychap} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\item[sectsty.sty]\CTANref{sectsty} +\item[titlesec.sty]\CTANref{titlesec} +\item[tocbibind.sty]\CTANref{tocbibind} +\end{ctanrefs} +\LastEdit{2011-06-01} + +\Question[Q-appendix]{Appendixes} + +\LaTeX{} provides an exceedingly simple mechanism for appendixes: the +command \csx{appendix} switches the document from generating sections +(in \Class{article} class) or chapters (in \Class{report} or +\Class{book} classes) to producing appendixes. Section or chapter +numbering is restarted and the representation of the counter switches +to alphabetic. So: +\begin{quote} +\begin{verbatim} +\section{My inspiration} +... + +\section{Developing the inspiration} +... + +\appendix +\section{How I became inspired} +... +\end{verbatim} +\end{quote} +would be typeset (in an \Class{article} document) something like: +\begin{quote} +\textbf{1~~My inspiration} + +\dots{} + +\textbf{2~~Developing the inspiration} + +\dots{} + +\textbf{A~~How I became inspired} + +\dots{} +\end{quote} +which is quite enough for many ordinary purposes. Note that, once +you've switched to typesetting appendixes, \LaTeX{} provides you with +no way back~--- once you've had an appendix, you can no longer have an +``ordinary'' \csx{section} or \csx{chapter}. + +The \Package{appendix} provides several ways of elaborating on this +simple setup. Straightforward use of the package allows you to have a +separate heading, both in the body of the document and the table of +contents; this would be achieved by +\begin{quote} +\begin{verbatim} +\usepackage{appendix} +... +\appendix +\appendixpage +\addappheadtotoc +\end{verbatim} +\end{quote} +The \csx{appendixpage} command adds a separate title ``Appendices'' +above the first appendix, and \csx{addappheadtotoc} adds a similar +title to the table of contents. These simple modifications cover many +people's needs about appendixes. + +The package also provides an \environment{appendices} environment, +which provides for fancier use. The environment is best controlled by +package options; the above example would be achieved by +\begin{quote} +\begin{verbatim} +\usepackage[toc,page]{appendix} +... +\begin{appendices} +... +\end{appendices} +\end{verbatim} +\end{quote} +The great thing that the \environment{appendices} environment gives +you, is that once the environment ends, you can carry on with sections +or chapters as before~--- numbering isn't affected by the intervening +appendixes. + +The package provides another alternative way of setting appendixes, as +inferior divisions in the document. The \environment{subappendices} +environment allows you to put separate appendixes for a particular +section, coded as \csx{subsection}s, or for a particular chapter, coded +as \csx{section}s. So one might write: +\begin{quote} +\begin{verbatim} +\usepackage{appendix} +... +\section{My inspiration} +... +\begin{subappendices} +\subsection{How I became inspired} +... +\end{subappendices} + +\section{Developing the inspiration} +... +\end{verbatim} +\end{quote} +Which will produce output something like: +\begin{quote} +\textbf{1~~My inspiration} + +\dots{} + +\textbf{1.A~~How I became inspired} + +\dots{} + +\textbf{2~~Developing the inspiration} + +\dots{} +\end{quote} + +There are many other merry things one may do with the package; the +user is referred to the package documentation for further details. + +The \Class{memoir} class includes the facilities of the +\Package{appendix} package. The \Class{KOMA-script} classes offer a +\csx{appendixprefix} command for manipulating the appearance of appendixes. +\begin{ctanrefs} +\item[appendix.sty]\CTANref{appendix} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\end{ctanrefs} + +\Question[Q-secindent]{Indent after section headings} + +\LaTeX{} implements a style that doesn't indent the first paragraph +after a section heading. There are coherent reasons for this, but not +everyone likes it. +The \Package{indentfirst} package +suppresses the mechanism, so that the first paragraph is +indented. +\begin{ctanrefs} +\item[indentfirst.sty]Distributed as part of \CTANref{2etools}[indentfirst] +\end{ctanrefs} + +\Question[Q-subsubsub]{How to create a \csx{subsubsubsection}} + +\LaTeX{}'s set of ``sections'' stops at the level of +\csx{subsubsection}. This reflects a design decision by Lamport~--- +for, after all, who can reasonably want a section with such huge +strings of numbers in front of it? + +In fact, \LaTeX{} standard classes \emph{do} define ``sectioning'' +levels lower than \csx{subsubsection}, but they don't format them like +sections (they're not numbered, and the text is run-in after the +heading). These deeply inferior section commands are \csx{paragraph} +and \csx{subparagraph}; you can (if you \emph{must}) arrange that these +two commands produce numbered headings, so that you can use them as +\csx{subsubsubsection}s and lower. + +The \Package{titlesec} package provides a sensible set of macros for +you to adjust the definitions of the sectioning macros, and it may be +used to transform a \csx{paragraph}'s typesetting so that it looks +like that of a \csx{section}. + +If you want to program the change yourself, you'll find that the +commands (\csx{section} all the way down to \csx{subparagraph}) are +defined in terms of the internal \csx{@startsection} command, which +takes 6~arguments. Before attempting this sort of work, you are well +advised to read the \LaTeX{} sources (\File{ltsect.dtx} in the +\LaTeX{} distribution) and the source of the standard packages +(\File{classes.dtx}), or to make use of the % ! line break +\Qref*{\LaTeX{} Companion}{Q-latex-books}, which +discusses the use of \csx{@startsection} for this sort of thing. + +You will note that Lamport didn't go on adding ``\texttt{sub}'' to the +names of sectioning commands, when creating commands for the lowest +levels of a document. This would seem sensible to any but the most +rigorous stickler for symmetry~--- it would surely challenge pretty +much anyone's reading of the source of a document, if there was a need +to distinguish \csx{subsubsubsection} and \csx{subsubsubsubsection} +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\LaTeX{} source]\CTANref{latex} +\item[titlesec.sty]\CTANref{titlesec} +\end{ctanrefs} +\LastEdit{2012-02-14} + +\Question[Q-captsty]{The style of captions} + +Changes to the style of captions may be made by redefining the commands +that produce the caption. So, for example, \csx{fnum@figure} (which +produces the float number for figure floats) may be redefined, in a +package of your own, or between +\Qref*{\csx{makeatletter}--\csx{makeatother}}{Q-atsigns}: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\renewcommand{\fnum@figure}{\textbf{Fig.~\thefigure}} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\renewcommand{\fnum@figure}% + {\textbf{Fig.~\thefigure}} +\end{verbatim} +\end{narrowversion} +\end{quote} +which will cause the number to be typeset in bold face. (Note that +the original definition used \nothtml{\csx{figurename}~--- }% +\Qref{\csx{figurename}}{Q-fixnam}.) More elaborate changes can be +made by patching the \csx{caption} command, but since there are +packages to do the job, such changes (which can get rather tricky) +aren't recommended for ordinary users. + +The \Package{float} package provides some control of the appearance of +captions, though it's principally designed for the creation of +non-standard floats. The \Package{caption} and \Package{ccaption} +(note the double ``\emph{c}'') packages provide a range of different +formatting options. + +\Package{ccaption} also provides `continuation' captions and captions +that can be placed outside of float environments. The (very simple) +\Package{capt-of} package also allows captions outside a float +environment. Note that care is needed when doing things that assume +the sequence of floats (as in continuation captions), or potentially +mix non-floating captions with floating ones. + +The \Class{memoir} class includes the facilities of the +\Package{ccaption} package; the \Class{KOMA-script} classes also +provide a wide range of caption-formatting commands. + +The documentation of \Package{caption} is available by processing a +file \File{manual.tex}, which is created when you unpack +\File{caption.dtx} + +Note that the previously-recommended package \Package{caption2} has +now been overtaken again by \Package{caption}; however, +\Package{caption2} remains available for use in older documents. +\begin{ctanrefs} +\item[caption.sty]\CTANref{caption} +\item[capt-of.sty]\CTANref{capt-of} +\item[ccaption.sty]\CTANref{ccaption} +\item[float.sty]\CTANref{float} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\end{ctanrefs} + +\Question[Q-fancyhdr]{Alternative head- and footlines in \LaTeX{}} +\keywords{headings header footer headline footline} + +The standard \LaTeX{} document classes define a small set of `page +styles' which specify head- and footlines for your document (though +they can be used for other purposes, too). The standard set is very +limited, but \LaTeX{} is capable of much more. The internal +\LaTeX{} coding needed to change page styles is not particularly +challenging, but there's no need~--- there are packages that provide +useful abstractions that match the way we typically think about these +things. + +The \Package{fancyhdr} package provides +simple mechanisms for defining pretty much every head- or footline +variation you could want; the directory also contains some +documentation and one or two smaller packages. \Package{Fancyhdr} +also deals with the tedious behaviour of the standard styles with +\Qref*{initial pages}{Q-nopageno}, by enabling you to define +different page styles for initial and for body pages. + +While \Package{fancyhdr} will work with \Class{KOMA-script} classes, +an alternative package, \Package{scrpage2}, eases integration with the +classes. \Package{Scrpage2} may also be used as a \Package{fancyhdr} +replacement, providing similar facilities. The \Class{KOMA-script} +classes themselves permit some modest redefinition of head- and +footlines, without the use of the extra package. + +\Class{Memoir} also contains the functionality of \Package{fancyhdr}, +and has several predefined styles. + +Documentation of \Package{fancyhdr} is distributed with the package, +in a separate file; documentation of \Package{scrpage2} is integrated +with the \File{scrgui*} documentation files that are distributed with +the \Class{KOMA-script} classes. +\begin{ctanrefs} +\item[fancyhdr.sty]\CTANref{fancyhdr} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\end{ctanrefs} + +\Question[Q-widefigs]{Wide figures in two-column documents} + +Floating figures and tables ordinarily come out the same width as the +page, but in two-column documents they're restricted to the width of +the column. This is sometimes not good enough; so there are alternative +versions of the float environments~--- in two-column documents, +\texttt{figure*} provides a floating page-wide figure (and \texttt{table*} a +page-wide table) which will do the necessary. + +The ``\texttt{*}''ed float environments can only appear at the top of a page, +or on a whole page~--- \texttt{h} or \texttt{b} float placement directives are +simply ignored. + +Unfortunately, page-wide equations can only be accommodated inside +float environments. You should include them in \texttt{figure} environments, +or use the \Package{float} or \Package{ccaption}package to define a +new float type. +\begin{ctanrefs} +\item[ccaption.sty]\CTANref{ccaption} +\item[float.sty]\CTANref{float} +\end{ctanrefs} + +\Question[Q-onecolabs]{1-column abstract in 2-column document} + +One often requires that the abstract of a paper should appear across +the entire page, even in a two-column paper. The required trick is: +\begin{quote} +\begin{verbatim} +\documentclass[twocolumn]{article} +... +\begin{document} +... % \author, etc +\twocolumn[ + \begin{@twocolumnfalse} + \maketitle + \begin{abstract} + ... + \end{abstract} + \end{@twocolumnfalse} + ] +\end{verbatim} +\end{quote} +Unfortunately, with the above \csx{thanks} won't work in the +\csx{author} list. If you need such specially-numbered footnotes, you +can make them like this: +\begin{quote} +\begin{verbatim} +\title{Demonstration} +\author{Me, You\thanks{}} +\twocolumn[ + ... as above ... +] +{ + \renewcommand{\thefootnote}% + {\fnsymbol{footnote}} + \footnotetext[1]{Thanks for nothing} +} +\end{verbatim} +\end{quote} +and so on. + +As an alternative, among other facilities the \Package{abstract} package +provides a +\csx{saythanks} command and a \environment{onecolabstract} environment +which remove the need to fiddle with the \csx{thanks} and +footnoting. They can be used like this: +\begin{quote} +\begin{verbatim} +\twocolumn[ + \maketitle % full width title + \begin{onecolabstract} % ditto abstract + ... text + \end{onecolabstract} +] +\saythanks % typeset any \thanks +\end{verbatim} +\end{quote} +The \Class{memoir} class offers all the facilities of \Package{abstract}. +\begin{ctanrefs} +\item[abstract.sty]\CTANref{abstract} +\item[memoir.cls]\CTANref{memoir} +\end{ctanrefs} + +\Question[Q-reallyblank]{Really blank pages between chapters} + +If you're using the standard classes, you need to take special action; +the \Class{memoir} class and the \Class{Koma-Script} classes provide +their own support for this~--- see below. + +\Class{Book} (by default) and \Class{report} (with \pkgoption{openright} class +option) ensure that each chapter starts on a right-hand (recto) page; +they do this by inserting a \csx{cleardoublepage} command between +chapters (rather than a mere \csx{clearpage}). The empty page thus +created gets to have a normal running header, which some people don't +like. + +The (excellent) \Package{fancyhdr} manual covers this issue, basically +advising the creation of a command \csx{clearemptydoublepage}: +\begin{quote} +\begin{verbatim} +\let\origdoublepage\cleardoublepage +\newcommand{\clearemptydoublepage}{% + \clearpage + {\pagestyle{empty}\origdoublepage}% +} +\end{verbatim} +\end{quote} +The ``obvious'' thing is then to use this command to replace +\csx{cleardoublepage} in a patched version of the \csx{chapter} command. +(Make a package of your own containing a copy +of the command out of the class.) This isn't particularly difficult, +but you can instead simply subvert \csx{cleardoublepage} (which isn't +often used elsewhere): +\begin{quote} +\begin{verbatim} +\let\cleardoublepage\clearemptydoublepage +\end{verbatim} +\end{quote} +Note: this command works because \csx{clearemptydoublepage} uses a copy +of \csx{cleardoublepage}: instructions on macro programming +% beware line break +\Qref*[question]{patching techniques}{Q-patch} explain the problem and +why this is a solution. + +The \Package{emptypage} package does this sort of thing for you; all +you need do is load the package, and it does the rest. + +The \emph{\acro{KOMA}-Script} replacements for the +\Class{book} and \Class{report} classes (\Class{scrbook} and +\Class{scrreprt} offers class options \pkgoption{cleardoubleempty}, +\pkgoption{cleardoubleplain} and \pkgoption{cleardoublestandard} +(using the running page style, as normal) that control the appearance +of these empty pages. The classes also offer do-it-yourself commands +\csx{cleardoubleempty} (etc.\@). + +The \Class{memoir} class (and the \Package{nextpage} package) +provide commands \csx{cleartooddpage} and \csx{cleartoevenpage}, +which both take an optional argument (the first, with no argument, +being an equivalent of \csx{cleardoublepage}). One can achieve +`special' effects by putting commands in the optional argument: the +\csx{clearemptydoublepage} we're after would be achieved by +\csx{cleartooddpage[}\cmdinvoke{thispagestyle}{empty}\texttt{]}. The +commands will also serve if you want the surreal effect of ``This page +intentionally left blank'' in the centre of an otherwise empty page. +\begin{ctanrefs} +\item[emptypage.sty]\CTANref{emptypage} +\item[fancyhdr.sty]\CTANref{fancyhdr} +\item[memoir.cls]\CTANref{memoir} +\item[nextpage.sty]\CTANref{nextpage} +\item[scrbook.cls, scrrept.cls]Part of \CTANref{koma-script} +\end{ctanrefs} + +\Question[Q-balance]{Balancing columns at the end of a document} + +The \Package{twocolumn} option of the standard classes causes +\LaTeX{} to set the text of a document in two columns. However, the last +page of the document typically ends up with columns of different +lengths~--- such columns are said to be ``unbalanced''. Many (most?) +people don't like unbalanced columns. + +The simplest solution to the problem is to use the \Package{multicol} +package in place of the \Package{twocolumn} option, as +\Package{multicol} balances the columns on the final page by default. +However, the use of \Package{multicol} does come at a cost: its +special output routine disallows the use of in-column floats, though +it does still permit full-width (e.g., \environment{figure*} +environment) floats. + +As a result, there is a constant push for a means of balancing columns +at the end of a \Package{twocolumn} document. Of course, the job can +be done manually: \csx{pagebreak} inserted at the appropriate place on +the last page can often produce the right effect, but this seldom +appeals, and if the last page is made up of automatically-generated +text (for example, bibliography or index) inserting the command will +be difficult. + +The \Package{flushend} package offers a solution to this problem. It's a +somewhat dangerous piece of macro code, which patches one of the most +intricate parts of the \LaTeX{} kernel without deploying any of the +safeguards discussed in \Qref[question]{patching commands}{Q-patch}. +The package only changes the behaviour at end document (its +\csx{flushend} command is enabled by default), and one other command +permits adjustment of the final balance; other packages in the bundle +provide means for insertion of full width material in two-column +documents. + +The \Package{balance} package also patches the output routine +(somewhat more carefully than \Package{flushend}). + +The user should be aware that any of these packages are liable to +become confused in the presence of floats: if problems arise, manual +adjustment of the floats in the document is likely to be necessary. +It is this difficulty (what's required in any instance can't really be +expressed in current \LaTeX{}) that led the author of +\Package{multicol} to suppress single-column-wide floats. +\begin{ctanrefs} +\item[balance.sty]Distributed as part of \CTANref{preprint}[balance] +\item[flushend.sty]Distributed as part of \CTANref{sttools}[flushend] +\item[multicol.sty]Distributed as part of \CTANref{2etools}[multicol] + +\end{ctanrefs} + +\Question[Q-runheadtoobig]{My section title is too wide for the page header} + +By default, \LaTeX{} sectioning commands make the chapter or section +title available for use by page headers and the like. Page headers +operate in a rather constrained area, and it's common for titles too +be too big to fit: the \LaTeX{} sectioning commands therefore take an +optional argument: +\begin{quote} +\begin{verbatim} +\section[short title]{full title} +\end{verbatim} +\end{quote} +If the \meta{short title} is present, it is used both for the table of +contents and for the page heading. The usual answer to people who +complain that their title is too big for the running head is to +suggest that they the optional argument. + +However, using the same text for the table of contents as for the +running head may also be unsatisfactory: if your chapter titles are +seriously long (like those of a Victorian novel), a valid and rational +scheme is to have a shortened table of contents entry, and a really +terse entry in the running head. + +One of the problems is the tendency of page headings to be set in +capitals (which take up more space); so why not set headings as written +for ``ordinary'' reading? It's not possible to do so with unmodified +\LaTeX{}, but the \Package{fancyhdr} package provides a command +\csx{nouppercase} for use in its header (and footer) lines to suppress +\LaTeX{}'s uppercasing tendencies. Classes in the \Class{KOMA-script} +bundle don't uppercase in the first place. + +In fact, the sectioning commands use `mark' commands to pass +information to the page headers. For example, \csx{chapter} uses +\csx{chaptermark}, \csx{section} uses \csx{sectionmark}, and so on. With +this knowledge, one can achieve a three-layer structure for chapters: +\begin{quote} +\begin{verbatim} +\chapter[middling version]{verbose version} +\chaptermark{terse version} +\end{verbatim} +\end{quote} +which should supply the needs of every taste. + +Chapters, however, have it easy: hardly any book design puts a page +header on a chapter start page. In the case of sections, one has +typically to take account of the nature of the \csx{*mark} commands: +the thing that goes in the heading is the first mark on the page (or, +failing any mark, the last mark on any previous page). As a result +the recipe for sections is more tiresome: +\begin{quote} +\begin{verbatim} +\section[middling version]{verbose version% + \sectionmark{terse version}} +\sectionmark{terse version} +\end{verbatim} +\end{quote} +(the first \csx{sectionmark} deals with the header of the page the +\csx{section} command falls on, and the second deal with subsequent +pages; note that here, you need the optional argument to \csx{section}, +even if ``\emph{middling version}'' is in fact the same text as +``\emph{long version''}.) + +A similar arrangement is necessary even for chapters if the class +you're using is odd enough that it puts a page header on a chapter's +opening page. + +Note that the \Package{titlesec} package manages the running heads in +a completely different fashion; for example, you can use the optional +argument of sectioning commands for page headers, only, by loading the +package as: +\begin{quote} +\begin{verbatim} +\usepackage[toctitles]{titlesec} +\end{verbatim} +\end{quote} +The package documentation offers other useful techniques in this area. +\LeadFrom{Tobi}{sx}{2012-02-01} + +The \Class{memoir} class avoids all the silliness by providing an +extra optional argument for chapter and sectioning commands, for +example: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\section[middling version][terse version]% + {verbose version} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\section[middling version][terse version]{verbose version} +\end{verbatim} +\end{wideversion} +\end{quote} +As a result, it is always possible for users of \Class{memoir} to +tailor the header text to fit, with very little trouble. +\begin{ctanrefs} +\item[fancyhdr.sty]\CTANref{fancyhdr} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\item[titlesec.sty]\CTANref{titlesec} +\end{ctanrefs} +\LastEdit{2012-02-01} + +\nothtml{\begingroup\boldmath} +\Question[Q-nofm]{Page numbering ``\meta{n} of \meta{m}''} +\nothtml{\afterquestion} + +Finding the page number of the last page of a document, from within +the document, is somewhat tricky. The \Package{lastpage} and +\Package{zref-lastpage} packages define a label +\texttt{LastPage} whose number is \emph{right} (after sufficiently many +passes through \LaTeX{}, of course). The \Class{memoir} class also +defines a ``last page'' label. + +The documentation of the \Package{fancyhdr} package spells out exactly +how one might actually use this information to produce page numbering +as suggested in the question. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}fancyhdr documentation]\CTANref{fancyhdr} +\item[lastpage.sty]\CTANref{lastpage} +\item[zref-lastpage]Distributed as part of \CTANref{oberdiek}[zref] +\end{ctanrefs} +\LastEdit{2012-10-16} + +\Question[Q-pagebychap]{Page numbering by chapter} + +When I was a young man, a common arrangement for loose bound technical +manuals is to number pages by chapter. (It's quite a good scheme, in +those situations: even if your corrections add a whole page to the +chapter, the most you have to redistribute is that chapter.) + +The problem, at first sight, seems pretty much the same as that in +another answer on +% beware line break +\Qref*{running numbers within a chapter}{Q-running-nos}, +and the basic technique is indeed pretty similar. + +However, tidying-up loose ends, making sure the page number gets reset +to the correct value at the start of each chapter, and so on, is +slightly more challenging. This is why the \Package{chappg} package +was written: it does the obvious things, and more. + +Users have been known to ask for running page numbers within a +section, but this really doesn't make sense: you need to run page +numbers within document objects that always start on a fresh page. +\begin{ctanrefs} +\item[chappg.sty]\CTANref{chappg} +\end{ctanrefs} + +\subsection{Page layout} + +\Question[Q-papersize]{The size of printed output} + +The final product of a \AllTeX{} run is something for a person to +read. Often, nowadays, that product will be read ``on-screen'', but +the printed page remains a principal output form. + +When we come to print our output, it is important that the output fits +on the paper; in some cases, for the output to ``fit'' is good enough. +However, there are circumstances where the actual size of the printed +output, on the page, is crucial to the acceptance of the output. +(This might happen when the output is a book to be published, or when +it's a dissertation which must match the fancies of some bureaucrat +even to be considered.) + +Sadly, we often find that the printed output doesn't conform to our +expectations\dots{} + +The check-list for such problems has two entries: +\begin{itemize} +\item Your output is generated via Adobe \ProgName{Reader} (or + possibly ``\ProgName{Acrobat Reader}''~--- older versions of the + program had the qualified name). In this case, it may be that + \ProgName{Reader} is willfully changing the size of your output: + read \Qref*{\ProgName{Reader} antics}{Q-acroantics}. +\item Something in your \TeX{} system is producing the wrong size (or + shape) of output: read \Qref*{paper geometry}{Q-papergeom}. +\end{itemize} + +An alternative approach is to use the (excellent) \Package{testflow} +suite, that provides a detailed outline of the potential problems +together with a sample document and prototype outputs. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}testflow bundle]\CTANref{testflow} +\end{ctanrefs} + +\Question[Q-acroantics]{Adobe \ProgName{Reader} messing with print size} +\AliasQuestion{Q-outszwrng} + +Printing from Adobe \ProgName{Reader} shrinks the page ``to fit'' +(\emph{by default}). Unfortunately, its calculation doesn't consider +the existing margins of the document, so that it shrinks what it +believes is your whole page onto what it believes is its output page. +The effect typically looks as if your margins have expanded. + +Solve this problem by adjusting the \ProgName{Reader}'s default in the +print dialogue; unfortunately, this dialogue varies from one version +to the next: +\begin{itemize} +\item \ProgName{Reader} version 7:\\ + Page Scaling (default: ``Fit to printer margins'')~--- change to + ``None'', and\\ + Scale (default 95\textpercent{} of Normal size)~--- change to + ``100\textpercent{}''. +\item Adobe Reader 6:\\ + in the print dialogue, on the ``copies \& pages'' pane, you'll find a + popup menu/drop-down list titled ``Page Scaling''~--- change to ``None''. +\item Windows, Linux Acrobat (Reader) 5.0:\\ + In the print dialog, make sure the ``Shrink oversized pages to fit'' + checkbox is unchecked. It may also be useful to uncheck the + ``Expand small pages to fit paper size'' checkbox as well. +\end{itemize} + +\Question[Q-papergeom]{Getting the right paper geometry from \AllTeX{}} + +If your output is the wrong size, and you've checked that it's not due +to the \Qref*{ministrations of Adobe \ProgName{Reader}}{Q-acroantics}, +the problem is probably that your \AllTeX{} system is producing output +that specifies the wrong paper size. Paper sizes can be a pain: +they're a forgotten backwater~--- Knuth seems not to have considered +paper size as something the \TeX{} engine needs to know about. As a +result, there is no \acro{DVI} command to specify the paper on which +the document should be printed, which has led a dichotomy where macros +shape the text according to the needs of the author's chosen paper +size, and device drivers' choice happens independently of the macros' +ideas. + +In practice, one usually finds that macro packages (such as \plaintex{} and +\LaTeX{}) assume American ``letter'' paper size, by default; and since +most distributions nowadays originate in Europe, the drivers usually +default to \acro{ISO} ``A4'' paper size. + +This is (of course) pretty unsatisfactory. Users may select a +different paper size for their document (current \LaTeX{} offers a +range of sizes as options in the standard classes), pretty easily. +Nevertheless, the user also has to be sure that each time +\ProgName{xdvi}, \ProgName{dvips} (or whatever) runs, it uses the +paper size the document was designed for. + +The default paper size for \acro{DVI} drivers may be changed by a +distribution management command (\ProgName{texconfig} for \texlive{}, +the \ProgName{Options} application for \miktex{}), but this still +doesn't provide for people using the ``wrong'' sort of paper for some +reason. + +A different issue arises for users of \PDFTeX{}~--- the +\acro{PDF} format \emph{does} have the means of expressing paper size +and \PDFTeX{} has system variables \csx{pdfpagewidth} and +\csx{pdfpageheight}, that are written into the output \acro{PDF} file. +Unfortunately, most of the core software predates \PDFTeX{}, so not even +\PDFLaTeX{} sets the correct values into those variables, to match the +paper size specified in a \csx{documentclass} option. + +The \acro{DVI} drivers \ProgName{dvips}, \ProgName{dvipdfm} and its +extensions (\ProgName{dvipdfmx} and \ProgName{xdvipdfmx}) define +\csx{special} commands for the document to specify its own paper size; +so in those cases, as when \PDFTeX{} is being used, the +paper size can be programmed by the document. Users who wish to, may +of course consult the manuals of the various programs to write the +necessary code. + +The \Package{geometry} and \Package{zwpagelayout} packages (whose main +business includes defining +typeset page areas), also takes notice the size of the paper that the +document is going to be printed on, and can issue the commands +necessary to ensure the correct size of paper is used. If +\Package{geometry} is used when a document is being processed by +\PDFLaTeX{}, it can set the necessary dimensions ``in the output''. +If the document is being processed by \LaTeX{} on a \TeX{} or \eTeX{} +engine, there are package options which instruct \Package{geometry} +which \csx{special} commands to use. (Note that the options are +ignored if you are using \PDFLaTeX{}.) + +So, one resolution of the problem, when you are using \latex{}, is to add +\begin{quote} +\begin{verbatim} +\usepackage[processor-option,...]{geometry} +\end{verbatim} +\end{quote} +Where \pkgoption{processor-option} tells the package what will produce +your (\PS{} or \acro{PDF} output~--- \Package{geometry} knows about +\pkgoption{dvips} and \pkgoption{dvipdfm} (\pkgoption{dvipdfm} also +serves for the extension \ProgName{dvipdfmx} and +\ProgName{xdvipdfmx}). + +If you're using \PDFLaTeX{} or \xetex{}, load with +\begin{quote} +\begin{verbatim} +\usepackage[program-option,...]{geometry} +\end{verbatim} +\end{quote} +where \pkgoption{program-option} is \pkgoption{pdftex}, +\pkgoption{xetex}. + +The alternative, \Package{zwpagelayout} requires a \pkgoption{driver} +option: +\begin{quote} +\begin{verbatim} +\usepackage[driver=value,...]{zwpagelayout} +\end{verbatim} +\end{quote} +(permissible \meta{values} are \pkgoption{pdftex}, \pkgoption{xetex} +and \pkgoption{dvips}; the default value is \pkgoption{unknown}). + +Needless to say, both the ``big'' classes (\Class{koma-script} and +\Class{memoir}) provide their own ways to get the paper size +``right''. + +The \Package{typearea} package is the \Class{Koma-script} +distribution's way of providing page layout functionality. Load it +with the \pkgoption{pagesize} option and it will ensure the correct +paper is selected, for \acro{PDF} output from \PDFLaTeX{}, and for +\PS{} output from \LaTeX{} via \ProgName{dvips}. + +\Class{Memoir} has the standard classes' paper-size selections +(\pkgoption{a4paper}, \pkgoption{letterpaper} and so on), but also +permits the user to choose an arbitrary paper size, by setting the +length registers \csx{stockheight} and \csx{stockwidth}. The commands +\csx{fixdvipslayout} (for \LaTeX{} processing), and \csx{fixpdflayout} +(for \PDFLaTeX{} processing) then instruct the processor to produce +output that specifies the necessary paper size. +\begin{ctanrefs} +\item[geometry.sty]\CTANref{geometry} +\item[memoir.cls]\CTANref{memoir} +\item[typearea.sty]Distributed as part of \CTANref{koma-script}[typearea] +\item[zwpagelayout.sty]\CTANref{zwpagelayout} +\end{ctanrefs} +\LastEdit{2011-12-12} + +\Question[Q-changemargin]{Changing the margins in \LaTeX{}} + +Changing the layout of a document's text on the page involves several +subtleties not often realised by the beginner. There are interactions +between fundamental \TeX{} constraints, constraints related to the +design of \LaTeX{}, and good typesetting and design practice, that +mean that any change must be very carefully considered, both to ensure +that it ``works'' and to ensure that the result is pleasing to the +eye. + +\LaTeX{}'s defaults sometimes seem excessively conservative, +but there are sound reasons behind how Lamport designed the layouts +themselves, whatever one may feel about his overall design. For +example, the common request for ``one-inch margins all round on A4 +paper'' is fine for 10- or 12-pitch typewriters, but not for 10pt (or +even 11pt or 12pt) type because readers find such wide, dense, lines +difficult to read. There should ideally be no more than 75 characters +per line (though the constraints change for two-column text). + +So Lamport's warning to beginners in his section on `Customizing the +Style'~--- ``don't do it''~--- should not lightly be ignored. + +This set of \acro{FAQ}s recommends that you use a package to establish +consistent settings of the parameters: the interrelationships are +taken care of in the established packages, without you \emph{needing} +to think about them, but remember~--- the packages only provide +consistent, working, mechanisms: they don't analyse the quality of +what you propose to do. + +The following answers deal with the ways one may choose to proceed: +\begin{itemize} +\item \Qref*{Choose which package to use}{Q-marginpkgs}. +\item \Qref*{Find advice on setting up page layout by hand}{Q-marginmanual}. +\end{itemize} +There is a related question~--- how to change the layout +temporarily~--- and there's an answer that covers that, too: +\begin{itemize} +\item \Qref*{Change the margins on the fly}{Q-chngmargonfly}. +\end{itemize} + +\Question[Q-marginpkgs]{Packages to set up page designs} + +There are two trustworthy tools for adjusting the dimensions and position of the +printed material on the page are \Package{geometry} and the +\Package{zwpagelayout} packages; a very +wide range of adjustments of the layout may be relatively +straightforwardly programmed with either, and package documentation is good and +comprehensive. + +As is usual, users of the \Class{memoir} class have built-in +facilities for this task, and users of the \Class{KOMA-script} classes +are recommended to use an alternative package, \Package{typearea}. In +either case it is difficult to argue that users should go for +\Package{geometry}: both alternatives are good. + +The documentation both of \Package{geometry} and of +\Package{zwpagelayout} is rather overwhelming, and +learning all of of either package's capabilities is likely to be more +than you ever need. +The \Package{vmargin} package is somewhat simpler to use: it has a +canned set of paper sizes (a superset of that provided in \LaTeXe{}), +provision for custom paper, margin adjustments and provision for +two-sided printing. +\begin{ctanrefs} +\item[geometry.sty]\CTANref{geometry} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[layout.sty]Distributed as part of \CTANref{2etools}[layout] +\item[memoir.cls]\CTANref{memoir} +\item[typearea.sty]Distributed as part of \CTANref{koma-script}[typearea] +\item[vmargin.sty]\CTANref{vmargin} +\item[zwpagelayout.sty]\CTANref{zwpagelayout} +\end{ctanrefs} +\LastEdit{2011-12-12} + +\Question[Q-marginmanual]{How to set up page layout ``by hand''} + +So you're eager to do it yourself, notwithstanding the cautions +\begin{flatversion} + outlined above (\Qref{}{Q-changemargin}). +\end{flatversion} +\begin{hyperversion} + outlined in ``\Qref{changing margins}{Q-changemargin}''. +\end{hyperversion} + +It's important that you first start by familiarising yourself +with LaTeX's page layout parameters. For example, see section C.5.3 of the +\LaTeX{} manual (pp.~181-182), or corresponding sections in many of the other +good \LaTeX{} manuals (see \Qref[question]{\LaTeX{} books}{Q-latex-books}). + +\LaTeX{} controls the page layout with a number of parameters, which +allow you to change the distance from the edges of a page to the left +and top edges of your typeset text, the width and height of the text, +and the placement of other text on the page. However, they are +somewhat complex, and it is easy to get their interrelationships wrong +when redefining the page layout. The layout package defines a +\csx{layout} command which draws a diagram of your existing page +layout, with the dimensions (but not their interrelationships) shown. + +Even changing the text height and width, \csx{textheight} and +\csx{textwidth}, requires more care than you might expect: the height +should be set to fit a whole number of text lines (in terms of +multiples of \csx{baselinskip}), and the width should be constrained +by the number of characters per line, as mentioned in % ! line break +``\Qref*{changing margins}{Q-changemargin}''. + +Margins are controlled by two parameters: \csx{oddsidemargin} and +\csx{evensidemargin}, whose names come from the convention that +odd-numbered pages appear on the right-hand side (`recto') of a +two-page spread and even-numbered pages on the left-hand side +(`verso'). Both parameters actually refer to the left-hand margin of +the relevant pages; in each case the right-hand margin is specified by +implication, from the value of \csx{textwidth} and the width of the +paper. (In a one-sided document, which is the default in many +classes, including the standard \Class{article} and \Class{report} +classes, \csx{oddsidemargin} stands for both.) + +The +``origin'' (the zero position) on the page is one inch from the top of +the paper and one inch from the left side; positive horizontal +measurements extend right across the page, and positive vertical +measurements extend down the page. Thus, the parameters +\csx{evensidemargin}, \csx{oddsidemargin} and \csx{topmargin}, should +be set to be 1~inch less than the true margin; for margins closer to +the left and top edges of the page than 1~inch, the margin parameters +must be set to negative values. + +\Question[Q-chngmargonfly]{Changing margins ``on the fly''} + +One of the surprises characteristic of \TeX{} use is that you cannot +change the width or height of the text within the document, simply by +modifying the text size parameters; \TeX{} can't change the text width +on the fly, and \LaTeX{} only ever looks at text height when starting +a new page. + +So the simple rule is that the parameters should only be +changed in the preamble of the document, i.e., before the +\cmdinvoke{begin}{document} statement (so before any typesetting has +happened. + +To adjust text width within a document we define an environment: +\begin{quote} +\begin{verbatim} +\newenvironment{changemargin}[2]{% + \begin{list}{}{% + \setlength{\topsep}{0pt}% + \setlength{\leftmargin}{#1}% + \setlength{\rightmargin}{#2}% + \setlength{\listparindent}{\parindent}% + \setlength{\itemindent}{\parindent}% + \setlength{\parsep}{\parskip}% + }% + \item[]}{\end{list}} +\end{verbatim} +\end{quote} +The environment takes two arguments, and will indent the left and +right margins, respectively, by the parameters' values. Negative +values will cause the margins to be narrowed, so +\cmdinvoke{begin}{changemargin}{-1cm}{-1cm} narrows the left and right +margins by 1 centimetre. + +Given that \TeX{} can't do this, how does it work?~--- well, the +environment (which is a close relation of the \LaTeX{} +\environment{quote} environment) \emph{doesn't} change the text width +as far as \TeX{} is concerned: it merely moves text around inside the +width that \TeX{} believes in. + +The \Package{changepage} package provides ready-built commands to do +the above; it includes provision for changing the shifts applied to +your text according to whether you're on an odd (\emph{recto}) or an +even (\emph{verso}) page of a two-sided document. +\Package{Changepage}'s structure matches that of the \Class{memoir} +class. + +The (earlier) package \Package{chngpage} provides the same facilities, +but it uses rather different syntax. \Package{Changepage}'s structure +matches that of the \Class{memoir} class, and it should be used for +any new work. + +Changing the vertical dimensions of a page is more clumsy still: the +\LaTeX{} command \csx{enlargethispage} adjusts the size of the current +page by the size of its argument. Common uses are +\begin{quote} +\begin{verbatim} +\enlargethispage{\baselineskip} +\end{verbatim} +\end{quote} +to make the page one line longer, or +\begin{quote} +\begin{verbatim} +\enlargethispage{-\baselineskip} +\end{verbatim} +\end{quote} +to make the page one line shorter. The process is (to an extent) +simplified by the \Package{addlines} package: its \csx{addlines} +command takes as argument the \emph{number} of lines to add to the +page (rather than a length): the package documentation also provides a +useful analysis of when the command may (or may not) be expected to +work. +\begin{ctanrefs} +\item[addlines.sty]\CTANref{addlines} +\item[changepage.sty]\CTANref{changepage} +\end{ctanrefs} +\LastEdit{2011-06-01} + +\Question[Q-nopageno]{How to get rid of page numbers} +\AliasQuestion{ps@empty} + +Very occasionally, one wants a document with no page numbers. For +such occasions, the package \Package{nopageno} will make +\cmdinvoke{pagestyle}{plain} have the same effect as +\cmdinvoke{pagestyle}{empty}; in simple documents, this will suppress +all page numbering (it will not work, of course, if the document uses +some other pagestyle than \environment{plain}). + +To suppress page numbers from a sequence of pages, you may use +\cmdinvoke{pagestyle}{empty} at the start of the sequence, and restore +the original page style at the end. Unfortunately, you still have to +deal with the page numbers on pages containing a \csx{maketitle}, +\csx{part} or \csx{chapter} command, since the standard classes; deal +with those separately, as described below. + +To suppress page numbers on a single page, use +\cmdinvoke{thispagestyle}{empty} somewhere within the text of the +page. Note that, in the standard classes, \csx{maketitle} and +\csx{chapter} use \csx{thispagestyle} internally, so your call +must be \emph{after} those commands. + +Unfortunately, \csx{thispagestyle} doesn't work for \Class{book} or +\Class{report} \csx{part} commands: they set the page style (as do +\csx{chapter} commands), but then they advance to the next page so +that you have no opportunity to change the style using +\csx{thispagestyle}. The present author has proposed solving the +problem with the following ``grubby little patch'', on +\Newsgroup{comp.text.tex}: +\begin{quote} +\begin{verbatim} +\makeatletter +\let\sv@endpart\@endpart +\def\@endpart{\thispagestyle{empty}\sv@endpart} +\makeatother +\end{verbatim} +\end{quote} +Fortunately, that patch has now been incorporated in a small package +\Package{nonumonpart} (a difficult name\dots) + +Both the \Class{KOMA-script} classes and \Class{memoir} have separate +page styles for the styles of various ``special'' pages, so, in a +\Class{KOMA} class document one might say: +\begin{quote} +\begin{verbatim} +\renewcommand*{\titlepagestyle}{empty} +\end{verbatim} +\end{quote} +while \Class{memoir} will do the job with +\begin{quote} + \cmdinvoke{aliaspagestyle}{title}{empty} +\end{quote} + +An alternative (in all classes) is to use the rather delightful +\cmdinvoke{pagenumbering}{gobble}; this has the simple effect that any +attempt to print a page number produces nothing, so there's no issue +about preventing any part of \LaTeX{} from printing the number. +However, the \csx{pagenumbering} command does have the side effect that +it resets the page number (to 1), so it is unlikely to be helpful +other than at the beginning of a document. + +The \Package{scrpage2} package separates out the representation of the +page number (it typesets the number using the \csx{pagemark} command) from +the construction of the page header and footer; so one can say +\begin{quote} +\begin{verbatim} +\renewcommand*{\pagemark}{} +\end{verbatim} +\end{quote} +which will also suppress the printing of the page number. + +Neither of these ``suppress the page number'' techniques touches the +page style in use; in practice this means they don't make sense unless +you are using \cmdinvoke{pagestyle}{plain} +\begin{ctanrefs} +\item[fancyhdr.sty]\CTANref{fancyhdr} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\item[nonumonpart.sty]\CTANref{nonumonpart} +\item[nopageno.sty]\CTANref{nopageno} +\item[scrpage2.sty]Distributed as part of \CTANref{koma-script} +\end{ctanrefs} +\LastEdit{2011-04-16} + +\Question[Q-crop]{How to create crop marks} + +If you're printing something that's eventually to be reproduced in +significant quantities, and bound, it's conventional to print on paper +larger than your target product, and to place ``crop marks'' outside +the printed area. These crop marks are available to the production +house, for lining up reproduction and trimming machines. + +You can save yourself the (considerable) trouble of programming these +marks for yourself by using the package \Package{crop}, which has +facilities to satisfy any conceivable production house. Users of the +\Class{memoir} class don't need the package, since \Class{memoir} has +its own facilities for programming crop marks. +\begin{ctanrefs} +\item[crop.sty]\CTANref{crop} +\item[memoir.cls]\CTANref{memoir} +\end{ctanrefs} + +\Question[Q-watermark]{`Watermarks' on every page} + +It's often useful to place some text (such as `DRAFT') in the +background of every page of a document. For \LaTeX{} users, the +simplest way to do this uses the \Package{draftcopy} package. This +can deal with +many types of \acro{DVI} processors (in the same way that the graphics +package does) and knows translations for the word `DRAFT' into a wide +range of languages (though you can choose your own word, too). +Unfortunately, however, the package relies on \PS{} specials, and will +therefore fail if you are viewing your document with \ProgName{xdvi}, +and won't even compile if you're using \PDFLaTeX{}. (\PDFLaTeX{} +users need one of the other solutions below.) + +The \Package{wallpaper} package builds on \Package{eso-pic} (see +below). Apart from the single-image backdrops described above +(``wallpapers'', of course, to this package), the package provides +facilities for tiling images. All its commands come in pairs: one for +``general'' use, and one applying to the current page only. + +The \Package{draftwatermark} package uses the same author's +\Package{everypage} package to provide a simple interface for adding +textual (`DRAFT'-like) watermarks. + +The \Package{xwatermark} package provides very flexible watermarking, +with a ``modern'' (key-value) interface. + +More elaborate watermarks may be achieved using the \Package{eso-pic} +package, or by using \Package{everypage} (see below). +\Package{Eso-pic} attaches a \environment{picture} environment to +every page as it is shipped out; the user can put things into that +environment: the package provides commands for placing things at +certain useful points (like ``text upper left'' or ``text centre'') in +the picture, but the user is at liberty to do what he or she likes. + +\Package{Eso-pic} is, in turn, built upon the package +\Package{atbegshi}. That package has the capability to produce +watermarks \emph{on top of} the other material on the page; this +doesn't sound very ``watermark-like'', but can be useful on pages +where the watermark would otherwise be hidden by graphics or the +like. The \Package{atbegshi} command that \Package{eso-pic} uses is +\csx{AtBeginShipoutUpperLeft}; \csx{AtBeginShipoutUpperLeftForeground} +is what's needed instead to place the material on top of the rest of +the content of the page. + +\Package{Everypage} allows you to add ``something'' to every page, or +to a particular page; you therefore need to construct your own +apparatus for anything complicated. + +Finally, one can use the \ProgName{pdftk} untility; with it, the +command: +\begin{quote} +\begin{verbatim} +pdftk a.pdf background b.pdf output c.pdf +\end{verbatim} +\end{quote} +will recreate \File{a.pdf} as \File{c.pdf}, having used the first page +of \File{b.pdf} as background on every page. If you have a standard +background (``DRAFT'' or ``SECRET'', or whatever) used in several +files, \ProgName{pdftk} might well be attractive. + +\ProgName{Pdftk} is available as a command line tool; it is available +in most linux distritbutions, but may be downloaded from its +% ! line break +\href{http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/}{home site} +\begin{ctanrefs} +\item[atbegshi.sty]Distributed as part of \CTANref{oberdiek}[atbegshi] +\item[draftcopy.sty]\CTANref{draftcopy} +\item[draftwatermark.sty]\CTANref{draftwatermark} +\item[eso-pic.sty]\CTANref{eso-pic} +\item[everypage.sty]\CTANref{everypage} +\item[everyshi.sty]Distributed as part of \CTANref{ms}[everyshi] +\item[wallpaper.sty]\CTANref{wallpaper} +\end{ctanrefs} + +\Question[Q-landscape]{Typesetting things in landscape orientation} + +It's often necessary to typeset part of a document in landscape +orientation; to achieve this, one needs not only to change the page +dimensions, but also to instruct the output device to print the +strange page differently. + +There are two ``ordinary'' mechanisms for doing two slight variations +of landscape typesetting: +\begin{itemize} +\item If you have a single floating object that is wider than it is + deep, and will only fit on the page in landscape orientation, use + the \Package{rotating} package; this defines + \environment{sidewaysfigure} and \environment{sidewaystable} + environments which create floats that occupy a whole page. + + Note that \Package{rotating} has problems in a document that also + loads the \Package{float} package, which recommended in other + answers in these \acro{FAQ}s, for example that on + \Qref*{float placement}{Q-floats}. The \Package{rotfloat} package + loads \Package{rotating} for you, and smooths the interaction with + \Package{float}. +\item If you have a long sequence of things that need to be typeset in + landscape (perhaps a code listing, a wide \environment{tabbing} + environment, or a huge table typeset using \Package{longtable} or + \Package{supertabular}), use the \Package{lscape} package (or + \Package{pdflscape} if you're generating \acro{PDF} output, whether + using \PDFLaTeX{} or \ProgName{dvips} and generating \acro{PDF} from + that). Both packages define an environment \environment{landscape}, which + clears the current page and restarts typesetting in landscape + orientation (and clears the page at the end of the environment + before returning to portrait orientation). +\end{itemize} +No currently available package makes direct provision for typesetting +in both portrait and landscape orientation on the same page (it's not +the sort of thing that \TeX{} is well set-up to do). If such +behaviour was an absolute necessity, one might use the techniques +described in +% beware line-wrap +\Qref[question]{"flowing text around figures"}{Q-textflow}, and would +rotate the landscape portion using the rotation facilities of the +\Package{graphics} package. (Returning from landscape to portrait +orientation would be somewhat easier: the portrait part of the page +would be a bottom float at the end of the landscape section, with its +content rotated.) + +To set an entire document in landscape orientation, one might use +\Package{lscape} around the whole document. A better option is the +\pkgoption{landscape} option of the \Package{geometry} package; if you +also give it \pkgoption{dvips} or \pkgoption{pdftex} option, +\Package{geometry} also emits the rotation instructions to cause the +output to be properly oriented. The \Class{memoir} class has the same +facilities, in this respect, as does \Package{geometry}. + +A word of warning: most current \TeX{} previewers do not honour +rotation requests in \acro{DVI} files. +%% (the exception is +%% (the exceptions are the +%% \begin{htmlversion} +%% (\Qref{commercial}{Q-commercial}) \YandY{} previewer +%% \ProgName{dviwindo}, +%% \end{htmlversion} +%% \htmlignore +%% (commercial) \YandY{} previewer \ProgName{dviwindo} +%% (\Qref{}{Q-commercial}), +%% \endhtmlignore +%% and +%% the fp\TeX{} previewer Win\acro{DVI}). If your previewer is not +%% capable of rotation, +Your best bet is to convert your output to \PS{} or to \acro{PDF}, and +to view these `final' forms with an appropriate viewer. +\begin{ctanrefs} +\item[geometry.sty]\CTANref{geometry} +\item[graphics.sty]Distributed as part of \CTANref{graphics} +\item[longtable.sty]Distributed as part of \CTANref{2etools}[longtable] +\item[lscape.sty]Distributed as part of \CTANref{graphics}[lscape] +\item[memoir.cls]\CTANref{memoir} +\item[pdflscape.sty]Distributed with Heiko Oberdiek's packages + \CTANref{oberdiek}[pdflscape] +\item[rotating.sty]\CTANref{rotating} +\item[rotfloat.sty]\CTANref{rotfloat} +\item[supertabular.sty]\CTANref{supertabular} +\end{ctanrefs} + +\Question[Q-abspos]{Putting things at fixed positions on the page} + +\TeX{}'s model of the world is (broadly speaking) that the author +writes text, and \TeX{} and its macros decide how it all fits on the +page. This is not good news for the author who has, from whatever +source, a requirement that certain things go in exactly the right +place on the page. + +There \emph{are} places on the page, from which things may be hung, +and two \LaTeX{} packages allow you position things relative to such +points, thus providing a means of absolute positioning. + +The \Package{textpos} package aids the construction of pages from +``blobs'', dotted around over the page (as in a poster); you give it +the location, and it places your typeset box accordingly. + +The \Package{eso-pic} defines a ``shipout picture'' that covers the +page. The user may add \environment{picture}-mode commands to this +picture, which of course can include box placements as well as the +other rather stilted commands of \environment{picture}-mode. +(\Package{Eso-pic} requires the services of \Package{everyshi}, which +must therefore also be available.) +% +% Fortunately, in the \LaTeX{} world at least, there \emph{is} a fixed +% point on every page, to whit the page header. The package +% \Package{textpos} latches bits of typesetting to locations you +% specify, by fixing them to the page header, and thereby solves the +% problem. +\begin{ctanrefs} +\item[eso-pic.sty]\CTANref{eso-pic} +\item[everyshi.sty]Distributed as part of \CTANref{ms}[everyshi] +\item[textpos.sty]\CTANref{textpos} +\end{ctanrefs} + +\Question[Q-nopagebrk]{Preventing page breaks between lines} + +One commonly requires that a block of typeset material be kept on the +same page; it turns out to be surprisingly tricky to arrange this. + +\LaTeX{} provides a \environment{samepage} environment which claims it +does this sort of thing for you. It proceeds by setting infinite +penalties for all sorts of page-break situations; but in many +situations where you want to prevent a page break, +\environment{samepage} doesn't help. If you're trying to keep running +text together, you need to end the paragraph inside the environment +(see \Qref[question]{preserving paragraph parameters}{Q-paraparam}). +Also, if the things you are trying to keep together insert their own +pagebreak hints, \environment{samepage} has no power over them (though +list items' attempts~--- they suggest page breaks between items~--- +are subverted by \environment{samepage}). Naturally, if +\environment{samepage} \emph{does} work, it is capable of leaving +stuff jutting out at the bottom of the page. + +Another convenient trick is to set all the relevant stuff in a +\csx{parbox} (or a \environment{minipage} if it contains things like +verbatim text that may not be used in the argument of a \csx{parbox}). +The resulting box certainly \emph{won't} break between pages, but +that's not to say that it will actually do what you want it to do: +again, the box may be left jutting out at the bottom of the page. + +Why do neither of these obvious things work?~--- Because \TeX{} can't +really distinguish between infinitely awful things. +\environment{Samepage} will make any possible break point ``infinitely +bad'' and boxes don't even offer the option of breaks, but if the +alternative is the leave an infinitely bad few centimetres of blank +paper at the bottom of the page, \TeX{} will take the line of least +resistance and do nothing. + +This problem still arises even if you have \csx{raggedbottom} in +effect: \TeX{} doesn't notice the value of \emph{that} until it starts +actually shipping a page out. One approach is to set: +\begin{quote} +\begin{verbatim} +\raggedbottom +\addtolength{\topskip}{0pt plus 10pt} +\end{verbatim} +\end{quote} +The \texttt{10pt} offers a hint to the output routine that the column is +stretchable; this will cause \TeX{} to be more tolerant of the need to +stretch while building the page. If you're doing this as a temporary +measure, cancel the change to \csx{topskip} by: +\begin{quote} +\begin{verbatim} +\addtolength{\topskip}{0pt plus-10pt} +\end{verbatim} +\end{quote} +as well as resetting \csx{flushbottom}. (Note that the \texttt{10pt} never +actually shows up, because it is overwhelmed when the page is shipped +out by the stretchability introduced by \csx{raggedbottom}; however, it +could well have an effect if \csx{flushbottom} was in effect.) + +An alternative (which derives from a suggestion by Knuth in the +\TeX{}book) is the package \Package{needspace} or the \Class{memoir} class, +which both define a command \csx{needspace} whose argument tells it +what space is needed. If the space isn't available, the current page +is cleared, and the matter that needs to be kept together will be +inserted on the new page. For example, if 4~lines of text need to be +kept together, the sequence +\begin{quote} +\begin{verbatim} +\par +\needspace{4\baselineskip} +% the stuff that must stay together + +% now stuff we don't mind about +\end{verbatim} +\end{quote} +Yet another trick by Knuth is useful if you have a sequence of small +blocks of text that need, individually, to be kept on their own page. +Insert the command \csx{filbreak} before each small block, and the +effect is achieved. The technique can be used in the case of +sequences of \LaTeX{}-style sections, by incorporating \csx{filbreak} +into the definition of a command (as in % beware line break +\Qref[question]{patching commands}{Q-patch}). A simple and effective +patch would be: +\begin{quote} +\begin{verbatim} +\let\oldsubsubsection=\subsubsection +\renewcommand{\subsubsection}{% + \filbreak + \oldsubsubsection +} +\end{verbatim} +\end{quote} +While the trick works for consecutive sequences of blocks, it's +slightly tricky to get out of such sequences unless the sequence is +interrupted by a forced page break (such as \csx{clearpage}, which may +be introduced by a \csx{chapter} command, or the end of the document). +If the sequence is not interrupted, the last block is likely to be +forced onto a new page, regardless of whether it actually needs it. + +If one is willing to accept that not everything can be accomplished +totally automatically, the way to go is to typeset the document and to +check for things that have the potential to give trouble. In such a +scenario (which has Knuth's authority behind it, if one is to believe +the rather few words he says on the subject in the \TeX{}book) one can +decide, case by case, how to deal with problems at the last +proof-reading stage. At this stage, you can manually alter page +breaking, using either \csx{pagebreak} or \csx{clearpage}, or you can +place a \csx{nopagebreak} command to suppress unfortunate breaks. +Otherwise, you can make small adjustments to the page geometry, using +\csx{enlargethispage}. Supposing you have a line or two that stray: +issue the command \cmdinvoke{enlargethispage}{2\csx{baselineskip}} and +two lines are added to the page you're typesetting. Whether this +looks impossibly awful or entirely acceptable depends on the document +context, but the command remains a useful item in the armoury. + +Note that both \csx{pagebreak} and \csx{nopagebreak} take an optional +number argument to adjust how the command is to be interpreted. Thus +\cmdinvoke{pagebreak}[0], the command `suggests' that a page break +might be worth doing, whereas \cmdinvoke{pagebreak}[4] `demands' a +page break. Similarly \cmdinvoke{nopagebreak}[0] makes a suggestion, +while \cmdinvoke{nopagebreak}[4] is a demand. In both commands, the +default value of the optional argument is 4. +\begin{ctanrefs} +\item[memoir.cls]\CTANref{memoir} +\item[needspace.sty]\CTANref{needspace} +\end{ctanrefs} + +\Question[Q-parallel]{Parallel setting of text} + +It's commonly necessary to present text in two languages `together' on a +page, or on a two-page spread. For this to be satisfactory, one usually +needs some sort of alignment between the two texts. + +The \Package{parallel} package satisfies the need, permitting +typesetting in two columns (not necessarily of the same width) on one +page, or on the two opposing pages of a two-page spread. Use can be +as simple as +\begin{quote} +\begin{verbatim} +\usepackage{parallel} +... +\begin{Parallel}{}{]{3} + \colchunk{} + \colchunk{} + \colchunk{} + \colplacechunks + ... +\end{parcolumns} +\end{verbatim} +\end{quote} +The \meta{options} can specify the widths of the columns, whether to +place rules between the columns, whether to set the columns sloppy, +etc. Again, there are issues with colours, which are addressed by the +\Package{pdfcolparcolumns} package. + +The \Package{ledpar} package is distributed with (and integrated with) +the \Qref{\Package{ledmac} package}{Q-linenos}. It provides parallel +setting carefully integrated with the needs of a scholarly text, +permitting translation, or notes, or both, to be set in parallel with +the `base' text of the document. +\begin{ctanrefs} +\item[ledpar.sty]Distributed with \CTANref{ledmac} +\item[parallel.sty]\CTANref{parallel} +\item[parcolumns.sty]Distributed as part of \CTANref{sauerj}[parcolumns] +\item[pdfcolparallel.sty]Distributed as part of \CTANref{oberdiek}[pdfcolparallel] +\item[pdfcolparcolumns.sty]pdfcolparcolumns] +\end{ctanrefs} + +\Question[Q-epigraph]{Typesetting epigraphs} + +Epigraphs are those neat quotations that authors put at the start of +chapters (or even at the end of chapters: Knuth puts things at the +ends of chapters of the \TeX{}book). + +Typesetting them is a bit of a fiddle, but not impossible to do for +yourself. Fortunately, there are two packages that do the job, to +some extent; there are also facilities in the two ``big'' classes +(\Class{memoir} and \Class{koma-script}. + +The \Package{epigraph} package defines an \csx{epigraph} command, for +creating a single +epigraph (as at the top of a chapter): +\begin{quote} +\begin{verbatim} +\chapter{The Social Life of Rabbits} +\epigraph{Oh! My ears and whiskers!}% + {Lewis Carroll} +\end{verbatim} +\end{quote} +and an epigraphs environment, for entering more than one epigraph +consecutively, in a sort of list introduced by \csx{qitem} commands: +\begin{quote} +\begin{verbatim} +\begin{epigraphs} +\qitem{What I tell you three times is true}% + {Lewis Carroll} +\qitem{Oh listen do, I'm telling you!}% + {A.A. Milne} +\end{epigraphs} +\end{verbatim} +\end{quote} +The \csx{epigraphhead} command enables you to place your epigraph +\emph{above} a chapter header: +\begin{quote} +\begin{verbatim} +\setlength{\unitlength}{1pt} +... +\chapter{The Social Life of Rabbits} +\epigraphhead[]{% + \epigraph{Oh! My ears and whiskers!}% + {Lewis Carroll}% +} +\end{verbatim} +\end{quote} +The \meta{distance} says how far above the chapter heading the +epigraph is to go; it's expressed in terms of the \csx{unitlength} +that's used in the \environment{picture} environment; the package's +author recommends \texttt{70pt}. + +The package also offers various tricks for adjusting the layout of +chapter header (necessary if you've found a hugely long quotation for +an \csx{epigraphhead}), for patching the bibliography, for patching +\csx{part} pages, and so on. (Some of these suggested patches lead you +through writing your own package\dots{}) + +The \Package{quotchap} package redefines chapter headings (in a +moderately striking way), and provides an environment +\environment{savequotes} in which you can provide one (or more) +quotations to use as epigraphs. The facilities seem not as flexible +as those of \Package{epigraph}, but it's probably easier to use. + +The \Class{memoir} class offers all the facilities of the +\Package{epigraph} package. The \Class{Koma-script} classes have +commands \csx{setchapterpreamble} and \csx{dictum} to provide these +facilities. +\begin{ctanrefs} +\item[epigraph.sty]\CTANref{epigraph} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\item[quotchap.sty]\CTANref{quotchap} +\end{ctanrefs} + +% \Question[Q-outszwrng]{\AllTeX{} \acro{PDF} output prints at wrong size} + +% Having got everything \emph{else} right, you should be aware that the +% problem may have nothing to do with \AllTeX{} and everything to do +% with the program you use for printing. A regular cause for such +% problems lies with Acrobat Reader, which by default enables its option +% to scale pages to fit on the printable area of the paper. Since a +% printer can rarely print right to the edge, this means that pdf-files +% will be shrunk by some (small) factor (even if the pdf-file is +% formatted for A4, and your paper size is set to A4 as well). + +% Correcting this silliness is not very hard, but the exact details +% depend on the version of Acrobat Reader (or "Adobe Reader" from +% version 6.0 onwards) you have installed: +% \begin{itemize} +% \item Mac OS X, Adobe Reader 6:\\ +% in the print dialogue, on the ``copies \& pages'' pane, you'll find a +% popup menu titled ``Page Scaling''. Make sure that the menu reads +% ``None''. +% \item Windows, Adobe Reader 6:\\ +% in the print dialogue, select ``None'' from the drop-down list +% ``Page Scaling''. +% \item Windows, Linux Acrobat (Reader) 5.0:\\ +% In the print dialog, make sure the ``Shrink oversized pages to fit'' +% checkbox is unchecked. It may also be useful to uncheck the +% ``Expand small pages to fit paper size'' checkbox as well. +%\end{itemize} + +\subsection{Spacing of characters and lines} + +\Question[Q-linespace]{Double-spaced documents in \LaTeX{}} + +A quick and easy way of getting inter-line space for copy-editing is +to change \csx{baselinestretch}~--- \cmdinvoke{linespread}{1.2} (or, +equivalently \cmdinvoke{renewcommand}{\csx{baselinestretch}}{1.2}) may +be adequate. Note that \csx{baselinestretch} changes don't take +effect until you select a new font, so make the change in the preamble +before any font is selected. Don't try changing \csx{baselineskip}: +its value is reset at any size-changing command so that results will +be inconsistent. + +For preference (and certainly for a production document, such as a +dissertation or an article submission), use a line-spacing package. +The only one currently supported is \Package{setspace}. +\Package{Setspace} switches off double-spacing at places where even +the most die-hard official would doubt its utility (footnotes, figure +captions, and so on); it's very difficult to do this consistently if +you're manipulating \csx{baselinestretch} yourself. + +(Note: do \emph{not} be tempted by \Package{doublespace}~--- its +performance under current \LaTeX{} is at best problematical.) + +Of course, the real solution (other than for private copy editing) is +\emph{not} to use double-spacing at all. Universities, in particular, +have no excuse for specifying double-spacing in submitted +dissertations: \LaTeX{} is a typesetting system, not a +typewriter-substitute, and can (properly used) make single-spaced text +even more easily readable than double-spaced typewritten text. If you +have any influence on your university's system (for example, through +your dissertation supervisor), it may be worth attempting to get the +rules changed (at least to permit a ``well-designed book'' format). + +Double-spaced submissions are also commonly required when submitting +papers to conferences or journals. Fortunately (judging by the +questions from users in this author's department), this demand is +becoming less common. + +Documentation of \Package{setspace} appears as \TeX{} comments in the +package file itself. +\begin{ctanrefs} +\item[setspace.sty]\CTANref{setspace} +\end{ctanrefs} +\LastEdit{2013-10-28} + +\Question[Q-letterspace]{Changing the space between letters} + +A common technique in advertising copy (and other text whose actual +content need not actually be \emph{read}) is to alter the space +between the letters (otherwise known as the tracking). As a general +rule, this is a very bad idea: it detracts from legibility, which is +contrary to the principles of typesetting (any respectable font you +might be using should already have optimum tracking built into it). + +The great type designer, Eric Gill, is credited with saying ``he who +would letterspace lower-case text, would steal sheep''. (The +attribution is probably apocryphal: others are also credited with the +remark. Stealing sheep was, in the 19th century, a capital offence in +Britain.) As the remark suggests, though, letterspacing of upper-case +text is less awful a crime; the technique used also to be used for +emphasis of text set in Fraktur (or similar) fonts. + +Straightforward macros (usable, in principle, with any \TeX{} macro +package) may be found in \Package{letterspacing} (which is the name of +the \extension{tex} file). + +%%% the package has a serious bug in it, so suppress mention pro tem +%The \Package{tracking} package has similar facilities. + +A more comprehensive solution is to be found in the \Package{soul} +package (which is optimised for use with \LaTeX{}, but also works with +\plaintex{}). Soul also permits hyphenation of letterspaced text; +Gill's view of such an activity is not (even apocryphally) recorded. +(Spacing-out forms part of the name of \Package{soul}; the other half +is described in \Qref[question]{another question}{Q-underline}.) + +Possibly the `ultimate' in this field is the \Package{microtype}, +which uses the micro-typography capabilities of current \PDFTeX{} to +provide a \csx{textls} command, which operates according to parameters +declared in a \csx{SetTracking} command. \Package{Microtype}'s +`tracking' facility expands the natural spacing of the font itself, +rather than inserting space between characters. Ordinarily, +letter-spacing will destroy ligatures; however, this is \emph{wrong} +for some font styles (for example, \FontName{fraktur}), and the +package provides a means of protecting the ligatures in a +letter-spaced text. +\begin{ctanrefs} +\item[letterspacing.tex]\CTANref{letterspacing} +\item[microtype.sty]\CTANref{microtype} +\item[soul.sty]\CTANref{soul} +%\item[tracking.sty]\CTANref{tracking} +\end{ctanrefs} + +\Question[Q-ragright]{Setting text ragged right} + +The trick with typesetting ragged right is to be sure you've told the +\TeX{} engine ``make this paragraph ragged, but never \emph{too} +ragged''. The \LaTeX{} \csx{raggedright} command (and the +corresponding \environment{flushleft} environment) has a tendency to +miss the ``never'' part, and will often create ridiculously short +lines, for some minor benefit later in the paragraph. The +\plaintex{} version of the command doesn't suffer this failing, but +is rather conservative: it is loath to create too large a gap at the +end of the line, but in some circumstances~--- such as where +\Qref*{hyphenation is suppressed}{Q-hyphoff}~--- painfully large gaps +may sometimes be required. + +Martin Schr\"oder's \Package{ragged2e} package offers the best of both +worlds: it provides raggedness which is built on the \plaintex{} +model, but which is easily configurable. It defines easily-remembered +command (e.g., \csx{RaggedRight}) and environment (e.g., +\environment{FlushLeft}) names that are simply capitalised +transformations of the \LaTeX{} kernel originals. The documentation +discusses the issues and explains the significance of the various +parameters of \Package{ragged2e}'s operation. +\begin{ctanrefs} +\item[ragged2e.sty]Distributed as part of \CTANref{ms}[ragged2e] +\end{ctanrefs} + +\Question[Q-flushboth]{Cancelling \csx{ragged} commands} + +\LaTeX{} provides commands \csx{raggedright} and \csx{raggedleft}, but +none to cancel their effect. The \csx{centering} command is +implemented in the same way as the \csx{ragged*} commands, and suffers +in the same way. + +The following code (to be inserted in a package of your own, or as +\nothtml{internal \LaTeX{} code~---}% beware line break +\Qref{internal \LaTeX{} code}{Q-atsigns}) defines a command that +restores flush justification at both margins: +\begin{verbatim} +\def\flushboth{% + \let\\\@normalcr + \@rightskip\z@skip \rightskip\@rightskip + \leftskip\z@skip + \parindent 1.5em\relax} +\end{verbatim} +There's a problem with the setting of \csx{parindent} in the code: it's +necessary because both the \csx{ragged} commands set \csx{parindent} to +zero, but the setting isn't a constant of nature: documents using a +standard \LaTeX{} class with \pkgoption{twocolumn} option will have +\texttt{1.0em} by default, and there's no knowing what you (or some +other class) will have done. + +Any but a really old copy of Martin Schr\"oder's \Package{ragged2e} +package has a \csx{justifying} command to match its % ! line break +\Qref*{versions of the \LaTeX{} `ragged' commands}{Q-ragright}. The +package also provides a \environment{justify} environment, which +permits areas of justified text in a larger area which is ragged. +\begin{ctanrefs} +\item[ragged2e.sty]Distributed as part of \CTANref{ms}[ragged2e] +\end{ctanrefs} +% this package hasn't materialised, for some reason i don't now +% remember... +%% Donald Arseneau's \Package{flushboth} package provides this code, and +%% preserves a sensible value for \csx{parindent} (at begin document). +%% This still doesn't protect it against any change you might make to +%% \csx{parindent} within the body of your document. +%% \begin{ctanrefs} +%% \item[flushboth.sty]\CTANref{flushboth} +%% \end{ctanrefs} + +\subsection{Typesetting specialities} + +\Question[Q-verbfile]{Including a file verbatim in \LaTeX{}} + +A good way is to use Rainer Sch\"opf's \Package{verbatim} package, +which provides a command \csx{verbatiminput} that takes a file name as +argument: +\begin{quote} +\begin{verbatim} +\usepackage{verbatim} +... +\verbatiminput{verb.txt} +\end{verbatim} +\end{quote} +Another way is to use the \environment{alltt} environment, which +requires the \Package{alltt} package. The environment interprets its +contents `mostly' verbatim, but executes any \AllTeX{} commands it +finds: +\begin{quote} +\begin{verbatim} +\usepackage{alltt} +... +\begin{alltt} +\input{verb.txt} +\end{alltt} +\end{verbatim} +\end{quote} +of course, this is little use for inputting \AllTeX{} source +code\dots{} + +The \Package{moreverb} package extends the \Package{verbatim} package, +providing a \environment{listing} environment and a \csx{listinginput} +command, which line-number the text of the file. The package also has +a \csx{verbatimtabinput} command, that honours \acro{TAB} characters in +the input (the package's \environment{listing} environment and the +\csx{listinginput} command also both honour \acro{TAB}). + +The \Package{sverb} package provides verbatim input (without recourse +to the facilities of the \Package{verbatim} package): +\begin{quote} +\begin{verbatim} +\usepackage{sverb} +... +\verbinput{verb.txt} +\end{verbatim} +\end{quote} + +The \Package{fancyvrb} package offers configurable implementations of +everything \Package{verbatim}, \Package{sverb} and \Package{moreverb} +have, and more besides. It is nowadays the package of choice for the +discerning typesetter of verbatim text, but its wealth of facilities +makes it a complex beast and study of the documentation is strongly +advised. + +The \Class{memoir} class includes the relevant functionality of the +\Package{verbatim} and \Package{moreverb} packages. +\begin{ctanrefs} +\item[alltt.sty]Part of the \LaTeX{} distribution. +\item[fancyvrb.sty]\CTANref{fancyvrb} +\item[memoir.cls]\CTANref{memoir} +\item[moreverb.sty]\CTANref{moreverb} +\item[sverb.sty]Distributed as part of \CTANref{mdwtools}[sverb] +\item[verbatim.sty]Distributed as part of \CTANref{2etools}[verbatim] +\end{ctanrefs} + +\Question[Q-linenos]{Including line numbers in typeset output} + +For general numbering of lines, there are two packages for use with +\LaTeX{}, \Package{lineno} (which permits labels attached to +individual lines of typeset output) and \Package{numline}. +(\Package{Numline} is considered obsolete, but remains available from +the archive.) + +Both of these packages play fast and loose with the \LaTeX{} output +routine, which can cause problems: the user should beware\dots{} + +If the requirement is for numbering verbatim text, \Package{moreverb}, +or \Package{fancyvrb} (see % ! line break +\Qref[question]{including files verbatim}{Q-verbfile}) may be used. +Class \Class{memoir} also provides the necessary facilities. + +One common use of line numbers is in critical editions of texts, and +for this the \Package{edmac} package offers comprehensive support; +\Package{ledmac} is a \LaTeX{} port of \Package{edmac}. + +The \Package{vruler} package sidesteps many of the problems associated +with line-numbering, by offering (as its name suggests) a rule that +numbers positions on the page. The effect is good, applied to +even-looking text, but is poor in texts that involve breaks such as +interpolated mathematics or figures. Documentation of the package, in +the package itself, is pretty tough going, though there is an example +(also inside the package file). +\begin{ctanrefs} +\item[edmac]\CTANref{edmac} +\item[fancyvrb.sty]\CTANref{fancyvrb} +\item[ledmac.sty]\CTANref{ledmac} +\item[lineno.sty]\CTANref{lineno} +\item[memoir.cls]\CTANref{memoir} +\item[moreverb.sty]\CTANref{moreverb} +\item[numline.sty]\CTANref{numline} +\item[vruler.sty]\CTANref{vruler} +\end{ctanrefs} + +\Question[Q-codelist]{Code listings in \LaTeX{}} + +`Pretty' code listings are sometimes considered worthwhile by the +``ordinary'' programmer, but they have a serious place in +the typesetting of dissertations by computer science and other +students who are expected to write programs. Simple verbatim listings +of programs are commonly useful, as well. + +\begin{hyperversion} + \Qref{Verbatim listings}{Q-verbfile} are dealt with elsewhere, +\end{hyperversion} +\begin{flatversion} + Verbatim listings are dealt with elsewhere (\Qref{}{Q-verbfile}), +\end{flatversion} +as is the problem of % ! line break +\Qref*{typesetting algorithm specifications}{Q-algorithms}. + +The \Package{listings} package is widely regarded as the best bet for +formatted output (it is capable of parsing program source, within the +package itself), but there are several well-established packages that +rely on a pre-compiler of some sort. You may use \Package{listings} +to typeset snippets that you include within your source: +\begin{quote} +\begin{verbatim} +\usepackage{listings} +\lstset{language=C} +... +\begin{document} +\begin{lstlisting} +#include + +int main(int argc, char ** argv) +{ + printf("Hello world!\n"); + return 0; +} +\end{lstlisting} +\end{document} +\end{verbatim} +\end{quote} +or you can have it typeset whole files: +\begin{quote} +\begin{verbatim} +\usepackage{listings} +\lstset{language=C} +... +\begin{document} +\lstinputlisting{main.c} +\end{document} +\end{verbatim} +\end{quote} +These very simple examples may be decorated in a huge variety of ways, +and of course there are other languages in the package's vocabulary +than just \ProgName{C}\dots{} + +For a long time, advice on \AllTeX{} lists seemed to regard +\Package{listings} as the be-all and end-all on this topic. In the +last few years, viable alternatives have appeared + +\ProgName{Highlight} is attractive if you need more than one output +format for your program: as well as \AllTeX{} output, +\ProgName{highlight} will produce (\acro{X})\acro{HTML}, \acro{RTF} +and \acro{XSL}-\acro{FO} representations of your program listing. The +manual leads you through the details of defining a parameter file for +a ``new'' language, as well as the presentation details of a language. + +The \Package{minted} package is another alternative that offers +the means of creating new language definitions. It +requires that code be processed using an external (\ProgName{python}) +script, \href{http://pygments.org/}{\ProgName{Pygments}}. +\ProgName{Pygments}, in turn, needs a ``lexer'' that knows the +language you want to process; lots of these are available, for the +more commonly-used languages, and there is advice on ``rolling your +own'' on the % ! line break. +\ProgName{Pygments} site + +Usage of \Package{minted} can be as simple as +\begin{quote} + \cmdinvoke{begin}{minted}{\meta{language}}\\ + \dots{}\\ + \cmdinvoke{end}{minted} +\end{quote} +which processes the program code dynamically, at typesetting time~--- +though such usage is likely to require that % ! line break +\Qref*{separate processing be enabled}{Q-spawnprog}. + +On a rather different path, the package \Package{showexpl} supports +typesetting \alltex{} code and its typeset output, in parallel +`panes'. (Thiscould provide support for \alltex{} instruction texts, +or for papers in \tex{} user group publications. The package uses +\Package{listings} for its \alltex{} pane, and typesets the result +into a simple box, for the other pane. + +Longer-established, and variously less ``powerful'' systems include: +\begin{itemize} +\item The \ProgName{lgrind} system is a well-established + pre-compiler, with all the facilities one might need and a wide + repertoire of languages; it is derived from the even + longer-established \ProgName{tgrind}, whose output is based on + \plaintex{}. +\item The \ProgName{tiny_c2l} system is slightly more recent: users + are again encouraged to generate their own driver files for + languages it doesn't already deal with, but its ``tiny'' name + correctly hints that it's not a particularly elaborate system. +\item The \ProgName{C++2LaTeX} system comes with strong + recommendations for use with \acro{C} and \acro{C}++. +\item An extremely simple system is \ProgName{c2latex}, for which you + write \LaTeX{} source in your \acro{C} program comments. The + program then converts your program into a \LaTeX{} document for + processing. The program (implicitly) claims to be + ``self-documenting''. +\end{itemize} +\begin{ctanrefs} +\item[c2latex]\CTANref{c2latex} +\item[C++2LaTeX]\CTANref{c++2latex} +\item[highlight]\CTANref{highlight} +\item[lgrind]\CTANref{lgrind} +\item[listings.sty]\CTANref{listings} +\item[minted.sty]\CTANref{minted} +\item[showexpl.sty]\CTANref{showexpl} +\item[tgrind]\CTANref{tgrind} +\item[tiny\_c2l]\CTANref{tiny_c2l} +\end{ctanrefs} +\LastEdit{2013-03-28} + +\Question[Q-algorithms]{Typesetting pseudocode in \LaTeX{}} + +There is no consensus on the `right' way to typeset pseudocode. +Consequently, there are a variety of \LaTeX{} packages to choose from +for producing \ae{}sthetically pleasing pseudocode listings. + +Pseudocode differs from actual program listings in that it lacks +strict syntax and semantics. Also, because pseudocode is supposed to +be a clear expression of an algorithm it may need to incorporate +mathematical notation, figures, tables, and other \LaTeX{} features +that do not appear in conventional programming languages. +\begin{wideversion} % hyper? + \Qref{Typesetting program listings}{Q-codelist} is described + elsewhere. +\end{wideversion} +\begin{narrowversion} % non-hyper + Typesetting program listings is described elsewhere + (\Qref{}{Q-codelist}). +\end{narrowversion} + +You can certainly create your own environment for typesetting +pseudocode using, for example, the \environment{tabbing} or +\environment{list} environments~--- it's not difficult, but it may +prove boring. So it's worth trying the following packages, all +designed specifically for typesetting pseudocode. + +The \Package{algorithms} bundle (which contains packages +\Package{algorithm} and \Package{algorithmic}, both of which are +needed for ordinary use) has a simple interface and produces fairly +nice output. It provides primitives for statements, which can contain +arbitrary \LaTeX{} commands, comments, and a set of iterative and +conditional constructs. These primitives can easily be redefined to +produce different text in the output. However, there is no support +for adding new primitives. Typesetting the pseudocode itself is +performed in \Package{algorithmic}; the \Package{algorithms} package +uses the facilities of the \Package{float} package to number +algorithms sequentially, enable algorithms to float like figures or +tables, and support including a List of Algorithms in a document's +front matter. + +Packages in the \Package{algorithmicx} bundle are similar both in +concept and output form to \Package{algorithmic} but additionally +provide support for adding new keywords and altering the formatting. +It provides the \Package{algpseudocode} package which is (almost) a +drop-in replacement for \Package{algorithmic}. Another package in the +bundle, \Package{algpascal}, uses Pascal-like keywords, indents +differently from \Package{algpseudocode}, and puts command arguments +in maths mode instead of text mode. There is no floating environment +but \Package{algorithmicx}, like \Package{algorithmic}, is compatible +with the \Package{algorithm} package. (There have been reports of +difficulty defining new commands to fit with the package; +unfortunately, the author is not available to comment.) + +The \Package{alg} package, like \Package{algorithms}, offers a +floating algorithm environment with all of the ensuing niceties. +\Package{alg}, however, can caption its floats in a variety of +(natural) languages. In addition, \Package{alg} unlike +\Package{algorithms}, makes it easy to add new constructs. + +The \Package{newalg} package has a somewhat similar interface to +\Package{algorithms}, but its output is designed to mimic the rather +pleasant typesetting used in the book ``\emph{Introduction to Algorithms}'' +by Corman, Leiserson, Rivest and Stein. Unfortunately, +\Package{newalg} does not support a floating environment or any +customisation of the output. + +``\emph{Bona fide}'' use of the style of ``Introduction to +Algorithms'' may be achieved with Cormen's own \Package{clrscode}: +this is the package as used in the second edition of the book. + +Similarly, the style of % ! line break +``\emph{Combinatorial Algorithms: Generation, Enumeration and Search}'' +is supported by the \Package{pseudocode} package, written by the +authors of the book. It has the common `Pascal-like' style, and has +some interesting constructs for what one thinks of as Pascal blocks. + +The \Package{algorithm2e} is of very long standing, and is widely used +and recommended. It loads the \Package{float} package to provide the +option of floating algorithm descriptions, but you can always use the +``\texttt{H}'' option of \Package{float} to have the algorithm appear +``where you write it''. + +The usage of the \Package{program} package is a little different from +that of the other packages. It typesets programs in maths mode +instead of text mode; and linebreaks are significant. +\Package{program} lacks a floating environment but does number +algorithms like \Package{alg} and \Package{algorithms}. Customisation +and extension are not supported. Documentation of the +\Package{program} package (such as it is) appears in a file +\File{program.msg} in the distribution. + +None of the above are perfect. The factors that should influence your +choice of package include the output style you prefer, how much you +need to extend or modify the set of keywords, and whether you require +algorithms to float like figures and tables. +%% +%% Documentation availability: +%% \begin{description} +%% \item[\Package{algorithms} bundle] is provided in \File{algorithms.ps} +%% (also available as LaTeX{} source). The documentation speaks as if +%% the two packages of the bundle were indeed one, called +%% \Package{algorithms}. +%% \item[\Package{program} package] (such as it is) appears in a file +%% \File{program.msg}. +%% \item[\Package{clrscode} package] is to be found in +%% \File{clrscode.pdf} in the distribution. +%% \item[\Package{algorithm2e} package] is to be found in +%% \File{algorithm2e.tex} in the distribution (it needs the package +%% itself when you process it). +%% \end{description} +\begin{ctanrefs} +\item[algorithm2e.sty]\CTANref{algorithm2e} +\item[algorithmicx\nothtml{\rmfamily} bundle]\CTANref{algorithmicx} +\item[algorithms\nothtml{\rmfamily} bundle]\CTANref{algorithms} +\item[alg.sty]\CTANref{alg} +\item[clrscode.sty]\CTANref{clrscode} +\item[float.sty]\CTANref{float} +\item[newalg.sty]\CTANref{newalg} +\item[program.sty]\CTANref{program} +\item[pseudocode.sty]\CTANref{pseudocode} +\end{ctanrefs} +\LastEdit{2011-10-12} + +\Question[Q-makeindex]{Generating an index in \AllTeX{}} + +Making an index is not trivial; what to index, and how to index it, is +difficult to decide, and uniform implementation is difficult to +achieve. You will need to mark all items to be indexed in your text +(typically with \csx{index} commands). + +It is not practical to sort a large index within \TeX{}, so a +post-processing program is used to sort the output of one \TeX{} run, +to be included into the document at the next run. + +The following programs are available: +\begin{description} +\item[makeindex] Comes with most distributions~--- a good workhorse, + but is not well-arranged to deal with other sort orders than the + canonical \acro{ASCII} ordering. + + The \Package{makeindex} documentation is a good source of + information on how to create your own index. \Package{Makeindex} can + be used with some \TeX{} + macro packages other than \LaTeX{}, such as \nothtml{\Eplain\ (}% + \Qref{Eplain}{Q-eplain}\nothtml{)}, and \TeX{} (whose macros can + be used independently with \plaintex{}). +\item[idxtex] for \LaTeX{} under \acro{VMS}; \ProgName{idxtex} comes + with a glossary-maker \ProgName{glotex}. +\item[texindex(1)] A witty little shell-script using \ProgName{sed} + and \ProgName{awk}; designed for \LaTeX{} under Unix. +\item[texindex(2)] The \Qref*{Texinfo}{Q-texinfo} system also offers a program + \ProgName{texindex}, whose source is to be found in the + \ProgName{texinfo} distribution. The \Package{ltxindex} package + provides macros that enable \LaTeX{} users to use this + \ProgName{texindex}. +\item[xindy] arose from frustration at the difficulty of making a + multi-language version of \ProgName{makeindex}. It is designed to + be a successor to \ProgName{makeindex}, by a team that included the + then-current maintainer of \ProgName{makeindex}. It successfully + addresses many of \ProgName{makeindex}'s shortcomings, including + difficulties with collation order in different languages, and it is + highly flexible. + + \ProgName{Xindy} itself will work with Unicode (UTF-8) encoded + \latex{} input. A separate application (\ProgName{texindy}) deals + with `standard' \latex{} source, processes it and passes + `sanitised' text to \ProgName{Xindy}. +\end{description} +\begin{ctanrefs} +\item[idxtex]\CTANref{glo+idxtex} +\item[ltxindex.sty]\CTANref{ltxindex} +\item[makeindex]\CTANref{makeindex} +\item[makeindex (Macintosh)]\CTANref{macmakeindex} +\item[texindex \nothtml{\upshape\rmfamily}(the script)]\CTANref{texindex} +\item[texindex \nothtml{\upshape\rmfamily}(the program)]Distributed + with \CTANref{texinfo} +\item[texsis (system)]\CTANref{texsis} +\item[texsis (makeindex support)]\CTANref{texsis-index} +\item[xindy]\CTANref{xindy} +\end{ctanrefs} + +\Question[Q-setURL]{Typesetting \acro{URL}s} + +\acro{URL}s tend to be very long, and contain characters that would +naturally prevent them being hyphenated even if they weren't typically +set in \csx{ttfamily}, verbatim. Therefore, without special treatment, +they often produce wildly overfull \csx{hbox}es, and their typeset +representation is awful. + +There are three packages that help solve this problem: +\begin{itemize} +\item The \Package{path} package, which defines a \csx{path} command. + The command defines each potential break character as a + \csx{discretionary}, and offers the user the opportunity of + specifying a personal list of potential break characters. Its chief + disadvantage is fragility in \LaTeX{} moving arguments. The +% beware line breaks + \Qref*{\Eplain{} macros}{Q-eplain}~--- define a similar \csx{path} command. + + \Package{Path}, though it works in simple situations, makes no + attempt to work with \LaTeX{} (it is irremediably fragile). Despite + its long and honourable history, it is no longer recommended for + \LaTeX{} use. +\item The \Package{url} package, which defines an \csx{url} command + (among others, including its own \csx{path} command). The command + gives each potential break character a maths-mode `personality', and + then sets the \acro{URL} itself (in the user's choice of font) in + maths mode. It can produce (\LaTeX{}-style) `robust' commands + % beware line break within paren + (\htmlonly{see }\Qref{use of \csx{protect}}{Q-protect}) for use + within moving arguments. + + The package ordinarily ignores spaces in the \acro{URL}, but + unfortunately \acro{URL}s that contain spaces do exist; to typeset + them, call the package with the \pkgoption{obeyspaces} option. Two + other useful options allow line breaks in the \acro{URL} in places + where they are ordinarily suppressed to avoid confusion: + \pkgoption{spaces} to allow breaks at spaces (note, this requires + \pkgoption{obeyspaces} as well, and \pkgoption{hyphens} to allow + breaks after hyphens. (Note that the package \emph{never} does + ``ordinary'' hyphenation of names inside an \acro{URL}.) + + It is possible to use the \Package{url} package in \plaintex{}, + with the assistance of the \Package{miniltx} package (which was + originally developed for using the \LaTeX{} graphics package in + \plaintex{}). A small patch is also necessary: the required + sequence is therefore: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\input miniltx +\expandafter\def\expandafter\+% + \expandafter{\+} +\input url.sty +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\input miniltx +\expandafter\def\expandafter\+\expandafter{\+} +\input url.sty +\end{verbatim} +\end{wideversion} +\end{quote} +\item The \Package{hyperref} package, which uses the typesetting code + of \Package{url}, in a context where the typeset text forms the + anchor of a link. +\end{itemize} + +The author of this answer prefers the (rather newer) \Package{url} +package (directly or indirectly); both \Package{path} and +\Package{url} work well with \plaintex{} (though of course, the fancy +\LaTeX{} facilities of \Package{url} don't have much place there). +(\Package{hyperref} isn't available in a version for use with \plaintex{}.) + +Note that neither \csx{path} (from package \Package{path}) nor \csx{url} (from +package \Package{url}) is robust (in the \LaTeX{} sense). If you need +a \acro{URL} to go in a moving argument, you need the command +\csx{urldef} from the \Package{url} package. So one might write: +\begin{quote} +\begin{verbatim} +\urldef\faqhome\url{http://www.tex.ac.uk/faq} +\end{verbatim} +\end{quote} +after which, \csx{faqhome} is robust. + +Documentation of both package \Package{path} and package \Package{url} +is in the package files. +\begin{ctanrefs} +\item[hyperref.sty]\CTANref{hyperref} +\item[miniltx.tex]Distributed as part of \CTANref{graphics-plain}[miniltx] +\item[path.sty]\CTANref{path} +\item[url.sty]\CTANref{url} +\end{ctanrefs} + +\Question[Q-music]{Typesetting music in \tex{}} + +The current best bet for music typesetting is to use +\Package{musixtex}. \Package{Musixtex} is a three-pass system that +has a \tex{}-based pass, a processing pass and then a further \tex{} +pass. The middle pass, a program called \ProgName{musixflx}, +optimises the spacing and sorts out slurs and ties. +\Package{Musixtex} is demanding of \tex{} resources, and any +significant score requires that typesetting is done using \etex{}, +whose expanded variable- and box-register ranges allow for more of the +``parallel'' activities that abound in a music score. +Of course, \Package{musixtex} also requires music fonts; those are +available in a separate package on the archive. + +\Package{Musixtex} requires pretty arcane input; most people using it +actually prepare (less obscure) input for \ProgName{pmx}, whose output +is \tex{} input suitable for \Package{musixtex}. + +A further preprocessor, \ProgName{M-Tx}, allows preparation of music +with lyrics; \ProgName{M-Tx}'s output is fed into \ProgName{pmx}, and +thence to \Package{musixtex}. + +An alternative path to music examples within a \alltex{} document is +\href{http://www.lilypond.org}{\ProgName{Lilypond}}. +\ProgName{Lilypond} is (at heart) a batch music typesetting system +with plain text input that does most of its work without \tex{}. +\ProgName{Lilypond}'s input syntax is less cryptic than is +MusiX\TeX{}'s, though similar quality is achieved. The +\ProgName{lilypond} +\href{http://lilypond.org/web/about/faq}{\acro{FAQ}} mentions programs +with graphical user interfaces, that export lilypond output. + +For occasional music references (sharp and flat signs, notes, clefs +and so on, there is a (\latex{}) package (with associated font) called +\Package{lilyglyphs}. This uses \progname{lilypond}'s fonts (which +are included in the package), and also provides the means to add stuff +from other sources. + +Another alternative in the production of music is the \acro{ABC} +notation, which was developed to notate the traditional music of +Western Europe (which can be written on a single stave), though it can +be used much more widely. A front end to \Package{musictex} (see +below), \ProgName{abc2mtex}, makes \acro{ABC} typesetting possible. + +The program \ProgName{midi2tex} can also generate \Package{musictex} +output, from \acro{MIDI} files. + +The history of music in \tex{} goes back some time; the earliest +``working'' macros were Mu\tex{}, by Angelika Schofer and Andrea +Steinbach. Mu\tex{} was very limited, but it was some time before +Daniel Taupin took up the baton, and developed Music\TeX{}, which +allows the typesetting of polyphonic and other multiple-stave music; +Music\TeX{} remains available, but is no longer recommended. + +The first version of Musix\tex{} was developed by Andreas Egler, but +he withdrew from the project to work on another package, Opus\tex{}. +That never reached the mainstream, and is no longer maintained. The +current recommended way of doing Opus\tex{}'s job is +\href{http://home.gna.org/gregorio/}{\ProgName{gregorio}}, which can +in principle feed into a \tex{}-based document. + +Once Andreas Egler had withdrawn (his last version of +\Package{musixtex} is preserved on the archive), Daniel Taupin took up +the development, leading to the \Package{musixtex} used today. +\begin{ctanrefs} +\item[abc2mtex]\CTANref{abc2mtex} +\item[lilyglyphs]\CTANref{lilyglyphs} +\item[M-Tx]\CTANref{m-tx} +\item[midi2tex]\CTANref{midi2tex} +\item[musictex]\CTANref{musictex} +% ! line breaks +\item[musixtex \nothtml{\rmfamily}(Taupin's version)]\CTANref{musixtex} +\item[musixtex \nothtml{\rmfamily}(Egler's version)]\CTANref{musixtex-egler} +\item[musixtex \nothtml{\rmfamily}fonts]\CTANref{musixtex-fonts} +\item[mutex]\CTANref{mutex} +\item[pmx]\CTANref{pmx} +\end{ctanrefs} +\LastEdit{2013-09-27} + +\Question[Q-parskip]{Zero paragraph indent} + +The conventional way of typesetting running text has no separation +between paragraphs, and the first line of each paragraph in a block of +text indented. + +In contrast, one common convention for typewritten text was to have no +indentation of paragraphs; such a style is often required for +``brutalist'' publications such as technical manuals, and in styles +that hanker after typewritten manuscripts, such as +officially-specified dissertation formats. + +Anyone can see, after no more than a moment's thought, that if the +paragraph indent is zero, the paragraphs must be separated by blank +space: otherwise it is sometimes going to be impossible to see the +breaks between paragraphs. + +The simple-minded approach to zero paragraph indentation is thus: +\begin{quote} +\begin{verbatim} +\setlength{\parindent}{0pt} +\setlength{\parskip}{\baselineskip} +\end{verbatim} +\end{quote} +and in the very simplest text, it's a fine solution. + +However, the non-zero \csx{parskip} interferes with lists and the like, +and the result looks pretty awful. The \Package{parskip} package +patches things up to look reasonable; it's not perfect, but it deals +with most problems. + +The Netherlands Users' Group's set of classes includes an +\Class{article} equivalent (\Class{artikel3}) and a \Class{report} +equivalent (\Class{rapport3}) whose design incorporates zero paragraph +indent and non-zero paragraph skip. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\acro{NTG} classes]\CTANref{ntgclass} +\item[parskip.sty]\CTANref{parskip} +\end{ctanrefs} +\LastEdit{2011-04-01} % yes, really + +\Question[Q-dropping]{Big letters at the start of a paragraph} + +A common style of typesetting, now seldom seen except in newspapers, +is to start a paragraph (in books, usually the first of a chapter) +with its first letter set large enough to span several lines. + +This style is known as ``dropped capitals'', or (in French) +\latexhtml{``lettrines''}{\htmlentity{laquo}lettrines\htmlentity{raquo}}, +and \TeX{}'s primitive facilities for hanging indentation make its +(simple) implementation pretty straightforward. + +The \Package{dropping} package does the job simply, but has a curious +attitude to the calculation of the size of the font to be used for the +big letters. Examples appear in the package documentation, so before +you process the \extension{dtx}, the package itself must already be +installed. Unfortunately, \Package{dropping} has an intimate relation +to the set of device drivers available in an early version of the +\LaTeX{} graphics package, and it cannot be trusted to work with +modern offerings such as \PDFTeX{} or \acro{DVI}pdfm, let +alone such modernisms as \xetex{}. As a result, the package is widely +deprecated, nowadays. + +The more recent \Package{lettrine} package is generally more reliable. +It has a well-constructed array of options, and an impressive set of +examples adds to the package's document. +\begin{ctanrefs} +\item[dropping]\CTANref{dropping} +\item[lettrine]\CTANref{lettrine} +\end{ctanrefs} +\LastEdit{2014-01-22} + +\Question[Q-dec_comma]{The comma as a decimal separator} + +\TeX{} embodies the British/American cultural convention of using a +period as the separator between the whole number and the decimal +fraction part of a decimal number. Other cultures use a comma as +separator, but if you use a comma in maths mode you get a small space +after it; this space makes a comma that is used as a decimal separator +look untidy. + +A simple solution to this problem, in maths mode, is to type +\texttt{3}\marg{,}\texttt{14} in place of \texttt{3,14}. While such a +technique may produce the right results, it is plainly not a +comfortable way to undertake any but the most trivial amounts of +typing numbers. + +Therefore, if you need to use commas as decimal separator, you will +probably welcome macro support. There are two packages that +can help relieve the tedium: \Package{icomma} and \Package{ziffer}. + +\Package{Icomma} ensures that there will be no extra space after a +comma, unless you type a space after it (as in \texttt{f(x, y)}~--- in +the absence of the package, you don't need that space), in which case +the usual small space after the comma appears. \Package{Ziffer} is +specifically targeted at the needs of those typesetting German, but +covers the present need, as well as providing the double-minus sign +used in German (and other languages) for the empty `cents' part of an +amount of currency. + +The \Package{numprint} package provides a command +\cmdinvoke*{numprint}{number} that prints its argument according to +settings you give it, or according to settings chosen to match the +language you have selected in \Package{babel}. The formatting works +equally well in text or maths. The command is very flexible (it can also +group the digits of very `long' numbers), but is inevitably less +convenient than \Package{icomma} or \Package{ziffer} if you are typing a +lot of numbers. +\begin{ctanrefs} +\item[icomma.sty]Distributed as part of \CTANref{was}[icomma] +\item[numprint.sty]\CTANref{numprint} +\item[ziffer.sty]\CTANref{ziffer} +\end{ctanrefs} + +\Question[Q-breakbox]{Breaking boxes of text} + +\AllTeX{} boxes may not be broken, in ordinary usage: once you've +typeset something into a box, it will stay there, and the box will jut +out beyond the side or the bottom of the page if it doesn't fit in the +typeset area. + +If you want a substantial portion of your text to be framed (or +coloured), the restriction imposes a serious restriction. +Fortunately, there are ways around the problem. + +The \Package{framed} package provides \environment{framed} and +\environment{shaded} environments; both put their content into +something which looks like a framed (or coloured) box, but which +breaks as necessary at page end. The environments ``lose'' footnotes, +marginpars and head-line entries, and will not work with +\Package{multicol} or other column-balancing macros. The +\Class{memoir} class includes the functionality of the +\Package{framed} package. + +The \Package{mdframed} package does the same job, using a different +algorithm. The package also provides means of defining +`private' framed environments, whose parameters are set at definition +time, thus saving considerable effort in documents with many framed +boxes. Its restrictions seem much the same as those of +\Package{framed}; this is as one would expect, but the list is +noticeably different in the two packages' documentation. + +The \Package{boites} package provides a \environment{breakbox} +environment; examples of its use may be found in the distribution, and +the package's \File{README} file contains terse documentation. The +environments may be nested, and may appear inside +\environment{multicols} environments; however, floats, footnotes and +marginpars will be lost. + +For \plaintex{} users, the facilities of the \Package{backgrnd} +package may be useful; this package subverts the output routine to +provide vertical bars to mark text, and the macros are clearly marked +to show where coloured backgrounds may be introduced (this requires +\Package{shade}, which is distributed as tex macros and +device-independent \MF{} for the shading). The author of +\Package{backgrnd} claims that the package works with \LaTeXo{}, but +there are reasons to suspect that it may be unstable working with +current \LaTeX{}. +\begin{ctanrefs} +\item[backgrnd.tex]\CTANref{backgrnd} +\item[boites.sty]\CTANref{boites} +\item[framed.sty]\CTANref{framed} +\item[mdframed.sty]\CTANref{mdframed} +\item[memoir.cls]\CTANref{memoir} +\item[shade.tex]\CTANref{shade} +\end{ctanrefs} +\LastEdit{2012-02-14} + +\Question[Q-overstrike]{Overstriking characters} + +This may be used, for example, to indicate text deleted in the course +of editing. Both the \Package{ulem} and the \Package{soul} packages +provide the necessary facilities. + +Overstriking with an ``attached'' comment may be achieved using the +\Package{pdfcomment} package, to which you can give optional arguments +with all sorts of detail. The comment text is encoded using an Adobe +`annotation'; unfortunately, support for these annotations is not a +common feature of \acro{PDF} viewers, but if you can safely assume +that your audience will use \ProgName{Acrobat Reader}, the facility +provides that extra ``shine'' that business users so love. + +Overstriking for % beware line break +\Qref*{cancellation in maths expressions}{Q-cancellation} is achieved +by a different mechanism. + +Documentation of \Package{ulem} is in the package file. +\begin{ctanrefs} +\item[pdfcomment.sty]\CTANref{pdfcomment} +\item[soul.sty]\CTANref{soul} +\item[ulem.sty]\CTANref{ulem} +\end{ctanrefs} +\LastEdit{2013-08-29} + +\Question[Q-upquot]{Realistic quotes for verbatim listings} + +The \texttt{cmtt} font has ``curly'' quotes\nothtml{ (\texttt{`thus'})}, +which are pleasing on the eye, but don't really tally with what one +sees on a modern % beware line break +\ProgName{xterm}\nothtml{ (which look like \texttt{\textasciigrave this\textquotesingle})}. + +The appearance of these quotes is critical in program listings, +particularly in those of Unix-like shell scripts. The +\Package{upquote} package modifies the behaviour of the +\environment{verbatim} environment so that the output is a clearer +representation of what the user must type. +\begin{ctanrefs} +\item[upquote.sty]\CTANref{upquote} +\end{ctanrefs} + +\Question[Q-time]{Printing the time} + +\TeX{} has a primitive register that contains ``the number of minutes +since midnight''; with this knowledge it's a moderately simple +programming job to print the time (one that no self-respecting +\plaintex{} user would bother with anyone else's code for). + +However, \LaTeX{} provides no primitive for ``time'', so the +non-programming \LaTeX{} user needs help. + +Two packages are available, both providing ranges of ways of printing +the date, as well as of the time: this question will concentrate on +the time-printing capabilities, and interested users can investigate +the documentation for details about dates. + +The \Package{datetime} package defines two time-printing functions: +\csx{xxivtime} (for 24-hour time), \csx{ampmtime} (for 12-hour time) and +\csx{oclock} (for time-as-words, albeit a slightly eccentric set of +words). + +The \Package{scrtime} package (part of the compendious +\Class{KOMA-Script} bundle) takes a package option (\pkgoption{12h} or +\pkgoption{24h}) to specify how times are to be printed. The command +\csx{thistime} then prints the time appropriately (though there's no +\emph{am} or \emph{pm} in \pkgoption{12h} mode). The \csx{thistime} +command also takes an optional argument, the character to separate the +hours and minutes: the default is of course \texttt{:}. +\begin{ctanrefs} +\item[datetime.sty]\CTANref{datetime} +\item[scrtime.sty]Distributed as part of \CTANref{koma-script} +\end{ctanrefs} + +\Question[Q-the-commands]{Redefining counters' \csx{the-}commands} + +Whenever you request a new \LaTeX{} counter, \LaTeX{} creates a bunch +of behind-the-scenes commands, as well as defining the counter +itself. + +Among other things, \cmdinvoke*{newcounter}{fred} creates a command +\csx{the}\texttt{\emph{fred}}, which expands to ``the value of +\texttt{\emph{fred}}'' when you're typesetting. + +The definition of \csx{the}\texttt{\emph{fred}} should express the +value of the counter: it is almost always always a mistake to use the +command to produce anything else. The value may reasonably be +expressed as an arabic, a roman or a greek number, as an alphabetic +expression, or even as a sequence (or pattern of) symbols. If you +need a decision process on whether to re-define +\csx{the}\texttt{\emph{fred}}, consider what might happen when you do +so. + +So, for example, if you want your section numbers to be terminated by +a period, you could make \csx{thesection} expand with a terminating +period. However, such a change to \csx{thesection} makes the +definition of \csx{thesubsection} look distinctly odd: you are going to +find yourself redefining things left, right and centre. Rather, use +the standard techniques for % beware line break +\Qref*{adjusting the presentation of section numbers}{Q-seccntfmt}. + +Or, suppose you want the page number to appear at the bottom of each +page surrounded by dashes (as in +``\texttt{-}{}\texttt{-\textasciitilde}\texttt{nnn\textasciitilde-}{}\texttt{-}''). +If you try to achieve this by redefining \csx{thepage}, problems will +arise from the use of the page number in the table of contents (each +number will have the dashes attached), and \csx{pageref} references +will be oddly modified. In this case, the change of appearance is +best done by redefining the page style itself, perhaps using +\Qref*{package \Package{fancyhdr}}{Q-fancyhdr}. + +\subsection{Tables of contents and indexes} + +\Question[Q-tocloft]{The format of the Table of Contents, etc.} + +The formats of entries in the table of contents (\acro{TOC}) are +controlled by a number of internal commands (discussed in section~2.3 +of \Qref*{\emph{The \LaTeX{} Companion}}{Q-latex-books}. The commands +\csx{@pnumwidth}, \csx{@tocrmarg} and \csx{@dotsep} control the space +for page numbers, the indentation of the right-hand margin, and the +separation of the dots in the dotted leaders, respectively. The +series of commands named \csx{l@\emph{xxx}}, where \texttt{\emph{xxx}} +is the name of a sectional heading (such as \texttt{chapter} or +\texttt{section}, \dots{}\@) control the layout of the corresponding +heading, including the space for section numbers. All these internal +commands may be individually redefined to give the effect that you +want. + +All that work may be avoided, using the package \Package{tocloft} +which provides a set of user-level commands that may be used to change +the \acro{TOC} formatting. Since exactly the same mechanisms are used +for the List of Figures and List of Tables, the layout of these +sections may be controlled in the same way. + +The \Package{etoc} package offers similar flexibility, together with +multicolumn tables of contents and boxes around tables (and the like). + +The \Class{KOMA-Script} classes provides an optional variant structure +for the table of contents, and calculates the space needed for the +numbers automatically. The \Class{memoir} class includes the functionality +of \Package{tocloft}. +\begin{ctanrefs} +\item[etoc.sty]\CTANref{etoc} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\item[tocloft.sty]\CTANref{tocloft} +\end{ctanrefs} +\LastEdit{2012-12-07} + +\Question[Q-secnumdep]{Unnumbered sections in the Table of Contents} + +The way the relevant parts of sectioning commands work is exemplified +by the way the \csx{chapter} command uses the counter \texttt{secnumdepth} +(described in Appendix~C of the \LaTeX{} manual): +\begin{enumerate} +\item put something in the \extension{aux} file, which will appear in + the \extension{toc}; +\htmlignore +\item if \ensuremath{\texttt{secnumdepth} \geq 0}, +\endhtmlignore +\begin{htmlversion} +\item if the \texttt{secnumdepth} counter is greater than or equal to + zero, +\end{htmlversion} + increase the counter for the chapter and write it out. +\item write the chapter title. +\end{enumerate} +Other sectioning commands are similar, but with other values used in +the test. + +So a simple way to get headings of funny `sections' such as prefaces +in the table of contents is to use the counter: +\begin{quote} +\begin{verbatim} +\setcounter{secnumdepth}{-1} +\chapter{Preface} +\end{verbatim} +\end{quote} +Unfortunately, you have to set \texttt{secnumdepth} back to its usual +value (which is~2 in the standard styles) before you do any `section' +which you want to be numbered. + +Similar settings are made, automatically, in the \LaTeX{} book class by +the \csx{frontmatter} and \csx{backmatter} commands. + +The value of the counter \texttt{tocdepth} controls which headings +will be finally printed in the table of contents; it is normally set +in the preamble and is a constant for the document. The package +\Package{tocvsec2} package takes the tedium out of changing the +\texttt{secnumdepth} and/or the \texttt{tocdepth} counter values at +any point in the body of the document; the commands (respectively) +\csx{setsecnumdepth} and \csx{settocdepth} make the changes based on +the \emph{name} of the sectional unit (\texttt{chapter}, +\texttt{section}, etc.\@). + +The package \Package{abstract} (see % line break! +\Qref[question]{one-column abstracts}{Q-onecolabs}) includes an option +to add the \texttt{abstract} to the table of contents, while the +package \Package{tocbibind} has options to include the table of +contents itself, the \texttt{bibliography}, \texttt{index}, etc., to +the table of contents. + +The \Class{KOMA-Script} classes have commands \csx{addchap} and +\csx{addled}, which work like \csx{chapter} and \csx{section} but +aren't numbered. The \Class{memoir} class incorporates the facilities +of all three of the \Package{abstract}, \Package{tocbibind} and +\Package{tocvsec2} packages. +\begin{ctanrefs} +\item[abstract.sty]\CTANref{abstract} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\item[tocbibind.sty]\CTANref{tocbibind} +\item[tocvsec2.sty]\CTANref{tocvsec2} +\end{ctanrefs} + +\Question[Q-tocbibind]{Bibliography, index, etc., in \acro{TOC}} + +The standard \LaTeX{} classes (and many others) use \csx{section*} or +\csx{chapter*} for auto-generated parts of the document (the tables of +contents, lists of figures and tables, the bibliography and the index). As a +result, these items aren't numbered (which most people don't mind), +and (more importantly) they don't appear in the table of contents. + +The correct solution (as always) is to have a class of your own that +formats your document according to your requirements. The macro to do +the job (\csx{addcontentsline}) is fairly simple, but there is always +an issue of ensuring that the contents entry quotes the correct page. +Supposing that our the document is chapter-based (class \Class{report} +or \Class{book}, for example), the text: +\begin{quote} +\begin{verbatim} +\bibliography{frooble} +\addcontentsline{toc}{chapter}{Bibliography} +\end{verbatim} +\end{quote} +will produce the \emph{wrong} answer if the bibliography is more than +one page long. Instead, one should say: +\begin{quote} +\begin{verbatim} +\cleardoublepage +\addcontentsline{toc}{chapter}{Bibliography} +\bibliography{frooble} +\end{verbatim} +\end{quote} +(Note that \csx{cleardoublepage} does the right thing, even if your +document is single-sided~--- in that case, it's a synonym for +\csx{clearpage}). Ensuring that the entry refers to the right place is +trickier still in a \csx{section}-based class. + +If you are using \Package{hyperref} (which will link entries in the +table of contents to the relevant place in the file), a slight +adjustment is necessary: +\begin{quote} +\begin{verbatim} +\cleardoublepage +\phantomsection +\addcontentsline{toc}{chapter}{Bibliography} +\bibliography{frooble} +\end{verbatim} +\end{quote} +The extra command (\csx{phantomsection}) gives \Package{hyperref} +something to ``hold on to'' when making the link. + +The common solution, therefore, is to use the \Package{tocbibind} +package, which provides many facilities to control the way these +entries appear in the table of contents. + +Classes of the \Class{KOMA-script} bundle provide this functionality +as a set of class options (e.g., \pkgoption{bibtotoc} to add the +bibliography to the table of contents); the \Class{memoir} class includes +\Package{tocbibind} itself. +\begin{ctanrefs} +\item[hyperref.sty]\CTANref{hyperref} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\item[tocbibind.sty]\CTANref{tocbibind} +\end{ctanrefs} + +\Question[Q-minitoc]{Table of contents, etc., per chapter} + +The common style, of a ``small'' table of contents for each part, +chapter, or even section, is supported by the \Package{minitoc} +package. The package also supports mini-lists of tables and figures; +but, as the documentation observes, mini-bibliographies present a +different problem~--- see +\Qref[question]{bibliographies per chapter}{Q-chapbib}. + +The package's basic scheme is to generate a little \extension{aux} file for +each chapter, and to process that within the chapter. Simple usage +would be: +\begin{quote} +\begin{verbatim} +\usepackage{minitoc} +... +\begin{document} +... +\dominitoc \tableofcontents +\dominilof \listoffigures +... +\chapter{blah blah} +\minitoc \mtcskip \minilof +... +\end{verbatim} +\end{quote} +though a lot of elaborations are possible (for example, you don't need +a \csx{minitoc} for every chapter). + +\Package{Babel} doesn't know about \Package{minitoc}, but +\Package{minitoc} makes provision for other document languages than +English~--- a wide variety is available. Fortunately, the current +version of the \Package{hyperref} package does know about +\Package{minitoc} and treats \csx{minitoc} tables in the +same way as ``real'' tables of contents. +\begin{ctanrefs} +\item[babel.sty]\CTANref{babel} +\item[hyperref.sty]\CTANref{hyperref} +\item[minitoc.sty]\CTANref{minitoc} +\end{ctanrefs} +\LastEdit{2013-03-05} + +\Question[Q-multind]{Multiple indexes} + +\LaTeX{}'s standard indexing capabilities (those provided by the +\Package{makeidx} package) only provide for one index in your +document; even quite modest documents can be improved by indexes for +separate topics. + +The \Package{multind} package provides simple and straightforward +multiple indexing. You tag each \csx{makeindex}, \csx{index} and +\csx{printindex} command with a file name, and indexing commands are +written to (or read from) the name with the appropriate (\extension{idx} or +\extension{ind}) extension appended. The \csx{printindex} command is modified +from an old version of the \LaTeXo{} standard so that it doesn't +create its own chapter or section heading; you therefore decide what +names (or sectioning level, even) to use for the indexes, and +\Qref*{\csx{indexname}}{Q-fixnam} is completely ignored. + +To create a ``general'' and an ``authors'' index, one might write: +\begin{quote} +\begin{verbatim} +\usepackage{multind} +\makeindex{general} +\makeindex{authors} +... +\index{authors}{Eccentric Professor} +... +\index{general}{FAQs} +... +\printindex{general}{General index} +\printindex{authors}{Author index} +\end{verbatim} +\end{quote} +To complete the job, run \LaTeX{} on your file enough times that +labels, etc., are stable, and then execute the commands +\begin{quote} +\begin{verbatim} +makeindex general +makeindex authors +\end{verbatim} +\end{quote} +before running \LaTeX{} again. Note that the names of the index files +to process are not necessarily related to the name of the \LaTeX{} +file you're processing, at all. (There's no documentation that comes +with the package: what you see above is as good as you will +get\dots{}) + +The \Package{multind} package doesn't work with the % ! line break +\Qref*{\amslatex{} classes}{Q-AMSpkg}, but the \acro{AMS} provide a +substitute, the \Package{amsmidx} package. You use the +\Package{amsmidx} package pretty much the same as you would +\Package{multind}, but if things aren't clear, there \emph{is} +documentation (unlike \Package{multind}). + +The \Package{index} package provides a comprehensive set of indexing +facilities, including a \csx{newindex} command that allows the +definition of new styles of index. \csx{newindex} takes a `tag' (for +use in indexing commands), replacements for the \extension{idx} and +\extension{ind} file extensions, and a title for the index when it's +finally printed; it can also change the item that's being indexed +against (for example, one might have an index of artists referenced by +the figure number where their work is shown). + +Using \Package{index}, to create an author index together with a +``normal'' index, one would start with preamble commands: +\begin{quote} +\begin{verbatim} +\usepackage{index} +\makeindex +\newindex{aut}{adx}{and}{Name Index} +\end{verbatim} +\end{quote} +which load the package, define a ``main'' (original-style) index, and +then define an author index. Then, in the body of the document, we +might find commands like: +\begin{quote} +\begin{verbatim} +\index[aut]{Another Idiot} +... +\index{FAQs} +\end{verbatim} +\end{quote} +Which place an entry in the author index, and then one in the main +index. At the end of the document, we have two commands: +\begin{quote} +\begin{verbatim} +\printindex +\printindex[aut] +\end{verbatim} +\end{quote} +Which will print the main index and then the author index. Supposing +this lot to be in \File{myfile.tex}, after enough runs through +\LaTeX{} that labels are stable, execute the following commands +(Unix-style shell commands shown here, but the principle is the same +whatever system you're using): +\begin{quote} +\begin{verbatim} +makeindex myfile +makeindex myfile.adx -o myfile.and +\end{verbatim} +\end{quote} +and rerun \LaTeX{}. The \ProgName{makeindex} commands process +\File{myfile.idx} to \File{myfile.ind} (the default action), and then +\File{myfile.adx} to \File{myfile.and}, the two files needed as input +by the two \csx{printindex} commands in \File{myfile.tex}. + +The \Package{splitidx} package can operate in the same way as the +others: load the package with the \pkgoption{split} option, and +declare each index with a \csx{newindex} command: +\begin{quote} + \cmdinvoke{newindex}[\meta{index name}]{\meta{shortcut}} +\end{quote} +and \Package{splitidx} will generate a file +\csx{jobname}\texttt{.\meta{shortcut}} to receive index entries +generated by commands like \cmdinvoke{sindex}[\meta{shortcut}]{\meta{item}}. +As with the other packages, this method is limited by \TeX{}'s total +number of output files. However, \Package{splitindex} also comes with +a small executable \ProgName{splitindex} (available for a variety of +operating systems); if you use this auxiliary program (and don't use +\pkgoption{split}), there's no limit to the number of indexes. Apart +from this trick, \Package{splitidx} supports the same sorts of things +as does \Package{index}. An example of use appears in +the documentation. + +The \Package{imakeidx} package can do a wide range of things (in particular, +it can run an index-builder~--- via % ! line break +\Qref*{\csx{write18} commands}{Q-spawnprog}~--- so as to simplify +business of making the final copy of a document). The package can +also make multiple indexes; it can do the job in the conventional +(\Package{multind}) way, or by using the external +\ProgName{splitindex} script provided with the \Package{splitindex} +package. (This arrangement allows efficient operation with small +numbers of indexes, while retaining the flexibility of permitting +large numbers of indexes without hitting the restriction of numbers of +active output streams.) + +The \Class{memoir} class has its own multiple-index functionality (as +well as its own index layout options, which other packages delegate to +the index style used by \ProgName{makeindex}). +\begin{ctanrefs} +\item[amsmidx.sty]Part of the \acro{AMS} class distribution + \CTANref{amscls}[amsmidx] +\item[imakeidx.sty]\CTANref{imakeidx} +\item[index.sty]\CTANref{index} +\item[makeidx.sty]Part of the \LaTeX{} distribution +\item[memoir.cls]\CTANref{memoir} +\item[multind.sty]\CTANref{multind} +\item[splitidx.sty \bgroup\nothtml{\normalfont}and \egroup splitindex]% + \CTANref{splitindex} +\end{ctanrefs} + diff --git a/help/uk-tex-faq/faq-backgrnd.tex b/help/uk-tex-faq/faq-backgrnd.tex new file mode 100644 index 0000000000..4b3ed75156 --- /dev/null +++ b/help/uk-tex-faq/faq-backgrnd.tex @@ -0,0 +1,1220 @@ +% $Id: faq-backgrnd.tex,v 1.31 2014/01/28 18:17:36 rf10 Exp rf10 $ + +\section{The Background} + +\Question[Q-startup]{Getting started} + +\alltex{} offers a very large number of choices, and the beginner has +to navigate through that set before even taking his first steps. The +aim here is to guide the beginner through a set of answers that may +help the process. We assume the beginner `knows' that \alltex{} is +for them; if not, the discussion ``\Qref{what is \tex{}}{Q-whatTeX}'' +may help. + +To start at the very beginning, then, the beginner may wish to know +what all those % ! line break +``\Qref*{things with \tex{} in their name are}{Q-texthings}''. + +Armed with that knowledge, the beginner needs to decide what macro +format she needs (always assuming someone hasn't already told her she +needs to use ``foo\tex{}''. Learn about the alternatives in answers +discussing common formats: look at % line break +\Qref*{writing \plaintex{}}{Q-plaintex}, +\Qref*{\latex{}}{Q-latex} or +\Qref*{\context{}}{Q-context}. + +If no system has been provided, the beginner needs to acquire a \tex{} +distribution appropriate to their machine. Available options are +available via the answer % ! line break +``\Qref*{\alltex{} for various machines}{Q-TeXsystems}''; we assume +here that the beginner can install things for herself, or has access +to someone who can. + +Finally, the beginner needs to get started in the chosen format. For +\plaintex{}, see ``\Qref[]{Online introductions: \TeX{}}{Q-man-tex}''; +for \latex{}, see % ! line break +``\Qref[]{Online introductions: \LaTeX{}}{Q-man-latex}''; and for +\context{}, the place to start is the % line break +\href{http://wiki.contextgarden.net/Main_Page}{ConTeXt garden wiki} +(which is so good the present \acro{FAQ}s don't even try to compete). +\LastEdit*{2011-03-04} + + +\Question[Q-whatTeX]{What is \TeX{}?} + +\TeX{} is a typesetting system written by +\href{http://sunburn.stanford.edu/~knuth/}{Donald E. Knuth}, who +says in the Preface to his book on \TeX{} +(see \Qref[question]{books about TeX}{Q-tex-books}) that it is +%% !line wrap avoided by two commands +``\emph{intended for the creation of beautiful books~---} +\emph{and especially for books that contain a lot of mathematics}''. +(If \TeX{} were \emph{only} good for mathematical books, much of its +use nowadays would not happen: it's actually a pretty good general +typesetting system.) + +Knuth is Emeritus Professor of the Art of Computer Programming at +Stanford University in California, \acro{USA}. Knuth developed the +first version of \TeX{} in 1978 to deal with revisions to his series +``the Art of Computer Programming''. The idea proved popular and +Knuth produced a second version (in 1982) which is the basis of what +we use today. + +Knuth developed a system of % ! line breaks +`\Qref*{literate programming}{Q-lit}' to write \TeX{}, +and he provides the literate (\acro{WEB}) source of \TeX{} free of charge, +together with tools for processing the |web| source into something +that can be compiled and something that can be printed; there is (in +principle) never any mystery about what \TeX{} does. Furthermore, the +\acro{WEB} system provides mechanisms to port \TeX{} to new operating +systems and computers; and in order that one may have some confidence +in the ports, Knuth supplied a \Qref*{test}{Q-triptrap} by +means of which one may judge the fidelity of a \TeX{} system. \TeX{} +and its documents are therefore highly portable. + +For the interested programmer, the distribution of \TeX{} has some +fascination: it's nothing like the way one would construct such a +program nowadays, yet it has lasted better than most, and has been +ported to many different computer architectures and operating +systems~--- the sorts of attributes that much modern programming +practice aims for. The processed `readable' source of \TeX{} the +program may be found in the % ! line break +\begin{hyperversion} + \Qref*{\acro{TDS} structured}{Q-tds} version of the distribution. +\end{hyperversion} +\begin{dviversion} + \acro{TDS} structured version of the distribution (see + \Qref*{\acro{TDS} structure}{Q-tds}). +\end{dviversion} +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Knuth's source distribution]\CTANref{knuth-dist} +\item[\nothtml{\rmfamily}Knuth's sources in \acro{TDS} layout]\CTANref{knuth-tds} +\end{ctanrefs} +\LastEdit{2013-11-27} + +\Question[Q-plaintex]{What's ``writing in \TeX{}''?} + +\TeX{} is a macro processor, and offers its users a powerful +programming capability. To produce a document, you write macros and +text interleaved with each other. The macros define an environment in +which the text is to be typeset. + +However, the basic \TeX{} engine is pretty +basic, and is a pretty difficult beast to deal with. Recognising this +(and not wanting to write the same things at the start of every +document, himself) Knuth provided a package of macros for use with +\TeX{}, called \plaintex{}; \plaintex{} is a useful minimum set of +macros that can be used with \TeX{}, together with some demonstration +versions of higher-level commands. When people say they're ``writing +(or programming) in \TeX{}'', they usually mean they're programming in +\plaintex{}. + +\Question[Q-TeXpronounce]{How should I pronounce ``\TeX{}''?} + +The `X' is ``really'' the Greek letter % ! line break +Chi\nothtml{ (\ensuremath{\chi}, in lower case)}, and is pronounced by +English-speakers either a bit like the `ch' in the Scots word `loch' +([x] in the IPA) or (at a pinch, if you can't do the Greek sound) like +`k'. It definitely is not pronounced `ks' (the Greek letter with that +sound doesn't look remotely like the Latin alphabet `X'). + +This curious usage derives from Knuth's explanation in the \TeX{}book +that the name comes from the Greek word for `art' or `craft' +(`\latexhtml{\ensuremath{\tau\epsilon\chi\nu\eta}}{\emph{techni}}'), +which is the root of the English word `technology'. Knuth's logo for \TeX{} is +merely the uppercase version of the first three (Greek) letters of the +word, jiggled about a bit; we don't use that logo (and logos like it) +in this \acro{FAQ} (see % ! line break +\Qref[question]{Typesetting \TeX{}-related logos}{Q-logos}). + +\Question[Q-MF]{What is \MF{}?} + +\MF{} was written by Knuth as a companion to \TeX{}; whereas \TeX{} +defines the layout of glyphs on a page, \MF{} defines the shapes of +the glyphs and the relations between them. \MF{} details the sizes of +glyphs, for \TeX{}'s benefit, and creates bitmaps that may be used to +represent the glyphs, for the benefit of programs that will produce +printed output as post processes after a run of \TeX{}. + +\MF{}'s language for defining fonts permits the expression of several +classes of things: first (of course), the simple geometry of the +glyphs; second, the properties of the print engine for which the +output is intended; and third, `meta'-information which can +distinguish different design sizes of the same font, or the difference +between two fonts that belong to the same (or related) families. + +Knuth (and others) have designed a fair range of fonts using \MF{}, +but font design using \MF{} is much more of a minority skill (even) than is +\TeX{} macro-writing. +What is more, it is a dying art: few new \tex{}-related fonts are +produced using \MF{}, nowadays. Indeed, several of the major font +families (that originated in \MF{} designs) are now seldom used in any +other way than their conversion to an outline font format. +%% The complete \TeX{}-user nevertheless needs to +%% be aware of \MF{}, and may even be required run \MF{} to generate personal +%% copies of Meta-fonts that come her way. +\LastEdit{2011-07-03} + +\Question[Q-MP]{What is \MP{}?} + +The \MP{} system (by John Hobby) implements a picture-drawing language +very much like that of \MF{}; the difference is that \MP{} outputs +vector graphic files instead of run-length-encoded bitmaps; output +formats available are \PS{} or \acro{SVG} +\MP{} +is a powerful language for producing figures for documents to be +printed on \PS{} printers, either directly or embedded in \AllTeX{} +documents. \MP{} is able to integrate text and mathematics, marked up +for use with \TeX{}, within the graphics. (Knuth tells us that he +uses nothing but \MP{} for diagrams in text that he is writing.) + +Although \PDFLaTeX{} cannot ordinarily handle \PS{} graphics, the +output of \MP{} is sufficiently simple and regular that \PDFLaTeX{} +can handle it direct, using code borrowed from +\begin{hyperversion} + \Qref*{\context{}}{Q-context}~--- +\end{hyperversion} +\begin{flatversion} + \context{}~--- +\end{flatversion} +see \Qref[question]{graphics in \PDFLaTeX{}}{Q-pdftexgraphics}. + +Much of \MP{}'s source code was copied from \MF{}'s sources, with +Knuth's permission. + +A mailing list discussing \MP{} is available; +\begin{flatversion} + subscribe via the \acro{TUG} \ProgName{mailman} interface at + \URL{http://lists.tug.org/metapost} +\end{flatversion} +\begin{hyperversion} + subscribe via the % ! line break + \href{http://lists.tug.org/metapost}{\acro{TUG} \ProgName{mailman} interface}. +\end{hyperversion} +The \acro{TUG} website also hosts a % ! line break +\href{http://tug.org/metapost.html}{\MP{} summary page}, and the +\Package{tex-overview} document gives you a lot more detail (and some +explanatory background material). +\begin{ctanrefs} +\item[tex-overview.pdf]\CTANref{tex-overview} +\end{ctanrefs} +\LastEdit{2013-12-10} + +\Question[Q-texthings]{Things with ``\TeX{}'' in the name} + +New \TeX{} users are often baffled by the myriad terms with ``\TeX{}'' +in the name. The goal of this answer is to clarify some of the more +common such terms. + +\paragraph{\TeX{} itself} +\TeX{} proper is a typesetting system based on a set of low-level +control sequences that instruct \TeX{} how to lay out text on the +page. For example, \csx{hskip} inserts a given amount of horizontal +space into the document, and \csx{font} makes a given font available +in a document. \TeX{} is fully programmable using an integrated macro +scripting language that supports variables, scoping, conditional +execution, control flow, and function (really, macro) definitions. +See % ! line break +\Qref[question]{what is \TeX{}?}{Q-whatTeX} for some background +information on \TeX{} and % ! line break +\Qref[question]{some reference documents}{Q-ref-doc} for pointers to +descriptions of \TeX{} control sequences, data types, and other key +parts of \TeX{}. + +\paragraph{\TeX{} macro packages (a.k.a.~\TeX{} formats)} +Some of \TeX{}'s control sequences are tedious to use directly; they are +intended primarily as building blocks for higher-level~--- and therefore +more user-friendly~--- abstractions. For example, there is no way in +base \TeX{} to specify that a piece of text should be typeset in a +larger font. Instead, one must keep track of the current size and +typeface, load a new font with the same typeface but a (specified) +larger size, and tell \TeX{} to use that new font until instructed +otherwise. Fortunately, because \TeX{} is programmable, it is +possible to write a macro that hides this complexity behind a simple, +new control sequence. (For example, it is possible to define +\cmdinvoke{larger}{my text} to typeset ``my text'' in +at a font size next larger than the current one.) + +While some users write their own, perfectly customized set of +macros~--- which they then typically reuse across many documents~--- it is +far more common to rely upon a \emph{macro package}, a collection of +\TeX{} macros written by experts. For the user's convenience, these +macro packages are often combined with the base \TeX{} engine into a +standalone executable. The following are some of that macro packages +that you are likely to encounter: +\begin{description} + \item[Plain \TeX{} (executable: \ProgName{tex})] + See + \Qref[questions]{Books on \TeX{} and \plaintex{}}{Q-tex-books}, + \Qref[]{Online introductions: \TeX{}}{Q-man-tex}, + \Qref[]{Should I use Plain \TeX{} or \LaTeX{}?}{Q-plainvltx} and + \Qref[]{Freely available \AllTeX{} books}{Q-ol-books}. + Note that the Plain \TeX{} executable is called \ProgName{tex}; the + base \TeX{} engine is generally provided by a separate executable + such as \ProgName{initex} or as a \texttt{-ini} flag to + \ProgName{tex}. + + \item[\LaTeX{} (executable: \ProgName{latex})] + See + \Qref[questions]{Books on \TeX{} and its relations}{Q-latex-books}, + \Qref[]{\AllTeX{} Tutorials, etc.}{Q-tutorials*}, + \Qref[]{Online introductions: \LaTeX{}}{Q-man-latex} and + \Qref[]{Specialized \AllTeX{} tutorials}{Q-tutbitslatex}. + Note that there have been two major versions of \LaTeX{}: \LaTeXe{} + refers to the current version of \LaTeX{} while \LaTeXo{} is the + long-since-obsolete (since 1994) version (cf.~% + \Qref[question]{What is \LaTeXe{}?}{Q-latex2e} for more information). + + \item[\CONTeXT{} (executable: \ProgName{texmfstart})] + See + \Qref[question]{What is \CONTeXT{}?}{Q-context}. + + \item[Texinfo (executables: \ProgName{tex}, \ProgName{makeinfo})] + See + \Qref[question]{What is Texinfo?}{Q-texinfo}. \ProgName{makeinfo} + converts Texinfo documents to \acro{HTML}, DocBook, Emacs info, + \acro{XML}, and plain text. \ProgName{Tex} (or wrappers such as + \ProgName{texi2dvi} and \ProgName{texi2pdf}) produce one of \TeX{}'s + usual output formats such as \acro{DVI} or \acro{PDF}. Because + \ProgName{tex} loads the Plain \TeX{} macros, not the Texinfo ones, + a Texinfo document must begin with + \begin{quote} + \csx{input}\texttt{ texinfo} + \end{quote} + explicitly load the Texinfo macro package. + + \item[\Eplain{}~--- Extended Plain \TeX{} (executable: \ProgName{eplain})] + See + \Qref[question]{What is \Eplain{}?}{Q-eplain}. +\end{description} + +\paragraph{Modified \ProgName{tex} executables} +The original \ProgName{tex} executable was produced in the late 1970s +(cf.~\Qref[question]{What is \TeX{}?}{Q-whatTeX}) and consequently +lacked some features that users have come to expect from today's +software. The following programs address these issues by augmenting +the \TeX{} engine with some additional useful features: + +\begin{description} + \item[\PDFTeX{} (executable: \ProgName{pdftex})] + \TeX{}, which predates the \acro{PDF} file format by a decade, + outputs files in a \TeX{}-specific format called \acro{DVI} + (cf.~\Qref[question]{What is a \acro{DVI} file?}{Q-dvi}). In + contrast, \PDFTeX{} can output both \acro{DVI} \emph{and} \acro{PDF} + files. In \acro{PDF} mode, it lets documents exploit various + \acro{PDF} features such as hyperlinks, bookmarks, and annotations, + \PDFTeX{} additionally supports two sophisticated micro-typographic + features: character protrusion and font expansion. See + \Qref[question]{What is \PDFTeX{}?}{Q-whatpdftex}. + + \item[\xetex{} (executable: \ProgName{xetex})] + \xetex{} reads \acro{UTF}-8 encoded Unicode input, and extends + \TeX{}'s font support to include `modern' formats such as TrueType + and OpenType; these extensions to its capabilities make it + well-suited to multi-lingual texts covering different writing + systems. See \Qref[question]{What is \xetex{}?}{Q-xetex}. + + \item[\LuaTeX{} (executable: \ProgName{luatex})] + \TeX{} is programmed in its own arcane, integrated, macro-based + programming language. \LuaTeX{} adds a second programming engine + using a modern scripting language, Lua, which is `embedded' in a + \tex{}-alike engine; it too reads \acro{UTF}-8 and uses TrueType + OpenType fonts. See % ! line break + \Qref[question]{What is \LuaTeX{}?}{Q-luatex}. + + \item[\eTeX{} (executable: \ProgName{etex})] + \eTeX{} is an extension of \tex{}'s programming interface; as such + it's only indirectly useful to end users, but it can be valuable to + package developers; there is an increasing number of macro packages + that require the use of \eTeX{}. As well as existing in + \ProgName{etex}, \eTeX{} features are usually available in the + \ProgName{pdftex} executables provided in the standard + distributions; \xetex{} and \luatex{} also provide \etex{}'s + programming facilities. See % ! line break + \Qref[question]{What is \eTeX{}?}{Q-etex}. + + (Note: \eTeX{}, which enhances the \TeX{} engine, is not to be + confused with \Eplain{}, which enhances the Plain \TeX{} macro + package.) +\end{description} + +Because each of the above derive from a base \TeX{} engine, it is in +principle possible to combine any of them with one of the \TeX{} macro +packages listed earlier to produce `extended' executables. For +example, the \ProgName{pdflatex}, \ProgName{xelatex} and +\ProgName{lualatex} executables each combine \LaTeX{} with an enhanced +\TeX{} engine. Indeed, most (if not all) of the development of +\context{} is now using \luatex{}. + +Some executables combine the features of multiple enhanced \TeX{} +engines: for example, \ProgName{pdftex} now (in current distributions) +offers both \PDFTeX{} and \eTeX{} extensions into a single executable +This executable may be offered with a \LaTeX{} format (as +\ProgName{latex} or \ProgName{pdflatex}) or with a \plaintex{} format +(as \ProgName{pdftex}). (\ProgName{Tex} remains with an unadorned +\TeX{} executable using \plaintex{}, for people such as Knuth himself, +who want the certainty of the ``original''.) + +\paragraph{\TeX{} distributions} +A \emph{\TeX{} distribution} provides a structured collection of +\TeX{}-related software. Generally, a \TeX{} distribution includes a +set of ``core'' \TeX{} executables such as \ProgName{tex} and +\ProgName{latex}; various fonts optimized for use with \TeX{}; helper +programs such as the \BibTeX{} bibliographic-database formatter, +editors, integrated development environments, file-format-conversion +programs; numerous \LaTeX{} packages; configuration tools; and any +other goodies the distributor chooses to include. + +Commonly encountered \TeX{} distributions include \texlive{}, +\miktex{} and Mac\TeX{}; older ones include oz\TeX{}, +\acro{CM}ac\TeX{} and te\TeX{}. \miktex{} is also available as the +basis of the Pro\TeX{}t bundle, distributed on the \texlive{} +\acro{DVD} mailing, as well as being available online. + +Some \TeX{} distributions target a specific operating system and/or +processor architecture; others run on multiple platforms. Many \TeX{} +distributions are free; a few require payment. See % ! line break +\Qref[question]{\AllTeX{} for different machines}{Q-TeXsystems} for a +list of free and shareware \TeX{} distributions and % ! line break +\Qref[question]{Commercial \TeX{} implementations}{Q-commercial} for a +list of commercial \TeX{} distributions. + +\paragraph{Summary} +What does it all mean?~--- the simple lists of objects, alone, offer +no help for the beginner. The \acro{FAQ} team expects this answer +only to be of use for people who are seeking guidance elsewhere +(possibly within these \acro{FAQ}s) and coming across an unexpected +name like ``blah\tex{}''. + +The subject matter covered by this answer is also addressed in a page +on the \acro{TUG} site, % ! line break +``\href{http://tug.org/levels.html}{the Levels of \tex{}}''. +\LastEdit{2011-09-26} + +\Question[Q-ctan]{What is \acro{CTAN}?} + +The acronym stands for ``Comprehensive \tex{} Archive Network'', which +more-or-less specifies what it's \emph{for}: +\begin{itemize} +\item The archives offer a comprehensive collection of \tex{} resources. +\item The content is made publicly accessible, via the internet. +\item \acro{CTAN} is a \emph{network} of archives, which strive to + stay in step with one another. +\end{itemize} +The basic framework was developed by a \acro{TUG} working group set up +to resolve the (then existing) requirement for users to \emph{know} on +which archive site a particular package might be found. + +Actual implementation offers three distinct types of host: +\begin{description} +\item[\emph{Core} archives]Which form a small, tightly-coupled set of + machines, which perform management functions as well as serving + files; +\item[\emph{Mirror} archives]Which do no more than take regular copies + of core archives, and serve them; and +\item[Archive selector]Which is a meta-service, which routes requests + to an apparently ``local'' mirror (``local'' is determined by an + algorithm that uses your net address to determine where you are, and + then selects a mirror that's close). +\end{description} +Note that there is nothing to prevent any archive from supporting +other functions, so a \acro{CTAN} mirror may also operate as a +\acro{CPAN} (Perl) mirror and as a SourceForge (general free software) +mirror, and \dots{} + +Functions that distinguish core archives are: +\begin{itemize} +\item Uploads: users may submit new (or updated) material via the + \Qref*{upload redirector}{Q-uploads}. Significant changes to the + archive are reported via the mailing list \Email{ctan-ann@dante.de} +\item Weak consistency: changes to the content of the archives are + rapidly distributed to all core archives. (Consistency is `weak' + since changes can take several minutes to propagate.) +\item Providing distribution (\texlive{} and \miktex{}) support. +\item Catalogue maintenance. +\item Mirror monitoring. +\end{itemize} + +Users may make direct contact with the +\begin{flatversion} + \ctan{} management team, via \mailto{ctan@dante.de} +\end{flatversion} +\begin{hyperversion} + \href{mailto:ctan@dante.de}{\ctan{} management team}. +\end{hyperversion} + +Users should ordinarily download material from \acro{CTAN} via the +\href*{http://mirror.ctan.org/}{archive selector}: this uses the +mirror monitor's database, and uses the caller's geographical location to +offer an efficient choice of ``sufficiently up-to-date'' mirror site for +you to connect to. This procedure has the advantage of distributing +the load on \ctan{} mirrors. + +Note that all the download links, given in the web representation of +these \acro{FAQ}s, are set up to use the mirror selector. +\LastEdit{2013-05-21} + +\Question[Q-catalogue]{The (\acro{CTAN}) catalogue} + +Finding stuff on networks used always to be difficult, but in recent years, +search engines have become amazingly good at digging out unconsidered +trifles from the myriad items of information available on the net. +However, for the \alltex{} user, confusion is added by the tendency to +index the same file at several \acro{CTAN} mirror sites. + +Further, the \alltex{} user usually needs the most recent version of a +package; it's a rare search result that describes itself as obsolete! + +The \acro{CTAN} catalogue, several years after it was introduced, has +developed into a powerful tool for dealing with these difficulties. +It provides an entry for each package to be found on \acro{CTAN}; +users may search the catalogue for an entry, or they may browse its +contents, using the catalogue's lists of ``categories'' of item. + +The basis of the catalogue is a collection of small, stylised, +articles; each shows basic information about a package on \acro{CTAN}, +and includes pointers to download address (on a \acro{CTAN} mirror), +documentation and home page if any, and related packages. + +The \href{http://www.ctan.org}{\acro{CTAN} central database machine} +offers a ``Browse \acro{CTAN}'' area, with links to the list of +packages, to a list of `topics' (with packages that match each topic), +and to a list of authors (with their packages). + +In addition, every \acro{CTAN} mirror holds a copy of the catalogue, +presented as a series of web pages; one may scan the files in +alphabetic order, or use a category-based index. Such access is not +as ``sophisticated'' as that on the central site, but it served for +years before the central site appeared. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}The CTAN catalogue (on CTAN)]\CTANref{Catalogue} +\end{ctanrefs} +\LastEdit{2014-03-17} + +\Question[Q-triptrap]{How can I be sure it's really \TeX{}?} + +\TeX{} (and \MF{} and \MP{}) are written in a +\begin{flatversion} % really "non-hyper" + `literate' programming language called \ProgName{Web} (\Qref{}{Q-lit}) +\end{flatversion} +\begin{hyperversion} + \Qref{`literate' programming}{Q-lit} language called \ProgName{Web} +\end{hyperversion} +which is designed to be portable across a wide range of computer +systems. How, then, is a new version of \TeX{} checked? + +Of course, any sensible software implementor will have his own suite +of tests to check that his software runs: those who port \TeX{} and +its friends to other platforms do indeed perform such tests. + +Knuth, however, provides a `conformance test' for both \TeX{} +(\Package{trip}) and \MF{} (\Package{trap}). +%%% Is there a similar one for \MP{}? +He characterises these as `torture tests': they are designed not to +check the obvious things that ordinary typeset documents, or font +designs, will exercise, but rather to explore small alleyways off the +main path through the code of \TeX{}. They are, to the casual reader, +pretty incomprehensible! + +Once an implementation of \TeX{} has passed its \Package{trip} test, or +an implementation of \MF{} has passed its \Package{trap} test, then it +may in principle be distributed as a working version. (In practice, +any distributor would test new versions against ``real'' documents or +fonts, too; while \Package{trip} and \Package{trap} test bits of +pathways within the program, they don't actually test for any real +world problem.) +\LastEdit{2011-05-28} + +% \Question[Q-y2k]{Are \TeX{} and friends Y2K compliant?} + +% \begin{description} +% \item[Crashing:] None of \TeX{}, \MF{} or \MP{} can themselves crash +% due to any change whatever in the date of any sort. + +% \item[Timestamps:] In the original sources, a 2-digit year was +% stored as the creation time for format files and that value is +% printed in log-files. These items should not be of general concern, +% since the only use of the date format file is to produce the log +% output, and the log file is designed for human readers only. + +% Knuth announced in 1998 that implementors would be permitted +% alter this code without fear of being accused of non-compliance. +% Nearly all implementations that are being actively maintained had +% been modified to generate 4-digit years in the format file and the +% log, by the end of 1998. The original sources themselves have now +% been modified so that 4-digit year numbers are stored. + +% \item[The \csx{year} primitive:] Certification of a \TeX{} +% implementation (see \Qref[question]{trip/trap testing}{Q-triptrap}) +% does not require that \csx{year} return a meaningful value (which +% means that \TeX{} can, in principle, be implemented on platforms +% that don't make the value of the clock available to user programs). +% The \emph{\TeX{}book} (see +% \Qref[question]{TeX-related books}{Q-tex-books}) defines \csx{year} as +% ``the current year of our Lord'', which is the only correct meaning +% for \csx{year} for those implementations which can supply a +% meaningful value, which is to say nearly all of them. + +% In short, \TeX{} implementations should provide a value in \csx{year} +% giving the 4-digit year Anno Domini, or the value 1776 if the +% platform does not support a date function. + +% Note that if the system itself fails to deliver a correct date to +% \TeX{}, then \csx{year} will of course return an incorrect value. +% \TeX{} cannot be considered Y2K compliant, in this sense, on a +% system that is not itself Y2K compliant. + +% \item[Macros:] \TeX{} macros can in principle perform calculations on +% the basis of the value of \csx{year}. +% The \Qref*{LaTeX suite}{Q-latex} +% performs such calculations in a small number of places; the +% calculations performed in the current (supported) version of \LaTeX{} are +% known to be Y2K compliant. + +% Other macros and macro packages should be individually checked. + +% \item[External software:] Software such as \acro{DVI} translators +% needs to be individually checked. +% \end{description} +% \LastEdit{2011-06-01} +% +% withdrawn 2013-05-21 + +\Question[Q-etex]{What is \eTeX{}?} + +While Knuth has declared that \TeX{} will never % !line break +\Qref*{change in any substantial way}{Q-TeXfuture}, there remain +things that one might wish had been done differently, or indeed +implemented at all. + +The \acro{NTS} project set out to produce an advanced replacement for +\TeX{}, to provide a basis for developing such modifications: this +``New Typesetting System'' would share Knuth's aims, but would +implement the work in a modern way taking account of the lessons +learned with \TeX{}. While a first demonstrator \acro{NTS} did +appear, it wasn't practically useful, and the project seems no longer +active. + +In parallel with its work on \acro{NTS} itself, the project developed +a set of extensions that can be used with a (``true'') \TeX{} system. +Such a modified system is known as an \eTeX{} system, and the concept +has proved widely successful. Indeed, current \TeX{} distributions +are delivered with most formats built with an \eTeX{}-based system (for +those who don't want them, \eTeX{}'s extensions can be disabled, leaving +a functionally standard \TeX{} system). + +The extensions range from the seemingly simple (increasing the number +of available registers from 256 to 32768) through to extremely subtle +programming support. + +\Qref*{\CONTeXT{}}{Q-context} has required \eTeX{} for its operation +for some time, though development is now focused on the use of +\Qref*{\luatex{}}{Q-luatex}. + +Some \LaTeX{} packages already specify the use of \eTeX{}. Some such +packages may not work at all on a non-\eTeX{} system; others will +work, but not as well as on an \eTeX{} system. The % ! line break +\Qref*{\LaTeX{} team}{Q-LaTeX3} has announced that future \LaTeX{} +packages (specifically those from the team, as opposed to those +individually contributed) may require \eTeX{} for optimum performance. +\begin{ctanrefs} +\item[\eTeX{}]\CTANref{etex} +\end{ctanrefs} +\LastEdit{2011-07-13} + +\Question[Q-whatpdftex]{What is \PDFTeX{}?} + +One can reasonably say that \PDFTeX{} is (today) the main stream of +\TeX{} distributions: most \LaTeX{} and many \CONTeXT{} users nowadays use +\PDFTeX{} whether they know it or not (more precisely, they use +\PDFTeX{} extended by +\begin{hyperversion} + \Qref*{\eTeX{}}{Q-etex}). +\end{hyperversion} +\begin{flatversion} + \eTeX{}~--- \Qref{}{Q-etex}). +\end{flatversion} +So what is \PDFTeX{}? + +\PDFTeX{} is a development of \TeX{} that is capable of generating +typeset \acro{PDF} output in place of \acro{DVI}. \PDFTeX{} has +other capabilities, most notably in the area of fine typographic +detail (for example, its support for % ! line break +\begin{hyperversion} + \Qref{optimising line breaks}{Q-overfull}), +\end{hyperversion} +\begin{flatversion} + % ( <- dummy for paren balancing + optimising line breaks~--- \Qref{}{Q-overfull}), +\end{flatversion} +but its greatest impact to date has been in the area of +\acro{PDF} output. + +\PDFTeX{} started as a topic for H\`an \The {} Th\`anh's Master's~thesis, +and seems first to have been published in \TUGboat{} 18(4), in 1997 +(though it was certainly discussed at the \acro{TUG}'96 conference in +Russia). + +While the world was making good use of ``pre-releases'' of \PDFTeX{}, +Th\`anh used it as a test-bed for the micro-typography which was the +prime subject of his Ph.D.~research. Since Th\`anh was finally +awarded his Ph.D., day-to-day maintenance and development of +\PDFTeX{}~1.0 (and later) has been in the hands of a group of +\PDFTeX{} maintainers (which includes Th\`anh); the group has managed +to maintain a stable platform for general use. + +Development of \PDFTeX{} has mostly stopped (only bug fixes, and +occasional small development items are processed): future development +is focused on \Qref*{\LuaTeX{}}{Q-luatex}. +\LastEdit{2011-05-28} + +\Question[Q-latex]{What is \LaTeX{}?} + +\LaTeX{} is a \TeX{} macro package, originally written by Leslie Lamport, that +provides a document processing system. \LaTeX{} allows markup to +describe the structure of a document, so that the user +need not think about presentation. By using document classes and +add-on packages, the same document can be produced in a variety of +different layouts. + +Lamport says that \LaTeX{} +``\emph{represents a balance between functionality and ease of use}''. +This shows itself as a continual conflict that leads to +the need for such things as \acro{FAQ}s: \LaTeX{} \emph{can} +meet most user requirements, but finding out \emph{how} is often +tricky. + +\Question[Q-latex2e]{What is \LaTeXe{}?} + +Lamport's last version of \LaTeX{} (\LaTeXo{}, last updated in 1992) +was superseded in 1994 by a new version (\LaTeXe{}) provided by +\Qref*{the \LaTeX{} team}{Q-LaTeX3}. +\LaTeXe{} is now the only readily-available version of +\LaTeX{}, and draws together several threads of \LaTeX{} development +from the later days of \LaTeXo{}. The ``e'' of the name is (in the +% next (ghastly) line needed to maintain typesetting +\wideonly{\Qref{official logo}{Q-logos}}\narrowonly{official logo~--- \Qref{\relax}{Q-logos}}) +% the \relax allows sanitize to cope with the line. just don't ask... +a single-stroke epsilon +(\latexhtml{\ensuremath{\varepsilon}}{ε}, supposedly +indicative of no more than a small change). + +\LaTeXe{} has several enhancements over \LaTeXo{}, but they were all +rather minor, with a view to continuity and stability rather than the +``big push'' that some had expected from the team. \LaTeXe{} +continues to this day to offer a compatibility mode in which most +files prepared for use with \LaTeXo{} will run (albeit with somewhat +reduced performance, and subject to voluminous complaints in the log +file). Differences between \LaTeXe{} and \LaTeXo{} are +outlined in a series of `guide' files that are available in every +\LaTeX{} distribution (the same directory also contains ``news'' about +each new release of \LaTeXe{}). + +Note that, now, \latexe{} is ``feature frozen'' (the only allowed +changes come from bug reports); this, too, is in pursuit of stability, +and is a driving force for many of the efforts to contribute \latex{} +packages. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\LaTeX{} guides and news]\CTANref{latexdoc} +\end{ctanrefs} +\LastEdit{2011-08-19} + +\Question[Q-latexpronounce]{How should I pronounce ``\LaTeX{}(\twee{})''?} + +Lamport never recommended how one should pronounce \LaTeX{}, but a lot +of people pronounce it `Lay \TeX{}' or perhaps `Lah \TeX{}' (with +\TeX{} pronounced as the program itself; see +\Qref[question]{the rules for TeX}{Q-TeXpronounce}). It is definitely +\emph{not} to be pronounced in the same way as the rubber-tree gum +(which would be `lay teks'). + +The \LaTeXe{} logo is supposed to end with an +\latexhtml{\ensuremath{\varepsilon}}{ε}; nevertheless, most +people pronounce the name as `\LaTeX{}-two-ee'. +\LastEdit{2009-06-08} + +\Question[Q-plainvltx]{Should I use \plaintex{} or \LaTeX{}?} + +There's no straightforward answer to this question. Many people swear +by \plaintex{}, and produce highly respectable documents using it +(Knuth is an example of this, of course). But equally, many people +are happy to let someone else take the design decisions for them, +accepting a small loss of flexibility in exchange for a saving of +(mental) effort. + +The arguments around this topic can provoke huge amounts of noise and +heat, without offering much by way of light; your best bet may be to +find out what those around you are using, and to follow them in the +hope of some support. Later on, you can always switch your +allegiance; don't bother about it. + +If you are preparing a manuscript for a publisher or journal, ask them +what markup they want before you +develop your own; many big publishers have developed their own +\AllTeX{} styles for journals and books, and insist that authors stick +closely to their markup. + +\Question[Q-LaTeXandPlain]{How does \LaTeX{} relate to \plaintex{}?} + +\tex{} provides a programming language (of sorts), and any document +more complex than the trivial ``hello world'' will need some +programming. + +\LaTeX{} and \plaintex{} are both libraries written for use with +\tex{}; the user commands \ProgName{tex} and \ProgName{latex} invoke +\tex{}-the-program with a library incorporated. Libraries that may be +loaded in this way are known as `\emph{formats}'; when a user ``runs'' +\plaintex{} or \latex{}, they are running \tex{} (the program) with an +appropriate format. The documents are then programmed in \plaintex{} +or \latex{} \emph{language}. + +\plaintex{} and \latex{} exist because writing your documents in `raw' +\TeX{} could involve much reinventing of wheels for every document. +Both languages serve as convenient aids to make document writing more +pleasant: \LaTeX{} provides many more items to support `common' +requirements of documents. + +As such, \LaTeX{} is close to being a superset of \plaintex{}, but +some \plaintex{} commands don't work as expected when used in a +\latex{} document. Using \plaintex{} commands in a \latex{} document +is an occasional source of bugs: the output is \emph{almost} right, +but some things are misplaced. + +So, \plaintex{} and \latex{} are related through a common parent, and +are designed for use in similar jobs; programming for one will often +not work correctly in the other. +\LastEdit{2014-03-18} + +\Question[Q-context]{What is \context{}?} + +\href{http://www.pragma-ade.com/}{\context{}} is a macro package +created by Hans Hagen of Pragma-Ade; it started as a production tool +for Pragma (which is a publishing company). \CONTeXT{} is a +document-production system based, like \LaTeX{}, on the \TeX{} +typesetting system. Whereas \LaTeX{} insulates the writer from +typographical details, \context{} takes a complementary approach by +providing structured interfaces for handling typography, including +extensive support for colors, backgrounds, hyperlinks, presentations, +figure-text integration, and conditional compilation. It gives the +user extensive control over formatting while making it easy to create +new layouts and styles without learning the \TeX{} macro +language. \CONTeXT{}'s unified design avoids the package clashes that +can happen with \LaTeX{}. + +\context{} also integrates MetaFun, a superset of \MP{} and a powerful +system for vector graphics. MetaFun can be used as a stand-alone +system to produce figures, but its strength lies in enhancing +\context{} documents with accurate graphic elements. + +\context{} allows users to specify formatting commands in English, +Dutch, German, French, or Italian, and to use different typesetting +engines (\PDFTeX{}, Xe\TeX{}, Aleph and \LuaTeX{}) without +changing the user interface. \context{} continues to develop, often in +response to requests from the user community. + +The development of \Qref*{\luatex{}}{Q-luatex} was originally driven +by \context{}, almost from the start of its project. Nowadays, +\context{} it is distributed in two versions~--- mark two (files with +extension \extension{mkii}) which runs on \pdftex{} but is not under +active development, and mark four (files with extension +\extension{mkiv}) (which runs on \luatex{} and is where development +happens). + +\context{} has a large developer community (though possibly not as +large as that of latex{}), but those developers who are active seem to have +prodigious energy. Support is available via a % ! line break +\href{http://wiki.contextgarden.net/Main_Page}{\acro{WIKI} site} and via the +\href{http://www.ntg.nl/mailman/listinfo/ntg-context}{mailing list}. +A ``standalone'' distribution (a \TeX{} distribution with no macros +other than \context{}-based ones) is available from +\url{http://minimals.contextgarden.net/} --- it provides +a \context{} system on any of a number of platforms, executing either +mark~ii or mark~iv \context{}. + +Note that \acro{CTAN} does \emph{not} hold the primary distribution of +\context{}~--- potential users should refer to +\href{http://contextgarden.net}{\context{} `garden' site} for details +of the +current distribution. \acro{CTAN} holds a copy of \CONTeXT{} but +makes no claim about its ``up-to-date''ness. Likewise, \acro{CTAN} +holds a few contributed \context{} packages, but many more are to be +found via the \href{http://contextgarden.net}{\CONTeXT{} garden}. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\CONTeXT{} distribution]\CTANref{context} +\item[\nothtml{\rmfamily}\CONTeXT{} packages selection]\CTANref{context-contrib} +\end{ctanrefs} +\LastEdit{2014-05-30} + +\Question[Q-AMSpkg]{What are the \acro{AMS} packages (\AMSTeX{}, \emph{etc}.)?} + +\AMSTeX{} is a \TeX{} macro package, originally written by Michael Spivak for +the American Mathematical Society (\acro{AMS}) during 1983--1985 and +is described in the book ``\Qref*{The Joy of \TeX{}}{Q-tex-books}''. +It is based on \plaintex{}, and provides many +features for producing more professional-looking maths formulas with +less burden on authors. It pays attention to the finer details of +sizing and positioning that mathematical publishers care about. The +aspects covered include multi-line displayed equations, equation +numbering, ellipsis dots, matrices, double accents, multi-line +subscripts, syntax checking (faster processing on initial +error-checking \TeX{} runs), and other things. + +As \LaTeX{} increased in popularity, authors sought to submit papers to +the \acro{AMS} in \LaTeX{}, so \AMSLaTeX{} was developed. \AMSLaTeX{} +is a collection of \LaTeX{} packages and classes that offer authors most of +the functionality of \AMSTeX{}. +The \acro{AMS} no longer recommends the use of \AMSTeX{}, and urges +its authors to use \AMSLaTeX{} instead. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\AMSTeX{} distribution]\CTANref{amstex} +\item[\nothtml{\rmfamily}\AMSLaTeX{} distribution]\CTANref{amslatex} +\end{ctanrefs} +\LastEdit{2011-06-01} + +\Question[Q-eplain]{What is \Eplain{}?} + +The \href{http://tug.org/eplain}{\Eplain{}} +macro package expands on and extends the definitions in \plaintex{}. +\Eplain{} is not intended to provide ``generic typesetting +capabilities'', as do \CONTeXT{}, \LaTeX{} or +\Qref*{Texinfo}{Q-texinfo}. Instead, it defines macro tools that +should be useful whatever commands you choose to use when you prepare +your manuscript. + +For example, \Eplain{} does not have a command \csx{section}, +which would format section headings in an ``appropriate'' way, as +\LaTeX{}'s \csx{section} does. The philosophy of \Eplain{} is that +some people will always need or want to go beyond the macro designer's +idea of ``appropriate''. Canned sets of macros are fine~--- as long as you +are willing to accept the resulting output. If you don't like the +results, or if you are trying to match a different format, you may +find that \Eplain{} is for you. + +On the other hand, almost everyone would like capabilities such as +cross-referencing by labels, so that you don't have to put actual page +numbers in the manuscript. The authors of \Eplain{} believe it is the +only generally available macro package that does not force its +typographic style on an author, and yet provides these capabilities. + +Another useful feature of \Eplain{} is the ability to create PDF files +with hyperlinks. The cross-referencing macros can implicitly generate +hyperlinks for the cross-references, but you can also create explicit +hyperlinks, both internal (pointing to a destination within the +current document) and external (pointing to another local document or +a URL). + +Several \LaTeX{} packages provide capabilities which \plaintex{} +users are lacking, most notably text colouring and rotation provided by +the \Package{graphics} bundle (packages \Package{color} and +\Package{graphics}). Although the \Package{graphics} bundle provides +a \plaintex{} ``loader'' for some of the packages, it is not a +trivial job to pass options to those packages under \plaintex{}, and +much of the functionality of the packages is accessed through package +options. \Eplain{} extends the loader so that options can be passed +to the packages just as they are in \LaTeX{}. The following packages are +known to work with \Eplain{}: \Package{graphics}, \Package{graphicx}, +\Package{color}, \Package{autopict} (\LaTeX{} picture environment), +\Package{psfrag}, and \Package{url}. + +\href{http://tug.org/docs/html/eplain}{\Eplain{} documentation} is +available online (there's a \acro{PDF} copy in the \acro{CTAN} +package as well), and there's also a mailing list~--- sign up, or +browse the list archives, via +\URL{http://tug.org/mailman/listinfo/tex-eplain} +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\Eplain{} distribution]\CTANref{eplain} +\end{ctanrefs} +\LastEdit{2013-06-25} + +\Question[Q-texinfo]{What is Texinfo?} + +Texinfo is a documentation system that uses one source file to produce +both on-line information and printed output. So instead of writing +two different documents, one for the on-line help and the other for a +typeset manual, you need write only one document source file. When +the work is revised, you need only revise one document. By +convention, Texinfo source file names end with a \extension{texi} or +\extension{texinfo} extension. + +Texinfo is a macro language, somewhat similar to \LaTeX{}, but with +slightly less expressive power. Its appearance is of course rather +similar to any \TeX{}-based macro language, except that its macros +start with \texttt{@} rather than the |\| that's more commonly used in +\TeX{} systems. + +You can write and format Texinfo files into Info files within \acro{GNU} +\ProgName{emacs}, and read them using the \ProgName{emacs} Info +reader. You can also format Texinfo files into Info files using +\ProgName{makeinfo} and read them using \ProgName{info}, so you're not +dependent on \ProgName{emacs}. The distribution includes a +\ProgName{Perl} script, \ProgName{texi2html}, that will convert +Texinfo sources into \acro{HTML}: the language is a far better fit to +\acro{HTML} than is \LaTeX{}, so that the breast-beating agonies of +\Qref*{converting \LaTeX{} to \acro{HTML}}{Q-LaTeX2HTML} are largely +avoided. + +Finally, of course, you can also print the files, or convert them to +\acro{PDF} using \PDFTeX{}. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Texinfo distribution]\CTANref{texinfo} +\end{ctanrefs} + +\Question[Q-lollipop]{Lollipop} + +A long time ago (in the early 1990s), the Lollipop \tex{} format was +developed (originally to typeset the excellent book % !line break +\Qref{\tex{} by topic}{Q-tex-books}). Several people admired the +format, but no ``critical mass'' of users appeared, that could have +prompted maintenance of the format. + +More than 20 years later, a new maintainer appeared: he hopes to build +Lollipop into an engine for rapid document style development. (In +addition, he intends to add support for right-to-left languages such +as his own~--- Persian.) + +We can only hope that, this time, Lollipop will ``catch on''! +\begin{ctanrefs} +\item[lollipop]\CTANref{lollipop} +\end{ctanrefs} + +\Question[Q-whyfree]{If \TeX{} is so good, how come it's free?} + +It's free because Knuth chose to make it so (he makes money from +royalties on his \TeX{} books, which still sell well). He is +nevertheless apparently happy that others should earn money by selling +\TeX{}-based services and products. While several valuable +\TeX{}-related tools and packages are offered subject to restrictions +imposed by the \acro{GNU} General Public Licence (\acro{GPL}, +sometimes referred to as `Copyleft'), which denies the right to +commercial exploitation. \TeX{} itself is offered under a pretty +permissive licence of Knuth's own. + +There are commercial versions of \TeX{} available; for some users, +it's reassuring to have paid support. What is more, some of the +commercial implementations +have features that are not available in free versions. (The +reverse is also true: some free implementations have features +not available commercially.) + +This \acro{FAQ} concentrates on `free' distributions of \TeX{}, but we +do at least list the \Qref*{major vendors}{Q-commercial}. +\LastEdit{2013-06-25} + +\Question[Q-TeXfuture]{What is the future of \TeX{}?} + +Knuth has declared that he will do no further development of \TeX{}; +he will continue to fix any bugs that are reported to him (though +bugs are rare). This decision was made soon after +\TeX{} version~3.0 was released; at each bug-fix release +the version number acquires one more digit, so that it tends to the +limit~\ensuremath{\pi} (at the time of writing, Knuth's latest release +is version 3.1415926). Knuth wants \TeX{} to be frozen at +version~\ensuremath{\pi} when he dies; thereafter, no further changes +may be made to Knuth's source. (A similar rule is applied to \MF{}; +its version number tends to the limit~\emph{e}, and currently +stands at 2.718281.) + +Knuth explains his decision, and exhorts us all to respect it, in a +paper originally published in % ! line break +\href{http://tug.org/TUGboat/Articles/tb11-4/tb30knut.pdf}{\TUGboat{} 11(4)}, +and reprinted in the % ! line break +\href{http://www.ntg.nl/maps/pdf/5_34.pdf}{NTG journal MAPS}. + +There are projects (some of them long-term +projects: see, for example, +\Qref[question]{the LaTeX3 project}{Q-LaTeX3}) +%\Qref[and]{and the SGML work}{Q-SGML}) +to build substantial new macro packages based on \TeX{}. There are +also various projects to build a \emph{successor} to \TeX{}. The +\Qref*{\eTeX{}}{Q-etex} extension to \TeX{} itself arose from such a +project (\acro{NTS}). Another pair of projects, which have delivered +all the results they are likely to deliver, is the +related % ! line break +\Qref*{Omega and Aleph}{Q-omegaleph}. The % ! line break +\Qref*{\xetex{} system}{Q-xetex} is in principle still under +development, but is widely used, and the % ! line break +\Qref*{\LuaTeX{} project}{Q-luatex} (though not scheduled to produce +for some time) has already delivered a system that increasingly +accessible to ``ordinary users''. +\LastEdit{2013-05-21} + +\Question[Q-readtex]{Reading \AllTeX{} files} + +So you've been sent an \AllTeX{} file: what are you going to do with +it? + +You can, of course, ``just read it'', since it's a plain text file; +the problem is that the markup tags in the document may prove +distracting. Most of the time, even \TeX{} \emph{experts} will +typeset a \AllTeX{} file before attempting to read it\nobreakspace{}\dots{} + +So you shouldn't be too concerned if you can't make head nor tail of +the file: it is designed to be read by a (sort of) compiler, and +compilers don't have much in common with human readers. + +A possible next step is to try an on-line \latex{} editor. There are +many of these~--- a compilation of links may be found in % line break +\href{http://texblog.net/latex-link-archive/online-compiler/}{this blog post} + +Of that long list, the present author has only dabbled with +\href{https://www.writelatex.com/}{Write\latex{}}; it seems well +suited to simple `one-shot' use in this way. + +If no online compiler helps, you need to typeset the document +``yourself''. The good news is that \TeX{} systems are available, +free, for most sorts of computer; the bad news is that you need a +pretty complete \TeX{} system even to read a single file, and complete +\TeX{} systems are pretty large. + +\TeX{} is a typesetting system that arose from a publishing project (see +\wideonly{``}\Qref[question]{what is \TeX{}}{Q-whatTeX}\wideonly{''}), +and its basic source is available free from its author. However, at +its root, it is \emph{just} a typesetting engine: even to view or to +print the typeset output, you will need ancillary programs. In short, +you need a \TeX{} \emph{distribution}~--- a collection of +\TeX{}-related programs tailored to your operating system: for details +of the sorts of things that are available, see +% beware line break +\htmlonly{``}\Qref[question]{\TeX{} distributions}{Q-TeXsystems}\htmlonly{''} +or +% beware line break +\htmlonly{``}\Qref[\htmlonly]{commercial \TeX{} distributions}{Q-commercial}\latexhtml{ (for commercial distributions)}{''}. + +But beware~--- \TeX{} makes no attempt to look like the sort of +\WYSIWYG{} system you're probably used to (see +% beware line wrap +\wideonly{``}\Qref[question]{why is \TeX{} not \WYSIWYG{}}{Q-notWYSIWYG}\wideonly{''}): +while many modern versions of \TeX{} have a compile--view cycle that +rivals the best commercial word processors in its responsiveness, what +you type is usually \emph{markup}, which typically defines a logical +(rather than a visual) view of what you want typeset. + +So there's a balance between the simplicity of the original +(marked-up) document, which can more-or-less be read in \emph{any} +editor, and the really rather large investment needed to install a +system to read a document ``as intended''. + +Are you ``put off'' by all this?~--- remember that \tex{} is good at +producing \acro{PDF}: why not ask the person who sent the \tex{} file +to send an \acro{PDF} copy? +\LastEdit{2014-05-21} + +\Question[Q-notWYSIWYG]{Why is \TeX{} not a \WYSIWYG{} system?} + +\WYSIWYG{} is a marketing term (``What you see is what you get'') for +a particular style of text processor. \WYSIWYG{} systems are +characterised by two principal claims: that you type what you want to +print, and that what you see on the screen as you type is a close +approximation to how your text will finally be printed. + +The simple answer to the question is, of course, that \TeX{} was +conceived long before the marketing term, at a time when the marketing +imperative wasn't perceived as significant. (In fact, it appears that +the first experimental \WYSIWYG{} systems were running in commercial +labs, near where Knuth was working on \tex{}. At the time, of course, +\tex{} was only available on a mainframe, and getting it to run on the +small experimental machines would have distracted Knuth from his +mission to create a typesetting system that he could use when +preparing his books for publication.) + +However, all that was a long time ago: why has nothing been done with +the ``wonder text processor'' to make it fit with modern perceptions? + +There are two answers to this. First, the simple ``things \emph{have} +been done'' (but they've not taken over the \TeX{} world); and second, +``there are philosophical reasons why the way \TeX{} has developed is +ill-suited to the \WYSIWYG{} style''. + +Indeed, there is a fundamental problem with applying \WYSIWYG{} +techniques to \TeX{}: the complexity of \TeX{} makes it hard to get +the equivalent of \TeX{}'s output without actually running \TeX{} over +the whole of the document being prepared. + +A celebrated early system offering ``\WYSIWYG{} using \TeX{}'' came +from the Vor\TeX{} project: a pair of Sun workstations worked in +tandem, one handling the user interface while the other beavered away +in the background typesetting the result. Vor\TeX{} was quite +impressive for its time, but the two workstations combined had hugely +less power than the average sub-thousand-dollar Personal Computer +nowadays, and its code has not proved portable (it never even made the +last `great' \TeX{} version change, at the turn of the 1990s, to +\TeX{} version 3). + +Lightning Textures (an extension of Blue Sky's original \TeX{} system +for the Macintosh), is sadly no longer available. + +Thus``\Qref*{Scientific Word}{Q-commercial}'' (which can also interact +with a computer algebra system), is the only remaining \tex{} system +that even approximates to \WYSIWYG{} operation. + +The issue has of recent years started to attract attention +from \TeX{} developers, and several interesting projects that address +the ``\Qref*{\TeX{} document preparation environment}{Q-WYGexpts}'' +are in progress. + +All the same, it's clear that the \TeX{} world has taken a long time +to latch onto the idea of \WYSIWYG{}. +Apart from simple arrogance (``we're better, and have no need to +consider the petty doings of the commercial word processor market''), +there is a real conceptual difference between the word processor model +of the world and the model \LaTeX{} and \CONTeXT{} employ~--- the idea of +``markup''. ``Pure'' markup expresses a logical model of a document, +where every object within the document is labelled according to what +it is rather than how it should appear: appearance is deduced from the +properties of the type of object. Properly applied, markup can +provide valuable assistance when it comes to re-use of documents. + +Established \WYSIWYG{} systems find the expression of this sort of +structured markup difficult; however, markup \emph{is} starting to +appear in the lists of the commercial world's requirements, for two +reasons. First, an element of markup helps impose style on a +document, and commercial users are increasingly obsessed with +uniformity of style; and second, the increasingly pervasive use of +\acro{XML}-derived document archival formats demands it. The same +challenges must needs be addressed by \TeX{}-based document +preparation support schemes, so we are +observing a degree of confluence of the needs of the two communities: +interesting times may be ahead of us. +\LastEdit{2013-06-03} + +\Question[Q-TUG*]{\TeX{} User Groups} + +There has been a \TeX{} User Group since very near the time \TeX{} +first appeared. That first group, \acro{TUG}, is still active and its +journal \textsl{TUGboat} continues in regular publication +with articles about \TeX{}, \MF{} and related technologies, and about +document design, processing and production. \acro{TUG} holds a yearly +conference, whose proceedings are published in \textsl{TUGboat}. + +\acro{TUG}'s \href{http://www.tug.org}{web site} is a valuable +resource for all sorts of +\TeX{}-related matters, such as details of \TeX{} software, and lists +of \TeX{} vendors and \TeX{} consultants. Back articles from +\textsl{TUGboat} are also available. + +Some time ago, \acro{TUG} established a ``technical council'', whose +task was to oversee the development of \TeX{}nical projects. Most +such projects nowadays go on their way without any support from +\acro{TUG}, but \acro{TUG}'s web site lists its + +\begin{hyperversion} +\href{http://www.tug.org/twg.html}{Technical Working Groups (\acro{TWG}s)}. +\end{hyperversion} +\begin{flatversion} +Technical Working Groups (\acro{TWG}s: see +\URL{http://www.tug.org/twg.html}). +\end{flatversion} + +\acro{TUG} has a reasonable claim to be considered a world-wide +organisation, but there are many national and regional user groups, +too; \acro{TUG}'s web site maintains a list of +\begin{hyperversion} +href{http://www.tug.org/lugs.html}{``Local User Groups'' (\acro{LUG}s)}. +\end{hyperversion} +\begin{flatversion} +``local user groups'' (\acro{LUG}s: see +\URL{http://www.tug.org/lugs.html}). +\end{flatversion} + +Contact \acro{TUG} itself via \URL{http://tug.org/contact} +LastEdit{2013-06-25} diff --git a/help/uk-tex-faq/faq-biblio.tex b/help/uk-tex-faq/faq-biblio.tex new file mode 100644 index 0000000000..36419bb1bf --- /dev/null +++ b/help/uk-tex-faq/faq-biblio.tex @@ -0,0 +1,1468 @@ +% $Id: faq-biblio.tex,v 1.15 2014/01/28 18:17:36 rf10 Exp rf10 $ + +\section{Bibliographies and citations} + +\subsection{Creating bibliographies} + +\Question[Q-buildbib]{Creating a \BibTeX{} bibliography file} + +A \BibTeX{} bibliography file may reasonably be compared to a small +database, the entries in which are references to literature that may +be called up by citations in a document. + +Each entry in the bibliography has a \emph{type} and a unique +\emph{key}. The bibliography is read, by \BibTeX{}, using the details +specified in a \emph{bibliography style}. From the style, \BibTeX{} +finds what entry types are permissible, what \emph{fields} each entry +type has, and how to format the whole entry. + +The type specifies the type of document you're making reference to; it +may run all the way from things like ``\environment{Book}'' and +``\environment{Proceedings}'' (which may even contain other citations +of type ``\environment{InBook}'' or ``\environment{InProceedings}'') +through dissertation styles like ``\environment{PhdThesis}'' to +otherwise-uncategorisable things such as ``\environment{Misc}''. The +unique key is something you choose yourself: it's what you use when +you want to \Qref*{cite an entry in the file}{Q-usebibtex}. People +commonly create a key that combines the (primary) author's name and +the year of publication, possibly with a marker to distinguish +publications in the same year. So, for example, the Dyson, Eddington, +Davidson paper about deflection of starlight appears in my +experimental \extension{bib} file as \texttt{Dyson20.1}. + +So, noting the rules of the style, you have `simply' to write a +bibliography database. Fortunately, there are several tools to help +in this endeavour: +\begin{itemize} +\item Most of the better \Qref*{\AllTeX{}-oriented editors}{Q-editors} + have ``\BibTeX{} modes''. +\item If you have an existing \environment{thebibliography} + environment, the \ProgName{Perl} script \ProgName{tex2bib} will + probably help. +\item There are a number of \BibTeX{} bibliography management systems + available, some of which permit a graphical user interface to the + task. Sadly, none seems to be available with the ordinary \TeX{} + distributions. + + Tools such as \ProgName{Xbibfile} (a graphical user interface), + \ProgName{ebib} (a database application written to run `inside' + \ProgName{emacs}) and + \ProgName{btOOL} (a set of \ProgName{perl} tools for building + \BibTeX{} database handlers) are available from \acro{CTAN}. + + Other systems, such as + \href{http://refdb.sourceforge.net/}{\ProgName{RefDB}}, + \href{http://www.nongnu.org/biborb}{BibORB}, + \href{http://bibdesk.sourceforge.net/}{\ProgName{BibDesk}}, + \href{http://pybliographer.org}{\ProgName{pybliographer}} and the + \ProgName{Java}-based + \href{http://freshmeat.net/projects/bibkeeper/}{\ProgName{Bibkeeper}} + and \href{http://jabref.sourceforge.net}{\ProgName{JabRef}} (which + claims to supersede \ProgName{Bibkeeper}) + are only available from their development sites. +% review of web database offerings in textex_368 +\item Some commercial citation-management systems will export in + \BibTeX{} format; an example is + \href{http://www.endnote.com/}{EndNote}. +\item Data from on-line citation databases may often be translated to + \BibTeX{} format by utilities to be found on \acro{CTAN}. For + example, the \ProgName{Perl} script \ProgName{isi2bibtex} will + translate citations from \acro{ISI} ``Web of knowledge'' (a + subscription service, available to \acro{UK} academics via + \acro{BIDS}). UK academics may translate \acro{BIDS} downloads + using \ProgName{bids.to.bibtex} +\item \href{http://scholar.google.com}{Google Scholar} provides an + ``Import into \BibTeX{}'' tab for each reference it finds for you: + that tab gives you a page containing a \BibTeX{} entry for the + reference. +\end{itemize} +\begin{ctanrefs} +\item[bids.to.bibtex]\CTANref{bidstobibtex} +\item[btOOL]\CTANref{btOOL} +\item[ebib]\CTANref{ebib} +\item[isi2bibtex]\CTANref{isi2bibtex} +\item[tex2bib]\CTANref{tex2bib} +\item[tex2bib.readme]\CTANref{tex2bib-doc} +\item[xbibfile]\CTANref{xbibfile} +\end{ctanrefs} + +\Question[Q-custbib]{Creating a bibliography style} + +It \emph{is} possible to write your own: the standard bibliography +styles are distributed in a form with many comments, and there is a description +of the language in the \bibtex{} distribution (see % ! line wrap +\Qref[question]{BibTeX documentation}{Q-BibTeXing}). +However, it must be admitted that the language in which \BibTeX{} +styles are written is pretty obscure, and one would not recommend +anyone who's not a confident programmer to write their own, though +minor changes to an existing style may be within the grasp of many. + +If your style isn't too `far out', you can probably avoid programming +it by using the facilities of the \Package{custom-bib} bundle. The bundle +contains a file \File{makebst.tex}, which runs you through a text menu +to produce a file of instructions, which you can then use to generate your +own \extension{bst} file. This technique doesn't offer entirely new styles +of document, but the \Package{custom-bib}'s ``master \BibTeX{} +styles'' already offer significantly more than the \BibTeX{} standard set. + +An alternative, which is increasingly often recommended, to use +\Qref*{\Package{biblatex}}{Q-biblatex}. \Package{Biblatex} offers +many hooks for adjusting the format of the output of your `basic' +\bibtex{} style, and a collection of `contributed' styles have also +started to appear. Note.bowever There are not as many of +\Package{biblatex}'s contributed styles as there are for \bibtex{}, +and there is no \Package{custom-biblatex}, both of which suggest that +beginners' r\"ole models are hard to come by. As a result, beginners +should probably resist the temptation to write their own contributed +\package{biblatex} style. +\begin{ctanrefs} +\item[biblatex.sty]\CTANref{biblatex} +\item[biblatex \nothtml{\normalfont}contributed styles]\CTANref{biblatex-contrib} +\item[\nothtml{\normalfont}\BibTeX{} documentation]\CTANref{bibtex} +\item[makebst.tex]Distributed with \CTANref{custom-bib} +\end{ctanrefs} + +\Question[Q-capbibtex]{Capitalisation in \BibTeX{}} + +The standard \BibTeX{} bibliography styles impose fixed ideas about +the capitalisation of titles of things in the bibliography. While +this is not unreasonable by \BibTeX{}'s lights (the rules come from +the \emph{Chicago Manual of Style}) it can be troublesome, since +\BibTeX{} fails to recognise special uses (such as acronyms, chemical +formulae, etc.). + +The solution is to enclose the letter or letters, whose capitalisation +\BibTeX{} should not touch, in braces, as: +\begin{quote} +\begin{verbatim} +title = {The {THE} operating system}, +\end{verbatim} +\end{quote} +Sometimes you find \BibTeX{} changing the case of a single letter +inappropriately. No matter: the technique can be applied to single +letters, as in: +\begin{quote} +\begin{verbatim} +title = {Te{X}niques and tips}, +\end{verbatim} +\end{quote} +If your document design specification requires a different style of +capitalisation, you should acquire a bibliography style that doesn't +enforce \BibTeX{}'s default rules. It is definitely \emph{not} a good +idea to enclose an entire title in braces, as in +\begin{quote} +\begin{verbatim} +title = {{TeXniques and tips}}, +\end{verbatim} +\end{quote} +though that does ensure that the capitalisation is not changed. Your +\BibTeX{} database should be a general-purpose thing, not something +tuned to the requirements of a particular document or bibliography +style, or to the way you are thinking today~--- for example, on a +future occasion, you might find yourself using a different \BibTeX{} +style with different capitalisation rules. + +There's more on the subject in the +% beware line wrap +\Qref*{\BibTeX{} documentation}{Q-BibTeXing}. + +\Question[Q-bibaccent]{Accents in bibliographies} + +\BibTeX{} not only has a tendency (by default) to mess about with the +% line wrap +\Qref*{case of letters in your bibliography}{Q-capbibtex}, +also makes a hash of accent commands: +``\texttt{ma}\csx{\textasciitilde}\texttt{nana}'' comes out as ``ma +nana'' (!). The solution is similar that of the letter case problem: +enclose the troublesome sequence in braces, as +``\texttt{\{}\csx{\textasciitilde}\texttt{n\}}'', in this example. + +\Question[Q-bibstrtl]{`String too long' in \BibTeX{}} + +The \BibTeX{} diagnostic ``Warning--you've exceeded 1000, the +\texttt{global-string-size}, for entry \texttt{foo}'' usually arises +from a very large abstract or annotation included in the database. +The diagnostic usually arises because of an infelicity in the coding of +\File{abstract.bst}, or styles derived from it. (One doesn't +ordinarily output annotations in other styles.) + +The solution is to make a copy of the style file (or get a clean copy +from \acro{CTAN}~--- \CTANref{abstract-bst}), and rename it (e.g., on a +long file-name system, to \File{abstract-long.bst}). Now edit it: find +function \texttt{output.nonnull} and +\begin{itemize} +\item change its first line (line 60 in the version on \acro{CTAN}) + from +\begin{quote} +\begin{verbatim} +{ 's := +\end{verbatim} +\end{quote} +to +\begin{quote} +\begin{verbatim} +{ swap$ +\end{verbatim} +\end{quote} +Finally, +\item delete the function's last line, which just says ``\texttt{s} + (line 84 in the version on \acro{CTAN}). +\end{itemize} +Finally, change your \csx{bibliographystyle} command to refer to the +name of the new file. + +This technique applies equally to any bibliography style: the same +change can be made to any similar \texttt{output.nonnull} function. + +If you're reluctant to make this sort of change, the only way forward +is to take the entry out of the database, so that you don't encounter +\BibTeX{}'s limit, but you may need to retain the entry because it +will be included in the typeset document. In such cases, put the body +of the entry in a separate file: +\begin{quote} +\begin{verbatim} +@article{long.boring, + author = "Fred Verbose", + ... + abstract = "{\input{abstracts/long.tex}}" +} +\end{verbatim} +\end{quote} +In this way, you arrange that all \BibTeX{} has to deal with is the +file name, though it will tell \TeX{} (when appropriate) to include +all the long text. + +\Question[Q-manyauthor]{\BibTeX{} doesn't understand lists of names} + +\BibTeX{} has a strict syntax for lists of authors' (or editors') +names in the \BibTeX{} data file; if you write the list of names in a +``natural''-seeming way, the chances are you will confuse \BibTeX{}, +and the output produced will be quite different from what you had +hoped. + +Names should be expressed in one of the forms +\begin{quote} +\begin{verbatim} +First Last +Last, First +Last, Suffix, First +\end{verbatim} +\end{quote} +and lists of names should be separated with ``\texttt{and}''. +For example: +\begin{quote} +\begin{verbatim} +AUTHOR = {Fred Q. Bloggs, John P. Doe \& + Another Idiot} +\end{verbatim} +\end{quote} +falls foul of two of the above rules: a syntactically significant +comma appears in an incorrect place, and `\csx{\&}' is being used as a +name separator. The output of the above might be something like: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +John P. Doe \& Another Idiot Fred Q. Bloggs +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +John P. Doe \& Another Idiot + Fred Q. Bloggs +\end{verbatim} +\end{narrowversion} +\end{quote} +because ``John P. Doe \& Another Idiot has become the `first name', +while ``Fred Q. Bloggs'' has become the `last name' of a single +person. The example should have been written: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +AUTHOR = {Fred Q. Bloggs and + John P. Doe and + Another Idiot} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +AUTHOR = {Fred Q. Bloggs and John P. Doe and + Another Idiot} +\end{verbatim} +\end{wideversion} +\end{quote} +Some bibliography styles implement clever acrobatics with very long +author lists. You can force truncation by using the pseudo-name +``\texttt{others}'', which will usually translate to something like +``\emph{et al}'' in the typeset output. So, if Mr.~Bloggs wanted to +distract attention from his co-authors, he would write: +\begin{quote} +\begin{verbatim} +AUTHOR = {Fred Q. Bloggs and others} +\end{verbatim} +\end{quote} + +\Question[Q-citeURL]{\acro{URL}s in \BibTeX{} bibliographies} + +There is no citation type for \acro{URL}s, \emph{per se}, in the +standard \BibTeX{} styles, though Oren Patashnik (the author of +\BibTeX{}) is believed to be considering developing one such for use +with the long-awaited \BibTeX{} version~1.0. + +The actual information that need be available in a citation of an +\acro{URL} is discussed at some length in the publicly available +on-line +\begin{narrowversion} + extracts of \acro{ISO}~690--2, available via + \URL{http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm}; + % checked 2004-01-15 +\end{narrowversion} +\begin{wideversion} +\href{http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm}{extracts of \acro{ISO}\nobreakspace690--2}; +\end{wideversion} +the techniques below do \emph{not} satisfy all the requirements of +\acro{ISO}~690--2, but they offer a solution that is at least +available to users of today's tools. + +Until the new version of \BibTeX{} arrives, the simplest technique is +to use the \texttt{howpublished} field of the standard styles' \texttt{@misc} +function. Of course, the strictures +about \Qref*{typesetting \acro{URL}s}{Q-setURL} still apply, so the +entry will look like: +\begin{quote} +\begin{verbatim} +@misc{..., + ..., + howpublished = "\url{http://...}" +} +\end{verbatim} +\end{quote} +A possible alternative approach is to use \BibTeX{} styles other than +the standard ones, that already have \acro{URL} entry types. +Candidates are: +\begin{itemize} +\item The \Package{natbib} styles (\Package{plainnat}, + \Package{unsrtnat} and \Package{abbrevnat}), which are extensions of + the standard styles, principally for use with \Package{natbib} + itself. However, they've acquired \acro{URL}s and other ``modern'' + entries along the way. The same author's \Package{custom-bib} is + also capable of generating styles that honour \acro{URL} entries. +\item The \Package{babelbib} bundle, which offers % ! line break + \Qref*{multilingual bibliographies}{Q-i18nbib}, similarly provides a + set of standard-style equivalents that have \acro{URL} entries. +\item More modern styles such as the \Package{harvard} package (if the + citation styles are otherwise satisfactory for you). + \Package{Harvard} bibliography styles all include a ``\texttt{url}'' + field in their specification; however, the typesetting offered is + somewhat feeble (though it does recognise and use + \ProgName{LaTeX2HTML} macros if they are available, to create + hyperlinks). +\end{itemize} +You can also acquire new \BibTeX{} styles by use of Norman Gray's +\Package{urlbst} system, which is based on a \ProgName{Perl} script +that edits an existing \BibTeX{} style file to produce a new +style. The new style thus generated has a \texttt{webpage} entry type, and +also offers support for \texttt{url} and \texttt{lastchecked} fields +in the other entry types. The \ProgName{Perl} script comes with a set +of converted versions of the standard bibliography styles. + +Another possibility is that some conventionally-published paper, +technical report (or even book) is also available on the Web. In such +cases, a useful technique is something like: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +@techreport{..., + ..., + note = "Also available as \url{http://...}" +} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +@techreport{..., + ..., + note = "Also available as + \url{http://...}" +} +\end{verbatim} +\end{narrowversion} +\end{quote} +There is good reason to use the \Package{url} or \Package{hyperref} +packages in this context: \BibTeX{} has a habit of splitting +lines it considers excessively long, and if there are no space +characters for it to use as `natural' breakpoints, \BibTeX{} will +insert a comment (`\texttt{\textpercent{}}') character~\dots{}\@ which +is an acceptable character in an \acro{URL}. Any current version of +either of the \Package{url} or \Package{hyperref} packages detects this +``\texttt{\textpercent{}}--end-of-line'' structure in its argument, and +removes it. +\begin{ctanrefs} +\item[babelbib \nothtml{\rmfamily}bundle]\CTANref{babelbib} +\item[custom-bib \nothtml{\rmfamily}bundle]\CTANref{custom-bib} +\item[harvard.sty]\CTANref{harvard} +\item[hyperref.sty]\CTANref{hyperref} +\item[natbib \nothtml{\rmfamily}styles]\CTANref{natbib} +\item[url.sty]\CTANref{url} +\item[urlbst]\CTANref{urlbst} +\end{ctanrefs} + +\Question[Q-bibplain]{Using \BibTeX{} with \plaintex{}} + +The file \File{btxmac.tex} (which is part of the \Eplain{} system) +contains macros and documentation for using \BibTeX{} with +\plaintex{}, either directly or with \Qref*{\Eplain{}}{Q-eplain}. See +\Qref[question]{the use of \BibTeX{}}{Q-BibTeXing} for more +information about \BibTeX{} itself. +\begin{ctanrefs} +\item[btxmac.tex]\CTANref{btxmactex} +\item[eplain \nothtml{\rmfamily}system]\CTANref{eplain} +\end{ctanrefs} + +\Question[Q-makebib]{Reconstructing \extension{bib} files} + +Perhaps you've lost the \extension{bib} file you generated your document from, +or have been sent a document without one. Or even, you've realised +the error of building a substantial document without the benefit of +\BibTeX{}\dots{} + +The \ProgName{Perl} script, \Package{tex2bib} makes a reasonable job +of regenerating \extension{bib} files from \environment{thebibliography} +environments, provided that the original (whether automatically or +manually generated) doesn't deviate too far from the ``standard'' +styles. + +You are well-advised to check the output of the script. While it will +not usually destroy information, it can quite reasonably mislabel it. + +Documentation of the script is to be found in the file \File{tex2bib.readme} +\begin{ctanrefs} +\item[tex2bib]\CTANref{tex2bib} +\item[tex2bib.readme]\CTANref{tex2bib-doc} +\end{ctanrefs} + +\Question[Q-bibprefixsort]{\BibTeX{} sorting and name prefixes} + +\BibTeX{} recognises a bewildering array of name prefixes (mostly +those deriving from European language names); it ignores the prefixes +when sorting the bibliography~--- you want ``Ludwig van Beethoven'' +sorted under ``Beethoven'', not under ``van''. (Lamport made a witty +deliberate mistake with Beethoven's name, in the first edition of his +\LaTeX{} manual.) + +However, a recurring issue is the desire to quote Lord Rayleigh's +publications (``Lord'' isn't an acceptable prefix), or names from +languages that weren't considered when \BibTeX{} was designed such as +``al-Wakil'' (transcribed from the Arabic). What's needed is a +separate ``sort key'', but \BibTeX{} only allows such a thing in +citations of items that have no author or editor. + +The solution is to embed the sort key in the author's name, but to +prevent it from being typeset. Patashnik recommends a command +\csx{noopsort} (no-output-sortkey), which is defined and used as +follows: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +@PREAMBLE{ {\providecommand{\noopsort}[1]{}} } +... +@ARTICLE{Rayleigh1, +AUTHOR = "{\noopsort{Rayleigh}}{Lord Rayleigh}", +... +} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +@PREAMBLE{ + {\providecommand{\noopsort}[1]{}} +} +... +@ARTICLE{Rayleigh1, +AUTHOR = + "\noopsort{Rayleigh}{Lord Rayleigh}", +... +} +\end{verbatim} +\end{narrowversion} +\end{quote} +Note that this \csx{noopsort} applies to the last name in this kind of +construct, so an author with an Arabic name might be rendered: +\begin{wideversion} +\begin{quote} +\begin{verbatim} +... +AUTHOR = "Ali {\noopsort{Hadiidii}}{al-Hadiidii}", +... +\end{verbatim} +\end{quote} +\end{wideversion} +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +... +AUTHOR = + "Ali {\noopsort{Hadiidii}}{al-Hadiidii}", +... +\end{verbatim} +\end{quote} +\end{narrowversion} +A further use might deal with word order games, as in the famous +Vietnamese name: +\begin{wideversion} +\begin{quote} +\begin{verbatim} +... +AUTHOR = "\noopsort{Thanh Han The}{Han The Thanh}", +... +\end{verbatim} +\end{quote} +\end{wideversion} +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +... +AUTHOR = + "\noopsort{Thanh Han The}{Han The Thanh}", +... +\end{verbatim} +\end{quote} +\end{narrowversion} +though that author seems well-acquainted with Western confusion about +the significance of the parts of his name (even to the extent of +missing out the accentuation, as above\dots{}). + +\Question[Q-bibtranscinit]{`Multi-letter' initials in \BibTeX{}} +\keywords{compound initials, transcribed initials} + +If your bibliographic style uses initials~+ surname, you may encounter +a problem with some transcribed names (for example, Russian ones). +Consider the following example from the real world: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +@article{epifanov1997, + author = {Epifanov, S. Yu. and + Vigasin, A. A.}, + title = ... +} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +@article{epifanov1997, + author = {Epifanov, S. Yu. and Vigasin, A. A.}, + title = ... +} +\end{verbatim} +\end{wideversion} +\end{quote} +Note that the ``Yu'' is the initial, not a complete name. However, +\BibTeX{}'s algorithms will leave you with a citation~--- +slightly depending on the bibliographic style~--- that reads: +``S. Y. Epifanov and A. A. Vigasin, \dots{}''. instead of the intended +``S. Yu. Epifanov and A. A. Vigasin, \dots{}''. + +One solution is to replace each affected initial by a command that +prints the correct combination. To keep your bibliography portable, +you need to add that command to your bibliography with the +\texttt{@preamble} directive: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +@preamble{ {\providecommand{\BIBYu}{Yu} } } + +@article{epifanov1997, + author = {Epifanov, S. {\BIBYu}. and + Vigasin, A. A.}, + title = ... +} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +@preamble{ {\providecommand{\BIBYu}{Yu} } } + +@article{epifanov1997, + author = {Epifanov, S. {\BIBYu}. and Vigasin, A. A.}, + title = ... +} +\end{verbatim} +\end{wideversion} +\end{quote} +If you have many such commands, you may want to put them in a separate +file and \csx{input} that \LaTeX{} file in a \texttt{@preamble} +directive. + +An alternative is to make the transcription look like an accent, from +\BibTeX{}'s point of view. For this we need a control sequence that +does nothing: +\begin{wideversion} +\begin{quote} +\begin{verbatim} +@article{epifanov1997, + author = {Epifanov, S. {\relax Yu}. and Vigasin, A. A.}, + title = ... +} +\end{verbatim} +\end{quote} +\end{wideversion} +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +@article{epifanov1997, + author = {Epifanov, S. {\relax Yu}. and + Vigasin, A. A.}, + title = ... +} +\end{verbatim} +\end{quote} +\end{narrowversion} +Like the solution by generating extra commands, this involves tedious +extra typing; which of the two techniques is preferable for a given +bibliography will be determined by the names in it. It should be +noted that a preamble that introduces lots of odd commands is usually +undesirable if the bibliography is a shared one. + +``Compound'' initials (for single names made up of two or more words) +may be treated in the same way, so one can enter Forster's rather +complicated name as: +\begin{wideversion} +\begin{quote} +\begin{verbatim} +@article{forster2006, + author = {Forster, P.M. {\relax de F.} and Collins, M.}, + title = ... +\end{verbatim} +\end{quote} +\end{wideversion} +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +@article{forster2006, + author = {Forster, P.M. {\relax de F.} and + Collins, M.}, + title = ... +\end{verbatim} +\end{quote} +\end{narrowversion} +The same trick can be played if you're entering whole names: +\begin{quote} +\begin{verbatim} +... + author = {Epifanov, Sasha {\relax Yu}ri and +... +\end{verbatim} +\end{quote} +(though no guarantee, that either of those names is right, is +offered!) +However, if you're typing the names in the ``natural'' (Western) way, +with given names first, the trick: +\begin{quote} +\begin{verbatim} +... + author = {P.M. {\relax de F.} Forster and +... +\end{verbatim} +\end{quote} +doesn't work~--- ``de F. Forster'' is treated as a compound family +names. + + +\subsection{Creating citations} + +\Question[Q-usebibtex]{``Normal'' use of \BibTeX{} from \LaTeX{}} + +To create a bibliography for your document, you need to perform a +sequence of steps, some of which seem a bit odd. If you choose to use +\BibTeX{}, the sequence is: + +First: you need a \BibTeX{} bibliography file (a \extension{bib} +file)~--- see \Qref*[question]{``creating a \BibTeX{} file''}{Q-buildbib}. + +Second: you must write your \LaTeX{} document to include a declaration +of the `style' of bibliography, citations, and a reference to the +bibliography file mentioned above. So we may have a \LaTeX{} +file containing: +\begin{quote} +\begin{verbatim} +\bibliographystyle{plain} +... +Pooh is heroic~\cite{Milne:1926}. +... +Alice struggles~\cite{Carroll:1865}. +... +\bibliography{mybooks} +\end{verbatim} +\end{quote} +Note: we have bibliography style \Package{plain}, above, which is +nearly the simplest of the lot: a sample text, showing the sorts of +style choices available, can be found on Ken Turner's web site: +\URL{http://www.cs.stir.ac.uk/~kjt/software/latex/showbst.html} + +Third: you must process the file. +\begin{quote} +\begin{verbatim} +latex myfile +\end{verbatim} +\end{quote} +As \LaTeX{} processes the file, the \csx{bibliographystyle} command +writes a note of the style to the \extension{aux} file; each +\csx{cite} command writes a note of the citation to the +\extension{aux} file, and the \csx{bibliography} command writes a note +of which \extension{bib} file is to be used, to the \extension{aux} file. + +Note that, at this stage, \LaTeX{} isn't ``resolving'' any of the +citations: at every \csx{cite} command, \LaTeX{} will warn you of the +undefined citation, and when the document finishes, there will be a +further warning of undefined references. + +%Some bibliography styles are designed to work with particular +%packages... + +Fourth: you must run \BibTeX{}: +\begin{quote} +\begin{verbatim} +bibtex myfile +\end{verbatim} +\end{quote} +Don't try to tell \BibTeX{} anything but the file name: say +\texttt{bibtex myfile.aux} (because you know it's going to read the +\extension{aux} file) and \BibTeX{} will blindly attempt to process +\texttt{myfile.aux.aux}. + +\BibTeX{} will scan the \extension{aux} file; it will find which bibliography +style it needs to use, and will ``compile'' that style; it will note +the citations; it will find which bibliography files it needs, and +will run through them matching citations to entries in the +bibliography; and finally it will sort the entries that have been +cited (if the bibliography style specifies that they should be +sorted), and outputs the resulting details to a \extension{bbl} file. + +Fifth: you run \LaTeX{} again. It warns, again, that each citation is +(still) undefined, but when it gets to the \csx{bibliography} command, +it finds a \extension{bbl} file, and reads it. As it encounters each +\csx{bibitem} command in the file, it notes a definition of the +citation. + +Sixth: you run \LaTeX{} yet again. This time, it finds values for all +the citations, in its \extension{aux} file. Other things being equal, you're +done\dots{} until you change the file. + +If, while editing, you change any of the citations, or add new ones, +you need to go through the process above from steps 3 (first run of +\LaTeX{}) to 6, again, before the document is once again stable. +These four mandatory runs of \LaTeX{} make processing a document with +a bibliography even more tiresome than the normal two runs required to +resolve labels. + +To summarise: processing to resolve citations requires: \LaTeX{}; +\BibTeX{}; \LaTeX{}; \LaTeX{}. + +\Question[Q-whatbst]{Choosing a bibliography style} + +A large proportion of people are satisfied with one of Patashnik's +original ``standard'' styles, \Package{plain}, \Package{unsrt}, +\Package{abbrv} and \Package{alpha}. However, no style in that set +supports the ``author-date'' citation style that is popular in many +fields; but there are a very large number of contributed styles +available, that \emph{do} support the format. + +(Note that author-date styles arose because the simple and clear +citation style that \Package{plain} produces is so awkward in a +traditional manuscript preparation scenario. However, \TeX{}-based +document production does away with all those difficulties, leaving us +free once again to use the simple option.) + +Fortunately, help is at hand, on the Web, with this problem: +\begin{itemize} +\item a sample text, showing the sorts of style choices available, can + be found on +\begin{narrowversion} + Ken Turner's web site: + \URL{http://www.cs.stir.ac.uk/~kjt/software/latex/showbst.html}; +\end{narrowversion} +\begin{wideversion} + % ! line break + \href{http://www.cs.stir.ac.uk/~kjt/software/latex/showbst.html}{Ken Turner's web site}; +\end{wideversion} +\item an excellent survey, that lists a huge variety of styles, + sorted into their nominal topics as well as providing a good range + of examples, is the Reed College % ! line break +\begin{narrowversion} + ``Choosing a \BibTeX{} style'' + (\URL{http://web.reed.edu/cis/help/LaTeX/bibtexstyles.html}). +\end{narrowversion} +\begin{wideversion} + % ! line break + ``\href{http://web.reed.edu/cis/help/LaTeX/bibtexstyles.html}{Choosing a \BibTeX{} style}''. +\end{wideversion} +\end{itemize} + +Of course, these pages don't cover everything; the problem the +inquisitive user faces, in fact, is to find what the various available +styles actually do. This is best achieved (if the links above don't +help) by using \Package{xampl.bib} from the \BibTeX{} documentation +distribution: one can get a pretty good feel for any style one has to +hand using this ``standard'' bibliography. For style +\Package{my-style.bst}, the simple \LaTeX{} document: +\begin{quote} +\begin{verbatim} +\documentclass{article} +\begin{document} +\bibliographystyle{my-style} +\nocite{*} +\bibliography{xampl} +\end{document} +\end{verbatim} +\end{quote} +will produce a representative sample of the citations the style will +produce. (Because \Package{xampl.bib} is so extreme in some of its +``examples'', the \BibTeX{} run will also give you an interesting +selection of \BibTeX{}'s error messages\dots{}) +\begin{ctanrefs} +\item[xampl.bib]\CTANref{xampl-bib} +\end{ctanrefs} + +\Question[Q-chapbib]{Separate bibliographies per chapter?} + +A separate bibliography for each `chapter' of a document can be provided +with the package \Package{chapterbib} (which comes with a bunch of +other good bibliographic things). The package allows you a +different bibliography for each \csx{include}d file (i.e., despite the +package's name, the availability of bibliographies is related to the +component source files of the document rather than to the chapters that +logically structure the document). + +The package \Package{bibunits} ties bibliographies to logical units +within the document: the package will deal with chapters and sections +(as defined by \LaTeX{} itself) and also defines a \environment{bibunit} +environment so that users can select their own structuring. + +\Qref*{The \Package{biblatex} package}{Q-biblatex}, with +\ProgName{biber}, provides a similar facility; enclose the text for +which you want a local bibliography in a \environment{refsection} +environment, and place a \csx{printbibliography} command as the last +thing in that environment: +\begin{quote} +\begin{verbatim} +\begin{refsection} +\chapter{First chapter} +\section{Foo} +Some text \cite{this} +with citations \cite{that}. +\printbibliography +\end{refsection} +\end{verbatim} +\end{quote} +Then process with \latex{} (of whatever flavour) and use +\ProgName{biber} to process the bibliography output. Note that +\csx{printbibliography} can take an optional argument +\pkgoption{heading=bib title} to provide the bibliography with a +(sub)section title. +\begin{ctanrefs} +\item[biber]\CTANref{biber} +\item[biblatex]\CTANref{biblatex} +\item[bibunits.sty]\CTANref{bibunits} +\item[chapterbib.sty]distributed as part of \CTANref{cite}[chapterbib] +\end{ctanrefs} +\LastEdit{2013-01-04} + +\Question[Q-multbib]{Multiple bibliographies?} + +If you're thinking of multiple bibliographies tied to some part of +your document (such as the chapters within the document), please see +\Qref[question]{bibliographies per chapter}{Q-chapbib}. + +For more than one bibliography, there are three options. + +The \Package{multibbl} package offers a very simple interface: you use +a command \csx{newbibliography} to define a bibliography ``tag''. The package +redefines the other bibliography commands so that each time you use any one +of them, you give it the tag for the bibliography where you want the +citations to appear. The \csx{bibliography} command itself also takes +a further extra argument that says what title to use for the resulting +section or chapter (i.e., it patches +\nothtml{\csx{refname} and \csx{bibname}~---} +\Qref{\csx{refname} and \csx{bibname}}{Q-fixnam}\nothtml{~---} in a +\Package{babel}-safe way). So one might write: +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +\usepackage{multibbl} +\newbibliography{bk} +\bibliographystyle{bk}{alpha} +\newbibliography{art} +\bibliographystyle{art}{plain} +... +\cite[pp.~23--25]{bk}{milne:pooh-corner} +... +\cite{art}{einstein:1905} +... +\bibliography{bk}{book-bib}% + {References to books} +\bibliography{art}{art-bib}% + {References to articles} +\end{verbatim} +\end{quote} +\end{narrowversion} +\begin{wideversion} +\begin{quote} +\begin{verbatim} +\usepackage{multibbl} +\newbibliography{bk} +\bibliographystyle{bk}{alpha} +\newbibliography{art} +\bibliographystyle{art}{plain} +... +\cite[pp.~23--25]{bk}{milne:pooh-corner} +... +\cite{art}{einstein:1905} +... +\bibliography{bk}{book-bib}{References to books} +\bibliography{art}{art-bib}{References to articles} +\end{verbatim} +\end{quote} +\end{wideversion} +(Note that the optional argument of \csx{cite} appears \emph{before} the +new tag argument, and that the \csx{bibliography} commands may list +more than one \extension{bib} file~--- indeed all \csx{bibliography} commands +may list the same set of files.) + +The \csx{bibliography} data goes into files whose names are +\meta{tag-name}\emph{.aux}, so you will need to run +\begin{quote} +\begin{verbatim} +bibtex bk +bibtex art +\end{verbatim} +\end{quote} +after the first run of \LaTeX{}, to get the citations in the correct +place. + +The \Package{multibib} package allows you to define a series of +``additional topics'', each of which comes with its own series of +bibliography commands. So one might write: +\begin{quote} +\begin{verbatim} +\usepackage{multibib} +\newcites{bk,art}% + {References from books,% + References from articles} +\bibliographystylebk{alpha} +\bibliographystyleart{plain} +... +\citebk[pp.~23--25]{milne:pooh-corner} +... +\citeart{einstein:1905} +... +\bibliographybk{book-bib} +\bibliographyart{art-bib} +\end{verbatim} +\end{quote} +Again, as for \Package{multibbl}, any \csx{bibliography...} command may +scan any list of \extension{bib} files. + +\BibTeX{} processing with \Package{multibib} is much like that with +\Package{multibbl}; with the above example, one needs: +\begin{quote} +\begin{verbatim} +bibtex bk +bibtex art +\end{verbatim} +\end{quote} +Note that, unlike \Package{multibbl}, \Package{multibib} allows a +simple, unmodified bibliography (as well as the ``topic'' ones). + +The \Package{bibtopic} package allows you separately to cite several +different bibliographies. At the appropriate place in your document, +you put a sequence of \environment{btSect} environments (each of which +specifies a bibliography database to scan) to typeset the separate +bibliographies. Thus, one might have a file \File{diss.tex} containing: +\begin{quote} +\begin{verbatim} +\usepackage{bibtopic} +\bibliographystyle{alpha} +... +\cite[pp.~23--25]{milne:pooh-corner} +... +\cite{einstein:1905} +... +\begin{btSect}{book-bib} +\section{References from books} +\btPrintCited +\end{btSect} +\begin{btSect}[plain]{art-bib} +\section{References from articles} +\btPrintCited +\end{btSect} +\end{verbatim} +\end{quote} +Note the different way of specifying a bibliographystyle: if you want +a different style for a particular bibliography, you may give it as an +optional argument to the \environment{btSect} environment. + +Processing with \BibTeX{}, in this case, uses \extension{aux} files whose names +are derived from the name of the base document. So in this example +you need to say: +\begin{quote} +\begin{verbatim} +bibtex diss1 +bibtex diss2 +\end{verbatim} +\end{quote} + +There is also a command \csx{btPrintNotCited}, which gives the rest of +the content of the database (if nothing has been cited from the +database, this is equivalent to \LaTeX{} standard \cmdinvoke{nocite}{*}). + +However, the \emph{real} difference from \Package{multibbl} and +\Package{multibib} is that selection of what appears in each +bibliography section is determined in \Package{bibtopic} by what's in +the \extension{bib} files. + +An entirely different approach is taken by the \Package{splitbib} +package. You provide a \environment{category} environment, in the +preamble of your document, for each category you want a separate +citation list for. In each environment, you list the \csx{cite} keys +that you want listed in each category. The \csx{bibliography} command +(or, more precisely, the \environment{thebibliography} environment it +uses) will sort the keys as requested. (Keys not mentioned in a +\environment{category} appear in a ``misc'' category created in the +sorting process.) A code example appears in the package documentation +(a \acro{PDF} file in the \acro{CTAN} directory, +\begin{htmlversion} + which you can browse to, from the link, below). +\end{htmlversion} +\htmlignore + see the file list, below). +\endhtmlignore +\begin{ctanrefs} +\item[bibtopic.sty]\CTANref{bibtopic} +\item[multibbl.sty]\CTANref{multibbl} +\item[multibib.sty]\CTANref{multibib} +\item[splitbib.sty]\CTANref{splitbib} +\end{ctanrefs} + + +\Question[Q-bibinline]{Putting bibliography entries in text} + +This is a common requirement for journals and other publications in +the humanities. Sometimes the requirement is for the entry to appear +in the running text of the document, while other styles require that +the entry appear in a footnote. + +Options for entries in running text are +\begin{itemize} +\item The package \Package{bibentry}, which puts slight restrictions + on the format of entry that your \extension{bst} file generates, but is + otherwise undemanding of the bibliography style. +\item The package \Package{inlinebib}, which requires that you use its + \File{inlinebib.bst}. \Package{Inlinebib} was actually designed for + footnote citations: its \emph{expected} use is that you place a + citation inline as the argument of a \csx{footnote} command. +\item The package \Package{jurabib}, which was originally designed for + German law documents, and has comprehensive facilities for the + manipulation of citations. The package comes with four bibliography + styles that you may use: \File{jurabib.bst}, \File{jhuman.bst} and + two Chicago-like ones. +\end{itemize} + +Options for entries in footnotes are +\begin{itemize} +\item The package \Package{footbib}, and +\item Packages \Package{jurabib} and \Package{inlinebib}, again. +\end{itemize} +Note that \Package{jurabib} does the job using \LaTeX{}'s standard +footnotes, whereas \Package{footbib} creates its own sequence of +footnotes. Therefore, in a document which has other footnotes, it may +be advisable to use \Package{jurabib} (or of course +\Package{inlinebib}), to avoid confusion of footnotes and +foot-citations. + +The \Package{usebib} package offers a `toolbox', which allows the user +to place exactly what is needed, in the text (that is, rather than a +full citation). The package's command, that does the actual +typesetting, is \cmdinvoke{usebibdata}{\meta{key}}{\meta{field}}; it +typesets the \emph{field} item from the entry \emph{key} in the +bibliography; the user then formats the entry as desired~--- obviously +one could construct one's own bibliography, altogether, from this +command, but it would quickly become tedious. +\begin{ctanrefs} +\item[bibentry.sty]\emph{Distributed with} \CTANref{natbib} +\item[footbib.sty]\CTANref{footbib} +\item[inlinebib.sty]\CTANref{inlinebib} +\item[jurabib.sty]\CTANref{jurabib} +\item[usebib.sty]\CTANref{usebib} +\end{ctanrefs} +\LastEdit{2012-03-23} + +\Question[Q-citesort]{Sorting and compressing citations} + +If you give \LaTeX{} +\cmdinvoke{cite}{fred,joe,harry,min}, its default commands could give +something like ``[2,6,4,3]''; +this looks awful. One can of course get the things in order by +rearranging the keys in the \csx{cite} command, but who wants to do +that sort of thing for no more improvement than ``[2,3,4,6]''? + +The \Package{cite} package sorts the numbers and detects consecutive +sequences, so creating ``[2--4,6]''. The \Package{natbib} package, +with the \pkgoption{numbers} and \pkgoption{sort\&compress} options, will +do the same when working with its own numeric bibliography styles +(\File{plainnat.bst} and \File{unsrtnat.bst}). + +The package \Package{biblatex} has a built-in style +\Package{numeric-comp} for its bibliographies. +\begin{ctanrefs} +\item[biblatex.sty]\CTANref{biblatex} +\item[cite.sty]\CTANref{cite} +\item[hypernat.sty]\CTANref{hypernat} +\item[hyperref.sty]\CTANref{hyperref} +\item[plainnat.bst]Distributed with \CTANref{natbib} +\item[unsrtnat.bst]Distributed with \CTANref{natbib} +\end{ctanrefs} +\LastEdit{2012-02-10} + +\Question[Q-mcite]{Multiple citations} + +A convention sometimes used in physics journals is to ``collapse'' a group of +related citations into a single entry in the bibliography. \BibTeX{}, +by default, can't cope with this arrangement, but the \Package{mcite} +and \Package{mciteplus} packages deal with the problem. + +\Package{mcite} overloads the \csx{cite} command to recognise a +``\texttt{*}'' at the start of a key, so that citations of the form +\begin{quote} +\begin{verbatim} +\cite{paper1,*paper2} +\end{verbatim} +\end{quote} +appear in the document as a single citation, and appear arranged +appropriately in the bibliography itself. You're not limited to +collapsing just two references. You can mix ``collapsed'' references +with ``ordinary'' ones, as in +\begin{quote} +\begin{verbatim} +\cite{paper0,paper1,*paper2,paper3} +\end{verbatim} +\end{quote} +Which will appear in the document as 3~citations ``[4,7,11]'' +(say)~--- citation `4' will refer to paper~0, `7' will refer to a +combined entry for paper~1 and paper~2, and `11' will refer to +paper~3. + +You need to make a small change to the bibliography style +(\extension{bst}) file you use; the \Package{mcite} package +documentation tells you how to do that. + +Most recent versions of \Class{REVTeX} (version 4.1 and later), in +conjunction with recent versions of \Package{natbib}, already contain +support for combined citations and so no longer even need +\Package{mciteplus} (but \Package{mciteplus} is more general and will +work with many other class and package combinations). + +The \Package{mciteplus} package adresses many of the infelicites of +\Package{mcite}. Again, `ordinary' \extension{bst} files will not +work with \Package{mciteplus}, but the package documentation explains +how to patch an existing \BibTeX{} style. + +The \Package{collref} package takes a rather different approach to the +problem, and will work with most (if not all) \BibTeX{} packages. +\Package{Collref} spots common subsets of the references, so if it +sees a sequence +\begin{quote} +\begin{verbatim} +\cite{paper0,paper1,paper2,paper3} +... +\cite{some_other_paper,paper1,paper2,and_another} +\end{verbatim} +\end{quote} +it will collect \texttt{paper1} and \texttt{paper2} as a multiple reference. +\begin{ctanrefs} +\item[collref.sty]\CTANref{collref} +\item[mcite.sty]\CTANref{mcite} +\item[mciteplus.sty]\CTANref{mciteplus} +\item[natbib.sty]\CTANref{natbib} +\item[revtex 4.1]\CTANref{revtex4-1} +\end{ctanrefs} +\LastEdit{2010-07-07} + +\Question[Q-backref]{References from the bibliography to the citation} + +A link (or at least a page reference), from the bibliography to the +citing command, is often useful in large documents. + +Two packages support this requirement, \Package{backref} and +\Package{citeref}. \Package{Backref} is part of the +\Package{hyperref} bundle, and supports hyperlinks back to the citing +command. + +\Package{Citeref} is the older, and seems to rely on rather simpler +(and therefore possibly more stable) code; it produces a list of page +references, only. It doesn't interact well with other citation +packages (for example, \Package{cite}), which probably reflects its +antiquity (it's derived from a \LaTeXo{} package). + +Neither collapses +lists of pages (``\texttt{5, 6, 7}'' comes out as such, rather than as +``\texttt{5--7}''), but neither package repeats the reference to a page that +holds multiple citations. (The failure to collapse lists is of course +forgiveable in the case of the \Package{hyperref}-related +\Package{backref}, since the concept of multiple hyperlinks from the +same anchor is less than appealing.) +\begin{ctanrefs} +\item[backref.sty]Distributed with \CTANref{hyperref} +\item[citeref.sty]\CTANref{citeref} +\end{ctanrefs} + +\Question[Q-sortbib]{Sorting lists of citations} + +\BibTeX{} has a sorting function, and most \BibTeX{} styles sort the +citation list they produce; most people find this desirable. + +However, it is perfectly possible to write a +\environment{thebibliography} environment that \emph{looks} as if it +came from \BibTeX{}, and many people do so (in order to save time in +the short term). + +The problem arises when \environment{thebibliography}-writers decide +their citations need to be sorted. A common misapprehension is to +insert \cmdinvoke{bibliographystyle}{alpha} (or similar) and expect +the typeset output to be sorted in some magical way. \BibTeX{} +doesn't work that way!~--- if you write \environment{thebibliography}, +you get to sort its contents. \BibTeX{} will only sort the contents +of a \environment{thebibliography} environment when it creates it, to +be inserted from a \extension{bbl} file by a \csx{bibliography} command. + +\Question[Q-compactbib]{Reducing spacing in the bibliography} + +Bibliographies are, in fact, implemented as lists, so all the +confusion about \Qref*{reducing list item spacing}{Q-complist} also +applies to bibliographies. + +If the \Package{natbib} package `works' for you (it may not if you are using +some special-purpose bibliography style), the solution is relatively +simple~--- add +\begin{quote} +\begin{verbatim} +\usepackage{natbib} +\setlength{\bibsep}{0.0pt} +\end{verbatim} +\end{quote} +to the preamble of your document. + +The \Package{compactbib} package has a similar effect. Its primary +purpose is to produce two bibliographies, and it seems to preclude use +of \BibTeX{} (though the package documentation, in the package file +itself, isn't particularly clear). + +Otherwise, one is into unseemly hacking of something or other. The +\Package{mdwlist} package actually does the job, but it doesn't work +here, because it makes a different-named list, while the name +``\environment{thebibliography}'' is built into \LaTeX{} and +\BibTeX{}. Therefore, we need to % ! line break +\Qref*{patch the underlying macro}{Q-patch}: +\begin{quote} +\begin{verbatim} +\let\oldbibliography\thebibliography +\renewcommand{\thebibliography}[1]{% + \oldbibliography{#1}% + \setlength{\itemsep}{0pt}% +} +\end{verbatim} +\end{quote} +The \Package{savetrees} package performs such a patch, among a +plethora of space-saving measures: you can, in principle, suppress all +its other actions, and have it provide you a compressed bibliography +\emph{only}. +\begin{ctanrefs} +\item[compactbib.sty]\CTANref{compactbib} +\item[mdwlist.sty]Distributed as part of \CTANref{mdwtools}[mdwlist] +\item[natbib.sty]\CTANref{natbib} +\item[savetrees.sty]\CTANref{savetrees} +\end{ctanrefs} + +\Question[Q-bibtocorder]{Table of contents rearranges ``\Package{unsrt}'' ordering} + +If you're using the \Package{unsrt} bibliography style, you're +expecting that your bibliography will \emph{not} be sorted, but that +the entries will appear in the order that they first appeared in your +document. + +However, if you're unfortunate enough to need a citation in a section +title, and you also have a table of contents, the citations that now +appear in the table of contents will upset the ``natural'' ordering +produced by the \Package{unsrt} style. Similarly, if you have +citations in captions, and have a list of figures (or tables). + +There's a pretty simple ``manual'' method for dealing with the +problem~--- when you have the document stable: +\begin{enumerate} +\item Delete the \extension{aux} file, and any of \extension{toc}, + \extension{lof}, \extension{lot} files. +\item Run \LaTeX{}. +\item Run \BibTeX{} for the last time. +\item Run \LaTeX{} often enough that things are stable again. +\end{enumerate} +Which is indeed simple, but it's going to get tedious when you've +found errors in your ``stable'' version, often enough. + +The package \Package{notoccite} avoids the kerfuffle, and suppresses +citations while in the table of contents, or lists of figures, tables +(or other floating things: the code is quite general). +\begin{ctanrefs} +\item[notoccite.sty]\CTANref{notoccite} +\end{ctanrefs} + +\Question[Q-i18nbib]{Non-english bibliographies} + +Like so much of early \AllTeX{} software, \BibTeX{}'s assumptions were +firmly rooted in what its author knew well, viz., academic papers in +English (particularly those with a mathematical bent). \BibTeX{}'s +standard styles all address exactly that problem, leaving the user who +writes in another language (or who deal with citations in the style of +other disciplines than maths) to strike out into contributed software. + +For the user whose language is not English, there are several +alternatives. Possibly most straightforward is to switch to using +\Package{biblatex}, which can produce a bibliography appropriate to +several languages. However, \Package{biblatex} is large and has +correspondingly large documentation (though it is well-written and +pleasingly typeset), so its adoption takes time. + +Otherwise, the simplest procedure is to provide translations of +\BibTeX{} styles into the +required language: the solitary \Package{finplain.bst} does that for +Finnish; others one can find are for Danish (\Package{dk-bib}), French +(\Package{bib-fr}), German (\Package{bibgerm}), Norwegian +(\Package{norbib}) and Swedish (\Package{swebib}) bundles (of which +the \Package{bib-fr} set is the most extensive). The \Package{spain} +style implements a traditional Spanish citation style. + +These static approaches solve the problem, for the languages that have +been covered by them. Unfortunately, with such an approach, a lot of +work is needed for every language involved. Two routes to a solution +of the ``general'' problem are available~--- that offered by +\Package{babelbib}, and the % ! line break +\Qref*{\Package{custom-bib} mechanism for generating styles}{Q-custbib}. + +\Package{Babelbib} (which is a development of the ideas of the +\Package{bibgerm} package) co-operates with \Package{babel} to control +the language of presentation of citations (potentially at the level of +individual items). The package has a built-in set of languages it +`knows about', but the documentation includes instructions on defining +commands for other languages. \Package{Babelbib} comes with its own +set of bibliography styles, which could be a restriction if there +wasn't also a link from \Package{custom-bib}. + +The \Package{makebst} menu of \Package{custom-bib} allows you to +choose a language for the \BibTeX{} style you're generating (there are +14 languages to choose; it looks as if \Package{spain.bst}, mentioned +above, was generated this way). If, however, you opt not to specify a +language, you are asked whether you want the style to interact with +\Package{babelbib}; if you do so, you're getting the best of both +worlds~--- formatting freedom from \Package{custom-bib} and linguistic +freedom via the extensibility of \Package{babelbib} +\begin{ctanrefs} +\item[babelbib.sty]\CTANref{babelbib} +\item[bib-fr \nothtml{\rmfamily\upshape}bundle]\CTANref{bib-fr} +\item[bibgerm \nothtml{\rmfamily\upshape}bundle]\CTANref{bibgerm} +\item[biblatex.sty]\CTANref{biblatex} +\item[custom-bib \nothtml{\rmfamily\upshape}bundle]\CTANref{custom-bib} +\item[finplain.bst]\CTANref{finplain} +\item[norbib \nothtml{\rmfamily\upshape}bundle]\CTANref{norbib} +\item[spain]\CTANref{spain} +\item[swebib \nothtml{\rmfamily\upshape}bundle]\CTANref{swebib} +\end{ctanrefs} +\LastEdit{2012-03-23} + +\Question[Q-formbiblabel]{Format of numbers in the bibliography} + +By default, \LaTeX{} makes entries in the bibliography look like: +\begin{quote} + [1] Doe, Joe et al. Some journal. 2004.\\ {} + [2] Doe, Jane et al. Some journal. 2003. +\end{quote} +while many documents need something like: +\begin{quote} + 1. Doe, Joe et al. Some journal. 2004.\\ + 2. Doe, Jane et al. Some journal. 2003. +\end{quote} + +This sort of change may be achieved by many of the ``general'' +citation packages; for example, in \Package{natbib}, it's as simple as: +\begin{quote} +\begin{verbatim} +\renewcommand{\bibnumfmt}[1]{#1.} +\end{verbatim} +\end{quote} +but if you're not using such a package, the following internal +\LaTeX{} commands, in the preamble of your document, will do the job: +\begin{quote} +\begin{verbatim} +\makeatletter +\renewcommand*{\@biblabel}[1]{\hfill#1.} +\makeatother +\end{verbatim} +\end{quote} +\begin{ctanrefs} +\item[natbib.sty]\CTANref{natbib} +\end{ctanrefs} + +\subsection{Manipulating whole bibliographies} + +\Question[Q-nocite*]{Listing all your \BibTeX{} entries} + +\LaTeX{} and \BibTeX{} co-operate to offer special treatment of this +requirement. The command \cmdinvoke{nocite}{*} is specially treated, +and causes \BibTeX{} to generate bibliography entries for every entry +in each \extension{bib} file listed in your \csx{bibliography} statement, so +that after a \LaTeX{}--\BibTeX{}--\LaTeX{} sequence, you have a +document with the whole thing listed. + +Note that \LaTeX{} \emph{doesn't} produce +% beware line breaks +``\texttt{Citation ... undefined}'' or +``\texttt{There were undefined references}'' warnings in respect of +\cmdinvoke{nocite}{*}. This isn't a problem if you're running +\LaTeX{} ``by hand'' (you \emph{know} exactly how many times you have +to run things), but the lack might confuse automatic processors that +scan the log file to determine whether another run is necessary. + +A couple of packages are available, that aim to reduce the impact of +\cmdinvoke{nocite}{*} of a large citation database. \Package{Biblist} +was written for use under \LaTeXo{}, but seems to work well enough; +\Package{listbib} is more modern. Both provide their own +\extension{bst} files. (The impact of large databases was significant +in the old days of \LaTeX{} systems with very little free memory; this +problem is less significant now than it once was.) +\begin{ctanrefs} +\item[biblist.sty]\CTANref{biblist} +\item[listbib.sty]\CTANref{listbib} +\end{ctanrefs} + +\Question[Q-htmlbib]{Making \acro{HTML} of your Bibliography} + +A neat solution is offered by the \Package{noTeX} bibliography style. +This style produces a \extension{bbl} file which is in fact a series of +\acro{HTML} `\texttt{P}' elements of class \texttt{noTeX}, and which +may therefore be included in an \acro{HTML} file. Provision is made +for customising your bibliography so that its content when processed by +\Package{noTeX} is different from that presented when it is processed +in the ordinary way by \AllTeX{}. + +A thorough solution is offered by \Package{bib2xhtml}; using it, you +make use of one of its modified versions of many common \BibTeX{} +styles, and post-process the output so produced using a +\ProgName{perl} script. + +A more conventional translator is the \ProgName{awk} script +\ProgName{bbl2html}, which translates the \extension{bbl} file you've generated: +a sample of the script's output may be viewed on the web, at +\URL{http://rikblok.cjb.net/lib/refs.html} +\begin{ctanrefs} +\item[bbl2html.awk]\CTANref{bbl2html} +\item[bib2xhtml]\CTANref{bib2xhtml} +\item[noTeX.bst]\CTANref{noTeX} +\end{ctanrefs} + diff --git a/help/uk-tex-faq/faq-bits+pieces.tex b/help/uk-tex-faq/faq-bits+pieces.tex new file mode 100644 index 0000000000..113d1139e4 --- /dev/null +++ b/help/uk-tex-faq/faq-bits+pieces.tex @@ -0,0 +1,1174 @@ +% $Id: faq-bits+pieces.tex,v 1.32 2014/01/28 18:17:36 rf10 Exp rf10 $ + +\section{Bits and pieces of \AllTeX{}} + +\Question[Q-dvi]{What is a \acro{DVI} file?} + +`\acro{DVI}' is supposed to be an acronym for +\acro{D}e\acro{V}ice-\acro{I}ndependent, meaning that the file may be +processed for printing or viewing on most kinds of typographic output +device or display. + +A \acro{DVI} file (that is, a file with the type or extension +\extension{dvi}) is the main output file of ``original'' \tex{} (later +\tex{}-like systems, such as \Qref*{\pdftex{}}{Q-whatpdftex} may use +other formats). + +A \acro{DVI} file contains all the information that is needed for +printing or previewing, except for the actual bitmaps or outlines of +fonts, and any material to be introduced by means of % !line break +\Qref*{\csx{special} commands}{Q-specials}. Characters in the +\acro{DVI} file (representing glyphs for printing or display) appear +in an encoding determined in the document. + +Any \TeX{} input file should produce the same \acro{DVI} file +regardless of which implementation of \TeX{} is used to produce it. + +An \acro{DVI} file may be processed by a \Qref*{DVI driver}{Q-driver} +to produce further output designed specifically for a particular +printer, or for output in another format (for distribution), or it may +be used by a previewer for display on a computer screen. + +Note that \Qref*{\xetex{}}{Q-xetex} (released some time after +\pdftex{}) uses an ``extended \acro{DVI} format'' (\acro{XDV}) to send +its output to a close-coupled \Qref*{\acro{DVI} driver}{Q-driver}, +\ProgName{xdvipdfmx}. + +The canonical reference for the structure of a \acro{DVI} file is the +source of Knuth's program \ProgName{dvitype} (whose original purpose, +as its name implies, was to view the content of a \acro{DVI} file). +A partially complete ``standard'' for the way they should be +processed may offer further enlightenment. +\begin{ctanrefs} +\item[\nothtml{rmfamily}DVI processing standard]\CTANref{dvistd} +\item[dvitype]\CTANref{dvitype} +\end{ctanrefs} +\LastEdit{2013-03-15} + +\Question[Q-driver]{What is a \acro{DVI} driver?} + +A \acro{DVI} driver is a program that takes as input a +\Qref*{\acro{DVI} file}{Q-dvi} +and (usually) produces a file in a format that something \emph{other} +than a \TeX{}-related program can process. + +A driver may be designed for producing output for printing (e.g., +\PS{}), for later processing (e.g., \PS{} for inclusion in a later +document), or for document exchange (e.g., \acro{PDF}). + +As well as the \acro{DVI} file, the driver typically also needs font +information. Font information may be held as bitmaps or as outlines, +or simply as a set of pointers into the fonts that a printer itself +provides. Each driver will expect the font information in a particular +form. + +For more information on the forms of font information, see +\Qref[questions]{\acro{PK} files}{Q-pk}, +% ! line break +\Qref[]{\acro{TFM} files}{Q-tfm}, +\Qref[]{virtual fonts}{Q-virtualfonts} +and \Qref[]{Using \PS{} fonts with \TeX{}}{Q-usepsfont}. +\LastEdit{2011-10-10} + +\Question[Q-pk]{What are \acro{PK} files?} + +\acro{PK} files (packed raster) are the canonical form of \tex{} font +bitmaps. The output from \Qref*{\MF{}}{Q-useMF} includes a generic +font (\acro{GF}) file and the utility \ProgName{gftopk} produces a +\acro{PK} file from that. + +There are potentially a lot of \acro{PK} files, as one +is needed for each font: that is for each magnification of each +design (point) size for each weight for each font in each family. + +Further, since the \acro{PK} files for one printer do not necessarily +work well for another, the whole set needs to be duplicated for each +printer type at a site. + +While this menagerie of bitmaps can (in principle) provide fonts that +are closely matched to the capabilities of each printer, the size of +the collection (and the resulting difficulty of maintaining it) has +been a potent driver to the move towards outline fonts such as +\Qref*{Adobe Type 1 fonts}{Q-adobetypen}. +\LastEdit{2012-10-20} + +\Question[Q-tfm]{What are \acro{TFM} files?} + +\acro{TFM} is an acronym for `\TeX{} Font Metrics'; \acro{TFM} files hold +information about the sizes of the characters of the font in question, +and about ligatures and kerns within that font. One \acro{TFM} file is +needed for each font used by \TeX{}, that is for each design (point) +size for each weight for each family; each \acro{TFM} file serves for all +magnifications of `its' font, so that there are (typically) fewer +\acro{TFM} files than there are \Qref*{\acro{PK}}{Q-pk} files. \TeX{}, +\LaTeX{}, etc.,\@ +themselves need only know about the sizes of characters and their +interactions with each other, but not what characters look like. By +contrast, \acro{TFM} files are not, in principle, needed by the +\acro{DVI} driver, which only needs to know about the glyphs that each +character selects, so as to print or display them. + +Note that TrueType and OpenType fonts contain the necessary metrics, +so that \Qref{\xetex{}}{Q-xetex} and \Qref{\luatex{}}{Q-luatex}, using +such fonts, have no need of \acro{TFM} files. A corollary of this is +that setting up fonts for use by these engines is far \emph{easier}. +\LastEdit{2012-10-20} + +\Question[Q-virtualfonts]{What are virtual fonts?} + +Virtual fonts provide a means of collecting bits and pieces together +to make the glyphs of a font: the bits and pieces may be glyphs from +``other'' fonts, rules and other ``basic'' typesetting commands, and +the positioning information that specifies how everything comes +together. + +An early instance of something like virtual fonts for \TeX{} was +implemented by David Fuchs to use an unusual printer. However, for +practical purposes for the rest of us, virtual fonts date from when Knuth +specified a format and wrote some support software, in 1989 (he +published an % ! line break +\href{http://tug.org/TUGboat/tb11-1/tb27knut.pdf}{article in \textsl{TUGboat}} +at the time; a plain text copy is available on \acro{CTAN}). + +Virtual fonts provide a way of telling \TeX{} about something more +complicated than just a one-to-one character mapping. \TeX{} reads a +\acro{TFM} file of the font, just as before, but the \acro{DVI} +processor will read the \acro{VF} and use its content to specify how +each glyph is to be processed. + +The virtual font may contain commands: +\begin{itemize} +\item to `open' one or more (real) fonts for subsequent use, +\item to remap a glyph from one of the (real) fonts for use in the + virtual font, +\item to build up a more complicated effect (using \acro{DVI} commands). +\end{itemize} + +% !this has to be generated as a new paragraph by the translator, so +% leave the blank line in place +In practice, the most common use of virtual fonts is to remap +Adobe Type 1 fonts (see \Qref[question]{font metrics}{Q-metrics}), +though there has also been useful useful work building `fake' maths +fonts (by bundling glyphs from several fonts into a single virtual +font). Virtual Computer Modern fonts, making a % ! line break +\Qref*{Cork encoded}{Q-ECfonts} font from Knuth's originals by using +remapping and fragments of \acro{DVI} for single-glyph `accented +characters', were the first ``Type~1 format'' Cork-encoded Computer +Modern fonts available. + +Virtual fonts are normally created in a single \acro{ASCII} \acro{VPL} +(Virtual Property List) file, which includes two sets of information. +The \ProgName{vptovf} utility will use the \acro{VPL} file to create +the binary \acro{TFM} and \acro{VF} files. + +A ``how-to'' document, explaining how to generate a \acro{VPL}, +describes the endless hours of fun that may be had, doing the job by +hand. Despite the pleasures to be had, the commonest way (nowadays) +of generating an \acro{VPL} file is to use the +\ProgName{fontinst} package, which is described in more detail +\htmlonly{together with the discussion of} +\Qref[in answer]{\PS{} font metrics}{Q-metrics}. +\Package{Qdtexvpl} is another utility for creating ad-hoc virtual +fonts (it uses \TeX{} to parse a description of the virtual font, and +\ProgName{qdtexvpl} itself processes the resulting \acro{DVI} file). +\begin{ctanrefs} +\item[fontinst]\CTANref{fontinst} +\item[\nothtml{\rmfamily}Knuth on virtual fonts]\CTANref{vf-knuth} +\item[\nothtml{\rmfamily}Virtual fonts ``how to'']\CTANref{vf-howto} +\item[qdtexvpl]\CTANref{qdtexvpl} +\end{ctanrefs} +\LastEdit{2012-10-20} + +\Question[Q-whatmacros]{What are (\TeX{}) macros} + +\TeX{} is a \emph{macro processor}: this is a computer-science-y term +meaning ``text expander'' (more or less); \TeX{} typesets text as it +goes along, but \emph{expands} each macro it finds. \TeX{}'s macros +may include instructions to \TeX{} itself, on top of the simple text +generation one might expect. + +Macros are a \emph{good thing}, since they allow the user to +manipulate documents according to context. For example, the macro +\csx{TeX} is usually defined to produce ``TEX'' with the `E' lowered +(the original idea was Knuth's), +but in these \acro{FAQ}s the default definition of the macro is +overridden, and it simply expands to the letters ``TeX''. (\emph{You} +may not think this a good thing, but the author of the macros has his +reasons~-- see \Qref[question]{\TeX{}-related logos}{Q-logos}.) + +Macro names are conventionally built from a \texttt{\textbackslash } +followed by a sequence of letters, which may be upper or lower case +(as in \csx{TeX}, mentioned above). They may also be % ! line break +\texttt{\textbackslash \meta{any single character}}, which allows all +sorts of oddities (many built in to most \TeX{} macro sets, all the +way up from the apparently simple `\csx{ }' meaning ``insert a space +here''). + +Macro programming can be a complicated business, but at their very +simplest they need little introduction~--- you'll hardly need to be +told that: +\begin{quote} +\begin{verbatim} +\def\foo{bar} +\end{verbatim} +\end{quote} +replaces each instance of \csx{foo} with the text ``bar''. The +command \csx{def} is \plaintex{} syntax for defining commands; +\LaTeX{} offers a macro \csx{newcommand} that goes some way towards +protecting users from themselves, but basically does the same thing: +\begin{quote} +\begin{verbatim} +\newcommand{\foo}{bar} +\end{verbatim} +\end{quote} +Macros may have ``arguments'' , which are used to substitute for marked +bits of the macro expansion: +\begin{quote} +\begin{verbatim} +\def\foo#1{This is a #1 bar} +... +\foo{2/4}. +\end{verbatim} +\end{quote} +which produces: +\begin{quote} + This is a 2/4 bar. +\end{quote} +or, in \LaTeX{} speak: +\begin{quote} +\begin{verbatim} +\newcommand{\foo}[1]{This is a #1 bar} +... +\foo{3/4}. +\end{verbatim} +\end{quote} +which produces: +\begin{quote} + This is 3/4 bar. +\end{quote} +(\latex{} users waltz through life, perhaps?) + +You will have noticed that the arguments, above, were enclosed in +braces (\texttt{\obracesymbol{}\dots{}\cbracesymbol{}}); this is the +normal way of typing arguments, though \TeX{} is enormously flexible, +and you may find all sorts of other ways of passing arguments (if you +stick with it). + +Macro writing can get very complicated, very quickly. If you are a +beginner \AllTeX{} programmer, you are well advised to read something +along the lines of the \Qref*{\TeX{}book}{Q-tex-books}; once you're under +way, \Qref*{\TeX{} by Topic}{Q-ol-books} is possibly a more satisfactory +choice. Rather a lot of the answers in these \acro{FAQ}s tell you +about various issues of how to write macros. +\LastEdit{2011-10-12} + +\Question[Q-specials]{\csx{special} commands} + +\TeX{} provides the means to express things that device drivers can +do, but about which \TeX{} itself knows nothing. For example, \TeX{} +itself knows nothing about how to include \PS{} figures into +documents, or how to set the colour of printed text; but some device +drivers do. + +Instructions for such things are introduced to your document by means +of \csx{special} commands; all that \TeX{} does with these commands is +to expand their +arguments and then pass the command to the \acro{DVI} file. In most +cases, there are macro packages provided (often with the driver) that +provide a human-friendly interface to the \csx{special}; for example, +there's little point including a figure if you leave no gap for it in +your text, and changing colour proves to be a particularly fraught +operation that requires real wizardry. \LaTeXe{} +has standard graphics and colour packages that make figure inclusion, +rotation and scaling, and colour typesetting relatively +straightforward, despite the rather daunting \csx{special} commands +involved. (\CONTeXT{} provides similar support, though not by way of +packages.) + +The allowable arguments of \csx{special} depend on the device driver +you're using. Apart from the examples above, there are \csx{special} +commands in the em\TeX{} drivers (e.g., \ProgName{dvihplj}, \ProgName{dviscr}, +\emph{etc}.)~that will draw lines at arbitrary orientations, and +commands in \ProgName{dvitoln03} that permit the page to be set in +landscape orientation. + +Note that \csx{special} behaves rather differently in \PDFTeX{}, since +there is no device driver around. There \emph{is} a concept of +\acro{PDF} specials, but in most cases \csx{special} will provoke a +warning when used in \PDFTeX{}. +\LastEdit{2011-10-15} + +\Question[Q-write]{Writing (text) files from \tex{}} + +\TeX{} allows you to write to output files from within your document. +The facility is handy in many circumstances, but it is vital for +several of the things \latex{} (and indeed almost any higher-level +\tex{}-based macro package) does for you. + +The basic uses of writing to an external file are ``obvious''~--- +remembering titles of sections for a table of contents, remembering +label names and corresponding section or figure numbers, all for a +later run of your document. However, the ``non-obvious'' thing is +easy to forget: that page numbers, in \tex{}, are slippery beasts, and +have to be captured with some care. The trick is that \csx{write} +operations are only executed as the page is sent to the \acro{DVI} +or \acro{PDF} file. Thus, if you arrange that your page-number macro +(\csx{thepage}, in \latex{}) is not expanded until the page is +written, then the number written is correct, since that time is where +\tex{} guarantees the page number tallies with the page being sent +out. + +Now, there are times when you want to write something straight away: +for example, to interact with the user. \TeX{} captures that +requirement, too, with the primitive command \csx{immediate}: +\begin{quote} +\begin{verbatim} +\immediate\write\terminal{I'm waiting...} +\end{verbatim} +\end{quote} +writes a ``computer-irritates-user'' message, to the terminal. + +Which brings us to the reason for that \csx{terminal}. \TeX{} can +``\csx{write}'' up to 16 streams simultaneously, and that argument to +\csx{write} says which is to be used. Macro packages provide the +means of allocating streams for your use: \plaintex{} provides a macro +\csx{newwrite} (used as ``\csx{newwrite}\csx{streamname}'', which sets +\csx{streamname} as the stream number). In fact, \csx{terminal} (or +its equivalent) is the first output stream ever set up (in most macro +packages): it is never attached to a file, and if \tex{} is asked to +write to \emph{any} stream that isn't attached to a file it will send +the output to the terminal (and the log). +\LastEdit{2011-10-15} + +\Question[Q-spawnprog]{Spawning programs from \AllTeX{}: \csx{write18}} + +The \tex{} \Qref*{\csx{write} primitive instruction}{Q-write} is used +to write to different file `streams'; TeX refers to each open file by +a number, not by a file name (although most of the time we hide this). +Originally, \tex{} would write to a file connected to a stream +numbered 0--15. More recently, a special ``stream 18'' has been +implemented: it is not writing to a file, but rather tells TeX to ask +the operating system to do something. To run a command, we put it as +the argument to \csx{write18}. So to run the \progname{epstopdf} +utility on a file with name stored as \csx{epsfilename}, we would +write: +\begin{quote} +\begin{verbatim} +\write18{epstopdf \epsfilename} +\end{verbatim} +\end{quote} +When using something like the \Package{epstopdf} package, the `stream' +write operation is hidden away and you don't need to worry about the +exact way it's done. + +However, there is a security issue. If you download some \alltex{} code from +the Internet, can you be sure that there is not some command in it +(perhaps in a hidden way) to do stuff that might be harmful to your +computer (let's say: delete everything on the hard disk!)? In the +face of this problem, both \miktex{} and \tex{}~Live have, for some +time, disabled \csx{write18} by default. To turn the facility on, +both distributions support an additional argument when starting \tex{} +from the command shell: +\begin{quote} +\begin{verbatim} +(pdf)(la)tex --shell-escape +\end{verbatim} +\end{quote} +The problem with this is that many people use \alltex{} via a graphical +editor, so to use \csx{write18} for a file the editor's settings must +be changed. Of course, the settings need restoring after the file is +processed: you defeat the point of the original protection, that way. + +The latest \miktex{} (version 2.9), and recent \tex{}~Live (from the +2010 release) get +around this by having a special ``limited'' version of \csx{write18} +enabled `out of the box'. The idea is to allow only a pre-set list of +commands (for example, \BibTeX{}, \progname{epstopdf}, \tex{} itself, +and so on). Those on the list are regarded as safe enough to allow, +whereas anything else (for example deleting files) still needs to be +authorised by the user. This seems to be a good balance: most people +most of the time will not need to worry about \csx{write18} at all, +but it will be available for things like \Package{epstopdf}. + +Note that the \tex{} system may tell you that the mechanism is in use: +\begin{wideversion} +\begin{quote} +\begin{verbatim} +This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010) + restricted \write18 enabled. +\end{verbatim} +\end{quote} +\end{wideversion} +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +This is pdfTeX, Version 3.1415926-1.40.11 + (TeX Live 2010) + restricted \write18 enabled. +\end{verbatim} +\end{quote} +\end{narrowversion} +when it starts. +\begin{ctanrefs} +\item[epstopdf.sty]Distributed with Heiko Oberdiek's packages + \CTANref{oberdiek}[epstopdf-pkg] +\end{ctanrefs} +\LastEdit{2012-12-03} + +\Question[Q-hyphen]{How does hyphenation work in \TeX{}?} + +Everyone knows what hyphenation is: we see it in most books we read, +and (if we're alert) will spot occasional ridiculous mis-hyphenation +(at one time, British newspapers were a fertile source). + +Hyphenation styles are culturally-determined, and the same language +may be hyphenated differently in different countries~--- for example, +British and American styles of hyphenation of English are very +different. As a result, a typesetting system that is not restricted +to a single language at a single locale needs to be able to change its +hyphenation rules from time to time. + +\TeX{} uses a pretty good system for hyphenation (originally designed +by Frank Liang~--- you may view his % ! line break +\href{http://tug.org/docs/liang/}{Ph.D.\ thesis} online) and while +it's capable of missing ``sensible'' hyphenation points, it seldom +selects grossly wrong ones. The +algorithm matches candidates for hyphenation against a set of +``hyphenation patterns''. The candidates for hyphenation must be +sequences of letters (or other single characters that \TeX{} may be +persuaded to think of as letters). Non-letters interrupt hyphenation; +this applies to \TeX{}'s \csx{accent} primitive (as in `syst\`eme') +just as much as the exclamation in`syst!eme'. + +(Hyphenation takes place on the characters ``sent to the printer''. +The problem with \csx{accent} is avoided~---in \latex{}~--- by the use +of the \Package{fontenc} package, as discussed in % ! line break +``\Qref*{Accented words aren t hyphenated}{Q-hyphenaccents}''.) + +Sets of hyphenation patterns are usually derived from analysis of +a list of valid hyphenations (the process of derivation, using a tool +called \Package{patgen}, is not ordinarily a sport to be played by +ordinary mortals). + +The patterns for the languages a \TeX{} system is going to deal with +may only be loaded when the system is installed. To change the set of +hyphenation patterns recognised by a \tex{}-based or \xetex{} system, +a \Qref*{partial reinstallation}{Q-newlang} is necessary (note that +\Qref*{\luatex{}}{Q-luatex} relaxes this constraint). + +\TeX{} provides two ``user-level'' commands for control of +hyphenation: \csx{language} (which selects a hyphenation style), and +\csx{hyphenation} (which gives explicit instructions to the hyphenation +engine, overriding the effect of the patterns). + +The ordinary \LaTeX{} user need not worry about \csx{language}, since +it is very thoroughly managed by the \Package{babel} package; use of +\csx{hyphenation} is discussed in +\begin{wideversion} + the context of +\end{wideversion} +% beware line wrap +\Qref[question]{hyphenation failure}{Q-nohyph}. +\LastEdit{2012-12-03} + +\Question[Q-clsvpkg]{What are \LaTeX{} classes and packages?} + +\latex{} aims to be a general-purpose document processor. Such an aim +could be achieved by a selection of instructions which would enable +users to use \tex{} primitives, but such a procedure is considered too +inflexible (and probably too daunting for ordinary users). Thus the +designers of \latex{} created a model which offered an +\emph{abstraction} of the design of documents. Obviously, not all +documents can look the same (even with the defocussed eye of +abstraction), so the model uses \emph{classes} of document. Base +\latex{} offers five classes of document: \Class{book}, +\Class{report}, \Class{article} and \Class{letter}. +For each class, \latex{} provides a \emph{class file}; the user +arranges to use it via a \csx{documentclass} command at the top of the +document. So a document starting +\begin{quote} + \cmdinvoke{documentclass}{article} +\end{quote} +may be called ``an \emph{article} document''. + +This is a good scheme, but it has a glaring flaw: the actual +typographical designs provided by the \latex{} class files aren't +widely liked. The way around this is to \emph{refine} the class. To +refine a class, a programmer may write a new class file that loads an +existing class, and then does its own thing with the document design. + +If the user finds such a refined class, all is well, but if not, the +common way is to load a \emph{package} (or several). + +The \latex{} distribution, itself, provides rather few package files, +but there are lots of them, by a wide variety of authors, to be found +on the archives. Several packages are designed just to adjust the +design of a document~--- using such packages achieves what the +programmer might have achieved by refining the class. + +Other packages provide new facilities: for example, the +\Package{graphics} package (actually provided as part of any \latex{} +distribution) allows the user to load externally-provided graphics +into a document, and the \Package{hyperref} package enables the user +to construct hyper-references within a document. + +On disc, class and package files only appear different by virtue of +their name ``extension''~--- class files are called \File{*.cls} while +package files are called \File{*.sty}. Thus we find that the \LaTeX{} +standard \Class{article} class is represented on disc by a file called +\File{article.cls}, while the \Package{hyperref} package is +represented on disc by a file called \File{hyperref.sty}. + +The class vs.~package distinction was not clear in \LaTeXo{}~--- +everything was called a style (``document style'' or ``document style +option''). It doesn't really matter that the nomenclature has +changed: the important requirement is to understand what other people +are talking about. +\LastEdit{2013-10-21} + +\Question[Q-whatenv]{What are \latex{} ``environments''} + +While \tex{} makes direct provision for commands, \latex{} adds a +concept of ``environment''; environments perform an action on a block +(of something or other) rather than than just doing something at one +place in your document. + +A totally trivial environment could change the font in use for a chunk +of text, as +\begin{quote} +\begin{verbatim} +\newenvironment{monoblock}% + {\ttfamily}% + {} +\end{verbatim} +\end{quote} +which defines a \environment{monoblock} which may be used as +\begin{quote} +\begin{verbatim} +\begin{monoblock} + some text set in monospace +\end{monoblock} +\end{verbatim} +\end{quote} +which will look like: +\begin{quote} + \texttt{some text set in monospace} +\end{quote} +so it is a particularly simple example. A rather complicated +environment is introduced by \cmdinvoke{begin}{document}; it looks +simple, but needs all sorts of special \tex{} code to make it work +`transparently'; most environments are more elaborate than +\environment{monoblock} and \emph{much} simpler than +\environment{document}. + +An environment puts its content inside a \tex{} \emph{group}, so that +commands used inside the environment don't `leak out'~--- the +\environment{monoblock} environment, above, restricts its effect to +its own contents (the stuff between the \cmdinvoke{begin}{monoblock} +and \cmdinvoke{end}{monoblock}), which is just what you need for this +sort of thing. + +So that's ``simple'' environments; the \environment{monoblock}, above +doesn't actually gain us much over +\begin{quote} +\begin{verbatim} +{\ttfamily some text set in monospace} +\end{verbatim} +\end{quote} +though in fact many useful environments are just as simple (to look +at). Some, such as \environment{verbatim}, look simple but are +actually very tricky inside. + +\latex{} also allows arguments to an environment: +\begin{quote} +\begin{verbatim} +\newenvironment{fontblock}[1]% + {#1\selectfont}% + {} +\end{verbatim} +\end{quote} +and use of \environment{fontblock} as: +\begin{quote} +\begin{verbatim} +\begin{fontblock}{\ttfamily} +\end{verbatim} +\end{quote} +would produce the same effect as the \environment{monoblock} +environment. + +Environments may also have optional arguments, in much the same way as +commands: +\begin{quote} +\begin{verbatim} +\newenvironment{normaltext}[1][\itshape]% + {#1}% + {} +\end{verbatim} +\end{quote} +which will ordinarily set its body in italic, but +\begin{quote} +\begin{verbatim} +\begin{normaltext}[\ttfamily] + ... +\end{normaltext} +\end{verbatim} +\end{quote} +will observe its optional argument, and behave the same as the +\environment{monoblock} we started with. + +Note that an environments argument(s) (mandatory or optional) are +\emph{not} passed to the `\csx{end}' text of the environment~--- that +is specified as a macro with no arguments, so that +\begin{quote} +\begin{verbatim} +\newenvironment{normaltext}[1][\itshape]% + {#1}% + {\typeout{what was #1, again?} +\end{verbatim} +\end{quote} +produces an error message +\begin{quote} +\begin{verbatim} +! Illegal parameter number in definition of \endnormaltext. +\end{verbatim} +\end{quote} +So, if you need to pass an environment argument to the end-code, you +have to wrap it in a macro of its own: +\begin{quote} +\begin{verbatim} +\newenvironment{normaltext}[1][Intro]% + {#1% + \newcommand{\foo}{#1}}% + {\typeout{what was \foo{}, again?} +\end{verbatim} +\end{quote} +\LastEdit*{2013-02-20} + +\Question[Q-dtx]{Documented \LaTeX{} sources (\extension{dtx} files)} + +\LaTeXe{}, and many contributed \latex{} macro packages, are written +in a \Qref*{literate programming style}{Q-lit}, with source and +documentation in the +same file. This format in fact originated before the +days of the \LaTeX{} project as one of the ``Mainz'' series of +packages. A documented source file conventionally has the suffix +\extension{dtx}, and will normally be `stripped' before use with +\LaTeX{}; an installation (\extension{ins}) file is normally provided, +to automate this process of removing comments for speed of loading. +If the \extension{ins} file is available, you may process \emph{it} +with \latex{} to produce the package (and, often, auxiliary files). + +Output should look something like: +\begin{quote} +\begin{verbatim} +Generating file(s) ./foo.sty + +Processing file foo.dtx (package) -> foo.sty +File foo.dtx ended by \endinput. +Lines processed: 2336 +Comments removed: 1336 +Comments passed: 2 +Codelines passed: 972 +\end{verbatim} +\end{quote} +The lines ``\texttt{Processing \dots{}\ ended by \csx{endinput}}'' may +be repeated if the \extension{dtx} file provides more than one +`unpacked' file. + +To read the comments ``as a document'', you can run \LaTeX{} on the +\extension{dtx} file to produce a nicely formatted version of the +documented code. (Most \latex{} packages on \ctan{}, nowadays, already +have \acro{PDF} of the result of processing the \extension{dtx} file, +as ``documentation''.) + +Several packages may be included in one \extension{dtx} file, with +conditional sections, and there are facilities for indexes of macros, +etc. All of this m\'elange is sorted out by directives in the +\extension{ins} file; conventional indexing utilities may be necessary +for ``full'' output. + +Anyone may write \extension{dtx} files; the format is explained in +\Qref*{The \LaTeX{} Companion}{Q-latex-books}, and a tutorial is available +from \acro{CTAN} (which comes with skeleton \extension{dtx} and +\extension{ins} files). + +Composition of \extension{dtx} files is supported in \ProgName{emacs} by +\Qref*{\acro{AUC}-\TeX{}}{Q-editors}. + +The (unix-based) script \ProgName{dtxgen} generates a proforma basic +\extension{dtx} file, which could be useful when starting a new +project. + +Another route to an \extension{dtx} file is to write the +documentation and the code separately, and then to combine them using +the \ProgName{makedtx} system. This technique has particular value in +that the documentation file can be used separately to generate +\acro{HTML} output; it is often quite difficult to make % ! line break +\Qref*{\LaTeX{} to \acro{HTML} conversion}{Q-LaTeX2HTML} tools deal +with \extension{dtx} files, since they use an unusual class file. + +The \ProgName{sty2dtx} system goes one step further: it attempts to +create a \extension{dtx} file from a `normal' \extension{sty} file +with comments. It works well, in some circumstances, but can become +confused by comments that aspire to ``structure'' (e.g., tabular +material, as in many older packages' file headers). + +The \extension{dtx} files are not used by \LaTeX{} after they have been +processed to produce \extension{sty} or \extension{cls} (or whatever) +files. They need not be kept with the working system; however, for +many packages the \extension{dtx} file is the primary source of +documentation, so you may want to keep \extension{dtx} files elsewhere. + +An interesting sideline to the story of \extension{dtx} files is the +\Package{docmfp} package, which extends the model of the \Package{doc} +package to +\begin{flatversion} + \MF{} and \MP{} (\Qref[see questions]{}{Q-MF} and \Qref[\nothtml]{}{Q-MP}) +\end{flatversion} +\begin{hyperversion} + \Qref{\MF{}}{Q-MF} and \Qref{\MP{}}{Q-MP}, +\end{hyperversion} +thus permitting documented distribution of bundles containing code for +\MF{} and \MP{} together with related \LaTeX{} code. +\begin{ctanrefs} +\item[AUC-TeX]\CTANref{auctex} +\item[clsguide.pdf]\CTANref{clsguide} +\item[docmfp.sty]\CTANref{docmfp} +\item[docstrip.tex]Part of the \LaTeX{} distribution +\item[DTX tutorial]\CTANref{dtxtut} +\item[dtxgen]\CTANref{dtxgen} +\item[makedtx]\CTANref{makedtx} +\item[sty2dtx]\CTANref{sty2dtx} +\end{ctanrefs} +\LastEdit{2014-06-03} + +\Question[Q-whatenc]{What are encodings?} + +Let's start by defining two concepts, the \emph{character} and the +\emph{glyph}. +The character is the abstract idea of the `atom' of a +language or other dialogue: so it might be a letter in an alphabetic +language, a syllable in a syllabic language, or an ideogram in an +ideographic language. The glyph is the mark created on screen or +paper which represents a character. Of +course, if reading is to be possible, there must be some agreed +relationship between the glyph and the character, so while the precise +shape of the glyph can be affected by many other factors, such as the +capabilities of the writing medium and the designer's style, the +essence of the underlying character must be retained. + +Whenever a computer has to represent characters, someone has to define +the relationship between a set of numbers and the characters they +represent. This is the essence of an encoding: it is a mapping +between a set of numbers and a set of things to be represented. + +\TeX{} of course deals in encoded characters all the time: the +characters presented to it in its input are encoded, and it emits +encoded characters in its \acro{DVI} or \acro{PDF} output. These +encodings have rather different properties. + +The \TeX{} input stream was pretty unruly back in the days when Knuth +first implemented the language. Knuth himself prepared documents on +terminals that produced all sorts of odd characters, and as a result +\TeX{} contains some provision for translating its input (however +encoded) to something regular. Nowadays, +the operating system translates keystrokes into a code appropriate for +the user's language: the encoding used is usually a national or +international standard, though some operating systems use ``code +pages'' (as defined by Microsoft). These standards and code pages often +contain characters that may not appear in the \TeX{} system's input +stream. Somehow, these characters have to be dealt with~--- so +an input character like ``\'e'' needs to be interpreted by \TeX{} in +a way that that at least mimics the way it interprets ``\csx{'}\texttt{e}''. + +The \TeX{} output stream is in a somewhat different situation: +characters in it are to be used to select glyphs from the fonts to be +used. Thus the encoding of the output stream is notionally a font +encoding (though the font in question may be a +% beware line break (twice) +\nothtml{virtual one~--- see }% +\Qref[question]{virtual font}{Q-virtualfonts}). In principle, a +fair bit of what appears in the output stream could be direct +transcription of what arrived in the input, but the output stream +also contains the product of commands in the input, and translations +of the input such as ligatures like % +\texttt{fi}\nothtml{\ensuremath\Rightarrow``fi''}. + +Font encodings became a hot topic when the +\Qref*{Cork encoding}{Q-ECfonts} +appeared, because of the possibility of suppressing +\csx{accent} commands in the output stream (and hence improving the +quality of the hyphenation of text in inflected languages, which is +interrupted by the \csx{accent} commands~--- see +% beware line break +\Qref[question]{``how does hyphenation work''}{Q-hyphen}). +To take advantage of the diacriticised characters represented in the +fonts, it is necessary to arrange that whenever the +command sequence ``\csx{'}\texttt{e}'' has been input +(explicitly, or implicitly via the sort of mapping of input mentioned +above), the character that codes the position of the ``\'e'' glyph is +used. + +Thus we could have the odd arrangement that the diacriticised character in +the \TeX{} input stream is translated into \TeX{} commands that would +generate something looking like the input character; this sequence of +\TeX{} commands is then translated back again into a single +diacriticised glyph as the output is created. This is in fact +precisely what the \LaTeX{} packages \Package{inputenc} and +\Package{fontenc} do, if operated in tandem on (most) characters in +the \acro{ISO}~Latin-1 input encoding and the \acro{T}1 font encoding. +At first sight, it seems eccentric to have the first package do a thing, and +the second precisely undo it, but it doesn't always happen that way: +most font encodings can't match the corresponding input encoding +nearly so well, and the two packages provide the sort of symmetry the +\LaTeX{} system needs. + +\Question[Q-ECfonts]{What are the \acro{EC} fonts?} + +A font provides a number of \emph{glyphs}. In order that the glyphs +may be printed, they are \Qref*{\emph{encoded}}{Q-whatenc}, and the +encoding is used as an index into tables within the font. For various +reasons, Knuth chose deeply eccentric encodings for his Computer +Modern family of fonts; in particular, he chose different encodings +for different fonts, so that the application using the fonts has to +remember which font of the family it's using before selecting a +particular glyph. + +When \TeX{} version 3 arrived, most of the drivers for the +eccentricity of Knuth's encodings went away, and at \acro{TUG}'s Cork +meeting, an encoding for a set of 256 glyphs, for use in \TeX{} text, +was defined. The intention was that these glyphs should cover `most' +European languages that use Latin alphabets, in the sense of including +all accented letters needed. (Knuth's \acro{CMR} fonts missed things +necessary for Icelandic and Polish, for example, which the Cork fonts +do have, though even Cork encoding's coverage isn't complete.) +\latex{} refers to the Cork encoding as \acro{T}1, and provides the +means to use fonts thus encoded to avoid problems with the interaction +of accents and hyphenation % ! line break +(see \Qref[question]{hyphenation of accented words}{Q-hyphenaccents}). + +The first \MF{}-fonts to conform to the Cork encoding were the \acro{EC} +fonts. They look \acro{CM}-like, though their metrics differ from \acro{CM}-font +metrics in several areas. They have long been regarded as `stable' (in +the same sense that the \acro{CM} fonts are stable: their metrics are +unlikely ever to change). Each \acro{EC} font is, of course, roughly twice the +size of the corresponding \acro{CM} font, and there are far more of them than +there are CM fonts. The simple number of fonts proved problematic in +the production of Type~1 versions of the fonts, but \acro{EC} or +\acro{EC}-equivalent fonts in Type~1 or TrueType form (the latter only from +\begin{wideversion} + \Qref{commercial suppliers}{Q-commercial}). +\end{wideversion} +\begin{narrowversion} + % ( <- paren matching + commercial suppliers~--- \Qref{question}{Q-commercial}). +\end{narrowversion} +Free \Qref*{auto-traced versions}{Q-textrace}~--- the \acro{CM}-super and +the \acro{LGC} fonts, and the Latin Modern series (rather directly generated +from Metafont sources), are available. + +Note that the Cork encoding doesn't cover mathematics (so that no +``T1-encoded'' font families can not support it). If you're using +Computer-Modern-alike fonts, this doesn't actually matter: your system +will have the original Computer Modern mathematical fonts (or the +those distributed with the Latin Modern set), which cover `basic' \TeX{} +mathematics; more advanced mathematics are likely to need separate +fonts anyway. Suitable mathematics fonts for use with other font +families are discussed in % ! line break +``\Qref*{choice of scalable fonts}{Q-psfchoice}''. + +The \acro{EC} fonts are distributed with a set of `Text Companion' (\acro{TC}) fonts +that provide glyphs for symbols commonly used in text. The \acro{TC} fonts +are encoded according to the \latex{} \acro{TS}1 encoding, and are not +necessarily as `stable' are the \acro{EC} fonts are. Note that modern +distributions tend not to distribute the \acro{EC} fonts in outline format, but +rather to provide Latin Modern for \acro{T}1-encoded Computer Modern-style +fonts. This can sometimes cause confusion when users are recompiling +old documents. + +The Cork encoding is also implemented by virtual fonts provided in the +\acro{PSNFSS} system, for Adobe Type 1 fonts, and also by most other such +fonts that have been developed (or otherwise made available) for use +with \alltex{}. + +Note that \acro{T}1 (and other eight-bit font encodings) are superseded in +the developing \TeX{}-family members \Qref*{\xetex{}}{Q-xetex} and +\Qref*{\luatex{}}{Q-luatex}, which use Unicode as their base encoding, +and use Unicode-encoded fonts (typically in \FontFormat{ttf} or +\FontFormat{otf} formats). The \Package{cm-unicode} fonts carry the +flag in this arena, along with the Latin Modern set. +\begin{ctanrefs} +\item[CM-super fonts]\CTANref{cm-super} +\item[CM-LGC fonts]\CTANref{cm-lgc} +\item[CM unicode fonts]\CTANref{cm-unicode} +\item[EC and TC fonts]\CTANref{ec} +\item[Latin Modern fonts]\CTANref{lm} +\end{ctanrefs} + +\Question[Q-unicode]{Unicode and \tex{}} + +Unicode is a character code scheme that has the capacity to express +the text of the languages of the world, as well as important symbols +(including mathematics). Any coding scheme that is directly +applicable to \tex{} may be expressed in single bytes (expressing up +to 256 characters); Unicode characters may require several bytes, and +the scheme may express a very large number of characters. + +For ``old-style'' applications (\tex{} or \pdftex{}) to deal with +Unicode input, the sequence of bytes to make up Unicode character are +processed by a set of macros that deliver a glyph number in an +appropriate font. The macros that read these bytes is complicated, +and manifests as \pkgoption{utf8} option for the \latex{} distribution +\Package{inputenc} package; the coverage of that option is limited to +Unicode characters that can be represented using ``\latex{} standard +encodings''. The separate package \Package{ucs} provides wider, but +less robust, coverage via an \Package{inputenc} option +\pkgoption{utf8x}. As a general rule, you should never use +\pkgoption{utf8x} until you have convinced yourself that +\pkgoption{utf8} can not do the job for you. + +`Modern' \tex{}-alike applications, \Qref*{\xetex{}}{Q-xetex} and +\Qref*{\luatex{}}{Q-luatex} read their input using \acro{UTF}-8 +representations of Unicode as standard. They also use TrueType or +OpenType fonts for output; each such font has tables that tell the +application which part(s) of the Unicode space it covers; the tables +enable the engines to decide which font to use for which character +(assuming there is any choice at all). +\begin{ctanrefs} +\item[inputenc.sty]Part of the \CTANref{latex} distribution +\item[ucs.sty]\CTANref{ucs} +\end{ctanrefs} +\LastEdit{2012-04-20} + +\Question[Q-tds]{What is the \acro{TDS}?} + +\acro{TDS} is an acronym for ``\TeX{} Directory Structure''; it +specifies a standard way of organising all the \TeX{}-related files on +a computer system. + +Most modern distributions arrange their \tex{} files in conformance +with the \acro{TDS}, using both a `distribution' directory tree and a +(set of) `local' directory trees, each containing \TeX{}-related +files. The \acro{TDS} recommends the name \texttt{texmf} for the name +of the root directory (folder) of an hierarchy; in practice there are +typically several such trees, each of which has a name that compounds +that (e.g., \texttt{texmf-dist}, \texttt{texmf-var}). + +Files supplied as part of the distribution are put into the +distribution's tree, but the location of the distribution's hierarchy is +system dependent. (On a Unix system it might be at +\path{/usr/share/texmf} or \path{/opt/texmf}, or a similar location.) + +There may be more than one `local' hierarchy in which additional files +can be stored. An installation will also typically offer a local +hierarchy, while each user may have an individual local hierarchy. + +The \acro{TDS} itself is published as the output of a \acro{TUG} % ! line break +\Qref*{Technical Working Group}{Q-TUG*}. You may browse an +\href{http://tug.org/tds/}{on-line version} of the standard, and +copies in several other formats (including source) are available on +\acro{CTAN}. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\acro{TDS} specification]\CTANref{tds} +\end{ctanrefs} + +\Question[Q-eps]{What is ``Encapsulated \PS{}'' (``\acro{EPS}'')?} + +\PS{} has been for many years a \emph{lingua franca} of powerful +printers (though modern high-quality printers now tend to require some +constrained form of Adobe Acrobat, instead); since \PS{} is also a +powerful graphical programming language, it is commonly used as an +output medium for drawing (and other) packages. + +However, since \PS{} \emph{is} such a powerful language, some +rules need to be imposed, so that the output drawing may be included +in a document as a figure without ``leaking'' (and thereby destroying +the surrounding document, or failing to draw at all). + +Appendix \acro{H} of the \PS{} Language Reference Manual (second +and subsequent editions), specifies a set of rules for \PS{} to +be used as figures in this way. The important features are: +\begin{itemize} +\item certain ``structured comments'' are required; important ones are + the identification of the file type, and information about the + ``bounding box'' of the figure (i.e., the minimum rectangle + enclosing it); +\item some commands are forbidden~--- for example, a \texttt{showpage} + command will cause the image to disappear, in most \TeX{}-output + environments; and +\item ``preview information'' is permitted, for the benefit of things + such as word processors that don't have the ability to draw + \PS{} in their own right~--- this preview information may be in + any one of a number of system-specific formats, and any viewing + program may choose to ignore it. +\end{itemize} +A \PS{} figure that conforms to these rules is said to be in +``Encapsulated \PS{}'' (\acro{EPS}) format. Most \AllTeX{} packages for +including \PS{} are structured to use Encapsulated \PS{}; +which of course leads to much hilarity as exasperated \AllTeX{} users +struggle to cope with the output of drawing software whose authors +don't know the rules. + +\Question[Q-adobetypen]{Adobe font formats} +\keywords{type1 type3} + +Adobe has specified a number of formats for files to represent fonts +in \PS{} files; this question doesn't attempt to be encyclopaedic, so +we only discuss the two formats most commonly encountered in the +\AllTeX{} context, types~1 and 3. In particular, we don't discuss the +OpenType format, whose many advantages now becoming accessible to most +\AllTeX{} users (by means of +\begin{hyperversion} + the widely-used \Qref{\xetex{}}{Q-xetex} and the more experimental + \Qref{\LuaTeX{}}{Q-luatex}). +\end{hyperversion} +\begin{flatversion} + the widely-used \xetex{}~--- see \Qref[question]{}{Q-xetex}~--- and + the more experimental \LuaTeX{}~--- see \Qref[question]{}{Q-luatex}). +\end{flatversion} + +Adobe Type~1 format specifies a means to represent outlines of the glyphs +in a font. The `language' used is closely restricted, to ensure that +the font is rendered as quickly as possible. (Or rather, as quickly +as possible with Adobe's technology at the time the specification was +written: the structure could well be different if it were specified +now.) The format has long been the basis of the digital type-foundry +business, though nowadays most new fonts are released in OpenType format. + +%% Type~1 fonts are directly supported by some operating system software, +%% and at least one \TeX{} system, the commercial % line break! +%% \Qref*{\YandY{} system}{Q-commercial}, bases its entire +%% operation on the use of Type~1 fonts. + +In the \AllTeX{} context, Type~1 fonts are extremely important. Apart +from their simple +availability (there are thousands of commercial Type~1 text fonts around), the +commonest reader for \acro{PDF} files has long (in effect) \emph{insisted} on +their use (see below). + +Type~3 fonts have a more forgiving specification. A wide range of +\PS{} operators is permissible, including bitmap specifiers. Type~3 +is therefore the natural format to be used for programs such as +\ProgName{dvips} when they auto-generate something to represent +\MF{}-generated fonts in a \PS{} file. It's Adobe Acrobat Viewer's +treatment of bitmap Type~3 fonts that has made direct \MF{} output +increasingly unattractive, in recent years. If you have a \acro{PDF} +document in which the text looks fuzzy and uneven in Acrobat Reader, +ask Reader for the \texttt{File}\arrowhyph{}% +\texttt{Document Properties}\arrowhyph{}% +\texttt{Fonts ...}, and it will likely show some font or other as +``Type~3'' (usually with encoding ``Custom''). The problem has +disappeared with version 6 of Acrobat Reader. See % line break +\Qref[question]{\acro{PDF} quality}{Q-dvips-pdf} for a discussion of +the issue, and for ways of addressing it. + +Type~3 fonts should not entirely be dismissed, however. Acrobat +Reader's failure with them is entirely derived from its failure to use +the anti-aliasing techniques common in \TeX{}-ware. Choose a +different set of \PS{} graphical operators, and you can make pleasing +Type~3 fonts that don't ``annoy'' Reader. For example, you may not +change colour within a Type~1 font glyph, but there's no such +restriction on a Type~3 font, which opens opportunities for some +startling effects. + +\Question[Q-resolns]{What are ``resolutions''?} + +``Resolution'' is a word that is used with little concern for its +multiple meanings, in computer equipment marketing. The word suggests +a measure of what an observer (perhaps the human eye) can resolve; yet +we regularly see advertisements for printers whose resolution is +1200dpi~--- far finer than the unaided human eye can distinguish. The +advertisements are talking about the precision with which the printer +can place spots on the printed image, which affects the fineness of +the representation of fonts, and the accuracy of the placement of +glyphs and other marks on the page. + +In fact, there are two sorts of ``resolution'' on the printed page +that we need to consider for \AllTeX{}'s purposes: +\begin{itemize} +\item the positioning accuracy, and +\item the quality of the fonts. +\end{itemize} +In the case where \AllTeX{} output is being sent direct to a printer, +in the printer's ``native'' language, it's plain that the \acro{DVI} +processor must know all such details, and must take detailed account +of both types of resolution. + +In the case where output is being sent to an intermediate distribution +format, that has potential for printing (or displaying) we know not +where, the final translator, that connects to directly to the printer +or display, has the knowledge of the device's properties: the +\acro{DVI} processor need not know, and should not presume to guess. + +Both \PS{} and \acro{PDF} output are in this category. While \PS{} is +used less frequently for document distribution nowadays, it is +regularly used as the source for distillation into \acro{PDF}; and +\acro{PDF} is the workhorse of an enormous explosion of document +distribution. + +Therefore, we need \acro{DVI} processors that will produce +``resolution independent'' \PS{} or \acro{PDF} output; of course, the +independence needs to extend to both forms of independence outlined +above. + +Resolution-independence of fonts was for a long time forced upon the +world by the feebleness of Adobe's \ProgName{Acrobat} +\ProgName{Reader} at dealing with bitmap files: a sequence of answers +starting with one aiming at the % ! line break +\Qref*{quality of \acro{PDF} from \PS{}}{Q-dvips-pdf} addresses +the problems that arise. + +Resolution-independence of positioning is more troublesome: +\ProgName{dvips} is somewhat notorious for insisting on positioning to +the accuracy of the declared resolution of the printer. +One commonly-used approach is to declare a resolution of 8000 (``better +than any device''), and this is reasonably successful though it does +have its \Qref*{problems}{Q-8000}. + +\Question[Q-fontname]{What is the ``Berry naming scheme''?} + +In the olden days, \AllTeX{} distributions were limited by the +feebleness of file systems' ability to represent long names. (The +\MSDOS{} file system was a particular bugbear: fortunately any current +Microsoft system allows rather more freedom to specify file names. +Sadly, the ISO~9660 standard for the structure of \CDROM{}s has a +similar failing, but that too has been modified by various extension +mechanisms.) + +One area in which these short file names posed a particular problem +was that of file names for Type~1 fonts. +These fonts are distributed by their vendors with +pretty meaningless short names, and there's a natural ambition to +change the name to something that identifies the font somewhat +precisely. Unfortunately, names such as ``BaskervilleMT'' are +already far beyond the abilities of the typical feeble file system, +and add the specifier of a font shape or variant, and the difficulties +spiral out of control. Font companies deal with the issue by +inventing silly names, and providing a map file to show what the +``real'' names. Thus the Monotype Corporation provides the +translations: +\begin{quote} + \texttt{bas\_\_\_\_\_ BaskervilleMT}\\ + \texttt{basb\_\_\_\_ BaskervilleMT-Bold}\\ + \texttt{basbi\_\_\_ BaskervilleMT-BoldItalic} +\end{quote} +and so on. These names could be used within \AllTeX{} programs, +except that they are not unique: there's nothing to stop Adobe using +`\texttt{bas\_\_\_\_\_}' for \emph{their} Baskerville font. + +Thus arose the Berry naming scheme. + +The basis of the scheme is to encode the meanings of the various parts +of the file's specification in an extremely terse way, so that enough +font names can be expressed even in impoverished file name-spaces. The +encoding allocates one character to the font ``foundry'' (Adobe, Monotype, +and so on), two to the typeface name (Baskerville, Times Roman, and so +on), one to the weight, shape, and encoding and so on. + +The whole scheme is outlined in the \Package{fontname} distribution, +which includes extensive documentation and a set of tables of fonts +whose names have been systematised. +\begin{ctanrefs} +\item[fontname distribution]\CTANref{fontname} +\end{ctanrefs} + diff --git a/help/uk-tex-faq/faq-docs.tex b/help/uk-tex-faq/faq-docs.tex new file mode 100644 index 0000000000..dbbdeb37c5 --- /dev/null +++ b/help/uk-tex-faq/faq-docs.tex @@ -0,0 +1,1305 @@ +% $Id: faq-docs.tex,v 1.46 2014/03/04 15:42:45 rf10 Exp rf10 $ + +\section{Documentation and Help} + +\Question[Q-book-lists]{Books relevant to \tex{} and friends} + +There are too many books for them all to appear in a single list, so +the following answers aim to cover ``related'' books, with subject +matter as follows: +\begin{itemize} +\item \Qref*{\tex{} itself and \plaintex{}}{Q-tex-books} +\item \Qref*{\latex{}}{Q-latex-books} +\item \Qref*{Books on other \tex{}-related matters}{Q-other-books} +\item \Qref*{Books on Type}{Q-type-books} +\end{itemize} + +These lists only cover books in English: notices of new books, or +warnings that books are now out of print are always welcome. However, +these \acro{FAQ}s do \emph{not} carry reviews of current published +material. +\LastEdit*{2011-06-01} + +\Question[Q-tex-books]{Books on \TeX{}, \plaintex{} and relations} +\AliasQuestion{Q-books} + +While Knuth's book is the definitive reference for both \TeX{} and +\plaintex{}, there are many books covering these topics: +\begin{booklist} +\item[The \TeX{}book]by Donald Knuth (Addison-Wesley, 1984, + \ISBN{0-201-13447-0}, paperback \ISBN{0-201-13448-9}) +\item[A Beginner's Book of \TeX{}]by Raymond Seroul and Silvio Levy, + (Springer Verlag, 1992, \ISBN{0-387-97562-4}) +\item[\TeX{} by Example: A Beginner's Guide]by Arvind Borde + (Academic Press, 1992, \ISBN{0-12-117650-9}~--- now out of print) +\item[Introduction to \TeX{}]by Norbert Schwarz (Addison-Wesley, + 1989, \ISBN{0-201-51141-X}~--- now out of print) +\item[A \plaintex{} Primer]by Malcolm Clark (Oxford University + Press, 1993, ISBNs~0-198-53724-7 (hardback) and~0-198-53784-0 + (paperback)) +\item[A \TeX{} Primer for Scientists]by Stanley Sawyer and Steven + Krantz (CRC Press, 1994, \ISBN{0-849-37159-7}) +\item[\TeX{} by Topic]by Victor Eijkhout (Addison-Wesley, 1992, + \ISBN{0-201-56882-9}~--- now out of print, but see + \Qref[question]{online books}{Q-ol-books}; you can also now buy a copy + printed, on demand, by Lulu~--- see + \url{http://www.lulu.com/content/2555607}) +\item[\TeX{} for the Beginner]by Wynter Snow (Addison-Wesley, 1992, + \ISBN{0-201-54799-6}) +\item[\TeX{} for the Impatient]by Paul W.~Abrahams, Karl Berry and + Kathryn A.~Hargreaves (Addison-Wesley, 1990, + \ISBN{0-201-51375-7}~--- now out of print, but see + \Qref[question]{online books}{Q-ol-books}) +\item[\TeX{} in Practice]by Stephan von Bechtolsheim (Springer + Verlag, 1993, 4 volumes, \ISBN{3-540-97296-X} for the set, or +% nos in comments are for German distribution (Springer Verlag, Berlin) + Vol.~1: \ISBN{0-387-97595-0}, % (3-540-97595-0) + Vol.~2: \ISBN{0-387-97596-9}, % (3-540-97596-9) + Vol.~3: \ISBN{0-387-97597-7}, and % (3-540-97597-7) + Vol.~4: \ISBN{0-387-97598-5})% (3-540-97598-5) +\begin{typesetversion} +\item[\TeX{}: Starting from \sqfbox{1}\,\footnotemark]% +\footnotetext{That's `Starting from Square One'}% +\end{typesetversion} +\begin{htmlversion} +\item[\TeX{}: Starting from Square One] +\end{htmlversion} + by Michael Doob (Springer + Verlag, 1993, \ISBN{3-540-56441-1}~--- now out of print) +\item[The Joy of \TeX{}]by Michael D.~Spivak (second edition, + \acro{AMS}, 1990, \ISBN{0-821-82997-1}) +\item[The Advanced \TeX{}book]by David Salomon (Springer Verlag, 1995, + \ISBN{0-387-94556-3}) +\end{booklist} +A collection of Knuth's publications about typography is also available: +\begin{booklist} +\item[Digital Typography]by Donald Knuth (CSLI and Cambridge + University Press, 1999, \ISBN{1-57586-011-2}, paperback + \ISBN{1-57586-010-4}). +\end{booklist} +\nothtml{\noindent}and in late 2000, a ``Millennium Boxed Set'' of all +5 volumes of Knuth's ``Computers and Typesetting'' series (about +\TeX{} and \MF{}) was published by Addison Wesley: +\begin{booklist} +\item[Computers \& Typesetting, Volumes A--E Boxed Set]by Donald Knuth + (Addison-Wesley, 2001, \ISBN{0-201-73416-8}). +\end{booklist} +\checked{rf}{2000/02/12 -- http://cseng.aw.com/book/0,3828,0201734168,00.html} +\LastEdit*{2011-06-01} + +\Question[Q-latex-books]{Books on \latex{}} + +\begin{booklist} +\item[\LaTeX{}, a Document Preparation System]by Leslie Lamport + (second edition, Addison Wesley, 1994, \ISBN{0-201-52983-1}) +\item[Guide to \LaTeX{}]Helmut Kopka and Patrick W.~Daly (fourth + edition, Addison-Wesley, 2004, \ISBN{0-321-17385-6}) +\item[\latex{} Beginner's Guide]by Stefan Kottwitz (Packt Publishing, + 2011, \ISBN*{1847199860}{978-1847199867}) +\item[The \LaTeX{} Companion]by Frank Mittelbach, Michel Goossens, + Johannes Braams, David Carlisle and Chris Rowley (second edition, + Addison-Wesley, 2004, \ISBN*{0-201-36299-6}{978-0-201-36299-2}); the + book as also available as a digital download (in \acro{EPUB}, + \acro{MOBI} and \acro{PDF} formats) from + \url{http://www.informit.com/store/latex-companion-9780133387667} +\item[The \LaTeX{} Graphics Companion:]% + \emph{Illustrating documents with \TeX{} and \PS{}} by Michel + Goossens, Sebastian Rahtz, Frank Mittelbach, Denis Roegel and + Herbert Vo\ss {} (second edition, Addison-Wesley, 2007, + \ISBN*{0-321-50892-0}{978-0-321-50892-8}) +\item[The \LaTeX{} Web Companion:]% + \emph{Integrating \TeX{}, \acro{HTML} and \acro{XML}} by Michel + Goossens and Sebastian Rahtz (Addison-Wesley, 1999, \ISBN{0-201-43311-7}) +\item[\TeX{} Unbound:]% + \emph{\LaTeX{} and \TeX{} strategies for fonts, graphics, and more} + by Alan Hoenig (Oxford University Press, 1998, \ISBN{0-19-509685-1} + hardback, \ISBN{0-19-509686-X} paperback) +% \item[Math into \LaTeX{}:]\emph{An Introduction to \LaTeX{} and \AMSLaTeX{}} +% by George Gr\"atzer (third edition Birkh\"auser and Springer Verlag, +% 2000, \ISBN{0-8176-4431-9}, \ISBN{3-7643-4131-9}) +% \checked{RF}{2001/01/16} +\item[More Math into \latex{}:]\emph{An Introduction to} \LaTeX{} + \emph{and} \AMSLaTeX{} by George Gr\"atzer (fourth edition Springer Verlag, + 2007, \ISBN{978-0-387-32289-6} +%% gr\"atzer's home page +%% http://www.maths.umanitoba.ca/homepages/gratzer.html/LaTeXBooks.html +\item[Digital Typography Using \LaTeX{}]Incorporating some + multilingual aspects, and use of \Qref*{Omega}{Q-omegaleph}, by + Apostolos Syropoulos, Antonis Tsolomitis and Nick Sofroniou + (Springer, 2003, \ISBN{0-387-95217-9}). +% A list of errata for the first printing of Digital Typography Using +% \LaTeX{} is available from: +% \URL{http://www.springer-ny.com/catalog/np/jan99np/0-387-98708-8.html} +% (not any longer) +\item[First Steps in \LaTeX{}]by George Gr\"atzer (Birkh\"auser, 1999, + \ISBN{0-8176-4132-7}) +\item[\LaTeX{}: Line by Line:]% + \emph{Tips and Techniques for Document Processing} + by Antoni Diller (second edition, John Wiley \& Sons, + 1999, \ISBN{0-471-97918-X}) +\item[\LaTeX{} for Linux:]\emph{A Vade Mecum} + by Bernice Sacks Lipkin (Springer-Verlag, 1999, + \ISBN{0-387-98708-8}, second printing) +\item[Typesetting Mathematics with \latex{}]by Herbert Vo\ss {} (UIT + Cambridge, 2010, \ISBN{978-1-906-86017-2}) +% checked 2011-09-09 http://www.uit.co.uk/BK-TMWL/HomePage +\item[Typesetting Tables with \latex{}]by Herbert Vo\ss {}, (UIT + Cambridge, 2011, \ISBN{978-1-906-86025-7}) +% checked 2011-09-09 http://www.uit.co.uk/BK-TTWL/HomePage +\item[PSTricks: Graphics and PostScript for \tex{} and \latex{}]by + Herbert Vo\ss {}, (UIT Cambridge, 2011, \ISBN{978-1-906-86013-4}) +\end{booklist} +A sample of George Gr\"atzer's ``Math into \LaTeX{}'', in Adobe +Acrobat format, and example files +for the three \LaTeX{} Companions, and for +Gr\"atzer's ``First Steps in \LaTeX{}'', are all available on +\acro{CTAN}. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Examples for \nothtml{\upshape}First Steps in \LaTeX{}]\CTANref{gfs} +\item[\nothtml{\rmfamily}Examples for \nothtml{\upshape}\LaTeX{} Companion]\CTANref{tlc2} +\item[\nothtml{\rmfamily}Examples for \nothtml{\upshape}\LaTeX{} Graphics Companion]\CTANref{lgc} +\item[\nothtml{\rmfamily}Examples for \nothtml{\upshape}\LaTeX{} Web Companion]\CTANref{lwc} +%\item[\nothtml{\rmfamily}Examples for \nothtml{\upshape}\TeX{} in Practice]\CTANref{tip} +\item[\nothtml{\rmfamily}Sample of \nothtml{\upshape}Math into \LaTeX{}]\CTANref{mil} +\end{ctanrefs} +\LastEdit{2014-03-14} + +\Question[Q-other-books]{Books on other \tex{}-related matters} + +There's a nicely-presented list of of ``recommended books'' to be had +on the web: \URL{http://www.macrotex.net/texbooks/} + +The list of \MF{} books is rather short: +\begin{booklist} +\item[The \MF{}book]by Donald Knuth (Addison Wesley, 1986, + \ISBN{0-201-13445-4}, \ISBN{0-201-52983-1} paperback) +\end{booklist} +Alan Hoenig's `\textsl{\TeX{} Unbound}' includes some discussion and +examples of using \MF{}. + +A book covering a wide range of topics (including installation and +maintenance) is: +\begin{booklist} +\item[Making \TeX{} Work]by Norman Walsh (O'Reilly and Associates, + Inc, 1994, \ISBN{1-56592-051-1}) +\end{booklist} +The book is decidedly dated, and is now out of print, but a copy is +available via \texttt{sourceforge} and on \acro{CTAN}, +and we list it under ``\Qref*{online books}{Q-ol-books}''. +\LastEdit*{2011-06-01} + +\Question[Q-type-books]{Books on Type} + + The following is a partial listing of books on typography in general. +Of these, Bringhurst seems to be the one most often recommended. +\begin{booklist} +\item[The Elements of Typographic Style]by Robert Bringhurst + (Hartley \& Marks, 1992, \ISBN{0-88179-033-8}) +\item[Finer Points in the Spacing \& Arrangement of Type]by Geoffrey Dowding + (Hartley \& Marks, 1996, \ISBN{0-88179-119-9}) +\item[The Thames \& Hudson Manual of Typography]by Ruari McLean + (Thames \& Hudson, 1980, \ISBN{0-500-68022-1}) +\item[The Form of the Book]by Jan Tschichold + (Lund Humphries, 1991, \ISBN{0-85331-623-6}) +\item[Type \& Layout]by Colin Wheildon + (Strathmore Press, 2006, \ISBN{1-875750-22-3}) +\item[The Design of Books]by Adrian Wilson + (Chronicle Books, 1993, \ISBN{0-8118-0304-X}) +\item[Optical Letter Spacing]by David Kindersley and Lida Cardozo Kindersley + % ! line break + (\href{http://www.kindersleyworkshop.co.uk/}{The Cardozo Kindersley Workshop} + 2001, \ISBN{1-874426-139}) +\end{booklist} + + There are many catalogues of type specimens but the following books provide +a more interesting overall view of types in general and some of their history. +\begin{booklist} +\item[Alphabets Old \& New]by Lewis F.~Day + (Senate, 1995, \ISBN{1-85958-160-9}) +\item[An Introduction to the History of Printing Types]by Geoffrey Dowding + (British Library, 1998, UK \ISBN{0-7123-4563-9}; USA \ISBN{1-884718-44-2}) +\item[The Alphabet Abecedarium]by Richard A.~Firmage + (David R.~Godine, 1993, \ISBN{0-87923-998-0}) +\item[The Alphabet and Elements of Lettering]by Frederick Goudy + (Dover, 1963, \ISBN{0-486-20792-7}) +\item[Anatomy of a Typeface]by Alexander Lawson + (David R.~Godine, 1990, \ISBN{0-87923-338-8}) +\item[A Tally of Types]by Stanley Morison + (David R.~Godine, 1999, \ISBN{1-56792-004-7}) +\item[Counterpunch]by Fred Smeijers + (Hyphen, 1996, \ISBN{0-907259-06-5}) +\item[Treasury of Alphabets and Lettering]by Jan Tschichold + (W.~W.~Norton, 1992, \ISBN{0-393-70197-2}) +\item[A Short History of the Printed Word]by Warren Chappell and + Robert Bringhurst (Hartley \& Marks, 1999, \ISBN{0-88179-154-7}) +\end{booklist} + + The above lists are limited to books published in English. Typographic +styles are somewhat language-dependent, and similarly the `interesting' fonts +depend on the particular writing system involved. +\LastEdit{2011-06-01} + +\Question[Q-whereFAQ]{Where to find \acro{FAQ}s} + +Bobby Bodenheimer's article, from which this \acro{FAQ} was developed, used +to be posted (nominally monthly) to newsgroup +\Newsgroup{comp.text.tex}. The (long +obsolete) last posted copy of that article is kept on \acro{CTAN} for +auld lang syne. + +\begin{pdfversion} +A version of the \href{http://www.tex.ac.uk/faq}{present \acro{FAQ}} +may be browsed via the World-Wide Web, and its sources +\end{pdfversion} +\begin{dviversion} +A version of the present \acro{FAQ} may be browsed via the World-Wide Web, at +\acro{URL} \URL{http://www.tex.ac.uk/faq}, and its sources +\end{dviversion} +\begin{htmlversion} +The sources of the present \acro{FAQ} +\end{htmlversion} +are available from \acro{CTAN}. + +This \acro{FAQ} and others are regularly mentioned, on +\Newsgroup{comp.text.tex} and elsewhere, in a ``pointer \acro{FAQ}'' +which is also saved at \URL{http://tug.org/tex-ptr-faq} + +A 2006 innovation from Scott Pakin is the ``visual'' \LaTeX{} \acro{FAQ}. +This is a document with (mostly rubbish) text formatted so as to +highlight things we discuss here, and providing Acrobat hyper-links to +the relevant answers in this \acro{FAQ} on the Web. The visual +\acro{FAQ} is provided in \acro{PDF} format, on \acro{CTAN}; it works +best using Adobe Acrobat Reader 7 (or later); some features are +missing with other readers, or with earlier versions of Acrobat Reader + +Another excellent information source, available in English, is the +\href{http://tex.loria.fr}{\AllTeX{} navigator}. + +Both the Francophone \TeX{} user group Gutenberg and the Czech/Slovak +user group CS-TUG have published translations of this \acro{FAQ}, with +extensions appropriate to their languages. + +% Herbert Vo\ss {}'s excellent % beware line break +% \href{http://texnik.de/}{\LaTeX{} tips and tricks} +% provides excellent advice on most topics one might imagine (though +% it's not strictly a \acro{FAQ})~--- highly recommended for most +% ordinary mortals' use. + +The Open Directory Project (\acro{ODP}) maintains a list of sources of +\AllTeX{} help, including \acro{FAQ}s. View the \TeX{} area at +\URL{http://dmoz.org/Computers/Software/Typesetting/TeX/} + +Other non-English \acro{FAQ}s are available (off-\acro{CTAN}): +\begin{booklist} +\item[German]Posted regularly to \Newsgroup{de.comp.tex}, and archived + on \acro{CTAN}; the \acro{FAQ} also appears at + \URL{http://www.dante.de/faq/de-tex-faq/} +\item[French]% +%% An interactive (full-screen!) FAQ may be found at +%% \URL{http://www.frenchpro6.com/screen.pdf/FAQscreen.pdf}, and a copy +%% for printing at \URL{http://frenchle.free.fr/FAQ.pdf}; + A FAQ used to be posted regularly to + \Newsgroup{fr.comp.text.tex}, and is archived on \acro{CTAN}~--- + sadly, that effort seems to have fallen by the wayside. +%% \item[Spanish]See \URL{http://apolo.us.es/CervanTeX/FAQ/} +\item[Czech]See \URL{http://www.fi.muni.cz/cstug/csfaq/} +\end{booklist} + +Resources available on \acro{CTAN} are: +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Dante \acro{FAQ}]\CTANref{dante-faq} +\item[\nothtml{\rmfamily}French \acro{FAQ}]\CTANref{french-faq} +\item[\nothtml{\rmfamily}Sources of this \acro{FAQ}]\CTANref{faq} +\item[\nothtml{\rmfamily}Obsolete \texttt{comp.text.tex} \acro{FAQ}]% + \CTANref{TeX-FAQ} +\item[\nothtml{\rmfamily}The visual \acro{FAQ}]\CTANref{visualFAQ} +\end{ctanrefs} +\LastEdit{2013-07-02} + +\Question[Q-gethelp]{Getting help online} + +We assume, here, that you have looked at all relevant +\Qref*{\acro{FAQ} answers}{Q-whereFAQ} you can find, you've looked in +any \Qref*{books}{Q-book-lists} you have, and scanned relevant +\Qref*{tutorials}{Q-tutorials*}\dots{} and still you don't know what +to do. + +There are two more steps you can take before formulating a question to +the \tex{} world at large. + +First, (if you are seeking a particular package or program), start by +looking on your own system: you might already have what you seek~--- +the better \TeX{} distributions provide a wide range of supporting +material. The \Qref*{\acro{CTAN} Catalogue}{Q-catalogue} can also +identify packages that might help: you can % ! line break +\href{http://www.tex.ac.uk/search}{search it}, or you can browse it +\begin{hyperversion} +% !!!! line break +``\href{http://mirrors.ctan.org/help/Catalogue/bytopic.html}{by topic}''. +\end{hyperversion} +\begin{flatversion} +``by topic'' at +\url{http://mirrors.ctan.org/help/Catalogue/bytopic.html} +\end{flatversion} +Each catalogue entry has a brief description of the package, and links to +known documentation on the net. In fact, a large proportion of +\acro{CTAN} package directories now include documentation, so it's +often worth looking at the catalogue entry for a package you're considering +using (where possible, each package link in the main body of these +\acro{FAQ}s \hyperflat{has a link to}{shows the \acro{URL} of} +the relevant catalogue entry). + +Failing that, look to see if anyone has solved the problem before; +places where people ask are: +\begin{enumerate} +\item newsgroup \Newsgroup{comp.text.tex}, whose ``historical posts'' + are accessible via + \href{http://groups.google.com/group/comp.text.tex}{Google groups}, + and +\item the mailing list \texttt{texhax} via its + \href{http://tug.org/pipermail/texhax/}{archive}, or via the `Gmane' + newsgroup \Newsgroup{gmane.comp.tex.texhax}, which holds a + \emph{very} long history of the list. A long shot would be to + search the archives of the mailing list's ancient posts on + \acro{CTAN}, which go back to the days when it was a digest: in + those days, a question asked in one issue would only ever be + answered in the next one. +\end{enumerate} +If the ``back question'' searches fail, you must ask the world at +large. + +So, how do you like to ask questions?~--- the three available +mechanisms are: +\begin{enumerate} +\item Mailing lists: there are various specialist mailing lists, but + the place for `general' \alltex{} queries is the \texttt{texhax} + mailing list. Mail to \mailto{texhax@tug.org} to ask a question, + but it's probably better to subscribe to the list + (via \URL{http://tug.org/mailman/listinfo/texhax}) % ! no ~ allowed + first~--- not everyone will answer to you as well as to the list. +\item Newsgroup: to ask a question on \Newsgroup{comp.text.tex}, you + can use your own news client (if you have one), or use the ``+ new + post'' button on + \URL{http://groups.google.com/group/comp.text.tex}. +\item Web forum: alternatives are: the % ! line break + \href{http://www.latex-community.org/}{``\LaTeX{} community'' site}, + which offers a variety of `categories' to place your query, and the + % the next line will tend to break if you add _anything_ to it! + \href{http://tex.stackexchange.com/}{\TeX{}, \LaTeX{} and friends Q\&A site} + (``StackExchange''). + + StackExchange has a scheme for voting on the quality of answers (and + hence of those who offer support). This arrangement is supposed to + enable you to rank any answers that are posted. + + StackExchange offers + \href{http://meta.tex.stackexchange.com/questions/1436/welcome-to-tex-sx}{hints about ``good behaviour''}, + which any user should at least scan before asking for help there. + (The hints' principal aim is to maximise the chance that you get useful + advice from the first answer; for example, it suggests that you supply a + \Qref*{minimal example of your problem}{Q-askquestion}, just as + these \acro{FAQ}s do. There are people on the site who can be abrasive + to those asking questions, who seem not to be following the + guidelines for good behaviour) +\end{enumerate} +Do \textbf{not} try mailing the \LaTeX{} project team, the maintainers +of the \texlive{} or \miktex{} distributions or the maintainers of +these \acro{FAQ}s for help; while all these addresses reach +experienced \AllTeX{} users, no small group can possibly have +expertise in every area of usage so that the ``big'' lists and forums +are a far better bet. +\begin{ctanrefs} +\item[texhax \nothtml{\rmfamily}`back copies']\CTANref{texhax} +\end{ctanrefs} +\LastEdit{2014-01-28} + +\Question[Q-maillists*]{Specialist mailing lists} + +The previous question, ``\Qref*{getting help}{Q-gethelp}'', talked of +the two major forums in which \AllTeX{}, \MF{} and \MP{} are +discussed; however, these aren't the only ones available. + +The \acro{TUG} web site offers many mailing lists other than just +\texttt{texhax} via its % ! line break +\href{http://tug.org/mailman/listinfo}{mail list management page}. + +The French national \TeX{} user group, Gutenberg, offers a \MF{} (and, +de facto, \MP{}) mailing list, \mailto{metafont@ens.fr}: subscribe to +it by sending a message +\begin{quote} +\begin{verbatim} +subscribe metafont +\end{verbatim} +\end{quote} +to \mailto{sympa@ens.fr} + +(Note that there's also a \MP{}-specific mailing list available via the +\acro{TUG} list server; in fact there's little danger of becoming confused +by subscribing to both.) + +Announcements of \TeX{}-related installations on the \acro{CTAN} +archives are sent to the mailing list \texttt{ctan-ann}. Subscribe +to the list via its \ProgName{MailMan} web-site +\URL{https://lists.dante.de/mailman/listinfo/ctan-ann}; list archives +are available at the same address. The list archives may also be +browsed via \URL{http://www.mail-archive.com/ctan-ann@dante.de/}, and +an \acro{RSS} feed is also available: +\URL{http://www.mail-archive.com/ctan-ann@dante.de/maillist.xml} + +\Question[Q-askquestion]{How to ask a question} + +You want help from the community at large; you've decided where you're +going to \Qref*{ask your question}{Q-gethelp}, but how do you +phrase it? + +Excellent ``general'' advice (how to ask questions of anyone) is +contained in +%beware line break +\href{http://catb.org/~esr/faqs/smart-questions.html}{Eric Raymond's article on the topic}. +Eric's an extremely self-confident person, and this comes through in +his advice; but his guidelines are very good, even for us in the +un-self-confident majority. It's important to remember that you don't +have a right to advice from the world, but that if you express +yourself well, you will usually find someone who will be pleased to +help. + +So how do you express yourself in the \AllTeX{} world? There aren't +any comprehensive rules, but a few guidelines may help in the +application of your own common sense. +\begin{itemize} +\item Make sure you're asking the right people. Don't ask in a \TeX{} + forum about printer device drivers for the \ProgName{Foobar} + operating system. Yes, \TeX{} users need printers, but no, \TeX{} + users will typically \emph{not} be \ProgName{Foobar} systems + managers. + + Similarly, avoid posing a question in a language that the majority + of the group don't use: post in Ruritanian to + \Newsgroup{de.comp.text.tex} and you may have a long wait before a + German- and Ruritanian-speaking \TeX{} expert notices your + question. +\item If your question is (or may be) \TeX{}-system-specific, report + what system you're using, or intend to use: ``I can't install + \TeX{}'' is as good as useless, whereas ``I'm trying to install the + \ProgName{mumbleTeX} distribution on the \ProgName{Grobble} + operating system'' gives all the context a potential respondent + might need. Another common situation where this information is + important is when you're having trouble installing something new in + your system: ``I want to add the \Package{glugtheory} package to my + \ProgName{mumbleTeX v12.0} distribution on the \ProgName{Grobble 2024} + operating system''. +\item If you need to know how to do something, make clear what your + environment is: ``I want to do \emph{x} in \plaintex{}'', or ``I + want to do \emph{y} in \LaTeX{} running the \Class{boggle} + class''. If you thought you knew how, but your attempts are + failing, tell us what you've tried: ``I've already tried installing + the \Package{elephant} in the \Package{minicar} directory, and it + didn't work, even after refreshing the filename database''. +\item If something's going wrong within \AllTeX{}, pretend you're + \Qref*{submitting a \LaTeX{} bug report}{Q-latexbug}, + and try to generate a \Qref*{minimum failing example}{Q-minxampl}. + If your example + needs your local \Class{xyzthesis} class, or some other resource + not generally available, be sure to include a pointer to how the + resource can be obtained. +\item Figures are special, of course. Sometimes the figure itself is + \emph{really} needed, but most problems may be demonstrated with a + ``figure substitute'' in the form of a + \cmdinvoke*{rule}{width}{height} command, for some value of + \meta{width} and \meta{height}. If the (real) figure is needed, + don't try posting it: far better to put it on the web somewhere. +\item Be as succinct as possible. Your helpers don't usually need to + know \emph{why} you're doing something, just \emph{what} you're + doing and where the problem is. +\end{itemize} + +\Question[Q-minxampl]{How to make a ``minimum example''} + +\Qref[Question]{Our advice on asking questions}{Q-askquestion} +suggests that you prepare a ``minimum example'' (also commonly known +as a ``\emph{minimal} example'') of failing behaviour, +as a sample to post with your question. If you have a problem in a +two hundred page document, it may be unclear how to proceed from this +problem to a succinct demonstration of your problem. + +There are two valid approaches to this task: building up, and hacking +down. + +% ! line break +\latexhtml{The ``building up'' process}{\textbf{\emph{Building up}}} starts +with a basic document structure +(for \LaTeX{}, this would have \csx{documentclass}, +\cmdinvoke{begin}{document}, \cmdinvoke{end}{document}) and adds +things. First to add is a paragraph or so around the actual point +where the problem occurs. (It may prove difficult to find the actual +line that's provoking the problem. If the original problem is an +error, reviewing % ! line break +\Qref[the answer to question]{``the structure of \TeX{} errors''}{Q-errstruct} +may help.) + +Note that there are things that can go wrong in one part of the +document as a result of something in another part: the commonest is +problems in the table of contents (from something in a section title, +or whatever), or the list of \meta{something} (from something in a +\csx{caption}). In such a case, include the section title or caption +(the caption probably needs the \environment{figure} or +\environment{table} environment around it, but it \emph{doesn't} need +the figure or table itself). + +If this file you've built up shows the problem already, then you're done. +Otherwise, try adding packages; the optimum is a file with only one +package in it, but you may find that the guilty package won't even load +properly unless another package has been loaded. (Another common case +is that package \Package{A} only fails when package \Package{B} has been +loaded.) + +% ! line break +\latexhtml{The ``hacking down'' route}{\textbf{\emph{Hacking down}}} starts +with your entire document, and +removes bits until the file no longer fails (and then of course +restores the last thing removed). Don't forget to hack out any +unnecessary packages, but mostly, the difficulty is choosing what to +hack out of the body of the document; this is the mirror of the +problem above, in the ``building up'' route. + +If you've added a package (or more than one), add \csx{listfiles} to +the preamble too: that way, \LaTeX{} will produce a list of the +packages you've used and their version numbers. This information may +be useful evidence for people trying to help you. + +The process of `building up', and to some extent that of `hacking +down', can be helped by stuff available on \acro{CTAN}: +\begin{itemize} +\item the \Class{minimal} class (part of the \latex{} distribution) + does what its name says: it provides nothing more than what is + needed to get \latex{} code going, and +\item the \Package{mwe} bundle provides a number of images in formats + that \alltex{} documents can use, and a small package \Package{mwe} + which loads other useful packages (such as \Package{blindtext} and + \Package{lipsum}, both capable of producing dummy text in a + document). +\end{itemize} + +What if none of of these cut-down derivatives of your document will +show your error? Whatever you do, don't post the whole of the document: if +you can, it may be useful to make a copy available on the web +somewhere: people will probably understand if it's impossible~\dots{}\ +or inadvisable, in the case of something confidential. + +If the whole document is indeed necessary, it could be that your +error is an overflow of some sort; the best you can do is to post the +code ``around'' the error, and (of course) the full text of the error. + +It may seem that all this work is rather excessive for preparing a +simple post. There are two responses to that, both based on the +relative inefficiency of asking a question on the internet. + +First, preparing a minimum document very often leads \emph{you} to the +answer, without all the fuss of posting and looking for responses. + +Second, your prime aim is to get an answer as quickly as possible; a +well-prepared example stands a good chance of attracting an answer +``in a single pass'': if the person replying to your post finds she +needs more information, you have to find that request, post again, and +wait for your benefactor to produce a second response. + +All things considered, a good example file can save you a day, for +perhaps half an hour's effort invested. + +Much of the above advice, differently phrased, may also be read on the +web at \URL{http://www.minimalbeispiel.de/mini-en.html}; source of +that article may be found at \URL{http://www.minimalbeispiel.de/}, in +both German and English. +\begin{ctanrefs} +\item[blindtext.sty]\CTANref{blindtext} +\item[lipsum.sty]\CTANref{lipsum} +\item[minimal.cls]Distributed as part of \CTANref{latex} +\item[mwe.sty]\CTANref{mwe} +\end{ctanrefs} +\LastEdit{2013-01-09} + +\Question[Q-tutorials*]{Tutorials, etc., for \tex{}-based systems} + +From a situation where every \AllTeX{} user \emph{had} to buy a book +if she was not to find herself groping blindly along, we now have what +almost amounts to an embarrassment of riches of online documentation. +The following answers attempt to create lists of sources ``by topic''. + +First we have introductory manuals, for +\Qref*{\plaintex{}}{Q-man-tex} and \Qref*{\LaTeX{}}{Q-man-latex}. + +Next comes a selection of +\Qref*{``specialised'' \AllTeX{} tutorials}{Q-tutbitslatex}, +each of which concentrates on a single \LaTeX{} topic. + +A small selection of reference documents (it would be good to have +more) are listed in an \Qref*{answer of their own}{Q-ref-doc}. + +Next comes the (somewhat newer) field of % ! line break +\Qref*{\TeX{}-related WIKIs}{Q-doc-wiki}. + +A rather short list gives us a % ! line break +\Qref*{Typography style tutorial}{Q-typo-style}. +\LastEdit{2011-09-26} + +\Question[Q-man-tex]{Online introductions: \plaintex{}} + +Michael Doob's splendid `Gentle Introduction' to \plaintex{} +(available on \acro{CTAN}) has been stable for a very long time. + +Another recommendable document is D. R.~Wilkins' `Getting started with \TeX{}', +available on the web at \URL{http://www.ntg.nl/doc/wilkins/pllong.pdf} +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Gentle Introduction]\CTANref{gentle} +\end{ctanrefs} + +\Question[Q-man-latex]{Online introductions: \LaTeX{}} + +A pleasing little document, ``Getting something out of \LaTeX{}'' is +designed to give a feel of \LaTeX{} to someone who's never used it at +all. It's not a tutorial, merely helps the user to decide whether to +go on to a tutorial, and thence to `real' use of \LaTeX{}. + +Tobias Oetiker's `(Not so) Short Introduction to \LaTeXe{}', is +regularly updated, as people suggest better ways of explaining things, +etc. The introduction is available on \acro{CTAN}, together with +translations into a rather large set of languages. + +Peter Flynn's ``Beginner's \LaTeX{}'' (which started life as course +material) is a pleasing read. A complete copy may be found on +\acro{CTAN}, but it may also be browsed over the web +(\URL{http://mirrors.ctan.org/info/beginlatex/html/}). + +Harvey Greenberg's `Simplified Introduction to \LaTeX{}' was written +for a lecture course, and is also available on \acro{CTAN} (in \PS{} +only, unfortunately). + +The fourth edition of George Gr\"atzer's book ``Math into \LaTeX{}'' +contains a ``short course'' in \LaTeX{} itself, and that course has +been made publicly available on \acro{CTAN}. + +Philip Hirschhorn's ``Getting up and running with \AMSLaTeX{}'' has a +brief introduction to \LaTeX{} itself, followed by a substantial +introduction to the use of the \acro{AMS} classes and the +\Package{amsmath} package and other things that are potentially of +interest to those writing documents containing mathematics. + +Edith Hodgen's % beware line break +\href{http://www.mcs.vuw.ac.nz/~david/latex/notes.pdf}{\LaTeX{}, a Braindump} +starts you from the ground up~--- giving a basic tutorial in the use +of \ProgName{Linux} to get you going (rather a large file\dots{}). +Its parent site, David Friggens' % ! line break +\href{http://www.mcs.vuw.ac.nz/~david/latex/}{documentation page} is a +useful collection of links in itself. + +% ! line break +\href{http://www.andy-roberts.net/misc/latex/}{Andy Roberts' introductory material} +is a pleasing short introduction to the use of \AllTeX{}; some of the +slides for \emph{actual} tutorials are to be found on the page, as +well. + +D. R.~Wilkins' % ! line break +\href{http://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/}{`Getting started with \latex{}'} +also looks good (it appears shorter~--- more of a primer~--- than some +of the other offerings). + +Chris Harrison's % ! line break +\href{http://xoph.co/20111024/latex-tutorial/}{LaTeX tutorial} +presents basic \LaTeX{} in a rather pleasing and straightforward way. + +Nicola Talbot's % ! line break +\href{http://www.dickimaw-books.com/latex/novices/}{\LaTeX{} for complete novices} +does what it claims: the author teaches \LaTeX{} at the University of +East Anglia. The ``Novices'' tutorial is one of several % ! line break +\href{http://www.dickimaw-books.com/latex/}{introductory tutorials}, +which include exercises (with solutions). Other tutorials include +those for % ! line break +\href{http://www.dickimaw-books.com/latex/thesis/}{writing theses/dissertations with \LaTeX{}}, and for % ! line break +\href{http://www.dickimaw-books.com/latex/admin/}{using \LaTeX{} in administrative work} + +Engelbert Buxbaum provides the `slides' for his \latex{} course `The +\latex{} document preparation system'; this seems to be a departmental +course at his university. + +Mark van Dongen's % line break +\href{"http://csweb.ucc.ie/~dongen/LaTeX-and-Friends.pdf}{`\latex and friends'} +appeared as he was writing his book on the subject (soon to be published). + +An interesting (and practical) tutorial about what \emph{not} to do is +\Package{l2tabu}, or ``A list of sins of \LaTeXe{} users'' by Mark +Trettin, translated into English by J\"urgen Fenn. The +tutorial is available from \acro{CTAN} as a \acro{PDF} file (though +the source is also available). +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Beginner's \LaTeX{}]\CTANref{beginlatex-pdf} +% ! line break +\item[\nothtml{\rmfamily}Getting something out of \latex{}]\CTANref{first-latex-doc} +% ! line break +\item[\nothtml{\rmfamily}Getting up and running with \AMSLaTeX{}]\CTANref{amslatex-primer} +\item[\nothtml{\rmfamily}Slides for \latex{} course]\CTANref{latex-course} +\item[\nothtml{\rmfamily}Not so Short Introduction]\CTANref{lshort} + (in English, you may browse for sources and other language versions at + \CTANref{lshort-parent}) +\item[\nothtml{\rmfamily}Simplified \LaTeX{}]\CTANref{simpl-latex} +\item[\nothtml{\rmfamily}Short Course in \LaTeX{}]\CTANref{mil-short} +% ! line break +\item[\nothtml{\rmfamily}The sins of \LaTeX{} users]Browse + \CTANref{l2tabu} for a copy of the document in a language that is + convenient for you +\end{ctanrefs} +\LastEdit{2012-11-29} + +\Question[Q-tutbitslatex]{\AllTeX{} tutorials} +\AliasQuestion{Q-doc-dirs} + +The \acro{AMS} publishes a ``Short Math Guide for \LaTeX{}'', which is +available (in several formats) via +\URL{http://www.ams.org/tex/amslatex.html} (the ``Additional +Documentation'' about half-way down the page. + +Herbert Vo\ss {} has written an extensive guide to mathematics in +\LaTeX{}, and a development of it has been % ! line break +\Qref*{published as a book}{Q-latex-books}. + +Two documents written more than ten years apart about font usage in +\TeX{} are worth reading: % ! line break +\href{http://www.tug.org/TUGboat/Articles/tb14-2/tb39rahtz-nfss.pdf}{Essential NFSS} +by Sebastian Rahtz, and % ! line break +\href{http://tug.org/pracjourn/2006-1/schmidt/schmidt.pdf}{Font selection in LaTeX}, +cast in the form of an \acro{FAQ}, by Walter Schmidt. A general +compendium of font information (including the two above) may be found +on the \href{http://www.tug.org/fonts/}{TUG web site}. + +T\acro{UG} India is developing a series of online \LaTeX{} tutorials +which can be strongly recommended: select single chapters at a time +from \URL{http://www.tug.org/tutorials/tugindia}\nobreakspace--- there +are 17~chapters in the series, two of which are mostly introductory. + +Peter Smith's +\begin{narrowversion} + ``\LaTeX{} for Logicians'' + (\URL{http://www.logicmatters.net/latex-for-logicians/}) +\end{narrowversion} +\begin{wideversion} + % ! line break + ``\href{http://www.logicmatters.net/latex-for-logicians/}{\LaTeX{} for Logicians}'' +\end{wideversion} +page covers a rather smaller subject area, but is similarly comprehensive +(mostly by links to documents on relevant topics, rather than as a +monolithic document). + +Keith Reckdahl's ``Using Imported Graphics in \LaTeXe{}'' +(\Package{epslatex}) is an +excellent introduction to graphics use. It's available on +\acro{CTAN}, but not in the \texlive{} or miktex{} distributions, for +lack of sources. + +Stefan Kottwitz manages a web site devoted to the use of the drawing +packages % ! line break +\Qref*{\acro{PGF} and \acro{T}ik\acro{Z}}{Q-drawing}, % ! line break +\url{http://www.texample.net/} + +Included is % ! line break + \href{http://www.texample.net/tikz/examples/}{examples catalogue} +includes examples (with output) from the package documentation as well +as code written by the original site maintainer (Kjell Magne Fauske) +and others. + +The compendious \acro{PGF}/\acro{T}ik\acro{Z} manual is clear, but is +bewildering for some beginners. The % ! line break +\href{http://cremeronline.com/LaTeX/minimaltikz.pdf}{`minimal' introduction} +has helped at least the present author. + +Vincent Zoonekynd provides a set of excellent (and graphic) tutorials +on the programming of % !line breaks, ... +\href{http://zoonek.free.fr/LaTeX/LaTeX_samples_title/0.html}{title page styles}, +\href{http://zoonek.free.fr/LaTeX/LaTeX_samples_chapter/0.html}{chapter heading styles} +and +\href{http://zoonek.free.fr/LaTeX/LaTeX_samples_section/0.html}{section heading styles}. +In each file, there is a selection of graphics representing an output +style, and for each style, the code that produces it is shown. + +An invaluable step-by-step setup guide for establishing a ``work +flow'' through your \AllTeX{} system, so that output appears at the +correct size and position on standard-sized paper, and that the print +quality is satisfactory, is Mike Shell's \Package{testflow}. The +tutorial consists of a large plain text document, and there is a +supporting \LaTeX{} file together with correct output, both in \PS{} and +\acro{PDF}, for each of \acro{A}4 and ``letter'' paper sizes. The +complete kit is available on \acro{CTAN} (distributed with the +author's macros for papers submitted for \acro{IEEE} publications). +The issues are also covered in a later % ! line break +\Qref{\acro{FAQ} answer}{Q-dvips-pdf}. + +Documentation of Japanese \ensuremath{\Omega{}} use appears in +Haruhiko Okumura's page +% ! line break +\href{http://oku.edu.mie-u.ac.jp/~okumura/texfaq/japanese/}{typesetting Japanese with Omega} +(the parent page is in Japanese, so out of the scope of this +\acro{FAQ} list). + +Some university departments make their local documentation available +on the web. Most straightforwardly, there's the simple translation of +existing documentation into \acro{HTML}, for example the \acro{INFO} +documentation of the \AllTeX{} installation, of which a sample is the +\LaTeX{} documentation available at +\URL{http://www.tac.dk/cgi-bin/info2www?(latex)} + +More ambitiously, some university departments have enthusiastic +documenters who +make public record of their \AllTeX{} support. For example, Tim Love +(of Cambridge University Engineering Department) maintains his +department's pages at +\URL{http://www-h.eng.cam.ac.uk/help/tpl/textprocessing/} +%% and Mimi +%% Burbank (of the School of Computer Science \& Information Technology +%% at the University of Florida) manages her department's at +%% \URL{http://www.csit.fsu.edu/~mimi/tex/}\nobreakspace--- both sets are fine +%% examples of good practice. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Graphics in \LaTeXe{}]\CTANref{epslatex} +\item[testflow]\CTANref{testflow} +\item[\nothtml{\rmfamily}Herbert Vo\ss {}'s Maths tutorial]\CTANref{voss-mathmode} +\end{ctanrefs} + +\Question[Q-ref-doc]{Reference documents} + +For \TeX{} primitive commands a rather nice % ! line break +\href{http://www.nmt.edu/tcc/help/pubs/texcrib.pdf}{quick reference booklet}, +by John W.~Shipman, is available; it's arranged in the same way as the +\TeX{}book. By contrast, you can view David Bausum's % ! line break +\href{http://www.tug.org/utilities/plain/cseq.html}{list of \TeX{} primitives} +alphabetically or arranged by ``family''. Either way, the list has a +link for each control sequence, that leads you to a detailed +description, which includes page references to the \TeX{}book. + +There doesn't seem to be a reference that takes in \plaintex{} as +well as the primitive commands. + +An interesting \LaTeX{} ``cheat sheet'' is available from \acro{CTAN}: +it's a list of (more or less) everything you `ought to' remember, for +basic \LaTeX{} use. % line break +(It's laid out very compactly for printing on N.\ American `letter'; +printed on \acro{ISO} \acro{A}4, using Adobe Acrobat's ``shrink to +fit'', it strains aged eyes\dots{}) + +For command organised references to \LaTeX{}, Karl Berry (et +al)'s % !line break +\href{http://home.gna.org/latexrefman}{LaTeX reference manual} is (to +an extent) work in progress, but is generally reliable (source is +available on the.archive as well). + +Martin Scharrer's ``List of internal \latex{} macros'' is a help to +those aiming to write a class or package. + +The reference provided by the Emerson Center of Emory +University), % ! line break +\href{http://www.emerson.emory.edu/services/latex/latex2e/latex2e_toc.html}{LaTeXe help} +also looks good. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Cheat sheet]\CTANref{latexcheat} +\item[\nothtml{\rmfamily}LaTeX reference manual]\CTANref{latex2e-help-texinfo} +\item[\nothtml{\rmfamily}LaTeX internal macros]\CTANref{macros2e} +\end{ctanrefs} +\LastEdit{2012-02-16} + +\Question[Q-doc-wiki]{\acro{WIKI} books for \TeX{} and friends} + +The \emph{\acro{WIKI}} concept can be a boon to everyone, if used sensibly. +The ``general'' \acro{WIKI} allows \emph{anyone} to add stuff, or to edit +stuff that someone else has added: while there is obvious potential +for chaos, there is evidence that a strong user community can keep a +\acro{WIKI} under control. + +Following the encouraging performance of the % ! line break +\href{http://contextgarden.net/}{\CONTeXT{} \acro{WIKI}}, valiant +efforts have been made generating ``\acro{WIKI} books'' for \AllTeX{} +users. Thus we have % ! line break +\href{http://en.wikibooks.org/wiki/TeX}{(Plain) \TeX{} \acro{WIKI} book} and +\href{http://en.wikibooks.org/wiki/LaTeX}{\LaTeX{} \acro{WIKI} book}~--- +both well established. Both are highly rated as reference sources, +and even as introductory texts. +\LastEdit{2012-07-25} + +\Question[Q-typo-style]{Typography tutorials} + +Peter Wilson's article \Package{memdesign} has a lengthy introductory +section on typographic considerations, which is a fine tutorial, +written by someone who is aware of the issues as they apply to +\AllTeX{} users. (\Package{Memdesign} now distributed separately from +the manual for his \Class{memoir} class, but was originally part of +that manual) + +There's also (at least one) typographic style tutorial available on +the Web, the excellent % ! line break +``\href*{http://www.nbcs.rutgers.edu/~hedrick/typography/typography.janson-syntax.107514.pdf}{Guidelines for Typography in NBCS}''. +In fact, its % !! +\href*{http://www.nbcs.rutgers.edu/~hedrick/typography/index.html}{parent page} +is also worth a read: among other things, it provides copies of the +``guidelines'' document in a wide variety of primary fonts, for +comparison purposes. The author is careful to explain that he has no +ambition to supplant such excellent books as +\Qref*{Bringhurst's}{Q-type-books}, but the document (though it does +contain its Rutgers-local matter) is a fine introduction to the issues +of producing readable documents. +\begin{ctanrefs} +\item[memdesign]\CTANref{memdesign} +\end{ctanrefs} + +\Question[Q-ol-books]{Freely available \AllTeX{} books} + +People have long argued for \AllTeX{} books to be made available on +the web, and until relatively recently this demand went un-answered. + +The first to appear was Victor Eijkhout's excellent ``\TeX{} by +Topic'' in 2001 (it had been published by Addison-Wesley, but was long +out of print). The book is now available on \acro{CTAN}; it's not a +beginner's tutorial but it's a fine reference. It's also available, +as a printed copy, via the on-line publishers +\href{http://www.lulu.com/content/2555607/}{Lulu} (not quite free, of +course, but not a \emph{bad} deal\dots{}). + +Addison-Wesley have also released the copyright of ``\TeX{} for the +Impatient'' by Paul W.~Abrahams, Karl Berry and Kathryn A.~Hargreaves, +another book whose unavailability many have lamented. The authors +have re-released the book under the \acro{GNU} Free Documentation +Licence, and it is available from \acro{CTAN}. + +Norm Walsh's ``Making \TeX{} Work'' (originally published by O'Reilly) +is also available (free) on the Web, at +\URL{http://makingtexwork.sourceforge.net/mtw/}; the sources of the +Web page are on \acro{CTAN}. The book was an excellent resource in +its day, but while it is now somewhat dated, it still has its uses, +and is a welcome addition to the list of on-line resources. A project +to update it is believed to be under way. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Making \TeX{} Work]\CTANref{mtw} +\item[\nothtml{\rmfamily}\TeX{} by Topic]\CTANref{texbytopic} +\item[\nothtml{\rmfamily}\TeX{} for the Impatient]\CTANref{TftI} +\end{ctanrefs} +\LastEdit{2011-06-29} + +\Question[Q-pkgdoc]{Documentation of packages} + +These \acro{FAQ}s regularly suggest packages that will ``solve'' +particular problems. In some cases, the answer provides a recipe for +the job. In other cases, or when the solution needs elaborating, how +is the poor user to find out what to do? + +If you're lucky, the package you need is already in your installation. +If you're particularly lucky, you're using a distribution that gives +access to package documentation and the documentation is available in +a form that can easily be shown. + +On \texlive{}-based distributions, help should be available from the +\ProgName{texdoc} command, as in: +\begin{quote} +\begin{verbatim} +texdoc footmisc +\end{verbatim} +\end{quote} +which opens a window showing documentation of the \Package{footmisc} +package. (The window is tailored to the file type, in the way normal +for the system.) + +If \ProgName{texdoc} can't find any documentation, it may launch a Web +browser to look at the package's entry in the \acro{CTAN} catalogue. +The catalogue has an entry for package documentation, and most authors +respond to the \acro{CTAN} team's request for documentation of +packages, you will more often than not find documentation that way. + +On \miktex{} systems, the same function is provided by the +\ProgName{mthelp}. + +Note that the site \url{texdoc.net} provides access to the +documentation you \emph{would} have if you had a \emph{full} +installation of \texlive{}; on the site you can simply ask for a +package (as you would ask \ProgName{texdoc}, or you can use the site's +index of documentation to find what you want. (This is helpful for +some of us: many people don't have a full \alltex{} installation on +their mobile phone~\dots{} yet.) + +If your luck (as defined above) doesn't hold out, you've got to find +documentation by other means. That is, you have to find the +documentation for yourself. The rest of this answer offers a range of +possible techniques. + +The commonest form of documentation of \LaTeX{} add-ons is within the +\extension{dtx} file in which the code is distributed (see +\Qref[answer]{documented \LaTeX{} sources}{Q-dtx}). Such files +are supposedly processable by \LaTeX{} itself, but there are +occasional hiccups on the way to readable documentation. Common +problems are that the package itself is needed to process its own +documentation (so must be unpacked before processing), and that the +\extension{dtx} file will \emph{not} in fact process with \LaTeX{}. In the +latter case, the \extension{ins} file will usually produce a +\extension{drv} (or similarly-named) file, which you process with +\LaTeX{} instead. (Sometimes the package author even thinks to +mention this wrinkle in a package \texttt{README} file.) + +Another common form is the separate documentation file; particularly +if a package is ``conceptually large'' (and therefore needs a lot of +documentation), the documentation would prove a cumbersome extension +to the \extension{dtx} file. Examples of such cases are the \Class{memoir} +class, the \Class{KOMA-script} bundle +(whose developers take the trouble to produce detailed documentation +in both German and English), the \Package{pgf} documentation (which +would make a substantial book in its own right) +and the \Package{fancyhdr} package (whose +documentation derives from a definitive tutorial in a mathematical +journal). Even if the documentation is not separately identified in a +\texttt{README} file, it should not be too difficult to recognise its +existence. + +Documentation within the package itself is the third common form. +Such documentation ordinarily appears in comments at the head of the +file, though at least one eminent author regularly places it after the +\csx{endinput} command in the package. (This is desirable, since +\csx{endinput} is a `logical' end-of-file, and \AllTeX{} doesn't read +beyond it: thus such documentation does not `cost' any package loading time.) + +The above suggestions cover most possible ways of finding +documentation. If, despite your best efforts, you can't find +it in any of the above places, there's the awful possibility that the +author didn't bother to document his package (on the ``if it was hard +to write, it should be hard to use'' philosophy). Most ordinary +mortals will seek support from some more experienced user at this +stage, though it \emph{is} possible to proceed in the way that the original +author apparently expected\dots{}by reading his code. +\LastEdit{2012-11-09} + +\Question[Q-writecls]{Learning to write \LaTeX{} classes and packages} + +There's nothing particularly magic about the commands you use when +writing a package, so you can simply bundle up a set of \LaTeX{} +\csx{(re)newcommand} and \csx{(re)newenvironment} commands, put them in +a file \File{package.sty} and you have a package. + +However, any but the most trivial package will require rather more +sophistication. Some details of \LaTeX{} commands for the job are to +be found in `\LaTeXe{} for class and package writers' +(\File{clsguide}, part of the \LaTeX{} documentation distribution). +Beyond this, a good knowledge of \TeX{} itself is valuable: thus books +such as the \Qref*{\TeX{}book}{Q-tex-books} or % ! line break +\Qref*{\TeX{} by topic}{Q-ol-books} are relevant. With good \TeX{} +knowledge it is possible to use the documented source of \LaTeX{} as +reference material (dedicated authors will acquaint themselves with the +source as a matter of course). A complete set of the documented +source of \LaTeX{} may be prepared by processing the file +\File{source2e.tex} in the \LaTeX{} distribution. Such processing is +noticeably tedious, but Heiko Oberdiek has prepared a well-linked +\acro{PDF} version, which is in the file \File{base.tds.zip} of his +\ProgName{latex-tds} distribution. Individual files in the \LaTeX{} +distribution may be processed separately with \LaTeX{}, like any +well-constructed \Qref*{\extension{dtx} file}{Q-dtx}. + +Writing good classes is not easy; it's a good idea to read some +established ones (\File{classes.dtx}, for example, is the documented +source of the standard classes other than \Class{Letter}, and may +itself be formatted with \LaTeX{}). Classes that are not part of the +distribution are commonly based on ones that are, and start by loading +the standard class with \csx{LoadClass}~--- an example of this +technique may be seen in \Package{ltxguide.cls} + +An % !! line break +\href{http://tug.org/TUGboat/Articles/tb28-1/tb88flynn.pdf}{annotated version of \Class{article}}, +as it appears in \File{classes.dtx}, was published in +\TUGboat{} 28(1). The article, by Peter Flynn, is a good guide to +understanding \File{classes.dtx} +\begin{ctanrefs} +\item[classes.dtx]\CTANref{latex-classes} +\item[clsguide.pdf]\CTANref{clsguide} +\item[latex-tds \nothtml{rmfamily}collection]\CTANref{latex-tds} +\item[ltxguide.cls]\CTANref{ltxguide} +\item[\nothtml{\rmfamily}\LaTeX{} documentation]\CTANref{latexdoc} +\item[source2e.tex]\CTANref{latex-source} +\end{ctanrefs} +\LastEdit{2011-07-19} + +\Question[Q-latex3-prog]{\latex{}3 programming} +As yet, there is no book ``Programming in \latex{}3'', and even if +such a thing existed there would be lots of gaps. So there is no +\emph{comprehensive} support. + +However, there are some `resources': +\begin{itemize} +\item The ``introduction to \latex{}3 ideas'' in the \Package{expl3} + documentation gives a broad-brush overview of the concepts. +\item Joseph Wright has written a short series of % !line break + \href{http://www.texdev.net/index.php?s=programming+latex3}{blog posts}, + which may help. +\item There is also a complete command reference in the + \Package{interface3} document. +\end{itemize} + +The documents are still subject to development; some of the broader +design issues are discussed on the \latex{} mailing list +\texttt{latex-l}~--- you may subscribe to that list by sending a +message by sending a message +\begin{quote} + `\texttt{subscribe latex-l <\emph{your name}>}' +\end{quote} +to \mailto{listserv@urz.Uni-Heidelberg.de} +\begin{ctanrefs} +\item[expl3.pdf]\CTANref{expl3-doc} +\item[interface3.pdf]\CTANref{interface3-doc} +\end{ctanrefs} +\LastEdit*{2012-11-29} + +\Question[Q-mfptutorials]{\MF{} and \MP{} Tutorials} + +Apart from Knuth's book, there seems to be only one publicly-available +\href{http://metafont.tutorial.free.fr/}{tutorial for \MF{}}, by +Christophe Grandsire (a copy in \acro{PDF} form may be downloaded). +Geoffrey Tobin's \textit{\MF{} for Beginners} % !! line break +(see \Qref[question]{using \MF{}}{Q-useMF}) describes how the \MF{} +system works and how to avoid some of the potential pitfalls. + +Peter Wilson's experience of running both \MF{} and \MP{} (the +programs), \textit{Some Experiences in Running \MF{} and \MP{}} +(available on \ctan{}) offers the benefit of Peter's experience (he +has designed a +number of `historical' fonts using \MF{}). For \MF{} the article is +geared towards testing and installing new \MF{} fonts, while its \MP{} +section describes how to use \MP{} illustrations in \LaTeX{} and +\PDFLaTeX{} documents, with an emphasis on how to use appropriate +fonts for any text or mathematics. + +Hans Hagen (of \CONTeXT{} fame) offers a \MP{} tutorial called +MetaFun (which admittedly concentrates on the use of \MP{} within +\CONTeXT{}). It may be found on his company's % ! line break +\href{http://www.pragma-ade.com/general/manuals/metafun-p.pdf}{`manuals' page}. + +Another \MP{} tutorial in English is: % ! line breaks +\url{http://www.tlhiv.org/MetaPost/tutorial/} by Urs Oswald. +One in French (listed here because it's clearly enough written +that even this author understands it), +\url{http://pauillac.inria.fr/~cheno/metapost/metapost.pdf} +by Laurent Ch\'eno. + +Urs Oswald's tutorial uses Troy Henderson's tool +(\URL{http://www.tlhiv.org/mppreview}) for testing little bits of +\MP{}; it is an invaluable aid to the learner: +\URL{http://www.tlhiv.org/mppreview} + +A three-part introduction, by Mari Voipio, was published in +\href{http://tug.org/TUGboat/intromp/tb106voipio-grid.pdf}{\TUGboat34(1) (Entry-level \MP{}: On the grid)}, +\TUGboat34(2) +\href{http://tug.org/TUGboat/intromp/tb107voipio-moveit.pdf}{(Entry-level \MP{}: Move it!\@)}, and +\href{http://tug.org/TUGboat/intromp/tb108voipio-color.pdf}{\TUGboat34(2) (Entry-level \MP{}: Color)}. + +Vincent Zoonekynd's massive set of example \MP{} files is available on +\acro{CTAN}; the set includes a \ProgName{Perl} script to convert the +set to html, and the set may be % beware line break +\href{http://zoonek.free.fr/LaTeX/Metapost/metapost.html}{viewed on the web}. +While these examples don't exactly constitute a ``tutorial'', they're +most certainly valuable learning material. Urs Oswald presents a +\href{http://www.ursoswald.ch/metapost/tutorial.pdf}{similar document}, +written more as a document, and presented in \acro{PDF}. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Beginners' guide]\CTANref{mf-beginners} +\item[\nothtml{\rmfamily}Peter Wilson's ``experiences'']\CTANref{metafp-pdf} +\item[\nothtml{\rmfamily}Vincent Zoonekynd's examples]\CTANref{zoon-mp-eg} +\end{ctanrefs} +\LastEdit{2014-02-18} + +\Question[Q-BibTeXing]{\bibtex{} Documentation} + +\bibtex{}, a program originally designed to produce bibliographies in +conjunction with \LaTeX{}, is explained in Section~4.3 and Appendix~B +of Leslie Lamport's \LaTeX{} manual. +The document ``\bibtex{}ing'', in the \bibtex{} distribution (look for +\File{btxdoc}), +expands on the chapter in Lamport's book. \emph{The \LaTeX{} Companion} +also has information on \bibtex{} and writing \bibtex{} style files. +(See \Qref[question]{\latex{} books}{Q-latex-books} for details of both +books.) + +The web site ``\href{http://www.bibtex.org}{Your \bibtex{} resource}'' +offers a solid introduction, but doesn't go into very great detail. + +The document ``Designing \bibtex{} Styles'', also in the \bibtex{} +distribution (look for +\File{btxhak}), explains the postfix stack-based language used to +write \bibtex{} styles (\File{.bst} files). The file\File{btxbst.doc}, +also in the \bibtex{} distribution, +is the template for the four standard styles (\Package{plain}, +\Package{abbrv}, \Package{alpha}, and \Package{unsrt}); it also +contains their documentation. + +A useful tutorial of the whole process of using \bibtex{} is Nicolas +Markey's ``\emph{Tame the BeaST (The B to X of \bibtex{})}'', which +may also be found on \acro{CTAN}. A summary and \acro{FAQ} by Michael +Shell and David Hoadley, is also to be recommended. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\bibtex{} distribution]\CTANref{bibtex} +\item[\nothtml{\rmfamily}Shell and Hoadley's FAQ]\CTANref{bibtex-faq} +\item[\nothtml{\rmfamily}Tame the BeaST]\CTANref{ttb-pdf} +\end{ctanrefs} +\LastEdit{2013-10-15} + +\Question[Q-symbols]{Where can I find the symbol for\,\dots{}} +\keywords{assignment circular integral degrees diagonal dots Fourier transform} +\keywords{Laplace greater less complex integer natural real} +\keywords{cent euro} + +There is a wide range of symbols available for use with \TeX{}, most +of which are not shown (or even mentioned) in \AllTeX{} books. +\emph{The Comprehensive \LaTeX{} Symbol List} (by Scott Pakin +% beware line wrap +\emph{et al.}\@) illustrates over 2000 symbols, and details the +commands and the \LaTeX{} packages needed to produce them. + +However, while the symbol list is a wonderful resource, it is never +easy to find a particular symbol there. A graphical % ! line break +\href{http://detexify.kirelabs.org/classify.html}{symbol search} is +available on the web. The site provides you a scratch area on which +you draw the symbol you're thinking of, with your mouse; when you've +finished drawing, the classifier tries to match your sketch with +symbols it knows about. The matching process is pretty good, even for +the sketches of a \emph{really} poor draughtsman (such as the present +author), and it's often worth trying more than once. `Detexify apps' +are available for both Android and iPhone devices, you can use them to +draw the symbol with your fingertip~--- a less challenging procedure +than using your workstation's mouse, by all accounts! + +If you are using Unicode maths in \xetex{} or \luatex{}, your own +distribution ought to provide the Unicode maths symbol table +\File{unimath-symbols.pdf}; this lists the things available in the +commonly-used mathematics fonts. (If the file isn't already available +on your system, you can download it from \acro{CTAN}, where it live +with the \Package{unicode-math} package. + +Other questions in this \acro{FAQ} offer specific help on kinds of +symbols: +\begin{itemize} +\item \Qref*{Script fonts for mathematics}{Q-scriptfonts} +\item \Qref*{Fonts for the number sets}{Q-numbersets} +\item \Qref*{Typesetting the principal value integral}{Q-prinvalint} +\end{itemize} +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Symbol List]Browse \CTANref{symbols}; there + are processed versions \acro{PDF} form for both A4 and letter paper. +\item[\nothtml{\rmfamily}Unicode maths symbols]Distributed as part of + \CTANref{unicode-math} +\end{ctanrefs} +\LastEdit{2012-09-03} + +\Question[Q-docpictex]{The \pictex{} manual} + +\pictex{} is a set of macros by Michael Wichura for drawing diagrams +and pictures. The +macros are freely available; however, the +\pictex{} manual itself is not free. +Unfortunately, \acro{TUG} is no longer able to supply copies of the +manual (as it once did), and it is now available only through Personal +\TeX{} Inc, the vendors of PC\TeX{} (\URL{http://www.pctex.com/}). The +manual is \emph{not} available electronically. + +However, there \emph{is} a summary of \pictex{} commands available on +\acro{CTAN}, which is a great aide-memoire for those who basically +know the package to start with. +\begin{ctanrefs} +\item[\pictex{}]\CTANref{pictex} +\item[\pictex{} summary]\CTANref{pictex-summary} +\end{ctanrefs} diff --git a/help/uk-tex-faq/faq-dvi.tex b/help/uk-tex-faq/faq-dvi.tex new file mode 100644 index 0000000000..1b6ddf3cf4 --- /dev/null +++ b/help/uk-tex-faq/faq-dvi.tex @@ -0,0 +1,148 @@ +% $Id: faq-dvi.tex,v 1.2 2014/01/28 18:17:36 rf10 Exp rf10 $ + +\section{\acro{DVI} Drivers and Previewers} + +\Question[Q-dvips]{\acro{DVI} to \PS{} conversion programs} + +The best public domain \acro{DVI} to \PS{} conversion program, which +runs under many operating systems, is Tom Rokicki's \ProgName{dvips}. +\ProgName{dvips} is written in \acro{C} and ports easily. All current +development is in the context of Karl Berry's \ProgName{kpathsea} +library, and sources are available from the \texlive{} repository, +and versions are available in all \TeX{} distributions that recognise +the use of \PS{}. + +An \acro{VMS} versions is available as part of the \acro{CTAN} +distribution of \TeX{} for \acro{VMS}. + +A precompiled version to work with em\TeX{} is available on \acro{CTAN}. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\MSDOS{} and \latexhtml{\acro{OS/}}{OS/}2]% + \CTANref{dvips-pc} +\item[\nothtml{\rmfamily}VMS distribution]\CTANref{OpenVMSTeX} +\end{ctanrefs} + +\Question[Q-HPdrivers]{\acro{DVI} drivers for \acro{HP} LaserJet} + +The em\TeX{} distribution (see \Qref[question]{\TeX{} systems}{Q-TeXsystems}) +contains a driver for the LaserJet, \ProgName{dvihplj}. + +Version 2.10 of the Beebe drivers supports the LaserJet. These drivers +will compile under Unix, \acro{VMS}, and on the Atari ST and +\acro{DEC}-20s. + +For Unix systems, Karl Berry's \ProgName{dviljk} uses the same +path-searching library as \ProgName{web2c}. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Beebe drivers]\CTANref{beebe} +\item[dviljk]\CTANref{dviljk} +\end{ctanrefs} + +\Question[Q-otherprinters]{Output to ``other'' printers} + +In the early years of \TeX{}, there were masses of \acro{DVI} drivers +for any (then) imaginable kind of printer, but the steam seems rather +to have gone out of the market for production of drivers for +printer-specific formats. There are several reasons for this, but the +primary one is that few formats offer the flexibility available +through \PS{}, and with +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}} (and its +huge range of printer drivers) there is now little demand for new +printer driver development. + +Thus, it is reasonable to \Qref*{generate \PS{}}{Q-dvips}, and +use \href{http://www.ghostscript.com/}{\ProgName{ghostscript}} to send +the resulting \PS{} output to the printer you actually have. + +(If you are using a Unix system of some sort, it's generally quite +easy to insert +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}} into the +print spooling process, which makes printing \emph{really} simple.) +\LastEdit{2013-05-29} + +\Question[Q-previewers]{\acro{DVI} previewers} + +Em\TeX{} for \acro{PC}s running \MSDOS{} or \acro{OS/}2, \miktex{} and +XEm\TeX{} for \acro{PC}s running Windows and Oz\TeX{} for the Macintosh, all +come with previewers that can be used on those platforms. Em\TeX{}'s +previewer can also be run under Windows~3.1. + +Commercial \acro{PC} \TeX{} packages (see % ! line break +\Qref[question]{commercial vendors}{Q-commercial}) +have good previewers for \acro{PC}s running Windows, or for Macintoshes. + +For Unix systems, there is one `canonical' viewer, \ProgName{xdvi}. +\ProgName{Xdvik} is a version of \ProgName{xdvi} using the +\ProgName{web2c} libraries; it is now built from the same distribution +as \ProgName{xdvi}. The \texlive{} distributions for Unix systems +include a version of \ProgName{xdvik}. + +Alternatives to previewing include +\begin{itemize} +\item conversion to `similar' \acro{ASCII} text (see + \Qref[question]{converting to \acro{ASCII}}{Q-toascii}) and using a + conventional text viewer to look at that, +\item generating a \PS{} version of your document and viewing it + with a + \href{http://www.ghostscript.com/}{\ProgName{ghostscript}}-based + previewer (see + \Qref[question]{previewing \PS{} files}{Q-PSpreview}), and +\item generating \acro{PDF} output, and viewing that with + \ProgName{Acrobat} \ProgName{Reader} or one of the substitutes for that. +\end{itemize} +\begin{ctanrefs} +\item[xdvi]\CTANref{xdvi} +\end{ctanrefs} +\LastEdit{2013-04-11} + +\Question[Q-dvi-bmp]{Generating bitmaps from \acro{DVI}} + +In the last analysis, any \acro{DVI} driver or previewer is generating +bitmaps: bitmaps for placing tiny dots on paper via a laser- or +inkjet-printer, or bitmaps for filling some portion of your screen. +However, it's usually difficult to extract any of those bitmaps any +way other than by screen capture, and the resolution of \emph{that} is +commonly lamentable. + +Why would one want separate bitmaps? Most often, the requirement is for +something that can be included in \acro{HTML} generated from \AllTeX{} +source~--- not everything that you can write in \AllTeX{} can be +translated to \acro{HTML} (at least, portable \acro{HTML} that may be +viewed in `most' browsers), so the commonest avoiding action is to +generate a bitmap of the missing bit. Examples are maths (a maths +extension to the `|*|\acro{ML}' family is available but not +universally supported by browsers), and `exotic' typescripts (ones +that you cannot guarantee your readers will have available). Other +common examples are generation of +sample bitmaps, and generation for insertion into some other +application's display~--- to insert equations into Microsoft +PowerPoint, or to support the enhanced-\ProgName{emacs} setup called +\Qref*{\ProgName{preview}-\ProgName{latex}}{Q-WYGexpts}. + +In the past, the commonest way of generating bitmaps was to generate a +\PS{} file of the \acro{DVI} and then use +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}} to +produce the required bitmap format (possibly by way of \acro{PNM} +format or something similar). This is an undesirable procedure (it is +tedious, involving requires two or three steps that run slowly) but it +served for a long time. + +\AllTeX{} users may now take advantage of two bitmap `drivers'. The +longer-established, \ProgName{dvi2bitmap}, will generate \acro{XBM} and +\acro{XPM} formats, the long-deprecated \acro{GIF} format (which is +now obsolescent, but has finally been relieved of the patent +protection of the \acro{LZW} compression it uses), and also +the modern (\acro{ISO}-standardised) \acro{PNG} format. + +\ProgName{Dvipng} started out as a PNG renderer; from version 1.2 it can also +render to the GIF format. It is designed for speed, in environments that +generate large numbers of \acro{PNG} files: the \File{README} mentions +\ProgName{preview}-\ProgName{latex}, \ProgName{LyX}, and a few +web-oriented environments. Note that \ProgName{dvipng} gives +high-quality output even though its internal operations are optimised +for speed. +\begin{ctanrefs} +\item[dvi2bitmap]\CTANref{dvi2bitmap} +\item[dvipng]\CTANref{dvipng} +\end{ctanrefs} +\LastEdit{2013-04-19} diff --git a/help/uk-tex-faq/faq-fmt-conv.tex b/help/uk-tex-faq/faq-fmt-conv.tex new file mode 100644 index 0000000000..d555e6f1a6 --- /dev/null +++ b/help/uk-tex-faq/faq-fmt-conv.tex @@ -0,0 +1,465 @@ +% $Id: faq-fmt-conv.tex,v 1.10 2014/05/29 11:24:34 rf10 Exp rf10 $ + +\section{Format conversions} + +\Question[Q-toascii]{Conversion from \AllTeX{} to plain text} + +The aim here is to emulate the Unix \ProgName{nroff}, which formats +text as best it can for the screen, from the same +input as the Unix typesetting program \ProgName{troff}. + +Converting \acro{DVI} to plain text is the basis of many of these +techniques; sometimes the simple conversion provides a good enough +response. Options are: +\begin{itemize} +\item \ProgName{dvi2tty} (one of the earliest), +\item \ProgName{crudetype} and +\item \ProgName{catdvi}, which is capable of generating Latin-1 + (ISO~8859-1) or \acro{UTF}-8 encoded output. \ProgName{Catdvi} was + conceived as a replacement for \ProgName{dvi2tty}, but development + seems to have stopped before the authors were willing to declare the + work complete. +\end{itemize} +A common problem is the hyphenation that \TeX{} inserts when +typesetting something: since the output is inevitably viewed using +fonts that don't match the original, the hyphenation usually looks +silly. + +Ralph Droms provides a \Package{txt} bundle of things in support of +\acro{ASCII} generation, +but it doesn't do a good job with tables and mathematics. + +Another possibility is to +use the \LaTeX{}-to-\acro{ASCII} conversion program, \ProgName{l2a}, +although this is really more of a de-\TeX{}ing program. + +The canonical de-\TeX{}ing program is \ProgName{detex}, which removes +all comments and control sequences +from its input before writing it to its output. Its original purpose +was to prepare input for a dumb spelling checker, and it's only usable +for preparing useful \acro{ASCII} versions of a document in highly +restricted circumstances. + +\ProgName{Tex2mail} is slightly more than a de-TeX{}er~--- it's a +\ProgName{Perl} script that converts \TeX{} files into +plain text files, expanding various mathematical symbols +(sums, products, integrals, sub/superscripts, fractions, square +roots, \dots{}\@) into ``\acro{ASCII} art'' that spreads over +multiple lines if necessary. The result is more readable to human +beings than the flat-style \TeX{} code. + +Another significant possibility is to use one of the +\Qref*{\acro{HTML}-generation solutions}{Q-LaTeX2HTML}, +and then to use a browser such as \ProgName{lynx} to dump the resulting +\acro{HTML} as plain text. +\begin{ctanrefs} +\item[catdvi]\CTANref{catdvi} +\item[crudetype]\CTANref{crudetype} +\item[detex]\CTANref{detex} +\item[dvi2tty]\CTANref{dvi2tty} +\item[l2a]\CTANref{l2a} +\item[tex2mail]\CTANref{tex2mail} +\item[txt]\CTANref{txtdist} +\end{ctanrefs} +\LastEdit{2011-07-21} + +\Question[Q-SGML2TeX]{Conversion from \acro{SGML} or \acro{HTML} to \protect\TeX{}} + +\acro{SGML} is a very important system for document storage and interchange, +but it has no formatting features; its companion \acro{ISO} standard +\acro{DSSSL} +(see \URL{http://www.jclark.com/dsssl/}) is designed for writing +transformations and formatting, +but this has not yet been widely implemented. Some \acro{SGML} authoring +systems (e.g., SoftQuad \ProgName{Author/Editor}) have formatting +abilities, and +there are high-end specialist \acro{SGML} typesetting systems (e.g., Miles33's +\ProgName{Genera}). However, the majority of \acro{SGML} users probably transform +the source to an existing typesetting system when they want to print. +\TeX{} is a good candidate for this. There are three approaches to writing a +translator: +\begin{enumerate} +\item Write a free-standing translator in the traditional way, with + tools like \ProgName{yacc} and \ProgName{lex}; this is hard, in + practice, because of the complexity of \acro{SGML}. +\item Use a specialist language designed for \acro{SGML} transformations; the + best known are probably \ProgName{Omnimark} and \ProgName{Balise}. + They are expensive, but powerful, incorporating \acro{SGML} query and + transformation abilities as well as simple translation. +\item Build a translator on top of an existing \acro{SGML} parser. By far + the best-known (and free!) parser is James Clark's + \ProgName{nsgmls}, and this produces a much simpler output format, + called \acro{ESIS}, which can be parsed quite straightforwardly (one also + has the benefit of an \acro{SGML} parse against the \acro{DTD}). Two + good public domain packages use this method: + \begin{itemize} + \item +\begin{narrowversion} % really non-hyper + David Megginson's \ProgName{sgmlspm}, written in \ProgName{Perl} + 5, which is available from + \URL{http://www.perl.com/CPAN/modules/by-module/SGMLS} +\end{narrowversion} +\begin{wideversion} + David Megginson's + \href{http://www.perl.com/CPAN/modules/by-module/SGMLS}{\ProgName{sgmlspm}}, + written in \ProgName{Perl} 5. +\end{wideversion} + \item +\begin{narrowversion} % really non-hyper + Joachim Schrod and Christine Detig's \ProgName{STIL} + (`\acro{SGML} Transformations in Lisp'), which is available from + \URL{ftp://ftp.tu-darmstadt.de/pub/text/sgml/stil} +\end{narrowversion} +\begin{wideversion} + Joachim Schrod and Christine Detig's + \href{ftp://ftp.tu-darmstadt.de/pub/text/sgml/stil}{\ProgName{STIL}}, + (`\acro{SGML} Transformations in Lisp'). +\end{wideversion} + \end{itemize} + Both of these allow the user to write `handlers' for every \acro{SGML} + element, with plenty of access to attributes, entities, and + information about the context within the document tree. + + If these packages don't meet your needs for an average \acro{SGML} + typesetting job, you need the big commercial stuff. +\end{enumerate} + +Since \acro{HTML} is simply an example of \acro{SGML}, we do not need a specific +system for \acro{HTML}. However, Nathan Torkington developed +% (\Email{Nathan.Torkington@vuw.ac.nz}) +\ProgName{html2latex} from the \acro{HTML} parser in \acro{NCSA}'s +Xmosaic package. +The program takes an \acro{HTML} file and generates a \LaTeX{} file from it. +The conversion code is subject to \acro{NCSA} restrictions, but the whole +source is available on \acro{CTAN}. + +Michel Goossens and Janne Saarela published a very useful summary of +\acro{SGML}, and of public domain tools for writing and manipulating it, in +\TUGboat{} 16(2). +\begin{ctanrefs} +\item[html2latex \nothtml{\rmfamily}source]\CTANref{html2latex} +\end{ctanrefs} + +\Question[Q-LaTeX2HTML]{Conversion from \AllTeX{} to \acro{HTML}} + +\TeX{} and \LaTeX{} are well suited to producing electronically publishable +documents. However, it is important to realize the difference +between page layout and functional markup. \TeX{} is capable of +extremely detailed page layout; \acro{HTML} is not, because \acro{HTML} is a +functional markup language not a page layout language. \acro{HTML}'s exact +rendering is not specified by the document that is published but is, to +some degree, left to the discretion of the browser. If you require your +readers to see an exact replication of what your document looks like +to you, then you cannot use \acro{HTML} and you must use some other +publishing format such as \acro{PDF}. That is true for any \acro{HTML} +authoring tool. + +\TeX{}'s excellent mathematical capabilities remain a challenge in the +business of conversion to \acro{HTML}. There are only two generally +reliable techniques for generating mathematics on the web: creating +bitmaps of bits of typesetting that can't be translated, and using +symbols and table constructs. Neither technique is entirely +satisfactory. Bitmaps lead to a profusion of tiny files, are slow to +load, and are inaccessible to those with visual disabilities. The +symbol fonts offer poor coverage of mathematics, and their use +requires configuration of the browser. The future of mathematical +browsing may be brighter~--- see +% beware line break +\Qref[question]{future Web technologies}{Q-mathml}. + +For today, possible packages are: +\begin{description} +\item[\ProgName{LaTeX2HTML}]a \ProgName{Perl} script package that + supports \LaTeX{} only, and generates mathematics (and other + ``difficult'' things) using bitmaps. The original version was + written by Nikos Drakos for Unix systems, but the package now sports + an illustrious list of co-authors and is also available for Windows + systems. Michel Goossens and Janne Saarela published a detailed + discussion of \ProgName{LaTeX2HTML}, and how to tailor it, in + \TUGboat{} 16(2). + + A mailing list for users may be found via + \URL{http://tug.org/mailman/listinfo/latex2html} +\item[\ProgName{TtH}]a compiled program that supports either \LaTeX{} + or \plaintex{}, and uses the font/table technique for representing + mathematics. It is written by Ian Hutchinson, using + \ProgName{flex}. The distribution consists of a single \acro{C} + source (or a compiled executable), which is easy to install and very + fast-running. +\item[\ProgName{TeX4ht}]a compiled program that supports either + \LaTeX{} or \plaintex{}, by processing a \acro{DVI} file; it uses + bitmaps for mathematics, but can also use other technologies where + appropriate. Written by Eitan Gurari, it parses the \acro{DVI} + file generated when you run \AllTeX{} over your file with + \ProgName{tex4ht}'s macros included. As a result, it's pretty + robust against the macros you include in your document, and it's + also pretty fast. +\item[\ProgName{plasTeX}]a Python-based \LaTeX{} document processing + framework. It gives DOM-like access to a \LaTeX{} document, as + well as the ability to generate mulitple output formats + (e.g. HTML, DocBook, tBook, etc.). +\item[\ProgName{TeXpider}]a commercial program from + \Qref*{Micropress}{Q-commercial}, which is + described on \URL{http://www.micropress-inc.com/webb/wbstart.htm}; + it uses bitmaps for equations. +\item[\ProgName{Hevea}] a compiled program that supports \LaTeX{} + only, and uses the font/table technique for equations (indeed its + entire approach is very similar to \ProgName{TtH}). It is written + in Objective \acro{CAML} by Luc Maranget. \ProgName{Hevea} isn't + archived on \acro{CTAN}; details (including download points) are + available via \URL{http://pauillac.inria.fr/~maranget/hevea/} +\end{description} +An interesting set of samples, including conversion of the same text +by the four free programs listed above, is available at +\URL{http://www.mayer.dial.pipex.com/samples/example.htm}; a linked +page gives lists of pros and cons, by way of comparison. + +The World Wide Web Consortium maintains a list of ``filters'' to +\acro{HTML}, with sections on \AllTeX{} and \BibTeX{}~--- see +\URL{http://www.w3.org/Tools/Word_proc_filters.html} +\begin{ctanrefs} +\item[latex2html]Browse \CTANref{latex2html} +\item[plasTeX]Browse \CTANref{plastex} +\item[tex4ht]\CTANref{tex4ht} (but see \url{http://tug.org/tex4ht/}) +\item[tth]\CTANref{tth} +\end{ctanrefs} + +\Question[Q-fmtconv]{Other conversions to and from \AllTeX{}} + +\begin{description} +\item[troff]\ProgName{Tr2latex}, assists in the translation of a + \ProgName{troff} document into \LaTeXo{} format. It recognises most + |-ms| and |-man| macros, plus most \ProgName{eqn} and some + \ProgName{tbl} preprocessor commands. Anything fancier needs to be + done by hand. Two style files are provided. There is also a man page + (which converts very well to \LaTeX{}\dots{}). + \ProgName{Tr2latex} is an enhanced version of the earlier + \ProgName{troff-to-latex} (which is no longer available). + +% The \acro{DECUS} \TeX{} distribution (see +% \Qref[question]{sources of software}{Q-archives}) +% also contains a program which converts \ProgName{troff} to \TeX{}. + +%\item[Scribe] Mark James (\Email{jamesm@dialogic.com}) has a copy of +% \ProgName{scribe2latex} he has been unable to test but which he will +% let anyone interested have. The program was written by Van Jacobson +% of Lawrence Berkeley Laboratory.% +% \checked{RF}{1994/11/18} + +\item[WordPerfect] \ProgName{wp2latex} is actively maintained, and is + available either for \MSDOS{} or for Unix systems. +\item[\acro{RTF}] \ProgName{Rtf2tex}, by Robert Lupton, is for + converting Microsoft's Rich Text Format to \TeX{}. There is also a + converter to \LaTeX{} by Erwin Wechtl, called \ProgName{rtf2latex}. + The latest converter, by Ujwal Sathyam and Scott Prahl, is + \ProgName{rtf2latex2e} which seems rather good, though development + of it seems to have stalled. + + Translation \emph{to} \acro{RTF} may be done (for a somewhat + constrained set of \LaTeX{} documents) by \TeX{}2\acro{RTF}, which + can produce ordinary \acro{RTF}, Windows Help \acro{RTF} (as well as + \acro{HTML}, \Qref{conversion to HTML}{Q-LaTeX2HTML}). + \TeX{}2\acro{RTF} is supported on various Unix platforms and under + Windows~3.1 +\item[Microsoft Word] A rudimentary (free) program for converting + \acro{MS-W}ord to \LaTeX{} is \ProgName{wd2latex}, which runs on \MSDOS{}; + it probably processes the output of an archaic version of + \acro{MS-W}ord (the program itself was archived in 1991). + + For conversion in the other direction, the current preferred + free-software method is a two-stage process: + \begin{itemize} + \item Convert \latex{} to \ProgName{OpenOffice} format, using the + \ProgName{tex4ht} command \ProgName{oolatex}; + \item open the result in \ProgName{OpenOffice} and `save as' a + \acro{MS-W}ord document. + \end{itemize} + (Note that \ProgName{OpenOffice} itself is \emph{not} on + \acro{CTAN}; see \url{http://www.openoffice.org/}, though most + \ProgName{linux} systems offer it as a ready-to-install bundle.) + + \ProgName{tex4ht} can also generate OpenOffice \acro{ODT} + format, which may be used as an intermediate to producing Word + format files. + + \ProgName{Word2}\emph{\TeX{}} and \emph{\TeX{}}\ProgName{2Word} are + shareware translators from % beware line break + \href{http://www.chikrii.com/}{Chikrii Softlab}; positive users' + reports have been noted (but not recently). + + If cost is a constraint, the best bet is probably to use an + intermediate format such as \acro{RTF} or \acro{HTML}. + \ProgName{Word} outputs and reads both, so in principle this route + may be useful. + + You can also use \acro{PDF} as an intermediate format: Acrobat Reader + for Windows (version 5.0 and later) will output rather feeble + \acro{RTF} that \ProgName{Word} can read. +\item[Excel] \ProgName{Excel2Latex} converts an \ProgName{Excel} file + into a \LaTeX{} \environment{tabular} environment; it comes as a + \extension{xls} file which defines some \ProgName{Excel} macros to produce + output in a new format. +\item[runoff] Peter Vanroose's \ProgName{rnototex} + conversion program is written in \acro{VMS} Pascal. + The sources are distributed with a \acro{VAX} executable. +\item[refer/tib] There are a few programs for converting bibliographic + data between \BibTeX{} and \ProgName{refer}/\ProgName{tib} formats. + The collection includes a shell script converter from \BibTeX{} to + \ProgName{refer} format as well. The collection + is not maintained. +\item[\acro{PC}-Write]\ProgName{pcwritex.arc} is a + print driver for \acro{PC}-Write that ``prints'' a \acro{PC}-Write + V2.71 document to a \TeX{}-compatible disk file. It was written by Peter + Flynn at University College, Cork, Republic of Ireland. +\end{description} + +% beware line breaks +\href{http://www.tug.org/utilities/texconv/index.html}{Wilfried Hennings' \acro{FAQ}}, +which deals specifically with conversions between \TeX{}-based formats +and word processor formats, offers much detail as well as tables that +allow quick comparison of features. + +A group at Ohio State University (\acro{USA}) is working on +a common document format based on \acro{SGML}, with the ambition that any +format could be +translated to or from this one. \ProgName{FrameMaker} provides +``import filters'' to aid translation from alien formats +(presumably including \TeX{}) to \ProgName{FrameMaker}'s own. +\begin{ctanrefs} +\item[excel2latex]\CTANref{excel2latex} +\item[pcwritex.arc]\CTANref{pcwritex} +\item[refer and tib tools]\CTANref{refer-tools} +\item[rnototex]\CTANref{rnototex} +\item[rtf2latex]\CTANref{rtf2latex} +\item[rtf2latex2e]\CTANref{rtf2latex2e} +\item[rtf2tex]\CTANref{rtf2tex} +\item[tex2rtf]\CTANref{tex2rtf} +\item[tex4ht]\CTANref{tex4ht} (but see \url{http://tug.org/tex4ht/}) +\item[tr2latex]\CTANref{tr2latex} +\item[wd2latex]\CTANref{wd2latex} +\item[wp2latex]\CTANref{wp2latex} +\item[\nothtml{\rmfamily}Word processor \acro{FAQ} (source)]% + \CTANref{texcnvfaq} +\end{ctanrefs} + +\Question[Q-readML]{Using \TeX{} to read \acro{SGML} or \acro{XML} directly} + +\Qref*{\context{} (mark \acro{IV})}{Q-context} can process some +\acro{*ML}, to produce typeset output directly. Details of what can +(and can not) be done, are discussed in % ! line break +\href{http://wiki.contextgarden.net/XML}{The \context{} \acro{WIKI}}. +\context{} is probably the system of choice for \alltex{} users who +also need to work in \acro{XML} (and friends). (Note that \context{} +mark~\acro{IV} requires \Qref*{\luatex{}}{Q-luatex}, and should +therefore be regarded as experimental, though many people \emph{do} +use it successfully). + +Older systems also manage, using no more than \alltex{} macro +programming, to process \acro{XML} and the like. David Carlisle's +\Package{xmltex} is the prime example; it offers a solution +for typesetting \acro{XML} files, and is still in active (though not +very widespread) use. + +One use of a \TeX{} that can typeset \acro{XML} files is as a backend +processor for \acro{XSL} formatting objects, serialized as \acro{XML}. +Sebastian Rahtz's Passive\TeX{} uses \Package{xmltex} to +achieve this end. + +However, modern usage would proceed via \acro{XSL} or \acro{XSLT}2 to +produce a formattable version. +\begin{ctanrefs} +\item[Context]\CTANref{context} +\item[xmltex]\CTANref{xmltex} +\item[passivetex]\CTANref{passivetex} +\end{ctanrefs} +\LastEdit{2013-04-11} + +\Question[Q-recovertex]{Retrieving \AllTeX{} from \acro{DVI}, etc.} + +The job just can't be done automatically: \acro{DVI}, \PS{} and +\acro{PDF} are ``final'' formats, supposedly not susceptible to +further editing~--- information about where things came from has been +discarded. So if you've lost your \AllTeX{} source (or never +had the source of a document you need to work on) you've a serious job +on your hands. In many circumstances, the best strategy is to retype +the whole document, but this strategy is to be tempered by +consideration of the size of the document and the potential typists' +skills. + +If automatic assistance is necessary, it's unlikely that any more than +text retrieval is going to be possible; the \AllTeX{} markup that +creates the typographic effects of the document needs to be recreated +by editing. + +If the file you have is in \acro{DVI} format, many of the techniques +for \Qref*{converting \AllTeX{} to \acro{ASCII}}{Q-toascii} are +applicable. Consider \ProgName{dvi2tty}, \ProgName{crudetype} and +\ProgName{catdvi}. Remember that there are likely to be problems +finding included material (such as included \PS{} figures, that +don't appear in the \acro{DVI} file itself), and mathematics is +unlikely to convert easily. + +To retrieve text from \PS{} files, the +\ProgName{ps2ascii} tool (part of the +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}} +distribution) is available. One could try applying this tool to +\PS{} derived from an \acro{PDF} file using \ProgName{pdf2ps} (also +from the \href{http://www.ghostscript.com/}{\ProgName{ghostscript}} +distribution), or \ProgName{Acrobat} +\ProgName{Reader} itself; an alternative is \ProgName{pdftotext}, +which is distributed with \ProgName{xpdf}. + +Another avenue available to those with a \acro{PDF} file they want to +process is offered by Adobe \ProgName{Acrobat} (version 5 or later): +you can tag the \acro{PDF} file into an estructured document, output +thence to well-formed \acro{XHTML}, and import the results into +Microsoft \ProgName{Word} (2000 or later). From there, one may +convert to \AllTeX{} using one of the techniques discussed in +% beware line break +\wideonly{``}\Qref[question]{converting to and from \AllTeX{}}{Q-fmtconv}\wideonly{''}. + +The result will typically (at best) be poorly marked-up. Problems may +also arise from the oddity of typical \TeX{} font encodings (notably +those of the maths fonts), which \ProgName{Acrobat} doesn't know how +to map to its standard Unicode representation. +\begin{ctanrefs} +\item[catdvi]\CTANref{catdvi} +\item[crudetype]\CTANref{crudetype} +\item[dvi2tty]\CTANref{dvi2tty} +\item[xpdf]Browse \CTANref{xpdf} +\end{ctanrefs} +\LastEdit{2013-04-16} + +\Question[Q-LaTeXtoPlain]{Translating \LaTeX{} to \plaintex{}} + +Unfortunately, no ``general'', simple, automatic process is likely to +succeed at this task. See % ! line break +``\Qref*{How does \LaTeX{} relate to \plaintex{}}{Q-LaTeXandPlain}'' +for further details. + +Obviously, trivial documents will translate in a trivial way. +Documents that use even relatively simple things, such as labels and +references, are likely to cause trouble (\plaintex{} doesn't support +labels). While graphics are in principle covered, by the \plaintex{} + +Translating a document designed to work with \LaTeX{} into one +that will work with \plaintex{} is likely to amount to carefully +including (or otherwise re-implementing) all those parts of \LaTeX{}, +beyond the provisions of \plaintex{}, which the document uses. + +Some of this work has (in a sense) been done, in the port of the +\LaTeX{} graphics package to \plaintex{}. However, while +\Package{graphics} is available, other complicated packages (notably +\Package{hyperref}) are not. The aspiring translator may find the +\Qref*{\Eplain{}}{Q-eplain} system a useful source of code. (In fact, +a light-weight system such as \Eplain{} might reasonably be adopted as +an alternative target of translation, though it undoubtedly gives the +user more than the ``bare minimum'' that \plaintex{} is designed to +offer.) +\begin{ctanrefs} +\item[\nothtml{\begingroup\rmfamily}The\nothtml{\endgroup} eplain \nothtml{\rmfamily}system]% + \CTANref{eplain} +\item[\nothtml{\begingroup\rmfamily'}\plaintex{}\nothtml{'\endgroup} graphics]% + \CTANref{graphics-plain} +\end{ctanrefs} +\LastEdit{2011-05-30} diff --git a/help/uk-tex-faq/faq-fonts.tex b/help/uk-tex-faq/faq-fonts.tex new file mode 100644 index 0000000000..c60bce4f54 --- /dev/null +++ b/help/uk-tex-faq/faq-fonts.tex @@ -0,0 +1,1316 @@ +% $Id: faq-fonts.tex,v 1.21 2014/01/22 17:29:03 rf10 Exp $ + +\section{Fonts} + +\subsection{Adobe Type~1 (``\PS{}'') fonts} + +\Question[Q-usepsfont]{Using Adobe Type 1 fonts with \protect\TeX{}} + +In order to use any font, \TeX{} needs a +\emph{metric} file (\acro{TFM} file). Several sets of metrics for +common Adobe Type 1 fonts are +available from the archives; for mechanisms for generating new ones, +see \Qref[question]{metrics for \PS{} fonts}{Q-metrics}. You +also need the fonts themselves; \PS{} printers come with a set of +fonts built in, but to extend your repertoire you usually +need to buy from one of the many commercial font vendors (see, for +example, \Qref[question]{``choice of fonts''}{Q-psfchoice}). + +If you use \LaTeXe{}, access to your printer's fonts is offered by the +\acro{PSNFSS} package; the \LaTeX{}3 project team declare that +\acro{PSNFSS} is a ``required'' part of a \latex{} distribution, and +bug reports may be submitted via the % ! line break +\Qref*{\LaTeX{} bugs system}{Q-latexbug}. +\acro{PSNFSS} gives you a set of packages for changing the default +roman, sans-serif and typewriter fonts; \emph{e.g}., the +\Package{mathptmx} package will set up \FontName{Times} +\FontName{Roman} as the main text font (and introduces mechanisms to +typeset mathematics using \FontName{Times} and various more-or-less +matching fonts), while package \Package{avant} changes the sans-serif +family to \FontName{AvantGarde}, and \Package{courier} changes the +typewriter font to \FontName{Courier}. To go with these +packages, you need the font metric files +and font description (\File{.fd}) files for each font family you +want to use. For convenience, +metrics for the `common 35' \PS{} fonts found in most \PS{} printers +are provided with \acro{PSNFSS}, packaged as the ``Laserwriter set''. + +For older versions of \LaTeX{} there are various schemes, of which the +simplest to use is probably the \acro{PS}\LaTeX{} macros distributed with +\ProgName{dvips}. + +For \plaintex{}, you load whatever fonts you like; if the encoding of +the fonts is not the same as Computer Modern it will be up to you to +redefine various macros and accents, or you can use the font +re-encoding mechanisms available in many drivers and in +\ProgName{ps2pk} and \ProgName{afm2tfm}. + +Some common problems encountered are discussed elsewhere +(see \Qref[question]{problems with \acro{PS} fonts}{Q-psfontprob}). +\begin{ctanrefs} +\item[Metrics for the `Laserwriter' set of 35 fonts]\CTANref{lw35nfss-zip} +\item[psnfss]\CTANref{psnfss} +\end{ctanrefs} + +\Question[Q-PSpreview]{Previewing files using Type 1 fonts} + +Originally, free \TeX{} previewers were only capable of displaying +bitmap (\acro{PK}) fonts, but free Type~1 font rendering software has +been available for some time, and many previewers now use such +facilities. + +The alternative, for previewers, is automatic generation of the +requisite \acro{PK} files (using \ProgName{gsftopk}, or similar, +behind the scenes). + +In the unlikely event that your previewer isn't capable of either, you +have a couple options: +\begin{itemize} +\item Convert the \acro{DVI} file to \PS{} and use a + \PS{} previewer. Some systems offer this capability as + standard, but most people will need to use a separate previewer such + as \href{http://www.ghostscript.com/}{\ProgName{ghostscript}} or + \ProgName{ghostscript}-based viewers + such as (free) \ProgName{gv} or (shareware) + \href{http://www.ghostgum.com.au/}{\ProgName{gsview}}. +% \item Under Windows on a \acro{PC}, or on a Macintosh, let Adobe Type Manager +% display the fonts (textures, on the Macintosh, works like this). +% %% , and under +% %% Windows you can use \YandY{}'s \ProgName{dviwindo} for bitmap-free +% %% previewing. +% \begin{narrowversion} % really hyper +% (See \Qref[question]{}{Q-commercial} for details of these +% suppliers.) +% \end{narrowversion} +% %\typeout{after narrowversion, before wideversion} +% \begin{wideversion} +% (See \Qref{commercial suppliers}{Q-commercial} for details.) +% \end{wideversion} +% %\typeout{after wideversion} +\item If you have the \PS{} fonts in Type~1 format, use + \ProgName{ps2pk} or \ProgName{gsftopk} (designed for use with the + \href{http://www.ghostscript.com/}{\ProgName{ghostscript}} fonts) to + make \acro{PK} bitmap fonts which + your previewer will understand (a process similar to the way some + browsers fo the job `automatically') This can produce adequate results, + also suitable for printing with non-\PS{} devices. (Note: if you + purchased the fonts, it is advisable to check that their licence + permits you to convert them, for private use, in this way.) +\end{itemize} +\begin{ctanrefs} +\item[gsftopk]\CTANref{gsftopk} +\item[gv]Browse \CTANref{gv} +\item[ps2pk]\CTANref{ps2pk} +\end{ctanrefs} + +\Question[Q-metrics]{\TeX{} font metric files for Type 1 fonts} + +Reputable font vendors such as Adobe supply metric files for each +font, in \acro{AFM} (Adobe Font Metric) form; these can be converted +to \acro{TFM} (\TeX{} Font Metric) form. Most modern distributions have +prebuilt metrics which will be more than enough for many people; but you may +need to do the conversion yourself if you have special needs or +acquire a new font. One important question is the \emph{encoding} of +(Latin character) fonts; while we all more or less agree about the +position of about 96 characters in fonts (the basic \acro{ASCII} set), the +rest of the (typically) 256 vary. The most obvious problems are with +floating accents and special characters such as the `pounds sterling' +sign. There are three ways of dealing with this: either you change the +\TeX{} macros which reference the characters (not much fun, and +error-prone); or you change the encoding of the font (easier than you +might think); or you use \Qref*{virtual fonts}{Q-virtualfonts} to +\emph{pretend} to \TeX{} that the encoding is the same as it is used to. +\LaTeXe{} has facilities for dealing with fonts in different +encodings; read the \Qref*{\emph{\LaTeX{} Companion}}{Q-latex-books} for +more details. In practice, if you do much non-English (but Latin +script) typesetting, you are strongly recommended to use the +\Package{fontenc} package with option `\pkgoption{T1}' to select +\Qref*{`Cork'}{Q-ECfonts} encoding. + +An alternative favoured by some is \YandY{}'s ``private'' \acro{LY}1 encoding, +which is designed to sit well with ``Adobe standard'' encoded fonts. +Basic macro support of \acro{LY}1 is available: note that the +``relation with Adobe's encoding'' means that the \acro{LY}1 user +needs no virtual fonts. + +Alan Jeffrey's \ProgName{fontinst} package is an \acro{AFM} to +\acro{TFM} converter written in \TeX{}; it is used to generate the +files used by \LaTeXe{}'s \acro{PSNFSS} package to support use of +\PS{} fonts. It is a sophisticated package, not for the faint-hearted, +but is powerful enough to cope with most needs. Much of its power +relies on the use of \Qref*{virtual fonts}{Q-virtualfonts}. + +For slightly simpler problems, Rokicki's \ProgName{afm2tfm}, +distributed with \ProgName{dvips}, is fast and +efficient; note that the metrics and styles that come with +\ProgName{dvips} are \emph{not} currently \LaTeXe{} compatible. + +For the Macintosh (classic), there is a program called +\ProgName{EdMetrics} which does the job (and more). +\ProgName{EdMetrics} comes with the (commercial) +\Qref*{Textures}{Q-commercial} distribution, but is itself free +software, and is available on \acro{CTAN}. +%% \par +%% Windows users can buy \Qref*{\YandY{}'s}{Q-commercial} +%% Font Manipulation Tools package which includes a powerful +%% \ProgName{afmtotfm} program among many other goodies. +\begin{ctanrefs} +\item[dvips]\CTANref{dvips} +\item[EdMetrics]\CTANref{edmetrics} +\item[fontinst]\CTANref{fontinst} +\item[LY1 support]\CTANref{ly1} +\end{ctanrefs} +\LastEdit{2011-06-01} + +\Question[Q-psfontprob]{Deploying Type 1 fonts} + +For the \LaTeX{} user trying to use the +\Qref*{\acro{PSNFSS}}{Q-usepsfont} package, three questions may arise. + +First, you have to declare to the \acro{DVI} driver that you are using +\PS{} fonts; in the case of \ProgName{dvips}, this means adding +lines to the \File{psfonts.map} file, so that \ProgName{dvips} will know +where the proper fonts are, and won't try to find \acro{PK} +files. If the font isn't built into the printer, you have to acquire +it (which may mean that you need to purchase the font files). + +Second, your previewer must know what to do with the fonts: see +\Qref[question]{previewing type 1 fonts}{Q-PSpreview}. + +Third, the stretch and shrink between words is a function of the +font metric; it is not specified in \acro{AFM} files, so different converters +choose different values. The \PS{} metrics that come with \acro{PSNFSS} +used to produce quite tight setting, but they were revised in mid 1995 +to produce a compromise between American and European practice. +Sophisticated users may not find even the new the values to their taste, and +want to override them. Even the casual user may find more +hyphenation or overfull boxes than Computer Modern produces; but \acro{CM} +is extremely generous. + +\Question[Q-psfchoice]{Choice of Type~1 fonts for typesetting Maths} + +If you are interested in text alone, you can in principle use any of +the huge numbers of text fonts in Adobe Type~1, TrueType or OpenType +formats. The constraint is, of course, that your previewer and +printer driver should support such fonts (\TeX{} itself \emph{only} +cares about metrics, not the actual character programs). + +If you also need mathematics, then your choice is more limited, in +particular by the +demands that \TeX{} makes of maths fonts (for details, see the papers +by +\begin{wideversion} +% !! line break !! + \href{http://tug.org/TUGboat/Articles/tb14-3/tb40horn.pdf}{B.K.P. Horn in \TUGboat{} 14(3)}, + or by % ! line break + \href{http://tug.org/TUGboat/Articles/tb19-2/tb59bouc.pdf}{Thierry Bouche in \TUGboat{} 19(2)}). +\end{wideversion} +\begin{narrowversion} + B.K.P. Horn in \TUGboat{} 14(3) or by Thierry Bouche in \TUGboat{} + 19(2), available as + \URL{http://tug.org/TUGboat/Articles/tb14-3/tb40horn.pdf} or + \URL{http://tug.org/TUGboat/Articles/tb19-2/tb59bouc.pdf}, respectively). +\end{narrowversion} +There are several options available, which are +based on Knuth's original designs. Others complement other +commercial and free text font designs; one set (MicroPress's `informal math') +stands alone. + +Users should also consider the possibilities of typesetting +\Qref*{maths using OpenType fonts}{Q-otf-maths}. + +``Free'' font families that will support \TeX{} mathematics include: +\begin{booklist} +\item[Computer Modern](75 fonts~--- optical scaling) Donald E. Knuth\\ + The \acro{CM} fonts were originally designed in \MF{}, but are also + now available in scalable outline form. There are commercial as + well as public domain versions, and there are both Adobe Type~1 and + TrueType versions. A set of outline versions of the fonts was + developed as a commercial venture by \YandY{} and Blue Sky Research; + they have since assigned the copyright to the \acro{AMS}, and the + fonts are now freely available from \acro{CTAN}. Their quality is + such that they have become the \emph{de facto} standard for Type~1 + versions of the fonts. + +\item[\acro{AMS} fonts](52 fonts, optical scaling) The \acro{AMS}\\ + This set of fonts offers adjuncts to the \acro{CM} set, including + two sets of symbol fonts (\FontName{msam} and \FontName{msbm}) and + Euler text fonts. + These are not a self-standing family, but merit discussion here (not + least because several other families mimic the symbol fonts). + Freely-available Type~1 versions of the fonts are available on + \acro{CTAN}. The \Package{eulervm} package permits use + of the Euler maths alphabet in conjunction with text fonts that do + not provide maths alphabets of their own (for instance, Adobe + Palatino or Minion). + +\item[Mathpazo version 1.003](5 fonts) Diego Puga\\ + The Pazo Math fonts are a family of type~1 fonts suitable for + typesetting maths in combination with the Palatino family of text + fonts. Four of the five fonts of the distribution are maths + alphabets, in upright and italic shapes, medium and bold weights; + the fifth font contains a small selection of ``blackboard bold'' + characters (chosen for their mathematical significance). Support + under \LaTeXe{} is available in + \Qref*{\acro{PSNFSS}}{Q-usepsfont}; the fonts are + licensed under the \acro{GPL}, with legalese permitting the use of + the fonts in published documents. + +\item[Fourier/Utopia](15 fonts) Michel Bovani\\ + \FontName{Fourier} is a family built on Adobe \FontName{Utopia} + (which has been released for usage free of charge by Adobe). The + fonts provide the basic Computer Modern set of mathematical symbols, + and add many of the \acro{AMS} mathematical symbols (though you are + expected to use some from the \acro{AMS} fonts themselves). There + are also several other mathematical and decorative symbols. The + fonts come with a \Package{fourier} package for use with \LaTeX{}; + text support of \acro{OT}1 encoding is not provided~--- you are + expected to use \acro{T}1. + + For a sample, see \url{http://www.tug.dk/FontCatalogue/utopia/} + +\item[Fourier/New Century Schoolbook]Michael Zedler\\ + \FontName{Fouriernc} is a configuration using the Fourier fonts in + the context of New Century Schoolbook text fonts. + + For a sample, see \url{http://www.tug.dk/FontCatalogue/newcent/} + +\item[KP-fonts]The Johannes Kepler project\\ + The \FontName{kp-fonts} family provides a comprehensive set of text + and maths fonts. The set includes replacement fixed-width and sans + fonts (though some reports have suggested that these are less + successful, and their use may be suppressed when loading the fonts' + \Package{kpfonts} \LaTeX{} support package). + + For an example, see \url{http://www.tug.dk/FontCatalogue/kpserif/} + +\item[MathDesign](3 free families, 3 commercial-based + families\dots{}so far) Paul Pichaureau\\ + This set so far offers mathematics fonts to match the free fonts + Adobe Utopia, URW Garamond and Bitstream Charter (the text versions + of all of which are separately available, on \acro{CTAN}, in Type~1 + format), and Adobe Garamond Pro, Adobe UtopiaStd and ITC Charter + (which are commercial fonts, all available for purchase on the web). + There has been a little comment on these fonts, but none + from actual users posted to the public forums. Users, particularly + those who are willing to discuss their experiences, would obviously + be welcome. Browse the \acro{CTAN} directory and see which you + want: there is a wealth of documentation and examples. + + For samples of the free variants, see + \url{http://www.tug.dk/FontCatalogue/charter/} for URW Charter, + \url{http://www.tug.dk/FontCatalogue/garamond/} for URW Garamond and + \url{http://www.tug.dk/FontCatalogue/utopia-md/} for Adobe Utopia. + +\item[Belleek](3 fonts) Richard Kinch\\ + Belleek is the upshot of Kinch's thoughts on how \MF{} might be used + in the future: they were published simultaneously as \MF{} source, + as Type~1 fonts, and as TrueType fonts. The fonts act as ``drop-in'' + replacements for the basic MathTime set (as an example of ``what might + be done''). + + The paper outlining Kinch's thoughts, proceeding from considerations + of the `intellectual' superiority of \MF{} to evaluations of why its + adoption is so limited and what might be done about the problem, is + to be found at \URL{http://truetex.com/belleek.pdf} + +\item[MTPro2 Lite]Pubish or Perish (Michael Spivak)\\ + A (functional) subset of the MathTime Pro 2 font set, that is made + available, free, for general use. While it does not offer the full + power of the commercial product (see below), it is nevertheless a + desirable font set. + +\item[Mathptmx]Alan Jeffrey, Walter Schmidt and others.\\ + This set contains maths italic, symbol, extension, and roman virtual + fonts, built from Adobe Times, Symbol, Zapf Chancery, and the + Computer Modern fonts. The resulting mixture is not entirely + acceptable, but can pass in many circumstances. The real advantage + is that the mathptm fonts are (effectively) free, and the resulting + \PS{} files can be freely exchanged. Support under \LaTeXe{} + is available in \Qref*{\acro{PSNFSS}}{Q-usepsfont}. + + For a sample, see \url{http://www.tug.dk/FontCatalogue/times/} + +\item[Computer Modern Bright]Free scalable outline versions of these + fonts do exist; they are covered below together with their + commercial parallels. + +\item[URW Classico](4 fonts) LaTeX support by Bob Tennent\\ + These are clones of Zapf's Optima available from CTAN (for + non-commercial use only). Mathematics support can be provided by + using packages \Package{eulervm} or \Package{sansmath}. As a + sans-serif font family, Optima is especially suitable for + presentations. +\end{booklist} +The excellent \emph{font catalogue} keeps an % ! line break +\href{http://www.tug.dk/FontCatalogue/mathfonts.html}{up-to-date list} +which describes the fonts by giving names and short examples, only. +(At the time of writing~--- June 2008~--- the list has several that +are only scheduled for inclusion here. + +Another useful document is Stephen Hartke's ``Free maths font +survey'', which is available on \acro{CTAN} in both \acro{PDF} and +\acro{HTML} formats. The survey covers most of the fonts mentioned in +the font catalogue, but also mentions some (such as \Package{Belleek} +that the catalogue omits. + +Fonts capable of setting \TeX{} mathematics, that are available +commercially, include: +\begin{booklist} +\item[BA Math](13 fonts) MicroPress Inc.\\ + BA Math is a family of serif fonts, inspired by the elegant + and graphically perfect font design of John Baskerville. BA + Math comprises the fonts necessary for mathematical typesetting + (maths italic, math symbols and extensions) in normal and bold + weights. The family also includes all \acro{OT}1 and \acro{T}1 + encoded text fonts of various shapes, as well as fonts with most + useful glyphs of the \acro{TS}1 encoding. Macros for using the + fonts with \plaintex{}, \LaTeXo{} and current \LaTeX{} are + provided. + + \nothtml{\bgroup\raggedwithindent} + For further details (including samples) see\\ + \URL{http://www.micropress-inc.com/fonts/bamath/bamain.htm} + \nothtml{\par\egroup} +\item[CH Math](15 fonts) MicroPress Inc.\\ + CH Math is a family of slab serif fonts, designed as a maths + companion for Bitstream Charter. (The distribution includes + four free Bitstream text fonts, in addition to the 15 hand-hinted + MicroPress fonts.) + \nothtml{\bgroup\raggedwithindent} + For further details (including samples) see\\ + \URL{http://www.micropress-inc.com/fonts/chmath/chmain.htm} + \nothtml{\par\egroup} + +\item[Computer Modern Bright](62 fonts~--- optical scaling) Walter + Schmidt\\ + \acro{CM} Bright is a family of sans serif fonts, based on Knuth's + \acro{CM} fonts. It comprises the fonts necessary for mathematical + typesetting, including \acro{AMS} symbols, as well as text and text + symbol fonts of various shapes. The collection comes with its own + set of files for use with \LaTeX{}. The \acro{CM} Bright fonts are + supplied in Type~1 format by MicroPress, Inc. The + \Package{hfbright} bundle offers free Type~1 fonts for text using + the \acro{OT}1 encoding~--- the \Package{cm-super} fonts provide the + fonts in \acro{T}1 text encoding but don't support \acro{CM} bright + mathematics. + + \nothtml{\bgroup\raggedwithindent} + For further details of Micropress' offering (including samples) see\\ + \URL{http://www.micropress-inc.com/fonts/brmath/brmain.htm} + \nothtml{\par\egroup} + +\item[Concrete Math](25 fonts~--- optical scaling) Ulrik Vieth\\ + The Concrete Math font set was derived from the Concrete Roman + typefaces designed by Knuth. The set provides a collection of math + italics, math symbol, and math extension fonts, and fonts of + \acro{AMS} symbols that fit with the Concrete set, so that Concrete + may be used as a complete replacement for Computer Modern. Since + Concrete is considerably darker than \acro{CM}, the family may + particularly attractive for use in low-resolution printing or in + applications such as posters or transparencies. Concrete Math + fonts, as well as Concrete Roman fonts, are supplied in Type 1 + format by MicroPress, Inc. + + \nothtml{\bgroup\raggedwithindent} + For further information (including samples) see\\ + \URL{http://www.micropress-inc.com/fonts/ccmath/ccmain.htm} + \nothtml{\par\egroup} + +\item[HV Math](14 fonts) MicroPress Inc.\\ + HV Math is a family of sans serif fonts, inspired by the + Helvetica (\acro{TM}) typeface. HV Math comprises the fonts + necessary for mathematical typesetting (maths italic, maths symbols + and extensions) in normal and bold weights. The family also + includes all \acro{OT}1 and \acro{T}1 encoded text fonts of various + shapes, as well as fonts with most useful glyphs of the \acro{TS}1 + encoding. Macros for using the fonts with \plaintex{}, \LaTeXo{} + and current \LaTeX{} are provided. Bitmapped copies of the fonts + are available free, on \acro{CTAN}. + + \nothtml{\bgroup\raggedwithindent} + For further details (and samples) see\\ + \URL{http://www.micropress-inc.com/fonts/hvmath/hvmain.htm} + \nothtml{\par\egroup} + +\item[Informal Math](7 outline fonts) MicroPress Inc.\\ + Informal Math is a family of fanciful fonts loosely based on the + Adobe's Tekton (\acro{TM}) family, fonts which imitate handwritten + text. Informal Math comprises the fonts necessary for + mathematical typesetting (maths italic, maths symbols and extensions) + in normal weight, as well as \acro{OT}1 encoded text fonts in + upright and oblique shapes. Macros for using the fonts with + \plaintex{}, \LaTeXo{} and current \LaTeX{} are provided. + + \nothtml{\bgroup\raggedwithindent} + For further details (including samples) see\\ + \URL{http://www.micropress-inc.com/fonts/ifmath/ifmain.htm} + \nothtml{\par\egroup} + +\item[Lucida Bright \emph{with} Lucida New Math](25 fonts) Chuck Bigelow and + Kris Holmes\\ + Lucida is a family of related fonts including seriffed, sans serif, + sans serif fixed width, calligraphic, blackletter, fax, Kris Holmes' + connected handwriting font, \emph{etc}; they're not as `spindly' as + Computer Modern, with a large x-height, and include a larger set of + maths symbols, operators, relations and delimiters than \acro{CM} + (over 800 instead of 384: among others, it also includes the + \acro{AMS} \FontName{msam} and \FontName{msbm} symbol sets). `Lucida + Bright Expert' + (14 fonts) adds seriffed fixed width, another handwriting font, + smallcaps, bold maths, upright `maths italic', \emph{etc}., to the + set. Support under \LaTeX{} is available under the auspices of the + \acro{PSNFSS}, and pre-built metrics are also provided. + + \nothtml{\bgroup\raggedwithindent} + \acro{TUG} has the right to distribute these fonts; the web site +\begin{narrowversion} + \href{http://tug.org/lucida/}{``Lucida and TUG''} +\end{narrowversion} +\begin{wideversion} + ``\href{http://tug.org/lucida/}{Lucida and TUG}'' +\end{wideversion} + has details. + \nothtml{\par\egroup} + +\item[Adobe Lucida, LucidaSans \emph{and} LucidaMath](12 fonts)\\ + Lucida and LucidaMath are generally considered to be a bit heavy. + The three maths fonts contain only the glyphs in the \acro{CM} maths + italic, symbol, and extension fonts. Support for using LucidaMath + with \TeX{} is not very good; you will need to do some work + reencoding fonts \emph{etc}. (In some sense this set is the + ancestor of the LucidaBright plus LucidaNewMath font set, which are + not currently available.) + +\item[MathTime Pro2]Publish or Perish (Michael Spivak)\\ + This latest instance of the MathTime family covers all the weights + (medium, bold and heavy) and symbols of previous versions of + MathTime. In addition it has a much extended range of symbols, and + many typographic improvements that make for high-quality documents. + The fonts are supported under both \plaintex{} and \LaTeXe{}, and + are exclusively available for purchase from + \Qref*{Personal \TeX{} Inc}{Q-commercial}. + \par{} + \nothtml{\bgroup\raggedwithindent} + For further details and samples and fliers, see + \URL{http://www.pctex.com/mtpro2.html} + \nothtml{\par\egroup} + +\item[Minion Pro and MnSymbol]Adobe, \LaTeX{} support and packaging by + Achim Blumensath \emph{et al}.\\ + \FontName{Minion Pro} derives from the widely-available commercial + OpenType font of the same name by Adobe; scripts are provided to + convert relevant parts of it to Adobe Type~1 format. The + \Package{MinionPro} package will set up text and maths support using + \FontName{Minion Pro}, but a separate (free) font set + \FontName{MnSymbol} greatly extends the symbol coverage. + +\item[PA Math] PA~Math is a family of serif fonts + loosely based on the Palatino (\acro{TM}) typeface. PA~Math + comprises the fonts necessary for mathematical typesetting (maths + italics, maths, calligraphic and oldstyle symbols, and extensions) + in normal and bold weights. The family also includes all \acro{OT}1, + \acro{T}1 encoded text fonts of various shapes, as well as fonts + with the most useful glyphs of the \acro{TS}1 encoding. Macros for + using the fonts with \plaintex{}, \LaTeXo{} and current \LaTeX{} + are provided. + + \nothtml{\bgroup\raggedwithindent} + For further details (and samples) see\\ + \URL{http://www.micropress-inc.com/fonts/pamath/pamain.htm} + \nothtml{\par\egroup} + +\item[TM Math](14 fonts) MicroPress Inc.\\ + TM Math is a family of serif fonts, inspired by the Times + (\acro{TM}) typeface. TM Math comprises the fonts necessary for + mathematical typesetting (maths italic, maths symbols and extensions) + in normal and bold weights. The family also includes all \acro{OT}1 + and \acro{T}1 encoded text fonts of various shapes, as well as fonts + with most useful glyphs of the \acro{TS}1 encoding. Macros for + using the fonts with \plaintex{}, \LaTeXo{} and current \LaTeX{} + are provided. Bitmapped copies of the fonts are available free, on + \acro{CTAN}. + + \nothtml{\bgroup\raggedwithindent} + For further details (and samples) see\\ + \URL{http://www.micropress-inc.com/fonts/tmmath/tmmain.htm} + \nothtml{\par\egroup} +\end{booklist} +Two other font sets should be mentioned, even though they don't +currently produce satisfactory output~--- their author is no longer +working on them, and several problems have been identified: +\begin{booklist} +\item[Pxfonts set version 1.0](26 fonts) by Young Ryu\\ + The \FontName{pxfonts} set consists of + \begin{itemize} + \item virtual text fonts using \FontName{Adobe} \FontName{Palatino} + (or its \acro{URW} replacement, \FontName{Palladio}) + with modified plus, equal and slash symbols; + \item maths alphabets using \FontName{Palatino} (or \FontName{Palladio}; + \item maths fonts of all symbols in the computer modern maths fonts + (\FontName{cmsy}, \FontName{cmmi}, \FontName{cmex} and the Greek + letters of \FontName{cmr}) + \item maths fonts of all symbols corresponding to the \acro{AMS} + fonts (\FontName{msam} and \FontName{msbm}); + \item additional maths fonts of various symbols. + \end{itemize} + The text fonts are available in \acro{OT}1, \acro{T}1 and \acro{LY}1 + encodings, and \acro{TS} encoded symbols are also available. The + sans serif and monospaced fonts supplied with the \FontName{txfonts} + set (see below) may be used with \FontName{pxfonts}; the + \FontName{txfonts} set should be installed whenever \FontName{pxfonts} + are. \LaTeX{}, \ProgName{dvips} and \PDFTeX{} support files are + included. + + The fonts are not perfect; the widths assigned to the characters in + the \extension{tfm} file are wrong for some glyphs; this can cause + sequences of characters to ``look wrong'', or in some cases even to + overlap; the \FontName{newpx} fonts (noted above) aim to reduce + these problems. + + The fonts are licensed under the \acro{GPL}; use in published + documents is permitted. + +\item[Newpx]by Michael Sharpe from Young Ryu's \ProgName{pxfonts}\\ + This collection is derived from \ProgName{pxfonts}; the maths fonts + metrics have been adjusted so that the output is less cramped than + when \ProgName{pxfonts} is used; the appearance of the output is + much improved. Two packages are provided, \Package{newpxtext} for + using the associated text fonts, and \Package{newpxmath} for + mathematics. + +\item[Txfonts set version 3.1](42 fonts) by Young Ryu\\ + The \FontName{txfonts} set consists of + \begin{itemize} + \item virtual text fonts using \FontName{Adobe} \FontName{Times} (or + the \acro{URW} \FontName{Nimbus Roman No9 L} font that + substitutes for Times, which is distributed as part of the + \acro{URW} ``basic 35'' collection) with + modified plus, equal and slash symbols; + \item matching sets of sans serif and monospace (`typewriter') + fonts (the sans serif set is based on \FontName{Adobe} \FontName{Helvetica}); + \item maths alphabets using Adobe \FontName{Times}, or the URW + equivalent \FontName{NimbusRomanNo9}; + \item maths fonts of all symbols in the computer modern maths fonts + (\FontName{cmsy}, \FontName{cmmi}, \FontName{cmex} and the Greek + letters of \FontName{cmr}) + \item maths fonts of all symbols corresponding to the \acro{AMS} + fonts (\FontName{msam} and \FontName{msbm}); + \item additional maths fonts of various symbols. + \end{itemize} + The text fonts are available in \acro{OT}1, \acro{T}1 and \acro{LY}1 + encodings, and \acro{TS} encoded symbols are also available. + + The fonts are not perfect; the widths assigned to the characters in + the \extension{tfm} file are wrong for some glyphs; this can cause + sequences of characters to ``look wrong'', or in some cases even to + overlap; the \FontName{newtx} fonts (noted above) aim to reduce + these problems. + + The fonts are licensed under the \acro{GPL}; use in published + documents is permitted. +\item[Txfontsb set version 1.00] by Young Ryu and Antonis Tsolomitis\\ + The \ProgName{txfontsb} bundles \ProgName{txfonts}, extended to + provide a Small Caps set, Old-Style numbers and Greek text (from the + GNU Freefont set). +\begin{flatversion} + Documentation + (\URL{http://mirrors.ctan.org/fonts/txfontsb/doc/txfontsb.pdf}) +\end{flatversion} +\begin{hyperversion} + \href{http://mirrors.ctan.org/fonts/txfontsb/doc/txfontsb.pdf}{Documentation} +\end{hyperversion} + is available for this variant, too. + +\item[Newtx]by Michael Sharpe from Young Ryu's \ProgName{txfonts}\\ + This collection is derived from \ProgName{txfonts}; the maths fonts + metrics have been adjusted so that the output is less cramped than + when \ProgName{txfonts} is used; the appearance of the output is + much improved. Two packages are provided, \Package{newtxtext} for + using the associated text fonts, and \Package{newtxmath} for + mathematics. Options are provided to substitute + letters and symbols from the \FontName{Libertine} set, and from the + Garamond extension font \FontName{garamondx} (but note that + \FontName{garamondx}, which is an adaptation of \acro{URW} Garamond, + is not available via \texlive{}). +\end{booklist} +Finally, one must not forget: +\begin{booklist} +\item[Proprietary fonts]Various sources.\\ + Since having a high quality font set in scalable outline form that + works with \TeX{} can give a publisher a real competitive advantage, + there are some publishers that have paid (a lot) to have such font + sets made for them. Unfortunately, these sets are not available on + the open market, despite the likelihood that they're more complete + than those that are. +\end{booklist} +We observe a very limited selection of commercial maths font sets; a +Type~1 maths font has to be explicitly designed for use with \TeX{}, +which is an expensive business, and is of little appeal in other +markets. Furthermore, the \TeX{} market for commercial fonts is +minute by comparison with the huge sales of other font sets. + +Text fonts in Type~1 format are available from many vendors including +Adobe, Monotype and Bitstream. However, be careful with cheap font +``collections''; many of them dodge copyright restrictions by removing +(or crippling) parts of the font programs such as hinting. Such +behaviour is both unethical and bad for the consumer. +The fonts may not render well (or at all, under \acro{ATM}), may not have the +`standard' complement of 228 glyphs, or may not include metric files +(which you need to make \acro{TFM} files). + +\ttype{} was for a long time the ``native'' format for Windows, but +MicroSoft joined the development of the \otype{} specification, and +`modern' windows will work happily with fonts in either format. Some \TeX{} +implementations such as \Qref*{True\TeX{}}{Q-commercial} use TrueType +versions of Computer Modern and Times Maths fonts to render \TeX{} +documents in Windows without the need for additional system software like +\acro{ATM}. (When used on a system running Windows~XP or later, +True\TeX{} can also use Adobe Type~1 fonts.) + +When choosing fonts, your own system environment may not be the only one of +interest. If you will be sending your finished documents to others for +further use, you should consider whether a given font format will introduce +compatibility problems. Publishers may require TrueType exclusively because +their systems are Windows-based, or Type~1 exclusively, because their systems +are based on the early popularity of that format in the publishing industry. +Many service bureaus don't care as long as you present them with a finished +print file (\PS{} or \acro{PDF}) for their output device. +\begin{ctanrefs} +\item[\nothtml{\normalfont}CM family collection]% + Distributed as part of \CTANref{amsfonts} +\item[\nothtml{\normalfont}AMS font collection]% + Distributed as part of \CTANref{amsfonts} +\item[Belleek \nothtml{\normalfont}fonts]% + \CTANref{belleek} +\item[\nothtml{\normalfont} URW Classico fonts]\CTANref{classico} +\item[CM-super \nothtml{\normalfont}collection]\CTANref{cm-super} +\item[eulervm.sty \nothtml{\normalfont}and supporting metrics]% + \CTANref{eulervm} +\item[fourier \nothtml{\normalfont}(including metrics and other support for \nothtml{\itshape}utopia]% + \CTANref{fourier} +\item[fouriernc]\CTANref{fouriernc} +\item[garamondx]\CTANref{garamondx} +\item[hfbright \nothtml{\normalfont}collection]\CTANref{hfbright} +\item[hvmath \nothtml{\normalfont\itshape}(free bitmapped version)]% + \CTANref{hvmath} +\item[kpfonts \nothtml{\normalfont}family]\CTANref{kpfonts} +\item[Libertine \nothtml{\normalfont}family]\CTANref{libertine} +\item[Lucida Bright/Math metrics]\CTANref{lucida} +\item[Lucida PSNFSS support]\CTANref{lucida-psnfss} +\item[MathDesign \nothtml{\normalfont}collection]\CTANref{mathdesign} +\item[\nothtml{\normalfont}Maths Font Survey]\CTANref{mathsurvey.pdf} + (\acro{PDF}) or \CTANref{mathsurvey.html} (\acro{HTML}) +\item[\nothtml{\normalfont}MathTime Pro 2 Lite]\CTANref{mtp2lite} +\item[\nothtml{\normalfont}Minion Pro support]\CTANref{minionpro} +\item[MnSymbol \nothtml{\normalfont}family]\CTANref{mnsymbol} +\item[Newtx \nothtml{\normalfont}fonts]\CTANref{newtx} +\item[NimbusRomanNo9 fonts]distributed in \CTANref{urw-base35} +\item[Palladio fonts]distributed in \CTANref{urw-base35} +\item[pxfonts]\CTANref{pxfonts} +\item[sansmath.sty]\CTANref{sansmath} +\item[tmmath \nothtml{\normalfont\itshape}(free bitmapped version)]% + \CTANref{tmmath} +\item[txfonts]\CTANref{txfonts} +\item[\nothtml{\normalfont}URW ``35 fonts'' collection]\CTANref{urw-base35} +\item[utopia \nothtml{\normalfont}fonts]\CTANref{utopia} +\end{ctanrefs} +\LastEdit{2014-01-22} + +\Question[Q-otf-maths]{Unicode Maths using OpenType fonts} + +The \acro{ISO} standard Universal Coding Scheme (UCS), which is +commonly known as Unicode, was adopted early by the designers of +TrueType (\acro{TTF}) and OpenType (\acro{OTF}) fonts. The +flexibility of the fonts offers hope, for the first time, of a uniform +method for typesetting essentially any language. + +\tex{} users have been eagerly adopting the fonts, for some time, +using \xetex{} (now a rather stable system) and \luatex{} (which is, +at the time of writing, still being developed). + +While \tex{} users were investigating the use of these text fonts, +\acro{ISO} was extending Unicode to provide a means of expressing +mathematics. As this work proceeded, MicroSoft and (separately) a +consortium of publishing companies were developing OpenType maths +fonts. (Microsoft contributed on the development of the concepts, +within the \acro{ISO} process.) MicroSoft's OpenType Maths font, +\FontName{Cambria Math} has been available for purchase for some time. + +The first free OpenType Maths font to appear was % !line break +\FontName{Asana Math}, which was eventually followed by +the publishers' consortium's offer of an interim version +of their font, \FontName{STIX}, which has been +redeveloped to provide a more usable whole, \FontName{XITS}, by a group +of \tex{} users. + +Other fonts are appearing, including % ! line break +\FontName{TeX Gyre Termes Math} (based on Times-like fonts) and +\FontName{Tex Gyre Pagella Math} (based on Palatino-like fonts), +and \FontName{LM Math} extending the OpenType version of the +\FontName{Latin Modern} font family. + +Actually using a unicode maths font is quite a complicated business, +but the \latex{} package \Package{unicode-math} (supported +by the \Package{fontspec} package) does the essential groundwork. +\begin{ctanrefs} +\item[Asana-Math \nothtml{\rmfamily}font]\CTANref{asana-math}[asana-math] +\item[fontspec.sty]\CTANref{fontspec} +\item[lm-math \nothtml{\rmfamily}fonts]\CTANref{lm-math} +\item[STIX \nothtml{\rmfamily}fonts]\CTANref{stix} +\item[unicode-math.sty]\CTANref{unicode-math} +\item[tex-gyre-math-pagella \nothtml{\rmfamily}font]distributed as + part of \CTANref{tex-gyre-math}[tex-gyre-math-pagella] +\item[tex-gyre-math-termes \nothtml{\rmfamily}font]distributed as part + of \CTANref{tex-gyre-math}[tex-gyre-math-termes] +\item[XITS \nothtml{\rmfamily}fonts]\CTANref{xits} +\end{ctanrefs} +\LastEdit*{2014-01-22} +% more to come... + +\Question[Q-charshift]{Weird characters in \ProgName{dvips} output} +\keywords{fi ligature pound pounds sterling elephants} + +You've innocently generated output, using \ProgName{dvips}, and there +are weird transpositions in it: for example, the \texttt{fi} ligature has +appeared as a \textsterling{} symbol. +This is an unwanted side-effect of the precautions +outlined in \Qref*{generating \PS{} for PDF}{Q-dvips-pdf}. +The \texttt{-G1} switch discussed in that question is appropriate for +Knuth's text fonts, but doesn't work with text fonts that don't follow +Knuth's patterns (such as fonts supplied by Adobe). + +If the problem arises, suppress the \texttt{-G1} switch: if you were using it +explicitly, \emph{don't}; if you were using \texttt{-Ppdf}, add \texttt{-G0} to +suppress the implicit switch in the pseudo-printer file. + +The problem has been corrected in \ProgName{dvips} v~5.90 (and later +versions); it is unlikely ever to recur\dots{} +\LastEdit{2012-10-24} + +\subsection{Macros for using fonts} + +\Question[Q-fonts-pln]{Using non-standard fonts in \plaintex{}} + +\plaintex{} (in accordance with its description) doesn't do anything +fancy with fonts: it sets up the fonts that Knuth found he needed when +writing the package, and leaves you to do the rest. + +To use something other than Knuth's default, you can use Knuth's +mechanism, the \csx{font} primitive: +\begin{quote} +\begin{verbatim} +\font\foo=nonstdfont +... +\foo +Text set using nonstdfont ... +\end{verbatim} +\end{quote} +The name you use (\texttt{nonstdfont}, above) is the name of the +\extension{tfm} file for the font you want. + +If you want to use an italic version of \csx{foo}, you need to use +\csx{font} again: +\begin{quote} +\begin{verbatim} +\font\fooi=nonstdfont-italic +... +\fooi +Text set using nonstdfont italic... +\end{verbatim} +\end{quote} +This is all very elementary stuff, and serves for simple use of fonts. +However, there are wrinkles, the most important of which is the matter +of \Qref*{font encodings}{Q-whatenc}. One almost never sees new fonts +that use Knuth's eccentric font encodings~--- but those encodings are +built into \plaintex{}, so that some macros of \plaintex{} need to be +changed to use the fonts. \LaTeX{} gets around all these problems by +using a ``font selection scheme''~--- this `\acro{NFSS}' (`\acro{N}' +for `new', as opposed to what \LaTeXo{} had) carries around with it +separate information about the fonts you use, so the changes to +encoding-specific commands happen automagically. + +If you only want to use the \Qref*{\acro{EC} fonts}{Q-ECfonts}, you +can in principle use the \Package{ec-plain} bundle, which gives you a version +of \plaintex{} which you can run in the same way that you run +\plaintex{} using the original \acro{CM} fonts, by invoking +\ProgName{tex}. (\Package{Ec-plain} also extends the \acro{EC} fonts, +for reasons which aren't immediately clear, but which might cause +problems if you're hoping to use Type 1 versions of the fonts.) + +The \Package{font_selection} package provides a sort of halfway house: +it provides font face and size, but not family selection. This gives +you considerable freedom, but leaves you stuck with the original +\acro{CM} fonts. It's a compact solution, within its restrictions. + +Other \plaintex{} approaches to the problem (packages +\Package{plnfss}, \Package{fontch} and \Package{ofs}) break out of the +\plaintex{} model, towards the sort of font selection provided by +\CONTeXT{} and \LaTeX{}~--- font selection that allows you to change +family, as well as size and face. The remaining packages all make +provision for using encodings other than Knuth's \acro{OT}1. + +\Package{Plnfss} has a rather basic set of font family details; +however, it is capable of using font description (\extension{fd}) files +created for \LaTeX{}. (This is useful, since most modern mechanisms +for integrating outline fonts with \TeX{} generate \extension{fd} files +in their process.) + +\Package{Fontch} has special provision for \acro{T}1 and \acro{TS}1 +encodings, which you select by arcane commands, such as: +\begin{quote} +\begin{verbatim} +\let\LMTone\relax +\input fontch.tex +\end{verbatim} +\end{quote} +for \acro{T}1. + +\Package{Ofs} seems to be the most thoroughly thought-through of the +alternatives, and can select more than one encoding: as well as +\acro{T}1 it covers the encoding \acro{IL}2, which is favoured in the +Czech Republic and Slovakia. \Package{Ofs} also covers mathematical fonts, +allowing you the dubious pleasure of using fonts such as the % ! line break +\Qref*{\FontName{pxfonts} and \FontName{txfonts}}{Q-psfchoice}. + +The \Package{pdcmac} \plaintex{} macro package aims to be a complete +document preparation environment, like \Qref*{\Eplain{}}{Q-eplain}. One +of its components is a font selection scheme, \Package{pdcfsel}, which +is rather simple but adequately powerful for many uses. The package +doesn't preload fonts: the user is required to declare the fonts the +document is going to use, and the package provides commands to select +fonts as they're needed. The distribution includes a configuration to +use Adobe `standard' fonts for typesetting text. (\Eplain{} itself +seems not to offer a font selection scheme.) + +The \Package{font-change} collection takes a rather different +approach~--- it supplies what are (in effect) a series of templates +that may be included in a document to change font usage. The +package's documentation shows the effect rather well. + +Simply to change font \emph{size} in a document (i.e., not changing +the default font itself), may be done using the rather straightforward +\Package{varisize}, which offers font sizes ranging from 7~points to +20~points (nominal sizes, all). Font size commands are generated when +any of the package files is loaded, so the \File{11pt.tex} defines a +command \csx{elevenpoint}; each of the files ensures there's a ``way +back'', by defining a \csx{tenpoint} command. +\begin{ctanrefs} +\item[ec-plain]\CTANref{ec-plain} +\item[font-change]\CTANref{font-change} +\item[fontch]\CTANref{fontch} +\item[font_selection]\CTANref{font_selection} +\item[ofs]\CTANref{ofs} +\item[pdcmac]\CTANref{pdcmac} +\item[plnfss]\CTANref{plnfss} +\item[varisize]\CTANref{varisize} +\end{ctanrefs} + +\subsection{Particular font families} + +\Question[Q-concrete]{Using the ``Concrete'' fonts} + +The Concrete Roman fonts were designed by Don Knuth for a book called +``Concrete Mathematics'', which he wrote with Graham and Patashnik +(\emph{the} Patashnik, of \BibTeX{} fame). Knuth +only designed text fonts, since the book used the Euler fonts for +mathematics. The book was typeset using \plaintex{}, of course, with +additional macros that may be viewed in a file \File{gkpmac.tex}, +which is available on \acro{CTAN}. + +The packages \Package{beton}, \Package{concmath}, and +\Package{ccfonts} are \LaTeX{} packages that change the default text +fonts from Computer Modern to Concrete. Packages \Package{beton} and +\Package{ccfonts} also slightly increase the default value of +\csx{baselineskip} to account for the rather heavier weight of the +Concrete fonts. If you wish to use the \FontName{Euler} fonts for +mathematics, as Knuth did, there's the \Package{euler} package which +has been developed from Knuth's own \plaintex{}-based set: these +macros are currently deprecated (they clash with many things, including +\AMSLaTeX{}). The independently-developed \Package{eulervm} +bundle is therefore preferred to the \Package{euler} package. (Note +that installing the \Package{eulervm} bundle involves installing a +series of virtual fonts. While most modern distributions seem to have +the requisite files installed by default, you may find you have to +install them. If so, see the file \File{readme} in the +\Package{eulervm} distribution.) + +A few years after Knuth's original design, Ulrik Vieth +designed the Concrete Math fonts. Packages +\Package{concmath}, and \Package{ccfonts} also change the default math +fonts from Computer Modern to Concrete and use the Concrete versions +of the \acro{AMS} fonts (this last behaviour is optional in the case +of the \Package{concmath} package). + +There are no bold Concrete fonts, but it is generally accepted that +the Computer Modern Sans Serif demibold condensed fonts are an +adequate substitute. If you are using \Package{concmath} or +\Package{ccfonts} and you want to follow this suggestion, then use the +package with \pkgoption{boldsans} class option (in spite of the fact +that the \Package{concmath} documentation calls it +\pkgoption{sansbold} class option). If you are using \Package{beton}, +add +\begin{quote} + \cmdinvoke{renewcommand}{\csx{bfdefault}}{sbc} +\end{quote} +to the preamble of your document. + +Type~1 versions of the fonts are available. For \acro{OT}1 encoding, +they are available from \Qref*{MicroPress}{Q-psfchoice}. The +\Qref*{CM-Super fonts}{Q-textrace} contain Type~1 versions +of the Concrete fonts in \acro{T}1 encoding. +\begin{ctanrefs} +\item[beton.sty]\CTANref{beton} +\item[ccfonts.sty]\CTANref{ccfonts} +\item[\nothtml{\rmfamily}CM-Super fonts]\CTANref{cm-super} +\item[concmath.sty]\CTANref{concmath} +\item[\nothtml{\rmfamily}Concmath fonts]\CTANref{concmath-f} +\item[\nothtml{\rmfamily}Concrete fonts]\CTANref{concrete} +\item[euler.sty]\CTANref{euler-latex} +\item[eulervm \nothtml{\rmfamily}bundle]\CTANref{eulervm} +\item[gkpmac.tex]\CTANref{gkpmac} +\end{ctanrefs} + +\Question[Q-uselmfonts]{Using the Latin Modern fonts} + +The \Package{lm} fonts are an exciting addition to +the armoury of the \AllTeX{} user: high quality outlines of fonts that +were until recently difficult to obtain, all in a free and +relatively compact package. However, the spartan information file +that comes with the fonts remarks ``It is presumed that a potential +user knows what to do with all these files''. This answer aims to +fill in the requirements: the job is really not terribly difficult. + +Note that te\TeX{} distributions, from version~3.0, already have the +\Package{lm} fonts: all you need do is use them. The fonts may also +be installed via the package manager, in a current \miktex{} system. +The remainder of this answer, then, is for people who don't use such +systems. + +The font (and related) files appear on \acro{CTAN} as a set of +single-entry \Qref*{\acro{TDS} trees}{Q-tds}~--- +\File{fonts}, \File{dvips}, \File{tex} and \File{doc}. The \File{doc} +subtree really need not be copied (it's really a pair of sample +files), but copy the other three into your existing Local +\texttt{\$TEXMF} tree, and +% beware line break +\Qref*{update the filename database}{Q-inst-wlcf}. + +Now, incorporate the fonts in the set searched by \PDFLaTeX{}, +\ProgName{dvips}, \ProgName{dvipdfm}/\ProgName{dvipdfmx}, your +previewers and Type~1-to-\acro{PK} conversion programs, by +\begin{itemize} +\item On a te\TeX{} system earlier than version~2.0, edit the file + \File{$TEXMF/dvips/config/updmap} %$ + and insert an absolute path for the \File{lm.map} just after the + line that starts \texttt{extra\_modules="} (and before the closing + quotes). +\item On a te\TeX{} version~2.0 (or later), execute the command +\begin{quote} +\begin{verbatim} +updmap --enable Map lm.map +\end{verbatim} +\end{quote} +\item On a \miktex{} system earlier than version~2.2, the ``Refresh + filename database'' operation, which you performed after installing + files, also updates the system's ``\PS{} resources database''. +\item On a \miktex{} system, version~2.2 or later, update + \File{updmap.cfg} as described in the \miktex{} % beware line break + \href{http://docs.miktex.org/manual/psfonts.html#chgupdmapcfg}{online documentation}. + Then execute the command \texttt{initexmf -\relax-mkmaps}, and the + job is done. +\end{itemize} + +To use the fonts in a \LaTeX{} document, you should +\begin{quote} + \cmdinvoke{usepackage}{lmodern} +\end{quote} +this will make the fonts the default +for all three \LaTeX{} font families (``roman'', ``sans-serif'' and +``typewriter''). You also need +\begin{quote} + \cmdinvoke{usepackage}[T1]{fontenc} +\end{quote} +for text, and +\begin{quote} + \cmdinvoke{usepackage}{textcomp} +\end{quote} +if you want to use any of the \acro{TS}1-encoding symbols. There is +no support for using fonts according to the \acro{OT}1 encoding. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Latin Modern fonts]\CTANref{lm} +\end{ctanrefs} + +\Question[Q-getnff]{Getting `free' fonts not in your distribution} + +Some fonts are free to use, but may not be sold. This creates a +dilemma for distributions: users may want the fonts, but since the +distribution is also available on a \acro{DVD} for sale, the fonts may +not be in the distribtution. + +The \acro{CTAN} archives hold such fonts, together with all the +necessary support files, but even with the support files ready-made, +installing a font is a tedious business. + +For \texlive{} users, this dilemma is solved by the +\ProgName{getnonfreefonts} script. Download the script installer from +\url{http://tug.org/fonts/getnonfreefonts/}; the web page tells you +how to run the installer to get the script, and what fonts are +currently available + +Once the script is installed, you can ask it what it has available by +saying: +\begin{quote} +\begin{verbatim} +getnonfreefonts -l +\end{verbatim} +\end{quote} +and you can ask it to install a font (in your local texmf tree) by: +\begin{quote} +\begin{verbatim} +getnonfreefonts luximono +\end{verbatim} +\end{quote} +(for example; the printed version of the \acro{FAQ} uses luximono, so +that the example was to hand\dots{}). + +(System adminstrators may use \ProgName{getnonfreefonts-sys}, which +will install the font in the `public' \texttt{texmf} tree, so that all +users of the system may use the new font.) + +The script will download the relevant font files from \acro{CTAN}, +extract them from their \extension{zip} file, install them and update +the font maps. It even goes so far as to apologise for how long it's +taking! +\LastEdit*{2013-10-22} + +\subsection{\MF{} fonts} + +\Question[Q-useMF]{Getting \MF{} to do what you want} + +\MF{} allows you to create your own fonts, and most \TeX{} users +will never need to use it~--- modern \AllTeX{} systems contain +rather few \MF{} fonts of any significance, and when \MF{} output is +needed the font generation is done, automatically, ``on the fly''. + +If you find you have some special requirement that the system doesn't +satisfy, you need to know about \MF{} in rather more detail. \MF{}, +unlike \TeX{}, requires customisation for each output device: such +customisation is conventionally held in a ``mode'' associated with the +device. Modes are commonly defined using the \texttt{mode\_def} +convention described on page~94 of \emph{The \MF{}book} % ! line break +(see \Qref[question]{\TeX{}-related books}{Q-other-books}). Your +distribution should provide +a file, conventionally called \File{local.mf}, containing all the +\texttt{mode\_def}s you will be using. In the unlikely event that +\File{local.mf} doesn't already exist, Karl Berry's collection of +modes (\File{modes.mf}) is a good starting point +(it can be used as a `\File{local.mf}' without modification in a +modern implementation of \MF{}). +Settings for new output devices are added to \File{modes.mf} as they +become available. + +Now create +a \texttt{plain} base file using \ProgName{mf} (in ``initialisation'' +mode), \texttt{plain.mf}, and \texttt{local.mf}: +\begin{quote} +\begin{verbatim} +% mf -ini +This is METAFONT... +**plain # you type plain +(output) +*input local # you type this +(output) +*dump # you type this +Beginning to dump on file plain... +(output) +\end{verbatim} +\end{quote} +This will create a base file named \File{plain.base} (or something +similar; for example, it will be \File{PLAIN.BAS} on \MSDOS{} +systems). Move the file to the directory containing the base files on +your system, and run \ProgName{texhash} as necessary. + +Now you need to make sure \MF{} loads this new base when it starts up. If +\MF{} loads the \texttt{plain} base by default on your system, then you're +ready to go. Under Unix (using the default \texlive{} (and earlier) +distributions this does indeed happen, but we could for instance +define a command \ProgName{plainmf}% +\begin{footnoteenv} + On the grounds that a command \ProgName{plain} could be misconstrued + as a reference to \plaintex{} +\end{footnoteenv} +which executes `\texttt{mf -base=plain}' (or, in more traditional +style `\texttt{mf \&plain}') which loads the \texttt{plain} base +file. + +The usual way to create a font with \MF{} (with an appropriate base +file loaded) is to start \MF{}'s input with the +\begin{narrowversion} + lines + \begin{quote} + \csx{mode}\texttt{=;}\\ + \texttt{mag=;}\\ + \texttt{input } + \end{quote} +\end{narrowversion} +\begin{wideversion} +line +\begin{quote} +\begin{verbatim} +\mode=; mag=; input +\end{verbatim} +\end{quote} +\end{wideversion} +in response to the `\texttt{**}' prompt or on the \MF{} command line. (If +\texttt{} is unknown or omitted, the mode defaults to +`proof' mode and \MF{} will produce an output file called % ! line break +\File{.2602gf}) +The \texttt{} is a floating point number or a +`magstep' (magsteps define sizes by stating how many times you need to +multiply a base size by \texttt{1.2}, so for a base size of +\texttt{10}, \texttt{magstep 1} is \texttt{12}, \texttt{magstep 2} is +\texttt{14.4} +If \texttt{mag=} is omitted, then the default +is \texttt{1}~(\texttt{magstep 0}). For example, to generate +\FontName{cmr10} at \texttt{12pt} for an Epson, +printer you might type +\begin{quote} +\begin{verbatim} +mf \mode=epson; mag=magstep 1; input cmr10 +\end{verbatim} +\end{quote} +Note that under Unix the \texttt{\textbackslash } and \texttt{;} +characters must usually be quoted or escaped, so this would typically +look something like +\begin{quote} +\begin{verbatim} + mf '\mode=epson; mag=magstep 1; input cmr10' +\end{verbatim} +\end{quote} +If you need a special mode that isn't in the base, you can put its +commands in a file (\emph{e.g.}, \File{ln03.mf}) and invoke it on the +fly with the \csx{smode} command. For example, to create +\File{cmr10.300gf} for an \acro{LN}03 printer, using the file +\begin{quote} +\begin{verbatim} +% This is ln03.mf as of 1990/02/27 +% mode_def courtesy of John Sauter +proofing:=0; +fontmaking:=1; +tracingtitles:=0; +pixels_per_inch:=300; +blacker:=0.65; +fillin:=-0.1; +o_correction:=.5; +\end{verbatim} +\end{quote} +(note the absence of the \texttt{mode\_def} and \texttt{enddef} +commands), you would type +\begin{quote} +\begin{verbatim} +mf \smode="ln03"; input cmr10 +\end{verbatim} +\end{quote} +This technique isn't one you should regularly use, but it may +prove useful if you acquire a new printer and want to experiment with +parameters, or for some other reason are regularly editing the +parameters you're using. Once you've settled on an appropriate set of +parameters, you should use them to rebuild the base file that you use. + +Other sources of help are discussed in our list of % ! line break +\Qref*{\MF{} and \MP{} Tutorials}{Q-mfptutorials}. +\begin{ctanrefs} +\item[modes.mf]\CTANref{modes-file} +\end{ctanrefs} +\LastEdit{2011-09-04} + +\Question[Q-keepfonts]{Which font files should be kept} + +\MF{} produces from its run three files, a metrics (\acro{TFM}) file, a +generic font (\acro{GF}) file, and a log file; all of these files have the +same base name as does the input (\emph{e.g.}, if the input file was +\File{cmr10.mf}, the outputs will be \File{cmr10.tfm}, +\File{cmr10.nnngf} (the file name may be mangled if you are using an +operating system which doesn't permit long file names) +and \File{cmr10.log}). + +For \TeX{} to use the font, you need a \acro{TFM} file, so you need +to keep that. However, you are likely to generate the same font +at more than one magnification, and each time you do so you'll +(incidentally) generate another \acro{TFM} file; these files are +all the same, so you only need to keep one of them. + +To preview or to produce printed output, the \acro{DVI} processor will need a +font raster file; this is what the \acro{GF} file provides. However, while +there used (once upon a time) to be \acro{DVI} processors that could use +\acro{GF} files, modern processors use +packed raster (\acro{PK}) files (incidentally, \pdftex{} also uses +\acro{PK} files if nothing ``better'' is available, but +see \Qref[]{fuzzy fonts in \acro{PDF}}{Q-fuzzy-type3}). +Therefore, you need to generate a \acro{PK} file from the \acro{GF} file; the +program \ProgName{gftopk} does this for you, and once you've done that you +may throw the \acro{GF} file away. + +The log file should never be needed again, unless there was some sort +of problem in the \MF{} run, and need not therefore be kept. +\LastEdit{2011-09-04} + +\Question[Q-getbitmap]{Acquiring bitmap fonts} + +When \acro{CTAN} was young, most people would start using \TeX{} +with a 300 dots-per-inch (dpi) laser printer, and sets of Computer +Modern bitmap fonts for this resolution are available on \acro{CTAN}. +(There are separate sets for write-black and write-white printers, as +well as sets at 120~dpi and 240~dpi.) + +There used to regular requests that \acro{CTAN} should hold +a wider range of resolutions, but they were resisted for two reasons: +\begin{itemize} +\item The need to decide which printers to generate fonts for. The + broad-brush approach taken for 300~dpi printers was (more or less) + justified back then, given the dominance of certain printer + `engines', but nowadays one could not make any such assumption. +\item Given the above, it has been near-impossible to justify the + space that would be required by a huge array of bitmap fonts. +\end{itemize} +Fortunately, \AllTeX{} distribution technology has put a stop to these +arguments: most (if not all) current distributions generate bitmap +fonts as needed, and cache them for later re-use. The impatient +user, who is determined that all bitmap fonts should be created once +and for all, may be supported by scripts such as \ProgName{allcm} +(distributed with \texlive{}, at least; otherwise such a +person should consult ``\Qref*{the use of \MF{}}{Q-useMF})''. + +If your output is to a \PS{}-capable device, or if your output is +destined to be converted to \acro{PDF}, you should switch to +using Type~1 versions of the \acro{CM} fonts. Two free +sets are available; the older (\Package{bakoma}) is +somewhat less well produced than the \Package{bluesky} fonts, which were +originally professionally produced and sold, but were then released +for general public use by their originators \YandY{} and Bluesky Research, +in association with the \acro{AMS} and other scientific publishers +(they are nowadays available under the SIL's Open Fonts Licence). The +two sets contain slightly different ranges of fonts, but you are +advised to use the \Package{bluesky} set except when \Package{bakoma} +is for some reason absolutely unavoidable. In recent years, several +other `\MF{}' fonts have been converted to Type~1 format; it's +uncommon ever to need to generate bitmap fonts for any purpose other +than previewing~--- see % ! line wrap +\Qref*{``previewing documents with Type~1 fonts''}{Q-PSpreview}~--- +if even then. + +More modern fonts may be used in place of the Computer Modern set. The +\Qref*{\acro{EC} fonts}{Q-ECfonts} and the % ! line break +\Qref*{Latin Modern fonts}{Q-uselmfonts} are both close relatives with +wider ranges of glyphs to offer. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}BaKoMa fonts]\CTANref{bakoma} +\item[\nothtml{\rmfamily}Bluesky fonts]Distributed as part of + \CTANref{amsfonts} +\item[\nothtml{\rmfamily}CM fonts (write-black printers)]\CTANref{pk300} +\item[\nothtml{\rmfamily}CM fonts (write-white printers)]\CTANref{pk300w} +\item[\nothtml{\rmfamily}EC fonts (Type 1 format)]\CTANref{cm-super} +\item[\nothtml{\rmfamily}Latin Modern fonts]\CTANref{lm} +\end{ctanrefs} +\LastEdit{2011-09-4} diff --git a/help/uk-tex-faq/faq-getit.tex b/help/uk-tex-faq/faq-getit.tex new file mode 100644 index 0000000000..8cdd9ccc5b --- /dev/null +++ b/help/uk-tex-faq/faq-getit.tex @@ -0,0 +1,361 @@ +% $Id: faq-getit.tex,v 1.11 2014/01/22 17:29:03 rf10 Exp $ + +\section{Acquiring the Software} + +\Question[Q-archives]{Repositories of \TeX{} material} + +To aid the archiving and retrieval of of \TeX{}-related files, a +\acro{TUG} working group developed the Comprehensive \TeX{} Archive +Network (\acro{CTAN}). Each \acro{CTAN} site has identical material, +and maintains authoritative versions of its material. These +collections are extensive; in particular, almost everything mentioned +in this \acro{FAQ} +is archived at the \acro{CTAN} sites (see the lists of software at the +end of each answer). + +There are two main \acro{CTAN} sites (in Germany and the \acro{UK}), +but users should ordinarily collect material via the % ! line break +\href{http://mirror.ctan.org/}{\acro{CTAN} mirror redirector} +(which connects you to a mirror that is in some sense ``near'' to +you). + +To access a particular thing through the \texttt{mirror.ctan.org} +mechanism, simply place the \acro{CTAN} path after the base +\acro{URL}; so +\URL{http://mirror.ctan.org/macros/latex/contrib/footmisc/} will +connect you to the \Package{footmisc} directory at some \acro{CTAN} +mirror. + +For details of how to find files at \acro{CTAN} sites, see +``\Qref*{finding \AllTeX{} files}{Q-findfiles}''. + +The \TeX{} user who has no access to any sort of +network may buy a copy of the archive as part of the +\Qref*{\texlive{} distribution}{Q-CD}; the disc is, necessarily, out +of date, but it is likely to be better than what (if anything) came +with your operating system. +\LastEdit{2012-12-14} + +\Question[Q-tds-zip]{Ready-built installation files on the archive} + +The \Qref*{\acro{TDS}}{Q-tds} is a simple structure, and almost all +files can be installed simply by putting them in the ``right'' place, +and updating a single index. (Note, this simple idea typically +doesn't work for fonts, unless they're distributed as \MF{} source.) + +The CTAN network is therefore acquiring ``\acro{TDS}-\acro{ZIP}'' files, +which have a built-in directory structure that matches the \acro{TDS}. +These files have to be built, and the \acro{CTAN} team has asked that +package authors supply them (the team will advise, of course, if the +author has trouble). The \acro{CTAN} team hopes that the extra work +involved will contribute to happier lives for package users, which in +turn must surely help keep the TeX community lively and active. + +At the time of writing, there are rather few \extension{tds.zip} +files (by comparison with the huge number of packages that are +available). As packages are updated, the number of files is +steadily increasing, but it will be a long time before the whole set +is covered. + +Use of the files is discussed in % ! line break +``\Qref*{installing using ready-built \acro{ZIP} files}{Q-inst-tds-zip}''. + +\Question[Q-nonfree]{What was the \acro{CTAN} \texttt{nonfree} tree?} + +When \acro{CTAN} was founded, in the 1990s, it was unusual to publish +the terms under which a \TeX{}-related package was distributed (or, at +any rate, to publish those terms formally). + +With the advent of the \TeX{} \emph{distributions}, however, people +started to realise the need for such information, to protect those who +create, distribute or sell the discs that hold the packages, etc. +With the licence information available, the distributors can decide +which packages may be distributed. + +The \acro{CTAN} team decided that it would be useful for users (and +distributors, not to say package authors) to separate packages that +were candidates for distribution, and those that were in some sense +``not free''. Thus was the \texttt{nonfree} tree born. + +From the start, the \texttt{nonfree} tree was controversial: the terms +under which a package would be placed on the tree were hotly +contested, and the \acro{CTAN} team were only able slowly to populate +the tree. It became obvious to the team that the project would never +have been completed. + +The \acro{CTAN} catalogue now records the nature of the licences of a +good proportion of the packages it describes (though there remain +several for which the licence is unknown, which is as good, for the +distributors, as a licence forbidding distribution). Since the +catalogue's coverage of \acro{CTAN} is good (and slowly improving), +the general rule for distributors has become +\begin{quote} +``if the package is listed in the catalogue, check there to see +whether you should distribute; if the package is not listed in the +catalogue, don't think of distributing it''. +\end{quote} +(The catalogue only has a modest % ! line break +\CTANhref{cat-licences}{list of licences}, but it covers the set used +by packages on \acro{CTAN}, with a wild-card ``\texttt{other-free}'' +which covers packages that the \acro{CTAN} administrators believe to +be free even though the authors haven't used a standard licence.) + +There is a corollary to the `general rule': if you notice something +that ought to be in the distributions, for which there is no catalogue +entry, please let the \acro{CTAN} team (\mailto{ctan@dante.de}) know. +It may well be that the package has simply been missed, but some aren't +catalogued because there's no documentation and the team just doesn't +understand the package. + +In the light of the above, the \texttt{nonfree} tree is being +dismantled, and its contents moved (or moved \emph{back}) to the main +\acro{CTAN} tree. So the answer to the question is, now, ``the +nonfree tree was a part of \acro{CTAN}, whose contents are now in +the main tree''. + +\Question[Q-uploads]{Contributing a file to the archives} + +You have something to submit to the archive~--- good news! + +Before we even start, here's a check-list of things to sort out: +\begin{enumerate} +\item Licence: in the spirit of \TeX{}, we hope for free software; in + the spirit of today's lawyer-enthralled society, \acro{CTAN} + provides a % ! line break + \href{http://mirror.ctan.org/help/Catalogue/licenses.html}{list of ``standard'' licence statements}. + Make sure that there's a formal statement of the licence of your + package, somewhere in the files you upload; beyond the \acro{CTAN} + installation, your package is a candidate for inclusion in \AllTeX{} + distributions~\dots{} and thereafter, also in operating system + distributions~\dots{} and the people who bundle all these things up + need a clear statement of your intent. +\item Documentation: it's good for users to be able to browse + documentation before downloading a package. You need at least a + plain text \File{README} file (exactly that name, upper case and no + \extension{txt} extension); in addition a + \acro{PDF} file of the package documentation, prepared for screen + reading, is highly desirable. +\item Name: endless confusion is caused by name clashes. If your + package has the same name as one already on \acro{CTAN}, or if your + package installation generates files of the same name as something + in a ``normal'' distribution, the \acro{CTAN} team will delay + installation while they check that you're doing the right thing: + they may nag you to change the name, or to negotiate a take-over + with the author of the original package. % beware line break + \Qref*{Browse the archive}{Q-findfiles} to ensure uniqueness. + + The name you choose should also (as far as possible) be somewhat + descriptive of what your submission actually \emph{does}; while + ``descriptiveness'' is to some extent in the eye of the beholder, + it's clear that names such as \File{mypackage} or \File{jiffy} + aren't suitable. +\end{enumerate} +You upload via the +\begin{flatversion} + CTAN upload redirector: \URL{http://www.ctan.org/upload} +\end{flatversion} +\begin{hyperversion} + \href{http://www.ctan.org/upload}{CTAN upload redirector} +\end{hyperversion} +(the archive's main page has a link). The upload page shows what it +needs to know, and allows you to enter the information. The mechanism +can only accept one file per upload: if you had intended to upload +lots of files, you need to bundle them into an `archive' file of some +sort; acceptable formats are \extension{zip} and \extension{tar.gz} +(most uploads are packed in \extension{zip} format). Once you have +completed your upload, the redirector assigns it to a member of the +team for processing. + +If you can't use this method, or if you find something confusing, ask +advice of the +\begin{flatversion} + \acro{CTAN} management team (\mailto{ctan@dante.de}). +\end{flatversion} +\begin{hyperversion} + \href{mailto:ctan@dante.de}{\acro{CTAN} management team} +\end{hyperversion} + +If your package is large, or regularly updated, it may be appropriate +to `mirror' your contribution direct into \acro{CTAN}. +Mirroring is only practical using \texttt{ftp} or \texttt{rsync}, so +this facility is limited to packages offered by a server that uses one +of those protocols. +\begin{ctanrefs} +\item[README.uploads]\CTANref{CTAN-uploads} +\end{ctanrefs} +\LastEdit{2013-01-31} + +\Question[Q-findfiles]{Finding \AllTeX{} files} + +Modern \TeX{} distributions contain a huge array of various sorts of +files, but sooner or later most people need to find something that's +not in their present system (if nothing else, because they've heard +that something has been updated). + +But how to find the files? + +Modern distributions (\texlive{} and \miktex{}, at least) provide the +means to update your system ``over the net''. This is the minimum +effort route to getting a new file: `simply' find which of the +distribution's `packages' holds the file in question, and ask the +distribution to update itself. The mechanisms are different (the two +distributions exhibit the signs of evolutionary divergence in their +different niches), but neither is difficult~--- see % ! line break +``\Qref*{using \miktex{} for installing}{Q-inst-miktex*}'' and % ! line break +``\Qref*{using \texlive{} for installing}{Q-inst-texlive}''. + +There are packages, though, that aren't in the distribution you use +(or for which the distribution hasn't yet been updated to offer the +version you need). + +Some sources, such as these \acro{FAQ} answers, provide links to +files: so if you've learnt about a package here, you should be able to +retrieve it without too much fuss. + +Otherwise, \acro{CTAN} provides a full-text search, at its +\href{http://www.ctan.org/}{`central database'} site, as well as +topic- and author-based indexes and a link to browse the archive +itself. + +% Two search mechanisms are offered: the simpler search, locating files +% by name, simply scans a list of files (\File{FILES.byname}~--- see +% below) and returns a list of matches, arranged neatly as a series of +% links to directories and to individual files. + +% The more sophisticated search looks at the contents of each catalogue +% entry, and returns a list of catalogue entries that mention the +% keywords you ask for. + +An alternative way to scan the catalogue is to use the catalogue's +% ! line break +\href{http://mirrors.ctan.org/help/Catalogue/bytopic.html}{``by topic'' index}; +this is an older mechanism than the topic-based search (above), but is +well presented (even though its data has not been updated for some time). + +In fact, \ProgName{Google}, and other search engines, can be useful +tools. Enter your search keywords, and you may pick up a package that +the author hasn't bothered to submit to \acro{CTAN}. + +A user of \ProgName{Google} can restrict the search to +\acro{CTAN} by entering +\begin{quote} + \texttt{site:ctan.org tex-archive \meta{search term(s)}} +\end{quote} +in \ProgName{Google}'s ``search box''. You can also enforce the +restriction using \ProgName{Google}'s ``advanced search'' mechanism; +other search engines (presumably) have similar facilities. + +Many people avoid the need to go over the network at all, for their +searches, by downloading the file list that the archives' web +file searches use. This file, \File{FILES.byname}, +presents a unified listing of the archive (omitting directory names and +cross-links). Its companion \File{FILES.last07days} is also useful, to +keep an eye on the changes on the archive. Since these files are +updated only once a day, a nightly automatic download (using +\ProgName{rsync}) makes good sense. +\begin{ctanrefs} +\item[FILES.byname]\CTANref{f-byname} +\item[FILES.last07days]\CTANref{f-last7} +\LastEdit{2014-03-19} +\end{ctanrefs} + +\Question[Q-findfont]{Finding new fonts} + +Nowadays, new fonts are seldom developed by industrious people using +\mf{}, but if such do appear, they will nowadays be distributed in +the same way as any other part of \alltex{} collections. (An +historical review of Metafont fonts available is held on \acro{CTAN} +as ``\mf{} font list''.) + +Nowadays, most new fonts that appear are only available in some +scalable outline form, and a large proportion is distributed under +commercial terms. Such fonts will only make their way to the free +distributions (at least \texlive{} and \miktex{}) if their licensing +is such that the distributions can accept them. Commercial fonts +(those you have to pay for) do not get to distributions, though +support for some of them is held by \acro{CTAN}. + +Arranging for a new font to be usable by \alltex{} is very different, +depending on which type of font it is, and which \tex{}-alike engine +you are using; roughly speaking: +\begin{itemize} +\item MetaFont fonts will work without much fuss (provided their + sources are in the correct place in the installation's tree); + \tex{}-with-\ProgName{dvips}, and \pdftex{} are ``happy'' with them. + While a new font will need `generating' (by running \mf{}, etc.), + distributions are set up to do that ``on the fly'' and to save the + results (for next time). +\item Adobe Type 1 fonts can be made to work, after \extension{tfm} + and (usually) \extension{vf} files have been created from their + metric (\extension{afm}) files; \extension{map} files also need to + be created. Such fonts will work with \pdftex{}, and with the + (`vanilla')\alltex{} and \ProgName{dvips} combination. +\item TrueType fonts can be made to work with \pdftex{}~--- see +% ! line break +\href{http://www.radamir.com/tex/ttf-tex.htm}{Using TrueType fonts with \tex{}\dots{}} + (a rather dated document, dicsussing use with \miktex{}~1.11). +\item TrueType and OpenType fonts are the usual sort used by \xetex{} + and \luatex{}; while straightforward use is pretty easy, one is + well-advised to use a package such as \Package{fontspec} to gain + access to the full range of a font's capabilities. +\end{itemize} + +The answer ``\Qref*{choice of scalable fonts}{Q-psfchoice}'' discusses +fonts that are configured for general (both textual and mathematical) +use with \AllTeX{}. The list of such fonts is sufficiently short that +they \emph{can} all be discussed in one answer. +\begin{ctanrefs} +\item[fontspec.sty]\CTANref{fontspec} +\item[\nothtml{\rmfamily}\MF{} font list]\CTANref{mf-list} +\end{ctanrefs} +\LastEdit{2014-01-21} + +\Question[Q-CD]{The \TeX{} collection} + +If you don't have access to the Internet, there are obvious +attractions to \TeX{} collections on a disc. Even those with net +access will find large quantities of \TeX{}-related files to hand a +great convenience. + +The \TeX{} collection provides this, together with +ready-to-run \TeX{} systems for various architectures. The collection +is distributed on \acro{DVD}, and contains: +\begin{itemize} +\item The \texlive{} distribution, including the programs themselves + compiled for a variety of architectures; \texlive{} may be + run from the \acro{DVD} or installed on hard disc. +\item Mac\TeX{}: an easy to install \TeX{} system for MacOS/X, based + on \texlive{}; this distribution includes a native Mac installer, + % ! line break + \href{http://www.uoregon.edu/~koch/texshop/}{the \TeX{}Shop front-end} + and other Mac-specific tools; +\item Pro\TeX{}t: an easy to install \TeX{} system for Windows, based + on \miktex{}, based on an `active' document that guides + installation; and +\item A snapshot of \acro{CTAN}. +\end{itemize} +A fair number of national \TeX{} User Groups, as well as \acro{TUG}, +distribute copies to their members at no extra charge. Some user +groups are also able to sell additional copies: +contact your local user group or \Qref*{\acro{TUG}}{Q-TUG*}. + +You may also download disc images from \acro{CTAN}; the installation +disc, Pro\TeX{}t and Mac\TeX{} are all separately available. Beware: +they are all pretty large downloads. \texlive{}, once installed, may +be updated online. + +More details of the collection are available from +\begin{hyperversion} + \href{http://www.tug.org/texcollection/}{its own web page} + on the \acro{TUG} site. +\end{hyperversion} +\begin{flatversion} + its own web page on the + \acro{TUG} site \URL{http://www.tug.org/texcollection/} +\end{flatversion} +\begin{ctanrefs} +\item[Mac\TeX{}]\CTANref{mactex} +\item[Pro\TeX{}t]\CTANref{protext} +\item[\texlive{} install image]\CTANref{texlive} +\end{ctanrefs} + diff --git a/help/uk-tex-faq/faq-graphics.tex b/help/uk-tex-faq/faq-graphics.tex new file mode 100644 index 0000000000..bd90cc183c --- /dev/null +++ b/help/uk-tex-faq/faq-graphics.tex @@ -0,0 +1,1035 @@ +% $Id: faq-graphics.tex,v 1.27 2014/01/22 17:29:03 rf10 Exp $ + +\section{Graphics} + +\Question[Q-impgraph]{Importing graphics into \AllTeX{} documents} + +Knuth, when designing the current version of \TeX{} back in the early +1980s, could discern no ``standard'' way of expressing graphics in +documents. He reasoned that this state could not persist for ever, +but that it would be foolish for him to define \TeX{} primitives that +allowed the import of graphical image definitions. He therefore +deferred the specification of the use of graphics to the writers of +\acro{DVI} drivers; \TeX{} documents would control the drivers by +means of \nothtml{\csx{special} commands (}% beware line breaks +\Qref{\csx{special} commands}{Q-specials}\nothtml{)}. + +There is therefore a straightforward way for anyone to import graphics +into their document: read the specification of the \csx{special} +commands your driver uses, and `just' code them. This is the +hair-shirt approach: it definitely works, but it's not for everyone. + +Over the years, therefore, ``graphics inclusion'' packages have sprung +up; most were designed for inclusion of +\nothtml{Encapsulated \PS{} graphics (}% beware line break +\Qref{Encapsulated \PS{} graphics}{Q-eps}\nothtml{)}\nobreakspace--- +which has become the \emph{lingua franca} of graphics inclusion over +the last decade or so. + +Notable examples are the \Package{epsf} package (distributed with +\ProgName{dvips}) and the \Package{psfig} package. (Both of these +packages were designed to work well with both \plaintex{} and +\LaTeXo{}; they are both still available.) All such packages were +tied to a particular \acro{DVI} driver (\ProgName{dvips}, in +the above two cases), but their code could be configured for others. + +The obvious next step was to make the code configurable dynamically. +The \LaTeX{} standard \Package{graphics} package and its derivatives +made this step: it is strongly preferred for all current work. + +Users of \plaintex{} have two options allowing them to use +\Package{graphicx}: the \Package{miniltx} ``\LaTeX{} emulator'' and +the \Package{graphicx.tex} front-end allow you to load +\Package{graphicx}, and \Qref*{\Eplain}{Q-eplain} allows you to load +it (using the full \LaTeX{} syntax) direct. + +The \Package{graphics} package takes a variety of ``driver +options''~--- package options that select code to generate the +commands appropriate to the \acro{DVI} driver in use. In most cases, +your \AllTeX{} distribution will provide a \File{graphics.cfg} file +that will select the correct driver for what you're doing (for +example, a distribution that provides both \LaTeX{} and \PDFLaTeX{} +will usually provide a configuration file that determines whether +\PDFLaTeX{} is running, and selects the definitions for it if so). + +The \Package{graphics} package provides a toolkit of commands (insert +graphics, scale a box, rotate a box), which may be composed to provide +most facilities you need; the basic command, \csx{includegraphics}, +takes one optional argument, which specifies the bounding box of the +graphics to be included. + +The \Package{graphicx} package uses the facilities of of +\Package{graphics} behind a rather more sophisticated command syntax +to provide a very powerful version of the \csx{includegraphics} +command. \Package{graphicx}'s version can combine scaling and +rotation, viewporting and clipping, and many other things. While this +is all a convenience (at some cost of syntax), it is also capable of +producing noticeably more efficient \PS{}, and some of its +combinations are simply not possible with the \Package{graphics} +package version. + +The \Package{epsfig} package provides the same facilities as +\Package{graphicx}, but via a \csx{psfig} command (also known as +\csx{epsfig}), capable of emulating +the behaviour (if not the bugs) the old \Package{psfig} package. +\Package{Epsfig} also supplies homely support for former users of the +\Package{epsf} package. However, there's a support issue: if you +declare you're using \Package{epsfig}, any potential mailing list or +usenet helper has to clear out of the equation the possibility that +you're using ``old'' \Package{epsfig}, so that support is slower +coming than it would otherwise be. + +There is no rational reason to stick with the old packages, which have +never been entirely satisfactory in the \LaTeX{} context. (One +irrational reason to leave them behind is that their replacement's +name tends not to imply that it's exclusively related to \PS{} +graphics. The reasoning also excludes \Package{epsfig}, of course.) + +A wide variety of detailed techniques and tricks have been developed +over the years, and Keith Reckdahl's \Package{epslatex} outlines them +in compendious detail: this highly recommendable document is available +from \acro{CTAN}. An invaluable review of the practicalities of +exchanging graphics between sites, +% beware multiple line break problems +\begin{wideversion} % hyperversion +``\href{http://silas.psfc.mit.edu/elec_fig/elec_figures.pdf}{Graphics for Inclusion in Electronic Documents}'' +\end{wideversion} +\begin{narrowversion} % non-hyper +\href{http://silas.psfc.mit.edu/elec_fig/elec_figures.pdf}% + {``Graphics for Inclusion in Electronic Documents''} +\end{narrowversion} +has been written by Ian Hutchinson; the document isn't on \acro{CTAN}, +but may also be +% beware line breaks +\href{http://silas.psfc.mit.edu/elec_fig/}{browsed on the Web}. +\begin{ctanrefs} +\item[epsf.tex]\CTANref{epsf} +\item[epsfig.sty]Part of the \CTANref{graphics} bundle +\item[epslatex.pdf]\CTANref{epslatex} +\item[graphics.sty]\CTANref{graphics} +\item[graphicx.sty]Part of the \CTANref{graphics} bundle +\item[miniltx.tex]\CTANref{graphics-plain} +\item[psfig.sty]\CTANref{psfig} +\end{ctanrefs} + +\Question[Q-dvipsgraphics]{Imported graphics in \ProgName{dvips}} + +\ProgName{Dvips}, as originally conceived, can only import a single +graphics format: \nothtml{encapsulated \PS{} (\extension{eps} files, }% +\Qref{encapsulated \PS{}}{Q-eps}\htmlonly{ (\extension{eps} files}). +\ProgName{Dvips} also deals with the slightly eccentric \acro{EPS} that is +created by \Qref*{\MP{}}{Q-MP}. + +Apart from the fact that a depressing proportion of drawing +applications produce corrupt \acro{EPS} when asked for such output, +this is pretty satisfactory for vector graphics work. + +To include bitmap graphics, you need some means of converting them to +\PS{}; in fact many standard image manipulators (such as +\ProgName{ImageMagick}'s \ProgName{convert}) make a good job of +creating \acro{EPS} files (but be sure to ask for output at \PS{} +level~2 or higher). (\ProgName{Unix} users should beware of +\ProgName{xv}'s claims: it has a tendency to downsample your bitmap to +your screen resolution.) + +Special purpose applications \ProgName{jpeg2ps} (which converts +\acro{JPEG} files using \PS{} level 2 functionality), +\ProgName{bmeps} (which converts both \acro{JPEG} and \acro{PNG} +files) and \ProgName{a2ping}/\ProgName{sam2p} (which convert a +bewildering array of bitmap formats to \acro{EPS} or \acro{PDF} files; +\ProgName{sam2p} is one of the engines that \ProgName{a2ping} uses) +are also considered ``good bets''. + +\ProgName{Bmeps} comes with patches to produce your own version of +\ProgName{dvips} that can cope with \acro{JPEG} and \acro{PNG} direct, +using \ProgName{bmeps}'s conversion library. \ProgName{Dvips}, as +distributed by \miktex{}, comes with those patches built-in, but +assuming that capability destroys portability, and is only +recommendable if you are sure you will never want to share your +document. +\begin{ctanrefs} +\item[a2ping]\CTANref{a2ping} +\item[bmeps]Distributed as part of \CTANref{dktools}[bmeps] +\item[jpeg2ps]\CTANref{jpeg2ps} +\item[sam2p]\CTANref{sam2p} +\end{ctanrefs} + +\Question[Q-pdftexgraphics]{Imported graphics in \PDFLaTeX{}} + +\PDFTeX{} itself has a rather wide range of formats that it can +``natively'' incorporate into its output \acro{PDF} stream: +\acro{JPEG} (\extension{jpg} files) for photographs and similar images, +\acro{PNG} files for artificial bitmap images, and \acro{PDF} for +vector drawings. Old versions of \PDFTeX{} (prior to version~1.10a) +supported \acro{TIFF} (\extension{tif} files) format as an alternative +to \acro{PNG} files; don't rely on this facility, even if you +\emph{are} running an old enough version of \PDFTeX{}\dots{} + +In addition to the `native' formats, the standard \PDFLaTeX{} +\Package{graphics} package setup causes Hans Hagen's \File{supp-pdf} +macros to be loaded: these macros are capable of translating the +output of \MP{} to \acro{PDF} ``on the fly''; thus \MP{} output +(\extension{mps} files) may also be included in \PDFLaTeX{} documents. + +The commonest problem users encounter, when switching from \TeX{}, is +that there is no straightforward way to include \acro{EPS} files: +since \PDFTeX{} is its own ``driver'', and since it contains no means +of converting \PS{} to \acro{PDF}, there's no direct way the job can +be done. + +The simple solution is to convert the \acro{EPS} to an appropriate +\acro{PDF} file. The \ProgName{epstopdf} program will do this: it's +available either as a Windows executable or as a \ProgName{Perl} +script to run on Unix and other similar systems. A \LaTeX{} package, +\Package{epstopdf}, can be used to generate the requisite \acro{PDF} +files ``on the fly''; this is convenient, but requires that you +suppress one of \TeX{}'s security checks: don't allow its use in files +from sources you don't entirely trust. + +The package \Package{pst-pdf} permits other things than `mere' +graphics files in its argument. \Package{Pst-pdf} operates (the +authors suggest) ``like \BibTeX{}''~--- you process your file using +\PDFLaTeX{}, then use \LaTeX{}, \ProgName{dvips} and \ProgName{ps2pdf} +in succession, to produce a secondary file to input to your next +\PDFLaTeX{} run. (Scripts are provided to ease the production of the +secondary file.) + +A further extension is \Package{auto-pst-pdf}, which generates +\acro{PDF} (essentially) transparently, by spawning a job to process +output such as \Package{pst-pdf} uses. If your \pdflatex{} +installation doesn't automatically allow it~--- see % ! line break +\Qref*{spawning a process}{Q-spawnprog}~--- then you need to start +\pdflatex{} with: +\begin{quote} +\begin{verbatim} +pdflatex -shell-escape +\end{verbatim} +\end{quote} +for complete `automation'. + +An alternative solution is to use \ProgName{purifyeps}, a +\ProgName{Perl} script which uses the good offices of +\ProgName{pstoedit} and of \MP{} to convert your Encapsulated \PS{} to +``Something that looks like the encapsulated \PS{} that comes out of +\MP{}'', and can therefore be included directly. Sadly, +\ProgName{purifyeps} doesn't work for all \extension{eps} files. + +Good coverage of the problem is to be found in Herbert Vo\ss {}'s +\href{http://pstricks.tug.org/main.cgi?file=pdf/pdfoutput}{\acro{PDF} support page}, +which is targeted at the use of \Package{pstricks} in +\PDFLaTeX{}, and also covers the \Package{pstricks}-specific package +\Package{pdftricks}. A recent alternative (not covered in % ! line break +Herbert Vo\ss {}'s page) is \Package{pdftricks2}, which offers similar +facilities to \Package{pdftricks}, but with some useful variations. +\begin{ctanrefs} +\item[auto-pst-pdf.sty]\CTANref{auto-pst-pdf} +\item[epstopdf]Browse \CTANref{epstopdf} +\item[epstopdf.sty]Distributed with Heiko Oberdiek's packages + \CTANref{oberdiek} +\item[pdftricks.sty]\CTANref{pdftricks} +\item[pdftricks2.sty]\CTANref{pdftricks2} +\item[pst-pdf.sty]\CTANref{pst-pdf} +\item[pstoedit]\CTANref{pstoedit} +\item[purifyeps]\CTANref{purifyeps} +\end{ctanrefs} +\LastEdit{2012-11-20} + +\Question[Q-dvipdfmgraphics]{Imported graphics in \ProgName{dvipdfm}} + +\ProgName{Dvipdfm} (and \ProgName{dvipdfmx}) translates direct from +\acro{DVI} to \acro{PDF} (all other available routes produce \PS{} +output using \ProgName{dvips} and then convert that to \acro{PDF} with +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}} +or \ProgName{Acrobat}'s \ProgName{Distiller}). + +\ProgName{Dvipdfm}/\ProgName{Dvipdfmx} are particularly flexible +applications. They permit the inclusion of bitmap and \acro{PDF} +graphics (as does \Qref*{\PDFTeX{}}{Q-pdftexgraphics}), but are also +capable of employing +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}} ``on the +fly'' to permit the inclusion of encapsulated \PS{} (\extension{eps}) +files by translating them to \acro{PDF}. In this way, they combine the good +qualities of \ProgName{dvips} and of \PDFTeX{} as a means of +processing illustrated documents. + +Unfortunately, ``ordinary'' \LaTeX{} can't deduce the bounding box of +a binary bitmap file (such as \acro{JPEG} or \acro{PNG}), so you have +to specify the bounding box. This may be done explicitly, in the +document: +\begin{quote} +\begin{verbatim} +\usepackage[dvipdfm]{graphicx} +... +\includegraphics[bb=0 0 540 405]{photo.jpg} +\end{verbatim} +\end{quote} +It's usually not obvious what values to give the ``\texttt{bb}'' key, +but the program \ProgName{ebb} will generate a file +containing the information; the above numbers came from an +\ProgName{ebb} output file \File{photo.bb}: +\begin{quote} +\begin{verbatim} +%%Title: /home/gsm10/photo.jpg +%%Creator: ebb Version 0.5.2 +%%BoundingBox: 0 0 540 405 +%%CreationDate: Mon Mar 8 15:17:47 2004 +\end{verbatim} +\end{quote} +If such a file is available, you may abbreviate the inclusion +code, above, to read: +\begin{quote} +\begin{verbatim} +\usepackage[dvipdfm]{graphicx} +... +\includegraphics{photo} +\end{verbatim} +\end{quote} +which makes the operation feel as simple as does including +\extension{eps} images in a \LaTeX{} file for processing with +\ProgName{dvips}; the \Package{graphicx} package knows to look for a +\extension{bb} file if no bounding box is provided in the +\csx{includegraphics} command. + +The one place where usage isn't quite so simple is the need to quote +\ProgName{dvipdfm} explicitly, as an option when loading the +\Package{graphicx} package: if you are using \ProgName{dvips}, you +don't ordinarily need to specify the fact, since the default graphics +configuration file (of most distributions) ``guesses'' the +\texttt{dvips} option if you're using \TeX{}. +\begin{ctanrefs} +\item[dvipdfm]\CTANref{dvipdfm} +\item[dvipdfmx]\CTANref{dvipdfmx} +\item[ebb]Distributed as part of \CTANref{dvipdfm} +\end{ctanrefs} +\LastEdit{2013-06-03} + +\Question[Q-grffilenames]{``Modern'' graphics file names} + +\TeX{} was designed in a world where file names were very simple +indeed, typically strictly limited both in character set and length. +In modern systems, such restrictions have largely disappeared, which +leaves \TeX{} rather at odds with its environment. Particular +problems arise with spaces in file names, but things like multiple +period characters can seriously confuse the \Package{graphics} +package. + +The specification of \TeX{} leaves some leeway for distributions to +adopt file access appropriate to their operating system, but this +hasn't got us very far. Many modern distributions allow you to +specify a file name as \texttt{"file name.tex"} (for example), which +helps somewhat, but while this allows us to say +\begin{quote} +\begin{verbatim} +\input "foo bar.tex" +\end{verbatim} +\end{quote} +the analogous usage +\begin{quote} +\begin{verbatim} +\includegraphics{"gappy graphics.eps"} +\end{verbatim} +\end{quote} +using ``ordinary'' \LaTeX{} causes confusion in \ProgName{xdvi} and +\ProgName{dvips}, even though it works at compilation time. Sadly, +even within such quotes, multiple dots give \csx{includegraphics} +difficulties. Note that +\begin{quote} +\begin{verbatim} +\includegraphics{"gappy graphics.pdf"} +\end{verbatim} +\end{quote} +works in a similar version of \PDFTeX{}. + +If you're using the \Package{graphics} package, the \Package{grffile} +package will help. The package offers several options, the simplest +of which are \pkgoption{multidot} (allowing more than one dot in a +file name) and \pkgoption{space} (allowing space in a file name). The +\pkgoption{space} option requires that you're running on a +sufficiently recent version of \PDFTeX{}, in \acro{PDF} mode~--- and +even then it won't work for \MP{} files, which are read as \TeX{} +input, and therefore use the standard input mechanism). +\begin{ctanrefs} +\item[grffile.sty]Distributed as part of \CTANref{oberdiek}[grffile] +\end{ctanrefs} + +\Question[Q-graphicspath]{Importing graphics from ``somewhere else''} + +By default, graphics commands like \csx{includegraphics} look +``wherever \TeX{} files are found'' for the graphic file they're being +asked to use. This can reduce your flexibility if you choose to hold +your graphics files in a common directory, away from your \AllTeX{} +sources. + +The simplest solution is to patch \TeX{}'s path, by changing the +default path. On most systems, the default path is taken from the +environment variable \texttt{TEXINPUTS}, if it's present; you can adapt that +to take in the path it already has, by setting the variable to +\begin{quote} +\begin{verbatim} +TEXINPUTS=.:: +\end{verbatim} +\end{quote} +on a Unix system; on a Windows system the separator will be ``\texttt{;}'' +rather than ``\texttt{:}''. The ``\texttt{.}'' is there to ensure +that the current directory is searched first; the trailing +``\texttt{:}'' says ``patch in the value of \texttt{TEXINPUTS} from +your configuration file, here''. + +This method has the merit of efficiency (\AllTeX{} does \emph{all} of +the searches, which is quick), but it's always clumsy and may prove +inconvenient to use in Windows setups (at least). + +The alternative is to use the \Package{graphics} package command +\csx{graphicspath}; this command is of course also available to users +of the \Package{graphicx} and the \Package{epsfig} packages. The +syntax of \csx{graphicspath}'s one argument is slightly odd: it's a +sequence of paths (typically relative paths), each of which is +enclosed in braces. A slightly odd example (slightly modified from one +given in the \Package{graphics} bundle documentation) is: +\begin{quote} +\begin{verbatim} +\graphicspath{{eps/}{png/}} +\end{verbatim} +\end{quote} +which will search for graphics files in subdirectories \File{eps} and +\File{png} of the directory in which \latex{} is running. (Note that +the trailing ``\texttt{/}'' \emph{is} required.) + +(Note that some \AllTeX{} systems will only allow you to use files in +the current directory and its sub-directories, for security reasons. +However, \csx{graphicspath} imposes no such restriction: as far as +\emph{it} is concerned, you can access files anywhere.) + +Be aware that \csx{graphicspath} does not affect the operations of +graphics macros other than those from the graphics bundle~--- in +particular, those of the outdated \Package{epsf} and +\Package{psfig} packages are immune. + +The slight disadvantage of the \csx{graphicspath} method is +inefficiency. The package will call \AllTeX{} once for each entry in +the list to look for a file, which of course slows things. Further, +\AllTeX{} remembers the name of any file it's asked to look up, thus +effectively losing memory, so that in the limit a document that uses a +huge number of graphical inputs could be embarrassed by lack of +memory. (Such ``memory starvation'' is pretty unlikely with any +ordinary document in a reasonably modern \AllTeX{} system, but it +should be borne in mind.) + +If your document is split into a variety of directories, and each +directory has its associated graphics, the \Package{import} package +may well be the thing for you; see the discussion % beware line break +\latexhtml{of ``bits of document in other directories'' (}{in the question ``}% +\Qref{bits of document in other directories}{Q-docotherdir}% +\latexhtml{)}{''}. +\begin{ctanrefs} +\item[graphics \nothtml{\rmfamily}bundle]\CTANref{graphics} +\item[import.sty]\CTANref{import} +\end{ctanrefs} + +\Question[Q-graph-pspdf]{Portable imported graphics} + +A regular need is a document to be distributed in more than +one format: commonly both \PS{} and \acro{PDF}. The +following advice is based on a post by one with much experience of +dealing with the problem of dealing with \acro{EPS} graphics in this +case. +\begin{itemize} +\item Don't specify a driver when loading loading whichever version of + the \Package{graphics} package you use. The scheme relies on the + distribution's ability to decide which driver is going to be used: + the choice is between \ProgName{dvips} and \PDFTeX{}, in this case. + Be sure to exclude options \pkgoption{dvips}, \pkgoption{pdftex} and + \pkgoption{dvipdfm} (\ProgName{dvipdfm} is not used in this scheme, + but the aspirant \acro{PDF}-maker may be using it for his output, + before switching to the scheme). +\item Use \cmdinvoke{includegraphics}[...]{filename} without + specifying the extension (i.e., neither \extension{eps} nor + \extension{pdf}). +\item For every \extension{eps} file you will be including, produce a + \extension{pdf} version, as described in % beware line break + \Qref[question]{Graphics in \PDFLaTeX{}}{Q-pdftexgraphics}. Having + done this, you will have two copies of each graphic (a \extension{eps} + and a \extension{pdf} file) in your directory. +\item Use \PDFLaTeX{} (rather than + \LaTeX{}--\ProgName{dvips}--distillation or + \LaTeX{}--\ProgName{dvipdfm}) to produce your \acro{PDF} output. +\end{itemize} +\ProgName{Dvipdfm}'s charms are less than attractive here: the +document itself needs to be altered from its default +(\ProgName{dvips}) state, before \ProgName{dvipdfm} will process it. + +\Question[Q-repeatgrf]{Repeated graphics in a document} + +A logo or ``watermark'' image, or any other image that is repeated in +your document, has the potential to make the processed version of the +document unmanageably large. The problem is, that the default +mechanisms of graphics usage add the image at every point it's to be +used, and when processed, the image appears in the output file at each +such point. + +Huge \PS{} files are embarrassing; explaining \emph{why} such a file +is huge, is more embarrassing still. + +The \Qref*{\File{epslatex} graphics tutorial}{Q-tutbitslatex} +describes a technique for avoiding the problem: basically, one +converts the image that's to be repeated into a \PS{} subroutine, and +load that as a \ProgName{dvips} prologue file. In place of the image, +you load a file (with the same bounding box as the image) containing +no more than an invocation of the subroutine defined in the prologue. + +The \File{epslatex} technique is tricky, but does the job. Trickier +still is the neat scheme of converting the figure to a one-character +Adobe Type~3 outline font. While this technique is for the ``real +experts'' only (the author of this answer has never even tried it), it has +potential for the same sort of space saving as the \File{epslatex} +technique, with greater flexibility in actual use. + +More practical is Hendri Adriaens' \Package{graphicx-psmin}; you load +this \emph{in place} of \Package{graphicx}, so rather than: +\begin{quote} +\begin{verbatim} +\usepackage[]{graphicx} +\end{verbatim} +\end{quote} +you will write: +\begin{quote} +\begin{verbatim} +\usepackage[]{graphicx-psmin} +\end{verbatim} +\end{quote} +and at the start of your document, you write: +\begin{quote} +\begin{verbatim} +\loadgraphics[]{} +\end{verbatim} +\end{quote} +and each of the graphics in the list is converted to an ``object'' for +use within the resulting \PS{} output. (This is, in essence, an +automated version of the \File{epslatex} technique described above.) + +Having loaded the package as above, whenever you use +\csx{includegraphics}, the command checks if the file you've asked for +is one of the graphics in \csx{loadgraphics}' list. If so, the +operation is converted into a call to the ``object'' rather than a new +copy of the file; the resulting \PS{} can of course be \emph{much} smaller. + +Note that the package requires a recent \ProgName{dvips}, version +5.95b (this version isn't~--- yet~--- widely distributed). + +If your \PS{} is destined for conversion to \acro{PDF}, either by a +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}}-based +mechanism such as \ProgName{ps2pdf} or by +(for example) \ProgName{Acrobat} \ProgName{Distiller}, the issue isn't +so pressing, since the distillation mechanism will amalgamate graphics +objects whether or not the \PS{} has them amalgamated. \PDFTeX{} does +the same job with graphics, automatically converting multiple uses +into references to graphics objects. +\begin{ctanrefs} +\item[graphicx-psmin.sty]\CTANref{graphicx-psmin} +\end{ctanrefs} +\LastEdit{2013-06-03} + +\Question[Q-grmaxwidth]{Limit the width of imported graphics} + +Suppose you have graphics which may or may not be able to fit within +the width of the page; if they will fit, you want to set them at their +natural size, but otherwise you want to scale the whole picture so +that it fits within the page width. + +You do this by delving into the innards of the graphics package (which +of course needs a little \LaTeX{} internals programming): +\begin{quote} +\begin{verbatim} +\makeatletter +\def\maxwidth{% + \ifdim\Gin@nat@width>\linewidth + \linewidth + \else + \Gin@nat@width + \fi +} +\makeatother +\end{verbatim} +\end{quote} +This defines a ``variable'' width which has the properties you want. +Replace \csx{linewidth} if you have a different constraint on the width +of the graphic. + +Use the command as follows: +\begin{quote} +\begin{verbatim} +\includegraphics[width=\maxwidth]{figure} +\end{verbatim} +\end{quote} + +\Question[Q-topgraph]{Top-aligning imported graphics} + +When \TeX{} sets a line of anything, it ensures that the base-line of +each object in the line is at the same level as the base-line of the +final object. (Apart, of course, from \csx{raisebox} commands\dots{}) + +Most imported graphics have their base-line set at the bottom of the +picture. When using packages such as \Package{subfig}, one often +wants to align figures by their tops. The following odd little bit of +code does this: +\begin{quote} +\begin{verbatim} +\vtop{% + \vskip0pt + \hbox{% + \includegraphics{figure}% + }% +} +\end{verbatim} +\end{quote} +The \csx{vtop} primitive sets the base-line of the resulting object to +that of the first ``line'' in it; the \csx{vskip} creates the illusion +of an empty line, so \csx{vtop} makes the very top of the box into the +base-line. + +In cases where the graphics are to be aligned with text, there is a +case for making the base-line one ex-height below the top of the box, +as in: +\begin{quote} +\begin{verbatim} +\vtop{% + \vskip-1ex + \hbox{% + \includegraphics{figure}% + }% +} +\end{verbatim} +\end{quote} +A more \LaTeX{}-y way of doing the job (somewhat inefficiently) uses +the \Package{calc} package: +\begin{quote} +\begin{verbatim} +\usepackage{calc} +... +\raisebox{1ex-\height}{\includegraphics{figure}} +\end{verbatim} +\end{quote} +(this has the same effect as the text-align version, above). + +The fact is, \emph{you} may choose where the base-line ends up. This +answer merely shows you sensible choices you might make. + +\Question[Q-mpprologues]{Displaying \MP{} output in \ProgName{ghostscript}} + +\MP{} ordinarily expects its output to be included in some context +where the `standard' \MF{} fonts (that you've specified) are already +defined~--- for example, as a figure in \TeX{} document. If you're +debugging your \MP{} code, you may want to view it in a +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}}-based (or some +other \PS{}) previewer, but note that viewers (even +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}}) +\emph{don't} ordinarily have the fonts loaded, and you'll experience +an error such as +\begin{quote} +\begin{verbatim} +Error: /undefined in cmmi10 +\end{verbatim} +\end{quote} +There is provision in \MP{} for avoiding this problem: issue the +command \texttt{prologues := 2;} at the start of the \extension{mp} file. + +Unfortunately, the \PS{} that \MP{} inserts in its output, +following this command, is incompatible with ordinary use of the +\PS{} in inclusions into \AllTeX{} documents, so it's best to +make the \texttt{prologues} command optional. Furthermore, \MP{} takes a +very simple-minded approach to font encoding: since \TeX{} font +encodings are anything but simple, encoding of text in diagrams are +another source of problems. If you're suffering such problems (the +symptom is that +characters disappear, or are wrongly presented) the solution is +to view the `original' \MP{} output after processing through +\LaTeX{} and \ProgName{dvips}. + +Conditional compilation may be done either +by inputting \File{MyFigure.mp} indirectly from a simple wrapper +\File{MyFigureDisplay.mp}: +\begin{quote} +\begin{verbatim} +prologues := 2; +input MyFigure +\end{verbatim} +\end{quote} +or by issuing a shell command such as +\begin{quote} +\begin{verbatim} +mp '\prologues:=2; input MyFigure' +\end{verbatim} +\end{quote} +(which will work without the quote marks if you're not using a Unix +shell). + +A suitable \LaTeX{} route would involve processing +\File{MyFigure.tex}, which contains: +\begin{quote} +\begin{verbatim} +\documentclass{article} +\usepackage{graphicx} +\begin{document} +\thispagestyle{empty} +\includegraphics{MyFigure.1} +\end{document} +\end{verbatim} +\end{quote} +Processing the resulting \acro{DVI} file with the \ProgName{dvips} +command +\begin{quote} +\begin{verbatim} +dvips -E -o MyFigure.eps MyFigure +\end{verbatim} +\end{quote} +would then give a satisfactory Encapsulated \PS{} file. This +procedure may be automated using the \ProgName{Perl} script +\ProgName{mps2eps}, thus saving a certain amount of tedium. + +The \plaintex{} user may use an adaptation, by +Dan Luecking, of a jiffy of Knuth's. Dan's version +\Package{mpsproof.tex} will work under +\TeX{} to produce a \acro{DVI} file for use with \ProgName{dvips}, or +under \PDFTeX{} to produce a \acro{PDF} file, direct. The output is +set up to look like a proof sheet. + +A script application, \ProgName{mptopdf}, is available in recent +\AllTeX{} distributions: it seems fairly reliably to produce +\acro{PDF} from \MP{}, so may reasonably be considered an answer to +the question\dots{} +\begin{ctanrefs} +\item[mps2eps]\CTANref{mps2eps} +\item[mpsproof.tex]Distributed as part of the \MP{} distribution \CTANref{metapost} +\item[mptopdf]Part of \CTANref{pdftex-graphics} +\end{ctanrefs} +\LastEdit{2013-04-23} + +\Question[Q-drawing]{Drawing with \TeX{}} + +There are many packages to do pictures in \AllTeX{} itself (rather than +importing graphics created externally), ranging from simple use of +\LaTeX{} \environment{picture} environment, through enhancements like +\ProgName{eepic}, to +sophisticated (but slow) drawing with \pictex{}. Depending on your type +of drawing, and setup, here are a few systems you may consider: +\begin{itemize} +\item The \environment{picture} environment provides rather primitive + drawing capabilities (anything requiring more than linear + calculations is excluded, unless a font can come to your help). The + environment's tedious insistence on its own \csx{unitlength}, as the + basic measurement in a diagram, may be avoided by use of the + \Package{picture} package, which detects whether a length is quoted + as a number or as a length, and acts accordingly. +\item \Package{epic} was designed to make use of the \LaTeX{} + \environment{picture} environment somewhat less agonising; + \Package{eepic} extends it, and is capable of using \ProgName{tpic} + \csx{special} commands to improve printing performance. (If the + \csx{special}s aren't available, the \Package{eepicemu} will do the + business, far less efficiently. +\item \Package{pict2e}; this was advertised in % !line break + \Qref*{the \LaTeX{} manual}{Q-latex-books}, but didn't appear for nearly + ten years after publication of the book! It removes all the petty + restrictions that surround the use of the \environment{picture} + environment. It therefore suffers \emph{only} from the rather + eccentric drawing language of the environment, and is a far more + useful tool than the original environment has ever been. (Note that + \Package{pict2e} supersedes David Carlisle's stop-gap + \Package{pspicture}.) +\item \pictex{} is a venerable, and very powerful, system, that draws + by placing dots on the page to give the effect of a line or curve. While + this has the potential of great power, it is (of course) much slower + than any of the other established packages. What's more, there + are problems with its \Qref*{documentation}{Q-docpictex}. +\item \Package{PSTricks} gives you access to the (considerable) power of + \PS{} via a set of \tex{} macros, which talk to \PS{} using + \Qref*{\csx{special} commands}{Q-specials}. Since \PS{} is itself a + pretty powerful programming language, many astounding things can in + principle be achieved using \Package{PSTricks} (a wide range of + contributed packages, ranging from world mapping to lens design + diagrams, is available). + \Package{Pstricks}' \csx{special}s are + by default specific to \ProgName{dvips}, but there is + a \Package{Pstricks} `driver' that allow \Package{Pstricks} to + operate under \xetex{}. \PDFTeX{} users may use \Package{pst-pdf}, + which (like \Package{epstopdf}~--- see % ! line break + \Qref[question]{\PDFLaTeX{} graphics}{Q-pdftexgraphics}) generates + \acro{PDF} files using an auxiliary program, from \Package{PSTricks} + commands (\Package{pst-pdf} also requires a recent installation of + the \Package{preview} package). + + There is a \Package{PSTricks} mailing list + (\mailto{pstricks@tug.org}) which you may + \href{http://tug.org/mailman/listinfo/pstricks}{join}, or you may + just browse the % ! line break + \href{http://tug.org/pipermail/pstricks/}{list archives}. +\item \Package{pgf}: while \Package{pstricks} is very powerful and + convenient from `traditional' \tex{}, using it with \PDFLaTeX{} is + pretty tiresome: if you + simply want the graphical capabilities, \Package{pgf}, together with + its ``user-oriented'' interface \Package{tikz}, may be a good + bet for you. While \acro{PDF} has (in essence) the same graphical + capabilities as \PS{}, it isn't programmable; \Package{pgf} provides + \LaTeX{} commands that will utilise the graphical capabilities of + both \PS{} and \acro{PDF} equally. \Package{Pgf} has extensive + mathematical support, which allows it to rival \Package{PSTricks}' + use of the computation engine within \PS{}. + The \Package{pgf} manual is enormous, but a simple introduction which + allows the user to get a feel for the capabilities of the system, is + available at \url{http://cremeronline.com/LaTeX/minimaltikz.pdf} +\item \MP{}; you liked \MF{}, but never got to grips with font files? + Try \Qref*{\MP{}}{Q-MP}~--- + all the power of \MF{}, but it generates \PS{} figures; \MP{} + is nowadays part of most serious \AllTeX{} distributions. Knuth + uses it for all his work\dots{} + + Note that you can % ! line break + \Qref*{``embed'' \MP{} source in your document}{Q-inlgrphapp} (i.e., + keep it in-line with your \latex{} code). +\item You liked \MF{} (or \MP{}), but find the language difficult? + \ProgName{Mfpic} makes up \MF{} or \MP{} code for you using + familiar-looking \AllTeX{} macros. Not \emph{quite} the full power + of \MF{} or \MP{}, but a friendlier interface, and with \MP{} output + the results can be used equally well in either \LaTeX{} or \PDFLaTeX{}. +\item You liked \pictex{} but don't have enough memory or time? Look + at the late Eitan Gurari's \Package{dratex}: it is just as powerful, + but is an entirely new implementation which is not as hard on + memory, is much more readable and is (admittedly sparsely) documented at + \url{http://www.cse.ohio-state.edu/~gurari/tpf/html/README.html}, + as well as in the author's book ``TeX and LATeX: Drawing and + Literate Programming'', which remains available from on-line + booksellers. +\end{itemize} + +In addition, there are several means of generating code for your +graphics application (\ProgName{asymptote}, \ProgName{gnuplot} and +\MP{}, at least) in-line in your document, and then have them +processed in a command spawned from your \AllTeX{} run. For details, +see \Qref{question}{Q-inlgrphapp}. +\begin{ctanrefs} +\item[dratex.sty]\CTANref{dratex} +\item[epic.sty]\CTANref{epic} +\item[eepic.sty]\CTANref{eepic} +\item[eepicemu.sty]\CTANref{eepic} +\item[mfpic]\CTANref{mfpic} +\item[preview.sty]\CTANref{preview} +\item[pspicture.sty]\CTANref{pspicture} +\item[pst-pdf.sty]\CTANref{pst-pdf} +\item[pgf.sty]\CTANref{pgf} +\item[pict2e.sty]\CTANref{pict2e} +\item[pictex.sty]\CTANref{pictex} +\item[picture.sty]Distributed as part of \CTANref{oberdiek}[picture] +\item[pstricks]\CTANref{pstricks} +\item[tikz.sty]Distributed as part of \CTANref{pgf} +\end{ctanrefs} +\LastEdit{2012-10-19} + +\Question[Q-inlgrphapp]{In-line source for graphics applications} + +Some of the free-standing graphics applications may also be used +(effectively) in-line in \latex{} documents; examples are +\begin{booklist} +\item[asymptote]The package \Package{asymptote} (provided in the + \ProgName{asymptote} distribution) defines an environment + \environment{asy} which arranges that its contents are available for + processing, and will therefore be typeset (after ``enough'' runs, in + the `usual' \latex{} way). + + Basically, you write + \begin{quote} + \cmdinvoke{begin}{asy}\\ + \latexhtml{\hspace*{1em}}{~~}\texttt{\meta{asymptote code}}\\ + \cmdinvoke{end}{asy} + \end{quote} + and then execute +\begin{quote} +\begin{verbatim} +latex document +asy document-*.asy +latex document +\end{verbatim} +\end{quote} +\item[egplot]Allows you to incorporate \ProgName{GNUplot} + instructions in your document, for processing outside of \latex{}. + The package provides commands that enable the user to do calculation + in \ProgName{GNUplot}, feeding the results into the diagram + to be drawn. +\item[gmp]Allows you to include the source of MetaPost diagrams, with + parameters of the diagram passed from the environment call. +\item[emp]An earlier package providing facilities similar to those of + \Package{gmp} (\Package{gmp}'s author hopes that his package will + support the facilities \Package{emp}, which he believes is in need + of update.) +\item[mpgraphics]Again, allows you to program parameters of \MP{} + diagrams from your \latex{} document, including the preamble details + of the \latex{} code in any recursive call from \MP{}. +\end{booklist} +In all cases (other than \Package{asymptote}), these packages require +that you can % ! line break +\Qref*{run external programs from within your document}{Q-spawnprog}. +\begin{ctanrefs} +\item[asymptote.sty]\CTANref{asymptote} +\item[egplot.sty]\CTANref{egplot} +\item[emp.sty]\CTANref{emp} +\item[gmp.sty]\CTANref{gmp} +\item[mpgraphics.sty]\CTANref{mpgraphics} +\end{ctanrefs} +\LastEdit*{2011-03-16} + +\Question[Q-drawFeyn]{Drawing Feynman diagrams in \LaTeX{}} + +Michael Levine's \Package{feynman} bundle for drawing the diagrams in +\LaTeXo{} is still available. + +Thorsten Ohl's \Package{feynmf} is designed for use with current +\LaTeX{}, and works in +combination with \MF{} (or, in its \Package{feynmp} incarnation, with +\MP{}). The \ProgName{feynmf} or +\ProgName{feynmp} package reads a description of the diagram written +in \TeX{}, and writes out code. \MF{} (or \MP{}) can then produce a +font (or \PS{} file) for use in a subsequent \LaTeX{} run. For +new users, who have access to \MP{}, the \PS{} version is +probably the better route, for document portability and other reasons. +% checked rf 2001/03/22 + +Jos Vermaseren's \Package{axodraw} is mentioned as an alternative in +the documentation of \Package{feynmf}, but it is written entirely in +terms of \ProgName{dvips} \csx{special} commands, and is thus rather +imperfectly portable. + +An alternative approach is implemented by Norman Gray's \Package{feyn} +package. Rather than creating complete diagrams as postscript images, +\Package{feyn} provides a font (in a variety of sizes) containing +fragments, which you can compose to produce complete diagrams. It +offers fairly simple diagrams which look good in equations, rather +than complicated ones more suitable for display in figures. +\begin{ctanrefs} +\item[axodraw]\CTANref{axodraw} +\item[feyn \nothtml{\rmfamily}font bundle]\CTANref{feyn} +\item[feynman bundle]\CTANref{feynman} +\item[feynmf/feynmp bundle]\CTANref{feynmf} +\end{ctanrefs} + +\Question[Q-labelfig]{Labelling graphics} + +``Technical'' graphics (such as graphs and diagrams) are often +labelled with quite complex mathematical expressions: there are few +drawing or graphing tools that can do such things (the honourable +exception being \MP{}, which allows you to program the labels, in +\AllTeX{}, in the middle of specifying your graphic). + +Placing `labels' on graphics produced by all those \emph{other} tools is +what we discuss here. (Note that the term ``label'' should be +liberally interpreted; many of the techniques \emph{were} designed for +use when applying labels to figures, but they may be used equally well +to draw funny faces on a figure \dots{} or anything. + +The time-honoured \Package{psfrag} package can help, if your image is +included as an (encapsulated) \PS{} file. Place an unique +text in your graphic, using the normal text features of your tool, and +you can ask \Package{psfrag} to replace the text with arbitrary +\AllTeX{} material. \Package{Psfrag}'s ``operative'' command is +\cmdinvoke{psfrag}{\emph{Orig text}}{\emph{Repl text}}, which +instructs the system to replace the original (``unique'') text with +the \TeX{}-typeset replacement text. Optional arguments permit +adjustment of position, scale and rotation; full details may be found +in \File{pfgguide} in the distribution. + +Since \Package{psfrag} works in terms of (encapsulated) \PS{} files, +it needs extra work for use with \PDFLaTeX{}. Two techniques are +available, using \Qref*{\Package{pst-pdf} package}{Q-pdftexgraphics} +in a mode designed to do this work; and using \Package{pdfrack}. + +The \Qref*{\Package{Pst-pdf} package}{Q-pdftexgraphics} can support +this ``extra work'' usage. In fact, the \Package{pst-pdf} support +package \Package{auto-pst-pdf} offers a configuration setting +precisely for use with \Package{psfrag}. + +If you have the `right' environment (see below), you could try the +\Package{pdfrack} script bundle. The script aims to cut each figure +out of your source, using it to produce a small \latex{} file with +nothing but the figure inclusion commands. Each of these figure files +is then processed to \PS{}, compiled using the \csx{psfrag} commands, +and the resulting output converted to \acro{PDF} again. + +\Package{Pdfrack} is written to use the Unix Bourne shell (or +equivalent); thus your environment needs to be a Unix-based system, or +some equivalent such as \ProgName{cygwin} under windows. (What is +more, \Package{pdfrack}'s author is rather disparaging about his +package; the present author has never tried it.) + +The \Package{psfragx} package goes one step further than +\Package{psfrag}: it provides a means whereby you can put the +\Package{psfrag} commands into the preamble of your \acro{EPS} file +itself. \Package{Psfrag} has such a command itself, but deprecates +it; \Package{psfragx} has cleaned up the facility, and provides a +script \ProgName{laprint} for use with \ProgName{Matlab} to produce +appropriately tagged output. (In principle, other graphics +applications could provide a similar facility, but apparently none does.) + +\ProgName{Emacs} users may find the embedded editor \ProgName{iTe} a +useful tool for placing labels: it's a \AllTeX{}-oriented graphical +editor written in \ProgName{Emacs Lisp}. You create +\environment{iteblock} environments containing graphics and text, and +may then invoke \ProgName{iTe} to arrange the elements relative to one +another. + +Another useful approach is \Package{overpic}, which overlays a +\environment{picture} environment on a graphic included by use of +\csx{includegraphics}. This treatment lends itself to ready placement +of texts and the like on top of a graphic. The package can draw a +grid for planning your ``attack''; the distribution comes with simple +examples. + +The \Package{lpic} package is somewhat similar to \Package{overpic}; +it defines an environment \environment{lpic} (which places your +graphic for you): within the environment you may use the command +\csx{lbl} to position \latex{} material at appropriate places over the +graphic. + +\Package{Pinlabel} is another package whose author thought in the same +sort of way as that of \Package{overpic}; the documentation explains +in detail how to plan your `labelling attack'~--- in this case by +loading your figure into a viewer and taking measurements from it. +(The package discusses direct use of +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}} as well as +customised viewers such as +\href{http://www.ghostgum.com.au/}{\ProgName{gsview}} or +\ProgName{gv}.) + +\Package{Pstricks} can of course do everything +that \Package{overpic}, \Package{lpic} or \Package{pinlabel} +can, with all the flexibility of \PS{} programming that it offers. +This capability is exemplified by the \Package{pst-layout} package, +which seems to be a superset of both \Package{overpic} and +\Package{lpic}. + +Similarly, \Package{pgf/TikZ} has all the power needed, but no +explicit package has been released. + +The \Package{pstricks} web site has a page with several % ! line break +\href{http://pstricks.tug.org/main.cgi?file=Examples/overlay}{examples of labelling} +which will get you started; if \Package{pstricks} is % ! line break +\Qref*{an option for you}{Q-drawing}, this route is worth a try. + +The confident user may, of course, do the whole job in a picture +environment which itself includes the graphic. I would recommend +\Package{overpic} or the \Package{pstricks} approach, but such things +are plainly little more than a convenience over what is achievable +with the do-it-yourself approach. +\begin{ctanrefs} +\item[auto-pst-pdf.sty]\CTANref{auto-pst-pdf} +\item[gv]\CTANref{gv} +\item[iTe]\CTANref{ite} +\item[laprint]Distributed with \CTANref{psfragx} +\item[lpic.sty]\CTANref{lpic} +\item[overpic.sty]\CTANref{overpic} +\item[pdfrack]\CTANref{pdfrack} +\item[pinlabel.sty]\CTANref{pinlabel} +\item[pgf.sty]\CTANref{pgf} +\item[psfrag.sty]\CTANref{psfrag} +\item[psfragx.sty]\CTANref{psfragx} +\item[pstricks.sty]\CTANref{pstricks} +\item[pst-layout.sty]\CTANref{pst-layout} +\item[pst-pdf.sty]\CTANref{pst-pdf} +\end{ctanrefs} +\LastEdit{2013-06-03} diff --git a/help/uk-tex-faq/faq-how-do-i.tex b/help/uk-tex-faq/faq-how-do-i.tex new file mode 100644 index 0000000000..ac61e60ef2 --- /dev/null +++ b/help/uk-tex-faq/faq-how-do-i.tex @@ -0,0 +1,4134 @@ +% $Id: faq-how-do-i.tex,v 1.47 2014/01/28 18:17:23 rf10 Exp $ + +\section{How do I do\dots{}?} + +\subsection{Mathematics} + +\Question[Q-proof]{Proof environment} + +It was long thought impossible to make a \environment{proof} +environment which automatically includes an `end-of-proof' symbol. +Some proofs end in displayed maths; others do not. If the input file +contains % ! line break +\texttt{...\csx{]} }\cmdinvoke{end}{proof} then \LaTeX{} finishes off +the displayed maths and gets ready for a new line before it reads any +instructions connected with ending the proof, so the code is very +tricky. You \emph{can} insert the symbol by hand, but the +(apparently) original `automatic' solution came with Paul Taylor's +\Package{QED}. + +Nowadays, the \Package{ntheorem} package now solves the problem for +\LaTeX{} users: it provides an automatic way of signalling +the end of a proof. + +The \AMSLaTeX{} package \Package{amsthm} also provides a +\environment{proof} environment that does the job; though you need to +insert a \csx{qedhere} command if the proof ends with a displayed +equation: +\begin{quote} +\begin{verbatim} +\begin{proof} + text... + \begin{equation*} + maths... \tag*{\qedhere} + \end{equation*} +\end{proof} +\end{verbatim} +\end{quote} +The \cmdinvoke{tag*}{\csx{qedhere}} construction may be used in any of +\AMSLaTeX{}'s numbering environments. +\begin{ctanrefs} +\item[amsthm.sty]Distributed as part of the \AMSLaTeX{} bundle + \CTANref{amslatex}[amsthm] +\item[ntheorem.sty]\CTANref{ntheorem} +\end{ctanrefs} +\LastEdit{2011-03-09} + +\Question[Q-theoremfmt]{Theorem bodies printed in a roman font} + +If you want to take advantage of the powerful \csx{newtheorem} command +without the constraint that the contents of the theorem is in a sloped +font (for example, you may want to use it to create remarks, examples, proofs, +\dots{}) then you can use the \AMSLaTeX{} \Package{amsthm} package +(which now supersedes the \Package{theorem} package previously +recommended in these answers). +Alternatively, the following sets up an environment +\environment{remark} whose content is in the default roman font. +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\newtheorem{preremark}{Remark} +\newenvironment{remark}% + {\begin{preremark}\upshape}% + {\end{preremark}} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\newtheorem{preremark}{Remark} +\newenvironment{remark}% + {\begin{preremark}\upshape}{\end{preremark}} +\end{verbatim} +\end{wideversion} +\end{quote} +The \Package{ntheorem} package provides control of the fonts used by +theorems, directly. +\begin{ctanrefs} +\item[amsthm.sty]Distributed as part of \CTANref{amslatex}[amsthm] +\item[ntheorem.sty]\CTANref{ntheorem} +\item[theorem.sty]Distributed as part of \CTANref{2etools}[theorem] +\end{ctanrefs} + +\Question[Q-newfunction]{Defining a new log-like function in \LaTeX{}} + +Use the \csx{mathop} command, as in: +\begin{quote} +\begin{verbatim} +\newcommand{\diag}{\mathop{\mathrm{diag}}} +\end{verbatim} +\end{quote} + +Subscripts and superscripts on \csx{diag} will be placed below and +above the function name, as they are on +\csx{lim}. If you want your subscripts and superscripts always placed +to the right, do: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\newcommand{\diag}% + {\mathop{\mathrm{diag}}\nolimits} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\newcommand{\diag}{\mathop{\mathrm{diag}}\nolimits} +\end{verbatim} +\end{wideversion} +\end{quote} + +\AMSLaTeX{} (in its \Package{amsopn} package, which is automatically +loaded by \Package{amsmath}) provides a command +\csx{DeclareMathOperator} that takes does the same job as the first +definition above. To create our original \csx{diag} command, one would +say: +\begin{quote} +\begin{verbatim} +\DeclareMathOperator{\diag}{diag} +\end{verbatim} +\end{quote} +\csx{DeclareMathOperator*} declares the operator always to have its +sub- and superscripts in the % ! line break +``\Qref*{\csx{limits} position}{Q-limits}''. + +The \Package{amsopn} command \csx{operatorname} allows you to +introduce \emph{ad hoc} operators into your mathematics, so +\begin{quote} + \csx{[} \cmdinvoke{operatorname}{foo}\texttt{(bar)} \csx{]} +\end{quote} +typesets the same as +\begin{quote} +\begin{verbatim} +\DeclareMathOperator{\foo}{foo} +... +\[ \foo(bar) \] +\end{verbatim} +\end{quote} +As with \csx{DeclareMathOperator} there's a starred version +\csx{operatorname*} for sub- and superscripts in the limits position. + +(It should be noted that ``log-like'' was reportedly a \emph{joke} on +Lamport's part; it is of course clear what was meant.) +\begin{ctanrefs} +\item[amsopn.sty]Distributed as part of the \AMSLaTeX{} distribution + \CTANref{amslatex}[amsopn] +\end{ctanrefs} + +\Question[Q-braket]{Set specifications and Dirac brackets} + +One of the few glaring omissions from \TeX{}'s mathematical +typesetting capabilities is a means of setting separators in the +middle of mathematical expressions. \TeX{} provides primitives called +\csx{left} and \csx{right}, which can be used to modify brackets (of +whatever sort) around a mathematical expression, as in: +% beware line wrap +\csx{left(}\texttt{ }\csx{right)}~--- the size of the +parentheses is matched to the vertical extent of the expression. + +However, in all sorts of mathematical enterprises one may find oneself +needing a \csx{middle} command, to be used in expressions like +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\left\{ x \in \mathbb{N} \middle| x \mbox{ even} \right\} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\left\{ x\in \mathbb{N} \middle| + x \mbox{ even} \right\} +\end{verbatim} +\end{narrowversion} +\end{quote} +to specify the set of even natural numbers. The % ! line break +\Qref*{\eTeX{} system}{Q-etex} +defines just such a command, but users of Knuth's original need some +support. Donald Arseneau's \Package{braket} package provides commands +for set specifications (as above) and for Dirac brackets (and bras and +kets). The package uses the \eTeX{} built-in command if it finds +itself running under \eTeX{}. +\begin{ctanrefs} +\item[braket.sty]\CTANref{braket} +\end{ctanrefs} + +\Question[Q-cancellation]{Cancelling terms in maths expressions} + +A technique used when explaining the behaviour of expressions or +equations (often for pedagogical purposes). The \Package{cancel} +package provides several variants of cancellation marks +(``\texttt{\textbackslash }'', ``\texttt{/}'' and ``\texttt{X}''), and +a means of cancelling `to' a particular value. + +Documentation of \Package{cancel} is in the package file. +\begin{ctanrefs} +\item[cancel.sty]\CTANref{cancel} +\end{ctanrefs} + +\Question[Q-mathsize]{Adjusting maths font sizes} + +In \plaintex{}, when you introduce a new font size you must also +declare what size fonts are to be used in mathematics with it. This +is done by declaring \csx{textfont}, \csx{scriptfont} and +\csx{scriptscriptfont} for the maths families you're using; all such +things are described in chapter~17 of the % line wrap! +\Qref*{\TeX{}book}{Q-tex-books} and in other books and +\Qref*{tutorials}{Q-man-tex} that discuss \plaintex{} in sufficient +detail. + +In \LaTeX{}, of course, all this stuff is automated: there is a scheme +that, for each (text) font size, determines what maths font sizes are +to be used. The scheme first checks a set of ``known'' text sizes, +for each of which maths sizes are declared in advance. If the text +size isn't ``known'', the script- and scriptscriptfont sizes are +calculated as fixed ratios of the tex font size. (The values used are +\csx{defaultscriptratio}\ensuremath{=}0.7, and +\csx{defaultscriptscriptratio}\ensuremath{=}0.5.) + +The fixed-ratio formula is capable of producing inconvenient results +(particularly if you are using fonts which \LaTeX{} believes are only +available in a fixed set of sizes). You may also want to replace +\LaTeX{}'s ideas altogether, for example by setting maths noticeably +larger or smaller than its surrounding text. For this purpose, the +\LaTeX{} command +\cmdinvoke{DeclareMathSizes}{\meta{tfs}}{\meta{ts}}{\meta{ss}}{\meta{sss}} +may be used (this is the same command that \LaTeX{} itself uses to +define its own set of sizes). This establishes (or re-establishes) +the maths font sizes to be used when the surrounding text font size is +\texttt{\meta{tfs}}; (\texttt{\meta{ts}} being the size used for +\csx{textfont}, \texttt{\meta{ss}} for \csx{scriptfont} and +\texttt{\meta{sss}} for \csx{scriptscriptfont}). + +For example, you might want to use a font with a smaller body height +than Computer Modern, but still prefer \acro{CM} math to any of the +alternatives. In this case, you might use: +\begin{quote} +\begin{verbatim} +\DeclareMathSizes{10}{9}{7}{5} +\end{verbatim} +\end{quote} +to get 9pt maths when the surrounding body text is (nominal) 10pt. + +\csx{DeclareMathSizes} may only be used in the preamble of the +document: only one association is available for each text font size +for the whole document. The default settings are specified in +\File{fontdef.dtx} in the latex distribution, and are compiled into +\File{fontmath.ltx}; the arguments to the command are just numbers +(`\texttt{pt}' is assumed), but some of them are written using +\Qref*{\LaTeX{} abbreviations}{Q-ltxabbrv} for standard font sizes. +Beware simply copying (parts of) the \LaTeX{} definitions~--- since +they contain those internal abbreviations, they need to be treated as +\Qref{internal commands}{Q-atsigns}. +\begin{ctanrefs} +\item[fontdef.dtx]\CTANref{fontdef} +\item[fontmath.ltx]\CTANref{fontmath} +\end{ctanrefs} +\LastEdit{2011-06-01} + +\Question[Q-mathlips]{Ellipses} +\keywords{\csx{dots} \csx{cdots} \csx{vdots} \csx{ddots}} + +Ellipses are commonly required, and \LaTeX{} natively supplies a fair +range (\csx{dots}, \csx{cdots}, \csx{vdots} and \csx{ddots}). By using +the \Package{graphics} package, one can change the slope of the +\csx{ddots} command, as in +\begin{quote} +\begin{verbatim} +$ ... \reflectbox{$\ddots$} ... $ +\end{verbatim} +\end{quote} +While this works, it is not a recommended way of achieving the desired +result (see below). Moreover, \LaTeX{}'s range is not adequate to +everyone's requirements, and at least three packages provide +extensions to the set. + +The \AMSLaTeX{} bundle provides a range of ``semantically-named'' +ellipses, for use in different situations: \csx{dotsb} for use between +pairs of binary operators, \csx{dotsc} for use between pairs of commas, +and so on. + +The \Package{yhmath} package defines an \csx{adots} command, which is +the analogue of \csx{ddots}, sloping forwards rather than backwards. +The \Package{yhmath} package comes with a rather interesting font that +extends the standard \Package{cmex}; details are in the documentation. + +The \Package{mathdots} package (besides fixing up the behaviour of +\AllTeX{} \csx{ddots} and \csx{vdots} when the font size changes) +provides an ``inverse diagonal'' ellipsis \csx{iddots} (doing the same +job as \Package{yhmath}'s \csx{adots}, but better). + +Documentation of \Package{yhmath} appears, processed, in the +distribution (thus saving you the bother of installing the package +before being able to read the documentation). Documentation of +\Package{mathdots} appears at the end the package file itself. +\begin{ctanrefs} +\item[amslatex]\CTANref{amslatex} +\item[graphics.sty]Part of the \CTANref{graphics} bundle +\item[mathdots.sty]\CTANref{mathdots} +\item[yhmath]\CTANref{yhmath} +\end{ctanrefs} +\LastEdit{2013-08-21} + +\Question[Q-limits]{Sub- and superscript positioning for operators} + +The commonest hand-written style for expressions is to place the limit +expressions on operators such as \csx{sum} and \csx{int} physically +above and below the operator. In \AllTeX{}, we write these limit +expressions using sub- and superscripts applied to the operator, but +they don't always appear in the ``handwritten'' way in \TeX{}'s +output. + +The reason is, that when an expression appears in non-display maths, +in running text (and is therefore in \TeX{} \csx{textstyle}), placing +the limits thus could lead to ragged line spacing (and hence +difficult-to-read text). It is therefore common (in \csx{textstyle}) +to place the limits as one would sub- and superscripts of variables. + +This is not universally satisfactory, so the primitive \csx{limits} is +provided: +\begin{quote} +\begin{verbatim} +$\sum\limits_{n=1}^{m} ...$ +\end{verbatim} +\end{quote} +which will place the limits right above and below the symbol (and be +blowed to the typography\dots{}). + +Contrariwise, you may wish to change the arrangement of the limits +when in \csx{displaystyle}. For this purpose, there's a corresponding +\csx{nolimits}: +\begin{quote} +\begin{verbatim} +\[\sum\nolimits_{n=1}^{m} ...\] +\end{verbatim} +\end{quote} +which will place the limits as they would be in \csx{textstyle}. + +Alternatively, one can manipulate the +\csx{textstyle}/\csx{displaystyle} state of the mathematics. To get +``\csx{limits} placement'' in inline maths, +\begin{quote} +\begin{verbatim} +$\displaystyle\sum_{n=1}^{m} ...$ +\end{verbatim} +\end{quote} +and for ``\csx{nolimits} placement'' in display maths, +\csx{nolimits}: +\begin{quote} +\begin{verbatim} +\[\textstyle\sum_{n=1}^{m} ...\] +\end{verbatim} +\end{quote} +will serve. Either of these forms may have effects other than on the +operator you're considering, but there are still those who prefer this +formulation. + +Remember, if you're % ! line break +\Qref*{declaring a special operator of your own}{Q-newfunction}, the +\AMSLaTeX{} functions (that you ought to be using) allow you to choose +how limits are displayed, at definition time. + +(Note that the macro \csx{int} normally has \csx{nolimits} built in to +its definition. There is an example in the \TeX{}book to show how odd +\csx{int}\csx{limits} looks when typeset.) + +\Question[Q-mathstext]{Text inside maths} + +When we type maths in \AllTeX{}, the letters from which we make up +ordinary text assume a special significance: they all become +single-letter variable names. The letters appear in italics, but it's +not the same sort of italics that you see when you're typing ordinary +text: a run of maths letters (for example ``here'') looks oddly +``lumpy'' when compared with the word written in italic text. The +difference is that the italic text is kerned to make the letters fit +well together, whereas the maths is set to look as if you're +multiplying \emph{h} by \emph{e} by \emph{r} by \emph{e}. The other +way things are odd in \TeX{} maths typing is that spaces are ignored: +at best we can write single words in this oddly lumpy font. + +So, if we're going to have good-looking text in amongst maths we're +writing, we have to take special precautions. If you're using +\LaTeX{}, the following should help. + +The simplest is to use \csx{mbox} or \csx{textrm}: +\begin{quote} +\begin{verbatim} +$e = mc^2 \mbox{here we go again}$ +\end{verbatim} +\end{quote} +The problem is that, with either, the size of the text remains firmly +at the surrounding text size, so that +\begin{quote} +\begin{verbatim} +$z = a_{\mbox{other end}}$ +\end{verbatim} +\end{quote} +can look quite painfully wrong. + +The other simple technique, \csx{textrm}, is no more promising: +\begin{quote} +\begin{verbatim} +$z = a_{\textrm{other end}}$ +\end{verbatim} +\end{quote} +does the same as \csx{mbox}, by default. + +(The maths-mode instance of your roman font (\csx{mathrm}) gets the +size right, but since it's intended for use in maths, its spaces get +ignored~--- use \csx{mathrm} for upright roman alphabetic variable +names, but not otherwise.) + +You can correct these problems with size selectors in the text, as: +\begin{quote} +\begin{verbatim} +$z = a_{\mbox{\scriptsize other end}}$ +\end{verbatim} +\end{quote} +which works if your surrounding text is at default document size, but +gives you the wrong size otherwise. + +The \csx{mbox} short cut is (just about) \acro{OK} for ``occasional'' +use, but serious mathematics calls for a technique that +relieves the typist of the sort of thought required. As usual, the +\AMSLaTeX{} system provides what's necessary~--- the \csx{text} +command. (The command is actually provided by the \Package{amstext} +package, but the ``global'' \Package{amsmath} package loads it.) Thus +anyone using \AMSLaTeX{} proper has the command available, so even +this author can write: +\begin{quote} +\begin{verbatim} +\usepackage{amsmath} +... +$z = a_{\text{other end}}$ +\end{verbatim} +\end{quote} +and the text will be at the right size, and in the same font as +surrounding text. (The \Package{amstext} package also puts +\csx{textrm} to rights~--- but \csx{text} is easier to type than +\csx{textrm}!) + +\AMSLaTeX{} also makes provision for interpolated comments in the +middle of one of its multi-line display structures, through the +\csx{intertext} command. For example: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\begin{align} + A_1&=N_0(\lambda;\Omega')- + \phi(\lambda;\Omega'),\\ + A_2&=\phi(\lambda;\Omega')- + \phi(\lambda;\Omega),\\ +\intertext{and} + A_3&=\mathcal{N}(\lambda;\omega). +\end{align} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\begin{align} + A_1&=N_0(\lambda;\Omega')-\phi(\lambda;\Omega'),\\ + A_2&=\phi(\lambda;\Omega')-\phi(\lambda;\Omega),\\ + \intertext{and} A_3&=\mathcal{N}(\lambda;\omega). +\end{align} +\end{verbatim} +\end{wideversion} +\end{quote} +places the text ``and'' on a separate line before the last line of the +display. If the interjected text is short, or the equations +themselves are light-weight, you may find that \csx{intertext} leaves +too much space. Slightly more modest is the \csx{shortintertext} +command from the \Package{mathtools} package: +\begin{quote} +\begin{verbatim} +\begin{align} + a =& b + \shortintertext{or} + c =& b +\end{align} +\end{verbatim} +\end{quote} +To have the text on the same line as the second equation, one can use +the \environment{flalign} environment (from \Package{amsmath}) +with lots of dummy equations (represented by the double \texttt{\&} +signs): +\begin{quote} +\begin{verbatim} +\begin{flalign} + && a =& b && \\ + \text{or} && c =& b && +\end{flalign} +\end{verbatim} +\end{quote} +\begin{ctanrefs} +\item[amsmath.sty]Distributed as part of \AMSLaTeX{} + \CTANref{amslatex}[amsmath] +\item[amstext.sty]Distributed as part of \AMSLaTeX{} + \CTANref{amslatex}[amstext] +\item[mathtools.sty]Distributed as part of the \Package{mh} bundle + \CTANref{mh}[mathtools] +\end{ctanrefs} + +\Question[Q-reuseq]{Re-using an equation} + +To repeat an existing equation, one wants not only to have the same +mathematics in it, one also wants to re-use the original label it had. +The \Package{amsmath} package comes to our help, here: +\begin{quote} +\begin{verbatim} +\usepackage{amsmath} +... +\begin{equation} + a=b + \label{eq1} +\end{equation} +... +Remember that +\begin{equation} + a=b + \tag{\ref{eq1}} +\end{equation} +\end{verbatim} +\end{quote} +Here, the second instance of \ensuremath{a=b} will be +typeset with a copy, made by the \csx{tag} command, of the label of the +first instance. +\begin{ctanrefs} +\item[amsmath.sty]Distributed as part of \AMSLaTeX{} + \CTANref{amslatex}[amsmath] +\end{ctanrefs} + +\Question[Q-brkinline]{Line-breaking in in-line maths} + +\TeX{}, by default, allows you to split a mathematical expression at +the end of the line; it allows breaks at relational operators (like +``='', ``\textless'', etc.) and at binary operators (like ``+'', +``-'', etc.). In the case of large expressions, this can sometimes be +a life-saver. + +However, in the case of simple expressions like \ensuremath{a=b+c}, a +break can be really disturbing to the reader, and one would like to +avoid it. + +Fortunately, these breaks are controllable: there are ``penalties'' +associated with each type of operator: the penalty + says how +undesirable a break at each point is. Default values are: +\begin{quote} +\begin{verbatim} +\relpenalty = 500 +\binoppenalty = 700 +\end{verbatim} +\end{quote} +You make the break progressively less attractive by increasing these +values. You can actually forbid all breaks, everywhere, by: +\begin{quote} +\begin{verbatim} +\relpenalty = 10000 +\binoppenalty = 10000 +\end{verbatim} +\end{quote} +If you want just to prevent breaks in a single expression, write: +\begin{quote} +\begin{verbatim} +{% + \relpenalty = 10000 + \binoppenalty = 10000 + $a=b+c$ +} +\end{verbatim} +\end{quote} +and the original values will remain undisturbed outside the braces. +This is tedious: there is often value in an alternative approach, +in which you say which parts of the expression may not break whatever +happens, and fortunately this is surprisingly easy. Suppose we want +to defer a break until after the equality, we could write: +\begin{quote} +\begin{verbatim} +${a+b+c+d} = z+y+x+w$ +\end{verbatim} +\end{quote} +The braces say ``treat this subformula as one atom'' and (in \TeX{} at +least) atoms don't get split: not a \csx{binoppenalty} change in sight. + +\Question[Q-mathonlyref]{Numbers for referenced equations only} + +There are those who consider that papers look untidy with numbers on +every equation; there is also a school of thought that claims that +there should be numbers everywhere, in case some reader wants to make +reference an equation to which the author made no cross-reference. + +If you hold to the ``only cross-referenced'' school of thought, you +can (using the \csx{nonumber} command on the relevant equations, or by +using the \AMSLaTeX{} unnumbered environments such as +\environment{equation*}) mark those of your equations to which you +make no reference. In a long or complex paper, this procedure could +well become deeply tedious. + +Fortunately, help is at hand: the \Package{mh} bundle's +\Package{mathtools} package offers a `\pkgoption{showonlyrefs}' +switch through its \csx{mathtoolsset} command; when that's in +operation, only those equations to which you make reference will be +numbered in the final output. See the package's documentation for +details of how to make references when the switch is in effect. +\begin{ctanrefs} +\item[mathtools.sty]Distributed as part of \CTANref{mh}[mathtools] +\end{ctanrefs} + +\Question[Q-subheight]{Even subscript height} + +Other things being equal, \TeX{} will aim to position subscripts and +superscripts in places that ``look good''. Unfortunately, it only +does this for the sub- and superscripts of each atom at a time, so if +you have +\begin{quote} +\begin{verbatim} +$ X^{1}_{2} X_{2} $ +\end{verbatim} +\end{quote} +the second subscript will appear higher, since the first has moved +down to avoid the superscript; +the effect can be noticeably distracting: +\begin{quote} +\begin{typesetversion} + $ X^{1}_{2} X_{2} $ +\end{typesetversion} +\begin{htmlversion} + \includegraphics{faq-images1.png} +\end{htmlversion} +\end{quote} + +You can avoid the problem, for a single instance, by +\begin{quote} +\begin{verbatim} +$ X^{1}_{2} X^{}_{2} $ +\end{verbatim} +\end{quote} +here, the dummy superscript has the requisite ``pushing down'' effect: +\begin{quote} +\begin{typesetversion} + $ X^{1}_{2} X^{}_{2} $ +\end{typesetversion} +\begin{htmlversion} + \includegraphics{faq-images2.png} +\end{htmlversion} +\end{quote} + +While this technique does what is necessary, it is tedious and +potentially error-prone. So, for more than one or two equations +in a document, the \LaTeX{} user is advised to use the +\Package{subdepth} package, which forces the lower position for all +subscripts. +\begin{ctanrefs} +\item[subdepth.sty]\CTANref{subdepth} +\end{ctanrefs} + +\subsection{Lists} + +\Question[Q-enumerate]{Fancy enumeration lists} + +The \Package{enumerate} package allows you to control the display of +the enumeration counter. The package adds an optional parameter to +the \environment{enumerate} environment, which is used to specify the +layout of the labels. The layout parameter contains an enumeration +type (`\texttt{1}' for arabic numerals, `\texttt{a}' or `\texttt{A}' +for alphabetic enumeration, and `\texttt{i}' or `\texttt{I}' for Roman +numerals), and things to act as decoration of the enumeration. So, +for example +\begin{quote} +\begin{verbatim} +\usepackage{enumerate} +... +\begin{enumerate}[(a)] +\item ... ... +\end{enumerate} +\end{verbatim} +\end{quote} +starts a list whose labels run (a), (b), (c), \dots{}; while +\begin{quote} +\begin{verbatim} +\usepackage{enumerate} +... +\begin{enumerate}[I/] +\item ... ... +\end{enumerate} +\end{verbatim} +\end{quote} +starts a list whose labels run I/, II/, III/, \dots{} + +The \Package{paralist} package, whose primary purpose is % beware line break +\Qref*{compaction of lists}{Q-complist}, provides the same facilities +for its \environment{enumerate}-like environments. + +If you need non-stereotyped designs, the \Package{enumitem} package +gives you most of the flexibility you might want to design your own. +The silly roman example above could be achieved by: +\begin{quote} +\begin{verbatim} +\usepackage{enumitem} +... +\begin{enumerate}[label=\Roman{*}/] +\item ... ... +\end{enumerate} +\end{verbatim} +\end{quote} +Note that the `\texttt{*}' in the key value stands for the list +counter at this level. You can also manipulate the format of +references to list item labels: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\usepackage{enumitem} +... +\begin{enumerate}[label=\Roman{*}/, + ref=(\roman{*})] +\item ... ... +\end{enumerate} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\usepackage{enumitem} +... +\begin{enumerate}[label=\Roman{*}/, ref=(\roman{*})] +\item ... ... +\end{enumerate} +\end{verbatim} +\end{wideversion} +\end{quote} +to make references to the list items format appear as (i), (ii), +(iii), etc. + +The \Class{memoir} class includes functions that match those in the +\Package{enumerate} package, and has similar functionality for +\environment{itemize} lists. +%% It is possible (if not particularly convenient) to do the same thing +%% yourself. Suppose you want your top-level \environment{enumerate}s to +%% be labelled I/, II/, III/, \dots{}, then give these commands: +%% \begin{verbatim} +%% \renewcommand{\theenumi}{\Roman{enumi}} +%% \renewcommand{\labelenumi}{\theenumi/} +%% \end{verbatim} +%% The possible styles of numbering are given in Section~6.3 of Lamport's +%% book (see \Qref[question]{\TeX{}-related books}{Q-book-lists}). Both +%% \csx{theenumi} and \csx{labelenumi} must be changed, since +%% \csx{theenumi} is used in cross-references to the list. +%% +%% For lower level \environment{enumerate}s, replace |enumi| by |enumii|, +%% |enumiii| or |enumiv|, according to the level. If your label is much +%% larger than the default, you should also change \csx{leftmargini}, +%% \csx{leftmarginii}, \emph{etc}. +\begin{ctanrefs} +\item[enumerate.sty]Distributed as part of \CTANref{2etools}[enumerate] +\item[enumitem.sty]\CTANref{enumitem} +\item[memoir.cls]\CTANref{memoir} +\item[paralist.sty]\CTANref{paralist} +\end{ctanrefs} + +\Question[Q-complist]{How to adjust list spacing} + +\Qref*{Lamport's book}{Q-latex-books} lists various +parameters for the layout of list (things like \csx{topsep}, +\csx{itemsep} and \csx{parsep}), but fails to mention that they're set +automatically within the standard (\latex{}-defined) lists. This +happens because each list +executes a command \csx{@list}\texttt{\meta{depth}} (the depth +appearing as a lower-case roman numeral); what's more, the top-level +\csx{@listi} is usually reset when the font size is changed. As a +result, it's rather tricky for +the user to control list spacing. Of course, the real answer is to use +a document class designed with more modest list spacing, but we all +know such things are hard to come by. The \Class{memoir} class doesn't +provide more compact lists, but offers the user control over the list +spacing using \csx{firmlist} and \csx{tightlist} (and \texttt{*}-ed +versions of them); see section~8.6 of the memoir manual. + +There are packages that provide some control of list spacing, but they +seldom address the separation from surrounding text (defined by +\csx{topsep}). The \Package{expdlist} package, among its many controls +of the appearance of \environment{description} lists, offers a +compaction parameter (see the documentation); the \Package{mdwlist} +package offers a \csx{makecompactlist} command for users' own list +definitions, and uses it to define compact lists +\environment{itemize*}, \environment{enumerate*} and +\environment{description*}. In fact, you can write lists such as +these commands define pretty straightforwardly~--- for example: +\begin{quote} +\begin{verbatim} +\newenvironment{itemize*}% + {\begin{itemize}% + \setlength{\itemsep}{0pt}% + \setlength{\parskip}{0pt}}% + {\end{itemize}} +\end{verbatim} +\end{quote} +The \Package{paralist} package provides several approaches to list +compaction: +\begin{itemize} +\item its \environment{asparaenum} environment formats each item as if + it were a paragraph introduced by the enumeration label (which saves + space if the item texts are long); +\item its \environment{compactenum} environment is the same sort of + compact list as is provided in \Package{expdlist} and + \Package{mdwlist}; and +\item its \environment{inparaenum} environment produces a list ``in + the paragraph'', i.e., with no line break between items, which is a + great space-saver if the list item texts are short. +\end{itemize} +The package will manipulate its \environment{enumerate} environment +labels just like the \Qref*{\Package{enumerate} package}{Q-enumerate} +does. + +\Package{Paralist} also provides \environment{itemize} equivalents +(\environment{asparaitem}, etc.), and \environment{description} +equivalents (\environment{asparadesc}, etc.). + +The \Package{multenum} package offers a more regular form of +\Package{paralist}'s \environment{inparaenum}; you define a notional +grid on which list entries are to appear, and list items will always +appear at positions on that grid. The effect is somewhat like that of +the `tab' keys on traditional typewriters; the package was designed +for example sheets, or lists of answers in the appendices of a book. + +The \Package{expdlist}, \Package{mdwlist} and \Package{paralist} +packages all offer other facilities for list configuration: you should +probably not try the ``do-it-yourself'' approaches outlined below if +you need one of the packages for some other list configuration +purpose. + +For ultimate flexibility (including manipulation of \csx{topsep}), the +\Package{enumitem} package permits adjustment of list parameters using +a ``\emph{key}\latexhtml{\ensuremath{=}}{=}\meta{value}'' format. +For example, one might write +\begin{quote} +\begin{verbatim} +\usepackage{enumitem} +... +\begin{enumerate}[topsep=0pt, partopsep=0pt] +\item ... +\item ... +\end{enumerate} +\end{verbatim} +\end{quote} +to suppress all spacing above and below your list, or +\begin{quote} +\begin{verbatim} +\usepackage{enumitem} +... +\begin{enumerate}[itemsep=2pt,parsep=2pt] +\item ... +\item ... +\end{enumerate} +\end{verbatim} +\end{quote} +to set spacing between items and between paragraphs within items. +\Package{Enumitem} also permits manipulation of the label format in a +more ``basic'' (and therefore more flexible) manner than the % ! line break +\Qref*{\Package{enumerate} package}{Q-enumerate} does. + +The ultimate in compaction (of every sort) is offered by the +\Package{savetrees} package; compaction of lists is included. The +package's prime purpose is to save space at every touch and turn: +don't use it if you're under any design constraint whatever! +\begin{ctanrefs} +\item[enumerate.sty]Distributed as part of \CTANref{2etools}[enumitem] +\item[enumitem.sty]\CTANref{enumitem} +\item[expdlist.sty]\CTANref{expdlist} +\item[memoir.cls]\CTANref{memoir} +\item[memoir \nothtml{\rmfamily}manual]\CTANref{memoir-man} +\item[mdwlist.sty]Distributed as part of \CTANref{mdwtools}[mdwlist] +\item[multenum.sty]\CTANref{multenum} +\item[paralist.sty]\CTANref{paralist} +\item[savetrees.sty]\CTANref{savetrees} +\end{ctanrefs} +\LastEdit{2012-10-30} + +\Question[Q-interruptlist]{Interrupting enumerated lists} + +It's often convenient to have commentary text, `outside' the list, +between successive entries of a list. In the case of +\environment{itemize} lists this is no problem, since there's never +anything to distinguish successive items, while in the case of +\environment{description} lists, the item labels are under the user's +control so there's no automatic issue of continuity. + +For \environment{enumerate} lists, the labels are generated +automatically, and are context-sensitive, so the context (in this +case, the state of the enumeration counter) needs to be preserved. + +The belt-and-braces approach is to remember the state of the +enumeration in your own counter variable, and then restore it when +restarting enumerate: +\begin{quote} +\begin{verbatim} +\newcounter{saveenum} + ... +\begin{enumerate} + ... + \setcounter{saveenum}{\value{enumi}} +\end{enumerate} + +\begin{enumerate} + \setcounter{enumi}{\value{saveenum}} + ... +\end{enumerate} +\end{verbatim} +\end{quote} + +This is reasonable, in small doses\dots{} Problems (apart from sheer +verbosity) are getting the level right (``should I use counter +\texttt{enumi}, \texttt{enumii}, \dots{}'') and remembering not to +nest the interruptions (i.e., not to have a separate list, that is +itself interrupted) in the ``commentary text''). + +The \Package{mdwlist} package defines commands \csx{suspend} and +\csx{resume} that simplify the process: +\begin{quote} +\begin{verbatim} +\begin{enumerate} + ... +\suspend{enumerate} + +\resume{enumerate} + ... +\end{enumerate} +\end{verbatim} +\end{quote} +The package allows an optional name (as in +\cmdinvoke{suspend}[id]{enumerate}) to allow you to identify a +particular suspension, and hence provide a handle for manipulating +nested suspensions. + +If you're suspending a \Qref*{fancy-enumeration list}{Q-enumerate}, +you need to +re-supply the optional ``item label layout'' parameters required by +the \Package{enumerate} package when resuming the list, whether by the +belt-and-braces approach, or by the \Package{mdwlist} +\cmdinvoke{resume}{enumerate} technique. The task is a little tedious +in the \Package{mdwlist} case, since the optional argument has to be +encapsulated, whole, inside an optional argument to \csx{resume}, +which requires use of extra braces: +\begin{quote} +\begin{verbatim} +\begin{enumerate}[\textbf{Item} i] + ... +\suspend{enumerate} + +\resume{enumerate}[{[\textbf{Item} i]}] +... +\end{enumerate} +\end{verbatim} +\end{quote} +\nothtml{\noindent}The \Package{enumitem} package, in its most recent +release, will also allow you to resume lists: +\begin{quote} +\begin{verbatim} +\begin{enumerate} +... +\end{enumerate} + +\begin{enumerate}[resume] +... +\end{enumerate} +\end{verbatim} +\end{quote} +which feels just as ``natural'' as the \Package{mdwtools} facility, +and has the advantage of playing well with the other excellent +facilities of \Package{enumitem}. + +\Package{Expdlist} has a neat way of providing for comments, with its +\csx{listpart} command. The command's argument becomes a comment +between items of the list: +\begin{quote} +\begin{verbatim} +\begin{enumerate} +\item item 1 +\item item 2 + \listpart{interpolated comment} +\item item 3 +\end{enumerate} +\end{verbatim} +\end{quote} +This, you will realise, means it doesn't even have to think about +suspending or resuming the list, and of course it works equally well +in any of the list environments (thought it's not actually +\emph{necessary} for any but \environment{enumerate}). + +\Package{Enumitem} also allows multi-level suspension and resumption +of lists: +\begin{quote} +\begin{verbatim} +\begin{enumerate} +\item outer item 1 +\end{enumerate} + +\begin{enumerate}[resume] +\item outer item 2 +% nested enumerate +\begin{enumerate} +\item inner item 1 +\end{enumerate} + +% resume nested enumerate +\begin{enumerate}[resume] +\item inner item 2 +\end{enumerate} +\item outer item 3 +% end outer enumerate +\end{enumerate} +\end{verbatim} +\end{quote} +However, the `nested comment' interpolated in the nested enumeration +appears as if it were a second paragraph to ``outer item 2'', which is +hardly satisfactory. +\begin{ctanrefs} +\item[enumerate.sty]Distributed as part of \CTANref{2etools}[enumerate] +\item[enumitem.sty]\CTANref{enumitem} +\item[expdlist.sty]\CTANref{expdlist} +\item[mdwlist.sty]Distributed as part of \CTANref{mdwtools}[mdwlist] +\end{ctanrefs} + +\subsection{Tables, figures and diagrams} + +\Question[Q-destable]{The design of tables} + +In recent years, several authors have argued that the examples, set +out by Lamport in his \Qref*{\LaTeX{} manual}{Q-latex-books}, have cramped +authors' style and have led to extremely poor table design. It is in +fact difficult even to work out what many of the examples in Lamport's +book ``mean''. + +The criticism focuses on the excessive use of rules (both horizontal +and vertical) and on the poor vertical spacing that Lamport's macros +offer. + +The problem of vertical spacing is plain for all to see, and is +addressed in several packages~--- see % beware line breaks +``\Qref*[question]{spacing of lines in tables}{Q-struttab}''. + +The argument about rules is presented in the excellent essay that +prefaces the documentation of Simon Fear's \Package{booktabs} package, +which (of course) implements Fear's scheme for `comfortable' rules. +(The same rule commands are implemented in the \Class{memoir} class.) + +Lamport's \LaTeX{} was also inflexibly wrong in ``insisting'' that +captions should come at the bottom of a table. Since a table may +extend over several pages, traditional typography places the caption +at the top of a table float. The \csx{caption} command will get its +position wrong (by \texttt{10pt}) if you simply write: +\begin{quote} +\begin{verbatim} +\begin{table} + \caption{Example table} + \begin{tabular}{...} + ... + \end{tabular} +\end{table} +\end{verbatim} +\end{quote} +The \Package{topcapt} package solves this problem: +\begin{quote} +\begin{verbatim} +\usepackage{topcapt} +... +\begin{table} + \topcaption{Example table} + \begin{tabular}{...} + ... + \end{tabular} +\end{table} +\end{verbatim} +\end{quote} +The \Class{KOMA-script} classes provide a similar command +\csx{captionabove}; they also have a class option +\pkgoption{tablecaptionabove} which arranges that \csx{caption} +\emph{means} \csx{captionabove}, in table environments. The +\Package{caption} package may be loaded +with an option that has the same effect: +\begin{quote} +\begin{verbatim} +\usepackage[tableposition=top]{caption} +\end{verbatim} +\end{quote} +or the effect may be established after the package has been loaded: +\begin{quote} +\begin{verbatim} +\usepackage{caption} +\captionsetup[table]{position=above} +\end{verbatim} +\end{quote} +(Note that the two ``position'' options are different: actually, +``above'' and ``top'' in these contexts mean the same thing.) + +Doing the job yourself is pretty easy: \Package{topcapt} switches the +values of the \LaTeXe{} parameters \csx{abovecaptionskip} (default +value \texttt{10pt}) and \csx{belowcaptionskip} (default value +\texttt{0pt}), so: +\begin{quote} +\begin{verbatim} +\begin{table} + \setlength{\abovecaptionskip}{0pt} + \setlength{\belowcaptionskip}{10pt} + \caption{Example table} + \begin{tabular}{...} + ... + \end{tabular} +\end{table} +\end{verbatim} +\end{quote} +does the job (if the length values are right; the package and classes +are more careful!). +\begin{ctanrefs} +\item[booktabs.sty]\CTANref{booktabs} +\item[caption.sty]\CTANref{caption} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\item[topcapt.sty]\CTANref{topcapt} +\end{ctanrefs} +\LastEdit{2011-08-19} + +\Question[Q-fixwidtab]{Fixed-width tables} + +There are two basic techniques for making fixed-width tables in +\LaTeX{}: you can make the gaps between the columns stretch, or you +can stretch particular cells in the table. + +Basic \LaTeX{} can make the gaps stretch: the \environment{tabular*} +environment takes an extra argument (before the \texttt{clpr} layout one) +which takes a length specification: you can say things like ``\texttt{15cm}'' +or ``\csx{columnwidth}'' here. You must also have an \csx{extracolsep} +command in the \texttt{clpr} layout argument, inside an \texttt{@\{\}} +directive. So, for example, one might have +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}}lllr} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\begin{tabular*}{\columnwidth}% + {@{\extracolsep{\fill}}lllr} +\end{verbatim} +\end{narrowversion} +\end{quote} +The \csx{extracolsep} applies to all inter-column gaps to its right as +well; if you don't want all gaps stretched, add +\cmdinvoke{extracolsep}{0pt} to cancel the original. + +The \Package{tabularx} package defines an extra \texttt{clpr} column +specification, \texttt{X}; \texttt{X} columns behave as \texttt{p} +columns which expand to fill the space available. If there's more +than one \texttt{X} column in a table, the spare space is distributed +between them. + +The \Package{tabulary} package (by the same author) provides a way of +``balancing'' the space taken by the columns of a table. The package +defines column specifications \texttt{C}, \texttt{L}, \texttt{R} and +\texttt{J}, giving, respectively, centred, left, right and +fully-justified versions of space-sharing columns. The package +examines how long each column would be ``naturally'' (i.e., on a piece of paper of unlimited width), and +allocates space to each column accordingly. There are ``sanity +checks'' so that really large entries don't cause everything else to +collapse into nothingness (there's a ``maximum width'' that any column +can exert), and so that tiny entries can't get smaller than a +specified minimum. Of course, all this work means that the package +has to typeset each row several times, so things that leave +``side-effects'' (for example, a counter used to produce a row-number +somewhere) are inevitably unreliable, and should not even be tried. + +The \Package{ltxtable} package combines the features of the +\Package{longtable} and \Package{tabularx} packages. It's important +to read the documentation, since usage is distinctly odd; the +distribution contains no more than a file \File{ltxtable.tex}, which you +should process using \LaTeX{}. Processing will give you a \File{.sty} +file as well as the \File{.dvi} or \File{.pdf} output containing the +documentation. +\begin{ctanrefs} +\item[ltxtable.sty]Distributed as part of \CTANref{carlisle}[ltxtable] +\item[tabularx.sty]Distributed as part of \CTANref{2etools}[tabularx] +\item[tabulary.sty]\CTANref{tabulary} +\end{ctanrefs} + +\Question[Q-varwidcol]{Variable-width columns in tables} + +This is a slightly different take on the problem addressed in +``\Qref*[question]{fixed-width tables}{Q-fixwidtab}''~--- here we have +a column whose size we can't absolutely predict when we design the +document. + +While the basic techniques (the \Package{tabularx}, \Package{tabulary} +and \Package{ltxtable} packages) are the same for this problem as for the +fixed-width \emph{table} problem, there's one extra tool that we can +call to our aid, which may be preferable in some situations. + +Suppose we have data in one column which we read from an external +source, and the source itself isn't entirely predictable. The data in +the column may end up pretty narrow in every row of the table, or it +may be wide enough that the table would run over the edge of the page; +however, we don't want to make the column as wide as possible ``just +in case'', by defining a fixed size for the table. We would like the +column to be as small as possible, but have the possibility to spread +to a maximum width and (if even that width is exceeded) turn into a +\texttt{p}-style column. + +The \Package{varwidth} package, discussed in % ! line break +``\Qref*[question]{automatic sizing of minipages}{Q-varwidth}'', provides +a solution. If you load it together with the \LaTeX{} ``required'' +\Package{array} package, i.e.: +\begin{quote} +\begin{verbatim} +\usepackage{array} +\usepackage{varwidth} +\end{verbatim} +\end{quote} +\Package{varwidth} defines a new column-type ``\texttt{V}'', which you +can use as follows: +\begin{quote} +\begin{verbatim} +\begin{tabular}{l V{3.5cm} r} + foo & blah & bar \\ + foo & blah blah & bar \\ +\end{tabular} +\end{verbatim} +\end{quote} +when the second column ends up less than 3.5cm wide; +or you can use it as follows: +\begin{quote} +\begin{verbatim} +\begin{tabular}{l V{3.5cm} r} + foo & blah & bar \\ + foo & blah blah & bar \\ + foo & blah blah blah blah blah blah + & bar \\ +\end{tabular} +\end{verbatim} +\end{quote} +where the second column will end up noticeably wider, and will wrap to +a second line in the third row. +\begin{ctanrefs} +\item[array.sty]Distributed as part of \CTANref{2etools}[array] +\item[varwidth.sty]\CTANref{varwidth} +\end{ctanrefs} + +\Question[Q-struttab]{Spacing lines in tables} + +\AllTeX{} mechanisms for maintaining the space between lines (the +``\emph{leading}'') rely on \TeX{}'s paragraph builder, which compares +the shape of consecutive lines and adjusts the space between them. + +These mechanisms can't work in exactly the same way when \AllTeX{} is +building a table, because the paragraph builder doesn't get to see the +lines themselves. As a result, tables sometimes typeset with lines +uncomfortably close together (or occasionally ridiculously far apart). + +Traditional (moving metal type) typographers would adjust the spacing +between lines of a table by use of a ``\emph{strut}'' (a metal +spacer). A \TeX{} user can do exactly the same thing: most macro +packages define a \csx{strut} command, that defines a space appropriate +to the current size of the text; placing a \csx{strut} command at the +end of a troublesome row is the simplest solution to the problem~--- +if it works. Other solutions below are \LaTeX{}-specific, but some +may be simply translated to \plaintex{} commands. + +If your table exhibits a systematic problem (i.e., every row is wrong +by the same amount) use \csx{extrarowheight}, which is defined by the +\Package{array} package: +\begin{quote} +\begin{verbatim} +\usepackage{array}% in the preamble +... +\setlength{\extrarowheight}{length} +\begin{tabular}{....} +\end{verbatim} +\end{quote} + +To correct a single row whose maladjustment isn't corrected by a +\csx{strut} command, you can define your own, using +\cmdinvoke{rule}{0pt}{length}~--- which is a near approximation to the +command that goes inside a \csx{strut}. The \Package{bigstrut} package +defines a strut command that you can use for this purpose: +\csx{bigstrut} on its own opens up both above and below the current +line; \cmdinvoke{bigstrut}[t] opens up above the line, +\cmdinvoke{bigstrut}[b] opens up below the line. + +General solutions are available, however. The \Package{tabls} package +automatically generates an appropriately-sized strut at the end of +each row. Its disadvantages are that it's really rather slow in +operation (since it gets in the way of everything within tables) and +its (lack of) compatibility with other packages. + +The \Package{makecell} package provides a command \csx{gape} that may +be used to apply strut expansion for a single cell of a table: +\begin{quote} +\begin{verbatim} +\begin{tabular}{lll} + ... & \gape{cell contents} & ... \\ + ... +\end{tabular} +\end{verbatim} +\end{quote} +The package's similar \csx{Gape} command provides the same function, +but with optional arguments that allow you to adjust the top and +bottom adjustment. + +To adjust every cell in whole tables, the +\cmdinvoke{setcellgapes}{\meta{value}} sets the adjustment value (an +optional argument of ``\texttt{t}'' or ``\texttt{b}'' restricts +adjustment to the top or bottom of each cell, respectively). Having +issued \csx{setcellgapes}, the command \csx{makegapedcells} switches +cell expansion on, and \csx{nomakegapedcells} switches it off again. + +The \Package{cellspace} package does a (possibly inferior) job by +defining a new table/array column type ``S'', which you apply to each +column specification. So, for example, +\begin{quote} +\cmdinvoke{begin}{tabular}{l l l p{3cm}} +\end{quote} +would become +\begin{quote} +\cmdinvoke{begin}{tabular}{Sl Sl Sl Sp{3cm}} +\end{quote} +and so on. This technique shows +promise of not interfering so much with other packages, but this +author has heard of no reports from the field. + +The \Package{booktabs} package comes with a thought-provoking essay +about how tables should be designed. Since table row-spacing problems +most often appear in collisions with rules, the author's thesis, +that \LaTeX{} users tend too often to rule their tables, is +interesting. The package provides rule commands to support the +author's scheme, but deals with inter-row spacing too. The most +recent release of \Package{booktabs} sports compatibility with +packages such as \Package{longtable}. +\begin{ctanrefs} +\item[array.sty]Distributed as part of \CTANref{2etools}[array] +\item[bigstrut.sty]\CTANref{bigstrut} +\item[booktabs.sty]\CTANref{booktabs} +\item[cellspace.sty]\CTANref{cellspace} +\item[makecell.sty]\CTANref{makecell} +\item[tabls.sty]\CTANref{tabls} +\end{ctanrefs} +\LastEdit{2011-05-02} + +\Question[Q-longtab]{Tables longer than a single page} + +Tables are, by default, set entirely in boxes of their own: as a +result, they won't split over a page boundary. Sadly, the world keeps +turning up tables longer than a single page that we need to typeset. + +For simple tables (whose shape is highly regular), the simplest +solution may well be to use the \environment{tabbing} environment, +which is slightly tedious to set up, but which doesn't force the whole alignment +onto a single page. + +The \Package{longtable} package builds the whole table (in chunks), in +a first pass, and then uses information it has written to the \extension{aux} +file during later passes to get the setting ``right'' (the package +ordinarily manages to set tables in just two passes). Since the +package has overview of the whole table at the time it's doing +``final'' setting, the table is set ``uniformly'' over its entire +length, with columns matching on consecutive pages. +\Package{longtable} has a reputation for failing to interwork with +other packages, but it does work with \Package{colortbl}, and its +author has provided the \Package{ltxtable} package to provide (most +of) the facilities of \Package{tabularx} (see +% beware line wrap +\Qref[question]{fixed-width tables}{Q-fixwidtab}) for long tables: +beware of its rather curious usage constraints~--- each long table +should be in a file of its own, and included by +\cmdinvoke*{LTXtable}{width}{file}. Since \Package{longtable}'s +multiple-page tables can't possibly live inside floats, the package +provides for captions within the \environment{longtable} environment +itself. + +A seeming alternative to \Package{ltxtable} is \Package{ltablex}; but +it is outdated and not fully functional. Its worst problem is its +strictly limited memory capacity (\Package{longtable} is not so +limited, at the cost of much complication in its code); +\Package{ltablex} can only deal with relatively small tables, it doesn't seem +likely that support is available; but its user interface is much +simpler than \Package{ltxtable}, so if its restrictions aren't a +problem for you, it may be worth a try. + +The \Package{supertabular} package starts and stops a +\environment{tabular} environment for each page of the table. As a +result, each `page worth' of the table is compiled independently, and +the widths of corresponding columns may differ on successive pages. +However, if the correspondence doesn't matter, or if your columns are +fixed-width, \Package{supertabular} has the great advantage of doing +its job in a single run. + +Both \Package{longtable} and \Package{supertabular} allow definition +of head- and footlines for the table; \Package{longtable} allows +distinction of the first and last head and foot. + +The \Package{xtab} package fixes some infelicities of +\Package{supertabular}, and also provides a ``last head'' facility +(though this, of course, destroys \Package{supertabular}'s advantage +of operating in a single run). + +The \Package{stabular} package provides a simple-to-use ``extension to +\environment{tabular}'' that allows it to typeset tables that run over +the end of a page; it also has usability extensions, but doesn't have +the head- and footline capabilities of the major packages. + +Documentation of \Package{ltablex} is to be found in the package file. +\begin{ctanrefs} +\item[longtable.sty]Distributed as part of \CTANref{2etools}[longtable] +\item[ltablex.sty]\CTANref{ltablex} +\item[ltxtable.sty]Generate by running \CTANref{ltxtable} +\item[stabular.sty]Distributed as part of \CTANref{sttools}[stabular] +\item[supertabular.sty]\CTANref{supertabular} +\item[xtab.sty]\CTANref{xtab} +\end{ctanrefs} + +\Question[Q-tabcellalign]{How to alter the alignment of tabular cells} + +One often needs to alter the alignment of a tabular \texttt{p} (`paragraph') +cell, but problems at the end of a table row are common. With a +\texttt{p} cell that looks like: +\begin{quote} +\begin{verbatim} +... & \centering blah ... \\ +\end{verbatim} +\end{quote} +one is liable to encounter errors that complain about a ``misplaced +\csx{noalign}'' or ``\Qref*{extra alignment tab}{Q-altabcr}'', or the like. +The problem is that the command \texttt{\bsbs } means different things in +different circumstances: the \environment{tabular} environment +switches the meaning to a value for use in the table, and +\csx{centering}, \csx{raggedright} and \csx{raggedleft} all change the +meaning to something incompatible. Note that the problem only +arises in the last cell of a row: since each cell is set into a box, +its settings are lost at the \texttt{\&} (or \texttt{\bsbs }) that +terminates it. + +In the old days, the actual value of \texttt{\bsbs } that the +\environment{tabular} environment uses was only available as an +internal command. Nowadays, the value is a public command, and you +can in principle use it explicitly: +\begin{quote} +\begin{verbatim} +... & \centering blah ... \tabularnewline +\end{verbatim} +\end{quote} +(but that's a rather verbose way of doing things). + +The \Package{array} package provides a command \csx{arraybackslash} +which restores \texttt{\bsbs } to its correct (within table) meaning; +the command may be used in \Package{array}'s ``field format'' preamble +specifications: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\begin{tabular}{...% + >{\centering\arraybackslash}% + p{50mm}} +... +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\begin{tabular}{... >{\centering\arraybackslash}p{50mm}} +... +\end{verbatim} +\end{wideversion} +\end{quote} + +The \csx{tabularnewline} and \csx{arraybackslash} commands are +(somewhat) modern additions to \LaTeX{} and the \Package{array} +package, respectively. In the unlikely event that neither is +available, the user may try the (old) solution which preserves the +meaning of \texttt{\bsbs }: +\begin{quote} +\begin{verbatim} +\newcommand\PBS[1]{\let\temp=\\% + #1% + \let\\=\temp +} +\end{verbatim} +\end{quote} +which one uses within a table as: +\begin{quote} +\begin{verbatim} +... & \PBS\centering blah ... \\ +\end{verbatim} +\end{quote} +or in the preamble as: +\begin{quote} +\begin{verbatim} +\begin{tabular}{...>{\PBS\centering}p{5cm}} +\end{verbatim} +\end{quote} +\begin{ctanrefs} +\item[array.sty]Distributed as part of \CTANref{2etools}[array] +\end{ctanrefs} +\nothtml{\vskip 0pt plus 4ex} + +\Question[Q-rulethk]{The thickness of rules in \LaTeX{} tables} + +The rules in a \LaTeX{} table are by default \texttt{0.4pt} thick; +this is in fact a default built in at the lowest level, and applies to +all rules (including those separating blocks of running text). + +Sometimes, however, we look at a table and find we want the rules to +stand out~--- perhaps to separate the text from the rest of the body +text, or to make the sections of the table stand out from one another. +However, a quick review of any \LaTeX{} manual will reveal no +technique for making any one rule stand out, and a little +experimentation shows that it is indeed pretty difficult to prevent +a change ``bleeding'' out to affect other rules in the same table. + +If you look at what we have to say on the % ! line break +\Qref*{design of tables}{Q-destable}, elsewhere +among these \acro{FAQ}s, and you may sense that the design of \LaTeX{} +simply skipped the issues surrounding table design: \emph{that's} +presumably why there's no facilities to help you. + +Specifically, the length \csx{arrayrulewidth} affects the thickness of +the rules (both horizontal and vertical) within both +\environment{tabular} and \environment{array} environments. If you +change from the default (see above) only as far as +\begin{quote} +\begin{verbatim} +\setlength{\arrayrulewidth}{1pt} +\end{verbatim} +\end{quote} +the change is remarkably striking. However, really quite subtle user +level programming proves incapable of changing just \emph{one} rule: +it's necessary to delve into the (rather tricky) code of \csx{hline} +and \csx{cline} themselves. + +Fortunately, this job has already been done for the community: the +\Package{booktabs} package defines three different classes of rule +(\csx{toprule}, \csx{midrule} and \csx{bottomrule}), and the package +documentation offers hints on how to use them. You are +\emph{strongly} advised to read the documentation pretty carefully. + +The \Class{memoir} class includes the \Package{booktabs} package, and +repeats the documentation in its compendious manual. + +Note that none of the above mentions the issue of the weight of +vertical rules (except in passing). For the reasons, see the +documentation of the \Package{booktabs} package (again); vertical +rules in tables are in any case even more trickily coded than are +horizontal rules, and if their lack of configurability makes them +still less attractive, so much the better for the design of your +document. +\begin{ctanrefs} +\item[booktabs.sty]\CTANref{booktabs} +\item[memoir.cls]\CTANref{memoir} +\end{ctanrefs} + +\Question[Q-textflow]{Flowing text around figures} + +There are several \LaTeX{} packages that purport to do this, but they +all have their limitations because the \TeX{} machine isn't really +designed to solve this sort of problem. Piet van Oostrum has +conducted a survey of the available packages; he recommends: +\begin{description} +\item[\texttt{floatflt}] \Package{floatflt} is an improved version + (for \LaTeXe{}) of \File{floatfig.sty}, and its syntax is: +\begin{wideversion} +\begin{quote} +\begin{verbatim} +\begin{floatingfigure}[options]{width of figure} + figure contents +\end{floatingfigure} +\end{verbatim} +\end{quote} +\end{wideversion} +\begin{narrowversion} + \begin{quote} + \cmdinvoke{begin}{floatingfigure}[\emph{options}]{\emph{figure width}}\\ + \mbox{}\qquad\emph{figure contents}\\ + \cmdinvoke{end}{floatingfigure} + \end{quote} +\end{narrowversion} +There is a (more or less similar) \environment{floatingtable} +environment. + +The tables or figures can be set left or right, or alternating on +even/odd pages in a double-sided document. + +The package works with the \texttt{multicol} package, but doesn't work well +in the neighbourhood of list environments (unless you change your +\LaTeX{} document). +\item[\texttt{wrapfig}] \Package{wrapfig} has syntax: +\begin{wideversion} +\begin{quote} +\begin{verbatim} +\begin{wrapfigure}[height of figure in lines]{l,r,...}[overhang]{width} + figure, caption, etc. +\end{wrapfigure} +\end{verbatim} +\end{quote} +\end{wideversion} +\begin{narrowversion} + \begin{quote} + \cmdinvoke{begin}{wrapfigure}\texttt{\%}\\ + \mbox{}% + \qquad\qquad\texttt{[\emph{figure height in lines}]\%}\\ + \mbox{}% + \qquad\qquad\texttt{\{l,r,\emph{etc}\}[\emph{overhang}]\{\emph{width}\}}\\ + \mbox{}\qquad\emph{figure, caption, etc.}\\ + \cmdinvoke{end}{wrapfigure} + \end{quote} +\end{narrowversion} + The syntax of the \environment{wraptable} environment is similar. + + The \emph{\texttt{height}} may be omitted, in which case it will + be calculated from the size of the figure; the package will use + the greater of the specified and the + actual width. The \texttt{\{l,r,\emph{etc}.\}} parameter may + also be specified as \texttt{i}\emph{(nside)} or + \texttt{o}\emph{(utside)} for two-sided documents, and uppercase + may be used to indicate that the picture should float. The + overhang allows the figure to be + moved into the margin. The figure or table will entered into the + list of figures or tables if you use the \csx{caption} command. + + The environments do not work within list environments that end + before the figure or table has finished, but can be used in a + parbox or minipage, and in twocolumn format. + \item[\texttt{picins}] \Package{Picins} is part of a large bundle + that allows inclusion of pictures (e.g., with shadow boxes, + various \MSDOS{} formats, etc.). The command for inserting a + picture at the start of a paragraph is: +\begin{wideversion} + \begin{quote} + \csx{parpic}\texttt{(width,height)(x-off,y-off)[Options][Position]\{Picture\}}\\ + \emph{Paragraph text} + \end{quote} +\end{wideversion} +\begin{narrowversion} + \begin{quote} + \cmdinvoke*{picins}(width,height)(x-off,y-off)\texttt{\%}\\ + \mbox{\qquad\qquad}\texttt{[\emph{options}][\emph{position}]\%}\\ + \mbox{\qquad\qquad}\texttt{\{\emph{Picture}\}}\\ + \emph{Paragraph text} + \end{quote} +\end{narrowversion} + All parameters except the \emph{Picture} are optional. The picture + can be positioned left or right, boxed with a rectangle, oval, + shadowbox, dashed box, and a caption can be given which will be + included in the list of figures. + + Unfortunately (for those of us whose understanding of German is not + good), the documentation is in German. Piet van Oostrum has written + a summary in English. +\end{description} +All of the above deal insertions at one or other margin; they are able +to take advantage of the \tex{} \csx{parshape} primitive that allows +you to adjust the margins of the text of a paragraph, by line (Knuth +provides an example of such use, with text typeset in a circle, +half-overlapping the margin, in chapter~14 of the \tex{}book). To +place insertions in the middle of a paragraph requires effort of an +entirely different sort; the \Package{cutwin} package does this for +you. It requires a set of ``part line widths'' (two per line), and +typesets the ``cutout'' section of the paragraph line by line. The +examples in the package documentation look enticing. + +\plaintex{} users only have one option: \Package{figflow} (which +doesn't work in \LaTeX{}). \Package{Figflow} only offers flowed +figures at the start of the paragraph, but it seems perfectly +functional. Syntax is +\begin{quote} + \cmdinvoke*{figflow}{\meta{width}}{\meta{height}}{\meta{figure}} +\end{quote} +(the user is responsible for having the dimensions correct, and for +ensuring the figure fits on the page). +\begin{ctanrefs} +\item[cutwin.sty]\CTANref{cutwin} +\item[figflow.tex]\CTANref{figflow} +\item[floatflt.sty]\CTANref{floatflt} +\item[picins.sty]\CTANref{picins} +\item[picins \nothtml{\rmfamily}documentation summary]\CTANref{picins-summary} +\item[wrapfig.sty]\CTANref{wrapfig} +\end{ctanrefs} +\LastEdit{2009-06-11} + +\Question[Q-slashbox]{Diagonal separation in corner cells of tables} +\keywords{tabular} + +You want to label both the top or bottom row and the left- or +rightmost column, somewhere at the corner of the table where the row +and column meet. A simple way to achieve the result is to construct +the table with an arrangement of rules (and possibly \csx{multicolumn} +entries), to look like: +\begin{quote} +\begin{verbatim} +----------------- +x y + -------------- + 1 2 3 4 5 +----------------- +1 +2 +3 +4 +5 +----------------- +\end{verbatim} +\end{quote} +However, this doesn't satisfy everyone: many want the labelling in a +single cell at the top left of the table. It sounds a simple enough +requirement, yet it calls for some slightly tricky \LaTeX{} coding. +The \Package{diagbox} package does this job for you: it defines a +command \csx{diagbox} whose two arguments provide the texts to be +used; an optional argument may be used for fine tuning of the result. +It draws a picture with the two labels on either side of a slanting +line; the command (and hence the picture) may be placed in the corner +cell, where the labelled row and column meet. + +The \Package{diagbox} package supersedes \Package{slashbox}; the older +package's commands \csx{slashbox} and \csx{backslashbox} are provided +in a compatible way in the newer package, to ease transition. +\begin{ctanrefs} +\item[diagbox.sty]\CTANref{diagbox} +\item[slashbox.sty]\CTANref{slashbox} +\end{ctanrefs} +\LastEdit{2010-11-22} + +\Question[Q-wholerow]{How to change a whole row of a table} + +Each cell of a table is set in a box, so that a change of font style +(or whatever) only lasts to the end of the cell. If one has a +many-celled table, or a long one which needs lots of rows emphasising, +putting a font style change command in every cell will be impossibly +tedious. + +With the \Package{array} package, you can define column modifiers +which will change the font style for a whole \emph{column}. However, +with a bit of subtlety, one can make such modifiers affect rows rather +than columns. So, we set things up by: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\usepackage{array} +\newcolumntype{$}{>{% + \global\let\currentrowstyle\relax}% +} +\newcolumntype{^}{>{\currentrowstyle}} +\newcommand{\rowstyle}[1]{% + \gdef\currentrowstyle{#1}% + #1\ignorespaces +} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\usepackage{array} +\newcolumntype{$}{>{\global\let\currentrowstyle\relax}} +\newcolumntype{^}{>{\currentrowstyle}} +\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}% + #1\ignorespaces +} +\end{verbatim} +\end{wideversion} +\end{quote} +Now, we put `\texttt{\$}' before the first column specifier; and we +put `\texttt{\textasciicircum }' +before the modifiers of subsequent ones. We then use \csx{rowstyle} at +the start of each row we want to modify: +\begin{quote} +\begin{verbatim} +\begin{tabular}{|$l|^l|^l|} \hline + \rowstyle{\bfseries} + Heading & Big and & Bold \\ \hline + Meek & mild & entry \\ + Meek & mild & entry \\ + \rowstyle{\itshape} + Strange & and & italic \\ + Meek & mild & entry \\ \hline +\end{tabular} +\end{verbatim} +\end{quote} +The \Package{array} package works with several other +\environment{tabular}-like environments from other packages (for +example \environment{longtable}), but unfortunately this trick won't +always work. +\begin{ctanrefs} +\item[array.sty]Distributed as part of \CTANref{2etools}[array] +\end{ctanrefs} + +\Question[Q-multirow]{Merging cells in a column of a table} + +It's easy to come up with a table design that requires a cell that +spans several rows. An example is something where the left-most +column labels the rest of the table; this can be done (in simple +cases) by using % beware line break +\Qref*{diagonal separation in corner cells}{Q-slashbox}, but that +technique rather strictly limits what can be used as the content of +the cell. + +The \Package{multirow} package enables you to construct such multi-row +cells, in a very simple manner. For the simplest possible use, one +might write: +\begin{quote} +\begin{verbatim} +\begin{tabular}{|c|c|} +\hline +\multirow{4}{*}{Common g text} + & Column g2a\\ + & Column g2b \\ + & Column g2c \\ + & Column g2d \\ +\hline +\end{tabular} +\end{verbatim} +\end{quote} +and \Package{multirow} will position ``Common g text'' at the vertical +centre of the space defined by the other rows. Note that the rows +that don't contain the ``multi-row'' specification must have empty +cells where the multi-row is going to appear. + +The ``\texttt{*}'' may be replaced by a column width specification. In this +case, the argument may contain forced line-breaks: +\begin{quote} +\begin{verbatim} +\begin{tabular}{|c|c|} +\hline +\multirow{4}{25mm}{Common\\g text} + & Column g2a\\ + & Column g2b \\ + & Column g2c \\ + & Column g2d \\ +\hline +\end{tabular} +\end{verbatim} +\end{quote} +A similar effect (with the possibility of a little more +sophistication) may be achieved by putting a smaller table that lines +up the text into a \texttt{*}-declared \csx{multirow}. + +The \csx{multirow} command may also used to write labels vertically +down one or other side of a table (with the help of the +\Package{graphics} or \Package{graphicx} package, which provide the +\csx{rotatebox} command): +\begin{quote} +\begin{verbatim} +\begin{tabular}{|l|l|} +\hline +\multirow{4}{*}{\rotatebox{90}{hi there}} + & Column g2a\\ + & Column g2b \\ + & Column g2c \\ + & Column g2d \\ +\hline +\end{tabular} +\end{verbatim} +\end{quote} +(which gives text going upwards; use angle \texttt{-90} for text going +downwards, of course). + +To make a \csx{multicolumn} multi-row ``cell'' in a table, you have to +enclose a \csx{multirow} inside a \csx{multicolumn}~--- the other way +around does not work, so: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\begin{tabular}{|c|c|c|}\hline +\multicolumn{2}{|c|}{\multirow{2}{*}{combined cells}} + &top right\\ \cline{3-3} +\multicolumn{2}{|c|}{} + &middle right\\ \hline +bottom left + &bottom center + &bottom right\\ \hline +\end{tabular} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\begin{tabular}{|c|c|c|}\hline +\multicolumn{2}{|c|}{\multirow{2}{*}% + {combined cells}} + &top right\\ \cline{3-3} +\multicolumn{2}{|c|}{} + &middle right\\ \hline +bottom left + &bottom center + &bottom right\\ \hline +\end{tabular} +\end{verbatim} +\end{narrowversion} +\end{quote} +\Package{Multirow} is set up to interact with the \Package{bigstrut} +package (which is also discussed in the answer to % beware line break +\Qref[question]{spacing lines in tables}{Q-struttab}). You use an +optional argument to the \csx{multirow} command to say how many of the +rows in the multi-row have been opened up with \csx{bigstrut}. + +The documentation of both \Package{multirow} and \Package{bigstrut} is +to be found, as comments, in the package files themselves. +\begin{ctanrefs} +\item[bigstrut.sty]\CTANref{bigstrut} +\item[multirow.sty]\CTANref{multirow} +\end{ctanrefs} + +\subsection{Floating tables, figures, etc.} + +\Question[Q-floatpages]{Floats on their own on float pages} + +It's sometimes necessary to force a float to live on a page by itself. +(It's sometimes even necessary for \emph{every} float to live on a +page by itself.) When the float fails to `set', and waits for the end +of a chapter or of the document, the natural thing to do is to declare +the float as +\begin{quote} + \cmdinvoke{begin}{figure}[p!] +\end{quote} +but the overriding \texttt{!} modifier has no effect on float page floats; so +you have to make the float satisfy the parameters. +\Qref[Question]{Moving tables and figures}{Q-floats} offers some +suggestions, but doesn't solve the one-float-per-page question. + +The `obvious' solution, using the counter \texttt{totalnumber} +(``total number of floats per page'') doesn't work: +\texttt{totalnumber} only applies to floats on `text' pages (pages +containing text as well as one or more float). So, to allow any +size float to take a whole page, set \csx{floatpagefraction} really +small, and to ensure that no more than one float occupies a page, make +the separation between floats really big: +\begin{quote} +\begin{verbatim} +\renewcommand\floatpagefraction{.001} +\makeatletter +\setlength\@fpsep{\textheight} +\makeatother +\end{verbatim} +\end{quote} + +\Question[Q-wideflt]{Centring a very wide figure or table} + +The normal means of centring a figure or table object is to include +\csx{centering} at the top of the float. This doesn't help if the +object is wider than \csx{textwidth}~--- the object starts at the left +margin and juts out into the right margin (which is actually doubly +unsatisfactory, since as well as looking bad, the float won't be +placed until the next \csx{clearpage} or the like.) + +You can avoid the problem by rescaling the figure or table to fit, but +this is often not satisfactory, for several reasons. + +Otherwise, if the object is wider than the printable area of the page, +you've no choice other than to \Qref*{rotate it}{Q-landscape}. If, +however, the object is \emph{just} wider than the text block, you can +make it pretend to be the right size by: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\begin{figure} + \noindent + \makebox[\textwidth]{\includegraphics{my-wide-figure}}% + \caption{This figure juts out into both margins} +\end{figure} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\begin{figure} + \noindent + \makebox[\textwidth]{% + \includegraphics{my-wide-figure}% + }% + \caption{This figure juts out into both margins} +\end{figure} +\end{verbatim} +\end{narrowversion} +\end{quote} +Note the \csx{noindent}: the \csx{makebox} starts a paragraph, and you +really don't want that indented by \csx{parindent}. + +\Question[Q-2colfloat]{Placing two-column floats at bottom of page} + +You specified placement `\texttt{[htbp]}' for your full-width figure or +table, but they always get placed at the top of the page\dots{} Well, +it \emph{is} what the documentation says: \LaTeX{}, unadorned, only +allows full-width floats at the top of a page, or occupying (part of) a +float page. + +The \Package{stfloats} package ameliorates the situation somewhat, and +makes \LaTeX{} honour `[b]' placement as well; the +\Package{dblfloatfix} package combines a tidied version of the changes +made in \Package{stfloats} with the +\begin{narrowversion} % non-hyper + float ordering corrections defined in \Package{fixltx2e} + (\Qref{}{Q-2colfltorder}). +\end{narrowversion} +\begin{wideversion} % hyper + \Qref{float ordering corrections}{Q-2colfltorder} defined in + \Package{fixltx2e}. +\end{wideversion} + +A particular problem with \Package{stfloats} and \Package{dblfloatfix} +is that the float will appear, at its earliest, on the page after it +is specified. This has two undesirable side-effects: first, there may +be no bottom float on the first page of a document, and second, float +numbers may become ``entangled'' (particularly if you're using +\Package{dblfloatfix} that ensures that the early-specified bottom +float is set \emph{before} any single column floats). + +(The \acro{FAQ} team doesn't know of any package that will make +\LaTeX{} honour `[h]' placement of double-column floats, but the +\Package{midfloat} package can be pressed into service to provide +something approximating the effect it would have.) +\begin{ctanrefs} +\item[dblfloatfix.sty]\CTANref{dblfloatfix} +\item[midfloat.sty]Distributed as part of \CTANref{sttools}[midfloat] +\item[stfloats.sty]Distributed as part of \CTANref{sttools}[stfloats] +\end{ctanrefs} + +\Question[Q-mcfloat]{Floats in multicolumn setting} + +If you use +\begin{quote} +\begin{verbatim} +\begin{figure} + ... +\end{figure} +\end{verbatim} +\end{quote} +in a \environment{multicols} environment, the figure won't appear. If +instead you use +\begin{quote} +\begin{verbatim} +\begin{figure*} + ... +\end{figure*} +\end{verbatim} +\end{quote} +the figure will stretch right across the page (just the same as a +\environment{figure*} in standard \LaTeX{}'s \pkgoption{twocolumn} option). + +It's possible to have single-column figures and tables with captions, +using the `\texttt{[H]}' placement option introduced by the \Package{float} +package but you might have to fiddle with the placement because they +won't `float', and exhibit other strange behaviours (such as silently +running off the end of the column at the end of the +\environment{multicols} environment). +\begin{ctanrefs} +\item[float.sty]\CTANref{float} +\item[multicol.sty]Distributed as part of \CTANref{2etools}[multicol] +\end{ctanrefs} + +\Question[Q-dpfloat]{Facing floats on 2-page spread} + +If a pair of floats need to be forced to form a 2-page spread (in a +book, or whatever), the first must lie on the left side of the spread, +on an even-numbered page. The \Package{dpfloat} package provides for +this: the construction to use is: +\begin{quote} +\begin{verbatim} +\begin{figure}[p] + \begin{leftfullpage} + + \end{leftfullpage} +\end{figure} +\begin{figure}[p] + \begin{fullpage} + + \end{fullpage} +\end{figure} +\end{verbatim} +\end{quote} +The construction has no effect on documents with class option +\pkgoption{oneside} (\pkgoption{twoside} is the default for +\Class{book} class). + +A special case of this requirement places the caption for a float on +the next page. (This is useful if you have a float that ``only just'' +fits the page.) You can (with a certain amount of twiddling) make +this work with \Package{dpfloat}, but the \Package{fltpage} package is +specially designed for the job: +\begin{quote} +\begin{verbatim} +\documentclass[twoside]{article} +\usepackage[leftFloats]{fltpage} +\begin{document} +... +\begin{FPfigure} + \includegraphics{my-huge-figure} + \caption{Whew! That was a big one!} +\end{FPfigure} +... +\end{document} +\end{verbatim} +\end{quote} +That example should produce a caption +\begin{quote} + Figure \meta{n} \emph{(facing page)}: Whew! \dots{} +\end{quote} +(Note, however, that the package is an old one, and declares itself to +be a beta release, and contains no valid licence statement so that it +is not in \texlive{}. It seems to work, but\dots{}) + +A alternative route is the ``continued'' mechanism of the +\Package{caption} package. The \csx{ContinuedFloat} macro makes a +small tweak to the next \csx{caption} command, so that the command +makes no increment to the caption number. This does not (of course) +have any effect on actual placement of the float, but it makes the +caption texts read `sensibly': +\begin{quote} +\begin{verbatim} +\begin{table} + \caption{A table} + ... +\end{table} +... +\begin{table}\ContinuedFloat + \caption{A table (cont.)} + ... +\end{table} +\end{verbatim} +\end{quote} +which would produce: +\begin{quote} + Table 3: A table + \dots + Table 3: A table (cont.) +\end{quote} +\begin{ctanrefs} +\item[caption.sty]\CTANref{caption} +\item[dpfloat.sty]\CTANref{dpfloat} +\item[fltpage.sty]\CTANref{fltpage} +\end{ctanrefs} +\LastEdit{2013-02-01} + +\Question[Q-vertposfp]{Vertical layout of float pages} + +By default, \LaTeX{} vertically centres the floats on a float page; +the present author is not alone in not liking this arrangement. +Unfortunately, the control of the positioning is ``buried'' in +\LaTeX{}-internal commands, so some care is needed to change the +layout. + +Float pages use three \LaTeX{} lengths (i.e., \TeX{} skips) to define +their layout: +\begin{description} +\item[\nothtml{\normalfont}\csx{@fptop}] defines the distance from the + top of the page to the top of the first float, +\item[\nothtml{\normalfont}\csx{@fpsep}] defines the separation between + floats, and +\item[\nothtml{\normalfont}\csx{@fpbot}] defines the distance from the + bottom of the last float on the page to the bottom of the page. +\end{description} +(In fact, the output routine places a skip of \csx{@fpsep} above each float, so +the \csx{@fptop} skip is always followed by a correction for that.) + + +The \LaTeX{} defaults are: +\begin{quote} + \csx{@fptop} = \texttt{0pt + 1fil}\\ + \csx{@fpsep} = \texttt{8pt + 2fil}\\ + \csx{@fpbot} = \texttt{0pt + 1fil}\\ +\end{quote} +so that the gaps expand to fill the space not occupied by floats, but +if there is more than one float on the page, the gap between them will +expand to twice the space at top and bottom. + +Those who understand this stuff will be able to play elaborate games, +but the commonest requirement, that the floats start at the top of the +page, is a simple thing to do: +\begin{quote} +\begin{verbatim} +\makeatletter +\setlength{\@fptop}{0pt} +\makeatother +\end{verbatim} +\end{quote} +Surprisingly, you may find this setting leaves your floats too high on +the page. One can justify a value of \texttt{5pt} (in place of +\texttt{0pt})~--- it's roughly the difference between \csx{topskip} +and the height of normal (\texttt{10pt}) text. + +Note that this is a ``global'' setting (best established in a class +file, or at worst in the document preamble); making the change for a +single float page is likely (at the least) to be rather tricky. + +\Question[Q-figurehere]{Figure (or table) \emph{exactly} where I want it} + +This is of course a contradiction: \environment{figure} and +\environment{table} are \emph{designed} to float, and will always have +the potential to appear away from where you asked for them. Therefore +you need something that behaves like a \environment{figure} or +\environment{table} environment, except that it doesn't allow the +figure or table to float. + +The most straightforward way is to use of the \Package{float} package; +it gives you a \texttt{[H]} float placement option that prevents +floating: +\begin{quote} +\begin{verbatim} +\begin{figure}[H] + \centering + \includegraphics{foo} + \caption{caption text} + \label{fig:nonfloat} +\end{figure} +\end{verbatim} +\end{quote} +As the example suggests, such a `\texttt{[H]}' figure (or +corresponding table) offers all you need to cross-reference as well +as typeset. (The package \Package{here} provides the same function, +but is no longer recommended.) + +However, you don't actually \emph{have} to use \Package{float} (or +\Package{here}) since it is, in fact, doing rather little for you. +You can place your figure as you please, with a sequence like +\begin{quote} +\begin{verbatim} +\begin{center} + \includegraphics{foo} + \captionof{figure}{caption text} + \label{fig:nonfloat} +\end{center} +\end{verbatim} +\end{quote} +which relies on the \csx{captionof} command to place a caption without +benefit of an enclosing float. That command may be had from the extremely +simple-minded package \Package{capt-of} or from the highly +sophisticated \Package{caption} package. + +Using either method, you have to deal with the possibility of the +figure or table being too large for the page. (Floating objects will +float away in this circumstance; ``doing it by hand'', like this, you +take upon yourself the responsibility for avoiding % ! line break +`\textit{Overfull \csx{vbox}}' errors. + +A further problem is the possibility that such ``fixed floats'' will +overtake ``real floats'', so that the numbers of figures will be out +of order: figure 6 could be on page 12, while figure 5 had floated to +page 13. It's best, therefore, either to stay with floating figures +throughout a document, or to use fixed figures throughout. + +If it's really impossible to follow that counsel of perfection, you +can use the \Package{perpage} package's command \csx{MakeSorted} +command: +\begin{quote} +\begin{verbatim} +... +\usepackage{float} +\usepackage{perpage} +\MakeSorted{figure} +\MakeSorted{table} +... +\end{verbatim} +\end{quote} +and the sequence of float numbers is all correct. +\begin{ctanrefs} +\item[capt-of.sty]\CTANref{capt-of} +\item[caption.sty]\CTANref{caption} +\item[float.sty]\CTANref{float} +\item[here.sty]\CTANref{here} +\item[perpage.sty]Distributed as part of \CTANref{bigfoot}[perpage] +\end{ctanrefs} + +\subsection{Footnotes} + +\Question[Q-footintab]{Footnotes in tables} + +The standard \LaTeX{} \csx{footnote} command doesn't work in tables; +the tabular environment (and its ``relations'') traps footnotes, and +they can't escape to the bottom of the page. As a result, you get +footnote marks in the table, and nothing else. + +This accords with common typographic advice: footnotes and tables are +reckoned not to mix. + +The solution, if you accept the advice, is to use ``table notes''. +The package \Package{threeparttable} provides table notes, and +\Package{threeparttablex} additionally supports them in +\environment{longtable}s. \Package{Threeparttable} works happily in +ordinary text, or within a \environment{table} float. + +The \Package{ctable} package extends the model of +\Package{threeparttable}, and also uses the ideas of the +\Package{booktabs} package. The \csx{ctable} command does the complete +job of setting the table, placing the caption, and defining the +notes. The ``table'' may consist of diagrams, and a parameter in +\csx{ctable}'s optional argument makes the float that is created a +``figure'' rather than a ``table''. + +If you really want ``real'' footnotes in tables, despite the expert +advice, you can: +\begin{itemize} +\item Use \csx{footnotemark} to position the little marker + appropriately, and then put in \csx{footnotetext} commands to fill in + the text once you've closed the \environment{tabular} environment. + This is described in Lamport's book, but it gets messy if there's + more than one footnote. +\item Stick the \environment{tabular} environment in a + \environment{minipage}. Footnotes in the + table then ``work'', in the \environment{minipage}'s style, with no + extra effort. (This is, in effect, somewhat like table notes, but + the typeset appearance isn't designed for the job.) +\item Use \Package{tabularx} or \Package{longtable} from the \LaTeX{} + tools distribution; they're noticeably less efficient than the + standard \environment{tabular} environment, but they do allow + footnotes. +\item Use \Package{tablefootnote}; it provides a command \csx{tablefootnote}, + which does the job without fuss. +\item Use \Package{footnote}, which provides an + \environment{savenotes} which collects all footnotes and emits them + at the end of the environment; thus if you put your + \environment{tabular} environment inside a \environment{savenotes} + environment, the footnotes will appear as needed. Alternatively, + you may use \cmdinvoke{makesavenoteenv}{tabular} in the preamble of your + document, and tables will all behave as if they were inside a + \environment{savenotes} environment. +\item Use \Package{mdwtab} from the same bundle; it will handle + footnotes as you might expect, and has other facilities to increase + the beauty of your tables. Unfortunately, it may be incompatible + with other table-related packages, though not those in the standard `tools' + bundle. +\end{itemize} +All the techniques listed will work, to some extent, whether in a float or +in ordinary text. The author of this \acro{FAQ} answer doesn't actually +recommend any of them, believing that table notes are the way to go\dots{} +\begin{ctanrefs} +\item[ctable.sty]\CTANref{ctable} +\item[footnote.sty]Distributed as part of \CTANref{mdwtools}[footnote] +\item[longtable.sty]Distributed as part of \CTANref{2etools}[longtable] +\item[mdwtab.sty]Distributed as part of \CTANref{mdwtools}[mdwtab] +\item[tablefootnote.sty]\CTANref{tablefootnote} +\item[threeparttable.sty]\CTANref{threeparttable} +\item[threeparttablex.sty]\CTANref{threeparttablex} +\item[tabularx.sty]Distributed as part of \CTANref{2etools}[tabularx] +\end{ctanrefs} +\LastEdit{2013-03-11} + +\Question[Q-ftnsect]{Footnotes in \LaTeX{} section headings} + +The \csx{footnote} command is fragile, so that simply placing the +command in \csx{section}'s arguments isn't satisfactory. Using +\csx{protect}\csx{footnote} isn't a good idea either: the arguments of a +section command are used in the table of contents and (more +dangerously) potentially also in page headers. While footnotes will +work in the table of contents, it's generally not thought a ``good +thing'' to have them there; in the page header, footnotes will simply +fail. Whatever the desirability of the matter, there's no mechanism +to suppress the footnote in the page header while allowing it in the table +of contents, so the footnote may only appear in the section heading itself. + +To suppress the footnote in headings and table of contents: +\begin{itemize} +\item Take advantage of the fact that the mandatory argument doesn't + `move' if the optional argument is present: + + \cmdinvoke{section}[title]% + \texttt{\{title}\cmdinvoke{footnote}{title ftnt}\texttt{\}} +\item Use the \Package{footmisc} package, with package option + \texttt{stable}~--- this modifies footnotes so that they softly and + silently vanish away if used in a moving argument. With this, you + simply need: +\begin{verbatim} +% in the document preamble +\usepackage[stable]{footmisc} +... +% in the body of the document +\section{title\footnote{title ftnt}} +\end{verbatim} +\end{itemize} +\begin{ctanrefs} +\item[footmisc.sty]\CTANref{footmisc} +\end{ctanrefs} + +\Question[Q-ftncapt]{Footnotes in captions} + +Footnotes in captions are especially tricky: they present problems of +their own, on top of the problems one experiences with +\Qref*{footnotes in section titles}{Q-ftnsect} (footnotes migrating to +to the list of figures or tables, or % ! line break +\Qref{apparently random errors}{Q-extrabrace} because +\csx{footnote} is a fragile command), and with % ! line break +\Qref*{footnotes in tables}{Q-footintab} (typically, the footnote +simply disappears). Fortunately, the requirement for footnotes in +captions is extremely rare: if you are experiencing problems, it is +worth reviewing what you are trying to say by placing this footnote: +other options are to place text at the bottom of the float, or to +place a footnote at the point where you refer to the float. + +Note that the \Package{threeparttable} scheme (see, again, % ! line break +\Qref[question]{footnotes in tables}{Q-footintab}) also applies +to notes in captions, and may very well be preferable to whatever you +were thinking of. + +If you \emph{are} going to proceed: +\begin{itemize} +\item use an optional argument in your \csx{caption} command, that + doesn't have the footnote in it; this prevents the footnote + appearing in the ``List of \dots{}'', and +\item put your whole float in a \environment{minipage} so as to keep + the footnotes with the float. +\end{itemize} +so we have: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\begin{figure} + \begin{minipage}{\textwidth} + ... + \caption[Compact Routing Example]% + {Compact Routing\footnote{something} Example} + \end{minipage} +\end{figure} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\begin{figure} + \begin{minipage}{\textwidth} + ... + \caption[Compact Routing Example]% + {Compact Routing\footnote{something} + Example} + \end{minipage} +\end{figure} +\end{verbatim} +\end{narrowversion} +\end{quote} +So, we make an entry for the List of Figures, which doesn't hold +troublesome commands, such as \csx{footnote}. + +However, \emph{as well as} all of the above, one \emph{also} has to +deal with the tendency of the \csx{caption} command to produce the +footnote's text twice. For this last problem, there is no tidy +solution this author is aware of. + +If you're suffering the problem, a well-constructed \csx{caption} +command in a \environment{minipage} environment within a float (as +in the example above) can produce \emph{two} copies of the footnote +body ``something''. (In fact, the effect only occurs with captions that are +long enough to require two lines to be typeset, and so wouldn't appear +with such a short caption as that in the example above.) + +The documentation of the \Package{ccaption} package describes a really +rather awful work-around for this problem. +\begin{ctanrefs} +\item[ccaption.sty]\CTANref{ccaption} +\item[threeparttable.sty]\CTANref{threeparttable} +\end{ctanrefs} +\LastEdit{2012-04-12} + +\Question[Q-repfootnote]{Footnotes whose texts are identical} + +If the \emph{same} footnote turns up at several places within a +document, it's often inappropriate to repeat the footnote in its +entirety over and over again. We can avoid repetition by +semi-automatic means, or by simply labelling footnotes that we know +we're going to repeat and then referencing the result. There is no +completely automatic solution (that detects and suppresses repeats) +available. + +If you know you only have one footnote, which you want to repeat, the +solution is simple: merely use the optional argument of +\csx{footnotemark} to signify the repeats: +\begin{quote} +\begin{verbatim} +...\footnote{Repeating note} +... +...\footnotemark[1] +\end{verbatim} +\end{quote} +\dots{}\@ which is very easy, since we know there will only ever be a +footnote number 1. A similar technique can be used once the footnotes +are stable, reusing the number that \LaTeX{} has allocated. This can +be tiresome, though, as any change of typesetting could change the +relationships of footnote and repeat: labelling is inevitably better. + +Simple hand-labelling of footnotes is possible, using a counter dedicated +to the job: +\begin{quote} +\begin{verbatim} +\newcounter{fnnumber} +... +...\footnote{Text to repeat}% +\setcounter{fnnumber}{\thefootnote}% +... +...\footnotemark[\thefnnumber] +\end{verbatim} +\end{quote} +but this is somewhat tedious. \LaTeX{}'s labelling mechanism can be +summoned to our aid, but there are ugly error messages before the +\csx{ref} is resolved on a second run through \LaTeX{}: +\begin{quote} +\begin{verbatim} +...\footnote{Text to repeat\label{fn:repeat}} +... +...\footnotemark[\ref{fn:repeat}] +\end{verbatim} +\end{quote} +Alternatively, one may use the \csx{footref} command, which has the +advantage of working even when the footnote mark isn't expressed as a +number. The command is defined in the \Package{footmisc} package and +in the \Class{memoir} class (at least); \csx{footref} reduces the above +example to: +\begin{quote} +\begin{verbatim} +...\footnote{Text to repeat\label{fn:repeat}} +... +...\footref{fn:repeat} +\end{verbatim} +\end{quote} +This is the cleanest simple way of doing the job. Note that the +\csx{label} command \emph{must} be inside the argument of +\csx{footnote}. + +The \Package{fixfoot} package takes away some of the pain of the +matter: you declare footnotes you're going to reuse, typically in the +preamble of your document, using a \csx{DeclareFixedFoot} command, and +then use the command you've `declared' in the body of the document: +\begin{quote} +\begin{verbatim} +\DeclareFixedFootnote{\rep}{Text to repeat} +... +...\rep{} +...\rep{} +\end{verbatim} +\end{quote} +The package ensures that the repeated text appears at most once per +page: it will usually take more than one run of \LaTeX{} to get rid of +the repeats. +\begin{ctanrefs} +\item[fixfoot.sty]\CTANref{fixfoot} +\item[footmisc.sty]\CTANref{footmisc} +\item[memoir.cls]\CTANref{memoir} +\end{ctanrefs} + +\Question[Q-multfoot]{More than one sequence of footnotes} + +The need for more than one series of footnotes is common in critical +editions (and other literary criticism), but occasionally arises in +other areas. + +Of course, the canonical critical edition package, \Package{edmac}, +offers the facility, as does its \LaTeX{} port, the \Package{ledmac} +package. + +Multiple ranges of footnotes are offered to \LaTeX{} users by the +\Package{manyfoot} package. The package provides a fair array of +presentation options, as well. Another critical edition +\Package{ednotes} package is built upon a basis that includes +\Package{manyfoot}, as its mechanism for multiple sets of footnotes. + +The \Package{bigfoot} package also uses \Package{manyfoot} as part of +its highly sophisticated structure of footnote facilities, which was +also designed to support typesetting critical editions. +\begin{ctanrefs} +\item[bigfoot]\CTANref{bigfoot} +\item[edmac]\CTANref{edmac} +\item[ednotes]\CTANref{ednotes} +\item[ledmac]\CTANref{ledmac} +\item[manyfoot.sty]Distributed as part of \CTANref{ncctools}[manyfoot] +\end{ctanrefs} + +\Question[Q-footnpp]{Footnotes numbered ``per page''} + +The obvious solution is to make the footnote number reset whenever the +page number is stepped, using the % ! line break +\Qref*{\LaTeX{} internal mechanism}{Q-addtoreset}. Sadly, the place +in the document where the page number is stepped is unpredictable, not +(``tidily'') at the end of the printed page; so changing the footnote +number only ever works by `luck'. + +As a result, resetting footnotes is inevitably a complicated process, +using labels of some sort. It's nevertheless important, given the +common requirement for footnotes marked by symbols (with painfully +small symbol sets). There are four packages that manage it, one way +or another. + +The \Package{perpage} and \Package{zref-perpage} packages provide a +general mechanism for resetting counters per page, so can obviously be +used for this task. The interface is pretty simple: +\cmdinvoke{MakePerPage}{footnote} (in \Package{perpage}) or +\cmdinvoke{zmakeperpage}{footnote} (in \Package{zref-perpage}). If +you want to restart the counter at something other than~1 (for example +to avoid something in the \LaTeX{} footnote symbol list), you can use: +\cmdinvoke{MakePerPage}[2]{footnote} (in \Package{perpage}) or +\cmdinvoke{zmakeperpage}[2]{footnote} (in \Package{zref-perpage}). +Note that you can also load \Package{zref-perpage} + +\Package{Perpage} is a compact and efficient package; +\Package{zref-perpage}, being a \Package{zref} ``module'', comes with +\Package{zref}'s general mechanism for extending the the +\csx{label}---\csx{[page]ref} of \latex{}, which can offer many other +useful facilities. + +The \Package{footmisc} package provides a variety of means of +controlling footnote appearance, among them a package option +\pkgoption{perpage} that adjusts the numbering per page; if you're +doing something else odd about footnotes, it means you may only need +the one package to achieve your ends. + +The \Package{footnpag} package also does per-page footnotes (and +nothing else). With the competition from \Package{perpage}, it's +probably not particularly useful any more. +\begin{ctanrefs} +\item[footmisc.sty]\CTANref{footmisc} +\item[footnpag.sty]\CTANref{footnpag} +\item[perpage.sty]Distributed as part \CTANref{bigfoot}[perpage] +%\item[zref.sty]Distributed as part of \CTANref{oberdiek}[zref] +\item[zref-perpage.sty]Distributed as part of \Package{zref} in + \CTANref{oberdiek}[zref] +\end{ctanrefs} + +\Question[Q-run-fn-nos]{Not resetting footnote numbers per chapter} + +Some classes (for example, \Class{book} and \Class{report}) set up a +different set of footnotes per chapter, by resetting the footnote +number at the start of the chapter. This is essentially the same +action as that of % ! line break +\Qref*{equation, figure and table numbers}{Q-running-nos}, +except that footnote numbers don't get ``decorated'' with the chapter +number, as happens with those other numbers. + +The solution is the same: use the \Package{chngcntr} package; since the +numbers aren't ``decorated'' you can use the \csx{counterwithout*} +variant; the code: +\begin{quote} +\begin{verbatim} +\counterwithout*{footnote}{chapter} +\end{verbatim} +\end{quote} +is all you need +\begin{ctanrefs} +\item[chngcntr.sty]\CTANref{chngcntr} +\end{ctanrefs} + +\subsection{Document management} + +\Question[Q-filename]{What's the name of this file} + +One might want this so as to automatically generate a page header or +footer recording what file is being processed. It's not easy\dots{} + +\TeX{} retains what it considers the name of the \emph{job}, only, in +the primitive \csx{jobname}; this is the name of the file first +handed to \TeX{}, stripped of its directory name and of any extension +(such as \extension{tex}). If no file was passed (i.e., you're using +\TeX{} interactively), \csx{jobname} has the value \texttt{texput} +(the name that's given to \extension{log} files in this case). + +This is fine, for the case of a small document, held in a single file; +most significant documents will be held in a bunch of files, and +\TeX{} makes no attempt to keep track of files input to the +\emph{job}. So the user has to keep track, himself~--- the only way +is to patch the input commands and cause them to retain details of the +file name. This is particularly difficult in the case of \plaintex{}, +since the syntax of the \csx{input} command is so peculiar. + +In the case of \LaTeX{}, the input commands have pretty regular +syntax, and the simplest \Qref*{patching techniques}{Q-patch} can be +used on them. (Note that latex{}'s \csx{input} command is itself a +patch on top of the \plaintex{} command. Our patches apply to the +\latex{} version of the command, which is used as \cmdinvoke*{input}{file}) + +%% If you only have one level of input (you never input things from a +%% file that was itself input), the job is almost trivial: +%% \begin{quote} +%% \begin{verbatim} +%% \def\ThisFile{\jobname} +%% \let\OldInput\input +%% \renewcommand{\input}[1]{% +%% \renewcommand{\ThisFile}{#1}% +%% \OldInput#1% +%% } +%% \end{verbatim} +%% \end{quote} +%% With that, the macro \csx{ThisFile} always contains the last thing +%% input: it starts pointing at the base file of your document +%% (\csx{jobname}), and thereafter changes every time you use +%% \cmdinvoke*{input}{file}. Note that this is not satisfactory if your +%% document contains things \emph{other} than \csx{input} commands. For +%% example, in: +%% \begin{quote} +%% \begin{verbatim} +%% \documentclass{article} +%% ... (macros above) +%% \begin{document} +%% \input{preamble} +%% +%% \input{postamble} +%% \end{document} +%% \end{verbatim} +%% \end{quote} +%% \csx{ThisFile} contains ``\texttt{preamble}'' throughout the % !line break +%% \meta{body of document}. + +%% Most ordinary users will quickly become irritated with the simplicity +%% of of the \csx{ThisFile} mechanism above. The following code is more +%% cunning: it maintains details of the files you've `come through' to +%% get to where you are, and it restores \csx{ThisFile} to what the +%% previous file was before returning. +%% \begin{quote} +%% \begin{verbatim} +%% \def\ThisFile{\jobname} +%% \newcounter{FileStack} +%% \let\OrigInput\input +%% \renewcommand{\input}[1]{% +%% \stackinput{#1}{\OrigInput}% +%% } +%% \newcommand{\stackinput}[2]{% +%% \stepcounter{FileStack}% +%% \expandafter\let +%% \csname NameStack\theFileStack\endcsname +%% \ThisFile +%% \def\ThisFile{#1}% +%% #2#1% +%% \expandafter\let\expandafter +%% \ThisFile +%% \csname NameStack\theFileStack\endcsname +%% \addtocounter{FileStack}{-1}% +%% } +%% \end{verbatim} +%% \end{quote} +%% To do the same for \csx{include}, we need the simple addition: +%% \begin{quote} +%% \begin{verbatim} +%% \let\OrigInclude\include +%% \renewcommand{\include}[1]{% +%% \stackinput{#1}{\OrigInclude}% +%% } +%% \end{verbatim} +%% \end{quote} +%% Remember, both examples of patching \csx{input} assume you always use +%% \LaTeX{} syntax, i.e., always use braces around the argument. + +It is possible to keep track of the name of the file currently being +processed, but it's surprisingly difficult (these \acro{FAQ}s offered +code, for a long time, that just didn't work in many cases). + +The \Package{currfile} package provides a regular means of keeping +track of the details of the current file (its name in +\csx{currfilename}, directory in \csx{currfiledir}, as well as the +file `base' name (less its extension) and its extension). +\Package{Currfile} does this with the help of a second package, +\Package{filehook}, which spots file operations that use \csx{input}, +\csx{InputIfFileExists} and \csx{include}, as well as package and +class loading. + +The \Package{FiNK} (``File Name Keeper'') package keeps track of the +file name and extension, in a macro \csx{finkfile}. \Package{FiNK} is +now deprecated, in favour of \Package{currfile}, but remains available +for use in old documents. +% +%% If you need the +%% unadorned file name (without its `\extension{tex}'), use the commands: +%% \begin{quote} +%% \begin{verbatim} +%% \def\striptexext#1.tex{#1} +%% ... +%% \edef\ThisFile{\expandafter\stripext\finkfile} +%% \end{verbatim} +%% \end{quote} +% +The \Package{FiNK} bundle includes a \File{fink.el} that provides +support under \ProgName{emacs} with \acro{AUC}-\TeX{}. +\begin{ctanrefs} +\item[currfile.sty]\CTANref{currfile} +\item[filehook.sty]\CTANref{filehook} +\item[fink.sty]\CTANref{fink} +\end{ctanrefs} + +\Question[Q-filesused]{All the files used by this document} + +When you're sharing a document with someone else (perhaps as part of a +co-development cycle) it's as well to arrange that both correspondents +have the same set of auxiliary files, as well as the document in +question. Your correspondent obviously needs the same set of files +(if you use the \Package{url} package, she has to have \Package{url} +too, for example). But suppose you have a bug-free version of the +\Package{shinynew} package but her copy is still the unstable +original; until you both realise what is happening, such a situation +can be very confusing. + +The simplest solution is the \LaTeX{} \csx{listfiles} command. This +places a list of the files used and their version numbers in the log +file. If you extract that list and transmit it with your file, it can +be used as a check-list in case that problems arise. + +Note that \csx{listfiles} only registers things that are input by the +``standard'' \LaTeX{} mechanisms (\csx{documentclass}, \csx{usepackage}, +\csx{include}, \csx{includegraphics} and so on). +The \csx{input} command, as modified by \LaTeX{} and used, with +\LaTeX{} syntax, as: +\begin{verbatim} + \input{mymacros} +\end{verbatim} +records file details for \File{mymacros.tex}, but if you use \TeX{} +primitive syntax for \csx{input}, as: +\begin{verbatim} + \input mymacros +\end{verbatim} +\File{mymacros.tex} \emph{won't} be recorded, and so won't listed by +\csx{listfiles}~--- you've bypassed the mechanism that records its use. + +The \Package{snapshot} package helps the owner of a \LaTeX{} document +obtain a list of the external dependencies of the document, in a form +that can be embedded at the top of the document. The intended use of +the package is the creation of archival copies of documents, but it +has application in document exchange situations too. + +The \ProgName{bundledoc} system uses the \Package{snapshot} to produce an +archive (e.g., \extension{tar.gz} or \extension{zip}) of the files needed by your +document; it comes with configuration files for use with +\texlive{}-\ProgName{Unix} and \ProgName{\miktex{}}. It's plainly useful when +you're sending the first copy of a document. + +The \ProgName{mkjobtexmf} finds which files are used in a `job', +either via the \texttt{-recorder} option of \tex{}, or by using the +(Unix) command \ProgName{strace} to keep an eye on what \tex{} is +doing. The files thus found are copied (or linked) to a directory +which may then be saved for transmission or archiving. +\begin{ctanrefs} +\item[bundledoc]\CTANref{bundledoc} +\item[mkjobtexmf]\CTANref{mkjobtexmf} +\item[snapshot.sty]\CTANref{snapshot} +\end{ctanrefs} +\LastEdit{2014-01-26} + +\Question[Q-changebars]{Marking changed parts of your document} + +One often needs clear indications of how a document has changed, but +the commonest technique, ``change bars'' (also known as ``revision +bars''), requires surprisingly much +trickery of the programmer. The problem is that \TeX{} `proper' +doesn't provide the programmer with any information about the +``current position'' from which a putative start- or end-point of a +bar might be calculated. \PDFTeX{} \emph{does} provide that +information, but no \PDFTeX{}-based changebar package has been +published, that takes advantage of that. + +The simplest package that offers change bars is Peter Schmitt's +\Package{backgrnd.tex}; this was written as a \plaintex{} application +that patches the output routine, but it appears to work at least on +simple \LaTeX{} documents. Wise \LaTeX{} users will be alerted by the +information that \Package{backgrnd} patches their output routine, and +will watch its behaviour very carefully (patching the \LaTeX{} output +routine is not something to undertake lightly\dots{}). + +The longest-established \LaTeX{}-specific solution is the +\Package{changebar} package, +which uses \csx{special} commands supplied by the driver you're using. +You need therefore to tell the package which driver to you're using +(in the same way that you need to tell the \Package{graphics} +package); the list of available drivers is pretty +wide, but does not include \ProgName{dvipdfm}. The package comes with +a shell script \ProgName{chbar.sh} (for use on Unix machines) that +will compare two documents and generate a third which is marked-up +with \Package{changebar} macros to highlight changes. + +The shareware \ProgName{WinEDT} editor has a macro that will generate +\Package{changebar} (or other) macros to show differences from an +earlier version of your file, stored in an \ProgName{RCS}-controlled +repository~--- see +\URL{http://www.winedt.org/Macros/LaTeX/RCSdiff.php} + +The \Package{vertbars} package uses the techniques of the +\Package{lineno} package (which it loads, so the \Package{lineno} +itself must be installed); it's thus the smallest of the packages for +change bar marking, since it leaves all the trickery to another +package. \Package{Vertbars} defines a \environment{vertbar} +environment to create changebars. + +The \Package{framed} package is +another that provides bars as a side-effect of other desirable +functionality: its \environment{leftbar} environment is simply a +stripped-down frame (note, though, that the environment makes a +separate paragraph of its contents, so it is best used when the +convention is to mark a whole changed paragraph. + +Finally, the \Class{memoir} class allows marginal editorial comments, +which you can obviously use to delimit areas of changed text. + +An even more comprehensive way to keep track of changes is employed by +some word-processors~--- to produce a document that embodies both +``old'' and ``new'' versions. + +To this end, the package \Package{changes} allows the user to manually +markup changes of text, such as additions, deletions, or replacements. +Changed text is shown in a different colour; deleted text is crossed +out. The package allows you to define additional authors and their +associated colour; it also allows you to define a markup for authors +or annotations. The documentation (very clearly) demonstrates how the +various functions work. + +The \ProgName{Perl} script \ProgName{latexdiff} may also be used to +generate such markup for \LaTeX{} documents; you feed it the two +documents, and it produces a new \LaTeX{} document in which the +changes are very visible. An example of the output is embedded in the +documentation, +\begin{narrowversion} % actually non-hyperversion + \File{latexdiff-man.pdf}, in the distribution. +\end{narrowversion} +\begin{wideversion} % actually hyperversion + \href{http://mirrors.ctan.org/support/latexdiff/latexdiff-man.pdf}{latexdiff-man.pdf} + (part of the distribution). +\end{wideversion} +A rudimentary revision facility is provided by another +\ProgName{Perl} script, \ProgName{latexrevise}, which accepts or rejects +all changes. Manual editing of the difference file can be used to +accept or reject selected changes only. +\begin{ctanrefs} +\item[backgrnd.tex]\CTANref{backgrnd} +\item[changebar.sty]\CTANref{changebar} +\item[changes.sty]\CTANref{changes} +\item[framed.sty]\CTANref{framed} +\item[latexdiff, latexrevise]\CTANref{latexdiff} +\item[lineno.sty]\CTANref{lineno} +\item[memoir.cls]\CTANref{memoir} +\item[vertbars.sty]\CTANref{vertbars} +\item[winedt]\CTANref{winedt} +\end{ctanrefs} + +\Question[Q-conditional]{Conditional compilation and ``comments''} + +While \LaTeX{} (or any other \TeX{}-derived package) isn't really like a +compiler, people regularly want to do compiler-like things using it. +Common requirements are conditional `compilation' and `block +comments', and several \LaTeX{}-specific means to this end are available. + +The simple \cmdinvoke{newcommand}{\csx{gobble}}[1]\texttt{\{\}} +and \csx{iffalse}\texttt{ ... }\csx{fi} aren't really satisfactory (as +a general solution) for comments, since the matter being skipped is +nevertheless scanned by \TeX{}, not always as you would expect. The +scanning imposes restrictions on what you're allowed to skip; this may +not be a problem in \emph{today's} job, but could return to bite you +tomorrow. For an example of surprises that may come to bite you, +consider the following example (derived from real user experience): +\begin{quote} +\begin{verbatim} +\iffalse % ignoring this bit +consider what happens if we +use \verb+\iftrue+ -- a surprise +\fi +\end{verbatim} +\end{quote} +The \csx{iftrue} is spotted by \TeX{} as it scans, ignoring the +\csx{verb} command; so the \csx{iffalse} isn't terminated by the +following \csx{fi}. Also, \csx{gobble} is pretty inefficient at +consuming anything non-trivial, since all the matter to be skipped is +copied to the argument stack before being ignored. + +If your requirement is for a document from which whole chapters (or +the like) are missing, consider the \LaTeX{} +\csx{include}/\csx{includeonly} system. If you `\csx{include}' your +files (rather than \csx{input} them~--- see % line wrap! +\Qref[question]{What's going on in my \csx{include} commands?}{Q-include}), +\LaTeX{} writes macro traces of what's going on at the end of each +chapter to the \extension{aux} file; by using \csx{includeonly}, you can give +\LaTeX{} an exhaustive list of the files that are needed. Files that +don't get \csx{include}d are skipped entirely, but the document +processing continues as if they \emph{were} there, and page, footnote, +and other numbers are not disturbed. Note that you can choose which +sections you want included interactively, using the +\Package{askinclude} package. + +A variant on the \csx{includeonly} mechanism is offered by the +\Package{stampinclude} package, which takes advantage of the \pdftex{} +\csx{pdffilemoddate} command. When an \csx{include}d file is +processed in a \latex{} document, an \extension{aux} file is created +holding data such as page-number ranges and chapter/section numbers. +When \csx{stampinclude} is included in a document, it compares the +file system modification times for each file and its corresponding +\extension{aux} file; the file is only compiled in ``this run'' of the +document if the file is newer than its corresponding \extension{aux} +file. The package requires a current \pdftex{}, and will also run on +\luatex{} if the \Package{pdftexcmds} package is available +(\Package{pdftexcmds} emulates the requisite \pdftex{} commands using +\texttt{lua}. Apart from this requirement, \Package{stampinclude} is +a low-maintenace object; include it in your document and it silently +does its job. When you want a final version of your document, delete +all the \extension{aux} files, and and \Package{stampinclude} won't +interfere.) + +The inverse can be done using the \Package{excludeonly} package: this +allows you to exclude a (list of) \csx{include}d files from your +document, by means of an \csx{excludeonly} command. + +If you want to select particular pages of your document, use Heiko +Oberdiek's \Package{pagesel} or the \Package{selectp} packages. You +can do something similar with an existing \acro{PDF} document (which +you may have compiled using \ProgName{pdflatex} in the first place), +using the \Package{pdfpages} package. The job is then done with a +document looking like: +\begin{quote} +\begin{verbatim} +\documentclass{article} +\usepackage[final]{pdfpages} +\begin{document} +\includepdf[pages=30-40]{yoursource.pdf} +\end{document} +\end{verbatim} +\end{quote} +(To include all of the document, you write +\begin{quote} +\begin{verbatim} +\includepdf[pages=-]{yoursource.pdf} +\end{verbatim} +\end{quote} +omitting the start and end pages in the optional argument.) + +If you want flexible facilities for including or excluding small +portions of a file, consider the \Package{comment}, \Package{version} or +\Package{optional} packages. + +The \Package{comment} package allows you to declare areas of a document to be +included or excluded; you make these declarations in the preamble of +your file. The command \cmdinvoke*{includecomment}{version-name} +declares an environment \environment{version-name} whose content will +be included in your document, while +\cmdinvoke*{excludecomment}{version-name} defines an environment whose +content will be excluded from the document. The package uses a method +for exclusion that is pretty robust, and can cope with ill-formed +bunches of text (e.g., with unbalanced braces or \csx{if} commands). + +(These FAQs employ the \Package{comment} package to alter layout +between the printed (two-column) version and the \acro{PDF} version +for browsing; there are \environment{narrowversion} and +\environment{wideversion} for the two versions of the file.) + +\Package{version} offers similar facilities to \File{comment.sty} +(i.e., \csx{includeversion} and \csx{excludeversion} commands); +it's far ``lighter weight'', but is less robust (and in particular, +cannot deal with very large areas of text being included/excluded). + +A significant development of \Package{version}, confusingly called +\Package{versions} (i.e., merely a plural of the old package name). +\Package{Versions} adds a command +\cmdinvoke*{markversion}{version-name} which defines an environment +that prints the included text, with a clear printed mark around it. + +\Package{optional} defines a command \csx{opt}; its first argument is +an `inclusion flag', and its second is text to be included or +excluded. Text to be included or excluded must be well-formed +(nothing mismatched), and should not be too big~--- if a large body of +text is needed, \csx{input} should be used in the argument. +The documentation (in the package file itself) tells you +how to declare which sections are to be included: this can be done in +the document preamble, but the documentation also suggests ways in +which it can be done on the command line that invokes \LaTeX{}, or +interactively. + +And, not least of this style of conditional compilation, +\Package{verbatim} (which should be available in any distribution) +defines a \environment{comment} environment, which enables the +dedicated user of the source text editor to suppress bits of a +\LaTeX{} source file. The \Class{memoir} class offers the same +environment. + +An interesting variation is the \Package{xcomment} package. This +defines an environment whose body is all excluded, apart from +environments named in its argument. So, for example: +\begin{quote} +\begin{verbatim} +\begin{xcomment}{figure,table} + This text is not included + \begin{figure} + This figure is included + \end{figure} + This is not included, either + \begin{table} + This table also included + \end{table} + ... +\end{xcomment} +\end{verbatim} +\end{quote} + +The \Package{tagging} package offers another neat set of syntax, which +allow the user to apply ``tags'' to chunks of text, and to include and +exclude tagged text, according to the tags. For example, the user may +`use' text marked with some tags, and to `drop' marked with others: +\begin{quote} +\begin{verbatim} +\usetag{} +\droptag{} +\end{verbatim} +\end{quote} +(the tag lists consist of comma-separated single words). + +There are then commands +\begin{quote} +\begin{verbatim} +\tagged{}{} +\end{verbatim} +\end{quote} +which reproduces the text only if the \meta{tag list} contains at +least one tag listed in the \csx{usetag} comand, and +\begin{quote} +\begin{verbatim} +\untagged{}{} +\end{verbatim} +\end{quote} +which only reproduces the text unless the \meta{tag list} contains +none of the tags mention in the \csx{droptag} command. + +Further commands offer an if-then-else setup, and specify +\environment{taggedblock} and \environment{untaggedblock} environments +that. + +Another valuable aspect of the problem is covered by the +\Package{extract} package. The package allows you to produce a +``partial copy'' of an existing document: +the package was developed to permit production of a ``book of +examples'' from a set of lecture notes. The package documentation +shows the following usage: +\begin{quote} +\begin{verbatim} +\usepackage[ + active, + generate=foobar, + extract-env={figure,table}, + extract-cmd={chapter,section} +]{extract} +\end{verbatim} +\end{quote} +which will cause the package to produce a file \File{foobar.tex} +containing all the \environment{figure} and \environment{table} +environments, and the \csx{chapter} and \csx{section} commands, from +the document being processed. The new file \File{foobar.tex} is +generated in the course of an otherwise ordinary run on the `master' +document. The package provides a good number of other facilities, +including (numeric or labelled) ranges of environments to extract, and +an \environment{extract} environment which you can use to create complete +ready-to-run \LaTeX{} documents with stuff you've extracted. +\begin{ctanrefs} +\item[askinclude.sty]Distributed as part of \CTANref{oberdiek}[askinclude] +\item[comment.sty]\CTANref{comment} +\item[excludeonly.sty]\CTANref{excludeonly} +\item[extract.sty]\CTANref{extract} +\item[memoir.cls]\CTANref{memoir} +\item[optional.sty]\CTANref{optional} +\item[pagesel.sty]Distributed as part of \CTANref{oberdiek}[pagesel] +\item[pdfpages.sty]\CTANref{pdfpages} +\item[selectp.sty]\CTANref{selectp} +\item[stampinclude.sty]Distributed as part of \CTANref{oberdiek}[stampinclude] +\item[tagging.sty]\CTANref{tagging} +\item[verbatim.sty]Distributed as part of \CTANref{2etools}[verbatim] +\item[version.sty]\CTANref{version} +\item[versions.sty]\CTANref{versions} +\item[xcomment.sty]\CTANref{xcomment} +\end{ctanrefs} +\LastEdit{2014-06-09} + +\Question[Q-docotherdir]{Bits of document from other directories} + +A common way of constructing a large document is to break it into a +set of files (for example, one per chapter) and to keep everything +related to each of these subsidiary files in a subdirectory. + +Unfortunately, \TeX{} doesn't have a changeable ``current directory'', +so that all files you refer to have to be specified relative to the +same directory as the main file. Most people find this +counter-intuitive. + +It may be appropriate to use the ``path extension'' technique +% beware line break +\Qref[of question]{used in temporary installations}{Q-tempinst} to deal with +this problem. However, if there several files with the same name in +your document, such as \File{chapter1/fig1.eps} and +\File{chapter2/fig1.eps}, you're not giving \TeX{} any hint as to +which you're referring to when in the main chapter file you say +\cmdinvoke{input}{sect1}; while this is readily soluble in the case of +human-prepared files (just don't name them all the same), +automatically produced files have a way of having repetitious names, +and changing \emph{them} is a procedure prone to error. + +The \Package{import} package comes to your help here: it defines an +\csx{import} command that accepts a full path name and the name of a +file in that directory, and arranges things to ``work properly''. +So, for example, if \File{/home/friend/results.tex} contains +\begin{quote} +\begin{verbatim} +Graph: \includegraphics{picture} +\input{explanation} +\end{verbatim} +\end{quote} +then \cmdinvoke{import}{/home/friend/}{results} will include both +graph and explanation as one might hope. A \csx{subimport} command +does the same sort of thing for a subdirectory (a relative path rather +than an absolute one), and there are corresponding \csx{includefrom} +and \csx{subincludefrom} commands. + +The \Package{chapterfolder} package provides commands to deal with its +(fixed) model of file inclusion in a document. It provides commands +\csx{cfpart}, \csx{cfchapter}, \csx{cfsection} and \csx{cfsubsection}, +each of which takes directory and file arguments, e.g.: +\begin{quote} +\begin{verbatim} +\cfpart[pt 1]{Part One}{part1}{part} +\end{verbatim} +\end{quote} +which command will issue a `normal' command % ! line break +\cmdinvoke{part}[pt 1]{Part One} and then input the file +\File{part1/part.tex}, remembering that \File{part1/} is now the +``current folder''. There are also commands of the form +\csx{cfpartstar} (which corresponds to a \csx{part*} command). + +Once you're ``in'' a \Package{chapterfolder}-included document, you +may use \csx{cfinput} to input something relative to the ``current +folder'', or you may use \csx{input}, using \csx{cfcurrentfolder} to +provide a path to the file. (There are also +\csx{cfcurrentfolderfigure} for a \path{figure/} subdirectory and +\csx{cfcurrentfolderlistings} for a \path{listings/} subdirectory.) + +Documentation of \Package{chapterfolder} is in French, but the +\File{README} in the directory is in English. +\begin{ctanrefs} +\item[chapterfolder.sty]\CTANref{chapterfolder} +\item[import.sty]\CTANref{import} +\end{ctanrefs} + +\Question[Q-RCS]{Version control using \acro{RCS}, \acro{CVS} or the like} + +If you use \acro{RCS}, \acro{CVS}, \ProgName{Subversion}, +\ProgName{Bazaar} or \ProgName{Git} to maintain +your \AllTeX{} documents under version control, you may need some +mechanism for including the version details in your document, in such +a way that they can be typeset (that is, rather than just hiding them +inside a comment). + +The most complete solution for \acro{RCS} and \acro{CVS} is to use the +(\LaTeX{}) package \Package{rcs}, which allows you to parse and +display the contents of \acro{RCS} keyword fields in an extremely +flexible way. The package \Package{rcsinfo} is simpler, but does most +of what you want, and some people prefer it; it is explicitly +compatible with \ProgName{LaTeX2HTML}. + +If, however, you need a solution which works without using external +packages, or which will work in \plaintex{}, then you can use the +following minimal solution: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\def\RCS$#1: #2 ${\expandafter\def\csname RCS#1\endcsname{#2}} +\RCS$Revision: 1.47 $ % or any RCS keyword +\RCS$Date: 2014/01/28 18:17:23 $ +... +\date{Revision \RCSRevision, \RCSDate} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\def\RCS$#1: #2 ${\expandafter + \def\csname RCS#1\endcsname{#2}% +} +\RCS$Revision: 1.47 $ % or any RCS keyword +\RCS$Date: 2014/01/28 18:17:23 $ +... +\date{Revision \RCSRevision, \RCSDate} +\end{verbatim} +\end{narrowversion} +\end{quote} + +If you are a user of \ProgName{Subversion}, the package \Package{svn} +may be for you. It has explicit cleverness about dealing with dates: +\begin{quote} +\csx{documentclass}\texttt{\{\meta{foo}\}}\\ +\texttt{...}\\ +\cmdinvoke{usepackage}{svn}\\ +\csx{SVNdate}\texttt{ \$Date\$}\\ +\cmdinvoke{author}{...}\\ +\cmdinvoke{title}{...}\\ +\texttt{...}\\ +\cmdinvoke{begin}{document}\\ +\csx{maketitle}\\ +\texttt{...}\\ +\cmdinvoke{end}{document} +\end{quote} +will (once \ProgName{subversion} has committed a copy of the document) +cause \csx{maketitle} use the date that has been written into the +\texttt{\$Date\$} keyword. + +Another alternative for \ProgName{Subversion} users is the +\Package{svninfo} package, which has much the same mechanisms as does +\Package{svn} but with a rather different focus. \Package{Svninfo} +does the date trick that \Package{svn} performs (controlled by a +package option), and can set up page foot-lines using % ! line break +\Qref*{package \Package{fancyhdr}}{Q-fancyhdr}. There isn't much to +choose between the two packages: you should read the packages' +documentation to see which suits you best. + +An alternative script-based approach to version control has been taken +by the \Package{vc} bundle, that in certain situations might work more +reliably than any of the packages mentioned above. The \Package{vc} +bundle supports \ProgName{Bazaar}, \ProgName{Git} and +\ProgName{Subversion} usage and works with both \LaTeX{} and +\plaintex{}. Note that \Package{vc} is the only option that +currently claims to support \ProgName{Bazaar}-controlled repositories. + +Finally, for now, the \Package{gitinfo} package supports +\ProgName{Git}-controlled documents. +\begin{ctanrefs} +\item[gitinfo.sty]\CTANref{gitinfo} +\item[rcs.sty]\CTANref{rcs} +\item[rcsinfo.sty]\CTANref{rcsinfo} +\item[svn.sty]\CTANref{svn} +\item[svninfo.sty]\CTANref{svninfo} +\item[vc]\CTANref{vc} +\end{ctanrefs} +\LastEdit{2011-08-31} + +\Question[Q-make]{Makefiles for \LaTeX{} documents} + +\LaTeX{} documents are tricky beasts for building using +(\ProgName{Uni*x}) \ProgName{make} on: the need to +instruct \LaTeX{} to run several times for essentially different +reasons (for example, ``get the table of contents stable'', ``get the +labels stable'', ``add the bibliography'', ``add the index'') is +actually rather difficult to express in the `ordinary' sort of +dependency graph that one constructs for \ProgName{make}. + +The \ProgName{latex-make} package offers help with this task (far more +sophisticated techniques than in the script that builds these \acro{FAQ}s); it +looks good, but reports of its use (other than by its author) are scarce. + +For a long time, the only \ProgName{make}-like package on \acro{CTAN} +was \ProgName{latexmk}, which is a \ProgName{Perl} +script that analyses your \LaTeX{} source for its dependencies, runs +\BibTeX{} or \ProgName{makeindex} as and when it notices that those +programs' input (parts of the \extension{aux} file, or the +\extension{idx} file, respectively) has changed, and so on. +\ProgName{Latexmk} is a fine +solution (and was used in generating printable versions of these +\acro{FAQ}s for some time); it has recently been upgraded and has +many bells and whistles that allow it to operate as if it were a poor +man's \WYSIWYG{} system. + +A recent strong contender is \ProgName{arara}, written in +\ProgName{Java}. It is (the documentation says) based on ``rules'' +and ``directives''; its aim is to determine what to do from explicit +instructions in the document's source code, rather than secondary +sources such as log file analysis. \ProgName{Arara} is relatively new +on CTAN, and comes with recommendations from many of the great and +good of the \latex{} world. + +Newer still is the Python script \ProgName{try}, which has a similar +structure to \ProgName{arara}~--- it, too, reads instructions in the +document source. + +Apparently along the same lines, is Auto\LaTeX{}. The \File{README} +of the distribution is actual a Unix-type man-page output, and shows +great attention to the details of the document production process. + +The (Ruby) script \ProgName{mk} (also, apparently, known as +\ProgName{latex_maker}) works well with another of the author's +scripts script called \ProgName{vpp} (View and Print +\PS{}/\acro{PDF}). + +Windows users of the \miktex{} system may use that system's +\ProgName{texify} application. \ProgName{Texify} deals with basic +\LaTeX{} features, including generating a bibliography and an index; +it makes no claim to deal with other things (such as multiple +bibliographies or indexes, or lists of terminology, etc.), which +Auto\LaTeX{} can be configured to process. + +The \Qref*{\Package{texinfo} system}{Q-texinfo} comes with a similar +utility called \ProgName{texi2dvi}, which is capable of ``converting'' +either \LaTeX{} or \Package{texinfo} files into \acro{DVI} (or into +\acro{PDF}, using \PDFTeX{}). + +A later contribution is the bundle \Package{latexmake}, which +offers a set of \ProgName{make} rules that invoke \ProgName{texi2dvi} +as necessary. + +The curious may examine the rules employed to run the present +\acro{FAQ} through \LaTeX{}: we don't present them as a complete +solution, but some of the tricks employed are surely re-usable. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}arara]\CTANref{arara} +\item[\nothtml{\rmfamily}AutoLaTeX]\CTANref{autolatex} +\item[\nothtml{\rmfamily}\acro{FAQ} distribution]\CTANref{faq} +\item[\nothtml{\rmfamily}latexmake]\CTANref{latexmake} +\item[latex-make]\CTANref{latex-make} +\item[latex\_make]\CTANref{latex_maker} +\item[latexmk]\CTANref{latexmk} +\item[texi2dvi]Distributed as part of \CTANref{texinfo} +\item[try]\CTANref{try} +\item[vpp]\CTANref{vpp} +\end{ctanrefs} +\LastEdit{2013-05-13} + +\Question[Q-howmanypp]{How many pages are there in my document?} + +Simple documents (those that start at page 1, and don't have any +breaks in their page numbering until their last page) present no +problem to the seeker after this truth. The number of pages is +reported by the \Package{lastpage} package in its \texttt{LastPage} label. + +For more complicated documents (most obviously, books with frontmatter +in a different series of page numbers) this simple approach will not +do. + +The \Package{count1to} package defines a label \texttt{TotalPages}; this is +the value of its copy of \csx{count1} (a reserved \TeX{} count +register) at the end of the document. + +Package \Package{totpages} defines a label \texttt{TotPages}, but it also +makes the register it uses available as a \LaTeX{} counter, +\texttt{TotPages}, which you can also reference via \csx{theTotPages}. Of +course, the counter |TotPages| is asynchronous in the same way that +page numbers are, but snapshots may safely be taken in the output +routine. + +The \Class{memoir} class defines two counters \texttt{lastpage} and +\texttt{lastsheet}, which are set (after the first run of a document) +to the equivalent of the \texttt{LastPage} label and the +\texttt{TotalPages} labels. + +Both \Package{count1to} and \Package{totpages} need the support of +the \Package{everyshi} package. +\begin{ctanrefs} +\item[count1to.sty]Distributed as part of \CTANref{ms}[count1to] +\item[everyshi.sty]Distributed as part of \CTANref{ms}[everyshi] +\item[lastpage.sty]\CTANref{lastpage} +\item[memoir.cls]\CTANref{memoir} +\item[totpages.sty]\CTANref{totpages} +\end{ctanrefs} + +\Question[Q-inclplain]{Including \plaintex{} files in \LaTeX{}} + +\LaTeX{}, though originally \Qref*{based on \plaintex{}}{Q-LaTeXandPlain}, does not +contain all of \plaintex{}'s commands. Worse, some \plaintex{} +command names appear in \LaTeX{}, with different semantics. As a +result, special measures need to be taken to allow general \plaintex{} +documents (or parts of documents) to be typeset within \LaTeX{}. + +The truly reliable way is to translate the \plaintex{} commands, to +produce an equivalent of the original's semantics. However, this is +not practical in many circumstances, and for those occasions, the +\Package{plain} package will often come to your aid. The package +defines a \environment{plain} environment, in which a \plaintex{} +document may be processed: +\begin{quote} +\begin{verbatim} +\begin{plain} + \input{plain-doc} +\end{plain} +\end{verbatim} +\end{quote} +The package is known to fail, for example, with documents that use +\AMSTeX{}; no doubt it would also fail if asked to load \Eplain{}. +All these things can be overcome (although it's not often easy), but +the environment saves a lot of work on many occasions. +\begin{ctanrefs} +\item[plain.sty]Distributed as part of \CTANref{carlisle}[plain-ltx] +\end{ctanrefs} + +\subsection{Hyphenation} + +\Question[Q-nohyph]{My words aren't being hyphenated} + +Let's assume you've selected the right \TeX{} `language'~--- as +explained in \Qref[question]{``how hyphenation works''}{Q-hyphen}, +you're not likely to get the correct results typesetting one language +using the hyphenation rules of another. (Select the proper language, +using \Package{babel} if you're a \LaTeX{} user. This may reveal that +you need another set of hyphenation patterns; see +% beware line wrap +\Qref[question]{``using a new language''}{Q-newlang} for advice on how +to install it.) + +So what else can go wrong? +\begin{itemize} +\item Since \TeX{} version~3.0, the limits on how near to either end + of a word hyphenation may take place have been programmable (see + \Qref[question]{``weird hyphenation''}{Q-weirdhyphen}), and for some + reason the values in question may have been corrupted in some macros + you are using. \TeX{} won't hyphenate less than \csx{lefthyphenmin} + characters after the start of a word, nor less than + \csx{righthyphenmin} before the end of a word; thus it won't + hyphenate a word shorter than the sum of the two minima, at all. + For example, since the minima are 2 and 3 for English, \TeX{} won't + hyphenate a word shorter than 5 letters long, if it believes the + word to be English. +\item \TeX{} won't hyphenate a word that's already been hyphenated. + For example, the (caricature) English surname Smyth-Postlethwaite + wouldn't hyphenate, which could be troublesome. This is correct + English typesetting style (it may not be correct for other + languages), but if needs must, you can replace the hyphen in the + name with a \csx{hyph} command, defined +\begin{quote} +\begin{verbatim} +\def\hyph{-\penalty0\hskip0pt\relax} +\end{verbatim} +\end{quote} + This is \emph{not} the sort of thing this \acro{FAQ} would + ordinarily recommend\dots{} The \Package{hyphenat} package defines a + bundle of such commands (for introducing hyphenation points at + various punctuation characters). +\item There may be accent commands in the word. The causes of and + remedies for this effect are discussed in % !line break + \Qref[question]{accents and hyphens}{Q-hyphenaccents}. +\item The hyphenation may simply not have been spotted; while \TeX{}'s + algorithm is good, it's not infallible, and it does miss perfectly + good hyphenations in some languages. When this happens, you need to + give \TeX{} \emph{explicit} instructions on how to hyphenate. +\end{itemize} +The \csx{hyphenation} command allows you to give explicit instructions. +Provided that the word will hyphenate at all (that is, it is not +prevented from hyphenating by any of the other restrictions above), +the command will override anything the hyphenation patterns might +dictate. The command takes one or more hyphenated words as +argument~--- \cmdinvoke{hyphenation}{ana-lysis pot-able}; note that +(as here, for analysis) you can use the command to overrule \TeX{}'s +choice of hyphenation (ana-lysis is the British etymological +hyphenation; some feel the American hyphenation feels +`unfortunate'\dots{}). +\begin{ctanrefs} +\item[hyphenat.sty]\CTANref{hyphenat} +\end{ctanrefs} +\LastEdit{2013-09-20} + +\Question[Q-weirdhyphen]{Weird hyphenation of words} + +If your words are being h-yphenated, like this, with jus-t single +letters at the +beginning or the end of the word, you may have a version mismatch +problem. \TeX{}'s hyphenation system changed between version~2.9 +and~3.0, and macros written for use with version~2.9 can have this +effect with a version~3.0 system. If you are using \plaintex{}, make +sure your \File{plain.tex} file has a version number which is at +least~3.0, and rebuild your format. If you are using \LaTeXo{} your +best plan is to upgrade to \LaTeXe{}. If for some reason you can't, +the last version of \LaTeXo{} (released on 25 March 1992) is still +available (for the time being at least) and ought to solve this +problem. + +If you're using \LaTeXe{}, the problem probably arises from your +|hyphen.cfg| file, which has to be created if you're using a +multi-lingual version. + +A further source of oddity can derive from the 1995 release of +\Qref*{Cork-encoded fonts}{Q-ECfonts}, +which introduced an alternative hyphen character. The \LaTeXe{} +configuration files in the font release specified use of the +alternative hyphen, and this could produce odd effects with words +containing an explicit hyphen. The font configuration files in the +December 1995 release of \LaTeXe{} do \emph{not} use the alternative +hyphen character, and therefore removed this source of problems; the +solution, again, is to upgrade your \LaTeX{}. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\LaTeXo{}]\CTANref{latex209-base} +\item[plain.tex]\CTANref{plain} +\end{ctanrefs} + +\Question[Q-oddhyphen]{(Merely) peculiar hyphenation} + +You may have found that \TeX{}'s famed automatic word-division does +not produce the break-points recommended by your dictionary. This may be +because \TeX{} is set up for American English, whose rules for word +division (as specified, for example, in Webster's Dictionary) are +completely different from the British ones (as specified, for example, +in the Oxford Dictionaries). This problem is being addressed by the \acro{UK} +\TeX{} User community (see \BV{}, issue~4.4) but an entirely +satisfactory solution will take time; the current status is to be +found on \acro{CTAN} (see +% beware line-wrap +\Qref[question]{``using a new language''}{Q-newlang} for instructions +on adding this new ``language''). +\begin{ctanrefs} +\item[UK patterns]\CTANref{ukhyph} +\end{ctanrefs} + +\Question[Q-hyphenaccents]{Accented words aren't hyphenated} + +\TeX{}'s algorithm for hyphenation gives up when it encounters an +\csx{accent} command; there are good reasons for this, but it means +that quality typesetting in non-English languages can be difficult. + +For \TeX{} macro packages, you can avoiding the effect by using an +appropriately encoded font (for example, a Cork-encoded font~--- see +\Qref[question]{the \acro{EC} fonts}{Q-ECfonts}) which contains accented +letters as single glyphs. \LaTeX{} users can achieve this end simply +by adding the command +\begin{verbatim} + \usepackage[T1]{fontenc} +\end{verbatim} +to the preamble of their document. Other encodings (notably +\acro{LY}1, once promoted by \YandY{} inc) may be used +in place of \acro{T}1. Indeed, most current 8-bit \TeX{} font +encodings will `work' with the relevant sets of hyphenation patterns. + +With the advance of \xetex{} and \luatex{} to the mainstream, a new +regime for generating hyphenation tables is in place. For each +language, a table is written in Unicode, and ``8-bit'' versions are +generated for use with various \latex{} font encodings. Original sets +of patterns remain on \acro{CTAN}, for use when an older environment +is needed. + +\Question[Q-newlang]{Using a new language with Babel} + +\Package{Babel} is capable of working with a large range of +languages, and a new user often wants to use a language that her +\TeX{} installation is not set up to employ. Simply asking Babel to +use the language, with the command +\begin{verbatim} + \usepackage[catalan]{babel} +\end{verbatim} +provokes the warning message +\begin{wideversion} +\begin{verbatim} +Package babel Warning: No hyphenation patterns were loaded for +(babel) the language `Catalan' +(babel) I will use the patterns loaded for \language=0 instead. +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +Package babel Warning: No hyphenation patterns + were loaded for +(babel) the language `Catalan' +(babel) I will use the patterns + loaded for \language=0 instead. +\end{verbatim} +(The first and third lines above have been wrapped to fit in the +column.) +\end{narrowversion} + +The problem is that your \TeX{} system doesn't know how to hyphenate +Catalan text: you need to tell it how before Babel can do its work +properly. To do this, for \LaTeX{} installations, one needs to change +\File{language.dat} (which is part of the Babel installation); it will +contain a line +\begin{verbatim} +%catalan cahyphen.tex +\end{verbatim} +which, if you remove the comment marker, is supposed to instruct +\LaTeX{} to load Catalan hyphenation patterns when you tell it to build +a new format. + +Unfortunately, in many Babel distributions, the line just isn't +right~--- you need to check the name of the file containing the +patterns you're going to use. As you can see, in the author's system, +the name is supposed to be \File{cahyphen.tex}; however the file +actually present on the system is \File{cahyph.tex}~--- fortunately, +the error should prove little more than an inconvenience (most of the +files are in better distributions anyway, but an elusive one +may be found on \acro{CTAN}; if you have to retrieve +a new file, ensure that it's correctly installed, for which see +\Qref[question]{installing a new package}{Q-inst-wlcf}). + +Finally, you need to regenerate the formats used (in fact, most users +of Babel are using it in their \LaTeX{} documents, so regenerating the +\LaTeX{}-related formats will ordinarily be enough; however, the +author always generates the lot, regardless). +\begin{description} +\item[te\TeX{}]It's possible to do the whole operation in one go, by + using the \ProgName{texconfig} command: +\begin{verbatim} +texconfig hyphen latex +\end{verbatim} + which first enters an editor for you to edit \File{language.dat}, + and then regenerates the format you specify (\ProgName{latex} in + this case). + + Otherwise, to regenerate all formats, do: \\ + \texttt{fmtutil -\relax-all} + + If you're willing to think through what you're doing (this is + \emph{not} for the faint-hearted), you can select a sequence of + formats and for each one, run: \\ + \texttt{fmtutil -\relax-byfmt \meta{formatname}}\\ + where \emph{\texttt{formatname}} is something like `\texttt{latex}', + or: \\ + \texttt{fmtutil -\relax-byhyphen \meta{hyphenfile}}\\ + where \emph{\texttt{hyphenfile}} is the file specifying hyphenation + to the format~--- usually \texttt{language.dat} +\item[\miktex{}] On a \Package{\miktex{}} distribution earlier than v2.0, do: \\ + \texttt{Start}\arrowhyph{}% + \texttt{Programs}\arrowhyph{}% + \texttt{\miktex{}}\arrowhyph{}% + \texttt{Maintenance}\arrowhyph{}% + \texttt{Create all format files} +% this sequence suggested for miktex 1.20e, 2000/12/22, by Giuseppe Bilotta + + or get a DOS window and run:\\ + \texttt{initexmf -\relax-dump} + + On a \Package{\miktex{}} distribution v2.0 or later, the whole + procedure can be done via the \acro{GUI}. To select the new + language, do:\\ + \texttt{Start}\arrowhyph{}% + \texttt{Programs}\arrowhyph{}% + \texttt{\miktex{} 2}\arrowhyph{}% + \texttt{\miktex{} Options}, and select the \texttt{Languages} tab. + Select your language from the list, press the \texttt{Apply} button, + and then the \texttt{OK} button. Then select the \texttt{General} + tab and press the \texttt{Update Now} button. + + Otherwise, edit the \File{language.dat} file (as outlined above), + and then run:\\ + \texttt{initexmf -\relax-dump}\\ + just as for a pre-v2.0 system. +\end{description} + +\nothtml{\noindent}\textbf{\emph{Caveat}:} It is (just) possible that +your \TeX{} system may run out of ``pattern memory'' while generating +the new format. Most \TeX{} implementations have fixed-size arrays +for storing the details of hyphenation patterns, but although their +size is adjustable in most modern distributions, actually changing the +size is a fiddle. If you \emph{do} find you've run out of memory, +it may be worth scanning the list of languages in your +\File{language.dat} to see whether any could reasonably be removed. +\begin{ctanrefs} +\item[babel]\CTANref{babel} +\item[hyphenation patterns]\CTANref{hyphenation} +\end{ctanrefs} + +\Question[Q-hyphoff]{Stopping all hyphenation} + +It may seem an odd thing to want to do (after all, one of \TeX{}'s +great advertised virtues is the quality of its hyphenation) but it's +sometimes necessary. The real problem is, that the quality of +\TeX{}'s output is by default largely dependent on the presence of +hyphenation; if you want to abandon hyphenation, something has to +give. + +\TeX{} (slightly confusingly) offers four possible mechanisms for +suppressing hyphenation (there were only two prior to the extensions +that arrived with \TeX{} version~3). + +First, one can set the hyphenation penalties \csx{hyphenpenalty} and +\csx{exhyphenpenalty} to an `infinite' value (that is to say, 10000). +This means that all hyphenations will sufficiently penalise the line +that would contain them, that the hyphenation won't happen. The +disadvantage of this method is that \TeX{} will re-evaluate any +paragraph for which hyphenations might help, which will slow \TeX{} +down. + +Second, one can select a language for which no hyphenation patterns +exist. Some distributions create a language \texttt{nohyphenation}, +and the \Package{hyphenat} package uses this technique for its +\csx{nohyphens} command which sets its argument without any +hyphenation. You can load \Package{hyphenat} with the command +\begin{quote} + \cmdinvoke{usepackage}[none]{hyphenat} +\end{quote} +to prevent any hyphenation in a single-language document. The +technique cannot work in a document in which \Package{babel} controls +language selection, since \Package{babel} incorporates hyphenation +change into its language change facilities. + +Third, one can set \csx{left-} and/or \csx{righthyphenmin} to a +sufficiently large value that no hyphenation could possibly succeed, +since the minimum is larger than the length of the longest word +\TeX{} is willing to hyphenate (the appropriate value is 62). + +Fourth, one can suppress hyphenation for all text using the current +font by the command +\begin{quote} +\begin{verbatim} +\hyphenchar\font=-1 +\end{verbatim} +\end{quote} +This isn't a particularly practical way for users to suppress +hyphenation~--- the command has to be issued for every font the +document uses~--- but it's how \LaTeX{} itself suppresses hyphenation +in \texttt{tt} and other fixed-width fonts. + +Which of the techniques you should use depends on what you actually +want to do. If the text whose hyphenation is to be suppressed runs +for less than a paragraph, your only choice is the no-hyphens +language: the language value is preserved along with the text (in the +same way that the current font is); the values for penalties and +hyphen minima active at the end of a paragraph are used when +hyphenation is calculated. + +Contrariwise, if you are writing a multilanguage document using the +\Package{babel} package, you \emph{cannot} suppress hyphenation +throughout using either the no-hyphens language or the hyphen minima: +all those values get changed at a \Package{babel} language switch: use +the penalties instead. + +If you simply switch off hyphenation for a good bit of text, the +output will have a jagged edge (with many lines seriously overfull), +and your \AllTeX{} run will bombard you with warnings about overfull +and underfull boxes (that is, really, lines). To avoid this you have +two options. + +The simplest route is to use \csx{sloppy} (or its environment version +\environment{sloppypar}), and have \TeX{} stretch what would otherwise +be underfull lines to fill the space offered, while prematurely +wrapping overfull lines and stretching the remainder. + +The better bet is to set the text \Qref*{ragged right}{Q-ragright}, +and at least get rid of the overfull lines; this technique is +`traditional' (in the sense that typists have always done it) and may +be expected to +appeal to the specifiers of eccentric document layouts (such as those +for dissertations), but for once their sense conforms with typographic +style. (Or at least, style constrained in this curious way.) +\begin{ctanrefs} +\item[hyphenat.sty]\CTANref{hyphenat} +\end{ctanrefs} +\LastEdit{2013-09-20} + +\Question[Q-wdnohyph]{Preventing hyphenation of a particular word} + +It's quite possible for (\emph{any}) hyphenation of a particular word +to seem ``completely wrong'', so that you want to prevent it being +hyphenated. + +If the word occurs in just one place, put it in a box: +\begin{quote} +\begin{verbatim} +\mbox{oddword} +\end{verbatim} +\end{quote} +(\plaintex{} users should use \csx{hbox}, and take care at the start +of paragraphs.) However, boxing the word is not really advisable +unless you are sure it only occurs once. + +If the word occurs commonly, the best choice is to assert an +hyphenation exception for it: +\begin{quote} +\begin{verbatim} +\hyphenation{oddword} +\end{verbatim} +\end{quote} +This hyphenation exception (with no break points) will be used in +preference to what \TeX{}'s hyphenation algorithm may come up with. + +In a multilingual document, repeat the exception specification for +each language the word may appear in. So: +\begin{quote} +\begin{verbatim} +\usepackage[french,english]{babel} +\selectlanguage{english} +\hyphenation{oddword} +\selectlanguage{french} +\hyphenation{oddword} +\end{verbatim} +\end{quote} +(note that \Package{babel} will select the default language for the +document~--- English, in this case~--- at \cmdinvoke{begin}{document}.) + +A particular instance of this requirement is avoiding the hyphenation +of acronyms; a general rule for those that concoct acronyms seems to +be to make the capital-letter sequence read as near as is possible +like a ``real'' word, but hyphenating an acronym often looks silly. +The \TeX{} control \csx{uchyph} is designed for suppressing such +behaviour: +\begin{quote} +\begin{verbatim} +\uchyph=0 +\end{verbatim} +\end{quote} +will stop hyphenation of upper-case words. (Note that \plaintex{} +syntax is needed here: there's no \LaTeX{} alternative for setting +this value.) + +\Question[Q-hyphexcept]{Hyphenation exceptions} + +While \TeX{}'s hyphenation rules are good, they're not infallible: you +will occasionally find words \TeX{} just gets \emph{wrong}. So for +example, \TeX{}'s default hyphenation rules (for American English) don't +know the word ``\emph{manuscript}'', and since it's a long word you +may find you need to hyphenate it. You \emph{can} ``write the +hyphenation out'' each time you use the word: +\begin{quote} +\begin{verbatim} +... man\-u\-script ... +\end{verbatim} +\end{quote} +Here, each of the \csx{-} commands is converted to a hyphenated break, +if (\emph{and only if}) necessary. + +That technique can rapidly become tedious: you'll probably only accept +it if there are no more than one or two wrongly-hyphenated words in +your document. The alternative is to set up hyphenations in the +document preamble. To do that, for the hyphenation above, you would +write: +\begin{quote} +\begin{verbatim} +\hyphenation{man-u-script} +\end{verbatim} +\end{quote} +and the hyphenation would be set for the whole document. Barbara +Beeton publishes articles containing lists of these ``hyphenation +exceptions'', in \textsl{TUGboat}; the hyphenation `man-u-script' +comes from one of those articles. + +What if you have more than one language in your document? Simple: +select the appropriate language, and do the same as above: +\begin{quote} +\begin{verbatim} +\usepackage[french]{babel} +\selectlanguage{french} +\hyphenation{re-cher-cher} +\end{verbatim} +\end{quote} +(nothing clever here: this is the ``correct'' hyphenation of the word, +in the current tables). However, there's a problem here: just as +words with accent macros in them won't break, so an \csx{hyphenation} +commands with accent macros in its argument will produce an error: +\begin{quote} +\begin{verbatim} +\usepackage[french]{babel} +\selectlanguage{french} +\hyphenation{r\'e-f\'e-rence} +\end{verbatim} +\end{quote} +tells us that the hyphenation is ``improper'', and that it will be ``flushed''. +But, just as hyphenation of words is enabled by selecting an 8-bit +font encoding, so \csx{hyphenation} commands are rendered proper again +by selecting that same 8-bit font encoding. For the hyphenation +patterns provided for `legacy', the encoding is +\Qref*{Cork}{Q-ECfonts}, so the complete sequence is: +\begin{quote} +\begin{verbatim} +\usepackage[T1]{fontenc} +\usepackage[french]{babel} +\selectlanguage{french} +\hyphenation{r\'e-f\'e-rence} +\end{verbatim} +\end{quote} +The same sort of performance goes for any language for which 8-bit +fonts and corresponding hyphenation patterns are available. Since you +have to select both the language and the font encoding to have your +document typeset correctly, it should not be a great imposition to do +the selections before setting up hyphenation exceptions. + +Modern TeX variants (principally \xetex{} and \luatex{}) use unicode, +internally, and distributions that offer them also offer +\acro{UTF}-8-encoded patterns; since the hyphenation team do all the +work ``behind the scenes'', the use of Unicode hyphenation is +deceptively similar to what we are used to. +\LastEdit{2013-09-20} + +\subsection{Odds and ends} + +\Question[Q-logos]{Typesetting all those \TeX{}-related logos} + +Knuth was making a particular point about the capabilities of \TeX{} +when he defined the logo. Unfortunately (in some people's opinion) he thereby +opened floodgates to give the world a whole range of rather silly +`bumpy road' logos for \TeX{} entities such as \AMSTeX{}, \pictex{}, +\BibTeX{}, and so on, produced in a flurry of different fonts, sizes, +and baselines~--- indeed, everything one might hope to cause them to +obstruct the reading process. In particular, Lamport invented +\LaTeX{} (silly enough in itself, with a raised small `A' and a +lowered `E') and marketing input from Addison-Wesley led to the even +stranger current logo for \LaTeXe{}, which appends a lowered % !line break +\latexhtml{\ensuremath{\varepsilon}}{single-stroke Greek letter ε}. + +Sensible users don't have to follow this stuff wherever it goes, +but, for those who insist, a large collection of logos is defined in +the \Package{texnames} package (but note that this set of macros isn't +entirely reliable in \LaTeXe{}). +The \MF{} and \MP{} logos can be set in fonts that \LaTeXe{} +knows about (so that they scale with the surrounding text) using the +\Package{mflogo} package; but be aware that booby-traps surround the +use of the Knuthian font for \MP{} (you might get +\begin{typesetversion} + \textlogo{META\hphantom{P}O\hphantom{S}T}). +\end{typesetversion} +% the following htmlversion stuff seems to do roughly what's required, +% which is nice, given the feebleness of representing all these silly +% logos in html otherwise... +\begin{htmlversion} + something like `META\ \ O\ \ T'). +\end{htmlversion} +You needn't despair, however~--- most versions of the logo font +distributed nowadays contain the missing letters, and the author +himself uses just `MetaPost'. + +A well-designed set of macros is provided by package \Package{hologo}, +which defines a command \csx{hologo}, which one uses as (for example) +\cmdinvoke{hologo}{pdfLaTeX} for what you might get by typing +``\texttt{pdf}\csx{LaTeX}'', as well as a capitalised version +\cmdinvoke{Hologo}{pdfLaTeX} for ``\texttt{Pdf}\csx{LaTeX}''. + +The package \Package{metalogo} deals with a problem of these myriad +logos, that's often ignored nowadays: the geometry of characters from +different fonts is (obviously) different, and they naturally fit +together differently. The package makes it possible for you to adjust +the spacing between the the letters of one of these odd logos (even +the especially weird mirrored ``E'' in \xetex{}). + +For those who don't wish to acquire the `proper' logos, the canonical +thing to do is to say \texttt{AMS-}\cmdinvoke{TeX}{} +for \AMSTeX{}, \texttt{Pic}\cmdinvoke{TeX}{} +for \pictex{}, \texttt{Bib}\cmdinvoke{TeX}{} +for \BibTeX{}, and so on. +\begin{ctanrefs} +\item[hologo.sty]Distributed as part of \CTANref{oberdiek}[hologo] +\item[metalogo.sty]\CTANref{metalogo} +\item[mflogo.sty]\CTANref{mflogo} +\item[texnames.sty]\CTANref{texnames} +\end{ctanrefs} +\LastEdit{2010-03-24} + +\Question[Q-bold-extras]{How to do bold-tt or bold-sc} + +\LaTeX{}, as delivered, offers no means of handling bold ``teletype'' +or small-caps fonts. There's a practical reason for this (Knuth never +designed such fonts), but there are typographical considerations too +(the ``medium weight'' \texttt{cmtt} font is already pretty bold (by +comparison with other fixed-width fonts), and bold small-caps is not +popular with many professional typographers). + +There's a set of ``extra'' \MF{} files on \acro{CTAN} that provide bold +versions of both \texttt{cmtt} and \texttt{cmcsc} (the small caps font). With +modern \TeX{} distributions, one may bring these fonts into use simply +by placing them in an % ! line break +\Qref*{appropriate place in the \emph{texmf} tree}{Q-install-where} +(these are \AllTeX{}-specific files, so the ``\emph{public}'' supplier +would be an appropriate place). Once you've % ! line break, again +\Qref*{rebuilt the file indexes as necessary}{Q-inst-wlcf}, +\TeX{} (and friends) will automatically build whatever font files they +need when you first make reference to them. There's a jiffy package +\Package{bold-extra} that builds the necessary font data structures +so that you can use the fonts within \LaTeX{}. + +Another alternative is to use the \Qref*{\acro{EC} fonts}{Q-ECfonts}, +which come with bold variants of the small-caps fonts. + +If you need to use Type~1 fonts, you can't proceed with Knuth-style +fonts, since there are no Type~1 versions of the \Package{mf-extra} +set. There are, however, Type~1 distributions of the EC~fonts, so you +can switch to EC and use them; alternatives are discussed in +\Qref[question]{8-bit Type~1 fonts}{Q-type1T1}. + +Of course, commercial fixed-width fonts (even the default +\FontName{Courier}) almost always come with a bold variant, so that's +not a problem. Furthermore \Qref*{\acro{PSNFSS}}{Q-usepsfont} +will usually provide ``faked'' small caps fonts, and has no +compunctions about providing them in a bold form. \FontName{Courier} +is (as we all know, to our cost) freely available; a far more +presentable monospace font is \FontName{LuxiMono}, which is also +freely available (monospace text in the typeset version of this +\acro{FAQ} uses \FontName{LuxiMono}, with the metrics and \LaTeX{} +support available on the archive. +\begin{ctanrefs} +\item[bold-extra.sty]\CTANref{bold-extra} +\item[bold tt and small caps fonts]\CTANref{bold} +\item[\nothtml{\rmfamily}LuxiMono fonts]\CTANref{luximono} +\end{ctanrefs} + +\Question[Q-varwidth]{Automatic sizing of \environment{minipage}} + +The \environment{minipage} environment requires you to specify the +width of the ``page'' you're going to create. This is sometimes +inconvenient: you would like to occupy less space, if possible, but +\environment{minipage} sets a box that is exactly the width you +specified. + +The \Package{pbox} package defines a \csx{pbox} whose width is exactly +that of the longest enclosed line, subject to a maximum width that you +give it. So while \cmdinvoke{parbox}{2cm}{Hello\bsbs world!} produces a +box of width exactly \texttt{2cm}, +\cmdinvoke{pbox}{2cm}{Hello\bsbs world!} produces one whose width is +\texttt{1.79cm} (if one's using the default \FontName{cmr} font for the +text, at least). The package also provides a +\cmdinvoke*{settominwidth}[min]{length}{text} (which looks (almost) +like the standard \csx{settowidth} command), and a \csx{widthofpbox} +function analogous to the \csx{widthof} command for use with the +\Package{calc} package. + +The \Package{eqparbox} package extends \Package{pbox}'s idea, by +allowing you to set a series of boxes, all with the same (minimised) +width. (Note that it doesn't accept a limiting maximum width +parameter.) The package documentation shows the following example +drawn from a joke \emph{curriculum vitae}: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\noindent% +\eqparbox{place}% + {\textbf{Widgets, Inc.}} + \hfill +\eqparbox{title}% + {\textbf{Senior Widget Designer}} + \hfill +\eqparbox{dates}{\textbf{1/95--present}} + +... + +\noindent% +\eqparbox{place}% + {\textbf{Thingamabobs, Ltd.}} + \hfill +\eqparbox{title}% + {\textbf{Lead Engineer}} + \hfill +\eqparbox{dates}{\textbf{9/92--12/94}} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\noindent% +\eqparbox{place}{\textbf{Widgets, Inc.}} \hfill +\eqparbox{title}{\textbf{Senior Widget Designer}} \hfill +\eqparbox{dates}{\textbf{1/95--present}} + +... + +\noindent% +\eqparbox{place}{\textbf{Thingamabobs, Ltd.}} \hfill +\eqparbox{title}{\textbf{Lead Engineer}} \hfill +\eqparbox{dates}{\textbf{9/92--12/94}} +\end{verbatim} +\end{wideversion} +\end{quote} +The code makes the three items on each of the heading lines have +exactly the same width, so that the lines as a whole produce a regular +pattern down the page. A command \csx{eqboxwidth} allows you to use +the measured width of a group: the documentation shows how the command +may be used to produce sensible-looking columns that mix \texttt{c}-, +\texttt{r}- or \texttt{l}-rows, with the equivalent of a |p{...}| +entry, by making the fixed-width rows an \Package{eqparbox} group, and +making the last from a \csx{parbox} using the width that's been +measured for the group. + +The \Package{varwidth} package defines a \environment{varwidth} +environment which sets the content of the box to match a ``narrower +natural width'' if it finds one. (You give it the same parameters as +you would give \environment{minipage}: in effect, it is a `drop-in' +replacement.) \Package{Varwidth} provides its own ragged text command: +\csx{narrowragged}, which aims to make narrower lines and to put more +text in the last line of the paragraph (thus producing lines with more +nearly equal lengths than typically happens with \csx{raggedright} +itself). + +The documentation (in the package file) lists various restrictions and +things still to be done, but the package is already proving useful for +a variety of jobs. +\begin{ctanrefs} +\item[eqparbox.sty]\CTANref{eqparbox} +\item[pbox.sty]\CTANref{pbox} +\item[varwidth.sty]\CTANref{varwidth} +\end{ctanrefs} + diff --git a/help/uk-tex-faq/faq-hyp+pdf.tex b/help/uk-tex-faq/faq-hyp+pdf.tex new file mode 100644 index 0000000000..aa670393d9 --- /dev/null +++ b/help/uk-tex-faq/faq-hyp+pdf.tex @@ -0,0 +1,636 @@ +% $Id: faq-hyp+pdf.tex,v 1.8 2014/02/16 21:23:58 rf10 Exp $ + +\section{Hypertext and \acro{PDF}} + +\Question[Q-acrobat]{Making \acro{PDF} documents from \AllTeX{}} + +There are three general routes to \acro{PDF} output: Adobe's original +`distillation' route (via \PS{} output), direct conversion of a +\acro{DVI} file, and the use of a direct \tex{}-like \acro{PDF} +generator such as \Qref*{\PDFTeX{}}{Q-whatpdftex}. + +For simple documents (with no hyper-references), you can either +\begin{itemize} +\item process the document in the normal way, produce \PS{} + output and distill it; +\item (on a Windows or Macintosh machine with appropriate + tools installed) pass the output through a \acro{PDF}writer in place + of a printer driver. This route is only appropriate for simple + documents: \acro{PDF} writers cannot create hyperlinks; +\item process the document with ``vanilla'' \latex{} and generate \acro{PDF} + direct from the \acro{DVI} using \ProgName{dvipdfm}/\ProgName{dvipdfmx}; or +\item process the document direct to \acro{PDF} with \PDFTeX{}, + \Qref{\luatex{}}{Q-luatex}, or \Qref{\xetex{}}{Q-xetex}. +\end{itemize} + +To translate all the \LaTeX{} cross-referencing into Acrobat +links, you need a \LaTeX{} package to redefine +the internal commands. There are two of these for \LaTeX{}, both +capable of conforming to the +\Qref{Hyper\TeX{} specification}{Q-hyper}: +Heiko Oberdiek's \Package{hyperref}, and Michael Mehlich's +\Package{hyper}. (In practice, almost everyone uses +\Package{hyperref}; \Package{hyper} hasn't been updated since 2000.) +\Package{Hyperref} can often determine how it should generate +hypertext from its environment, but there is a wide set of +configuration options you can give via \csx{usepackage}. The package +can operate using \PDFTeX{} primitives, the hyper\TeX{} +\csx{special}s, or \acro{DVI} driver-specific \csx{special} commands. +Both \ProgName{dvips} and \YandY{}'s \acro{\ProgName{DVIPSONE}} can +translate the \acro{DVI} with these \csx{special} commands into +\PS{} acceptable to Distiller, and +\ProgName{dvipdfm} and \ProgName{dvipdfmx} have \csx{special} commands of +their own. + +If you use \plaintex{}, the \Qref*{\Eplain{} macros}{Q-eplain} can +help you create \acro{PDF} documents with hyper-references. +It can operate using \PDFTeX{} primitives, or \csx{special} commands +for the \ProgName{dvipdfm}/\ProgName{dvipdfmx} \acro{DVI} drivers. + +While there is no free implementation of all of \ProgName{Adobe} +\ProgName{Distiller}'s +functionality, any but the implausibly old versions of +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}} +provide pretty reliable distillation (but beware of the problems with +\Qref*{\ProgName{dvips} output for distillation}{Q-dvips-pdf}). + +For viewing (and printing) the resulting files, Adobe's +\ProgName{Acrobat} \ProgName{Reader} is available for a fair range of +platforms; for those for which Adobe's reader is unavailable, remotely +current versions of \href{http://www.ghostscript.com/}{\ProgName{ghostscript}} +combined with \ProgName{gv} or +\href{http://www.ghostgum.com.au/}{\ProgName{gsview}} can display and +print \acro{PDF} files, as can \ProgName{xpdf}. + +In some circumstances, a +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}}-based viewer +application is actually preferable to Acrobat Reader. For example, on +Windows Acrobat Reader locks the \extension{pdf} file it's displaying: this +makes the traditional (and highly effective) \AllTeX{} development +cycle of ``Edit\arrowhyph{}Process\arrowhyph{}Preview'' become +rather clumsy~--- \href{http://www.ghostgum.com.au/}{\ProgName{gsview}} +doesn't make the same | +\item[name:] |html:| +\item[end:] |html:| +\item[image:] |html:| +\item[base\_name:] |html:| +\end{description} + +The \emph{href}, \emph{name} and \emph{end} commands are used to do +the basic hypertext operations of establishing links between sections +of documents. + +Further details are available on \URL{http://arXiv.org/hypertex/}; there +are two commonly-used implementations of the specification, a +modified \ProgName{xdvi} and (recent releases of) +\ProgName{dvips}. Output from the latter may be used in recent +releases of \href{http://www.ghostscript.com/}{\ProgName{ghostscript}} +or Acrobat Distiller. + +\Question[Q-dvips-pdf]{Quality of \acro{PDF} from \PS{}} +\keywords{blurry fuzzy crippled} + +Any reasonable \PS{}, including any output of \ProgName{dvips}, may be +converted to \acro{PDF}, using (for example) a sufficiently recent +version of \href{http://www.ghostscript.com/}{\ProgName{ghostscript}}, +Frank Siegert's (shareware) +\href{http://www.pstill.com/}{\ProgName{PStill}}, or Adobe's (commercial) +\ProgName{Distiller}. + +But, although the job may (almost always) be done, the results are +often not acceptable: the most frequent problem is bad presentation of +the character glyphs that make up the document. The following answers +offer solutions to this (and other) problems of bad presentation. +Issues covered are: +\begin{itemize} +\item \Qref*{Wrong type of fonts used}{Q-fuzzy-type3}, which is + the commonest cause of fuzzy text. +\item \Qref*{\ProgName{Ghostscript} too old}{Q-fuzzy-gs}, + which can also result in fuzzy text. +% beware line breaks +\item \Qref*{Switching to font encoding \acro{T}1 encoding}{Q-fuzzy-T1}, + which is yet another possible cause of fuzzy text. +\item Another problem~--- missing characters~--- arises from an + % beware line breaks + \Qref*{aged version of \ProgName{Adobe}~\ProgName{Distiller}}{Q-distill-prob}. +\item Finally, there's the common confusion that arises from using the + \ProgName{dvips} configuration file \texttt{-Ppdf}, the % ! line br + \Qref*{weird characters}{Q-charshift}. +\end{itemize} +It should be noted that \ProgName{Adobe} % \ProgName{Acrobat} no longer + % part of the name +\ProgName{Reader}~6 (released in mid-2003, and later versions) does +not exhibit the ``fuzziness'' that so many of the answers below +address. This is of course good news: however, it will inevitably be +a long time before every user in the world has this (or later) +versions, so the remedies below are going to remain for some time to +come. + +The problems are also discussed, with practical examples, in Mike +Shell's \Package{testflow} package, which these FAQs recommend as a +``\Qref*{specialised tutorial}{Q-tutbitslatex}. +\begin{ctanrefs} +\item[testflow]\CTANref{testflow} +\end{ctanrefs} + + +\Question[Q-fuzzy-type3]{The wrong type of fonts in \acro{PDF}} +\keywords{crippled blurry} + +This is far the commonest problem: the symptom is that text in the +document looks ``fuzzy''. + +Most people use \ProgName{Adobe} \ProgName{Acrobat} \ProgName{Reader} +to view their \acro{PDF}: \ProgName{Reader} is distributed free of +charge, and is widely available, for all its faults. One of those +faults is its failure to deal with bitmap fonts (at least, in all +versions earlier than version~6, all of which copies are pretty old, +now~\dots{} but some are occasionally found). + +So we don't want bitmap fonts in our \PS{}: with them, characters show +up in \ProgName{Reader}'s display as blurred blobs which are often not +even recognisable as the original letter, and are often not properly placed +on the line. Nevertheless, even now, most \TeX{} systems have +\ProgName{dvips} configured to use +\Qref*{\extension{pk} files}{Q-pk} in its output. Even +\PDFTeX{} will use \extension{pk} files if it can see no alternative for +a font in the document it is processing. + +Our remedy is to use +``\Qref*{Adobe Type~1}{Q-adobetypen}'' +versions of the fonts we need. Since Adobe are in the +business of selling Type~1 fonts, \ProgName{Reader} was of course made +to deal with them really rather well, from the very beginning. + +Of course, if your document uses nothing but fonts that came from +Adobe in the first place~--- fonts such as \FontName{Times} that +appear in pretty much every \PS{} printer, or such as Adobe +\FontName{Sabon} that you pay extra for~--- then there's no problem. + +But most people use \FontName{Computer} \FontName{Modern} to start +with, and even those relative sophisticates who use something as +exotic as \ProgName{Sabon} often find themselves using odd characters +from \acro{CM} without really intending to do so. Fortunately, rather +good versions of the \acro{CM} fonts are available from the \acro{AMS} +(who have them courtesy of % ! line break +\Qref{Blue Sky Research}{Q-commercial} and \YandY{}). + +Most modern systems have the fonts installed ready to use; and any +system installed less than 3~years ago has a \ProgName{dvips} +configuration file `\texttt{pdf}' that signals the use of the +\acro{CM} fonts, and also sets a few other parameters to improve +\ProgName{dvips}' output. Use this configuration as: +\begin{quote} +\begin{verbatim} +dvips -Ppdf myfile -o myfile.ps +\end{verbatim} +\end{quote} +This may produce a warning message about failing to find the +configuration file: +\begin{quote} +\begin{verbatim} +dvips: warning: no config file for `pdf' +\end{verbatim} +\end{quote} +or something similar, or about failing to find a font file: +\begin{quote} +\begin{verbatim} +dvips: ! Couldn't find header file cmr10.pfb +\end{verbatim} +\end{quote} +Either of these failures signals that your +system doesn't have the fonts in the first place. + +A way of using the fonts that doesn't involve the sophistication of +the \texttt{-Ppdf} mechanism is simply to load maps: +\begin{quote} +\begin{verbatim} +dvips -Pcmz -Pamz myfile -o myfile.ps +\end{verbatim} +\end{quote} +You may encounter the same warning messages as listed above. + +If your system does not have the fonts, it won't have the +configuration file either; however, it might have the configuration +file without the fonts. In either case, you need to +\Qref*{install the fonts}{Q-inst1cm}. + + +\Question[Q-fuzzy-gs]{Fuzzy fonts because \ProgName{Ghostscript} too old} +\keywords{crippled blurry} + +So you've done everything the \acro{FAQ} has told you that you need, +correct fonts properly installed and appearing in the \ProgName{dvips} +output, but \emph{still} you get fuzzy character output after +distilling with \href{http://www.ghostscript.com/}{\ProgName{ghostscript}}. + +The problem could arise from too old a version of +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}}, which you +may be using directly, or via a +script such as \ProgName{ps2pdf} (distributed with +\ProgName{ghostscript} itself), \ProgName{dvipdf}, or similar. +Though \ProgName{ghostscript} was capable of distillation from +version~5.50, that version could only produce bitmap Type~3 output of +any font other than the fundamental 35~fonts (\FontName{Times}, +\FontName{Helvetica}, etc.). Later versions added `complete' +distillation, but it wasn't until version~6.50 that one could rely on +it for everyday work. + +So, if your \acro{PDF} output still looks fuzzy in \ProgName{Acrobat} +\ProgName{Reader}, upgrade \ProgName{ghostscript}. The new version +should be at least version~6.50, of course, but it's usually good +policy to go to the most recent version (version~8.12 at the time of +writing~--- 2003). + +\Question[Q-fuzzy-T1]{Fonts go fuzzy when you switch to \acro{T}1} +\keywords{crippled blurry} + +You've been having problems with hyphenation, and someone has +suggested that you should use ``\cmdinvoke{usepackage}[T1]{fontenc}'' +to help sort them out. Suddenly you find that your final \acro{PDF} +has become fuzzy. The problem may arise whether you are using \PS{} +output and then distilling it, or you are using \PDFTeX{} for the +whole job. + +In fact, this is the same problem as most others about the +\Qref*{quality of \acro{PDF}}{Q-dvips-pdf}: you've abandoned +your previous setup using Type~1 versions of the \acro{CM} fonts, and +\ProgName{dvips} has inserted Type~3 versions of the \acro{EC} fonts +into your document output. (See % beware line break +``\Qref*{Adobe font types}{Q-adobetypen} +for details of these font types; also, note that the font +\emph{encoding}~\acro{T}1 +has nothing directly to do with the font \emph{format}~Type~1). + +However, as noted in % beware line break +\htmlonly{``}\Qref[question]{8-bit Type~1 fonts}{Q-type1T1}\htmlonly{''}, +Type~1 versions of \acro{CM}-like fonts in \acro{T}1 (or equivalent) encoding +are now available, both as ``real'' fonts, and as virtual font sets. +One solution, therefore, is to use one of these alternatives. + +The alternative is to switch font family altogether, to something like +\FontName{Times} (as a no-thought default) or one of the many more pleasing +Adobe-encoded fonts. The default action of \Package{fontinst}, when +creating metrics for such a font, is to create settings for both \acro{OT}1 +and \acro{T}1 encodings, so there's little change in what goes on (at the +user level) even if you have switched to \acro{T}1~encoding when using the +fonts. + +\Question[Q-distill-prob]{Characters missing from \acro{PDF} output} + +If you're using \ProgName{Acrobat} \ProgName{Distiller} to create your +\acro{PDF} output, you may find +characters missing. This may manifest +itself as messed-up maths equations (missing +``\latexhtml{\ensuremath{-}}{-}'' signs, for example), or bits missing +from large symbols. Early versions of \ProgName{Distiller} used to +ignore character positions 0--31 and 128--159 of every font: Adobe's +fonts never use such positions, so why should \ProgName{Distiller}? + +Well, the answer to this question is ``because Adobe don't produce all +the world's fonts''~--- fonts like \FontName{Computer} +\FontName{Modern} were around before Adobe came on the scene, and +\emph{they} use positions 0--31. Adobe don't react to complaints like +that in the previous sentence, but they do release new versions of +their programs; and \ProgName{Distiller}, since at least version~4.0, +\emph{has} recognised the font positions it used to shun. + +Meanwhile, \TeX{} users with old versions of \ProgName{Distiller} need +to deal with their fonts. \ProgName{Dvips} comes to our aid: the +switch \texttt{-G1} (``remap characters''), which moves the offending +characters out of the way. The \acro{PDF} configuration file +(\texttt{-Ppdf}), recommended % beware line break +\latexhtml{above}{in ``\Qref{the wrong type of fonts}{Q-fuzzy-type3}''}, +includes the switch. + +The switch is not without its problems; pre-2003 versions of +\ProgName{dvips} will apply it to Adobe fonts as well, causing +\Qref*{havoc}{Q-charshift}, but fortunately +that problem is usually soluble. However, a document using both +\acro{CM} and Adobe-specified fonts is stuck. The only real solution +is either to upgrade \ProgName{dvips}, or to spend money to upgrade +\ProgName{Distiller}. + +\Question[Q-type1T1]{Finding `8-bit' Type~1 fonts} +\keywords{eight} + +Elsewhere, answers to these \acro{FAQ}s recommend that you use an +`8-bit' font to permit % line break!! +\Qref*{accentuation of inflected languages}{Q-hyphenaccents}, +and also recommend the use of Type~1 fonts to ensure that +you get \Qref*{good quality \acro{PDF}}{Q-fuzzy-type3}. These +recommendations used to be contradictory: one could not just +``switch'' from the free \acro{CM} fonts to free Cork- (or similarly) +encoded Type~1 fonts. The first approach that started to alleviate +these problems, was the development of virtual fonts that make +a good approach to the Cork encoding (see below). Now, however, we +have ``true'' Type~1 fonts available: as always, we have an +embarrassment of riches with three free alternatives, and one +commercial and one shareware version. + +\Package{CM-super} is an +auto-traced set which encompasses all of the \acro{T}1 and \acro{TS}1 +encodings as well as the \acro{T}2* series (the family of encodings +that cover languages based on Cyrillic alphabets). These fonts are +pretty easy to install (the installation instructions are clear), but +they are huge: don't try to install them if you're short of disc +space. + +\Package{CM-LGC} is a similar ``super-font'' set, but of much more +modest size; it covers \acro{T}1, \acro{TS}1 and \acro{T}2{A} +encodings (as does \Package{CM-super}, and also covers the \acro{LGR} +encoding (for typesetting Greek, based on Claudio Beccari's \MF{} +sources). \Package{CM-LGC} manages to be small by going to the +opposite extreme from \Package{CM-super}, which includes fonts at all +the sizes supported by the original \acro{EC} (a huge range); +\Package{CM-LGC} has one font per font shape, getting other sizes by +scaling. There is an inevitable loss of quality inherent in this +approach, but for the disc-space-challenged machine, \Package{CM-LGC} +is an obvious choice. + +\Package{Tt2001} is a simple scan of the \acro{EC} and \acro{TC} +fonts, and has some virtues~--- it's noticeably smaller than +\Package{CM-super} while being less stark than \Package{CM-LGC}. + +\Package{Latin} \Package{Modern} is produced using the +program \Qref*{\ProgName{MetaType1}}{Q-textrace}. The +\Package{Latin} \Package{Modern} set comes with \acro{T}1, \acro{TS}1 +\acro{LY}1 encoded variants (as well as a variant using the Polish +\acro{QX} encoding); for the glyph set it covers, its outlines seem +rather cleaner than those of \Package{CM-super}. \Package{Latin} +\Package{Modern} is more modest in its disc space demands than is +\Package{CM-super}, while not being nearly as stark in its range of +design sizes as is \Package{CM-LGC}~--- \Package{Latin} +\Package{Modern}'s fonts are offered in the same set of sizes as the +original \Package{CM} fonts. It's hard to argue with the choice: +Knuth's range of sizes has stood the test of time, and is one of the +bases on which the excellence of the \TeX{} system rests. + +\Qref*{Virtual fonts}{Q-virtualfonts} help us deal with the problem, +since they allow us to map ``bits of \acro{DVI} file'' to single +characters in the virtual font; so we can create an ``\'e'' character +by recreating the \acro{DVI} commands that would result from the code +``\csx{'}\texttt{e}''. However, since this involves two characters being +selected from a font, the arrangement is sufficient to fool +\ProgName{Acrobat} \ProgName{Reader}: you can't use the program's +facilities for searching for text that contains inflected characters, +and if you \emph{cut} text from a window that contains such a +character, you'll find something unexpected (typically the accent and +the `base' characters separated by a space) when you \ProgName{paste} +the result. However, if you can live with this difficulty, virtual +fonts are a useful and straightforward solution to the problem. + +There are two virtual-font offerings of \acro{CM}-based 8-bit +fonts~--- the \Package{ae} (``almost \acro{EC}'') and +\Package{zefonts} sets; the \Package{zefonts} set has wider coverage +(though the \Package{ae} set may be extended to offer guillemets by +use of the \Package{aeguill} package). Neither offers characters such +as \texttt{eth} and \texttt{thorn} (used in, for example, in +Icelandic), but the \Package{aecompl} package works with the +\Package{ae} fonts to provide the missing characters from the +\acro{EC} fonts (i.e., as bitmaps). + +The sole remaining commercial \acro{CM}-like 8-bit font comes from +Micropress, who offer the complete \acro{EC} set +in Type~1 format, as part of their range of outline versions of fonts +that were originally distributed in \MF{} format. See +\Qref[question]{``commercial distributions''}{Q-commercial}. + +The shareware % ! line break +\Qref*{BaKoMa \TeX{} distribution}{Q-TeXsystems} offers a +set of Type~1 \acro{EC} fonts, as an extra shareware option. (As far +as the present author can tell, these fonts are \emph{only} available +to users of BaKoMa \TeX{}: they are stored in an archive format that +seems not to be publicly available.) + +Finally, you can use one of the myriad text fonts available in Type~1 +format (with appropriate \acro{PSNFSS} metrics for \acro{T}1 encoding, +or metrics for some other 8-bit encoding such as \acro{LY}1). However, +if you use someone else's text font (even something as simple as +Adobe's Times family) you have to find a matching family of +mathematical fonts, which is a non-trivial undertaking~--- +\htmlonly{see }\Qref{``choice of scalable fonts''}{Q-psfchoice}. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}ae fonts]\CTANref{ae} +\item[aecompl.sty]Distributed with \CTANref{ae} +\item[aeguill.sty]\CTANref{aeguill} +\item[\nothtml{\rmfamily}BaKoMa fonts]Browse \CTANref{bakoma-texfonts} +\item[\nothtml{\rmfamily}CM-LGC fonts]\CTANref{cm-lgc} +\item[\nothtml{\rmfamily}CM-super fonts]\CTANref{cm-super} (beware: + very large download) +\item[\nothtml{\rmfamily}Latin Modern fonts]\CTANref{lm} +\item[\nothtml{\rmfamily}tt2001 fonts]\CTANref{tt2001} +\item[\nothtml{\rmfamily}zefonts]\CTANref{zefonts} +\end{ctanrefs} + +\Question[Q-pkfix]{Replacing Type 3 fonts in \PS{}} + +One often comes across a \PS{} file generated by +\ProgName{dvips} which contains embedded \acro{PK} fonts; if you try +to generate \acro{PDF} from such a file, the quality will be poor. + +Of course, the proper solution is to regenerate the \PS{} file, +but if neither the sources nor the \acro{DVI} file are available, one +must needs resort to some sort of patching to replace the bitmap fonts +in the file by outline fonts. + +The program \ProgName{pkfix} (by Heiko Oberdiek) will do this +patching, for files created by ``not too old versions'' of +\ProgName{dvips}: it finds the fonts to be replaced by examining the +\PS{} comments \ProgName{dvips} has put in the file. For each +font, \ProgName{pkfix} puts appropriate \TeX{} commands in a file, +which it then processes and runs through \ProgName{dvips} (with switch +\texttt{-Ppdf}) to acquire an appropriate copy of the font; these copies are +then patched back into the original file. + +If your source file is older than \ProgName{pkfix} can deal with, +there's still a modicum of hope: \ProgName{pkfix-helper} examines the +bitmap fonts in a document, compares them with the metric +(\extension{tfm}) fonts on your system and comes to a view of which +font might be which. The program reports on ``poor'' matches, and +there are options for confirming, or replacing, its guesses. The +technique (which sounds implausible) is successful enough to be worth +a try. + +A further option is Frank Siegert's (shareware) +\href{http://www.pstill.com}{PStill}, which is capable of processing +the \PS{} it is distilling, and one option is to replace bitmap fonts +in the file with Type~1 versions. +\begin{ctanrefs} +\item[pkfix]\CTANref{pkfix} +\item[pkfix-helper]\CTANref{pkfix-helper} +\end{ctanrefs} + +\Question[Q-pdfpagelabels]{\Package{Hyperref} and repeated page numbers} + +The \Class{book} class (and its friends and relations) automatically +changes the display of page numbers in the frontmatter of the document +to lower-case roman. This is fine for human readers, but if +\Package{hyperref} has been misconfigured, the existence of pages have +the same page number can cause problems. Fortunately, the +configuration options to make \Package{hyperref} ``do the right +thing'' are (by default) set up to avoid problems. + +The two options in question are: +\begin{description} +\item[\pkgoption{plainpages=false}] Make page anchors using the + formatted form of the page number. With this option, + \Package{hyperref} writes different anchors for pages `ii' and `2'. + (This is the default value for the option, which is a % ! line break + \emph{good thing}\dots{}) + If the option is set `\texttt{true}' \Package{hyperref} writes page + anchors as the arabic form of the page number, rather than the + formatted form that gets printed; this is not usually appropriate. +\item[\pkgoption{pdfpagelabels}] Set \acro{PDF} page labels; i.e., + write the value of \csx{thepage} to the \acro{PDF} file so that + \Package{Acrobat Reader} can display the page number as (say) `ii (4 + of 40)' rather than simply `4 of 40'. +\end{description} +The two should be used whenever page numbering is not just +`1\texttt{..}\ensuremath{n}'; they may be used independently, but +usually are not. + +The recipe isn't perfect: it relies on \csx{thepage} being different +for every page in the document. A common problem arises when there is +an unnumbered title page, after which page numbers are reset: the +\PDFTeX{} warning of ``\Qref*{duplicate destinations}{Q-hyperdupdest}'' +will happen in this case, regardless of the options. +\begin{ctanrefs} +\item[hyperref.sty]\CTANref{hyperref} +\end{ctanrefs} + +\Question[Q-cpy-srchpdf]{Copy-paste-able/searchable \acro{PDF} files} + +\acro{PDF} files generated from \tex{} (and friends), will by default +hold their text in the encoding of the original \tex{} font used by +the document. + +When \acro{PDF} readers, etc., offer copy-paste or searching +functions, the operations take place on the glyph codes used for the +fonts selected by the document. This is fine, for the simplest +documents (in English, at least); the problem comes when you're using +an inflected language (with accented letters, or composite glyphs +such as `\ae{}')~--- \tex{} will typically use a non-standard +encoding, and there are likely be problems, since \acro{PDF} readers +assume the text is presented in Unicode. + +For \acro{PDF} generated from \latex{} (the \acro{DVI} being +converted, by whatever means), or from \pdflatex{}, the character +codes used in the \acro{PDF} file are in fact those of the document's +\Qref*{font encoding}{Q-whatenc}; if you're using \acro{OT}1 or +\acro{T}1, your document will be \acro{OK} for almost all \acro{ASCII} +characters, but it's likely that anything ``out of the ordinary'' will +not be represented properly. (Of course, \acro{PDF} generated from +\xetex{}- or \luatex{}-based formats is going to be \acro{OK}, since +those engines work in Unicode througout.) + +The solution comes from the character-mapping facilities in the +\acro{PDF} specification: the file may specify a table of translations +of characters present in the coding used in the file, to a Unicode +version of the characters. + +Packages \Package{cmap} and \Package{mmap} both offer means of +generating such tables (\Package{mmap} has wider coverage, including +the various maths encodings); both work with \pdftex{} and no other +engine. Thus your document becomes something like: +\begin{quote} +\begin{verbatim} +\documentclass{article} +\usepackage{mmap} % (or cmap) +\usepackage[T1]{fontenc} +... % your other packages +\begin{document} +... % your actual text +\end{verbatim} +\end{quote} + +Unfortunately, the packages only work with fonts that are directly +encoded, such as the default (Computer Modern, i.e., \FontName{cm} +fonts, and things such as \FontName{cm-super} or the \FontName{Latin} +\FontName{Modern} sets. Fonts like Adobe +Times Roman (which are encoded for \AllTeX{} use via virtual fonts) +are not amenable to this treatment. +\begin{ctanrefs} +\item[cmap.sty]\CTANref{cmap} +\item[cm-super \nothtml{\rmfamily}fonts]\CTANref{cm-super} +\item[\nothtml{\rmfamily}Latin Modern fonts]\CTANref{lm} +\item[mmap.sty]\CTANref{mmap} +\end{ctanrefs} +\LastEdit{2013-08-21} + +% \Question[Q-hypertex]{The Hyper\tex{} project} +% +% The Hyper\TeX{} project extended the functionality of all the +% \LaTeX{} cross-referencing commands (including the table of contents) +% to produce \csx{special} commands which are parsed by \acro{DVI} processors +% conforming to the Hyper\TeX{} guidelines; +% it provides general hypertext links, including those +% to external documents. +% +% The Hyper\TeX{} specification says that conformant viewers/translators +% must recognize the following set of \csx{special} commands: +% \begin{description} +% \item[href:] |html:| +% \item[name:] |html:| +% \item[end:] |html:| +% \item[image:] |html:| +% \item[base\_name:] |html:| +% \end{description} +% +% The \emph{href}, \emph{name} and \emph{end} commands are used to do +% the basic hypertext operations of establishing links between sections +% of documents. +% +% Further details are available on \URL{http://arXiv.org/hypertex/}; there +% are two commonly-used implementations of the specification, a +% modified \ProgName{xdvi} and (recent releases of) +% \ProgName{dvips}. Output from the latter may be used in recent +% releases of \ProgName{ghostscript} or Acrobat Distiller. + + diff --git a/help/uk-tex-faq/faq-images.tex b/help/uk-tex-faq/faq-images.tex new file mode 100644 index 0000000000..714c628f0a --- /dev/null +++ b/help/uk-tex-faq/faq-images.tex @@ -0,0 +1,25 @@ +\documentclass[a4paper,12pt]{article} +\usepackage[active,tightpage]{preview} +\begin{document} +\large + +% image 1: wobbly subscript +\begin{preview} + $ X^{1}_{2} X_{2} $ +\end{preview} + +% image 2: even subscript pushed down by null superscript +\begin{preview} + $ X^{1}_{2} X^{}_{2} $ +\end{preview} + +% image 3: simple use of maths: +\begin{preview} + \texttt{fi}\ensuremath\Rightarrow``fi'' +\end{preview} +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/help/uk-tex-faq/faq-install.tex b/help/uk-tex-faq/faq-install.tex new file mode 100644 index 0000000000..7c01b80fcf --- /dev/null +++ b/help/uk-tex-faq/faq-install.tex @@ -0,0 +1,1021 @@ +% $Id: faq-install.tex,v 1.17 2014/01/28 18:17:36 rf10 Exp rf10 $ + +\section{Installing \AllTeX{} files} + +\Question[Q-installthings]{Installing things on a \AllTeX{} system} +\AliasQuestion{Q-instpackages} + +Installing (or replacing) things on your \AllTeX{} system has the +potential to be rather complicated; the following questions attempt to +provide a step-by-step approach, starting from the point where you've +decided what it is that you want to install: +\begin{itemize} +\item You must \Qref*{find the file you need}{Q-install-find}; +\item If you are going to install a \LaTeX{} package, you may need to + \Qref*{unpack the distributed files}{Q-install-unpack}; +\item It may be necessary to % ! line break + \Qref*{generate some documentation to read}{Q-install-doc}; +\item You need to % ! line break + \Qref*{decide where to install the files}{Q-install-where}; +\item You must now \Qref*{install the files}{Q-inst-wlcf}; and + finally +\item You may need to \Qref*{tidy up}{Q-inst-tidy} after the installation. +\end{itemize} + +\Question[Q-install-find]{Finding packages to install} + +How did you learn about the package? + +If the information came from these \acro{FAQ}s, you should already +have a link to the file (there are lists of packages at the end of +each answer). +\begin{narrowversion} + Make a browser link from \URL{http://mirror.ctan.org/} and the text + in the package list; if the link returns a directory listing, you can + generally retrieve the whole directory by appending the link with + \extension{zip}~--- so, for example + \URL{http://mirror.ctan.org/macros/latex/doc.zip} for the \latex{} + documentation directory. +\end{narrowversion} +\begin{wideversion} + Click on one of the links associated with the package, and you can + get the package (which may be one file or several). +% need separate wording for pdfversion and htmlversion, here +\end{wideversion} + +If you heard about the file somewhere else, it's possible that the +source told you where to look; if not, try the \acro{CTAN} searching +facilities, such as \URL{http://www.tex.ac.uk/search/}. That (rather +simple) search engine can return data from a search of the CTAN +catalogue (which covers most useful packages), or data from a search +of the names of files on the archive. + +Packages come in a variety of different styles of distribution; the +very simplest will actually offer just \File{package.sty}~--- in this +case, just download the file and % ! line break +\Qref*{get on with installation}{Q-inst-wlcf}. + +You will regularly find that the file you want (e.g., \File{foo.sty}) +is distributed in a \LaTeX{} documented source file \File{foo.dtx}; +thus you should search just for \emph{foo}~--- \File{foo.sty} won't be +visible anywhere on the archive or in the catalogue. + +Since most packages are distributed in this +\extension{dtx}/\extension{ins} way, they usually occupy their own +directory on the archive. Even if that directory contains other +packages, you should download everything in the directory: as often as +not, packages grouped in this way depend on each other, so that you +really \emph{need} the other ones. + +Having acquired the package distribution, % ! line break +``\Qref*{unpacking \LaTeX{} packages}{Q-install-unpack}'' outlines +your next step. + +\Question[Q-install-unpack]{Unpacking \LaTeX{} packages} + +As discussed \Qref*{elsewhere}{Q-dtx}, the `ordinary' way to +distribute a \LaTeX{} package is as a pair of files \File{package.dtx} +and \File{package.ins}. If you've acquired such a pair, you simply +process \File{package.ins} with \LaTeX{}, and the files will appear, +ready for installation. + +Other sorts of provision should ordinarily be accompanied by a +\File{README} file, telling you what to do; we list a few example +configurations. + +Sometimes, a directory comes with a bunch of \extension{dtx} files, but +fewer (often only one) \extension{ins} files (\LaTeX{} itself comes +looking like this). If there is more than one \extension{ins} file, +and in the absence of any instruction in the \File{README} file, simply +process the \extension{ins} file(s) one by one. + +If you're missing the \File{package.ins} altogether, you need to play +around until something works. Some \extension{dtx} files are +``self-extracting''~--- they do without an \extension{ins} file, and once +you've processed the \File{package.dtx}, \File{package.sty} has +automagically appeared. Various other oddities may appear, but the +archivists aim to have \File{README} file in every package, which +should document anything out of the ordinary with the distribution. + +\Question[Q-install-doc]{Generating package documentation} + +We are faced with a range of ``normal'' provision, as well as several +oddities. One should note that documentation of many packages is +available on \acro{CTAN}, without the need of any further effort by +the user~--- such documentation can usually be browsed \emph{in situ}. + +However, if you find a package that does not offer documentation on +the archive, or if you need the documentation in some other format +than the archive offers, you can usually generate the documentation +yourself from what you download from the archive. + +The standard mechanism, for \LaTeX{} packages, is simply to run +\LaTeX{} on the \File{package.dtx} file, as you would any ordinary +\LaTeX{} file (i.e., repeatedly until the warnings go away). + +A variant is that the unpacking process provides a file +\File{package.drv}; if such a thing appears, process it in preference +to the \File{package.dtx} (it seems that when the documented \LaTeX{} +source mechanism was first discussed, the \File{.drv} mechanism was +suggested, but it's not widely used nowadays). + +Sometimes, the \LaTeX{} run will complain that it can't find +\File{package.ind} (the code line index) and/or \File{package.gls} +(the list of change records, not as you might imagine, a glossary). +Both types of file are processed with special \ProgName{makeindex} +style files; appropriate commands are: +\begin{quote} +\begin{verbatim} +makeindex -s gind package +makeindex -s gglo -o package.gls package.glo +\end{verbatim} +\end{quote} +This author finds that the second (the change record) is generally of +limited utility when reading package documentation; it is, however, +valuable if you're part of the package development team. If you don't +feel you need it, just leave out that step + +Another common (and reasonable) trick performed by package authors is +to provide a separate file \File{package-doc.tex} or even simply +\File{manual.tex}; if the file \File{package.dtx} doesn't help, simply +look around for such alternatives. The files are treated in the same +way as any ``ordinary'' \LaTeX{} file. + +\Question[Q-inst-wlcf]{Installing files ``where \AllTeX{} can find them''} +\AliasQuestion{Q-wherefiles} + +In the past, package documentation used always to tell you to put your +files ``where \LaTeX{} can find them''; this was always unhelpful~--- +if you knew where that \emph{was}, you didn't need telling, but if you +\emph{didn't} know, you were completely stuck. + +It was from this issue that the whole idea of the \acro{TDS} sprang; +``where to put'' questions now come down to ``where's the \acro{TDS} +tree?''. + +We therefore answer the question by considering: +\begin{itemize} +\item \Qref*{what tree to use}{Q-what-TDS}, and +\item \Qref*{where in the tree to put the files}{Q-install-where}. +\end{itemize} + +Once we know the answer to both questions, and we've created any +directories that are needed, we simply copy files to their rightful +location. + +This has done what the old requirement specified: \LaTeX{} (or +whatever) \emph{can} (in principle) find the files. However, in order +that the software \emph{will} find the files, we need to update an +index file. + +On a \miktex{} system, open the window + \texttt{Start}\arrowhyph{}% + \texttt{All Programs}\arrowhyph{}% + \texttt{\miktex{} \meta{version}}\arrowhyph{}% + \texttt{Settings}, +and click on \texttt{Refresh FNDB}. +The job may also be done in a command window, using the command: +\begin{quote} +\begin{verbatim} +initexmf --update-fndb +\end{verbatim} +\end{quote} +The % ! line break +\href{http://docs.miktex.org/manual/initexmf.html}{\miktex{} documentation} +gives further details about \texttt{initexmf}. + +On a \texlive{}-based system (or its predecessor te\TeX{}, use the command +\texttt{texhash} (or if that's not available, \texttt{mktexlsr}~--- +they ought to be different names for the same program). + +Having done all this, the new package will be available for use. + +\Question[Q-what-TDS]{Which tree to use} + +In almost all cases, new material that you install should go into the +``local'' tree of your \AllTeX{} installation. (A discussion of +reasons \emph{not} to use the local tree appears below.) + +On a Unix(-alike) system, using \texlive{} or te\TeX{}, the root +directory will be named something like \path{/usr/share/texmf-local/} +or \path{/usr/local/share/texmf/} +You can ask such a system where it believes a local tree should be: +\begin{quote} +\begin{verbatim} +kpsewhich -var-value TEXMFLOCAL +\end{verbatim} +\end{quote} +the output being the actual path, for example (on the workstation this +author is using today): +\begin{quote} +\begin{verbatim} +/usr/local/share/texmf +\end{verbatim} +\end{quote} + +In a \miktex{} installation, the location will in fact typically be +something you specified yourself when you installed \miktex{} in the +first place, but you may find you need to create one. The \miktex{} +``Settings'' window (% + \texttt{Start}\arrowhyph{}% + \texttt{Programs}\arrowhyph{}% + \texttt{\miktex{}}\arrowhyph{}% + \texttt{Settings}) +has a tab ``\texttt{Roots}''; that tab gives a list of current +\acro{TDS} roots (they're typically not called +\texttt{texmf}-anything). If there's not one there with +``\texttt{local}'' in its name, create an appropriate one (see below), +and register it using the window's +``\texttt{Add}'' button. + +The % ! line break +\href{http://docs.miktex.org/faq/maintenance.html}{\miktex{} \acro{FAQ}} +suggests that you should create % ! line break +``\texttt{C:\textbackslash Local TeX Files}'', which is good if you +manage your own machine, but often not even possible in corporate, or +similar, environments~--- in such situations, the user may have no +control over the hard disc of the computer, at all. + +So the real criterion is that your local tree should be somewhere that +\emph{you}, rather than the system, control. Restrictive systems often +provide a ``home directory'' for each user, mounted as a network +drive; this is a natural home for the user's local tree. Other (often +academic) environments assume the user is going to provide a memory +stick, and will assign it a defined drive letter~--- another good +candidate location. Note that the semantics of such a tree are +indistinguishable from those of a % ! line break +\Qref*{``home'' \acro{TEXMF} tree}{Q-privinst}. + +You might not wish to use the `local' tree: +\begin{itemize} +\item if the package, or whatever, is ``personal'' (for example, + something commercial that has been licensed to you alone, or + something you're developing yourself), it should go in your + \Qref*{``home'' \acro{TEXMF} tree}{Q-privinst}; +\item if you \emph{know} that the package you are installing is a + replacement for the copy on the \acro{TEXMF} tree of your \AllTeX{} + distribution; in this case it is reasonable to replace the existing + copy in the \acro{TEXMF} tree. +\end{itemize} +If the system is upgraded (or otherwise re-installed), a copy made in +the \acro{TEXMF} tree will probably be overwritten or deleted. This +may be what you want, but otherwise it's a powerful incentive to use a +tree that is \emph{not} ``part of the installed system''. + +The reason one might place upgrades the distribution's main tree is to +avoid confusion. Suppose you were to place the file on the local +tree, and then install a new version of the distribution~--- you might +have an effect like: +\begin{itemize} +\item distribution comes with package version \ensuremath{n}; +\item you install package version \ensuremath{n+1} on the local tree; and +\item the updated distribution provides package version \ensuremath{n+2}. +\end{itemize} +In such a situation, you could find yourself using version +\ensuremath{n+1} (from the local tree) \emph{after} the new +distribution has been installed. + +If you install in the local tree, the only way to avoid such problems +is to carefully purge the local tree when installing a new +distribution. This is tedious, if you're maintaining a large +installation. + +\Question[Q-install-where]{Where to install packages} + +We assume here that you have decided what tree to put your files in, +after reading % ! line break +``\Qref*{choosing a \acro{TDS} tree}{Q-what-TDS}''. We will therefore +write \texttt{\$TEXMF} for it, and you need to substitute the tree +you decided on. + +The basic idea is to imitate the directory structure in your +existing tree(s). Here are some examples of where various sorts of +files should go: +\begin{verbatim} +.sty, .cls or .fd: $TEXMF/tex/// +.mf: $TEXMF/fonts/source/// +.tfm: $TEXMF/fonts/tfm/// +.vf: $TEXMF/fonts/vf/// +.afm: $TEXMF/fonts/afm/// +.pfb: $TEXMF/fonts/type1/// +.ttf: $TEXMF/fonts/truetype/// +.otf: $TEXMF/fonts/opentype/// +.pool, .fmt, .base or .mem: $TEXMF/web2c +\end{verbatim} +and for modern systems (those distributed in 2005 or later, using \acro{TDS} +v1.1 layouts): +\begin{verbatim} +.map: $TEXMF/fonts/map/// +.enc: $TEXMF/fonts/enc/// +\end{verbatim} +(Map and encoding files went to directories under +\File{$TEXMF/dvips/}, %$ +in earlier distributions.) + +In the lists above \meta{format} identifies the format the macros +are designed for~--- it can be things such as \texttt{plain}, +\texttt{generic} (i.e., any format), \texttt{latex} or +\texttt{context} (or several less common formats). + +For fonts, \meta{font} refers to the font family (such as \texttt{cm} +for Knuth's Computer Modern, \texttt{times} for Adobe's Times Roman). +The supplier is usually obvious~--- the supplier +``public'' is commonly used for free fonts. + +The \meta{syntax} (for \extension{map} and \extension{enc} files) is a +categorisation based on the way the files are written; candidates are +names of programs such as \ProgName{dvips} or \ProgName{pdftex}. + +``Straight'' \AllTeX{} input can take other forms than the +\extension{sty}, \extension{cls} or \extension{fd} listed above, too +(apart from the `obvious' \extension{tex}). Examples are (the +obvious) \extension{tex}, \extension{lfd} for \Package{babel} language +definitions, \extension{sto} and \extension{clo} for package and class +options, \extension{cfg} for configuration information, +\extension{def} for variants (such as the types of devices +\Package{graphics} drives). The \File{README} of the package should +tell you of any others, though sometimes that information is printed +when the package's \Qref*{comments are stripped}{Q-install-unpack}. +All of these files should live together with the main package files. + +Note that \meta{font} may stand for a single font or an entire family: +for example, files for all of Knuth's Computer Modern fonts are to be +found in \texttt{.../public/cm}, with various prefixes as appropriate. + +The font ``supplier'' \emph{public} is a sort of hold-all for +``free fonts produced for use with \AllTeX{}'': as well as Knuth's +fonts, \emph{public}'s directory holds fonts designed by others +(originally, but no longer exclusively, in \MF{}). + +Documentation for each package should all go, undifferentiated, into a +directory on the \path{doc/} subtree of the \acro{TDS}. The layout of +the subtree is slightly different: \path{doc/latex} hosts all +\LaTeX{} documentation directories, but more fundamental things are +covered, e.g., by \path{doc/etex} or \path{doc/xetex}. + +\Question[Q-inst-tidy]{Tidying up after installation} + +There's not usually a lot to do after you've completed the steps +above~--- indeed, if you're merely installed files direct from the +archive, or whatever, there will be precisely nothing left, by way of +debris. + +Things you might care to clean up are: +\begin{itemize} +\item the archive file, if you retrieved your data from the archive + as a \extension{zip} file, or the like; +\item the \extension{dtx} and \extension{ins} files, if you chose not + to install them with the documentation; and +\item the \extension{aux}, \extension{log}, \extension{idx}, etc., + from building the documentation. +\end{itemize} +A simple way of achieving all this is to download to a working +directory that was created for the purpose, and then to delete that +directory and all its contents after you've finished installing. + +\Question[Q-inst-scut]{Shortcuts to installing files} + +There are circumstances in which most of the fuss of installation can +be bypassed: +\begin{itemize} +\item If you are a \miktex{} user, the +\begin{hyperversion} + \Qref{\miktex{} package management system}{Q-inst-miktex*} + can usually help; +\end{hyperversion} +\begin{flatversion} + \miktex{} package management system can usually help + (\Qref{}{Q-inst-miktex*}); +\end{flatversion} +\item Similarly, if you are a \texlive{} user, the +\begin{hyperversion} + \Qref{\texlive{} manager}{Q-inst-texlive} + can usually help; +\end{hyperversion} +\begin{flatversion} + \texlive{} package management system can usually help + (\Qref{}{Q-inst-texlive}); +\end{flatversion} +\item The package you want may already exist as a \acro{ZIP} file +\begin{wideversion} + formatted for \Qref{direct installation}{Q-inst-tds-zip}. +\end{wideversion} +\begin{narrowversion} + formatted for direct installation (\Qref{}{Q-inst-tds-zip}). +\end{narrowversion} +\end{itemize} + +\Question[Q-inst-miktex*]{Installation using \miktex{} package manager} +\AliasQuestion{Q-inst-miktex} + +Packages for use with \miktex{} are maintained very efficiently by the +project managers (new packages and updates on \acro{CTAN} ordinarily +make their way to the \miktex{} package repository within a week). +Thus it makes sense for the \miktex{} user to take advantage of the +system rather than grinding through the steps of installation. + +\miktex{} maintains a database of packages it ``knows about'', +together with (coded) installation instructions that enable it to +install the packages with minimal user intervention; you can update +the database over the internet. + +If \miktex{} does know about a package you need installed, it's worth +using the system: +first, open the \miktex{} packages window: click on + \texttt{Start}\arrowhyph{}% + \texttt{Programs}\arrowhyph{}% + \texttt{MiKTeX}\arrowhyph{}% + \texttt{MiKTeX Options}, and select the + \texttt{Packages} tab. + +On the tab, there is an Explorer-style display of packages. +Right-click on the root of the tree, ``\texttt{MiKTeX Packages}'', +and select ``\texttt{Search}'': enter the name of the package you're +interested in, and press the ``\texttt{Search}'' button. If +\miktex{} knows about your package, it will open up the tree to show +you a tick box for your package: check that box. + +If you prefer a command-line utility, there's \ProgName{mpm}. Open a +command shell, and type: +\begin{quote} +\begin{verbatim} +mpm --install= +\end{verbatim} +\end{quote} +(which of course assumes you know the name by which \miktex{} refers to +your package). + +\Question[Q-inst-texlive]{Installation using \texlive{} manager} + +\texlive{} manager (\ProgName{tlmgr}) is, by default, a shell (or +Windows terminal window) command. There is voluminous documentation +about it from the command +\begin{quote} + \texttt{tldoc tlmgr} +\end{quote} +but basic operation is pretty straightforward. The manager needs to +know where to download stuff from; the canonical setup is +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +tlmgr option repository \ + http://mirror.ctan.org/systems/texlive/tlnet +\end{verbatim} +(line wrapped to fit in the narrow column) +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet +\end{verbatim} +\end{wideversion} +\end{quote} +which passes the decision to the mirror selector. You can (of course) +specify a particular archive or mirror that you ``trust'', or even a +local disc copy that you keep up-to-date (disc space and bandwidth are +so cheap nowadays, that a ``home mirror'' of \acro{CTAN} is a feasible +proposition). + +To update a single package, use: +\begin{quote} +\begin{verbatim} +tlmgr update +\end{verbatim} +\end{quote} + +To update everything you already have in your installation, use: +\begin{quote} +\begin{verbatim} +tlmgr update --all +\end{verbatim} +\end{quote} + +\Question[Q-inst-tds-zip]{Installing using ready-built \acro{ZIP} files} + +Installing packages, as they (``traditionally'') appear on +\acro{CTAN}, involves: +\begin{itemize} +\item identifying where to put the various files on an \acro{TDS} + tree, +\item installing them, and +\item a few housekeeping operations. +\end{itemize} +Most people, for most packages, find the first two steps onerous, the +last being easy (unless it is forgotten!). + +Ready-built \acro{ZIP} files~--- also known as % ! line break +\Qref*{\acro{TDS}-\acro{ZIP} files}{Q-tds-zip}~--- are designed to lighten +the load of performing the first two steps of installation: they +contain all the files that are to be installed for a given +package, in their ``correct'' locations in a % ! line break +\Qref*{\acro{TDS} tree}{Q-tds}. + +To install such a file on a Unix system (we assume that you'll install +into the local \acro{TEXMF} tree, at \texttt{\$TEXMFLOCAL}): +\begin{quote} +\begin{verbatim} +cd $TEXMFLOCAL +unzip $package.tds.zip +\end{verbatim} +\end{quote} + +On a Windows system that is modern enough that it has a built-in +\acro{ZIP} unpacker, simply double-click on the file, and browse to +where it's to be unpacked. (We trust that those using earlier +versions of Windows will already have experience of using +\ProgName{WinZIP} or the like.) + +Having unpacked the \extension{zip} archive, in most cases the only +remaining chore is to update the file indexes~--- as in % ! line break +\Qref*{normal installation instructions}{Q-inst-wlcf}. However, if +the package provides a font, you also need to enable the font's map, +which is discussed in % ! line break +``\Qref*{Installing a Type~1 font}{Q-instt1font}'' +\LastEdit{2012-02-08} + +\Question[Q-tempinst]{``Temporary'' installation of \AllTeX{} files} + +Operating systems and applications need to know where to find files: +many files that they need are ``just named''~--- the user doesn't +necessarily know \emph{where} they are, but knows to ask for them. +The commonest case, of course, is the commands whose names you type to +a shell (yes, even Windows' ``\MSDOS{} prompt'') are using a shell to read what +you type: many of the commands simply involve loading and executing a +file, and the \texttt{PATH} variable tells the shell where to find those files. + +Modern \TeX{} implementations come with a bunch of search paths +built in to them. In most circumstances these paths are adequate, but +one sometimes needs to extend them to pick up files in strange +places: for example, we may wish to try a new bundle of packages +before \Qref*{installing them `properly'}{Q-installthings}. To do +this, we need to change the relevant path as \TeX{} perceives it. +However, we don't want to throw away \TeX{}'s built-in path (all of a +sudden, \TeX{} won't know how to deal with all sorts of things). + +To \emph{extend} a \TeX{} path, we define an operating system +environment variable in `path format', but leaving a gap which \TeX{} +will fill with its built-in value for the path. The commonest case is +that we want to place our extension in front of the path, so that our +new things will be chosen in preference, so we leave our `gap to be +filled' at the end of the environment variable. The syntax is simple +(though it depends which shell you're actually using): so on a +Unix-like system, using the \ProgName{bash} shell, the job might be +done like: +\begin{quote} +\begin{verbatim} +export TEXINPUTS=/tmp: +\end{verbatim} +\end{quote} +while in a Windows system, within a \MSDOS{} window, it would be: +\begin{quote} +\begin{verbatim} +set TEXINPUTS=C:/temp; +\end{verbatim} +\end{quote} +In either case, we're asking \TeX{} to load files from the root disc +temporary files directory; in the Unix case, the ``empty slot'' is +designated by putting the path separator `|:|' on its own at the end +of the line, while in the Windows case, the technique is the same, but +the path separator is `|;|'. + +Note that in either sort of system, the change will only affect +instances of \TeX{} that are started from the shell where the +environment variable was set. If you run \TeX{} from another window, +it will use the original input path. To make a change of input path +that will ``stick'' for all windows, set the environment variable in +your login script or profile (or whatever) in a Unix system and log +out and in again, or in \File{autoexec.bat} in a Windows system, and +reboot the system. + +While all of the above has talked about where \TeX{} finds its macro +files, it's applicable to pretty much any sort of file any +\TeX{}-related program reads~--- there are lots of these paths, and of +their corresponding environment variables. In a +\ProgName{web2c}-based system, the copious annotations in the +\File{texmf.cnf} system configuration file help you to learn which +path names correspond to which type of file. + +\Question[Q-privinst]{``Private'' installations of files} + +It sometimes happens that you need a new version of some macro package +or font, but that the machine you use is maintained by someone who's +unwilling to update and won't give you privileges to do the job +yourself. A \Qref*{``temporary'' installation}{Q-tempinst} is +sometimes the correct approach, but if there's the slightest chance +that the installation will be needed on more than one project, +temporary installations aren't right. + +In circumstances where you have plenty of quota on backed-up media, or +adequate local scratch space, the correct approach is to create a +private installation of \AllTeX{} which includes the new stuff you +need; this is the ideal, but is not generally possible. + +So, since you can't install into the public \texttt{texmf} tree, you +have to install into a \File{texmf} tree of your own; fortunately, the +\acro{TDS} standard allows for this, and modern distributions allow +you to do it. The most modern distributions refer to the tree as +\texttt{\$TEXMFHOME}, but it used to be called \texttt{\$HOMETEXMF}; +so to check that your \TeX{} system does indeed support the mechanism +you should start with +\begin{quote} +\begin{verbatim} +kpsewhich -var-value TEXMFHOME +\end{verbatim} +\end{quote} +(for example). This will almost invariably return a pointer to a +subdirectory \File{texmf} of your home directory; the commonest +exception is Macintoshes, using Mac\TeX{}, where the diretory is +conventionally \File{Library/texmf} in your home directory. + +If you can confirm that the technique does indeed work, install your +new package (or whatever) in the \Qref*{correct place}{Q-install-where} +in a tree based on \File{$HOME/texmf}, %$ +and generate an index of that tree +\begin{quote} +\begin{verbatim} +texhash $HOME/texmf +\end{verbatim} +\end{quote} +(the argument specifies which tree you are indexing: it's necessary +since you don't, by hypothesis, have access to the main tree, and +\ProgName{texhash} without the argument would try to write the main +tree. + +There are two wrinkles to this simple formula: first, the installation +you're using may \emph{not} define a home TEXMF directory, and second, +there may be some obstruction to using \File{$HOME/texmf} %$ +as the +default name. In either case, a good solution is to have your own +\File{texmf.cnf}~--- an idea that sounds more frightening that it +actually is. The installation's existing file may be located with the +command: +\begin{quote} +\begin{verbatim} +kpsewhich texmf.cnf +\end{verbatim} +\end{quote} +Take a copy of the file and put it into a directory of your own; this +could be any directory, but an obvious choice is the \File{web2c} +directory of the tree you want to create, i.e., +\File{$HOME/texmf/web2c} %$ +or the like. Make an environment variable to +point to this directory: +\begin{quote} +\begin{verbatim} +TEXMFCNF=$HOME/texmf/web2c +export TEXMFCNF +\end{verbatim} +\end{quote} +(for a Bourne shell style system), or +\begin{quote} +\begin{verbatim} +setenv TEXMFCNF $HOME/texmf/web2c +\end{verbatim} +\end{quote} +(for a C-shell style system). Now edit the copy of \File{texmf.cnf} + +There will be a line in the existing file that defines the tree where +everything searches; the simplest form of the line is: +\begin{quote} +\begin{verbatim} +TEXMF = !!$TEXMFMAIN +\end{verbatim} +\end{quote} +but, there are likely to be several alternative settings behind +comment markers (``\texttt{\textpercent{}}''), and the person who +installed your system may have left them there. Whatever, you need to +modify the line that's in effect: change the above to three lines: +\begin{quote} +\begin{verbatim} +HOMETEXMF = $HOME/texmf +TEXMF = {$HOMETEXMF,!!$TEXMFMAIN} +% TEXMF = !!$TEXMFMAIN +\end{verbatim} +\end{quote} +the important point being that \texttt{\$HOMETEXMF} must come before +whatever was there before, inside the braces. For example, if the +original was +\begin{quote} +\begin{verbatim} +TEXMF = {!!$LOCALTEXMF,!!$TEXMFMAIN} +\end{verbatim} +\end{quote} +it should be converted to: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +HOMETEXMF = $HOME/texmf +TEXMF = {$HOMETEXMF,!!$LOCALTEXMF, + !!$TEXMFMAIN} +% TEXMF = {!!$LOCALTEXMF,!!$TEXMFMAIN} +\end{verbatim} +{\small Note that the \texttt{TEXMF} line is only wrapped to make it + fit in the column; there should be no line break or space between + the final comma on the line and the \texttt{!!} on the next line.\par +}% +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +HOMETEXMF = $HOME/texmf +TEXMF = {$HOMETEXMF,!!$LOCALTEXMF,!!$TEXMFMAIN} +% TEXMF = {!!$LOCALTEXMF,!!$TEXMFMAIN} +\end{verbatim} +\end{wideversion} +\end{quote} +(retaining the original, as a comment, is merely an aide-memoir in +case you need to make another change, later). The \texttt{!!} signs +tell the file-searching library that it should insist on a +\ProgName{texhash}-ed directory tree; if you can count on yourself +remembering to run \ProgName{texhash} on your new tree every time you +change it, then it's worth adding the marks to your tree: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +TEXMF = {!!$HOMETEXMF,!!$LOCALTEXMF, + !!$TEXMFMAIN} +\end{verbatim} +{\small Note that the line is only wrapped to make it + fit in the column; there should be no line break or space between + the final comma on the line and the \texttt{!!} on the next line.\par +}% +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +TEXMF = {!!$HOMETEXMF,!!$LOCALTEXMF,!!$TEXMFMAIN} +\end{verbatim} +\end{wideversion} +\end{quote} +as this will make \AllTeX{} find its files marginally faster. + +Having made all these changes, \AllTeX{} should ``just use'' files in +your new tree, in preference to anything in the main tree~--- you can +use it for updates to packages in the main tree, as well as for +installing new versions of things. +\LastEdit{2011-04-13} + +\Question[Q-instfont]{Installing a new font} + +Fonts are really ``just another package'', and so should be installed +in the same sort of way as packages. However, fonts tend to be more +complicated than the average package, and as a result it's sometimes +difficult to see the overall structure. + +Font files may appear in any of a large number of different formats; +each format has a different function in a \TeX{} system, and each is +stored in a directory its own sub-tree in the installation's +\acro{TDS} tree; all these sub-trees have the directory +\File{$TEXMF/fonts} %$ +as their root. A sequence of answers\nothtml{, below,} describes the +installation of fonts\latexhtml{.}{:} +\begin{htmlversion} +follow the list through the ``next question'' links at the bottom of +this answer to view them all. +\end{htmlversion} +Other answers discuss specific font families~--- for example, +% ! line break +``\Qref*{using the concrete fonts}{Q-concrete}''. + +\Question[Q-instmffont]{Installing a font provided as \MF{} source} + +Installing Metafont fonts is (by comparison with other sorts of font) rather +pleasingly simple. Nowadays, they are mostly distributed just as the +\MF{} source, since modern \TeX{} distributions are able to produce +everything the user needs ``on the fly''; however, if the distribution +\emph{does} include \acro{TFM} files, install them too, since they +save a little time and don't occupy much disc space. Always distrust +distributions of \acro{PK} font bitmap files: there's no way of +learning from them what printer they were generated for, and naming +schemes under different operating systems are another source of +confusion. + +``\Qref*{Where to install files}{Q-install-where}'' +specifies where the files should go. + +Further confusion is introduced by font families whose authors devise rules +for automatic generation of \MF{} sources for generating fonts at +particular sizes; the installation has to know about the rules, as +otherwise it cannot generate font files. No general advice is +available, but most such font families are now obsolescent. + +\Question[Q-instprinterfont]{`Installing' a \PS{} printer built-in font} + +There is a ``standard'' set of fonts that has appeared in every \PS{} +printer since the second generation of the type. These fonts +(8~families of four text fonts each, and three special-purpose fonts) +are of course widely used, because of their simple availability. The +set consists of: +\begin{itemize} +\item \FontName{Times} family (4 fonts) +\item \FontName{Palatino} family (4 fonts) +\item \FontName{New} \FontName{Century} \FontName{Schoolbook} family (4 fonts) +\item \FontName{Bookman} family (4 fonts) +\item \FontName{Helvetica} family (4 fonts) +\item \FontName{Avant} \FontName{Garde} (4 fonts) +\item \FontName{Courier} family (4 fonts) +\item \FontName{Utopia} family (4 fonts) +\item Zapf \FontName{Chancery} (1 font) +\item Zapf \FontName{Dingbats} (1 font) +\item \FontName{Symbol} (1 font) +\end{itemize} +All these fonts are supported, for \LaTeX{} users, by the +\Package{psnfss} set of metrics and support files in the file +\File{lw35nfss.zip} on \acro{CTAN}. Almost any remotely modern \TeX{} +system will have some version of \Package{psnfss} installed, but +users should note that the most recent version has much improved +coverage of maths with \FontName{Times} (see package +\Package{mathptmx}) and with \FontName{Palatino} (see package +\Package{mathpazo}, as well as a more reliable set of font metrics. + +The archive \File{lw35nfss.zip} is laid out according to the +\acro{TDS}, so in principle, installation consists simply of +``unzipping'' the file at the root of a \path{texmf} tree. + +Documentation of the \Package{psnfss} bundle is provided in +\File{psnfss2e.pdf} in the distribution. +\begin{ctanrefs} +\item[mathpazo.sty]Part of the \Package{psnfss} bundle +\item[mathptmx.sty]Part of the \Package{psnfss} bundle +\item[psnfss \nothtml{\rmfamily}bundle]\CTANref{psnfss} +\end{ctanrefs} + +\Question[Q-prept1font]{Preparing a Type~1 font} + +The process of installing a Type~1 font set is rather convoluted, and +we will deal with it in two chunks: first (in the present answer) +preparing the font for installation, and second % ! line break +\Qref*{installing a Type~1 font}{Q-instt1font}). + +Many fonts are supplied in \AllTeX{} ready form: such fonts need no +preparation, and may be installed immediately. + +However, if you purchase a font from a Type foundry (either direct or +via one of the web stores), you are likely to need to `prepare' it for +use with \AllTeX{}. The rest of this answer discusses this preparation. +\begin{itemize} +\item Acquire the font. A very small set of Type~1 fonts is installed + in most \PS{} printers you will encounter. For those few (whose use + is covered by the basic \acro{PSNFSS} package), you don't need the + Type~1 font itself, to be able to print using the font. + + For all the myriad other Type~1 fonts, to be able to print using + the font you need the Type~1 file itself. Some of these are + available for free (they've either been donated to the public + domain, or were developed as part of a free software project), but + the vast majority are commercial products, requiring you to spend + real money. +\item Acquire the fonts' \acro{AFM} files. \acro{AFM} files contain + information from the font foundry, about the sizes of the characters + in the font, and how they fit together. One measure of the quality + of a font-supplier is that they provide the \acro{AFM} files by + default: if the files are not available, you are unlikely to be able + to use the font with \AllTeX{}. +\item Rename the \acro{AFM} files and the Type~1 files to match the + \Qref*{Berry font naming scheme}{Q-fontname}. +\item Generate \TeX{} metric files from the \acro{AFM} files. The + commonest tool for this task is \Package{fontinst}; the package + documentation helps, but other guides are available (see below). + The simplest possible script to pass to \Package{fontinst} is: + \begin{quote} +\begin{verbatim} +\latinfamily{xyz}{} +\bye +\end{verbatim} + \end{quote} + where \texttt{xyz} is the Berry name of the font family. This + simple script is adequate for most purposes: its output covers the + font family in both \acro{T}1 and \acro{OT}1 font encodings. Nevertheless, + with fancier fonts, more elaborate things are possible with + \Package{fontinst}: see its documentation for details. + + \Package{Fontinst} also generates map files, and \LaTeX{} font + definition (\extension{fd}) files. +\end{itemize} +Having traversed this list, you have a set of font files ready for +installation. +\begin{ctanrefs} +\item[fontinst.sty]\CTANref{fontinst} +\item[\nothtml{\rmfamily}Type 1 installation guide]\CTANref{T1instguide} +\end{ctanrefs} + + +\Question[Q-instt1font]{Installing a Type~1 font} + +Once you have a prepared Type~1 font, either direct from \acro{CTAN} +or the like, or having \Qref*{`prepared' it yourself}{Q-prept1font}, +you can get on with installation. + +The procedure is merely an extension of that for packages, etc., so +much of what follows will be familiar: +\begin{itemize} +\item Install the files, in your local \texttt{texmf} tree (the advice + about installing non-standard things applies here, too). The + following list gives reasonable destinations for the various files + related to a font family \meta{fname}: +\begin{narrowversion} +\begin{verbatim} +.pfb, +.pfa .../fonts/type1// +.tfm .../fonts/tfm// +.vf .../fonts/vf// +.sty, +.fd .../tex/latex/ +.map .../fonts/map/dvips/ +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{quote} +\begin{verbatim} +.pfb, +.pfa .../fonts/type1// +.tfm .../fonts/tfm// +.vf .../fonts/vf// +.sty, +.fd .../tex/latex/ +.map .../fonts/map/dvips/ +\end{verbatim} +\end{quote} +\end{wideversion} + but if you are lucky, you will be starting from a distribution from + \acro{CTAN} and there is a corresponding \extension{tds.zip} file: + using this \acro{TDS}-file saves the bother of deciding where to put + your files in the \acro{TDS} tree. +\item Regenerate the file indexes (as described in + \Qref[question]{package installation}{Q-inst-wlcf}). +\item Update the \ProgName{dvips}, \PDFTeX{} and other maps: + \begin{itemize} + \item On any current \texlive{}-based system, or a te\TeX{} v3.0 + system, execute the command +\begin{quote} +\begin{verbatim} +updmap-sys --enable Map .map +\end{verbatim} +\end{quote} + as root. (If you \emph{can} use \ProgName{updmap-sys}~--- do; if + not~--- presumably because your \alltex{} system was set up by + someone else~--- you have to fall back on plain \ProgName{updmap}, + but be aware that it's a potent source of confusion, setting up + map sets that might be changed behind your back.) + \item On a current \miktex{} system, update the system file + \File{updmap.cfg}, using the shell command +\begin{quote} +\begin{verbatim} +initexmf --edit-config-file updmap +\end{verbatim} +\end{quote} + adding a line at the end: +\begin{quote} +\begin{verbatim} +Map .map +\end{verbatim} +\end{quote} + for each font family \meta{fname} you are adding to the system. + Now generate revised maps with the shell command +\begin{quote} +\begin{verbatim} +initexmf --mkmaps +\end{verbatim} +\end{quote} + This, and other matters, are described in \miktex{} % beware line break + \href{http://docs.miktex.org/manual/advanced.html}{``advanced'' documentation}. + \end{itemize} +\end{itemize} +Both processes (preparing and installing a font) are very well (and +thoroughly) described in Philipp Lehman's guide to font installation, +which may be found on \acro{CTAN}. +\begin{ctanrefs} +\item[fontinst.sty]\CTANref{fontinst} +\item[\nothtml{\rmfamily}Type 1 installation guide]\CTANref{T1instguide} +\end{ctanrefs} + +\Question[Q-inst1cm]{Installing the Type~1 versions of the CM~fonts} + +This is a specialised case of \Qref*{installing a font}{Q-instfont}, +but it is almost never necessary~--- it's inconceivable that any (even +remotely) recent system will \emph{not} have the fonts already +installed. You can confirm this (near-inevitable) fact by trying the +fonts. On a system that uses \ProgName{dvips} (almost all do), try +the sequence: +\begin{quote} +\begin{verbatim} +latex sample2e +dvips -o sample2e.ps sample2e +\end{verbatim} +\end{quote} +at a ``command prompt'' (\ProgName{shell}, in a Unix-style system, +``\acro{DOS} box'' in a Windows system). + +If the command works at all, the console output of the command will +include a sequence of Type~1 font file names, listed as +\texttt{<\emph{path}/cmr10.pfb>} and so on; this is \ProgName{dvips} +telling you it's copying information from the Type~1 font, and you +need do no more. + +If the test has failed, you need to install your own set of the fonts; +the distribution (including all the fonts the \acro{AMS} designed and +produced themselves) is now described as \Package{amsfonts}. The +bundle contains metric and map files~--- all you need to +\Qref*{install the fonts}{Q-instt1font}. +\begin{ctanrefs} +\item[AMS and CM fonts, in Type 1 format]\CTANref{amsfonts} +\end{ctanrefs} + + diff --git a/help/uk-tex-faq/faq-intro.tex b/help/uk-tex-faq/faq-intro.tex new file mode 100644 index 0000000000..6d82072690 --- /dev/null +++ b/help/uk-tex-faq/faq-intro.tex @@ -0,0 +1,203 @@ +% $Id: faq-intro.tex,v 1.31 2014/01/28 18:17:36 rf10 Exp rf10 $ + +% this environment is for the benefit of new-style file generation +\begin{introduction} +% suppress section numbers until end environment +\nothtml{\csname c@secnumdepth\endcsname=-1 } +\section{Introduction} + +This is a set of Frequently Asked Questions (\acro{FAQ}) for +English-speaking users of \TeX{}. + +The questions answered here cover a wide range of topics, but +typesetting issues are mostly covered from the viewpoint of a \LaTeX{} +user. Some of the questions answered have little relevance to today's +users; this is inevitable~--- it's easier to add information than it +is to decide that information is no longer needed. The set of +answered questions is therefore in a state of slow flux: new questions +are answered, while old questions are deleted~\dots{}~but the whole +process depends on the time available for \acro{FAQ} maintenance. + +\nothtml{\noindent} You may use the \acro{FAQ} +\begin{itemize} +\item by reading a printed document, +\item by viewing a \acro{PDF} file, with hyperlinks to assist + browsing: copies are available formatted so that they could be + printed on \CTANhref{faq-a4}{A4 paper} or on % ! line break + \CTANhref{faq-letter}{North American ``letter'' paper}, \htmlonly{or} +\begin{typesetversion} +\item by using the \acro{FAQ}'s web interface (base \acro{URL}: + \URL{http://www.tex.ac.uk/faq}); this version provides simple + search capabilities, as well as a link to Google for a more + sophisticated search restricted to the \acro{FAQ} itself, or +\end{typesetversion} +\item via Scott Pakin's \CTANhref{visualFAQ}{Visual FAQ}, which shows + \LaTeX{} constructions with links to \acro{FAQ} explanations of how + they may be created. +\end{itemize} + +\subsection{Licence of the \acro{FAQ}} + +The source of the \acro{FAQ}, available in the % ! line break +\CTANhref{faq}{\acro{FAQ}'s \ctan{} directory}, and its derived +representations (currently, the \acro{HTML} found at +\url{http://www.tex.ac.uk/faq} and \acro{PDF} copies, also in the +% ! line break +\CTANhref{faq}{\acro{FAQ}'s \ctan{} directory}) are all placed in the +public domain. + +\subsection{Finding the Files} +\begin{typesetversion} +Unless otherwise specified, all files mentioned in this \acro{FAQ} +are available from a \ctan{} archive, or from a mirror of +\ctan{}~--- see \Qref[question]{later discussion}{Q-archives}% ! space +\narrowonly{, which gives details} of the \ctan{} +archives\wideonly{ and}\narrowonly{, including} how to retrieve files +from them. + +The reader should also note that the first directory name of the path +name of every file on \ctan{} is omitted from what follows, for +the simple reason that, while it's always the same +(\path{tex-archive/}) on the main sites, mirror sites often choose +something else. + +To avoid confusion, we also omit the full stop from the end of any +sentence whose last item is a path name (such sentences are rare, and +only occur at the end of paragraphs). Though the path names are set +in a different font from running text, it's not easy to distinguish +the font of a single dot! +\end{typesetversion} +\begin{htmlversion} +Almost all files suggested in any answer in these \acro{FAQ}s are +available from \Qref{\ctan{} archives}{Q-archives}, and may be +reached via links in the file list at the end of the answer. In +particular, documentation (when available) is linked from the +\ctan{} Catalogue entry, which is also listed in the file list. + +Unless doing so is unavoidable, the answers do not mention things that +are not on the \ctan{} archives. An obvious exception is web +resources such as supplementary documents, etc. +\end{htmlversion} + +\begin{typesetversion} + \subsection*{Origins} +\end{typesetversion} +\begin{htmlversion} + \textbf{Origins} +\end{htmlversion} +The \acro{FAQ} was originated by the Committee of the \acro{UK} +\TeX{} Users' Group (\acro{UK}~\acro{TUG}), in 1994, as a development of a +regular posting to the \emph{Usenet} newsgroup +\Newsgroup{comp.text.tex} that was maintained for some time by Bobby +Bodenheimer. The first \acro{UK} version was much re-arranged and +corrected from the original, and little of Bodenheimer's work now +remains. + +\htmlignore +The following people (at least~--- there are almost certainly others +whose names weren't correctly recorded) have contributed help or +advice on the development of the \acro{FAQ}: +William Adams, % spotting dead url +Donald Arseneau, % indefatigable +Rosemary Bailey, % lots of initial set of maths answers +Barbara Beeton, % one of first reviewers outside cttee +Karl Berry, % often provides comments & suggestions +Giuseppe Bilotta, +Charles Cameron, +Fran\c{c}ois Charette, % update of q-xetex +Damian Cugley, +Martin Garrod, % two consecutive "report" in clsvpkg +Michael Dewey, +Michael Downes, % (RIP) on (ams)maths stuff +Jean-Pierre Drucbert, % (RIP) corrected my interpretation of minitoc +David Epstein, % comment on q-algorithms, suggestion of tex-sx +Michael Ernst, % alert on confusing colloquialism +Thomas Esser, +Ulrike Fischer, % spotted boondoggle in q-tabcellalign + % args like \section improvement; general typos +Bruno Le Floch, % alert to mess in q-latex3 +Anthony Goreham, +Norman Gray, +Enrico Gregorio, % new definition for q-seccntfmt +Werner Grundlingh, % xparse for *-commands +Eitan Gurari, % (RIP) comparative html translators +William Hammond, % lots of work on xml-related answers +John Hammond, % corrections to q-protect +John Harper, % patient help with q-robust ;-) +Gernot Hassenpflug, % impetus and suggestions for q-printvar +Troy Henderson, % metapost tutorials update +Hartmut Henkel, +Stephan Hennig, % text about vc in Q-RCS +John Hobby, +Morten H\textoslash gholm, % eagle eyes in search for problems +Berthold Horn, % lots of stuff on fonts +Ian Hutchinson, % comparative html translators +Werner Icking, % (RIP) answer on tex-music +William Ingram, % extension of transcinit +David Jansen, % error in errmissitem example code +Alan Jeffrey, % another founding father +Regnor Jernsletten, +David Kastrup, % inter alia, suggested mention of lilypond +Oleg Katsitadze, % revision of q-eplain +Isaac Khabaza, % kindersley book +Ulrich Klauer, % pointed out twaddle in TeXpronounce +Markus Kohm, % help with functionality of Koma-script +Stefan Kottwitz % picked up text of q-wideflt +David Kraus, % help with tocbibind (spotted embarrassing typo :-} ) +Ryszard Kubiak, % comment about q-driver +Simon Law, +Uwe L\"uck, % correction of typo +Daniel Luecking, % typos +Aditya Mahajan, % rewrite of q-context +Sanjoy Mahajan, +Diego Andres Alvarez Marin, % suggestion of lacheck +Andreas Matthias, % most recently q-isitanum +Steve Mayer, % proof reading +Javier Mora, % bug in q-cmdstar +Brooks Moses, % editorial suggestion +Peter Moulder, % improvement of q-widows +Iain Murray, % alternative solution in q-hyperdupdest +Vilar Camara Neto, % explain breakurl pkg, suggest use of numprint +Dick Nickalls, +Ted Nieland, +Hans Nordhaug, +Pat Rau, +Heiko Oberdiek, +Piet van Oostrum, +Scott Pakin, % bug reports (at least) +Oren Patashnik, +Manuel P\'egouri\'e-Gonnard, % improvement of q-luatex +Steve Peter, % comprehensive review, lots of typos etc +Sebastian Rahtz, % without whom there would be no... +Philip Ratcliffe, % help with a bibtex oddity, editorial comment +Chris Rowley, % founding father +Jos\'e Carlos Santos, % assiduous reader of new versions +Walter Schmidt, +Hans-Peter Schr\"ocker, +Joachim Schrod, +Uwe Siart, % correction for manymathalph +Maarten Sneep, % summary of c.t.t thread for outszwrng, inter alia +Axel Sommerfeldt, % suggested rewrite of q-hyperdupdest +Philipp Stephani, % xlation of komascript keyval stuff +James Szinger, % who responded on c.t.t to request for answer +Nicola Talbot, % correction of link +Bob Tennent, % urw classico + sansmath +Tomek Trzeciak, % suggested docmute and standalone together +Ulrik Vieth, +Mike Vulis, % details of micropress offerings +Chris Walker, % revtex alert, ite suggestion (q-labelfig) +Peter Wilson, % several, incl functionality of memoir +Joseph Wright, % help with keyval, l3keys, etc. +Rick Zaccone, +Gregor Zattler % typo spotted +and +Reinhard Zierke. + +That list does \emph{not} cover the many people whose ideas were +encountered on various mailing lists, in newsgroups, or (more +recently!) in web forums. Many +such people have helped, even if simply to highlight an area in which +\acro{FAQ} work would be useful. +\endhtmlignore +% \LastEdit{2013-08-20} % not to be typeset or converted to html... +\end{introduction} diff --git a/help/uk-tex-faq/faq-jot-err.tex b/help/uk-tex-faq/faq-jot-err.tex new file mode 100644 index 0000000000..3281e54a18 --- /dev/null +++ b/help/uk-tex-faq/faq-jot-err.tex @@ -0,0 +1,2467 @@ +% $Id: faq-jot-err.tex,v 1.25 2014/01/28 18:17:36 rf10 Exp rf10 $ + +\section{The joy of \TeX{} errors} + +\Question[Q-erroradvice]{How to approach errors} + +Since \TeX{} is a macroprocessor, its error messages are often +difficult to understand; this is a (seemingly invariant) property of +macroprocessors. Knuth makes light of the problem in the \TeX{}book, +suggesting that you acquire the sleuthing skills of a latter-day +Sherlock Holmes; while this approach has a certain romantic charm to +it, it's not good for the `production' user of \AllTeX{}. This +answer (derived, in part, from an article by Sebastian Rahtz in +\TUGboat{} 16(4)) offers some general guidance in dealing with \TeX{} +error reports, and other answers in this section deal with common (but +perplexing) errors that you may encounter. There's a long list of +``hints'' in Sebastian's article, including the following: +\begin{itemize} +\item Look at \TeX{} errors; those messages may seem cryptic at first, + but they often contain a straightforward clue to the problem. See + \Qref[question]{the structure of errors}{Q-errstruct} for further + details. +\item Read the \extension{log} file; it contains hints to things you may + not understand, often things that have not even presented as error + messages. +\item Be aware of the amount of context that \TeX{} gives you. The + error messages gives you some bits of \TeX{} code (or of the + document itself), that show where the error ``actually happened''; + it's possible to control how much of this `context' \TeX{} actually + gives you. \LaTeX{} (nowadays) instructs \TeX{} only to give you + one line of context, but you may tell it otherwise by saying +\begin{quote} +\begin{verbatim} +\setcounter{errorcontextlines}{999} +\end{verbatim} +\end{quote} + in the preamble of your document. (If you're not a confident macro + programmer, don't be ashamed of cutting that 999 down a bit; some + errors will go on and \emph{on}, and spotting the differences + between those lines can be a significant challenge.) +\item As a last resort, tracing can be a useful tool; reading a full + \AllTeX{} trace takes a strong constitution, but once you know how, + the trace can lead you quickly to the source of a problem. You need + to have read the \TeX{}book (see +% beware line break + \Qref[question]{books about \TeX{}}{Q-tex-books}) in some detail, fully + to understand the trace. + + The command \csx{tracingall} sets up maximum tracing; it also sets + the output to come to the interactive terminal, which is somewhat of + a mixed blessing (since the output tends to be so vast~--- all but + the simplest traces are best examined in a text editor after the event). + + The \LaTeX{} \Package{trace} package (first distributed with the + 2001 release of \LaTeX{}) provides more manageable tracing. Its + \csx{traceon} command gives you what \csx{tracingall} offers, but + suppresses tracing around some of the truly verbose parts of + \LaTeX{} itself. The package also provides a \csx{traceoff} + command (there's no ``off'' command for \csx{tracingall}), and a + package option (|logonly|) allows you to suppress output to the + terminal. +\end{itemize} +The best advice to those faced with \TeX{} errors is not to panic: +most of the common errors are plain to the eye when you go back to the +source line that \TeX{} tells you of. If that approach doesn't work, +the remaining answers in this section deal with some of the odder +error messages you may encounter. You should not ordinarily need to +appeal to the \Qref*[question]{wider public}{Q-gethelp} +for assistance, but if you do, be sure to +report full backtraces (see |errorcontextlines| above) and so on. +\begin{ctanrefs} +\item[trace.sty]Distributed as part of \CTANref{2etools}[trace] +\end{ctanrefs} +\LastEdit{2011-06-01} + +\Question[Q-errstruct]{The structure of \TeX{} error messages} + +\TeX{}'s error messages are reminiscent of the time when \TeX{} itself +was conceived (the 1970s): they're not terribly user-friendly, though +they do contain all the information that \TeX{} can offer, usually in +a pretty concise way. + +\TeX{}'s error reports all have the same structure: +\begin{itemize} +\item An error message +\item Some `context' +\item An error prompt +\end{itemize} +The error message will relate to the \emph{\TeX{}} condition that is +causing a problem. Sadly, in the case of complex macro packages such +as \LaTeX{}, the underlying \TeX{} problem may be superficially +difficult to relate to the actual problem in the ``higher-level'' +macros. Many \LaTeX{}-detected problems manifest themselves as +`generic' errors, with error text provided by \LaTeX{} itself (or by a +\LaTeX{} class or package). + +The context of the error is a stylised representation of what \TeX{} +was doing at the point that it detected the error. As noted in +\Qref[question]{approaching errors}{Q-erroradvice}, a macro package +can tell \TeX{} how much context to display, and the user may need to +undo what the package has done. Each line of context is split at the +point of the error; if the error \emph{actually} occurred in a macro +called from the present line, the break is at the point of the call. +(If the called object is defined with arguments, the ``point of call'' +is after all the arguments have been scanned.) For example: +\begin{verbatim} +\blah and so on +\end{verbatim} +produces the error report +\begin{verbatim} +! Undefined control sequence. +l.4 \blah + and so on +\end{verbatim} +while: +\begin{verbatim} +\newcommand{\blah}[1]{\bleah #1} +\blah{to you}, folks +\end{verbatim} +produces the error report +\begin{verbatim} +! Undefined control sequence. +\blah #1->\bleah + #1 +l.5 \blah{to you} + , folks +\end{verbatim} +If the argument itself is in error, we will see things such as +\begin{verbatim} +\newcommand{\blah}[1]{#1 to you} +\blah{\bleah}, folks +\end{verbatim} +producing +\begin{verbatim} +! Undefined control sequence. + \bleah + +l.5 \blah{\bleah} + , folks +\end{verbatim} + +The prompt accepts single-character commands: the list of what's +available may be had by typing |?|\@. One immediately valuable +command is |h|, which gives you an expansion of \TeX{}s original +pr\'ecis message, sometimes accompanied by a hint on what to do to +work round the problem in the short term. If you simply type `return' +(or whatever else your system uses to signal the end of a line) at the +prompt, \TeX{} will attempt to carry on (often with rather little +success). + +\Question[Q-extrabrace]{An extra `\texttt{\cbracesymbol{}}'??} +\keywords{caption heading} + +You've looked at your \LaTeX{} source and there's no sign of a misplaced +\texttt{\cbracesymbol{}} on the line in question. + +Well, no: this is \TeX{}'s cryptic way of hinting that you've put a +\begin{wideversion} % hyper +\Qref{fragile command}{Q-protect} in a moving argument. +\end{wideversion} +\begin{narrowversion} +fragile command in a moving argument (\Qref{}{Q-protect}). +\end{narrowversion} + +For example, \csx{footnote} is fragile, and if we put that in the +moving argument of a \csx{section} command, as +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\section{Mumble\footnote{% + I couldn't think of anything better}} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\section{Mumble\footnote{I couldn't think of anything better}} +\end{verbatim} +\end{wideversion} +\end{quote} +we get told +\begin{quote} +\begin{verbatim} +! Argument of \@sect has an extra }. +\end{verbatim} +\end{quote} +The same happens with captions (the following is a simplification of a +\Newsgroup{comp.text.tex} post): +\begin{quote} +\begin{verbatim} +\caption{Energy: \[e=mc^2\]} +\end{verbatim} +\end{quote} +giving us the error message +\begin{quote} +\begin{verbatim} +! Argument of \@caption has an extra }. +\end{verbatim} +\end{quote} +The similar (but more sensible): +\begin{quote} +\begin{verbatim} +\caption{Energy: \(e=mc^2\)} +\end{verbatim} +\end{quote} +is more tiresome, still: there's no error when you first run the +job~\dots{} but there is on the second pass, when the list of figures +(or tables) is generated, giving: +\begin{quote} +\begin{verbatim} +! LaTeX Error: Bad math environment delimiter. +\end{verbatim} +\end{quote} +in the \csx{listoffigures} processing. + +The solution is usually to use a robust command in place of the one +you are using, or to force your command to be robust by prefixing it +with \csx{protect}, which in the \csx{section} case would show as +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\section{Mumble\protect\footnote{% + I couldn't think of anything better}} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\section{Mumble\protect\footnote{I couldn't think of anything better}} +\end{verbatim} +\end{wideversion} +\end{quote} +However, in both the \csx{section} case and the \csx{caption} case, +you can separate the moving argument, as in +\cmdinvoke*{section}[moving]{static}; this gives us another standard +route~--- simply to omit (or otherwise sanitise) the fragile command +in the moving argument. So, one might rewrite the \csx{caption} +example as: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\caption[Energy: (Einstein's equation)]% + {Energy: \(E=mc^2\)} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\caption[Energy: (Einstein's equation)]{Energy: \(E=mc^2\)} +\end{verbatim} +\end{wideversion} +\end{quote} +In practice, inserting mathematics in a moving argument has already +been addressed in \latexe{} by the robust command \csx{ensuremath}: +\begin{quote} +\begin{verbatim} +\caption{Energy: \ensuremath{E=mc^2}} +\end{verbatim} +\end{quote} +So: always look for alternatives to the \csx{protect} route. + +Footnotes can be even more complex; % ! line break +``\Qref*[question]{footnotes in \LaTeX{} section headings}{Q-ftnsect}'' +deals specifically with that issue. +\LastEdit{2012-02-09} + +\Question[Q-semanticnest]{Capacity exceeded [semantic nest\,\dots{}]} + +\begin{narrowversion} +\begin{verbatim} +! TeX capacity exceeded, sorry [semantic nest + size=100]. +... +If you really absolutely need more capacity, +you can ask a wizard to enlarge me. +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +! TeX capacity exceeded, sorry [semantic nest size=100]. +... +If you really absolutely need more capacity, +you can ask a wizard to enlarge me. +\end{verbatim} +\end{wideversion} +Even though \TeX{} suggests (as always) that enlargement by a wizard +may help, this message usually results from a broken macro or bad +parameters to an otherwise working macro. + +The ``semantic nest'' \TeX{} talks about is the nesting +of boxes within boxes. A stupid macro can provoke the error pretty +easily: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\def\silly{\hbox{here's \silly + being executed}} +\silly +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\def\silly{\hbox{here's \silly being executed}} +\silly +\end{verbatim} +\end{wideversion} +\end{quote} +The extended traceback +% beware of filling this line... +(see \Qref{\emph{general advice} on errors}{Q-erroradvice}) +\emph{does} help, though it does rather run on. In the case above, +the traceback consists of +\begin{verbatim} +\silly ->\hbox { + here's \silly being executed} +\end{verbatim} +followed by 100 instances of +\begin{verbatim} +\silly ->\hbox {here's \silly + being executed} +\end{verbatim} +The repeated lines are broken at exactly the offending macro; of +course the loop need not be as simple as this~--- if \csx{silly} calls +\csx{dopy} which boxes \csx{silly}, the effect is just the same and +alternate lines in the traceback are broken at alternate positions. + +There are in fact two items being consumed when you nest boxes: the +other is the grouping level. Whether you exhaust your % !line wrap +\emph{semantic nest} or your permitted \emph{grouping levels} first is +controlled entirely by the relative size of the two different sets of +buffers in your \AllTeX{} executable. + +\Question[Q-noroom]{No room for a new `\emph{thing}'} + +The technology available to Knuth at the time \TeX{} was written is +said to have been particularly poor at managing dynamic storage; as a +result much of the storage used within \TeX{} is allocated as fixed +arrays, in the reference implementations. Many of these fixed arrays +are expandable in modern \TeX{} implementations, but size of the +arrays of ``registers'' is written into the specification as being 256 +(usually); this number may not be changed if you still wish to call +the result \TeX{} +%% beware line wrap +(see \Qref[question]{testing \TeX{} implementations}{Q-triptrap}). + +If you fill up one of these register arrays, you get a \TeX{} error +message saying +\begin{quote} +\begin{verbatim} +! No room for a new \. +\end{verbatim} +\end{quote} +The \csx{thing}s in question may be \csx{count} (the object underlying +\LaTeX{}'s \csx{newcounter} command), \csx{skip} (the object underlying +\LaTeX{}'s \csx{newlength} command), \csx{box} (the object underlying +\LaTeX{}'s \csx{newsavebox} command), or \csx{dimen}, \csx{muskip}, +\csx{toks}, \csx{read}, \csx{write} or \csx{language} (all types of object +whose use is ``hidden'' in \LaTeX{}; the limit on the number of +\csx{read} or \csx{write} objects is just 16). + +There is nothing that can directly be done about this error, as you can't +extend the number of available registers without extending \TeX{} +itself. +\begin{htmlversion} + Of course, \Qref{\eTeX{}}{Q-etex}, \Qref{Omega}{Q-omegaleph} and + \Qref{\LuaTeX{}}{Q-luatex} +\end{htmlversion} +\htmlignore +% beware line wrap here + Of course \Qref[question]{\etex{}}{Q-etex}, + \Qref[question]{\ensuremath{\Omega}}{Q-omegaleph} and + \Qref[question]{\LuaTeX{}}{Q-luatex} +\endhtmlignore +all do this, as does \Qref*{MicroPress Inc's V\TeX{}}{Q-commercial}. + +The commonest way to encounter one of these error messages is to have +broken macros of some sort, or incorrect usage of macros (an example +is discussed in \Qref[question]{epsf problems}{Q-epsf}). + +However, sometimes one just \emph{needs} more than \TeX{} can offer, +and when this happens, you've just got to work out a different way of +doing things. An example is the % beware line wrap +\Qref*{difficulty of loading \PiCTeX{} with \LaTeX{}}{Q-usepictex}. +The more modern drawing package, \Package{pgf} with its higher-level +interface \Package{TikZ} is also a common source of such problems. + +In such cases, it is usually possible to use the +\Qref*{\eTeX{}}{Q-etex} extensions (all modern distributions provide +them). The \LaTeX{} package \Package{etex} modifies the register allocation +mechanism to make use of \eTeX{}'s extended register sets. +\Package{Etex} is a +derivative of the \plaintex{} macro file \Package{etex.src}, which is +used in building the \eTeX{} Plain format; both files are part of the +\eTeX{} distribution and are available in current distributions. + +It is possible that, even with \Package{etex} loaded, you still find +yourself running out of things. Problems can be caused by packages +that use large numbers of ``inserts'' (inserts are combinations of +counter, box, dimension and skip registers, used for storing floats +and footnotes). \Package{Morefloats} does this, of course (naturally enough, +allocating new floats), and footnote packages such as +\Package{manyfoot} and \Package{bigfoot} (which uses \Package{manyfoot}) +can also give problems. The \Package{etex} extensions allow you to deal with +these things: the command \cmdinvoke*{reserveinserts}{n} ensures there +is room for \meta{n} more inserts. Hint: by default +\Package{morefloats} adds 18 inserts (though it can be instructed to +use more), and \Package{manyfoot} seems to be happy with 10 reserved, +but there are `hard' limits that we cannot program around~--- the +discussion of \Qref*{running out of floats}{Q-tmupfl} has more about this. +It is essential that you load \Package{etex} before any other +packages, and reserve any extra inserts immediately: +\begin{quote} +\begin{verbatim} +\documentclass[...]{...} +\usepackage{etex} +\reserveinserts{28} +\end{verbatim} +\end{quote} + +The \eTeX{} extensions don't help with \csx{read} or \csx{write} +objects (and neither will the \Package{etex} package), but the +\Package{morewrites} package can provide the \emph{illusion} of large +numbers of \csx{write} objects. +\begin{ctanrefs} +\item[morewrites.sty]\CTANref{morewrites} +\end{ctanrefs} + +\Question[Q-epsf]{\texttt{epsf} gives up after a bit} + +Some copies of the documentation of \File{epsf.tex} seemed once to +suggest that the command +\begin{verbatim} + \input epsf +\end{verbatim} +is needed for every figure included. If you follow this suggestion +too literally, you get an error +\begin{verbatim} + ! No room for a new \read . +\end{verbatim} +after a while; this is because each time \File{epsf.tex} is loaded, it +allocates itself a \emph{new} file-reading handle to check the figure +for its bounding box, and there just aren't enough of these things +(see \Qref[question]{no room for a new thing}{Q-noroom}). + +The solution is simple~--- this is in fact an example of misuse of +macros; one only need read \File{epsf.tex} once, so change +\begin{verbatim} + ... + \input epsf + \epsffile{...} + ... + \input epsf + \epsffile{...} +\end{verbatim} +(and so on) with a single +\begin{verbatim} + \input epsf +\end{verbatim} +somewhere near the start of your document, and then decorate your +\csx{epsffile} statements with no more than adjustments of +\csx{epsfxsize} and so on. + +\Question[Q-badhyph]{Improper \csx{hyphenation} will be flushed} + +For example +\begin{verbatim} +! Improper \hyphenation will be flushed. +\'#1->{ + \accent 19 #1} +<*> \hyphenation{Ji-m\'e + -nez} +\end{verbatim} +(in \plaintex{}) or +\begin{verbatim} +! Improper \hyphenation will be flushed. +\leavevmode ->\unhbox + \voidb@x +<*> \hyphenation{Ji-m\'e + -nez} +\end{verbatim} +in \LaTeX{}. + +As mentioned in +\begin{flatversion} + \Qref[question]{hyphenation failures}{Q-nohyph}, +\end{flatversion} +\begin{hyperversion} + ``\Qref[question]{hyphenation failures}{Q-nohyph}'', +\end{hyperversion} +``words'' containing \csx{accent} commands may not be hyphenated. As +a result, any such word is deemed improper in a \csx{hyphenation} +command. + +Hyphenation happens as paragraphs are laid out; by this time, \tex{} +knows what font is used for each glyph; thus it knows the encoding +being used. So the solution to the problem is to use a font that +contains the accented character; doing this this ``hides'' the accent +from the hyphenation mechanisms. + +For \LaTeX{} users, this is quite an easy task; they select an 8-bit +font with the package, as in \cmdinvoke{usepackage}[T1]{fontenc}, and +accented-letter commands such as the \csx{'}\texttt{e} in +\cmdinvoke{hyphenation}{Ji-m\csx{'}e-nez} automatically become the +single accented character by the time the hyphenation gets to look at +it. + + +\Question[Q-optionclash]{Option clash for package} + +So you've innocently added: +\begin{quote} +\cmdinvoke{usepackage}[draft]{foo} +\end{quote} +to your document, and \LaTeX{} responds with +\begin{quote} +\begin{wideversion} +\begin{verbatim} +! LaTeX Error: Option clash for package foo. +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +! LaTeX Error: Option clash for package foo. +\end{verbatim} +\end{narrowversion} +\end{quote} + +The error is a complaint about loading a package % ! line break +\emph{with options}, more than once. \LaTeX{} complains because it +has no means of examining the options, rather than because it +\emph{knows} there is a problem. (You may load a package any number +of times in a document's preamble, with no options, and \LaTeX{} will +ignore every loading request after the first; but you may only supply +options when you first load the package.) + +So perhaps you weren't entirely innocent~--- the error would have +occurred on the second line of: +\begin{quote} +\cmdinvoke{usepackage}[dvips]{graphics}\\ +\cmdinvoke{usepackage}[draft]{graphics} +\end{quote} +which could quite reasonably (and indeed correctly) have been typed: +\begin{quote} +\cmdinvoke{usepackage}[dvips,draft]{graphics} +\end{quote} + +But if you've not made that mistake (even with several lines +separating the \csx{usepackage} commands, it's pretty easy to spot), +the problem could arise from something else loading the package for +you. How do you find the culprit? The "\texttt{h}" response to the +error message tells you which options were loaded each time. +Otherwise, it's down to the log analysis games discussed in % ! line break +``\Qref*{How to approach errors}{Q-erroradvice}''; the trick to remember +is that that the process of loading each file is parenthesised in the +log; so if package \Package{foo} loads \Package{graphics}, the log +will contain something like: +\begin{quote} +\begin{verbatim} +(/foo.sty ... +... +(/graphics.sty ... +...) +... +) +\end{verbatim} +\end{quote} +(the parentheses for \Package{graphics} are completely enclosed in +those for \Package{foo}; the same is of course true if your class +\Class{bar} is the culprit, except that the line will start with the +path to \texttt{bar.cls}). + +If we're dealing with a package that loads the package you are +interested in, you need to ask \LaTeX{} to slip in options when +\Package{foo} loads it. Instead of: +\begin{quote} +\cmdinvoke{usepackage}{foo}\\ +\cmdinvoke{usepackage}[draft]{graphics} +\end{quote} +you would write: +\begin{quote} +\cmdinvoke{PassOptionsToPackage}{draft}{graphics}\\ +\cmdinvoke{usepackage}{foo} +\end{quote} +The command \csx{PassOptionsToPackage} tells \LaTeX{} to behave as if +its options were passed, when it finally loads a package. As you would +expect from its name, \csx{PassOptionsToPackage} can deal with a list +of options, just as you would have in the the options brackets of +\csx{usepackage}. + +The problem is more tricky if your document class loads a package you +want options for. In this case, instead of: +\begin{quote} +\cmdinvoke{documentclass}[...]{bar}\\ +\cmdinvoke{usepackage}[draft]{graphics} +\end{quote} +you would write: +\begin{quote} +\cmdinvoke{PassOptionsToPackage}{draft}{graphics}\\ +\cmdinvoke{documentclass}[...]{bar} +\end{quote} +with \csx{PassOptionsToPackage} \emph{before} the \csx{documentclass} +command. + +However, if the \Package{foo} package or the \Class{bar} class loads +\Package{graphics} with an option of its own that clashes with +what you need in some way, you're stymied. For example: +\begin{quote} +\cmdinvoke{PassOptionsToPackage}{draft}{graphics} +\end{quote} +where the package or class does: +\begin{quote} +\cmdinvoke{usepackage}[final]{graphics} +\end{quote} +sets \pkgoption{final} \emph{after} it's dealt with option you passed to +it, so your \pkgoption{draft} will get forgotten. In extreme cases, +the package might generate an error here (\Package{graphics} doesn't +go in for that kind of thing, and there's no indication that +\pkgoption{draft} has been forgotten). + +In such a case, you have to modify the package or class itself +(subject to the terms of its licence). It may prove useful to contact +the author: she may have a useful alternative to suggest. + +\Question[Q-optclash]{Option clash for package} + +The error message +\begin{quote} +\begin{verbatim} +! LaTeX Error: Option clash for package footmisc +\end{verbatim} +\end{quote} +means what it says~--- your document contains a (potentially) clashing +pair of options; sadly, it is not always obvious how the error has +arisen. + +If you simply write: +\begin{quote} +\begin{verbatim} +\usepackage[a]{foo} +... +\usepackage{foo} +\end{verbatim} +\end{quote} +\latex{} is happy, as it is with: +\begin{quote} +\begin{verbatim} +\usepackage[a]{foo} +... +\usepackage[a]{foo} +\end{verbatim} +\end{quote} +since \latex{} can see there's no conflict (in fact, the second load +does nothing). + +Similarly, +\begin{quote} +\begin{verbatim} +\usepackage[a,b]{foo} +... +\usepackage[a]{foo} +\end{verbatim} +\end{quote} +produces no error and does nothing for the second load. + +However +\begin{quote} +\begin{verbatim} +\usepackage[a]{foo} +... +\usepackage[b]{foo} +\end{verbatim} +\end{quote} +produces the error; even if option `\pkgoption{b}' is an alias for +option `\pkgoption{a}'~--- \latex{} doesn't ``look inside'' the package +to check anything like that. + +The general rule is: the first load of a package defines a set of +options; if a further \csx{usepackage} or \csx{RequirePackage} also +calls for the package, the options on that call may not extend the set +on the first load. + +Fortunately, the error (in that sort of case) is easily curable +once you've examined the preamble of your document. + +Now, suppose package \Package{foo} loads \Package{bar} with option +\pkgoption{b}, and your document says: +\begin{quote} +\begin{verbatim} +\usepackage{foo} +... +\usepackage[a]{bar} +\end{verbatim} +\end{quote} +or +\begin{quote} +\begin{verbatim} +\usepackage[a]{bar} +... +\usepackage{foo} +\end{verbatim} +\end{quote} +the error will be detected, even though you have only explicitly +loaded \Package{bar} once. Debugging such errors is tricky: it may +involve reading the logs (to spot which packages were called), or the +documentation of package \Package{foo}. + +\Question[Q-tmupfl]{``Too many unprocessed floats''} + +If \LaTeX{} responds to a \cmdinvoke{begin}{figure} or +\cmdinvoke{begin}{table} command with the error message +\begin{quote} +\begin{wideversion} +\begin{verbatim} +! LaTeX Error: Too many unprocessed floats. + +See the LaTeX manual or LaTeX Companion for explanation. +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +! LaTeX Error: Too many unprocessed floats. + +See the LaTeX manual or LaTeX Companion +... for explanation. +\end{verbatim} +\end{narrowversion} +\end{quote} +your figures (or tables) are not being placed properly. \LaTeX{} +has a limited amount of storage for `floats' (figures, tables, or +floats you've defined yourself with the \Package{float} package); if +something you have done has prevented \latex{} from typesetting +floats, it will run out of storage space. + +This failure usually occurs in extreme cases of % ! line break +\Qref*{floats moving ``wrongly''}{Q-floats}; +\LaTeX{} has found it can't place a float, and floats of the same type +have piled up behind it. + +How does this happen?~--- \LaTeX{} guarantees that caption numbers are +sequential in the document, but the caption number is allocated when +the figure (or whatever) is created, and can't be changed. Thus, if +floats are placed out of order, their caption numbers would also +appear out of order in the body of the document (and in the list of +figures, or whatever). As a result, enforcement of the guarantee +means that simple failure to place a float means that no subsequent +float can be placed; and hence (eventually) the error. + +Techniques for solving the problem are discussed in the % ! line break +\Qref*{floats question}{Q-floats} already referenced. + +An alternative \emph{may} be to use the \Package{morefloats} package. +The package will allocate more ``float skeletons'' than \latex{} +does by default; each such skeleton may then be used to store a +float. Beware that even with \Package{morefloats}, the number you can +allocate is limited; even with the \Package{etex} package (which makes +available many more registers, etc., than \latex{} does by default; +\etex{} can create lots more registers, but none of those ``beyond +the original \TeX{} default'' may be used in float skeletons). Thus, +\Package{etex} may offer some relief, but it can \emph{not} be +regarded as a panacea + +The error also occurs in a long sequence of float environments, with +no intervening text. Unless the environments will fit ``here'' (and +you've allowed them to go ``here''), there will never be a page break, +and so there will never be an opportunity for \LaTeX{} to reconsider +placement. (Of course, the floats can't all fit ``here'' if the +sequence is sufficiently prolonged: once the page fills, \LaTeX{} +won't place any more floats, leading to the error. + +Techniques for resolution may involve redefining the floats using the +\Package{float} package's \texttt{[H]} float qualifier, but you are unlikely +to get away without using \csx{clearpage} from time to time. +\begin{ctanrefs} +\item[float.sty]\CTANref{float} +\item[morefloats.sty]\CTANref{morefloats} +\end{ctanrefs} + +\Question[Q-atvert]{\csx{spacefactor} complaints} + +The errors +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +! You can't use `\spacefactor' in +... vertical mode. +\@->\spacefactor + \@m +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +! You can't use `\spacefactor' in vertical mode. +\@->\spacefactor + \@m +\end{verbatim} +\end{wideversion} +\end{quote} +or +\begin{quote} +\begin{verbatim} +! You can't use `\spacefactor' in math mode. +\@->\spacefactor + \@m +\end{verbatim} +\end{quote} +or simply +\begin{quote} +\begin{verbatim} +! Improper \spacefactor. +... +\end{verbatim} +\end{quote} +bite the \LaTeX{} programmer who uses an internal command without +taking ``precautions''. An internal-style command such as \csx{@foo} +has been defined or used in a private macro, and it is interpreted as +\csx{@}, followed by the `text' \texttt{foo}. (\csx{@} is used, for +real, to set up end-of-sentence space in some circumstances; it uses +\csx{spacefactor} to do that.) + +The problem is discussed in detail in +% beware line wrap +``\Qref*[question]{\texttt{@} in macro names}{Q-atsigns}'', +together with solutions. + +\Question[Q-endingroup]{\csx{end} occurred inside a group} + +The actual error we observe is: + +\nothtml{\noindent}% +|(\end occurred inside a group at level <|\texttt{\emph{n}}|>)| + +\nothtml{\noindent}% +and it tells us that something we started in the document never got +finished before we ended the document itself. The things involved +(`groups') are what \TeX{} uses for restricting the scope of things: +you see them, for example, in the ``traditional'' font selection +commands: |{\it stuff\/}|~--- if the closing brace is left off such a +construct, the effect of \csx{it} will last to the end of the document, +and you'll get the diagnostic. + +\TeX{} itself doesn't tell you where your problem is, but you can +often spot it by looking at the typeset output in a previewer. +Otherwise, you can usually find mismatched braces using an intelligent +editor (at least \ProgName{emacs} and \ProgName{winedt} offer this facility). +However, groups are not \emph{only} created by matching +\texttt{\obracesymbol{}} with \texttt{\cbracesymbol{}}: +other grouping commands are discussed elsewhere in these \acro{FAQ}s, +and are also a potential source of unclosed group. + +\cmdinvoke{begin}{\meta{environment}} encloses the environment's body +in a group, and establishes its own diagnostic mechanism. If you end +the document before closing some other environment, you get the +`usual' \LaTeX{} diagnostic +\htmlignore +\begin{dviversion} +\begin{verbatim} +! LaTeX Error: \begin{blah} on input line 6 + ended by \end{document}. +\end{verbatim} +\end{dviversion} +\begin{pdfversion} +\begin{verbatim} +! LaTeX Error: \begin{blah} on input line 6 ended by \end{document}. +\end{verbatim} +\end{pdfversion} +\endhtmlignore +\begin{htmlversion} +\begin{verbatim} +! LaTeX Error: \begin{blah} on input line 6 ended by \end{document}. +\end{verbatim} +\end{htmlversion} +which (though it doesn't tell you which \emph{file} the +\cmdinvoke{begin}{blah} was in) is usually enough to locate the +immediate problem. If you press on past the \LaTeX{} error, you get +one or more repetitions of the ``occurred inside a group'' message +before \LaTeX{} finally exits. The \Package{checkend} package +recognises other unclosed \cmdinvoke{begin}{blob} commands, and +generates an ``ended by'' error message for each one, rather than +producing the ``occurred inside a group'' message, which is sometimes +useful (if you remember to load the package). + +In the absence of such information from \LaTeX{}, you need to use +``traditional'' binary search to find the offending group. Separate +the preamble from the body of your file, and process each half on its +own with the preamble; this tells you which half of the file is at +fault. Divide again and repeat. The process needs to be conducted +with care (it's obviously possible to split a correctly-written group +by chopping in the wrong place), but it will usually find the problem +fairly quickly. + +\eTeX{} (and \elatex{}~--- \LaTeX{} run on \eTeX{}) gives you +further diagnostics after the traditional infuriating \TeX{} one~--- it +actually keeps the information in a similar way to \LaTeX{}: +\htmlignore +\begin{dviversion} +\begin{verbatim} +(\end occurred inside a group at level 3) + +### semi simple group (level 3) entered + at line 6 (\begingroup) +### simple group (level 2) entered at line 5 ({) +### simple group (level 1) entered at line 4 ({) +### bottom level +\end{verbatim} +\end{dviversion} +\begin{pdfversion} +\begin{verbatim} +(\end occurred inside a group at level 3) + +### semi simple group (level 3) entered at line 6 (\begingroup) +### simple group (level 2) entered at line 5 ({) +### simple group (level 1) entered at line 4 ({) +### bottom level +\end{verbatim} +\end{pdfversion} +\endhtmlignore +\begin{htmlversion} +\begin{verbatim} +(\end occurred inside a group at level 3) + +### semi simple group (level 3) entered at line 6 (\begingroup) +### simple group (level 2) entered at line 5 ({) +### simple group (level 1) entered at line 4 ({) +### bottom level +\end{verbatim} +\end{htmlversion} +The diagnostic not only tells us where the group started, but also the +\emph{way} it started: \csx{begingroup} or |{| (which is an alias of +\csx{bgroup}, and the two are not distinguishable at the \TeX{}-engine +level). +\begin{ctanrefs} +\item[checkend.sty]Distributed as part of \CTANref{bezos}[checkend] +\end{ctanrefs} + +\Question[Q-nonum]{``Missing number, treated as zero''} + +In general, this means you've tried to assign something to a count, +dimension or skip register that isn't (in \TeX{}'s view of things) a +number. Usually the problem will become clear using the +\Qref*{ordinary techniques of examining errors}{Q-erroradvice}. + +Two \LaTeX{}-specific errors are commonly aired on the newsgroups. + +The commonest arises from attempting to use an example from the +\Qref*{\emph{The \LaTeX{} Companion} (first edition)}{Q-latex-books}, and is +exemplified by the following error text: +\begin{verbatim} +! Missing number, treated as zero. + + \relax +l.21 \begin{Ventry}{Return values} +\end{verbatim} +The problem arises because, in its first edition, the +\emph{Companion}'s examples always assumed that the \Package{calc} +package is loaded: this fact is mentioned in the book, but often not +noticed. The remedy is to load the \Package{calc} package in any +document using such examples from the \emph{Companion}. (The problem +does not really arise with the second edition; copies of all the +examples are available on the accompanying \CDROM{}, or on +\acro{CTAN}.) + +The other problem, which is increasingly rare nowadays, arises from +misconfiguration of a system that has been upgraded from \LaTeXo{}: +the document uses the \Package{times} package, and the error appears +at \cmdinvoke{begin}{document}. The file search paths are wrongly set +up, and your \cmdinvoke{usepackage}{times} has picked up a \LaTeXo{} +version of the package, which in its turn has invoked another which +has no equivalent in \LaTeXe{}. The obvious solution is to rewrite +the paths so that \LaTeXo{} packages are chosen only as a last resort +so that the startlingly simple \LaTeXe{} \Package{times} package will +be picked up. Better still is to replace the whole thing with +something more modern still; current \Package{psnfss} doesn't provide +a \Package{times} package~--- the alternative \Package{mathptmx} +incorporates \FontName{Times}-like mathematics, and a sans-serif face +based on \FontName{Helvetica}, but scaled to match \FontName{Times} +text rather better. +\begin{ctanrefs} +\item[calc.sty]Distributed as part of \CTANref{2etools}[calc] +\item[\nothtml{\rmfamily}Examples for \nothtml{\upshape}\LaTeX{} Companion]\CTANref{tlc2} +\item[The psnfss bundle]\CTANref{psnfss} +\end{ctanrefs} +\LastEdit{2011-06-01} + +\Question[Q-typend]{``Please type a command or say \csx{end}''} + +Sometimes, when you are running \AllTeX{}, it will abruptly stop and +present you with a prompt (by default, just a |*| character). Many +people (including this author) will reflexively hit the `return' +key, pretty much immediately, and of course this is no help at all~--- +\TeX{} just says: +\begin{verbatim} +(Please type a command or say `\end') +\end{verbatim} +and prompts you again. + +What's happened is that your \AllTeX{} file has finished prematurely, +and \TeX{} has fallen back to a supposed including file, from the +terminal. This could have happened simply because you've omitted +the \csx{bye} (\plaintex{}), \cmdinvoke{end}{document} (\LaTeX{}), or +whatever. Other common errors are failure to close the braces round a +command's argument, or (in \LaTeX{}) failure to close a verbatim +environment: in such cases you've already read and accepted an +error message about encountering end of file while scanning something. + +If the error is indeed because you've forgotten to end your document, +you can insert the missing text: if you're running \plaintex{}, the +advice, to ``say \csx{end}'' is good enough: it will kill the run; if +you're running \LaTeX{}, the argument will be necessary: +\cmdinvoke{end}{document}. + +However, as often as not this isn't the problem, and (short of +debugging the source of the document before ending) brute force is +probably necessary. Excessive force (killing the job that's +running \TeX{}) is to be avoided: there may well be evidence in the +\extension{log} file that will be useful in determining what the +problem is~--- so the aim is to persuade \TeX{} to shut itself down +and hence flush all log output to file. + +If you can persuade \TeX{} to read it, an end-of-file indication +(control-|D| under Unix, control-|Z| under Windows) will provoke +\TeX{} to report an error and exit immediately. Otherwise you should +attempt to provoke an error dialogue, from which you can exit (using +the |x| `command'). An accessible error could well be inserting an +illegal character: what it is will depend on what macros you are +running. If you can't make that work, try a silly command name or +two. + +\Question[Q-unkgrfextn]{``Unknown graphics extension''} + +The \LaTeX{} graphics package deals with several different types of +\acro{DVI} (or other) output drivers; each one of them has a potential +to deal with a different selection of graphics formats. The package +therefore has to be told what graphics file types its output driver +knows about; this is usually done in the \meta{driver}\extension{def} file +corresponding to the output driver you're using. + +The error message arises, then, if you have a graphics file whose +extension doesn't correspond with one your driver knows about. Most +often, this is because you're being optimistic: asking +\ProgName{dvips} to deal with a \extension{png} file, or \PDFTeX{} to deal with +a \extension{eps} file: the solution in this case is to transform the graphics +file to a format your driver knows about. + +If you happen to \emph{know} that your device driver deals with the +format of your file, you are probably falling foul of a limitation of +the file name parsing code that the graphics package uses. Suppose +you want to include a graphics file \File{home.bedroom.eps} using the +\ProgName{dvips} driver; the package will conclude that your file's +extension is \extension{bedroom.eps}, and will complain. + +The \Package{grffile} package deals with the last problem (and +others~--- see the package documentation); using the package, you may +write: +\begin{quote} +\begin{verbatim} +\usepackage{graphicx} +\usepackage{grffile} +... +\includegraphics{home.bedroom.eps} +\end{verbatim} +\end{quote} +or you may even write +\begin{quote} +\begin{verbatim} +\includegraphics{home.bedroom} +\end{verbatim} +\end{quote} +and \Package{graphicx} will find a \extension{eps} or \extension{pdf} +(or whatever) version, according to what version of \AllTeX{} you're +running. + +If for some reason you can't use \Package{grffile}, you have three +unsatisfactory alternatives: +\begin{itemize} +\item Rename the file~--- for example \File{home.bedroom.eps}\arrowhyph{}% + \File{home-bedroom.eps} +\item Mask the first dot in the file name: +\begin{verbatim} +\newcommand*{\DOT}{.} +\includegraphics{home\DOT bedroom.eps} +\end{verbatim} +\item Tell the graphics package what the file is, by means of options + to the \csx{includegraphics} command: +\begin{narrowversion} +\begin{verbatim} +\includegraphics[type=eps,ext=.eps, + read=.eps]{home.bedroom} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\includegraphics[type=eps,ext=.eps,read=.eps]{home.bedroom} +\end{verbatim} +\end{wideversion} +\end{itemize} +\begin{ctanrefs} +\item[grffile.sty]Distributed as part of the Oberdiek collection + \CTANref{oberdiek}[grffile] +\end{ctanrefs} + +\Question[Q-nodollar]{``Missing \texttt{\$} inserted''} + +There are certain things that \emph{only} work in maths mode. If your +document is not in maths mode and you have an |_| or a |^| character, +\TeX{} (and by inheritance, \LaTeX{} too) will say +\begin{verbatim} +! Missing $ inserted +\end{verbatim} +as if you couldn't possibly have misunderstood the import of what you +were typing, and the only possible interpretation is that you had +committed a typo in failing to enter maths mode. \TeX{}, therefore, +tries to patch things up by inserting the \texttt{\$} you `forgot', so that +the maths-only object will work; as often as not this will land you in +further confusion. + +It's not just the single-character maths sub- and superscript +operators: anything that's built in or declared as a maths operation, +from the simplest lower-case \csx{alpha} through the inscrutable +\csx{mathchoice} primitive, and beyond, will provoke the error if +misused in text mode. + +\LaTeX{} offers a command \csx{ensuremath}, which will put you in maths +mode for the execution of its argument, if necessary: so if you want +an \csx{alpha} in your running text, say +\cmdinvoke{ensuremath}{\csx{alpha}}; if the bit of running text somehow +transmutes into a bit of mathematics, the \csx{ensuremath} will become +a no-op, so it's pretty much always safe. + +\Question[Q-fontunavail]{Warning: ``Font shape \dots{}\ not available''} + +\LaTeX{}'s font selection scheme maintains tables of the font families +it has been told about. These tables list the font families that +\LaTeX{} knows about, and the shapes and series in which those font +families are available. In addition, in some cases, the tables list +the sizes at which \LaTeX{} is willing to load fonts from the family. + +When you specify a font, using one of the \LaTeX{} font selection +commands, \LaTeX{} looks for the font (that is, a font that matches +the encoding, family, shape, series and size that you want) in its +tables. If the font isn't there at the size you want, you will see a +message like: +\htmlignore +\begin{dviversion} +\begin{verbatim} +LaTeX Font Warning: Font shape `OT1/cmr/m/n' in +... size <11.5> not available +(Font) size <12> substituted on +... input line ... +\end{verbatim} +(All the message texts in this answer have been wrapped so that they +will fit in the narrow columns of this version of the \acro{FAQ}. The +continuation marker is |...| at the start of the broken-off portion of +the line.) + +\end{dviversion} +\begin{pdfversion} +\begin{verbatim} +LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <11.5> not available +(Font) size <12> substituted on input line ... +\end{verbatim} +\end{pdfversion} +\endhtmlignore +\begin{htmlversion} +\begin{verbatim} +LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <11.5> not available +(Font) size <12> substituted on input line ... +\end{verbatim} +\end{htmlversion} +There will also be a warning like: +\htmlignore +\begin{dviversion} +\begin{verbatim} +LaTeX Font Warning: Size substitutions with +... differences +(Font) up to 0.5pt have occurred. +\end{verbatim} +\end{dviversion} +\begin{pdfversion} +\begin{verbatim} +LaTeX Font Warning: Size substitutions with differences +(Font) up to 0.5pt have occurred. +\end{verbatim} +\end{pdfversion} +\endhtmlignore +\begin{htmlversion} +\begin{verbatim} +LaTeX Font Warning: Size substitutions with differences +(Font) up to 0.5pt have occurred. +\end{verbatim} +\end{htmlversion} +after \LaTeX{} has encountered \cmdinvoke{end}{document}. + +The message tells you that you've chosen a font size that is not in +\LaTeX{}'s list of ``allowed'' sizes for this font; \LaTeX{} has +chosen the nearest font size it knows is allowed. In fact, you can +tell \LaTeX{} to allow \emph{any} size: the restrictions come from the +days when only bitmap fonts were available, and they have never +applied to fonts that come in scaleable form in the first place. +Nowadays, most of the fonts that were once bitmap-only are also +available in scaleable (Adobe Type~1) form. If your installation uses +scaleable versions of the Computer Modern or European Computer Modern +(\acro{EC}) fonts, you can tell \LaTeX{} to remove the restrictions; +use the \Package{type1cm} or \Package{type1ec} package as appropriate. + +If the combination of font shape and series isn't available, \LaTeX{} +will usually have been told of a fall-back combination that may be +used, and will select that: +\htmlignore +\begin{dviversion} +\begin{verbatim} +LaTeX Font Warning: Font shape `OT1/cmr/bx/sc' +... undefined +(Font) using `OT1/cmr/bx/n' +... instead on input line 0. +\end{verbatim} +\end{dviversion} +\begin{pdfversion} +\begin{verbatim} +LaTeX Font Warning: Font shape `OT1/cmr/bx/sc' undefined +(Font) using `OT1/cmr/bx/n' instead on input line 0. +\end{verbatim} +\end{pdfversion} +\endhtmlignore +\begin{htmlversion} +\begin{verbatim} +LaTeX Font Warning: Font shape `OT1/cmr/bx/sc' undefined +(Font) using `OT1/cmr/bx/n' instead on input line 0. +\end{verbatim} +\end{htmlversion} + +Substitutions may also be ``silent''; in this case, there is no more +than an ``information'' message in the log file. For example, if you +specify an encoding for which there is no version in the current font +family, the `default family for the encoding' is selected. This +happens, for example, if you use command \csx{textbullet}, which is +normally taken from the maths symbols font, which is in |OMS| +encoding. My test log contained: +\htmlignore +\begin{dviversion} +\begin{verbatim} +LaTeX Font Info: Font shape `OMS/cmr/m/n' in +... size <10> not available +(Font) Font shape `OMS/cmsy/m/n' +... tried instead on input +... line ... +\end{verbatim} +\end{dviversion} +\begin{pdfversion} +\begin{verbatim} +LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line ... +\end{verbatim} +\end{pdfversion} +\endhtmlignore +\begin{htmlversion} +\begin{verbatim} +LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line ... +\end{verbatim} +\end{htmlversion} + +In summary, these messages are not so much error messages, as +information messages, that tell you what \LaTeX{} has made of your +text. You should check what the messages say, but you will ordinarily +not be surprised at their content. +\begin{ctanrefs} +\item[type1cm.sty]\CTANref{type1cm} +\item[type1ec.sty]\CTANref{type1ec} +\end{ctanrefs} + +\Question[Q-buffovl]{Unable to read an entire line} + +\TeX{} belongs to the generation of applications written for +environments that didn't offer the sophisticated string and i/o +manipulation we nowadays take for granted (\TeX{} was written in +Pascal, and the original Pascal standard made no mention of i/o, so +that anything but the most trivial operations were likely to be +unportable). + +When you overwhelm \TeX{}'s input mechanism, you get told: +\begin{verbatim} +! Unable to read an entire line---bufsize=3000. + Please ask a wizard to enlarge me. +\end{verbatim} +(for some value of `3000'~--- the quote was from a +\Newsgroup{comp.text.tex} posting by a someone who was presumably +using an old \TeX{}). + +As the message implies, there's (what \TeX{} thinks of as a) line in +your input that's ``too long'' (to \TeX{}'s way of thinking). Since +modern distributions tend to have tens of thousands of bytes of input +buffer, it's somewhat rare that these messages occur ``for real''. +Probable culprits are: +\begin{itemize} +\item A file transferred from another system, without translating + record endings. With the decline of fixed-format records (on + mainframe operating systems) and the increased intelligence of + \TeX{} distributions at recognising other systems' explicit + record-ending characters, this is nowadays rather a rare cause of + the problem. +\item A graphics input file, which a package is examining for its + bounding box, contains a binary preview section. Again, + sufficiently clever \TeX{} distributions recognise this situation, + and ignore the previews (which are only of interest, if at all, to a + \TeX{} previewer). +\end{itemize} + +The usual advice is to ignore what \TeX{} says (i.e., anything about +enlarging), and to put the problem right in the source. + +If the real problem is over-long text lines, most self-respecting text +editors will be pleased to automatically split long lines (while +preserving the ``word'' structure) so that they are nowhere any longer +than a given length; so the solution is just to edit the file. + +If the problem is a ridiculous preview section, try using +\href{http://www.ghostscript.com/}{\ProgName{ghostscript}} +to reprocess the file, outputting a ``plain +\extension{eps}'' file. (\ProgName{Ghostscript}'s distribution +includes a script \ProgName{ps2epsi} which will regenerate the preview +if necessary.) Users of the shareware program % ! line break +\href{http://www.ghostgum.com.au/}{\ProgName{gsview}} +will find buttons to perform the required transformation of the file +being displayed. +\LastEdit{2013-06-03} + +\Question[Q-formatstymy]{``Fatal format file error; I'm stymied''} + +\AllTeX{} applications often fail with this error when you've been +playing with the configuration, or have just installed a new version. + +The format file contains the macros that define the system you want to +use: anything from the simplest (\plaintex{}) all the way to the most +complicated, such as \LaTeX{} or \CONTeXT{}. From the command you +issue, \TeX{} knows which format you want. + +The error message +\begin{verbatim} + Fatal format file error; I'm stymied +\end{verbatim} +means that \TeX{} itself can't understand the format you want. +Obviously, this could happen if the format file had got corrupted, but +it usually doesn't. The commonest cause of the message, is that a new +binary has been installed in the system: no two \TeX{} binaries on the +same machine can +understand each other's formats. So the new version of \TeX{} you +have just installed, won't understand the format generated by the one +you installed last year. + +Resolve the problem by regenerating the format; of course, this +depends on which system you are using. +\begin{itemize} +\item On a te\TeX{}-based system, run +\begin{verbatim} + fmtutil --all +\end{verbatim} + or +\begin{verbatim} + fmtutil --byfmt= +\end{verbatim} + to build only the format that you are interested in. +\item On a \miktex{} system, click \texttt{Start}\arrowhyph{}% +\texttt{Programs}\arrowhyph{}% +\texttt{\miktex{} \emph{version}}\arrowhyph{}% +\texttt{\miktex{} Options}, and in the options window, click + \texttt{Update now}. +\end{itemize} + +\Question[Q-nonpdfsp]{Non-\acro{PDF} special ignored!} + +This is a \PDFTeX{} error: \PDFTeX{} is running in \acro{PDF} output +% beware line break at end line +mode, and it has encountered a \nothtml{\csx{special} command (}% +\Qref{\csx{special}}{Q-specials}\latexhtml{)}{ command}. \PDFTeX{} is +able to generate its own output, and in this mode of operation has no +need of \csx{special} commands (which allow the user to pass +information to the driver being used to generate output). + +Why does this happen? \LaTeX{} users, nowadays, hardly ever use +\csx{special} commands on their own~--- they employ packages to do the +job for them. Some packages will generate \csx{special} commands +however they are invoked: \Package{pstricks} is an example (it's very +raison d'\^etre is to emit \PS{} code in a sequence of \csx{special} +commands). \Package{Pstricks} may be dealt with by other means (the +\Package{pdftricks} package offers a usable technique). + +More amenable to correction, but more confusing, are packages (such as +\Package{color}, \Package{graphics} and \Package{hyperref}) that +specify a ``driver''. These packages have plug-in modules that +determine what \csx{special} (or other commands) are needed to generate +any given effect: the \texttt{pdftex} driver for such packages knows not to +generate \csx{special} commands. In most circumstances, you can let +the system itself choose which driver you need; in this case +everything will act properly when you switch to using \PDFLaTeX{}. If +you've been using \ProgName{dvips} (and specifying the |dvips| driver) +or \ProgName{dvipdfm} (for which you have to specify the driver), and +decide to try \PDFLaTeX{}, you \emph{must} remove the |dvips| or +|dvipdfm| driver specification from the package options, and let the +system recognise which driver is needed. +\begin{ctanrefs} +\item[pdftricks.sty]\CTANref{pdftricks} +\item[pstricks.sty]\CTANref{pstricks} +\end{ctanrefs} + +\Question[Q-8000]{Mismatched mode ljfour and resolution 8000} + +You're running \ProgName{dvips}, and you encounter a stream of error +messages, starting with ``\texttt{Mismatched mode}''. The mode is the +default used in your installation~--- it's set in the \ProgName{dvips} +configuration file, and \texttt{ljfour} is commonest (since it's the +default in most distributions), but not invariable. + +The problem is that \ProgName{dvips} has encountered a font for which +it must generate a bitmap (since it can't find it in Type~1 format), +and there is no proforma available to provide instructions to give to +\MF{}. + +So what to do? The number 8000 comes from the `\texttt{-Ppdf}' option +to \ProgName{dvips}, which you might have found from the answer +\nothtml{``wrong type of fonts'' (}% beware % beware line breaks +\Qref{``wrong type of fonts''}{Q-fuzzy-type3}\nothtml{)}. The obvious +solution is to switch to the trivial substitute `\texttt{-Pwww}', +which selects the necessary type~1 fonts for \acro{PDF} generation, +but nothing else: however, this will leave you with undesirable bitmap +fonts in your \acro{PDF} file. The ``proper'' solution is to find a +way of expressing what you want to do, using type~1 fonts. + +\Question[Q-toodeep]{``Too deeply nested''} + +This error appears when you start a \LaTeX{} list. + +\LaTeX{} keeps track of the nesting of one list inside another. There +is a set of list formatting parameters built-in for application to +each of the list nesting levels; the parameters determine indentation, +item separation, and so on. The \environment{list} environment (the +basis for list environments like \environment{itemize} and +\environment{enumerate}) ``knows'' there are only 6 of these sets. + +There are also different label definitions for the +\environment{enumerate} and \environment{itemize} environments at +their own private levels of nesting. Consider this example: +\begin{quote} +\begin{verbatim} +\begin{enumerate} +\item first item of first enumerate + \begin{itemize} + \item first item of first itemize + \begin{enumerate} + \item first item of second enumerate + ... + \end{enumerate} + ... + \end{itemize} +... +\end{enumerate} +\end{verbatim} +\end{quote} +In the example, +\begin{itemize} +\item the first \environment{enumerate} has labels as for a + first-level \environment{enumerate}, and is indented as for a + first-level list; +\item the first \environment{itemize} has labels as for a first level + \environment{itemize}, and is indented as for a second-level list; + and +\item the second \environment{enumerate} has labels as for a + second-level \environment{enumerate}, and is indented as for a + third-level list. +\end{itemize} +Now, as well as \LaTeX{} \emph{knowing} that there are 6~sets of +parameters for indentation, it also \emph{knows} that there are only +4~types of labels each, for the environments \environment{enumerate} +and \environment{itemize} (this ``knowledge'' spells out a requirement +for class writers, since the class supplies the sets of parameters). + +From the above, we can deduce that there are several ways we can run +out of space: we can have 6~lists (of any sort) nested, and try to +start a new one; we can have 4~\environment{enumerate} environments +somewhere among the set of nested lists, and try to add another one; +and we can have 4~\environment{itemize} environments somewhere among +the set of nested lists, and try to add another one. + +What can be done about the problem? Not much, short of rewriting +\LaTeX{}~--- you really need to rewrite your document in a slightly +less labyrinthine way. + +\Question[Q-inputlev]{Capacity exceeded~--- input levels} + +The error +\begin{wideversion} +\begin{verbatim} +! TeX capacity exceeded, sorry [text input levels=15]. +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +! TeX capacity exceeded, sorry + [text input levels=15]. +\end{verbatim} +\end{narrowversion} +is caused by nesting your input too deeply. You can provoke it with +the trivial (\plaintex{}) file \File{input.tex}, which contains +nothing but: +\begin{verbatim} +\input input +\end{verbatim} +In the real world, you are unlikely to encounter the error with a +modern \TeX{} distribution. Te\TeX{} (used to produce the error +message above) allows 15 files open for \TeX{} input at any one time, +which is improbably huge for a document generated by real human +beings. + +However, for those improbable (or machine-generated) situations, +some distributions offer the opportunity to adjust the parameter +|max_in_open| in a configuration file. + +\Question[Q-hyperdupdest]{\PDFTeX{} destination \dots{}\ ignored} + +The warning: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +! pdfTeX warning (ext4): destination with the same identifier +(name{page.1}) has been already used, duplicate ignored +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +! pdfTeX warning (ext4): destination with + the same identifier (name{page.1}) has + been already used, duplicate ignored +\end{verbatim} +{\small NB: message text wrapped to fit in the column\par} +\end{narrowversion} +\end{quote} +arises because of duplicate page numbers in your document. The +problem is usually soluble: see % beware line break +\Qref*[question]{\acro{PDF} page destinations}{Q-pdfpagelabels}~--- which +answer also describes the problem in more detail. + +If the identifier in the message is different, for example +\texttt{name\{figure.1.1\}}, the problem is (often) due to a problem of +package interaction. The \File{README} in the \Package{hyperref} +distribution mentions some of these issues~--- for example, +\environment{equation} and \environment{eqnarray} as supplied by the +\Package{amsmath} package; means of working around the problem are +typically supplied there. + +Some packages are simply incompatible with +\Package{hyperref}, but most work simply by ignoring it. In most +cases, therefore, you should load your package before you load +\Package{hyperref}, and \Package{hyperref} will patch things up so +that they work, so you can utilise your (patched) package \emph{after} +loading both: +\begin{quote} + \cmdinvoke{usepackage}{\emph{your package}}\\ + \texttt{...}\\ + \cmdinvoke{usepackage}[\emph{opts}]{hyperref}\\ + \texttt{...}\\ + \meta{code that uses your package} +\end{quote} +\begin{wideversion} +For example: +\begin{quote} +\begin{verbatim} +\usepackage{float} % defines \newfloat +... +\usepackage[...]{hyperref} % patches \newfloat +... +\newfloat{...}{...}{...} +\end{verbatim} +\end{quote} +\end{wideversion} +\begin{narrowversion} +So, if we need \csx{newfloat}: +\begin{quote} +\cmdinvoke{usepackage}{float} +\end{quote} +will define the command, +\begin{quote} +\cmdinvoke{usepackage}[\emph{opts}]{hyperref} +\end{quote} +will patch it, and now: +\begin{quote} +\cmdinvoke{newfloat}{...}{...}{...} +\end{quote} +will use the command, patched to create `proper' hyperreferences. +\end{narrowversion} +You should load packages in this order as a matter of course, unless +the documentation of a package says you \emph{must} load it after +\Package{hyperref}. (There are few packages that require to be +loaded after hyperref: one such is \Class{memoir}'s +``\Package{hyperref} fixup'' package \Package{memhfixc}.) + +If loading your packages in the (seemingly) ``correct'' order doesn't +solve the problem, you need to \Qref*{seek further help}{Q-gethelp}. + +\Question[Q-altabcr]{Alignment tab changed to \csx{cr}} + +This is an error you may encounter in \LaTeX{} when a tabular +environment is being processed. ``Alignment tabs'' are the +\texttt{\&} signs that separate the columns of a \environment{tabular} +(or \environment{array} or matrix) environment; so the error message +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +! Extra alignment tab has been + changed to \cr +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +! Extra alignment tab has been changed to \cr +\end{verbatim} +\end{wideversion} +\end{quote} +could arise from a simple typo, such as: +\begin{quote} +\begin{verbatim} +\begin{tabular}{ll} + hello & there & jim \\ + goodbye & now +\end{tabular} +\end{verbatim} +\end{quote} +where the second \texttt{\&} in the first line of the table is more than the +two-column \texttt{ll} column specification can cope with. In this +case, an extra ``\texttt{l}'' in that solves the problem. (If you +continue from the error in this case, ``\texttt{jim}'' will be moved +to a row of his own.) Another simple typo that can provoke the error +is: +\begin{quote} +\begin{verbatim} +\begin{tabular}{ll} + hello & there + goodbye & now +\end{tabular} +\end{verbatim} +\end{quote} +where the `\texttt{\bsbs }' has been missed from the first line of the table. +In this case, if you continue from the error, you will find that +\LaTeX{} has made a table equivalent to: +\begin{quote} +\begin{verbatim} +\begin{tabular}{ll} + hello & there goodbye\\ + now +\end{tabular} +\end{verbatim} +\end{quote} +(with the second line of the table having only one cell). + +Rather more difficult to spot is the occurrence of the error when +you're using alignment instructions in a ``\texttt{p}'' column: +\begin{quote} +\begin{verbatim} +\usepackage{array} +... +\begin{tabular}{l>{\raggedright}p{2in}} +here & we are again \\ +happy & as can be +\end{tabular} +\end{verbatim} +\end{quote} +the problem here (as explained in % ! line break +\Qref[question]{tabular cell alignment}{Q-tabcellalign}) is that the +\csx{raggedright} command in the column specification has overwritten +\environment{tabular}'s definition of \texttt{\bsbs }, so that +``\texttt{happy}'' appears in a new line of the second column, and the +following \texttt{\&} appears to \LaTeX{} just like the second +\texttt{\&} in the first example above. + +Get rid of the error in the way described in % ! linebreak +\Qref[question]{tabular cell alignment}{Q-tabcellalign}~--- either use +\csx{tabularnewline} explicitly, or use the \csx{RBS} trick described +there. + +The \Package{amsmath} package adds a further twist; when typesetting +a matrix (the package provides many matrix environments), it has a +fixed maximum number of columns in a matrix~--- exceed that maximum, +and the error will appear. By default, the maximum is set to 10, but +the value is stored in counter \texttt{MaxMatrixCols} and may be +changed (in the same way as any counter): +\begin{quote} +\begin{verbatim} +\setcounter{MaxMatrixCols}{20} +\end{verbatim} +\end{quote} +\begin{ctanrefs} +\item[array.sty]Distributed as part of \CTANref{2etools}[array] +\end{ctanrefs} +\LastEdit{2011-07-06} + +\Question[Q-divzero]{Graphics division by zero} + +While the error +\begin{quote} +\begin{verbatim} +! Package graphics Error: Division by 0. +\end{verbatim} +\end{quote} +can actually be caused by offering the package a figure which claims +to have a zero dimension, it's more commonly caused by rotation. + +Objects in \TeX{} may have both height (the height above the baseline) +and depth (the distance the object goes below the baseline). If you +rotate an object by 180\,degrees, you convert its height into depth, +and vice versa; if the object started with zero depth, you've +converted it to a zero-height object. + +Suppose you're including your graphic with a command like: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\includegraphics[angle=180,height=5cm]{myfig.eps} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\includegraphics[angle=180,% + height=5cm]{myfig.eps} +\end{verbatim} +\end{narrowversion} +\end{quote} +In the case that \File{myfig.eps} has no depth to start with, the +scaling calculations will produce the division-by-zero error. + +Fortunately, the \Package{graphicx} package has a keyword +\pkgoption{totalheight}, which allows you to specify the size of the +image relative to the sum of the object's \pkgoption{height} and +\pkgoption{depth}, so +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\includegraphics[angle=180,totalheight=5cm]{myfig.eps} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\includegraphics[angle=180,% + totalheight=5cm]{myfig.eps} +\end{verbatim} +\end{narrowversion} +\end{quote} +will resolve the error, and will behave as you might hope. + +If you're using the simpler \Package{graphics} package, use the +\texttt{*} form of the \csx{resizebox} command to specify the use of +\pkgoption{totalheight}: +\begin{quote} +\begin{verbatim} +\resizebox*{!}{5cm}{% + \rotatebox{180}{% + \includegraphics{myfig.eps}% + }% +} +\end{verbatim} +\end{quote} +\begin{ctanrefs} +\item[graphics.sty,graphicx.sty]Both parts of the \CTANref{graphics} bundle +\end{ctanrefs} + +\Question[Q-missbegdoc]{Missing \csx{begin}\marg{document}} + +The \emph{preamble} of your document is the stuff before +\cmdinvoke{begin}{document}; you put \csx{usepackage} commands and +your own macro definitions in there. \latex{} doesn't like +\emph{typesetting} anything in the preamble, so if you have: +\begin{itemize} +\item typed the odd grumble, +\item created a box with \csx{newsavebox} and put something in it + using \csx{sbox} (or the like), +\item forgotten to put \cmdinvoke{begin}{document} into the document, + at all, or even +\item gave it the wrong file +\end{itemize} +the error is inevitable and the solution is simple~--- judicious use +of comment markers (`\texttt{\textpercent{}}') at the beginning of a +line, moving things around, providing something that was +missing~\dots{} or switching to the correct file. + +The error may also occur while reading the \extension{aux} file from an +earlier processing run on the document; if so, delete the +\extension{aux} file and start again from scratch. If the error +recurs, it could well be due to a buggy class or package. + +However, it may be that none of the above solves the problem. + +If so, remember that things that appear before \csx{documentclass} are +also problematical: they are inevitably before +\cmdinvoke{begin}{document}! + +Unfortunately, modern editors are capable of putting things there, and +preventing you from seeing them. This can happen when your document +is being `written' in \Qref*{Unicode}{Q-unicode}. The Unicode +standard defines ``Byte Order Marks'' (\acro{BOM}), that reassure a +program (that reads the document) of the way the Unicode codes are +laid out. Sadly ordinary \latex{} or \pdflatex{} choke on +\acro{BOM}s, and consider them typesetting requests. The error +message you see will look like: +\begin{quote} +\begin{verbatim} +! LaTeX Error: Missing \begin{document}. +... +l.1 + \documentclass{article} +\end{verbatim} +\end{quote} +(Those \texttt{}s are your operating system's representation of an +unknown character; on the author's system it's a reverse video +`\texttt{?}' sign.) + +You can spot the \acro{BOM} by examining the bytes; for example, the +Unix \ProgName{hexdump} application can help: +\begin{quote} +\begin{verbatim} +$ hexdump -C +00000000 ef bb bf 5c 64 6f 63 75 ... +\end{verbatim} +\end{quote} +The \texttt{5c 64 6f 63 75} are the ``\csx{docu}'' at the start of +(the `real' part of) your document; the three bytes before it form the +\acro{BOM}. + +How to stop your editor from doing this to you depends, of course, on +the editor you use; if you are using \acro{GNU E}macs, you have to +change the encoding from \texttt{utf-8-with-signature} to `plain' +\texttt{utf-8}; instructions for that are found on +% ! line break +\href{http://stackoverflow.com/questions/3859274/}{the ``stack overflow'' site} + +(So far, all instances of this problem that the author has seen have +afflicted \acro{GNU E}macs users.) + +Fortunately \xetex{} and \luatex{} know about \acro{BOM}s and what to +do with them, so \latex{} using them is ``safe''. + +\Question[Q-normalszmiss]{\csx{normalsize} not defined} + +The \LaTeX{} error: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +The font size command \normalsize is not + defined: there is probably something + wrong with the class file. +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +The font size command \normalsize is not defined: +there is probably something wrong with the class file. +\end{verbatim} +\end{wideversion} +\end{quote} +reports something pretty fundamental (document base font size has not +been set, something the document class does for you). It \emph{can}, +in principle, be a problem with the document class, but is more often +caused by the user forgetting to start their document with a +\csx{documentclass} command. +\LastEdit{2013-11-20} + +\Question[Q-manymathalph]{Too many math alphabets} + +\TeX{} mathematics is one of its most impressive features, yet the +internal structure of the mechanism that produces it is painfully +complicated and (in some senses) pathetically limited. One area of +limitation is that one is only allowed 16~''maths alphabets'' + +\LaTeX{} offers the user quite a lot of flexibility with allocating +maths alphabets, but few people use the flexibility directly. +Nevertheless, there are many packages that provide symbols, or that +manipulate them, which allocate themselves one or more maths alphabet. + +If you can't afford to drop any of these packages, you might be able +to consider switching to use of \Qref*{\xetex{}}{Q-xetex} or +\Qref{\luatex{}}{Q-luatex}, which both have 65536 alphabet slots +available. (Such a change is best not done when under pressure to +complete a document; other issues, such as font availability) could +make a change impractical.) + +Even if switching is not possible, there's still hope if you're using +the \Package{bm} package to support \Qref*{bold maths}{Q-boldgreek}: +\Package{bm} is capable of gobbling alphabets as if there is no +tomorrow. The package defines two limiter commands: \csx{bmmax} (for +\emph{bold} symbols; default~4) and \csx{hmmax} (for \emph{heavy} +symbols, if you have them; default~3), which control the number of +alphabets to be used. + +Any reduction of the \csx{\emph{xx}max} variables will slow +\Package{bm} down~--- but that's surely better than the document not +running at all. So unless you're using maths fonts (such as +\FontName{Mathtime Plus}) that feature a heavy symbol weight, suppress all +use of heavy families by +\begin{quote} +\begin{verbatim} + \newcommand{\hmmax}{0} +\end{verbatim} +\end{quote} +(before loading \Package{bm}), and then steadily reduce the bold +families, starting with +\begin{quote} +\begin{verbatim} + \newcommand{\bmmax}{3} +\end{verbatim} +\end{quote} +(again before loading \Package{bm}), until (with a bit of luck) the +error goes away. +\begin{ctanrefs} +\item[bm.sty]Distributed as part of \CTANref{2etools}[bm] +\end{ctanrefs} + +\Question[Q-ouparmd]{Not in outer par mode} + +The error: +\begin{quote} +\begin{verbatim} +! LaTeX Error: Not in outer par mode. +\end{verbatim} +\end{quote} +comes when some ``main'' document feature is shut up somewhere it +doesn't like. + +The commonest occurrence is when the user wants a figure somewhere +inside a table: +\begin{quote} +\begin{verbatim} +\begin{tabular}{|l|} + \hline + \begin{figure} + \includegraphics{foo} + \end{figure} + \hline +\end{tabular} +\end{verbatim} +\end{quote} +a construction that was supposed to put a frame around the diagram, +but doesn't work, any more than: +\begin{quote} +\begin{verbatim} +\framebox{\begin{figure} + \includegraphics{foo} + \end{figure}% +} +\end{verbatim} +\end{quote} +The problem is, that the \environment{tabular} environment, and the +\csx{framebox} command restrain the \environment{figure} environment +from its natural m\'etier, which is to float around the document. + +The solution is simply not to use the \environment{figure} environment +here: +\begin{quote} +\begin{verbatim} +\begin{tabular}{|l|} + \hline + \includegraphics{foo} + \hline +\end{tabular} +\end{verbatim} +\end{quote} +What was the float for?~--- as written in the first two examples, it +serves no useful purpose; but perhaps you actually wanted a diagram +and its caption framed, in a float. + +It's simple to achieve this~--- just reverse the order of the +environments (or of the \environment{figure} environment and the +command): +\begin{quote} +\begin{verbatim} +\begin{figure} + \begin{tabular}{|l|} + \hline + \includegraphics{foo} + \caption{A foo} + \hline + \end{tabular} +\end{figure} +\end{verbatim} +\end{quote} +The same goes for \environment{table} environments (or any other sort +of float you've defined for yourself) inside tabulars or box commands; +you \emph{must} get the float environment out from inside, one way or +another. + +\Question[Q-errmissitem]{Perhaps a missing \csx{item}?} + +Sometimes, the error +\begin{quote} +\begin{verbatim} +Something's wrong--perhaps a missing \item +\end{verbatim} +\end{quote} +actually means what it says: +\begin{quote} +\begin{verbatim} +\begin{itemize} + boo! +\end{itemize} +\end{verbatim} +\end{quote} +produces the error, and is plainly in need of an \csx{item} command. + +You can also have the error appear when at first sight things are +correct: +\begin{quote} +\begin{verbatim} +\begin{tabular}{l} + \begin{enumerate} + \item foo\\ + \item bar + \end{enumerate} +\end{tabular} +\end{verbatim} +\end{quote} +produces the error at the \texttt{\bsbs }. This usage is just wrong; if you +want to number the cells in a table, you have to do it ``by hand'': +\begin{quote} +\begin{verbatim} +\newcounter{tablecell} +... +\begin{tabular}{l} + \stepcounter{tablecell} + \thetablecell. foo\\ + \stepcounter{tablecell} + \thetablecell. bar +\end{tabular} +\end{verbatim} +\end{quote} +This is obviously untidy; a command \csx{numbercell} defined as: +\begin{quote} +\begin{verbatim} +\newcounter{tablecell} +... +\newcommand*{\numbercell}{% + \stepcounter{tablecell}% + \thetablecell. % ** +} +\end{verbatim} +\end{quote} +could make life easier: +\begin{quote} +\begin{verbatim} +\begin{tabular}{l} + \numbercell foo\\ + \numbercell bar +\end{tabular} +\end{verbatim} +\end{quote} +Note the deliberate introduction of a space as part of the command, +marked with asterisks. Omitted above, the code needs to set the +counter \ltxcounter{tablecell} to zero +(\cmdinvoke{setcounter}{tablecell}{0}) before each tabular that uses it. + +The error also regularly appears when you would never have thought +that a \csx{item} command might be appropriate. For example, the +seemingly innocent: +\begin{quote} +\begin{verbatim} +\fbox{% + \begin{alltt} + boo! + \end{alltt}% +} +\end{verbatim} +\end{quote} +produces the error (the same happens with \csx{mbox} in place of +\csx{fbox}, or with either of their ``big brothers'', \csx{framebox} and +\csx{makebox}). This is because the \environment{alltt} environment +uses a ``trivial'' list, hidden inside its definition. (The +\environment{itemize} environment also has this construct inside +itself, in fact, so \cmdinvoke{begin}{itemize} won't work inside an +\csx{fbox}, either.) The list construct wants to happen between +paragraphs, so it makes a new paragraph of its own. Inside the +\csx{fbox} command, that doesn't work, and subsequent macros convince +themselves that there's a missing \csx{item} command. + +To solve this rather cryptic error, one must put the +\environment{alltt} inside a paragraph-style box. The following +modification of the above \emph{does} work: +\begin{quote} +\begin{verbatim} +\fbox{% + \begin{minipage}{0.75\textwidth} + \begin{alltt} + hi, there! + \end{alltt} + \end{minipage} +} +\end{verbatim} +\end{quote} +The code above produces a box that's far too wide for the text. One +may want to use something that allows % ! line break +\Qref*{variable size boxes}{Q-varwidth} in place of the +\environment{minipage} environment. + +Oddly, although the \environment{verbatim} environment wouldn't work +inside a \csx{fbox} command argument (see % ! line break +\Qref[question]{verbatim in command arguments}{Q-verbwithin}), you +get an error that complains about \csx{item}: the environment's +internal list bites you before \environment{verbatim} has even had a +chance to create its own sort of chaos. + +Another (seemingly) obvious use of \csx{fbox} also falls foul of this +error: +\begin{quote} +\begin{verbatim} +\fbox{\section{Boxy section}} +\end{verbatim} +\end{quote} +This is a case where you've simply got to be more subtle; you should +either write your own macros to replace the insides of \LaTeX{}'s +sectioning macros, or look for some alternative in the packages +discussed in % ! line break +``\Qref*[question]{The style of section headings}{Q-secthead}''. + +\Question[Q-errparnum]{Illegal parameter number in definition} + +The error message means what it says. In the simple case, you've +attempted a definition like: +\begin{quote} +\begin{verbatim} +\newcommand{\abc}{joy, oh #1!} +\end{verbatim} +\end{quote} +or (using \TeX{} primitive definitions): +\begin{quote} +\begin{verbatim} +\def\abc{joy, oh #1!} +\end{verbatim} +\end{quote} +In either of the above, the definition uses an argument, but the +programmer did not tell \AllTeX{}, in advance, that she was going to. +The fix is simple~--- \cmdinvoke{newcommand}{\csx{abc}}[1], in the +\LaTeX{} case, |\def\abc#1| in the basic \TeX{} case. + +The more complicated case is exemplified by the attempted definition: +\begin{quote} +\begin{verbatim} +\newcommand{\abc}{joy, oh joy!% + \newcommand{\ghi}[1]{gloom, oh #1!}% +} +\end{verbatim} +\end{quote} +will also produce this error, as will its \TeX{} primitive equivalent: +\begin{quote} +\begin{verbatim} +\def\abc{joy, oh joy!% + \def\ghi#1{gloom, oh #1!}% +} +\end{verbatim} +\end{quote} +This is because special care is needed when defining one macro within +the code of another macro. This is explained elsewhere, separately +for \Qref*[question]{\LaTeX{} definitions}{Q-ltxhash} and for +\Qref*[question]{\TeX{} primitive definitions}{Q-hash} + +\Question[Q-fllost]{Float(s) lost} + +The error +\begin{quote} +\begin{verbatim} +! LaTeX Error: Float(s) lost. +\end{verbatim} +\end{quote} +seldom occurs, but always seems deeply cryptic when it \emph{does} +appear. + +The message means what it says: one or more figures, tables, etc., or +marginpars has not been typeset. (Marginpars are treated internally +as floats, which is how they come to be lumped into this error +message.) + +The most likely reason is that you placed a float or a \csx{marginpar} +command inside another float or marginpar, or inside a +\environment{minipage} environment, a \csx{parbox} or \csx{footnote}. +Note that the error may be detected a long way from the problematic +command(s), so the techniques of % ! line break +\Qref*{tracking down elusive errors}{Q-erroradvice} all need to be +called into play. + +This author has also encountered the error when developing macros that +used the \LaTeX{} internal float mechanisms. Most people doing that +sort of thing are expected to be able to work out their own problems\dots{} + +\Question[Q-parmoderr]{Not in outer par mode} + +For example: +\begin{quote} +\begin{verbatim} +*\mbox{\marginpar{foo}} + +! LaTeX Error: Not in outer par mode. +\end{verbatim} +\end{quote} +The error comes when you try to build something movable inside a box. +Movable things, in this context, are floating environments +(\environment{figure} and \environment{table}, for example), and +\csx{marginpar}s. \latex{} simply doesn't have the mechanisms for +floating out of boxes. In fact, floats and \csx{marginpar}s +themselves are built out of boxes, so that they can't be nested. + +If your error arises from \csx{marginpar}, you simply have to think of +an alternative way of placing the command; there is no slick solution. + +If a floating environment is the culprit, it may be possible to use +the ``\texttt{H}'' placement option, provided (for example) by the +\Package{float} package: +\begin{quote} +\begin{verbatim} +\parbox{25cm}{% + \begin{figure}[H] + ... + \caption{Apparently floating...} + \end{figure}% +} +\end{verbatim} +\end{quote} +This example makes little sense as it stands; however, it is +conceivable that sane uses could be found (for example, using a +package such as \Package{algorithm2e} to place two algorithms +side-by-side). +\begin{ctanrefs} +\item[algorithm2e.sty]\CTANref{algorithm2e} +\item[float.sty]\CTANref{float} +\end{ctanrefs} +\LastEdit{2013-09-09} + +\Question[Q-texorpdf]{Token not allowed in PDFDocEncoded string} + +The package \Package{hyperref} produces this error when it doesn't +know how to make something into a ``character'' that will go into one +of its \acro{PDF} entries. For example, the (unlikely) sequence +\begin{quote} +\begin{verbatim} +\newcommand{\filled}[2]{% + #1% + \hfil + #2% +} +\section{\filled{foo}{bar}} +\end{verbatim} +\end{quote} +provokes the error. \Package{Hyperref} goes on to tell you: +\begin{quote} +\begin{verbatim} +removing `\hfil' on input line ... +\end{verbatim} +\end{quote} +It's not surprising: how would \emph{you} put the +typesetting instruction \csx{hfil} into a \acro{PDF} bookmark? + +\Package{Hyperref} allows you to define an alternative for such +things: the command \csx{texorpdfstring}, which takes two +arguments~--- the first is what is typeset, the second is what is put +into the bookmark. For example, what you would probably like in this +case is just a single space in the bookmark; if so, the erroneous +example above would become: +\begin{quote} +\begin{verbatim} +\newcommand{\filled}[2]{% + #1% + \texorpdfstring{\hfil}{\space}% + #2% +} +\section{\filled{foo}{bar}} +\end{verbatim} +\end{quote} +and with that definition, the example will compile succesfully +(\Package{hyperref} knows about the macro \csx{space}). +\LastEdit*{2009-05-29} + +\Question[Q-checksum]{Checksum mismatch in font} + +When \MF{} generates a font it includes a checksum in the font bitmap +file, and in the font metrics file (\acro{TFM}). \AllTeX{} includes +the checksum from the \acro{TFM} file in the \acro{DVI} file. + +When \ProgName{dvips} (or other \acro{DVI} drivers) process a +\acro{DVI} file, they compare checksums in the \acro{DVI} file to +those in the bitmap fonts being used for character images. If the +checksums don't match, it means the font metric file used by \AllTeX{} +was not generated from the same \MF{} program that generated the +font. + +This commonly occurs when you're processing someone else's \acro{DVI} +file. + +The fonts on your system may also be at fault: possibilities are that +the new \acro{TFM} was not installed, or installed in a path after an +old \acro{TFM} file, or that you have a personal cache of bitmaps from +an old version of the font. + +In any case, look at the output -- the chances are that it's perfectly +\acro{OK}, since metrics tend not to change, even when the bitmaps are +improved. (Indeed, many font designers~--- Knuth included~--- +maintain the metrics come what may.) + +If the output \emph{does} look bad, your only chance is to regenerate +things from scratch. Options include: flushing your bitmap cache, +rebuild the \acro{TFM} file locally, and so on. + +\Question[Q-entercompmode]{Entering compatibility mode} + +You run your \LaTeX{} job, and it starts by saying +\begin{quote} +\begin{verbatim} +Entering LaTeX 2.09 COMPATIBILITY MODE +\end{verbatim} +\end{quote} +followed by lines of asterisks and \texttt{!!WARNING!!}. + +This means that the document is not written in ``current'' \LaTeX{} +syntax, and that there is no guarantee that all parts of the document +will be formatted correctly. + +If the document is someone else's, and you want no more than a copy to +read, ignore the error. The document may fail elsewhere, but as often +as not it will provide a \extension{dvi} or \extension{pdf} that's +adequate for most purposes. + +If it's a new document you have just started working on, you have been +misled by someone. You have written something like: +\begin{quote} + \cmdinvoke{documentstyle}{article} +\end{quote} +or, more generally: +\begin{quote} + \cmdinvoke*{documentstyle}[options]{class} +\end{quote} +These forms are (as the warning says) \LaTeXo{} syntax, and to get rid +of the warning, you must change the command. + +The simple form is easy to deal with: +\begin{quote} + \cmdinvoke{documentstyle}{article} +\end{quote} +should become: +\begin{quote} + \cmdinvoke{documentclass}{article} +\end{quote} +The complex form is more difficult, since \LaTeXo{} ``options'' +conflate two sorts of things~--- options for the class (such as +\pkgoption{11pt}, \pkgoption{fleqn}), and packages to be loaded. +So: +\begin{quote} + \cmdinvoke{documentstyle}[11pt,verbatim]{article} +\end{quote} +should become: +\begin{quote} + \cmdinvoke{documentclass}[11pt]{article}\\ + \cmdinvoke{usepackage}{verbatim} +\end{quote} +because \pkgoption{11pt} happens to be a class option, while +\Package{verbatim} is a package. + +There's no simple way to work out what are class options under +\LaTeXo{}; for \Class{article}, the list includes \pkgoption{10pt}, +\pkgoption{11pt}, \pkgoption{12pt}, \pkgoption{draft}, +\pkgoption{fleqn}, \pkgoption{leqno}, \pkgoption{twocolumn} and +\pkgoption{twoside}~--- anything else must be a package. + +Your document may well ``just work'' after changes like those above; +if not, you should think through what you're trying to do, and consult +documentation on how to do it~--- there are lots of % ! line break +\Qref*{free tutorials}{Q-tutorials*} to help you on your way, if you +don't have access to a \LaTeX{} manual of any sort. + +\Question[Q-includeother]{\latex{} won't include from other directories} + +You wanted to \cmdinvoke{include}{../bar/xyz.tex}, but \latex{} says: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +latex: Not writing to ../bar/xyz.aux (openout_any = p). +! I can't write on file `../bar/xyz.aux'. +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +LaTeX: Not writing to ../bar/xyz.aux + (openout_any = p). +! I can't write on file `../bar/xyz.aux'. +\end{verbatim} +(The first line of that message is wrapped, here.) +\end{narrowversion} +\end{quote} +The error comes from \tex{}'s protection against writing to +directories that aren't descendents of the one where your document +resides. (The restriction protects against problems arising from +\latex{}ing someone else's malicious, or merely broken, document. If +such a document overwrites something you wanted kept, there is obvious +potential for havoc.) + +Document directory structures that can lead to this problem will look +like the fictional \File{mybook}: +\begin{quote} +\begin{verbatim} +./base/mybook.tex +./preface/Preface.tex +./preface/*** +./chapter1/Intro.tex +... +\end{verbatim} +\end{quote} +With such a structure, any document directory (other than the one +where \File{mybook.tex} lives), seems ``up'' the tree from the +base directory. (References to such files will look like +\cmdinvoke{include}{../preface/Preface}: the ``\texttt{..}'' is the +hint.) + +But why did it want to write at all?~--- % ! line break +``\Qref*{what's going in in my \csx{include}}{Q-include}'' explains +how \csx{include} works, among other things by writing an +\extension{aux} file for every \csx{includ}ed file. + +Solutions to the problem tend to be drastic: +\begin{enumerate} +\item Restructure the directories that hold your document so that the + master file is at the root of the tree: + \begin{quote} +\begin{verbatim} +./mybook.tex +./mybook/preface/Preface.tex +./mybook/preface/*** +./mybook/chapter1/Intro.tex +... +\end{verbatim} + \end{quote} + and so on. +\item Did you actually \emph{need} \csx{include}?~--- if not, you can + replace \csx{include} by \csx{input} throughout. (This only works + if you don't need \csx{includeonly}.) +\item You \emph{could} patch your system's \File{texmf.cnf}~--- if you + know what you're doing, the error message should be enough of a + hint; this action is definitely not recommended, and is left to + those who can ``help themselves'' in this respect. +\end{enumerate} +\LastEdit*{2012-02-13} + +\Question[Q-expl3-old]{Support package \Package{expl3} too old} + +Some (rather modern) packages are written using the % ! line break +\Qref*{\latex{}3 programming environment}{Q-LaTeX3}. Since \latex{}3 +is still under development, the author cannot reliably guess what +version of \latex{}3 the user has installed, and whether that version +is adequate for the current package. Thus the package's code often +checks the user's installation, and complains if it's older than the +author's installation at time of testing. The error message is: +\begin{quote} +\begin{verbatim} +! Support package expl3 too old. +\end{verbatim} +\end{quote} +The ``additional help'' tells you the solution: update your \latex{}3 +installation. The relevant things are \Package{l3kernel} (the +programming environment, which contains the \Package{expl3} mentioned +in the error message) and \Package{l3packages} (\latex{}3 constructs +such as command definitions). + +While this sounds a drastic remedy, it is no longer the major +undertaking it once was~--- if you are using a modern \tex{} +distribution that you installed yourself, ask it to update over the +internet; if that choice is not available, install from the +\extension{tds.zip} files available for both packages on \ctan{}. +\begin{ctanrefs} +\item[l3kernel \nothtml{\rmfamily}bundle]\CTANref{l3kernel} +\item[l3packages \nothtml{\rmfamily}bundle]\CTANref{l3packages} +\end{ctanrefs} +\LastEdit*{2013-02-20} diff --git a/help/uk-tex-faq/faq-lab-ref.tex b/help/uk-tex-faq/faq-lab-ref.tex new file mode 100644 index 0000000000..d1629fd7b7 --- /dev/null +++ b/help/uk-tex-faq/faq-lab-ref.tex @@ -0,0 +1,182 @@ +% $Id: faq-lab-ref.tex,v 1.4 2011/05/08 10:16:43 rf10 Exp $ + +\subsection{Labels and references} + +\Question[Q-nameref]{Referring to things by their name} + +\LaTeX{}'s labelling mechanism is designed for the impersonal world of +the academic publication, in which everything has a number: an +extension is necessary if we are to record the \emph{name} of things +we've labelled. The two packages available extend the \LaTeX{} +sectioning commands to provide reference by the name of the section. + +The \Package{titleref} package is a simple extension which provides +the command \csx{titleref}; it is a stand-alone package~--- don't use it +in a document in which you also need to use \Package{hyperref}. + +The \Package{byname} package is part of the \Package{smartref} bundle +and works well with \Package{smartref}, and works (to an extent) with +\Package{hyperref}, but the links it defines are not hyperlinks. + +The \Class{memoir} class incorporates the functionality of +\Package{titleref}, but doesn't work with \Package{byname} (though a +search of \Newsgroup{comp.text.tex} on \URL{groups.google.com} will +find a patch to \Package{byname} to remedy the problem). + +The \Package{hyperref} bundle includes a package \Package{nameref}, +which will work standing alone (i.e., without \Package{hyperref}: of +course, in this mode its references are not hyperlinked). If you load +\Package{hyperref} itself, \Package{nameref} is automatically loaded. +\Class{Memoir} requires the \Package{memhfixc} when running with +\Package{hyperref}; following the sequence: +\begin{quote} +\begin{verbatim} +\documentclass[...]{memoir} +... +\usepackage[...]{hyperref} +\usepackage{memhfixc} +\end{verbatim} +\end{quote} +\Package{nameref} commands may be used in a \Class{memoir} document. + +\Package{Zref} defines a proposed replacement for all of the \LaTeX{} +reference mechanisms, and among other things provides +name-referencing mechanisms: +\begin{quote} +\begin{verbatim} +\usepackage[user,titleref]{zref} +... +\section{hello}\zlabel{sec:one} +The section name is: \ztitleref{sec:one}. +\end{verbatim} +\end{quote} +(One might hope that something of this sort would be the ``way of the +future'', but things move slowly in the \LaTeX{} world: don't hold +your breath.) + +Each of \Package{titleref}, \Package{byname} and \Package{nameref} +defines a reference command with the same name as the package: +\csx{titleref}, \csx{byname} and \csx{nameref}. The \Package{nameref} +package also defines a command \csx{byshortnameref}, which uses the +optional `short' title argument to the chapter and section commands. +(Although it comes from the same author, \Package{zref} \emph{doesn't} +define a short-name variant.) +\begin{ctanrefs} +\item[byname.sty]Distributed with \CTANref{smartref} +\item[hyperref.sty]\CTANref{hyperref} +\item[memoir.cls]\CTANref{memoir} +\item[nameref.sty]Distributed with \CTANref{hyperref} +\item[smartref.sty]\CTANref{smartref} +\item[titleref.sty]\CTANref{titleref} +\item[zref.sty]Distributed as part of \CTANref{oberdiek}[zref] +\end{ctanrefs} + +\Question[Q-extref]{Referring to labels in other documents} + +When producing a set of inter-related documents, you'll often want to +refer to labels in another document of the set; but \LaTeX{}, of its +own accord, doesn't permit this. + +So the package \Package{xr} was written: if you say +\begin{quote} +\begin{verbatim} +\usepackage{xr} +\externaldocument{volume1} +\end{verbatim} +\end{quote} +will load all the references from \File{volume1} into your present +document. + +But what if the documents both have a section labelled +``\environment{introduction}'' (likely enough, after all)? The +package provides a means to transform all the imported labels, so you +don't have to change label names in either document. For example: +\begin{quote} +\begin{verbatim} +\usepackage{xr} +\externaldocument[V1-]{volume1} +\end{verbatim} +\end{quote} +loads the references from \File{volume1}, but prefixes every one with +the string \texttt{V1-}. So you would refer to the introduction to volume~1 +as: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\usepackage{xr} +\externaldocument[V1-]{volume1} +... +... the introduction to volume1 + (\ref{V1-introduction})... +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\usepackage{xr} +\externaldocument[V1-]{volume1} +... +... the introduction to volume1 (\ref{V1-introduction})... +\end{verbatim} +\end{wideversion} +\end{quote} +To have the facilities of \Package{xr} working with +\Package{hyperref}, you need \Package{xr-hyper}. For simple +hyper-cross-referencing (i.e., to a local \acro{PDF} file you've just +compiled), write: +\begin{quote} +\begin{verbatim} +\usepackage{xr-hyper} +\usepackage{hyperref} +\externaldocument[V1-]{volume1} +... +... the \nameref{V1-introduction})... +\end{verbatim} +\end{quote} +and the name reference will appear as an active link to the +``introduction'' chapter of \File{volume1.pdf}. + +To link to a \acro{PDF} document on the Web, for which you happen to +have the .aux file, write: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\usepackage{xr-hyper} +\usepackage{hyperref} +\externaldocument[V1-]{volume1}[http://mybook.com/volume1.pdf] +... +... the \nameref{V1-introduction})... +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\usepackage{xr-hyper} +\usepackage{hyperref} +\externaldocument[V1-]{volume1}% + [http://mybook.com/volume1.pdf] +... +... the \nameref{V1-introduction})... +\end{verbatim} +\end{narrowversion} +\end{quote} +Heiko Oberdiek's experimental \Package{zref} bundle includes a +hyper-crossreferencing mechanism using its \Package{zref-xr} module. +Usage is closely modelled on \Package{xr} and \Package{xr-hyper}; a +trivial example (from a \Newsgroup{comp.text.tex} posting) is +\begin{quote} +\begin{verbatim} +\usepackage{zref-xr,zref-user} +\zexternaldocument*{xr02} +... +\zref{foo} +\end{verbatim} +\end{quote} +The module provides all the facilities of the older packages, and can +deal both with ``traditional'' \LaTeX{} labels and with +\Package{zref}'s style of labels. +\begin{ctanrefs} +\item[xr.sty]Distributed as part of \CTANref{2etools}[xr] +\item[xr-hyper.sty]Distributed with \CTANref{hyperref}[xr-hyper] +\item[zref \nothtml{\rmfamily\itshape}bundle]Distributed as part of + \CTANref{oberdiek}[zref] +\end{ctanrefs} + diff --git a/help/uk-tex-faq/faq-litprog.tex b/help/uk-tex-faq/faq-litprog.tex new file mode 100644 index 0000000000..e5ba9eb671 --- /dev/null +++ b/help/uk-tex-faq/faq-litprog.tex @@ -0,0 +1,81 @@ +% $Id: faq-litprog.tex,v 1.3 2012/11/24 10:56:03 rf10 Exp $ + +\section{Literate programming} + +\Question[Q-lit]{What is Literate Programming?} + +Literate programming is the combination of documentation and source +together in a fashion suited for reading by human beings. +In general, literate programs combine source +and documentation in a single file. Literate programming tools then +parse the file to produce either readable documentation or compilable +source. The \acro{WEB} style of literate programming was created by +D.~E.~Knuth during the development of \TeX{}. + +\htmlignore +The ``\Qref*{documented \LaTeX{}}{Q-dtx}'' style of programming +\endhtmlignore +\begin{htmlversion} + The ``\Qref{documented \LaTeX{}}{Q-dtx}'' style of programming +\end{htmlversion} +is regarded by some as a form of literate programming, though it only +contains a subset of the constructs Knuth used. + +Discussion of literate programming is conducted in the newsgroup +\Newsgroup{comp.programming.literate}, whose \acro{FAQ} is stored on +\acro{CTAN}. Another good source of information is +\URL{http://www.literateprogramming.com/} +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Literate Programming \acro{FAQ}]% + \CTANref{LitProg-FAQ} +\end{ctanrefs} +\LastEdit{2012-11-16} + +\Question[Q-webpkgs]{\acro{WEB} systems for various languages} + +\TeX{} is written in the programming language \acro{WEB}; \acro{WEB} +is a tool to implement the concept of ``literate programming''. +Knuth's original implementation will be in any respectable +distribution of \TeX{}, but the sources of the two tools +(\ProgName{tangle} and \ProgName{weave}), together with a manual +outlining the programming techniques, may be had from \acro{CTAN}. + +\acro{\ProgName{CWEB}}, by Silvio Levy, is a \acro{WEB} for \acro{C} programs. + +\acro{\ProgName{FWEB}}, by John Krommes, is a version for Fortran, +Ratfor,\acro{C}, \acro{C}++, working with \latex{}; it was derived +from \ProgName{CWEB}. + +Spidery \acro{WEB}, by Norman Ramsey, supports many +languages including Ada, \texttt{awk}, and \acro{C} +and, while not in the public domain, is usable without charge. It is +now superseded by \ProgName{noweb} (also by Norman Ramsay) which +incorporates the lessons learned in implementing spidery \acro{WEB}, +and which is a simpler, equally powerful, tool. + +\ProgName{Scheme}\acro{\ProgName{WEB}}, by John Ramsdell, is a Unix filter that +translates Scheme\acro{WEB} into \LaTeX{} source or Scheme source. + +\acro{\ProgName{APLWEB}} is a version of \acro{WEB} for \acro{APL}. + +\ProgName{FunnelWeb} is a version of \acro{WEB} that is language independent. + +Other language independent versions of \acro{WEB} are \ProgName{nuweb} (which +is written in \acro{ANSI} \acro{C}). + +\ProgName{Tweb} is a \acro{WEB} for \plaintex{} macro files, using +\ProgName{noweb}. +\begin{ctanrefs} +\item[aplweb]\CTANref{aplweb} +\item[cweb]\CTANref{cweb} +\item[funnelweb]\CTANref{funnelweb} +\item[fweb]\CTANref{fweb} +\item[noweb]\CTANref{noweb} +\item[nuweb]\CTANref{nuweb} +\item[schemeweb]\CTANref{schemeweb} +\item[spiderweb]\CTANref{spiderweb} +\item[tangle]\CTANref{web} +\item[tweb]\CTANref{tweb} +\item[weave]\CTANref{web} +\end{ctanrefs} + diff --git a/help/uk-tex-faq/faq-mac-prog.tex b/help/uk-tex-faq/faq-mac-prog.tex new file mode 100644 index 0000000000..e9a881ba2a --- /dev/null +++ b/help/uk-tex-faq/faq-mac-prog.tex @@ -0,0 +1,3724 @@ +% $Id: faq-mac-prog.tex,v 1.35 2014/01/28 18:17:36 rf10 Exp rf10 $ + +\section{Macro programming} + +\subsection{``Generic'' macros and techniques} + +\Question[Q-linmacnames]{Non-letters in macro names} + +New \LaTeX{} users are often suprised that macro definitions +containing non-letters, such as +\begin{quote} +\begin{verbatim} +\newcommand{\cul8r}{Goodbye!} +\end{verbatim} +\end{quote} +fail to compile. The reason is that the \TeX{} macro language, unlike +most programming languages, allows % ! loin break (twatbili) +\Qref*{nothing but letters in macro names}{Q-whatmacros}. + +There are a number of techniques for defining a macro with a name like +\csx{cul8r}. Unfortunately, none of the techniques is particularly +good: +\begin{enumerate} +\item Use \csx{csname}\dots\csx{endcsname} to define and invoke the + macro: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\expandafter\newcommand + \csname cul8r\endcsname{Goodbye!} +I said, ``\csname cul8r\endcsname''. +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\expandafter\newcommand\csname cul8r\endcsname{Goodbye!} +I said, ``\csname cul8r\endcsname''. +\end{verbatim} +\end{wideversion} +\end{quote} + \begin{description} + \item[Pro:] No unexpected side effects + \item[Con:] So verbose as to be unusable + \end{description} +\item Define a ``special-command generator'', and use the resulting + commands: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\newcommand{\DefineRemark}[2]{% + \expandafter\newcommand + \csname rmk-#1\endcsname{#2}% +} +\newcommand{\Remark}[1]{% + \csname rmk-#1\endcsname% +} +... +\DefineRemark{cul8r}{Goodbye!} +... +I said, ``\Remark{cul8r}''. +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\newcommand{\DefineRemark}[2]{% + \expandafter\newcommand\csname rmk-#1\endcsname{#2}% +} +\newcommand{\Remark}[1]{\csname rmk-#1\endcsname} +... +\DefineRemark{cul8r}{Goodbye!} +... +\Remark{cul8r} +\end{verbatim} +\end{wideversion} +\end{quote} + \begin{description} + \item[Pro:] Straightforward to use, not too untidy + \item[Con:] It's hardly doing what we set out to do (experts will + see that you are defining a macro, but others likely won't) + \end{description} +\item Convince \TeX{} that ``\texttt{8}'' is a letter: +\begin{quote} +\begin{verbatim} +\catcode`8 = 11 +\newcommand{\cul8r}{Goodbye!} +I said, ``\cul8r''. +\end{verbatim} +\end{quote} + \begin{description} + \item[Pro:] \csx{cul8r} can be used directly + \item[Con:] Likely to break other uses of ``\texttt{8}'' (such as + numbers or dimensions; so + \cmdinvoke{setlength}{\csx{paperwidth}}{8in} tells us: +\begin{quote} +\begin{verbatim} +! Missing number, treated as zero. + + 8 +\end{verbatim} +\end{quote} + \end{description} + As a general rule, changing category codes is something to use + \emph{in extremis}, after detailed examination of options. It is + conceivable that such drastic action could be useful for you, but + most ordinary users are well advised not even to try such a + technique. +\item Define a macro \csx{cul} which must always be followed by + ``\texttt{8r}'': +\begin{quote} +\begin{verbatim} +\def\cul8r{Goodbye!} +I said, ``\cul8r''. +\end{verbatim} +\end{quote} + \begin{description} + \item[Pro:] \csx{cul8r} can be used directly + \item[Con~\#1:] Breaks if \csx{cul} is followed by anything other + than ``\texttt{8r}'', with a confusing diagnostic~--- + \csx{cul99} produces: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +! Use of \cul doesn't match its definition. +<*> \cul9 + 9 +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +! Use of \cul doesn't match its + definition. +<*> \cul9 + 9 +\end{verbatim} +\end{narrowversion} +\end{quote} + (which would confuse someone who hadn't even realised there + \emph{was} a definition of \csx{cul} in the document). + \item[Con~\#2:] Silently redefines existing \csx{cul}, if any; + as a result, the technique cannot be used to define both a + \csx{cul8r} and, say, a \csx{cul123} macro in the same + document. + \end{description} +\end{enumerate} +Technique~3 is in fact commonly used~--- in a limited form~--- within +most \LaTeX{} packages and within \LaTeX{} itself. The convention is to +use ``\texttt{@}'' within the names of internal macros to hide them +from the user and thereby prevent naming conflicts. To this end, +\LaTeX{} automatically treats ``\texttt{@}'' as a letter while +processing classes and packages and as a non-letter while processing +the user's document. The key to this technique is the separation: +internally a non-letter is used for macro names, and the user doesn't +see anything of it, while the status remains ``frozen'' in all the +definitions created within the class or package. See % ! line break +\Qref[question]{\csx{@} and \texttt{@} in macro names}{Q-atsigns} for +more information. + +Note that analogous use of technique~3 in this example would give us +\begin{quote} +\begin{verbatim} +\begingroup + \catcode`8 = 11 + \gdef\cul8r{Goodbye!} + \gdef\later{\cul8r} +\endgroup +I said, ``\later''. +\end{verbatim} +\end{quote} +which works, but rather defeats the object of the exercise. +(\csx{later} has the ``frozen'' catcode for `8', even though the value +has reverted to normal by the time it's used; note, also, the use of +the primitive command \csx{gdef}, since \csx{newcommand} can't make a +macro that's available outside the group.) + +\emph{Recommendation}: Either choose another mechanism (such as +\csx{DefineRemark} above), or choose another name for your macro, one +that contains only ordinary letters. A common approach is to use +roman numerals in place of arabic ones: +\begin{quote} +\begin{verbatim} +\newcommand{\culVIIIr}{Goodbye!} +\end{verbatim} +\end{quote} +which rather spoils the intent of the joke implicit in the example +\csx{cul8r}! +\LastEdit*{2009-06-03} + +\Question[Q-repeat-num]{Repeating a command \emph{n} times} + +\tex{} was \emph{not} designed as a programming language, but there +are occasions when you want to repeat some part of your document, just +as parts of programs need to run several times. An obvious +example is \tex{}-based drawing: \latex{}'s \environment{picture} +environment and \Package{pgf} (at least) provide repeat facilities~--- +they are useful for drawing repeating patterns. As a result, +``common'' programming techniques often have to be emulated using +obscure macro \tex{}niques. + +This answer deals with repeating an operation a given number of times; +repeating operations once for each of a set of objects is dealt with +in the answer \Qref*{repeating ``over a set''}{Q-repeat-set}. + +Plain \tex{} itself provides a \csx{loop} \dots{} \csx{repeat} +contruct, which enables you to repeat a command (or set of commands). +The syntax is simple enough, but it use of \tex{} conditionals is +different enough that many people find it confusing. +\begin{quote} +\begin{verbatim} +\newcount\foo +\foo=10 +\loop + \message{\the\foo} + \advance \foo -1 +\ifnum \foo>0 +\repeat +\end{verbatim} +\end{quote} +In this slightly tricky code, \csx{loop} starts the construct ended by +\csx{repeat}, but \csx{repeat} also ``serves as'' the \csx{fi} to the +\csx{ifnum}. The loop above prints the numbers from 10 down to 1 via +\tex{} \csx{message} (i.e., on the console output). + +The \Package{multido} package is also `generic' (usable both in +\plaintex{} and latex{}); it defines a command \csx{multido} with +three arguments: +\begin{quote} + % ! line break + \cmdinvoke{multido}{\meta{variables}}{\meta{repetitions}}{\meta{stuff to repeat}} +\end{quote} +When the macro is executing, the \meta{stuff to repeat} gets executed +\meta{repetitions} times; the \meta{variables} gives a list of +variables that can be used in \meta{stuff}. Each variable is a +composite of a command sequence and how it varies; so a variable +``\csx{iz}\texttt{=2+4}'' sets \csx{iz} to \texttt{2} first time +around, then \texttt{6} and \texttt{10} in the next two iterations, +and so on. (The variable \csx{iz} is an integer; variables with other +initial letters represent different data types.) + +% [do these things matter?] +% The \latexe{} kernel has commands \csx{@for} and \csx{@tfor}. +% +% The \latex{}3 kernel includes the command |\prg_replicate:nn|; this +% information isn't much use unless you're a \latex{}3 user. +Both current \latex{} and (experimental) \latex{}3 have iteration +commands for internal use and for package writers; their use is +probably not recommendable. + +The \latex{} distribution package \Package{ifthen} offers the macro +\csx{whiledo}: +\begin{quote} +\begin{verbatim} +\newcounter{ct} +... +\setcounter{ct}{1} +\whiledo {\value{ct} < 5}% +{% + \thect\ + \stepcounter {ct}% +} +\end{verbatim} +\end{quote} + +The \Package{forloop} package provides nothing but \csx{forloop}: +\begin{quote} +\begin{verbatim} +\newcounter{ct} +... +\forloop{ct}{1}{\value{ct} < 5}% +{% + \thect\ +} +\end{verbatim} +\end{quote} +as you can see, the arguments are counter, starting value and +termination condition; an optional argument supplies a step value +(default step is 1). + +The \latex{} \environment{picture} environment has a simple command +for repeated drawing: +\begin{quote} +\begin{verbatim} +\multiput(x,y)(xstep,ystep){n}{obj} +\end{verbatim} +\end{quote} +which places \meta{obj} (intended to be a bit of picture) +\meta{n} times at positions (\meta{x}, \meta{y}), +(\meta{x}+\meta{xstep}, \meta{y}+\meta{ystep}), +(\meta{x}+2\meta{xstep}, \meta{y}+2\meta{ystep}) and so on, adding the +displacement again each time. The command was designed for use in +\environment{picture}, but it makes no check, and may even be used to +provide eccentric typesetting in a ``regular'' sentence, such as: +\begin{quote} +\begin{verbatim} +Here \multiput(0,0)(1,1){3}{we} are again. +\end{verbatim} +\end{quote} +with predictable (if not actually desirable) effect. It may be used +with nothing but an iterative calculation in the braced argument, in +which case its graphical capabilities have no effect. + +The \Package{pgffor} package, which is part of the % ! line break +\Qref*{\Package{pgf} distribution}{Q-drawing}, also +provides iterations to support the needs of graphics. Its syntax is +in the style of common programming languages: +\begin{quote} +\begin{verbatim} +\usepackage{pgffor} +\newcommand{\cmd}{-x-} +... +\foreach \n in {1,...,4}{\cmd{}} +\end{verbatim} +\end{quote} +typesets ``\texttt{-x-\relax-x-\relax-x-\relax-x-}'' + +The \csx{foreach} command has the potential drawback that its repeated +unit is executed in a group, so that any calculations done within the +loop are lost (unless their result is made \csx{global}); however, it +does not `build in' its graphical origins (as \csx{multiput} does) so +its potential outside its own graphics environment ``home'' is more +clear. +% +%% can't convince myself that \naturalloop helps with anything +% The \Package{etextools} package provides \csx{naturalloop}, which +% repeats material according to a count argument that you give it. +% +%% this stuff removed, following the observation that the package's use +%% of \repeat is inconsistent with both plain tex and latex; pity -- +%% it's a nice package apart from being totally unusable :-( +% +% The \Package{repeat} package provides a \csx{for} command that +% encompasses a lot of the above; for example: +% \begin{quote} +% \begin{verbatim} +% \input repeat +% \newcount\foo +% \repeat +% \for{foo} \from{1} \to{10} \do{x*} +% \end{verbatim} +% \end{quote} +% which will typeset \texttt{x*} ten times (the count \csx{foo} will +% end up with value 11). +% +% Note the \plaintex{} usage: \Package{repeat} is ``generic'' and +% defines commands that are comfortable to \plaintex{} users, while +% remaining usable by \latex{} users. +% +% The complete syntax is given in the meta-expression: +% \begin{quote} +% \begin{verbatim} +% \repeat +% \for{var} +% \from{} \by{} \to{} +% \downto{} \until{} \while{} +% \do{} +% \end{verbatim} +% \end{quote} +% You must choose a consistent set of \csx{from}, \csx{by}, \csx{to}, +% \csx{downto}, \csx{until} and \csx{while} (none is actually required, +% but of course any loop has to have \emph{some}). + +% In summary, while it is certainly possible to write this sort of code as +% a private project (for example, using the \etex{} \csx{numexpr} +% primitive), one cannot deny that plenty of choice for the task is +% readily available. +% +% (the above ignore Pic\tex{}, which almost certainly has similar +% functions, but in the absence of a manual\dots{}) +\begin{ctanrefs} +%\item[etextools.sty]\CTANref{etextools} +\item[forarray.sty]\CTANref{forarray} +\item[forloop.sty]\CTANref{forloop} +\item[ifthen.sty]Distributed as part of \CTANref{latex} +\item[multido.sty]\CTANref{multido} +\item[pgffor.sty]Distributed as part of \CTANref{pgf} +%\item[repeat.tex]\CTANref{repeat} +\end{ctanrefs} +\LastEdit{2013-03-01} + +\Question[Q-repeat-set]{Repeating something for each `thing' in a set} + +As another question % line break! +(\Qref*{repeating something a given number of times}{Q-repeat-num}) +explains, \tex{} is not explicitly designed for `regular' programming +operations. As a result, we must resort to arcane tricks to do the +seemingly simple task of repeating an operation. This answer deals +with repeating an operation for each of a given set of objects. + +The \Package{etoolbox} package provides iteration over a +comma-separated list of items, in its \csx{docsvlist} and +\csx{forcsvlist} commands; they are well-described in the package +documentation. The \Package{datatool} package manages ``databases'' +(of its own definition) and you may iterate over entries in such a +database using the command \csx{DTLforeach}. + +The \Package{forarray} package defines its own ``list'' and ``array'' +structures, together with commands \csx{ForEach} and \csx{ForArray} +which enable a command to be executed for each element in a list or +array, respectively. + +The \Package{dowith} defines a pair of macros \csx{DoWith} and +\csx{StopDoing} that process each ``thing'' between them; a trivial +example of use is: +\begin{quote} +\begin{verbatim} +\usepackage{dowith} +... +\begin{document} +\newcommand{\foo}[1]{\message{#1+} +\DoWith\foo a{BBB}c\StopDoing +\end{verbatim} +\end{quote} +which produces terminal output: +\begin{quote} +\begin{verbatim} +a+ BBB+ c+ +\end{verbatim} +\end{quote} +so, the macros have found 3 ``things'', including one with braces +around it. (The interpolated spaces come from the primitive +\csx{message} command.) + +The only constraint is that all commands in the enclosed stuff are +``expandable'' (which means, for example, that you may not use +commands with optional arguments). + +From the same stable (as \Package{dowith}) comes the package +\Package{commado}, that provides commands \csx{DoWithCSL} (apply a +command to each element of a comma-separated-variable list) and +\csx{DoWithBasesExts} (apply a command to each of a set of files, +defined by base name and ``extension''). Use of these \csx{DoWith*} +macros is also expandable (if the command applied to the list elements +is itself expandable). +\begin{ctanrefs} +\item[commado.sty]\CTANref{commado} +\item[datatool.sty]\CTANref{datatool} +\item[dowith.sty]\CTANref{dowith} +\item[etoolbox.sty]\CTANref{etoolbox} +\item[filesdo.sty]Distributed with \CTANref{commado} +\end{ctanrefs} +\LastEdit{2013-02-20} + +%See \url{http://tex.stackexchange.com/questions/16189/repeat-command-n-times} +%for details (do i need this any more?) + +\Question[Q-findwidth]{Finding the width of a letter, word, or phrase} + +Put the word in a box, and measure the width of the box. For example, +\begin{quote} +\begin{verbatim} +\newdimen\stringwidth +\setbox0=\hbox{hi} +\stringwidth=\wd0 +\end{verbatim} +\end{quote} +Note that if the quantity in the \csx{hbox} is a phrase, the actual +measurement only approximates the width that the phrase will occupy in +running text, since the inter-word glue can be adjusted in paragraph +mode. + +The same sort of thing is expressed in \LaTeX{} by: +\begin{quote} +\begin{verbatim} +\newlength{\gnat} +\settowidth{\gnat}{\textbf{small}} +\end{verbatim} +\end{quote} +This sets the value of the length command |\gnat| to the width of ``small'' +in bold-face text. + +\Question[Q-patch]{Patching existing commands} + +In the general case (possibly sticking something in the middle of an +existing command) this is difficult. However, the common requirement, +to add some code at the beginning or the end of an existing command, +is conceptually quite easy. Suppose we want to define a version of a +command that does some small extension of its original definition: we +would naturally write: +\begin{quote} +\begin{verbatim} +\renewcommand{\splat}{\mumble\splat} +\end{verbatim} +\end{quote} +However, this would not work: a call to \csx{splat} would execute +\csx{mumble}, and then call the redefined \csx{splat} again; this is an +`unterminated recursion', that will quickly exhaust \TeX{}'s memory. + +Fortunately, the \TeX{} primitive \csx{let} command comes to our +rescue; it allows us to take a ``snapshot'' of the current state of a +command, which we can then use in the redefinition of the command. +So: +\begin{quote} +\begin{verbatim} +\let\OldSmooth\smooth +\renewcommand{\smooth}{\mumble\OldSmooth} +\end{verbatim} +\end{quote} +effects the required patch, safely. Adding things at the end of a +command works similarly. + +If \csx{smooth} takes arguments, one must pass them on: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\let\OldSmooth\smooth +\renewcommand{\smooth}[2]{\mumble\OldSmooth{#1}{#2}} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\let\OldSmooth\smooth +\renewcommand{\smooth}[2]% + {\mumble\OldSmooth{#1}{#2}} +\end{verbatim} +\end{narrowversion} +\end{quote} + +The situation is more difficult still if \csx{smooth} takes an +optional argument; the structure of the command is so complex that the +simple \csx{let} command does not retain the necessary detail. In +this case, we need the \Package{letltxmacro} package which knows about all +sorts of \latex{} commands and how to replicate them. Suppose we have +a command defined as: +\begin{quote} +\begin{verbatim} +\newcommand{\rough}[1][\default]{...} +\end{verbatim} +\end{quote} +with an optional argument (substituted with \csx{default} if it's not +present) as well as an ordinary one. In this case we copy it using +\begin{quote} +\begin{verbatim} +\LetLtxMacro{\NewRough}{\rough} +\end{verbatim} +\end{quote} +and then repeat the technique we had above, with one extension: +\begin{quote} +\begin{verbatim} +\renewcommand{\rough}[1][\newdef]% + {\mumble\OldRough[{#1}]{#2}} +\end{verbatim} +\end{quote} +We see here that (for tedious argument-matching reasons) it is +necessary to provide braces arround the optional argument that is +being passed on. + +The general case may be achieved in two ways. First, one can use the +\LaTeX{} command \csx{CheckCommand}; this compares an existing command +with the definition you give it, and issues a warning if two don't +match. Use is therefore: +\begin{quote} + |\CheckCommand{\complex}{|\meta{original definition}|}|\\ + |\renewcommand{\complex}{|\meta{new definition}|}| +\end{quote} +This technique is obviously somewhat laborious, but if the original +command comes from a source that's liable to change under the control +of someone else, it does at least warn you that your patch is in +danger of going wrong. + +Otherwise, \LaTeX{} users may use one of the \Package{patchcmd}, +\Package{ted} or \Package{etoolbox} packages. + +The \Package{patchcmd} package addresses a slightly simpler task, by +restricting the set of commands that you may patch; you mayn't patch +any command that has an optional argument, though it does deal with +the case of commands defined with \csx{DeclareRobustCommand}. The +package defines a \csx{patchcommand} command, that takes three +arguments: the command to patch, stuff to stick at the front of its +definition, and stuff to stick on the end of its definition. So, +after +\begin{quote} +\begin{verbatim} +\def\b{b} +\patchcmd\b{a}{c} +\end{verbatim} +\end{quote} +we will have a new version of \csx{b} defined as ``\texttt{abc}''. + +The \Package{ted} package is a `token list editor', and provides a +command \csx{substitute} which will patch the +contents of a macro, putting the result in a token-list, or +(in the form \csx{Substitute*}) using the result to (re)define a +macro. The following example defines a simple macro, and then changes +its definition: +\begin{quote} +\begin{verbatim} +\newcommand{\myfont}% + {\Large\sffamily\selectfont} +\Substitute*[\renewcommand{\myfont}]{\myfont}% + {\Large\sffamily}{\huge\itshape} +\end{verbatim} +\end{quote} +The macro's definition is now: +\begin{quote} +\begin{verbatim} +\huge\itshape\selectfont +\end{verbatim} +\end{quote} + +The package also offers a command \csx{ShowTokens}, which shows the +content of its argument, one token to a line, with details of the +token's category code, etc. This is recommended as a debugging tool. + +The \Package{etoolbox} package (which provides user access to \eTeX{}'s +programming facilities) provides a command \csx{patchcmd} which is +very similar to \csx{Substitute}, except that it only replaces a +single instance of the token(s) in its search pattern. Since not all +commands may be patched in this way, \csx{patchcmd} takes extra +arguments for \emph{success} and \emph{failure} cases. The +package also provides commands that prepend (\csx{pretocmd}) or append +(\csx{apptocmd}) to the definition of a command. Not all commands may +be patched in this way; the package provides a command +\csx{ifpatchable} which checks the prerequisites, and checks that the +target command's body does indeed include the patch string you propose +to use. (The command \csx{ifpatchable*} omits the test on the patch +string.) + +The \Package{regexpatch} package deals with cases that are +inaccessible with \Package{etoolbox}; it uses the regular expression +(pattern-matching) package \Package{l3regex} from the \latex{}3 +distribution to find the code you need to patch. The package also +``knows about'' robust commands and about +\Qref*{\Package{biblatex}}{Q-biblatex}. + +Finally, we'll briefly consider a package that is (just about) +usable, but not really recommendable. \Package{Patch} gives you an +ingenious (and difficult to understand) mechanism, and comes as an +old-style \LaTeX{} documented macro file, which can no longer be +processed to \Qref*{produce formatted documentation, etc.\@}{Q-install-doc}. +Fortunately, the file (\File{patch.doc}) may be input directly, and +``documentation'' may found by reading the source of the package. +Roughly speaking, one gives the command a set of instructions +analogous to \ProgName{sed} substitutions, and it regenerates the +command thus amended. Unless you can't do your job any other way, +\Package{patch} is best avoided. +\begin{ctanrefs} +\item[etoolbox.sty]\CTANref{etoolbox} +\item[l3regex.sty]Distributed as part of \CTANref{l3experimental}[l3regex] +\item[letltxmacro.sty]Distributed as part of \CTANref{oberdiek}[letltxmacro] +\item[patch.doc]\CTANref{patch} +\item[patchcommand.sty]\CTANref{patchcmd} +\item[regexpatch.sty]\CTANref{regexpatch} +\item[ted.sty]\CTANref{ted} +\end{ctanrefs} +\LastEdit{2012-12-21} + +\Question[Q-compjobnam]{Comparing the ``job name''} + +The token \csx{jobname} amusingly produces a sequence of characters +whose category code is 12 (`other'), regardless of what the characters +actually are. Since one inevitably has to compare a macro with the +contents of another macro (using \csx{ifx}, somewhere) one needs to +create a macro whose expansion looks the same as the expansion of +\csx{jobname}. We find we can do this with \csx{meaning}, if we strip +the ``\csx{show} command'' prefix. + +The full command looks like: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\def\StripPrefix#1>{} +\def\jobis#1{FF\fi + \def\predicate{#1}% + \edef\predicate{\expandafter\StripPrefix\meaning\predicate}% + \edef\job{\jobname}% + \ifx\job\predicate +} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\def\StripPrefix#1>{} +\def\jobis#1{FF\fi + \def\predicate{#1}% + \edef\predicate{\expandafter\StripPrefix + \meaning\predicate}% + \edef\job{\jobname}% + \ifx\job\predicate +} +\end{verbatim} +\end{narrowversion} +\end{quote} +And it's used as: +\begin{quote} +\begin{verbatim} +\if\jobis{mainfile}% + \message{YES}% +\else + \message{NO}% +\fi +\end{verbatim} +\end{quote} +Note that the command \csx{StripPrefix} need not be defined if you're +using \LaTeX{}~--- there's already an % line break! +\Qref*{internal command}{Q-atsigns} \csx{strip@prefix} that you can +use. + +\Question[Q-isitanum]{Is the argument a number?} + +\TeX{}'s own lexical analysis doesn't offer the macro programmer +terribly much support: while category codes will distinguish letters +(or what \TeX{} currently thinks of as letters) from everything else, +there's no support for analysing numbers. + +The simple-minded solution is to compare numeric characters with the +characters of the argument, one by one, by a sequence of direct tests, +and to declare the argument ``not a number'' if any character fails +all comparisons: +\begin{quote} +\begin{verbatim} +\ifx1#1 +\else\ifx2#1 +... +\else\ifx9#1 +\else\isanumfalse +\fi\fi...\fi +\end{verbatim} +\end{quote} +which one would then use in a tail-recursing macro to gobble an +argument. One could do slightly better by assuming (pretty safely) +that the digits' character codes are consecutive: +\begin{quote} +\begin{verbatim} +\ifnum`#1<`0 \isanumfalse +\else\ifnum`#1>`9 \isanumfalse + \fi +\fi +\end{verbatim} +\end{quote} +again used in tail-recursion. However, these forms aren't very +satisfactory: getting the recursion ``right'' is troublesome (it has a +tendency to gobble spaces in the argument), and in any case \TeX{} +itself has mechanisms for reading numbers, and it would be nice to use +them. + +Donald Arseneau's \Package{cite} package offers the following test +for an argument being a strictly positive integer: +\begin{quote} +\begin{verbatim} +\def\IsPositive#1{% + TT\fi + \ifcat_\ifnum0<0#1 _\else A\fi +} +\end{verbatim} +\end{quote} +which can be adapted to a test for a non-negative integer thus: +\begin{quote} +\begin{verbatim} +\def\IsNonNegative{% + \ifcat_\ifnum9<1#1 _\else A\fi +} +\end{verbatim} +\end{quote} +or a test for any integer: +\begin{quote} +\begin{verbatim} +\def\gobbleminus#1{\ifx-#1\else#1\fi} +\def\IsInteger#1{% + TT\fi + \ifcat_\ifnum9<1\gobbleminus#1 _\else A\fi +} +\end{verbatim} +\end{quote} +but this surely stretches the technique further than is reasonable. + +If we don't care about the sign, we can use \TeX{} to remove the +entire number (sign and all) from the input stream, and then look at +what's left: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\def\testnum#1{\afterassignment\testresult + \count255=0#1 \end} +\def\testresult#1\end{\ifx\end#1\end} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\def\testnum#1{\afterassignment\testresult\count255=0#1 \end} +\def\testresult#1\end{\ifx\end#1\end\isanumtrue\else\isanumfalse\fi} +\end{verbatim} +\end{wideversion} +\end{quote} +(which technique is due to David Kastrup; the trick for avoiding the +errors, noted in an earlier version of this answer, was suggested by +Andreas Matthias). +In a later thread on the same topic, Michael Downes offered: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\def\IsInteger#1{% + TT\fi + \begingroup \lccode`\-=`\0 \lccode`+=`\0 + \lccode`\1=`\0 \lccode`\2=`\0 \lccode`\3=`\0 + \lccode`\4=`\0 \lccode`\5=`\0 \lccode`\6=`\0 + \lccode`\7=`\0 \lccode`\8=`\0 \lccode`\9=`\0 + \lowercase{\endgroup + \expandafter\ifx\expandafter\delimiter + \romannumeral0\string#1}\delimiter +} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\def\IsInteger#1{% + TT\fi + \begingroup \lccode`\-=`\0 \lccode`+=`\0 + \lccode`\1=`\0 \lccode`\2=`\0 + \lccode`\3=`\0 \lccode`\4=`\0 + \lccode`\5=`\0 \lccode`\6=`\0 + \lccode`\7=`\0 \lccode`\8=`\0 + \lccode`\9=`\0 + \lowercase{\endgroup + \expandafter\ifx\expandafter\delimiter + \romannumeral0\string#1}\delimiter +} +\end{verbatim} +\end{narrowversion} +\end{quote} +which relies on \csx{romannumeral} producing an empty result if its +argument is zero. Sadly, this technique has the unfortunate property +that it accepts simple expressions such as `\texttt{1+2-3}'; this +could be solved by an initial \csx{gobbleminus}-like construction. + +All the complete functions above are designed to be used in \TeX{} +conditionals written ``naturally''~--- for example: +\begin{quote} +\begin{verbatim} +\if\IsInteger{}% + % +\else + % +\fi +\end{verbatim} +\end{quote} +The \LaTeX{} \Class{memoir} class has an internal command of its own, +\cmdinvoke*{checkifinteger}{num}, that sets the conditional command +\csx{ifinteger} according to whether the argument was an integer. + +Of course, all this kerfuffle would be (essentially) void if there was +a simple means of ``catching'' \TeX{} errors. Imagining an +error-catching primitive \csx{ifnoerror}, one might write: +\begin{quote} +\begin{verbatim} +\def\IsInteger#1{% + TT% + \ifnoerror + \tempcount=#1\relax +% carries on if no error + \expandafter\iftrue + \else +% here if there was an error + \expandafter\iffalse + \fi +} +\end{verbatim} +\end{quote} +thus using \TeX{}'s own integer-parsing code to do the check. It's a +pity that such a mechanism was never defined (it could be that it's +impossible to program within \TeX{}!). +\begin{ctanrefs} +\item[memoir.cls]\CTANref{memoir} +\end{ctanrefs} + +\Question[Q-hash]{Defining macros within macros} + +The way to think of this is that |##| gets replaced by |#| in just the +same way that |#1| gets replaced by `whatever is the first argument'. + +So if you define a macro: +\begin{quote} +\begin{verbatim} +\newcommand\a[1]{+#1+#1+#1+} +\end{verbatim} +\end{quote} +or (using the \tex{} primitive \csx{def}): +\begin{quote} +\begin{verbatim} +\def\a#1{+#1+#1+#1+} +\end{verbatim} +\end{quote} +and use it as \cmdinvoke{a}{b}, +the macro expansion produces `+b+b+b+', +as most people would expect. + +However, if we now replace part of the macro: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\newcommand\a[1]{+#1+% + \newcommand\x[1]{xxx#1}} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\newcommand\a[1]{+#1+\newcommand\x[1]{xxx#1}} +\end{verbatim} +\end{wideversion} +\end{quote} +then \cmdinvoke{a}{b} will give us the rather odd +\begin{quote} + +b+\cmdinvoke{newcommand}{x}[1]{xxxb} +\end{quote} +so that the new \csx{x} ignores its argument. + +If we use the \tex{} primitive: +\begin{quote} +\begin{verbatim} +\def\a#1{+#1+\def\x #1{xxx#1}} +\end{verbatim} +\end{quote} +\cmdinvoke{a}{b} will expand to `+b+|\def\x b{xxxb}|'. This +defines \csx{x} to be a macro \emph{delimited} by |b|, and taking no +arguments, which is surely not what was intended! + +Actually, to define \csx{x} to take an argument, we need +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\newcommand\a[1]{+#1+% + \newcommand\x[1]{xxx##1}} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\newcommand\a[1]{+#1+\newcommand\x[1]{xxx##1}} +\end{verbatim} +\end{wideversion} +\end{quote} +or, using the \tex{} primitive definition: +\begin{quote} +\begin{verbatim} +\def\a#1{+#1+\def\x ##1{xxx##1}} +\end{verbatim} +\end{quote} +and \cmdinvoke{a}{b} will expand to +\begin{quote} + +b+|\def\x #1{xxx#1}| +\end{quote} +because |#1| gets replaced by `b' +and |##| gets replaced by |#|. + +To nest a definition inside a definition inside a definition then you +need |####1|, doubling the number of |#| signs; and at the next level +you need 8~|#|s each time, and so on. + +\Question[Q-spinmacro]{Spaces in macros} + +It's very easy to write macros that produce space in the typeset +output where it's neither desired nor expected. Spaces introduced by +macros are particularly insidious because they don't amalgamate with +spaces around the macro (unlike consecutive spaces that you +type), so your output can have a single bloated space that proves +to be made up of two or even more spaces that haven't amalgamated. +And of course, your output can also have a space where none was wanted +at all. + +Spaces are produced, inside a macro as elsewhere, by space or tab +characters, or by end-of-line characters. There are two basic rules +to remember when writing a macro: first, the rules for ignoring spaces +when you're typing macros are just the same as the rules that apply +when you're typing ordinary text, and second, rules for ignoring +spaces do \emph{not} apply to spaces produced while a macro is being +obeyed (``expanded''). + +Spaces are ignored in vertical mode (between paragraphs), at the +beginning of a line, and after a command name. Since sequences of +spaces are collapsed into one, it `feels as if' spaces are ignored if +they follow another space. Space can have syntactic meaning after +certain sorts of non-braced arguments (e.g., \emph{count} and +\emph{dimen} variable assignments in \plaintex{}) and after certain +control words (e.g., in \csx{hbox} |to|, so again we have instances +where it `feels as if' spaces are being ignored when they're merely +working quietly for their living. + +Consider the following macro, fairly faithfully adapted from one that +appeared on \Newsgroup{comp.text.tex}: +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +\newcommand{\stline}[1] + { \bigskip \makebox[2cm]{ \textbf{#1} } } +\end{verbatim} +\end{quote} +(the original appeared on a single line: it's wrapped here to fit in +the printed \acro{FAQ}'s narrow columns). + +\nothtml{\noindent} +\end{narrowversion} +\begin{wideversion} +\begin{quote} +\begin{verbatim} +\newcommand{\stline}[1]{ \bigskip \makebox[2cm]{ \textbf{#1} } } +\end{verbatim} +\end{quote} +\end{wideversion} +The macro definition contains five spaces: +\begin{itemize} +\item after the opening |{| of the macro body; this space will be + ignored, not because ``because the macro appears at the start of a + line'', but rather because the macro was designed to operate between + paragraphs +\item after \csx{bigskip}; this space will be ignored (while the macro + is being defined) because it follows a command name +\item after the |{| of the mandatory argument of \csx{makebox}; even + though this space will inevitably appear at the start of an output + line, it will \emph{not} be ignored +\item after the |}| closing the argument of \csx{textbf}; this space + will not be ignored, but may be overlooked if the argument is well + within the |2cm| allowed for it +\item after the |}| closing the mandatory argument of \csx{makebox}; + this space will not be ignored +\end{itemize} +The original author of the macro had been concerned that the starts of +his lines with this macro in them were not at the left margin, and +that the text appearing after the macro wasn't always properly +aligned. These problems arose from the space at the start of the +mandatory argument of \csx{makebox} and the space immediately after the +same argument. He had written his macro in that way to emphasise the +meaning of its various parts; unfortunately the meaning was rather +lost in the problems the macro caused. + +The principal technique for suppressing spaces is the use of +\texttt{\textpercent{}} characters: everything after a +\texttt{\textpercent{}} is ignored, even the end of line itself (so +that not even the end of line can contribute an unwanted space). The +secondary technique is to ensure that the end of line is preceded by a +command name (since the end of line behaves like a space, it will be +ignored following a command name). Thus the above command would be +written (by an experienced programmer with a similar eye to +emphasising the structure): +\begin{quote} +\begin{verbatim} +\newcommand{\stline}[1]{% + \bigskip + \makebox[2cm]{% + \textbf{#1}\relax + }% +} +\end{verbatim} +\end{quote} +Care has been taken to ensure that every space in the revised +definition is ignored, so none appears in the output. The revised +definition takes the ``belt and braces'' approach, explicitly dealing +with every line ending (although, as noted above, a space introduced +at the end of the first line of the macro would have been ignored in +actual use of the macro. This is the best technique, in fact~--- it's +easier to blindly suppress spaces than to analyse at every point +whether you actually need to. Three techniques were used to suppress +spaces: +\begin{itemize} +\item placing a \texttt{\textpercent{}} character at the end of a line + (as in the 1st, 3rd and 5th lines), +\item ending a line `naturally' with a control sequence, as in line 2, + and +\item ending a line with an `artificial' control sequence, as in line + 4; the control sequence in this case (\csx{relax}) is a no-op in many + circumstances (as here), but this usage is deprecated~--- a + \texttt{\textpercent{}} character would have been better. +\end{itemize} +Beware of the (common) temptation to place a space \emph{before} a +\texttt{\textpercent{}} character: if you do this you might as well omit +the \texttt{\textpercent{}} altogether. + +In ``real life'', of course, the spaces that appear in macros are far +more cryptic than those in the example above. The most common spaces +arise from unprotected line ends, and this is an error that +occasionally appears even in macros written by the most accomplished +programmers. + +\Question[Q-moren9]{How to break the 9-argument limit} + +If you think about it, you will realise that Knuth's command +definition syntax: +\begin{quote} +\begin{verbatim} +\def\blah#1#2 ... #9{} +\end{verbatim} +\end{quote} +is intrinsically limited to just 9 arguments. There's no direct way +round this: how would you express a 10th argument?~--- and ensure that +the syntax didn't gobble some other valid usage? + +If you really must have more than 9 arguments, the way to go is: +\begin{quote} +\begin{verbatim} +\def\blah#1#2 ... #9{% + \def\ArgI{{#1}}% + \def\ArgII{{#2}}% + ... + \def\ArgIX{{#9}}% + \BlahRelay +} +\def\BlahRelay#1#2#3{% + % arguments 1-9 are now in + % \ArgI-\ArgIX + % arguments 10-12 are in + % #1-#3 + % +} +\end{verbatim} +\end{quote} +This technique is easily extendible by concert pianists of the \TeX{} +keyboard, but is really hard to recommend. + +\LaTeX{} users have the small convenience of merely giving a number of +arguments in the \csx{newcommand} that defines each part of the +relaying mechanism: Knuth's restriction applies to \csx{newcommand} +just as it does to \csx{def}. However, \LaTeX{} users also have the +way out of such barbarous command syntax: the \Package{keyval} +package. With \Package{keyval}, and a bit of programming, one can +write really quite sophisticated commands, whose invocation might look +like: +\begin{quote} +\begin{verbatim} +\flowerinstance{species=Primula veris, + family=Primulaceae, + location=Coldham's Common, + locationtype=Common grazing land, + date=1995/04/24, + numplants=50, + soiltype=alkaline +} +\end{verbatim} +\end{quote} +The merit of such verbosity is that it is self-explanatory: the typist +doesn't have to remember that argument twelve is |soiltype|, and so +on: the commands may be copied from field notes quickly and +accurately. +\begin{ctanrefs} +\item[keyval.sty]Distributed as part of \CTANref{graphics}[keyval] +\end{ctanrefs} + + * faq-mac-prog.tex (q-keyval): tweak words about getoptk + +\Question[Q-keyval]{Key-value input for macros and package options} + +When we discussed % !line break +\Qref*{extending the number of arguments to a macro}{Q-moren9}, we +suggested that large numbers of arguments, distinguished only by their +position, aren't very kind to the user, and that a package such as +\Package{keyval} offers a more attractive user interface. We now +consider the packages that the macro programmer might use, to create +such a user interface. + +The simplest key-value processor (for \latex{}, at least) remains +\Package{keyval}; it has a command \csx{define@key} to declare a key +and a \emph{handler} to process it, and a macro \csx{setkeys} to offer +values to the handler of one or more keys. Thus: +\begin{quote} +\begin{verbatim} +\define@key{my}{foo}{Foo is #1\par} +\define@key{my}{bar}[99]{Bar is #1\par} +... +\setkeys{my}{foo=3,bar} +\end{verbatim} +\end{quote} +will produce output saying: +\begin{quote} + Foo is 3\par{} + Bar is 99 +\end{quote} +This has defined two keys `\texttt{foo}' and `\texttt{bar}' in family +`\texttt{my}', and then executed them, the first with argument +`\texttt{3}' and the second with no argument, so that the default +value of `\texttt{99}' is picked up. In effect, the two calls to +\csx{define@key} are simply defining commands, as (for example): +\begin{quote} +\begin{verbatim} +\newcommand{\KV@my@foo}[1]{Foo is #1} +\end{verbatim} +\end{quote} +(the definition of \csx{KV@my@bar} is similar, but trickier). The +command \csx{setkeys} knows how to find those commands when it needs to +process each key~--- it is easy to regurgitate the structure of the +command name, with family name (`\texttt{my}', here) after the first +`\texttt{@}', and the key name after the second `\texttt{@}'. (The +`\texttt{KV}' part is fixed, in \Package{keyval}.) + +These simple commands are enough, in fact, to process the botanical +example offered as replacement for multi-argument commands in % ! line break +\Qref[question]{the question mentioned above}{Q-moren9}, or the +optional arguments of the \csx{includegraphics} command of the +\Package{graphicx} package. (The last is, in fact, what +\Package{keyval} was designed to do.) + +However, we need more if we're to to have package options in +`key-value' form. Packages like \Package{hyperref} have enormously +complicated package options which need key-value processing at +\csx{ProcessOptions} time: \Package{keyval} can't do that on its own. + +Heiko Oberdiek's \Package{kvoptions} package comes to our help: it +enables the programmer to declare class or package options that +operate as key and value pairs. The package defines commands +\csx{DeclareBoolOption} for options whose value should be either +\emph{true} or \emph{false}, and \csx{DeclareStringOption} for all +other options that have a value. Keys are declared using +\Package{keyval} and may remain available for use within the document, +or may be `cancelled' to avoid confusion. If you have loaded +\Package{kvoptions}, the \LaTeX{} kernel's \csx{DeclareOption} becomes +\csx{DeclareVoidOption} (it's an option with no value), and +\csx{DeclareOption*} becomes \csx{DeclareDefaultOption}. + +Heiko also provides \Package{kvsetkeys} which is a more robust version +of \Package{setkeys}, with some of the rough edges made smoother. + +Hendri Adriaens' \Package{xkeyval} offers more flexibility than +the original \Package{keyval} and is more robust than the original, +too. Like \Package{kvoptions}, the package also has mechanisms to +allow class and package options in key-value form (macros +\csx{DeclareOptionX}, \csx{ExecuteOptionsX} and \csx{ProcessOptionsX}. +\Package{Pstricks} bundle packages use a \Package{xkeyval} derivative +called \Package{pst-xkey} for their own key-value manipulation. +% xkvview? (i think we can ignore xkvltxp for these purposes) + +The (widely-respected) \Package{pgf} graphics package has its own +key-value package called \Package{pgfkeys}. The documentation of the +package (part of the huge \Package{pgf} manual, in part 5, +``utilities'') contains a useful comparison with other key-value +systems; some notable differences are: +\begin{itemize} +\item key organisation: \Package{pgfkeys} uses a tree structure, while + \Package{keyval} and \Package{xkeyval} both associate keys with a family; +\item \Package{pgfkeys} supports multi-argument key code; and +\item \Package{pgfkeys} can support call-backs when an unknown key + appears (these things are called \emph{handlers}. +\end{itemize} +Keys are organized in a tree that is reminiscent of the Unix fille +tree. A typical key might be, \File{/tikz/coordinate system/x} or +just \File{/x}. When you specify keys you can provide the complete +path of the key, but you usually just provide the name of the key +(corresponding to the file name without any path) and the path is +added automatically. So a \csx{pgfkeys} command might be: +\begin{wideversion} +\begin{quote} +\begin{verbatim} +\pgfkeys{/my key=hello,/your keys/main key=something\strange, + key name without path=something else} +\end{verbatim} +\end{quote} +\end{wideversion} +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +\pgfkeys{/my key=hello, + /your keys/main key=something\strange, + key name without path=something else} +\end{verbatim} +\end{quote} +\end{narrowversion} +and for each key mentioned, the associated code will be executed. +\dots{} and that code is also set up using \csx{pgfkeys}: +\begin{quote} +\begin{verbatim} +\pgfkeys{/my key/.code=The value is '#1'.} +\end{verbatim} +\end{quote} +after which +\begin{quote} +\begin{verbatim} +\pgfkeys{/my key=hi!} +\end{verbatim} +\end{quote} +will produce just +\begin{quote} + The value is 'hi!'. +\end{quote} +The manual goes on, showing how to define a key with two arguments, +how to provide default value for a key, and how to define aliases for +particular key sequences (which are called ``styles''). All in all, +it seems a well thought-out system, offering a lot of flexibility that +isn't available with the other keys packages. However, there seems to +be no mechanism for using \Package{pgfkeys} keys as part of the +options of another package, in the way that \Package{kvoptions} does. + +The \Package{l3kernel} programming layer for \Qref*{\LaTeX{}3}{Q-LaTeX3} +includes the \Package{l3keys} module. Inspired by \Package{pgfkeys}, +it provides a keyval-based method for the programmer to create keys. +As with keyval and derivatives, \Package{l3keys} uses separate macros +for defining and setting keys. The package \Package{l3keys2e} makes +it possible for \latexe{} class and package +options to be processed using \Package{l3keys}. \Package{L3kernel} +code can be used within existing LaTeX2e documents, so +\Package{l3keys} is also available to the \latexe{} programmer `direct'. + +Another key-value system that's part of larger set of macros is +\Package{scrbase}, which uses the facilities of \Package{keyval} to +build a larger set of facilities, originally for use within the +\Class{KOMA-script} bundle. For English-speaking authors, there are +difficulties from the German-only documentation; however, from a +partial translation available to the author of this answer, a summary +is possible. The package may build on the facilities either of +\Package{kyeval} or of \Package{xkeyval}, and builds its functionality +on the structure of the `key family'. The user may define family +`members' and keys are defined relative to the members. (For example, +the package \Package{scrbase} is part of the \Class{KOMA-script} +bundle; so its keys are all members of the \Package{scrbase.sty} +family within the \Package{KOMA} family. The function +\csx{FamilyProcessOptions} allows the programmer to decode the options +of the package in terms of the package's key family. Note that there +is no special provision made for ``traditional'' package options, as +in the \Package{kvoptions} package. + +This brief summary was guided by input from two sources: a draft article +for \textsl{TUGboat} by Joseph Wright, and the partial translation of the +documentation of package \Package{scrbase} prepared by Philipp +Stephani. + +All the above are (at least) aimed at \latex{} programming; there is +one package, \Package{getoptk}, aimed at the \plaintex{} programmer. +\Package{Getoptk} uses syntax inspired by that offered by \tex{} +primitives such as \csx{hrule} and \csx{hbox}, so we are offered +syntax such as: +\begin{wideversion} +\begin{quote} +\begin{verbatim} +\begindisplay file {chapter1} literal offset 20pt +\end{verbatim} +\end{quote} +(taken from the package manual). +\end{wideversion} +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +\begindisplay file {chapter1} % + literal offset 20pt +\end{verbatim} +\end{quote} +(taken from the package manual, but wrapped to fit into narrow +columns). +\end{narrowversion} + +There are (we know) people who would swear that such syntax is +wonderful (the present author wouldn't), but the package earns its +place as the only stand-alone key-value macros that will work in \plaintex{}. +\begin{ctanrefs} +\item[getoptk.tex]\CTANref{getoptk} +\item[keyval.sty]Distributed as part of \CTANref{graphics}[keyval] +\item[kvoptions.sty]Distributed as part of \CTANref{oberdiek}[kvoptions] +\item[kvsetkeys.sty]Distributed as part of \CTANref{oberdiek}[kvsetkeys] +\item[l3keys.sty]Distributed as part of \CTANref{l3kernel} +\item[l3keys2e.sty]Distributed as part of \CTANref{l3packages} +\item[pgfkeys.sty]Distributed as part of \CTANref{pgf} +\item[scrbase.sty]Distributed as part of \CTANref{koma-script} +\item[xkeyval.sty]\CTANref{xkeyval} +\end{ctanrefs} +\LastEdit{2011-09-06} + +\Question[Q-activechars]{Defining characters as macros} + +Single characters can act as macros (defined commands), and both +\plaintex{} and \LaTeX{} define the character +``\texttt{\textasciitilde}'' as a ``non-breakable space''. A +character is made definable, or ``active'', by setting its +\emph{category code} (catcode) to be \csx{active} (13): +\begin{quote} +\begin{verbatim} +\catcode`\_=\active +\end{verbatim} +\end{quote} +Any character could, in principle, be activated this way and defined +as a macro: +\begin{quote} +\begin{verbatim} +\def_{\_} +\end{verbatim} +\end{quote} +which could be characterised as an over-simple answer to % ! line break +\Qref[question]{using underscores}{Q-underscore}. However, you must be +wary: whereas people expect an active tilde, other active characters +may be unexpected and interact badly with other macros. Furthermore, +by defining an active character, you preclude the character's use for +other purposes, and there are few characters ``free'' to be subverted +in this way. + +To define the character ``\texttt{z}'' as a command, one would say something +like: +\begin{quote} +\begin{verbatim} +\catcode`\z=\active +\def z{Yawn, I'm tired}% +\end{verbatim} +\end{quote} +and each subsequent ``\texttt{z}'' in the text would become a +yawn. This would be an astoundingly bad idea for most documents, but +might have special applications. (Note that, in ``\csx{def}\texttt{ + z}'', ``\texttt{z}'' is no longer interpreted as a letter; the space +is therefore not necessary~--- ``\csx{defz}'' would do; we choose to +retain the space, for what little clarity we can manage.) +Some \LaTeX{} packages facilitate such definitions. For example, the +\Package{shortvrb} package with its \csx{MakeShortVerb} command. + +\TeX{} uses category codes to interpret characters as they are read +from the input. +% beware line break +\emph{Changing a catcode value will not affect characters that have already been read}. +Therefore, it is best if characters have fixed category codes for the +duration of a document. If catcodes are changed for particular +purposes (the \csx{verb} command does this), then the altered +characters will not be interpreted properly when they appear in the +argument to another command (as, for example, in +% beware line-break +\htmlonly{``}\Qref[question]{\csx{verb} in command arguments}{Q-verbwithin}\htmlonly{''}). +An exemplary case is the \Package{doc} package, which processes .dtx +files using the \Package{shortvrb} package to define +\texttt{\textbar\dots{}\textbar} as a shorthand for +\csx{verb}\texttt{\textbar\dots{}\textbar}. But \texttt{\textbar} is +also used in the preambles of tabular environments, so that tables in +\extension{dtx} files can only have vertical line separation between +columns by employing special measures of some sort. + +Another consequence is that catcode assignments made +in macros often don't work as expected % beware linebreak +(\htmlonly{see ``}\Qref{Active characters in command arguments}{Q-actinarg}\htmlonly{''}). +For example, the definition +\begin{quote} +\begin{verbatim} +\def\mistake{% +\catcode`_=\active +\def_{\textunderscore\-}% +} +\end{verbatim} +\end{quote} +does not work because it attempts to define an ordinary \texttt{\_} character: +When the macro is used, the category change does not apply to the +underscore character already in the macro definition. Instead, one may +use: +\begin{quote} +\begin{verbatim} +\begingroup +\catcode`_=\active +\gdef\works{% note the global \gdef + \catcode`_=\active + \def_{\textunderscore\-}% +} +\endgroup +\end{verbatim} +\end{quote} +The alternative (``tricksy'') way of creating such an isolated +definition depends on the curious properties of \csx{lowercase}, which +changes characters without altering their catcodes. Since there is +always \emph{one} active character (``\texttt{\textasciitilde}''), we +can fool \csx{lowercase} into patching up a definition without ever +explicitly changing a catcode: +\begin{quote} +\begin{verbatim} +\begingroup + \lccode`\~=`\_ + \lowercase{\endgroup + \def~{\textunderscore\-}% + }% +\end{verbatim} +\end{quote} +The two definitions have the same overall effect (the character is +defined as a command, but the character does not remain active), +except that the first defines a \csx{global} command. + +For active characters to be used only in maths mode, it is much better +to leave the character having its ordinary catcode, but assign it a +special active \emph{maths code}, as with +\begin{quote} +\begin{verbatim} +\begingroup + \lccode`~=`x + \lowercase{\endgroup + \def~{\times}% + }% +\mathcode`x="8000 +\end{verbatim} +\end{quote} +The special character does not need to be redefined whenever it is +made active~--- the definition of the command persists even if the +character's catcode reverts to its original value; the definition +becomes accessible again if the character once again becomes active. +\begin{ctanrefs} +\item[doc.sty]Part of the \LaTeX{} distribution \CTANref{latex}[doc] +\item[shortvrb.sty]Part of the \LaTeX{} distribution \CTANref{latex}[shortvrb] +\end{ctanrefs} + + +\Question[Q-actinarg]{Active characters in command arguments} + +Occasionally, it's nice to make one or two characters active in the +argument of a command, to make it easier for authors to code the +arguments. + +Active characters \emph{can} be used safely in such situations; but +care is needed. + +An example arose while this answer was being considered: an aspirant +macro writer posted to \Newsgroup{comp.text.tex} asking for help to +make |#| and |b| produce musical sharp and flat signs, respectively, +in a macro for specifying chords. + +The first problem is that both |#| and |b| have rather important uses +elsewhere in \TeX{} (to say the least!), so that the characters can +only be made active while the command is executing. + +Using the techniques discussed in % beware line break, next line +\htmlonly{``}\Qref[question]{characters as commands}{Q-activechars}\htmlonly{''}, +we can define: +\begin{quote} +\begin{verbatim} +\begingroup + \catcode`\#=\active + \gdef#{$\sharp$} +\endgroup +\end{verbatim} +\end{quote} +and: +\begin{quote} +\begin{verbatim} +\begingroup + \lccode`\~=`\b + \lowercase{\endgroup + \def~{$\flat$}% + } +\end{verbatim} +\end{quote} +The second problem is one of timing: the command has to make each +character active \emph{before} its arguments are read: this means that +the command can't actually ``have'' arguments itself, but must be +split in two. So we write: +\begin{quote} +\begin{verbatim} +\def\chord{% + \begingroup + \catcode`\#=\active + \catcode`\b=\active + \Xchord +} +\def\Xchord#1{% + \chordfont#1% + \endgroup +} +\end{verbatim} +\end{quote} +and we can use the command as \cmdinvoke{chord}{F\#} or +\cmdinvoke{chord}{Bb minor}. + +Two features of the coding are important: +\begin{itemize} +\item \csx{begingroup} in \csx{chord} opens a group that is closed by + \csx{endgroup} in \csx{Xchord}; this group limits the change of + category codes, which is the \emph{raison d'\^etre} of the whole + exercise. +\item Although |#| is active while \csx{Xchord} is executed, it's + \emph{not} active when it's being defined, so that the use of |#1| + doesn't require any special attention. +\end{itemize} + +Note that the technique used in such macros as \csx{chord}, here, is +analogous to that used in such commands as \csx{verb}; and, in just the +same way as \csx{verb} (see +% beware breaking long line +\htmlonly{``}\Qref[question]{\csx{verb} doesn't work in arguments}{Q-verbwithin}\htmlonly{''}), +\csx{chord} won't work inside the argument of another command (the +error messages, if they appear at all, will probably be rather odd). + + +\Question[Q-csname]{Defining a macro from an argument} + +It's common to want a command to create another command: often one +wants the new command's name to derive from an argument. \LaTeX{} +does this all the time: for example, \csx{newenvironment} creates +start- and end-environment commands whose names are derived from the +name of the environment command. + +The (seemingly) obvious approach: +\begin{quote} +\begin{verbatim} +\def\relay#1#2{\def\#1{#2}} +\end{verbatim} +\end{quote} +doesn't work (the \TeX{} engine interprets it +as a rather strange redefinition of |\#|). The trick is to use +\csx{csname}, which is a \TeX{} primitive for generating command names +from random text, together with \csx{expandafter}. The definition +above should read: +\begin{quote} +\begin{verbatim} +\def\relay#1#2{% + \expandafter\def\csname #1\endcsname{#2}% +} +\end{verbatim} +\end{quote} +With this definition, \cmdinvoke{relay}{blah}{bleah} is equivalent to +\csx{def}\cmdinvoke{blah}{bleah}. + +Note that the definition of \csx{relay} omits the braces round the +`command name' in the \csx{newcommand} it executes. This is +because they're not necessary (in fact they seldom are), and in this +circumstance they make the macro code slightly more tedious. + +The name created need not (of course) be \emph{just} the argument: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\def\newrace#1#2#3{\expandafter\def + \csname start#1\endcsname{% + #2% + }% + \expandafter\def + \csname finish#1\endcsname{% + #3% + }% +} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\def\newrace#1#2#3{% + \expandafter\def\csname start#1\endcsname{% + #2% + }% + \expandafter\def\csname finish#1\endcsname{% + #3% + }% +} +\end{verbatim} +\end{wideversion} +\end{quote} +With commands +\begin{quote} +\begin{verbatim} +\def\start#1{\csname start#1\endcsname} +\def\finish#1{\csname finish#1\endcsname} +\end{verbatim} +\end{quote} +these `races' could behave a bit like \LaTeX{} environments. + +\Question[Q-cvtlatex]{Transcribing \LaTeX{} command definitions} + +At several places in this \acro{FAQ}, questions are answered in terms +of how to program a \LaTeX{} macro. Sometimes, these macros might +also help users of \plaintex{} or other packages; this answer +attempts to provide a rough-and-ready guide to transcribing such macro +definitions for use in other packages. + +The reason \LaTeX{} has commands that replace \csx{def}, is that +there's a general philosophy within \LaTeX{} that the user should be +protected from himself: the user has different commands according to +whether the command to be defined exists (\csx{renewcommand}) or not +(\csx{newcommand}), and if its status proves not as the user expected, +an error is reported. A third definition command, +\csx{providecommand}, only defines if the target is not already +defined; \LaTeX{} has no direct equivalent of \csx{def}, which ignores +the present state of the command. The final command of this sort is +\csx{DeclareRobustCommand}, which creates a command which is ``robust'' +(i.e., will not expand if subjected to \LaTeX{} ``protected +expansion''); from the \plaintex{} user's point of view, +\csx{DeclareRobustCommand} should be treated as a non-checking version +of \csx{newcommand}. + +\LaTeX{} commands are, by default, defined \csx{long}; an optional \texttt{*} +between the \csx{newcommand} and its (other) arguments specifies that +the command is \emph{not} to be defined \csx{long}. The \texttt{*} is +detected by a command \csx{@ifstar} which uses \csx{futurelet} to switch +between two branches, and gobbles the \texttt{*}: \LaTeX{} users are +encouraged to think of the \texttt{*} as part of the command name. + +\LaTeX{}'s checks for unknown command are done by \csx{ifx} comparison +of a \csx{csname} construction with \csx{relax}; since the command name +argument is the desired control sequence name, this proves a little +long-winded. Since \texttt{\#1} is the requisite argument, we have: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\expandafter\ifx + \csname + \expandafter\@gobble\string#1% + \endcsname + \relax + ... +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\expandafter\ifx + \csname\expandafter\@gobble\string#1\endcsname + \relax + ... +\end{verbatim} +\end{wideversion} +\end{quote} +(\csx{@gobble} simply throws away its argument). + +The arguments of a \LaTeX{} command are specified by two optional +arguments to the defining command: a count of arguments (0--9: if the +count is 0, the optional count argument may be omitted), and a default +value for the first argument, if the defined command's first argument +is to be optional. So: +\begin{quote} +\begin{verbatim} +\newcommand\foo{...} +\newcommand\foo[0]{...} +\newcommand\foo[1]{...#1...} +\newcommand\foo[2][boo]{...#1...#2...} +\end{verbatim} +\end{quote} +In the last case, \csx{foo} may be called as \cmdinvoke{foo}{goodbye}, +which is equivalent to \cmdinvoke{foo}[boo]{goodbye} (employing the +default value given for the first argument), or as +\cmdinvoke{foo}[hello]{goodbye} (with an explicit first argument). + +Coding of commands with optional arguments is exemplified by the +coding of the last \csx{foo} above: +\begin{quote} +\begin{verbatim} +\def\foo{\futurelet\next\@r@foo} +\def\@r@foo{\ifx\next[% + \let\next\@x@foo + \else + \def\next{\@x@foo[boo]}% + \fi + \next +} +\def\@x@foo[#1]#2{...#1...#2...} +\end{verbatim} +\end{quote} + +\Question[Q-empty]{Detecting that something is empty} + +Suppose you need to know that the argument of your command is empty: +that is, to distinguish between \cmdinvoke{cmd}{\relax} % \relax doesn't print +and \cmdinvoke{cmd}{blah}. This is pretty simple: +\begin{quote} +\begin{verbatim} +\def\cmd#1{% + \def\tempa{}% + \def\tempb{#1}% + \ifx\tempa\tempb + + \else + + \fi +} +\end{verbatim} +\end{quote} +The case where you want to ignore an argument that consists of nothing +but spaces, rather than something completely empty, is more tricky. +It's solved in the code fragment \Package{ifmtarg}, which defines +commands \csx{@ifmtarg} and \csx{@ifnotmtarg}, which examine their +first argument, and select (in opposite directions) their second or +third argument. The package's code also appears in the \LaTeX{} +\Class{memoir} class. + +\Package{Ifmtarg} makes challenging reading; there's also a discussion of the +issue in number two of the ``around the bend'' articles by the late +lamented Mike Downes. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Around the bend series]\CTANref{aro-bend} +\item[ifmtarg.sty]\CTANref{ifmtarg} +\item[memoir.cls]\CTANref{memoir} +\end{ctanrefs} + +\Question[Q-whatengine]{Am I using \pdftex{}, \xetex{} or \luatex{}?} +\AliasQuestion{Q-ifpdf} + +You often need to know what ``engine'' your macros are running on (the +engine is the \tex{}-derivative or \tex{}-alike processor that +typesets your document). The reason that you need to know is that the +set of functions available in each engine is different. Thus, for +\tex{} macros to run on any engine, they need to ``know'' what they +can and cannot do, which depends on the engine in use. Getting the +right answer is surprisingly tricky (see below for an elaboration of +one apparently simple test). + +There is now a comprehensive set of packages that answer the question +for you. They all create a \tex{} conditional command: +\begin{itemize} +\item \Package{ifpdf} creates a command \csx{ifpdf}, +\item \Package{ifxetex} creates a command \csx{ifxetex} and +\item \Package{ifluatex} creates a command \csx{ifluatex}. +\end{itemize} +These \tex{} commands may be used within the \latex{} conditional +framework, as (for example): +\begin{quote} + \csx{ifthenelse}\texttt{\obracesymbol{}}\cmdinvoke{boolean}{pdf}\texttt{\cbracesymbol{}}\texttt{\obracesymbol{}}\meta{if pdf}\texttt{\cbracesymbol{}}\texttt{\obracesymbol{}}\meta{if not pdf}\texttt{\cbracesymbol{}} +\end{quote} + +The \Package{ifxetex} package also provides a command +\csx{RequireXeTeX} which creates an error if the code is not running +under \xetex{}; while the other packages don't provide such a command, +it's not really difficult to write one for yourself. + +% khalighi's iftex package, too -- \require's for all engines, but i'm +% not entirely sure of the conditionals, so "for later" if at all + +Now for those who want to do the job for themselves: here's a +discussion of doing the job for \pdftex{} and \csx{ifpdf}~--- the +eager programmer can regenerate \csx{ifxetex} or \csx{ifluatex} in the +same fashion. It's not recommended\dots + +Suppose you need to test whether your output will be \acro{PDF} or +\acro{DVI}. The natural thing is to check whether you have access to +some \PDFTeX{}-only primitive; a good one to try (not least because it +was present in the very first releases of \PDFTeX{}) is +\csx{pdfoutput}. So you try +\begin{quote} +\begin{verbatim} +\ifx\pdfoutput\undefined + ... % not running PDFTeX +\else + ... % running PDFTeX +\fi +\end{verbatim} +\end{quote} +Except that neither branch of this conditional is rock-solid. The +first branch can be misleading, since the ``awkward'' user could have +written: +\begin{quote} +\begin{verbatim} +\let\pdfoutput\undefined +\end{verbatim} +\end{quote} +so that your test will falsely choose the first alternative. While +this is a theoretical problem, it is unlikely to be a major one. + +More important is the user who loads a package that uses +\LaTeX{}-style testing for the command name's existence (for example, +the \LaTeX{} \Package{graphics} package, which is useful even to the +\plaintex{} user). Such a package may have gone ahead of you, so the +test may need to be elaborated: +\begin{quote} +\begin{verbatim} +\ifx\pdfoutput\undefined + ... % not running PDFTeX +\else + \ifx\pdfoutput\relax + ... % not running PDFTeX + \else + ... % running PDFTeX + \fi +\fi +\end{verbatim} +\end{quote} +If you only want to know whether some \PDFTeX{} extension (such as +marginal kerning) is present, you can stop at this point: you know as +much as you need. + +However, if you need to know whether you're creating \acro{PDF} +output, you also need to know about the value of \csx{pdfoutput}: +\begin{quote} +\begin{verbatim} +\ifx\pdfoutput\undefined + ... % not running PDFTeX +\else + \ifx\pdfoutput\relax + ... % not running PDFTeX + \else + % running PDFTeX, with... + \ifnum\pdfoutput>0 + ... % PDF output + \else + ... % DVI output + \fi + \fi +\fi +\end{verbatim} +\end{quote} +\begin{ctanrefs} +\item[ifpdf.sty]Distributed as part Heiko Oberdiek's bundle + \CTANref{oberdiek}[ifpdf] +\item[ifluatex.sty]Distributed as part of Heiko Oberdiek's bundle + \CTANref{oberdiek}[ifluatex] +\item[ifxetex.sty]\CTANref{ifxetex} +\end{ctanrefs} +\LastEdit{2012-02-13} + +\Question[Q-subverttoks]{Subverting a token register} + +A common requirement is to ``subvert'' a token register that other +macros may use. The requirement arises when you want to add something +to a system token register (\csx{output} or \csx{every*}), but know +that other macros use the token register, too. (A common requirement +is to work on \csx{everypar}, but \LaTeX{} changes \csx{everypar} at +every touch and turn.) + +The following technique, due to David Kastrup, does what you need, and +allows an independent package to play the exact same game: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\let\mypkg@@everypar\everypar +\newtoks\mypkg@everypar +\mypkg@everypar\expandafter{\the\everypar} +\mypkg@@everypar{\mypkgs@ownstuff\the\mypkg@everypar} +\def\mypkgs@ownstuff{% + % +} +\let\everypar\mypkg@everypar +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\let\mypkg@@everypar\everypar +\newtoks\mypkg@everypar +\mypkg@everypar\expandafter{\the\everypar} +\mypkg@@everypar{\mypkgs@ownstuff + \the\mypkg@everypar} +\def\mypkgs@ownstuff{% + % +} +\let\everypar\mypkg@everypar +\end{verbatim} +\end{narrowversion} +\end{quote} +As you can see, the package (\Package{mypkg}) +\begin{itemize} +\item creates an alias for the existing ``system'' \csx{everypar} + (which is frozen into any surrounding environment, which will carry + on using the original); +\item creates a token register to subvert \csx{everypar} and + initialises it with the current contents of \csx{everypar}; +\item sets the ``old'' \csx{everypar} to execute its own extra code, + as well as the contents of its own token register; +\item defines the macro for the extra code; and +\item points the token \csx{everypar} at the new token register. +\end{itemize} +and away we go. + +The form \csx{mypkg@...} is (sort of) blessed for \LaTeX{} package +internal names, which is why this example uses macros of that form. + +\Question[Q-isdef]{Is this command defined?} + +Macro sets from the earliest days of \TeX{} programming may be +observed to test whether commands exist by using +\begin{quote} +\csx{ifx} \csx{}\texttt{\emph{command}} \csx{undefined} \meta{stuff} \dots{} +\end{quote} +(which of course actually tests that the command \emph{doesn't} +exist). \LaTeX{} programmers can make use of the internal command +\begin{quote} + \cmdinvoke*{@ifundefined}{cmd name}{action1}{action2} +\end{quote} +which executes \texttt{action1} if the command is undefined, and +\texttt{action2} if it is defined +(\emph{cmd name} is the command name only, omitting the `|\|' character). + +The \csx{@ifundefined} command is based on the sequence +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\expandafter + \ifx\csname cmd name\endcsname\relax +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\expandafter \ifx \csname cmd name\endcsname \relax +\end{verbatim} +\end{wideversion} +\end{quote} +which relies on the way \csx{csname} works: if the command doesn't +exist, it simply creates it as an alias for \csx{relax}. + +So: what is wrong with these techniques? + +Using \csx{undefined} blithely assumes that the command is indeed not +defined. This isn't entirely safe; one could make the name more +improbable, but that may simply make it more difficult to spot a +problem when things go wrong. \LaTeX{} programmers who use the +technique will typically employ \csx{@undefined}, adding a single +level of obscurity. + +The \csx{@ifundefined} mechanism has the unfortunate property of +polluting the name space: each test that turns out undefined adds a +name to the set \TeX{} is holding, and often all those ``\csx{relax}'' +names serve no purpose whatever. Even so (sadly) there are places in +the code of \LaTeX{} where the existence of the \csx{relax} is relied +upon, after the test, so we can't get away from \csx{@ifundefined} +altogether. + +David Kastrup offers the (rather tricky) +\begin{quote} +\begin{wideversion} +\begin{verbatim} +{\expandafter}\expandafter\ifx \csname cmd name\endcsname\relax ... +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +{\expandafter}\expandafter + \ifx \csname cmd name\endcsname \relax ... +\end{verbatim} +\end{narrowversion} +\end{quote} +which ``creates'' the \csx{relax}-command inside the group of the first +\csx{expandafter}, therefore forgets it again once the test is done. +The test is about as good as you can do with macros. + +The \Qref*{\eTeX{} system}{Q-etex} system comes to our help here: it +defines two new primitives: +\begin{itemize} +\item \csx{ifdefined}, which tests whether a thing is defined (the + negative of comparing with \csx{undefined}, as it were), and +\item \csx{ifcsname} \texttt{cmd name}\csx{endcsname}, which does the + negative of \csx{@ifundefined} without the \csx{relax}-command + side-effect. +\end{itemize} +So, in an \eTeX{}-based system, the following two conditional clauses do +the same thing: +\begin{quote} +\begin{verbatim} +\ifdefined\foo + \message{\string\foo\space is defined}% +\else + \message{no command \string\foo}% +\fi +% +\ifcsname foo\endcsname + \message{\string\foo\space is defined}% +\else + \message{no command \string\foo}% +\fi +\end{verbatim} +\end{quote} +However, after using the \LaTeX{} +\cmdinvoke{@ifundefined}{foo}\dots{}, the conditionals will detect the +command as ``existing'' (since it has been \csx{let} to \csx{relax}); +so it is important not to mix mechanisms for detecting the state of a +command. + +Since most distributions nowadays use \eTeX{} as their base executable +for most packages, these two primitives may be expected appear widely +in new macro packages. + +\subsection{\LaTeX{} macro tools and techniques} + +\Question[Q-plninltx*]{Using Plain or primitive commands in \LaTeX{}} + +It's well-known that \LaTeX{} commands tend to be more complex, and to +run more slowly than, any \plaintex{} (or primitive) command that they +replace. There is therefore great temptation not to use \LaTeX{} +commands when macro programming. Nevertheless, the general rule is +that you should use \LaTeX{} commands, if there are seeming +equivalents. The exception is when you are sure you know the +differences between the two commands and you know that you need the +\plaintex{} version. So, for example, use \csx{mbox} in place of \csx{hbox} +unless you know that the extras that \LaTeX{} provides in \csx{mbox} +would cause trouble in your application. Similarly, use +\csx{newcommand} (or one of its relatives) unless you need one of the +constructs that cannot be achieved without the use of \csx{def} (or friends). + +As a general rule, any \LaTeX{} text command will start a new +paragraph if necessary; this isn't the case with \plaintex{} +commands, a fact which has a potential to confuse. + +The commands \csx{smallskip}, \csx{medskip} and \csx{bigskip} exist both +in \plaintex{} and \LaTeX{}, but behave slightly differently: in +\plaintex{} they terminate the current paragraph, but in \LaTeX{} they +don't. The command \csx{line} is part of picture mode in \LaTeX{}, +whereas it's defined as ``\csx{hbox}\texttt{ to }\csx{hsize}'' in +\plaintex{}. (There's no equivalent for users of the \plaintex{} command in +\LaTeX{}: an equivalent appears as the internal command \csx{@@line}). + +Maths setting shows a case where the \LaTeX{} version \emph{is} +essentially equivalent to the \TeX{} primitive commands: the \LaTeX{} +\csx{(}\texttt{\ ...\ }\csx{)} does essentially no different to the +primitive \texttt{\$\ ...\ \$}; except for checking that you're not +attempting to open a maths environment when you're already in one, or +attempting to close one when you're not. +However, \csx{[}\texttt{\ ...\ }\csx{]} has a more significant +difference from \texttt{\$\$\ ...\ \$\$}: the primitive version, used +in \LaTeX{}, can miss the effect of the class option \pkgoption{fleqn}. + +Font handling is, of course, wildly different in \plaintex{} and +\LaTeX{}. \plaintex{}'s font loading command +(\csx{font}\csx{foo=}\meta{fontname}) and its \LaTeX{} equivalent +(\csx{newfont}) should be avoided wherever possible. They are only +safe in the most trivial contexts, and are potential sources of great +confusion in many circumstances. Further discussion of this issue +may be found in ``\Qref*{What's wrong with \csx{newfont}?}{Q-newfont*}''. +\LastEdit{2013-09-27} + +\Question[Q-atsigns]{\csx{@} and \texttt{@} in macro names} + +Macro names containing \texttt{@} are \emph{internal} to \LaTeX{}, and +without special treatment just don't work in ordinary use. A nice +example of the problems caused is discussed in % ! beware line break +\Qref*{\csx{@} in vertical mode}{Q-atvert}''. + +The problems users see are caused by copying bits of a class +(\extension{cls} file) or +package (\extension{sty} file) into a document, or by including a class or +package file into a \LaTeX{} document by some means other than +\csx{documentclass} or \csx{usepackage}. \LaTeX{} defines internal +commands whose names contain the character \texttt{@} to +avoid clashes between its internal names and names that we would +normally use in our documents. In order that these commands may work +at all, \csx{documentclass} and \csx{usepackage} play around with the +meaning of \texttt{@}. + +If you've included a file some other way (for example, using +\csx{input}), you can probably solve the problem by using the correct +command. + +If you're using a fragment of a package or class, you may well feel +confused: books such as the first edition of the % ! line break +\Qref*{The \LaTeX{} Companion}{Q-latex-books} +are full of fragments of packages as examples for you to employ. +The second edition of the \emph{Companion} makes clearer how you +should use these fragments, and in addition, the code of +all the examples is now available on \acro{CTAN}. +To see the technique in practice, look at the example below, from file +\File{2-2-7.ltx} in the \emph{Companion} examples directory: +\begin{quote} +\begin{verbatim} +\makeatletter +\renewcommand\subsection{\@startsection + {subsection}{2}{0mm}%name, level, indent + {-\baselineskip}% beforeskip + {0.5\baselineskip}% afterskip + {\normalfont\normalsize\itshape}}% style +\makeatother +\end{verbatim} +\end{quote} +(That example appears on page 29 of \emph{The \LaTeX{} Companion}, +second edition.) + +The alternative is to treat all these fragments as a package proper, +bundling them up into a \extension{sty} file and including them with +\csx{usepackage}; this way you hide your \LaTeX{} internal code somewhere +that \LaTeX{} internal code is expected, which often looks `tidier'. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Examples from the Companion]\CTANref{tlc2} +\end{ctanrefs} +\LastEdit{2011-06-01} + +\Question[Q-protect]{What's the reason for `protection'?} + +Sometimes \LaTeX{} saves data it will reread later. These data are +often the argument of some command; they are the so-called moving +arguments. (`Moving' because data are moved around.) Candidates +are all arguments that may go into table of contents, list of figures, +\emph{etc}.; namely, data that are written to an auxiliary file and +read in later. Other places are those data that might appear in head- +or footlines. Section headings and figure captions are the most +prominent examples; there's a complete list in Lamport's book +(see \Qref[question]{\TeX{}-related books}{Q-latex-books}). + +What's going on really, behind the scenes? The commands in moving +arguments are normally expanded to their internal structure during the +process of saving. Sometimes this expansion results in invalid \TeX{} +code, which shows either during expansion or when the code is +processed again. Protecting a command, using +``\csx{protect}\csx{cmd}'' tells \LaTeX{} to save \csx{cmd} as +\csx{cmd}, without expanding it at all. + +So, what is a `fragile command'?~--- it's a command that expands into +illegal \TeX{} code during the save process. + +What is a `robust command'?~--- it's a command that expands into legal +\TeX{} code during the save process. + +Lamport's book says in its description of every LaTeX command whether +it is `robust' or `fragile'; it also says that every command with an +optional argument is fragile. The list isn't reliable, and neither +is the assertion about optional arguments; the statements may have +been true in early versions of \LaTeXe{} but are not any longer +necessarily so: +\begin{itemize} +\item Some fragile commands, such as \csx{cite}, have been made robust + in later revisions of \LaTeX{}. +\item Some commands, such as \csx{end} and \csx{nocite}, are fragile + even though they have no optional arguments. +\item The ``user's way'' of creating a command with an optional + argument (using \csx{newcommand} or \csx{newcommand*}) now always + creates a robust command (though macros without optional arguments + may still be fragile if they do things that are themselves fragile). +\item There is no reason that a package author should not also make + robust commands with optional arguments as part of the package. +\item Some robust commands are redefined by certain packages to be + fragile (the \csx{cite} command commonly suffers this treatment). +\end{itemize} +Further, simply ``hiding'' a fragile command in another command, has +no effect on fragility. So, if \csx{fred} is fragile, and you write: +\begin{quote} +\begin{verbatim} +\newcommand{\jim}{\fred} +\end{verbatim} +\end{quote} +then \csx{jim} is fragile too. There is, however, the +\csx{newcommand}-replacement \csx{DeclareRobustCommand}, which +\emph{always} creates a robust command (whether or not it has optional +arguments). The syntax of \csx{DeclareRobustCommand} is substantially +identical to that of \csx{newcommand}, and if you do the wrapping +trick above as: +\begin{quote} +\begin{verbatim} +\DeclareRobustCommand{\jim}{\fred} +\end{verbatim} +\end{quote} +then \csx{jim} is robust. + +Finally, we have the \Package{makerobust} package, which defines +\csx{MakeRobustCommand} to convert a command to be robust. With the +package, the ``wrapping'' above can simply be replaced by: +\begin{quote} +\begin{verbatim} +\MakeRobustCommand\fred +\end{verbatim} +\end{quote} +Whereafter, \csx{fred} is robust. Using the package may be reasonable +if you have lots of fragile commands that you need to use in moving +arguments. + +In short, the situation is confusing. No-one believes this is +satisfactory; the \LaTeX{} team have removed the need for +protection of some things, but the techniques available in +current \LaTeX{} mean that this is an expensive exercise. It remains +a long-term aim of the team to remove all need for \csx{protect}ion. +\begin{ctanrefs} +\item[makerobust.sty]Distributed as part of Heiko Oberdiek's bundle + \CTANref{oberdiek}[makerobust] +\end{ctanrefs} +\LastEdit{2011-06-01} + +\Question[Q-edef]{\csx{edef} does not work with \csx{protect}} + +Robust \LaTeX{} commands are either ``naturally robust''~--- meaning that +they never need \csx{protect}, or ``self-protected''~--- meaning that +they have \csx{protect} built in to their definition in some +way. Self-protected commands, and fragile commands with +\csx{protect}ion are only robust in a context where the \csx{protect} +mechanism is properly handled. The body of an \csx{edef} definition +doesn't handle \csx{protect} properly, since \csx{edef} is a \TeX{} +primitive rather than a \LaTeX{} command. + +This problem is resolved by a \LaTeX{} internal command +\csx{protected@edef}, which does the job of \csx{edef} while keeping the +\csx{protect} mechanism working. There's a corresponding +\csx{protected@xdef} which does the job of \csx{xdef}. + +Of course, these commands need to be tended carefully, since they're +% beware line break on next line +internal: see \Qref[question]{'@' in control sequence names}{Q-atsigns}. + +\Question[Q-ltxcmds]{The definitions of \LaTeX{} commands} + +There are several reasons to want to know the definitions of \LaTeX{} +commands: from the simplest ``idle curiosity'', to the pressing need +to patch something to make it ``work the way you want it''. None of +these are \emph{pure} motives, but knowledge and expertise seldom +arrive through the purest of motives. + +Using a \tex{} executable of some sort, the simple answer is to try +\csx{show}, in a run that is taking commands from the terminal: +\begin{quote} +\begin{verbatim} +*\makeatletter +*\show\protected@edef +> \protected@edef=macro: +->\let \@@protect \protect + \let \protect \@unexpandable@protect + \afterassignment \restore@protect \edef . +\end{verbatim} +\end{quote} +(I've rearranged the output there, from the rather confused version +\TeX{} itself produces.) + +So, what about \csx{@unexpandable@protect}?: +\begin{quote} +\begin{verbatim} +*\show\@unexpandable@protect +> \@unexpandable@protect=macro: +->\noexpand \protect \noexpand . +\end{verbatim} +\end{quote} +and we're starting to see how one part of the \csx{protect}ion +mechanism works (one can probably fairly safely guess what +\csx{restore@protect} does). + +Many kernel commands are declared robust: +\begin{quote} +\begin{verbatim} +*\show\texttt +> \texttt=macro: +->\protect \texttt . +\end{verbatim} +\end{quote} +so that \csx{show} isn't much help. Define a command \csx{pshow} as +shown below, and simply execute the command to find its definition: +\begin{quote} +\begin{verbatim} +*\def\pshow#1{{\let\protect\show #1}} +*\pshow\texttt +> \texttt =\long macro: +#1->\ifmmode \nfss@text {\ttfamily #1}% + \else \hmode@bgroup \text@command {#1}% + \ttfamily \check@icl #1\check@icr + \expandafter \egroup \fi . +\end{verbatim} +\end{quote} +Note that the command name that is protected is the `base' command, +with a space appended. This is cryptically visible, in a couple of +places above. (Again, the output has been sanitised.) +% Similar provisions are made in the package \Package{show2e} but i +% don't understand them yet... + +The command \ProgName{texdef} (or \ProgName{latexdef}~--- the same +command with a different name) will do all that for you and return the +results slightly more tidily than \latex{} itself manages. For +example: +\begin{quote} +\begin{verbatim} +$ latexdef texttt +\end{verbatim} +\end{quote} +gives: +\begin{quote} +\begin{verbatim} +macro:->\protect \texttt + +\texttt : +#1->\ifmmode \nfss@text {\ttfamily #1}% + \else \hmode@bgroup \text@command {#1}% + \ttfamily \check@icl #1\check@icr + \expandafter \egroup \fi . +\end{verbatim} +\end{quote} +(again, the output has been sanitised~--- but we see that +\ProgName{latexdef} has useful `intelligence' in it, as it has spotted +and dealt with the \csx{protect}.) + +With the \texttt{-s} switch, \ProgName{latexdef} will give you a +source location: +\begin{quote} +\begin{verbatim} +$ latexdef -s texttt +% latex.ltx, line 3736: +\DeclareTextFontCommand{\texttt}{\ttfamily} +\end{verbatim} +\end{quote} +though one should note that it doesn't give you the detail of the +actual coding, merely the definition's location. + +Environments also surrender their details to \ProgName{latexdef}: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +$ latexdef -E itemize + +\itemize: +macro:->\ifnum \@itemdepth >\thr@@ \@toodeep + \else \advance \@itemdepth \@ne + \edef \@itemitem {labelitem\romannumeral \the \@itemdepth}% + \expandafter \list \csname \@itemitem \endcsname + {\def \makelabel ##1{\hss \llap {##1}}}% + \fi + +\enditemize: +macro:->\global \advance \@listdepth \m@ne \endtrivlist +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +$ latexdef -E itemize + +\itemize: +macro:->\ifnum \@itemdepth >\thr@@ \@toodeep + \else \advance \@itemdepth \@ne + \edef \@itemitem {labelitem\romannumeral + \the \@itemdepth}% + \expandafter \list + \csname \@itemitem \endcsname + {\def \makelabel ##1{\hss \llap {##1}}}% + \fi + +\enditemize: +macro:->\global \advance \@listdepth \m@ne + \endtrivlist +\end{verbatim} +\end{narrowversion} +\end{quote} +(Yet again, this is a sanitised version of the macro definition +output, which appears as a single very wide line for each definition.) + +If one has a malleable text editor, the same investigation may be +conducted by examining the file \File{latex.ltx} (which is usually to +be found, in a \acro{TDS} system, in directory \path{tex/latex/base}). + +In fact, \File{latex.ltx} is the product of a \ProgName{docstrip} +process on a large number of \Qref*{\extension{dtx} files}{Q-dtx}, and +you can refer to those instead. The \LaTeX{} distribution includes a file +\File{source2e.tex}, and most systems retain it, again in +\path{tex/latex/base}. \File{Source2e.tex} may be processed to +provide a complete source listing of the \LaTeX{} kernel (in fact the +process isn't entirely straightforward, but the file produces messages +advising you what to do). The result is a huge document, with a +line-number index of control sequences the entire kernel and a +separate index of changes recorded in each of the files since the +\LaTeX{} team took over. + +The printed kernel is a nice thing to have, but it's unwieldy and sits +on my shelves, seldom used. One problem is that the comments are +patchy: the different modules range from well and lucidly documented, +through modules documented only through an automatic process that +converted the documentation of the source of \LaTeXo{}, to modules +that hardly had any useful documentation even in the \LaTeXo{} original. + +In fact, each kernel module \extension{dtx} file will process separately +through \LaTeX{}, so you don't have to work with the whole of +\File{source2e}. You can easily determine which module defines the +macro you're interested in: use your ``malleable text editor'' to find +the definition in \File{latex.ltx}; then search backwards from that +point for a line that starts % ! line break +\texttt{\textpercent{}\textpercent{}\textpercent{}\ From File:}~--- that line +tells you which \extension{dtx} file contains the definition you are interested +in. Doing this for \csx{protected@edef}, we find: +\begin{quote} +\begin{verbatim} +%%% From File: ltdefns.dtx +\end{verbatim} +\end{quote} +When we come to look at it, \File{ltdefns.dtx} proves to contain +quite a dissertation on the methods of handling \csx{protect}ion; it +also contains some automatically-converted \LaTeXo{} documentation. + +And of course, the kernel isn't all of \LaTeX{}: your command may be +defined in one of \LaTeX{}'s class or package files. For example, we +find a definition of \csx{thebibliography} in \Class{article}, but +there's no \File{article.dtx}. Some such files are generated from +parts of the kernel, some from other files in the distribution. You +find which by looking at the start of the file: in \File{article.cls}, +we find: +\begin{quote} +\begin{verbatim} +%% This is file `article.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% classes.dtx (with options: `article') +\end{verbatim} +\end{quote} +so we need to format \File{classes.dtx} to see the definition in +context. + +All these .dtx files are on \acro{CTAN} as part of the main \LaTeX{} +distribution. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\LaTeX{} distribution]\CTANref{latex} +\item[texdef,\nothtml{\rmfamily aka} latexdef]\CTANref{texdef} +\end{ctanrefs} +\LastEdit{2013-09-27} + +\Question[Q-oarglikesect]{Optional arguments like \csx{section}} + +Optional arguments, in macros defined using \csx{newcommand}, don't +quite work like the optional argument to \csx{section}. The default +value of \csx{section}'s optional argument is the value of the +mandatory argument, but \csx{newcommand} requires that you `know' the +value of the default beforehand. + +The requisite trick is to use a macro in the optional argument: +\begin{quote} +\begin{verbatim} +\documentclass{article} +\newcommand\thing[2][\DefaultOpt]{% + \def\DefaultOpt{#2}% + optional arg: #1, mandatory arg: #2% +} +\begin{document} +\thing{manda}% #1=#2 + +\thing[opti]{manda}% #1="opti" +\end{document} +\end{verbatim} +\end{quote} +\LaTeX{} itself has a trickier (but less readily understandable) +method, using a macro \csx{@dblarg}; inside \LaTeX{}, the example +above would have been programmed: +\begin{quote} +\begin{verbatim} +\newcommand\thing{\@dblarg\@thing} +\newcommand\@thing[2][\@error]{% + optional arg: #1, mandatory arg: #2% +} +\end{verbatim} +\end{quote} +In that code, \csx{@thing} is only ever called with an optional and a +mandatory argument; if the default from the \csx{newcommand} is +invoked, a bug in user code has bitten\dots{} + +\Question[Q-twooptarg]{More than one optional argument} + +If you've already read % ! line break +``\Qref*[question]{breaking the 9-argument limit}{Q-moren9}''. +you can probably guess the ``simple'' solution to this problem: +command relaying. + +\LaTeX{} allows commands with a single optional argument thus: +\begin{quote} +\begin{verbatim} + \newcommand{\blah}[1][Default]{...} +\end{verbatim} +\end{quote} + +You may legally call such a command either with its optional argument +present, as +\cmdinvoke{blah}[nonDefault] or without, as \csx{blah}; in the latter +case, the code of \csx{blah} will have an argument of |Default|. + +To define a command with two optional arguments, we use the relaying +technique, as follows: +\begin{quote} +\begin{verbatim} +\newcommand{\blah}[1][Default1]{% + \def\ArgI{{#1}}% + \BlahRelay +} +\newcommand\BlahRelay[1][Default2]{% + % the first optional argument is now in + % \ArgI + % the second is in #1 + ...% +} +\end{verbatim} +\end{quote} +Of course, \csx{BlahRelay} may have as many mandatory arguments as are +allowed, after allowance for the one taken up with its own +optional argument~--- that is, 8. + +Variants of \csx{newcommand} (and friends), with names like +\csx{newcommandtwoopt}, are available in the \Package{twoopt} package. +However, if you can, it's probably better to learn to write the commands +yourself, just to see why they're not even a good idea from the +programming point of view. + +A command with two optional arguments strains the limit of what's +sensible: obviously you can extend the technique to provide as many +optional arguments as your fevered imagination can summon. However, +see the comments on the use of the \Package{keyval} package, in +``\Qref*[question]{breaking the 9-argument limit}{Q-moren9}'', +which offers an alternative way forward. + +If you must, however, consider the \Package{optparams} or +\Package{xargs} packages. \Package{Optparams} +provides a \csx{optparams} command that you use as an intermediate in +defining commands with up to nine optional arguments. The +documentation shows examples of commands with four optional arguments +(and this from an author who has his own key-value package!). + +The \Package{xargs} package uses a key-value package +(\Package{xkeyval}) to \emph{define} the layout of the optional +arguments. Thus +\begin{quote} +\begin{verbatim} +\usepackage{xargs} +... +\newcommandx{\foo}[3][1=1, 3=n]{...} +\end{verbatim} +\end{quote} +defines a command \csx{foo} that has an optional first argument +(default 1), a mandatory second argument, and an optional third +argument (default n). + +An alternative approach is offered by Scott Pakin's +\ProgName{newcommand} program, which takes a command name and a +definition of a set of command arguments (in a fairly +readily-understood language), and emits \AllTeX{} macros which enable +the command to be defined. The command requires that a +\ProgName{Python} interpreter (etc.\@) be installed on your computer. +\begin{ctanrefs} +\item[newcommand.py]\CTANref{newcommand} +\item[optparams.sty]Distributed as part of \CTANref{sauerj}[optparams] +\item[twoopt.sty]Distributed as part of \CTANref{oberdiek}[twoopt] +\item[xargs.sty]\CTANref{xargs} +\item[xkeyval.sty]\CTANref{xkeyval} +\end{ctanrefs} + +\Question[Q-cmdstar]{Commands defined with * options} + +\LaTeX{} commands commonly have ``versions'' defined with an asterisk +tagged onto their name: for example \csx{newcommand} and +\csx{newcommand*} (the former defines a \csx{long} version of the +command). + +The simple-minded way for a user to write such a command involves use +of the \Package{ifthen} package: +\begin{wideversion} +\begin{quote} +\begin{verbatim} +\newcommand{\mycommand}[1]{\ifthenelse{\equal{#1}{*}}% + {\mycommandStar}% + {\mycommandNoStar{#1}}% +} +\newcommand{\mycommandStar}{starred version} +\newcommand{\mycommandNoStar}[1]{normal version} +\end{verbatim} +\end{quote} +\end{wideversion} +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +\newcommand{\mycommand}[1]{% + \ifthenelse{\equal{#1}{*}}% + {\mycommandStar}% + {\mycommandNoStar{#1}}% +} +\newcommand{\mycommandStar}% + {starred version} +\newcommand{\mycommandNoStar}[1]% + {normal version} +\end{verbatim} +\end{quote} +\end{narrowversion} +This does the trick, for sufficiently simple commands, but it has +various tiresome failure modes, and it requires \csx{mycommandnostar} +to take an argument. + +The \LaTeX{} kernel does a lot of this, and has its own command, +\csx{@ifstar} (which needs `internal command protection', cf. +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\makeatletter +\newcommand{\mycommand}{% + \@ifstar + \mycommandStar% + \mycommandNoStar% +\makeatother +} +\newcommand{\mycommandStar}{starred version} +\newcommand{\mycommandNoStar}{normal version} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\makeatletter +\newcommand{\mycommand}{\@ifstar + \mycommandStar% + \mycommandNoStar% +} +\makeatother +\newcommand{\mycommandStar}{starred version} +\newcommand{\mycommandNoStar}{normal version} +\end{verbatim} +\end{narrowversion} +\end{quote} +(Note that arguments to \csx{mycommandStar} and \csx{mycommandNoStar} +are independent~--- either can have their own arguments, unconstrained +by the technique we're using, unlike the trick described above.) +The \csx{@ifstar} trick is all very well, is fast and efficient, but +it requires that the definition be % ! line break +\Qref*{\csx{makeatletter} protected}{Q-atsigns}. + +A pleasing alternative is the \Package{suffix} package. This elegant +piece of code allows you to define variants of your commands: +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +\newcommand\mycommand{normal version} +\WithSuffix\newcommand\mycommand*% + {starred version} +\end{verbatim} +\end{quote} +\end{narrowversion} +\begin{wideversion} +\begin{quote} +\begin{verbatim} +\newcommand\mycommand{normal version} +\WithSuffix\newcommand\mycommand*{starred version} +\end{verbatim} +\end{quote} +\end{wideversion} +The package needs \Qref*{\elatex{}}{Q-etex}, but any new enough +distribution defines \LaTeX{} as \elatex{} by default. Command +arguments may be specified in the normal way, in both command +definitions (after the ``\texttt{*}'' in the \csx{WithSuffix} +version). You can also use the \TeX{} primitive commands, creating a +definition like: +\begin{quote} +\begin{verbatim} +\WithSuffix\gdef\mycommand*{starred version} +\end{verbatim} +\end{quote} + +For those of an adventurous disposition, a further option is to use +the \Package{xparse} package from the \Package{l3packages} +distribution. The package defines a bunch of commands (such as +\csx{NewDocumentCommand}) which are somewhat analagous to +\csx{newcommand} and the like, in \latexe{}. The big difference is +the specification of command arguments; for each argument, you have a +set of choices in the command specification. So, to create a +*-command (in \latexe{} style), one might write: +\begin{quote} +\begin{verbatim} +\NewDocumentCommand \foo { s m } {% + % #1 is the star indicator + % #2 is a mandatory argument + ... +} +\end{verbatim} +\end{quote} +The ``star indicator'' (\texttt{s}) argument appears as \texttt{\#1} +and will take values \csx{BooleanTrue} (if there was a star) or +\csx{BooleanFalse} (otherwise); the other (\texttt{m}) argument is a +normal \tex{}-style mandatory argument, and appears as \texttt{\#2}. + +While \Package{xparse} provides pleasing command argument +specifications, it \emph{is} part of the % ! line break +\Qref*{\latex{}~3 experimental harness}{Q-LaTeX3}. +Simply loading the package to provide \csx{DeclareDocumentCommand} +``pulls in'' all of the \latex{}3 kernel (a large bunch of packages) +via the \Package{expl3} package. +\begin{ctanrefs} +\item[ifthen.sty]Part of the \LaTeX{} distribution +\item[suffix.sty]Distributed as part of \CTANref{bigfoot}[suffix] +\item[xparse.sty]Distributed as part of \CTANref{l3packages}[xparse] +\item[expl3.sty]Distributed as part of \CTANref{l3kernel}[expl3] +\end{ctanrefs} +\LastEdit{2014-04-04} + +\nothtml{\hrule height 0pt \nobreak\vskip0pt plus2.5in\vskip 0pt\relax} +\Question[Q-ltxabbrv]{\LaTeX{} internal ``abbreviations'', etc.} + +In the deeps of time, when \TeX{} first happened, computers had +extremely limited memory, and were (by today's standards) painfully +slow. When \LaTeX{} came along, things weren't much better, and even +when \LaTeXe{} appeared, there was a strong imperative to save memory +space (and to a lesser extent) \acro{CPU} time. + +From the very earliest days, Knuth used shortcut macros to speed +things up. \LaTeX{}, over the years, has extended Knuth's list by a +substantial amount. An interesting feature of the ``abbreviations'' is +that on paper, they may look longer than the thing they stand for; +however, to \AllTeX{} they \emph{feel} smaller\dots{} + +The table at the end of this answer lists the commonest of these +``abbreviations''. It is not complete; as always, if the table +doesn't help, try the \LaTeX{} source. The table lists each +abbreviation's \emph{name} and its \emph{value}, which provide most of +what a user needs to know. The table also lists the abbreviation's +\emph{type}, which is a trickier concept: if you need to know, the +only real confusion is that the abbreviations labelled `defn' are +defined using an \csx{\emph{xxxx}def} command. + +\begin{tabular}{lll} +Name \tbamp Type \tbamp Value \tbeol +\tbhline +\csx{m@ne} \tbamp count \tbamp \ensuremath{-1} \tbeol +\csx{p@} \tbamp dimen \tbamp 1pt \tbeol +\csx{z@} \tbamp dimen \tbamp 0pt \tbeol +\csx{z@skip} \tbamp skip \tbamp 0pt plus 0pt minus 0pt \tbeol +\tbhline +\csx{@ne} \tbamp defn \tbamp 1 \tbeol +\csx{tw@} \tbamp defn \tbamp 2\tbeol +\csx{thr@@} \tbamp defn \tbamp 3 \tbeol +\csx{sixt@@n} \tbamp defn \tbamp 16 \tbeol +\csx{@cclv} \tbamp defn \tbamp 255 \tbeol +\csx{@cclvi} \tbamp defn \tbamp 256 \tbeol +\csx{@m} \tbamp defn \tbamp 1000 \tbeol +\csx{@M} \tbamp defn \tbamp 10000 \tbeol +\csx{@MM} \tbamp defn \tbamp 20000 \tbeol +\tbhline +\csx{@vpt} \tbamp macro \tbamp 5 \tbeol +\csx{@vipt} \tbamp macro \tbamp 6 \tbeol +\csx{@viipt} \tbamp macro \tbamp 7 \tbeol +\csx{@viiipt} \tbamp macro \tbamp 8 \tbeol +\csx{@ixpt} \tbamp macro \tbamp 9 \tbeol +\csx{@xpt} \tbamp macro \tbamp 10 \tbeol +\csx{@xipt} \tbamp macro \tbamp 10.95 \tbeol +\csx{@xiipt} \tbamp macro \tbamp 12 \tbeol +\csx{@xivpt} \tbamp macro \tbamp 14.4 \tbeol +\csx{@xviipt} \tbamp macro \tbamp 17.28 \tbeol +\csx{@xxpt} \tbamp macro \tbamp 20.74 \tbeol +\csx{@xxvpt} \tbamp macro \tbamp 24.88 \tbeol +\tbhline +\csx{@plus} \tbamp macro \tbamp ``\texttt{plus}'' \tbeol +\csx{@minus} \tbamp macro \tbamp ``\texttt{minus}'' \tbeol +%\csx{hb@xt@} \tbamp macro \tbamp ``\csx{hbox} \texttt{to}'' +\end{tabular} + +\Question[Q-ltxhash]{Defining \LaTeX{} commands within other commands} + +\LaTeX{} command definition is significantly different from the \TeX{} +primitive form discussed in an % ! line break +\Qref*[\htmlonly]{earlier question}{Q-hash} about definitions within +macros. + +In most ways, the \LaTeX{} situation is simpler (at least in part +because it imposes more restrictions on the user); however, defining a +command within a command still requires some care. + +The earlier question said you have to double the |#| signs in command +definitions: in fact, the same rule holds, except that \LaTeX{} +already takes care of some of the issues, by generating argument lists +for you. + +The basic problem is that: +\begin{quote} +\begin{verbatim} +\newcommand{\abc}[1]{joy, oh #1!% + \newcommand{\ghi}[1]{gloom, oh #1!}% +} +\end{verbatim} +\end{quote} +followed by a call: +\begin{quote} +\begin{verbatim} +\cmdinvoke{abc}{joy} +\end{verbatim} +\end{quote} +typesets ``joy, oh joy!'', but defines a command \csx{ghi} that takes +one parameter, which it ignores; \cmdinvoke{ghi}{gloom} will expand to +``gloom, oh joy!'', which is presumably not what was expected. + +And (as you will probably guess, if you've read the earlier question) +the definition: +\begin{quote} +\begin{verbatim} +\newcommand{\abc}[1]{joy, oh #1!% + \newcommand{\ghi}[1]{gloom, oh ##1!}% +} +\end{verbatim} +\end{quote} +does what is required, and \cmdinvoke{ghi}{gloom} will expand to +``gloom, oh gloom!'', whatever the argument to \csx{abc}. + +The doubling is needed whether or not the enclosing command has an +argument, so: +\begin{quote} +\begin{verbatim} +\newcommand{\abc}{joy, oh joy!% + \newcommand{\ghi}[1]{gloom, oh ##1!}% +} +\end{verbatim} +\end{quote} +is needed to produce a replica of the \csx{ghi} we defined earlier. + +\Question[Q-printvar]{How to print contents of variables?} +\keywords{typeout, print variables, showthe} + +It is often useful to print out the values of variables in the log +file or on the terminal. Three possible ways to print out the +contents of \csx{textheight} variable are: +\begin{enumerate} +\item \csx{showthe}\csx{textheight} +\item \cmdinvoke{message}{The text height is \csx{the}\csx{textheight}} +\item \cmdinvoke{typeout}{The text height is \csx{the}\csx{textheight}} +\end{enumerate} +These techniques use the \TeX{} primitives \csx{the} (which provides +the value of a variable), \csx{showthe} (print a variable to the +terminal and the log, on a line of its own), and \csx{message}, which +interpolates something into the log. The command \csx{typeout} is +\LaTeX{}'s general message output mechanism. + +In each case, the variable's value is printed as a number of points. + +To typeset the value of \csx{textheight}, just +\csx{the}\csx{textheight} is enough, but a more flexible alternative is +to use the \Package{printlen} package. \Package{Printlen} allows you +to choose the units in which you print a variable; this is useful, +given that the most ordinary people don't think in points +(particularly Knuth's points, of which there are 72.27 to the inch). + +So, using \Package{printlen}, we could say: +\begin{quote} +\begin{verbatim} +\newlength{\foo} +\setlength{\foo}{12pt} +\verb|\foo| is \printlength{\foo} +\end{verbatim} +\end{quote} +and get: +\begin{quote} +\csx{foo} is 12pt +\end{quote} +while, if we say: +\begin{quote} +\begin{verbatim} +\newlength{\foo} +\setlength{\foo}{12pt} +\uselengthunit{mm} +\verb|foo| is \printlength{\foo} +\end{verbatim} +\end{quote} +we get: +\begin{quote} +\csx{foo} is 4.21747mm +\end{quote} +\begin{ctanrefs} +\item[printlen.sty]\CTANref{printlen} +\end{ctanrefs} +\LastEdit{2012-03-16} + +\Question[Q-labelcount]{Using labels as counter values} + +Labels are tempting sources of `numbers'~--- their most common use, +after all, is simply to typeset a number. However, their seeming +simplicity is deceptive; the packages \Package{babel} and +\Package{hyperref}, at least, fiddle with the definition of +\csx{ref} and \csx{pageref} in ways that make +\begin{quote} +\begin{verbatim} +\setcounter{foo}{\ref{bar}} +\end{verbatim} +\end{quote} +(etc.\@) not work; thus the technique may not be relied upon. + +The solution is to use the \Package{refcount} package (incidentally, +by the author of \Package{hyperref}). The package provides four +commands, all similar to: +\begin{quote} +\begin{verbatim} +\usepackage{refcount} +... +\label{bar} +... +\setcounterref{foo}{bar} +\end{verbatim} +\end{quote} +(the other three are \csx{addtocounterref}, \csx{setcounterpageref} +and \csx{addtocounterpageref}). + +The package also provides a command +\cmdinvoke*{getrefnumber}{label-name} that may be used where a +`number' value is needed. For example: +\begin{quote} +\begin{verbatim} +... \footnote{foo bar ...\label{foofoot}} +... +\footnotemark[\getrefnumber{foofoot}] +\end{verbatim} +\end{quote} +which gives you a second footnote mark reference the the footnote. +(There is also a command \csx{getpagerefnumber}, of course). + +The commands could be used by one determined not to use +\Package{changepage} to determine whether % ! line break +\Qref*{the current page is odd}{Q-oddpage}, but it's probably no more +trouble to use the fully-developed tool in this case. +\begin{ctanrefs} +\item[refount.sty]Distributed as part of \CTANref{oberdiek} +\end{ctanrefs} +\LastEdit*{2011-09-08} + +\subsection{\LaTeX{} macro programming} + +\Question[Q-fixnam]{How to change \LaTeX{}'s ``fixed names''} + +\LaTeX{} document classes define several typographic operations that +need `canned text' (text not supplied by the user). In the earliest +days of \LaTeXo{} these bits of text were built in to the body of +\LaTeX{}'s macros and were rather difficult to change, but ``fixed +name'' macros were introduced for the benefit of those wishing to use +\LaTeX{} in languages other than English. +For example, the special section produced by the \csx{tableofcontents} +command is always called \csx{contentsname} (or rather, what +\csx{contentsname} is defined to mean). +Changing the canned text is now one of the easiest customisations a +user can do to \LaTeX{}. + +The canned text macros are all of the form +\csx{\meta{thing}name}, and changing them is simplicity +itself. Put: +\begin{quote} +\cmdinvoke{renewcommand}{\csx{\meta{thing}name}}{Res minor} +\end{quote} +in the preamble of your document, and the job is done. +(However, beware of the \Package{babel} package, which requires you to +use a different mechanism: be sure to check +% beware line wrap +\Qref[question]{changing \Package{babel} names}{Q-latexwords} if +you're using it.) + +The names that are defined in the standard \LaTeX{} classes (and the +\Package{makeidx} package) are listed +below. Some of the names are only defined in a subset of the classes +(and the \Class{letter} class has a set of names all of its own); +the list shows the specialisation of each name, where appropriate. + +\nothtml{\noindent}\begin{tabular}{@{}ll} +\csx{abstractname} \tbamp Abstract\tbeol +\csx{alsoname} \tbamp see also (\Package{makeidx} package)\tbeol +\csx{appendixname} \tbamp Appendix\tbeol +\csx{bibname} \tbamp Bibliography (\Class{report},\Class{book})\tbeol +\csx{ccname} \tbamp cc (\Class{letter})\tbeol +\csx{chaptername} \tbamp Chapter (\Class{report},\Class{book})\tbeol +\csx{contentsname} \tbamp Contents\tbeol +\csx{enclname} \tbamp encl (\Class{letter})\tbeol +\csx{figurename} \tbamp Figure (for captions)\tbeol +\csx{headtoname} \tbamp To (\Class{letter})\tbeol +\csx{indexname} \tbamp Index\tbeol +\csx{listfigurename} \tbamp List of Figures\tbeol +\csx{listtablename} \tbamp List of Tables\tbeol +\csx{pagename} \tbamp Page (\Class{letter})\tbeol +\csx{partname} \tbamp Part\tbeol +\csx{refname} \tbamp References (\Class{article})\tbeol +\csx{seename} \tbamp see (\Package{makeidx} package)\tbeol +\csx{tablename} \tbamp Table (for caption) +\end{tabular} + +\Question[Q-latexwords]{Changing the words \Package{babel} uses} + +\LaTeX{} uses symbolic names for many of the automatically-generated +text it produces (special-purpose section headings, captions, etc.). +As noted in \Qref[question]{``\LaTeX{} fixed names''}{Q-fixnam} (which +includes a list of the names themselves), +this enables the user to change the +names used by the standard classes, which is particularly useful if +the document is being prepared in some language other than \LaTeX{}'s +default English. So, for example, a Danish author may wish that her +table of contents was called ``Indholdsfortegnelse'', and so +would expect to place a command +\begin{verbatim} +\renewcommand{\contentsname}% + {Indholdsfortegnelse} +\end{verbatim} +in the preamble of her document. + +However, it's natural for a user of a non-English language to use +\Package{babel}, because it offers many conveniences and typesetting +niceties for those preparing documents in those languages. In +particular, when \Package{babel} is selecting a new language, it +ensures that \LaTeX{}'s symbolic names are translated appropriately +for the language in question. Unfortunately, \Package{babel}'s choice +of names isn't always to everyone's choice, and there is still a need +for a mechanism to replace the `standard' names. + +Whenever a new language is selected, \Package{babel} resets all the +names to the settings for that language. In particular, +\Package{babel} selects the document's main language when +\cmdinvoke{begin}{document} is executed, which immediately destroys +any changes to these symbolic names made in the prologue of a document +that uses \Package{babel}. + +Therefore, babel defines a command to enable users to change the +definitions of the symbolic names, on a per-language basis: +\csx{addto}\csx{captions}\texttt{\meta{language}} is the thing +(\texttt{\meta{language}} being the language option you gave to +\Package{babel} in the first place). For example: +\begin{verbatim} +\addto\captionsdanish{% + \renewcommand{\contentsname}% + {Indholdsfortegnelse}% +} +\end{verbatim} + +\Question[Q-running-nos]{Running equation, figure and table numbering} + +Many \LaTeX{} classes (including the standard \Class{book} class) +number things per chapter; so figures in chapter 1 are numbered 1.1, +1.2, and so on. Sometimes this is not appropriate for the user's +needs. + +Short of rewriting the whole class, one may use the \Package{chngcntr} +package, which provides commands \csx{counterwithin} (which +establishes this nested numbering relationship) and +\csx{counterwithout} (which undoes it). + +So if you have figures numbered by chapter as 1.1, 1.2, 2.1, \dots{}, +the command +\begin{quote} +\begin{verbatim} +\counterwithout{figure}{chapter} +\end{verbatim} +\end{quote} +will convert them to figures 1, 2, 3, \dots{}. (Note that the command +has also removed the chapter number from the counter's definition.) + +More elaborate use could change things numbered per section to things +numbered per chapter: +\begin{quote} +\begin{verbatim} +\counterwithout{equation}{section} +\counterwithin{equation}{chapter} +\end{verbatim} +\end{quote} +(assuming there was a class that did such a thing in the first place...) + +The \Package{chngcntr} approach doesn't involve much programming, and +the enthusiastic \LaTeX{} programmer might choose to try the technique +that we had to use before the advent of \Package{chngcntr}. Each of +the packages \Package{removefr} and \Package{remreset} defines a +\csx{@removefromreset} command, and having included the package one +writes something like: +\begin{quote} +\begin{verbatim} +\makeatletter +\@removefromreset{figure}{chapter} +\makeatother +\end{verbatim} +\end{quote} +and the automatic renumbering stops. You may then need to redefine the +way in which the figure number (in this case) is printed: +\begin{quote} +\begin{verbatim} +\makeatletter +\renewcommand{\thefigure}{\@arabic\c@figure} +\makeatother +\end{verbatim} +\end{quote} +(remember to do the whole job, for every counter you want to +manipulate, within \csx{makeatletter} \dots{}\@ \csx{makeatother}). + +This technique, too, may be used to change where in a multilevel +structure a counter is reset. Suppose your class numbers figures as +\meta{chapter}.\meta{section}.\meta{figure}, and you want figures +numbered per chapter, try: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\makeatletter +\@removefromreset{figure}{section} +\@addtoreset{figure}{chapter} +\renewcommand{\thefigure}{\thechapter.\@arabic\c@figure} +\makeatother +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\makeatletter +\@removefromreset{figure}{section} +\@addtoreset{figure}{chapter} +\renewcommand{\thefigure}% + {\thechapter.\@arabic\c@figure} +\makeatother +\end{verbatim} +\end{narrowversion} +\end{quote} +(the command \csx{@addtoreset} is a part of \LaTeX{} itself). +\begin{ctanrefs} +\item[chngcntr.sty]\CTANref{chngcntr} +\item[memoir.cls]\CTANref{memoir} +\item[removefr.tex]\CTANref{removefr} (note, this is constructed as a + ``fragment'' for use within other packages: load by + \cmdinvoke{input}{removefr}) +\item[remreset.sty]Distributed as part of \CTANref{carlisle}[remreset] +\end{ctanrefs} + +\Question[Q-labelctr]{Making labels from a counter} + +Suppose we have a \LaTeX{} counter, which we've defined with +\cmdinvoke{newcounter}{foo}. We can increment the value of the counter +by \cmdinvoke{addtocounter}{foo}{1}, but that's pretty clunky for an +operation that happens so often \dots{}~so there's a command +\cmdinvoke{stepcounter}{foo} that does this special case of +increasing-by-one. + +There's an internal \LaTeX{} variable, the ``current label'', that +remembers the last `labellable' thing that \LaTeX{} has processed. +You could (if you were to insist) set that value by the relevant +\TeX{} command (having taken the necessary precautions to ensure that +the internal command worked)~--- but it's not necessary. If, instead +of either of the stepping methods above, you say +\cmdinvoke{refstepcounter}{foo}, the internal variable is set to the +new value, and (until something else comes along), \csx{label} will +refer to the counter. + +\Question[Q-oddpage]{Finding if you're on an odd or an even page} + +\Qref[Question]{Another question}{Q-marginparside} discusses the issue +of getting \csx{marginpar} commands to put their output in the correct +margin of two-sided documents. This is an example of the general +problem of knowing where a particular bit of text lies: the output +routine is asynchronous, and \AllTeX{} will usually process quite a +bit of the ``next'' page before deciding to output any page. As a +result, the |page| counter (known internally in \LaTeX{} as +\csx{c@page}) is normally only reliable when you're actually \emph{in} +the output routine. + +The solution is to use some version of the \csx{label} mechanism to +determine which side of the page you're on; the value of the page +counter that appears in a \csx{pageref} command has been inserted in +the course of the output routine, and is therefore safe. + +However, \csx{pageref} itself isn't reliable: one might hope that +\begin{quote} +\begin{verbatim} +\ifthenelse{\isodd{\pageref{foo}}}{odd}{even} +\end{verbatim} +\end{quote} +would do the necessary, but both the \Package{babel} and +\Package{hyperref} packages have been known to interfere with the +output of \csx{pageref}; be careful! + +The \Package{changepage} package needs to provide this functionality +for its own use, and therefore provides a command \csx{checkoddpage}; +this sets a private-use `label', and the page reference part of that +label is then examined (in a \Package{hyperref}-safe way) to set a +conditional \csx{ifoddpage} true if the command was issued on an odd +page. (The \Class{memoir} class has the same command.) \latex{} +users who are unfamiliar with \tex{}'s \csx{if...} commands may use +the \Package{ifthen} package: +\begin{wideversion} +\begin{quote} +\begin{verbatim} +\usepackage{ifthen,changepage} +... +\checkoddpage +\ifthenelse{\boolean{oddpage}}{}{} +\end{verbatim} +\end{quote} +\end{wideversion} +\begin{narrowversion} +\begin{quote} +\begin{verbatim} +\usepackage{ifthen,changepage} +... +\checkoddpage +\ifthenelse{\boolean{oddpage}}% + {}% + {} +\end{verbatim} +\end{quote} +\end{narrowversion} + +Of course, the `label' contributes to \LaTeX{}'s ``Rerun to get +cross-references right'' error messages\dots{} + +The Koma-Script classes have an \environment{addmargin*} environment +that also provides the sorts of facilities that the \Package{changepage} +offers. Koma-Script's supporting command: +\begin{quote} +\cmdinvoke{ifthispageodd}{}{} +\end{quote} +executes different things depending on the page number. + +The package \Package{ifoddpage} is designed to provide the same +facility; crucially, it can behave ``sensibly'' even if you are +typesetting for one-side printing only; like the \Package{changepage} +it uses a `check' command \csx{checkoddpage}. The conditional `side' +flags are set using (Plain) \TeX{} conditionals; they are defined +locally, so that you can minimise their use of \tex{} workspace~--- +see the package documentation for the somewhat tricky sequence +involved. In addition the package provides a command +\csx{ifoddpageoroneside}, which is true on odd pages of a two-side +document, or on all pages of a one-side document. Usage is: +\begin{quote} +\begin{verbatim} +\checkoddpage +\ifoddpage + odd-side text +\else + even-side text +\fi +\end{verbatim} +\end{quote} +The author's recommended usage (trickily) includes the whole operation +in a box; this has the advantage that your test will always work, but +the usual disadvantage that boxes may not split. In common uses, the +whole work will be done inside a box (as, for example, in the case of +a float), so the elaborate work proposed by the author is not +necessary. +\begin{ctanrefs} +\item[changepage.sty]\CTANref{changepage} +\item[ifoddpage.sty]\CTANref{ifoddpage} +\item[ifthen.sty]Part of the \latex{} distribution: \CTANref{latex} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\item[memoir.cls]\CTANref{memoir} +\end{ctanrefs} + +\Question[Q-labelformat]{How to change the format of labels} + +By default, when a label is created, it takes on the appearance of the +counter labelled, so the label appears as +\csx{the}\texttt{\meta{counter}}~--- what would be used if you +asked to typeset the counter in your text. This isn't always what you +need: for example, if you have nested enumerated lists with the outer +numbered and the inner labelled with letters, one might expect to want +to refer to items in the inner list as ``2(c)''. (Remember, you can +\nothtml{change the structure of list items~--- }% +\Qref{change the structure of list items}{Q-enumerate}.) +The change is of course +possible by explicit labelling of the parent and using that label to +construct the typeset result~--- something like +\begin{quote} +\begin{verbatim} +\ref{parent-item}(\ref{child-item}) +\end{verbatim} +\end{quote} +which would be both tedious and error-prone. What's more, it would be +undesirable, since you would be constructing a visual representation +which is inflexible (you couldn't change all the references to elements +of a list at one fell swoop). + +\LaTeX{} in fact has a label-formatting command built into every label +definition; by default it's null, but it's available for the user to +program. For any label \meta{counter} there's a \LaTeX{} internal +command \csx{p@}\meta{\texttt{counter}}; for example, a label definition +on an inner list item is supposedly done using the command +\cmdinvoke{p@enumii}{\csx{theenumii}}. Unfortunately, the internal +workings of this aren't quite right, and you need to patch the +\csx{refstepcounter} command: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\renewcommand*\refstepcounter[1]{% + \stepcounter{#1}% + \protected@edef\@currentlabel{% + \csname p@#1\expandafter\endcsname + \csname the#1\endcsname + }% +} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\renewcommand*\refstepcounter[1]{\stepcounter{#1}% + \protected@edef\@currentlabel{% + \csname p@#1\expandafter\endcsname + \csname the#1\endcsname + }% +} +\end{verbatim} +\end{wideversion} +\end{quote} +With the patch in place you can now, for example, change the labels on +all inner lists by adding the following code in your preamble: +\begin{quote} +\begin{verbatim} +\makeatletter +\renewcommand{\p@enumii}[1]{\theenumi(#1)} +\makeatother +\end{verbatim} +\end{quote} +This would make the labels for second-level enumerated lists appear as +``1(a)'' (and so on). The analogous change works for any counter that +gets used in a \csx{label} command. + +In fact, the \Package{fncylab} package does all the above (including +the patch to \LaTeX{} itself). With the package, the code above is +(actually quite efficiently) rendered by the command: +\begin{quote} +\begin{verbatim} +\labelformat{enumii}{\theenumi(#1)} +\end{verbatim} +\end{quote} +In fact, the above example, which we can do in several different ways, +has been rendered obsolete by the appearance of the \Package{enumitem} +package, which is discussed in the answer about % ! line break +\Qref*{decorating enumeration lists}{Q-enumerate}. +\begin{ctanrefs} +\item[enumitem.sty]\CTANref{enumitem} +\item[fncylab.sty]\CTANref{fncylab} +\end{ctanrefs} + +\Question[Q-seccntfmt]{Adjusting the presentation of section numbers} + +The general issues of adjusting the appearance of section headings are +pretty complex, and are covered in % beware line breaks (2 lines) +\latexhtml{question}{the question on} +\Qref[\htmlonly]{the style of section headings}{Q-secthead}. + +However, people regularly want merely to change the way the section +number appears in the heading, and some such people don't mind writing +out a few macros. This answer is for \emph{them}. + +The section number is typeset using the +\begin{dviversion} + \LaTeX{} internal +\end{dviversion} +\begin{hyperversion} + \Qref{\LaTeX{} internal}{Q-atsigns} +\end{hyperversion} +\csx{@seccntformat} command, which is given the ``name'' (section, +subsection, \dots{}) of the heading, as argument. Ordinarily, +\csx{@seccntformat} +merely outputs the section number, and then a \csx{quad} of space: +\begin{quote} +\begin{verbatim} +\renewcommand*{\@seccntformat}[1]{% + \csname the#1\endcsname\quad +} +\end{verbatim} +\end{quote} +Suppose you want to put a stop after every section (subsection, +subsubsection, \dots{}) number, a trivial change may be implemented by +simple modification of the command: +\begin{quote} +\begin{verbatim} +\renewcommand*{\@seccntformat}[1]{% + \csname the#1\endcsname.\quad +} +\end{verbatim} +\end{quote} +However, many people want to modify section numbers, but not +subsection numbers, or any of the others. To do this, one must make +\csx{@seccntformat} switch according to its argument. The following +technique for doing the job is slightly wasteful, but is efficient +enough for a relatively rare operation: +\begin{quote} +\begin{verbatim} +\renewcommand*{\@seccntformat}[1]{% + \csname the#1\endcsname + \csname adddot@#1\endcsname\quad +} +\end{verbatim} +\end{quote} +which uses a second-level command to provide the dot, if it has been +defined; otherwise it merely appends \csx{relax} (which does nothing +in this context). The definition of the second-level command (the +version for the \texttt{section}, here) specifies what to put after a +section number, but it could be used to put anything after it: +\begin{quote} +\begin{verbatim} +\newcommand*{\adddot@section}{.} +\end{verbatim} +\end{quote} +Note that all the command definitions above are dealing in +\Qref*{\LaTeX{} internal commands}{Q-atsigns}, so the above +code should be in a package file, for preference. + +The \Class{Koma-script} classes have different commands for specifying +changes to section number presentation: \csx{partformat}, +\csx{chapterformat} and \csx{othersectionlevelsformat}, but otherwise +their facilities are similar to those of ``raw'' \LaTeX{}. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}KOMA script bundle]\CTANref{koma-script} +\end{ctanrefs} + +\Question[Q-spaftend]{There's a space added after my environment} + +You've written your own environment \environment{env}, and it works +except that a space appears at the start of the first line of typeset +text after \cmdinvoke{end}{env}. This doesn't happen with similar +\LaTeX{}-supplied environments. + +You could impose the restriction that your users always put a +``\texttt{\textpercent{}}'' sign after the environment~\dots{}\nothtml{\@} but +\LaTeX{} environments don't require that, either. + +The \LaTeX{} environments' ``secret'' is an internal flag which causes +the unwanted spaces to be ignored. Fortunately, you don't have to use +the internal form: since 1996, \LaTeX{} has had a user command +\csx{ignorespacesafterend}, which sets the internal flag. + +\Question[Q-labundef]{Finding if a label is undefined} + +People seem to want to know (at run time) if a label is undefined (I +don't actually understand \emph{why}, particularly: it's a transient +state, and \LaTeX{} deals with it quite well). + +A resolved label is simply a command: +\csx{r@}\texttt{\meta{label-name}}; determining if the label is set is +then simply a matter of detecting if the command exists. The usual +\LaTeX{} internal way of doing this is to use the command +\csx{@ifundefined}: +\begin{quote} + \cmdinvoke*{@ifundefined}{\textup{r@}label-name}{undef-cmds}{def-cmds} +\end{quote} +In which, \meta{label-name} is exactly what you would use in +a \csx{label} command, and the remaining two arguments are command +sequences to be used if the label is undefined +(\meta{undef-cmds}) or if it is defined +(\meta{def-cmds}). + +Note that any command that incorporates \csx{@ifundefined} is naturally +fragile, so remember to create it with \csx{DeclareRobustCommand} or to +use it with \csx{protect} in a moving argument. + +If you're into this game, you may well not care about \LaTeX{}'s +warning about undefined labels at the end of the document; however, +if you are, include the command \csx{G@refundefinedtrue} in +\meta{\texttt{undef-cmds}}. + +And of course, remember you're dealing in internal commands, and pay +attention to the \Qref*{at-signs}{Q-atsigns}. + +All the above can be avoided by using the \Package{labelcas} package: +it provides commands that enable you to switch according to the state +of a single label, or the states of a list of labels. The package's +definition is a bit complicated, but the package itself is pretty +powerful. +\begin{ctanrefs} +\item[labelcas.sty]\CTANref{labelcas} +\end{ctanrefs} + +\Question[Q-addtoreset]{Master and slave counters} + +It's common to have things numbered ``per chapter'' (for example, in +the standard \Class{book} and \Class{report} classes, figures, tables +and footnotes are all numbered thus). The process of resetting is +done automatically, when the ``master'' counter is stepped (when the +\csx{chapter} command that starts chapter \meta{n} happens, the +\texttt{chapter} counter is stepped, and all the dependent counters are set +to zero). + +How would you do that for yourself? You might want to number +algorithms per section, or corollaries per theorem, for example. If +you're defining these things by hand, you declare the relationship +when you define the counter in the first place: +\begin{quote} +\cmdinvoke*{newcounter}{new-name}[master] +\end{quote} +says that every time counter \meta{master} is stepped, counter +\meta{new-name} will be reset. + +But what if you have an uncooperative package, that defines the +objects for you, but doesn't provide a programmer interface to make +the counters behave as you want? + +The \csx{newcounter} command uses a \LaTeX{} internal command, and you +can also use it: +\begin{quote} +\cmdinvoke*{@addtoreset}{new-name}{master} +\end{quote} +(but remember that it needs to be between \csx{makeatletter} and +\csx{makeatother}, or in a package of your own). + +The \Package{chngcntr} package encapsulates the \csx{@addtoreset} +command into a command \csx{counterwithin}. So: +\begin{quote} +\begin{verbatim} +\counterwithin*{corrollary}{theorem} +\end{verbatim} +\end{quote} +will make the corollary counter slave to theorem counters. The +command without its asterisk: +\begin{quote} +\begin{verbatim} +\counterwithin{corrollary}{theorem} +\end{verbatim} +\end{quote} +will do the same, and also redefine \csx{thecorollary} as % line brk! +\meta{theorem number}.\meta{corollary number}, which is a good scheme +if you ever want to refer to the corollaries~--- there are potentially +many ``corollary~1'' in any document, so it's as well to tie its number +to the counter of the theorem it belongs to. This is true of pretty +much any such counter-within-another; if you're not using the +\Package{chngcntr}, refer to the answer to % line break! +\Qref*{redefining counters' \csx{the-}commands}{Q-the-commands} for +the necessary techniques. + +Note that the technique doesn't work if the master counter is |page|, +the number of the current page. The |page| counter is stepped deep +inside the output routine, which usually gets called some time after +the text for the new page has started to appear: so special +techniques are required to deal with that. One special case is dealt +with elsewhere: \Qref*{footnotes numbered per page}{Q-footnpp}. One +of the techniques described there, using package \Package{perpage}, +may be applied to any counter. The command: +\begin{quote} +\cmdinvoke*{MakePerPage}{counter} +\end{quote} +will cause \meta{counter} to be reset for each page. The package uses +a label-like mechanism, and may require more than one run of \LaTeX{} +to stabilise counter values~--- \LaTeX{} will generate the usual +warnings about labels changing. +\begin{ctanrefs} +\item[chngcntr.sty]\CTANref{chngcntr} +\item[perpage.sty]Distributed as part \CTANref{bigfoot}[perpage] +\end{ctanrefs} + +\Question[Q-fontsize]{Fonts at arbitrary sizes} + +Almost all fonts, nowadays, are provided with \LaTeX{} control +(\extension{fd}) files, so the temptation to risk the +\Qref*{problems of \csx{newfont}}{Q-newfont*} is usually easy to +resist. + +However, one temptation remains, arising from the way that \LaTeX{} +restricts the sizes of fonts. In fact, the restriction only +significantly applies to the default (Computer Modern) and the +Cork-encoded (\acro{T}1) EC fonts, but it is widely considered to be +anomalous, nowadays. In recognition of this problem, there is a +package \Package{fix-cm} which will allow you to use the fonts, within +\LaTeX{}, at any size you choose. If you're not using scaleable +versions of the fonts, most modern distributions will just generate an +appropriate bitmap for you. + +So, suppose you want to produce a heading in Computer Modern Roman at +30 points, you might be tempted to write: +\begin{quote} +\begin{verbatim} +\newfont{\bigfont}{cmr10 at 30pt} +\begin{center} + \bigfont Huge text +\end{center} +\end{verbatim} +\end{quote} +which will indeed work, but will actually produce a worse result than +\begin{quote} +\begin{verbatim} +\usepackage{fix-cm} +... +\begin{center} + \fontsize{30}{36}\selectfont + Huge text +\end{center} +\end{verbatim} +\end{quote} +Note that the \Package{fix-cm} package was not distributed until the +December 2003 edition of \LaTeX{}; if you have an older distribution, +the packages \Package{type1cm} (for \acro{CM} fonts) and +\Package{type1ec} (for \acro{EC} fonts) are available. + +\Package{Fix-cm} doesn't has one or two omissions~--- fonts the \latex{} +team did not consider useful, or something; the CM dunhill fonts (as +CM, but with stretched ascenders) and the CM fibonacci font (which is only +available in 8-point design size) are certainly missing. If +\Package{fix-cm} doesn't do the job, try the \Package{type1xx} +packages, or the \Package{anyfontsize} package. + +A further alternative might be to switch to the +\Qref*{\FontName{Latin} \FontName{Modern} fonts}{Q-uselmfonts} (which +provide a close simulacrum of the \FontName{Computer} +\FontName{Modern} set); these fonts were scaleable from their first +distribution, and don't therefore need any such trick as the above. +\begin{ctanrefs} +\item[anyfontsize.sty]\CTANref{anyfontsize} +\item[fix-cm.sty]Distributed as part of \CTANref{latex}[fix-cm] (an unpacked + version is available at \CTANref{fix-cm}) +\item[\nothtml{\rmfamily}\FontName{Latin} \FontName{Modern} fonts]\CTANref{lm} +\item[type1cm.sty]\CTANref{type1cm} +\item[type1ec.sty]\CTANref{type1ec} (the package is actually part of + the \CTANref{cm-super} distribution, but it works happily in + the absence of the scaled fonts) +\end{ctanrefs} +\LastEdit{2013-06-04} + +\Question[Q-latexqual]{The quality of your \LaTeX{}} + +The \Package{l2tabu} tutorial (mentioned in % ! line break +\Qref[question]{online introductions}{Q-man-latex}) is undoubtedly a +good read. + +However, it's always difficult to remember the things you should +\emph{not} do, when there are so many things to remember that you +really must do: some automation is useful\dots{}. + +The nicely-named \Package{nag} allows you to apply a configurable set +of checks to your document, as you run it through \LaTeX{}; you get +messages like: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +Package nag Warning: Command \bf is an old LaTeX 2.09 command. +(nag) Use \bfseries or \textbf instead on input line 30. +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +Package nag Warning: Command \bf is an old + LaTeX 2.09 command. +(nag) Use \bfseries or \textbf + instead on input line 30. +\end{verbatim} +\end{narrowversion} +\end{quote} +\begin{wideversion} + (the package provides a demo file which contains most of the sorts + of errors you might make~--- the example is one of them). +\end{wideversion} +\begin{narrowversion} + (the error lines above represent two lines which have been wrapped; + the package provides a demo file which contains most of the sorts of + errors you might make~--- the example is one of them). +\end{narrowversion} +While \Package{l2tabu} and \Package{nag} alert you to \emph{possible} +programming errors, you should not forget that they are merely +commenting on \emph{style}; don't assume that a \Package{nag} error is +going to damn your code~--- rather, note the issue and try to train +your fingers not to do the same ``next time''. + +The \ProgName{lacheck} program analyses your source and comments on +it; its view of what is ``bad'' is \emph{very} subjective (the +documentation says), but it can be useful. + +There's also a web site +\href{http://www.kohm.name/markus/texidate.html}{TeXidate} +which will do a static analysis of your document (unfortunately, you +have to paste your document source into a text window). The site +doesn't seem as comprehensive as \Package{nag}, but it allows you to +download its script, which you can then juggle with to make it more +draconian. +\begin{ctanrefs} +\item[l2tabu]Browse \CTANref{l2tabu} for a copy of the document in a + language that is convenient for you +\item[lacheck]\CTANref{lacheck} +\item[nag.sty]\CTANref{nag} +\end{ctanrefs} +\LastEdit{2012-10-09} + +\Question[Q-ltx-csv]{Process a \acro{CSV} file in \latex{}} + +Comma-separated-variable (\acro{CSV}) files are a common means of +interchanging simple data between applications; for example, most +spreadsheet applications can provide files containing tables of +numbers with commas between them. One can envisage these tables as +``\latex{} tables'', and the packages to process them all provide +table generation, one way or another. + +For rather a long time, the canonical tools for dealing with such +files have been those provided in the \Package{datatool} bundle; +packages in the bundle allow the user to write procedures to process +numbers, currency amounts, names, etc., and to display them in tables +(including pie charts). + +The \Package{csvsimple} does similar tasks. Its processing is +controlled by keys established via the \Package{pgfkeys} package, +which define how each row of the \acro{CSV} file is to be processed. + +For usage ``nearer to the bone'', one might consider the commands +\csx{docsvlist} and \csx{forcsvlist} (from the \Package{etoolbox} +package). The first uses the time-honoured \latex{} technique of +changing the definition of a \csx{do} command; it runs through the +list, and processes every item of the list as the argument of the +\csx{do} command; so: +\begin{quote} +\begin{verbatim} +\begin{itemize} +\renewcommand*{\do}[1]{\item #1} +\docsvlist{item1, item2, {item3a, item3b}, item4} +\end{itemize} +\end{verbatim} +\end{quote} +will convert the elements of a \acro{CSV} list into an itemised list. + +The macro \csx{forcsvlist} applies a function to each element of a +\acro{CSV} list; this can of course be used to implement +\csx{docsvlist}, at the cost of a little clarity. +\begin{ctanrefs} +\item[csvsimple.sty]\CTANref{csvsimple} +\item[datatool \nothtml{\rmfamily}bundle]\CTANref{datatool} +\item[etoolbox.sty]\CTANref{etoolbox} +\item[pgfkeys.sty]Distributed as part of \CTANref{pgf} +\end{ctanrefs} +\LastEdit*{2013-09-10} diff --git a/help/uk-tex-faq/faq-projects.tex b/help/uk-tex-faq/faq-projects.tex new file mode 100644 index 0000000000..e7a616ace8 --- /dev/null +++ b/help/uk-tex-faq/faq-projects.tex @@ -0,0 +1,644 @@ +% $Id: faq-projects.tex,v 1.29 2014/01/28 18:17:36 rf10 Exp rf10 $ + +\section{Current \TeX{}-related projects} + +\Question[Q-LaTeX3]{The \LaTeX{} project} + +The \LaTeX{} project team (see \URL{http://www.latex-project.org/latex3.html}) +is a small group of volunteers whose aim is +to produce a major new document processing system based on the +principles pioneered by Leslie Lamport in the current \LaTeX{}. The +new system is (provisionally) called \LaTeX{}3; it +will remain freely available and it will be fully documented at +all levels. + +The \LaTeX{} team's first product (\LaTeXe{}) was delivered in 1994 +(it's now properly called ``\LaTeX{}'', since no other version is current). + +\LaTeXe{} was intended as a consolidation exercise, unifying several +sub-variants of \LaTeX{} while changing nothing whose change wasn't +absolutely necessary. This has permitted the team to support a single +version of \LaTeX{}, in parallel with development of \LaTeX{}3. + +Some of the older discussion papers about directions for \LaTeX{}3 are +to be found on \acro{CTAN}; other (published) articles are to be found +on the project web site (\URL{http://www.latex-project.org/papers/}). + +Some of the project's experimental code is visible on the net: +\begin{itemize} +\item via \URL{http://www.latex-project.org/code.html}, which points + to the project's \acro{SVN} repository; +\item via the project's + \href{https://github.com/latex3/svn-mirror}{\emph{GitHub} mirror}; +\item from \acro{CTAN}: snapshots of two major collections from the + code, \Package{l3kernel} (supporting \LaTeX{}3 coding conventions in + a \LaTeXe{} environment), \Package{l3packages} (a first cut of a + ``document designer's interface'') as well as + \Package{l3experimental} (new stuff that's still under + development). +\end{itemize} +The packages \Package{l3kernel} and \Package{l3packages} provide an +``experimental harness'' that may be used as a testbed for \latex{}3 +work. + +Note that \Package{l3kernel} introduces a coding structure quite +different from earlier \latex{} code; a few hardy authors, who are not +members of the project, are nevertheless using it in their development +work. + +Anyone may participate in discussions of the future of \LaTeX{} +through the mailing list \texttt{latex-l}; some development work +(outside the project) is discussed on the list. Subscribe to the list +by sending a message `\texttt{subscribe latex-l <\emph{your name}>}' +to \mailto{listserv@urz.Uni-Heidelberg.de} +\begin{ctanrefs} +\item[l3experimental \nothtml{\rmfamily}bundle]\CTANref{l3experimental} +\item[l3kernel \nothtml{\rmfamily}bundle]\CTANref{l3kernel} +\item[\nothtml{\rmfamily}\LaTeX{} project publications]\CTANref{ltx3pub} +\item[l3packages \nothtml{\rmfamily}bundle]\CTANref{l3packages} +\end{ctanrefs} +\LastEdit{2012-02-07} + +\Question[Q-mathml]{Future \acro{WWW} technologies and \AllTeX{}} + +An earlier answer % ! line break +(\Qref[number]{``converting to \acro{HTML}''}{Q-LaTeX2HTML}) +addresses the issue of converting existing \AllTeX{} documents for +viewing on the Web as \acro{HTML}. All the present techniques are +somewhat flawed: the answer explains why. + +However, things are changing, with +better font availability, cunning \acro{HTML} programming and the +support for new Web standards. +\begin{description} +\item[Font technologies] Direct representation of mathematics in + browsers has been hampered up to now by the limited range of symbols + in the fonts whose availability designers can count on. Some existing + \AllTeX{} to \acro{HTML} converters provide maths symbols by + hitching them to alternate font face specifications for standard + code points in a non-standard way. This does nothing for the + universality of the \acro{HTML} so generated. + + Now, however, free Unicode-encoded OpenType fonts, with coverage of + mathematical symbols, are starting to appear. The much-heralded + \href{http://www.stixfonts.org/}{\FontName{STIX} fonts} are now + available on \acro{CTAN}, and a tweaked version + (\FontName{XITS}) and \FontName{Asana Math} are also + available. The \acro{STIX} project has still not released macros + for using the fonts, but the \Package{unicode-math} package will do + what is necessary under \xetex{} and \luatex{}, and the fonts can of + course be used in browsers. +%% In the near future, we can expect rather wide availability of +%% Unicode fonts with good coverage of symbols, which should make life +%% easier for those who need to represent mathematics. +\item[\acro{XML}] The core of the range of new standards is + \acro{XML}, which provides a framework for better structured markup; + limited support for it has already appeared in some browsers. + + Conversion of \AllTeX{} source to \acro{XML} is already available + (through \TeX{}4ht at least), and work continues in that arena. The + alternative, authoring in \acro{XML} (thus producing documents that + are immediately Web-friendly, if not ready) and using \AllTeX{} to + typeset is also well advanced. One useful technique is + \Qref*{\emph{transforming} the \acro{XML} to \LaTeX{}}{Q-SGML2TeX}, + using an \acro{XSLT} stylesheet or code for an \acro{XML} library, + and then simply using \LaTeX{}; alternatively, one may + \Qref*{typeset direct from the \acro{XML} source}{Q-readML}. +\item[Direct representation of mathematics] + Math\acro{ML} is a standard for representing maths on the Web; its + original version was distinctly limited, but version 2 of Math\acro{ML} + has had major browser support since 2002 with richness of mathematical + content for online purposes approaching that of \TeX{} for print. + Browser support for Math\acro{ML} is provided by \ProgName{amaya}, the + `Open Source' browser \ProgName{mozilla} (and its derivatives + including \ProgName{NetScape}, \ProgName{Firefox} and \ProgName{Galeon}) and + \ProgName{Internet Explorer} when equipped with a suitable plug-in + such as \ProgName{MathPlayer}. + There's evidence that \AllTeX{} users are starting to use such + browsers. Some believe that \acro{XHTML}+Math\acro{ML} now provides + better online viewing than \acro{PDF}. + Work to produce \acro{XHTML}+Math\acro{ML} is well advanced in both the + \TeX{}4ht and \ProgName{TtH} projects for \AllTeX{} conversion. +%% Such conversion, however, has limits of soundness unless one +%% is very much aware of the needs of one's conversion program +%% and adapts one's usage of \AllTeX{} accordingly. + + The \href{http://www.mathjax.org}{\ProgName{MathJax}} engine will process the + content of \latex{} \csx{[} \dots{}~\csx{]} and \csx{(} \dots{}~\csx{)} + `environments' in an \acro{HTML} document, to produce mathematical + output that may (for example) be cut-and-pasted into other programs. + + Incorporation into your document can be +\begin{wideversion} + as simple as incorporating: +\begin{verbatim} + +\end{verbatim} + into the header of your \acro{HTML} document, +\end{wideversion} +\begin{narrowversion} + incorporating the script~--- + \url{http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML} + ---~as the \texttt{src} tab of a \texttt{script type="text/javascript"} + element in the header of your \acro{HTML} document, +\end{narrowversion} + though the \href{http://www.mathjax.org/}{MathJax project's site} + also allows you to download your own copy and install it on one of + \emph{your} servers. \ProgName{MathJax} is open source software, so + you could, in principle, extend it to do even more eccentric tasks. + + An approach different from \AllTeX{} conversion is taken by + the \href{http://www.albany.edu/~hammond/gellmu/}{\emph{GELLMU} Project}. + Its \emph{article} \acro{XML} document type, which has a markup vocabulary + close to \LaTeX{} that can be edited using \LaTeX{}-like markup + (even though it is not \LaTeX{}~--- so far), comes with translators + that make both \acro{PDF} (via \emph{pdflatex}) and + \acro{XHTML}+Math\acro{ML}. Such an approach avoids the inherent + limitations of the ``traditional'' \AllTeX{} translation processes, + which have traps that can be sprung by unfettered use of \AllTeX{} + markup. +\item[Graphics] + \acro{SVG} is a standard for graphics representation on the web. + While the natural use is for converting existing figures, + representations of formulas are also possible, in place of the separate + bitmaps that have been used in the past (and while we wait for the + wider deployment of Math\acro{ML}). + + Browser plug-ins, that deal with \acro{SVG} are already available + (Adobe offer one, for example). More recently, the open source + graphics editor \href{http://www.inkscape.org/}{\ProgName{Inkscape}} + has appeared, and has been reported to be useful for + \acro{SVG}-related work in at least one \TeX{}-related project. Be + aware that the developers of \ProgName{Inkscape} have no illusions + about being able to replace commercial software, yet\dots{} +\item[Direct use of \TeX{} markup] + Some time back, \acro{IBM} developed a browser plug-in called + TechExplorer, which would display \AllTeX{} documents direct in a + browser. Over the years, it developed into a Math\acro{ML} browser + plug-in, while still retaining its \AllTeX{} abilities, but it's now + distributed (free for Linux and Windows platforms) by + \href{http://www.integretechpub.com/}{Integre Technical Publishing}. + + The disadvantage of the TechExplorer approach is that it places the + onus on the browser user; and however technically proficient + \emph{you} are, it's never safe to assume too much of your readers. + An interesting alternative is + \href{http://www.forkosh.com/mathtex.html}{Math\TeX{}}, which sits + on your server as a \acro{CGI} script, and you use it to include + your \TeX{}, in your \acro{HTML}, as if it were an image: +\begin{quote} +\begin{wideversion} +\begin{verbatim} + +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} + +\end{verbatim} +\end{narrowversion} +\end{quote} +(\Package{Mathtex} supersedes the author's earlier \Package{mimetex}.) +\end{description} +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Asana Math fonts]\CTANref{asana-math} +\item[GELLMU]\CTANref{gellmu} +\item[MathTeX]\CTANref{MathTeX} +\item[MimeTeX]\CTANref{MimeTeX} +\item[\nothtml{\rmfamily}STIX fonts]\CTANref{stix} +\item[tex4ht]\CTANref{tex4ht} (but see \url{http://tug.org/tex4ht/}) +\item[unicode-math.sty]\CTANref{unicode-math} +\item[\nothtml{\rmfamily}XITS fonts]\CTANref{xits} +\end{ctanrefs} +\LastEdit{2011-10-17} + +\Question[Q-textrace]{Making outline fonts from \MF{}} + +\ProgName{TeXtrace}, originally developed by P\'eter Szab\'o, is a +bundle of Unix scripts that use Martin Weber's freeware boundary +tracing package +\href{http://autotrace.sourceforge.net}{\ProgName{autotrace}} to +generate Type~1 outline fonts from \MF{} bitmap +font outputs. The result is unlikely ever to be of the quality of +the commercially-produced Type~1 font, but there's always the +\href{http://fontforge.sourceforge.net/}{\ProgName{FontForge}} font +editor to tidy things. Whatever, there +remain fonts which many people find useful and which fail to attract +the paid experts, and auto-tracing is providing a useful service here. +Notable sets of +fonts generated using \ProgName{TeXtrace} are P\'eter Szab\'o's own +\acro{EC}/\acro{TC} font set \FontName{tt2001} and Vladimir Volovich's +\acro{CM}-Super set, which covers the \acro{EC}, \acro{TC}, and the +Cyrillic \acro{LH} font sets (for details of both of which sets, see +\Qref[answer]{``8-bit'' type 1 fonts}{Q-type1T1}). + +Another system, which arrived slightly later, is +\href{http://www.cs.uu.nl/~hanwen/mftrace/}{\ProgName{mftrace}}: +this is a small \ProgName{Python} program that does the same job. +\ProgName{Mftrace} may use either \ProgName{autotrace} (like +\ProgName{TeXtrace}) or Peter Selinger's +\href{http://potrace.sourceforge.net}{\ProgName{potrace}} to produce +the initial outlines to process. \ProgName{Mftrace} is said to be +more flexible, and easier to use, than is \ProgName{TeXtrace}, but both systems +are increasingly being used to provide Type~1 fonts to the public domain. + +The \ProgName{MetaType1} system aims to use \MF{} font sources, by way +of \MP{} and a bunch of scripts and so on, to produce high-quality +Type~1 fonts. The first results, the % ! line break +\Qref*{\Package{Latin Modern} fonts}{Q-type1T1}, are now +well-established, and a bunch of existing designs have been reworked +in MetaType1 format. + +\Package{Mf2pt1} is another translator of \MF{} font sources by way of +\MP{}; in addition, +available, \Package{mf2pt1} will use +\href{http://fontforge.sourceforge.net/}{\ProgName{fontforge}} (if it's +available) to auto-hint the result of its conversion. +(\Package{Mf2pt1} is also written in \ProgName{perl}.) +\begin{ctanrefs} +\item[MetaType1]\CTANref{metatype1} +\item[mf2pt1]\CTANref{mf2pt1} +\end{ctanrefs} + +\Question[Q-WYGexpts]{The \TeX{} document preparation environment} + +``\Qref*{Why \TeX{} is not \WYSIWYG{}}{Q-notWYSIWYG}'' +outlines the reasons (or excuses) for the huge disparity of user +interface between ``typical'' \TeX{} environments and commercial word +processors. + +Nowadays, at last, there is a range of tools available that try either +to bridge or to close the gap. One range modestly focuses on +providing the user with a legible source document. At the other +extreme we have \href{http://www.texmacs.org}{\ProgName{TeXmacs}}, +a~document processor using +\TeX{}'s algorithms and fonts for both editor display and printing. +\ProgName{TeXmacs} does not use the \TeX{} +language itself (though among other formats, \LaTeX{} may be exported +and imported). A bit closer to \LaTeX{} is +\href{http://www.lyx.org/}{LyX}, which has its own +editor display and file formats as well, but does its print output by +exporting to \LaTeX{}. The editor display merely resembles the +printed output, but you have the possibility of entering arbitrary +\LaTeX{} code. If you use constructs that LyX does not +understand, it will just display them as source text marked red, but +will properly export them. + +Since a lot of work is needed to create an editor from scratch that +actually is good at editing (as well as catering for \TeX{}), it is +perhaps no accident that several approaches have been implemented +using the extensible \ProgName{emacs} editor. The low end of the +prettifying range is occupied by syntax highlighting: marking \TeX{} +tokens, comments and other stuff with special colours. +Many free editors (including \ProgName{emacs}) can cater for \TeX{} in +this way. Under Windows, one of the more popular editors with such +support is the +Shareware product \href{http://www.winedt.com/}{\ProgName{winedt}}. +Continuing the range of +tools prettifying your input, we have the \ProgName{emacs} package +\href{http://x-symbol.sourceforge.net}{\Package{x-symbol}}, which does +the \WYSIWYG{} part of its work by replacing single \TeX{} tokens and +accented letter sequences with appropriate-looking characters on the +screen. + +A different type of tool focuses on making update and access to +previews of the typeset document more immediate. A recent addition +in several viewers, editors and \TeX{} executables are so-called +`source specials' for cross-navigation. When \TeX{} compiles a +document, it will upon request insert special markers for every input +line into the typeset output. The markers are interpreted by the \acro{DVI} +previewer which can be made to let its display track the page +corresponding to the editor input position, or to let the editor jump +to a source line corresponding to a click in the preview window. + +An \ProgName{emacs} package that combines this sort of editor movement +tracking with automatic fast recompilations (through the use of dumped +formats) is +\href{http://pauillac.inria.fr/whizzytex/}{\Package{WhizzyTeX}} + which is best used with a previewer by the +same author. + +Another \ProgName{emacs} package called +\href{http://preview-latex.sourceforge.net}{\Package{preview-latex}} +tries to solve +the problem of visual correlation between source and previews in a +more direct way: it uses a \LaTeX{} package to chop the document source +into interesting fragments (like figures, text or display math) which +it runs through \LaTeX{} and replaces the source text of those +fragments with the corresponding rendered output images. Since it +does not know about the structure of the images, at the actual cursor +position the source text is displayed while editing rather than the +preview. This approach is more or less a hybrid of the source +prettifying and fast preview approaches since it works in the source +buffer but uses actual previews rendered by \LaTeX{}. + +A more ambitious contender is called \TeX{}lite. This +system is only available on request from its author; +it continuously updates its screen with the help of a special version +of \TeX{} dumping its state in a compressed format at each page and +using hooks into \TeX{}'s line breaking mechanism for reformatting +paragraphs on the fly. That way, it can render the output from the +edited \TeX{} code with interactive speed on-screen, and it offers the +possibility of editing directly in the preview window. + +That many of these systems occupy slightly different niches can be +seen by comparing the range of the +\ProgName{emacs}-based solutions ranging from syntax highlighting to instant +previewing: all of them can be activated at the same time without +actually interfering in their respective tasks. + +The different approaches offer various choices differing in the +immediacy of their response, the screen area they work on (source or +separate window), degree of correspondence of the display to the final +output, and the balance they strike between visual aid and visual +distraction. +\begin{ctanrefs} +\item[preview-latex]Distributed as part of \CTANref{auctex}[preview-latex] +\item[texmacs]Browse \CTANref{texmacs} +\end{ctanrefs} + +\Question[Q-omegaleph]{Omega and Aleph} + +Omega\nothtml{ (\ensuremath{\Omega})} was developed as an extension of +\TeX{}, to use with multilingual texts, expressed in a variety of +input encodings. Omega uses 16-bit, Unicode-encoded, characters. It +provides many innovative concepts, notably including the ``translation +process'' that takes a character stream and transforms it according to +various processes that may be internally specified, or be a separate +program. + +While Omega showed a lot of promise at its mid-1990s announcement, +progress was slow, and development was essentially dead by the time +that one of the original developers withdrew (taking with him a bunch +of research students). + +Before that distressing event, a separate thread of development had +started, to produce a program % !avoid space between Aleph and comma +called Aleph\nothtml{ (\ensuremath{\aleph})}, which merged the facilities of +\Qref*{\eTeX{}}{Q-etex} into a stable Omega codebase and added other +extensions. Aleph also proved an attractive platform for many people; +but its development, too, has dried up. + +A presentation at Euro\TeX{} 2006 claimed that development of Omega +was picking up again, in parallel with research into what the (new) +developers consider a rational scheme for supporting \TeX{}-style +typesetting. The new system was to be known as Omega-2 +(\latexhtml{\ensuremath{\Omega_2}}{Omega subscript 2}), and was to be +designed in a modular fashion so that support of new facilities (such +as use of advanced OpenType fonts) could be added in a relatively +straightforward fashion. A quick web search leads to a recommendation +that potential users consider \Qref*{\luatex{}}{Q-luatex} instead; +fortunately, lessons learned in Aleph project have been carried +forward in the development of \luatex{}. + +\Question[Q-xetex]{\xetex{}} + +\href{http://scripts.sil.org/xetex}{\xetex{}}, by Jonathan Kew, is a +successor to the shareware TeX/GX program for Macintoshes. It was +developed as a \acro{WEB} `change file' applied to the original source +of \tex{}; the main changes include: +\begin{description} +\item[The input stage] \xetex{} by default reads Unicode (UTF-8, for + instance), although it's also capable of interpreting differently + encoded files (for backwards compatibility). Multibyte characters + are reduced to a single internal character upon reading, so they are + considered as a unique entity when tokenization is performed. (So, + for example, you can have command names in cyrillic, if you must, + but such a practice is not recommended.) +\item[The font management] a substantial revision has added support + for OpenType and TrueType fonts, delegating some parts to + third-party libraries. +\item[The maths font set up] \xetex{} introduces new primitives for + extending the \csx{mathcode} and \csx{mathchardef} commands in TeX, + allowing the user to specify characters in the whole Unicode set and + in 256 `math families' (\tex{} only has 16, which limits some maths + coding techniques). +\item[``Post-processing'' features (A)] \xetex{} links to the + \ProgName{teckit} library so it can apply a \extension{map} file + that allows transformation of characters in already formed token + lists, before they are processed in the ``stomach'' for typesetting. + In this way, a declaration ``\texttt{Ligatures=TeX}'' is provided, + which attaches a map directive to the font that transforms the + character combinations (familiar to \tex{} users) into a single + character; for instance \texttt{-{}-{}-} is transformed into + ``\textemdash''. +\item[``Post-processing'' features (B)] Characters can be assigned to + an ``interchar token class'' and it is possible to specify tokens to + be added when there is a transition from one class to another. The + packages \Package{polyglossia}, \Package{xeCJK} and + \Package{ucharclasses} exploit this feature. +\end{description} +Otherwise, the process of typesetting is essentially the same as +\tex{}'s. (However some changes have also been made in the +hyphenation stage that may give slightly different results if the same +document is compiled with \pdftex{} or \xetex{}.) +\begin{ctanrefs} +\item[polyglossia.sty]\CTANref{polyglossia} +\item[xeCJK.sty]\CTANref{xecjk} +\item[ucharclasses.sty]\CTANref{ucharclasses} +\end{ctanrefs} +\LastEdit{2013-02-21} + + +\Question[Q-luatex]{\PDFTeX{} and \LuaTeX{}} + +Elsewhere in these \acro{FAQ}s, we learn that development of +\Qref*{\PDFTeX{}}{Q-whatpdftex} is ``in essence'' complete~--- no new +facilities are being developed at the time of writing. The \PDFTeX{} +team has announced that they have frozen \PDFTeX{}'s specification in +its current state (version 1.40.11), and that nothing but bug +corrections will be provided up to the time of the final release, +\PDFTeX{} 1.50.0. (The interpretation of the statement seems to allow +sensible changes that are beyond any reasonable definition of +\emph{bug}\dots{}) + +As \PDFTeX{} development ran down, +development of a new system, \LuaTeX{} was started. +\href{http://www.lua.org/}{\ProgName{Lua}} is a interpreter designed +to be incorporated into other applications. \LuaTeX{} consists of a +\TeX{}-like engine with a \ProgName{lua} interpreter `embedded' in it; +the \ProgName{lua} interpreter has access to many of the data +structures used for typesetting, so that the programmer may also +interpolate chunks of \ProgName{lua} code into their \AllTeX{} macros, +or as `call-backs' for use when the \TeX{}-like engine does certain +operations. + +This arrangement offers the prospect of a ``semi-soft'' typesetting +engine: it will have its basic behaviour, but the user gets to +redefine functionality if an idea occurs~--- there will be no need to +persuade the world first, and then find a willing developer to work on +the sources of of the distribution. + +The \href{http://www.luatex.org/}{\LuaTeX{} project} is (with monetary +support from various sources) pursuing avenues that many of the other +current projects have in their sights, notably Unicode character +representations and support for OpenType fonts. The intention is +to integrate the extensions pioneered by \Qref*{Aleph}{Q-omegaleph}. +Users may also care to view the % ! line break +\href{http://www.luatex.org/documentation.html}{\luatex{} documentation page} +or the \href{http://wiki.luatex.org}{\luatex{} \acro{WIKI}} + +\texlive{} (2013) holds version 0.76.0 of \luatex{}. This version +demonstrates the ``final functionality'', though the project +remains a \ensuremath{\beta}-release. Functional stability was first +declared for version 0.50.0, released near the end of December 2009. + +\CONTeXT{} `Mark 4' can already make use of \LuaTeX{}; much of its +code already appears in two forms~--- a \TeX{}-based version +(\extension{mkii}) and a `\extension{mkiv}' version (new functionality +typically \emph{only} appears in `\extension{mkiv}' form), which uses +\luatex{} extensions (including \ProgName{lua} scripting). \LaTeX{} +packages that support its use are appearing (some of them providing +re-implementations of existing \context{} code). + +\latex{} running over \luatex{} (commonly known as Lua\latex{}) is not +an ``official'' entity (yet), but useful packages are +appearing (i.e., the \ctan{} path \path{macros/luatex/latex} holds +several items). +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\luatex{} snapshot]\CTANref{luatex} +\item[\nothtml{\rmfamily}\pdftex{} distribution]\CTANref{pdftex} +\end{ctanrefs} +\LastEdit{2013-05-21} + +\Question[Q-ant]{The \textsf{ANT} typesetting system} + +Achim Blumensath's \href{http://ant.berlios.de}{\textsf{ANT}} project +aims not to replicate \TeX{} with a different implementation +technique, but rather to provide a replacement for \TeX{} which uses +\TeX{}-like typesetting algorithms in a very different programming +environment. \textsf{ANT} remains under development, but it is now +approaching the status of a usable typesetting system. + +\textsf{ANT}'s markup language is immediately recognisable to the +\AllTeX{} user, but the scheme of implementing design in +\textsf{ANT}'s own implementation language (presently +\ProgName{OCaml}) comes as a pleasant surprise to the jaded \acro{FAQ} +writer. This architecture holds the promise of a system that avoids a +set of serious problems with \TeX{}'s user interface: those that +derive from the design language being the same as the markup language. +\begin{ctanrefs} +\item[\textsf{ANT}]\CTANref{ant} +\end{ctanrefs} + +\Question[Q-extex]{The \ExTeX{} project} + +\href{http://www.extex.org/}{The \ExTeX{} project} is +building on the experience of the many existing \TeX{} development and +extension projects, to develop a new \TeX{}-like system. The system +is to be developed in Java (like the ill-fated \NTS{} project). + +While \ExTeX{} will implement all of \TeX{}'s primitives, some may be +marked as obsolete, and ``modern'' alternatives provided (an obvious +example is the primitive \csx{input} command, whose syntax inevitably +makes life difficult for users of modern operating system file +paths). Desirable extensions from \Qref*{\eTeX{}}{Q-etex}, +\Qref*{\PDFTeX{}}{Q-whatpdftex} and \Qref*{\ensuremath{\Omega}}{Q-omegaleph} +have been identified. + +Usability will be another focus of the work: debugging support and log +filtering mechanisms will please those who have long struggled with +\TeX{} macros. + +\ExTeX{} will accept Unicode input, from the start. In the longer +term, drawing primitives are to be considered. + +\Question[Q-biblatex]{Replacing the \BibTeX{}--\LaTeX{} mechanism} + +Producing a successor to \BibTeX{} has long been a favoured activity +among a certain class of \TeX{}-users; the author has seen reports of +progress (on several projects), over the years, but few that claim to +be ready for ``real-world'' use. + +Few would deny that \BibTeX{} is ripe for renewal: as originally +conceived, it was a program for creating bibliographies for technical +documents, in English. People have contributed mechanisms for a +degree of multilingual use (whose techniques are arcane, and quite +likely inextensible), while an extension (\ProgName{bibtex8}) allows +use with 8-bit character codes, thus providing some multilingual +capabilities. In addition, specialist \BibTeX{} style files are +available for use in non-technical papers. + +\BibTeX{} uses a style language whose mechanisms are unfamiliar to +most current programmers: it's difficult to learn, but since there are +few opportunities to write the language, it's also difficult to become +fluent (in the way that so many people fluently write the equally +arcane \TeX{} macro language). + +Oren Patashnik (the author of \BibTeX{}) summarises the issues as he +sees them, in a % !line break +\href{http://tug.org/TUGboat/Articles/tb24-1/patashnik.pdf}{\acro{TUG} conference paper from 2003} +that seems to suggest that we might expect a +\BibTeX{}~1.0 \dots{} which hasn't (yet) appeared. + +In the absence of \BibTeX{}~1.0, what do we need from the bibliography +system of the future?~--- simple: a superset of what \BibTeX{} does +(or can be made to do), preferably implementing a simpler style +language, and with coherent multilingual capabilities. + +There are two parts to a bibliography system; processing the database +of citations, and typesetting the results. The existing \bibtex{} +system provides a means of processing the database, and there are +macros built into \latex{}, as well as many \latex{} packages, that +process the results. + +Of the direct \BibTeX{} replacements, only two have been submitted to +\acro{CTAN}: Cross\TeX{} and \ProgName{biber}. + +Cross\TeX{}'s language feels familiar to the existing user of +\BibTeX{}, but it's redesigned in an object-oriented style, and looks +(to a non-user) as if it may well be adequately flexible. It is said +to operate as a \bibtex{} replacement. + +Cross\TeX{}'s team respond to queries, and seem well aware of the +need for multilingual support, though it isn't currently offered. + +\ProgName{Biber} is intimately associated with the \latex{} package +\Package{biblatex}; it is logically a \bibtex{} replacement, but is also +capable of using bibliography databases in its own +\ProgName{biblatexml} (\acro{XML}-based) format. \Package{Biblatex} +can also use \bibtex{}, but \ProgName{biber} opens up a far wider +range of possibilities, including full Unicode support. + +\Package{Biblatex} is a processor for the output of an application +such as \ProgName{biber} or \bibtex{}; the style of citations and of +the bibliography itself (in your document) is determined by the way +your \Package{biblatex} style has been set up, not on some +\bibtex{}-\latex{} package combination. \Package{Biblatex}'s +structure thus eliminates the collections of \BibTeX{} styles, at a +stroke; it comes with a basic set of styles, and details are +determined by options, set at package loading time. The author, +Philipp Lehman, evaluated the whole field of bibliography software +before starting, and as a result the package provides answers to +many of the questions asked in the bibliography sections of these +\acro{FAQ}s. + +\Package{Biblatex} was released as experimental software, but it's +clear that many users are already using it happily; Lehman is +responsive to problem reports, at the moment, but a \emph{de facto} +set of expert users is already establishing itself. A set of +contributed styles has appeared, which cover some of the trickier +bibliography styles. The road map of the project shows that we are +now working on the final \emph{beta} releases before the ``stable'' +\Package{biblatex}~1.0. + +Finally, \Package{Amsrefs} uses a transformed \extension{bib} file, +which is expressed as \LaTeX{} macros. (The package provides a +\BibTeX{} style that performs the transformation, so that a \LaTeX{} +source containing a \cmdinvoke{nocite}{*} command enables \BibTeX{} to +produce a usable \Package{amsrefs} bibliography database.) + +\Package{Amsrefs} is maintained by the AMS as part of its author +support programme, +\begin{ctanrefs} +\item[amsrefs.sty]\CTANref{amsrefs} +\item[biber]\CTANref{biber} +\item[biblatex.sty]\CTANref{biblatex} +\item[bibtex8]\CTANref{bibtex8} +\item[\nothtml{\rmfamily}biblatex contributions]\CTANref{biblatex-contrib} +\item[\nothtml{\rmfamily}CrossTeX]\CTANref{crosstex} +\end{ctanrefs} + diff --git a/help/uk-tex-faq/faq-support.tex b/help/uk-tex-faq/faq-support.tex new file mode 100644 index 0000000000..1a08d1865c --- /dev/null +++ b/help/uk-tex-faq/faq-support.tex @@ -0,0 +1,188 @@ +% $Id: faq-support.tex,v 1.9 2014/01/28 18:17:36 rf10 Exp rf10 $ + +\section{Support Packages for \TeX{}} + +\Question[Q-xfigetc]{\AllTeX{}-friendly drawing packages} +\AliasQuestion{Q-xfig} +\AliasQuestion{Q-figetc} + +\ProgName{(X)Fig} is a menu driven tool that allows you to +draw objects on the screen of an \acro{X} workstation; \ProgName{transfig} +is a set of tools which translate the code \ProgName{fig}. The list +of export formats is very long, and includes \MF{} and \MP{}, +Encapsulated \PS{} and \acro{PDF}, as well as combinations that wrap +a graphics format in a \LaTeX{} import file, which may include +\LaTeX{} commands to place text (compiled by \LaTeX{} itself) as +labels, etc., in the figures. + +There's no explicit port of \ProgName{xfig} to windows (although it is +believed to work under \ProgName{cygwin} with its X-windows system). +However, the program % ! line break +\href{http://tams-www.informatik.uni-hamburg.de/applets/jfig/}{\ProgName{jfig}} +is thought by many to be an acceptable substitute, written in Java. + +\ProgName{Asymptote} is a widely-praised development of the \MP{} +language, which can draw 2D or 3D diagrams, and can also label +diagrams with \LaTeX{} text; copious documentation is available via +\href{http://asymptote.sourceforge.net}{\ProgName{asymptote}'s web site}. +\begin{ctanrefs} +\item[asymptote]\CTANref{asymptote} +\item[xfig]\CTANref{xfig} +\item[transfig]\CTANref{transfig} +\end{ctanrefs} +\LastEdit{2011-05-02} + +\Question[Q-texcad]{\TeX{}\acro{CAD}, a drawing package for \LaTeX{}} + +\TeX{}\acro{CAD} is a program for the \acro{PC} which enables the user to draw diagrams +on screen using a mouse or arrow keys, with an on-screen menu of available +picture-elements. Its output is code for the \LaTeX{} +\environment{picture} environment. +Optionally, it can be set to include lines at all angles using +the em\TeX{} driver-family +\htmlignore +(\Qref*{\csx{special}s}{Q-specials}). +\endhtmlignore +\begin{htmlversion} +\Qref{\csx{special}s}{Q-specials}. +\end{htmlversion} +\TeX{}\acro{CAD} is part of the em\TeX{} distribution. + +A Unix port of the program (\ProgName{xtexcad}) has been made. +\begin{ctanrefs} +\item[emtex]\CTANref{emtex} +\item[xtexcad]\CTANref{xtexcad} +\end{ctanrefs} + +\Question[Q-spell]{Spelling checkers for work with \TeX{}} + +`Traditional' approaches to the problem (of checking your spelling) were +designed to work with a plain text file; in our case, we have an \alltex{} +source. For the user, this is a simple-to-understand way to do the +job; but for the spell-checker programmer, it requires heuristic (and +hence fallible) analysis of \alltex{} macros and so on. The +alternative, of viewing the text \emph{after} \alltex{} has processed +the results, is covered below. + +The user of an \Qref*{shell/editor}{Q-editors} will usually find it +embeds a spelling checker. For command-line use, there are several +choices, depending on the system you're using. + +For Unix, \ProgName{ispell} was long the program of choice; it is well +integrated with \ProgName{emacs}, and deals with some \TeX{} syntax. +However, it has more-or-less been replaced everywhere, by +\ProgName{aspell}, which was designed as a successor, and certainly +performs better on most metrics; there remains some question as to its +performance with \AllTeX{} sources. The most recent offering (which +is widely used in other open-source software projects) is +\begin{hyperversion} + \href{http://hunspell.sourceforge.net/}{\ProgName{Hunspell}}. +\end{hyperversion} +\begin{flatversion} + Hunspell~(see \URL{http://hunspell.sourceforge.net/}). +\end{flatversion} +\ProgName{Hunspell} is available for other architectures, too; a web +search shows versions available for Windows, at least. + +For the Macintosh, \ProgName{Excalibur} has long been used; its +distribution comes with dictionaries for several languages. +\ProgName{Hunspell} (see above) is actually part of OS X from version 10.6. + +The \acro{VMS} Pascal program \ProgName{spell} makes special cases of +some important features of \LaTeX{} syntax. + +For \MSDOS{}, there are several programs. \ProgName{Amspell} can be +called from within an editor, and \ProgName{jspell} is an extended +version of \ProgName{ispell}. + +An alternative approach takes \alltex{} output, and checks that. A +straightforward approach is to produce \acro{PDF} output, and process +it with \ProgName{pdftotext}, using any plain text checker on the +result (the checkers listed above all work in this r\^ole). For this +to work reasonably well, the user should disable hyphenation before +making the \acro{PDF} output. + +The (experimental) \luatex{}/\latex{} package \Package{spelling} goes +one step further: it uses \ProgName{lua} code to extract words +\emph{while typesetting is going on}, but before hyphenation is +applied. Each word is looked up in a list of known bad spellings, and +the word highlighted if it appears there. In parallel, a text file is +created, which can be processed by a `normal' spelling checker to +produce a revised ``bad spelling'' list. (The package documentation +shows the end result; it includes words such as `spellling', which are +duly highlighted.) +\begin{ctanrefs} +\item[4spell]\CTANref{4spell} +\item[amspell]\CTANref{amspell} +\item[aspell]Browse \CTANref{aspell}~--- choose just those language + dictionaries (under subdirectory \File{dict/}) that you need. +\item[excalibur]\CTANref{Excalibur} +\item[ispell]\CTANref{ispell} +\item[jspell]\CTANref{jspell} +\item[spelling.sty]\CTANref{spelling} +\item[\nothtml{\bgroup\rmfamily}\acro{VMS}\nothtml{\egroup} spell]% + \CTANref{vmspell} +\item[winedt]\CTANref{winedt} +\end{ctanrefs} +\LastEdit{2013-10-02} + +\Question[Q-wordcount]{How many words have you written?} + +One often has to submit a document (e.g., a paper or a dissertation) +under some sort of constraint about its size. Sensible people set a +constraint in terms of numbers of pages, but there are some that +persist in limiting the numbers of words you type. + +A simple solution to the requirement can be achieved following a +simple observation: the powers that be are unlikely to count all the +words of a document submitted to them. Therefore, a statistical +method can be employed: find how many words there are on a full page; +find how many full pages there are in the document (allowing for +displays of various sorts, this number will probably not be an +integer); multiply the two. However, if the document to be submitted +is to determine the success of the rest of one's life, it takes a +brave person to thumb their nose at authority quite so +comprehensively\dots{} + +The simplest method is to strip out the \AllTeX{} markup, and to count +what's left. On a Unix-like system, this may be done using +\ProgName{detex} and the built-in \ProgName{wc}: +\begin{quote} +\begin{verbatim} +detex | wc -w +\end{verbatim} +\end{quote} +The technique is beguilingly simple, but it's not terribly accurate + +The \ProgName{latexcount} script does the same sort of job, in one +``step''; being a \ProgName{perl} script, it is in principle rather +easily configured (see documentation inside the script). +Several \Qref*{editors and shells}{Q-editors} offer something similar. + +\ProgName{TeXcount} goes a long way with heuristics for counting, +starting from a \LaTeX{} file; the documentation is comprehensive, and +you may try the script on-line via the % ! line break +\begin{hyperversion} + \href{http://folk.uio.no/einarro/Comp/texwordcount.html}{package home page}. +\end{hyperversion} +\begin{flatversion} + package home page~(see + \URL{http://folk.uio.no/einarro/Comp/texwordcount.html}). +\end{flatversion} + +However, even quite sophisticated stripping of \AllTeX{} markup can +never be entirely reliable: markup itself may contribute typeset +words, or even consume words that appear in the text. + +The \Package{wordcount} package +contains a Bourne shell (i.e., typically Unix) script for running a +\LaTeX{} file with a special piece of supporting \TeX{} code, and then +counting word indications in the log file. This is probably as +accurate automatic counting as you can get, if it works for you. +\begin{ctanrefs} +\item[detex]\CTANref{detex} +\item[latexcount.pl]\CTANref{latexcount} +\item[TeXcount]\CTANref{texcount} +\item[wordcount]\CTANref{wordcount} +\end{ctanrefs} + diff --git a/help/uk-tex-faq/faq-symbols.tex b/help/uk-tex-faq/faq-symbols.tex new file mode 100644 index 0000000000..07050510f3 --- /dev/null +++ b/help/uk-tex-faq/faq-symbols.tex @@ -0,0 +1,613 @@ +% $Id: faq-symbols.tex,v 1.15 2014/01/28 18:17:36 rf10 Exp rf10 $ + +\section{Symbols, etc.} + +\Question[Q-usesymb]{Using symbols} + +Most symbol font sets come with a package that defines commands for +every symbol in the font. While this is convenient, it can lead to +difficulties, particularly with name clashes when you load packages +that cover fonts which duplicate symbols~--- an issue which is +discussed in +\begin{narrowversion} + \Qref[question]{}{Q-alreadydef}. +\end{narrowversion} +\begin{wideversion} + ``\Qref{symbol already defined}{Q-alreadydef}''. +\end{wideversion} +Some font sets (for example the related set: \FontName{FdSymbol}, +\FontName{MdSymbol} and \FontName{MnSymbol}) are huge, and the +accompanying macros cover so many symbols that name clashes are surely +a serious problem. + +The \Package{pifont} package (originally designed to use the Adobe +\FontName{Zapf Dingbats} font) avoids this sort of problem: it requires +you to know the font position of any symbol you want to use (the +documentation provides font tables). The basic command is +\cmdinvoke*{ding}{number} for a single symbol; there are commands for +other fancier uses. \Package{Pifont} also allows you to select other +fonts, for similar use. + +The \Package{yagusylo} describes itself as ``an extended version of +\Package{pifont}, gone technicolor''. It provides all the facilities +of \Package{pifont}, but allows you to create your own mnemonic names +for symbols. Thus, while you can say % ! line break +\cmdinvoke*{yagding}[family]{symbol number}[colour], you can also +define symbol names with \csx{defdingname}, and then use them +with \cmdinvoke*{yagding*}{symbol name} (the defined name carries the +font family and colour specified in the arguments of +\csx{defdingname}). + +\Package{Yagusylo} is somewhat complicated, but its documentation is +clear; it is probably the best tool to use for picking and choosing +symbols from a variety of font families. +\begin{ctanrefs} +\item[FdSymbol \nothtml{\rmfamily}fonts]\CTANref{fdsymbol} +\item[MdSymbol \nothtml{\rmfamily}fonts]\CTANref{mdsymbol} +\item[MnSymbol \nothtml{\rmfamily}fonts]\CTANref{mnsymbol} +\item[pifont.sty]Distributed as part of \CTANref{psnfss} +\item[yagusylo.sty]\CTANref{yagusylo} +\end{ctanrefs} + +\Question[Q-numbersets]{Symbols for the number sets} + +Mathematicians commonly use special lettering for the real numbers and +other standard number sets. Traditionally these were typeset in bold. +In the ordinary course of events, but mathematicians do not have +access to bold chalk, so they invented special symbols that are now +often used for the number sets. Such symbols are known as +``blackboard bold'' (or double-stroked) letters; in place of the heavier +strokes of a bold font, (some) strokes of the letters are doubled. +The minimum useful set is upper-case letters `I', `N', `R', `Q' and +`Z'; some fonts offer a figure `1' (for a unit matrix~--- not a number +set at all). + +A set of blackboard bold capitals is available in the \acro{AMS} +\FontName{msbm} fonts (\FontName{msbm} is available at a range of +design sizes, with names such as \FontName{msbm10}). The \acro{AMS} +actually provides a pair of font +families (the other is called \FontName{msam}), which offer a large number of +mathematical symbols to supplement those provided in Knuth's fonts. +The fonts are available in Type~1 format in +modern distributions. Support for using the fonts under +\LaTeX{} is available in packages \Package{amssymb} and +\Package{amsfonts}. The font shape is a rather +austere sans, which many people don't like (though it captures the +essence of quickly-chalked writing rather well). + +The \FontName{bbold} family is set of blackboard bold fonts written in +\MF{}. This set offers blackboard bold forms of lower-case letters; +the font source directory also contains sources for a \LaTeX{} package +that enables use of the fonts. The fonts are not available in Type~1 format. + +The \FontName{bbm} family claims to provide +`blackboard' versions of most of the \FontName{cm} fonts~\dots{} including +the bold and bold-extended series. Again, the fonts are designed in +\MF{} and are not available in Type~1 format. \LaTeX{} macro support +comes from a package by Torsten Hilbrich. + +The \FontName{doublestroke} family comes in just roman +and sans shapes, at a single weight, and is available both as \MF{} +sources and as Type~1; the font covers the uppercase latin letters, +lowercase `h' and 'k', and the digit `1'. + +A document that shows the \FontName{bbm}, \FontName{bbold}, +\FontName{doublestroke} and \FontName{msbm} fonts, so that you can get +a feel for their appearance, is available (\acro{CTAN} package +\Package{blackboard}). + +The \Package{boondox} font set consists of Type~1 versions of the +\acro{STIX} mathematics set (the originals are distributed in +\acro{OTF} format). The set contains a font +`BOONDOXDoubleStruck-Regular' (blackboard bold) (as well as a `bold' +version of that. + +An alternative source of Type~1 fonts with blackboard bold characters +may be found in the steadily increasing set of complete families, both +commercial and free, that have been prepared for use with \AllTeX{} +(see % beware line break +\htmlonly{``}\Qref[question]{choice of outline fonts}{Q-psfchoice}\htmlonly{''}). +Of the free sets, the \FontName{txfonts} and \FontName{pxfonts} families +both come with replicas of \FontName{msam} and \FontName{msbm}, but +(as noted elsewhere, there are other reasons not to use these fonts); +revised versions of the fonts, \FontName{newtx} and \FontName{newpx} +are better adjusted. The \FontName{mathpazo} family includes a +``mathematically significant'' choice of blackboard bold characters, and the +\FontName{fourier} fonts contain blackboard bold upper-case letters, +the digit `1', and lower-case `k'. + +The ``lazy person's'' blackboard bold macros: +\begin{quote} +\begin{verbatim} +\newcommand{\R}{{\textsf{R}\hspace*{-0.9ex}% + \rule{0.15ex}{1.5ex}\hspace*{0.9ex}}} +\newcommand{\N}{{\textsf{N}\hspace*{-1.0ex}% + \rule{0.15ex}{1.3ex}\hspace*{1.0ex}}} +\newcommand{\Q}{{\textsf{Q}\hspace*{-1.1ex}% + \rule{0.15ex}{1.5ex}\hspace*{1.1ex}}} +\newcommand{\C}{{\textsf{C}\hspace*{-0.9ex}% + \rule{0.15ex}{1.3ex}\hspace*{0.9ex}}} +\end{verbatim} +\end{quote} +are almost acceptable at normal size if the surrounding text is +\FontName{cmr10} (the position of the vertical bar can be affected by +the surrounding font). However, they are not part of a proper maths font, +and do not work in sub- and superscripts. As we've seen, there are +plenty of alternatives: that mythical ``lazy'' person can inevitably +do better than the macros, or anything similar using capital `I' +(which looks even worse!). Voluntary \AllTeX{} effort has redefined +the meaning of laziness (in this respect!). +\begin{ctanrefs} +\item[AMS support files]Distributed as part of \CTANref{amsfonts} +\item[AMS symbol fonts]Distributed as part of \CTANref{amsfonts} +\item[bbm fonts]\CTANref{bbm} +\item[bbm macros]\CTANref{bbm-macros} +\item[bbold fonts]\CTANref{bbold} +\item[blackboard \nothtml{\rmfamily}evaluation set]\CTANref{blackboard} +\item[doublestroke fonts]\CTANref{doublestroke} +\item[fourier fonts]\CTANref{fourier} +\item[mathpazo fonts]\CTANref{mathpazo} +\item[newpx]\CTANref{newpx} +\item[newtx]\CTANref{newtx} +\item[pxfonts]\CTANref{pxfonts} +\item[txfonts]\CTANref{txfonts} +\end{ctanrefs} +\LastEdit{2013-12-04} + +\Question[Q-scriptfonts]{Better script fonts for maths} + +The font selected by \csx{mathcal} is the only script font `built +in'. However, there are other useful calligraphic fonts included with +modern \TeX{} distributions. +\begin{description} +\item[Euler] The \Package{eucal} package (part of most sensible \TeX{} + distributions; the fonts are part of the \acro{AMS} font set) gives + a slightly curlier font than the default. The package changes the + font that is selected by \csx{mathcal}. + + Type 1 versions of the fonts are available in the \acro{AMS} fonts + distribution. +\item[mathabx] The \FontName{mathabx} bundle provides calligraphic + letters (in both upper and lower case); the fonts were developed in + MetaFont, but a version in Adobe Type 1 format is available. The + bundle's documentation offers a series of comparisons of its + calligraphic set with Computer Modern's (both regular mathematical + and calligraphic letters); the difference are not large. +\item[mnsymbol] The \FontName{mnsymbol} bundle provides (among many + other symbols) a set of calligraphic letters, though (again) they're + rather similar to the default Computer Modern set. +\item[RSFS] The \Package{mathrsfs} package uses a really fancy script + font (the name stands for ``Ralph Smith's Formal Script'') which is + already part of most modern \TeX{} distributions (Type~1 versions of + the font are also provided, courtesy of Taco Hoekwater). The package + creates a new command \csx{mathscr}. +\item[RSFSO] The bundle \Package{rsfso} provides a less dramatically + oblique version of the \acro{RSFS} fonts; the result proves quite + pleasing~--- similar to the effect of the the (commercial) script + font in the Adobe Mathematical Pi collection. +\item[Zapf Chancery] is the standard \PS{} calligraphic font. There + is no package but you can easily make it available by means of the + command +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\DeclareMathAlphabet{\mathscr}{OT1}{pzc}% + {m}{it} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\DeclareMathAlphabet{\mathscr}{OT1}{pzc}{m}{it} +\end{verbatim} +\end{wideversion} +\end{quote} + in your preamble. You may find the font rather too big; if so, you + can use a scaled version of it like this: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\DeclareFontFamily{OT1}{pzc}{} +\DeclareFontShape{OT1}{pzc}{m}{it}% + {<-> s * [0.900] pzcmi7t}{} +\DeclareMathAlphabet{\mathscr}{OT1}{pzc}% + {m}{it} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\DeclareFontFamily{OT1}{pzc}{} +\DeclareFontShape{OT1}{pzc}{m}{it}{<-> s * [0.900] pzcmi7t}{} +\DeclareMathAlphabet{\mathscr}{OT1}{pzc}{m}{it} +\end{verbatim} +\end{wideversion} +\end{quote} + Adobe Zapf Chancery (which the above examples use) is distributed in + any but the most basic \PS{} printers. A substantially identical + font (to the extent that the same metrics may be used) is + available from \acro{URW}, called URW Chancery L: it is distributed + as part of the ``URW base35'' bundle; the + \Package{urwchancal} package (which includes virtual fonts to tweak + appearance) provides for its use as a calligraphic font. + + The TeX Gyre font family also includes a Chancery replacement, + \FontName{Chorus}; use it with \Package{tgchorus} (and ignore the + complaints about needing to change font shape). +\end{description} +Examples of the available styles are linked from the packages' +catalogue entries. +\begin{ctanrefs} +\item[eucal.sty]Distributed as part of \CTANref{amsfonts} +\item[euler fonts]Distributed as part of \CTANref{amsfonts} +\item[mathabx \nothtml{\rmfamily}as \MF{}]\CTANref{mathabx} +\item[mathabx \nothtml{\rmfamily}in Type 1 format]\CTANref{mathabx-type1} +\item[mathrsfs.sty]Distributed as part of \CTANref{jknappen-macros}[mathrsfs] +\item[mnsymbol \nothtml{\rmfamily}fonts]\CTANref{mnsymbol} +\item[rsfs \nothtml{\rmfamily}fonts]\CTANref{rsfs} +\item[rsfso \nothtml{\rmfamily}fonts]\CTANref{rsfso} +\item[Script font examples]\CTANref{mathscript} +\item[TeX Gyre Chorus font family]Distributed as part of \CTANref{tex-gyre}[tex-gyre-chorus] +\item[urwchancal]\CTANref{urwchancal}[urwchancal] +\item[URW Chancery L]Distributed as part of \CTANref{urw-base35} +\end{ctanrefs} +\LastEdit{2011-08-17} + +\Question[Q-boldgreek]{Setting bold Greek letters in \LaTeX{} maths} + +The issue here is complicated by the fact that \csx{mathbf} (the +command for setting bold \emph{text} in \TeX{} maths) affects a select +few mathematical `symbols' (the uppercase Greek letters). + +In the default configuration, lower-case Greek letters behave +differently from upper-case Greek letters (the lower-case greek +letters are in the maths fonts, while the upper-case letters are in +the original (OT1-encoded) text fonts). + +The \plaintex{} solution \emph{does} work, in a limited way; you set a +maths \emph{style}, before you start an equation; thus +\begin{quote} +\begin{verbatim} +{\boldmath$\theta$} +\end{verbatim} +\end{quote} +does the job, but \csx{boldmath} may not be used in maths mode. As a +result, this solution requires that you embed single bold characters +in a text box: +\begin{quote} +\begin{verbatim} +$... \mbox{\boldmath$\theta$} ...$ +\end{verbatim} +\end{quote} +which then causes problems in superscripts, etc. With +\Package{amsmath} loaded, +\begin{quote} +\begin{verbatim} +$... \text{\boldmath$\theta$} ...$ +\end{verbatim} +\end{quote} +does the trick (and is less bad in regard to superscripts, etc), but +is an unsatisfactory solution, too. + +These problems may be addressed by using a bold mathematics package. +\begin{itemize} +\item The \Package{bm} package, which is part of the \LaTeX{} tools + distribution, defines a command \csx{bm} which may be used anywhere + in maths mode. +\item The \Package{amsbsy} package (which is part of \AMSLaTeX{}) + defines a command \csx{boldsymbol}, which (though slightly less + comprehensive than \csx{bm}) covers almost all common cases. +\end{itemize} + +All these solutions apply to all mathematical symbols, not merely +Greek letters. +\begin{ctanrefs} +\item[bm.sty]Distributed as part of \CTANref{2etools}[bm] +\item[amsbsy.sty]Distributed as part of \AMSLaTeX{} \CTANref{amslatex}[amsbsy] +\item[amsmath.sty]Distributed as part of \AMSLaTeX{} + \CTANref{amslatex}[amsmath] +\end{ctanrefs} +\LastEdit{2013-06-12} + +\Question[Q-prinvalint]{The Principal Value Integral symbol} + +This symbol (an integral sign, `crossed') does not appear in any of +the fonts ordinarily available to \AllTeX{} users, but it can be +created by use of the following macros: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\def\Xint#1{\mathchoice + {\XXint\displaystyle\textstyle{#1}}% + {\XXint\textstyle\scriptstyle{#1}}% + {\XXint\scriptstyle\scriptscriptstyle{#1}}% + {\XXint\scriptscriptstyle\scriptscriptstyle{#1}}% + \!\int} +\def\XXint#1#2#3{{\setbox0=\hbox{$#1{#2#3}{\int}$} + \vcenter{\hbox{$#2#3$}}\kern-.5\wd0}} +\def\ddashint{\Xint=} +\def\dashint{\Xint-} +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\def\Xint#1{\mathchoice + {\XXint\displaystyle\textstyle{#1}}% + {\XXint\textstyle\scriptstyle{#1}}% + {\XXint\scriptstyle\scriptscriptstyle{#1}}% + {\XXint\scriptscriptstyle + \scriptscriptstyle{#1}}% + \!\int} +\def\XXint#1#2#3{{% + \setbox0=\hbox{$#1{#2#3}{\int}$} + \vcenter{\hbox{$#2#3$}}\kern-.5\wd0}} +\def\ddashint{\Xint=} +\def\dashint{\Xint-} +\end{verbatim} +\end{narrowversion} +\end{quote} +\csx{dashint} gives a single-dashed integral sign, \csx{ddashint} a +double-dashed one. + +\Question[Q-underscore]{How to typeset an underscore character} + +The underscore character `\texttt{\_}' is ordinarily used in \TeX{} to +indicate a subscript in maths mode; if you type \texttt{\_}, on its +own, in the course of ordinary text, \TeX{} will complain. The +``proper'' \latex{} command for underscore is \csx{textunderscore}, +but the \latexo{} command \csx{\_} is an established alias. Even so, +if you're writing a document which will contain a large number of +underscore characters, the prospect of typing \csx{\_} for every one +of them will daunt most ordinary people. + +Moderately skilled macro programmers can readily generate a quick hack +to permit typing `\texttt{\_}' to mean `text underscore' (the answer in +\begin{hyperversion} + ``\Qref{defining characters as macros}{Q-activechars}'' +\end{hyperversion} +\begin{flatversion} + \Qref[question]{}{Q-activechars} +\end{flatversion} +uses this example to illustrate its techniques). +However, the code \emph{is} somewhat tricky, and more importantly +there are significant points where it's easy to get it wrong. There +is therefore a package \Package{underscore} which provides a general +solution to this requirement. + +There is a problem, though: \acro{OT}1 text fonts don't contain an +underscore character, unless they're in the typewriter version of the +encoding (used by fixed-width fonts such as \texttt{cmtt}). In place +of such a character, \latex{} (in \acro{OT}1 encoding) uses a short rule +for the command \csx{textunderscore}, but this poses problems +for systems that interpret \acro{PDF}~--- for example those +\acro{PDF}-to-voice systems used by those who find reading difficult. + +So either you must ensure that your underscore characters only occur +in text set in a typewriter font, or you must use a more modern +encoding, such as \acro{T}1, which has the same layout for every font, +and thus an underscore in every font. + +A stable procedure to achieve this is: +\begin{quote} +\begin{verbatim} +% (1) choose a font that is available as T1 +% for example: +\usepackage{lmodern} + +% (2) specify encoding +\usepackage[T1]{fontenc} + +% (3) load symbol definitions +\usepackage{textcomp} +\end{verbatim} +\end{quote} +which will provide a command \csx{textunderscore} which robustly +selects the right character. The \Package{underscore} package, +mentioned above, will use this command. +\begin{ctanrefs} +\item[underscore.sty]\CTANref{underscore} +\end{ctanrefs} +\LastEdit{2011-08-17} + +\Question[Q-atsign]{How to type an `@' sign?} + +Long ago, some packages used to use the `@' sign as a special +character, so that special measures were needed to type it. While +those packages are still in principle available, few people use them, +and those that do use them have ready access to rather good +documentation. + +Ordinary people (such as the author of this \acro{FAQ}) need only type +`@'. +\LastEdit{2011-08-16} + +\Question[Q-euro]{Typesetting the Euro sign} + +The European currency ``Euro'' (\texteuro {}) is represented by a symbol +of somewhat dubious design, but it's an important currency and +\AllTeX{} users need to typeset it. When the currency first appeared, +typesetting it was a serious problem for \AllTeX{} users; things are +easier now (most fonts have some way of providing a Euro sign), but +this answer provides a summary of methods ``just in case''. + +Note that the Commission of the European Community at first deemed +that the Euro symbol should always be set in a sans-serif font; +fortunately, this eccentric ruling has now been rescinded, and one may +apply best typesetting efforts to making it appear at least slightly +``respectable'' (typographically). + +The \acro{TS}1-encoded \acro{TC} fonts provided as part of the \acro{EC} font +distribution provide Euro glyphs. The fonts are called Text Companion +(\acro{TC}) fonts, and offer the same range +of faces as do the \acro{EC} fonts themselves. The +\Package{textcomp} package provides a \csx{texteuro} command for +accessing the symbol, which selects a symbol to match the surrounding +text. The design of the symbol in the \acro{TC} fonts is not +universally loved\dots{} +Nevertheless, use the \acro{TC} font version of the symbol if you are +producing documents using Knuth's Computer Modern Fonts. + +The each of the \Package{latin9} and \Package{latin10} input encoding +definitions for the \Package{inputenc} package has a euro character +defined (character position 164, occupied in other \acro{ISO} Latin +character sets by the ``currency symbol'' \textcurrency {}, which +ordinary people seldom see except in character-set listings\dots{}). +The \acro{TC} encoding file offers the command \csx{texteuro} for the +character; that command is (probably) \emph{only} available from the +\Package{textcomp} package. + +Use of the \acro{TC} encoding character may therefore made via +\csx{texteuro} or via the Latin-9 or Latin-10 character in ordinary +text. + +Note that there is a Microsoft code page position (128), too, and that has +been added to \Package{inputenc} tables for \acro{CP}1252 and +\acro{CP}1257. (There's another position in \acro{CP}858, which has +it in place of ``dotless i'' in \acro{CP850}; the standardisation of +these things remains within Microsoft, so one can never tell what will +come next\dots{}) + +Outline fonts which contain nothing but Euro symbols are available +(free) from +\href{ftp://ftp.adobe.com/pub/adobe/type/win/all/eurofont.exe}{Adobe}\nobreakspace--- +the file is packaged as a \ProgName{Windows} self-extracting +executable, but it may be decoded as a \extension{zip} format archive +on other operating systems. +The \Package{euro} bundle contains metrics, \ProgName{dvips} map +files, and macros (for \plaintex{} and \LaTeX{}), for using these +fonts in documents. \LaTeX{} users will find two packages in the +bundle: \Package{eurosans} only offers the sans-serif version (to +conform with the obsolete ruling about sans-serif-only symbols; the +package provides the +command \csx{euro}), whereas \Package{europs} matches the Euro symbol +with the surrounding text (providing the command \csx{EUR}). To use +either package +with the \Package{latin9} encoding, you need to define \csx{texteuro} +as an alias for the euro command the package defines. + +The Adobe fonts are probably the best bet for use in non-Computer +Modern environments. They are apparently designed to fit with Adobe +Times, Helvetica and Courier, but can probably fit with a wider range +of modern fonts. + +The \Package{eurofont} package provides a compendious analysis of the +``problem of the euro symbol'' in its documentation, and offers macros +for configuring the source of the glyphs to be used; however, it seems +rather large for everyday use. + +The \Package{euro-ce} bundle is a rather pleasing \MF{}-only design +providing Euro symbols in a number of shapes. The file +\File{euro-ce.tex}, in the distribution, offers hints as to how a +\plaintex{} user might make use of the fonts. + +Euro symbols are found in several other places, which we list here for +completeness. + +The \Package{marvosym} font contains a Euro symbol (in a number of +typographic styles), among many other good things; the font is +available in both Adobe Type 1 and TrueType formats. + +Other \MF{}-based bundles containing Euro symbols are to be found in +\Package{china2e} (whose primary aim is Chinese dates and suchlike +matters) and the \Package{eurosym} fonts. +\begin{ctanrefs} +\item[china2e bundle]\CTANref{china2e} +\item[EC fonts]\CTANref{ec} +\item[euro fonts]\CTANref{euro-fonts} +\item[euro-ce fonts]\CTANref{euro-ce} +\item[eurofont.sty]\CTANref{eurofont} +\item[eurosym fonts]\CTANref{eurosym} +\item[marvosym fonts]\CTANref{marvosym-fonts} +\item[textcomp.sty]Part of the \LaTeX{} distribution. +\end{ctanrefs} +\LastEdit{2011-11-21} + +\Question[Q-tradesyms]{How to get copyright, trademark, etc.} + +The ``\nothtml{Comprehensive symbol list'' (}% beware line break +\Qref{Comprehensive symbol list}{Q-symbols}\latexhtml{)}{''}, lists +the symbol commands \csx{textcopyright}, +\csx{textregistered} and \csx{texttrademark}, which are available in +\acro{TS}1-encoded fonts, and which are enabled using the +\Package{textcomp} package. + +In fact, all three commands are enabled in default \LaTeX{}, but the +glyphs you get aren't terribly beautiful. In particular, +\csx{textregistered} behaves oddly when included in bold text (for +example, in a section heading), since it is composed of a small-caps +letter, which typically degrades to a regular shape letter when asked +to set in a bold font. This means that the glyph becomes a circled +``r'', whereas the proper symbol is a circled ``R''. + +This effect is of course avoided by use of \Package{textcomp}. + +Another problem arises if you want \csx{textregistered} in a +superscript position (to look similar to \csx{texttrademark}). +Using a maths-mode superscript to do this provokes lots of pointless +errors: you \emph{must} use +\begin{quote} +\begin{verbatim} +\textsuperscript{\textregistered} +\end{verbatim} +\end{quote} + +\Question[Q-osf]{Using ``old-style'' figures} + +These numbers are also called medieval or lowercase figures and their +use is mostly font-specific. Terminology is confusing since the +lining figures (which are now the default) are a relatively recent +development (19th century) and before they arrived, oldstyle figures +were the norm, even when setting mathematics. (An example is Thomas +Harriot's \emph{Artis Analyticae Praxis} published in 1631). In a +typical old style 3, 4, 5, 7 and 9 have descenders and 6 and 8 ascend +above the x-height; sometimes 2 will also ascend (this last seems to +be a variation associated with French typography). + +\LaTeX{} provides a command \cmdinvoke*{oldstylenums}{digits}, which +by default uses an old-style set embedded in Knuth's `math italic' +font. The command is only sensitive to `bold' of the font style of +surrounding text: glyphs (for this command) are only available to +match the normal medium and bold (i.e., bold-extended) weights of the +Computer Modern Roman fonts. + +The \Package{textcomp} package changes \csx{oldstylenums} to use the +glyphs in the Text Companion fonts (\LaTeX{} \acro{TS}1 encoding) when +in text mode, and also makes them available using the macros of the +form \csx{textoldstyle}, e.g., \csx{textzerooldstyle}. +(Of course, not all font families can provide this facility.) + +Some font packages (e.g., \Package{mathpazo}) make old-style figures +available and provide explicit support for making them the default: +\cmdinvoke{usepackage}[osf]{mathpazo} selects a form where digits are +always old-style in text. The \Package{fontinst} package will +automatically generate ``old-style versions'' of commercial Adobe Type +1 font families for which ``expert'' sets are available. + +It's also possible to make virtual fonts, that offer old-style digits, +from existing font packages. The \FontName{cmolddig} bundle provides +a such a virtual version of Knuth's originals, and the \FontName{eco} +or \FontName{hfoldsty} bundles both provide versions of the \acro{EC} +fonts. The \FontName{lm} family offers old-style figures to OpenType +users (see below), but we have no stable mapping for \FontName{lm} +with old-style digits from the Adobe Type 1 versions of the fonts. + +Originally, oldstyle figures were only to be found the expert sets of +commercial fonts, but now they are increasingly widely available. An +example is Matthew Carter's Georgia font, which has old-style figures +as its normal form (the font was created for inclusion with certain +Microsoft products and is intended for on-screen viewing). + +OpenType fonts have a pair of axes for number variations~--- +proportional/tabular and lining/oldstyle selections are commonly +available. ``Full feature access'' to OpenType fonts, making such +options available to the \AllTeX{} user, is already supported by +\Qref*{\xetex{}}{Q-xetex} using, for example, the \Package{fontspec} +package. Similar support is also in the works for +\Qref*{\LuaTeX{}}{Q-luatex}. +\begin{ctanrefs} +\item[boondox \nothtml{\rmfamily}fonts]\CTANref{boondox} +\item[cmolddig \nothtml{\rmfamily}fonts]\CTANref{cmolddig} +\item[eco \nothtml{\rmfamily}fonts]\CTANref{eco} +\item[fontinst]\CTANref{fontinst} +\item[fontspec.sty]\CTANref{fontspec} +\item[mathpazo \nothtml{\rmfamily}fonts]\CTANref{mathpazo} +\end{ctanrefs} +\LastEdit{2013-12-04} diff --git a/help/uk-tex-faq/faq-t-g-wr.tex b/help/uk-tex-faq/faq-t-g-wr.tex new file mode 100644 index 0000000000..48e5a1af7f --- /dev/null +++ b/help/uk-tex-faq/faq-t-g-wr.tex @@ -0,0 +1,467 @@ +% $Id: faq-t-g-wr.tex,v 1.15 2014/01/22 17:27:56 rf10 Exp $ + +\section{Things are Going Wrong\dots{}} + +\subsection{Getting things to fit} +\Question[Q-enlarge]{Enlarging \TeX{}} + +The \TeX{} error message `capacity exceeded' covers a multitude of +problems. What has been exhausted is listed in brackets after the +error message itself, as in: +\begin{quote} +\begin{verbatim} +! TeX capacity exceeded, sorry +... [main memory size=263001]. +\end{verbatim} +\end{quote} +Most of the time this error can be fixed +\emph{without} enlarging \TeX{}. The most common causes are unmatched braces, +extra-long lines, and poorly-written macros. Extra-long lines are +often introduced when files are transferred incorrectly between +operating systems, and line-endings are not preserved properly (the +tell-tale sign of an extra-long line error is the complaint +that the `|buf_size|' has overflowed). + +If you really need to extend your \TeX{}'s capacity, the proper method +depends on your installation. There is no need (with modern \TeX{} +implementations) to change the defaults in Knuth's \acro{WEB} source; +but if you do need to do so, use a change file to modify the values set in +module 11, recompile your \TeX{} and regenerate all format files. + +Modern implementations allow the sizes of the various bits of \TeX{}'s +memory to be changed semi-dynamically. Some (such as em\TeX{}) allow +the memory parameters to be changed in command-line switches when +\TeX{} is started; most frequently, a configuration file is read which +specifies the size of the memory. On \ProgName{web2c}-based systems, +this file is called \File{texmf.cnf}: see the documentation that comes +with the distribution for other implementations. Almost invariably, +after such a change, the format files need to be regenerated after +changing the memory parameters. + +\Question[Q-usepictex]{Why can't I load \pictex{}?} + +\pictex{} is a resource hog; fortunately, most modern \TeX{} +implementations offer generous amounts of space, and most modern +computers are pretty fast, so users aren't too badly affected by its +performance. + +However, \pictex{} has the further unfortunate tendency to fill up +\TeX{}'s fixed-size arrays~--- notably the array of 256 `dimension' +registers. This is a particular problem when you're using +\File{pictex.sty} with \LaTeX{} and some other packages that also need +dimension registers. When this happens, you will see the \TeX{} error +message: +\begin{quote} +\begin{verbatim} +! No room for a new \dimen. +\end{verbatim} +\end{quote} +There is nothing that can directly be done about this error: you +can't extend the number of available \csx{dimen} registers without +extending \TeX{} itself. +\begin{wideversion} % hyper + \Qref{Omega}{Q-omegaleph} and \Qref{\eTeX{}}{Q-etex} both do this. +\end{wideversion} +\begin{narrowversion} + \ensuremath{\Omega} and \eTeX{}~--- + \Qref[see questions]{}{Q-omegaleph} + \Qref[and]{}{Q-etex} respectively~--- both do this. +\end{narrowversion} + +It's actually quite practical (with most modern distributions) to use +\eTeX{}'s extended register set: use package \Package{etex} (which +comes with \eTeX{} distributions) and the allocation mechanism is +altered to cope with the larger register set: \pictex{} will now load. + +If you're in some situation where you can't use \eTeX{}, you need to change +\pictex{}; unfortunately \pictex{}'s author is no longer active in the +\TeX{} world, so one must resort to patching. There are two solutions +available. + +The \CONTeXT{} module \File{m-pictex.tex} (for \plaintex{} and +variants) or the corresponding \LaTeX{} \Package{m-pictex} package provide +an ingenious solution to the problem based on hacking the code of +\csx{newdimen} itself. + +Alternatively, Andreas Schrell's \Package{pictexwd} and related +packages replace \pictex{} with a version that uses 33 fewer +\csx{dimen} registers; so use \Package{pictexwd} in place of +\Package{pictex} (either as a \LaTeX{} package, or as a file to read +into \plaintex{}). + +And how does one use \pictex{} anyway, given that the +manual is so \Qref*{hard to come by}{Q-docpictex}? +Fortunately for us all, the \ProgName{MathsPic} +system may be used to translate a somewhat different language into +\pictex{} commands; and the \ProgName{MathsPic} manual is free (and +part of the distribution). \ProgName{MathsPic} is available either as +a \ProgName{Basic} program for \acro{DOS}, or as a \ProgName{Perl} +program for other systems (including Windows, nowadays). +\begin{ctanrefs} +\item[etex.sty]\CTANref{etex-pkg} +\item[m-pictex.sty]Distributed as part of \CTANref{context-tmf} +\item[m-pictex.tex]Distributed as part of \CTANref{context-tmf} +\item[MathsPic]\CTANref{mathspic} +\item[pictexwd.sty]Distributed as part of \CTANref{pictex-addon}[pictexwd] +\end{ctanrefs} +\LastEdit{2014-01-22} + +\subsection{Making things stay where you want them} + +\Question[Q-floats]{Moving tables and figures in \LaTeX{}} + +Tables and figures have a tendency to surprise, by \emph{floating} +away from where they were specified to appear. This is in fact +perfectly ordinary document design; any professional typesetting +package will float figures and tables to where they'll fit without +violating the certain typographic rules. Even if you use the +placement specifier~''\texttt{h}'' (for `here'), the figure or table +will not be +printed `here' if doing so would break the rules; the rules themselves +are pretty simple, and are given on page~198, section~C.9 of the +\LaTeX{} manual. In the worst case, \LaTeX{}'s rules can cause the +floating items to pile up to the extent that you get an error message +saying ``\Qref*{Too many unprocessed floats}{Q-tmupfl}''. +What follows is a simple checklist of things to do to solve these +problems (the checklist talks throughout about figures, but applies +equally well to tables, or to ``non-standard'' floats defined by the +\Package{float} or other packages). +\begin{itemize} +\item Do your figures need to float at all? If not, look at the + recommendations for ``\Qref*{non-floating floats}{Q-figurehere}'' +\item Are the placement parameters on your figures right? The + default (``\texttt{tbp}'') is usually satisfactory, but you can + reasonably change it (for example, to add an ``\texttt{h}''). + Whatever you do, \emph{don't} + omit the ``\texttt{p}'': doing so could cause \LaTeX{} to believe that if you + can't have your figure \emph{here}, you don't want it + \emph{anywhere}. (\LaTeX{} does try to avoid being confused in + this way\dots{}) +\item \LaTeX{}'s own float placement parameters could be preventing + placements that seem entirely ``reasonable'' to you~--- they're + notoriously rather conservative. To encourage \LaTeX{} not to move + your figure, you may need to loosen its demands. (The most important + ones are the ratio of text to float on a given page, but it's + sensible to have a fixed set that changes the whole lot, to meet + every eventuality.) +\begin{verbatim} +\renewcommand{\topfraction}{.85} +\renewcommand{\bottomfraction}{.7} +\renewcommand{\textfraction}{.15} +\renewcommand{\floatpagefraction}{.66} +\renewcommand{\dbltopfraction}{.66} +\renewcommand{\dblfloatpagefraction}{.66} +\setcounter{topnumber}{9} +\setcounter{bottomnumber}{9} +\setcounter{totalnumber}{20} +\setcounter{dbltopnumber}{9} +\end{verbatim} + The meanings of these + parameters are described on pages~199--200, section~C.9 of the + \LaTeX{} manual. +\item Are there places in your document where you could `naturally' + put a \csx{clearpage} command? If so, do: the backlog of floats is + cleared after a \csx{clearpage}. (Note that the \csx{chapter} + command in the standard \Class{book} and \Class{report} classes + implicitly executes \csx{clearpage}, so your floats can't wander past + the end of a chapter.) +\item Try the \Package{placeins} package: it defines a + \csx{FloatBarrier} command beyond which floats may not pass. A + package option allows you to declare that floats may not pass a + \csx{section} command, but you can place \csx{FloatBarrier}s wherever + you choose. +\item If you are bothered by floats appearing at the top of the page + (before they are specified in your text), try the \Package{flafter} + package, which avoids this problem by insisting that floats should + always appear after their definition. +\item Have a look at the \LaTeXe{} \Package{afterpage} package. + Its documentation gives as an example the idea + of putting \csx{clearpage} \emph{after} the current page (where it + will clear the backlog, but not cause an ugly gap in your text), but + also admits that the package is somewhat fragile. Use it as a last + resort if the other possibilities below don't help. +\item If you would actually \emph{like} great blocks of floats at the + end of each of your chapters, try the \Package{morefloats} package; + this allows you to increase the number of floating inserts that \LaTeX{} + can handle at one time (from its original value of~18, in + \LaTeXe{}). Note that, even with \etex{}'s greater supply of + registers, there is still a modest limit on the total number of + floating inserts (\etex{} increases the total number of registers + available, but inserts don't work if they are constructed from + registers in the extended range). + + Caveat: if you are using \Package{etex} to increase the number of + registers available, you need to ``reserve'' some inserts for + \Package{morefloats}: something like: + \begin{quote} +\begin{verbatim} +\usepackage{etex} +\reserveinserts{18} +\usepackage{morefloats} +\end{verbatim} + \end{quote} +\item If you actually \emph{wanted} all your figures to float to the + end (\emph{e.g}., for submitting a draft copy of a paper), don't + rely on \LaTeX{}'s mechanism: get the \Package{endfloat} package to do + the job for you. +\end{itemize} +\begin{ctanrefs} +\item[afterpage.sty]Distributed as part of \CTANref{2etools}[afterpage] +\item[endfloat.sty]\CTANref{endfloat} +\item[etex.sty]\CTANref{etex-pkg} +\item[flafter.sty]Part of the \LaTeX{} distribution +\item[float.sty]\CTANref{float} +\item[morefloats.sty]\CTANref{morefloats} +\item[placeins.sty]\CTANref{placeins} +\end{ctanrefs} + +\Question[Q-underline]{Underlined text won't break} + +Knuth made no provision for underlining text: he took the view that +underlining is not a typesetting operation, but rather one that +provides emphasis on typewriters, which typically offer but one +typeface. The corresponding technique in typeset text is to switch +from upright to italic text (or vice-versa): the \LaTeX{} command +\csx{emph} does just that to its argument. + +Nevertheless, typographically illiterate people (such as those that +specify double-spaced +\nothtml{thesis styles~--- }\Qref{thesis styles}{Q-linespace}) +continue to require underlining of us, so \LaTeX{} as distributed +defines an \csx{underline} command that applies the mathematical +`underbar' operation to text. This technique is not entirely +satisfactory, however: the text gets stuck into a box, and won't break +at line end. + +Two packages are available that solve this problem. The +\Package{ulem} package redefines the +\csx{emph} command to underline its argument; the underlined text thus +produced behaves as ordinary emphasised text, and will break over the +end of a line. (The package is capable of other peculiar effects, +too: read its documentation.) +The \Package{soul} package defines an \csx{ul} command (after which the +package is, in part, named) that underlines running text. + +Beware of \Package{ulem}'s default behaviour, which is to convert the +\csx{emph} command into an underlining command; this can be avoided by +loading the package with: +\begin{quote} +\begin{verbatim} +\usepackage[normalem]{ulem} +\end{verbatim} +\end{quote} +\begin{ctanrefs} +\item[ulem.sty]\CTANref{ulem} +\item[soul.sty]\CTANref{soul} +\end{ctanrefs} + +\Question[Q-widows]{Controlling widows and orphans} + +Widows (the last line of a paragraph at the start of a page) and +orphans (the first line of paragraph at the end of a page) interrupt +the reader's flow, and are generally considered ``bad form''; +\AllTeX{} takes some precautions to avoid them, but completely +automatic prevention is often impossible. If you are typesetting your +own text, consider whether you can bring yourself to change the +wording slightly so that the page break will fall differently. + +The \AllTeX{} page maker, when forming a page, takes account of variables +\csx{widowpenalty} and \csx{clubpenalty} (which relates to orphans!). +These penalties are usually set to the moderate value of \texttt{150}; this +offers mild discouragement of bad breaks. You can increase the values +by saying (for example) \csx{widowpenalty}\texttt{=500}; however, vertical +lists (such as pages are made of) typically have rather little +stretchability or shrinkability, so if the page maker has to balance +the effect of stretching the unstretchable and being penalised, the +penalty will seldom win. Therefore, for typical layouts, there are +only two sensible settings for the penalties: finite (150 or 500, it +doesn't matter which) to allow widows and orphans, and infinite (10000 +or greater) to forbid them. + +The problem can be avoided by allowing the pagemaker to run pages +short, by using the \csx{raggedbottom} directive; however, many +publishers insist on the default \csx{flushbottom}; it is seldom +acceptable to introduce stretchability into the vertical list, except +at points (such as section headings) where the document design +explicitly permits it. + +Once you've exhausted the automatic measures, and have a final draft +you want to ``polish'', you should proceed to manual measures. To +get rid of an orphan is simple: precede the paragraph with +\csx{clearpage} and the paragraph can't start in the wrong place. + +Getting rid of a widow can be more tricky. Options are +\begin{itemize} +\item If the previous page contains a long paragraph with a short last + line, it may be possible to set it `tight': write + \csx{looseness}\texttt{=-1} immediately after the last word of the + paragraph. +\item If that doesn't work, adjusting the page size, using + \cmdinvoke{enlargethispage}{\csx{baselineskip}} to `add a line' to + the page, which may have the effect of getting the whole paragraph + on one page. +\item Reducing the size of the page by + \cmdinvoke{enlargethispage}{-\csx{baselineskip}} may produce a + (more-or-less) acceptable ``two-line widow''. +\end{itemize} +Note that \csx{looseness}\texttt{=1} (which should increase the line +length by one) seldom has the right effect~--- the looser paragraph +typically has a one-word final line, which doesn't look much better +than the original widow. + +\subsection{Things have ``gone away''} + +\Question[Q-oldfontnames]{Old \LaTeX{} font references such as \csx{tenrm}} + +\LaTeXo{} defined a large set of commands for access to the fonts +that it had built in to itself. For example, \FontName{cmr} might +appear as \csx{fivrm}, \csx{sixrm}, \csx{sevrm}, +\csx{egtrm}, \csx{ninrm}, \csx{tenrm}, \csx{elvrm}, \csx{twlrm}, +\csx{frtnrm}, \csx{svtnrm}, \csx{twtyrm} and \csx{twfvrm}, according +to the size it's being typeset at. +These commands were never documented, but certain packages +nevertheless used them to achieve effects they needed. + +Since the commands weren't public, they weren't included in \LaTeXe{}; +to use the unconverted \LaTeXo{} packages under \LaTeXe{}, you need +also to include the \Package{rawfonts} package (which is part of the +\LaTeXe{} distribution). + +\Question[Q-misssymb]{Missing symbol commands} + +You're processing an old document, and some symbol commands such as +\csx{Box} and \csx{lhd} appear no longer to exist. These commands were +present in the core of \LaTeXo{}, but are not in current \LaTeX{}. +They are available in the \Package{latexsym} package (which is part of +the \LaTeX{} distribution), and in the \Package{amsfonts} package +(which is part of the \acro{AMS} distribution, and requires \acro{AMS} +symbol fonts). +\begin{ctanrefs} +\item[AMS fonts]\CTANref{amsfonts} +\end{ctanrefs} + +\Question[Q-msxy]{Where are the \texttt{msx} and \texttt{msy} fonts?} + +The \FontName{msx} and \FontName{msy} fonts were designed by the +American Mathematical Society in the very early days of \TeX{}, for +use in typesetting papers for mathematical journals. They were +designed using the `old' \MF{}, which wasn't portable and is no longer +available; for a long time they were only available in 300dpi versions +which only imperfectly matched modern printers. The \acro{AMS} has +now redesigned the fonts, using the current version of \MF{}, and the +new versions are called the \FontName{msa} and \FontName{msb} +families. + +Nevertheless, \FontName{msx} and \FontName{msy} continue to turn up. +There may, of course, still be sites that haven't got around to +upgrading; but, even if everyone upgraded, there would still be the +problem of old documents that specify them. + +If you have a \extension{tex} source that requests \FontName{msx} and +\FontName{msy}, the best technique is to edit it so that it requests +\FontName{msa} and \FontName{msb} (you only need to change the single +letter in the font names). + +A partial re-implementation of the blackboard-bold part of the +\FontName{msy} font (covering C, N, R, S and Z, only) is available in +Type~1 format; if your mathematical needs only extend that far, the +font could be a good choice. + +If you have a \acro{DVI} file that requests the fonts, there is a package +of \Qref*{virtual fonts}{Q-virtualfonts} to map the old to the new series. +\begin{ctanrefs} +\item[msam \& msbm \nothtml{\rmfamily}fonts]Distributed as part of \CTANref{amsfonts} +\item[msym \nothtml{\rmfamily}fonts]\CTANref{msym} +\item[\nothtml{\rmfamily}virtual font set]\CTANref{msx2msa} +\end{ctanrefs} +\LastEdit{2012-03-09} + +%%%???%%% spell-checked to here....zzzyx + +\Question[Q-amfonts]{Where are the \texttt{am} fonts?} + +One \emph{still} occasionally comes across a request for the \FontName{am} +series of fonts. The initials stood for `Almost [Computer] Modern', +and they were the predecessors of the Computer Modern fonts that we +all know and love (or hate)% +\begin{footnoteenv} + The fonts acquired their label `Almost' following the realisation + that their first implementation in \MF{}79 still wasn't quite right; + Knuth's original intention had been that they were the final answer. +\end{footnoteenv}. +There's not a lot one can do with these +fonts; they are (as their name implies) almost (but not quite) the +same as the \FontName{cm} series; if you're faced with a document that requests +them, the only reasonable approach is to edit the document to replace +\FontName{am*} font names with \FontName{cm*}. + +The appearance of \acro{DVI} files that request them is sufficiently +rare that no-one has undertaken the mammoth task of creating a +translation of them by means of virtual fonts. + +You therefore have to fool the system into using \FontName{cm*} fonts +where the original author specified \FontName{am*}. + +One option is the font substitutions that many +\acro{DVI} drivers provide via their configuration file~--- +specify that every \FontName{am} font should be replaced by its +corresponding \FontName{cm} font. + +Alternatively, one may try \acro{DVI} editing~--- packages +\Package{dtl} (\acro{DVI} Text Language) and \Package{dviasm} +(\acro{DVI} assembler) can both provide round trips from \acro{DVI} to +text and back to \acro{DVI}. One therefore edits font names +(throughout the text representation of the file) in the middle of that +round trip. + +The \acro{DTL} text is pretty straightforward, for this purpose: +fontnames are in single quotes at the end of lines, so: +\begin{quote} + \texttt{dv2dt -o} \meta{doc.txt} \meta{doc.dvi}\\ + (\emph{edit the \extension{txt} file})\\ + \texttt{dt2dv -o} \meta{edited.dvi} \meta{edited.txt} +\end{quote} +(you have to compile the \acro{C} programs for this). + +\ProgName{Dviasm} is a \ProgName{Python} script; its output has font +names in a section near the start of the document, and then dotted +about through the body, so: +\begin{quote} + \texttt{python dviasm.py -o} \meta{doc.txt} \meta{doc.dvi}\\ + (\emph{edit the \extension{txt} file})\\ + \texttt{python dviasm.py -o} \meta{edited.dvi} \meta{edited.txt} +\end{quote} +Both routes seem acceptable ways forward; it is a matter of taste +which any particular user may choose (it's not likely that it will be +necessary very often...). +\begin{ctanrefs} +\item[dviasm.py]\CTANref{dviasm} +\item[dtl]\CTANref{dtl} +\end{ctanrefs} + +\Question[Q-initex]{What's happened to \ProgName{initex}?} + +In the beginning, \AllTeX{} was stretching the capacity of every +system it was ported to, so there was a premium on reducing the size +of executables. One way of doing this was to have a separate +executable, \ProgName{initex}, that had things in it that aren't +needed in ordinary document runs~--- notably \csx{patterns} (which +builds hyphenation tables), and \csx{dump} (which writes out a format). + +On modern systems, the size of this code is insignificant in +comparison to the memory available, and maintaining separate programs +has been found sufficiently error-prone that free Unix-style system +distributions have abolished \ProgName{initex} and its friends and +relations such as \ProgName{inipdftex} in favour of a single +executable (that is, just \ProgName{tex} or \ProgName{pdftex}) that +will ``do what \ProgName{initex} (or whatever) used to do'' if it +detects the command option ``\texttt{-ini}''. + +The change happened with the advent of te\TeX{} version +3.0, which appeared at the beginning of 2005. At that time, +\texlive{} was following te\TeX{}, so that year's \texlive{} +distribution would also have dropped \ProgName{initex}. + +It would appear that the equation is somewhat different for the +\miktex{} developers, since that system continues to offer an +\ProgName{initex} executable. diff --git a/help/uk-tex-faq/faq-texsys.tex b/help/uk-tex-faq/faq-texsys.tex new file mode 100644 index 0000000000..0fcc34bf65 --- /dev/null +++ b/help/uk-tex-faq/faq-texsys.tex @@ -0,0 +1,488 @@ +% $Id: faq-texsys.tex,v 1.17 2013/07/24 21:50:56 rf10 Exp $ + +\section{\TeX{} Systems} + +\Question[Q-TeXsystems]{\AllTeX{} for different machines} + +We list here the free or shareware packages; +\htmlignore +a later \Qref{question}{Q-commercial} discusses commercial \tex{} products. +\endhtmlignore +\begin{htmlversion} + another question addresses + \Qref{commercial \TeX{} vendors'}{Q-commercial} products. +\end{htmlversion} + +The list is provided in four answers: +\begin{itemize} +\item \TeX{} systems for use with + \Qref*{Unix and \acro{GNU} Linux systems}{Q-sysunix} +\item \TeX{} systems for use with % ! line break + \Qref*{Modern Windows systems}{Q-syswin32} +\item \TeX{} systems for use with % ! line break + \Qref*{Macintosh systems}{Q-sysmac} +\item \TeX{} systems for % ! line break + \Qref*{Other sorts of systems}{Q-sysother} +\end{itemize} + +\Question[Q-sysunix]{Unix and \acro{GNU} Linux systems} + +\begin{quote} + Note that \macosx{}, though it is also a Unix-based system, has + different options; users should refer to the information in + \Qref[question]{Mac systems}{Q-sysmac}. +\end{quote} + +The \TeX{} distribution of choice, for Unix systems (including +\acro{GNU}/Linux and most other free Unix-like systems) is \texlive{}, +which is distributed as part of the \Qref*{\TeX{} collection}{Q-CD}. + +\texlive{} may also be installed ``over the network''; a network +installer is provided, and once you have a system (whether installed +from the network or installed off-line from a disc) a manager +(\ProgName{tlmgr}) can both keep your installation up-to-date and add +packages you didn't install at first. + +\texlive{} may be run with no installation at all; the web page % ! line break +\href{http://www.tug.org/texlive/portable.html}{\texlive{} portable usage} +describes the options for installing \texlive{} on a memory stick for +use on another computer, or for using the \texlive{} \acro{DVD} with +no installation at all. + +\tex{}-gpc is a ``back-to-basics'' distribution of \tex{} utilities, +\emph{only} (unlike \texlive{}, no `tailored' package bundles are +provided). It is distributed as source, and compiles with \acro{GNU} +Pascal, thereby coming as close as you're likely to get to Knuth's original +distribution. It is known to work well, but the omission of \etex{} +and \pdftex{} will rule it out of many users' choices. +\begin{ctanrefs} +\item[tex-gpc]\CTANref{tex-gpc} +\item[texlive]Browse \CTANref{texlive} +\item[texlive installer (Unix)]\CTANref{texlive-unix} +\end{ctanrefs} +\LastEdit{2013-07-18} + +\Question[Q-syswin32]{(Modern) Windows systems} + +Windows users nowadays have a real choice, between two excellent +distributions, \miktex{} and \texlive{}. \texlive{} on windows has +only in recent years been a real challenger to the long-established +\miktex{}, and even now \miktex{} has features that \texlive{} lacks. +Both are comprehensive +distributions, offering all the established \tex{} variants (\tex{}, +\pdftex{}~--- both with \etex{} variants~--- as well as \xetex{} and +\luatex{}), together with a wide range of support tools. + +Both \miktex{} and \texlive{} offer management tools, including the +means of keeping an installation ``up-to-date'', by reinstalling +packages that have been updated on \acro{CTAN} (the delay between a +package update appearing, and it being available to the distribution +users) can be as short as a day (and is never very long). + +\miktex{}, by Christian Schenk, is the longer-established of the pair, +and has a large audience of satisfied users; \texlive{} is the +dominant distribution in use in the world of Unix-like systems, and so +its Windows version may be expected to appeal to those who use both +Unix-like and Windows systems. The latest release of \miktex{}~--- +version 2.9~--- requires Windows~XP, or later (so it does not work on +Windows~2000 or earlier). + +Both distributions may be used in a configuration which involves no +installation at all. \miktex{}'s ``portable'' distribution may be +unpacked on a memory stick, and used on any windows computer without +making any direct use of the hard drive. The web page % ! line break +\href{http://www.tug.org/texlive/portable.html}{\texlive{} portable usage} +describes the options for installing \texlive{} on a memory stick, or +for using the \texlive{} \acro{DVD} with no installation at all. + +Both \miktex{} and \texlive{} may be downloaded and installed, package +by package, over the net. This is a mammoth undertaking, only to be +undertaken by those with a good network connection (and a patient +disposition!). + +A ready-to-run copy of the \miktex{} distribution, +on \acro{DVD} may be bought via the % ! line break +\href{http://www.miktex.org/cd/}{\miktex{} web site}. \miktex{} may +also be installed using Pro\TeX{}t, on the % ! line break +\Qref*{\TeX{} Collection \acro{DVD}}{Q-CD}. + +The \Qref*{\TeX{} Collection \acro{DVD}}{Q-CD} also provides an +offline installer for \texlive{}. + +% can't find any evidence this is still available +% +%% \href{http://foundry.supelec.fr/projects/xemtex/}{XEm\TeX{}}, by +%% Fabrice Popineau (he who created the excellent, but now defunct, +%% fp\TeX{} distribution), is another integrated distribution of \tex{}, +%% \latex{}, \CONTeXT{}, \ProgName{XEmacs} and other friends for Windows. +%% All programs have been compiled natively to take the best advantage of +%% the Windows environment. Configuration is provided so that the +%% resulting set of programs runs out-of-the-box, but the distribution is +%% not actively promoted. +% +% this isn't right, but i'm not sure how to deal with it... +% +%% The (Japanese) \acro{W}32\acro{TEX} distribution was motivated by +%% the needs of Japanese users (Japanese won't fit in a ``simple'' +%% character set like \acro{ASCII}, but \TeX{} is based on a version of +%% \acro{ASCII}). Despite its origins, \acro{W}32\acro{TEX} is said to +%% be a good bet for Western users, notably those whose disks are short +%% of space: the minimum documented download is as small as +%% 95\,MBytes. Investigate the distribution at +%% \URL{http://www.fsci.fuk.kindai.ac.jp/kakuto/win32-ptex/web2c75-e.html} +% +% the url is now http://w32tex.org/current/ + +A further (free) option is available thanks to the +\href{http://www.cygwin.com}{CygWin bundle}, which presents a +Unix-like environment in Windows systems (and also provides an +X-windows server). The (now obsolete) te\TeX{} distribution is +provided as part of the CygWin distribution, but there is a CygWin +build of \texlive{} so you can have a current \tex{} system. \TeX{} +under CygWin is reputedly somewhat slower than native Win32 +implementations such as \miktex{}, and of course the \tex{} +applications behave like Unix-system applications. + +BaKoMa \TeX{}, by Basil Malyshev, is a comprehensive (shareware) +distribution, which focuses on support of Acrobat. The distribution +comes with a bunch of Type~1 fonts packaged to work with BaKoMa +\TeX{}, which further the focus. +\begin{ctanrefs} +\item[bakoma]\CTANref{bakoma-tex} +\item[miktex]\CTANref{miktex}; % ! line break so only one \CTANref on line + acquire \CTANref{miktex-setup} (also available from the \miktex{} + web site), and read installation instructions from % ! line break + \href{http://www.miktex.org/2.9/setup}{the \miktex{} installation page} +\item[\nothtml{\bgroup\rmfamily}Portable\nothtml{\egroup} miktex]\CTANref{miktex-portable} +\item[protext.exe]\CTANref{protext} +\item[texlive]Browse \CTANref{texlive} +\item[texlive installer (Windows)]\CTANref{texlive-windows} +\end{ctanrefs} +\LastEdit{2013-04-11} + +\Question[Q-sysmac]{Macintosh systems} + +The \Qref*{\TeX{} collection}{Q-CD} \acro{DVD} includes Mac\TeX{}, +which is a Mac-tailored version of \texlive{}; details may be found on +the \href{http://tug.org/mactex}{\acro{TUG} web site}. If you don't +have the disc, you can download the distribution from \acro{CTAN} (but +note that it's pretty big). Mac\TeX{} is an instance of \texlive{}, +and has a Mac-tailored graphical \texlive{} manager, so that you can +keep your distribution up-to-date. + +Note that installing Mac\TeX{} requires \texttt{root} privilege. This +is a pity, since it offers several extras that aren't available via a +standard \texlive{}, which aren't therefore available to ``ordinary +folk'' at work. For those who don't have \texttt{root} privilege, the +option is to install using the \texlive{} \texttt{tlinstall} utility. + +\href{http://www.trevorrow.com/oztex/}{Oz\TeX{}}, by Andrew Trevorrow, +is a shareware version of \TeX{} for the Macintosh. A \acro{DVI} +previewer and \PS{} driver are also included. +Oz\TeX{} is a Carbon app, so will run under \macosx{} (see +\url{http://www.trevorrow.com/oztex/ozosx.html} for details), but it +is \emph{not} a current version: it doesn't even offer \pdftex{}. A +mailing list is provided by \acro{TUG}: sign up via +\url{http://tug.org/mailman/listinfo/oztex} + +Another partly shareware program is +\href{http://www.kiffe.com/cmactex.html}{CMac\TeX{}}, put together by +Tom Kiffe. CMac\TeX{} is much closer than Oz\TeX{} to the Unix \TeX{} +model of things (it uses \ProgName{dvips}, for instance). CMac\TeX{} +runs natively under \macosx{}; it includes a port of a version of +\Qref*{Omega}{Q-omegaleph}. + +\begin{flatversion} + A wiki for Mac users is to be found at + \URL{http://mactex-wiki.tug.org/} +\end{flatversion} +\begin{hyperversion} + Further information may be available in the % ! line break + \href{http://mactex-wiki.tug.org/}{MacTeX wiki}. +\end{hyperversion} +The Mac\TeX{}-on-OS~X mailing list is another useful resource for +users; subscribe via the +\href{http://mactex-wiki.tug.org/wiki/index.php?title=TeX_on_Mac_OS_X_mailing_list}{list home page} +\begin{ctanrefs} +\item[cmactex]\CTANref{cmactex} +\item[mactex]\CTANref{mactex} +\item[oztex]\CTANref{oztex} +\end{ctanrefs} + +\Question[Q-sysother]{Other systems' \tex{} availability} + +For \acro{PC}s, running \MSDOS{} or \acro{OS/}2, Em\TeX{} (by Eberhard +Mattes) offers \LaTeX{}, \BibTeX{}, previewers, and drivers. It is +available as a series of zip archives, with documentation in both +German and English. Appropriate memory managers for using em\TeX{} +with 386 (and better) processors and under pre-'9x Windows, are +included in the distribution. (Em\TeX{} \emph{can} be made to operate +under Windows, but even back when it was ``current'', such use wasn't +very actively encouraged.) + +A version of em\TeX{}, packaged to use a % ! line break +\Qref*{TDS directory structure}{Q-tds}, is separately available as an +em\TeX{} `contribution'. Note that neither em\TeX{} itself, nor +em\TeX{}-\acro{TDS}, is maintained. Users of Microsoft operating +systems, who want an up-to-date \AllTeX{} system, need Win32-based +systems. + +For \acro{PC}s, running \MSDOS{}, a further option is a port of the +Web2C~7.0 implementation, using the \acro{GNU} \ProgName{djgpp} +compiler. While this package is more recent than em\TeX{}, it +nevertheless also offers a rather old instance of \AllTeX{}. + +For \acro{VAX} systems running Open\acro{VMS}, a \TeX{} distribution +is available \acro{CTAN}, but is almost certainly not the latest (it +is more than 10 years old). Whether a version is even available for +current \acro{VMS} (which typically runs on Intel 64-bit processors) +is not clear, but it seems unlikely. + +For the Atari \acro{ST} and \acro{TT}, \acro{CS}-\TeX{} is available +from \acro{CTAN}; it's offered as a set of \acro{ZOO} archives. + +Amiga users have the option of a full implementations of \TeX{} 3.1 +(Pas\TeX{}) and \MF{} 2.7. + +It's less likely that hobbyists would be running \acro{TOPS}-20 +machines, but since \TeX{} was originally written on a \acro{DEC}-10 +under \acro{WAITS}, the \acro{TOPS}-20 port is another near approach +to Knuth's original environment. Sources are available by anonymous +\texttt{ftp} from \url{ftp://ftp.math.utah.edu/pub/tex/pub/web} +\begin{ctanrefs} +\item[\nothtml{\rmfamily}Atari TeX]\CTANref{atari-cstex} +\item[djgpp]\CTANref{djgpp} +\item[emtex]\CTANref{emtex} +\item[emtexTDS]\CTANref{emtextds} +\item[OpenVMS]\CTANref{OpenVMSTeX} +\item[PasTeX]\CTANref{amiga} +\end{ctanrefs} +\LastEdit{2013-07-18} + +\Question[Q-editors]{\TeX{}-friendly editors and shells} + +There are good \TeX{}-writing environments and editors for most +operating systems; some are described below, but this is only a +personal selection: +\begin{description} +\item[Unix] The commonest choices are \ProgName{[X]Emacs} or + \ProgName{vim}, though several others are available. + + \href{http://www.gnu.org/software/emacs/emacs.html}{\acro{GNU}\nobreakspace\ProgName{emacs}} + and \href{http://www.xemacs.org/}{\ProgName{XEmacs}} are supported + by the \acro{AUC}-\TeX{} + bundle (available from \acro{CTAN}). \acro{AUC}-\TeX{} provides menu + items and control sequences for common constructs, checks syntax, + lays out markup nicely, lets you call \TeX{} and drivers from + within the editor, and everything else like this that you can think + of. Complex, but very powerful. + + \href{http://vim.sourceforge.net}{\ProgName{Vim}} is also highly + configurable (also available for Windows and Macintosh systems). + Many plugins are available to support the needs of the \AllTeX{} user, + including syntax highlighting, calling \TeX{} programs, + auto-insertion and -completion of common \AllTeX{} structures, and + browsing \LaTeX{} help. The scripts \File{auctex.vim} and + \File{bibtex.vim} seem to be the most common recommendations. + + The editor \href{http://nedit.org/}{\ProgName{NEdit}} is also free + and programmable, and is available for Unix systems. An + \acro{AUC}-\TeX{}-alike set of extensions for \ProgName{NEdit} is available + from \acro{CTAN}. + + \ProgName{LaTeX4Jed} provides much enhanced \LaTeX{} support for the + \href{http://www.jedsoft.org/jed/}{\ProgName{jed}} editor. + \ProgName{LaTeX4Jed} is similar to \acro{AUC}-\TeX{}: menus, + shortcuts, templates, syntax highlighting, document outline, + integrated debugging, symbol completion, full integration with + external programs, and more. It was designed with both the beginner + and the advanced LaTeX user in mind. + + The \ProgName{Kile} editor that is provided with the \acro{KDE} + window manager provides \acro{GUI} ``shell-like'' facilities, in a + similar way to the widely-praised \ProgName{Winedt} (see below); + details (and downloads) are available from the project's + \href{http://kile.sourceforge.net/}{home on SourceForge}. + + \acro{TUG} is sponsoring the development of a cross-platform editor + and shell, modelled on the excellent \texshop{} for the Macintosh. + The result, + \href{http://www.tug.org/texworks/}{\texworks{}}, is recommended: if + you're looking for a + \AllTeX{} development environment, it may be for you. (It is + distributed with both \texlive{} and \miktex{}.) + + A possible alternative is + \href{http://texstudio.sourceforge.net/}{TeXstudio} +\item[Windows-32]\ProgName{TeXnicCenter} is a (free) + \TeX{}-oriented development system, uniting a powerful platform for + executing \AllTeX{} and friends with a configurable editor. + + \texworks{} (see above) is also available for Windows systems. + + \ProgName{Winedt}, a shareware package, is also highly spoken of. + It too provides a shell for the use of \TeX{} and related programs, + as well as a powerful and well-configured editor. The editor can + generate its output in \acro{UTF}-8 (to some extent), which is + useful when working with \Qref*{\xetex{}}{Q-xetex} (and other + ``next-generation'' \AllTeX{} applications). + + Both \ProgName{emacs} and \ProgName{vim} are available in versions + for Windows systems. +\item[Macintosh] For \macosx{} users, the free tool of choice appears to be + \href{http://pages.uoregon.edu/koch/texshop/index.html}{\texshop{}}, which + combines an editor and a shell with a coherent philosophy of dealing + with \AllTeX{} in the OS~X environment. TeXShop is distributed as + part of the MacTeX system, and will therefore be available out of + the box on machines on which MacTeX has been installed. + + \ProgName{Vim} is also available for use on Macintosh systems. + + The commercial Textures provides an excellent integrated Macintosh + environment with its own editor. More powerful still (as an editor) + is the shareware \ProgName{Alpha} which is extensible enough to let + you perform almost any \TeX{}-related job. It also works well with + Oz\TeX{}. From release 2.2.0 (at least), Textures works under \macosx{}. +\item[\acro{OS/}2] \ProgName{epmtex} offers an \acro{OS/}2-specific shell. +\end{description} +Atari, Amiga and \acro{N}e\acro{XT} users also have nice +environments. \LaTeX{} users looking for \ProgName{make}-like +facilities should review the answer on +\Qref*{Makefiles for \LaTeX{} documents}{Q-make}. + +While many \AllTeX{}-oriented editors can support work on \BibTeX{} +files, there are many systems that provide specific ``database-like'' +access to your \BibTeX{} files~--- +\begin{hyperversion} + see ``\Qref{creating a bibliography file}{Q-buildbib}''. +\end{hyperversion} +\begin{flatversion} + these are discussed in % ! line break + ``\Qref*{creating a bibliography file}{Q-buildbib}''. +\end{flatversion} +\begin{ctanrefs} +\item[alpha]\CTANref{alpha} +\item[auctex]\CTANref{auctex} +\item[epmtex]\CTANref{epmtex} +\item[LaTeX4Jed]\CTANref{latex4jed} +\item[Nedit LaTeX support]\CTANref{nedit-latex} +\item[TeXnicCenter]\CTANref{texniccenter} +\item[TeXshell]\CTANref{texshell} +\item[TeXtelmExtel]\CTANref{TeXtelmExtel} +\item[winedt]\CTANref{winedt} +\end{ctanrefs} +\LastEdit{2013-05-20} + +\Question[Q-commercial]{Commercial \TeX{} implementations} +\keywords{windows,macintosh,commercial} + +There are many commercial implementations of \TeX{}. The first +appeared not long after \TeX{} itself appeared. + +What follows is probably an incomplete list. Naturally, no warranty or +fitness for purpose is implied by the inclusion of any vendor in this +list. The source of the information is given to provide some clues to +its currency. + +In general, a commercial implementation will come `complete', that is, +with suitable previewers and printer drivers. They normally also have +extensive documentation (\emph{i.e}., not just the \TeX{}book!) and some +sort of support service. In some cases this is a toll free number +(probably applicable only within the \acro{USA} and or Canada), but others +also have email, and normal telephone and fax support. +\begin{description} +\item[\acro{PC}; True\TeX{}] Runs on all versions of Windows. + \begin{quote} + Richard J. Kinch\\ + TrueTeX Software\\ + 7890 Pebble Beach Court\\ + Lake Worth \acro{FL} 33467\\ + \acro{USA}\\[.25\baselineskip] + Tel: +1 561-966-8400\\ + Email: \mailto{kinch@truetex.com}\\ + Web: \URL{http://www.truetex.com/} + \end{quote} + Source: Mail from Richard Kinch, August 2004. +\item[pc\TeX{}] Long-established: pc\TeX{}32 is a Windows implementation. + \begin{quote} + Personal \TeX{} Inc\\ + 725 Greenwich Street, Suite 210 \\ + San Francisco, \acro{CA} 94133\\ + \acro{USA}\\[.25\baselineskip] + Tel: 800-808-7906 (within the \acro{USA})\\ + Tel: +1 415-296-7550\\ + Fax: +1 415-296-7501\\ + Email: \mailto{sales@pctex.com}\\ + Web: \URL{http://www.pctex.com/} + \end{quote} + Source: Personal \TeX{} Inc web site, December 2004 +\item[\acro{PC}; Scientific Word] Scientific Word and Scientific Workplace + offer a mechanism for near-\WYSIWYG{} input of \LaTeX{} documents; they + ship with True\TeX{} from Kinch (see above). Queries within the \acro{UK} + and Ireland should be addressed to Scientific Word Ltd., others should be + addressed directly to the publisher, MacKichan Software Inc. + \begin{quote} + Dr Christopher Mabb\\ + Scientific Word Ltd.\\ + 990 Anlaby Road,\\ + Hull,\\ + East Yorkshire,\\ + \acro{HU}4 6\acro{AT}\\ + \acro{UK}\\[0.25\baselineskip] + Tel: 0845 766\,0340 (within the \acro{UK}) \\ + Fax: 0845 603\,9443 (within the \acro{UK}) \\ + Email: \mailto{christopher@sciword.demon.co.uk} \\ + Web: \URL{http://www.sciword.demon.co.uk} + \end{quote} + \begin{quote} + MacKichan Software Inc.\\ + 19307 8th Avenue, Suite C\\ + Poulsbo \acro{WA} 98370-7370\\ + \acro{USA}\\[0.25\baselineskip] + Tel: +1 360 394\,6033\\ + Tel: 877 724\,9673 (within the \acro{USA}) + Fax: +1 360 394\,6039\\ + Email: \mailto{info@mackichan.com}\\ + Web: \URL{http://www.mackichan.com} + \end{quote} + Source: Mail from Christopher Mabb, August 2007 +%% \item[Macintosh; Textures] ``A \TeX{} system `for the rest of +%% us'\,''. A beta release of Textures for \macosx{} is +%% available~--- see \URL{http://www.bluesky.com/news/news_frames.html} +%% +%% (Blue Sky also gives away a \MF{} implementation and some +%% font manipulation tools for Macs.) +%% \begin{quote} +%% Blue Sky Research\\ +%% PO Box 80424\\ +%% Portland, \acro{OR} 97280\\ +%% \acro{USA}\\[.25\baselineskip] +%% Tel: 800-622-8398 (within the \acro{USA})\\ +%% Tel/Fax: +1 503-222-9571\\ +%% Fax: +1 503-246-4574\\ +%% Email: \mailto{sales@bluesky.com}\\ +%% Web: \URL{http://www.bluesky.com/} +%% \end{quote} +%% Source: Mail from Gordon Lee, April 2007 +\item[Amiga\TeX{}] A full implementation for the Commodore Amiga, + including full, on-screen and printing support for all \PS{} + graphics and fonts, IFF raster graphics, automatic font generation, + and all of the standard macros and utilities. + \begin{quote} + Radical Eye Software\\ + \acro{PO} Box 2081\\ + Stanford, \acro{CA} 94309\\ + \acro{USA} + \end{quote} + Source: Mail from Tom Rokicki, November 1994 +\end{description} +\checked{mc}{1994/11/09}% +\checked{RF}{1994/11/24}% + +Note that the company \YandY{} has gone out of business, and \YandY{} +\TeX{} (and support for it) is therefore no longer available. Users +of \YandY{} systems may care to use the self-help +\href*{http://tug.org/pipermail/yandytex/}{mailing list} +that was established in 2003; the remaining usable content of +\YandY{}'s web site is available at \URL{http://www.tug.org/yandy/} + diff --git a/help/uk-tex-faq/faq-the-end.tex b/help/uk-tex-faq/faq-the-end.tex new file mode 100644 index 0000000000..9ace9b7919 --- /dev/null +++ b/help/uk-tex-faq/faq-the-end.tex @@ -0,0 +1,167 @@ +% $Id: faq-the-end.tex,v 1.3 2014/01/28 18:17:36 rf10 Exp rf10 $ + +\section{You're still stuck?} + +\Question[Q-noans]{You don't understand the answer} + +While the \acro{FAQ} maintainers don't offer a `help' service, they're +very keen that you understand the answers they've already written. +They're (almost) written ``in a vacuum'', to provide something to +cover a set of questions that have arisen; it's always possible that +they're written in a way that a novice won't understand them. + +Which is where you can help the community. Mail the +\begin{wideversion} + \href{mailto:faq-devel@tex.ac.uk}{maintainers} +\end{wideversion} +\begin{narrowversion} + maintainers (at \Email{faq-devel@tex.ac.uk}) +\end{narrowversion} +to report the answer that you find unclear, and (if you can) suggest +what we need to clarify. Time permitting (the team is small and all +its members are busy), we'll try and clarify the answer. This way, +with a bit of luck, we can together improve the value of this resource +to the whole community. + +Note that the \acro{FAQ} development email address is not for +answering questions: it's for you to suggest which questions we should +work on, or new questions we should answer in future editions. + +Those who simply ask questions at that address will be referred to +\mailto{texhax@tug.org} or to \Newsgroup{comp.text.tex}. + +\Question[Q-newans]{Submitting new material for the \acro{FAQ}} + +The \acro{FAQ} will never be complete, and we always expect that +there will be people out there who know better than we do about +something or other. We always need to be put right about whatever +we've got wrong, and suggestions for improvements, particularly +covering areas we've missed, are always needed: mail anything you have +to the +\begin{wideversion} + \href{mailto:faq-devel@tex.ac.uk}{maintainers} +\end{wideversion} +\begin{narrowversion} + maintainers (at \Email{faq-devel@tex.ac.uk}) +\end{narrowversion} + +If you have actual material to submit, your contribution is more than +ever welcome. Submission in plain text is entirely acceptable, but +if you're really willing, you may feel free to mark up your submission +in the form needed for the \acro{FAQ} itself. The markup is a +strongly-constrained version of \LaTeX{}~--- the constraints come from +the need to translate the marked-up text to \acro{HTML} on the fly +(and hence pretty efficiently). There is a file \File{markup-syntax} +in the \acro{FAQ} distribution that describes the structure of the +markup, but there's no real substitute for reading at least some of +the source (\File{faqbody.tex}) of the \acro{FAQ} itself. If you +understand \ProgName{Perl}, you may also care to look at the +translation code in \File{texfaq2file} and \File{sanitize.pl} in the +distribution: this isn't the code actually used on the Web site, but +it's a close relation and is kept +up to date for development purposes. +\begin{ctanrefs} +\item[\nothtml{\rmfamily}\acro{FAQ} distribution]\CTANref{faq} +\end{ctanrefs} + +\Question[Q-bug]{What to do if you find a bug} + +For a start, make entirely sure you \emph{have} found a bug. +Double-check with books about \TeX{}, \LaTeX{}, or whatever you're using; +compare what you're seeing against the other answers above; ask every +possible person you know who has any \TeX{}-related expertise. +The reasons for all this caution are various. + +If you've found a bug in \TeX{} itself, you're a rare animal indeed. +Don Knuth is so sure of the quality of his code that he offers real +money prizes to finders of bugs; the cheques he writes are +such rare items that they are seldom cashed. If \emph{you} +think you have found a genuine fault in \TeX{} itself (or \MF{}, or the +\acro{CM} fonts, or the \TeX{}book), don't immediately write to Knuth, +however. He only looks at bugs infrequently, and even then +only after they are agreed as bugs by a small vetting team. In the +first instance, contact Barbara Beeton at the \acro{AMS} +(\Email{bnb@ams.org}), or contact +\Qref*{\acro{TUG}}{Q-TUG*}. + +If you've found a bug in \LaTeXe{}, \Qref*{report it}{Q-latexbug} +using mechanisms supplied by the \LaTeX{} team. (Please be +careful to ensure you've got a \LaTeX{} bug, or a bug in one of the +``required'' packages distributed by the \LaTeX{} team.) + +If you've found a bug in a contributed \LaTeX{} package, the best +starting place is usually to ask in the ``usual places for % ! line break +\Qref*{help on-line}{Q-gethelp}, or just possibly one of the % ! line break +\Qref*{specialised mailing lists}{Q-maillists*}. +The author of the package may well answer on-line, but if no-one +offers any help, you may stand a chance if you mail the author +(presuming that you can find an address\dots{}). + +If you've found a bug in \LaTeXo{}, or some other such unsupported +software, your only real hope is \Qref*{help on-line}{Q-gethelp}. + +Failing all else, you may need to pay for +help~--- \acro{TUG} maintains a % ! line break +\href{http://www.tug.org/consultants.html}{register of \TeX{} consultants}. +(This of course requires that you have the resources~--- and a +pressing enough need~--- to hire someone.) + + +\htmlignore +\par +\endhtmlignore +\Question[Q-latexbug]{Reporting a \LaTeX{} bug} +\htmlignore +\par +\endhtmlignore +% +% This here isn't a reference to a question... +\label{lastquestion} + +The \LaTeX{} team supports \LaTeX{}, and will deal with +% beware line wrap +\emph{bona fide} bug reports. Note that the \LaTeX{} team does +\emph{not} deal with contributed packages~--- just the software that +is part of the \LaTeX{} distribution itself: \LaTeX{} and the +``required'' packages. +Furthermore, you need to be slightly +careful to produce a bug report that is usable by the team. The steps +are: + +\nothtml{\noindent}\textbf{1.} Are you still using current \LaTeX{}? Maintenance is only +available for sufficiently up-to-date versions of \LaTeX{}~--- if your +\LaTeX{} is more than two versions out of date, the bug reporting +mechanisms may reject your report. + +\nothtml{\noindent}\textbf{2.} Has your bug already been reported? Browse the +% beware line break +\href{http://www.latex-project.org/cgi-bin/ltxbugs2html?introduction=yes}{\LaTeX{} bugs database}, +to find any earlier instance of your bug. In many cases, the database +will list a work-around. + +\nothtml{\noindent}\textbf{3.} Prepare a % ! line break +\Qref*{``minimum'' file}{Q-minxampl} that exhibits the problem. +Ideally, such a file should contain no contributed packages~--- the +\LaTeX{} team as a whole takes no responsibility for such packages (if +they're supported at all, they're supported by their authors). The +``minimum'' file should be self-sufficient: if a member of the team +runs it in a clean directory, on a system with no contributed +packages, it should replicate your problem. + +\nothtml{\noindent}\textbf{4.} Run your file through \LaTeX{}: the bug +system needs the \extension{log} file that this process creates. + +\nothtml{\noindent}\textbf{5.} Connect to the % ! line break +\href{http://www.latex-project.org/bugs-upload.html}{latex bugs processing web page} +and enter details of your bug~--- category, summary and full +description, and the two important files (source and log file). + +The personal details are \emph{not} optional: the members of the +\LaTeX{} team may need to contact to discuss the bug with you, or to +advise you of a work-around. Your details will not appear in the +public view of the database. + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/help/uk-tex-faq/faq-wdidt.tex b/help/uk-tex-faq/faq-wdidt.tex new file mode 100644 index 0000000000..c6cdd8e95e --- /dev/null +++ b/help/uk-tex-faq/faq-wdidt.tex @@ -0,0 +1,2142 @@ +% $Id: faq-wdidt.tex,v 1.24 2014/01/22 17:29:03 rf10 Exp $ + +\section{Why does it \emph{do} that?} + +\subsection{Common errors} + +\Question[Q-crossref]{\LaTeX{} gets cross-references wrong} + +Sometimes, however many times you run \LaTeX{}, the cross-references +are just wrong. A likely reason is that you have placed the label +before the data for the label was set; if the label is recording a +\csx{caption} command, the \csx{label} command must appear +\emph{after} the \csx{caption} command, or be part of it. For example: +\begin{quote} +\begin{verbatim} +\begin{figure} + + \caption{My figure} + \label{myfig} +\end{figure} +\end{verbatim} +\end{quote} +is correct, as is +\begin{quote} +\begin{verbatim} +\begin{figure} + + \caption{My figure% + \label{myfig}} +\end{figure} +\end{verbatim} +\end{quote} +whereas, in +\begin{quote} +\begin{verbatim} +\begin{figure} + + \label{myfig} + \caption{My figure} +\end{figure} +\end{verbatim} +\end{quote} +the label will report the number of the section (or whatever) in which +the surrounding text resides, or the like. + +You can, with the same malign effect, shield the \csx{caption} command +from its associated \csx{label} command, by enclosing the caption in an +environment of its own. This effect will be seen with: +\begin{quote} +\begin{verbatim} +\begin{figure} + + \caption{A Figure} +\end{figure} +\label{myfig} +\end{verbatim} +\end{quote} +where the \csx{label} definitely \emph{is} after the \csx{caption}, +but because the \environment{figure} environment closed before the +\csx{label} command, the \csx{caption} is no longer ``visible''. + +In summary, the \csx{label} must be \emph{after} the command that +defines it (e.g., \csx{caption}), and if the \csx{caption} is inside +an environment, the \csx{label} must be in there too. +\LastEdit{2012-02-07} + +\Question[Q-newlineargs]{Start of line goes awry} +\keywords{asterisk square bracket start line} + +This answer concerns two sorts of problems: errors of the form +\begin{quote} +\begin{verbatim} +! Missing number, treated as zero. + + p +<*> [perhaps] +\end{verbatim} +\end{quote} +and errors where a single asterisk at the start of a line mysteriously +fails to appear in the typeset output. + +Both problems arise because \texttt{\bsbs } takes optional arguments. The +command \texttt{\bsbs *} means ``break the line here, and inhibit page break +following the line break''; the command \texttt{\bsbs [}\meta{dimen}\texttt{]} +means ``break the line here and add \meta{dimen} extra vertical space +afterwards''. + +The problem arises because \texttt{\bsbs } looks for the next +non-blank thing; the test it uses ignores the end of the line in +your input text, so that \texttt{\bsbs } comes to imagine that you +were giving it a `modifier'. + +An obvious solution is to enclose the stuff at the start of the new +line in braces, typing: +\begin{quote} +\begin{verbatim} +{\ttfamily + /* C-language comment\\ + {[perhaps]} this could be done better\\ + {*}/ +} +\end{verbatim} +\end{quote} +This particular example could be coded (without any problems) in +verbatim, but the behaviour does confuse people. + +The problem also appears in maths mode, in arrays and so on. In this +case, large-scale bracketing of things is \emph{not} a good idea; the +\TeX{} primitive \csx{relax} (which does nothing except to block +searches of this nature) may be used. From another +\Newsgroup{comp.text.tex} example: +\begin{quote} +\begin{verbatim} +\begin{eqnarray} + [a] &=& b \\ + \relax[a] &=& b +\end{eqnarray} +\end{verbatim} +\end{quote} +which is a usage this \acro{FAQ} would not recommend, anyway: refer +to the \Qref*{reason not to use \environment{eqnarray}}{Q-eqnarray}. + +Note that the \Package{amsmath} package modifies the behaviour of +\texttt{\bsbs } in maths. With \Package{amsmath}, the +\environment{eqnarray} example doesn't need any special action +(\csx{relax} or braces). +\LastEdit{2012-09-02} + +\Question[Q-verbwithin]{Why doesn't verbatim work within\,\dots{}?} + +The \LaTeX{} verbatim commands work by changing category codes. Knuth +says of this sort of thing ``Some care is needed to get the timing +right\dots{}'', since once the category code has been assigned to a +character, it doesn't change. So \csx{verb} and +\cmdinvoke{begin}{verbatim} have to assume that they are getting the +first look at the parameter text; if they aren't, \TeX{} has already +assigned category codes so that the verbatim command doesn't have a +chance. For example: +\begin{quote} +\begin{verbatim} +\verb+\error+ +\end{verbatim} +\end{quote} +will work (typesetting `\csx{error}'), but if we define no more than a +no-op macro, +\begin{quote} +\begin{verbatim} +\newcommand{\unbrace}[1]{#1} +\end{verbatim} +\end{quote} +which simply regurgitates its argument, and use it as: +\begin{quote} +\begin{verbatim} +\unbrace{\verb+\error+} +\end{verbatim} +\end{quote} +the combinartion will not (it will attempt to execute \csx{error}). +Other errors one +may encounter are `\csx{verb} ended by end of line', or even the +rather more helpful `\csx{verb} illegal in command argument'. The +same sorts of thing happen with \cmdinvoke{begin}{verbatim} \dots{} +\cmdinvoke{end}{verbatim}: +\begin{quote} +\begin{quoteverbatim} +\ifthenelse{\boolean{foo}}{% +\begin{verbatim} +foobar +\end{verbatim} +}{% +\begin{verbatim} +barfoo +\end{verbatim} +} +\end{quoteverbatim} +\end{quote} +provokes errors like `File ended while scanning use of +\csx{@xverbatim}', as \cmdinvoke{begin}{verbatim} fails to see its +matching \cmdinvoke{end}{verbatim}. + +This is why the \LaTeX{} book insists that verbatim +commands must not appear in the argument of any other command; they +aren't just fragile, they're quite unusable in any ``normal'' command +parameter, +regardless of \Qref*{\csx{protect}ion}{Q-protect}. (The \csx{verb} +command tries hard to detect if you're misusing it; unfortunately, it +can't always do so, and the error message is therefore not reliable as an +indication of problems.) + +The first question to ask yourself is: ``is \csx{verb} actually +necessary?''. +\begin{itemize} +\item If \cmdinvoke{texttt}{\emph{your text}} produces the same result + as \csx{verb}\texttt{+\emph{your text}+}, then there's no need of + \csx{verb} in the first place. +\item If you're using \csx{verb} to typeset a \acro{URL} or email + address or the like, then the \csx{url} command from the + \Package{url} will help: it doesn't suffer from all the problems of + \csx{verb}, though it's still not robust; % ! line break + ``\Qref*{typesetting \acro{URL}s}{Q-setURL}'' offers advice here. +\item If you're putting \csx{verb} into the argument of a boxing + command (such as \csx{fbox}), consider using the \environment{lrbox} + environment: +\begin{quote} +\begin{verbatim} +\newsavebox{\mybox} +... +\begin{lrbox}{\mybox} + \verb!VerbatimStuff! +\end{lrbox} +\fbox{\usebox{\mybox}} +\end{verbatim} +\end{quote} +\end{itemize} + +If you can't avoid verbatim, the \csx{cprotect} command (from the +package \Package{cprotect}) might help. The package manages to make a +macro read a verbatim argument in a ``sanitised'' way by the simple +medium of prefixing the macro with \csx{cprotect}: +\begin{quote} +\begin{verbatim} +\cprotect\section{Using \verb|verbatim|} +\end{verbatim} +\end{quote} +The package \emph{does} work in this simple case, and deserves +consideration in many others cases; the package documentation gives +more details. + +Another way out is to use one of ``argument types'' of the +\csx{NewDocumentCommand} command in the experimental \latex{}3 package +\Package{xparse}: +\begin{quote} +\begin{verbatim} +\NewDocumentCommand\cmd{ m v m }{#1 `#2' #3} +\cmd{Command }|\furble|{ isn't defined} +\end{verbatim} +\end{quote} +Which gives us: +\begin{quote} + Command \csx{furble} isn't defined +\end{quote} +The ``\texttt{m}'' tag argument specifies a normal mandatory argument, +and the ``\texttt{v}'' specifies one of these verbatim arguments. +As you see, it's implanting a \csx{verb}-style command argument in the +argument sequence of an otherwise ``normal'' sort of command; that +\begin{typesetversion} + `\texttt{\char`\|}' +\end{typesetversion} +\begin{htmlversion} + `\texttt{|}' % | balance for emacs text-colouring +\end{htmlversion} +may be any old character that doesn't +conflict with the content of the argument. + +This is pretty neat (even if the verbatim is in an argument of its +own) but the downside is that \Package{xparse} pulls in +the experimental \latex{}3 programming environment +(\Package{l3kernel}) which is pretty big. + +Other than the \Package{cprotect} package, there are four partial +solutions to the problem: +\begin{itemize} +\item Some packages have macros which are designed to be responsive + to verbatim text in their arguments. For example, + the \Package{fancyvrb} package defines a command + \csx{VerbatimFootnotes}, which redefines the \csx{footnotetext} + command, and hence also the behaviour of the \csx{footnote}) + command, in such a way that you can include \csx{verb} commands in + its argument. This approach could in principle be extended to the + arguments of other commands, but it can clash with other packages: + for example, \csx{VerbatimFootnotes} interacts poorly with the + \pkgoption{para} option of the \Package{footmisc} package. + + The \Class{memoir} class defines its \csx{footnote} command so that + it will accept verbatim in its arguments, without any supporting package. +\item The \Package{fancyvrb} package defines a command \csx{SaveVerb}, + with a corresponding \csx{UseVerb} command, that allow you to save + and then to reuse the content of its argument; for details of this + extremely powerful facility, see the package documentation. + + Rather simpler is the \Package{verbdef} package, whose \csx{verbdef} + command defines a (robust) command which expands to the verbatim + argument given; the \Package{newverbs} package provides a similar + function as well as several related ones. +\item In a similar vein, the \Package{verbatimbox} package makes it + possible to put verbatim material in a box: + \begin{quote} +\begin{verbatim} +\begin{verbbox} +some exotic _&$ stuff +\end{verbbox} +\theverbbox +\end{verbatim} + \end{quote} + the operation typesets exotic stuff into an anonymous box, and its + contents may be retrieved using the command \csx{theverbbox}. It is + clear that it's in the same mould as the \csx{verbdef} command + mentioned above; the package defines other similar commands. +\item The \Package{tcolorbox} package provides a similar facility +\item If you have a single character that is giving trouble (in + its absence you could simply use \csx{texttt}), consider using + \csx{string}. \cmdinvoke{texttt}{my\csx{string}\_name} + typesets the same as + \csx{verb+my\_name+}, and will work in the argument of a command. It + won't, however, work in a moving argument, and no amount of + \Qref*{\csx{protect}ion}{Q-protect} will make it work in + such a case. + + A robust alternative is: +\begin{quote} +\begin{verbatim} +\chardef\us=`\_ +... +\section{... \texttt{my\us name}} +\end{verbatim} +\end{quote} + Such a definition is `naturally' robust; the construction + ``\meta{back-tick}\csx{\meta{char}}'' may be used for any + troublesome character (though it's plainly not necessary for things + like percent signs for which \AllTeX{} already provides + robust macros). + +\item One may also consider putting verbatim material in an external + file; this is somewhat more tedious, but the file may be reused + several times within a single document. The \Package{tcolorbox} + permits this: +\begin{quote} +\begin{verbatim} +\begin{tcbverbatimwrite}{} +... +\end{tcbverbatimwrite} +\end{verbatim} +\end{quote} + which (as one might guess) writes to the named file; load the saved + contents using \cmdinvoke{input}{} + + A second environment puts your verbatim material in an (apparently) + anonymous temporary file: +\begin{quote} +\begin{verbatim} +\begin{tcbwritetemp}{} +... +\end{tcbverbatimwrite} +\end{verbatim} +\end{quote} + In this case, you use the anonymous file with the \csx{tcbusetemp} + macro. (You can change the name used for the `anonymous' file, if + its default proves troublesome.) + + The \Package{moreverb} package provides a \csx{verbatimwrite} + command, which doesn't provide an anonynous file. + + Macros, to achieve the same effect, are outlined in the + documentation of the \Package{verbatim} package; the macros use the + facilities of the package, but the user has to write a mini-package + actually to use them. +\end{itemize} +\begin{ctanrefs} +\item[cprotect.sty]\CTANref{cprotect} +\item[fancyvrb.sty]\CTANref{fancyvrb} +\item[l3kernel \nothtml{\rmfamily}bundle]\CTANref{l3kernel} +\item[memoir.cls]\CTANref{memoir} +\item[newverbs.sty]\CTANref{newverbs} +\item[tcolorbox.sty]\CTANref{tcolorbox} +\item[url.sty]\CTANref{url} +\item[verbatim.sty]\CTANref{verbatim} +\item[verbatimbox.sty]\CTANref{verbatimbox} +\item[verbdef.sty]\CTANref{verbdef} +\item[xparse.sty]Distributed as part of \CTANref{l3packages}[xparse] +\end{ctanrefs} +\LastEdit{2013-10-21} + +\Question[Q-noline]{``No line here to end''} + +The error +\begin{quote} +\begin{wideversion} +\begin{verbatim} +! LaTeX Error: There's no line here to end. + +See the LaTeX manual or LaTeX Companion for explanation. +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +! LaTeX Error: There's no line here to end. + +See the LaTeX manual or LaTeX Companion +... for explanation. +\end{verbatim} +\end{narrowversion} +\end{quote} +appears when you give \LaTeX{} a \texttt{\bsbs } command at a time +when it's not expecting it; it is a \emph{line-breaking} command, and +is confused if \latex{} isn't building a paragraph when you give the +command. A common case is where you've decided you want the label of +a list item to be on a line of its own, and written (for example): +\begin{quote} +\begin{verbatim} +\begin{description} +\item[Very long label] \\ + Text... +\end{description} +\end{verbatim} +\end{quote} +% ridiculous coding for sanitize.pl -- careful! +% \bsbs {} is actually a rather bad command to use in this case (even if +% it worked), since it could force the `paragraph' that's made up of the +% text of the item to terminate a line which has nothing on it but the +% label. This could lead to an ``\texttt{Underfull }\csx{hbox}'' warning message +% (usually with `infinite' badness of 10000); while this message doesn't +% do any actual harm other than slowing down your \LaTeX{} run, any +% message that doesn't convey any information distracts for no useful +% purpose. + +The proper solution to the problem is to write a new sort of +\environment{description} environment, that does just what you're after. (The +\nothtml{\emph{\LaTeX{} Companion}~--- see }% ! line wrap, and next line +\Qref[question]{\emph{\LaTeX{} Companion}}{Q-latex-books}\nothtml{~---} +offers a rather wide selection of variants of these things.) + +A straightforward solution, which avoids the warning, is to write: +\begin{quote} +\begin{verbatim} +\begin{description} +\item[Very long label] \leavevmode \\ + Text... +\end{description} +\end{verbatim} +\end{quote} +which starts a paragraph before forcing a break. The +\Package{expdlist} package provides the same functionality with its +\csx{breaklabel} command, and \Package{mdwlist} provides it via its +\csx{desclabelstyle} command. + +The other common occasion for the message is when you're using the +\texttt{center} (or \environment{flushleft} or \environment{flushright}) +environment, and have decided you need extra separation between lines +in the environment: +\begin{quote} +\begin{verbatim} +\begin{center} + First (heading) line\\ + \\ + body of the centred text... +\end{center} +\end{verbatim} +\end{quote} +The solution here is plain: use the \texttt{\bsbs } command in the way it's +supposed to be used, to provide more than just a single line break +space. \texttt{\bsbs } takes an optional argument, which specifies +how much extra space to add; the required effect in the text above can +be had by saying: +\begin{quote} +\begin{verbatim} +\begin{center} + First (heading) line\\[\baselineskip] + body of the centred text... +\end{center} +\end{verbatim} +\end{quote} + +You \emph{can} use \csx{leavevmode}, as above: +\begin{quote} +\begin{verbatim} +\begin{center} + First (heading) line\\ + \leavevmode\\ + body of the centred text... +\end{center} +\end{verbatim} +\end{quote} +but that is just as tiresome to type as \texttt{\bsbs } with an optional +argument, and can not be recommended. +\begin{ctanrefs} +\item[expdlist.sty]\CTANref{expdlist} +\item[mdwlist.sty]Distributed as part of \CTANref{mdwtools}[mdwlist] +\end{ctanrefs} +\LastEdit{2014-01-13} + +% other instances: \[no]linebreak in vertical mode + +\Question[Q-vertspacefloat]{Extra vertical space in floats} + +A common complaint is that extra vertical space has crept into +\environment{figure} or \environment{table} floating environments. +More common still are users who post code that introduces this extra +space, and \emph{haven't noticed the problem}! + +The trouble arises from the fact that the \environment{center} +environment (and its siblings \environment{flushleft} and +\environment{flushright}) are actually based on \LaTeX{}'s +list-handling code; and lists always separate themselves from the +material around them. Meanwhile, there are parameters provided to +adjust the spacing between floating environments and their +surroundings; so if we have: +\begin{quote} +\begin{verbatim} +\begin{figure} + \begin{center} + \includegraphics{...} + \caption{...} + \end{center} +\end{figure} +\end{verbatim} +\end{quote} +\nothtml{\noindent}or worse still: +\begin{quote} +\begin{verbatim} +\begin{figure} + \begin{center} + \includegraphics{...} + \end{center} + \caption{...} +\end{figure} +\end{verbatim} +\end{quote} +unwarranted vertical space is going to appear. + +The solution is to let the float and the objects in it position +themselves, and to use ``generic'' layout commands rather than their +list-based encapsulations. +\begin{quote} +\begin{verbatim} +\begin{figure} + \centering + \includegraphics{...} + \caption{...} +\end{figure} +\end{verbatim} +\end{quote} +(which even involves less typing). + +This alternative code will work with any \LaTeX{} package. It will +not work with obsolete (pre-\LaTeXe{}) packages such as +\Package{psfig} or \Package{epsf}~--- see % beware line break +\Qref[question]{graphics inclusion}{Q-impgraph} for discussion of the +genesis of \csx{includegraphics}. +\LastEdit{2012-11-16} + +\Question[Q-centre-flt]{Why is my table/figure/\dots{} not centred?} + +You want a float whose contents are centred, but \latex{} ignores your +\environment{center} environment. Most likely, you have written: +\begin{quote} +\begin{verbatim} +\begin{center} + \begin{figure} + ... + \end{figure} +\end{center} +\end{verbatim} +\end{quote} +In this case, \latex{} has ``taken the \environment{figure} away'', +and will typeset it at some location it fancies (it does the same with +\environment{table}s) the only thing we can say (for sure) about the +location is that it \emph{won't} be inside that \environment{center} +environment. As a result, the \environment{center} environment is +left with nothing to do~\dots{} except to % !line break +\Qref*{make a mess of your vertical spacing}{Q-vertspacefloat}. + +The solution is the same as that outlined in % !line break +\Qref*{the same answer}{Q-vertspacefloat}, noting that all control of +an \environment{figure} or \environment{table} needs to be +inside the environment. So the example's code should be converted to +\begin{quote} +\begin{verbatim} +\begin{figure} + \centering + ... +\end{figure} +\end{verbatim} +\end{quote} +(or something similar for a \environment{table}). +\LastEdit*{2013-11-19} + +\Question[Q-2colfltorder]{Two-column float numbers out of order} + +When \LaTeX{} can't place a float immediately, it places it on one of +several ``defer'' lists. If another float of the same type comes +along, and the ``defer'' list for that type still has something in it, +the later float has to wait for everything earlier in the list. + +Now, standard \LaTeX{} has different lists for single-column floats, +and double-column floats; this means that single-column figures can +overtake double-column figures (or vice-versa), and you observe later +figures appear in the document before early ones. The same is true, +of course, for tables, or for any user-defined float. + +The \LaTeX{} team recognise the problem, and provides a package +(\Package{fixltx2e}) to deal with it. \Package{Fixltx2e} amalgamates +the two defer lists, so that floats don't get out of order. + +For those who are still running an older \LaTeX{} distribution, the +package \Package{fix2col} should serve. This package (also by a +member of the \LaTeX{} team) was the basis of the relevant part of +\Package{fixltx2e}. The functionality has also been included in +\Package{dblfloatfix}, which also has code to place full-width floats +at \Qref*{\texttt{[b]} placement}{Q-2colfloat}. + +Once you have loaded the package, no more remains to be done: the +whole requirement is to patch the output routine; no extra commands +are needed. +\begin{ctanrefs} +\item[dblfloatfix.sty]\CTANref{dblfloatfix} +\item[fix2col.sty]\CTANref{fix2col} +\item[fixltx2e.sty]Part of the \LaTeX{} distribution +\end{ctanrefs} + +\Question[Q-tabacc]{Accents misbehave in \environment{tabbing}} + +So you are constructing a \environment{tabbing} environment, and you +have the need of some diacriticised text~--- perhaps something as simple +as \cmdinvoke{'}{e}~--- and the accent disappears because it has been +interpreted as a \environment{tabbing} command, and everything goes +wrong. + +This is really a rather ghastly feature of the \environment{tabbing} +environment; in order to type accented characters you need to use the +\csx{a} kludge: so \cmdinvoke{a'}{e} inside \environment{tabbing} for +\cmdinvoke{'}{e} outside, and similarly \csx{a`} for \csx{`} and \csx{a=} +for \csx{=}. This whole procedure is of course hideous and +error-prone. + +The simplest alternative is to type in an encoding that has the +diacriticised characters in it, and to use an appropriate encoding +definition file in the \Package{inputenc} package. So for example, +type: +\begin{quote} + \cmdinvoke{usepackage}[latin1]{inputenc}\\ + \texttt{...}\\ + \cmdinvoke{begin}{tabbing}\\ + \texttt{...}\\ + \texttt{...} \csx{>} \texttt{voil\`a} \csx{>} \texttt{...} +\end{quote} +for: +\begin{quote} + \dots{}\quad voil\`a\quad \dots{} +\end{quote} +and the internal mechanisms of the \Package{inputenc} package will put +the right version of the accent command in there. + +A witty reversal of the r\^oles is introduced by the package +\Package{Tabbing} (note the capital ``T''): it provides a +\environment{Tabbing} environment which duplicates +\environment{tabbing}, but all the single-character commands become +complicated objects. So \environment{tabbing}'s \csx{>} becomes +\csx{TAB>}, \csx{=} becomes \csx{TAB=}, and so on. The above trivial +example would therefore become: +\begin{quote} +\begin{verbatim} +\usepackage{Tabbing} +... +\begin{Tabbing} + ... ... \TAB> voil\`a \TAB> ... +\end{verbatim} +\end{quote} +\begin{ctanrefs} +\item[Tabbing.sty]\CTANref{Tabbing} +\end{ctanrefs} + +\Question[Q-alreadydef]{Package reports ``command already defined''} + +You load a pair of packages, and the second reports that one of the +commands it defines is already present. For example, both the +\Package{txfonts} and \Package{amsmath} define a command \csx{iint} +(and \csx{iiint} and so on); so +\begin{quote} +\begin{verbatim} +... +\usepackage{txfonts} +\usepackage{amsmath} +\end{verbatim} +\end{quote} +produces a string of error messages of the form: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +! LaTeX Error: Command \iint already defined. + Or name \end... illegal, see p.192 of the manual. +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +! LaTeX Error: Command \iint already + defined. Or name \end... illegal, + see p.192 of the manual. +\end{verbatim} +\end{narrowversion} +\end{quote} +As a general rule, things that \Package{amsmath} defines, it defines +well; however, there is a good case for using the \Package{txfonts} +version of \csx{iint}~--- the associated \FontName{tx} fonts have a +double integral symbol that doesn't need to be ``faked'' in the way +\Package{amsmath} does. In the case that you are loading several +symbol packages, every one of which defines the same symbol, you are +likely to experience the problem in a big way (\csx{euro} is a common +victim). + +There are similar cases where one package redefines another's command, +but no error occurs because the redefining package doesn't use +\csx{newcommand}. Often, in such a case, you only notice the change +because you assume the definition given by the first package. The +\Package{amsmath}--\Package{txfonts} packages are just such a pair; +\Package{txfonts} doesn't provoke errors. + +You may deal with the problem by saving and restoring the command. +Macro programmers may care to do this for themselves; for the rest of +us, there's the package \Package{savesym}. The sequence: +\begin{quote} +\begin{verbatim} +\usepackage{savesym} +\usepackage{amsmath} +\savesymbol{iint} +\usepackage{txfonts} +\restoresymbol{TXF}{iint} +\end{verbatim} +\end{quote} +does the job; restoring the \Package{amsmath} version of the command, +and making the \Package{txfonts} version of the command available as +\csx{TXFiint}. + +Documentation of \Package{savesym} doesn't amount to much: the only +commands are \csx{savesymbol} and \csx{restoresymbol}, as noted above. +\begin{ctanrefs} +\item[amsmath.sty]Part of \CTANref{amslatex} +\item[savesym.sty]\CTANref{savesym} +\item[txfonts.sty]Part of \CTANref{txfonts} +\end{ctanrefs} + +\Question[Q-zerochap]{Why are my sections numbered 0.1\,\dots{}?} + +This happens when your document is using the standard \Class{book} or +\Class{report} class (or one similar), and you've got a \csx{section} +before your first \csx{chapter}. + +What happens is, that the class numbers sections as % ! line break +``\meta{chapter no}.\meta{section no}'', and until the first +\csx{chapter} has appeared, the chapter number is 0. (If you +use\csx{chapter*}, which doesn't number the chapter it produces, the +problem still arises.) + +If you're doing this, it's possible that the \Class{article} class +is for you; try it and see. Otherwise, put a \csx{chapter} before +your sections, or do away with section numbering by using +\csx{section*} instead. An alternative way of avoiding numbering is +discussed in % ! line break +``\Qref*{unnumbered sections in the table of contents}{Q-secnumdep}''. + +\Question[Q-breaklinks]{Link text doesn't break at end line} +\keywords{hyperref overfull link} + +When using the \Package{hyperref} package, you make a block of text +``active'' when you define a hyper-link (when the user clicks on +that text, the reader program will divert to the \emph{target} of the +link). + +The \Package{hyperref} package uses a \emph{driver} (in the same way +as the \Package{graphics} package does), to determine how to implement +all that hyper-stuff. + +If you use the driver for \ProgName{dvips} output (presumably you want +to distill the resulting \PS{}), limitations in the way \ProgName{dvips} +deals with the \csx{special} commands mean that \Package{hyperref} +must prevent link anchors from breaking at the end of lines. Other +drivers (notably those for \PDFTeX{} and for \ProgName{dvipdfm}) don't +suffer from this problem. + +The problem may occur in a number of different circumstances. For a +couple of them, there are work-arounds: + +First, if you have an \acro{URL} which is active (so that clicking on +it will activate your web browser to ``go to'' the \acro{URL}). In +this case \Package{hyperref} employs the \Package{url} package to +split up the \acro{URL} (as described in % ! line break +\Qref[question]{typesetting \acro{URL}s}{Q-setURL}), but the +\ProgName{dvips} driver then suppresses the breaks. The way out is +the \Package{breakurl} package, which modifies the \csx{url} command +to produce several smaller pieces, between each of which a line break +is permitted. Each group of pieces, that ends up together in one +line, is converted to a single clickable link. + +Second, if you have a table of contents, list of figure or tables, or +the like, \Package{hyperref} will ordinarily make the titles in the +table of contents, or captions in the lists, active. If the title or +caption is long, it will need to break within the table, but the +\ProgName{dvips} driver will prevent that. In this case, load +\Package{hyperref} with the option \pkgoption{linktocpage}, and only +the page number will be made active. + +Otherwise, if you have a lengthy piece of text that you want active, +you have at present no simple solution: you have to rewrite your text, +or to use a different \acro{PDF} generation mechanism. +\begin{ctanrefs} +\item[breakurl.sty]\CTANref{breakurl} +\end{ctanrefs} + +\Question[Q-wrongpn]{Page number is wrong at start of page} + +This is a long story, whose sources are deep inside the workings of +\TeX{} itself; it all derives from the \TeX{}'s striving to generate +the best possible output. + +The page number is conventionally stored in \csx{count0}; \LaTeX{} +users see this as the counter \texttt{page}, and may typeset its value +using \csx{thepage}. + +The number (that is to say, \csx{count0}) is only updated when \TeX{} +actually outputs a page. \TeX{} only even tries to do this when it +detects a hint that it may be a good thing to do. From \TeX{}'s point +of view, the end of a paragraph is a good time to consider outputting +a page; it will output a page if it has \emph{more} than a page's +worth of material to output. (Ensuring it always has something in +hand makes some optimisations possible.) As a result, \csx{count0} +(\csx{thepage}) is almost always wrong in the first paragraph of a +page (the exception is where the page number has been ``forcibly'' +changed, either by changing its value directly, or by breaking the +page where \TeX{} wouldn't necessarily have chosen to break). + +\LaTeX{} provides a safe way of referring to the page number, by using +label references. So, rather than writing: +\begin{quote} +\begin{verbatim} +Here is page \thepage{}. +\end{verbatim} +\end{quote} +you should write: +\begin{quote} +\begin{verbatim} +Here is page \pageref{here}\label{here}. +\end{verbatim} +\end{quote} +(note: no space between the \csx{pageref} and the \csx{label}, since +that could potentially end up as a page-break space itself, which +rather defeats the purpose of the exercise!). + +\Question[Q-matchbrak]{My brackets don't match} + +\AllTeX{} has a low-level mechanism for matching braces in document +text. This means you can type something like: +\begin{quote} +\begin{verbatim} +\section{All \emph{OK} now.} +\end{verbatim} +\end{quote} +and know that the first brace (for the argument of \csx{section}) will +be matched with the last brace, and the internal pair of braces (for +the argument of \csx{emph}) will be matched with each other. It's all +very simple. + +However, \LaTeX{} has a convention of enclosing optional arguments in +brackets, as in: +\begin{quote} +\begin{verbatim} +\section[OK]{All \emph{OK} now.} +\end{verbatim} +\end{quote} +These brackets are not matched by \TeX{} mechanisms, despite the +superficial similarity of their use. As a result, +straightforward-looking usages like: +\begin{quote} +\begin{verbatim} +\section[All [OK] now]{All \emph{OK} now.} +\end{verbatim} +\end{quote} +aren't \acro{OK} at all~--- the optional argument comes to consist of +``All [OK'', and \csx{section} takes the single character ``n'' (of +the first ``now'') as its argument. + +Fortunately, \TeX{}'s scanning mechanisms helps us by accepting the +syntax ``\texttt{\{]\}}'' to `hide' the closing bracket from the +scanning mechanism that \LaTeX{} uses. In practice, the commonest way +to use this facility is: +\begin{quote} +\begin{verbatim} +\section[All {[OK]} now]{All \emph{OK} now.} +\end{verbatim} +\end{quote} +since bracing the bracket on its own ``looks odd''. + +\LaTeX{} has another argument syntax, even less regular, where the +argument is enclosed in parentheses, as in: +\begin{quote} +\begin{verbatim} +\put(1,2){foo} +\end{verbatim} +\end{quote} +(a picture environment command). + +This mechanism is also prone to problems with matching closing +parentheses, but the issue seldom arises since such arguments rarely +contain text. If it were to arise, the same solution (enclosing the +confused characters in braces) would solve the problem. + +\Question[Q-pdf-fig-chars]{Characters disappear from figures in \PDFTeX{}} + +You have a \acro{PDF} figure, which you want to use in your +\PDFLaTeX{} document. When you compile the document, \PDFTeX{} +complains about ``missing glyphs'', and some (or all) of the labelling +text or symbols in the original figure is no longer visible. + +What has happened is: +\begin{enumerate} +\item Your figure file (say \File{fig.pdf}) has a font \File{font.pfb} + embedded in it. +\item \PDFTeX{} notes that it has \File{font.pfb} on disc, and loads + that in place of the copy in \File{fig.pdf}. +\item It turns out that the copy in \File{fig.pdf} has glyphs that + aren't in \File{font.pfb} on disc, so that you get errors while + compiling and you see that characters are missing when you view the + output. (\PDFTeX{} can't know that the fonts are different, since + they have the same name.) +\end{enumerate} +Which is all very undesirable. + +\PDFTeX{} does this to keep file sizes down: suppose you have a +document that loads figures \File{fig1.pdf} and \File{fig2.pdf}; both +of those use font \File{font.pfb}. If \PDFTeX{} takes no action, +there will be \emph{two} copies of \File{font.pfb} in the output. +(If your document also uses the font, there could be three copies.) + +A real case is the \acro{URW} font \File{NimbusRomNo9L-Regu} (a clone +of Times Roman), which is available in a version with Cyrillic +letters, while the version in \TeX{} distributions doesn't have those +letters. Both versions, as distributed, have the same name. + +The simple (``quick and dirty'') solution is to add the command +\begin{quote} + \csx{pdfinclusioncopyfonts}\texttt{=1} +\end{quote} +to the preamble of your document. + +The ``real'' solution is that one or other font should be renamed. In +either case, this would require that you reconfigure some program's +(\TeX{}'s or your drawing package's) font tables~--- inevitably a +tiresome job. + +\Question[Q-emptynum]{I asked for ``empty'', but the page is numbered} + +If you use \cmdinvoke{pagestyle}{empty} and you find some pages are +numbered anyway, you are probably encountering one of the style +decisions built into the standard \LaTeX{} classes: that certain +special pages should always appear with \cmdinvoke{pagestyle}{plain}, +with a page number at the centre of the page foot. The special pages +in question are those (in \Class{article} class) containing a +\csx{maketitle}, or (in \Class{book} and \Class{report} classes) +\csx{chapter} or \csx{part} commands. + +The simple solution is to reissue the page style \emph{after} the +command, with effect for a single page, as, for example (in +\Class{article}): +\begin{quote} +\begin{verbatim} +\maketitle +\thispagestyle{empty} +\end{verbatim} +\end{quote} +or (in \Class{book} or \Class{report}) +\begin{quote} +\begin{verbatim} +\chapter{foo bar} +\thispagestyle{empty} +\end{verbatim} +\end{quote} +A similar technique doesn't work for a \Class{book} or \Class{report} +\csx{part} command pages. For that, and for other detail, take look +at ``\Qref*{getting rid of page numbers}{Q-nopageno}''. + +\subsection{Common misunderstandings} + +\Question[Q-include]{What's going on in my \csx{include} commands?} + +The original \LaTeX{} provided the \csx{include} command to address the +problem of long documents: with the relatively slow computers of the +time, the companion \csx{includeonly} facility was a boon. With the +vast increase in computer speed, \csx{includeonly} is less valuable +(though it still has its place in some very large projects). +Nevertheless, the facility is retained in current \LaTeX{}, and causes +some confusion to those who misunderstand it. + +In order for \csx{includeonly} to work, \csx{include} makes a separate +\extension{aux} file for each included file, and makes a `checkpoint' of +important parameters (such as page, figure, table and footnote +numbers). As a direct result, it \emph{must} clear the current page +both before and after the \csx{include} command. (The requirement +derives from the difficulties of % ! line break +\begin{hyperversion} + \Qref*{observing page numbers}{Q-wrongpn}.) +\end{hyperversion} +\begin{flatversion} + observing page numbers~--- see \Qref{}{Q-wrongpn}.) +\end{flatversion} +What's more, this mechanism doesn't work if a \csx{include} command +appears in a file that was \csx{include}d itself: \LaTeX{} diagnoses +this as an error. + +So, we can now answer the two commonest questions about \csx{include}: +\begin{itemize} +\item Why does \LaTeX{} throw a page before and after \csx{include} + commands? + + Answer: because it has to. If you don't like it, replace the + \csx{include} command with \csx{input}~--- you won't be able to use + \csx{includeonly} any more, but you probably don't need it anyway, so + don't worry. +\begin{htmlversion} + +\end{htmlversion} +\item Why can't I nest \csx{include}d files?~--- I always used to be + able to under \LaTeXo{}. + + Answer: in fact, you couldn't, even under \LaTeXo{}, but the failure + wasn't diagnosed. However, since you were happy with the behaviour + under \LaTeXo{}, replace the \csx{include} commands with \csx{input} + commands (with \csx{clearpage} as appropriate). +\end{itemize} + + +\Question[Q-paraparam]{Why does it ignore paragraph parameters?} + +When \TeX{} is laying out text, it doesn't work from word to word, or +from line to line; the smallest complete unit it formats is the +paragraph. The paragraph is laid down in a buffer, as it appears, and +isn't touched further until the end-paragraph marker is processed. +It's at this point that the paragraph parameters have effect; and it's +because of this sequence that one often makes mistakes that lead to +the paragraph parameters not doing what one would have hoped (or +expected). + +Consider the following sequence of \LaTeX{}: +\begin{quote} +\begin{verbatim} +{\raggedright % declaration for ragged text +Here's text to be ranged left in our output, +but it's the only such paragraph, so we now +end the group.} + +Here's more that needn't be ragged... +\end{verbatim} +\end{quote} +\TeX{} will open a group, and impose the ragged-setting parameters within +that group; it will then save a couple of sentences of text and +close the group (thus restoring the previous value of the +parameters that \csx{raggedright} set). Then \TeX{} encounters a blank +line, which it knows to treat as a \csx{par} token, so it typesets the +two sentences; but because the enclosing group has now been closed, +the parameter settings have been lost, and the paragraph will be +typeset normally. + +The solution is simple: close the paragraph inside the group, so that +the setting parameters remain in place. An appropriate way of doing +that is to replace the last three lines above with: +\begin{quote} +\begin{verbatim} +end the group.\par} +Here's more that needn't be ragged... +\end{verbatim} +\end{quote} +In this way, the paragraph is completed while \csx{raggedright}'s +parameters are still in force within the enclosing group. + +Another alternative is to define an environment that does the +appropriate job for you. For the above example, \LaTeX{} already +defines an appropriate one: +\begin{quote} +\begin{verbatim} +\begin{flushleft} +Here's text to be ranged left... +\end{flushleft} +\end{verbatim} +\end{quote} + +In fact, there are a number of parameters for which \TeX{} only +maintains one value per paragraph. A tiresome one is the set of upper +case/lower case translations, which (oddly enough) constrains +hyphenation of mutilingual texts. Another that regularly creates +confusion is \Qref*{\csx{baselineskip}}{Q-baselinepar}. + +\Question[Q-casechange]{Case-changing oddities} + +\TeX{} provides two primitive commands \csx{uppercase} and +\csx{lowercase} to change the case of text; they're not much used, but +are capable creating confusion. + +The two commands do not expand the text that is their parameter~--- +the result of \cmdinvoke{uppercase}{abc} is `\texttt{ABC}', but +\cmdinvoke{uppercase}{\csx{abc}} is always `\csx{abc}', whatever the +meaning of \csx{abc}. The commands are simply interpreting a table of +equivalences between upper- and lowercase characters. +They have (for example) no mathematical sense, and +\begin{quote} +\begin{verbatim} +\uppercase{About $y=f(x)$} +\end{verbatim} +\end{quote} +will produce +\begin{quote} +\begin{verbatim} +ABOUT $Y=F(X)$ +\end{verbatim} +\end{quote} +which is probably not what is wanted. + +In addition, \csx{uppercase} and \csx{lowercase} do not deal very well +with non-American characters, for example +\cmdinvoke{uppercase}{\csx{ae}} is the same as \csx{ae}. + +\LaTeX{} provides commands \csx{MakeUppercase} and \csx{MakeLowercase} +which fixes the latter problem. These commands are used in the +standard classes to produce upper case running heads for chapters +and sections. + +Unfortunately \csx{MakeUppercase} and \csx{MakeLowercase} do not solve +the other problems with \csx{uppercase}, so for example a section +title containing \cmdinvoke{begin}{tabular} \dots{} +\cmdinvoke{end}{tabular} will produce a running head containing +\cmdinvoke{begin}{TABULAR}. The simplest solution to this problem is +using a user-defined command, for example: +\begin{quote} +\begin{verbatim} +\newcommand{\mytable}{\begin{tabular}... + \end{tabular}} +\section{A section title \protect\mytable{} + with a table} +\end{verbatim} +\end{quote} +Note that \csx{mytable} has to be protected, otherwise it will be +expanded and made upper case; you can achieve the same result by +declaring it with \csx{DeclareRobustCommand}, in which case the +\csx{protect} won't be necessary. + +David Carlisle's \Package{textcase} package +addresses many of these problems in a transparent way. It defines +commands \csx{MakeTextUppercase} and \csx{MakeTextLowercase} which do +upper- or lowercase, with the fancier features of the \LaTeX{} +standard \csx{Make*}-commands but without the problems +mentioned above. Load the package with +\cmdinvoke{usepackage}[overload]{textcase}, and it will redefine the \LaTeX{} +commands (\emph{not} the \TeX{} primitive commands \csx{uppercase} and +\csx{lowercase}), so that section headings and the like don't produce +broken page headings. +\begin{ctanrefs} +\item[textcase.sty]\CTANref{textcase} +\end{ctanrefs} + +\Question[Q-splitfoot]{Why does \LaTeX{} split footnotes across pages?} + +\LaTeX{} splits footnotes when it can think of nothing better to do. +Typically, when this happens, the footnote mark is at the bottom of +the page, and the complete footnote would overfill the page. \LaTeX{} +could try to salvage this problem by making the page short of both the +footnote and the line with the footnote mark, but its priorities told +it that splitting the footnote would be preferable. + +As always, the best solution is to change your text so that the +problem doesn't occur in the first place. Consider whether the text +that bears the footnote could move earlier in the current page, or on +to the next page. + +If this isn't possible, you might want to change \LaTeX{}'s perception +of its priorities: they're controlled by +\csx{interfootnotelinepenalty}~--- the larger it is, the less willing +\LaTeX{} is to split footnotes. + +Setting +\begin{quote} +\begin{verbatim} +\interfootnotelinepenalty=10000 +\end{verbatim} +\end{quote} +inhibits split footnotes altogether, which will cause `\texttt{Underfull} +\csx{vbox}' messages unless you also specify \csx{raggedbottom}. The +default value of the penalty is \texttt{100}, which is rather mild. + +An alternative technique is to juggle with the actual size of the +pages. \csx{enlargethispage} changes the size of the current page by +its argument (for example, you might say +\cmdinvoke{enlargethispage}{\csx{baselineskip}} to add a single line +to the page, but you can use any ordinary \TeX{} length such as +\texttt{15mm} or \texttt{-20pt} as argument). Reducing the size of +the current page could force the offending text to the next page; +increasing the size of the page may allow the footnote to be included +in its entirety. It may be necessary to change the size of more than +one page. + +The \Package{fnbreak} package detects (and generates warnings about) +split footnotes. +\begin{ctanrefs} +\item[fnbreak.sty]\CTANref{fnbreak} +\end{ctanrefs} + +\Question[Q-marginparside]{Getting \csx{marginpar} on the right side} + +In an ideal world, marginal notes would be in ``analogous'' places on +every page: notes on an even-side page would be in the left margin, +while those on an odd-side page would be in the right margin. A +moment's thought shows that a marginal note on the left needs to be +typeset differently from a marginal note on the right. The \LaTeX{} +\csx{marginpar} command therefore takes two arguments in a +\texttt{twoside} documents: % beware line break +\cmdinvoke*{marginpar}[left text]{right text}. \LaTeX{} uses the +``obvious'' test to +get the \csx{marginpar}s in the correct margin, but a booby-trap arises +because \TeX{} runs its page maker asynchronously. If a +\csx{marginpar} is processed while page \ensuremath{n} is being built, but +doesn't get used until page \ensuremath{n}+1, then the \csx{marginpar} will turn +up on the wrong side of the page. This is an instance of a general +problem: see +% beware line break +``\Qref*{finding if you're on an odd or an even page}{Q-oddpage}''. + +The solution to the problem is for \LaTeX{} to `remember' which side +of the page each \csx{marginpar} \emph{should} be on. The +\Package{mparhack} package does this, using label-like marks stored in +the \extension{aux} file; the \Class{memoir} class does likewise. +\begin{ctanrefs} +\item[memoir.cls]\CTANref{memoir} +\item[mparhack.sty]\CTANref{mparhack} +\end{ctanrefs} + +\Question[Q-misschar]{Where have my characters gone?} + +You've typed some apparently reasonable text and processed it, but the +result contains no sign of some of the characters you typed. A likely +reason is that the font you selected just doesn't have a +representation for the character in question. + +For example, if I type ``that will be \pounds{}44.00'' into an ordinary +\AllTeX{} document, or if I select the font \texttt{rsfs10} (which contains +uppercase letters only) and type pretty much anything, the \pounds{} +sign, or any lowercase letters or digits will not appear in the +output. There's no actual error message, either: you have to read the +log file, where you'll find cryptic little messages like +\begin{quote} +\begin{wideversion} +\begin{verbatim} +Missing character: There is no ^^a3 in font cmr10! +Missing character: There is no 3 in font rsfs10! +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +Missing character: + There is no ^^a3 in font cmr10! +Missing character: + There is no 3 in font rsfs10! +\end{verbatim} +\end{narrowversion} +\end{quote} +(the former demonstrating my \TeX{}'s unwillingness to deal in characters +which have the eighth bit set, while the \texttt{rsfs10} example shows that +\TeX{} will log the actual character in error, if it thinks it's +possible). + +Somewhat more understandable are the diagnostics you may get from +\Package{dvips} when using the \acro{OT}1 and \acro{T}1 versions of +fonts that were supplied in Adobe standard encoding: +\begin{quote} +\begin{verbatim} +dvips: Warning: missing glyph `Delta' +\end{verbatim} +\end{quote} +The process that generates the metrics for using the fonts generates +an instruction to \Package{dvips} to produce these diagnostics, so +that their non-appearance in the printed output is less surprising +than it might be. Quite a few glyphs provided in Knuth's text +encodings and in the Cork encoding are not available in the Adobe +fonts. In these cases, there \emph{is} a typeset sign of the +character: \ProgName{dvips} produces a black rectangle of whatever +size the concocted font file has specified. + +\Question[Q-rerun]{``Rerun'' messages won't go away} + +The \LaTeX{} message ``Rerun to get crossreferences right'' is +supposed to warn the user that the job needs to be processed again, +since labels seem to have changed since the previous run. (\LaTeX{} +compares the labels it has created this time round with what it found +from the previous run when it started; it does this comparison at +\cmdinvoke{end}{document}.) + +Sometimes, the message won't go away: however often you reprocess your +document, \LaTeX{} still tells you that ``Label(s) may have +changed''. This can sometimes be caused by a broken package: both +\Package{footmisc} (with the \pkgoption{perpage} option) and \Package{hyperref} +have been known to give trouble, in the past: if you are using either, +check you have the latest version, and upgrade if possible. + +However, there \emph{is} a rare occasion when this error can happen +as a result of pathological structure of the document itself. Suppose +you have pages numbered in roman, and you add a reference to a label +on page ``ix'' (9). The presence of the reference pushes the thing +referred to onto page ``x'' (10), but since that's a shorter reference +the label moves back to page ``ix'' at the next run. Such a sequence +can obviously not terminate. + +The only solution to this problem is to make a small change to your +document (something as small as adding or deleting a comma will often +be enough). +\begin{ctanrefs} +\item[footmisc.sty]\CTANref{footmisc} +\item[hyperref.sty]\CTANref{hyperref} +\end{ctanrefs} + +\Question[Q-xspace]{Commands gobble following space} + +People are forever surprised that simple commands gobble the space +after them: this is just the way it is. The effect arises from the +way \TeX{} works, and Lamport describes a solution (place a pair of braces +after a command's invocation) in the description of \LaTeX{} syntax. +Thus the requirement is in effect part of the definition of \LaTeX{}. + +These \acro{FAQ}s, +for example, is written in \latex{} for production of a web site. The +HTML code is generated by a script that \emph{requires} a pair of +braces, to make a null argument, as in: +\begin{quote} + \cmdinvoke{fred}{\relax} % the \relax prevents {} being gobbled + % in html production (sigh) + % (we needn't tell them about _that_ ;-) +\end{quote} +for almost all macro invocations, regardless +of whether the following space is required: however, these \acro{FAQ}s +should not itself be regarded as a model of \latex{} style. + +Many users find all those braces become very tedious very +quickly, and would really rather not type them all. + +An alternative structure, that doesn't violate the design of \LaTeX{}, +is to say \csx{fred}\csx{ }~--- the \csx{ } command is ``self +terminating'' (like \texttt{\bsbs }) and you don't need braces after +\emph{it}. Thus one can reduce to one the number of extra characters +one needs to type. + +If even that one character is too many, the package \Package{xspace} +defines a command \csx{xspace} that guesses whether there should have +been a space after it, and if so introduces that space. So +% beware line wrap +``\texttt{fred\csx{xspace} jim}'' produces ``fred jim'', while +``\texttt{fred\csx{xspace}.\@ jim}'' produces ``fred. jim''. Which +usage would of course be completely pointless; but you can incorporate +\csx{xspace} in your own macros: +\begin{quote} +\begin{wideversion} +\begin{verbatim} +\usepackage{xspace} +... +\newcommand{\restenergy}{\ensuremath{mc^2}\xspace} +... +and we find \restenergy available to us... +\end{verbatim} +\end{wideversion} +\begin{narrowversion} +\begin{verbatim} +\usepackage{xspace} +... +\newcommand{\restenergy}% + {\ensuremath{mc^2}\xspace} +... +and we find \restenergy available to us... +\end{verbatim} +\end{narrowversion} +\end{quote} +The \csx{xspace} command must be the last thing in your macro +definition (as in the example); it's not completely foolproof, but it +copes with most obvious situations in running text. + +The \Package{xspace} package doesn't save you anything if you use it in +a macro that appears only once or twice within your document, and it +is not totally foolproof. (The original author of the package wrote +it because he had been bitten by lost spaces. He no longer recommends +its use, simply because of the possibility of error.) + +In any case, be +careful with usage of \csx{xspace}~--- it changes your input syntax, +which can be confusing, notably to a collaborating author +(particularly if you create some commands which use it and some which +don't). No command built into \LaTeX{} or into any +``standard'' class or package will use \csx{xspace}. +\begin{ctanrefs} +\item[xspace.sty]Distributed as part of \CTANref{2etools}[xspace] +\end{ctanrefs} +\LastEdit{2013-11-26} + +\Question[Q-overfull]{\AllTeX{} makes overfull lines} + +When \TeX{} is building a paragraph, it can make several attempts to +get the line-breaking right; on each attempt it runs the same +algorithm, but gives it different parameters. You can affect the way +\TeX{}'s line breaking works by adjusting the parameters: this answer +deals with the ``tolerance'' and stretchability parameters. The other +vital `parameter' is the set of hyphenations to be applied: see +``\Qref*[question]{my words aren't being hyphenated}{Q-nohyph}'' +(and the questions it references) for advice. + +If you're getting an undesired ``overfull box'', what has happened is +that \TeX{} has given up: the parameters you gave it don't allow it to +produce a result that \emph{doesn't} overfill. In this circumstance, +Knuth decided the best thing to do was to produce a warning, and to +allow the user to solve the problem. (The alternative, silently to go +beyond the envelope of ``good taste'' defined for this run of \TeX{}, +would be distasteful to any discerning typographer.) The user can +almost always address the problem by rewriting the text that's +provoking the problem~--- but that's not always possible, and in some +cases it's impossible to solve the problem without adjusting the +parameters. This answer discusses the approaches one might take to +resolution of the problem, on the assumption that you've got the +hyphenation correct. + +The simplest case is where a `small' word fails to break at the end of +a line; pushing the entire word to a new line isn't going to make much +difference, but it might make things just bad enough that \TeX{} won't +do it by default. In such a case on can \emph{try} the \LaTeX{} +\csx{linebreak} command: it may solve the problem, and if it does, it +will save an awful lot of fiddling. Otherwise, one needs to adjust +parameters: to do that we need to recap the details of \TeX{}'s line +breaking mechanisms. + +\TeX{}'s first attempt at breaking lines is performed without even +trying hyphenation: \TeX{} sets its ``tolerance'' of line breaking +oddities to the internal value \csx{pretolerance}, and sees what +happens. If it can't get an acceptable break, \TeX{} adds the +hyphenation points allowed by the current patterns, and tries again +using the internal \csx{tolerance} value. If this pass also fails, and +the internal \csx{emergencystretch} value is positive, \TeX{} will try +a pass that allows \csx{emergencystretch} worth of extra stretchability +to the spaces in each line. + +In principle, therefore, there are three parameters (other than +hyphenation) that you can change: \csx{pretolerance}, \csx{tolerance} +and \csx{emergencystretch}. Both the \texttt{tolerance} values are +simple numbers, and should be set by \TeX{} primitive count +assignment~--- for example +\begin{quote} +\begin{verbatim} +\pretolerance=150 +\end{verbatim} +\end{quote} +For both, an ``infinite'' tolerance is represented by the value +\texttt{10}\nothtml{\,}\texttt{000}, but infinite tolerance is rarely +appropriate, since it can lead to very bad line breaks indeed. + +\csx{emergencystretch} is a \TeX{}-internal `dimen' register, and can +be set as normal for dimens in \plaintex{}; in \LaTeX{}, use +\csx{setlength}~--- for example: +\begin{quote} +\begin{verbatim} +\setlength{\emergencystretch}{3em} +\end{verbatim} +\end{quote} + +The choice of method has time implications~--- each of the +passes takes time, so adding a pass (by changing +\csx{emergencystretch}) is less desirable than suppressing one (by +changing \csx{pretolerance}). However, it's unusual nowadays to find a +computer that's slow enough that the extra passes are really +troublesome. + +In practice, \csx{pretolerance} is rarely used other than to manipulate +the use of hyphenation; \plaintex{} and \LaTeX{} both set its value +to \texttt{100}. To suppress the first scan of paragraphs, set +\csx{pretolerance} to \texttt{-1}. + +\csx{tolerance} is often a good method for adjusting spacing; +\plaintex{} and \LaTeX{} both set its value to \texttt{200}. \LaTeX{}'s +\csx{sloppy} command sets it to \texttt{9999}, as does the +\environment{sloppypar} environment. This value is the largest +available, this side of infinity, and can allow pretty poor-looking +breaks (this author rarely uses \csx{sloppy} ``bare'', though he does +occasionally use \environment{sloppypar}~--- that way, the change of +\csx{tolerance} is confined to the environment). More satisfactory is +to make small changes to \csx{tolerance}, incrementally, and then to look to +see how the change affects the result; very small increases can often +do what's necessary. Remember that \csx{tolerance} is a paragraph +parameter, so you need to ensure it's actually applied~--- see +``\Qref*[question]{ignoring paragraph parameters}{Q-paraparam}''. +\LaTeX{} users could use an environment like: +\begin{quote} +\begin{verbatim} +\newenvironment{tolerant}[1]{% + \par\tolerance=#1\relax +}{% + \par +} +\end{verbatim} +\end{quote} +enclosing entire paragraphs (or set of paragraphs) in it. + +The value of \csx{emergencystretch} is added to the assumed +stretchability of each line of a paragraph, in a further run of the +paragraph formatter in case that the paragraph can't be made to look +right any other way. (The extra scan happens if +\csx{emergencystretch\textgreater0pt}~--- if it's zero or negative, no gain +could be had from rerunning the paragraph setter.) The example above +set it to \texttt{3em}; the Computer Modern fonts ordinarily fit three +space skips to the \texttt{em}, so the change would allow anything up +to the equivalent of nine extra spaces in each line. In a line with +lots of spaces, this could be reasonable, but with (say) only three +spaces on the line, each could stretch to four times its natural +width. It is therefore clear that \csx{emergencystretch} needs to be +treated with a degree of caution. + +More subtle (but more tricky to manage) are the microtypographic +extensions provided by \PDFTeX{}. Since \PDFTeX{} is the default +`engine' for \LaTeX{} and \CONTeXT{} work in all distributions, +nowadays, the extensions are available to all. There are two +extensions, margin kerning and font expansion; margin kerning only +affects the visual effect of the typeset page, and has little effect +on the ability of the paragraph setter to ``get things right''. +Font expansion works like a subtler version of the trick that +\csx{emergencystretch} plays: \PDFTeX{} `knows' that your current font +may be stretched (or shrunk) to a certain extent, and will do that +``on the fly'' to optimise the setting of a paragraph. This is a +powerful tool in the armoury of the typesetter. + +As mentioned above, the microtypographic extensions are tricky beasts +to control; however, the \Package{microtype} package relieves the user +of the tedious work of specifying how to perform margin adjustments +and how much to scale each font~\dots{}\@ for the fonts the package +knows about; it's a good tool, and users who can take on the +specification of adjustments for yet more fonts are always welcome. +\begin{ctanrefs} +\item[microtype.sty]\CTANref{microtype} +\end{ctanrefs} + +\Question[Q-exscale]{Maths symbols don't scale up} + +By default, the ``large'' maths symbols stay at the same size +regardless of the font size of the text of the document. There's good +reason for this: the \FontName{cmex} fonts aren't really designed to +scale, so that \TeX{}'s maths placement algorithms don't perform as +well as they might when the fonts are scaled. + +However, this behaviour confounds user expectations, and can lead to +slightly odd-looking documents. If you want the fonts to scale, +despite the warning above, use the \Package{exscale} package~--- just +loading it is enough. +%% +%% (Note: if you are using bitmap versions of the \FontName{cmex} fonts, +%% you will find extra bitmaps are generated. The extended sizes are not +%% ordinarily generated for any other purpose.) +\begin{ctanrefs} +\item[exscale.sty]Part of the \LaTeX{} distribution. +\end{ctanrefs} + +\Question[Q-linespread]{Why doesn't \csx{linespread} work?} + +The command \cmdinvoke*{linespread}{factor} is supposed to multiply +the current \csx{baselineskip} by \meta{factor}; but, to all +appearances, it doesn't. + +In fact, the command is equivalent to +\cmdinvoke{renewcommand}{\csx{baselinestretch}}{factor}: written that +way, it somehow feels less surprising that the effect isn't immediate. +The \csx{baselinestretch} factor is only used when a font is selected; +a mere change of \csx{baselinestretch} doesn't change the font, any +more than does the command +\cmdinvoke*{fontsize}{size}{baselineskip}~--- you have to follow +either command with \csx{selectfont}. So: +\begin{quote} +\begin{verbatim} +\fontsize{10}{12}% +\selectfont +\end{verbatim} +\end{quote} +or: +\begin{quote} +\begin{verbatim} +\linespread{1.2}% +\selectfont +\end{verbatim} +\end{quote} +Of course, a package such as \Package{setspace}, whose job is to +manage the baseline, will deal with all this stuff~--- see +``\Qref*[question]{managing double-spaced documents}{Q-linespace}''. If +you want to avoid \Package{setspace}, beware the behaviour of +linespread changes within a paragraph: read % ! line break +``\Qref*[question]{\csx{baselineskip} is a paragraph parameter}{Q-baselinepar}''. +\begin{ctanrefs} +\item[setspace.sty]\CTANref{setspace} +\end{ctanrefs} + +\Question[Q-baselinepar]{Only one \csx{baselineskip} per paragraph} + +The \csx{baselineskip}, which determines the space between lines, is +not (as one might hope) a property of a line, but of a paragraph. As +a result, in a \texttt{10pt} (nominal) document (with a default +\csx{baselineskip} of \texttt{12pt}), a single character with a larger +size, as: +\begin{quote} +\begin{verbatim} +{\Huge A} +\end{verbatim} +\end{quote} +will be squashed into the paragraph: \TeX{} will make sure it doesn't +scrape up against the line above, but won't give it ``room to +breathe'', as it does the text at standard size; that is, its size +(\texttt{24.88pt}) is taken account of, but its \csx{baselineskip} +(\texttt{30pt}) isn't. This problem may be solved by a \emph{strut}: +the name comes from movable metal typography, and refers to a spacer +that held the boxes (that contained the metal character shapes) apart. +Every time you change font size, \LaTeX{} redefines the command +\csx{strut} to provide the equivalent of a metal-type strut for the +size chosen. So for the example above, we would type +\begin{quote} +\begin{verbatim} +Paragraph text ... + {\Huge A\strut} + ... paragraph continues ... +\end{verbatim} +\end{quote} +This technique \emph{only} works for such very short intrusions; if +you need several lines, you should convert your intrusion into a +\environment{quote} environment, since it's not possible to provide a +\csx{strut} command for every line of the intrusion, in a sensible +way, so proceed by: +\begin{quote} +\begin{verbatim} +\begin{quote} + \Huge A LENGTHY TEXT ... + SHOUTING AT THE READER! +\end{quote} +\end{verbatim} +\end{quote} + +The contrary case: +\begin{quote} +\begin{verbatim} +Paragraph text ... +{\footnotesize Extended interjection ... + ... into the paragraph.} + ... paragraph continues ... +\end{verbatim} +\end{quote} +will look wrong, since the \texttt{8pt} interjection will +end up set on the \texttt{12pt} \csx{baselineskip} of the paragraph, +rather than its preferred \texttt{8.5pt}. A \csx{strut} here is no +help: there is no such thing as a ``negative strut'', that draws lines +together, so once more, one falls back on the \environment{quote} to +separate the interjection: +\begin{quote} +\begin{verbatim} +Paragraph text ... +\begin{quote} + \footnotesize Extended interjection ... + ... into the paragraph. +\end{quote} +... paragraph continues ... +\end{verbatim} +\end{quote} + +The same effect is at work when we have something like: +\begin{quote} +\begin{verbatim} +Paragraph text ... + ... paragraph body ends. +{\footnotesize Comment on the paragraph.} + +Next paragraph starts... +\end{verbatim} +\end{quote} +which will set the body of the first paragraph on the constricted +\csx{baselineskip} of the \csx{footnotesize} comment. Solve this +problem by ending the initial paragraph before starting the comment: +\begin{quote} +\begin{verbatim} +Paragraph text ... + ... paragraph body ends. +\par\nothtml{\noindent} +{\footnotesize Comment on the paragraph.} + +Next paragraph starts... +\end{verbatim} +\end{quote} +(We suggest \csx{noindent} to make the comment look as if it is part +of the paragraph it discusses; omit \csx{noindent} if that is inappropriate.) + +A variation of the previous issue arises from a paragraph whose size +is different from those around it: +\begin{quote} +\begin{verbatim} +{\Large (Extended) IMPORTANT DETAILS ...} + +Main body of text... +\end{verbatim} +\end{quote} +Again, the problem is solved by ending the paragraph in the same group +as the text with a different size: +\begin{quote} +\begin{verbatim} +{\Large (Extended) IMPORTANT DETAILS ...\par} + +Main body of text... +\end{verbatim} +\end{quote} + +\Question[Q-tocloftwrong]{Numbers too large in table of contents, etc.} + +\keywords{memoir table-of-contents spacing} +\LaTeX{} constructs the table of contents, list of figures, tables, +and similar tables, on the basis of a layout specified in the class. +As a result, they do \emph{not} react to the sizes of things in them, +as they would if a \environment{tabular} environment (or something +similar) was used. + +This arrangement can provoke problems, most commonly with deep section +nesting or very large page numbers: the numbers in question just don't +fit in the space allowed for them in the class. + +A separate answer discusses % ! line break +\nothtml{re-designing the tables ---} % ! line break +\Qref{re-designing the tables}{Q-tocloft}\nothtml{ ---} +and techniques from that answer may be employed to make the numbers +fit: +\begin{quote} +\begin{verbatim} +\setlength\cftsectionnumwidth{4em} +\end{verbatim} +\end{quote} + +The same command may be employed in documents typeset with the +\Class{memoir} package (by the same author as \Package{tocloft}). + +\Class{Memoir} has another mechanism for the job: +\cmdinvoke{cftsetindents}{\meta{kind}}{indent}{numwidth}. Here +\emph{kind} is \texttt{chapter}, \texttt{section}, or whatever; the +\emph{indent} specifies the `margin' before the entry starts; and the +\emph{width} is of the box into which the number is typeset (so needs +to be wide enough for the largest number, with the necessary spacing +to separate it from what comes after it in the line. +\begin{ctanrefs} +\item[memoir.cls]\CTANref{memoir} +\item[tocloft.sty]\CTANref{tocloft} +\end{ctanrefs} +\LastEdit{2013-08-20} + +\Question[Q-gutter]{Why is the inside margin so narrow?} + +If you give the standard classes the \pkgoption{twoside} option, the +class sets the margins narrow on the left of odd-numbered pages, and +on the right of even-numbered pages. This is often thought to look +odd, but it is quite right. + +The idea is that the typographic urge for symmetry should also apply +to margins: if you lay an even numbered page to the left of an +odd-numbered one, you will see that you've three equal chunks of +un-printed paper: the left margin of the even page, the right margin +of the odd page, and the two abutting margins together. + +This is all very fine in the abstract, but in practical book(let) +production it only works ``sometimes''. + +If your booklet is produced on double-width paper and stapled, the +effect will be good; if your book(let) is produced using a so-called +``perfect'' binding, the effect will again be good. + +However, almost any ``quality'' book-binder will need some of your +paper to grab hold of, and a book bound in such a way won't exhibit +the treasured symmetry unless you've done something about the margin +settings. + +The packages recommended in % ! line break +``\Qref*{setting up margins}{Q-marginpkgs}'' mostly have provision for +a ``binding offset'' or a ``binding correction''~--- search for +``binding'' in the manuals (\Package{vmargin} doesn't help, here). + +If you're doing the job by hand (see % ! line break +\Qref[question]{manual margin setup}{Q-marginmanual}), the trick is to +calculate your page and margin dimensions as normal, and then: +\begin{itemize} +\item subtract the binding offset from \csx{evensidemargin}, and +\item add the binding offset to \csx{oddsidemargin}. +\end{itemize} +which can be achieved by: +\begin{quote} +\begin{verbatim} +\addtolength{\evensidemargin}{-offset} +\addtolength{\oddsidemargin}{offset} +\end{verbatim} +\end{quote} +(substituting something sensible like ``\texttt{5mm}'' for +``\texttt{offset}'', above). + +The above may not be the best you can do: you may well choose to +change the \csx{textwidth} in the presence of the binding offset; but +the changes do work for constant \csx{textwidth}. + +\subsection{Why shouldn't I?} + +\Question[Q-t1enc]{Why use \Package{fontenc} rather than \Package{t1enc}?} + +In the very earliest days of \LaTeXe{}, the only way to use the +\acro{T}1 encoding was \Package{t1enc}; with the summer 1994 +``production'' release, the \Package{fontenc} package appeared, and +provided comprehensive support for use of the encoding. + +Nevertheless, the \Package{t1enc} package remains (as part of the +\LaTeXo{} compatibility code), but it does very little: it merely +selects font encoding \acro{T}1, and leaves to the user the business +of generating the character codes required. + +Generating such character codes could be a simple matter, \emph{if} +the \acro{T}1 encoding matched any widely-supported encoding standard, +since in that case, one might expect one's keyboard to generate the +character codes. However, the \acro{T}1 encoding is a mix of several +standard encodings, and includes code points in areas of the table +which standard encodings specifically exclude, so no \acro{T}1 +keyboards have been (or ever will be) manufactured. + +By contrast, the \Package{fontenc} package generates the \acro{T}1 +code points from ordinary \LaTeX{} commands (e.g., it generates the +\texttt{\'e} character codepoint from the command \csx{'}\texttt{e}). +So, unless you have program-generated \acro{T}1 input (which is almost +inconceivable), use \cmdinvoke{usepackage}[T1]{fontenc} rather than +\cmdinvoke{usepackage}{t1enc}. + +\Question[Q-why-inp-font]{Why bother with \Package{inputenc} and \Package{fontenc}?} + +The standard input encoding for Western Europe (pending the arrival of +Unicode) is \acro{ISO}~8859--1 (commonly known by the standard's +subtitle `Latin-1'). Latin-1 is remarkably close, in the codepoints +it covers, to the \AllTeX{} \acro{T}1 encoding. + +In this circumstance, why should one bother with \Package{inputenc} +and \Package{fontenc}? Since they're pretty exactly mirroring each +other, one could do away with both, and use just \Package{t1enc}, +despite its \Qref*{shortcomings}{Q-t1enc}. + +One doesn't do this for a variety of small reasons: +\begin{description} +\item[Confusion] You've been happily working in this mode, and for + some reason find you're to switch to writing in German: the effect + of using ``\texttt{\ss }'' is somewhat startling, since \acro{T}1 + and Latin-1 treat the codepoint differently. +\item[Compatibility] You find yourself needing to work with a + colleague in Eastern Europe: their keyboard is likely to be set to + produce Latin-2, so that the simple mapping doesn't work. +\item[Traditional \LaTeX{}] You lapse and write something like + \cmdinvoke{'}{e} rather than typing \texttt{\'e}; only \Package{fontenc} + has the means to convert this \LaTeX{} sequence into the \acro{T}1 + character, so an \csx{accent} primitive slips through into the + output, and hyphenation is in danger. +\end{description} +The \Package{inputenc}--\Package{fontenc} combination seems slow and +cumbersome, but it's safe. + +\Question[Q-eqnarray]{Why not use \environment{eqnarray}?} + +The environment \environment{eqnarray} is attractive for the +occasional user of mathematics in \LaTeX{} documents: it seems to +allow aligned systems of equations. Indeed it \emph{does} supply such +things, but it makes a serious mess of spacing. In the system: +\begin{quote} +\begin{verbatim} +\begin{eqnarray} + a & = & b + c \\ + x & = & y - z +\end{eqnarray} +\end{verbatim} +\end{quote} +the spacing around the ``='' signs is \emph{not} that defined in the +metrics for the font from which the glyph comes~--- it's +\csx{arraycolsep}, which may be set to some very odd value for reasons +associated with real arrays elsewhere in the document. + +The user is far better served by the \AMSLaTeX{} bundle, which +provides an \environment{align} environment, which is designed with +the needs of mathematicians in mind (as opposed to the convenience of +\LaTeX{} programmers). For this simple case (\environment{align} and +other \AMSLaTeX{} alignment environments are capable of far greater +things), code as: +\begin{quote} +\begin{verbatim} +\begin{align} + a & = b + c \\ + x & = y - z +\end{align} +\end{verbatim} +\end{quote} +The matter is discussed in more detail in a % ! line break +\href{http://tug.org/pracjourn/2006-4/madsen/madsen.pdf}{Prac\TeX{} journal paper} +by Lars Madsen; Stefan Kottwitz offers a % ! line break +\href{http://texblog.net/latex-archive/maths/eqnarray-align-environment/}{\tex{} blog entry} +which includes screen shots of the output, convincingly demonstrating +the problem. +\begin{ctanrefs} +\item[AMSLaTeX]\CTANref{amslatex} +\end{ctanrefs} + +\Question[Q-dolldoll]{Why use \csx{[}\,\dots{}\csx{]} in place of \texttt{\$\$}\,\dots{}\,\texttt{\$\$}?} + +\LaTeX{} defines inline- and display-maths commands, apparently +duplicating the \TeX{} primitive maths sequences which surround maths +commands with single (or pairs of) dollar signs. + +In fact, \LaTeX{}'s inline maths grouping, % !line break +\csx{(}\texttt{ ... }\csx{)}, has (almost) exactly the same effect as the +\TeX{} primitive version \texttt{\$ ... \$}. (The exception: +the \LaTeX{} version checks to ensure you don't put \csx{(} and +\csx{)} the wrong way round; this does occasionally detect errors\dots{}.) + +Since this is the case, one often finds \LaTeX{} users, who have some +experience of using \plaintex{}, merely assuming that \LaTeX{}'s +display maths grouping \csx{[}\texttt{ ... }\csx{]} may be replaced by +the \TeX{} primitive display maths \texttt{\$\$ ... \$\$}. + +Unfortunately, the assumption is wrong: some \LaTeX{} code needs to +patch display maths, it can only do so by patching \csx{[} and \csx{]} +(or their equivalents). Most obviously, the class option \pkgoption{fleqn} +simply does not work for equations coded using % ! line break +\texttt{\$\$ ... \$\$}, whether you're using the standard classes +alone, or using package \Package{amsmath}. Also, the \csx{[} and +\csx{]} construct has code for rationalising vertical spacing in some +extreme cases; that code is not provided \texttt{\$\$ ... \$\$}, so if +you use the \plaintex{} version, you may occasionally observe +inconsistent vertical spacing. Similar behaviour can bite if you are +writing a \emph{proof}; placing the ``\acro{QED} symbol'' doesn't work +if it is in \texttt{\$\$}-displayed maths. + +There are more subtle effects (especially with package +\Package{amsmath}), and the simple rule is ``use % ! line break +\csx{[}\texttt{ ... }\csx{]} (at least) whenever displayed maths is +needed in \LaTeX{}''. + +(Note that the sequence \csx{[}\texttt{ ... }\csx{]} is duplicated by +the \environment{displaymath} environment, which can be said to ``look +nicer'', and actually \emph{describes} what's being done.) +\LastEdit{2013-06-05} + +\Question[Q-2letterfontcmd]{What's wrong with \csx{bf}, \csx{it}, etc.?} + +The font-selection commands of \LaTeXo{} were \csx{rm}, \csx{sf}, +\csx{tt}, \csx{it}, \csx{sl}, \csx{em} and \csx{bf}; they were modal +commands, so you used them as: +\begin{quote} +\begin{verbatim} +{\bf Fred} was {\it here\/}. +\end{verbatim} +\end{quote} +with the font change enclosed in a group, so as to limit its effect; +note the italic correction command \csx{/} that was necessary at the +end of a section in italics. + +At the release of \LaTeXe{} in summer 1994, these simple commands were +deprecated, but recognising that their use is deeply embedded in the +brains of \LaTeX{} users, the commands themselves remain in \LaTeX{}, +\emph{with their \LaTeXo{} semantics}. Those semantics were part of +the reason they were deprecated: each \csx{\emph{xx}} overrides +any other font settings, keeping only the size. So, for example, +\begin{quote} +\begin{verbatim} +{\bf\it Here we are again\/} +\end{verbatim} +\end{quote} +ignores \csx{bf} and produces text in italic, medium weight (and the +italic correction has a real effect), whereas +\begin{quote} +\begin{verbatim} +{\it\bf happy as can be\/} +\end{verbatim} +\end{quote} +ignores \csx{it} and produces upright text at bold weight (and the +italic correction has nothing to do). The same holds if you mix +\LaTeXe{} font selections with the old style commands: +\begin{quote} +\begin{verbatim} +\textbf{\tt all good friends} +\end{verbatim} +\end{quote} +ignores the \csx{textbf} that encloses the text, and produces +typewriter text at medium weight. + +So why are these commands deprecated?~--- it is because of confusions +such as that in the last example. The alternative (\LaTeXe{}) +commands are discussed in the rest of this answer. + +\LaTeXe{}'s font commands come in two forms: modal commands and +text-block commands. The default set of modal commands offers weights +\csx{mdseries} and \csx{bfseries}, shapes \csx{upshape}, +\csx{itshape}, \csx{scshape} and \csx{slshape}, and families +\csx{rmfamily}, \csx{sffamily} and \csx{ttfamily}. A font selection +requires a family, a shape and a series (as well as a size, of +course). A few examples +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +{\bfseries\ttfamily + and jolly good company!} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +{\bfseries\ttfamily and jolly good company!} +\end{verbatim} +\end{wideversion} +\end{quote} +produces bold typewriter text (but note the lack of a % ! line break, big time +\begin{narrowversion} % non hyper version + bold typewriter font~--- \Qref{}{Q-bold-extras}~--- +\end{narrowversion} +\begin{wideversion} + \Qref{bold typewriter font}{Q-bold-extras} +\end{wideversion} +in the default Computer Modern fonts), or +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +{\slshape\sffamily + Never mind the weather\/} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +{\slshape\sffamily Never mind the weather\/} +\end{verbatim} +\end{wideversion} +\end{quote} +(note the italic correction needed on slanted fonts, too). + +\LaTeXe{}'s text block commands take the first two letters of the +modal commands, and form a \csx{text}\emph{\texttt{xx}} command from +them. Thus \csx{bfseries} becomes \cmdinvoke*{textbf}{text}, +\csx{itshape} becomes \cmdinvoke*{textit}{text}, and \csx{ttfamily} +becomes \cmdinvoke*{texttt}{text}. Block commands may be nested, as: +\begin{quote} +\begin{verbatim} +\textit{\textbf{Never mind the rain}} +\end{verbatim} +\end{quote} +to produce bold italic text (note that the block commands supply +italic corrections where necessary), and they be nested with the +\LaTeXe{} modal commands, too: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +\texttt{\bfseries + So long as we're together} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +\texttt{\bfseries So long as we're together} +\end{verbatim} +\end{wideversion} +\end{quote} +for bold typewriter, or +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +{\slshape\textbf{% + Whoops! she goes again}\/} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +{\slshape \textbf{Whoops! she goes again}\/} +\end{verbatim} +\end{wideversion} +\end{quote} +for a bold slanted instance of the current family (note the italic +correction applied at the end of the modal command group, again). + +The new commands (as noted above) override commands of the same type. +In almost all cases, this merely excludes ludicrous ideas such as +``upright slanted'' fonts, or ``teletype roman'' fonts. There are a +couple of immediate oddities, though. The first is the conflict +between \csx{itshape} (or \csx{slshape}) and \csx{scshape}: while many +claim that an italic small-caps font is typographically unsound, such +fonts do exist. Daniel Taupin's \Package{smallcap} package enables +use of the instances in the \Qref*{\acro{EC} fonts}{Q-ECfonts}, and +similar techniques could be brought to bear on many other font sets. +The second is the conflict between \csx{upshape} and \csx{itshape}: +Knuth actually offers an upright-italic font which \LaTeX{} uses for +the ``\pounds{}'' symbol in the default font set. The combination is +sufficiently weird that, while there's a defined font shape, no +default \LaTeX{} commands exist; to use the shape, the (eccentric) user +needs \LaTeX{}'s simplest font selection commands: +\begin{quote} +\begin{narrowversion} +\begin{verbatim} +{\fontshape{ui}\selectfont + Tra la la, di dee} +\end{verbatim} +\end{narrowversion} +\begin{wideversion} +\begin{verbatim} +{\fontshape{ui}\selectfont Tra la la, di dee} +\end{verbatim} +\end{wideversion} +\end{quote} +\begin{ctanrefs} +\item[smallcap.sty]\CTANref{smallcap} +\end{ctanrefs} + +\Question[Q-newfont*]{What's wrong with \csx{newfont}?} + +If all else fails, you \emph{can} specify a font using the \LaTeX{} +\csx{newfont} command. The font so specified doesn't fit into the +\LaTeX{} font selection mechanism, but the technique can be tempting +under several circumstances. The command is merely the thinnest of +wrappers around the \csx{font} primitive, and doesn't really fit with +\LaTeX{} at all. A simple, but really rather funny, example of the +problems it poses, may be seen in: +\begin{quote} +\begin{verbatim} +\documentclass[10pt]{article} +\begin{document} +\newfont{\myfont}{cmr17 scaled 2000} +\myfont +\LaTeX +\end{document} +\end{verbatim} +\end{quote} +(the reader is encouraged to try this). The ``A'' of \csx{LaTeX} pretty +much disappears: \LaTeX{} chooses the size on the ``A'' according to +\emph{its} idea of the font size (10pt), but positions it according to +the dimensions of ``\csx{myfont}'', which is more than three times +that size. + +Another ``\csx{myfont}'' example arises from an entirely different +source. The mini-document: +\begin{quote} +\begin{verbatim} +\documentclass{article} +\begin{document} +\newfont{\myfont}{ecrm1000} +{\myfont voil\`a} +\end{document} +\end{verbatim} +\end{quote} +gives you ``German low double quotes'' (under the ``a'') in place of +the grave accent. This happens because \FontName{ecrm1000} is in a +different \Qref*{font encoding}{Q-whatenc} than \LaTeX{} is +expecting~--- if you use the \LaTeX{} \Package{fontenc} package to +select the \acro{EC} fonts, all these tiresome encoding issues are +solved for you, behind the scenes. + +There does however remain a circumstance when you will be tempted to +use \csx{newfont}~--- viz., to get a font size that doesn't fall into +the Knuth standard set of sizes: \LaTeX{} (by default) won't allow you +to use such a size. Don't despair: see the answer % ! line break +``\Qref*{arbitrary font sizes}{Q-fontsize}''. + + diff --git a/help/uk-tex-faq/faq.cls b/help/uk-tex-faq/faq.cls new file mode 100644 index 0000000000..a5ae3cdf54 --- /dev/null +++ b/help/uk-tex-faq/faq.cls @@ -0,0 +1,93 @@ +% simple class to format the UK TeX FAQ in two columns + +\ProvidesClass{faq}[2002/03/11 v2.0 UK TeX FAQ] + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +\newif\if@patchversion +\@patchversionfalse +\DeclareOption{patch}{\@patchversiontrue} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions + +\LoadClass{article} + +\RequirePackage[hyphens,obeyspaces]{url} +\RequirePackage{multicol,faq} + +% now, hack at page layout, taking account of whether we're in a +% single-column version... + +% **************************************** +% * PAGE LAYOUT * +% **************************************** +% +% (This stuff is hacked from SPQR (et al) in baskerv.cls) +% +% SIDE MARGINS: (as is for single column) +\ifsinglecolumn\else +\oddsidemargin -2.5pc \evensidemargin -2.5pc +\marginparwidth 4pc % don't use marginal notes... +\marginparsep 0.5pc % ...in the UK TUG newsletter +\fi + +% VERTICAL SPACING: +\topmargin -0.5in % allow half an inch border +\headheight 0\p@ % we don't bother with headers here ... +\headsep 0\p@ % ... this ain't a publication +\topskip 10\p@ +\footskip 15\p@ + +% DIMENSION OF TEXT: + +% vertical dimension +\textheight \paperheight +\advance\textheight -1.5in +%\textheight 250mm % height of text on a page (A4 paper) + +% horizontal dimension: pro tem, as is for singlcolumn +\ifsinglecolumn\else +\textwidth \paperwidth +\advance\textwidth -1in +%\textwidth 180mm % total width of a page (A4 paper) + +\columnseprule 0.5\p@ % width of line in the inter-column gutter +\columnsep 10mm % space between columns +\tolerance 9999 % make those columns justify +\fi + +% FOOTNOTES: +\footnotesep 6\p@ +\skip\footins 19.5\p@ plus 12\p@ \@minus \p@ + +% page footer: include date if patched version +\def\@twodigit#1{\ifnum#1<10\relax0\fi\number#1} +\def\faq@patched@date{\@arabic\year-\@twodigit\month-\@twodigit\day} +\if@patchversion + \renewcommand\ps@plain{% + \let\@mkboth\@gobbletwo + \let\@evenhead\@empty + \let\@oddhead\@empty + \def\@oddfoot{% + \reset@font + \hfil + \faq@patched@date\ : \thepage + \hfil + }% + \let\@evenfoot\@oddfoot + } + \let\ps@myplain\ps@plain + \pagestyle{myplain} +\fi +% little patch generated in investigating a request from a user here +% in cambridge +\let\FAQ@@tableofcontents\tableofcontents +\renewcommand\tableofcontents{{% + \let\FAQ@@addvspace\addvspace + \def\addvspace##1{% + \@tempskipa##1\relax + \FAQ@@addvspace{0.1\@tempskipa}% + }% + \FAQ@@tableofcontents +}} diff --git a/help/uk-tex-faq/faq.sty b/help/uk-tex-faq/faq.sty new file mode 100644 index 0000000000..e057007ae8 --- /dev/null +++ b/help/uk-tex-faq/faq.sty @@ -0,0 +1,1281 @@ +% $Id: faq.sty,v 1.140 2014/01/28 18:16:50 rf10 Exp rf10 $ +% +% This is the LaTeX package that deals with the eccentricities of mark +% up of the UK TeX FAQ. +% +% uses production LaTeX 2e commands +\NeedsTeXFormat{LaTeX2e}[1994/06/01]% at least! +\ProvidesPackage{faq}[2007/06/08 v2.4 English TeX FAQ macros] + +% this package new requires etex +\@ifundefined{eTeXversion}{% + \PackageError{faq}{This package requires e-TeX}{}% +}{} + +% +% something affecting fonts: do we use only freely available fonts +% (i.e., are we going to make the postscript of this publicly +% available?); the config file could change this setting if +% necessary. things affected herein are the definition of \MP (for +% metapost), which isn't currently doable with free fonts, and +% suppression of boldface versions of the logo fonts. +\newif\ifpublicversion \publicversiontrue + +% +% what fonts are we going to typeset in? +\newif\ifboldmathavail +\InputIfFileExists{faqfont.cfg}% must set \ifboldmathavail if necessary + {\typeout{FAQ -- loading font configuration file faqfont.cfg}} + {% + \RequirePackage[T1]{fontenc}% + \RequirePackage{lmodern}% for sans fonts + \RequirePackage{mathptmx} + \RequirePackage{textcomp}% + \AtBeginDocument{% + \let\save@textcurrency\textcurrency + \def\textcurrency{% + {% + \fontfamily{lmr}\selectfont + \save@textcurrency + }% + }% + } + \boldmathavailfalse + \IfFileExists{luximono.sty}% + {\RequirePackage[scaled=0.85]{luximono}}% not using cmtt-alike + {\RequirePackage{sub-luximono}}% load whatever + \DeclareRobustCommand{\$}{\char`\$}% otherwise tries to load tctt.... + \@ifundefined{Dings}{\RequirePackage{pifont}% + \def\Dings{\nopagebreak{\footnotesize + \dingline{167}}}% + }% + {}% + \DeclareRobustCommand\acro[1]{##1\@{}} + } + +% debugging (requires etex, like much of this package) +%\tracingifs=1 + +% suppress bold maths if they're not available +\ifboldmathavail\else\let\boldmath\@empty\fi + +% +% true for pdf output +\newif\ifsinglecolumn + +\RequirePackage{ifpdf} +\ifpdf + \PackageInfo{faq}{1-column PDF output\@gobble} + \expandafter\singlecolumntrue +\else + \PackageInfo{faq}{2-column DVI output\@gobble} + \expandafter\singlecolumnfalse +\fi + +\ifpdf + % suppress font list from pdftex + \RequirePackage{atveryend} + \AtVeryVeryEnd{\batchmode} +\fi + +% +% if we're doing pdf, set up hyperref package and backdoors that avoid +% its sillier byproducts... +\ifpdf + \@ifundefined{pdfavoidoverfull}{}{\pdfavoidoverfull=1} + \let\@faq@@url\url + \urldef\DebianSocialContract\@faq@@url + {http://www.debian.org/social_contract#guidelines} + \RequirePackage[pdftex% + ,colorlinks% + ,pdftitle=The\ UK\ TeX\ FAQ% + ,linkcolor=blue% + ,pdfpagemode=UseNone% + ,pdfstartview=FitH% +% ,bookmarks=false% + ,bookmarksnumbered% + ]{hyperref} + \RequirePackage{pdf14} + \usepackage{thumbpdf} + \pdfstringdefDisableCommands{% + \let\cs\psd@cs + \def\csx#1{\textbackslash#1}% + \def\marg#1{\textbraceleft#1\textbraceright}% + \let\acro\@firstofone + \let\ProgName\@firstofone + \let\Package\@firstofone + \def\meta#1{<#1>}% + % + \def\WYSIWYG{WYSIWYG}% + \def\AMSTeX{AmSTeX}% + \def\BibTeX{BibTeX}% + \def\bibtex{BibTeX}% + \def\PiCTeX{PiCTeX}% + \def\pictex{PiCTeX}% + \def\CDROM{CD-ROM}% + \def\TeXXeT{TeXXeT}% + \def\MLTeX{ML-TeX}% + \def\MP{MetaPost}% + \def\dots{...}% + \def\obracesymbol{\{}% + \def\cbracesymbol{\}}% + \def\,{}% + }% + \begingroup + \lccode`\~=`\|% + \lowercase{\endgroup + \def\psd@cs~#1~{\textbackslash#1}% + }% + % adding table of contents to bookmarks + \let\Orig@tableofcontents\tableofcontents + \def\tableofcontents{% + \pdfbookmark[1]{\contentsname}{contents}% + \Orig@tableofcontents + }% + % adding \subsection*{Finding the Files} + \AtBeginDocument{% + \let\Orig@subsection\subsection + \def\subsection{% + \@ifstar{\bookmark@subsectionstar}{\Orig@subsection}% + }% + }% + \def\bookmark@subsectionstar#1{% + \advance\Hy@linkcounter by 1\relax + \pdfbookmark[2]{#1}{subsectionstar.\the\Hy@linkcounter}% + \Orig@subsection*{#1}% + }% +\fi + +% +% general support +%\RequirePackage{calc} +\RequirePackage{microtype} +% +% code for handling logo font +%% \RequirePackage{mflogo} +%% \ifpublicversion +%% \renewcommand{\MP}{Meta\-Post} +%% \let\faq@@MF\MF +%% \def\faq@bx{bx} +%% \DeclareRobustCommand{\MF}{{% +%% \ifx\f@series\faq@bx +%% \expandafter\textmd% +%% \fi +%% {\faq@@MF}% +%% }% +%% } +%% \fi +\DeclareRobustCommand\MF{Meta\-font} +\let\mf\MF +\DeclareRobustCommand\MP{Meta\-post} +\let\mp\MP +\newcommand\ttype{TrueType} +\newcommand\otype{OpenType} +\let\textlogo\textmd +% +% define substitutes for stupid_names +\newcommand\LaTeXo{\latex\,2.09} + \newcommand\latexo{\latex\,2.09} +\newcommand\AMSTeX{AMS\TeX} +\newcommand\AMSLaTeX{AMS\latex} + \newcommand\amslatex{AMS\latex} +\newcommand\BibTeX{Bib\TeX} + \newcommand\bibtex{Bib\TeX} +\newcommand\PiCTeX{PiC\TeX} + \newcommand\pictex{PiC\TeX} + \newcommand\texlive{\TeX{} Live} +% and... +% +% ifthenelse for the undefined references +\RequirePackage{ifthen} +% +% tables are all long'uns +\RequirePackage{booktabs} +% +% we define conditional stuff using Eijkhout's package +\RequirePackage{comment} +\def\CommentCutFile{tmp/comment.cut} % use this in place of ./comment.cut +\excludecomment{htmlversion} +\includecomment{typesetversion} +\ifpdf + \includecomment{pdfversion} + \includecomment{wideversion} + \includecomment{hyperversion} + \excludecomment{flatversion} + \excludecomment{dviversion} + \excludecomment{narrowversion} +\else + \excludecomment{pdfversion} + \excludecomment{wideversion} + \excludecomment{hyperversion} + \includecomment{flatversion} % non-hyper + \includecomment{dviversion} + \includecomment{narrowversion} +\fi +% +% define commands that behave differently according to the above +% \begin{hyperversion} +% \newcommand\quotify[1]{``#1''} +% \end{hyperversion} +% \begin{flatversion} +% \let\quotify\@firstofone +% \end{flatversion} +% +% dummy environment for separating the intro +\newenvironment{introduction}{}{} +% +% but we also want short versions, like LaTeX2HTML's +\let\htmlonly\@gobble +\let\nothtml\@firstofone +\let\latexhtml\@firstoftwo +\ifpdf + \let\narrowonly\@gobble + \let\wideonly\@firstofone + \let\hyperflat\@firstoftwo +\else + \let\narrowonly\@firstofone + \let\wideonly\@gobble + \let\hyperflat\@secondoftwo +\fi +\let\hyperonly\wideonly +\let\flatonly\narrowonly +% +% the little bit(s) of code that's(re) going to be ignored when the +% html is generated are enclosed by the following two commands +\let\htmlignore\relax +\let\endhtmlignore\relax + +% +% the Baskerville and other logos and abbreviations +\providecommand\BV{\emph{Baskerville}} +\providecommand\DANTE{\acro{DANTE}} +\providecommand\MSDOS{\acro{MS-DOS}} +\providecommand\CDROM{\acro{CD-ROM}} +% +\providecommand\elatex{e-\LaTeX{}} +\providecommand\plaintex{Plain \TeX{}} +\providecommand\miktex{MiKTeX} +\providecommand\texshop{\ProgName{TeXshop}} +\providecommand\texworks{\ProgName{TeXworks}} +% +\newcommand\ctan{\acro{CTAN}} +\newcommand\tex{\TeX{}} +% +\newcommand\macosx{Mac \acro{OS}/X} +% +%% \providecommand\TeXXeT{\TeX-{}-X\lower.5ex\hbox{E}\kern-.1667emT\@} +%\providecommand\MLTeX{ML-\TeX} +% +% provided for consistency's sake +\newcommand\PS{PostScript} +% +% to get \\ into example command arguments +\def\bsbs{\char`\\\char`\\} +% +\def\careof{\leavevmode\hbox{\raise.75ex\hbox{c}\kern-.15em + /\kern-.125em\smash{\lower.3ex\hbox{o}}}} +% +% another silliness: +\providecommand{\textoslash}{\o} +% +% \cs{SMC} \emph{isn't} small caps~--- Barbara Beeton says she thinks +% of it as ``big small caps''. She says (modulo capitalisation of +% things\dots): +% \begin{quote} +% For the things it's used for, regular small caps are not +% appropriate~--- they're too small. Real small caps are +% appropriate for author names (and are so used in continental +% bibliographies), section headings, running heads, and, on +% occasion, words to which some emphasis is to be given. \cs{SMC} +% was designed to be used for acronyms and all-caps abbreviations, +% which look terrible in small caps, but nearly as bad in all caps +% in the regular text size. The principle of using ``one size +% smaller'' than the text size is similar to the design of caps in +% German~--- where they are smaller relative to lowercase than are +% caps in fonts intended for English, to improve the appearance of +% regular text in which caps are used at the heads of all nouns, not +% just at the beginnings of sentences. +% \end{quote} +% +% We define this in terms of the memory of the size currently selected +% that's maintained in \cs{@currsize}: if the user does something +% silly re.~selecting fonts, we'll get the wrong results. The +% following code is adapted from |relsize.sty| by Donald Arseneau and +% Matt Swift, from a 2.09 original by Bernie Cosell. (Note that the +% order of examination of \cs{@currsize} is to get the commonest cases +% out of the way first.) +% \begin{macrocode} +%\def\SMC{\small} +%<*latex2e> +\DeclareRobustCommand\SMC{% + \ifx\@currsize\normalsize\small\else + \ifx\@currsize\small\footnotesize\else + \ifx\@currsize\footnotesize\scriptsize\else + \ifx\@currsize\large\normalsize\else + \ifx\@currsize\Large\large\else + \ifx\@currsize\LARGE\Large\else + \ifx\@currsize\scriptsize\tiny\else + \ifx\@currsize\tiny\tiny\else + \ifx\@currsize\huge\LARGE\else + \ifx\@currsize\Huge\huge\else + \small\SMC@unknown@warning + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +} +\newcommand\SMC@unknown@warning{\PackageWarning{faq}{Unknown text font + size command -- using \string\small}} +\DeclareRobustCommand\textSMC[1]{{\SMC #1}} +% \end{macrocode} +% +% The \cs{acro} command uses \cs{SMC} as it was originally intended. +% Note that, since most of these things are uppercase-only names, it +% fiddles with the spacefactor after inserting its text. font config +% files may define \cs{acro} otherwise +% +% \begin{macrocode} +\@ifundefined{acro}{% + \DeclareRobustCommand\acro[1]{\textSMC{#1}\@}% +}{} +% \end{macrocode} +% +%\TUGboat (effectively) takes arguments {}vol(issue) +\DeclareRobustCommand\TUGboat[1]{\expandafter\@TUGboat\ignorespaces} +\def\@TUGboat#1(#2){\textsl{TUGboat} \textbf{#1}(#2)} +% +% The NTS and eTeX (and for consistency Eplain) logos +%% \DeclareRobustCommand\NTS{$\mathcal{N}$\lower.5ex\hbox +%% {$\mathcal{T}$}$\mathcal{S}$\@} +%% \DeclareRobustCommand\eTeX{{$\varepsilon$}-\TeX} +%% \DeclareRobustCommand\eTeX{e-\TeX} +%% \DeclareRobustCommand\Eplain{Eplain} +%% \DeclareRobustCommand\PDFTeX{\acro{PDF}\TeX} +%% \DeclareRobustCommand\PDFLaTeX{\acro{PDF}\LaTeX} +%% \DeclareRobustCommand\CONTeXT{Con\TeX{}t} +\DeclareRobustCommand\YandY{\acro{Y}\&\acro{Y}} + +% non-silly names... +\renewcommand\TeX{TeX} +\newcommand\Eplain{Eplain} +\newcommand\etex{e-\TeX} +\let\eTeX\etex % some day all the old format will have gone... +\newcommand\ExTeX{Ex\TeX} +\newcommand\NTS{NTS} +\newcommand\PDFTeX{PDF\TeX} +\newcommand\pdftex{PDF\TeX} +\newcommand\LuaTeX{Lua\TeX} +\newcommand\luatex{Lua\TeX} +\newcommand\lualatex{Lua\LaTeX} +\newcommand\xetex{XeTeX} +\newcommand\xelatex{XeLaTeX} +%\newcommand\TeXXeT{TeX-{}-XeT} + +\newcommand\AllTeX{(La)\TeX} +\newcommand\alltex{(La)\TeX} +\newcommand\CONTeXT{Con\TeX{}t} +\newcommand\context{Con\tex{}t} +\newcommand\PDFLaTeX{PDF\LaTeX} +\newcommand\pdflatex{PDF\latex} +\renewcommand\LaTeX{La\TeX} +\newcommand\latex{La\TeX} +\newcommand\twee{2e} +\renewcommand\LaTeXe{\LaTeX\twee} +\newcommand\latexe{\LaTeX\twee} +% +% Other odds and ends (appear differently in TeX and http or plain +% text +% +% wysiwyg gets capitalised at the beginning of a sentence. not +% entirely reliably... +\DeclareRobustCommand\WYSIWYG{% + \ifvmode + \let\faq@tempa\MakeUppercase + \else + \ifnum\spacefactor>2000 + \let\faq@tempa\MakeUppercase + \else + \let\faq@tempa\relax + \fi + \fi + \textsc{\faq@tempa wysiwyg}% +} +% +% Command for doing `square one' :-} +\newcommand\sqfbox[1]{\framebox{\makebox[\totalheight]{#1\/}}} +% +% an arrow used as a hyphen... +\newcommand\arrowhyph{\ensuremath{\rightarrow}\penalty0\hskip0pt\relax} +% +% Here's a \fullline macro that works in lists and so on +\newcommand\fullline[1]{\@tempdima\hsize\relax + \advance\@tempdima-\leftmargin\relax + \advance\@tempdima-\rightmargin\relax + \hb@xt@\@tempdima{#1}% +} +% +% list indentations (narrower than default because two-column, but +% squeezed further to gain a bit more space still) +\setlength\leftmargini {1.8em} +\setlength\leftmarginii {1.2em} +\setlength\leftmarginiii{1em} +\setlength\leftmarginiv {0.8em} +% +% for tidy expression of things with parentheses around them: +\newcommand\parens[1]{(#1)} +\newcommand\oparen{(}%)( [footling around to match brackety things in emacs] +\newcommand\cparen{)} +% +% make the tex logo robust +\edef\@tempa{\noexpand\DeclareRobustCommand\noexpand\TeX{\TeX}} +\@tempa +% +% this piece of fantasy was let loose on an unsuspecting world by +% christina thiele, but i bet she didn't write it ;-) +\edef\diatop{\noexpand\protect\csname diatop \endcsname} +\expandafter\def\csname diatop \endcsname[#1|#2]{% + \leavevmode + {% + \setbox1=\hbox{{#1{}}}\setbox2=\hbox{{#2{}}}% + \dimen0=\ifdim\wd1>\wd2\wd1\else\wd2\fi% + \dimen1=\ht2\advance\dimen1by-1ex% + \setbox1=\hbox to1\dimen0{\hss#1\hss}% + \rlap{\raise1\dimen1\box1}% + \hbox to1\dimen0{\hss#2\hss}% + }% +}% +% +% for han the thanh (who knows whether i've actually got this right; i +% can't use the T5 fonts, which aren't even really publicly available +% yet) +\DeclareRobustCommand{\The}{Th\diatop[\'|\^e]} +%% % +%% % 2e's LaTeX logo sets the A in scripstyle jammed up to the top of the T; it +%% % also has the advantage that it's set in the same font as the +%% % surrounding text. However, the esteemed bbeeton says the logo looks +%% % "squidge awful" in italic text (I agree; and the same is true of its +%% % behaviour in slanted text) +%% % +%% % So here's a version that allows for the slant of the leading L +%% \DeclareRobustCommand{\LaTeX}{L% +%% {\setbox0\hbox{T}% +%% \setbox\@tempboxa\hbox{$\m@th$% +%% \csname S@\f@size\endcsname +%% \fontsize\sf@size\z@ +%% \math@fontsfalse\selectfont +%% A}% +%% \@tempdima\ht0 +%% \advance\@tempdima-\ht\@tempboxa +%% \@tempdima\strip@pt\fontdimen1\font\@tempdima +%% \advance\@tempdima-.36em +%% \kern\@tempdima +%% \vbox to\ht0{\box\@tempboxa +%% \vss}% +%% }% +%% \kern-.15em +%% \TeX} +%% % +%% % Ditto for \AllTeX (as used in TUGboat) +%% \DeclareRobustCommand{\AllTeX}{(L% +%% {\setbox0\hbox{T}% +%% \setbox\@tempboxa\hbox{$\m@th$% +%% \csname S@\f@size\endcsname +%% \fontsize\sf@size\z@ +%% \math@fontsfalse\selectfont +%% A}% +%% \@tempdima\ht0 +%% \advance\@tempdima-\ht\@tempboxa +%% \@tempdima\strip@pt\fontdimen1\font\@tempdima +%% \advance\@tempdima-.36em +%% \kern\@tempdima +%% \vbox to\ht0{\box\@tempboxa +%% \vss}% +%% }\kern-.075em)% +%% \kern-.075em\TeX} +%% % +%% % A similar game is used in defining an `all LaTeX' sort of thing: +%% \DeclareRobustCommand\twee{2$_{\textstyle\varepsilon}$} +% +% it proves that, for Alan's stuff, the following needs to have been +% done _before_ we define the macros +\RequirePackage{shortvrb} +\MakeShortVerb{\|} +% +% A command which sets some text in typewriter, with the hyphenchar +% temporarily set to its first argument \FAQverb\HYPHEN{TEXT}. +% NB: This requires no catcode hackery, so should work inside moving +% arguments. It will, however, produce spurious spaces after CSs, and +% won't allow brace-unmatched input. It also won't survive going into a +% moving argument if \HYPHEN won't. +% +\let\FAQverbFamily\ttfamily +\DeclareRobustCommand{\FAQverb}[2]{{% + \ifvmode\leavevmode\fi + \lefthyphenmin=256\setlanguage\language + \FAQverbFamily\hyphenchar\the\font`#1\relax + \def\@tempa{#2}% + \expandafter\@faq@strip\meaning\@tempa\@faq@strip + \hyphenchar\the\font\m@ne +}\setlanguage\language} +\def\@faq@strip#1->#2\@faq@strip{#2} +% +% Document markup: +% +% (new method, using url.sty -- old version using FAQverb stuff +% deleted from comments 2000/03/24) +\newcommand\Email{\begingroup \urlstyle{tt}\Url} % email address +\ifpdf +\def\mailto#1{\href{mailto:#1}{\Email{#1}}} +\else +\newcommand\mailto{\begingroup \urlstyle{tt}\Url} % mailable address +\fi +\DeclareRobustCommand\FTP{\begingroup \urlstyle{tt}\Url} % FTP site address +\DeclareRobustCommand\File{\begingroup \urlstyle{tt}\Url} % File name +\DeclareRobustCommand\@ctan@path{\begingroup \urlstyle{tt}\Url} % CTAN path + % (argument in braces) +\ifpdf +\newcommand\@CTAN[3]{\href{#1#2#3}{\@ctan@path{#2}}} % relay via hyperreference +\else +\newcommand\@CTAN[3]{\@ctan@path{#2}} % text-only reference +\fi +\newcommand\Newsgroup{\begingroup \urlstyle{tt}\Url} % newsgroup +\let\URL\url % just a URL +\ifpdf +\let\nolinkURL\nolinkurl % unlinked version +\else +\let\nolinkURL\url % there ain't no linking +\fi +% url.sty defines \path, etc. hyperref may redefine... +\ifpdf + % hyperref has defined \href + \let\FAQ@@href\href + % we actually want to ignore the * in \href* + \def\href{\@ifstar\FAQ@@href\FAQ@@href} +\else +% +% here, latex for printing + \newcommand\href{% + \@ifstar + {\let\@href@text\@empty\@href@a}% + {\def\@href@text{see }\@href@a}% + } +% +% decisions now made about + \newcommand\@href@a{\begingroup + \@makeother\\% + \@makeother\_% + \@makeother\%% + \@makeother\~% + \@makeother\#% + \@href@b + } +% +% enter here in a group with sanitised arg + \newcommand\@href@b[1]{\endgroup + \urldef\@href@tempurl\url{#1}% + \@href@getanchor + } +% +% out of the group again: argument is the anchor + \newcommand\@href@getanchor[1]{#1% + \@ifnextchar@nosp'% + {\@href@getanchorq}% + { (\@href@text\@href@tempurl)\@let@token}% + } +% +% one quote after the anchor - check for a second + \newcommand\@href@getanchorq{% gobble the first quote + \@ifnextchar@nosp'% + \href@getanchor@qq + {' (\@href@text\@href@tempurl)\@let@token}% restore quote + } + \newcommand\href@getanchor@qq{% gobble the second quote too + {'' (\@href@text\@href@tempurl)}% restore both quotes + } +% +% two quotes after the anchor +\fi +\long\def\@ifnextchar@nosp#1#2#3{% + \let\reserved@d=#1% + \def\reserved@a{#2}% + \def\reserved@b{#3}% + \afterassignment\@ifnch@nosp\let\@let@token= } +\def\@ifnch@nosp{% + \ifstophere\stopherefalse\show\@let@token\fi + \ifx\@let@token\reserved@d + \expandafter\reserved@a + \else + \expandafter\reserved@b + \fi +} +\setcounter{errorcontextlines}{999} +\newif\ifstophere + +%%\ifx\DeclareUrlCommand\undefined +\DeclareRobustCommand\ProgName{% + \begingroup + \def\UrlFont{\rmfamily\itshape}\csname Url@do\endcsname + \Url +} +\let\progname\ProgName +%%\else +%% \DeclareUrlCommand\@ProgName{\def\UrlFont{\rmfamily\itshape}} +%% \DeclareRobustCommand\ProgName{\@ProgName} +%%\fi +\let\Package\ProgName % pro tem +\let\package\Package + +\let\Class\Package % ... +\let\class\Class + +\let\FontName\Package % ... +% \let\fontname\FontName % ahh, ... no! + +% another little oddity (from doc.sty originally, iirc) +\newcommand\meta[1]{\ensuremath{\langle}\emph{#1}\ensuremath{\rangle}} + +% +% ISBN references +\def\ISBN{\@ifstar\@ISBNstar\@ISBN} +\def\@ISBNstar#1#2{\acro{ISBN}-10~#1, \acro{ISBN}-13~#2} +\def\@ISBN#1{\acro{ISBN}-10~#1} +% +% Alan's code for CTAN references (now hacked to be capable of urls +% for use in pdf output): +% +% define a location for a package on CTAN +% ignores a leading * (which has meaning for html version only) +% #1 is the package name +% #2 is the CTAN path to the thing +% a package in a directory +\ifpdf + \newcommand{\CTANdirectory}{\@ifstar\@sCTANdirectory\@CTANdirectory} +\else + \newcommand{\CTANdirectory}{\@ifstar\@CTANdirectory\@CTANdirectory} +\fi +\newcommand{\@CTANdirectory}[2]{\@ifundefined{ctan-#1}{% + \expandafter\gdef\csname ctan-#1\endcsname{\@CTAN\LocalCTAN{#2}\CTANDirFmt}% + }{% + \PackageWarningNoLine{faq}{Repeated definition of label: #1}% + \stepcounter{CTAN@replabs}% + }% + \@faq@disposeopt +} +\ifpdf + \newcommand{\@sCTANdirectory}[2]{\@ifundefined{ctan-#1}{% + \expandafter\gdef\csname ctan-#1\endcsname{\@CTAN\LocalCTAN{#2}/}% + }{% + \PackageWarningNoLine{faq}{Repeated definition of label: #1}% + \stepcounter{CTAN@replabs}% + }% + \@faq@disposeopt + } +\fi +% +% a package in a single file (the same appearance, but the WWW -- and +% ultimately the pdf -- versions are different). +\ifpdf +\newcommand{\CTANfile}[2]{\@ifundefined{ctan-#1}{% + \expandafter\gdef\csname ctan-#1\endcsname{\@CTAN\LocalCTAN{#2}{}}% + }{% + \PackageWarningNoLine{faq}{Repeated definition of label: #1}% + \stepcounter{CTAN@replabs}% + }% + \@faq@disposeopt +} +\else +\let\CTANfile\CTANdirectory +\fi +% +% get rid of optional catalogue pointer in \CTAN(directory|file) +\newcommand\@faq@disposeopt{% + \@ifnextchar[\@faq@gobbleopt{}% ] +} +\def\@faq@gobbleopt[#1]{} +% +% Make reference to a CTAN package +% +% counters for the undefined references and repeated labels +\newcounter{CTAN@unrefs} +\newcounter{CTAN@replabs}% +% +% the command itself +\newcommand{\CTANref}[1]{% + \@ifundefined{ctan-#1}{% + \PackageWarning{CTAN}{Undefined reference: #1}% + \stepcounter{CTAN@unrefs}% + \futurelet\@let@token\faq@zap@trailing@opt + }{% + \csname ctan-#1\endcsname + \expandafter\let + \expandafter\faq@cat@ref\csname ctan-catref-#1\endcsname + }% + \futurelet\@let@token\faq@check@trailing@opt +} +\newcommand\faq@check@trailing@opt{% + \ifx\@let@token[% + \expandafter\faq@collect@catref + \else + \let\faq@catref\@empty% + \fi +} +\def\faq@collect@catref[#1]{\edef\faq@catref{\noexpand + \url{\faq@fixed@cataddr#1.html}% + }% +}% +\def\faq@fixed@cataddr{ help/Catalogue/}% +\newcommand\faq@zap@trailing@opt{\ifx\@let@token[% + \expandafter\@gobble@opt\fi +} +\def\@gobble@opt[#1]{} +% +% href to a ctan package +\ifpdf + \DeclareRobustCommand{\CTANhref}[2]{\@ifundefined{ctan-#1}{% + \PackageWarning{CTAN}{Undefined reference: #1}% + \stepcounter{CTAN@unrefs}% + }{{% + \def\@CTAN##1##2##3{http://mirror.ctan.org/##2}% + \href{\csname ctan-#1\endcsname}{#2}% + }}} +\else % DVI version + \DeclareRobustCommand{\CTANhref}[2]{\@ifundefined{ctan-#1}{% + \PackageWarning{CTAN}{Undefined reference: #1}% + \stepcounter{CTAN@unrefs}% + }{{% +% \def\@ctan@path##1{\expandafter\httpify\LocalCTAN!##1} + \def\@ctan@path##1{\LocalCTAN##1} + \edef\@tempa{\csname ctan-#1\endcsname}% + \expandafter\href\expandafter{\@tempa}{#2}% + }}} +\fi +% +% this is surely temporary +\def\httpify ftp://ftp#1!{http://www#1} +% +% hook for diagnosing undefined references at the end +\AtEndDocument{\ifthenelse{\theCTAN@unrefs > 0}{% + \PackageWarningNoLine{ctan}{There were \arabic{CTAN@unrefs} undefined + references to CTAN}% + }% + {}% + \ifthenelse{\theCTAN@replabs > 0}{% + \PackageWarningNoLine{ctan}{There were \arabic{CTAN@replabs} + multiply defined references to CTAN}% + }% + {}% +} +% +% a slight variation of description for lists of book titles +\newcommand{\booklabel}[1]{\hspace\labelsep\normalfont\itshape #1} +\newenvironment{booklist}{% + \begin{list}{}% + {% + \labelwidth\z@ + \itemindent-\leftmargin + \let\makelabel\booklabel + \parskip \z@ + \itemsep \z@ + }% + }% + {\end{list}} +% +% proglist is the same as booklist if we're using italics for program +% names, but will need hacking otherwise +\newenvironment{proglist}{\begin{booklist}}{\end{booklist}} +% +% similarly for ctanrefs environment +\newcommand{\ctanreference}[1]{% + \hspace\labelsep\normalfont\ttfamily\itshape + \bgroup + \@makeother\_% + \scantokens{#1}% + \unskip + \egroup + \/\normalfont:% +} +\newenvironment{ctanrefs}{% + \begin{list}{}% + {% + \labelwidth\z@ + \itemindent-\leftmargin + \let\makelabel\ctanreference + \topsep 4\p@ + \parskip \z@ + \itemsep \z@ + \@rightskip=\z@\@plus1in\relax + \spaceskip=.3333em\relax + \xspaceskip=.5em\relax + }% + }% + {\end{list}} +% +% compact the itemize, enumerate and description environments +\let\FAQ@@itemize\itemize +\renewcommand\itemize{% + \topsep 0.25\topsep + \FAQ@@itemize + \parskip \z@ + \itemsep \z@ +} +\let\FAQ@@enumerate\enumerate +\renewcommand\enumerate{% + \topsep 0.25\topsep + \FAQ@@enumerate + \parskip \z@ + \itemsep \z@ +} +\let\FAQ@@description\description +\renewcommand\description{% + \topsep 0.25\topsep + \FAQ@@description + \parskip \z@ + \itemsep \z@ +} +% +% and similarly close up verbatim's separation from what surrounds it +\let\FAQ@@verbatim\verbatim +\renewcommand\verbatim{% + \topsep 0.25\topsep + \FAQ@@verbatim +} +% +% \raggedwithindent is useful when we've got an URL or something +% overrunning the end of the line (and this line is terminated with +% \\) +% +% Typical usage is within the argument of a \nothtml command +\newcommand\raggedwithindent{% + \rightskip=\z@\@plus5em\relax + \spaceskip=.3333em\relax + \xspaceskip=.5em\relax + \hangindent=1pc\relax} +% +% things needed for the benefit of texfaq2html's `sanitise_line' +\let\textpercent\% +\let\faq@@textbar\textbar +\chardef\faq@vertbar`\| +\renewcommand\textbar{\def\@tempa{cmtt}% + \ifx\@tempa\f@family + \faq@vertbar + \else + \faq@@textbar + \fi +} +% +% redefine \cs{l@section} to require space for itself at the bottom +% of a column +\renewcommand\l@section[2]{% + \ifnum \c@tocdepth >\z@ + \addpenalty\@secpenalty + \addvspace{1.0em \@plus\p@}% +% "needspace" element here (doesn't work) +% \vskip \z@ \@plus 3\baselineskip +% \penalty -\@highpenalty +% \vskip \z@ \@plus -3\baselineskip + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \bfseries + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \endgroup + \fi +} +% +% subsections: these are a curious half-breed between latex sections +% and subsections -- as designed, i'm not intending there ever to be +% more than 9 per section (hahaha) +\renewcommand\subsection{\@startsection{subsection}% + \tw@ + \z@ + {-1.5ex \@plus-1ex \@minus-.3ex}% + {1ex \@plus.2ex}% + {\normalfont\large\bfseries + \raggedright}% + } +\renewcommand*\l@subsection[2]{% + \ifnum \c@tocdepth >\@ne + \addpenalty\@secpenalty + \addvspace{0.5em \@plus\p@}% +% "needspace" element here (doesn't work) +% \vskip \z@ \@plus 3\baselineskip +% \penalty -\@highpenalty +% \vskip \z@ \@plus -3\baselineskip + \setlength\@tempdima{2.0em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \bfseries + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \endgroup + \fi} +% +% +% the question structure +% \Question[label name]{question asked} +% if [label name] present, the named label is assigned with \Qlabel +\newcounter{question} +\newcommand\Question[2][]{% + \ifpdf + \def\annot@label{#1}% + \def\annot@question{#2}% + \fi + \edef\l@stl@bel{\@gobbletwo#1}% + \qu@stion{#2}% + \def\reserved@a{#1}% + \ifx\reserved@a\@empty + \PackageWarning{faq}{Question "#2" has no label}% + \else + \Qlabel{#1}% + \fi +} +\newcommand\qu@stion{\@startsection{question}% + \thr@@ + \z@ + {-1.25ex \@plus -1ex \@minus -.2ex}% + {0.75ex \@plus .2ex}% + {% + \normalfont + \normalsize + \bfseries + \raggedright + \protected@edef\@svsec{\protect\annot@set\@svsec}% + }% +} +\newcommand*\questionmark[1]{} +\newcommand*\l@question{\@dottedtocline{2}{2.0em}{2.3em}} + +% +% \paragraph: has appeared in a submission, so let's give it a faq +% definition... +\renewcommand\paragraph{\@startsection{paragraph}% + 4% + \z@ + {1.25ex \@plus 1ex \@minus.2ex}% + {-1em} + {% + \normalfont + \normalsize + \bfseries + }} +% +% alias questions make a little perl script to set up a hash array +% that takes one from old question to current one. +\newcount\aliasfile +\aliasfile=-1 +\newcommand\AliasQuestion[1]{% + \ifnum\aliasfile<0 + \newwrite\aliasfile + \immediate\openout\aliasfile aliasquestion.list + \immediate\write\aliasfile {\faq@percent old_label_to_new = (}%) + \AtEndDocument{%( + \immediate\write\aliasfile{);}% + \immediate\write\aliasfile{1;}% + }% + \else + \immediate\write\aliasfile {,}% finish previous line + \fi + \immediate\write\aliasfile{"\@gobbletwo#1","\l@stl@bel"}% +} +{% + \catcode`\!=\the\catcode`\%% + \catcode`\%=\the\catcode`\+! + \gdef\faq@percent{%}! +} +% +\long\def\@ReturnAfterFi#1\fi{\fi#1}% +\ifpdf + \newcommand*\toclevel@question{3}% + \let\orig@section\section + \let\orig@subsection\subsection + \let\orig@subsubsection\subsubsection + \def\section{% + \def\toclevel@question{2}% + \orig@section + } + \def\subsection{% + \def\toclevel@question{3}% + \orig@subsection + } + \def\subsubsection{% + \def\toclevel@question{4}% + \orig@subsubsection + } + % + \def\annot@set{% + \ifx\annot@label\@empty + \else + \begingroup + \def\x##1-##2\@nil{\def\annot@label{##2}}% + \expandafter\x\annot@label\@nil + \def\x##1_##2\@nil{% + ##1% + \ifx\\##2\\% + \else + \noexpand\textunderscore + \@ReturnAfterFi{\x##2\@nil}% + \fi + }% + \edef\annot@label{\expandafter\x\annot@label_\@nil}% + \edef\NL{\string\n}% + \pdfstringdef\annot@text{% + http://www.tex.ac.uk/cgi-bin/texfaq2html?label=\annot@label\NL + \annot@question + }% + \rlap{% + \kern-10mm\relax + \settoheight{\dimen@}{X}% + \pdfannotlink + width 200mm + height \dimen@ + depth 25mm + user {% + /Subtype/Text% + /T(Question \thequestion: \annot@label)% + /Contents(\annot@text)% + }% + \pdfendlink + }% + \endgroup + \fi + }% + \@ifundefined{pdfannotlink}{% + \let\pdfannotlink\pdfstartlink + }{} +\else + \let\annot@set\relax +\fi +% +% \QuestionLabel starts out as a null command (so that inputting a +% .lab file at s.o.d has no effect), but it's then reset to +% \@questionLabel in case the file is going to be read again later +% (e.g., as an appendix), but we don't have a sensible definition of +% _that_ yet, either... +\newcommand{\labellist}{% + \newcommand{\QuestionLabel}[3]{}% +% \@starttoc{lab}% + \let\QuestionLabel\@questionLabel +} +\newcommand{\@questionLabel}[3]{} +% +% \afterquestion is used when the \Question command itself has to be +% inside a group for some reason (e.g., to have it in \boldmath) +\newcommand\afterquestion{% + \global\toks@\expandafter{\the\everypar}% + \edef\@tempa{% + \noexpand\@afterindentfalse + \noexpand\everypar{\the\toks@}% + }% + \expandafter\endgroup\@tempa +} +% +% \cs{Destination} is used immediately after a \cs{Question} command +% in the various add-* files to signify where the question is supposed +% to go +\newcommand\Destination[1]{\begin{center} + \itshape#1 + \end{center} +} +% +% we `number' our sections alphabetically +\renewcommand{\thesection}{\Alph{section}} +% +% keywords for questions. these get translated into comments in web +% versions +\newcommand\keywords{\begingroup + \@makeother\\% + \@makeother\^% + \@makeother\_% + \@makeother\%% + \expandafter\endgroup + \@gobble +} +% +% date question last edited +\def\LastEdit{\@ifstar\@gobble\@gobble} +% +% where the info came from +\newcommand\LeadFrom[3]{} +% +% \Qlabel and \Qref: define and refer to labels +\ifpdf +% hyperref version of \label doesn't get set until begin document + \AtBeginDocument{\let\Qlabel\label} +\else + \let\Qlabel\label +\fi +% \Qref[]{}{} +% (default for arg 1 is "see question"; a conventional null argument +% here is \htmlonly, which gobbles a space) +% produces: +% +% +% \Qref*... produces +% ( ) +% +% the code is supposed to deal correctly with things surrounded by +% double quotes (i.e., ``\Qref*....'' closes the quotes before putting +% the question number in parentheses. +% +% this stuff should be reconsidered to produce more sensible behaviour +% when running pdftex +% +\ifpdf +% +% if we're using pdflatex, we let hyperref take the strain, and make +% \Qrefs look like the html versions +\DeclareRobustCommand\Qref{\@ifstar\@QrefH\@QrefH} +\newcommand\@QrefH[3][\relax]{% + \expandafter\let\expandafter\reserved@a\csname r@#3\endcsname + \ifx\reserved@a\relax + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{% + Reference `#3' on page \thepage \space undefined% + }% + \else +% \protected@edef\reserved@b{\reserved@a}% + \def\reserved@c##1##2##3##4##5{% + \def\reserved@d{{##1}{##2}{#2}{##4}{##5}}% + }% + \expandafter\reserved@c\reserved@a + \expandafter\Hy@setref@link\reserved@d\@empty\@empty\@nil\@thirdoffive + \fi +} +\else +% +% not using pdflatex: we've a ghastly job on our hands... +\newcommand\Qref{\@ifstar\@QrefA\@QrefB} +\newcommand\@QrefA[3][see question]{#2% + \def\@QrefAai{#1}% + \def\@QrefAaiii{#3}% + \afterassignment\@QrefAl\let\@tempa= } +\newcommand\@QrefAl{% \@tempa is char after original \Qref's args + % \@QrefAai/\@QrefAaiii are arguments of \Qref + \ifx\@tempa'% + \def\@next{% + \afterassignment\@QrefAQ + \let\@tempa= % + }% + \expandafter\@next + \else + { (\@QrefAai~\ref{\@QrefAaiii})\@tempa}% + \fi +} +\newcommand\@QrefAQ{% \@tempa is second char after original \Qref's + % arguments (first was a quote character) + \ifx\@tempa'% + '' (\@QrefAai~\ref{\@QrefAaiii})% + \else + { (\@QrefAai~\ref{\@QrefAaiii})'\@tempa}% + \fi +} +%% \@ifnextchar'{\@QrefAQb{#1}{#2}}{ (#1~\ref{#2})'}} +%% \newcommand\@QrefAQb[3]{% param 3 quote again +%% '' (#1~\ref{#2})} +\newcommand\@QrefB[3][see question]{#1~\ref{#3}} +% +\fi +% +% from doc package, then hacked about by yours truly +\DeclareRobustCommand\csx[1]{{\FAQverbFamily\char`\\#1}} +%\def\cs|#1|{\csx{#1}} +% +% fancier versions of the above +% +% \cmdinvoke\cs +% \cs typeset as above +% may consist of optional or mandatory arguments; +% +% the `arguments' are simply typesett \texttt, as yet -- if something +% fancier is needed, there's a bunch of code needs rewriting here... +\DeclareRobustCommand\cmdinvoke{\@ifstar + {\let\@tempa\emph\@scmdinvoke}% + {\let\@tempa\relax\@scmdinvoke}% +} +\def\@scmdinvoke#1{\texttt{\symbol{92}#1}% + \futurelet\@let@token\@cmdinvoke +} +\def\@cmdinvoke{\ifx\@let@token\bgroup + \let\@tempb\@cmdinvoke@lbrace + \else + \ifx\@let@token[% ] + \let\@tempb\@cmdinvoke@lbrack + \else + \ifx\@let@token(% ) + \let\@tempb\@cmdinvoke@lparen + \else + \let\@tempb\@empty + \fi + \fi + \fi + \@tempb +} +\def\@cmdinvoke@lbrace#1{\penalty0\hskip0pt\relax + \texttt{\symbol{123}\@tempa{#1}\symbol{125}}% + \futurelet\@let@token\@cmdinvoke +} +\def\@cmdinvoke@lbrack[#1]{\penalty-150\hskip0pt\relax + \texttt{[\@tempa{#1}]}% + \futurelet\@let@token\@cmdinvoke +} +\def\@cmdinvoke@lparen(#1){\penalty-150\hskip0pt\relax + \texttt{(\@tempa{#1})}% + \futurelet\@let@token\@cmdinvoke +} +% +% for writing \cmdinvoke out by hand (in titles) +\def\marg#1{\texttt{\symbol{123}{#1}\symbol{125}}} + +% that stuff doesn't work in pdf thumbnails. herewith an alternative +% for label ps@empty: +\DeclareRobustCommand\psatempty{% + \texttt{\string\pagestyle\string{empty\string}}% +} + +% minuscule bit more structured markup... +\newcommand\environment[1]{\texttt{#1}} +\newcommand\pkgoption[1]{\texttt{#1}} +\newcommand\extension[1]{\texttt{.#1}} +\newcommand\ltxcounter[1]{\texttt{#1}} +\newcommand\FontFormat[1]{\texttt{#1}} + +% deal with tabular: special defs to make texfaq2html doable +\let\tbamp& +\def\tbeol{\\} +\def\tbhline{\midrule} + +% +% symbols for the braces (which can confuse perl sumfink rotten +\def\obracesymbol{\symbol{123}} +\def\cbracesymbol{\symbol{125}} + +% +% for quoting verbatim environments in examples: +\begingroup \catcode `|=0 \catcode `[= 1 +\catcode`]=2 \catcode `\{=12 \catcode `\}=12 +\catcode`\\=12 +|gdef|@quotexverbatim#1\end{quoteverbatim}[#1|end[quoteverbatim]] +|endgroup +\def\quoteverbatim{\@verbatim \frenchspacing\@vobeyspaces \@quotexverbatim} +\let\endquoteverbatim\endverbatim + +% +% for comments during maintenance +%\def\Q#1{\footnote{{\ttfamily QUERY: #1}}} +%\def\Q#1{\marginpar{{\ttfamily QUERY: #1}}} +% +% Checking structure (null for now) +\newcommand\checked[2]{} +% +% for Alan's benefit +\newbox\@footnoteenvbox +\newenvironment{footnoteenv} + {\begin{lrbox}\@footnoteenvbox\reset@font\footnotesize\ignorespaces} + {\end{lrbox}% + \footnote{\unhbox\@footnoteenvbox}} +% +% end of package +\endinput diff --git a/help/uk-tex-faq/faqfont.cfg b/help/uk-tex-faq/faqfont.cfg new file mode 100644 index 0000000000..ae36c3730e --- /dev/null +++ b/help/uk-tex-faq/faqfont.cfg @@ -0,0 +1,4 @@ +% +% null FAQ configuration file: leaves LaTeX default use of cm* fonts +\typeout{FAQ -- Typesetting using Computer Modern fonts} +\@ifundefined{Dings}{\let\Dings\relax}{} diff --git a/help/uk-tex-faq/faqfont.cfg.cmfonts b/help/uk-tex-faq/faqfont.cfg.cmfonts new file mode 100644 index 0000000000..4f5f663bfa --- /dev/null +++ b/help/uk-tex-faq/faqfont.cfg.cmfonts @@ -0,0 +1,6 @@ +% +% null FAQ configuration file: leaves LaTeX default use of cm* fonts +\typeout{FAQ -- Typesetting using Computer Modern fonts} +\@ifundefined{Dings}{\let\Dings\relax}{} +\boldmathavailtrue + diff --git a/help/uk-tex-faq/faqfont.cfg.lmfonts b/help/uk-tex-faq/faqfont.cfg.lmfonts new file mode 100644 index 0000000000..707e6c6cf8 --- /dev/null +++ b/help/uk-tex-faq/faqfont.cfg.lmfonts @@ -0,0 +1,19 @@ +% version to use latin modern, and not luximono or trying to do dinglines + \RequirePackage[T1]{fontenc}% + \RequirePackage{lmodern}% for sans fonts + \RequirePackage{textcomp}% + \AtBeginDocument{% + \let\save@textcurrency\textcurrency + \def\textcurrency{% + {% + \fontfamily{lmr}\selectfont + \save@textcurrency + }% + }% + } + \boldmathavailfalse + \DeclareRobustCommand{\$}{\char`\$}% otherwise tries to load tctt.... + \let\Dings\relax + \DeclareRobustCommand\acro[1]{#1\@{}} + + diff --git a/help/uk-tex-faq/faqfont.cfg.mbvj b/help/uk-tex-faq/faqfont.cfg.mbvj new file mode 100644 index 0000000000..cbf128b80c --- /dev/null +++ b/help/uk-tex-faq/faqfont.cfg.mbvj @@ -0,0 +1,11 @@ +\renewcommand\rmdefault{mbvj} +\renewcommand{\sfdefault}{lmss} +\renewcommand{\ttdefault}{lmtt} +\usepackage{textcomp} +\usepackage[T1]{fontenc} +\DeclareRobustCommand{\$}{\char`\$} +\@ifundefined{Dings}{\RequirePackage{pifont}% + \def\Dings{\nopagebreak{\footnotesize + \dingline{167}}}}{}% +\boldmathavailfalse +\def\acro##1{##1\@{}} diff --git a/help/uk-tex-faq/faqfont.cfg.ugm b/help/uk-tex-faq/faqfont.cfg.ugm new file mode 100644 index 0000000000..04f3133b3c --- /dev/null +++ b/help/uk-tex-faq/faqfont.cfg.ugm @@ -0,0 +1,12 @@ +\usepackage{textcomp} +\usepackage[T1]{fontenc} +\RequirePackage{lmodern} % for sans text (one instance only?) +\renewcommand\rmdefault{ugm} +\renewcommand\bfdefault{b} +\RequirePackage{eulervm} +\RequirePackage[scaled=0.85]{luximono} +\@ifundefined{Dings}{\RequirePackage{pifont}% + \def\Dings{\nopagebreak{\footnotesize + \dingline{167}}}}{}% +\boldmathavailtrue % is it? +\def\acro#1{#1\@{}} diff --git a/help/uk-tex-faq/filectan.tex b/help/uk-tex-faq/filectan.tex new file mode 100644 index 0000000000..326b455cbc --- /dev/null +++ b/help/uk-tex-faq/filectan.tex @@ -0,0 +1,107 @@ +% $Id: filectan.tex,v 1.143 2012/12/07 19:34:33 rf10 Exp rf10 $ +% +% protect ourself against being read twice +\csname readCTANfiles\endcsname +\let\readCTANfiles\endinput +% +% interesting/useful individual files to be found on CTAN +\CTANfile{CTAN-sites}{CTAN.sites} +\CTANfile{CTAN-uploads}{README.uploads}% yes, it really is in the root +\CTANfile{Excalibur}{systems/mac/support/excalibur/Excalibur-4.0.2.sit.hqx}[excalibur] +\CTANfile{expl3-doc}{macros/latex/contrib/l3kernel/expl3.pdf}[l3kernel] +\CTANfile{f-byname}{FILES.byname} +\CTANfile{f-last7}{FILES.last07days} +\CTANfile{interface3-doc}{macros/latex/contrib/l3kernel/interface3.pdf}[l3kernel] +\CTANfile{LitProg-FAQ}{help/comp.programming.literate_FAQ} +\CTANfile{OpenVMSTeX}{systems/OpenVMS/TEX97_CTAN.ZIP} +\CTANfile{T1instguide}{info/Type1fonts/fontinstallationguide/fontinstallationguide.pdf} +\CTANfile{TeX-FAQ}{obsolete/help/TeX,_LaTeX,_etc.:_Frequently_Asked_Questions_with_Answers} +\CTANfile{abstract-bst}{biblio/bibtex/utils/bibtools/abstract.bst} +\CTANfile{backgrnd}{macros/generic/misc/backgrnd.tex}[backgrnd] +\CTANfile{bbl2html}{biblio/bibtex/utils/misc/bbl2html.awk}[bbl2html] +\CTANfile{beginlatex-pdf}{info/beginlatex/beginlatex-3.6.pdf}[beginlatex] +\CTANfile{bibtex-faq}{biblio/bibtex/contrib/doc/btxFAQ.pdf} +\CTANfile{bidstobibtex}{biblio/bibtex/utils/bids/bids.to.bibtex}[bidstobibtex] +\CTANfile{btxmactex}{macros/eplain/tex/btxmac.tex}[eplain] +\CTANfile{catalogue}{help/Catalogue/catalogue.html} +\CTANfile{cat-licences}{help/Catalogue/licenses.html} +\CTANfile{clsguide}{macros/latex/doc/clsguide.pdf}[clsguide] +\CTANfile{compactbib}{macros/latex/contrib/compactbib/compactbib.sty}[compactbib] +%\CTANfile{compan-ctan}{info/companion.ctan} +\CTANfile{context-tmf}{macros/context/current/cont-tmf.zip}[context] +\CTANfile{dvitype}{systems/knuth/dist/texware/dvitype.web}[dvitype] +\CTANfile{edmetrics}{systems/mac/textures/utilities/EdMetrics.sea.hqx}[edmetrics] +\CTANfile{epsf}{macros/generic/epsf/epsf.tex}[epsf] +\CTANfile{figsinlatex}{obsolete/info/figsinltx.ps} +\CTANfile{finplain}{biblio/bibtex/contrib/misc/finplain.bst} +\CTANfile{fix-cm}{macros/latex/unpacked/fix-cm.sty}[fix-cm] +\CTANfile{fntguide.pdf}{macros/latex/doc/fntguide.pdf}[fntguide] +\CTANfile{fontdef}{macros/latex/base/fontdef.dtx} +\CTANfile{fontmath}{macros/latex/unpacked/fontmath.ltx} +\CTANfile{gentle}{info/gentle/gentle.pdf}[gentle] +\CTANfile{gkpmac}{systems/knuth/local/lib/gkpmac.tex}[gkpmac] +\CTANfile{knuth-letter}{systems/knuth/local/lib/letter.tex} +\CTANfile{knuth-tds}{macros/latex/contrib/latex-tds/knuth.tds.zip} +\CTANfile{latex209-base}{obsolete/macros/latex209/distribs/latex209.tar.gz}[latex209] +\CTANfile{latex-classes}{macros/latex/base/classes.dtx} +\CTANfile{latex-source}{macros/latex/base/source2e.tex} +\CTANfile{latexcount}{support/latexcount/latexcount.pl}[latexcount] +\CTANfile{latexcheat}{info/latexcheat/latexcheat/latexsheet.pdf}[latexcheat] +\CTANfile{letterspacing}{macros/generic/misc/letterspacing.tex}[letterspacing] +\CTANfile{ltablex}{macros/latex/contrib/ltablex/ltablex.sty}[ltablex] +\CTANfile{ltxguide}{macros/latex/base/ltxguide.cls} +\CTANfile{ltxtable}{macros/latex/contrib/carlisle/ltxtable.tex}[ltxtable] +\CTANfile{lw35nfss-zip}{macros/latex/required/psnfss/lw35nfss.zip}[lw35nfss] +\CTANfile{macmakeindex}{systems/mac/macmakeindex2.12.sea.hqx} +\CTANfile{mathscript}{info/symbols/math/scriptfonts.pdf} +\CTANfile{mathsurvey.html}{info/Free_Math_Font_Survey/en/survey.html} +\CTANfile{mathsurvey.pdf}{info/Free_Math_Font_Survey/en/survey.pdf} +\CTANfile{memoir-man}{macros/latex/contrib/memoir/memman.pdf} +\CTANfile{metafp-pdf}{info/metafont/metafp/metafp.pdf}[metafp] +\CTANfile{mf-beginners}{info/metafont/beginners/metafont-for-beginners.pdf}[metafont-beginners] +\CTANfile{mf-list}{info/metafont-list} +\CTANfile{miktex-portable}{systems/win32/miktex/setup/miktex-portable.exe} +\CTANfile{miktex-setup}{systems/win32/miktex/setup/setup.exe}[miktex] +\CTANfile{mil}{info/mil/mil.pdf} +\CTANfile{mil-short}{info/Math_into_LaTeX-4/Short_Course.pdf}[math-into-latex-4] +\CTANfile{modes-file}{fonts/modes/modes.mf}[modes] +\CTANfile{mtw}{info/makingtexwork/mtw-1.0.1-html.tar.gz} +\CTANfile{multind}{macros/latex209/contrib/misc/multind.sty}[multind] +\CTANfile{nextpage}{macros/latex/contrib/misc/nextpage.sty}[nextpage] +\CTANfile{noTeX}{biblio/bibtex/utils/misc/noTeX.bst}[notex] +\CTANfile{numline}{obsolete/macros/latex/contrib/numline/numline.sty}[numline] +\CTANfile{patch}{macros/generic/misc/patch.doc}[patch] +\CTANfile{picins-summary}{macros/latex209/contrib/picins/picins.txt} +\CTANfile{pk300}{fonts/cm/pk/pk300.zip} +\CTANfile{pk300w}{fonts/cm/pk/pk300w.zip} +\CTANfile{QED}{macros/generic/proofs/taylor/QED.sty}[qed] +\CTANfile{removefr}{macros/latex/contrib/fragments/removefr.tex}[removefr] +\CTANfile{repeat}{macros/generic/eijkhout/repeat.tex}[repeat] +\CTANfile{resume}{obsolete/macros/latex209/contrib/resume/resume.sty} +\CTANfile{savesym}{macros/latex/contrib/savesym/savesym.sty}[savesym] +\CTANfile{setspace}{macros/latex/contrib/setspace/setspace.sty}[setspace] +\CTANfile{simpl-latex}{info/simplified-latex/simplified-intro.pdf}[simplified-latex] +\CTANfile{sober}{macros/latex209/contrib/misc/sober.sty}[sober] +\CTANfile{tex2bib}{biblio/bibtex/utils/tex2bib/tex2bib}[tex2bib] +\CTANfile{tex2bib-doc}{biblio/bibtex/utils/tex2bib/README} +\CTANfile{tex4ht}{obsolete/support/TeX4ht/tex4ht-all.zip}[tex4ht] +\CTANfile{texlive-unix}{systems/texlive/tlnet/install-tl-unx.tar.gz} +\CTANfile{texlive-windows}{systems/texlive/tlnet/install-tl.zip} +\CTANfile{texnames}{info/biblio/texnames.sty} +\CTANfile{texsis-index}{macros/texsis/index/index.tex} +\CTANfile{topcapt}{macros/latex/contrib/misc/topcapt.sty}[topcapt] +\CTANfile{tracking}{macros/latex/contrib/tracking/tracking.sty}[tracking] +\CTANfile{ttb-pdf}{info/bibtex/tamethebeast/ttb_en.pdf}[tamethebeast] +\CTANfile{type1ec}{fonts/ps-type1/cm-super/type1ec.sty}[type1ec] +\CTANfile{ukhyph}{language/hyphenation/ukhyphen.tex} +\CTANfile{upquote}{macros/latex/contrib/upquote/upquote.sty}[upquote] +\CTANfile{faq-a4}{help/uk-tex-faq/newfaq.pdf} +\CTANfile{faq-letter}{help/uk-tex-faq/letterfaq.pdf} +\CTANfile{versions}{macros/latex/contrib/versions/versions.sty}[versions] +\CTANfile{vf-howto}{info/virtualfontshowto/virtualfontshowto.txt}[vf-howto] +\CTANfile{vf-knuth}{info/knuth/virtual-fonts}[vf-knuth] +\CTANfile{visualFAQ}{info/visualFAQ/visualFAQ.pdf}[visualfaq] +\CTANfile{voss-mathmode}{info/math/voss/mathmode/Mathmode.pdf} +\CTANfile{wujastyk-txh}{digests/texhax/txh/wujastyk.txh} +\CTANfile{xampl-bib}{biblio/bibtex/base/xampl.bib} +\CTANfile{xtexcad}{graphics/xtexcad/xtexcad-2.4.1.tar.gz} diff --git a/help/uk-tex-faq/gather-faqbody.tex b/help/uk-tex-faq/gather-faqbody.tex new file mode 100644 index 0000000000..97f7b0cd69 --- /dev/null +++ b/help/uk-tex-faq/gather-faqbody.tex @@ -0,0 +1,57 @@ +\def\faqfileversion{3.28} \def\faqfiledate{2014-06-10} +% +% The above line defines the file version and date, and must remain +% the first line with any `assignment' in the file, or things will +% blow up in a stupid fashion +% +% get lists of CTAN labels +% +% configuration for the lists, if we're going to need to generate urls +% for the files +\InputIfFileExists{archive.cfg}{}{} +% +% ... directories +\input{dirctan} +% +% ... files +\input{filectan} + +% facilitate auto-processing of this stuff; this line is clunkily +% detected (and ignored) in the build-faqbody script +%\let\faqinput\input +\def\faqinput#1{%\message{*** inputting #1; group level \the\currentgrouplevel} + \input{#1}% + %\message{*** out of #1; group level \the\currentgrouplevel} +} + +% the stuff to print +\faqinput{faq-intro} % introduction +\faqinput{faq-backgrnd} % background +\faqinput{faq-docs} % docs +\faqinput{faq-bits+pieces} % bits and pieces +\faqinput{faq-getit} % getting software +\faqinput{faq-texsys} % TeX systems +\faqinput{faq-dvi} % DVI drivers and previewers +\faqinput{faq-support} % support stuff +\faqinput{faq-litprog} % programming for literates +\faqinput{faq-fmt-conv} % format conversions +\faqinput{faq-install} % installation and so on +\faqinput{faq-fonts} % fonts and what to do +\faqinput{faq-hyp+pdf} % hyper-foodle and pdf +\faqinput{faq-graphics} % graphics +\faqinput{faq-biblio} % bib stuff +\faqinput{faq-adj-types} % adjusting typesetting +\faqinput{faq-lab-ref} % labels and references +\faqinput{faq-how-do-i} % how to do things +\faqinput{faq-symbols} % symbols, their natural history and use +\faqinput{faq-mac-prog} % macro programming +\faqinput{faq-t-g-wr} % things going wrong +\faqinput{faq-wdidt} % why does it do that +%*****************************************quote environments up to here +\faqinput{faq-jot-err} % joy (hem hem) of tex errors +\faqinput{faq-projects} % current projects +% +% This is the last section, and is to remain the last section... +\faqinput{faq-the-end} % wrapping it all up + +% \end{document} is in calling file (e.g., newfaq.tex) diff --git a/help/uk-tex-faq/install-CTAN b/help/uk-tex-faq/install-CTAN new file mode 100644 index 0000000000..162a568631 --- /dev/null +++ b/help/uk-tex-faq/install-CTAN @@ -0,0 +1,48 @@ +# this file is auto-generated; edit mk-makefile, not this + +for f in \ + ChangeLog \ + Makefile \ + README \ + dirctan.tex \ + faq.cls \ + faq.sty \ + filectan.tex \ + gather-faqbody.tex \ + letterfaq.tex \ + archive.cfg \ + markup-syntax \ + newfaq.tex \ + letterfaq.pdf \ + newfaq.pdf \ + faqfont.cfg.cmfonts \ + FAQ-html.tar.gz \ + CHANGES-3.24 \ + faq-adj-types.tex \ + faq-backgrnd.tex \ + faq-biblio.tex \ + faq-bits+pieces.tex \ + faq-docs.tex \ + faq-dvi.tex \ + faq-fmt-conv.tex \ + faq-fonts.tex \ + faq-getit.tex \ + faq-graphics.tex \ + faq-how-do-i.tex \ + faq-hyp+pdf.tex \ + faq-install.tex \ + faq-intro.tex \ + faq-jot-err.tex \ + faq-lab-ref.tex \ + faq-litprog.tex \ + faq-mac-prog.tex \ + faq-projects.tex \ + faq-support.tex \ + faq-symbols.tex \ + faq-t-g-wr.tex \ + faq-texsys.tex \ + faq-the-end.tex \ + faq-wdidt.tex ; do +if [ -f /anfs/ctan/tex-archive/help/uk-tex-faq/$f ]; then + ctan_install -replace -silent -nozip $f help/uk-tex-faq/$f ; else + ctan_install -new -silent -nozip $f help/uk-tex-faq/$f ; fi; done diff --git a/help/uk-tex-faq/letterfaq.pdf b/help/uk-tex-faq/letterfaq.pdf new file mode 100644 index 0000000000..5d9d731974 Binary files /dev/null and b/help/uk-tex-faq/letterfaq.pdf differ diff --git a/help/uk-tex-faq/letterfaq.tex b/help/uk-tex-faq/letterfaq.tex new file mode 100644 index 0000000000..dd0b4427d7 --- /dev/null +++ b/help/uk-tex-faq/letterfaq.tex @@ -0,0 +1,64 @@ +% This is the UK TeX FAQ +% +\documentclass{faq} +% +\setcounter{errorcontextlines}{999} +% +% read the first two definitions of faqbody.tex for the file version +% and date +\afterassignment\endinput\input gather-faqbody +% +\typeout{The UK TeX FAQ, v\faqfileversion, date \faqfiledate} +% +% let's not be too fussy while we're developing... +\hfuzz10pt +\emergencystretch10pt +% +\begin{document} +\title{The \acro{UK} \TeX{} \acro{FAQ}\\ + Your \ifpdf\ref*{lastquestion}\else\protect\ref{lastquestion}\fi + \ Questions Answered\\ + version \faqfileversion, date \faqfiledate} +\author{} +\maketitle + +\centerline{\textsc{Note}} + +\begin{quotation}\small + This document is an updated and extended version of the \acro{FAQ} article + that was published as the December 1994 and 1995, and March 1999 + editions of the \acro{UK}\,\acro{TUG} magazine \BV{} (which weren't + formatted like this). + + The article is also available via the World Wide Web. +\end{quotation} + +\ifsinglecolumn + \tableofcontents +\else + \begin{multicols}{2} + \tableofcontents + \end{multicols} +\fi + +\Dings + +% label list for later processing +\labellist + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% load the CTAN references if necessary +\input{dirctan} +\input{filectan} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifsinglecolumn + \input{gather-faqbody} +\else + \begin{multicols}{2} + \input{gather-faqbody} + \end{multicols} +\fi + +\typeout{*** That makes \thequestion\space questions ***} +\end{document} diff --git a/help/uk-tex-faq/locations.mk b/help/uk-tex-faq/locations.mk new file mode 100644 index 0000000000..49f6146e0c --- /dev/null +++ b/help/uk-tex-faq/locations.mk @@ -0,0 +1,17 @@ +# the locations of files that are targets of the Makefile rules + +# on web server +WEB = /anfs/www/VH-tex/faq-source +WEB_BETA = /anfs/www/VH-tex/faq-source/beta +CGI_BIN = /anfs/www/VH-tex/cgi-bin + +# on archive machine +HOME_DIR = /home/rf/tex/faq +CTAN_ROOT = /anfs/ctan/tex-archive + +# on vlan 100 host +HTMLDIREL = html +HTMLDIR = $(HOME_DIR)/$(HTMLDIREL) + +HTMLDIR_GAMMA = $(HOME_DIR)/html_gamma +GAMMADIR = $(HOME_DIR)/gamma diff --git a/help/uk-tex-faq/markup-syntax b/help/uk-tex-faq/markup-syntax new file mode 100644 index 0000000000..409aff99ca --- /dev/null +++ b/help/uk-tex-faq/markup-syntax @@ -0,0 +1,237 @@ +Writing text for the TeX FAQ -- the requirements + +There are some ground rules for text for the FAQ which need to be +adhered to. Some of the rules relate to the perl program that's used +to create an HTML file of the FAQ from the TeX source, or to the +nature of the macros that Sebastian, Alan and I have written; others +relate to the way in which I try to manage change. Please remember +that we're attempting distributed authoring of a relatively small +document over a tight timescale; while I _can_ in principle work into +the night to put things right after a submission, my employers tend to +prefer me awake during the working day... + +Rules for presentation of text +------------------------------ + +1. Don't line wrap in macro calls. Ignore the fact that this can mean + very long lines. This restriction applies equally to the + []-surrounded optional arguments of macros (e.g., \item). + +2. Always put {} after `name' macros (such as \TeX{}). Do this + - even if you prefer \TeX\ to ensure the name's delimited + - even if the name's immediately followed by punctuation + +3. Don't use \verb or \shortvrb -- find alternatives in other + constructions like \csx, \cmdinvoke, etc. + +Rules for managing the text +--------------------------- + +The first version of the FAQ was developed in a distributed fashion by +the members of the committee of UKTUG. Just now, it's under my (RF's) +sole control; if there were a clamour for other people to contribute, +I guess the thing to do _today_ would be to create a sourceforge +project. (Sourceforge, or anything like it, wasn't even a gleam in +anyone's eye back in 1994 when we were first discussing the FAQ.) + +Source of the text +------------------ + +The text currently resides in + +newfaq.tex The body of the text +filectan.tex Declarations of the locations of individual files on + CTAN archives +dirctan.tex Declarations of the directories on CTAN archives + +faq.sty The main package + +This pre-production version of the text is printed (by default) in +Adobe Times Roman, etc. An alternative font may by used by setting +yourself up with a file faqfont.cfg that contains the commands that +should be used to define what fonts are needed. + +A faqfont.cfg which does nothing, and hence leaves LaTeX with its +default of cm* fonts, is available with the text; if you *want* the +faq printed in Times Roman, you should not transfer the file (or you +should delete it once you *have* transferred it). + +All these files are to be found in the CTAN distribution of the FAQ, +in usergrps/uktug/faq + +Markup commands +--------------- + +The faq is written in LaTeX. Commands to use are: + +\CTANdirectory{tag}{directory-path} +\CTANfile{tag}{file-path} + + These are used in dirctan.tex and filectan.tex, respectively. The + is used in the \CTANref command, and the <*-path> is is what + gets typeset in respect of a \CTANref (and what becomes the anchor + of an html link to retrieve the referenced thing). + +\CTANdirectory*{tag}{directory-path} + + As \CTANdirectory, but appears in HTML as "browse directory" only + +\CTANref{tag} (and the ctanrefs environment) + + make reference to a defined by a \CTANfile or \CTANdirectory + command; will usually appear in a ctanrefs environment at the end of + an answer. Refer to the files with markup such as \Package, + \Class or \ProgName in the body of the question, and then say: + \begin{ctanrefs} + \item[blah.sty]\CTANref{blah} + \end{ctanrefs} + +\Question[label]{question-title} + + Set the title of a question, and define a label for it (in fact, an + unusual sort of subsection command). The [label] is (now) + mandatory, and must be prefixed by "Q-" (as in + \Question[Q-newans]{Submitting new material for the FAQ}). + +\Qref[intro-text]{anchor-text}{label} + + Refer to a question. The is set before the reference, + and is "see question" by default. The is used in + hyper-enabled output, as the anchor for jumping to the labelled + question. The