% \iffalse ********************************************* METACOMMENT % % TeX this file with LaTeX2e ! % % The following files will be writen out: % % ==> buxsym.dvi [ READ THIS FIRST ! ] % % --> buxsym.drv ( Documentation ) % --> buxsym.sty ( LaTeX2e package ) % --> bmex10.mf, bmex9.mf ( METAFONT driver files ) % --> bmathex.mf, bmbigop.mf ( METAFONT files ) % % %% Copyright : Kai-Uwe Bux %% --------- Norderneystraße 26 %% D-26419 Schortens/Heidmühle (Germany) %% %% ***************************************************************** % >>>>>>>>> !! Proliferation of UNCHANGED versions of !! <<<<<<<<< % !! this file is permitted !! % % >>>>>>>>> !! Don't change this file without changing !! <<<<<<<<< % !! it's name !! % ****************************************************************** % % \begin{macrocode} %<*driver|package|fd> \def\FileVersion{0.10 $\beta$-Test} \def\FileDate{1999/08/25} \def\FileDescription{supplementary math extension font, package contains METAFONT sources!} % % \end{macrocode} % % ********************************************** END METACOMMENT \fi % % \CheckSum{22} % \StopEventually{} % % \iffalse ********************************************* METACOMMENT % \begin{macrocode} %<*driver> \let\ThisVersion\FileVersion \let\ThisDate\FileDate % % \end{macrocode} % ********************************************** END METACOMMENT \fi % % \iffalse ******************************************** METATCOMMENT % % \begin{macrocode} %<*installation> \ifx\undefined\batchfile\begingroup\newtoks\a\newtoks\b\newtoks\c\fi \def\batchfile{buxsym.dtx} \makeatletter \let\@@end=\relax \a={} \def\File#1#2{\a=\expandafter{\the\a\file{#1}{\from{buxsym.dtx}{#2}}}} \File{buxsym.sty}{package} \File{buxsym.drv}{driver} \File{ubmexs.fd}{fd} \File{bmex9.mf}{bmexnine} \File{bmex10.mf}{bmexten} \File{bmathex.mf}{bmathex} \File{bmbigop.mf}{bmbigop} \def\A{\expandafter\expandafter\expandafter\generate\expandafter{\the\a}} \def\GenerateAll{\A\let\GenerateAll\relax} \def\StopInput{\endinput\let\StopInput\relax} \input docstrip.tex \GenerateAll \StopInput \endgroup % \end{macrocode} % \begin{macrocode} \documentclass[12pt]{article} \newcommand{\MF}{\textsf{METAFONT}} \newcommand{\pkg}[1]{\textsf{#1}} \newcommand{\cls}[1]{\textsf{#1}} \newcommand{\file}[1]{\texttt{#1}} \newcommand{\env}[1]{\texttt{#1}} \newcommand{\opt}[1]{\textsf{#1}} \newcommand{\Fam}[1]{\textsf{#1}} \newcommand{\sect}[1]{{#1}} \newcommand{\sty}[1]{\emph{#1}} \newcommand{\ARG}[1]{\emph{#1}} \newcommand{\GobbleOne}[1]{} \newcommand{\Section}{\newpage\section} \newcommand{\finalnopagebreak}{\nopagebreak} \newcommand{\finalpagebreak}{\pagebreak} \title{The \pkg{buxsym} package\\ --- installation guide ---} \author{Kai-Uwe Bux} \date{\begin{tabular}{ll} Datum: & \ThisDate\\ Version: & \ThisVersion \end{tabular}} \begin{document} \maketitle\thispagestyle{empty} Having processed the file \file{buxsym.dtx} with \LaTeX\ you will find the following files additionally: \begin{enumerate} \item \file{buxsym.sty} \item \file{buxsym.drv} \item \file{buxsym.fd} \item \file{bmex9.mf}, \file{bmex10.mf} \item \file{bmathex.mf} and \file{bmbigop.mf} \end{enumerate} The package \file{buxsym.sty} and the font description file \file{buxsym.fd} are to be put into the \file{texinputs} path where \LaTeX\ can find them. The \file{mf}-files belong in the \file{mfinputs} path. The \MF\ driver files \file{bmex9.mf} and \file{bmex10.mf} have to be processed before the documentation \file{buxsym.drv} can be processed. The reason is that \TeX\ will need the \file{tfm}-files to use these fonts. \end{document} % % \end{macrocode} % % ********************************************** END METACOMMENT \fi % % \iffalse ********************************************* METACOMMENT % % \begin{macrocode} %<*driver> \documentclass[12pt]{ltxdoc} \usepackage{buxsym} \newcommand{\MF}{\textsf{METAFONT}} \newcommand{\pkg}[1]{\textsf{#1}} \newcommand{\cls}[1]{\textsf{#1}} \newcommand{\file}[1]{\texttt{#1}} \newcommand{\env}[1]{\texttt{#1}} \newcommand{\opt}[1]{\textsf{#1}} \newcommand{\Fam}[1]{\textsf{#1}} \newcommand{\sect}[1]{{#1}} \newcommand{\sty}[1]{\emph{#1}} \newcommand{\ARG}[1]{\emph{#1}} \newcommand{\GobbleOne}[1]{} \newcommand{\Section}{\newpage\section} \newcommand{\finalnopagebreak}{\nopagebreak} \newcommand{\finalpagebreak}{\pagebreak} \title{The \pkg{buxsym} package\\ --- supplementary math extension fonts ---} \author{Kai-Uwe Bux} \date{\begin{tabular}{ll} Datum: & \ThisDate\\ Version: & \ThisVersion \end{tabular}} \begin{document} \maketitle \DocInput{buxsym.dtx} \end{document} % % \end{macrocode} % % ********************************************** END METACOMMENT \fi % % There are a few symbols which are sometimes needed as big % operators but not available by means of the computer modern math % extension font. Hence we define a little supplement here. % The corresponding package \pkg{buxsym} defines the names. % \begin{quote} % \begin{tabular}{ll} % $\bigast_{i=1}^n L_i$ & |\bigast|\\ % $\bigudot_{i=1}^n L_i$ & |\bigudot|\\ % $\bigplus$ & |\bigplus|\\ % $\bigtimes_{i=1}^n L_i$ & |\bigtimes|\\ % \end{tabular} % \end{quote} % % \section{The package \pkg{buxsym}} % \begin{macrocode} %<*package> \InputIfFileExists{ubmexs.fd}{}{% \PackageWarningNoLine{buxsym}{File ubmexs.fd not found. Math extension supplement wont work} \endinput } \DeclareSymbolFont{largesymsup}{U}{bmexs}{m}{n} \DeclareMathSymbol{\bigast}{\mathop}{largesymsup}{'100} \DeclareMathSymbol{\bigudot}{\mathop}{largesymsup}{'102} \DeclareMathSymbol{\bigplus}{\mathop}{largesymsup}{'110} \DeclareMathSymbol{\bigtimes}{\mathop}{largesymsup}{'112} % % \end{macrocode} % % \section{The File \file{ubmexs.fd}} % \begin{macrocode} %<*fd> \ProvidesFile{ubmexs.fd}[\FileDate\space\FileVersion, TeX math extension supplement] \DeclareFontFamily{U}{bmexs}{} \DeclareFontShape{U}{bmexs}{m}{n}{ <-> sfixed * bmex10 }{} % % \end{macrocode} % % \iffalse ********************************************* METACOMMENT % ------------------------------------------------------------------ % % \section{The \MF\ files} % \begin{macrocode} %<*bmexnine> % TeX Math Extension Supplement 9 point if unknown cmbase: input cmbase fi font_identifier:="BMEX"; font_size 9pt#; u#:=18.5/36pt#; % unit width width_adj#:=0pt#; % width adjustment for certain characters serif_fit#:=0pt#; % extra sidebar near lowercase serifs cap_serif_fit#:=4.6/36pt#; % extra sidebar near uppercase serifs letter_fit#:=0pt#; % extra space added to all sidebars body_height#:=243/36pt#; % height of tallest characters asc_height#:=225/36pt#; % height of lowercase ascenders cap_height#:=221.4/36pt#; % height of caps fig_height#:=208.8/36pt#; % height of numerals x_height#:=139.5/36pt#; % height of lowercase without ascenders math_axis#:=81/36pt#; % axis of symmetry for math symbols bar_height#:=78.3/36pt#; % height of crossbar in lowercase e comma_depth#:=63/36pt#; % depth of comma below baseline desc_depth#:=63/36pt#; % depth of lowercase descenders crisp#:=0pt#; % diameter of serif corners tiny#:=8/36pt#; % diameter of rounded corners fine#:=7/36pt#; % diameter of sharply rounded corners thin_join#:=7/36pt#; % width of extrafine details hair#:=9/36pt#; % lowercase hairline breadth stem#:=24/36pt#; % lowercase stem breadth curve#:=28/36pt#; % lowercase curve breadth ess#:=25/36pt#; % breadth in middle of lowercase s flare#:=30/36pt#; % diameter of bulbs or breadth of terminals dot_size#:=35/36pt#; % diameter of dots cap_hair#:=10/36pt#; % uppercase hairline breadth cap_stem#:=29/36pt#; % uppercase stem breadth cap_curve#:=33/36pt#; % uppercase curve breadth cap_ess#:=31/36pt#; % breadth in middle of uppercase s rule_thickness#:=.38pt#; % thickness of lines in math symbols dish#:=1/36pt#; % amount erased at top or bottom of serifs bracket#:=18/36pt#; % vertical distance from serif base to tangent jut#:=25/36pt#; % protrusion of lowercase serifs cap_jut#:=33/36pt#; % protrusion of uppercase serifs beak_jut#:=9.2/36pt#; % horizontal protrusion of beak serifs beak#:=63/36pt#; % vertical protrusion of beak serifs vair#:=8/36pt#; % vertical diameter of hairlines notch_cut#:=9pt#; % maximum breadth above or below notches bar#:=10/36pt#; % lowercase bar thickness slab#:=10/36pt#; % serif and arm thickness cap_bar#:=10/36pt#; % uppercase bar thickness cap_band#:=10/36pt#; % uppercase thickness above/below lobes cap_notch_cut#:=9pt#; % max breadth above/below uppercase notches serif_drop#:=3.6/36pt#; % vertical drop of sloped serifs stem_corr#:=1/36pt#; % for small refinements of stem breadth vair_corr#:=1/36pt#; % for small refinements of hairline height apex_corr#:=0pt#; % extra width at diagonal junctions o#:=7/36pt#; % amount of overshoot for curves apex_o#:=7/36pt#; % amount of overshoot for diagonal junctions slant:=0; % tilt ratio $(\Delta x/\Delta y)$ fudge:=1; % factor applied to weights of heavy characters math_spread:=.2; % extra openness of math symbols superness:=1/sqrt2; % parameter for superellipses superpull:=1/6; % extra openness inside bowls beak_darkness:=11/30; % fraction of triangle inside beak serifs ligs:=2; % level of ligatures to be included square_dots:=false; % should dots be square? hefty:=false; % should we try hard not to be overweight? serifs:=true; % should serifs and bulbs be attached? monospace:=false; % should all characters have the same width? variant_g:=false; % should an italic-style g be used? low_asterisk:=false; % should the asterisk be centered at the axis? math_fitting:=false; % should math-mode spacing be used? % the following font parameters are explained in {\sl The \TeX book}, Appendix G fontdimen 8: % parameters $\xi_8$ through $\xi_{13}$ will now be listed rule_thickness#, % default\_rule\_thickness 36/36pt#, % big\_op\_spacing1 54/36pt#, % big\_op\_spacing2 64.8/36pt#, % big\_op\_spacing3 196/36pt#, % big\_op\_spacing4 36/36pt#; % big\_op\_spacing5 generate bmathex % switch to the driver file % % \end{macrocode} % % \begin{macrocode} %<*bmexten> % TeX Math Extension Supplement 10 point if unknown cmbase: input cmbase fi font_identifier:="BMEX"; font_size 10pt#; u#:=20/36pt#; % unit width width_adj#:=0pt#; % width adjustment for certain characters serif_fit#:=0pt#; % extra sidebar near lowercase serifs cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs letter_fit#:=0pt#; % extra space added to all sidebars body_height#:=270/36pt#; % height of tallest characters asc_height#:=250/36pt#; % height of lowercase ascenders cap_height#:=246/36pt#; % height of caps fig_height#:=232/36pt#; % height of numerals x_height#:=155/36pt#; % height of lowercase without ascenders math_axis#:=90/36pt#; % axis of symmetry for math symbols bar_height#:=87/36pt#; % height of crossbar in lowercase e comma_depth#:=70/36pt#; % depth of comma below baseline desc_depth#:=70/36pt#; % depth of lowercase descenders crisp#:=0pt#; % diameter of serif corners tiny#:=8/36pt#; % diameter of rounded corners fine#:=7/36pt#; % diameter of sharply rounded corners thin_join#:=7/36pt#; % width of extrafine details hair#:=9/36pt#; % lowercase hairline breadth stem#:=25/36pt#; % lowercase stem breadth curve#:=30/36pt#; % lowercase curve breadth ess#:=27/36pt#; % breadth in middle of lowercase s flare#:=33/36pt#; % diameter of bulbs or breadth of terminals dot_size#:=38/36pt#; % diameter of dots cap_hair#:=11/36pt#; % uppercase hairline breadth cap_stem#:=32/36pt#; % uppercase stem breadth cap_curve#:=37/36pt#; % uppercase curve breadth cap_ess#:=35/36pt#; % breadth in middle of uppercase s rule_thickness#:=.4pt#; % thickness of lines in math symbols dish#:=1/36pt#; % amount erased at top or bottom of serifs bracket#:=20/36pt#; % vertical distance from serif base to tangent jut#:=28/36pt#; % protrusion of lowercase serifs cap_jut#:=37/36pt#; % protrusion of uppercase serifs beak_jut#:=10/36pt#; % horizontal protrusion of beak serifs beak#:=70/36pt#; % vertical protrusion of beak serifs vair#:=8/36pt#; % vertical diameter of hairlines notch_cut#:=10pt#; % maximum breadth above or below notches bar#:=11/36pt#; % lowercase bar thickness slab#:=11/36pt#; % serif and arm thickness cap_bar#:=11/36pt#; % uppercase bar thickness cap_band#:=11/36pt#; % uppercase thickness above/below lobes cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches serif_drop#:=4/36pt#; % vertical drop of sloped serifs stem_corr#:=1/36pt#; % for small refinements of stem breadth vair_corr#:=1/36pt#; % for small refinements of hairline height apex_corr#:=0pt#; % extra width at diagonal junctions o#:=8/36pt#; % amount of overshoot for curves apex_o#:=8/36pt#; % amount of overshoot for diagonal junctions slant:=0; % tilt ratio $(\Delta x/\Delta y)$ fudge:=1; % factor applied to weights of heavy characters math_spread:=0; % extra openness of math symbols superness:=1/sqrt2; % parameter for superellipses superpull:=1/6; % extra openness inside bowls beak_darkness:=11/30; % fraction of triangle inside beak serifs ligs:=2; % level of ligatures to be included square_dots:=false; % should dots be square? hefty:=false; % should we try hard not to be overweight? serifs:=true; % should serifs and bulbs be attached? monospace:=false; % should all characters have the same width? variant_g:=false; % should an italic-style g be used? low_asterisk:=false; % should the asterisk be centered at the axis? math_fitting:=false; % should math-mode spacing be used? % the following font parameters are explained in {\sl The \TeX book}, Appendix G fontdimen 8: % parameters $\xi_8$ through $\xi_{13}$ will now be listed rule_thickness#, % default\_rule\_thickness 40/36pt#, % big\_op\_spacing1 60/36pt#, % big\_op\_spacing2 72/36pt#, % big\_op\_spacing3 216/36pt#, % big\_op\_spacing4 36/36pt#; % big\_op\_spacing5 generate bmathex % switch to the driver file % % \end{macrocode} % % \begin{macrocode} %<*bmathex> font_coding_scheme:="TeX math extension supplement"; mode_setup; font_setup; input bmbigop; % large operators font_x_height x_height#; font_quad 18u#+4letter_fit#; bye. % % \end{macrocode} % % \begin{macrocode} %<*bmbigop> % Each operator has a `{\tt\char`\\textstyle}' form, for math in text, % and a `{\tt\char`\\displaystyle}' form, for displayed formulas. % Character codes \0100--\0103, \0110--\0113 are generated. charlist oct"100": oct"101"; % bigasterix operators charlist oct"102": oct"103"; % disjoint union sign charlist oct"110": oct"111"; % bigplus operators charlist oct"112": oct"113"; % bigplus operators cmchar "\textstyle bigasterix oparator"; beginchar(oct"100",20u#,0,10/6dh#); adjust_fit(0,0); numeric ast_flare; ast_flare=hround.7[thin_join,stem]; x0=.5w; y0=.5[h,-d]; for t=-150 step 60 until 150: z[t]=z0+.5 dir t scaled d; numeric theta; theta=angle(z[t]-z0); fill z0+1(0,-thin_join) rotated theta --- z[t]+1(-ast_flare,-ast_flare) rotated theta .. z[t] .. z[t]+1(-ast_flare,ast_flare) rotated theta --- z0+1(0,thin_join) rotated theta -- cycle; endfor labels(0,[-150],[-90],[-30],30,90,150); endchar; cmchar "\displaystyle bigasterix oparator"; beginchar(oct"101",27.2u#,0,14/6dh#); padded 1/6dh#; adjust_fit(0,0); numeric ast_flare; ast_flare=hround.7[thin_join,stem]; x0=.5w; y0=.5[h,-d]; for t=-150 step 60 until 150: z[t]=z0+.5 dir t scaled d; numeric theta; theta=angle(z[t]-z0); fill z0+1(0,-thin_join) rotated theta --- z[t]+1(-ast_flare,-ast_flare) rotated theta .. z[t] .. z[t]+1(-ast_flare,ast_flare) rotated theta --- z0+1(0,thin_join) rotated theta -- cycle; endfor labels(0,[-150],[-90],[-30],30,90,150); endchar; cmchar "\textstyle disjoint union sign"; beginchar(oct"102",15u#,0,10/6dh#); adjust_fit(0,0); pickup pencircle scaled stem; lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1; top y1=eps; bot y3=-d; y2=y4=2/3[y1,y3]; y5=y1; draw z1---z2...z3...z4---z5; % stems and cup x6=x3; y6=.47[y1,y3]; fill fullcircle scaled(bold+4dw+eps) shifted(z6); % dot labels(1,2,3,4,5,6); endchar; cmchar "\displaystyle disjoint union sign"; beginchar(oct"103",20u#,0,14/6dh#); padded 1/6dh#; adjust_fit(0,0); pickup pencircle scaled curve; lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1; top y1=eps; bot y3=-d; y2=y4=2/3[y1,y3]; y5=y1; draw z1---z2...z3...z4---z5; % stems and cup x6=x3; y6=.47[y1,y3]; fill fullcircle scaled(bold+6dw+eps) shifted(z6); % dot labels(1,2,3,4,5,6); endchar; cmchar "\textstyle bigplus operator"; beginchar(oct"110",20u#,0,10/6dh#); adjust_fit(0,0); pickup pencircle scaled stem; lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d; circle_points; % this is a trick ! draw z2--z6; draw z4--z8; % plus labels(2,4,6,8); endchar; cmchar "\displaystyle bigplus operator"; beginchar(oct"111",27.2u#,0,14/6dh#); padded 1/6dh#; adjust_fit(0,0); pickup pencircle scaled curve; lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d; circle_points; % this is a trick ! draw z2--z6; draw z4--z8; % plus labels(2,4,6,8); endchar; cmchar "\textstyle bigtimes operator"; beginchar(oct"112",20u#,0,10/6dh#); adjust_fit(0,0); pickup pencircle scaled stem; lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d; circle_points; % this is a trick! draw z1--z5; draw z3--z7; % times labels(1,3,5,7); endchar; cmchar "\displaystyle bigtimes operator"; beginchar(oct"113",27.2u#,0,14/6dh#); padded 1/6dh#; adjust_fit(0,0); pickup pencircle scaled curve; lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d; circle_points; % this is a trick ! draw z1--z5; draw z3--z7; % times labels(1,3,5,7); endchar; % % \end{macrocode} % % ********************************************** END METACOMMENT \fi % % \iffalse ********************************************* METACOMMENT % ------------------------------------------------------------------ % \section{Character Table} % \begin{macrocode} %<*installation> \endinput % % \end{macrocode} % ------------------------------------------------------------------ % ********************************************** END METACOMMENT \fi % %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% % \Finale