From 2268464297a1a11a744021c63951ad734e3b8f10 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 12 Jan 2006 23:59:48 +0000 Subject: msg git-svn-id: svn://tug.org/texlive/trunk@1111 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/msg/msg.sty | 446 ++++++++++++++++++++++++++++++++ 1 file changed, 446 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/msg/msg.sty (limited to 'Master/texmf-dist/tex/latex/msg') diff --git a/Master/texmf-dist/tex/latex/msg/msg.sty b/Master/texmf-dist/tex/latex/msg/msg.sty new file mode 100644 index 00000000000..6dc6cd62e5f --- /dev/null +++ b/Master/texmf-dist/tex/latex/msg/msg.sty @@ -0,0 +1,446 @@ +%% +%% This is file `msg.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% msg.dtx (with options: `code') +%% +%% File is part of the "msg" package for LaTeX +%% which is designed to localize any LaTeX package +%% or document class. +%% +\iffalse checksum part +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% checksum = "54410 1466 6398 61162" +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\fi +\def\fileversion{V0.20}\def\filedate{2005/01/24}% +\ifx\issuemsg\undefined\else\expandafter\endinput\fi% +\ifnum\catcode`\@=11\else\expandafter\catcode`\@=11\fi% +\ifx\LdfInit\@undefined% We need inputenc package. + \RequirePackage{inputenc}% Usually, load that package. +\else% But with Babel, dont use \usepackage or such, + \let\@msg@tempa\@currname% Save current package name. + \xdef\@currname{inputenc}% set package req. + \@@input inputenc.sty% and input it now. + \makeatletter% + \let\@currname\@msg@tempa% Reset original package name. +\fi% +\ifx\issuemsgio\undefined\let\issuemsgio\typeout\fi% +\def\@msg@tempa{dummy}% +\def\@msg@tempb{nohyphenation}% +\def\@msg@tempc{english}% Default language for msg package. +\ifx\languagename\@msg@tempa\else% + \ifx\languagename\@msg@tempb\else% + \ifx\languagename\@msg@tempc\let\msg@languagename\undefined\else + \ifx\languagename\undefined\let\msg@languagename\undefined% + \else\edef\msg@languagename{\languagename}% Set it for now. + \fi% + \fi% + \fi% +\fi% +\def\packagewarningheader#1{Package #1 Warning: }% +\renewcommand{\PackageWarning}[2]{\GenericWarning{(#1)% + \@spaces\@spaces\@spaces\@spaces}% + {\packagewarningheader{#1}#2}% + } +\edef\@msg@code@ast{\the\catcode`\*}% Save the current catcode of ``*''. +\def\issuemsg{\@ifnextchar[{\i@suemsg}{\i@suemsg[\issuemsgio]}%] + }% +\def\issuemsgx{\@ifnextchar[{\i@suemsgx}{\i@suemsgx[\issuemsgio]}%] + }% +\let\@msgalspace\space% +\def\@msgalign#1{\ifx\empty#1\else\expandafter\@msgalign@% + \expandafter#1\fi}% +\def\@msgalign@#1{\ifx\void#1\else\expandafter\@msgalign@@% + \expandafter#1\fi}% +\def\@msgalign@@#1{\ifx\protect#1\expandafter\@msgalign@@@% + \else\expandafter\@msgalign@@@@% + \fi}% +\def\@msgalign@@@{\@msgalign}% +\def\@msgalign@@@@{\@msgalspace\@msgalign}% +\let\msg@cmd\relax% +\def\i@suemsg{\let\msg@cmd\issuemsg\i@suemsgx}% +\def\i@suemsgx[#1]#2(#3){\@ifnextchar[{\i@@uemsg[#1]#2(#3)}%] + {\i@@uemsg[#1]#2(#3)[]}% + }% +\let\if@msg@pkg@error\iffalse% Defaultly, not an error macro message. +\def\i@@uemsg[#1]#2(#3)[#4]{% + \def\@argmsg{#4}% + \def\@msg@iocmd{#1}% + \def\@msg@txt{% + \themsg\themsgi\themsgii\themsgiii% + }% + \let\@msg@MBori\MessageBreak% + \ifx\MessageBreak\relax% + \def\MessageBreak{^^J\expandafter\@msgalign\msg@header\void}% + \fi% +\def\@msg@tempa{#1}% TeX cs requires {arg}: +\def\@msg@tempb{\message}% +\ifx\@msg@tempa\@msg@tempb% + \def\@msg@txt{{% + \themsg\themsgi\themsgii\themsgiii% + }}% +\fi% +\def\@msg@tempb{\errmessage}% +\ifx\@msg@tempa\@msg@tempb% + \def\@msg@txt{{% + \themsg\themsgi\themsgii\themsgiii% + }}% +\fi% + \let\@msg@txt@\empty% + \def\@msg@tempb##1##2/{\let\@msg@tempb=##1}% + \def\@msg@tempa{\let\if@msg@pkg@error\iftrue}% + \@msg@tempb#1/% \PackageError is a special case with + \ifx\@msg@tempb\PackageError% package name and msg+help. + \@msg@tempa% Keep it in mind for \@msgparts. + \fi% + \ifx\@msg@tempb\ClassError% The same for \ClassError. + \@msg@tempa% + \fi% + \ifx\undefined#1\retrievemsg2(msg)% + \PackageWarning{msg}\@msg@txt% + \else\retrievemsg#2(#3)[#4]% + \edef\@msg@txt{\@msg@txt}% + \edef\@msg@txt@{\@msg@txt@}% + \@relaxORgobble\@msg@iocmd{\@msg@txt}{\@msg@txt@}% + \fi% + \let\MessageBreak\@msg@MBori% + }% + \def\getmsg#1(#2){\@ifnextchar[{\g@tmsg#1(#2)}{\g@tmsg#1(#2)[]}%] + }% + \def\g@tmsg#1(#2)[#3]{\retrievemsg{#1}(#2)[#3]\@relaxORgobble% + \themsg}% + \newif\if@msg@more% + \def\@msglineparse#1#2\void{\def\@msg@tempa{\msg}% + \def\@msg@tempb{#1}% + \ifx\@msg@tempa\@msg@tempb% + \@msg@tempf% Execute the previous line. + \def\@msg@tempf{}% Start a new one. + \if@msg@more% Continue line feed. + \def\@msg@tempf{\protect#1#2}% + \fi% + \else% + \let\msgheaderOLD\msgheader% + \let\msgtrailerOLD\msgtrailer% + \let\msgencodingOLD\msgencoding% + \let\spaceOLD\space% + \def\msgheader{\protect\msgheader}% + \def\msgtrailer{\protect\msgtrailer}% + \def\msgencoding{\protect\msgencoding}% + \def\space{\protect\space}% + \def\help{\protect\helpi}% + \protected@edef\@msg@tempf{\@msg@tempf\@msgline}% + \let\space\spaceOLD% + \let\msgheader\msgheaderOLD% + \let\msgtrailer\msgtrailerOLD% + \let\msgencoding\msgencodingOLD% + \let\spaceOLD\undefined% + \let\msgheaderOLD\undefined% + \let\msgtrailerOLD\undefined% + \let\msgencodingOLD\undefined% + \fi% + }% + \newread\@inputmsg% + \def\@@input@msg@filename{% Doing nearly like \@@input\msg@filename + \openin\@inputmsg=\msg@filename\@msg@moretrue% + \let\msgparti\relax% + \let\msgpartii\relax% + \let\msgpartiii\relax% + \def\@msg@tempf{}% + \let\endinputORI\endinput% + \let\endinput\undefined% To avoid redef info msg. + \DeclareRobustCommand*{\endinput}{\@msg@morefalse% + }% + \let\reserved@a\@gobble% Clean remaining code. + \loop\catcode`\#=\active% + \endlinechar=-1% + \read\@inputmsg to \@msgline% + \endlinechar`\^^M% + \catcode`\#=6% + \ifx\@msgline\empty\else% + \expandafter\@msglineparse\@msgline\void% + \fi% + \ifeof\@inputmsg\@msg@morefalse\fi% + \if@msg@more\repeat% + \closein\@inputmsg\@msg@tempf% + \catcode`\#=6% + \let\endinput\endinputORI% + }% +\def\@msginput@usual{\let\endinputORI\endinput\@@input\msg@filename}% + \def\retrievemsg#1(#2){\catcode`\*=\@msg@code@ast% + \@ifnextchar[{\r@trievemsg#1(#2)}%] + {\r@trievemsg#1(#2)[]}% + }% + \let\msg@empty\empty% + \let\if@msgnext\iffalse% Set no request for all messages. + \def\r@trievemsg#1(#2)[#3]{\def\@argmsg{#3}% + \let\msg@header\empty\let\msg@trailer\empty% + \xdef\msgid{#1}% + \def\@msg@pkg{#2}% Prevent from empty file: + \let\themsg\msg@empty% + \if@msgnext\let\help\helpi\fi% + \let\themsgi\empty% + \let\themsgii\empty% + \let\themsgiii\empty% + \let\@relaxORgobble\relax% + \edef\@msg@tempd{\@msg@pkg-msg.tex}% + \ifx\msg@languagename\undefined% + \ifx\languagename\undefined\else% Get current language. + \let\msg@input@lang\languagename% + \fi% If no current language, use msg's language. + \else\let\msg@input@lang\msg@languagename% + \fi% + \csname msg@MPC\endcsname% req. when ltxdoc + \ifx\msg@input@lang\undefined% + \let\msg@filename\@msg@tempd% + \else% + \edef\@msg@tempc{\msg@input@lang\string_\@msg@tempd}% + \IfFileExists\@msg@tempc{\let\msg@filename\@msg@tempc}% + {\let\msg@filename\@msg@tempd}% + \fi% + \edef\msg@inputlineno{the\inputlineno}% + \makeatletter% + \let\@msg@gobble@space\relax% Req. when \msgheader in first line. + \let\reserved@a\@gobble% Avoid runaway. + \bgroup\@@input@msg@filename\relax\egroup% Protected marmelade. + \let\msg@cmd\relax% + \csname msg@MPI\endcsname% req. when ltxdoc + \ifx\themsg\empty% Unusual end of file reached. + \def\@msg@tempa{\let\msg@empty\relax% to avoid loop. + \makeatletter% + \r@trievemsg6(msg)[]% + \makeatother% + }% + \expandafter\@msg@tempa% + \fi% + \ifx\themsg\msg@empty% + \PackageError{msg}% + {\string\msg{*} not found in \msg@filename}% + {please reinstall the msg package}% + \fi% + \let\if@msg@pkg@error\iffalse% Reset for next msg request. + \catcode`\*=\@msg@code@ast% Reset catcode too. + }% +\catcode`\#=\active\def\set@argmsg{\def#1{\@argmsg}}% +\catcode`\#=6% +\def\msg{\let\@msg@gobble@space\@gobble% Should apply after firs call. + \@ifstar{\def\@msgskip{^^J}\@msg}{\def\@msgskip{}\@msg}}% +\long\def\@msg#1{\def\@msg@tempc{#1}\catcode`\#=\active% + \def\@msg@tempd##1##2\void{\def\@msg@tempd{##2}% + \let\@msg@tempe\empty% + \ifx\@msg@tempd\empty% + \def\@msg@tempe{##1}% + \fi}% + \@msg@tempd#1\void\relax% \@msg@tempe is the first #1 token. + \let\themsgi\empty% We need to clean any + \let\themsgii\empty% previous read + \let\themsgiii\empty% message parts. + \set@argmsg\@msg@% + }% +\def\@gobble@help#1#2{\@msgparts}% Case 2 lines \msg with \read but not \input. +\long\def\@msg@#1{\def\@msg@tempd{% + \ifx\@msginput@usual\@@input@msg@filename% + \def\space{\noexpand\space}% + \protected@edef\msg@header{\msg@header}% + \protected@edef\msg@trailer{\msg@trailer}% + \else% + \edef\msg@header{\msg@header}% + \edef\msg@trailer{\msg@trailer}% + \fi% + \edef\space{ }% + \protected@xdef\themsg{% + \@msgskip\msg@header#1\msg@trailer}% + \def\space{ }% + }% + \catcode`\#=6\let\@msg@tempb\relax% + \def\@msg@tempb{\@ne\tw@\thr@@\sixt@@n\@cclv}% + \ifx\msgid\@msg@tempb% Check for any next message request. + \global\let\msgid\@msg@tempc% + \else% + \ifx\msgid\@msg@tempc% Check for the previous id. + \if@msgnext\def\msgid{\@ne\tw@\thr@@\sixt@@n\@cclv}% + \fi% + \fi% + \fi% + \ifx\msgid\@msg@tempc% Check for the "id". + \let\@msgparts@ORnot\@msgparts@% + \def\@msg@tempb{\endinput}% + \if@msg@pkg@error% + \let\help\@firstofone% + \def\@msgparts@ORnot{\endinput\def\@msg@txt@}% + \fi% + \def\@msg@tempf{}% + \expandafter\@msg@tempd% + \else\expandafter% + \ifx\@msg@tempe*\let\@msgparts@ORnot\@msgparts@% + \def\@msg@tempb{\endinput\@msg@tempd% + \PackageWarningNoLine{msg}{\themsg% + \themsgi\themsgii\themsgiii}% + \let\@relaxORgobble\@gobble}% + \else\let\@msgparts@ORnot\@gobble% + \fi% + \fi% + \catcode`\#=\active + \@ifnextchar\protect{\expandafter\@gobble@help}{\@msgparts}% + }% +\long\def\@msgparts#1{\def\@msg@tempc{\catcode`\#=6% + \def\@msg@tempb{\issuemsg[% + \PackageError{\@msg@pkg}]{7}(msg)% + \endinput}% + \expandafter\@msg@tempb% + }% + \ifx\msg#1% When #1 is \msg it's sure the previous \msg + \@msg@tempc% didn't provided the correct arguments. + \else% + \ifx\msgheader#1\@msg@tempc% ditto for \msgheader + \else% + \ifx\msgtrailer#1\@msg@tempc% ditto for \msgtrailer + \else% + \ifx\msgencoding#1\@msg@tempc% ditto for \msgencoding + \else% + \@msgparts@ORnot{#1}% + \fi% + \fi% + \fi% + \fi% + \@ifnextchar\space{\@gobble}{}% Gobble any superfluous blank. + }% +\long\def\@msgparts@#1{\long\def\msgparti##1{\xdef\themsgi{##1}}% + \long\def\help##1{\xdef\themsgi{\space help=##1}}% + \long\def\helpi##1{\xdef\themsgi{\space help=##1}}% + \long\def\msgpartii##1{\xdef\themsgii{##1}}% + \long\def\msgpartiii##1{\xdef\themsgiii{##1}}% + #1\catcode`\#=6\expandafter\@msg@tempb% + }% +\let\@msgencoding\@gobble% Nearly null macro until \AtBeginDocument, +\def\msgencoding#1{\ifx\empty#1\else% just disactive 8bits chars. + \let\iterateORI\iterate% + \def\@msg@encoding{#1}% + \ifx\msg@cmd\issuemsg%\inputencoding{ascii}% + \def\@msgenc@loop##1##2{\@tempcnta`##1\relax% + \loop\catcode\@tempcnta=11% + \ifnum\@tempcnta<`##2\relax% + \advance\@tempcnta\@ne% + \repeat}% + \@msgenc@loop\^^A\^^H% + \@msgenc@loop\^^K\^^K% + \@msgenc@loop\^^N\^^_% + \@msgenc@loop\^^?\^^ff% 128-255 + \else\let\@latex@infoORI\@latex@info% + \let\@latex@info\@gobble% + \let\endinputBACK\endinput% + \let\endinput\endinputORI% + \@msgencoding{#1}% + \let\endinput\endinputBACK% + \let\@latex@info\@latex@infoORI% + \fi\makeatletter% + \let\iterate\iterateORI% + \fi% + }% +\let\@msg@encoding\empty% Unknown current encoding. +\AtBeginDocument{\let\@msgencoding\inputencoding}% +\def\msgheader#1{\let\reserved@a\relax% + \def\msg@header{#1}\protect\@msgHTsptoken}% +\def\msgtrailer#1{\let\reserved@a\relax% + \def\msg@trailer{#1}\protect\@msgHTsptoken}% +\def\@msgHTsptoken{\@ifnextchar\@sptoken{\@msg@gobble@space% + \let\@msg@gobble@space\@gobble}% + {\let\@msg@gobble@space\@gobble}% + }% + \def\issueallmsg{\bgroup\let\@@input@msg@filename\@msginput@usual% + \let\msg@cmd\issuemsg% + \@ifnextchar[{\i@sueallmsg}{\i@sueallmsg[\issuemsgio]}%] + }% + \def\i@sueallmsg[#1]{\let\@msg@iocmdn#1\i@@ueallmsg}% + \def\i@@ueallmsg(#1){\def\next{\i@@@eallmsg(#1)}% + \long\def\help##1{\xdef\themsgi{\space help=##1}}% + \let\if@msgnext\iftrue% begin/continue loop. + \def\msgid{\@ne\tw@\thr@@\sixt@@n\@cclv}% Set next one wanted. + \let\prev@msgid\msgid% Save previous id. + \i@@@eallmsg(#1)% Go for looping. + \let\if@msgnext\iffalse% + }% + \def\i@@@eallmsg(#1){\def\@tempa{\i@@uemsg[\@msg@iocmdn]}% + \let\themsg\empty% + \expandafter\@tempa\expandafter{\msgid}(#1)[]% Get it. + \def\@tempa{\let\if@msgnext\iffalse}% + \ifx\prev@msgid\msgid% + \@tempa% + \let\@@input@msg@filename\@msginput@usual% + \issuemsg[\PackageError{msg}]{12}(msg)% + \expandafter\stop% + \fi% + \let\prev@msgid\msgid% Save previous id. + \def\@tempa{*}% Check if last one. + \ifx\msgid\@tempa% + \let\next\egroup% This is the end. + \fi% + \let\msg@cmd\issuemsg% + \next% + }% +\DeclareOption{message}{\let\issuemsgio\message}% TeX cs. +\DeclareOption{wlog}{\let\issuemsgio\wlog}% Plain TeX cs. +\DeclareOption{typeout}{\let\issuemsgio\typeout}% LaTeX cs. +\DeclareOption{kbtypeout}{\let\issuemsgio\kbtypeout}% Keyboard cs. +\DeclareOption{tracefiles}{\let\@@input@msg@filename\@msginput@usual% + }% +\edef\nativelanguage{french}% This is my native language. +\let\on@lineORI\on@line% +\let\pwhORI\packagewarningheader% +\DeclareOption{french}{% Mostly a testing option + % or have msg's messages in French. + \@msgINfrench}% +\def\@msgINfrench{% + \def\on@line{ (voir le source, ligne \the\inputlineno)}% + \def\packagewarningheader##1{Extension ##1 : ATTENTION, }% + \def\msg@languagename{french}}% +\edef\@msg@tempa{french}\ifx\languagename\@msg@tempa\@msgINfrench\fi% +\DeclareOption*{% Once a language is provided we should + \let\on@line\on@lineORI% reset to default. + \let\packagewarningheader\pwhORI% + \def\@msg@tempa{native}% + \ifx\@msg@tempa\CurrentOption% + \let\msg@languagename\nativelanguage% + \else% + \expandafter% + \ifx\csname l@\CurrentOption\endcsname\relax% + \def\@msg@tempa{\retrievemsg3(msg)\PackageWarningNoLine{msg}% + {\themsg\themsgi\themsgii\themsgiii}}% + \else\def\@msg@tempa{\edef\msg@languagename{\CurrentOption}}% + \fi\@msg@tempa% + \fi% + }% +\ProcessOptions% Process options +\bgroup% Protect from any setting. +\retrievemsg1(msg)% +\csname msg@MPC\endcsname% required when ltxdoc +\ProvidesPackage{msg}[\themsg]% Issue that message in log file with +\def\@msg@tempa{\retrievemsg{11}(msg)\wlog{\themsg}}% options messages. +\ifx\@@input@msg@filename\@msginput@usual\expandafter\@msg@tempa\fi% +\egroup% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% \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 +%% Lower-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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~ +%% And any code from 128 to 255 +%% } +%% +\endinput +%% +%% End of file `msg.sty'. -- cgit v1.2.3