% \iffalse meta-comment %% %% File: figlatex.dtx Copyright (C) 2002--2005 V. Danjean, A. Legrand %% Vincent.Danjean@ens-lyon.org %% Arnaud.Legrand@ens-lyon.org %% %% This program is free software; you can redistribute it and/or %% modify it under the terms of the GNU General Public License %% as published by the Free Software Foundation; either version 2 %% of the License, or (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; if not, write to the Free Software %% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. %% % %<*dtx> \ProvidesFile{figlatex.dtx} % %\NeedsTeXFormat{LaTeX2e}% %\ProvidesPackage{figlatex}% % \ProvidesFile{figlatex.cfg}% % \ProvidesPackage{texgraphicx}% % \fi % \ProvidesFile{figlatex.dtx} [2021/10/26 v2.4.3 No changes in figlatex] % \iffalse %<*driver> \documentclass{ltxdoc} \usepackage[latin1]{inputenc} \usepackage[french,english]{babel} \NoAutoSpaceBeforeFDP \EnableCrossrefs \CodelineIndex \RecordChanges \setcounter{IndexColumns}{2} % make a twocolumn index \setlength{\columnseprule}{0pt} % no rules between columns ... \setlength{\columnsep}{2em} % ... but more spacing instead. \setcounter{unbalance}{4} \setlength{\IndexMin}{100pt} %%%%\OnlyDescription % uncomment this line to suppress printing the source code \makeatletter % don't show underfull hboxes in index/glossary: \g@addto@macro{\IndexParms}{\hbadness=10000} \g@addto@macro{\GlossaryParms}{\hbadness=10000} \makeatother \begin{document} \DocInput{figlatex.dtx} \PrintIndex \PrintChanges \end{document} % % \fi % % \GetFileInfo{figlatex.dtx} % % \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ } % \DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global} % \DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,% % \iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi,\loop,\do} % \DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,% % \vbox,\vtop,\vcenter} % \DoNotIndex{\@empty,\immediate,\write} % \DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup} % \DoNotIndex{\divide,\advance,\multiply,\count,\dimen} % \DoNotIndex{\relax,\space,\string} % \DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,% % \closein,\closeout} % \DoNotIndex{\catcode,\endinput} % \DoNotIndex{\jobname,\message,\read,\the,\noexpand} % \DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss} % \DoNotIndex{\m@ne,\z@,\@m,\z@skip,\@ne,\tw@,\p@} % \DoNotIndex{\DeclareRobustCommand,\DeclareOption,\newcommand,\newcommand*} % \DoNotIndex{\newcount,\newif,\newlinechar,\newread,\newtoks,\newwrite} % \DoNotIndex{\dp,\wd,\ht,\vss,\unskip,\ifthenelse} % % \DoNotIndex{\@filef@und,\@nameddef,\@tempa} % \DoNotIndex{\define@key,\equal,\ExecuteOptions} % \DoNotIndex{\filename@area,\filename@base,\filename@ext,\filename@parse} % \DoNotIndex{\Gin@exclamation,\Gin@getbase,\Gin@scalex,\Gin@scaley} % \DoNotIndex{\Gread@eps,\Gread@pdf,\Gscale@box} % \DoNotIndex{\IfFileExists,\ifpdf,\input,\InputIfFileExists} % \DoNotIndex{\MessageBreak,\PackageWarning,\PackageWarningNoLine} % \DoNotIndex{\ProcessOptions,\RequirePackage,\typeout} % \DoNotIndex{} % \DoNotIndex{} % % \title{The \textsf{figlatex} package\thanks{This file % has version number \fileversion, last % revised \filedate.}} % \author{Arnaud \textsc{Legrand}\and Vincent \textsc{Danjean}} % \date{\filedate} % \maketitle % \begin{abstract} % This package allows \LaTeX\space to load XFig and SVG figures (or % subfigures) with the |\includegraphics| command. % \end{abstract} % \CheckSum{207} % % \changes{v0.1.1}{2005/03/28}{Version 0.1.1 at last} % \changes{v0.1.2}{2005/03/29}{Manage index/glossary} % \changes{v0.1.3}{2008/01/28}{Better support for subfig with texdepends} % \changes{v0.1.4}{2011/09/25}{Support for svg with texdepends} % \changes{v2.2.0}{2016/02/09}{No changes in figlatex.dtx} % \changes{v2.2.1}{2016/02/09}{No changes in figlatex.dtx} % \changes{v2.2.2}{2016/02/09}{No changes in figlatex.dtx} % \changes{v2.2.3}{2017/01/08}{No changes in figlatex.dtx} % \changes{v2.2.4}{2018/05/29}{Add missing required package 'ifthen'} % \changes{v2.2.4}{2018/05/29}{Fix python syntax for python3} % \changes{v2.2.5}{2018/09/04}{No changes in figlatex.dtx} % \changes{v2.2.5}{2018/10/17}{No changes in figlatex.dtx} % \changes{v2.4.0}{2020/06/01}{Fix path handling for subfig and new % core LaTeX} % \changes{v2.4.1}{2020/07/10}{No changes in figlatex.dtx} % \changes{v2.4.2}{2021/01/03}{No changes in figlatex.dtx} % \changes{v2.4.3}{2021/04/18}{No changes in figlatex.dtx} % % \makeatletter % \def\SpecialOptionIndex#1{\@bsphack % \index{#1\actualchar{\protect\ttfamily#1} % (option)\encapchar usage}% % \index{options:\levelchar{\protect\ttfamily#1}\encapchar % usage}\@esphack} % \def\SpecialFileIndex#1{\@bsphack % \index{#1\actualchar{\protect\ttfamily#1} % (file)\encapchar usage}% % \index{files:\levelchar{\protect\ttfamily#1}\encapchar % usage}\@esphack} % \def\SpecialMainOptionIndex#1{\@bsphack\special@index{#1\actualchar % {\string\ttfamily\space#1} % (option)\encapchar main}% % \special@index{options:\levelchar{% % \string\ttfamily\space#1}\encapchar % main}\@esphack} % \def\option{\begingroup % \catcode`\\12 % \MakePrivateLetters \mym@cro@ \iffalse} % \long\def\mym@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist % \edef\saved@macroname{\string#2}% % \def\makelabel##1{\llap{##1}}% % \if@inlabel % \let\@tempa\@empty \count@\macro@cnt % \loop \ifnum\count@>\z@ % \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat % \edef\makelabel##1{\llap{\vtop to\baselineskip % {\@tempa\hbox{##1}\vss}}}% % \advance \macro@cnt \@ne % \else \macro@cnt\@ne \fi % \edef\@tempa{\noexpand\item[% % #1% % \noexpand\PrintMacroName % \else % \noexpand\PrintEnvName % \fi % {\string#2}]}% % \@tempa % \global\advance\c@CodelineNo\@ne % #1% % \SpecialMainIndex{#2}\nobreak % \DoNotIndex{#2}% % \else % \SpecialMainOptionIndex{#2}\nobreak % \fi % \global\advance\c@CodelineNo\m@ne % \ignorespaces} % \let\endoption \endtrivlist % \def\DescribeOption{\leavevmode\@bsphack\begingroup\MakePrivateLetters % \Describe@Option} % \def\Describe@Option#1{\endgroup % \marginpar{\raggedleft\PrintDescribeEnv{#1}}% % \SpecialOptionIndex{#1}\@esphack\ignorespaces} % \def\DescribeFile{\leavevmode\@bsphack\begingroup\MakePrivateLetters % \Describe@Option} % \def\Describe@File#1{\endgroup % \marginpar{\raggedleft\PrintDescribeEnv{#1}}% % \SpecialFileIndex{#1}\@esphack\ignorespaces} % \makeatother % \MakeShortVerb{\|} % % \section{Introduction} % % \subsection{General} % \DescribeMacro{\includegraphics} % This package allows to load XFig figures from \LaTeX\space sources with % the |\includegraphics| command from the |graphicx| package: % \begin{verbatim} % \includegraphics[width=\linewidth]{myfig.fig} % \end{verbatim} % % This package does not convert by itself XFig figures (see package % |texdepends| for that). It only diverts the loading functions so % that \LaTeX\space includes the |.pstex_t| or the |.pdftex_t|. % % \subsection{Options} % Available options for this package: % \begin{description} % \item[debug~:] \DescribeOption{debug}more messages written while compiling % \end{description} % % \DescribeFile{figlatex.cfg} % \DescribeMacro{\debug} % When the package is loaded, it tries to read a |figlatex.cfg| % file. This file can contains |\debug| to % enable this option site wide. % % \subsection{Subfigures} % % Sometimes, several figures made with XFig should be similar. It is % possible to make only one XFig figure and then create subfigures % which contains only a subset of the depths of the original figure. % % \StopEventually{ % } % \section{Implementation} % % \subsection{figlatex} % \begin{macrocode} %<*package> % \end{macrocode} % % Options definitions % \begin{option}{debug} % \begin{macrocode} \newif\ifFL@debug \DeclareOption{debug}{% \global\FL@debugtrue% } % \end{macrocode} % \end{option} % % We load the config file if it exists. % Commands for the config file are local. % \begin{macrocode} { % \end{macrocode} % \begin{macro}{\debug} % \begin{macrocode} \def\debug{% \ExecuteOptions{debug}% } % \end{macrocode} % \end{macro} % \begin{macrocode} \InputIfFileExists{figlatex.cfg}{% \typeout{***************************************^^J% * Local config file figlatex.cfg used *^^J% ***************************************} }{% \typeout{Found no configuration file for figlatex} } } % \end{macrocode} % Run the options % \begin{macrocode} \ProcessOptions % \end{macrocode} % and requires some packages % \begin{macrocode} \RequirePackage{ifthen} \RequirePackage{ifpdf} \RequirePackage{graphicx} \RequirePackage{xstring} % \end{macrocode} % XFig uses heavily the color package % \begin{macrocode} \RequirePackage{color} \RequirePackage{epstopdf} % \end{macrocode} % \begin{macro}{\FL@dmessage} % Write the message only if debug is set % \begin{macrocode} \def\FL@dmessage#1{% \ifFL@debug% \message{#1}% \fi% } % \end{macrocode} % \end{macro} % \begin{macro}{\Ginclude@rawtex} % |.pstex_t| or |.pdftex_t| are loaded with |\input| % \begin{macrocode} \def\Ginclude@rawtex#1{% \FL@dmessage{<#1>}% \bgroup% \def\@tempa{!}% \ifx\Gin@scaley\@tempa% \let\Gin@scaley\Gin@scalex% \else% \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi% \fi% \hbox{% \Gscale@box{\Gin@scalex}[\Gin@scaley]{% \def\Gin@scalex{1}% \let\Gin@scaley\Gin@exclamation% needed for pdflatex \FL@dmessage{}% \input{#1}}}% \egroup} % \end{macrocode} % \end{macro} % \begin{macro}{\Ginclude@figtex} % |.fig| are loaded with |\includegraphics| after modifying the name % \begin{macrocode} \def\Ginclude@figtex#1{% \message{<#1>}% \bgroup% \xdef\FL@filename{#1}% \filename@parse{\FL@filename}% \xdef\FL@filename{\filename@area\filename@base.\FL@figext}% \FL@dmessage{<****loading fig \FL@filename>}% \FL@includerawtexgraphics[]{\FL@filename}% \egroup} % \end{macrocode} % \end{macro} % \begin{macro}{\Gread@figtex} % |.fig| bounding box is the same as the corresponding |.pstex_t| or |.pdftex_t| % \begin{macrocode} \newcommand{\Gread@figtex}[1]{% %\typeout{Oh, file exists #1}% \Gread@rawtex{#1}% } % \end{macrocode} % \end{macro} % \begin{macro}{\Ginclude@svgtex} % |.svg| are loaded with |\includegraphics| after modifying the name % \begin{macrocode} \def\Ginclude@svgtex#1{% \message{<#1>}% \bgroup% \xdef\FL@filename{#1}% \filename@parse{\FL@filename}% \xdef\FL@filename{\filename@area\filename@base.\FL@svgext}% \FL@dmessage{<****loading svg \FL@filename>}% \FL@includerawtexgraphics[]{\FL@filename}% \egroup} % \end{macrocode} % \end{macro} % \begin{macro}{\Gread@svgtex} % |.svg| bounding box is the same as the corresponding |.pstex_t| or |.pdftex_t| % \begin{macrocode} \newcommand{\Gread@svgtex}[1]{% %\typeout{Oh, file exists #1}% \Gread@rawtex{#1}% } % \end{macrocode} % \end{macro} % Declare the right things depending whether we build a DVI or a PDF file. % \begin{macrocode} \ifpdf % \end{macrocode} % PDF part % \begin{macrocode} \def\FL@figext{pdftex_t}% \def\FL@svgext{pdftex_t}% % \end{macrocode} % To read bounding box information: % \begin{macrocode} \let\Gread@rawtex\Gread@pdf% \DeclareGraphicsRule{.pdftex}{pdf}{*}{}% \DeclareGraphicsRule{.pdftex_t}{rawtex}{.pdftex}{}% \DeclareGraphicsRule{.fig}{figtex}{.pdftex}{}% \DeclareGraphicsRule{.svg}{svgtex}{.pdftex}{}% \else % \end{macrocode} % DVI part % \begin{macrocode} \def\FL@figext{pstex_t}% \def\FL@svgext{pstex_t}% % \end{macrocode} % To read bounding box information: % \begin{macrocode} \let\Gread@rawtex\Gread@eps% \DeclareGraphicsRule{.pstex}{eps}{*}{}% \DeclareGraphicsRule{.pstex_t}{rawtex}{.pstex}{}% \DeclareGraphicsRule{.fig}{figtex}{.pstex}{}% \DeclareGraphicsRule{.svg}{svgtex}{.pstex}{}% \fi % \end{macrocode} % This command is not really necessary here (code could be added in % |\Ginclude@figtex|). However, it's very convinient for the % |texdepends| package. % \begin{macrocode} \newcommand{\FL@includerawtexgraphics}[2][]{% \includegraphics[#1]{#2}% } % \end{macrocode} % Addition of the |subfig=name| key for the options of the % |\includegraphicx[..]{..}| macro. % \begin{macrocode} \def\FL@exclamation{!}% \let\FL@subfig@name\FL@exclamation% \define@key{Gin}{subfig}{% \typeout{using subfig #1}% \def\FL@subfig@name{#1}% } \def\FL@sepdefault{_}% % \end{macrocode} % We should ckeck if the \#1 file exists (XXX.subfig) % This is not yet done but texdepends divert this macro % to record the dependency % \begin{macrocode} \def\FL@subfig@check#1{% } % \end{macrocode} % We divert |\Gin@getbase| to modify the file name if the |subfig| key % is used. % \begin{macrocode} \def\FL@Gin@getbase#1{% \typeout{In getbase #1 with \FL@subfig@name / \FL@exclamation}% \ifx\FL@subfig@name\FL@exclamation% \else% \typeout{getbase lets go (\filename@area)(\filename@base)(#1)}% \IfStrEq*{#1}{.fig}{% % If we're including a subfig \IfFileExists{\filename@area\filename@base#1}{% % If the original .fig file exists, just change the name so that % it comprises the full path (file has been looked into % texgraphics, etc.) % Warning: the found filename is quoted :-( \StrBetween[1,2]{\@filef@und}{"}{"}[\FL@filename@unquoted] \filename@parse{\FL@filename@unquoted}% % Check if the subfig file exists \FL@subfig@check{\filename@area\filename@base.subfig}% }{% % Else, write a warning (LaTeX will warn as well but it doesn't % hurt) \PackageWarning{figlatex}{No file '\filename@area\filename@base#1'}% } % Add the subfig suffix to the fig name. \edef\filename@base{\filename@base\FL@sepdefault\FL@subfig@name}% }{% }% \IfStrEq*{#1}{.svg}{% % If we're including a subfig \IfFileExists{\filename@area\filename@base#1}{% % If the original .svg file exists, just change the name so that % it comprises the full path (file has been looked into % texgraphics, etc.) % Warning: the found filename is quoted :-( \StrBetween[1,2]{\@filef@und}{"}{"}[\FL@filename@unquoted] \filename@parse{\FL@filename@unquoted}% % Check if the subfig file exists \FL@subfig@check{\filename@area\filename@base.subfig}% }{% % Else, write a warning (LaTeX will warn as well but it doesn't % hurt) \PackageWarning{figlatex}{No file '\filename@area\filename@base#1'}% } % Add the subfig suffix to the svg name. \edef\filename@base{\filename@base\FL@sepdefault\FL@subfig@name}% }{% }% \fi% \FL@orig@Gin@getbase{#1}% } \let\FL@orig@Gin@getbase\Gin@getbase \let\Gin@getbase\FL@Gin@getbase %\@namedef{Gin@rule@.fig}#1{% %} % \end{macrocode} % \begin{macrocode} % % \end{macrocode} % The sample config file |figlatex.cfg|\ldots % \begin{macrocode} %<*config> % \end{macrocode} % \begin{macrocode} %\debug % \end{macrocode} % \begin{macrocode} % % \end{macrocode} % \subsection{texgraphicx} % \begin{macrocode} %<*compat> % \end{macrocode} % |texgraphicx.sty| was only a wrapper arround |figlatex.sty|. Now, an % error is generated. % \begin{macrocode} \PackageError{texgraphicx}{'texgraphicx' is now gone\MessageBreak% Please, switching to 'figlatex' package\MessageBreak}{} \ProcessOptions % \end{macrocode} % \begin{macrocode} % % \end{macrocode} % \Finale \endinput