summaryrefslogtreecommitdiff
path: root/systems/doc/pdftex/manual/pdftexmanual.cls
diff options
context:
space:
mode:
Diffstat (limited to 'systems/doc/pdftex/manual/pdftexmanual.cls')
-rw-r--r--systems/doc/pdftex/manual/pdftexmanual.cls230
1 files changed, 230 insertions, 0 deletions
diff --git a/systems/doc/pdftex/manual/pdftexmanual.cls b/systems/doc/pdftex/manual/pdftexmanual.cls
new file mode 100644
index 0000000000..bc67671234
--- /dev/null
+++ b/systems/doc/pdftex/manual/pdftexmanual.cls
@@ -0,0 +1,230 @@
+% $Id: pdftexmanual.cls 914 2024-01-07 21:48:39Z karl $
+% LaTeX class file for the pdfTeX manual.
+% Originally written by Karl Berry, 2023. Public domain.
+
+\LoadClass[11pt]{report} % use {report} so we can have \appendix
+\usepackage[T1]{fontenc} % for \textbackslash
+\usepackage{fullpage} % fewer pages is better
+\usepackage{rerunfilecheck} % so the Makefile can easily rerun
+\usepackage{mflogo,graphicx} % basics
+\usepackage{verbatim} % for \verbatiminput
+
+\divide\abovecaptionskip by 2 % too spacey by default
+\setcounter{topnumber}{3} % .ini figures
+
+\pdfminorversion=3 % maximally compatible
+\pdfobjcompresslevel=0 % since minor version=3, can't compress objects
+\hbadness=10000 % don't care
+\overfullrule=1mm % but want to see overfull
+
+% This is the default hsize for letter; not ideal, but works well enough
+% for a4. Too irritating to rewrite to avoid overfull hboxes with two
+% different widths.
+\AtBeginDocument{\hsize=469.75502pt }
+
+% If |microtype| is loaded, deactivate it in verbatim blocks.
+% It often manipulates a leading |\| in CM rather too much,
+% thus messing with the visible fixed-width alignment.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{microtype}
+ {\g@addto@macro\@verbatim{\microtypesetup{activate=false}}}{}
+}
+
+% We want a verbatim command that will accept all special characters (so
+% \texttt doesn't work) and work in arguments (so \verb doesn't work).
+%
+% - can't use obeyspaces, it generates extra space.
+%\PassOptionsToPackage{obeyspaces}{url}
+%
+% - can't use \HyOrg@url (\url saved by hyperref), it doesn't obey spaces.
+% But we have to live with it, switching all args with spaces to \verb.
+\usepackage[allowmove]{url} % we only do simple stuff in \caption, let it work
+\def\type{\HyOrg@url}
+% / in our document is PostScript, not a url, so we want to allow a
+% break before, not after. But then we get an infloop, so disallow breaks.
+%\g@addto@macro\UrlSpecials{\do\/{\slash}}
+\g@addto@macro\UrlNoBreaks{\do\/}
+%
+% - can't use \nolinkurl from hyperref, doesn't obey spaces, breaks after /,
+% sometimes expands, e.g., \pdfcreationdate.
+% https://github.com/latex3/hyperref/issues/291
+%\def\type{\nolinkurl}
+%
+% - can't use \lstinline, doesn't work in tables.
+%\usepackage{listings}\def\type{\lstinline}
+%
+% - expl3 attempt:
+% \NewDocumentCommand\type{v}{\texttt{#1}}
+% but gets error, so I guess I don't understand:
+% LaTeX cmd Error: Verbatim-like command '\type' illegal in arg
+% \pdftexprimitive{\Syntax{\Tex{\pdfoutput}
+%
+% It seems the general problem remains unsolved in LaTeX.
+
+\usepackage[pdfa,hidelinks,linktoc=all]{hyperref}
+
+% Assorted convenience macros.
+%
+% we can use \textbackslash since we load [T1].
+\DeclareRobustCommand{\cs}[1]{\mbox{\tt \textbackslash #1}}%
+\DeclareRobustCommand{\titleref}[1]{{\slshape\frenchspacing#1\/}}
+
+\def\eTeX{{$\varepsilon$}-\kern-.125em\TeX}
+\def\filename{\type}
+\def\hyph{-\penalty0 \hskip0pt \relax} % allow hyphenation after a -
+\def\varname{\textit}
+%
+\def\ConTeXt{C\kern-.0333emon\-\kern-.0667em\TeX\kern-.0333emt}
+\def\MDFIVE{MD5} % not oldstyle 5, capital MD
+\def\PDFReference{PDF reference manual}
+\def\THANH{H\`an Th\^e\llap{\raise 0.5ex\hbox{\'{}}} Th\`anh}
+%S
+\def\eg{e.g.,}\def\Eg{E.g.,}
+\def\ie{i.e.,}\def\Ie{I.e.,}
+%
+% the default \verbatiminput evidently ends with a blank line.
+% Also, it does not give an error when the input file does not exist,
+% only a terminal message. Let's complain.
+\def\myverbatiminput#1{\begingroup
+ \small
+ \openin0 = #1
+ \ifeof0 \errmessage{No verbatiminput file #1}\else\closein0 \fi
+ \verbatiminput{#1}%
+ \vspace{-\baselineskip}%
+\endgroup}
+%
+\newenvironment{smalltable}{\medskip\small}{\medskip}
+
+% Our self-identified version information.
+%
+\def\svnscan $#1 #2 #3 #4-#5-#6 #7${
+ \def\rcsrevision{#3}
+ \def\rcsyear{#4}
+ \def\rcsmonth{#5}
+ \def\rcsday{{\count0=#6\relax\the\count0}}
+ \def\rcsmonthname{\ifcase\rcsmonth ERROR\or
+ January\or February\or March\or April\or May\or June\or July\or
+ August\or September\or October\or November\or December\else ERROR\fi}
+}
+\def\versplit#1#2#3{#1.#2#3}% 140 -> 1.40
+\def\currentpdftex{\expandafter\versplit\the\pdftexversion.\pdftexrevision}
+
+% Syntax descriptions.
+%
+% used in main source text to mark a primitive.
+\def\pdftexprimitive{\par\nobreak\vspace{-4pt}\noindent\strut}
+
+\def\aftersyntax{\nobreak\smallskip} % changed for appendix
+\def\Syntax #1{{#1\strut}\par\aftersyntax}
+\def\Next {\nobreak\newline\hbox to 4em{}\nobreak} % multiline syntax
+\def\Sugar {}
+\def\Lbrace {\Sugar{\allowbreak\texttt{\textbraceleft}}}
+\def\Literal #1{\Sugar{\type{#1}}}
+\def\Means {\Sugar{\ensuremath{\rightarrow}\;\;}}
+\def\Modelist #1{\Sugar{\;\ensuremath{(\hbox{#1})}}}
+\def\Optional #1{\Sugar{\ensuremath{\,[\,\hbox{#1}\,]\,}}}
+\def\Or {\Sugar{\,\ensuremath{\vert}\,\nobreak\ }}
+\def\Something#1{\Sugar{\ensuremath{\langle}{#1}\ensuremath{\rangle}}}
+\def\Rbrace {\Sugar{\texttt{\textbraceright}}}
+%\def\Tex #1{\Sugar{\type{#1}}}
+\def\Whatever #1{\Sugar{\kern.75em\ensuremath{(\hbox{#1})}}} % parens
+ % more space before, more separation on syntax lines.
+% introduced:
+\def\introduced#1{The primitive was introduced in \PDFTEX\ #1.}
+\def\introducedplural#1{The primitives were introduced in \PDFTEX\ #1.}
+
+% Urls.
+%
+% assume all defined url control sequences start with "url":
+\def\useurl#1{\expandafter\csname url#1\endcsname}
+
+\urldef{\urlctansystems} \url{https://ctan.org/tex-archive/systems}
+\urldef{\urletexctan} \url{https://ctan.org/pkg/etex}
+\urldef{\urljbigenc} \url{https://github.com/agl/jbig2enc}
+\urldef{\urlkpathsea} \url{https://tug.org/kpathsea}
+\urldef{\urlluatex} \url{https://ctan.org/pkg/luatex}
+\urldef{\urlpdfreference} \url{https://pdfa.org/resource/pdf-specification-index/}
+\urldef{\urlptexctan} \url{https://ctan.org/pkg/pdftex}
+\urldef{\urlptexdevel} \url{svn://tug.org/pdftex/branches/stable}
+\urldef{\urlptexbugs} \url{https://lists.tug.org/pdftex}
+\urldef{\urlptexorg} \url{https://www.pdftex.org}
+\urldef{\urltcxfiles} \url{https://tug.org/texinfohtml/web2c.html#TCX-files}
+\urldef{\urltexlive} \url{https://tug.org/texlive}
+\urldef{\urlthanhtruetypetub} \url{https://tug.org/TUGboat/tb30-1/tb94thanh.pdf}
+\urldef{\urltughelp} \url{https://tug.org/begin}
+\urldef{\urlwebc} \url{https://tug.org/web2c}
+\urldef{\urlxetex} \url{https://tug.org/xetex}
+\urldef{\urlwindows} \url{http://ctan.org/tex-archive/systems/windows}
+
+% Abbreviations.
+\newtoks\abbrevtoks
+\def\abbrevlist{{%
+ \par\bigskip
+ \small
+ \advance\baselineskip by 2pt plus1pt minus1pt
+ \halign{&##\qquad\hfil\cr\the\abbrevtoks}%
+}}
+\def\abbrevitem#1#2{#1&#2\cr}
+\def\abbreviation[#1] #2 #3{%
+ \expandafter\def\csname#1\endcsname{#2}%
+ \abbrevtoks = \expandafter{\the\abbrevtoks \abbrevitem{#2}{#3}}
+}
+
+\abbreviation [AFM] {AFM} {Adobe Font Metrics}
+\abbreviation [ASCII] {ASCII} {American Standard Code for Information Interchange}
+\abbreviation [CONTEXT] {\ConTeXt} {general purpose macro package}
+\abbreviation [CTAN] {CTAN} {global \TEX\ archive server}
+\abbreviation [DVI] {DVI} {native \TEX\ DeVice Independent file format}
+\abbreviation [ENCTEX] {enc\TeX} {enc\TeX\ extension to \TEX}
+\abbreviation [EPSTOPDF] {epstopdf} {\EPS\ to \PDF\ conversion tool}
+\abbreviation [EPS] {EPS} {Encapsulated PostScript}
+\abbreviation [EPLAIN] {Eplain} {Expanded plain \TEX\ format}
+\abbreviation [ETEX] {\eTeX} {a stable extension to \TEX}
+\abbreviation [EXIF] {EXIF} {Exchangeable Image File format (JPEG file variant)}
+\abbreviation [GHOSTSCRIPT] {Ghostscript} {\POSTSCRIPT\ and \PDF\ language interpreter}
+\abbreviation [GNU] {GNU} {GNU's Not Unix}
+\abbreviation [HZ] {HZ} {Hermann Zapf's paragraph-breaking optimizations}
+\abbreviation [ISO] {ISO} {International Organization for Standardization}
+\abbreviation [JBIGTWO] {JBIG2} {Joint Bi-level Image Experts Group image format, version 2}
+\abbreviation [JBIG] {JBIG} {Joint Bi-level Image Experts Group image format}
+\abbreviation [JFIF] {JFIF} {JPEG File Interchange Format}
+\abbreviation [JPEG] {JPEG} {Joint Photographic Experts Group}
+\abbreviation [LATEX] {\LaTeX} {general-purpose macro package}
+\abbreviation [LMTX] {LMTX} {the LuaMeta\TeX\ engine}
+\abbreviation [LUATEX] {Lua\TeX} {the Lua\TeX\ engine}
+\abbreviation [MACTEX] {Mac\-\TeX} {\TEXLIVE\ on the Mac}
+\abbreviation [METAFONT] {\MF} {graphic programming environment, bitmap output}
+\abbreviation [METAPOST] {MetaPost} {graphic programming environment, vector output}
+\abbreviation [MIKTEX] {MiK\TeX} {\TeX\ distribution for \WIN}
+\abbreviation [MLTEX] {ml\TeX} {ML\TeX\ extension to \TEX}
+\abbreviation [MPTOPDF] {mptopdf} {\METAPOST\ to \PDF\ conversion tool}
+\abbreviation [PDFA] {PDF/\kern-.05em A} {PDF A/* standards}
+\abbreviation [PDFETEX] {pdfe\TeX} {\ETEX\ extension supporting \PDF\ output}
+\abbreviation [PDFLATEX] {pdf\LaTeX} {\LATEX\ format using \PDFTEX, producing \PDF}
+\abbreviation [PDFTEX] {pdf\TeX} {\TEX\ extension supporting \PDF\ output}
+\abbreviation [PDF] {PDF} {Portable Document Format}
+\abbreviation [PERL] {Perl} {Perl programming environment}
+\abbreviation [PFA] {PFA} {Adobe PostScript Font format, ASCII}
+\abbreviation [PFB] {PFB} {Adobe PostScript Font format, binary}
+\abbreviation [PK] {PK} {Packed bitmap font}
+\abbreviation [PNG] {PNG} {Portable Network Graphics}
+\abbreviation [POSIX] {POSIX} {Portable Operating System Interface}
+\abbreviation [POSTSCRIPT] {PostScript} {general graphics language}
+\abbreviation [PSTOPDF] {PStoPDF} {PostScript to \PDF\ converter (on top of \GHOSTSCRIPT)}
+\abbreviation [RGB] {RGB} {red--green--blue color specification}
+\abbreviation [TCX] {TCX} {\TEX\ Character Translation}
+\abbreviation [TDS] {TDS} {\TEX\ Directory Standard}
+\abbreviation [TEXINFO] {Texinfo} {\GNU\ documentation format}
+\abbreviation [TEXLIVE] {\TeX\ Live} {\TeX\ Live distribution (cross-platform)}
+\abbreviation [TEX] {\TeX} {typographic language and program}
+\abbreviation [TFM] {TFM} {\TEX\ Font Metrics}
+\abbreviation [TIF] {TIFF} {Tagged Interchange File format}
+\abbreviation [TUG] {TUG} {\TEX\ Users Group, \texttt{tug.org}}
+\abbreviation [UNIX] {Unix} {Unix platform}
+\abbreviation [URL] {url} {Uniform Resource Locator}
+\abbreviation [UTFEIGHT] {\mbox{UTF-8}} {Uniform Resource Locator}
+\abbreviation [WEBC] {Web2C} {Implementation framework for \TEX\ and friends}
+\abbreviation [WEB] {WEB} {literate programming environment}
+\abbreviation [WIN] {Windows} {Microsoft Windows platform}
+\abbreviation [XETEX] {Xe\TeX} {the Xe\TeX\ engine}