summaryrefslogtreecommitdiff
path: root/usergrps/uktug/baskervi/6_3/faqa.sty
diff options
context:
space:
mode:
Diffstat (limited to 'usergrps/uktug/baskervi/6_3/faqa.sty')
-rw-r--r--usergrps/uktug/baskervi/6_3/faqa.sty392
1 files changed, 392 insertions, 0 deletions
diff --git a/usergrps/uktug/baskervi/6_3/faqa.sty b/usergrps/uktug/baskervi/6_3/faqa.sty
new file mode 100644
index 0000000000..260925a4ad
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_3/faqa.sty
@@ -0,0 +1,392 @@
+% This is a LaTeX2e package for the UKTUG FAQ document.
+%
+\ProvidesPackage{faqa}[1996/07/22 UK TUG package for TeX FAQ]
+%
+% uses production LaTeX 2e commands
+\NeedsTeXFormat{LaTeX2e}[1994/06/01]% at least!
+%
+% version 0.1 RF 1994/09/26
+% 0.2 RF 1994/10/09-15
+% 0.3 RF 1994/10/16 (after suggestions from Alan Jeffrey)
+% 0.4 RF 1994/10/22
+%
+\def\fileversion{1.0b}
+\def\filedate{1996/01/19}
+%
+\typeout{UK TUG FAQ macros v\fileversion, \filedate}
+%
+% what fonts are we going to typeset in?
+% well not times for sure
+\InputIfFileExists{faqfont.cfg}%
+ {\typeout{FAQ -- loading font configuration file faqfont.cfg}}
+ {\RequirePackage{times}%
+ % stretchability recommendations from psnfss2e.tex
+ \tolerance800
+ \emergencystretch2em
+ \doublehyphendemerits5000
+ \hfuzz0pt
+ \leftskip0pt minus 1pt
+ \rightskip0pt minus 1pt
+ % use cmtt for typewriter rather than Cou-beastly-rier
+ \renewcommand{\ttdefault}{cmtt}%
+ \@ifundefined{Dings}{\RequirePackage{pifont}%
+ \def\Dings{\nopagebreak{\footnotesize
+ \dingline{167}}}}%
+ {}}
+%
+% general support
+%\RequirePackage{calc}
+%
+% code for handling logo font
+\RequirePackage{mflogo}
+%
+% get texnames package (as amended)
+\RequirePackage{texnames}
+%
+% ifthenelse for the undefined references
+\RequirePackage{ifthen}
+%
+% we define html only stuff using Eijkhout's package
+%\RequirePackage{comment}
+%\excludecomment{htmlversion}
+%
+% 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\TeXXeT{\TeX-{}-X\lower.5ex\hbox{E}\kern-.1667emT\@}
+\providecommand\MLTeX{ML-\TeX}
+\def\careof{\leavevmode\hbox{\raise.75ex\hbox{c}\kern-.15em
+ /\kern-.125em\smash{\lower.3ex\hbox{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}
+%<!latex2e>\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.
+%
+% \begin{macrocode}
+\DeclareRobustCommand\acro[1]{\textSMC{#1}\@}
+%</latex2e>
+%<!latex>\def\acro#1{{\SMC #1}\spacefactor\@m}
+%<!latex2e>\def\acro#1{{\SMC #1}\@}
+% \end{macrocode}
+%
+%\TUGboat (effectively) takes arguments {<empty>}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\Eplain{Eplain}
+%
+% Other odds and ends (appear differently in TeX and http or plain
+% text
+\DeclareRobustCommand\WYSIWYG{\textsc{wysiwyg}}
+%
+% Command for doing `square one' :-}
+\newcommand\sqfbox[1]{\framebox{\makebox[\totalheight]{#1\/}}}
+%
+% 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}}
+%
+% 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:
+%
+\makeatother % because @ is a delimiter here, it had better have the
+ % same catcode as it will when the macro's invoked
+\def\Email|#1@#2|{\FAQverb\-{#1@}\penalty10\FAQverb\.{#2}} % email
+\def\Emaildot|#1@#2|{\FAQverb\.{#1@}\penalty10\FAQverb\.{#2}}
+\makeatletter
+\def\FTP|#1|{\FAQverb\.{#1}} % FTP site
+\def\File|#1|{\FAQverb\/{#1}} % file name
+\def\CTAN{\FAQverb\/} % CTAN path
+\def\Newsgroup|#1|{\FAQverb\.{#1}} % newsgroup
+\def\URL|#1://#2/#3|{\FAQverb\.{#1://#2/}\penalty10\FAQverb\/{#3}}
+\def\path|#1|{\FAQverb\/{#1}} % generic path
+%
+% same game, slightly different style
+\def\ProgName|#1|{% % program name
+ {%
+ \def\FAQverbFamily{\rmfamily\mdseries\itshape}%
+ \FAQverb\_{#1}\/%
+ }%
+ }
+\let\Package\ProgName % pro tem
+%
+% ISBN references
+\def\ISBN#1{\mbox{\acro{ISBN}}~#1}
+%
+% have we read the CTAN references?
+\newif\ifnotreadCTAN \notreadCTANtrue
+%
+% Alan's code for CTAN references:
+%
+% define a location for a package on CTAN
+% #1 is the package name
+% #2 is the CTAN path to the thing
+% a package in a directory
+\newcommand{\CTANdirectory}[2]{\@ifundefined{ctan-#1}{%
+ \expandafter\gdef\csname ctan-#1\endcsname{#2}%
+}{%
+ \PackageWarning{faq}{Repeated definition of label: #1}%
+}}
+%
+% a package in a single file (the same appearance, but the WWW version is
+% different).
+\let\CTANfile\CTANdirectory
+%
+% Make reference to a CTAN package
+%
+% counter for the undefined references
+\newcounter{CTAN@unrefs}
+%
+% the command itself
+\DeclareRobustCommand{\CTANref}[1]{\@ifundefined{ctan-#1}{%
+ \PackageWarning{CTAN}{Undefined reference: #1}%
+ \stepcounter{CTAN@unrefs}%
+}{%
+ \edef\@tempa{\noexpand\CTAN{\csname ctan-#1\endcsname}}\@tempa
+}}
+%
+% hook for diagnosing undefined references at the end
+\AtEndDocument{\ifthenelse{\theCTAN@unrefs > 0}{%
+ \PackageWarning{CTAN}{There were \arabic{CTAN@unrefs} undefined
+ 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}}%
+ {\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}}
+%
+% \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}
+%
+% 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
+%
+% or it's the argument to \nothtml
+\newcommand\nothtml[1]{#1}
+%
+% A Donald Arseneau marvel:
+% \@removefromreset{FOO}{BAR} : removes counter FOO from the list of
+% counters \cl@BAR to be reset when
+% counter BAR is stepped.
+% The opposite of \@addtoreset
+\def\@removefromreset#1#2{\let\@tempb\@elt
+ \def\@tempa#1{@&#1}\expandafter\let\csname @*#1*\endcsname\@tempa
+ \def\@elt##1{\expandafter\ifx\csname @*##1*\endcsname\@tempa\else
+ \noexpand\@elt{##1}\fi}%
+ \expandafter\edef\csname cl@#2\endcsname{\csname cl@#2\endcsname}%
+ \let\@elt\@tempb
+ \expandafter\let\csname @*#1*\endcsname\@undefined}
+%
+% the question structure
+% \Question[label name]{question asked}
+% if [label name] present, the named label is assigned with \Qlabel
+\newcommand\Question[2][]{\subsection{\protect\raggedright#2}%
+ \def\reserved@a{#1}%
+ \ifx\reserved@a\@empty\else\Qlabel{#1}\fi}
+%
+% now let's hack around a bit in order to make things slightly
+% prettier
+%
+% first: numbering of subsections -- doesn't include section nos, not
+% reset for each section
+\renewcommand{\thesubsection}{\arabic{subsection}}
+\@removefromreset{subsection}{section}
+%
+% second: sections `numbered' alphabetically
+\renewcommand{\thesection}{\Alph{section}}
+%
+% third: subquestions (added in between issues ...) are
+% subsubsections, and they're lettered as appendages to the questions
+% (and reset on them)
+\renewcommand\thesubsubsection{\thesubsection\alph{subsubsection}}
+\newcommand\subQ[2]{\def\reserved@a{#1}\def\reserved@b{\endhtmlignore}
+ \ifx\reserved@a\reserved@b
+ \def\reserved@a{#2}\def\reserved@b{\Question}
+ \ifx\reserved@a\reserved@b
+ \else\subQwarning\fi
+ \else\subQwarning\fi
+ \SubQuestion}
+\newcommand\SubQuestion[2][]{\subsubsection{\protect\raggedright#2}%
+ \def\reserved@a{#1}%
+ \ifx\reserved@a\@empty\else\Qlabel{#1}\fi}
+\newcommand\subQwarning{\PackageWarning{faq}{\string\subQ must be
+ followed by \string\endhtmlignore,\MessageBreak
+ and then by \string\Question}}
+%
+% tedious farting around to get \subsubsection looking almost like
+% \subsection (I have my doubts about this, y'know ;-):
+\renewcommand\subsubsection{\@startsection{subsubsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries}}
+\renewcommand*\l@subsubsection{\@dottedtocline{2}{1.5em}{2.3em}}
+% The discerning will detect my awful cheek, above, of sticking a
+% subsubsection head onto a subsection body...
+%
+% \Qlabel and \Qref: define and refer to labels
+\let\Qlabel\label
+\newcommand\Qref[3][see question]{#1~\ref{#3}}
+%
+% from doc package, then hacked about by yours truly
+\DeclareRobustCommand\csx[1]{\def\@tempa{#1}{\FAQverbFamily\char`\\%
+ \expandafter\@faq@strip\meaning\@tempa\@faq@strip}}
+\def\cs|#1|{\csx{#1}}
+%
+% 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