summaryrefslogtreecommitdiff
path: root/tex/context/modules/mkiv/s-tugboat.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/modules/mkiv/s-tugboat.mkiv')
-rw-r--r--tex/context/modules/mkiv/s-tugboat.mkiv681
1 files changed, 681 insertions, 0 deletions
diff --git a/tex/context/modules/mkiv/s-tugboat.mkiv b/tex/context/modules/mkiv/s-tugboat.mkiv
new file mode 100644
index 000000000..2b3b07d11
--- /dev/null
+++ b/tex/context/modules/mkiv/s-tugboat.mkiv
@@ -0,0 +1,681 @@
+%D \module
+%D [ file=t-tugboat
+%D version=$Id: t-tugboat.tex 111 2013-02-25 17:56:22Z bnb $
+%D title=\CONTEXT\ Style File,
+%D subtitle=\TUGBOAT\ base style,
+%D author=Aditya Mahajan,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+%D This file is derived from \filename{s-tug-02} written by Hans Hagen
+%D and Steve Grathwohl. Karl Berry asked me for some changes in the
+%D \TUGBOAT\ style files. The original file had an option of typesetting
+%D on a grid. That was too clever for me to understand, and hence to
+%D modify. Since \TUGBOAT\ usually does not typeset on a grid, I redid the
+%D style, borrowing parts from \filename{s-tug-02} and redoing some
+%D parts from scratch.
+
+%D \section Variables %<<<1
+%D
+%D We store the information about the article in variables.
+
+\setvariables
+ [tugboat]
+ [type=article,
+ columns=no,
+ grid=yes
+ ]
+
+\setvariables
+ [tugboat]
+ [year=1900,
+ volume=0,
+ number=0,
+ page=900]
+
+\setvariables
+ [tugboat]
+ [title=ConTeXt style for TUGboat,
+ subtitle=,
+ keywords=,
+ author=T. Boat,
+ address=Pragmatically Advanced tugboats \\
+ 314 Pi Ave. \\
+ 8061GH Hasselt NL,
+ email={tugboat@tug.org}]
+
+%D \section Font Setup %<<<1
+%D
+%D \TUGBOAT\ uses slightly different interline space than the default.
+%D So we change the interline space.
+
+\definebodyfontenvironment [8pt] [interlinespace=9.5pt, big=9pt, small=7pt]
+\definebodyfontenvironment [9pt] [interlinespace=11pt, big=10pt, small=8pt]
+\definebodyfontenvironment [10pt] [interlinespace=12pt, big=12pt, small=9pt]
+\definebodyfontenvironment [12pt] [interlinespace=14pt,big=14.4pt,small=10pt]
+\definebodyfontenvironment [14.4pt] [interlinespace=18pt,big=14.4pt,small=12pt]
+\definebodyfontenvironment [9.8pt] % Because 9.8pt is used in typing environments
+
+%D \TUGBOAT\ uses Computer Modern fonts, and \CONTEXT\ uses Latin Modern
+%D by default. So, we just specify the font size.
+
+\setupbodyfont [10pt]
+
+% Italic rather than slanted for emphasis.
+\setupbodyfontenvironment[default][em=italic]
+
+% Break after these chars in urls, not before.
+\sethyphenatedurlafter /
+\sethyphenatedurlafter .
+\sethyphenatedurlafter _
+
+%D \section Layout Setup %<<<1
+%D
+%D The original layout used in the \LATEX\ style for \TUGBOAT\ is a bit
+%D ambiguous. It uses low|-|level \TEX\ syntax, rather than changing the
+%D layout in a human understandable way (for example, by using the
+%D \mono{geometry} package. I have tried to translate it to \CONTEXT\ as
+%D far as I understand.
+
+\setuppapersize[letter][letter]
+
+\setuplayout
+ [topspace=3.8pc,% was 3.5pc
+ header=1pc,
+ headerdistance=1.5pc,
+ height=middle,
+ footerdistance=2pc,
+ footer=1pc,
+ bottomspace=3pc,
+ %
+ backspace=6pc,
+ width=middle,
+ cutspace=6pc,
+ %
+ margin=4pc,
+ margindistance=1pc,
+ ]
+
+\setupcolumns[distance=1.5pc]
+
+\setuppagenumbering
+ [location=,
+ alternative=doublesided]
+
+%D In \TUGBOAT\ different articles are glued together to form the final
+%D journal, so we do not want each article to occupy even number of
+%D pages.
+
+\installpagebreakhandler {last} {}
+
+%D \section Indentation %<<<1
+%D
+%D We use automatic indentation control, that is: no
+%D indentation after titles and skips.
+
+\setupindenting[20pt,yes]
+
+%D We do not want indentation after lists.
+
+\setupenumerations [indentnext=no]
+
+\setupdescriptions [indentnext=no]
+
+%D \section Itemize
+%D
+%D And these. We typeset itemizations ragged right.
+
+\setupitemgroup
+ [itemize]
+ [indentnext=no,
+ align=right]
+
+%D We align them at the paragraph indentation and
+%D pack them by default.
+
+\setupitemgroup
+ [itemize]
+ [each]
+ [margin=1pc,
+ width=1em,
+ distance=0pt]
+
+\setupitemgroup
+ [itemize]
+ [1]
+ [packed]
+
+%D \section Section Headings %<<<1
+%D
+%D We follow the \TUGBOAT\ style for sections. I do not know if
+%D \type{align=right} also disables hyphenation. Lets wait and see on
+%D this. Rest all is straight forward. It took me a while to realize
+%D that in \LATEX\ \type{\@startsection} the absolute value of before
+%D skip (fourth argument) is important and not the sign.
+
+\setuphead
+ [section,subsection, subsubsection,
+ subject, subsubject, subsubsubject]
+ [style=bold,
+ align=right,
+ before={\blank[8pt]},
+ after={\blank[4pt]}]
+
+%D \section Spacing <<<1
+%D
+%D We define a logical skip. This is equal to the \tex{topsep} in latex,
+%D and most environments should have this skip.
+
+\defineblank[tugblank][3pt]
+\setupblank[3pt]
+
+
+\setupitemize[1][before={\blank[tugblank]},after={\blank[tugblank]},
+ inbetween={\blank[tugblank]}]
+
+\setuplines[before={\blank[tugblank]},after={\blank[tugblank]},
+ inbetween={\blank[tugblank]}]
+
+%D \section Typing %<<<1
+%D
+%D \TUGBOAT\ uses a smaller font size for verbatim typesetting.
+
+\setuptyping
+ [option=none,
+ % mkiv arbitrarily scales lm somehow randomly; 10pt gets 9pt back,
+ % we make it a little smaller.
+ bodyfont=9.8pt,
+ before={\blank[nowhite]}, % AM: If this is too small, use \blank[nowhite,tugblank]}
+ after={\blank[back,nowhite,tugblank]}]
+
+%D \section Footnotes %<<<1
+%D
+%D Not entirely a la \TUGBOAT:
+
+\setupfootnotes
+ [bodyfont=9pt,
+ location=columns%,
+% rule={\hrule width 5pc height .4pt depth 0pt\relax \kern \strutdepth}
+]
+
+\setupnotation[footnote]
+ [location=joinedup,
+ width=fit,
+ headstyle=normal,
+ distance=.5em]
+
+%>>>
+%D \section List %<<<
+%D
+%D We define a standard description and enumeration
+%D environment.
+
+\definedescription
+ [description]
+ [location=hanging,
+ width=broad,
+ before={\blank[tugblank]},
+ after={\blank[tugblank]}]
+
+\defineenumeration
+ [enumeration]
+ [location=hanging,
+ width=broad,
+ before={\blank[tugblank]},
+ after={\blank[tugblank]}]
+
+
+% >>>
+%D \section References %<<<
+%D
+%D The bib does not handle urls nicely. So we provide a stop gap solution.
+
+\definereferenceformat[cite][left={[},right={]}]
+\defineitemgroup [bibliography] [levels=1]
+\setupitemgroup [bibliography]
+ [symbol=n,
+ left={[},
+ right={]},
+ width=1.5em,
+ stopper=,
+ itemalign=flushright,
+ inbetween={\blank[small]}]
+
+%D Instead of color, we use weighted gray scales:
+\setupcolors
+ [conversion=always]
+
+%D English it is.
+\mainlanguage
+ [en]
+
+%D We define some logical skips
+
+\defineblank [tugbefore] [big]
+\defineblank [tuginbetween][big]
+\defineblank [tugafter] [tugbefore]
+
+%D Some real macros: <<<
+
+\def\StartAbstract
+ {\dostartbuffer[abstract][StartAbstract][StopAbstract]}
+
+\startsetups tugboat:abstract:setup
+
+ \setuptolerance
+ [horizontal, tolerant]
+
+ \setupnarrower
+ [before={\blank[.5\baselineskip]},
+% after={\blank[10pt plus4pt minus4pt]},
+ after={\blank[10pt]},
+ middle=4.875pc]
+
+\stopsetups
+
+%D Headers and footers are different for normal issues
+%D and proceedings.
+
+\startsetups tugboat:banner:text:article
+
+ {\sl TUGboat},\space
+ Volume \getvariable{tugboat}{volume}\space
+ (\getvariable{tugboat}{year}),\space
+ No.\space\getvariable{tugboat}{number}
+
+\stopsetups
+
+\def\postissno{Proceedings of the \tubyear\ Annual Meeting}
+
+\startsetups tugboat:banner:text:proceedings
+
+ \setups{tugboat:banner:text:article}
+ \thinspace---\thinspace
+ \postissno
+
+\stopsetups
+
+\startsetups tugboat:banner:setup:article
+
+ \setupheadertexts
+ [\setups{tugboat:banner:text:article}]
+ [\pagenumber]
+
+% no footer in regular articles
+% \setupfootertexts
+% [][\getvariable{tugboat}{author}]
+% [\getvariable{tugboat}{title}][]
+
+\stopsetups
+
+\startsetups tugboat:banner:setup:proceedings
+
+ \setupheadertexts
+ [][\getvariable{tugboat}{title}]
+ [\getvariable{tugboat}{author}][]
+
+ \setupfootertexts
+ [\setups{tugboat:banner:text:proceedings}]
+ [\pagenumber]
+
+\stopsetups
+
+%D article is default so,
+
+\setups{tugboat:banner:setup:article}
+
+%D It all starts here:
+
+\def\StartArticle{\setups{tugboat:\getvariable{tugboat}{type}:start}}
+\def\StopArticle {\setups{tugboat:article:stop}}
+
+\startsetups tugboat:grid:setup:settings:yes
+
+ \setupblank
+ [line]
+
+ \defineblank [tugbefore] [halfline]
+ \defineblank [tuginbetween] [halfline]
+
+\stopsetups
+
+\startsetups tugboat:grid:setup:no
+
+% \setupblank
+% [halfline]
+
+% \defineblank [medium] [halfline]
+% \defineblank [tugbefore] [halfline]
+% \defineblank [tuginbetween] [halfline]
+
+\stopsetups
+
+\startsetups tugboat:introduction:article
+
+% \blank[halfline]
+
+ \start
+ \def\\{\unskip\space\&\space\ignorespaces}
+ \hbox{\indent\getvariable{tugboat}{author}}
+ \par
+ \stop
+
+
+\stopsetups
+
+\startsetups tugboat:introduction:proceedings
+
+ \blank[20pt]
+
+ \start
+ \switchtobodyfont[12pt]
+ \def\\{\unskip\space\&\space\ignorespaces}
+ \getvariable{tugboat}{author}
+ \par
+ \stop
+
+ \start
+ \switchtobodyfont[9pt]
+ \def\\{\unskip,\space\ignorespaces}
+ \getvariable{tugboat}{address}
+ \par
+ {\tt\getvariable{tugboat}{email}}
+ \par
+ \stop
+
+
+\stopsetups
+
+\startsetups tugboat:article:start
+
+ \starttext
+
+ \setups{tugboat:columns:\getvariable{tugboat}{columns}}
+ \setups{tugboat:banner:setup:\getvariable{tugboat}{type}}
+
+ \doif{\getvariable{tugboat}{columns}}{yes}{\startcolumns}
+
+
+ % AM: Why set these again?
+ % \setupheadertexts
+ % [\setups{tugboat:banner:text:article}]
+ % [pagenumber]
+
+ % \setuppagenumber
+ % [number=\getvariable{tugboat}{page}]
+ \setcounter[userpage][\getvariable{tugboat}{page}]
+
+ % \setuplayout
+ % [grid=\getvariable{tugboat}{grid}]
+
+ % % instead of \startmode [*grid] ... \stopmode
+ % % instead of \startnotmode[*grid] ... \stopnotmode
+
+ \setups{tugboat:grid:setup:\getvariable{tugboat}{grid}}
+
+ \snaptogrid \vbox \bgroup
+
+ \forgetall
+\hrule height .6pt
+\blank[halfline]
+ \start
+ \let\\=\par
+ {\bf\getvariable{tugboat}{title}}
+ \par
+ \blank[halfline]
+ \hskip20pt\getvariable{tugboat}{author}
+ \stop
+
+% \setups{tugboat:introduction:\getvariable{tugboat}{type}}
+
+ \blank[line]
+
+ \doiftext{\getbuffer[abstract]}
+ {\let\\=\endgraf
+ \setups{tugboat:abstract:setup}
+ \subject{Abstract}
+ \getbuffer[abstract]}
+ \egroup
+\stopsetups
+
+\startsetups tugboat:proceedings:start
+
+ \starttext
+
+ \setups{tugboat:columns:\getvariable{tugboat}{columns}}
+ \setups{tugboat:banner:setup:\getvariable{tugboat}{type}}
+
+ \setupheader
+ [state=empty]
+
+ \setuppagenumber
+ [number=\getvariable{tugboat}{page}]
+
+ \setuplayout
+ [grid=\getvariable{tugboat}{grid}]
+
+ % instead of \startmode [*grid] ... \stopmode
+ % instead of \startnotmode[*grid] ... \stopnotmode
+ \doifmodeelse{*grid}{\setups{tugboat:grid:setup:yes}}{\setups{tugboat:grid:setup:no}}
+% \setups{tugboat:grid:setup:\systemmodevalue{grid}{yes}{no}}
+
+ \snaptogrid \vbox \bgroup
+
+ \forgetall
+
+ \start
+ \switchtobodyfont[14.4pt]
+ \let\\=\par
+ \getvariable{tugboat}{title}
+ \par
+ \stop
+
+ \setups{tugboat:introduction:\getvariable{tugboat}{type}}
+
+ \blank[9pt]% plus3pt minus3pt]
+
+ \let\\=\par
+ \setups{tugboat:abstract:setup}
+ \midaligned{\bf Abstract}
+
+ \startnarrower[middle]
+ \getbuffer[abstract]
+ \stopnarrower
+
+ % \blank[10pt plus4pt minus4pt]
+
+ \egroup
+
+ \doif{\getvariable{tugboat}{columns}}{yes}{\startcolumns}
+
+\stopsetups
+
+\def\signaturewidth{13pc}
+
+\definefontsynonym[LMSY][lmsy10]
+\def\mydiamond{\getglyph{LMSY}{\char5}}
+
+\startsetups tugboat:affiliation:article
+
+ \blank[line]
+
+ \snaptogrid \vbox \bgroup
+
+ \forgetall
+
+ \leftskip=\textwidth \advance\leftskip by -\signaturewidth
+
+ \let\\=\par
+ \leavevmode\llap{\mydiamond\enspace}\getvariable{tugboat}{author}
+ \par
+ \getvariable{tugboat}{address}
+ \par
+ {\tt\getvariable{tugboat}{email}}
+
+ \egroup
+
+\stopsetups
+
+\startsetups tugboat:affiliation:proceedings
+
+ % nothing fancy at the end
+
+\stopsetups
+
+\startsetups tugboat:article:stop
+
+ \setups{tugboat:affiliation:\getvariable{tugboat}{type}}
+
+ \doif{\getvariable{tugboat}{columns}}{yes}{\stopcolumns}
+
+ \page
+
+ \stoptext
+
+\stopsetups
+
+%D Normal word spacing, please.
+
+\setuptolerance
+ [strict]
+
+%D One can use the following setups (in the article) to
+%D collect settings specific to normal and/or multi
+%D column typesetting.
+
+\startsetups tugboat:columns:yes
+
+\stopsetups
+
+\startsetups tugboat:columns:no
+
+\stopsetups
+
+% >>> Logos, abbreviations: TODO: Clean up <<<
+\font\mflogo = logo10
+\def\MF{{\mflogo META\-FONT}}
+
+\def\ALEPH{Aleph}
+\def\API{\acro{API}}
+\def\CCODE{C}
+\def\CD{\acro{CD}}
+\def\CMYK{\acro{CMYK}}
+\def\CONTEXT{C\kern-.0333emon\-\kern-.0667em\TeX\kern-.0333emt}
+\def\CPU{\acro{CPU}}
+\def\DVI{\acro{DVI}}
+\def\DVIPDFMX{dvipdfmx}
+\def\DVIPS{dvips}
+\def\ETEX{$\varepsilon$-\kern-.125em\TeX}
+\def\FTP{\acro{FTP}}
+\def\HTTP{\acro{HTTP}}
+\def\IO{\acro{I/O}}
+\def\ISO{\acro{ISO}}
+\def\KPSEWHICH{kpsewhich}
+\def\KPSE{\acro{KPSE}}
+\newcount\TestCount
+\newbox\TestBox
+\def\La{\TestCount=\the\fam \leavevmode L%
+ \setbox\TestBox=\hbox{$\fam\TestCount\scriptstyle A$}%
+ \kern-.5\wd\TestBox\raise.42ex\box\TestBox}
+\def\LATEX{\La\kern-.15em\TeX}
+\def\LATEXE{\LaTeX{}\kern.05em2$_{\textstyle\varepsilon}$}
+\def\LINUX{Linux}
+\def\LPEG{Lpeg}
+\def\LUAJIT{Lua\acro{JIT}}
+\def\LUATEX{Lua\-\TeX}
+\def\LUATOOLS{lua\-tools}
+\def\LUA{Lua}
+\def\MATHML{Math\acro{ML}}
+\def\METAFUN{Metafun}
+\def\METAPOST{MetaPost}
+\def\METATEX{Meta\TeX{}}
+\def\MKII{Mk\acro{II}}
+\def\MKIV{Mk\acro{IV}}
+\def\MPLIB{\acro{MP}lib}
+\def\MPTOPDF{mp\-to\-pdf}
+\def\MSWINDOWS{Windows}
+\def\MTXTOOLS{mtx\-tools}
+\def\NFSS{\acro{NFSS}}
+\def\OPENMATH{Open\-Math}
+\def\OPENTYPE{Open\-Type}
+\def\PASCAL{Pascal}
+\def\PDFTEX{pdf\/\-\TeX}
+\def\PDF{\acro{PDF}}
+\def\POSIX{\acro{POSIX}}
+\def\PRAGMA{Pragma \acro{ADE}}
+\def\POSTSCRIPT{Post\-Script}
+\def\RGB{\acro{RGB}}
+\def\RUBY{Ruby}
+\def\SCITE{Sci\acro{TE}}
+\def\TDS{\acro{TDS}}
+\def\TEXBOOK{{\sl The \TeX book}}
+\def\TEXEXEC{\TeX exec}
+\def\TEX{\TeX}
+\def\TFM{\acro{TFM}}
+\def\TRUETYPE{True\-Type}
+\def\TYPEONE{Type~1}
+\def\UTF{\acro{UTF}}
+\def\WEBC{Web2C}
+\def\XETEX{X\lower.5ex\hbox{\kern-.15em\mirror{E}}\kern-.1667em\TeX}
+\def\XML{\acro{XML}}
+\def\XPATH{\acro{XP}ath}
+\def\XSLT{\acro{XSLT}}
+\def\XSLTPROC{\acro{XSLTPROC}}
+\def\ZIP{zip}
+
+\def\Dash{\unskip\thinspace---\thinspace\ignorespaces}
+\def\slash{/\penalty0 \hskip0pt \relax}
+
+\definefont[AcroFont][Serif sa .91]
+\def\acro#1{{\AcroFont #1}}
+
+\lefthyphenmin=2 \righthyphenmin=3 % disallow x- or -xx breaks
+
+\hyphenation{Post-Script data-base data-bases}
+
+% hack to read tugboat.dates settings.
+\def\vol#1, #2.{\def\tubvol{#1}\def\tubnum{#2}}
+\def\issyear#1.{\def\tubyear{#1}}
+\newcount\issueseqno
+
+% >>>
+%D Good bye. <<<
+
+\doifnotmode{demo}{\endinput}
+
+\showgrid
+
+\starttext
+
+\StartArticle
+
+\StartAbstract
+ \input bryson
+\StopAbstract
+
+\dorecurse{30}{\input ward \endgraf} \page
+
+\startitemize
+\item \input ward
+\item \input ward
+\stopitemize
+
+\StopArticle
+
+\setvariables[tugboat][columns=yes]
+
+\StartArticle
+
+\StartAbstract
+ \input bryson
+\StopAbstract
+
+\dorecurse{30}{\input ward \endgraf} \page
+
+\StopArticle
+
+\stoptext
+
+% >>>
+
+% vim: foldmethod=marker foldmarker=<<<,>>>