%% %% 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 = "32817 1583 6882 65979" %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fi \def\fileversion{V0.51}\def\filedate{2019/01/01}% \ifx\issuemsg\undefined\else\expandafter\endinput\fi% \ifnum\catcode`\@=11\else\expandafter\catcode`\@=11\fi% \ifx\kbencoding\undefined% If we don't have any keyboard reencoding \ifx\LdfInit\@undefined% we need at least 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% \let\@previeg\empty% We have no encoding at this time. \fi% \IfFileExists{msg-msg.tex}{}{% \message{msg: ERROR, file msg-msg.tex is missing}\stop% }% \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% \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]% \ifx\kbencoding\undefined% Expand text now if \edef\@msg@txt{\@msg@txt}% output encoding is \edef\@msg@txt@{\@msg@txt@}% not available. \fi% \@relaxORgobble\@msg@iocmd{\@msg@txt}{\@msg@txt@}% %%% \csname @originalkbe\endcsname% Get back encoding if necessary. \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% \let\UTFviii@two@octetsOLD\UTFviii@two@octets% \let\UTFviii@three@octetsOLD\UTFviii@three@octets% \let\UTFviii@four@octetsOLD\UTFviii@four@octets% \let\UTFviii@two@octets\string% If utf8 was loaded then \let\UTFviii@three@octets\string% nullify it until \let\UTFviii@four@octets\string% necessary. \def\msgheader{\protect\msgheader}% \def\msgtrailer{\protect\msgtrailer}% \def\msgencoding{\protect\msgencoding}% \def\space{\noexpand\space}% \def\help{\protect\helpi}% \protected@edef\@msg@tempf{\@msg@tempf\@msgline}% \let\UTFviii@two@octets\UTFviii@two@octetsOLD% \let\UTFviii@three@octets\UTFviii@three@octetsOLD% \let\UTFviii@four@octets\UTFviii@four@octetsOLD% \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% }% \let\endinputORI\endinput% Save \endinput for any use in an alone \msgencoding \newread\@inputmsg% We'll need it at least for the banner message. \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% Case \msgheader in 1st line. \let\reserved@a\@gobble% Avoid runaway. \bgroup\@@input@msg@filename\relax\egroup% \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. \r@trievemsg6(msg)[]% }% \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 \long\def\@msg@#1{\def\@msg@tempd{% but not \input. \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}% \global\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% If there is not output encoding: \ifx\kbencoding\undefined%\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 %%% \global\let\@originalkbe\relax% \else% %%% \xdef\@originalkbe{\noexpand\kbencoding{\@kbencoding}}% \let\languagename\msg@languagename% \let\msgidORI\msgid% Save current msgid because \kbencoding{#1}% it may issue any message. \let\msgid\msgidORI% Now reset it. \@msg@moretrue% Continue file reading. \fi% \else\let\@latex@infoORI\@latex@info% \let\@latex@info\@gobble% \let\endinputBACK\endinput% \let\endinput\endinputORI% \let\msgidORI\msgid% Save current msgid because \@msgencoding{#1}% it may issue any message. \let\msgid\msgidORI% Now reset it. \let\endinput\endinputBACK% \let\@latex@info\@latex@infoORI% \fi\makeatletter% \let\iterate\iterateORI% \fi% }% \let\@msg@encoding\empty% Unknown current encoding. \ifx\kbencoding\undefined% \AtBeginDocument{\let\@msgencoding\inputencoding}% \let\inputencodingORI\inputencoding% Save \inputencoding code \def\inputencoding#1{\def\@ieg{#1}\let\exec@ieg\relax% Avoid \ifx\@ieg\@previeg\else% to load twice \def\@previeg{#1}% the same encoding file. \def\exec@ieg{\inputencodingORI\@ieg}% \fi% \exec@ieg% }% \else% \AtBeginDocument{\let\@msgencoding\kbencoding}% \fi% \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% }% \ifx\intern@lc@llfrom\undefined% Options aren't declared for internal/kernel calls \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. \fi% \ifx\intern@lc@llfrom\undefined% Options aren't declared for internal/kernel calls \DeclareOption{tracefiles}{\let\@@input@msg@filename\@msginput@usual}% \fi% \ifx\intern@lc@llfrom\undefined% Options aren't declared for internal/kernel calls \DeclareOption{noop}{\def\@@input@msg@filename{\xdef\themsg{0}% \xdef\themsgi{\string\space\msgid}% }% }% \fi% \edef\nativelanguage{french}% This is my native language. \let\on@lineORI\on@line% \let\pwhORI\packagewarningheader% \ifx\intern@lc@llfrom\undefined% Options aren't declared for internal/kernel calls \DeclareOption{french}{% Mostly a testing option % or have msg's messages in French. \@msgINfrench}% \fi% \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% \ifx\intern@lc@llfrom\undefined% Options aren't declared for internal/kernel calls \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% }% \fi% \ifx\intern@lc@llfrom\undefined% No process of options for internal/kernel calls \ProcessOptions% Process options \fi% \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'.