diff options
Diffstat (limited to 'Master/texmf-dist/source/support/latex-make/figlatex.dtx')
-rw-r--r-- | Master/texmf-dist/source/support/latex-make/figlatex.dtx | 510 |
1 files changed, 510 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/support/latex-make/figlatex.dtx b/Master/texmf-dist/source/support/latex-make/figlatex.dtx new file mode 100644 index 00000000000..c389ed4b487 --- /dev/null +++ b/Master/texmf-dist/source/support/latex-make/figlatex.dtx @@ -0,0 +1,510 @@ +% \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} +%</dtx> +%<package>\NeedsTeXFormat{LaTeX2e}% +%<package>\ProvidesPackage{figlatex}% +%<config> \ProvidesFile{figlatex.cfg}% +%<compat> \ProvidesPackage{texgraphicx}% +% \fi +% \ProvidesFile{figlatex.dtx} +[2011/09/25 v0.1.4 include fig and svg in LaTeX] +% \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} +%</driver> +% \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{217} +% +% \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} +% +% \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 +% \item[compatibility~:] \DescribeOption{compatibility}old versions of |pdflatex| do not allow +% to declare a PDF file with |\DeclareGraphicsRule| that has not the +% |.pdf| extension. In such cases, this package uses the extension +% |.pdf| instead of |.pdftex| for PDF created from XFig figures. +% \end{description} +% +% \DescribeFile{figlatex.cfg} +% \DescribeMacro{\compatibility} +% \DescribeMacro{\debug} +% When the package is loaded, it tries to read a |figlatex.cfg| +% file. This file can contains |\compatibility| and/or |\debug| to +% enable theses options 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}{compatibility} +% \begin{macrocode} +\newif\ifFL@compatibility +\DeclareOption{compatibility}{% + %\PackageWarning{figlatex}{option compatibility}% + \global\FL@compatibilitytrue% +} +% \end{macrocode} +% \end{option} +% \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}{\compatibility} +% \begin{macrocode} + \def\compatibility{% + \ExecuteOptions{compatibility}% + } +% \end{macrocode} +% \end{macro} +% \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{ifpdf} +\RequirePackage{graphicx} +% \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{<loading rawtex #1>}% + \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}{*}{}% + \ifFL@compatibility% + \PackageWarningNoLine{figlatex}{Compatibility mode enabled + for old LaTeX + \MessageBreak Using .pdf extension for pdftex files}% + \DeclareGraphicsRule{.pdftex_t}{rawtex}{.pdf}{}% + \DeclareGraphicsRule{.fig}{figtex}{.pdf}{}% + \DeclareGraphicsRule{.svg}{svgtex}{.pdf}{}% + \else% + \DeclareGraphicsRule{.pdftex_t}{rawtex}{.pdftex}{}% + \DeclareGraphicsRule{.fig}{figtex}{.pdftex}{}% + \DeclareGraphicsRule{.svg}{svgtex}{.pdftex}{}% + \fi% +\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}{% + \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{% + \ifx\FL@subfig@name\FL@exclamation% + \else% + \ifthenelse{\equal{#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. + \filename@parse{\@filef@und}% + % Remove potential trailing spage at the end of the extension + \def\filename@ext{fig}% + % 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}% + }{% + }% + \ifthenelse{\equal{#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. + \filename@parse{\@filef@und}% + % Remove potential trailing spage at the end of the extension + \def\filename@ext{svg}% + % 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} +%</package> +% \end{macrocode} +% The sample config file |figlatex.cfg|\ldots +% \begin{macrocode} +%<*config> +% \end{macrocode} +% \begin{macrocode} + %\compatibility + %\debug +% \end{macrocode} +% \begin{macrocode} +%</config> +% \end{macrocode} +% \subsection{texgraphicx} +% \begin{macrocode} +%<*compat> +% \end{macrocode} +% |texgraphicx.sty| is only a wrapper arround |figlatex.sty|. +% \begin{macrocode} +\PackageWarning{texgraphicx}{'texgraphicx' is now + deprecated\MessageBreak% + Please, consider switching to 'figlatex' + package\MessageBreak} +\RequirePackage{figlatex} +\ProcessOptions +% \end{macrocode} +% \begin{macrocode} +%</compat> +% \end{macrocode} +% \Finale +\endinput |