From 229d2a84824108e60025d12c971370b90ee01578 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 3 May 2016 21:31:44 +0000 Subject: cstex (3may16) git-svn-id: svn://tug.org/texlive/trunk@40871 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/cstex/kpfonts-plain.tex | 618 ++++++++++++++++++++++++++ Master/texmf-dist/doc/cstex/opmac-d.tex | 46 +- Master/texmf-dist/doc/cstex/opmac-u-en.pdf | Bin 238254 -> 238440 bytes Master/texmf-dist/doc/cstex/opmac-u-en.tex | 87 ++-- Master/texmf-dist/doc/cstex/opmac-u.pdf | Bin 273197 -> 273020 bytes Master/texmf-dist/doc/cstex/opmac-u.tex | 120 +++-- 6 files changed, 748 insertions(+), 123 deletions(-) create mode 100644 Master/texmf-dist/doc/cstex/kpfonts-plain.tex (limited to 'Master') diff --git a/Master/texmf-dist/doc/cstex/kpfonts-plain.tex b/Master/texmf-dist/doc/cstex/kpfonts-plain.tex new file mode 100644 index 00000000000..ef22b6e69b4 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/kpfonts-plain.tex @@ -0,0 +1,618 @@ +% KP-fonts in plain TeX +%%%%%%%%%%%%%%%%%%%%%%% +% Petr Olsak, May 2016 + +% Use "pdftex kpfonts-plain" or "pdfcsplain kpfonts-plain" to create PDF +% Process it three times because of Table of contents generation. + +\parindent=24pt +\input opmac +\input t1code +\input kp-fonts + +\hyperlinks\Blue\Blue + +\def\printsec#1{\par \norempenalty-400 \bigskip + {\secfont \noindent + \hbox to\parindent{\dotocnum{\thetocnum}\hfil}#1\nbpar}\insertmark{#1}% + \nobreak \remskip\medskipamount \firstnoindent +} +\def\printsecc#1{\par \norempenalty-200 \bigskip + {\seccfont \noindent + \hbox to\parindent{\dotocnum{\thetocnum}\hfil}#1\nbpar}% + \nobreak \remskip\medskipamount \firstnoindent +} +\def\printbib{\hangindent=\iindent + \ifx\citelinkA\empty \noindent\hskip\iindent \llap{[\the\bibnum]\quad}% + \else \noindent \fi +} + +\def\KPfonts{{\em kpfonts}} + +\def\bfshape{\sans\fam \let\tenit=\tenbi \boldmath \bf} +\def\author#1\par{\centerline{\typosize[14.4/]\bfshape#1\unskip}\bigskip} +\activettchar" + +\tit KP-fonts in plain \TeX{} + +\author Petr Ol\char178\char225k + +The very large font family \KPfonts{} \cite[kp-fonts] (by Christophe +Caignaert) is known in \LaTeX{} world because there is the NFSS support for +these fonts. There are many independent variations and features supported by +the \KPfonts{}. This font family can be loaded in plain \TeX{} using +"\input kp-fonts". Macros from \csplain{}~\cite[csplain] are used in this +case. This article describes the main concept of the macros from \csplain{} +which gives fonts support for plain \TeX{} users. A new feature of these +macros (font modifiers) is implemented in \csplain{} from May 2016. + +The section \ref[kpfonts] in this article includes a documentation of +\KPfonts{} if the family is loaded using "\input kp-fonts". This gives an +illustration of power of \csplain{} font support. Finally, section \ref[ffmac] +includes a basic notes for macro programmers. + +Note that all features of \csplain{} macros described here can be used in +all common plain \TeX{} formats: generated by "etex.src" or Knuth's original +plain \TeX{} format or \csplain{}. There is no substantial differences +between them. Of course, \csplain{} preloads a basic set of macros (for +resizing) in its format but if this isn't done then the little set of macros +is read (from \csplain{} package) automatically and additionally. + +\nonum\notoc\sec Contents + +\maketoc + +\sec Font families in \csplain{} macros + +\secc Basics + +The main principle of font macros in \csplain{} is to keep the plain \TeX{} +philosophy. This means: + +\begitems +* use straightforward macros, +* font-files (where a font family is loaded) use directly "\font" primitive, +* leave core font macros for users "\rm", "\bf", and "\it" almost unchanged. +\enditems + +User can set chosen font family by "\input font-file". The ``font-file'' loads +typically four fonts of one family for usage in "\rm", "\bf", "\it" and +"\bi" macros. But the font-file can give more possibilities using ``font +modifiers'' (see bellow). + +The fonts in a font family can be selected by "\rm", "\bf", "\it" and "\bi" +macros. These macros are defined similarly like in plain TeX: + +\begtt +\def\rm{\fam0\tenrm} % in plain TeX: \def\rm{\fam\z@\tenrm} +\def\bf{\fam\bffam \tenbf} % in plain TeX: \def\bf{\fam\bffam\tenbf} +\def\it{\fam\itfam \tenit} % in plain TeX: \def\it{\fam\itfam\tenit} +\def\bi{\fam\bifam \tenbi} % in plain TeX: undefined +\endtt + +The macros above use native font selectors "\tenrm", "\tenbf", "\tenit" and +"\tenbi" declared by "\font" primitive in the font-file. Once these four +selectors are declared, they can be resized to arbitrary size. For example: + +\begtt +\def\sizespec{at12pt}\resizeall +\endtt +% +resizes the font selectors "\tenrm", "\tenbf", "\tenit" and "\tenbi" to 12\,pt +with the same fonts (or with their appropriate optical modifications if they +are available and "\dgsize" is set). The name "\ten.." is here only for +historical reasons and it has nothing to do with real font size selected. For +more information about resizing see the +article \cite[tb-csplain] and comments in the file "csfontsm.tex" where this +feature is implemented. + +User can use +macros "\rm", "\bf", "\it", "\bi"\fnote + {Note that {\tt\string\tentt} is resized too, so {\tt\string\tt} macro can + be used in selected size too. And more font selectors can be resized when + macro programmer registers a font selector for resizing using + {\tt\string\regfont}.} +in a selected size. A more comfortable user environment +for resizing with macros "\typosize", "\typoscale" and "\thefontsize" is +prepared in OPmac macro package \cite[opmac] which is a part of \csplain{} macros too. +The OPmac macros for font resizing set all size-dependent internal parameters and +sizes for math typesetting too. +See section 2 in the OPmac documentation~\cite[opmac-doc]. + +Summary: the meaning of "\tenrm", "\tenbf", "\tenit" and "\tenbi" selectors +depends on context: on a font family chosen by "\input font-file" and on +selected size. + +Users of NFSS from \LaTeX{} may ask: why there isn't a possibility of +independent selectors for ``weight'' and ``shape''? The answer is: We need +not it and we want to keep the plain \TeX{} simplicity. For example OPmac +provides the "\em" macro for emphasizing. It works like "\rm->\it" +"\it->\rm", "\bf->\bi", "\bi->\bf" and it adds the necessary italic +corrections. User can define analogous simple macro if it is needed. + + +\label[fontfam]\secc Prepared font files + +The font-files ready to use are packed to the \csplain{} package. You can +select one line from the following list: + +\begtt +\input lmfotns % Latin Moder fonts + +\input ctimes % Times font family +\input chelvet % Helvetica font family +\input cavantga % AvantGarde font family +\input cbookman % Bookman font family +\input cncent % NewCenturySchlbk font family +\input cpalatin % Palatino font family + +\input cs-termes % TeX Gyre Termes +\input cs-adventor % TeX Gyre Adventor +\input cs-bonum % TeX Gyre Bonum +\input cs-heros % TeX Grye Heros +\input cs-pagella % TeX Gyre Pagella +\input cs-schola % TeX Gyre Schola +\input cs-cursor % TeX Gyre Cursor + +\input cs-antt % Antykwa Torunska +\input cs-polta % Antykwa Poltawskiego + +\input cs-charter % Charter +\input cs-bera % Bera +\input cs-arev % ArevSans +\input cs-libertine % Linux Libertine + +\input kp-fonts % KPfonts +\endtt + +You need not to remember these font-file names. If you are using OPmac +macros then the macro "\fontfam[Family Name]" is ready to use. It does +the necessary "\input". If you give an unknown family name or give simply +"[?]" as a parameter then the list of possibilities is printed to the terminal +and to the log file in the form: + +\begtt +\fontfam: unknown font family [?] (8t). Choose: +=== Fonts derived from Computer Modern === + [LM fonts] {\rm \it \bf \bi \tt ; mod:\caps ; +AMS} (8t 8z U) +=== Adobe 35 fonts (installed in each PostScript RIP) === + [Times] {\rm \it \bf \bi \tt ; +TX} (8t 8z) + [Helvetica] {\rm \it \bf \bi \tt ; mod:\cond ; +TX} (8t 8z) + [Avantgarde] {\rm \it \bf \bi \tt ; +TX} (8t 8z) + [Bookman] {\rm \it \bf \bi \tt ; +TX} (8t 8z) + [Palatino] {\rm \it \bf \bi \tt ; +TX} (8t 8z) + [New Century] {\rm \it \bf \bi \tt ; +TX} (8t 8z) +=== TeXGyre project, fonts derived from Adobe 35 === + [TG Termes] {\rm \it \bf \bi ; mod:\caps ; +TX} (8t 8z U) + [TG Heros] {\rm \it \bf \bi ; mod:\caps \cond ; +TX} (8t 8z U) + [TG Adventor] {\rm \it \bf \bi ; mod:\caps ; +TX} (8t 8z U) + [TG Bonum] {\rm \it \bf \bi ; mod:\caps ; +TX} (8t 8z U) + [TG Pagella] {\rm \it \bf \bi ; mod:\caps ; +TX} (8t 8z U) + [TG Schola] {\rm \it \bf \bi ; mod:\caps ; +TX} (8t 8z U) + [TG Cursor] {\rm \it \bf \bi ; mod:\caps ; +TX} (8t 8z U) +=== Polish fonts === + [Antykwa Torunska] {\rm \it \bf \bi ; mod:\caps \cond \wlight ; +TX} (8t 8z) + [Antykwa Poltawskiego] {\rm \it \bf \bi ; mod:\caps \wlight ; +TX} (8t 8z U) +=== Miscelaneous === + [Charter] {\rm \it \bf \bi ; +TX} (8t 8z) + [Arev Sans] {\rm \it \bf \bi ; +TX} (8t) + [Bera] {\rm \it \bf \bi ; mod:\sans ; +TX} (8t) + [KP fonts] {\rm \it \bf \bi ; mod:\caps \bcaps \slant \sans \ttset \wlight \b +ext \noflig \oldn \olds \oldsv ; ... 22 modifiers in total; +KP} (8t 7t) + [Catalog] {; print catalogue} () +\endtt + +See OPmac documentation \cite[opmac-doc] for more information about this. +User can create own font-files and register them to the "\fontfam" listing. + +\secc Font modifiers + +You can use ``modifiers'' of the basic variants of family "\rm", "\bf", +"\it", and "\bi". If modifiers are supported then they are listed in the +"\fontfam" listing. For example "TG Heros" family supports two modifiers +"\cond" and "\caps" which means ``condensed'' and ``caps\&small caps''. +The modifiers can be independently combined but they must be immediately +followed by "\rm", "\bf", "\it", "\bi", "\one" or "\fam" control sequences. + +If the modifiers are followed by "\rm", "\bf", "\it", or "\bi" then a +modification of given basics family variant is selected as a single font. If +they are followed by "\one" then a modification of currently selected variant +is used. If they are followed by "\fam" then it works like "\one" but +moreover, the basic font selectors "\tenrm", "\tenbf", "\tenit" and "\tenbi" +are reloaded using given modifiers, so all family selected by macros "\rm", +"\bf", "\it" and "\bi" works with given modification. Example: + +\begtt +\input cs-heros +{\cond\rm ... Normal condensed.} +{\caps\cond\it ... Caps \& small-caps plus condensed italics.} +{\caps\fam ... Caps \& small-caps, now all basic macros + \rm, \bf, \it, \bi keeps this modification.} +\endtt + +All font selectors and their modifiers do setting locally inside TeX group. +The modifiers keep their data in the \TeX{} memory (locally) and they can be +applied afterwards: + +\begtt +{\cond\fam \rm Here is {\it condensed} font family. + \caps\fam \rm Here is {\it Caps \& small-caps} family which is {\it condensed}.} +\endtt + +This means that "\modifier\something" keeps previously selected +modifications and only adds a new one. + +You can combine fonts from more families. The main principle says: +load the main family last. You can +use "\ffletfont\newselector = {mod+var}{size}" for keeping font selectors from +previous loading. Example: + +\begtt +\input cs-heros +\ffletfont \titlefont = {\cond\bf}{at14pt} % Heros condensed for titles +\input cs-termes % Termes at 10 pt for normal text +\endtt + +If you are using XeTeX or LuaTeX then the U (unicode) encoding is used and +OTF fonts are loaded. You can use "\useff{text}" in such case. This works like +another font modifier and does modification of font-features. Use +"otfinfo -f file.otf" to inspect the font features of used font. Example: + +\begtt +\useff{+onum;+salt}\bf ... use Bold variant with oldstyle digits and + stylistic alternatives +\useff{+onum;+salt}\fam ... use given features for whole family. +\endtt + +\secc Font encodings + +The list printed by "\fontfam" macro shows (in parentheses) what encodings +are supported by each font family. The used abbreviations means: + +\begtt +8t ... 8bit T1 encoding stated in Cork +8z ... 8bit XL2 encoding derived from ISO-8859-2, used in Czech and Slovak TeX +7t ... 7bit encoding declared by Knuth in cmr10 font +U ... Unicode, this means that fonts are loaded in OTF format +\endtt + +\csplain{} format with pdf\TeX{} starts in "8z" encoding by default but this can be +changed to "8t" encoding using "\input t1code". If Xe\TeX{} or LuaTeX is +used then "U" encoding is assumed. If encoding is not set by rules mentioned +right before (i.e. non-\csplain{} with pdf\TeX) then "8t" is set. The +default setting can be changed by "\def\fotenc{enc}" before +"\input font-file". The switching to more various encodings inside document +isn't supported. User can prepare such simply macros if it is needed. + +The "7c" encoding (companion encoding to "8t" with more additional characters) +is provided by "exchars.tex" macro file from \csplain. See this macro +file for more details. The macro file "exchars.tex" is used in +"kp-fonts.tex", thus all additional characters are simply accessible. For +example user write "\euro" and it prints \euro{} when \KPfonts{} are selected (or +when "8z" encoding is used because "8z" encoding includes~\euro{} directly). + +\csplain{} format with pdf\TeX{} provides UTF-8 input encoding unsing +enc\TeX{} extension of pdf\TeX{}. This is documented in \cite[csplain-doc]. +So, user can use accented letters and more characters directly. User can +write {\ttset\rm \euro} and it prints \euro{} in \csplain{} when \KPfonts{} +are selected. Non-\csplain{} formats with +pdf\TeX{} don't provide UTF-8 input unless user creates something for this. +But languages with ISO-8859-1 +characters set (Spanish, French, German, \dots) can use their accented +letters encoded in ISO-8859-1 because this encoding is a subset of "8t" font +encoding. Xe\TeX{} and Lua\TeX{} provides UTF-8 input as native input. + + +\secc Math fonts + +The "\fontfam" macro lists the abbreviation of math fonts collection used +together with selected text font family. See the letters after ``plus sign'' in +the output of "\fontfam[?]" in the section~\ref[fontfam]. + +\begtt +AMS ... AMSTeX font collection: Computer Modern plus a set of others +TX .... TX fonts, they are superset of AMS and designed for Times family +KP .... KP math fonts collection, designed for kpfonts +\endtt + +Note that most of text font families are combined with TX font by default. +The italic and roman variants from selected text font family +is used for variables and for math texts like +sin, lim, max. Other symbols are used from TX fonts collection. + +Two math font macro-selectors are provided: "\normalmath" and "\boldmath". +If a math modifiers are available (this is the case of KP math collection +fonts only) then these math modifiers can be used before "\normalmath" or +"\boldmath". These selectors sets the fonts for whole formula inside math +mode. On the other hand, you can use individual math switchers which selects +a math alphabet inside math mode: "\cal" for simple calliraphic, "\script" +for more calligraphic, "\frak" for fraktur and "\bbchar" for double strokes. +Of course, "\rm" and "\it" select normal or italics. But "\bf" and "\bi" +select {\em sans serif} bold and bold-italic, because it is more +conventional to use sans serifed bold in math formulas (for vectors or +matrices, for example). + +\csplain{} package inclues macros for math font collections in the +following files + +\begtt +ams-math.tex ... AMS fonts +tx-math.tex ... TX fonts +ntx-math.tex ... NTX fonts +kp-math.tex ... KP fonts +\endtt +% +These files provide simple loading of math fonts collections including +scaling of the whole collection to desired sizes. Basic features are +documented in these files directly. + +A different math font collection can be combined with text font +family than default. It can be done by "\let\loadmathfonts=\relax" before "\input font-file". +This suppresses the loading of math font family. Then "\input foo-math" can +be used directly. + +You can copy and rename a "foo-math.tex" file and you can do various +modifications or set a complete new math fonts collection. + +\label[kpfonts]\sec The \KPfonts{} manual for plain \TeX{} + +Use "\input kp-fonts". There are twelve modifiers of text fonts of +\KPfonts{} family: + +\begtt +\caps ..... Caps & small caps +\bcaps .... Bigger small-caps +\slant .... Slanted +\sans ..... Sans serif +\ttset .... TypeWriter set +\wlight ... Weight Light +\bext ..... Bold extended +\noflig ... no f ligatures +\oldn ..... Old style numbers +\olds ..... Old style all +\oldsv .... Very old style +\kpreset .. Returns all modifications to default values +\endtt + +And there are next ten math modifiers of KP math fonts collections: + +\begtt +\lightmath .... Light version of math +\widermath .... More amount of spaces between characters +\bfnmath ...... Normal \bf in math (bf sans is default) +\sansmath ..... Sans serif math +\uprightmath .. Capital letters are upright +\bbcharss ..... Blackboard characters sans serif +\greekup ...... Lowercase Greek upright +\partialup .... Upright partial derivations symbol +\narowiints ... Multiplied integrals narrower +\kpmathreset .. Returns to the default setting +\endtt + +\secc Text fonts + +The "\fontfam[Catalog]" prints basic modifications of \KPfonts: + +\medskip + +[KP fonts] + +\def\fontfamsample{ABCDabcd Qsty fi fl + \char225\char233\char237\char243\char250\char252\char183{ }% + \char176\char186\char163{ }% + \char193\char201\char205\char211\char218\char220\char151{ }% + \char144\char154\char130{ }0123456789} + +\def\pp #1#2{\par \noindent + {\tt \tmp\string#2 }% + {#1#2\fontfamsample}} +\def\p #1#2{\ifx.#2\edef\tmp{\ifx\relax#1\relax\else\string#1\fi}% + \else\def\tmp{#2}\fi + \pp {#1}\rm \pp {#1}\bf \pp{#1}\it \pp{#1}\bi} + +\p {}. +\p \caps. +\p \bcaps. +\p \slant. +\p \sans. +\p \ttset. +\p \wlight. +\p \bext. +\p \noflig. +\p \oldn. +\p \olds. +\p \oldsv. + +\medskip + +Of course, you can combine more modifiers independently if this gives a +sense: + +\medskip +\p {\sans\caps}{\string\sans\string\caps} +\p {\sans\caps\oldn}{\string\sans\string\caps\string\oldn} +\p {\ttset\oldsv}{\string\ttset\string\oldsv} +\medskip + +If the combination of modifiers gives no sense or it is not implemented in +\KPfonts{} (for example the combination "\sans\wlight" isn't implemented) +then font is not changed and the warning in the form + +\begtt +WARNING KPfont mods: subfam="ss" wlight="l" bcaps="", noflig="", old="", bext=" +" of variant="mn" in encoding="8t" (jkpsslmn8t) unavailable +\endtt +% +is printed on the terminal and in the log file. + +Because there are ``weight light'' variants, users can use an extended set of +macro selectors: "\lr", "\rm", "\mr", "\bf" and "\li", "\it", "\mi", "\bi", +which are defined by: + +\begtt +\def\lr{\wlight\rm} \def\li{\wlight\it} \def\mr{\wlight\bf} \def\mi{\wlight\bi} +\endtt + +\secc Quiz + +The ``quiz'' published in \cite[kpfonts-story] can be done in plain +\TeX{} too: + +\def\quiz#1{{#1\one A.Queer} says: + make 29 {\bem active} characters is definitely nasty!} + +% \bem: \rm -> \bf, \it -> \bi +\def\bem{\expandafter\ifx\the\font\tenrm \tenbf + \else \expandafter\ifx\the\font\tenit \tenbi \fi\fi} + +\begitems \style n +* {\wlight\oldsv\fam\it \quiz{\rm\caps\olds}} +* {\oldn\fam \quiz\bcaps} +* {\olds\fam \it \quiz\caps} +* {\wlight\noflig\fam \it \quiz{\rm\caps}} +* {\wlight\olds\fam \quiz\caps} +* {\quiz\caps} +* {\noflig\fam \quiz\caps} +* {\wlight\fam \quiz\caps} +* {\it \quiz{\rm\bcaps}} +* {\wlight\noflig\fam \it \quiz\bcaps} +\enditems + +How this ``quiz'' is prepared (using "\begitems" from OPmac): + +\begtt +\def\quiz#1{{#1\one A.Queer} says: + make 29 {\bem active} characters is definitely nasty!} +% \bem: \rm -> \bf, \it -> \bi +\def\bem{\expandafter\ifx\the\font\tenrm \tenbf + \else \expandafter\ifx\the\font\tenit \tenbi \fi\fi} + +\begitems \style n +* {\wlight\oldsv\fam\it \quiz{\rm\caps\olds}} +* {\oldn\fam \quiz\bcaps} +* {\olds\fam \it \quiz\caps} +* {\wlight\noflig\fam \it \quiz{\rm\caps}} +* {\wlight\olds\fam \quiz\caps} +* {\quiz\caps} +* {\noflig\fam \quiz\caps} +* {\wlight\fam \quiz\caps} +* {\it \quiz{\rm\bcaps}} +* {\wlight\noflig\fam \it \quiz\bcaps} +\enditems +\endtt + +\secc Companion set of fonts + +The characters from "7c" encoding is accessible via control sequences listed +in "exchars.tex" file. It means they begin by "\ex" prefix. Only "\euro" can +be used without this prefix: + +\begtt +{The price is 29~\euro. \bf The price is 29~\euro. + \it The price is 29~\euro. \ttset\one The price is 29~\euro.} +\endtt +% +Gives: {The price is 29~\euro. \bf The price is 29~\euro. +\it The price is 29~\euro. \ttset\one The price is 29~\euro.} + +\secc Math fonts + +The math modifiers must be followed by "\normalmath" or "\boldmath" +collection selectors. These modifiers and selectors does nothing in text +fonts and vice versa: text modifiers does nothing in math typesetting. + +\postdisplaypenalty=10000 +\def\mathsample{\par +\nobreak \medskip \hrule\nobreak\bigskip +First some large operators both in text: +$\iiint\limits_{\cal Q} f(x,y,z)\,dx\,dy\,dz$ and +$\prod_{\gamma\in\Gamma_{\!\bar C}} \partial(\widetilde X_\gamma)$; +and also on display: +$$ +\eqalignno{ + \iiiint_{\rm Q} f(w,x,y,z)\,dw\,dx\,dy\,dz &\le + \oint\nolimits_{\partial Q} + f' \left(\max\left\{ {\|w\|\over |w^2+x^2|}; {\|z\|\over |y^2+x^2|}' + {\|w\oplus z\|\over \|x\oplus y\|}\right\}\right) \cr + &\precapprox + \biguplus_{{\bbchar Q} \Subset \bar{\rm Q}} \left[ f^* \left( + {\left\lmoustache{\bbchar Q}(t)\right\rmoustache \over \sqrt{1-t^2}} + \right) \right]_{t=\alpha}^{t=\theta} & (1) +} +$$ + +For $x$ in the open interval $\mathopen]-1\mathclose[$ the infinite sum in +Equation~(2) is convergent; however, this does not hold throughout the closed +interval $[-1,1]$. +$$ + (1-x)^{-k} = 1 + \sum_{j=1}^\infty (-1)^j {k \atopwithdelims\{\} j} x^j + \quad \hbox{for $k\in{\bbchar N}; k\ne 0$.} \eqno (2) +$$ +\par\nobreak\medskip\hrule\medskip +} + +As an example we give the same sample from the article \cite[kpfonts-story]. +Fist, "\normalmath" without modifiers: + +\mathsample + +Now, we declare "\lightmath\narrowiints\normalmath" and "\wlight\fam": + +{\lightmath\narrowiints\normalmath \wlight\fam \mathsample} + +Third example declares "\greekup\normalmath": + +{\greekup\normalmath \mathsample} + +Next sample si lighter by "\lighmath\partialup\normalmath" and "\wlight\fam": + +{\lightmath\partialup\normalmath \wlight\fam \mathsample} + +The example with sans serif math can be achieved by "\sansmath\normalmath": + +{\sansmath\normalmath \mathsample} + +The following sample uses "\widermath\uprightmath\normalmath": + +{\widermath\uprightmath\normalmath \normalmath \mathsample} + +The last example combines sans serif with narrow multiple integrals and +upright caps and Greek by +"\sansmath\uprightmath\narrowiints\greekup\partialup\normalmath" with +"\sans\fam": + +{\sansmath\uprightmath\narrowiints\greekup\partialup\normalmath \sans\fam \mathsample} + +\filbreak + +\label[ffmac]\sec Notes for macro writers and developers of font-files + +The font-files include "ff-mac.tex" from \csplain{} package where basic +macros for declaration of independent font modifiers are prepared. +Macro programmers can get inspiration in the "cs-heros.tex" font-file where +two independent font modifiers are declared ("\caps" and "\cond") and where +the macros from the "ff-mac.tex" are documented in detail. + +If you are using Unicode fonts in Xe\TeX{} or Lua\TeX{} then you can +get more inspiration in the file "cs-liberation.tex". Use +{\tt\string"...\string"} notation for font names (i.\,e.\ no "{...}") because +it works for both engines: Xe\TeX{} and Lua\TeX. + +Note, that all features of \KPfonts{} are implemented in two +files "kp-fonts.tex" and "kp-math.tex" with 320 lines of code in total. On +the other hand, the \KPfonts{} macro support for \LaTeX{} is implemented in the +"kpfonts.sty" with 1680 lines of code plus next 195 "*.fd" files, which gives +15~thousands lines in total. + + +\sec References + +\bib [kp-fonts] \url{http://www.ctan.org/pkg/kpfonts} +\bib [csplain] \url{http://www.ctan.org/pkg/csplain} +\bib [tb-csplain] \url{http://petr.olsak.net/ftp/olsak/bulletin/tb106olsak-opmac.pdf} +\bib [opmac] \url{http://petr.olsak.net/opmac-e.html} +\bib [opmac-doc] \url{http://petr.olsak.net/ftp/olsak/opmac/opmac-u-en.pdf} +\bib [csplain-doc] \url{http://petr.olsak.net/csplain-e.html} +\bib [kpfonts-story] \url{http://www.tug.org/TUGboat/tb31-3/tb99caignaert.pdf} + +\bye diff --git a/Master/texmf-dist/doc/cstex/opmac-d.tex b/Master/texmf-dist/doc/cstex/opmac-d.tex index 85482f28976..2b85b79ba80 100644 --- a/Master/texmf-dist/doc/cstex/opmac-d.tex +++ b/Master/texmf-dist/doc/cstex/opmac-d.tex @@ -8,7 +8,7 @@ % UTF-8 encTeX has a conflict with DocByTeX \chyph -\def\projectversion{Apr. 2016} +\def\projectversion{May 2016} \def\headtitle{OPmac} \widowpenalty=10000 @@ -259,11 +259,10 @@ souboru nar Makro \db replacestrings "{}{}" vymn v makru "\tmpb" veker vskyty "" za "". Pro tento el definuje pracovn -makro \db replacestringsA se separtorem "". Jak to pracuje je -ukzno na pkladu ne. +makra \db replacestringsA a \db replacestringsB se separtorem "". +Jak to pracuje je ukzno na pkladu ne. Ped sputnm "\replacestringsA" je teba nejprve vyvrhnout obsah "\tmpb" -do vstupn fronty, pot provst "\def\tmpb{}" a nakonec provst -"\replacestringsA". To je udlno pomoc triku s "\edef\tmpb" a se dvma "\expandafter". +do vstupn fronty pomoc "\expandafter". V makru pracujeme s tokeny "!" a "?" kategorie 3, kter slou jako separtory. Pedpokldme, e takov nestandardn tokeny se ve zpracovvanm textu nikdy neobjev, protoe vykink a otaznk maj normln kategorii @@ -272,26 +271,29 @@ textu nikdy neobjev \inext{bgroup}{\empty}{+-} Jak to pracuje si ukeme na pkladu "\replacestrings{XX}{YY}", pokud mme -v "\tmpb" uloen teba text "ahaXXuffXXkonec". Makro "\replacestringsA" je v -takovm ppad definovno jako: +v "\tmpb" uloen teba text "ahaXXuffXXkonec". Makra "\replacestringsA" a +"\replacestringsB" jsou v takovm ppad definovna jako: \begtt -\def\replacestringsA #1XX#2!{% - \ifx!#2!\addto\tmpb{#1}\else\addto\tmpb{#1YY}\replacestringsA#2!\fi}% +\def\replacestringsA #1XX{\def\tmpb{#1}\replacestringsB} +\def\replacestringsB #1XX{\ifx!#1\relax\else + \addto\tmpb{YY#1}\expandafter\replacestringsB\fi}% \endtt % a jednotliv kroky zpracovn probhaj takto: \begtt -\replacestringsA ahaXXuffXXkonec?XX! -#1 = "aha" #2 = "uffXXkonec?XX!" -\addto\tmpb{ahaYY} -\replacestringsA uffXXkonec?XX! -#1 = "uff" #2 = "konec?XX!" -\addto\tmpb{uffYY}, tj. \tmpb obsahuje "ahaYYuffYY". -\replacestringsA konec?XX! -#1 = "konec?" #2 = "" (przdn parametr) -\addto\tmpb{konec?}, tj. \tmpb obsahuje "ahaYYuffYYkonec?" a rekurze kon. +\replacestringsA ahaXXuffXXkonec?XX!XX +#1 = "aha" zbytek fronty = "uffXXkonec?XX!" +\def\tmpb{aha} +\replacestringsB uffXXkonec?XX!XX +#1 = "uff" zbytek fronty = "konec?XX!" +\addto\tmpb{YYuff}, tj. \tmpb obsahuje "ahaYYuff". +\replacestringsB konec?XX!XX +#1 = "konec?" zbytek fronty = "!XX" +\addto\tmpb{YYkonec?}, tj. \tmpb obsahuje "ahaYYuffYYkonec?" +\replacestringsB !XX +#1 = ! zbytek fronty przdn, rekurze kon \endtt % Dle se pedefinuje "\def\replacestrin""gsA#1?{\def\tmpb{#1}}" a provede se @@ -306,6 +308,11 @@ tedy t dvali? Kdyby tam nebyl, tak by nesprvn fungovalo "\replacestrings{XX}{YY}" pi "\tmpb" ve tvaru "ahaX". +Makro "\replacestrings" je kompromisem mezi jednoduchost a pijatelnmi +monostmi. Nefunguje nad textem s nesprovanmi "\if...\fi" a tak +pi "\def\tmpb{{aha}XX}\replacestrings{XX}{YY}" se bohuel odstran kuerav +zvorky kolem "aha". Mete teba pidat ped kadou dvojici takovch +zvorek "\empty", abyste mli jistotu, e zvorky nezmiz. \subsec Globln parametry %%%%%%%%%%%%%%%%%%%%%%%%%% @@ -825,7 +832,8 @@ Fonty pro titul, kapitoly a sekce \db titfont, jsou definovny jako odpovdajc zvten a nastaven tunho duktu. Ten je nastaven pomoc \db bfshape jako "\bf" a navc je ztotonn "\tenit" s "\tenbi", take kdy nyn uivatel nape "\it", dostane tunou -kurzvu. +kurzvu. Tun varianty matematickch font se zavedou a pi pouit +matematickho mdu v nadpise (viz "\everymath"). \inext{titfont}{\empty}{+-} diff --git a/Master/texmf-dist/doc/cstex/opmac-u-en.pdf b/Master/texmf-dist/doc/cstex/opmac-u-en.pdf index 4ac1c8b789e..6fbe0c87bd0 100644 Binary files a/Master/texmf-dist/doc/cstex/opmac-u-en.pdf and b/Master/texmf-dist/doc/cstex/opmac-u-en.pdf differ diff --git a/Master/texmf-dist/doc/cstex/opmac-u-en.tex b/Master/texmf-dist/doc/cstex/opmac-u-en.tex index 0dd65224551..257759e38a9 100644 --- a/Master/texmf-dist/doc/cstex/opmac-u-en.tex +++ b/Master/texmf-dist/doc/cstex/opmac-u-en.tex @@ -107,6 +107,49 @@ don't need to use Czech/Slovak specific features\fnote or ``CZ/SK outline-conversion is off'' may occur without \csplain{}.}. +\sec Selection of font family +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +OPmac doesn't select a special default font family. The default is the same as in +plain \TeX{} (CM fonts) or \CS{}plain (CS fonts). It is possible to "\input" +so called ``font-files'' for loading a font family, i.\,e.\ typically four +variants of fonts "\rm", "\bf", "\it" and "\bi". The font-files use +primitive command "\font" for loading individual fonts. + +You need not to remember names: use +"\fontfam[]" macro which loads the appropriate font-file. The +argument "" is case insensitive and spaces are ignored. So, +"\fontfam[Times Roman]" is equal to "\fontfam[TimesRoman]" and it is equal +to "\fontfam[timesroman]". Several aliases are prepared, thus +"\fontfam[times]" can be used for loading Times Roman family too. + +If you write "\fontfam[?]" then all available font families are listed on +the terminal and in the log file. The listing looks like: + +\begtt + [LM Fonts] {\rm \bf \it \bi ; mod:\caps ; +AMS} (8z 8t u) + [TG Heros] {\rm \bf \it \bi ; mod:\caps \cond ; +TX} (8z 8t) + ... +\endtt + +The "" is followed by the list of basic variant selectors, then +available variant modifiers are listed. After plus character, the default +set of math fonts used together with given family is named. The available +font encodings are written in round brackets. More information about +"\fontfam" macro can be found in the "fontfam.tex" file. + +The modifiers of basic variant selectors ("\caps", "\cond" for example) must +be used immediately before the variant selector and they can be +(independently) combined: "\caps\it" or "\cond\caps\bf". The modifiers can +be followed by "\fam" command instead of normal variant selector. Then +current variant is kept (but modified) and all consecutive +basic variant selectors are modified too. More about font modifers are +mentioned in the "cs-heros.tex" file and in the article "kpfonts-plain.pdf". + +The "\fontfam[Catalog]" prints a font catalogue of all configured font +families. + + \sec Font sizes %%%%%%%%%%%%%%% @@ -182,48 +225,6 @@ This is {\em important} text. % = This is {\it important\/} text. \bi This is {\em important} text. % = This is\/ {\bf important} text. \endtt -\sec Selection of font family -%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -OPmac doesn't select default font family. The default is the same as in -plain \TeX{} (CM fonts) or \CS{}plain (CS fonts). It is possible to "\input" -so called ``font-files'' for loading a font family, i.\,e.\ typically four -variants of fonts "\rm", "\bf", "\it" and "\bi". The font-files use -primitive command "\font" for loading individual fonts. - -You need not to remember names of font-files if you are using -"\fontfam[]" macro which loads the appropriate font-file. The -argument "" is case insensitive and spaces are ignored. So, -"\fontfam[Times Roman]" is equal to "\fontfam[TimesRoman]" and it is equal -to "\fontfam[timesroman]". Several aliases are prepared, thus -"\fontfam[times]" can be used for loading Times Roman family too. - -If you write "\fontfam[?]" then all available font families are listed on -the terminal and in the log file. The listing looks like: - -\begtt - [LM Fonts] {\rm \bf \it \bi ; mod:\caps ; +AMS} (8z 8t u) - [TG Heros] {\rm \bf \it \bi ; mod:\caps \cond ; +TX} (8z 8t) - ... -\endtt - -The "" is followed by the list of basic variant selectors, then -available variant modifiers are listed. After plus character, the default -set of math fonts used together with given family is named. The available -font encodings are written in round brackets. More information about -"\fontfam" macro can be found in the "fontfam.tex" file. - -The modifiers of basic variant selectors ("\caps", "\cond" for example) must -be used immediately before the variant selector and they can be -(independently) combined: "\caps\it" or "\cond\caps\bf". The modifiers can -be followed by "\fam" command instead of normal variant selector. Then -current variant is kept (but modified) in such case and all consecutive -basic variant selectors are modified too. More about font modifers are -mentioned in the "cs-heros.tex" file. - -The "\fontfam[Catalog]" prints a font catalogue of all configured font -families. - \sec Parts of the document %%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1399,7 +1400,7 @@ the end. \def\tthook{\adef!{\string\endtt}\adef&{\kern.25em}} \begtt \tit Title (terminated by end of line) -\chap Chapter Title (terminated byend of line) +\chap Chapter Title (terminated by end of line) \sec Section Title (terminated by end of line) \secc Subsection Title (terminanted by end of line) diff --git a/Master/texmf-dist/doc/cstex/opmac-u.pdf b/Master/texmf-dist/doc/cstex/opmac-u.pdf index a80e01d341c..85a7cb0865d 100644 Binary files a/Master/texmf-dist/doc/cstex/opmac-u.pdf and b/Master/texmf-dist/doc/cstex/opmac-u.pdf differ diff --git a/Master/texmf-dist/doc/cstex/opmac-u.tex b/Master/texmf-dist/doc/cstex/opmac-u.tex index 7bc11f38da4..0235db1c4da 100644 --- a/Master/texmf-dist/doc/cstex/opmac-u.tex +++ b/Master/texmf-dist/doc/cstex/opmac-u.tex @@ -55,8 +55,8 @@ koncepce \TeX{}u. Skoro nikdo se v~tom nevyzná. Soubor "latex.ltx" obsahuje 8000 řádků a schopnosti \LaTeX{}u jsou navíc ukryty v~desítkách různých dalších makro souborech, zatímco v~OPmac vidíte vše pohromadě a názorně. Navíc v některých věcech OPmac výrazně překračuje možnosti \LaTeX{}u: -generování rejstříků bez externího programu, práce s~předgenerovanou -databází bibliografických záznamů, listingy externích souborů. +generování rejstříků bez externího programu, přímé čtení "*.bib" souborů +bez bib\TeX{}u, listingy externích souborů. Balík OPmac nabízí podobně jako \LaTeX{} autorům textů {\it rozhraní}, tj. smluvenou sadu značek na vymezení struktury dokumentu. Je jiná, než v @@ -66,14 +66,7 @@ dokumentu. Bez doplňujících maker vyleze jednoduchý střízlivý dokument. Předpokládá se, že autor dodatečných plain\TeX{}ových maker ušije vzhled dokumentu na míru konkrétnímu požadavku. -Makro OPmac ponechává implicitní fonty \csplain{}u a načítá -soubor {\tt ams-math.tex}, takže funguje kompletní matematická sazba -v~libovolné velikosti. Jsou k dispozici rozšiřující matematické -abecedy a dále stovky nových kontrolních sekvencí umožňujících uživateli -přístup ke speciálním matematickým symbolům. -Není ovšem vyloučeno, že uživatel -po načtení {\tt opmac.tex} zavede jiné fonty a použije jiný balíček typu -{\tt *-math.tex}, například {\tt tx-math.tex}. Příklad začátku dokumentu: +Příklad začátku dokumentu: \begtt \input opmac % zavedení makra OPmac @@ -82,12 +75,58 @@ po načtení {\tt opmac.tex} zavede jiné fonty a použije jiný balíček typu \typosize[12/14] % nastavení základní velikosti sazby \endtt -Makro OPmac potřebuje ke své činnosti \csplain{} optimálně ve verzi aspoň -"Nov.2012". Po vynaložení menšího úsilí funguje OPmac i v plain\TeX{}u -samotném. +Makro OPmac spolupracuje s běžnými plain\TeX{}ovými formáty: s Knuthovým +klasickým \hbox{plain}\TeX{}em nebo s \csplain{}em nebo s plain\TeX{}em +doplněným makry z~"etex.src" (ten je v~běžných \TeX{}ových distribucích +základním formátem pdf\TeX{}u, Xe\TeX{}u a Lua\TeX{}u). Uživatelům OPmac nabízím konzultace po emailu a uvítám hlášení o chybách. -Pojďme společnými silami tomu odstranit případné mouchy a mušky. +Výsledky konzultací typicky zveřejňuji na +\url{http://petr.olsak.net/opmac-tricks.html}, kde najdete desítky +nejrůznějších řešení dílčích problémů. + + +\sec Výběr fontové rodiny +%%%%%%%%%%%%%%%%%%%%%%%%% + +OPmac implicitně rodinu fontů nenastavuje, tj. fonty jsou připraveny stejné +jako v plainTeXu (CM fonty) nebo v \CS{}plainu (CS fonty). Je ale možné +použít tzv. \uv{fontové soubory} pro zavedení jiné fontové rodiny, tj. +typicky čtyř základních variant "\rm", "\bf", "\it" a "\bi". Tyto soubory +interně používají primitivní příkaz "\font" pro zavedení jednotlivých fontů. + +Nemusíte si pamatovat název souboru, který je potřeba pro zavedení fontové +rodiny použít. Stačí napsat "\fontfam[]" a požadovaný +soubor se načte. V argumentu nezáleží na mezerách a velkých +písmenech, takže "\fontfam[Times Roman]" je totéž jako +"\fontfam[TimesRoman]" i jako "\fontfam[timesroman]". Také je připraveno +několik běžných aliasů, takže třeba "\fontfam[times]" rovněž zavede rodinu +Times~Roman. + +Použijete-li "\fontfam[?]", zobrazí se na terminálu a v log souboru přehled +všech fontových rodin dostupných pomocí fontových souborů. Část seznamu vypadá +takto: + +\begtt + [LM Fonts] {\rm \bf \it \bi ; mod:\caps ; +AMS} (8z 8t U) + [TG Heros] {\rm \bf \it \bi ; mod:\caps \cond ; +TX} (8z 8t) +\endtt +% +Nejprve je uveden , pak následuje seznam základních selektorů +pro výběr variant v dané rodině, dále seznam dostupných modifikátorů těchto +základních selektorů, pak za znakem plus je uvedena implicitní matematická +sada fontů užitá k vybrané rodině a konečně v kulaté závorce je seznam +kódování, které rodina fontů podporuje. Více informací o makru "\fontfam" +lze najít v souboru "fontfam.tex". + +Modifiátory (např. "\caps", "\cond") se píší těsně před selektor varianty, +tedy například "\caps\it" nebo "\cond\caps\bf". Modifikátory následované +příkazem "\fam" (např. "\caps\fam") nastaví modifikátor pro všechny následně +použité základní selektory. Modifikátory pracují nezávisle na sobě. Více +se o nich píše v souboru "cs-heros.tex" nebo v článku "kpfonts-plain.pdf". + +Použijete-li "\fontfam[Catalog]", vytiskne se katalog dostupných fontových +rodin. \sec Velikosti fontů a řádkování @@ -125,7 +164,7 @@ prázdný, je to stejné, jako by byl roven 1000. \typoscale[\magstep2/] % \magstep2 je 1440, tj. fonty se zvětší 1,44krát \endtt -Někdy je žádoucí (např. při přechodu na poznámky pod čarou) zmenšit vzhledem +Někdy je žádoucí (např. při přechodu na poznámky pod čarou) zmenšit font vzhledem ke stále stejné velikosti písma. Stačí psát "\typobase\typoscale[/<řádkování>]". Pak se provede zvětšení/zmenšení vzhledem k {\em základnímu písmu}, což je písmo nastavené po prvním použití @@ -143,7 +182,7 @@ podle velikosti nastavené pomocí "\typosize" nebo "\typoscale". Příklad: \typosize[20/] Taky \zapfchan přepne do Zapf-Chancery ve velikosti 20pt. \endtt -Při inicializaci \csplain{}u je registrováno pět fontových přepínačů +OPmac registruje pět fontových přepínačů ukrytých v makrech "\rm", "\it", "\bf", "\bi", "\tt". Takže tato makra implicitně nastavují font do stanovené velikosti. @@ -176,47 +215,6 @@ To je {\em zdůrazněný} text. % jako: To je {\it zdůrazněný\/} text. \endtt -\sec Výběr fontové rodiny -%%%%%%%%%%%%%%%%%%%%%%%%% - -OPmac implicitně rodinu fontů nenastavuje, tj. fonty jsou připraveny stejné -jako v plainTeXu (CM fonty) nebo \CS{}plainu (CS fonty). Je ale možné -použít tzv. \uv{fontové soubory} pro zavedení jiné fontové rodiny, tj. -typicky čtyř základních variant "\rm", "\bf", "\it" a "\bi". Tyto soubory -interně používají primitivní příkaz "\font" pro zavedení jednotlivých fontů. - -Nemusíte si pamatovat název souboru, který je potřeba pro zavedení fontové -rodiny použít. Stačí napsat "\fontfam[]" a požadovaný -soubor se načte. V argumentu nezáleží na mezerách a velkých -písmenech, takže "\fontfam[Times Roman]" je totéž jako -"\fontfam[TimesRoman]" i jako "\fontfam[timesroman]". Také je připraveno -několik běžných aliasů, takže třeba "\fontfam[times]" rovněž zavede rodinu -Times~Roman. - -Použijete-li "\fontfam[?]", zobrazí se na terminálu a v log souboru přehled -všech fontových rodin dostupných pomocí fontových souborů. Část seznamu vypadá -takto: - -\begtt - [LM Fonts] {\rm \bf \it \bi ; mod:\caps ; +AMS} (8z 8t U) - [TG Heros] {\rm \bf \it \bi ; mod:\caps \cond ; +TX} (8z 8t) -\endtt -% -Nejprve je uveden , pak následuje seznam základních selektorů -pro výběr variant v dané rodině, dále seznam dostupných modifikátorů těchto -základních selektorů pak za znakem plus je uvedena implicitní matematická -sada fontů užitá k vybrané rodině a konečně v kulaté závorce je seznam -kódování, které rodina fontů podporuje. Více informací o makru "\fontfam" -lze najít v souboru "fontfam.tex". - -Modifiátory (např. "\caps", "\cond") se píší těsně před selektor varianty, -tedy například "\caps\it" nebo "\cond\caps\bf". Modifikátory následované -příkazem "\fam" (např. "\caps\fam") nastaví modifikátor pro všechny následně -použité základní selektory. Modifikátory pracují nezávisle na sobě. Více -se o nich píše v souboru "cs-heros.tex". - -Použijete-li "\fontfam[Catalog]", vytiskne se katalog dostupných fontových -rodin. \label[cleneni] @@ -1768,10 +1766,10 @@ znakem. \usebbl/? % použití předgenerované databáze, ? je z {a,b,c} \usebib/? (