summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/pict2e/p2e-drivers.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/pict2e/p2e-drivers.dtx')
-rw-r--r--macros/latex/contrib/pict2e/p2e-drivers.dtx638
1 files changed, 638 insertions, 0 deletions
diff --git a/macros/latex/contrib/pict2e/p2e-drivers.dtx b/macros/latex/contrib/pict2e/p2e-drivers.dtx
new file mode 100644
index 0000000000..8f27acfa7f
--- /dev/null
+++ b/macros/latex/contrib/pict2e/p2e-drivers.dtx
@@ -0,0 +1,638 @@
+% \iffalse meta-comment
+%
+% p2e-drivers.dtx
+%
+%
+% Copyright (C) 2003-2016
+% Rolf Niepraschk, Rolf.Niepraschk@gmx.de
+% Hubert Gaesslein, hubertjg@gmx.de
+% Josef Tkadlec, j.tkadlec@email.cz
+%
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% This work consists of all files listed in manifest.txt.
+%
+%
+% This file is part of the New Implementation of the Standard LaTeX
+% picture commands (package pict2e). It complements the file
+% drivers.dtx from the Standard LaTeX `Graphics Bundle'.
+%
+%
+%<template, >\ProvidesFile{p2e-template.def}
+%<dvips, >\ProvidesFile{p2e-dvips.def}
+%<xdvi, >\ProvidesFile{p2e-xdvi.def}
+%<pdftex, >\ProvidesFile{p2e-pdftex.def}
+%<luatex, >\ProvidesFile{p2e-luatex.def}
+%<vtex, >\ProvidesFile{p2e-vtex.def}
+%<dvipdfm, >\ProvidesFile{p2e-dvipdfm.def}
+%<dvipdfmx, >\ProvidesFile{p2e-dvipdfmx.def}
+%<xetex, >\ProvidesFile{p2e-xetex.def}
+%<textures, >\ProvidesFile{p2e-textures.def}
+%<pctexps, >\ProvidesFile{p2e-pctexps.def}
+%<pctex32, >\ProvidesFile{p2e-pctex32.def}
+%
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{p2e-drivers.dtx}
+%</driver>
+%
+%<cfg>\ProvidesFile{pict2e.cfg}%
+ [2016/02/05 v0.1u
+%<*!cfg>
+ Driver-dependant file (RN,HjG,JT)]
+%</!cfg>
+%<cfg> pict2e configuration for teTeX/TeXLive]
+%
+%<*driver>
+\documentclass{ltxdoc}
+ \GetFileInfo{p2e-drivers.dtx}
+ \def\docdate{2016/02/05}
+\begin{document}
+ \title{Graphics drivers for \textsf{pict2e}\thanks
+ {This document corresponds to \textsf{\filename} \fileversion,
+ dated \filedate, documentation dated \docdate.}}
+ \author{Rolf Niepraschk\thanks{\texttt{Rolf.Niepraschk@gmx.de}},
+ Hubert G\"a{\ss}lein,%\thanks{\texttt{HubertJG@open.mind.de}}
+ \,and Josef Tkadlec\thanks{\texttt{j.tkadlec@email.cz}}}
+ \date{\filedate}
+ % \maketitle
+ \DocInput{p2e-drivers.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{166}
+%
+% \changes{v0.1g}{2003/11/07}{Translated documentation to English (HjG)}
+% \changes{v0.1g}{2003/11/07}{Added driver \texttt{dvipdfm} (RN)}
+% \changes{v0.1h}{2003/11/12}{Move check for \texttt{ver@\backslash Gin@driver}
+% to package pict2e (RN,HjG)}
+% \changes{v0.1h}{2003/11/12}{General cleaning (RN,HjG)}
+% \changes{v0.1h}{2003/11/12}{More general cleaning (HjG)}
+% \changes{v0.1i}{2003/11/22}{M-x delete-trailing-whitespace (HjG)}
+% \changes{v0.1j}{2003/12/13}{Resurrect reference to latexbugs address (HjG)}
+% \changes{v0.1j}{2003/12/13}{Try new driver for \textsf{xdvi}---to no avail (HjG)}
+% \changes{v0.1k}{2003/12/18}{Polish up documentation (HjG)}
+% \changes{v0.1l}{2003/12/19}{Some tentative entries for new drivers (HjG)}
+% \changes{v0.1l}{2003/12/19}{Polish up documentation (HjG)}
+% \changes{v0.1m}{2003/12/21}{Polish up documentation (HjG)}
+% \changes{v0.1o}{2004/02/19}{Fix some typos (HjG)}
+% \changes{v0.1p}{2004/03/26}{Minor changes to documentation (HjG)}
+% \changes{v0.1q}{2004/04/22}{Added lppl (RN/HjG)}
+% \changes{v0.1r}{2004/06/25}{Small fixes in documentation (HjG)}
+% \changes{v0.1s}{2009/08/05}{Support for xetex added (JT)}
+% \changes{v0.1t}{2011/04/05}{Support for dvipdfmx added (JT)}
+% \changes{v0.1u}{2016/02/05}{Support for luatex >0.85
+% (suggested by David Carlisle) added (RN)}
+%
+% \newcommand*\PS{PostScript}
+% \newcommand*\PDF{PDF}
+% \newcommand*\teTeX{te\kern-.11em\TeX}
+% \newcommand*\TeXlive{\TeX live}
+%
+% \makeatletter
+% \@ifundefined{ifdeveloping}{\newif\ifdeveloping}{} ^^A false by default
+% \makeatother
+%
+% \ifdeveloping
+% \makeatletter
+%
+% \newcommand*\isodattim{}
+% \begingroup
+% \count@\time
+% \divide\count@ 60
+% \count2=-\count@
+% \multiply\count2 60
+% \advance\count2 \time
+% \xdef\isodattim{^^A
+% \the\year-\two@digits{\the\month}-\two@digits{\the\day}^^A
+% ~\two@digits{\the\count@}:\two@digits{\the\count2}}
+% \endgroup
+%
+% \newcommand*\ps@myfootings{^^A cf. \ps@plain
+% \let\@mkboth\@gobbletwo
+% \let\@oddhead\@empty
+% \let\@evenhead\@empty
+% \def\@oddfoot{\reset@font
+% \rlap{\textsf{\filename}~\fileversion~\filedate}^^A
+% \hfil\thepage\hfil
+% \llap{\TeX ed \texttt{\isodattim}}}^^A
+% \def\@evenfoot{\reset@font
+% \rlap{\TeX ed \texttt{\isodattim}}^^A
+% \hfil\thepage\hfil
+% \llap{\filedate~\fileversion~\textsf{\filename}}}^^A
+% }
+% \pagestyle{myfootings}
+% \let\pagestyle\@gobble
+% \let\thispagestyle\@gobble
+%
+% \makeatother
+% \else
+% \makeatletter
+% ^^A \ifdim\overfullrule>\z@\else\let\ps@myfootings\ps@plain\fi
+% \makeatother
+% \fi
+%
+%
+% \maketitle
+%
+%
+% \section{Driver files}
+%
+% This file implements some of the currently supported drivers for
+% the new version of the \textsf{pict2e} package.
+% If the driver you use is not in this list then a `\texttt{.def}'
+% file may be distributed with the pict2e package,
+% or may be distributed with the standard \LaTeX\ graphics bundle,
+% or may be distributed with your driver.
+%
+% If not, send us some details of the driver's |\special| syntax, and
+% we will try to produce a suitable file.
+%
+% Note that some of these files are for graphics drivers to which we
+% have no access, so they are untested.
+% Please send any corrections to the latexbugs address or directly to
+% the authors.
+%
+% \StopEventually{}
+%
+% \subsection{Template}
+%
+% A template for a \textsf{pict2e} driver file.
+%
+% \begin{macro}{\pIIe@mode}
+% This macro serves as an indicator to the \textsf{pict2e} package
+% which mode the driver supports:
+%
+% \smallskip
+% \begin{tabular}{rl}
+% $-1$ & inapt\slash incapable (default,
+% already set in \textsf{pict2e}) \\
+% $0$ & standard \LaTeX\ only \\
+% $1$ & \PS \\
+% $2$ & \PDF \\
+% & (other values are reserved for future use)
+% \end{tabular}
+% \smallskip
+%
+% \noindent
+% Incapable drivers should not alter the default value given by the
+% \textsf{pict2e} package, or set it explicitly to $-1$.
+% ^^A (Or set it to $0$ to request standard \LaTeX\ mode.)
+% \begin{macrocode}
+%<*template>
+\def\pIIe@mode{-1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% The \textsf{pict2e} package expects the driver file to define the
+% \cmd{\pIIe@code} command in a suitable way.
+%
+% This command should locally establish the standard \PS\slash\PDF\
+% coordinate system
+% (i.e., a cartesian coordinate system
+% with positive x-axis pointing right
+% and positive y-axis pointing up,
+% and with unit $1\,\mathrm{bp} = 1/72\,\mathrm{in}$),
+% albeit with the origin at \TeX's current point instead of the lower
+% left corner of the page.
+%
+% Furthermore, it should save and restore the graphics state
+% (|gsave|\slash|grestore| in \PS, |q|\slash|Q| in \PDF.)
+% This may be achieved by using appropriate \cmd{\special} (or
+% \cmd{\pdfliteral}, respectively) commands.
+%
+% Moreover, this command should preserve (i.e., it should not change)
+% the current colour as defined by the user via the commands of the
+% \textsf{color} package from the graphics bundle.
+%
+% Thus, the \cmd{\Gin@PS@restored} command that various
+% \meta{driver}|.def| files from the graphics bundle provide should
+% usually come close to what is expected here.
+% \begin{macrocode}
+\def\pIIe@code#1{}
+%</template>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{dvips}
+%
+% A \textsf{pict2e} driver file for the \textsf{dvips} driver.
+%
+% \begin{macro}{\pIIe@mode}
+% We are about to generate \PS\ code.
+% \begin{macrocode}
+%<*dvips>
+\def\pIIe@mode{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% In this case the code inserted by the driver on behalf of the
+% \cmd{\Gin@PS@restored} command performs a ``|0| |setgray|''
+% operation, thus resetting any colour the user might have set by
+% means of the \textsf{color} package.
+% \ (See also \LaTeX\ problem report graphics/3569.) \ ^^A
+% We therefore have to resort to the following kludge:
+% As long as we output only simple picture objects, our operations are
+% ``atomic.''
+% Hence, we won't need to set colours or gray shades within the \PS\
+% code generated by \textsf{pict2e};
+% thus the offending |setgray| operator may as well be a no-op.
+% To keep this redefinition local, we enclose the call to
+% \cmd{\Gin@PS@restored} by a |save|\slash|restore| pair.
+% \changes{v0.1}{2003/08/27}{Fix for dvips' \cmd{\Gin@PS@restored}
+% (prevent resetting current color to black). (HjG,RN)}
+% \begin{macrocode}
+\def\pIIe@code#1{%
+ \Gin@PS@raw{save /setgray { pop } def}%
+ \Gin@PS@restored{#1}%
+ \Gin@PS@raw{restore}%
+}
+%</dvips>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{pdfTeX}
+%
+% A \textsf{pict2e} driver file for the \textsf{pdftex} driver.
+%
+% \begin{macro}{\pIIe@mode}
+% We are about to generate \PDF\ code.
+% (Only, if pdf\TeX\ is actually generating \PDF;
+% otherwise nothing will be output.)
+% \begin{macrocode}
+%<*pdftex>
+\begingroup
+ \@ifundefined{pdfoutput}{}{%
+ \ifnum\pdfoutput>0\relax
+ \gdef\pIIe@mode{2}
+ \fi
+ }
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% The save\slash restore operators are necessary here to prevent the
+% change of the CTM (scaling and rotation operations) that
+% \textsf{pict2e} inserts from propagating.
+% \begin{macrocode}
+\ifcase\pIIe@mode\relax \or\or
+ \def\pIIe@code#1{\pdfliteral{ q #1 Q }}
+\fi
+%</pdftex>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Lua\TeX}
+%
+% A \textsf{pict2e} driver file for the \textsf{luatex} driver.
+%
+% \begin{macro}{\pIIe@mode}
+% We are about to generate \PDF\ code.
+% (Only, if Lua\TeX\ is actually generating \PDF;
+% otherwise nothing will be output.)
+% \begin{macrocode}
+%<*luatex>
+\begingroup
+ \ifnum\outputmode>0\relax
+ \gdef\pIIe@mode{2}
+ \fi
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% The save\slash restore operators are necessary here to prevent the
+% change of the CTM (scaling and rotation operations) that
+% \textsf{pict2e} inserts from propagating.
+% \begin{macrocode}
+\ifcase\pIIe@mode\relax \or\or
+ \def\pIIe@code#1{\pdfextension literal{ q #1 Q }}
+ \protected\edef\pIIe@pdfliteral{\pdfextension literal}
+\fi
+%</luatex>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{V\TeX}
+%
+% A \textsf{pict2e} driver file for the \textsf{vtex} driver.
+%
+% \begin{macro}{\pIIe@mode}
+% With \textsf{V\TeX}, we should use \PS\ code also for \PDF\ mode
+% (Email from Michael Vulis, MicroPress).
+% \begin{macrocode}
+%<*vtex>
+\begingroup
+ \@ifundefined{VTeXversion}{}{%
+ \ifnum\OpMode>0\relax
+ \ifnum\OpMode<3\relax
+ \gdef\pIIe@mode{1}%
+ \fi
+ \fi
+ }
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% Here |\Gin@PS@restored| suffices as provided by the graphics driver
+% file |vtex.def|.
+% \begin{macrocode}
+\ifcase\pIIe@mode\relax \or
+ \let\pIIe@code\Gin@PS@restored
+\fi
+%</vtex>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{dvipdfm}
+%
+% A \textsf{pict2e} driver file for the \textsf{dvipdfm} driver.
+%
+% \begin{macro}{\pIIe@mode}
+% We are about to generate \PDF\ code.
+% \begin{macrocode}
+%<*dvipdfm>
+\def\pIIe@mode{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% This seems to be sufficient.
+% \begin{macrocode}
+\def\pIIe@code#1{\special{pdf: content #1}}
+%</dvipdfm>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{dvipdfmx}
+%
+% A \textsf{pict2e} driver file for the \textsf{dvipdfmx} driver.
+%
+% \begin{macro}{\pIIe@mode}
+% We are about to generate \PDF\ code.
+% \begin{macrocode}
+%<*dvipdfmx>
+\def\pIIe@mode{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% \begin{macrocode}
+\def\pIIe@code#1{\special{pdf: content #1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@pdfliteral}
+% \begin{macrocode}
+\def\pIIe@pdfliteral#1{\special{pdf: literal #1}}
+%</dvipdfmx>
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+% \subsection{xdvi}
+%
+% A \textsf{pict2e} driver file for the \textsf{xdvi} driver.
+%
+% \begin{macro}{\pIIe@mode}
+% We are about to generate \PS\ code.
+% \begin{macrocode}
+%<*xdvi>
+\def\pIIe@mode{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% As long as our operations are ``atomic,'' we won't need to set
+% colours or gray shades within our code, hence the offending
+% \verb+setgray+ operator may as well be a no-op.
+% See also \LaTeX\ problem report graphics/3569.
+% \changes{v0.1}{2003/08/27}{Fix for dvips' \cmd{\Gin@PS@restored}
+% (prevent resetting current color to black). (HjG,RN)}
+% \begin{macrocode}
+\def\pIIe@code#1{%
+ % \Gin@PS@raw{save /setgray { pop } def}%
+ \Gin@PS@restored{#1}%
+ % \Gin@PS@raw{restore}%
+}
+%</xdvi>
+% \end{macrocode}
+% \end{macro}
+%\fi
+%
+%
+% \subsection{xetex}
+%
+% A \textsf{pict2e} driver file for the \textsf{xetex} driver.
+% \begin{macro}{\pIIe@mode}
+% We are about to generate \PDF\ code.
+% \begin{macrocode}
+%<*xetex>
+\def\pIIe@mode{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% \begin{macrocode}
+\def\pIIe@code#1{\special{pdf: literal q #1 Q}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@pdfliteral}
+% \begin{macrocode}
+\def\pIIe@pdfliteral#1{\special{pdf: literal #1}}
+%</xetex>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{dvipdf}
+%
+% A \textsf{pict2e} driver file for the \textsf{dvipdf} driver
+% (not yet implemented).
+%
+% \begin{macro}{\pIIe@mode}
+% \begin{macrocode}
+%<*dvipdf>
+ %\def\pIIe@mode{-1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% This is the same as the definition for |\Gin@PS@restored|
+% in |dvipdf.def| as defined in |drivers.dtx|!
+% Better use the higher-level macro instead of the |\special|?
+% \begin{macrocode}
+ %\def\pIIe@code#1{\special{" #1}} % \Gin@PS@restored{#1}
+%</dvipdf>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{textures}
+%
+% A \textsf{pict2e} driver file for the \textsf{textures} driver
+% (not yet implemented).
+%
+% \begin{macro}{\pIIe@mode}
+% \begin{macrocode}
+%<*textures>
+ % \def\pIIe@mode{-1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% \begin{macrocode}
+ % \def\pIIe@code#1{}
+%</textures>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{dvipsone}
+%
+% A \textsf{pict2e} driver file for the \textsf{dvipsone} driver
+% (not yet implemented).
+%
+% \begin{macro}{\pIIe@mode}
+% \begin{macrocode}
+%<*dvipsone>
+ % \def\pIIe@mode{-1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% \begin{macrocode}
+ % \def\pIIe@code#1{}
+%</dvipsone>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{pctexps}
+%
+% A \textsf{pict2e} driver file for the \textsf{pctexps} driver
+% (not yet implemented).
+%
+% \begin{macro}{\pIIe@mode}
+% \begin{macrocode}
+%<*pctexps>
+ % \def\pIIe@mode{-1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% \begin{macrocode}
+ % \def\pIIe@code#1{}
+%</pctexps>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{pctex32}
+%
+% A \textsf{pict2e} driver file for the \textsf{pctex32} driver
+% (not yet implemented).
+%
+% \begin{macro}{\pIIe@mode}
+% \begin{macrocode}
+%<*pctex32>
+ % \def\pIIe@mode{-1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pIIe@code}
+% \begin{macrocode}
+ % \def\pIIe@code#1{}
+%</pctex32>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{A Sample Configuration File}
+%
+% ^^A Preamble?
+%
+% This one is taken from |color.cfg| of the
+% \teTeX\slash\TeXlive\ distributions.
+% \begin{macrocode}
+%<*cfg>
+%% Select an appropriate default driver.
+\begingroup
+ \chardef\x=0 %
+ % check luatex
+ \ifx\luatexversion\@undefined
+ % check pdfTeX
+ \@ifundefined{pdfoutput}{}{%
+ \ifcase\pdfoutput
+ \else
+ \chardef\x=1 %
+ \fi
+ }%
+ % check VTeX
+ \@ifundefined{OpMode}{}{%
+ \chardef\x=2 %
+ }%
+ % check XeTeX
+ \@ifundefined{XeTeXrevision}{}{%
+ \chardef\x=3 %
+ }%
+ \else
+ \ifnum\luatexversion>85
+ \ifnum\outputmode>0
+ \chardef\x=4\relax
+ \fi
+ \else
+ \ifnum\pdfoutput>0
+ \chardef\x=1\relax
+ \fi
+ \fi
+ \fi
+\expandafter\endgroup
+\ifcase\x
+ % 0: default case
+ \ExecuteOptions{dvips}%
+\or
+ % 1: pdfTeX is running in pdf mode
+ \ExecuteOptions{pdftex}%
+\or
+ % 2: VTeX is running
+ \ExecuteOptions{vtex}%
+\or
+ % 3: XeTeX is running
+ \ExecuteOptions{xetex}%
+\or
+ % 4: LuaTeX (> 0.85) is running
+ \ExecuteOptions{luatex}%
+\fi
+% \end{macrocode}
+% You can also specify other options to the \textsf{pict2e} package in
+% the configuration file.
+% For example, if you prefer PSTricks-like arrows, just uncomment the
+% line below.
+% \begin{macrocode}
+%% \ExecuteOptions{pstarrows}
+%</cfg>
+% \end{macrocode}
+%
+% \Finale
+\endinput