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