summaryrefslogtreecommitdiff
path: root/macros/latex/exptl/graphicp/laemu.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/exptl/graphicp/laemu.sty')
-rw-r--r--macros/latex/exptl/graphicp/laemu.sty206
1 files changed, 206 insertions, 0 deletions
diff --git a/macros/latex/exptl/graphicp/laemu.sty b/macros/latex/exptl/graphicp/laemu.sty
new file mode 100644
index 0000000000..2dd8868d56
--- /dev/null
+++ b/macros/latex/exptl/graphicp/laemu.sty
@@ -0,0 +1,206 @@
+%
+% laemu.sty -- helper TeX macros and LaTeX emulation for plain TeX + LaTeX
+% by pts@fazekas.hu at Fri Jan 24 11:14:34 CET 2003
+%
+% To use this package from LaTeX, type
+%
+% \usepackage{laemu}
+%
+% To use this package from either LaTeX, plain TeX or AMSTeX, type
+%
+% \input laemu.sty
+%
+% As an alternative, the following solution will open laemu.sty only once:
+%
+% \expandafter\ifx\csname usepackage\endcsname\relax%
+% \def\usepackage#1{\input#1.sty\relax}\fi%
+% \usepackage{laemu}
+% % this ensures that laemu.sty won't be loaded twice
+%
+% Tho use further packages from any TeX formats, type
+%
+% \usepackage{...PACKAGENAME...}
+%
+
+% vvv Don't load laemu.sty more than once
+\expandafter\ifx\csname ifLaTeX\endcsname\relax\else\expandafter\endinput\fi
+
+\newif\ifWasLetter% false
+\ifnum\the\catcode`\@=\the\catcode`\a\relax\WasLettertrue\fi%
+\catcode`\@=11% early \makeatletter
+
+%** Are we running a real LaTeX?
+\newif\ifLaTeX% default to false
+%** Sets \ifLaTeX to (#1 == 'L' && #2 == 'a')
+\def\@@setlatex#1#2#3\end{%
+ \if#1L\if#2a\LaTeXtrue\else\LaTeXfalse\fi\fi%
+}%
+% Dat: \fmtname is "plain", "LaTeX2e" or "AmS-TeX"
+\expandafter\@@setlatex\fmtname\end%
+
+\ifLaTeX%
+ %\PackageError{laemu}{alma}\@ehc
+ %** Calls #1{...}, where ... is the comma-separated option list for the
+ %** current package.
+ %** Arranges that these options won't be found at \endinput
+ %** Example: \LaemuProcessOptions\errmessage
+ %** @param #1 a \cs
+ \def\LaemuProcessOptions#1{%
+ \edef\reserved@a{\noexpand#1{\@ptionlist{\@currname.\@currext}}}%
+ \reserved@a
+ \AtEndOfPackage{\def\@unprocessedoptions{}}%
+ }%
+\else%
+ \expandafter\let\csname opt@laemu.sty\endcsname\@empty% loaded ourselves
+ \long\def\@gobble#1{}%
+ \def\@ehc{No help here.}%
+ \newlinechar=`\^^J%
+ \def\on@line{ in line \the\inputlineno}% so it can be \@gobble-d
+ \def\NeedsTeXFormat#1{}% ignore
+ \def\ProvidesPackage#1#2[#3]{\makeatletter}% so `\input MYPKG.sty' works
+ % Dat: use \MessageBreak to separate error/warning/info lines
+ \def\PackageWarning#1#2{% Imp: robust
+ \def\MessageBreak{^^Jw: (#1) }%
+ % vvv Dat: line number refers to place of the \PackageWarning invocation
+ \immediate\write16{^^JPackage #1 Warning: #2\on@line.^^J}%
+ }%
+ \def\PackageInfo#1#2{% Imp: robust
+ \def\MessageBreak{^^Ji: (#1) }%
+ % vvv Dat: line number refers to place of the \PackageWarning invocation
+ \immediate\write-1{Package #1 Info: #2\on@line.}%
+ }%
+ \def\PackageError#1#2#3{\begingroup% Imp: robust
+ % Dat: real LaTeX \GenericError doesn't print stupid macro expansions
+ % after the error message. We cannot emulate it here, possibly because it
+ % this \PackageError should have been put into the format file (??)
+ \immediate\write16{}% an empty line
+ \def\MessageBreak{^^J!: (#1) }%
+ % vvv Dat: line number refers to place of the \PackageWarning invocation
+ \edef\@err@{{Package #1 Error: #2\MessageBreak#3}}%
+ \errhelp\@err@%
+ %\let\@err@\empty%
+ \errmessage{Package #1 Error: #2^^J!, See the package #1 docs for explanation}%
+ %~%
+ \endgroup}%
+ %
+ %** `\RequirePackage{package}' loads package.sty unless already loaded
+ %** `\RequirePackage[option]{package}'
+ %** `\RequirePackage[option1,option2,option3]{package}'
+ \def\RequirePackage{%
+ % Imp: allow optional arguments
+ % Imp: show a warning of loading with different arguments
+ \@ifnextchar[%]
+ {\@@RequirePackage@lowa}%
+ {\@@RequirePackage@lowa[]}%
+ }%
+ \def\@@RequirePackage@lowa[#1]#2{%
+ % Imp: add/strip ".sty" from end of #1
+ \@@RequirePackage@lowb{#2.sty}{#1}%
+ }%
+ %** {current.sty}{lower.sty}....%
+ \def\@@laemu@packagestack{.}% Imp: save \catcode64
+ %** \def#1{...}, where ... is the current package filename
+ \def\@@laemu@packagetop#1{%
+ %\message{T(\@@laemu@packagestack)}%
+ \expandafter\@@laemu@packagetop@low\@@laemu@packagestack#1%
+ }%
+ \def\@@laemu@packagetop@low#1#2.#3{%
+ % Dat: #2 is invalid now (braces may be stripped), don't use it
+ \def#3{#1}%
+ }%
+ \def\@@laemu@packagepop{% Imp: error on underflow
+ %\message{P(\@@laemu@packagestack)}%
+ \global\edef\@@laemu@packagestack{\expandafter\@gobble\@@laemu@packagestack}%
+ %\expandafter\@@laemu@packagepop@low\@@laemu@packagestack% doesn't work well
+ }%
+ %\def\@@laemu@packagepop@low#1#2.{% SUXX: removes brace from {y} in {x}{y}.
+ % \message{Q(#1,#2)}%
+ % \global\edef\@@laemu@packagestack{#2.}%
+ % \message{R(\@@laemu@packagestack)}%
+ %}%
+ \def\@@laemu@packagepush#1{%
+ \global\edef\@@laemu@packagestack{{#1}\@@laemu@packagestack}%
+ %\message{E(\@@laemu@packagestack)}%
+ }%
+ %** @param #1 filename with `.sty'
+ %** @param #2 options
+ \def\@@RequirePackage@lowb#1#2{%
+ \expandafter\ifx\csname opt@#1\endcsname\relax%
+ \expandafter\def\csname opt@#1\endcsname{#2}%
+ %\ifcat \noexpand @\noexpand a%
+ \@@laemu@packagepush{#1}%
+ \ifnum\the\catcode`\@=\the\catcode`\a\relax% Dat: \ifcat is wrong, because we need the _current_ value (at the time of execution)
+ \input#1\relax%
+ \else%
+ \makeatletter%
+ \input#1\relax%
+ \makeatother%
+ \fi%
+ \@@laemu@packagepop%
+ \else% package already loaded -- verify options
+ \def\reserved@a{#2}%
+ % Imp: allow \usepackage[a,b]{c} and \usepackage[b,a]{c}
+ % Dat: LaTeX \def's comma-separated-values to \csname opt@graphic.p.sty\endcsname
+ \expandafter\ifx\csname opt@#1\endcsname\reserved@a\else%
+ \PackageError{laemu}{Option clash for package file `#1'}{%
+ Old options: \csname opt@#1\endcsname\MessageBreak%
+ New options: \reserved@a
+ }%
+ \fi%
+ \let\reserved@a\@empty
+ \fi%
+ }%
+ \let\usepackage\RequirePackage%
+ % vvv see full comment above
+ \def\LaemuProcessOptions#1{%
+ \@@laemu@packagetop\reserved@a%
+ \edef\reserved@a{\noexpand#1{\csname opt@\reserved@a\endcsname}}%
+ \reserved@a
+ }%
+ %
+ \def\makeatletter{\catcode`\@11\relax}%
+ \def\makeatother{\catcode`\@12\relax}%
+ \def\@empty{}% not needed for LaTeX, needed for plain TeX
+ \long\def\@secondoftwo#1#2{#2}%
+ \def\@namedef#1{\expandafter\def\csname #1\endcsname}%
+ \def\@nameuse#1{\csname #1\endcsname}%
+ \expandafter\ifx\csname @ne\endcsname\relax \chardef\@ne=1\fi%
+ %
+ \long\def\@ifnextchar#1#2#3{%
+ \let\reserved@d=#1%
+ \def\reserved@a{#2}%
+ \def\reserved@b{#3}%
+ \futurelet\@let@token\@ifnch}
+ \def\@ifnch{%
+ \ifx\@let@token\@sptoken
+ \let\reserved@c\@xifnch
+ \else
+ \ifx\@let@token\reserved@d
+ \let\reserved@c\reserved@a
+ \else
+ \let\reserved@c\reserved@b
+ \fi
+ \fi
+ \reserved@c}
+ \def\:{\let\@sptoken= } \: % this makes \@sptoken a space token
+ \def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@token\@ifnch}%
+ \expandafter\ifx\csname @inputcheck\endcsname\relax%
+ \newread\@inputcheck%
+ \fi%
+\fi%
+
+%** \input's a file if it exists
+%** @param #1 filename
+\def\LaemuInputQuiet#1{%
+ \openin\@inputcheck#1 %
+ \ifeof\@inputcheck\else%
+ \closein\@inputcheck%
+ \input#1 %
+ \fi
+}%
+
+%\PackageWarning{laemu}{alma\MessageBreak korte}
+%\PackageInfo{laemu}{ialma\MessageBreak korte}
+%\PackageError{laemu}{ialma\MessageBreak korte}\@ehc
+
+\ifWasLetter\else\makeatother\fi%