Skip to content
Snippets Groups Projects
Commit 98d8e790 authored by Martin Mareš's avatar Martin Mareš
Browse files

Importován ucwmac 2.0 (používaná podmnožina)

parent e8147cd1
No related branches found
No related tags found
No related merge requests found
\ucwdefmodule{luaofs}
\ucwdefmodule{ofs}
\input luaotfload.sty
\input ofs.tex
\nofontmessages
\ofsputfamlist{^^JLatinModern:}
\def\LMfeat#1{:mode=base;script=latn;+tlig}
%%% LMRoman %%%
\ofsdeclarefamily [LMRoman] {%
\loadtextfam lmr;%
lmbx;%
lmti;%
lmbxti;;%
\newvariant 8 \sl (Slanted) lmsl;;%
\newvariant 9 \bxsl (BoldSlanted) lmbxsl;;%
\newvariant a \bo (BoldNormal) lmb;;%
\newvariant b \bosl (BoldNormalSlanted) lmbsl;;%
\newvariant c \csc (CapsAndSmallCaps) lmcsc;;%
}
\registertfm lmr - LMRoman10-Regular\LMfeat{}
\registertfm lmr 0pt-6pt LMRoman5-Regular\LMfeat{}
\registertfm lmr 6pt-7pt LMRoman6-Regular\LMfeat{}
\registertfm lmr 7pt-8pt LMRoman7-Regular\LMfeat{}
\registertfm lmr 8pt-9pt LMRoman8-Regular\LMfeat{}
\registertfm lmr 9pt-10pt LMRoman9-Regular\LMfeat{}
\registertfm lmr 10pt-12pt LMRoman10-Regular\LMfeat{}
\registertfm lmr 12pt-17pt LMRoman12-Regular\LMfeat{}
\registertfm lmr 17pt-* LMRoman17-Regular\LMfeat{}
\registertfm lmbx - LMRoman10-Bold\LMfeat{}
\registertfm lmbx 0pt-6pt LMRoman5-Bold\LMfeat{}
\registertfm lmbx 6pt-7pt LMRoman6-Bold\LMfeat{}
\registertfm lmbx 7pt-8pt LMRoman7-Bold\LMfeat{}
\registertfm lmbx 8pt-9pt LMRoman8-Bold\LMfeat{}
\registertfm lmbx 9pt-10pt LMRoman9-Bold\LMfeat{}
\registertfm lmbx 10pt-12pt LMRoman10-Bold\LMfeat{}
\registertfm lmbx 12pt-* LMRoman12-Bold\LMfeat{}
\registertfm lmti - LMRoman10-Italic\LMfeat{}
\registertfm lmti 0pt-8pt LMRoman7-Italic\LMfeat{}
\registertfm lmti 8pt-9pt LMRoman8-Italic\LMfeat{}
\registertfm lmti 9pt-10pt LMRoman9-Italic\LMfeat{}
\registertfm lmti 10pt-12pt LMRoman10-Italic\LMfeat{}
\registertfm lmti 12pt-* LMRoman12-Italic\LMfeat{}
\registertfm lmbxti - LMRoman10-BoldItalic\LMfeat{}
\registertfm lmsl - LMRomanSlant10-Regular\LMfeat{}
\registertfm lmsl 0pt-9pt LMRomanSlant8-Regular\LMfeat{}
\registertfm lmsl 9pt-10pt LMRomanSlant9-Regular\LMfeat{}
\registertfm lmsl 10pt-12pt LMRomanSlant10-Regular\LMfeat{}
\registertfm lmsl 12pt-17pt LMRomanSlant12-Regular\LMfeat{}
\registertfm lmsl 17pt-* LMRomanSlant17-Regular\LMfeat{}
\registertfm lmbxsl - LMRomanSlant10-Bold\LMfeat{}
\registertfm lmb - LMRomanDemi10-Regular\LMfeat{}
\registertfm lmbsl - LMRomanDemi10-Oblique\LMfeat{}
\registertfm lmcsc - LMRomanCaps10-Regular\LMfeat{}
\setfonts[LMRoman/]
%%% LMSans %%%
\ofsdeclarefamily [LMSans] {%
\loadtextfam lmss;%
lmssbx;%
lmsso;%
lmssbo;;%
}
\registertfm lmss - LMSans10-Regular\LMfeat{}
\registertfm lmss 0pt-9pt LMSans8-Regular\LMfeat{}
\registertfm lmss 9pt-10pt LMSans9-Regular\LMfeat{}
\registertfm lmss 10pt-12pt LMSans10-Regular\LMfeat{}
\registertfm lmss 12pt-17pt LMSans12-Regular\LMfeat{}
\registertfm lmss 17pt-* LMSans17-Regular\LMfeat{}
\registertfm lmssbx - LMSans10-Bold\LMfeat{}
\registertfm lmsso - LMSans10-Oblique\LMfeat{}
\registertfm lmsso 0pt-9pt LMSans8-Oblique\LMfeat{}
\registertfm lmsso 9pt-10pt LMSans9-Oblique\LMfeat{}
\registertfm lmsso 10pt-12pt LMSans10-Oblique\LMfeat{}
\registertfm lmsso 12pt-17pt LMSans12-Oblique\LMfeat{}
\registertfm lmsso 17pt-* LMSans17-Oblique\LMfeat{}
\registertfm lmssbo - LMSans10-BoldOblique\LMfeat{}
%%% LMSansDC %%%
\ofsdeclarefamily [LMSansDC] {%
\loadtextfam lmssdc;%
;%
lmssdo;%
;;%
}
\registertfm lmssdc - LMSansDemiCond10-Regular\LMfeat{}
\registertfm lmssdo - LMSansDemiCond10-Oblique\LMfeat{}
%%% LMMono %%%
\ofsdeclarefamily [LMMono] {%
\loadtextfam lmtt;%
lmtk;%
lmtti;%
;;%
\newvariant 8 \sl (Slanted) lmtto;;%
\newvariant 9 \bxsl (BoldSlanted) lmtko;;%
\newvariant c \csc (CapsAndSmallCaps) lmtcsc;;%
}
\registertfm lmtt - LMMono10-Regular\LMfeat{}
\registertfm lmtt 0pt-9pt LMMono8-Regular\LMfeat{}
\registertfm lmtt 9pt-10pt LMMono9-Regular\LMfeat{}
\registertfm lmtt 10pt-12pt LMMono10-Regular\LMfeat{}
\registertfm lmtt 12pt-* LMMono12-Regular\LMfeat{}
\registertfm lmtk - LMMonoLt10-Bold\LMfeat{}
\registertfm lmtti - LMMono10-Italic\LMfeat{}
\registertfm lmtto - LMMonoSlant10-Regular\LMfeat{}
\registertfm lmtko - LMMonoLt10-BoldOblique\LMfeat{}
\registertfm lmtcsc - LMMonoCaps10-Regular\LMfeat{}
\newfam\ttfam
\loadmathfam\ttfam[/LMMono10-Regular\LMfeat{}]
%%% LMMonoCondensed %%%
\ofsdeclarefamily [LMMonoCondensed] {%
\loadtextfam lmtlc;%
;%
lmtlco;%
;;%
}
\registertfm lmtlc - LMMonoLtCond10-Regular\LMfeat{}
\registertfm lmtlco - LMMonoLtCond10-Oblique\LMfeat{}
%%% UCW extensions %%%
\ofsputfamlist{^^JUCW:}
\ofsdeclarefamily [BlackboardBold] {%
\loadtextfam bbm;%
;%
;%
;\defaultextraenc;%
}
\registertfm bbm - bbm10
\registertfm bbm 0pt-6pt bbm5
\registertfm bbm 6pt-7pt bbm6
\registertfm bbm 7pt-8pt bbm7
\registertfm bbm 8pt-9pt bbm8
\registertfm bbm 9pt-10pt bbm9
\registertfm bbm 10pt-12pt bbm10
\registertfm bbm 12pt-17pt bbm12
\registertfm bbm 17pt-* bbm17
% \bb - blackboard bold math font
\newfam\bbfam
\def\bb{\fam\bbfam}
\def\loadbbm{%
\loadmathfam\bbfam[/bbm]%
}
\loadbbm
%%% Font size switches %%%
% Recalculate line spacing for a given point size of the font (assuming CM-like metrics).
% Also sets \strut and \topskip.
\def\setbaselines#1{%
\dimen0=1pt
\dimen0=#1\dimen0
\normalbaselineskip=1.2\dimen0
\normallineskip=0.1\dimen0
\setbox\strutbox=\hbox{\vrule height 0.85\dimen0 depth 0.35\dimen0 width 0pt}%
\topskip=1\dimen0
\normalbaselines
}
% Switch to a specified font size (including math, line spacing etc.)
\def\settextsize#1{%
\def\fomenc{CM}%
\setfonts[/#1]%
\setmath[//]%
\setbaselines{#1}%
\loadbbm
}
\def\twelvepoint{\settextsize{12}}
%%% Various hacks %%%
% Re-define \tt, so that it works in both text and math mode
\def\tt{\ifmmode\fam\ttfam\else\setfonts[LMMono/]\fi}
% Re-define ucwmac's \fontfont
\let\footfont=\tenrm
% The UCW Macro Collection (a successor of mjmac.tex)
% Written by Martin Mares <mj@ucw.cz> in 2010--2018 and placed into public domain
% -------------------------------------------------------------------------------
\ifx\ucwmodule\undefined\else\endinput\fi
%%% Prolog %%%
% We'll use internal macros of plain TeX
\catcode`@=11
\ifx\eTeXversion\undefined
\errmessage{ucwmac requires the e-TeX engine or its successor}
\fi
%%% PDF output detection %%%
\newif\ifpdf
\pdffalse
\ifx\pdfoutput\undefined
\else\ifnum\pdfoutput>0
\pdftrue
\pdfpkresolution=600 % Provide a reasonable default
\fi\fi
\ifx\luatexversion\undefined\else
% In LuaTeX \pdfpkresolution is not enough
\directlua{kpse.init_prog("luatex", 600, "ljfour")}
\fi
%%% Temporary registers %%%
\newcount\tmpcount
\newdimen\tmpdimen
%%% Auxiliary macros %%%
% Prepend/append #2 to the definition of #1
\long\def\prependef#1#2{\expandafter\def\expandafter#1\expandafter{#2#1}}
\long\def\appendef#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
% Variants of \def and \let, where the control sequence name is given as a string
\def\sdef#1{\expandafter\def\csname#1\endcsname}
\def\slet#1#2{\expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}
% Assign a control sequence given as a string, complain if it is not defined.
\def\sget#1#2{\ifcsname#2\endcsname
\expandafter\let\expandafter#1\csname#2\endcsname
\else
\errmessage{Undefined control sequence #2}%
\let#1\relax
\fi
}
% Add \protected to an existing macro
\def\addprotected#1{\protected\edef#1{\expandafter\unexpanded\expandafter{#1}}}
% Protect ~
\addprotected~
\def\ucwwarn#1{\immediate\write16{*** UCWmac warning: #1 ***}}
% Replace all occurrences of #1 in \tmpb by #2.
% Thanks to Petr Olsak's OPmac for an efficient implementation.
\bgroup \catcode`!=3 \catcode`?=3
\gdef\replacestrings#1#2{\long\def\replacestringsA##1#1{\def\tmpb{##1}\replacestringsB}%
\long\def\replacestringsB##1#1{\ifx!##1\relax \else\appendef\tmpb{#2##1}%
\expandafter\replacestringsB\fi}%
\expandafter\replacestringsA\tmpb?#1!#1%
\long\def\replacestringsA##1?{\def\tmpb{##1}}\expandafter\replacestringsA\tmpb
}
\egroup
%%% Page size and margins %%%
% If you modify these registers, call \setuppage afterwards
\ifx\luatexversion\undefined
% In LuaTeX, \pagewidth and \pageheight are primitive
% (also, we need \csname here, because \newdimen is \outer)
\csname newdimen\endcsname\pagewidth
\csname newdimen\endcsname\pageheight
\fi
\newdimen\leftmargin
\newdimen\rightmargin
\newdimen\topmargin
\newdimen\bottommargin
\newdimen\evenpageshift
\def\setuppage{%
\hsize=\pagewidth
\advance\hsize by -\leftmargin
\advance\hsize by -\rightmargin
\vsize=\pageheight
\advance\vsize by -\topmargin
\advance\vsize by -\bottommargin
\hoffset=\leftmargin
\advance\hoffset by -1truein
\voffset=\topmargin
\advance\voffset by -1truein
\ifpdf
\pdfhorigin=1truein
\pdfvorigin=1truein
\ifx\luatexversion\undefined
\pdfpagewidth=\pagewidth
\pdfpageheight=\pageheight
\fi
\fi
}
% Set multiple margins to the same value
\def\sethmargins#1{\leftmargin=#1\relax\rightmargin=#1\relax\evenpageshift=0pt\relax}
\def\setvmargins#1{\topmargin=#1\relax\bottommargin=#1\relax}
\def\setmargins#1{\sethmargins{#1}\setvmargins{#1}}
% Define inner/outer margin instead of left/right
\def\setinneroutermargin#1#2{\leftmargin#1\relax\rightmargin#2\relax\evenpageshift=\rightmargin\advance\evenpageshift by -\leftmargin}
% Use a predefined paper format, calls \setuppage automagically
\def\setpaper#1{%
\expandafter\let\expandafter\currentpaper\csname paper-#1\endcsname
\ifx\currentpaper\relax
\errmessage{Undefined paper format #1}
\fi
\currentpaper
}
% Switch to landscape orientation, calls \setuppage automagically
\def\landscape{%
\dimen0=\pageheight
\pageheight=\pagewidth
\pagewidth=\dimen0
\setuppage
}
% Common paper sizes
\def\defpaper#1#2#3{\expandafter\def\csname paper-#1\endcsname{\pagewidth=#2\pageheight=#3\setuppage}}
\defpaper{a3}{297truemm}{420truemm}
\defpaper{a4}{210truemm}{297truemm}
\defpaper{a5}{148truemm}{210truemm}
\defpaper{letter}{8.5truein}{11truein}
\defpaper{legal}{8.5truein}{14truein}
% Default page parameters
\setmargins{1truein}
\setpaper{a4}
%%% Macros with optional arguments %%%
% After \def\a{\withoptarg\b}, the macro \a behaves in this way:
% \a[arg] does \def\optarg{arg} and then it expands \b
% \a does \let\optarg=\relax and then it expands \b
\def\withoptarg#1{\let\xoptcall=#1\futurelet\next\xopt}
\def\xopt{\ifx\next[\expandafter\xoptwith\else\let\optarg=\relax\expandafter\xoptcall\fi}
\def\xoptwith[#1]{\def\optarg{#1}\xoptcall}
% A shortcut for defining macros with optional arguments:
% \optdef\macro behaves as \def\domacro, while \macro itself is defined
% as a wrapper calling \domacro using \withoptarg.
\def\optdef#1{%
\edef\xoptname{\expandafter\eatbackslash\string#1}%
\edef#1{\noexpand\withoptarg\csname do\xoptname\endcsname}%
\expandafter\def\csname do\xoptname\endcsname
}
% Trick: \eatbackslash eats the next backslash of category 12
\begingroup\lccode`\+=`\\
\lowercase{\endgroup\def\eatbackslash+{}}
% Expand to the optional argument if it exists
\def\optargorempty{\ifx\optarg\relax\else\optarg\fi}
%%% Placing material at specified coordinates %%%
% Set all dimensions of a given box register to zero
\def\smashbox#1{\ht#1=0pt \dp#1=0pt \wd#1=0pt}
\long\def\smashedhbox#1{{\setbox0=\hbox{#1}\smashbox0\box0}}
\long\def\smashedvbox#1{{\setbox0=\vbox{#1}\smashbox0\box0}}
% Variants of \llap and \rlap working equally on both sides and/or vertically
\def\hlap#1{\hbox to 0pt{\hss #1\hss}}
\def\vlap#1{\vbox to 0pt{\vss #1\vss}}
\def\clap#1{\vlap{\hlap{#1}}}
% \placeat{right}{down}{hmaterial} places <hmaterial>, so that its
% reference point lies at the given position wrt. the current ref point
\long\def\placeat#1#2#3{\smashedhbox{\hskip #1\lower #2\hbox{#3}}}
% Like \vbox, but with reference point in the upper left corner
\long\def\vhang#1{\vtop{\hrule height 0pt\relax #1}}
% Like \vhang, but respecting interline skips
\long\def\vhanglines#1{\vtop{\hbox to 0pt{}#1}}
% Crosshair with reference point in its center
\def\crosshair#1{\clap{\vrule height 0.2pt width #1}\clap{\vrule height #1 width 0.2pt}}
%%% Output routine %%%
\newbox\pageunderlays
\newbox\pageoverlays
\newbox\commonunderlays
\newbox\commonoverlays
% In addition to the normal page contents, you can define page overlays
% and underlays, which are zero-size vboxes positioned absolutely in the
% front / in the back of the normal material. Also, there are global
% versions of both which are not reset after every page.
\def\addlay#1#2{\setbox#1=\vbox{\ifvbox#1\box#1\fi\nointerlineskip\smashedvbox{#2}}}
\def\pageunderlay{\addlay\pageunderlays}
\def\pageoverlay{\addlay\pageoverlays}
\def\commonunderlay{\addlay\commonoverlays}
\def\commonoverlay{\addlay\commonoverlays}
% Our variation on \plainoutput, which manages inner/outer margins and overlays
\output{\ucwoutput}
\newdimen\pagebodydepth
\def\ucwoutput{\wigglepage\shipout\vbox{%
\makeheadline
\ifvbox\commonunderlays\copy\commonunderlays\nointerlineskip\fi
\ifvbox\pageunderlays\box\pageunderlays\nointerlineskip\fi
\pagebody
\pagebodydepth=\prevdepth
\nointerlineskip
\ifvbox\commonoverlays\vbox to 0pt{\vskip -\vsize\copy\commonoverlays\vss}\nointerlineskip\fi
\ifvbox\pageoverlays\vbox to 0pt{\vskip -\vsize\box\pageoverlays\vss}\nointerlineskip\fi
\prevdepth=\pagebodydepth
\makefootline
}\advancepageno
\ifnum\outputpenalty>-\@MM \else\dosupereject\fi}
\def\wigglepage{\ifodd\pageno\else\advance\hoffset by \evenpageshift\fi}
% Make it easier to redefine footline font (also, fix it so that OFS won't change it unless asked)
\let\footfont=\tenrm
\footline={\hss\footfont\folio\hss}
%%% Itemization %%%
% Usage:
%
% \list{style}
% \:first item
% \:second item
% \endlist
%
% Available styles (others can be defined by \sdef{item:<style>}{<marker>})
%
% o % bullet
% O % empty circle
% * % asterisk
% - % en-dash
% . % dot
% n % 1, 2, 3
% i % i, ii, iii
% I % I, II, III
% a % a, b, c
% A % A, B, C
% g % α, β, γ
%
% Meta-styles (can be used to modify an arbitrary style, currently hard-wired)
%
% #. % with a dot behind
% #) % with a parenthesis behind
% (#) % enclosed in parentheses
% [#] % enclosed in square brackets
%
% Historic usage:
%
% \itemize\ibull % or other marker
% \:first item
% \:second item
% \endlist
%
% \numlist\ndotted % or other numbering style
% \:first
% \:second
% \endlist
% Default dimensions of itemized lists
\newdimen\itemindent \itemindent=0.5in
\newdimen\itemnarrow \itemnarrow=0.5in % make lines narrower by this amount
\newskip\itemmarkerskip \itemmarkerskip=0.4em % between marker and the item
\newskip\preitemizeskip \preitemizeskip=3pt plus 2pt minus 1pt % before the list
\newskip\postitemizeskip \postitemizeskip=3pt plus 2pt minus 1pt % after the list
\newskip\interitemskip \interitemskip=2pt plus 1pt minus 0.5pt % between two items
% Analogues for nested lists
\newdimen\nesteditemindent \nesteditemindent=0.25in
\newdimen\nesteditemnarrow \nesteditemnarrow=0.25in
\newskip\prenesteditemizeskip \prenesteditemizeskip=0pt
\newskip\postnesteditemizeskip \postnesteditemizeskip=0pt
\newif\ifitems\itemsfalse
\newbox\itembox
\newcount\itemcount
% Penalties
\newcount\preitemizepenalty \preitemizepenalty=-500
\newcount\postitemizepenalty \postitemizepenalty=-500
\def\preitemize{
\ifitems
\vskip\prenesteditemizeskip
\advance\leftskip by \nesteditemindent
\advance\rightskip by \nesteditemnarrow
\else
\ifnum\preitemizepenalty=0\else\penalty\preitemizepenalty\fi
\vskip\preitemizeskip
\advance\leftskip by \itemindent
\advance\rightskip by \itemnarrow
\fi
\parskip=\interitemskip
}
\def\postitemize{
\ifitems
\vskip\postnesteditemizeskip
\else
\ifnum\postitemizepenalty=0\else\penalty\postitemizepenalty\fi
\vskip\postitemizeskip
\fi
}
\def\inititemize{\begingroup\preitemize\itemstrue\parindent=0pt}
\def\list#1{\inititemize\itemcount=0\liststyle{#1}\let\:=\listitem}
\def\listitem{\par\leavevmode\advance\itemcount by 1
\llap{\listmarker\hskip\itemmarkerskip}\ignorespaces}
\def\liststyle#1{%
\edef\markertmp{#1}
\ifcsname item:\markertmp\endcsname
\sget\listmarker{item:\markertmp}%
\else
\sget\listmarker{metaitem:\markertometa#1^^X}%
\sget\markerinner{item:\markertoinner#1^^X}%
\fi
}
\def\markertometa#1{%
\ifx#1^^X%
\else
\ifx#1((%
\else\ifx#1[[%
\else\ifx#1))%
\else\ifx#1]]%
\else\ifx#1..%
\else=%
\fi\fi\fi\fi\fi
\expandafter\markertometa
\fi
}
\def\markertoinner#1{%
\ifx#1^^X%
\else
\ifx#1(%
\else\ifx#1)%
\else\ifx#1[%
\else\ifx#1]%
\else\ifx#1.%
\else#1%
\fi\fi\fi\fi\fi
\expandafter\markertoinner
\fi
}
\def\endlist{\par\endgroup\postitemize}
% List styles
\sdef{item:o}{\raise0.2ex\hbox{$\bullet$}}
\sdef{item:O}{\raise0.2ex\hbox{$\circ$}}
\sdef{item:*}{\raise0.2ex\hbox{$\ast$}}
\sdef{item:-}{--}
\sdef{item:.}{\raise0.2ex\hbox{$\cdot$}}
\sdef{item:n}{\the\itemcount}
\sdef{item:i}{\romannumeral\itemcount}
\sdef{item:I}{\uppercase\expandafter{\romannumeral\itemcount}}
\sdef{item:a}{\char\numexpr 96+\itemcount\relax}
\sdef{item:A}{\char\numexpr 64+\itemcount\relax}
\sdef{item:g}{$\ifcase\itemcount\or\alpha\or\beta\or\gamma\or\delta\or\epsilon\or
\zeta\or\eta\or\theta\or\iota\or\kappa\or\lambda\or\mu\or\nu\or\xi\or\pi\or\rho
\or\sigma\or\tau\or\upsilon\or\phi\or\chi\or\psi\or\omega\fi$}
% List meta-styles
\sdef{metaitem:=.}{\markerinner.}
\sdef{metaitem:=)}{\markerinner)}
\sdef{metaitem:(=)}{(\markerinner)}
\sdef{metaitem:[=]}{[\markerinner]}
% Old-style lists
\def\itemize#1{\inititemize\setbox\itembox\llap{#1\hskip\itemmarkerskip}%
\let\:=\singleitem}
\def\singleitem{\par\leavevmode\copy\itembox\ignorespaces}
\def\numlist#1{\inititemize\itemcount=0\let\:=\numbereditem
\let\itemnumbering=#1}
\def\numbereditem{\par\leavevmode\advance\itemcount by 1
\llap{\itemnumbering\hskip\itemmarkerskip}\ignorespaces}
% Old-style markers
\def\ibull{\raise0.2ex\hbox{$\bullet$}}
\def\idot{\raise0.2ex\hbox{$\cdot$}}
\def\istar{\raise0.2ex\hbox{$\ast$}}
\def\nnorm{\the\itemcount}
\def\ndotted{\nnorm.}
\def\nparen{\nnorm)}
\def\nparenp{(\nnorm)}
\def\nroman{\romannumeral\itemcount}
\def\nromanp{\nroman)}
\def\nalpha{\count@=96\advance\count@ by\itemcount\char\count@)}
\def\nAlpha{\count@=64\advance\count@ by\itemcount\char\count@)}
\def\ngreek{$\ifcase\itemcount\or\alpha\or\beta\or\gamma\or\delta\or\epsilon\or
\zeta\or\eta\or\theta\or\iota\or\kappa\or\lambda\or\mu\or\nu\or\xi\or\pi\or\rho
\or\sigma\or\tau\or\upsilon\or\phi\or\chi\or\psi\or\omega\fi$)}
%%% Miscellanea %%%
% {\I italic} with automatic italic correction
\def\I{\it\aftergroup\/}
% A breakable dash, to be repeated on the next line
\def\={\discretionary{-}{-}{-}}
% Non-breakable identifiers
\def\<#1>{\leavevmode\hbox{\I #1}}
% Handy shortcuts
\let\>=\noindent
\def\\{\hfil\break}
% Variants of \centerline, \leftline and \rightline, which are compatible with
% verbatim environments and other catcode hacks
\def\cline{\bgroup\def\linet@mp{\aftergroup\box\aftergroup0\aftergroup\egroup\hss\bgroup\aftergroup\hss\aftergroup\egroup}\afterassignment\linet@mp\setbox0\hbox to \hsize}
\def\lline{\bgroup\def\linet@mp{\aftergroup\box\aftergroup0\aftergroup\egroup\bgroup\aftergroup\hss\aftergroup\egroup}\afterassignment\linet@mp\setbox0\hbox to \hsize}
\def\rline{\bgroup\def\linet@mp{\aftergroup\box\aftergroup0\aftergroup\egroup\hss\bgroup\aftergroup\egroup}\afterassignment\linet@mp\setbox0\hbox to \hsize}
% Insert a PDF picture
% \putimage{width specification}{file}
\def\putimage#1#2{\hbox{\pdfximage #1{#2}\pdfrefximage\pdflastximage}}
%%% Colors %%%
% Use of pdfTeX color stack:
% \colorpush\rgb{1 0 0} puts a new color on the stack
% \colorset\rgb{1 0 0} replaces the top color on the stack
% \colorpop pops the top color
% \colorlocal\rgb{1 0 0} set a color locally until the end of the current group
\chardef\colorstk=\pdfcolorstackinit page direct{0 g 0 G}
\def\colorset#1{\pdfcolorstack\colorstk set #1}
\def\colorpush#1{\pdfcolorstack\colorstk push #1}
\def\colorpop{\pdfcolorstack\colorstk pop}
\def\colorlocal{\aftergroup\colorpop\colorpush}
% Different ways of describing colors: \rgb{R G B}, \gray{G}, \cmyk{C M Y K}
% (all components are real numbers between 0 and 1)
\def\rgb#1{{#1 rg #1 RG}}
\def\gray#1{{#1 g #1 G}}
\def\cmyk#1{{#1 k #1 K}}
%%% Localization %%%
% Define a new localized string: \localedef{language}{identifier}{message}
% (we use \language codes to identify languages)
\def\localedef#1#2{\tmpcount=#1\expandafter\def\csname loc:\the\tmpcount:#2\endcsname}
% Expand a localized string in the current language: \localemsg{identifier}
\def\localestr#1{%
\ifcsname loc:\the\language:#1\endcsname
\csname loc:\the\language:#1\endcsname
\else
\ucwwarn{Localized string #1 not defined in language \the\language}%
???%
\fi
}
%%% Modules %%%
% Require a module: load it if it is not already loaded
\def\ucwmodule#1{
\ifcsname ucwmod:#1\endcsname
\else
\input ucw-#1.tex
\fi
}
% Definition of a new module (to be placed at the beginning of its file)
% (Also guards against repeated loading if somebody uses \input instead of \ucwmodule.)
\def\ucwdefmodule#1{
\ifcsname ucwmod:#1\endcsname\endinput\fi
\expandafter\let\csname ucwmod:#1\endcsname=\relax
}
%%% Epilog %%%
% Let's hide all internal macros
\catcode`@=12
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment