X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fchkconfig.ltx;h=eef69b1151da99fdaa5d7b0c2c30f12dd6e78730;hb=81a3abd0cd3ae4c42ac3d987bab67ec58613c47c;hp=ef8e1127c137a2dc20652c99f8088affd7447345;hpb=88957e028dde139e5cac390071882a021c30b576;p=lyx.git diff --git a/lib/chkconfig.ltx b/lib/chkconfig.ltx index ef8e1127c1..eef69b1151 100644 --- a/lib/chkconfig.ltx +++ b/lib/chkconfig.ltx @@ -1,10 +1,10 @@ % 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/LaTeXConfig.lyx +% the files textclass.lst and doc/LyXConfig.lyx % % This script is in fact a complete rewrite of the original chkconfig % script. Expect bugs. @@ -12,14 +12,14 @@ %%% If you want to add new packages/documentclasses 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 chklatex.ltx :-) +%%% 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/LaTeXConfig.lyx.in, +%%% (or , if this optional parameter is provided) exists. +%%% 2- Add a description for in doc/LyXConfig.lyx.in, %%% containing in particular a line like %%% Found @chk_@ %%% This line will be replaced at configure time by the proper text. @@ -27,7 +27,7 @@ %%% 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 -%%% LaTeXConfig.lyx.in, as described above. +%%% LyXConfig.lyx.in, as described above. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% Initialization part (skip) %%%%%%%%%%%%%%%%%%%%% @@ -35,33 +35,25 @@ % 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. +% if it is provided) exists. % Both commands call \AddVariable to give value 'yes' or 'no' to -% the variable chk_. +% the variable chk_. %%% \newcommand{\prefix}{+} % the character used by grep to filter 'good' output -\newcommand{\AddLayout}[3][\default]{ +\newcommand{\AddLayout}[4][\default]{ \def\default{#2} - \immediate\write\layouts{"#2" "#1" "#3"}} + \immediate\write\layouts{"#2" "#1" "#3" "#4"}} \newcommand{\AddVariable}[2]{ \immediate\write\sed{s!@chk_#1@!#2!g} \immediate\write\vars{chk_#1='#2'}} @@ -95,28 +87,25 @@ \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}} + {\AddLayout[\firstelement]{\layoutname}{#2}{false}} } \newcommand{\DeclareLinuxDocClass}[2][\default]{ \message{^^J\prefix checking for linuxdoc class \layoutname... } \@ifundefined{haslinuxdoc} - {\message{no^^J}} + {\message{no^^J} + \AddLayout[#1]{\layoutname}{#2}{false}} {\message{yes^^J} - \AddLayout[#1]{\layoutname}{#2}} - \expandafter\endinput + \AddLayout[#1]{\layoutname}{#2}{true}} } % Only for compatibility. Will be removed later. \let\DeclareSGMLClass=\DeclareDocBookClass @@ -124,10 +113,10 @@ \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}} {\message{yes^^J} - \AddLayout[#1]{\layoutname}{#2}} - \expandafter\endinput + \AddLayout[#1]{\layoutname}{#2}{true}} } % Stolen from article.cls @@ -163,6 +152,25 @@ \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\strip#1patterns for #2, loaded.#3\endmark{\def\langs{#2}} +\expandafter\strip\mesg\endmark +% (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... @@ -207,40 +215,45 @@ %%% Packages -\TestPackage{a4} -\TestPackage{a4wide} +\TestPackage{algorithm} +\TestPackage{array} \TestPackage{babel} +\TestPackage{bibtopic} \TestPackage{color} % this one should be there if graphics.sty is there. +\TestPackage{dvipost} +\TestPackage{fancybox} \TestPackage{fancyhdr} \TestPackage{floatflt} -\TestPackage{setspace} -\TestPackage{subfigure} \TestPackage{geometry} +\TestPackage{jurabib} +\TestPackage{latex8} \TestPackage{longtable} -\TestPackage{algorithm} +\TestPackage{natbib} +\TestPackage{prettyref} +\TestPackage{preview} \TestPackage{rotating} -\TestPackage{latex8} -\TestPackage{url} +\TestPackage{setspace} +\TestPackage{subfigure} \TestPackage{varioref} -\TestPackage{prettyref} +\TestPackage{url} % The test for the graphics package is slightly more involved... \newcommand\groption{dvips} -\TestItem{graphics}{package}{sty} +\TestItem{graphicx}{package}{sty} % Let's do some clever things to guess the default driver for the -% graphics package. The maintainer of the site might have declared it +% 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{graphics}} + \AddPackage{graphicx}} {\renewcommand{\groption}{none}} \message{^^J\prefix checking for graphics driver... \groption^^J} \AddVariable{graphicsdriver}{\groption} % 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. +% fine. \TestPackage[times.sty]{psnfss} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%