X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fchkconfig.ltx;h=9c1c2f600306fe08f1ab6575e221e8b7e6e6d74d;hb=77d60285867b4ba9718d24603162127259d2fb87;hp=3604fdc386b21902acfb89dd6e16291649395efe;hpb=13780bfb635b16ff6667c5f3d915ce97a0f59446;p=lyx.git diff --git a/lib/chkconfig.ltx b/lib/chkconfig.ltx index 3604fdc386..9c1c2f6003 100644 --- a/lib/chkconfig.ltx +++ b/lib/chkconfig.ltx @@ -1,33 +1,40 @@ % This is chkconfig.ltx, a script which tries to autodetect and -% document your LaTeX configuration. +% document your LaTeX configuration. % Author: Jean-Marc Lasgouttes (Jean-Marc.Lasgouttes@inria.fr) % with minimal changes by Asger Alstrup (alstrup@diku.dk). % % This script should only be run from the configure script to update -% the files textclass.lst and doc/LyXConfig.lyx +% the files textclass.lst and doc/LaTeXConfig.lyx % % 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 :-) %%% %%% If you want to add the new package , all you need most of -%%% the times is a two-steps work: +%%% the times is a two-steps work: %%% 1- Add the command \TestPackage{}. The syntax is: %%% \TestPackage[]{}, which tests whether .sty -%%% (or , if this optional parameter is provided) exists. -%%% 2- Add a description for in doc/LyXConfig.lyx.in, +%%% (or , if this optional parameter is provided) exists. +%%% 2- Add a description for in doc/LaTeXConfig.lyx, %%% containing in particular a line like -%%% Found @chk_@ -%%% This line will be replaced at configure time by the proper text. +%%% Found: [InsetInfo] +%%% where [InsetInfo] is obtained by entering in the minibuffer (Alt+X) +%%% info-insert package +%%% 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 -%%% LyXConfig.lyx.in, as described above. +%%% LaTeXConfig.lyx, as described above but using +%%% "info-insert textclass " instead of "info-insert package ". %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% Initialization part (skip) %%%%%%%%%%%%%%%%%%%%% @@ -35,54 +42,73 @@ % we do not want to stop on errors \nonstopmode\makeatletter -% Have we been called from the configure script? -\@ifundefined{srcdir} - {\message{% -**** WARNING: For proper results, you should not run this script directly.^^J% -**** Please use the `configure' script.^^J} - \newcommand\srcdir{.}} - {\def\input@path{{\srcdir/}}} %%% Some useful macros. % Several commands are defined to test for packages: % \AddLayout{} adds an entry for in textclass.lst % \AddVariable{}{} creates a new variable chk_, % and gives it the value . -% \TestDocClass[]{} tests whether .cls (or , -% if it is provided) exists and creates a new entry with -% \AddLayout if this is the case. Note that you will probably not -% need to use this directly, since the configure script generates -% the needed macro calls automatically. +% \TestDocClass{}{} if layout has not already +% been tested for, execute . Note that you will +% probably not need to use this directly, since the configure +% 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 -% the variable chk_. +% if it is provided) exists. +% \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}[3][\default]{ + +\newcommand{\AddLayout}[5][\default]{ \def\default{#2} - \immediate\write\layouts{"#2" "#1" "#3"}} + \@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\sed{s!@chk_#1@!#2!g} \immediate\write\vars{chk_#1='#2'}} + \newcommand{\AddPackage}[1]{ \immediate\write\packages{#1}} + % Tests whether an item is present -% Syntax: \TestItem{}{}{}{}{}{} +% Syntax: \TestItem[]{}{}{}{}{} \newif\ifexists + \newcommand{\TestItem}[6][\default]{ \def\default{#2} \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} @@ -93,41 +119,57 @@ \AddVariable{#2}{no} #6 \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}}{}} -\newcommand{\TestDocClass}[1]{ + +\newcommand{\TestDocClass}[2]{ \def\layoutname{#1} % remember the name of the layout file \@ifundefined{layout@#1} - {\bgroup - \catcode`\#=9 % consider # as a space - \input{layouts/#1.layout} % read the layout file - \egroup - \global\@namedef{layout@#1}{}} + {#2 % execute the command + \global\@namedef{layout@#1}{}} {} % we have already tried this one. } + \newcommand{\DeclareLaTeXClass}[2][\default]{ \TestItem[#1]{\layoutname}{document class}{cls} - {\AddLayout[\firstelement]{\layoutname}{#2}}{} - \expandafter\endinput + {\AddLayout[\firstelement]{\layoutname}{#2}{true}{\missingelements}} + {\AddLayout[\firstelement]{\layoutname}{#2}{false}{\missingelements}} } -\newcommand{\DeclareLinuxDocClass}[2][\default]{ - \message{^^J\prefix checking for linuxdoc class \layoutname... } - \@ifundefined{haslinuxdoc} - {\message{no^^J}} - {\message{yes^^J} - \AddLayout[#1]{\layoutname}{#2}} - \expandafter\endinput + +\newcommand{\DeclareCategory}[2]{ + \@ifundefined{category@#1} + {\global\@namedef{category@#1}{#2}}% + {}% we have already defined this one. } + % 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}} + {\message{no^^J} + \AddLayout[#1]{\layoutname}{#2}{false}{docbook}} {\message{yes^^J} - \AddLayout[#1]{\layoutname}{#2}} - \expandafter\endinput + \AddLayout[#1]{\layoutname}{#2}{true}{}} } % Stolen from article.cls @@ -138,15 +180,14 @@ % Initializes the files \typeout{\prefix Inspecting your LaTeX configuration.} -\newwrite{\layouts} \immediate\openout \layouts = textclass.lst -\newwrite{\sed} \immediate\openout \sed = chkconfig.sed +\newwrite{\layouts} \immediate\openout \layouts = textclass.lst.tmp \newwrite{\vars} \immediate\openout \vars = chkconfig.vars -\newwrite{\packages} \immediate\openout \packages = packages.lst +\newwrite{\packages} \immediate\openout \packages = packages.lst.tmp \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.} @@ -163,6 +204,32 @@ \message{^^J\prefix checking for LaTeX version... \fmtversion} \AddVariable{fmtversion}{\fmtversion} +%%% And now, the list of available languages +% The trick is to know that \the\everyjob contains something like +% \typeout{LaTeX2e <2001/06/01>} +% \typeout{Babel and hyphenation patterns for american, french, german, ngerman, nohyphenation, loaded.} +% All we have to do is to extract the list from there: +% (1) concatenate all the messages that are displayed everytime the +% format is loaded. The is done by redefining locally \typeout to +% append its argument to the macro \mesg. +\def\mesg{} +{\def\typeout#1{\xdef\mesg{\mesg #1}} + \the\everyjob} + +% (2) strip the useless parts from \mesg. This uses the fact that TeX +% allows to define macros with parameters delimited by arbitrary text. +\def\platexname{pLaTeX2e} +\ifx\pfmtname\platexname + \def\langs{japanese} +\else + \def\strip#1patterns for #2, loaded.#3\endmark{\def\langs{#2}} + \expandafter\strip\mesg\endmark +\fi + +% (3) handle the result +\message{^^J\prefix checking for available hyphenation patterns... \langs} +\AddVariable{languages}{\langs} + %%% Check for ec fonts. Most of this code has been shamelessely stolen %%% from the file ltxcheck.tex in the LaTeX distribution. In particular, %%% don't ask me how the macro \ecrm works... @@ -179,6 +246,7 @@ \message{^^J\prefix checking for default encoding (this may take a long time)^^J} \font\test=ecrm1000\relax + \ifx\test\nullfont \message{^^J\prefix\prefix checking for ec fonts... no^^J} \AddVariable{ec}{no} @@ -189,62 +257,230 @@ \ecrm \ifin@ \message{yes^^J} - \AddVariable{ec}{yes} + \AddPackage{ec} \AddVariable{fontenc}{T1} - \message{^^J \prefix\space\space default encoding will be set to T1^^J} + \message{^^J\prefix\space\space default encoding will be set to T1^^J} \else \message{no^^J} - \AddVariable{ec}{no} \AddVariable{fontenc}{default} \fi \fi -%%% Document classes -% The list of layout files has been put in this file here by the -% configure script. -\input{chklayouts} - - %%% Packages -\TestPackage{a4} -\TestPackage{a4wide} +\TestPackage{accents} +\TestPackage{achicago} +\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{bibtopic} +\TestPackage{bicaption} +\TestPackage{bidi} +\TestPackage{bm} +\TestPackage{booktabs} +\TestPackage{braille} +\TestPackage{breakurl} +\TestPackage{CJKutf8} +\TestPackage{calc} +\TestPackage{cancel} +\TestPackage{chicago} \TestPackage{color} % this one should be there if graphics.sty is there. +\TestPackage{covington} +\TestPackage{csquotes} +\TestPackage[koi8-r.def]{cyrillic} +\TestPackage{dvipost} +\TestPackage{endnotes} +\TestPackage{enumitem} +\TestPackage{esint} +\TestPackage{eso-pic} +\TestPackage{fancybox} \TestPackage{fancyhdr} -\TestPackage{floatflt} -\TestPackage{setspace} -\TestPackage{subfigure} +\TestPackage{filehook} +\TestPackage{fixltx2e} +\TestPackage{fix-cm} +\TestPackage{float} +\TestPackage{fontspec} +\TestPackage{footmisc} +\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{latex8} +\TestPackage{lettrine} +\TestPackage{listings} +\TestPackage[lithuanian.ldf]{lithuanian} \TestPackage{longtable} -\TestPackage{algorithm} +\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{pdfcolmk} +\TestPackage{polyglossia} +\TestPackage{pdfcomment} +\TestPackage{pdfpages} +\TestPackage{prettyref} +\TestPackage{preview} +\TestPackage{refstyle} \TestPackage{rotating} -\TestPackage{latex8} +\TestPackage{rotfloat} +\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{tcolorbox} +\TestPackage{textcomp} +\TestPackage{thswitch} +\TestPackage[turkmen.ldf]{turkmen} +\TestPackage{ulem} +\TestPackage{undertilde} +\TestPackage{unicode-math} +\TestPackage{units} \TestPackage{url} \TestPackage{varioref} -\TestPackage{prettyref} -\TestPackage{natbib} -\TestPackage{dvipost} +\TestPackage[vietnamese.ldf]{vietnamese} +\TestPackage{wrapfig} +\TestPackage{xargs} +\TestPackage{xcolor} +\TestPackage[xetex.def]{xetex-def} +\TestPackage{xkeyval} -% The test for the graphics package is slightly more involved... -\newcommand\groption{dvips} -\TestItem{graphicx}{package}{sty} -% Let's do some clever things to guess the default driver for the -% graphicx package. The maintainer of the site might have declared it -% in the file 'graphics.cfg'. Let's hope there are no strange commands -% in there... - {\renewcommand\ExecuteOptions[1]{\renewcommand\groption{default}} - \InputIfFileExists{graphics.cfg}{}{} - \AddPackage{graphicx}} - {\renewcommand{\groption}{none}} -\message{^^J\prefix checking for graphics driver... \groption^^J} -\AddVariable{graphicsdriver}{\groption} +% Packages used by LyX's documentation files +\TestPackage{arydshln} +\TestPackage{braket} +\TestPackage{cancel} +\TestPackage{caption} +\TestPackage{colortbl} +\TestPackage{diagbox} +\TestPackage{etoolbox} % required by polyglossia +\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. +% times.sty. If times.sty is here, we will assume that everything is fine. \TestPackage[times.sty]{psnfss} +% test the following fonts in case they are not in all versions of psnfss +\TestPackage{avant} +\TestPackage{bookman} +\TestPackage{chancery} +\TestPackage{charter} +\TestPackage{courier} +\TestPackage{helvet} +\TestPackage{mathpazo} +\TestPackage{mathpple} +\TestPackage{mathptm} +\TestPackage{mathptmx} +\TestPackage{newcent} +\TestPackage{pifont} +\TestPackage{utopia} +% Other font packages +\TestPackage{ae} +\TestPackage{bera} +\TestPackage{biolinum-type1} +%\TestFont[glic1000]{cbgreek}% for Greek % suported by LyX but too large to force downloading +\TestPackage{ccfonts} +\TestFont[ccr10]{concrete} % required by ccfonts +\TestFont[eorm10]{ecc} % required by ccfonts +\TestPackage[ot1ccr.fd]{concmath} % required by ccfonts +\TestPackage{cmbright} +\TestPackage{eco} +\TestPackage{eulervm} +\TestPackage{feyn} +\TestPackage{fourier} +\TestPackage{garamondx} +\TestFont[zgmr8r]{garamondx-fonts} +\TestPackage{iwona} +\TestPackage{kurier} +\TestPackage{lh-lcy} +\TestPackage{libertine} +\TestPackage{fontaxes} % required by libertine +\TestPackage{libertine-type1} +\TestPackage{libertineMono-type1} +\TestPackage{lmodern} +\TestPackage{luximono} +\TestPackage{mathdesign}% for Roman fonts +\TestPackage{mdbch} +\TestPackage{mdput} +\TestPackage{mdugm} +\TestPackage{MinionPro} +\TestFont[rzmnr]{minion2newtx} +\TestPackage{newtxmath} +\TestPackage[binhex.tex]{binhex} % required by newtxmath +\TestFont[psyr]{symbol} +\TestPackage{tgadventor} +\TestPackage{tgbonum} +\TestPackage{tgchorus} +\TestPackage{tgcursor} +\TestPackage{tgheros} +\TestPackage{tgpagella} +\TestPackage{tgschola} +\TestPackage{tgtermes} +\TestFont[ugmr8r]{ugm} +\TestFont[uopr8a]{urwclassico} +\TestPackage{tipa} +\TestPackage{tipx} +\TestPackage{tone} +\TestPackage{txfonts}% For the txtt monospaced font +% 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! + +%%% Document classes +% The list of layout files has been put in this file here by the +% configure script. +\input{chklayouts} +\input{chkmodules} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% END ACTUAL CONFIGURATION INSPECTION CODE %%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -252,10 +488,10 @@ % End of the LaTeX job \immediate\closeout\layouts -\immediate\closeout\sed \immediate\closeout\vars \immediate\closeout\packages \typeout{\prefix Inspection done.} \typeout{\prefix Read the file doc/LaTeXConfig.lyx for more information.} + % Get the real \end command, that has been hidden by LaTeX \@@end