%% This is part of the OpTeX project, see http://petr.olsak.net/optex \_codedecl \_undefined {Font catalogue <2023-06-04>} % loaded on demand by \fontfam[catalog] \_tracinglostchars=1 % only to log file \_initunifonts \_raggedbottom \_begingroup \_istoksempty\_catalogmathsample \_iftrue \_noloadmath \_else \_input{unimath-codes.opm}\_fi \_global\_font\_ttfixed=[LMMono10-Regular]\_relax \_fontlet\_smalltt=\_ttfixed at7pt \_suppressfontnotfounderror=1 \_lowercase\_ea{\_ea\_def\_ea\_cataloglist\_ea{\_the\_catalogonly}} \_lowercase\_ea{\_ea\_def\_ea\_catalognolist\_ea{\_the\_catalogexclude}} \_ifx\_cataloglist\_empty \_else \_addto\_cataloglist{ } \_edef\_cataloglist{\_ea\_removespaces\_cataloglist{} } \_fi \_ifx\_catalognolist\_empty \_else \_addto\_catalognolist{ } \_edef\_catalognolist{\_ea\_removespaces\_catalognolist{} } \_fi \_def\_faminfo [#1]#2#3#4{% \_bgroup \_rightskip=0sp plus 1fill \_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}% \_edef\_act{\_noexpand\_isinlist{,\_cataloglist,}{,\_famname,}}\_act \_iftrue \def\_cataloglist{}\_fi \_edef\_act{\_noexpand\_isinlist{,\_catalognolist,}{,\_famname,}}\_act \_iftrue \def\_cataloglist{.}\_fi \_ifx\_cataloglist\_empty \_ifx^#4^\_else \_the\_catalognextfam {\_ttfixed\_string\fontfam [#1] -- (#2)\_par}\_nobreak \_input #3.opm \_ifexistfam \_nobreak\_medskip \_dosamples #4:{}\_par \_ifx\_mathfaminfo\_empty \_else \_istoksempty\_catalogmathsample \_iftrue {\_nobreak \_ttfixed \$Default math font\$: \_mathfaminfo \_par} \_else Default math font (\_mathfaminfo): \_the\_catalogmathsample \_par \_fi\_fi \_else {\_qquad\_ttfixed ... family skipped, fonts not found in your system.\_nl \_null\_qquad ... where is the family from:\_nl \_null\_qquad\_qquad\_the\_famsrc} \_fi\_fi\_fi \_egroup } \_def\_dosamples #1:#2{\_ifx^#2^\_else \_def\_printvars{#2}% \_nospaceafter\_dosamplesA #1,,% \_ea\_dosamples\_fi } \_def\_dosamplesA#1,{% \_ifx^#1^\_else \_ifx-#1\_def\_usemodifiers{}\_else \_def\_usemodifiers{#1}\_fi \_ea \_dosamplesB \_printvars \_relax \_ea \_dosamplesA \_fi } \_def\_dosamplesB#1{% \_ifx\_relax#1 \_else \_ifhmode \_nl \_fi {\_ttfixed \_detokenize\_ea{\_usemodifiers}\_detokenize{#1}\_unskip:} {\_usemodifiers #1\_ea\_ifx\_the\_font \_nullfont \_ttfixed ... This font isn't available in your system.% \_else \_the\_catalogsample \_fi }% \_ea \_dosamplesB \_fi } \_def\_wlog#1{\_smallskip \_hbox to\_hsize{\_hskip25pt \_edef\_tmp{#1}\_replstring\_tmp{^^J}{\_endgraf}% \_smalltt \_noindent \_ea \string \_csname \_currfamily\_endcsname \_vtop{\leftskip=1em \_baselineskip=9pt \_tmp \_par}\_hss \_if\_relax\_the\_famfrom\_relax \_else from: \_the\_famfrom \_fi } } \_gdef\0#1{\_ifnum#1<10 0\_fi\_the#1} \_global\_footline={\_hfil\_ttfixed\_the\_pageno\_hfil} \_global\_headline={\_ttfixed Font Catalogue generated by \_OpTeX/ \_hfill \_the\_year-\0\_month-\0\_day} \_parindent=0pt \_ttfixed \_input fams-ini.opm \_isfile {fams-local.opm}\_iftrue \_famfrom{}\_input fams-local.opm \_fi \_endgroup \_the\_catalognextfam {} \parindent=0pt \nonum\sec Customization of the catalog You can redeclare the printed sample of each font by: \begtt \catalogsample={Hello world!} \endtt before \code{\\fontfam[catalog]} command is used. You can specify \code{\\catalogmathsample} if you want to show default math fonts too, for example \begtt \catalogmathsample={Gamma function is defined as $$ \Gamma(z) = \int_0^\infty x^{z-1} e^{-x}{\rm d}x, \quad \Re(z)>0. $$} \endtt % The \code{\\catalogmathsample} is empty by default, so math fonts are not loaded, only the family of default math font is listed. \bigskip You can restrict the families to be printed in the catalog by: \begtt \catalogonly={Termes, Latin Modern, Heros} \endtt If the \code{\\catalogonly} is empty (this is default value) then all families are printed but families listed in the \code{\\catalogexclude} are excluded. For example \begtt \catalogexclude={Latin Modern, XCharter} \endtt The \code{\\cataogexclude} is empty by default. \bigskip The material printed at the beginning of each font family is stored in the \code{\\catalognextfam} tokens register. Default value is \code{\\bigskip} but you can set (for example) \code{\\catalognextfam={\\vfil\\break}} in order to start each font family on a next page. \bigskip The font families printed in the catalogue must be declared by the \code{\\_faminfo} command in the file \code{fams-ini.opm} (declarations used as default for \OpTeX/) or in the file \code{fams-local.opm}. The second file does not exist by default but users can create it. The syntax rules are described in the \code{fams-ini.opm} file. \_endcode % ------------------------------------- 2023-06-04 line breaking optimized 2023-06-01 \_catalognextfam introduced, \_nobreak inserted 2023-03-09 \_famsrc introduced 2022-07-11 \_raggedbottom added 2022-02-22 \_ttfixed, \footline set as global, bug fixed 2020-02-26 released