Please, see http://bugzilla.lyx.org/show_bug.cgi?id=5297 for background info.

Before the introduction of InsetInfo, the LaTeXConfig.lyx file was being
generated from the template LaTeXConfig.lyx.in by replacing strings of
the form "@chk_XXXX@" through the help of the file chkconfig.sed generated
by running latex on chkconfig.ltx.

After the introduction of InsetInfo, chkconfig.ltx does not generate
chkconfig.sed anymore. However, when chkconfig.ltx checks for the EC
fonts, it still adds the result by using the \AddVariable macro that
now creates chkconfig.vars only. This last file is scanned by configure.py
only for setting \font_encoding and thus the info about the EC fonts
is lost.

The other problem about the graphicx package is similar, as the correct
info was being written to LaTeXConfig.lyx only thanks to chkconfig.sed
(there's an \AddPackage{graphics} in chkconfig.ltx, but it is inside a
TeX group {} such that the info does not get written to packages.lst).
However, there is another problem here, as the check for the graphics
driver is incorrect and always turns out to be "dvips" instead of
"default" (if the driver is configured) or "none" (if no configuration
was found).

To the best of my knowledge, the info about the graphics driver is only
used in LaTeXConfig.lyx for informing the user that a suitable default
has been detected.

I see 3 possible ways to proceed:

1) Correct the problem with EC fonts and the graphics package such that
   LaTeXConfig.lyx shows the correct info about them. This leaves the
   problem that the info about the graphics driver is still lost and
   LaTeXConfig.lyx still reports that the detected graphics driver is "no". 
   This is what the patch chkconfig-1.diff does.

2) Correct the problem as in 1) but also add a new lyxrc variable for
   retrieving the info about the graphics driver such that LaTeXConfig.lyx
   reports all the results correctly.
   This is what the patch chkconfig-2.diff does.

3) Correct the problem as in 1) but don't check for the graphics driver (as
   this info is only used in LaTeXConfig.lyx) and patch LaTeXConfig.lyx
   such that to not tell about the graphics driver.
   This is what the patch chkconfig-3.diff does.

What to do? I would opt for 2) as it maybe useful to be informed that
the graphicx package is correctly configured or not, but I also have
no problem with 3).

-- 
Enrico
Index: lib/chkconfig.ltx
===================================================================
--- lib/chkconfig.ltx   (revision 26625)
+++ lib/chkconfig.ltx   (working copy)
@@ -21,13 +21,17 @@
 %%%    (or <file>, if this optional parameter is provided) exists.
 %%% 2- Add a description for <name> in doc/LaTeXConfig.lyx,
 %%%    containing in particular a line like
-%%%         Found   @chk_<name>@
-%%%    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 <name>
+%%%    This inset will automatically display a boxed "yes" or "no"
+%%%    depending on the availability of the package.
 %%%
 %%% 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, as described above.
+%%% LaTeXConfig.lyx, as described above but using
+%%% "info-insert textclass <name>" instead of "info-insert package <name>".
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%% Initialization part (skip) %%%%%%%%%%%%%%%%%%%%%
@@ -64,7 +68,7 @@
   \immediate\write\packages{#1}}
 
 % Tests whether an item is present
-% Syntax: \TestItem{<file>}{<name>}{<type>}{<ext>}{<iftrue>}{<iffalse>}
+% Syntax: \TestItem[<file>]{<name>}{<type>}{<ext>}{<iftrue>}{<iffalse>}
 \newif\ifexists
 
 \newcommand{\TestItem}[6][\default]{
@@ -205,12 +209,11 @@
   \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
@@ -273,16 +276,14 @@
 
 % The test for the graphics package is slightly more involved...
 \newcommand\groption{dvips}
-\TestItem{graphicx}{package}{sty}
+\TestPackage{graphicx}
 
 %  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}}
+   \renewcommand\ExecuteOptions[1]{\renewcommand\groption{default}}
+   \InputIfFileExists{graphics.cfg}{}{\renewcommand{\groption}{none}}
 
 \message{^^J\prefix checking for graphics driver... \groption^^J}
 \AddVariable{graphicsdriver}{\groption}
Index: src/LyXRC.h
===================================================================
--- src/LyXRC.h (revision 26625)
+++ src/LyXRC.h (working copy)
@@ -83,6 +83,7 @@ public:
                RC_FULL_SCREEN_TOOLBARS,
                RC_FULL_SCREEN_WIDTH,
                RC_GEOMETRY_SESSION,
+               RC_GRAPHICS_DRIVER,
                RC_GROUP_LAYOUTS,
                RC_INDEX_COMMAND,
                RC_INPUT,
@@ -198,6 +199,8 @@ public:
        ///
        std::string ui_file;
        ///
+       std::string graphics_driver;
+       ///
        std::string printer;
        ///
        std::string print_command;
Index: src/LyXRC.cpp
===================================================================
--- src/LyXRC.cpp       (revision 26625)
+++ src/LyXRC.cpp       (working copy)
@@ -94,6 +94,7 @@ LexerKeyword lyxrcTags[] = {
        { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR },
        { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS },
        { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH },
+       { "\\graphics_driver", LyXRC::RC_GRAPHICS_DRIVER },
        { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS },
        { "\\gui_language", LyXRC::RC_GUI_LANGUAGE },
        { "\\index_command", LyXRC::RC_INDEX_COMMAND },
@@ -259,6 +260,7 @@ void LyXRC::setDefaults()
        make_backup = true;
        backupdir_path.erase();
        display_graphics = true;
+       graphics_driver = "default";
        // Spellchecker settings:
        use_spell_lib = true;
        isp_command = "ispell";
@@ -429,6 +431,10 @@ int LyXRC::read(Lexer & lexrc)
                                display_graphics = lexrc.getString() == "true";
                        break;
 
+               case RC_GRAPHICS_DRIVER:
+                       lexrc >> graphics_driver;
+                       break;
+
                case RC_TEX_EXPECTS_WINDOWS_PATHS:
                        lexrc >> windows_style_tex_paths;
                        break;
@@ -1251,6 +1257,10 @@ void LyXRC::write(ostream & os, bool ign
                }
                if (tag != RC_LAST)
                        break;
+       case RC_GRAPHICS_DRIVER:
+               os << "\\graphics_driver \"" << graphics_driver << "\"\n";
+               if (tag != RC_LAST)
+                       break;
        case RC_SORT_LAYOUTS:
                if (ignore_system_lyxrc ||
                    sort_layouts != system_lyxrc.sort_layouts) {
Index: lib/chkconfig.ltx
===================================================================
--- lib/chkconfig.ltx   (revision 26625)
+++ lib/chkconfig.ltx   (working copy)
@@ -21,13 +21,17 @@
 %%%    (or <file>, if this optional parameter is provided) exists.
 %%% 2- Add a description for <name> in doc/LaTeXConfig.lyx,
 %%%    containing in particular a line like
-%%%         Found   @chk_<name>@
-%%%    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 <name>
+%%%    This inset will automatically display a boxed "yes" or "no"
+%%%    depending on the availability of the package.
 %%%
 %%% 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, as described above.
+%%% LaTeXConfig.lyx, as described above but using
+%%% "info-insert textclass <name>" instead of "info-insert package <name>".
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%% Initialization part (skip) %%%%%%%%%%%%%%%%%%%%%
@@ -64,7 +68,7 @@
   \immediate\write\packages{#1}}
 
 % Tests whether an item is present
-% Syntax: \TestItem{<file>}{<name>}{<type>}{<ext>}{<iftrue>}{<iffalse>}
+% Syntax: \TestItem[<file>]{<name>}{<type>}{<ext>}{<iftrue>}{<iffalse>}
 \newif\ifexists
 
 \newcommand{\TestItem}[6][\default]{
@@ -205,12 +209,11 @@
   \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
@@ -273,16 +276,14 @@
 
 % The test for the graphics package is slightly more involved...
 \newcommand\groption{dvips}
-\TestItem{graphicx}{package}{sty}
+\TestPackage{graphicx}
 
 %  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}}
+   \renewcommand\ExecuteOptions[1]{\renewcommand\groption{default}}
+   \InputIfFileExists{graphics.cfg}{}{\renewcommand{\groption}{none}}
 
 \message{^^J\prefix checking for graphics driver... \groption^^J}
 \AddVariable{graphicsdriver}{\groption}
Index: lib/doc/LaTeXConfig.lyx
===================================================================
--- lib/doc/LaTeXConfig.lyx     (revision 26625)
+++ lib/doc/LaTeXConfig.lyx     (working copy)
@@ -3420,8 +3420,8 @@ script
 
 
 \begin_inset Info
-type  "package"
-arg   "graphicsdriver"
+type  "lyxrc"
+arg   "graphics_driver"
 \end_inset
 
 
Index: lib/configure.py
===================================================================
--- lib/configure.py    (revision 26625)
+++ lib/configure.py    (working copy)
@@ -738,7 +738,7 @@ def checkLatexConfig(check_config, bool_
         ret = fout.close()
         #
         # currently, values in chhkconfig are only used to set
-        # \font_encoding
+        # \font_encoding and \graphics_driver
         values = {}
         for line in open('chkconfig.vars').readlines():
             key, val = re.sub('-', '_', line).split('=')
@@ -749,6 +749,7 @@ def checkLatexConfig(check_config, bool_
             addToRC(r'\font_encoding "%s"' % values["chk_fontenc"])
         except:
             pass
+        addToRC(r'\graphics_driver "%s"' % values["chk_graphicsdriver"])
         if rmcopy:   # remove the copied file
             removeFiles( [ 'chkconfig.ltx' ] )
         # if configure successed, move textclass.lst.tmp to textclass.lst
Index: lib/chkconfig.ltx
===================================================================
--- lib/chkconfig.ltx   (revision 26625)
+++ lib/chkconfig.ltx   (working copy)
@@ -21,13 +21,17 @@
 %%%    (or <file>, if this optional parameter is provided) exists.
 %%% 2- Add a description for <name> in doc/LaTeXConfig.lyx,
 %%%    containing in particular a line like
-%%%         Found   @chk_<name>@
-%%%    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 <name>
+%%%    This inset will automatically display a boxed "yes" or "no"
+%%%    depending on the availability of the package.
 %%%
 %%% 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, as described above.
+%%% LaTeXConfig.lyx, as described above but using
+%%% "info-insert textclass <name>" instead of "info-insert package <name>".
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%% Initialization part (skip) %%%%%%%%%%%%%%%%%%%%%
@@ -64,7 +68,7 @@
   \immediate\write\packages{#1}}
 
 % Tests whether an item is present
-% Syntax: \TestItem{<file>}{<name>}{<type>}{<ext>}{<iftrue>}{<iffalse>}
+% Syntax: \TestItem[<file>]{<name>}{<type>}{<ext>}{<iftrue>}{<iffalse>}
 \newif\ifexists
 
 \newcommand{\TestItem}[6][\default]{
@@ -205,12 +209,11 @@
   \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
@@ -243,6 +246,7 @@
 \TestPackage{fancyhdr}
 \TestPackage{framed}
 \TestPackage{geometry}
+\TestPackage{graphicx}
 \TestPackage{hyperref}
 \TestPackage{jurabib}
 \TestPackage{latex8}
@@ -270,23 +274,6 @@
 \TestPackage{xargs}
 \TestPackage{xcolor}
 
-
-% 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}
-
 % 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.
Index: lib/doc/LaTeXConfig.lyx
===================================================================
--- lib/doc/LaTeXConfig.lyx     (revision 26625)
+++ lib/doc/LaTeXConfig.lyx     (working copy)
@@ -1,4 +1,4 @@
-#LyX 1.6.0rc3 created this file. For more info see http://www.lyx.org/
+#LyX 1.6.0svn created this file. For more info see http://www.lyx.org/
 \lyxformat 340
 \begin_document
 \begin_header
@@ -3411,44 +3411,6 @@ ghost
 script
 \family default
  to see them on screen.
- The configuration script has determined that the graphics driver used by
- the package should be 
-\family sans
-
-\begin_inset Quotes eld
-\end_inset
-
-
-\begin_inset Info
-type  "package"
-arg   "graphicsdriver"
-\end_inset
-
-
-\begin_inset Quotes erd
-\end_inset
-
-
-\family default
-
-\begin_inset Foot
-status collapsed
-
-\begin_layout Plain Layout
-Here, a value of 
-\begin_inset Quotes eld
-\end_inset
-
-default
-\begin_inset Quotes erd
-\end_inset
-
- means that your LaTeX installation provides a sensible value for this 
parameter.
-\end_layout
-
-\end_inset
-
-.
 \end_layout
 
 \begin_layout Subsection

Reply via email to