summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/oberdiek
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/oberdiek')
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/etexcmds.dtx46
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/grffile.dtx83
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx38
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx28
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx325
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/oberdiek.ins2
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/oberdiek.tex14
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/pdfrender.dtx712
8 files changed, 1063 insertions, 185 deletions
diff --git a/Master/texmf-dist/source/latex/oberdiek/etexcmds.dtx b/Master/texmf-dist/source/latex/oberdiek/etexcmds.dtx
index 9d7f48115da..ea7e6b55713 100644
--- a/Master/texmf-dist/source/latex/oberdiek/etexcmds.dtx
+++ b/Master/texmf-dist/source/latex/oberdiek/etexcmds.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+% Copyright (C) 2007, 2010 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -77,7 +77,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: etexcmds 2007/12/12 v1.2 Prefix for e-TeX command names (HO)}
+\Msg{* Package: etexcmds 2010/01/28 v1.3 Prefix for e-TeX command names (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -88,7 +88,7 @@
This is a generated file.
-Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+Copyright (C) 2007, 2010 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -155,7 +155,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{etexcmds.drv}%
- [2007/12/12 v1.2 Prefix for e-TeX command names (HO)]%
+ [2010/01/28 v1.3 Prefix for e-TeX command names (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2008/08/11]
\begin{document}
@@ -164,7 +164,7 @@ and the derived files
%</driver>
% \fi
%
-% \CheckSum{490}
+% \CheckSum{514}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -185,7 +185,7 @@ and the derived files
% \GetFileInfo{etexcmds.drv}
%
% \title{The \xpackage{etexcmds} package}
-% \date{2007/12/12 v1.2}
+% \date{2010/01/28 v1.3}
% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}}
%
% \maketitle
@@ -304,7 +304,7 @@ and the derived files
\fi
\expandafter\x\csname ver@etexcmds.sty\endcsname
\ProvidesPackage{etexcmds}%
- [2007/12/12 v1.2 Prefix for e-TeX command names (HO)]
+ [2010/01/28 v1.3 Prefix for e-TeX command names (HO)]
% \end{macrocode}
%
% \subsection{Catcodes}
@@ -345,6 +345,26 @@ and the derived files
\escapechar=92 % backslash
% \end{macrocode}
%
+% \subsection{Provide \cs{newif}}
+%
+% \begin{macro}{\etexcmds@newif}
+% \begin{macrocode}
+\def\etexcmds@newif#1{%
+ \expandafter\edef\csname etex@#1false\endcsname{%
+ \let
+ \expandafter\noexpand\csname ifetex@#1\endcsname
+ \noexpand\iffalse
+ }%
+ \expandafter\edef\csname etex@#1true\endcsname{%
+ \let
+ \expandafter\noexpand\csname ifetex@#1\endcsname
+ \noexpand\iftrue
+ }%
+ \csname etex@#1false\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Load package \xpackage{infwarerr}}
%
% \begin{macrocode}
@@ -360,7 +380,7 @@ and the derived files
%
% \begin{macro}{\ifetex@unexpanded}
% \begin{macrocode}
-\newif\ifetex@unexpanded
+\etexcmds@newif{unexpanded}
% \end{macrocode}
% \end{macro}
%
@@ -404,7 +424,7 @@ and the derived files
%
% \begin{macro}{\ifetex@expanded}
% \begin{macrocode}
-\newif\ifetex@expanded
+\etexcmds@newif{expanded}
% \end{macrocode}
% \end{macro}
%
@@ -558,7 +578,7 @@ and the derived files
% \begin{macrocode}
%<*test3>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{etexcmds-test3.tex}[2007/12/12 v1.2 Test file for LaTeX]
+\ProvidesFile{etexcmds-test3.tex}[2010/01/28 v1.3 Test file for LaTeX]
\RequirePackage{etexcmds}
\makeatletter
\edef\x{\string\unexpanded}
@@ -574,7 +594,7 @@ and the derived files
% \begin{macrocode}
%<*test4>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{etexcmds-test4.tex}[2007/12/12 v1.2 Test file for LaTeX]
+\ProvidesFile{etexcmds-test4.tex}[2010/01/28 v1.3 Test file for LaTeX]
\documentclass{article}
\usepackage{m-pictex}
\def\normalwritestatus#1#2{%
@@ -800,6 +820,10 @@ and the derived files
% \item
% \cs{etex@expanded} added.
% \end{Version}
+% \begin{Version}{2010/01/28 v1.3}
+% \item
+% Compatibility to iniTeX\ added.
+% \end{Version}
% \end{History}
%
% \PrintIndex
diff --git a/Master/texmf-dist/source/latex/oberdiek/grffile.dtx b/Master/texmf-dist/source/latex/oberdiek/grffile.dtx
index abe16548837..b7a20b32b74 100644
--- a/Master/texmf-dist/source/latex/oberdiek/grffile.dtx
+++ b/Master/texmf-dist/source/latex/oberdiek/grffile.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2006-2009 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+% Copyright (C) 2006-2010 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -70,7 +70,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: grffile 2009/09/25 v1.10 Extended file name support for graphics (HO)}
+\Msg{* Package: grffile 2010/01/28 v1.11 Extended file name support for graphics (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -81,7 +81,7 @@
This is a generated file.
-Copyright (C) 2006-2009 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+Copyright (C) 2006-2010 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -141,7 +141,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{grffile.drv}%
- [2009/09/25 v1.10 Extended file name support for graphics (HO)]%
+ [2010/01/28 v1.11 Extended file name support for graphics (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2008/08/11]
\begin{document}
@@ -150,7 +150,7 @@ and the derived files
%</driver>
% \fi
%
-% \CheckSum{561}
+% \CheckSum{596}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -171,7 +171,7 @@ and the derived files
% \GetFileInfo{grffile.drv}
%
% \title{The \xpackage{grffile} package}
-% \date{2009/09/25 v1.10}
+% \date{2010/01/28 v1.11}
% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}}
%
% \maketitle
@@ -379,7 +379,7 @@ and the derived files
%<*package>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{grffile}%
- [2009/09/25 v1.10 Extended file name support for graphics (HO)]%
+ [2010/01/28 v1.11 Extended file name support for graphics (HO)]%
% \end{macrocode}
%
% \subsection{Catcode stuff}
@@ -576,31 +576,50 @@ and the derived files
}{%
}%
}
-\def\grffile@IfFileExists#1{%
- \expandafter\expandafter\expandafter
- \ifx\expandafter\expandafter\expandafter\\\pdf@filesize{#1}\\%
- \let\reserved@a\@secondoftwo
- \ifx\input@path\@undefined
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdf@filesize\endcsname\relax
+ \begingroup
+ \let\on@line\@empty
+ \PackageInfo{grffile}{%
+ \string\grffile@IfFileExists\space without space support,%
+ \MessageBreak
+ because pdfTeX's \string\pdffilesize\space is not available%
+ }%
+ \endgroup
+ \def\grffile@IfFileExists#1{%
+ \IfFileExists{#1}{%
+ \let\grffile@IFE@next\@firstoftwo
+ }{%
+ \let\grffile@IFE@next\@secondoftwo
+ }%
+ \grffile@IFE@next
+ }%
+\else
+ \def\grffile@IfFileExists#1{%
+ \expandafter\expandafter\expandafter
+ \ifx\expandafter\expandafter\expandafter\\\pdf@filesize{#1}\\%
+ \let\reserved@a\@secondoftwo
+ \ifx\input@path\@undefined
+ \else
+ \expandafter\@tfor\expandafter\reserved@b\expandafter
+ :\expandafter=\input@path\do{%
+ \expandafter\expandafter\expandafter
+ \ifx\expandafter\expandafter\expandafter
+ \\\pdf@filesize{\reserved@b#1}\\%
+ \else
+ \edef\grffile@file@found{\reserved@b#1}%
+ \let\reserved@a\@firstoftwo
+ \@break@tfor
+ \fi
+ }%
+ \fi
+ \expandafter\reserved@a
\else
- \expandafter\@tfor\expandafter\reserved@b\expandafter
- :\expandafter=\input@path\do{%
- \expandafter\expandafter\expandafter
- \ifx\expandafter\expandafter\expandafter
- \\\pdf@filesize{\reserved@b#1}\\%
- \else
- \edef\grffile@file@found{\reserved@b#1}%
- \let\reserved@a\@firstoftwo
- \@break@tfor
- \fi
- }%
+ \edef\grffile@file@found{#1}%
+ \expandafter\@firstoftwo
\fi
- \expandafter\reserved@a
- \else
- \edef\grffile@file@found{#1}%
- \expandafter\@firstoftwo
- \fi
-}
-
+ }%
+\fi
\def\grffile@Ginclude@graphics#1{%
\begingroup
\ifgrffile@space
@@ -1013,6 +1032,10 @@ showpage
% Rewrite of `multidot' algorithm to fix a problem
% (`multidot' with \cs{graphicspath}).
% \end{Version}
+% \begin{Version}{2010/01/28 v1.11}
+% \item
+% Undefined \cs{pdf@filesize} fixed.
+% \end{Version}
% \end{History}
%
% \PrintIndex
diff --git a/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx b/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx
index 702ee8971df..e6dcf239ddd 100644
--- a/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx
+++ b/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2001, 2005-2009 by
+% Copyright (C) 2001, 2005-2010 by
% Heiko Oberdiek <oberdiek@uni-freiburg.de>
%
% This work may be distributed and/or modified under the
@@ -73,7 +73,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: ifpdf 2009/04/10 v2.0 Provides the ifpdf switch (HO)}
+\Msg{* Package: ifpdf 2010/01/28 v2.1 Provides the ifpdf switch (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -84,7 +84,7 @@
This is a generated file.
-Copyright (C) 2001, 2005-2009 by
+Copyright (C) 2001, 2005-2010 by
Heiko Oberdiek <oberdiek@uni-freiburg.de>
This work may be distributed and/or modified under the
@@ -147,7 +147,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{ifpdf.drv}%
- [2009/04/10 v2.0 Provides the ifpdf switch (HO)]%
+ [2010/01/28 v2.1 Provides the ifpdf switch (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2008/08/11]
\begin{document}
@@ -156,7 +156,7 @@ and the derived files
%</driver>
% \fi
%
-% \CheckSum{473}
+% \CheckSum{511}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -177,7 +177,7 @@ and the derived files
% \GetFileInfo{ifpdf.drv}
%
% \title{The \xpackage{ifpdf} package}
-% \date{2009/04/10 v2.0}
+% \date{2010/01/28 v2.1}
% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}}
%
% \maketitle
@@ -389,7 +389,7 @@ and the derived files
\fi
\expandafter\x\csname ver@ifpdf.sty\endcsname
\ProvidesPackage{ifpdf}%
- [2009/04/10 v2.0 Provides the ifpdf switch (HO)]
+ [2010/01/28 v2.1 Provides the ifpdf switch (HO)]
% \end{macrocode}
%
% \subsection{Catcodes}
@@ -514,9 +514,25 @@ and the derived files
%
% \begin{macro}{\ifpdf}
% Create and set the switch. \cs{newif} initializes the
-% switch with \cs{iffalse}.
+% switch with \cs{iffalse}. \cs{newif} is \cs{outer}
+% in \plainTeX.
% \begin{macrocode}
-\newif\ifpdf
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname newif\endcsname\relax
+ \edef\pdffalse{%
+ \let
+ \expandafter\noexpand\csname ifpdf\endcsname
+ \expandafter\noexpand\csname iffalse\endcsname
+ }%
+ \edef\pdftrue{%
+ \let
+ \expandafter\noexpand\csname ifpdf\endcsname
+ \expandafter\noexpand\csname iftrue\endcsname
+ }%
+ \pdffalse
+\else
+ \csname newif\expandafter\endcsname\csname ifpdf\endcsname
+\fi
% \end{macrocode}
% Test \cs{pdfoutput}. Is it defined and different from
% \cs{relax}? Someone could have used \LaTeX\ internal
@@ -917,6 +933,10 @@ and the derived files
% \item
% Checks, whether \cs{pdfoutput} was changed.
% \end{Version}
+% \begin{Version}{2010/01/28 v2.1}
+% \item
+% Compatibility to ini\TeX\ added.
+% \end{Version}
% \end{History}
%
% \PrintIndex
diff --git a/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx b/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx
index 558a80dbd22..2aa69241c60 100644
--- a/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx
+++ b/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2006, 2007, 2009 by
+% Copyright (C) 2006, 2007, 2009, 2010 by
% Heiko Oberdiek <oberdiek@uni-freiburg.de>
%
% This work may be distributed and/or modified under the
@@ -78,7 +78,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: kvsetkeys 2009/12/22 v1.7 Key value parser (HO)}
+\Msg{* Package: kvsetkeys 2010/01/28 v1.8 Key value parser (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -89,7 +89,7 @@
This is a generated file.
-Copyright (C) 2006, 2007, 2009 by
+Copyright (C) 2006, 2007, 2009, 2010 by
Heiko Oberdiek <oberdiek@uni-freiburg.de>
This work may be distributed and/or modified under the
@@ -158,7 +158,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{kvsetkeys.drv}%
- [2009/12/22 v1.7 Key value parser (HO)]%
+ [2010/01/28 v1.8 Key value parser (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2008/08/11]
\begin{document}
@@ -167,7 +167,7 @@ and the derived files
%</driver>
% \fi
%
-% \CheckSum{1101}
+% \CheckSum{1109}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -188,7 +188,7 @@ and the derived files
% \GetFileInfo{kvsetkeys.drv}
%
% \title{The \xpackage{kvsetkeys} package}
-% \date{2009/12/22 v1.7}
+% \date{2010/01/28 v1.8}
% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}}
%
% \maketitle
@@ -546,7 +546,7 @@ and the derived files
\fi
\expandafter\x\csname ver@kvsetkeys.sty\endcsname
\ProvidesPackage{kvsetkeys}%
- [2009/12/22 v1.7 Key value parser (HO)]
+ [2010/01/28 v1.8 Key value parser (HO)]
% \end{macrocode}
%
% \begin{macrocode}
@@ -594,7 +594,13 @@ and the derived files
\input etexcmds.sty\relax
\else
\RequirePackage{infwarerr}[2007/09/09]%
- \RequirePackage{etexcmds}[2007/09/09]%
+ \RequirePackage{etexcmds}[2010/01/28]%
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\expandafter\ifx\csname toks@\endcsname\relax
+ \toksdef\toks@=0 %
\fi
% \end{macrocode}
%
@@ -1150,7 +1156,7 @@ $ \expandafter\ifx\csname KV@#1@#2@default\endcsname\relax
\makeatletter
\chardef\KVS@TestMode=1 %
\makeatother
-\usepackage{kvsetkeys}[2009/12/22]
+\usepackage{kvsetkeys}[2010/01/28]
%<noetex>\let\unexpanded\SavedUnexpanded
\usepackage{qstest}
\IncludeTests{*}
@@ -1640,6 +1646,10 @@ $ \expandafter\ifx\csname KV@#1@#2@default\endcsname\relax
% \item
% Internal optimization (\cs{KVS@CommaSpace}, \dots, \cs{KVS@EqualsSpace}).
% \end{Version}
+% \begin{Version}{2010/01/28 v1.8}
+% \item
+% Compatibility to ini\TeX\ added.
+% \end{Version}
% \end{History}
%
% \PrintIndex
diff --git a/Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx b/Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx
index 9fca42f980f..505a8f99320 100644
--- a/Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx
+++ b/Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2009 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+% Copyright (C) 2009, 2010 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -73,7 +73,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: ltxcmds 2009/12/12 v1.1 LaTeX kernel commands for general use (HO)}
+\Msg{* Package: ltxcmds 2010/01/28 v1.2 LaTeX kernel commands for general use (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -84,7 +84,7 @@
This is a generated file.
-Copyright (C) 2009 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+Copyright (C) 2009, 2010 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -147,7 +147,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{ltxcmds.drv}%
- [2009/12/12 v1.1 LaTeX kernel commands for general use (HO)]%
+ [2010/01/28 v1.2 LaTeX kernel commands for general use (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2008/08/11]
\usepackage{zref-savepos}
@@ -157,7 +157,7 @@ and the derived files
%</driver>
% \fi
%
-% \CheckSum{409}
+% \CheckSum{569}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -178,7 +178,7 @@ and the derived files
% \GetFileInfo{ltxcmds.drv}
%
% \title{The \xpackage{ltxcmds} package}
-% \date{2009/12/12 v1.1}
+% \date{2010/01/28 v1.2}
% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}}
%
% \maketitle
@@ -288,6 +288,91 @@ and the derived files
% The local context discards the side effect of \cs{csname}
% and let the command undefined after the expansion step.
%
+% \subsection{Stripping}
+%
+% \begin{declcs}{ltx@RemovePrefix}\\
+% \cs{ltx@StripPrefix}
+% \end{declcs}
+% All tokens up to and including the next available character
+% `\textgreater' are thrown away. Usually it is used to strip
+% the first part of the output of the commands \cs{meaning}
+% or \cs{pdflastmatch}. Macro \cs{ltx@RemovePrefix}
+% has the same meaning as \LaTeX's \cs{strip@prefix}, whereas
+% macro \cs{ltx@StripPrefix} expands the next token
+% once before stripping the prefix.
+%
+% \subsection{File management}
+%
+% All macros in this section are expandable like
+% the counterparts of the \LaTeX\ kernel. Also they
+% can be used after the preamble.
+%
+% \subsubsection{File extensions}
+%
+% \begin{declcs}{ltx@clsextension}\\
+% \cs{ltx@pkgextension}
+% \end{declcs}
+% If \cs{@clsextension}\slash\cs{@pkgextension} exists then
+% \cs{ltx@clsextension}\slash\cs{ltx@pkgextension}
+% returns this macro, otherwise the result is |cls|\slash|sty|.
+%
+% \subsubsection{Load check}
+%
+% \begin{declcs}{ltx@ifclassloaded} \M{class} \M{yes} \M{no}\\
+% \cs{ltx@ifpackageloaded} \M{package} \M{yes} \M{no}
+% \end{declcs}
+% If the \meta{class}\slash\meta{package} are loaded the
+% macros \cs{ltx@ifclassloaded}\slash\cs{ltx@ifpackageloaded}
+% call the \meta{yes} argument. Otherwise \meta{no} is executed.
+% Both \meta{class} and \meta{package} are specified without
+% extension.
+%
+% \begin{declcs}{ltx@iffileloaded} \M{file} \M{yes} \M{no}
+% \end{declcs}
+% If \LaTeX's \cs{ProvidesFile} macro was called before
+% using \meta{file} as argument, then \cs{ltx@iffileloaded}
+% calls \meta{yes}, otherwise \meta{no}.
+% Therefore it is possible
+% that the \meta{file} is loaded, but \meta{no} is executed because
+% of a missing \cs{ProvidesFile}. The \LaTeX\ kernel does not have
+% a counterpart of \cs{ltx@iffileloaded}.
+%
+% Note that the file name used in \cs{ProvidesFile} and
+% \cs{ltx@iffileloaded} must match. For example, if \TeX's
+% default extension \xext{.tex} was given in the first command,
+% then it must also specified in the latter command and vice versa.
+%
+% \subsubsection{Version date check}
+%
+% \begin{declcs}{ltx@ifclasslater} \M{class} \M{date} \M{yes} \M{no}\\
+% \cs{ltx@ifpackagelater} \M{package} \M{date} \M{yes} \M{no}\\
+% \cs{ltx@iffilelater} \M{file} \M{date} \M{yes} \M{no}
+% \end{declcs}
+% If a \cs{ProvidesClass}\slash\cs{ProvidesPackage}\slash
+% \cs{ProvidesFile} command with exact the same class\slash package\slash
+% file was executed before with an optional
+% argument that starts with a \LaTeX\ version date, then
+% this version date is compared with the argument \meta{date}.
+% If they are equal or if the version date is the later date,
+% then \meta{yes} is called. In all other cases \meta{no} is executed.
+%
+% A \LaTeX\ date has the format |YYYY/MM/DD| with |YYYY| as year
+% with four digits, |MM| as month with two digits and |DD| as day
+% with two digits. If \pdfTeX's \cs{pdfmatch} is available, then
+% it is used to detect the version date, to reject invalid
+% date formats and to reject some invalid dates.
+% Dates before 1994/01/01 are always invalid, because version
+% dates are introduced with \LaTeXe\ in 1994.
+%
+% \subsection{Macro additions}
+%
+% \begin{declcs}{ltx@GlobalAppendToMacro} \M{cmd} \M{addition}\\
+% \cs{ltx@LocalAppendToMacro} \M{cmd} \M{addition}
+% \end{declcs}
+% The \meta{addition} is appended to the parameterless macro \meta{cmd}.
+% If \meta{cmd} is undefined or has the meaning \cs{relax}, then
+% it will be initialized as empty macro before.
+%
% \StopEventually{
% }
%
@@ -363,7 +448,7 @@ and the derived files
\fi
\expandafter\x\csname ver@ltxcmds.sty\endcsname
\ProvidesPackage{ltxcmds}%
- [2009/12/12 v1.1 LaTeX kernel commands for general use (HO)]
+ [2010/01/28 v1.2 LaTeX kernel commands for general use (HO)]
% \end{macrocode}
%
% \begin{macrocode}
@@ -371,7 +456,7 @@ and the derived files
\catcode123 1 % {
\catcode125 2 % }
\def\x{\endgroup
- \expandafter\edef\csname ltx@AtEnd\endcsname{%
+ \expandafter\edef\csname LTXcmds@AtEnd\endcsname{%
\catcode35 \the\catcode35\relax
\catcode64 \the\catcode64\relax
\catcode123 \the\catcode123\relax
@@ -384,14 +469,25 @@ and the derived files
\catcode123 1 % {
\catcode125 2 % }
\def\TMP@EnsureCode#1#2{%
- \edef\ltx@AtEnd{%
- \ltx@AtEnd
+ \edef\LTXcmds@AtEnd{%
+ \LTXcmds@AtEnd
\catcode#1 \the\catcode#1\relax
}%
\catcode#1 #2\relax
}
+\TMP@EnsureCode{40}{12}% (
+\TMP@EnsureCode{41}{12}% )
+\TMP@EnsureCode{45}{12}% -
+\TMP@EnsureCode{46}{12}% .
+\TMP@EnsureCode{47}{12}% /
+\TMP@EnsureCode{60}{12}% <
\TMP@EnsureCode{61}{12}% =
+\TMP@EnsureCode{62}{12}% >
+\TMP@EnsureCode{91}{12}% [
\TMP@EnsureCode{96}{12}% `
+\TMP@EnsureCode{93}{12}% ]
+\TMP@EnsureCode{94}{12}% ^ (superscript) (!)
+\TMP@EnsureCode{124}{12}% |
% \end{macrocode}
%
% \subsection{Argument killers}
@@ -566,8 +662,203 @@ and the derived files
}
% \end{macrocode}
%
+% \subsection{Stripping}
+%
+% \begin{macro}{\ltx@RemovePrefix}
+% \begin{macrocode}
+\def\ltx@RemovePrefix#1>{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ltx@StripPrefix}
% \begin{macrocode}
-\ltx@AtEnd
+\def\ltx@StripPrefix{%
+ \expandafter\ltx@RemovePrefix
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{File management}
+%
+% \subsubsection{File extensions}
+%
+% \begin{macro}{\ltx@clsextension}
+% \begin{macrocode}
+\def\ltx@clsextension{%
+ \ltx@ifundefined{@clsextension}{cls}\@clsextension
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltx@pkgextension}
+% \begin{macrocode}
+\def\ltx@pkgextension{%
+ \ltx@ifundefined{@pkgextension}{sty}\@pkgextension
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Load check}
+%
+% \begin{macro}{\ltx@iffileloaded}
+% \begin{macrocode}
+\def\ltx@iffileloaded#1{%
+ \ltx@ifundefined{ver@#1}\ltx@secondoftwo\ltx@firstoftwo
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltx@ifclassloaded}
+% \begin{macrocode}
+\def\ltx@ifclassloaded#1{%
+ \ltx@iffileloaded{#1.\ltx@clsextension}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltx@ifpackageloaded}
+% \begin{macrocode}
+\def\ltx@ifpackageloaded#1{%
+ \ltx@iffileloaded{#1.\ltx@pkgextension}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Version date check}
+%
+% \begin{macro}{\ltx@iffilelater}
+% \begin{macrocode}
+\def\ltx@iffilelater#1#2{%
+ \ltx@iffileloaded{#1}{%
+ \expandafter\LTXcmds@IfLater\expandafter{%
+ \number
+ \expandafter\expandafter\expandafter\LTXcmds@ParseVersion
+ \expandafter\expandafter\expandafter{%
+ \csname ver@#1\endcsname
+ }%
+ \expandafter}\expandafter{%
+ \number
+ \expandafter\LTXcmds@ParseVersion\expandafter{#2}%
+ }%
+ }\ltx@secondoftwo
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LTXcmds@IfLater}
+% \begin{macrocode}
+\def\LTXcmds@IfLater#1#2{%
+ \ifcase 0%
+ \ifnum#1<19940101 %
+ \else
+ \ifnum#2<19940101 %
+ \else
+ \ifnum#2>#1 %
+ \else
+ 1%
+ \fi
+ \fi
+ \fi
+ \ltx@space
+ \expandafter\ltx@secondoftwo
+ \else
+ \expandafter\ltx@firstoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltx@ifclasslater}
+% \begin{macrocode}
+\def\ltx@ifclasslater#1{%
+ \ltx@ifclasslater{#1.\ltx@clsextension}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltx@ifpackagelater}
+% \begin{macrocode}
+\def\ltx@ifpackagelater#1{%
+ \ltx@iffilelater{#1.\ltx@pkgextension}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\ltx@IfUndefined{pdfmatch}{%
+% \end{macrocode}
+% \begin{macro}{\LTXcmds@ParseVersion}
+% \begin{macrocode}
+ \def\LTXcmds@ParseVersion#1{%
+ \LTXcmds@@ParseVersion#10000/00/00\@nil
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LTXcmds@@ParseVersion}
+% \begin{macrocode}
+ \def\LTXcmds@@ParseVersion#1#2#3#4/#5#6/#7#8#9\@nil{%
+ #1#2#3#4#5#6#7#8%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+}{%
+% \end{macrocode}
+% \begin{macro}{\LTXcmds@ParseVersion}
+% \begin{macrocode}
+ \def\LTXcmds@ParseVersion#1{%
+ \ifnum\pdfmatch{%
+ ^%
+ (199[4-9]|[2-9][0-9][0-9][0-9])/%
+ (0[1-9]|1[0-2])/%
+ (0[1-9]|[1-2][0-9]|3[0-1])%
+ }{#1}=1 %
+ \ltx@StripPrefix\pdflastmatch1 %
+ \ltx@StripPrefix\pdflastmatch2 %
+ \ltx@StripPrefix\pdflastmatch3 %
+ \else
+ 0%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Macro additions}
+%
+% \begin{macro}{\ltx@GlobalAppendToMacro}
+% \begin{macrocode}
+\def\ltx@GlobalAppendToMacro#1#2{%
+ \ifx\ltx@undefined#1%
+ \let#1\ltx@empty
+ \else
+ \ifx\relax#1%
+ \let#1\ltx@empty
+ \fi
+ \fi
+ \begingroup
+ \toks0\expandafter{#1#2}%
+ \xdef#1{\the\toks0}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltx@LocalAppendToMacro}
+% \begin{macrocode}
+\def\ltx@LocalAppendToMacro#1#2{%
+ \global\let\LTXcmds@gtemp#1%
+ \ifx\ltx@undefined\LTXcmds@gtemp
+ \global\let\LTXcmds@gtemp\ltx@empty
+ \else
+ \ifx\relax\LTXcmds@gtemp
+ \global\letLTXcmds@gtemp\ltx@empty
+ \fi
+ \fi
+ \begingroup
+ \toks0\expandafter{\LTXcmds@gtemp#2}%
+ \xdef\LTXcmds@gtemp{\the\toks0}%
+ \endgroup
+ \let#1\LTXcmds@gtemp
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\LTXcmds@AtEnd
%</package>
% \end{macrocode}
%
@@ -854,6 +1145,18 @@ and the derived files
% \item
% \cs{ltx@IfUndefined} added.
% \end{Version}
+% \begin{Version}{2010/01/28 v1.2}
+% \item
+% \cs{ltx@RemovePrefix} and \cs{ltx@StripPrefix} added.
+% \item
+% \cs{ltx@ifclassloaded}, \cs{ltx@ifpackageloaded},
+% \cs{ltx@iffileloaded},
+% \cs{ltx@ifclasslater}, \cs{ltx@ifpackagelater},
+% \cs{ltx@iffilelater},
+% \cs{ltx@clsextension}, \cs{ltx@pkgextension} added.
+% \item
+% \cs{ltx@GlobalAppendMacro}, \cs{ltx@LocalAppendMacro} added.
+% \end{Version}
% \end{History}
%
% \PrintIndex
diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins
index 2b52a62cfc7..4c351d34bc4 100644
--- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins
+++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins
@@ -1,5 +1,5 @@
% oberdiek.ins
-% 2010/01/26
+% 2010/01/28
%
% Copyright (C) 1999, 2001, 2006 by
% Heiko Oberdiek <oberdiek@uni-freiburg.de>
diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex
index ad95a6d4d65..6f6da96a85f 100644
--- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex
+++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex
@@ -6,7 +6,7 @@
\newcommand*{\Subject}{CTAN:\CTANdir}
\newcommand*{\Author}{Heiko Oberdiek}
\newcommand*{\Email}{oberdiek@uni-freiburg.de}
-\newcommand*{\Date}{2010/01/26}
+\newcommand*{\Date}{2010/01/28}
% Copyright (C) 2006 by
% Heiko Oberdiek <oberdiek@uni-freiburg.de>
@@ -205,7 +205,7 @@
[\entrysep]
\entry{epstopdf}{2009/10/17}{2.4}{Conversion with epstopdf on the fly}%
[\entrysep]
-\entry{etexcmds}{2007/12/12}{1.2}{Prefix for e-TeX command names}%
+\entry{etexcmds}{2010/01/28}{1.3}{Prefix for e-TeX command names}%
[\entrysep]
\entry{flags}{2007/09/30}{0.4}{Flag setting in bit fields}%
[\entrysep]
@@ -213,7 +213,7 @@
[\entrysep]
\entry{grfext}{2007/09/30}{1.0}{Managing graphics extensions}%
[\entrysep]
-\entry{grffile}{2009/09/25}{1.10}{Extended file name support for graphics}%
+\entry{grffile}{2010/01/28}{1.11}{Extended file name support for graphics}%
[\entrysep]
\entry{holtxdoc}{2009/12/02}{0.13}{Private additional ltxdoc support}%
[\entrysep]
@@ -237,7 +237,7 @@
[\entrysep]
\entry{ifluatex}{2009/04/17}{1.2}{Provides the ifluatex switch}%
[\entrysep]
-\entry{ifpdf}{2009/04/10}{2.0}{Provides the ifpdf switch}%
+\entry{ifpdf}{2010/01/28}{2.1}{Provides the ifpdf switch}%
[\entrysep]
\entry{ifvtex}{2008/11/04}{1.4}{Switches for detecting VTeX and its modes}%
[\entrysep]
@@ -249,13 +249,13 @@
[\entrysep]
\entry{kvoptions}{2009/12/08}{3.6}{Keyval support for \LaTeX{} options}%
[\entrysep]
-\entry{kvsetkeys}{2009/12/22}{1.7}{Key value parser}%
+\entry{kvsetkeys}{2010/01/28}{1.8}{Key value parser}%
[\entrysep]
\entry{letltxmacro}{2008/06/24}{1.3}{Let assignment for \LaTeX{} macros}%
[\entrysep]
\entry{listingsutf8}{2007/11/11}{1.1}{Adding support for UTF-8 to listings}%
[\entrysep]
-\entry{ltxcmds}{2009/12/12}{1.1}{\LaTeX{} kernel commands for general use}%
+\entry{ltxcmds}{2010/01/28}{1.2}{\LaTeX{} kernel commands for general use}%
[\entrysep]
\entry{luacolor}{2009/04/10}{1.1}{Coloring based on LuaTeX's node attributes}%
[\entrysep]
@@ -285,7 +285,7 @@
[\entrysep]
\entry{pdflscape}{2008/08/11}{0.10}{Landscape pages in PDF}%
[\entrysep]
-\entry{pdfrender}{2010/01/26}{1.0}{Access to some PDF graphics parameters}%
+\entry{pdfrender}{2010/01/28}{1.2}{Access to some PDF graphics parameters}%
[\entrysep]
\entry{pdftexcmds}{2009/12/12}{0.7}{Utility functions of pdfTeX for LuaTeX}%
[\entrysep]
diff --git a/Master/texmf-dist/source/latex/oberdiek/pdfrender.dtx b/Master/texmf-dist/source/latex/oberdiek/pdfrender.dtx
index 24de571dbaf..8eb438234c5 100644
--- a/Master/texmf-dist/source/latex/oberdiek/pdfrender.dtx
+++ b/Master/texmf-dist/source/latex/oberdiek/pdfrender.dtx
@@ -16,10 +16,15 @@
%
% This Current Maintainer of this work is Heiko Oberdiek.
%
+% The Base Interpreter refers to any `TeX-Format',
+% because some files are installed in TDS:tex/generic//.
+%
% This work consists of the main source file pdfrender.dtx
% and the derived files
% pdfrender.sty, pdfrender.pdf, pdfrender.ins, pdfrender.drv,
-% pdfrender-test1.tex, pdfrender-test2.tex.
+% pdfrender-test1.tex, pdfrender-test2.tex,
+% pdfrender-test3.tex, pdfrender-test4.tex,
+% pdfrender-test5.tex.
%
% Distribution:
% CTAN:macros/latex/contrib/oberdiek/pdfrender.dtx
@@ -52,10 +57,13 @@
% pdflatex pdfrender.dtx
%
% Installation:
-% TDS:tex/latex/oberdiek/pdfrender.sty
+% TDS:tex/generic/oberdiek/pdfrender.sty
% TDS:doc/latex/oberdiek/pdfrender.pdf
% TDS:doc/latex/oberdiek/test/pdfrender-test1.tex
% TDS:doc/latex/oberdiek/test/pdfrender-test2.tex
+% TDS:doc/latex/oberdiek/test/pdfrender-test3.tex
+% TDS:doc/latex/oberdiek/test/pdfrender-test4.tex
+% TDS:doc/latex/oberdiek/test/pdfrender-test5.tex
% TDS:source/latex/oberdiek/pdfrender.dtx
%
%<*ignore>
@@ -71,7 +79,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: pdfrender 2010/01/26 v1.0 Access to some PDF graphics parameters (HO)}
+\Msg{* Package: pdfrender 2010/01/28 v1.2 Access to some PDF graphics parameters (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -98,10 +106,15 @@ This work has the LPPL maintenance status "maintained".
This Current Maintainer of this work is Heiko Oberdiek.
+The Base Interpreter refers to any `TeX-Format',
+because some files are installed in TDS:tex/generic//.
+
This work consists of the main source file pdfrender.dtx
and the derived files
pdfrender.sty, pdfrender.pdf, pdfrender.ins, pdfrender.drv,
- pdfrender-test1.tex, pdfrender-test2.tex.
+ pdfrender-test1.tex, pdfrender-test2.tex,
+ pdfrender-test3.tex, pdfrender-test4.tex,
+ pdfrender-test5.tex.
\endpreamble
\let\MetaPrefix\DoubleperCent
@@ -109,11 +122,14 @@ and the derived files
\generate{%
\file{pdfrender.ins}{\from{pdfrender.dtx}{install}}%
\file{pdfrender.drv}{\from{pdfrender.dtx}{driver}}%
- \usedir{tex/latex/oberdiek}%
+ \usedir{tex/generic/oberdiek}%
\file{pdfrender.sty}{\from{pdfrender.dtx}{package}}%
\usedir{doc/latex/oberdiek/test}%
\file{pdfrender-test1.tex}{\from{pdfrender.dtx}{test1}}%
\file{pdfrender-test2.tex}{\from{pdfrender.dtx}{test2}}%
+ \file{pdfrender-test3.tex}{\from{pdfrender.dtx}{test3}}%
+ \file{pdfrender-test4.tex}{\from{pdfrender.dtx}{test4}}%
+ \file{pdfrender-test5.tex}{\from{pdfrender.dtx}{test5}}%
}
\obeyspaces
@@ -143,7 +159,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{pdfrender.drv}%
- [2010/01/26 v1.0 Access to some PDF graphics parameters (HO)]%
+ [2010/01/28 v1.2 Access to some PDF graphics parameters (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2008/08/11]
\usepackage{longtable}
@@ -154,7 +170,7 @@ and the derived files
%</driver>
% \fi
%
-% \CheckSum{958}
+% \CheckSum{1393}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -175,7 +191,7 @@ and the derived files
% \GetFileInfo{pdfrender.drv}
%
% \title{The \xpackage{pdfrender} package}
-% \date{2010/01/26 v1.0}
+% \date{2010/01/28 v1.2}
% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}}
%
% \maketitle
@@ -205,6 +221,19 @@ and the derived files
% add its own hooks of its parameters. Therefore \LaTeX3 should
% generalize \LaTeXe's color interface.
%
+% \subsection{Usage}
+%
+% In \LaTeX\ the package is loaded as normal package. Options
+% are not defined for this package.
+% \begin{quote}
+% |\usepackage{pdfrender}|
+% \end{quote}
+%
+% This package can also be used in \plainTeX\ and even ini\TeX:
+% \begin{quote}
+% |input pdfrender.sty|
+% \end{quote}
+%
% \subsection{Macros}
%
% \begin{declcs}{pdfrender} \M{key value list}
@@ -309,6 +338,8 @@ and the derived files
% automatically added. However package \xpackage{calc} is not
% supported.
% \item[\xoption{FillColor}, \xoption{StrokeColor}:]
+% Package \xpackage{color} or \xpackage{xcolor} must be loaded
+% before these options can be used (since version 1.2).
% \LaTeX's color support sets both colors at the same time
% to the same value. However parameter \xoption{TextRenderingMode}
% offers the value \texttt{FillStroke} that makes only sense, if
@@ -408,7 +439,7 @@ and the derived files
\fi
\expandafter\x\csname ver@pdfrender.sty\endcsname
\ProvidesPackage{pdfrender}%
- [2010/01/26 v1.0 Access to some PDF graphics parameters (HO)]
+ [2010/01/28 v1.2 Access to some PDF graphics parameters (HO)]
% \end{macrocode}
%
% \begin{macrocode}
@@ -457,25 +488,73 @@ and the derived files
\TMP@EnsureCode{94}{7}% ^ (superscript)
\TMP@EnsureCode{96}{12}% `
\TMP@EnsureCode{124}{12}% |
-\g@addto@macro\PdfRender@AtEnd{\endinput}
+\def\PdfRender@AtEndHook{}
+\expandafter\def\expandafter\PdfRender@AtEnd\expandafter{%
+ \expandafter\PdfRender@AtEndHook
+ \PdfRender@AtEnd
+ \endinput
+}
% \end{macrocode}
%
% \subsection{Look for \pdfTeX, its mode and features}
%
+% \begin{macro}{\PdfRender@newif}
+% \begin{macrocode}
+\def\PdfRender@newif#1{%
+ \expandafter\edef\csname PdfRender@#1true\endcsname{%
+ \let
+ \expandafter\noexpand\csname ifPdfRender@#1\endcsname
+ \noexpand\iftrue
+ }%
+ \expandafter\edef\csname PdfRender@#1false\endcsname{%
+ \let
+ \expandafter\noexpand\csname ifPdfRender@#1\endcsname
+ \noexpand\iffalse
+ }%
+ \csname PdfRender@#1false\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\ifPdfRender@Stack}
% \begin{macrocode}
-\newif\ifPdfRender@Stack
+\PdfRender@newif{Stack}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\ifPdfRender@Match}
% \begin{macrocode}
-\newif\ifPdfRender@Match
+\PdfRender@newif{Match}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\PdfRender@RequirePackage}
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname RequirePackage\endcsname\relax
+ \def\PdfRender@RequirePackage#1[#2]{%
+ \expandafter\def\expandafter\PdfRender@AtEndHook\expandafter{%
+ \PdfRender@AtEndHook
+ \ltx@ifpackagelater{#1}{#2}{}{%
+ \@PackageWarningNoLine{pdfrender}{%
+ You have requested version\MessageBreak
+ `#2' of package `#1',\MessageBreak
+ but only version\MessageBreak
+ `\csname ver@#1.\ltx@pkgextension\endcsname'\MessageBreak
+ is available%
+ }%
+ }%
+ }%
+ \input #1.sty\relax
+ }%
+\else
+ \let\PdfRender@RequirePackage\RequirePackage
+\fi
% \end{macrocode}
% \end{macro}
% \begin{macrocode}
-\RequirePackage{ifpdf}[2009/04/10]
-\RequirePackage{infwarerr}[2007/09/09]
-\RequirePackage{ltxcmds}[2009/12/12]
+\PdfRender@RequirePackage{ifpdf}[2010/01/28]
+\PdfRender@RequirePackage{infwarerr}[2007/09/09]
+\PdfRender@RequirePackage{ltxcmds}[2010/01/28]
% \end{macrocode}
%
% \begin{macrocode}
@@ -501,52 +580,219 @@ and the derived files
Missing pdfTeX in PDF mode%
}%
% \end{macrocode}
+% \begin{macrocode}
+ \ltx@IfUndefined{newcommand}{%
+% \end{macrocode}
+% \begin{macro}{\pdfrender}
+% \begin{macrocode}
+ \def\pdfrender#1{}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\textpdfrender}
+% \begin{macrocode}
+ \long\def\textpdfrender#1#2{#2}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+ }{%
+% \end{macrocode}
% \begin{macro}{\pdfrender}
% \begin{macrocode}
- \newcommand*{\pdfrender}[1]{}%
+ \newcommand*{\pdfrender}[1]{}%
% \end{macrocode}
% \end{macro}
% \begin{macro}{\textpdfrender}
% \begin{macrocode}
- \newcommand{\textpdfrender}[2]{#2}%
+ \newcommand{\textpdfrender}[2]{#2}%
% \end{macrocode}
% \end{macro}
% \begin{macrocode}
+ }%
\expandafter\PdfRender@AtEnd
\fi
% \end{macrocode}
%
-% \subsection{Macros for \pdfTeX\ in PDF mode}
+% \subsection{Enable color support of \LaTeX}
%
% \begin{macrocode}
-\RequirePackage{color}
-\RequirePackage{keyval}
-\RequirePackage{kvsetkeys}[2009/07/19]
+\ltx@ifpackageloaded{color}{}{%
+ \def\color@setgroup{\begingroup\set@color}%
+ \let\color@begingroup\begingroup
+ \def\color@endgroup{\endgraf\endgroup}%
+ \def\color@hbox{\hbox\bgroup\color@begingroup}%
+ \def\color@vbox{\vbox\bgroup\color@begingroup}%
+ \def\color@endbox{\color@endgroup\egroup}%
+ \ltx@ifundefined{bgroup}{%
+ \let\bgroup={\let\egroup=}%
+ }{}%
+ \ltx@ifundefined{endgraf}{%
+ \let\endgraf=\par
+ }{}%
+}
% \end{macrocode}
-% \begin{macro}{\pdfrender}
+%
+% \subsection{Hook into \cs{normalcolor}}
+%
+% The problem is that packages \xpackage{color} and \xpackage{xcolor}
+% each overwrite \cs{normalcolor}. For example, after the package
+% loading order \xpackage{color}, \xpackage{pdfrender} and \xpackage{xcolor}
+% the patched version of \cs{normalcolor} is overwritten by
+% package \xpackage{xcolor}. Also using \cs{AtBeginDocument} for
+% patching is not enough. If package \xpackage{hyperref} is loaded
+% later, it might load package \xpackage{color} using \cs{AtBeginDocument}.
+% \begin{macro}{\PdfRender@NormalColorHook}
% \begin{macrocode}
-\newcommand*{\pdfrender}[1]{%
- \global\let\PdfRender@FillColor\ltx@empty
- \global\let\PdfRender@StrokeColor\ltx@empty
- \setkeys{PDFRENDER}{#1}%
- \PdfRender@SetColor
+\def\PdfRender@NormalColorHook{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PdfRender@ColorSetGroupHook}
+% \begin{macrocode}
+\def\PdfRender@ColorSetGroupHook{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PdfRender@TestBox}
+% \begin{macrocode}
+\def\PdfRender@TestBox#1{%
+ \setbox0=\color@hbox#1\color@endbox
}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\textpdfrender}
+% \begin{macro}{\PdfRender@PatchNormalColor}
% \begin{macrocode}
-\newcommand{\textpdfrender}[2]{%
+\def\PdfRender@PatchNormalColor{%
+ \ltx@ifundefined{normalcolor}{%
+ \gdef\normalcolor{\PdfRender@NormalColorHook}%
+ }{%
+ \begingroup
+ \def\PdfRender@NormalColorHook{\let\PdfRender@temp=Y}%
+ \PdfRender@TestBox{%
+ \let\set@color\relax
+ \normalcolor
+ \ifx\PdfRender@temp Y%
+ \else
+ \ltx@GlobalAppendToMacro\normalcolor{%
+ \PdfRender@NormalColorHook
+ }%
+ \fi
+ }%
+ \endgroup
+ }%
+ \ifx\@nodocument\relax
+ \global\let\PdfRender@PatchNormalColor\relax
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PdfRender@PatchColorSetGroup}
+% \begin{macrocode}
+\def\PdfRender@PatchColorSetGroup{%
\begingroup
- \pdfrender{#1}%
- #2%
+ \def\PdfRender@ColorSetGroupHook{\let\PdfRender@temp=Y}%
+ \PdfRender@TestBox{%
+ \let\set@color\relax
+ \color@setgroup\color@endgroup
+ \ifx\PdfRender@temp Y%
+ \else
+ \ltx@GlobalAppendToMacro\color@setgroup{%
+ \PdfRender@ColorSetGroupHook
+ }%
+ \fi
+ }%
\endgroup
+ \ifx\@nodocument\relax
+ \global\let\PdfRender@PatchColorSetGroup\relax
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PdfRender@PatchColor}
+% \begin{macrocode}
+\def\PdfRender@PatchColor{%
+ \PdfRender@PatchNormalColor
+ \PdfRender@PatchColorSetGroup
+}
+% \begin{macrocode}
+\PdfRender@PatchColor
+\ltx@IfUndefined{AtBeginDocument}{}{%
+ \AtBeginDocument{\PdfRender@PatchColor}%
+}
+% \end{macrocode}
+% \cs{AfterPackage} is provided by package \xpackage{scrlfile}.
+% \begin{macrocode}
+\ltx@IfUndefined{AfterPackage}{%
+}{%
+ \AfterPackage{color}{\PdfRender@PatchColor}%
+ \AfterPackage{xcolor}{\PdfRender@PatchColor}%
+ \AfterPackage{etoolbox}{%
+ \AfterEndPreamble{\PdfRender@PatchColor}%
+ }%
+}%
+% \end{macrocode}
+% \cs{AfterEndPreamble} is provided by package \xpackage{etoolbox}.
+% \begin{macrocode}
+\ltx@IfUndefined{AfterEndPreamble}{%
+}{%
+ \AfterEndPreamble{\PdfRender@PatchColor}%
+}%
+% \end{macrocode}
+% \end{macro}
+
+%
+% \begin{macrocode}
+\PdfRender@RequirePackage{kvsetkeys}[2010/01/28]
+% \end{macrocode}
+% \begin{macro}{\PdfRender@texorpdfstring}
+% \begin{macrocode}
+\def\PdfRender@texorpdfstring{%
+ \ltx@IfUndefined{texorpdfstring}\ltx@firstoftwo\texorpdfstring
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pdfrender}
+% \begin{macrocode}
+\ltx@IfUndefined{DeclareRobustCommand}%
+\ltx@firstoftwo\ltx@secondoftwo
+{%
+ \def\pdfrender#1%
+}{%
+ \newcommand{\pdfrender}{}%
+ \DeclareRobustCommand*{\pdfrender}[1]%
+}%
+{%
+ \PdfRender@texorpdfstring{%
+ \PdfRender@PatchNormalColor
+ \global\let\PdfRender@FillColor\ltx@empty
+ \global\let\PdfRender@StrokeColor\ltx@empty
+ \kvsetkeys{PDFRENDER}{#1}%
+ \PdfRender@SetColor
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\textpdfrender}
+% \begin{macrocode}
+\ltx@IfUndefined{DeclareRobustCommand}%
+\ltx@firstoftwo\ltx@secondoftwo
+{%
+ \long\def\textpdfrender#1#2%
+}{%
+ \newcommand{\textpdfrender}{}%
+ \DeclareRobustCommand{\textpdfrender}[2]%
+}%
+{%
+ \PdfRender@texorpdfstring{%
+ \begingroup
+ \pdfrender{#1}%
+ #2%
+ \endgroup
+ }{#2}%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ifPdfRender@Values}
% \begin{macrocode}
-\newif\ifPdfRender@Values
+\PdfRender@newif{Values}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\PdfRender@NewClassValues}
@@ -560,7 +806,7 @@ and the derived files
% \begin{macro}{\PdfRender@NewClass}
% \begin{macrocode}
\def\PdfRender@NewClass#1#2#3#4#5{%
- \expandafter\newif\csname ifPdfRender@Active#1\endcsname
+ \PdfRender@newif{Active#1}%
\expandafter\def\csname PdfRender@Default#1\endcsname{#2}%
\expandafter\let\csname PdfRender@Current#1\expandafter\endcsname
\csname PdfRender@Default#1\endcsname
@@ -614,11 +860,11 @@ and the derived files
\expandafter\noexpand\csname PdfRender@Default#1\endcsname
\noexpand\PdfRender@Set{#1}%
}%
- \expandafter\g@addto@macro\expandafter\normalcolor
+ \expandafter\ltx@GlobalAppendToMacro\expandafter\PdfRender@NormalColorHook
\expandafter{%
\csname PdfRender@Normal#1\endcsname
}%
- \g@addto@macro\color@setgroup{%
+ \ltx@GlobalAppendToMacro\PdfRender@ColorSetGroupHook{%
\PdfRender@Set{#1}%
}%
\ifPdfRender@Values
@@ -630,14 +876,14 @@ and the derived files
\fi
\ltx@gobbletwo
}%
- \define@key{PDFRENDER}{#1}[1]{%
+ \PdfRender@define@key{PDFRENDER}{#1}{%
\global\csname PdfRender@Active#1true\endcsname
\def\PdfRender@Current{##1}%
\PdfRender@SetValidateValues{#1}%
}%
\PdfRender@Valuesfalse
\else
- \define@key{PDFRENDER}{#1}[1]{%
+ \PdfRender@define@key{PDFRENDER}{#1}{%
\global\csname PdfRender@Active#1true\endcsname
\expandafter\def\csname PdfRender@Current#1\endcsname{##1}%
\ltx@IfUndefined{PdfRender@PostProcess#1}{%
@@ -650,6 +896,17 @@ and the derived files
}%
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\PdfRender@define@key}
+% \begin{macrocode}
+\ltx@IfUndefined{define@key}{%
+ \def\PdfRender@define@key#1#2{%
+ \expandafter\def\csname KV@#1@#2\endcsname##1%
+ }%
+}{%
+ \let\PdfRender@define@key\define@key
+}
+% \end{macrocode}
+% \end{macro}
% \begin{macro}{\PdfRender@Set}
% \begin{macrocode}
\def\PdfRender@Set#1{%
@@ -757,7 +1014,7 @@ and the derived files
\def\PdfRender@PostProcessLineWidth{%
\begingroup
\afterassignment\PdfRender@@PostProcessLineWidth
- \dimen@=\PdfRender@dimexpr\PdfRender@CurrentLineWidth bp %
+ \dimen0=\PdfRender@dimexpr\PdfRender@CurrentLineWidth bp %
\PdfRender@let\PdfRender@relax\PdfRender@relax
}
\let\PdfRender@let\let
@@ -766,10 +1023,10 @@ and the derived files
\ifx\\#1\\%
\endgroup
\else
- \dimen@=.996264\dimen@ % 72/72.27
+ \dimen0=.996264\dimen0 % 72/72.27
\edef\x{\endgroup
\def\noexpand\PdfRender@CurrentLineWidth{%
- \strip@pt\dimen@
+ \strip@pt\dimen0%
}%
}%
\expandafter\x
@@ -811,45 +1068,65 @@ and the derived files
% \subsection{Fill and stroke color support}
%
% \begin{macrocode}
-\define@key{PDFRENDER}{FillColor}{%
+\PdfRender@define@key{PDFRENDER}{FillColor}{%
\begingroup
\def\PdfRender@Color{#1}%
\ifx\PdfRender@Color\ltx@empty
\global\let\PdfRender@FillColor\ltx@empty
\else
- \sbox0{%
- \expandafter\PdfRender@TryColor\PdfRender@Color\ltx@empty
- \PdfRender@GetFillColor
- \ifx\PdfRender@FillColor\ltx@empty
- \@PackageWarning{pdfrender}{%
- Cannot extract fill color\MessageBreak
- from value `#1'%
- }%
- \fi
+ \PdfRender@ColorAvailable{%
+ \PdfRender@TestBox{%
+ \expandafter\PdfRender@TryColor\PdfRender@Color\ltx@empty
+ \PdfRender@GetFillColor
+ \ifx\PdfRender@FillColor\ltx@empty
+ \@PackageWarning{pdfrender}{%
+ Cannot extract fill color\MessageBreak
+ from value `#1'%
+ }%
+ \fi
+ }%
}%
\fi
\endgroup
}
-\define@key{PDFRENDER}{StrokeColor}{%
+\PdfRender@define@key{PDFRENDER}{StrokeColor}{%
\begingroup
\def\PdfRender@Color{#1}%
\ifx\PdfRender@Color\ltx@empty
\global\let\PdfRender@StrokeColor\ltx@empty
\else
- \sbox0{%
- \expandafter\PdfRender@TryColor\PdfRender@Color\ltx@empty
- \PdfRender@GetStrokeColor
- \ifx\PdfRender@StrokeColor\ltx@empty
- \@PackageWarning{pdfrender}{%
- Cannot extract stroke color\MessageBreak
- from value `#1'%
- }%
- \fi
+ \PdfRender@ColorAvailable{%
+ \PdfRender@TestBox{%
+ \expandafter\PdfRender@TryColor\PdfRender@Color\ltx@empty
+ \PdfRender@GetStrokeColor
+ \ifx\PdfRender@StrokeColor\ltx@empty
+ \@PackageWarning{pdfrender}{%
+ Cannot extract stroke color\MessageBreak
+ from value `#1'%
+ }%
+ \fi
+ }%
}%
\fi
\endgroup
}
% \end{macrocode}
+% \begin{macro}{\PdfRender@ColorAvailable}
+% \begin{macrocode}
+\def\PdfRender@ColorAvailable{%
+ \@ifundefined{set@color}{%
+ \@PackageError{pdfrender}{%
+ Ignoring color options, because neither\MessageBreak
+ package `color' nor package `xcolor' is loaded%
+ }\@ehc
+ \global\let\PdfRender@ColorAvailable\ltx@gobble
+ }{%
+ \global\let\PdfRender@ColorAvailable\ltx@firstofone
+ }%
+ \PdfRender@ColorAvailable
+}
+% \end{macrocode}
+% \end{macro}
% \begin{macro}{\PdfRender@TryColor}
% \begin{macrocode}
\def\PdfRender@TryColor{%
@@ -915,35 +1192,70 @@ and the derived files
}
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\PdfRender@PatternFillColor}
+% \begin{macrocode}
+\edef\PdfRender@PatternFillColor{ % space
+ (%
+ [0-9\string\.]+ g|%
+ [0-9\string\.]+ [0-9\string\.]+ [0-9\string\.]+ rg|%
+ [0-9\string\.]+ [0-9\string\.]+ %
+ [0-9\string\.]+ [0-9\string\.]+ k%
+ ) % space
+ (.*)$%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PdfRender@PatternStrokeColor}
+% \begin{macrocode}
+\edef\PdfRender@PatternStrokeColor{ % space
+ (%
+ [0-9\string\.]+ G|%
+ [0-9\string\.]+ [0-9\string\.]+ [0-9\string\.]+ RG|%
+ [0-9\string\.]+ [0-9\string\.]+ %
+ [0-9\string\.]+ [0-9\string\.]+ K%
+ ) % space
+ (.*)$%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PdfRender@MatchPattern}
+% \begin{macrocode}
+\def\PdfRender@MatchPattern#1{%
+ \ifnum\pdfmatch{\PdfRender@Pattern}{\PdfRender@String}=1 %
+ \xdef#1{%
+ \expandafter\strip@prefix\pdflastmatch 1%
+ }%
+ \edef\PdfRender@String{%
+ \expandafter\strip@prefix\pdflastmatch 2%
+ }%
+ \ifx\PdfRender@String\ltx@empty
+ \else
+ \expandafter\expandafter\expandafter\PdfRender@MatchPattern
+ \expandafter\expandafter\expandafter#1%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
% \begin{macro}{\PdfRender@GetFillColor}
% \begin{macrocode}
\def\PdfRender@GetFillColor{%
\global\let\PdfRender@FillColor\ltx@empty
\begingroup
\ifPdfRender@Match
- \edef\current@color{\ltx@space\current@color\ltx@space}%
- \ifnum\pdfmatch{ %
- (%
- [0-9\string\.]+ g|%
- [0-9\string\.]+ [0-9\string\.]+ [0-9\string\.]+ rg|%
- [0-9\string\.]+ [0-9\string\.]+ %
- [0-9\string\.]+ [0-9\string\.]+ k%
- )%
- }{\current@color}=1 %
- \xdef\PdfRender@FillColor{%
- \expandafter\strip@prefix\pdflastmatch 1%
- }%
- \fi
+ \let\PdfRender@Pattern\PdfRender@PatternFillColor
+ \edef\PdfRender@String{\ltx@space\current@color\ltx@space}%
+ \PdfRender@MatchPattern\PdfRender@FillColor
\else
-% Using the method of Rolf Niepraschk.
- \edef\x{%
- \lowercase{%
- \xdef\noexpand\PdfRender@FillColor{%
- \current@color
- }%
- }%
- }%
- \x
+ \edef\current@color{\current@color\ltx@space}%
+ \let\PdfRender@OP\relax
+ \PdfRender@FindOp{g}0%
+ \PdfRender@FindOp{G}1%
+ \PdfRender@FindOp{rg}0%
+ \PdfRender@FindOp{RG}1%
+ \PdfRender@FindOp{k}0%
+ \PdfRender@FindOp{K}1%
+ \PdfRender@FilterOp 0\PdfRender@FillColor
\fi
\endgroup
}
@@ -955,34 +1267,71 @@ and the derived files
\global\let\PdfRender@StrokeColor\ltx@empty
\begingroup
\ifPdfRender@Match
- \edef\current@color{\ltx@space\current@color\ltx@space}%
- \ifnum\pdfmatch{ %
- (%
- [0-9\string\.]+ G|%
- [0-9\string\.]+ [0-9\string\.]+ [0-9\string\.]+ RG|%
- [0-9\string\.]+ [0-9\string\.]+ %
- [0-9\string\.]+ [0-9\string\.]+ K%
- )%
- }{\current@color}=1 %
- \xdef\PdfRender@StrokeColor{%
- \expandafter\strip@prefix\pdflastmatch 1%
- }%
- \fi
+ \let\PdfRender@Pattern\PdfRender@PatternStrokeColor
+ \edef\PdfRender@String{\ltx@space\current@color\ltx@space}%
+ \PdfRender@MatchPattern\PdfRender@StrokeColor
\else
-% Using the method of Rolf Niepraschk.
- \edef\x{%
- \uppercase{%
- \xdef\noexpand\PdfRender@StrokeColor{%
- \current@color
- }%
- }%
- }%
- \x
+ \edef\current@color{\current@color\ltx@space}%
+ \let\PdfRender@OP\relax
+ \PdfRender@FindOp{g}0%
+ \PdfRender@FindOp{G}1%
+ \PdfRender@FindOp{rg}0%
+ \PdfRender@FindOp{RG}1%
+ \PdfRender@FindOp{k}0%
+ \PdfRender@FindOp{K}1%
+ \PdfRender@FilterOp 1\PdfRender@StrokeColor
\fi
\endgroup
}
% \end{macrocode}
% \end{macro}
+% \begin{macrocode}
+\ifPdfRender@Match
+ \expandafter\PdfRender@AtEnd
+\fi
+% \end{macrocode}
+% \begin{macro}{\PdfRender@FindOp}
+% \begin{macrocode}
+\def\PdfRender@FindOp#1#2{%
+ \def\PdfRender@temp##1 #1 ##2\@nil{%
+ ##1%
+ \ifx\\##2\\%
+ \expandafter\@gobble
+ \else
+ \PdfRender@OP{#1}#2%
+ \expandafter\@firstofone
+ \fi
+ {%
+ \PdfRender@temp##2\@nil
+ }%
+ }%
+ \edef\current@color{%
+ \@firstofone{\expandafter\PdfRender@temp\current@color} #1 \@nil
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PdfRender@FilterOp}
+% \begin{macrocode}
+\def\PdfRender@FilterOp#1#2{%
+ \expandafter\PdfRender@@FilterOp\expandafter#1\expandafter#2%
+ \current@color\PdfRender@OP{}{}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PdfRender@@FilterOp}
+% \begin{macrocode}
+\def\PdfRender@@FilterOp#1#2#3\PdfRender@OP#4#5{%
+ \ifx\\#4#5\\%
+ \else
+ \ifnum#1=#5 %
+ \xdef#2{#3 #4}%
+ \fi
+ \expandafter\PdfRender@@FilterOp\expandafter#1\expandafter#2%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
%
% \begin{macrocode}
\PdfRender@AtEnd
@@ -1083,9 +1432,10 @@ and the derived files
% \begin{macrocode}
%<*test2>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{pdfrender-test2.tex}[2010/01/26]
+\ProvidesFile{pdfrender-test2.tex}[2010/01/28]
\documentclass{article}
-\usepackage{pdfrender}[2010/01/26]
+\usepackage{color}
+\usepackage{pdfrender}[2010/01/28]
\begin{document}
Hello World
\newpage
@@ -1117,6 +1467,133 @@ Stop
%</test2>
% \end{macrocode}
%
+% \subsection{Further tests}
+%
+% Robustness and bookmarks.
+% \begin{macrocode}
+%<*test3>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{pdfrender-test3.tex}[2010/01/28]
+\documentclass{article}
+\usepackage{pdfrender}[2010/01/28]
+\usepackage{hyperref}
+\usepackage{bookmark}
+\begin{document}
+\tableofcontents
+\section{%
+ \textpdfrender{%
+ TextRenderingMode=1,%
+ LineCapStyle=2,%
+ LineJoinStyle=1,%
+ MiterLimit=1.2,%
+ LineDashPattern=[2 2]0,%
+ RenderingIntent=Saturation,%
+ }{Hello World}%
+}
+\end{document}
+%</test3>
+% \end{macrocode}
+%
+% Color algorithm if \cs{pdfmatch} is not available.
+% \begin{macrocode}
+%<*test4>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{pdfrender-test4.tex}[2010/01/28]
+\documentclass[12pt]{article}
+\usepackage{pdfrender}[2010/01/28]
+\usepackage{color}
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+\makeatletter
+\newcommand*{\CheckColor}[1]{%
+ \Expect{#1}*{\current@color}%
+}
+\makeatother
+\begin{document}
+ \begin{qstest}{color}{color}%
+ \CheckColor{0 g 0 G}%
+ \Huge\bfseries
+ \noindent
+ \textpdfrender{%
+ TextRenderingMode=2,%
+ LineWidth=.5,%
+ FillColor=yellow,%
+ StrokeColor=blue,%
+ }{%
+ \CheckColor{0 0 1 0 k 0 0 1 RG}%
+ Blue(Yellow)\\%
+ \textpdfrender{%
+ FillColor=green,%
+ }{%
+ \CheckColor{0 1 0 rg 0 0 1 RG}%
+ Blue(Green)%
+ }\\%
+ \CheckColor{0 0 1 0 k 0 0 1 RG}%
+ Blue(Yellow)\\%
+ \textpdfrender{%
+ StrokeColor=red,%
+ }{%
+ \CheckColor{0 0 1 0 k 1 0 0 RG}%
+ Red(Yellow)%
+ }\\%
+ \CheckColor{0 0 1 0 k 0 0 1 RG}%
+ Blue(Yellow) %
+ }%
+ \end{qstest}%
+ \begin{qstest}{colorlast}{colorlast}%
+ \makeatletter
+ \def\Test#1#2#3{%
+ \begingroup
+ \def\current@color{#1}%
+ \textpdfrender{#2}{%
+ \CheckColor{#3}%
+ }%
+ \endgroup
+ }%
+ \Test{1 g 0 0 1 RG 0 0 1 0 k 0.5 G}%
+ {StrokeColor=green}%
+ {0 0 1 0 k 0 1 0 RG}%
+ \Test{1 g 0 0 1 RG 0 0 1 0 k 0.5 G}%
+ {FillColor=red}%
+ {1 0 0 rg 0.5 G}%
+ \end{qstest}%
+\end{document}
+%</test4>
+% \end{macrocode}
+%
+% \subsection{Compatibility with \plainTeX}
+%
+% \begin{macrocode}
+%<*test5>
+\pdfoutput=1 %
+\hsize=6.5in
+\vsize=8.9in
+\pdfpagewidth=\hsize
+\pdfpageheight=\vsize
+\parfillskip=0pt plus 1fil\relax
+\input pdfrender.sty\relax
+\catcode`\{=1 %
+\catcode`\}=2 %
+\let\OrgMakeFootLine\makefootline
+\def\makefootline{%
+ \begingroup\normalcolor\OrgMakeFootLine\endgroup
+}
+\font\f=ec-lmr10 scaled 3000\relax
+\f
+Before %
+\textpdfrender{%
+ TextRenderingMode=1,%
+ LineWidth=.1,%
+}{Hello\par\vfill\penalty-10000 World} %
+After %
+\par
+\vfill
+\penalty-10000 %
+\csname @@end\endcsname\end
+%</test5>
+% \end{macrocode}
+%
% \section{Installation}
%
% \subsection{Download}
@@ -1176,10 +1653,13 @@ Stop
% \begin{quote}
% \def\t{^^A
% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}}
-% pdfrender.sty & tex/latex/oberdiek/pdfrender.sty\\
+% pdfrender.sty & tex/generic/oberdiek/pdfrender.sty\\
% pdfrender.pdf & doc/latex/oberdiek/pdfrender.pdf\\
% test/pdfrender-test1.tex & doc/latex/oberdiek/test/pdfrender-test1.tex\\
% test/pdfrender-test2.tex & doc/latex/oberdiek/test/pdfrender-test2.tex\\
+% test/pdfrender-test3.tex & doc/latex/oberdiek/test/pdfrender-test3.tex\\
+% test/pdfrender-test4.tex & doc/latex/oberdiek/test/pdfrender-test4.tex\\
+% test/pdfrender-test5.tex & doc/latex/oberdiek/test/pdfrender-test5.tex\\
% pdfrender.dtx & source/latex/oberdiek/pdfrender.dtx\\
% \end{tabular}^^A
% }^^A
@@ -1342,6 +1822,24 @@ Stop
% \item
% The first version.
% \end{Version}
+% \begin{Version}{2010/01/27 v1.1}
+% \item
+% Macros \cs{pdfrender} and \cs{textpdfrender} are made robust.
+% \item
+% Color extraction rewritten for the case that \cs{pdfmatch}
+% is not available. This fixes wrong color assigments in
+% case of nesting.
+% \item
+% Color extraction of case \cs{pdfmatch} is fixed
+% for the case that the color string contains several
+% fill or several stroke operations.
+% \end{Version}
+% \begin{Version}{2010/01/28 v1.2}
+% \item
+% Dependency from package \xpackage{color} is removed.
+% \item
+% Compatibility for \plainTeX\ and even ini\TeX\ added.
+% \end{Version}
% \end{History}
%
% \PrintIndex