X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fchkconfig.ltx;h=957ea22d0855a3cabc760f3d938acce2b9e72132;hb=7f1cb306f942709601314f3e396f0e01defdc45d;hp=002b0ccd29a9e0a11aaf321f1cb6c9d902a77d5b;hpb=9c662bf442d53d079e170e89718e6adb9a15001e;p=lyx.git diff --git a/lib/chkconfig.ltx b/lib/chkconfig.ltx index 002b0ccd29..957ea22d08 100644 --- a/lib/chkconfig.ltx +++ b/lib/chkconfig.ltx @@ -9,7 +9,7 @@ % This script is in fact a complete rewrite of the original chkconfig % script. Expect bugs. -%%% If you want to add new packages/documentclasses to be recognized, +%%% If you want to add new packages/document classes to be recognized, %%% read the explanation that follow and jump to the section 'Actual %%% inspection code' below. You do not need to understand the ugly %%% LaTeX code below to help improving chkconfig.ltx :-) @@ -27,6 +27,9 @@ %%% This inset will automatically display a boxed "yes" or "no" %%% depending on the availability of the package. %%% +%%% Since \TestPackage does not find font metric (tfm) files, there's an +%%% additional test \TestFont[]{} for this purpose. +%%% %%% For document classes, things are even simpler, since you do not %%% need to edit this file. Just put your layout file in some place %%% where LyX can find it and add if you wish a description in @@ -51,15 +54,23 @@ % script generates the needed macro calls automatically. % \TestPackage[]{} tests whether .sty (or , % if it is provided) exists. -% Both commands call \AddVariable to give value 'yes' or 'no' to +% \TestFont[]{} test whether .tfm (or .tfm, +% if provided) exists. +% These three commands call \AddVariable to give value 'yes' or 'no' to % the variable chk_. %%% \newcommand{\prefix}{+} % the character used by grep to filter 'good' output -\newcommand{\AddLayout}[4][\default]{ +\newcommand{\AddLayout}[5][\default]{ \def\default{#2} - \immediate\write\layouts{"#2" "#1" "#3" "#4"}} + \@ifundefined{category@#2}{% + \immediate\write\layouts{"#2" "#1" "#3" "#4" "#5" ""}% + }{% + \immediate\write\layouts{"#2" "#1" "#3" "#4" "#5" "\@nameuse{category@#2}"}% + } +} + \newcommand{\AddVariable}[2]{ \immediate\write\vars{chk_#1='#2'}} @@ -76,14 +87,28 @@ \def\files{#1} \message{^^J\prefix checking for #3 #2 [#1]...} \let\firstelement\relax + \let\missingelements\empty \existstrue \@for\file:=\files\do{ \ifx\firstelement\relax \edef\firstelement{\file} \fi - \IfFileExists{\file} + \@expandtwoargs\in@{.}{\file} + \ifin@ + \def\myfile{\file} + \else + \def\myfile{\file.#4} + \fi + \IfFileExists{\myfile} {} - {\IfFileExists{\file.#4}{}{\existsfalse}} + { + \existsfalse + \ifx\missingelements\empty + \edef\missingelements{\myfile} + \else + \edef\missingelements{\missingelements,\myfile} + \fi + } } \ifexists \message{yes^^J} @@ -95,6 +120,65 @@ #6 \fi} +% Tests whether an package is present in a specific version (or newer) +% Syntax: \TestPackageVersion{}{} + +\newcommand{\TestPackageVersion}[2]{ + % The actual test only works if the package has been loaded before + \IfFileExists{#1.sty}{\RequirePackage{#1}}{} + \@TestPackageVersion{#1}{#2} +} + +\newcommand{\@TestPackageVersion}[2]{ + \message{^^J\prefix checking for package #1 at least as of #2...} + \IfFileExists{#1.sty} + { + \@ifpackagelater{#1}{#2}{\existstrue}{\existsfalse} + } + { + \existsfalse + } + \ifexists + \message{yes^^J} + \AddVariable{#1}{yes} + \AddPackage{#1-#2} + \else + \message{no^^J} + \AddVariable{#1}{no} + \fi} + + +% Test for the LaTeX version +\newcommand{\TestLaTeXVersion}[1]{ + \message{^^J\prefix checking for LaTeX version at least as of #1...} + \@ifl@t@r\fmtversion{#1}{\existstrue}{\existsfalse} + \ifexists + \message{yes^^J} + \AddVariable{#1}{yes} + \AddPackage{LaTeX-#1} + \else + \message{no^^J} + \AddVariable{#1}{no} + \fi} + + +% Adapted from ltxcheck.tex +\newcommand{\TestFont}[2][\default]{ + \def\default{#2} + \batchmode + \font\test=#1\relax + \nonstopmode + \message{^^J\prefix checking for font #2 [#1]...} + \ifx\test\nullfont + \message{no^^J} + \AddVariable{#2}{no} + \@tempswatrue + \else + \message{yes^^J} + \AddVariable{#2}{yes} + \AddPackage{#2} + \fi} + \newcommand{\TestPackage}[2][\default]{ \TestItem[#1]{#2}{package}{sty}{\AddPackage{#2}}{}} @@ -108,20 +192,14 @@ \newcommand{\DeclareLaTeXClass}[2][\default]{ \TestItem[#1]{\layoutname}{document class}{cls} - {\AddLayout[\firstelement]{\layoutname}{#2}{true}} - {\AddLayout[\firstelement]{\layoutname}{#2}{false}} + {\AddLayout[\firstelement]{\layoutname}{#2}{true}{\missingelements}} + {\AddLayout[\firstelement]{\layoutname}{#2}{false}{\missingelements}} } -% Only for compatibility. Will be removed later. -\let\DeclareSGMLClass=\DeclareDocBookClass - -\newcommand{\DeclareDocBookClass}[2][\default]{ - \message{^^J\prefix checking for docbook\space\space class \layoutname... } - \@ifundefined{hasdocbook} - {\message{no^^J} - \AddLayout[#1]{\layoutname}{#2}{false}} - {\message{yes^^J} - \AddLayout[#1]{\layoutname}{#2}{true}} +\newcommand{\DeclareCategory}[2]{ + \@ifundefined{category@#1} + {\global\@namedef{category@#1}{#2}}% + {}% we have already defined this one. } % Stolen from article.cls @@ -139,7 +217,7 @@ \immediate\write\layouts{% # This file declares layouts and their associated definition files.^^J% # It has been automatically generated by configure^^J% -# Use "Options/Reconfigure" if you need to update it after a^^J% +# Use "Tools/Reconfigure" if you need to update it after a^^J% # configuration change. Run ./configure manually to update the^^J% # system wide version of this file.} @@ -156,6 +234,19 @@ \message{^^J\prefix checking for LaTeX version... \fmtversion} \AddVariable{fmtversion}{\fmtversion} +%%% Crucial versions +% This one introduces \textsubscript +\TestLaTeXVersion{2005/12/01} +% This one introduces path encoding changes +\TestLaTeXVersion{2019/10/01} +% This introduces all math and text spaces +% previously only available via amsmath +\TestLaTeXVersion{2020/10/01} +% This robustifies LaTeX commands +\TestLaTeXVersion{2021/06/01} +% Introduction of \\DocumentMetadata +\TestLaTeXVersion{2022/06/01} + %%% And now, the list of available languages % The trick is to know that \the\everyjob contains something like % \typeout{LaTeX2e <2001/06/01>} @@ -179,6 +270,11 @@ \fi % (3) handle the result +% FIXME: As of 2016, babel does not print out the loaded hyphenation patterns to +% the log anymore, so this discontinues to work. For possible workarounds +% (with babel), see https://tex.stackexchange.com/questions/330085/ +% Leaving this activated for the time being, since it probably still +% works with older distributions. \message{^^J\prefix checking for available hyphenation patterns... \langs} \AddVariable{languages}{\langs} @@ -219,67 +315,162 @@ \fi -%%% Document classes -% The list of layout files has been put in this file here by the -% configure script. -\input{chklayouts} - - %%% Packages +\TestPackage{a0poster} \TestPackage{accents} +\TestPackage{achicago} +\TestPackage{afterpage} \TestPackage{algorithm} +\TestPackage{algorithm2e} +\TestPackage{amsmath} \TestPackage{amstext} +\TestPackage{apacite} +\TestPackage{apalike} +\TestPackage[arabic.ldf]{arabi} \TestPackage{array} +\TestPackage{astron} +\TestPackage{authordate1-4} \TestPackage{babel} +\TestPackage{beamerposter} +\TestPackage{biblatex} +\TestPackage{biblatex-chicago} \TestPackage{bibtopic} +\TestPackage{bicaption} +\TestPackage{bidi} \TestPackage{bm} \TestPackage{booktabs} \TestPackage{braille} -\TestPackage{CJKutf8} +\TestPackage{breakurl} +\TestPackage{CJK} +\TestPackage{calc} +\TestPackage{cancel} +\TestPackage{changebar} +\TestPackage{chapterbib} +\TestPackage{chemgreek} +\TestPackage{chessboard} +\TestPackage{chessfss} +\TestPackage{chicago} \TestPackage{color} % this one should be there if graphics.sty is there. \TestPackage{covington} +\TestPackage{cprotect} \TestPackage{csquotes} -\TestPackage{dvipost} +\TestPackage{drs} +\TestPackage[koi8-r.def]{cyrillic} \TestPackage{endnotes} +\TestPackage{enotez} \TestPackage{enumitem} +\TestPackage{environ} % required by tcolorbox \TestPackage{esint} -\TestPackage{ifsym} -\TestPackage{ifthen} +\TestPackage{eso-pic} \TestPackage{fancybox} \TestPackage{fancyhdr} +\TestPackage{filehook} +\TestPackage{fixltx2e} +\TestPackage{fix-cm} +\TestPackage{float} +\TestPackage{fontspec} +\TestPackage{footmisc} +\TestPackage{footnote} +\TestPackage{footnotehyper} +\TestPackage{forest} \TestPackage{framed} \TestPackage{geometry} \TestPackage{graphicx} +\TestPackage[iso-8859-7.def]{greek-inputenc} +\TestPackage{harvard} +\TestPackage{hhline} \TestPackage{hyperref} +\TestPackage{hyphenat} +\TestPackage{iftex} +\TestPackage{ifthen} \TestPackage[japanese.ldf]{japanese} \TestPackage{jurabib} +\TestPackage{l3experimental} % required by various packages +\TestPackage{l3kernel} % required by various packages +\TestPackage{l3packages} % required by various packages \TestPackage{latex8} +\TestPackage{lettrine} \TestPackage{listings} +\TestPackage[lithuanian.ldf]{lithuanian} \TestPackage{longtable} +\TestPackage{lscape} +\TestPackage{luainputenc} \TestPackage{mathdots} +\TestPackage{mathrsfs} +\TestPackage{mathtools} +\TestPackage{mhchem} +\TestPackage[mongolian.ldf]{mongolian} +\TestPackage{mslapa} +\TestPackage{multirow} +\TestPackage{named} \TestPackage{natbib} \TestPackage{nicefrac} \TestPackage{nomencl} +\TestPackage{paralist} +\TestPackage{parskip} \TestPackage{pdfcolmk} +\TestPackage{pdflscape} +\TestPackage{polyglossia} +\TestPackage{pdfcomment} \TestPackage{pdfpages} +\TestPackage{pgf} % required by tcolorbox +\TestPackage{pict2e} \TestPackage{prettyref} \TestPackage{preview} +\TestPackage{refstyle} \TestPackage{rotating} \TestPackage{rotfloat} +\TestPackage{sciposter} +\TestPackage{sectionbox} +\TestPackage[serbianc.ldf]{serbianc} \TestPackage{setspace} \TestPackage{slashed} \TestPackage{soul} \TestPackage{splitidx} +\TestPackage{stackrel} +\TestPackage{stmaryrd} \TestPackage{subfig} +\TestPackage{subscript} \TestPackage{Sweave} +\TestPackage{tablefootnote} +\TestPackage{tabularx} +\TestPackage{tcolorbox} \TestPackage{textcomp} +\TestPackage{thswitch} +\TestPackage{tikz} +\TestPackage[turkmen.ldf]{turkmen} \TestPackage{ulem} +\TestPackage{undertilde} +\TestPackage{unicode-math} \TestPackage{units} \TestPackage{url} \TestPackage{varioref} +\TestPackage{varwidth} +\TestPackage{wallpaper} \TestPackage{wrapfig} \TestPackage{xargs} \TestPackage{xcolor} +\TestPackage[xetex.def]{xetex-def} +\TestPackage{xkeyval} +\TestPackage{xltabular} +\TestPackage{xskak} % required by chessboard + +% Packages used by LyX's documentation files +\TestPackage{arydshln} +\TestPackage{braket} +\TestPackage{cancel} +\TestPackage{caption} +\TestPackage{colortbl} +\TestPackage{diagbox} +\TestPackage{etoolbox} % required by polyglossia and tcolorbox +\TestPackage{eurosym} +\TestPackage{fp} +\TestPackage{makecmds} % required by polyglossia +\TestPackage{marginnote} +\TestPackage{picinpar} +\TestPackage{pict2e} +\TestPackage{sidecap} +\TestPackage{upgreek} % psnfss is in fact the name of a set of style files, among which % times.sty. If times.sty is here, we will assume that everything is fine. @@ -289,7 +480,10 @@ \TestPackage{bookman} \TestPackage{chancery} \TestPackage{charter} +\TestPackage{cochineal} \TestPackage{courier} +\TestPackage{crimson} +\TestPackage{CrimsonPro} \TestPackage{helvet} \TestPackage{mathpazo} \TestPackage{mathpple} @@ -301,14 +495,114 @@ % Other font packages \TestPackage{ae} \TestPackage{bera} +\TestPackage{biolinum} +\TestPackage{biolinum-type1} +%\TestFont[glic1000]{cbgreek}% for Greek % suported by LyX but too large to force downloading +\TestPackage{cantarell} \TestPackage{ccfonts} +\TestPackage{Chivo} +\TestFont[ccr10]{concrete} % required by ccfonts +\TestFont[eorm10]{ecc} % required by ccfonts +\TestPackage[ot1ccr.fd]{concmath} % required by ccfonts \TestPackage{cmbright} +\TestPackage{DejaVuSans} +\TestPackage{DejaVuSansCondensed} +\TestPackage{DejaVuSansMono} +\TestPackage{DejaVuSerif} +\TestPackage{DejaVuSerifCondensed} \TestPackage{eco} +\TestPackage{eulervm} +\TestPackage{feyn} \TestPackage{fourier} +\TestPackage{FiraMono} +\TestPackage{FiraSans} +\TestPackage{garamondx} +\TestPackage{plex-serif} +\TestPackage{plex-sans} +\TestPackage{plex-mono} +\TestPackage{sourceserifpro} +\TestPackage{sourcesanspro} +\TestPackage{sourcecodepro} +\TestFont[zgmr8r]{garamondx-fonts} +\TestPackage{iwona} +\TestPackage{kurier} +\TestPackage{lh-lcy} +\TestPackage{fontaxes} % required by libertine +\TestPackage{libertine} +\TestPackage{libertine-type1} +\TestPackage{libertineMono-type1} +\TestPackage{libertineMono} +\TestPackage{libertineRoman} +\TestPackage{libertinus} +\TestPackage{libertinust1math} \TestPackage{lmodern} \TestPackage{luximono} +\TestPackage{mathdesign}% for Roman fonts +\TestPackage{mdbch} +\TestPackage{mdput} +\TestPackage{mdugm} +\TestPackage{menukeys} +\TestPackage{MinionPro} +\TestFont[rzmnr]{minion2newtx} +\TestPackage{newtxmath} +\TestPackage[binhex.tex]{binhex} % required by newtxmath +\TestPackage{noto} +\TestPackage{noto-serif} +\TestPackage{noto-sans} +\TestPackage{noto-mono} +\TestPackage{paratype} +\TestFont[psyr]{symbol} +\TestPackage{tgadventor} +\TestPackage{tgbonum} +\TestPackage{tgchorus} +\TestPackage{tgcursor} +\TestPackage{tgheros} +\TestPackage{tgpagella} +\TestPackage{tgschola} +\TestPackage{tgtermes} +\TestFont[ugmr8r]{ugm} +\TestFont[uopr8r]{urwclassico} \TestPackage{tipa} +\TestPackage{tipx} +\TestPackage{tone} +\TestPackage{txfonts}% For the txtt monospaced font +\TestPackage{XCharter} +% symbol packages supported by LyX for items and the special character dialog +% see the unicodesymbols file +\TestPackage{ascii} +\TestPackage{bbding} +\TestPackage{ifsym} +\TestPackage{marvosym} +\TestPackage{pmboxdraw} +\TestPackage{textgreek} +\TestPackage{tfrupee} +\TestFont[wasy10]{wasy} +\TestPackage{wasysym} +% These packages are disabled in the unicodesymbols file +% see comment there +%\TestPackage{txfonts}% But see above! +%\TestPackage{pxfonts} +%\TestPackage{mathabx} +%\TestPackage{mathdesign}% But see above! + +%%% Specific package versions +% This introduces \babelfonts +\TestPackageVersion{babel}{2017/11/03} +% This introduces multiple paragraphs in multirows +\TestPackageVersion{multirow}{2021/01/29} +% With this version, hyperref option unicode is true +% by default +\TestPackageVersion{hyperref}{2021/02/04} +% As of this version, the ucs package must be explicitly +% loaded to get utf8x (rather than utf8) encoding tables +\TestPackageVersion{ucs}{2022/08/07} +%%% Document classes +% The list of layout files has been put in this file here by the +% configure script. +\input{chklayouts} +\input{chkmodules} +\input{chkciteengines} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% END ACTUAL CONFIGURATION INSPECTION CODE %%%%%%%%%%%%%%%%%%%%%%%%%%%%