From bd8c84d3086241f36de1b38eec9ca56b3672af31 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 21 Sep 2009 22:54:55 +0000 Subject: fixme 4.0 (21sep09) git-svn-id: svn://tug.org/texlive/trunk@15411 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/fixme/fixme.sty | 1067 ++++++++++++++++----------- 1 file changed, 656 insertions(+), 411 deletions(-) (limited to 'Master/texmf-dist/tex/latex/fixme/fixme.sty') diff --git a/Master/texmf-dist/tex/latex/fixme/fixme.sty b/Master/texmf-dist/tex/latex/fixme/fixme.sty index 3b1f4677662..91683fa26bc 100644 --- a/Master/texmf-dist/tex/latex/fixme/fixme.sty +++ b/Master/texmf-dist/tex/latex/fixme/fixme.sty @@ -4,7 +4,7 @@ %% %% The original source files were: %% -%% fixme.dtx +%% fixme.dtx (with options: `header,fixme') %% @@ -39,68 +39,104 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{fixme}[2009/07/16 v3.4 -Insert fixme notes in your documents] +\ProvidesPackage{fixme}[2009/09/21 v4.0 Insert fixme notes in your documents] \RequirePackage{ifthen} \RequirePackage{verbatim} - -\newcommand*\fixmelogo{\textsf{FiXme}} - +\RequirePackage{xkeyval}[2006/11/18] + +\newcommand\fixmelogo{\textsf{FiXme}} + +\newcommand\@fxpkginfo{\PackageInfo{FiXme}} +\newcommand\@fxpkgwarning{\PackageWarning{FiXme}} +\newcommand\@fxpkgerror{\PackageError{FiXme}} + +\newcommand\@fxkeyifundefined{\key@ifundefined[fx]} +\newcommand\@fxdefinekey{\define@key[fx]} +\newcommand*\@fxvoidkeyerror[2]{% + \@fxpkgerror{misuse of key '#1'}{% + You have given the key '#1' the argument '#2' but it takes + none.\MessageBreak + Type X to quit, fix that key and re-run LaTeX.\MessageBreak}} +\newcommand*\@fxdefinevoidkey[3]{% + \define@key[fx]{#1}{#2}[]{% + \ifthenelse{\equal{##1}{}}{% + #3}{% + \@fxvoidkeyerror{#2}{##1}}}} + +\newcommand*\@fxdefineboolkey[3][]{% + \define@boolkey[fx]{#2}{#3}[true]{#1} + \@fxdefinevoidkey{#2}{no#3}{\@nameuse{fx@#2@#3}{false}}} + +\newcommand\@fxdefinecmdkey{\define@cmdkey[fx]} + +\newcommand\@fxdefinechoicekey{\define@choicekey[fx]} + +\newcommand\@fxsetkeys{\setkeys[fx]} +%% Note: currently unused +%% \newcommand\@fxpresetkeys{\presetkeys[fx]} \let\l@fixme\l@figure -\newcommand\listoffixmes{} -\def\listoffixmes@final{} -\def\listoffixmes@draft{% - \IfFileExists{\jobname .lox}{% - \@listoffixmes@pretoc% - \@starttoc{lox}% - \@listoffixmes@posttoc}{% - \@starttoc{lox}}} - -\def\listoffixmes@draft@ams{\@starttoc{lox}\listfixmename} +\newcommand*\@fxdottedtocline[5]{% + \ifnum #1>\c@tocdepth \else + \vskip \z@ \@plus.2\p@ + {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip + {#4}\nobreak + \leaders\hbox{$\m@th +\mkern \@dotsep mu\hbox{.}\mkern \@dotsep +mu$}\hfill + \nobreak + #5\par}% + \fi} +\newcommand*\fxcontentsline[2]{% + \begingroup% + \let\@dottedtocline\@fxdottedtocline% + \l@fixme{#1}{#2}% + \endgroup} -\newcommand*\listfixmename{} +\newcommand*\fxaddcontentsline[1]{% + \ifthenelse{\equal{\cmdfx@note@target}{thepage}}{% + \addcontentsline{lox}{fixme}{#1}}{% + \addtocontents{lox}{\protect\fxcontentsline{#1}{\cmdfx@note@target}}}} -\def\@listoffixmes@pretoc@article{% - \section*{\listfixmename% - \@mkboth{\MakeUppercase\listfixmename}{\MakeUppercase\listfixmename}}% - } -\def\@listoffixmes@posttoc@article{} +\newcommand\@lox@prtc@article{% + \section*{\@fxlistfixmename% + \@mkboth{\MakeUppercase\@fxlistfixmename}{\MakeUppercase\@fxlistfixmename}}} +\let\@lox@psttc@article\relax -\def\@listoffixmes@pretoc@report{% +\newcommand\@lox@prtc@report{% \if@twocolumn \@restonecoltrue\onecolumn \else \@restonecolfalse \fi - \chapter*{\listfixmename% - \@mkboth{\MakeUppercase\listfixmename}{\MakeUppercase\listfixmename}}% - } -\def\@listoffixmes@posttoc@report{\if@restonecol\twocolumn\fi} + \chapter*{\@fxlistfixmename% + \@mkboth{\MakeUppercase\@fxlistfixmename}{\MakeUppercase\@fxlistfixmename}}} +\newcommand\@lox@psttc@report{\if@restonecol\twocolumn\fi} -\def\@listoffixmes@pretoc@book{% +\newcommand\@lox@prtc@book{% \if@twocolumn \@restonecoltrue\onecolumn \else \@restonecolfalse \fi - \chapter*{\listfixmename% - \@mkboth{\MakeUppercase\listfixmename}{\MakeUppercase\listfixmename}}% - } -\def\@listoffixmes@posttoc@book{\if@restonecol\twocolumn\fi} + \chapter*{\@fxlistfixmename% + \@mkboth{\MakeUppercase\@fxlistfixmename}{\MakeUppercase\@fxlistfixmename}}} +\newcommand\@lox@psttc@book{\if@restonecol\twocolumn\fi} -\newcommand*\lox@heading{\float@listhead{\listfixmename}} +\newcommand\lox@heading{\float@listhead{\@fxlistfixmename}} -\def\@listoffixmes@pretoc@scrartcl{% +\newcommand\@lox@prtc@scrartcl{% \begingroup% \lox@heading% - \setparsizes{0}{0}{\z@\@plus 1fil}\par@updaterelative - } -\def\@listoffixmes@posttoc@scrartcl{% - \endgroup - } + \setparsizes{0}{0}{\z@\@plus 1fil}\par@updaterelative} +\let\@lox@psttc@scrartcl\endgroup -\def\@listoffixmes@pretoc@scrreprt{% +\newcommand\@lox@prtc@scrreprt{% \begingroup% \if@twocolumn \@restonecoltrue\onecolumn @@ -108,14 +144,12 @@ Insert fixme notes in your documents] \@restonecolfalse \fi \lox@heading% - \setparsizes{0}{0}{\z@\@plus 1fil}\par@updaterelative - } -\def\@listoffixmes@posttoc@scrreprt{% + \setparsizes{0}{0}{\z@\@plus 1fil}\par@updaterelative} +\newcommand\@lox@psttc@scrreprt{% \if@restonecol\twocolumn\fi - \endgroup - } + \endgroup} -\def\@listoffixmes@pretoc@scrbook{% +\newcommand\@lox@prtc@scrbook{% \begingroup% \if@twocolumn \@restonecoltrue\onecolumn @@ -123,386 +157,597 @@ Insert fixme notes in your documents] \@restonecolfalse \fi \lox@heading% - \setparsizes{0}{0}{\z@\@plus 1fil}\par@updaterelative -} -\def\@listoffixmes@posttoc@scrbook{% + \setparsizes{0}{0}{\z@\@plus 1fil}\par@updaterelative} +\newcommand\@lox@psttc@scrbook{% \if@restonecol\twocolumn\fi + \endgroup} + +\let\lox@final\relax +\newcommand\lox@draft{% + \IfFileExists{\jobname .lox}{% + \@lox@prtc% + \@starttoc{lox}% + \@lox@psttc}{% + \@starttoc{lox}}} +\newcommand\lox@draft@ams{\@starttoc{lox}\@fxlistfixmename} + +\newcommand*\fxsetface[2]{\@fxsetkeys{face}{#1face=#2}} +\newcommand*\@fxnewface[2][]{% + \@fxdefinecmdkey{face}{#2face}{}% + \fxsetface{#2}{#1}} +\newcommand*\@fxuseface[1]{\@nameuse{cmdfx@face@#1face}} + +\@fxdefineboolkey[% + \ifthenelse{\equal{#1}{true}}{% + \fx@mode@singleuserfalse}{% + \fx@mode@singleusertrue}]{% + mode}{multiuser} +\@fxdefineboolkey[% + \ifthenelse{\equal{#1}{true}}{% + \fx@mode@multiuserfalse}{% + \fx@mode@multiusertrue}]{% + mode}{singleuser} +\@fxdefinechoicekey{mode}{mode}{multiuser,singleuser}{\@fxsetkeys{mode}{#1}} + +\let\@fxearlylayouts\empty +\let\@fxlatelayouts\empty +\newcommand*\FXProvidesLayout[1]{\ProvidesPackage{fxlayout#1}} +\def\@FXRegisterLayout#1[#2]#3#4{% + \@fxkeyifundefined{layout}{#3}{% + \@fxdefineboolkey[#2]{layout}{#3}% + \expandafter\def\csname @fxlayout@#3\endcsname{#4}% + \expandafter\ifx\csname @fx#1layouts\endcsname\empty% + \expandafter\g@addto@macro\csname @fx#1layouts\endcsname{#3}% + \else% + \expandafter\g@addto@macro\csname @fx#1layouts\endcsname{,#3}% + \fi}{% + \@fxpkgerror{layout '#3' already registered}{% + You have called \string\FXRegisterLayout\space with a name already + in use.\MessageBreak + If you want to modify an existing layout, renew its + command.\MessageBreak + Otherwise, you must choose a different name.}}} +\newcommand\FXRegisterLayout{% + \@ifstar{% + \@ifnextchar[%] + {\@FXRegisterLayout{early}}{\@FXRegisterLayout{early}[]}}{% + \@ifnextchar[%] + {\@FXRegisterLayout{late}}{\@FXRegisterLayout{late}[]}}} + +\@fxnewface{margin} +\newcommand*\FXLayoutMargin[3]{% + \marginpar[% + \raggedleft\@fxuseface{margin}\ignorespaces#3 \fxnotename{#1}: #2]{% + \raggedright\@fxuseface{margin}\ignorespaces#3 \fxnotename{#1}: #2}} +\FXRegisterLayout*[% + \ifthenelse{\boolean{fx@layout@margin}\and\boolean{fx@layout@marginclue}}{% + \@fxpkgwarning{% + marginal notes requested;\MessageBreak + turning marginal clues off}% + \fx@layout@marginclue{false}}]{% + margin}{\FXLayoutMargin} +\newcommand*\FXLayoutMarginClue[3]{% + \marginpar[% + \raggedleft\@fxuseface{margin}\ignorespaces#3 \fxnotename{#1}!]{% + \raggedright\@fxuseface{margin}\ignorespaces#3 \fxnotename{#1}!}} +\FXRegisterLayout*[% + \ifthenelse{\boolean{fx@layout@marginclue}\and\boolean{fx@layout@margin}}{% + \@fxpkgwarning{% + marginal clues requested;\MessageBreak + turning marginal notes off}% + \fx@layout@margin{false}}]{% + marginclue}{\FXLayoutMarginClue} +\newcommand*\FXLayoutFootnote[3]{% + \footnote{\ignorespaces#3 \fxnotename{#1}: #2}} +\FXRegisterLayout{footnote}{\FXLayoutFootnote} +\@fxnewface{inline} +\newcommand*\FXLayoutInline[3]{% + {\@fxuseface{inline}\ignorespaces#3 \fxnotename{#1}: #2}} +\FXRegisterLayout{inline}{\FXLayoutInline} +\newcommand\fixmeindexname{\fixmelogo} +\def\@wrindex#1{% + \ifthenelse{\equal{\cmdfx@note@target}{thepage}}{% + \protected@write\@indexfile{}{\string\indexentry{#1}{\thepage}}}{% + \protected@write\@indexfile{}{\string\indexentry{#1}{\cmdfx@note@target}}} \endgroup -} - -\newcommand\FXInline[2]{% - \textbf{#1}: \emph{#2}} -\newcommand\FXMargin[2]{% - \marginpar[\footnotesize\raggedleft\textbf{#1}: \emph{#2}]{% - \footnotesize\raggedright\textbf{#1}: \emph{#2}}} -\newcommand\FXMarginClue[1]{% - \marginpar[\footnotesize\raggedleft\textbf{#1}~!]{% - \footnotesize\raggedright\textbf{#1}~!}} -\newcommand\FXFootnote[2]{% - \footnote{\textbf{#1}: \emph{#2}}} - -\newcommand*\fixmeindexname{} -\newcommand\FXIndex[1]{% - \index{***@\fixmeindexname:!#1}} - -\newcommand*\fixmefatalprefix{} -\newcommand\FiXmeInline[1]{\FXInline{\fixmefatalprefix}{#1}} -\newcommand\FiXmeMargin[1]{\FXMargin{\fixmefatalprefix}{#1}} -\newcommand\FiXmeFootnote[1]{\FXFootnote{\fixmefatalprefix}{#1}} -\newcommand\FiXmeUser[1]{} -\let\FiXmeUser\empty - -\newcommand\FiXmeIndex[1]{\FXIndex{#1}} -\newcommand\FiXmeInfo[1]{} -\newcommand\FiXmeWarning[1]{} - -\newif\iffixme@inline -\newif\iffixme@margin -\newif\iffixme@marginclue -\newif\iffixme@footnote -\newif\iffixme@user -\newif\iffixme@index - -\let\fixme@setinline\fixme@inlinetrue -\def\fixme@setmargin{% - \iffixme@marginclue% - \PackageWarning{FiXme}{% - Marginal notes requested; turning marginal clues off}% - \fixme@margincluefalse% - \fi% - \fixme@margintrue} -\def\fixme@setmarginclue{% - \iffixme@margin% - \PackageWarning{FiXme}{% - Marginal clues requested; turning marginal notes off}% - \fixme@marginfalse% - \fi% - \fixme@margincluetrue} -\let\fixme@setfootnote\fixme@footnotetrue -\let\fixme@setuser\fixme@usertrue -\let\fixme@setindex\fixme@indextrue - -\def\fixme@text#1#2{% - \iffixme@inline\FXInline{#1}{#2}\fi% - \iffixme@margin\FXMargin{#1}{#2}\fi% - \iffixme@marginclue\FXMarginClue{#1}\fi% - \iffixme@footnote\FXFootnote{#1}{#2}\fi% - \iffixme@user\FXUser{#1}{#2}\fi} - -\DeclareOption{inline}{\fixme@setinline} -\DeclareOption{noinline}{\fixme@inlinefalse} -\DeclareOption{margin}{\fixme@setmargin} -\DeclareOption{nomargin}{\fixme@marginfalse} -\DeclareOption{marginclue}{\fixme@setmarginclue} -\DeclareOption{nomarginclue}{\fixme@margincluefalse} -\DeclareOption{footnote}{\fixme@footnotetrue} -\DeclareOption{nofootnote}{\fixme@footnotefalse} -\DeclareOption{user}{\fixme@usertrue} -\DeclareOption{nouser}{\fixme@userfalse} -\DeclareOption{index}{\fixme@indextrue} -\DeclareOption{noindex}{\fixme@indexfalse} - -\DeclareOption{info}{} -\DeclareOption{noinfo}{} -\DeclareOption{warning}{} -\DeclareOption{nowarning}{} - -\newcommand\FXNote[1]{% + \@esphack} +\newcommand\@fxnotekey{***a} +\newcommand\@fxwarningkey{***b} +\newcommand\@fxerrorkey{***c} +\newcommand\@fxfatalkey{***d} +\newcommand*\FXLayoutIndex[3]{% + \iffx@mode@multiuser% + \index{***@\fixmeindexname:% + !\@nameuse{@fx#1key}@\fxnotesname{#1}:% + !\@nameuse{thefx#1count}: #3: #2}% + \index{***#3@\fixmeindexname{} (#3):% + !\@nameuse{@fx#1key}@\fxnotesname{#1}:% + !\@nameuse{thefx#1count}: #2}% + \else% + \index{***@\fixmeindexname:% + !\@nameuse{@fx#1key}@\fxnotesname{#1}:% + !\@nameuse{thefx#1count}: #2}% + \fi} +\FXRegisterLayout{index}{\FXLayoutIndex} +\newcommand*\FXLayoutContentsLine[3]{% + \iffx@mode@multiuser% + \fxaddcontentsline{\ignorespaces#3 \fxnotename{#1}: #2}% + \else% + \fxaddcontentsline{\fxnotename{#1}: #2}% + \fi} + +\newcommand*\fxloadlayouts[1]{% + \edef\@fxlts{\zap@space#1 \@empty}% + \@for\@fxlt:=\@fxlts\do{\usepackage{fxlayout#1}}} + +\def\@fxparselayout#1#2#3\relax{\def\@fxltprefix{#1#2}\def\@fxltrest{#3}} +\newcommand*\fxuselayouts[1]{% + \edef\@fxlts{\zap@space#1 \@empty}% + \@for\@fxlt:=\@fxlts\do{% + \expandafter\@fxparselayout\@fxlt\relax% + \ifthenelse{\equal{\@fxltprefix}{no}}{% + \let\@fxltname\@fxltrest}{% + \let\@fxltname\@fxlt}% + \@fxkeyifundefined{layout}{\@fxltname}{\fxloadlayouts{\@fxltname}}{}}% + \@fxsetkeys{layout}{#1}} +\let\FXRequireLayouts\fxuselayouts + +\@fxdefinecmdkey{layout}{innerlayout}{} +\@fxdefinekey{layout}{morelayout}{\fxuselayouts{#1}} +\@fxdefinekey{layout}{layout}{% + \edef\@fxlayouts{\@fxearlylayouts,\@fxlatelayouts}% + \@for\@fxlt:=\@fxlayouts\do{% + \@nameuse{fx@layout@\@fxlt}{false}}% + \fxuselayouts{#1}} + +\newcommand*\FXProvidesEnvLayout[1]{\ProvidesPackage{fxenvlayout#1}} +\newcommand*\FXRegisterEnvLayout[3]{% + \@ifundefined{@fxenvlayout@#1@begin}{% + \expandafter\def\csname @fxenvlayout@#1@begin\endcsname{#2}% + \expandafter\def\csname @fxenvlayout@#1@end\endcsname{#3}}{% + \@fxpkgerror{environment layout '#2' already registered}{% + You have called \string\FXRegisterEnvLayout\space with a name already in + use.\MessageBreak + If you want to modify an existing environment layout, renew its + commands.\MessageBreak + Otherwise, you must choose a different name.}}} + +\@fxnewface{env} +\newcommand*\FXEnvLayoutPlainBegin[2]{% + \@fxuseface{env}\ignorespaces#2 \fxnotename{#1}: \ignorespaces} +\newcommand*\FXEnvLayoutPlainEnd[2]{} +\FXRegisterEnvLayout{plain}{\FXEnvLayoutPlainBegin}{\FXEnvLayoutPlainEnd} + +\@fxnewface[\itshape]{signature} +\newcommand*\@fxdosig[1]{% + \ifthenelse{\equal{#1}{}}{\def\@fxsignature{}}{% + \def\@fxsignature{ -- {\@fxuseface{signature}#1}}}} +\newcommand*\FXEnvLayoutSignatureBegin[2]{% + \@fxuseface{env}\fxnotename{#1}: \ignorespaces} +\newcommand*\FXEnvLayoutSignatureEnd[2]{\@fxdosig{#2}\@fxsignature} +\FXRegisterEnvLayout{signature}{% + \FXEnvLayoutSignatureBegin}{\FXEnvLayoutSignatureEnd} + +\newcommand*\@fxselectenvlayout[1]{% + \expandafter\let\expandafter\@fxenvlayout@begin% + \csname @fxenvlayout@#1@begin\endcsname% + \expandafter\let\expandafter\@fxenvlayout@end% + \csname @fxenvlayout@#1@end\endcsname} + +\newcommand*\fxloadenvlayouts[1]{% + \edef\@fxlts{\zap@space#1 \@empty}% + \@for\@fxlt:=\@fxlts\do{\usepackage{fxenvlayout#1}}} + +\newcommand*\fxuseenvlayout[1]{% + \@ifundefined{@fxenvlayout@#1@begin}{\fxloadenvlayouts{#1}}{}% + \@fxselectenvlayout{#1}} +\let\FXRequireEnvLayout\fxuseenvlayout +\@fxdefinekey{envlayout}{envlayout}{\fxuseenvlayout{#1}} + +\newcommand*\FXProvidesTargetLayout[1]{\ProvidesPackage{fxtargetlayout#1}} +\newcommand*\FXRegisterTargetLayout[2]{% + \@ifundefined{@fxtargetlayout@#1}{% + \expandafter\def\csname @fxtargetlayout@#1\endcsname{#2}}{% + \@fxpkgerror{target layout '#1' already registered}{% + You have called \string\FXRegisterTargetLayout\space with a name + already in use.\MessageBreak + If you want to modify an existing target layout, renew its + command.\MessageBreak + Otherwise, you must choose another name.}}} + +\@fxnewface{target} +\newcommand\FXTargetLayoutPlain[2]{\@fxuseface{target}#2} +\FXRegisterTargetLayout{plain}{\FXTargetLayoutPlain} + +\newcommand*\@fxselecttargetlayout[1]{% + \expandafter\let\expandafter\@@fxtargetlayout% + \csname @fxtargetlayout@#1\endcsname} + +\newcommand*\fxloadtargetlayouts[1]{% + \edef\@fxlts{\zap@space#1 \@empty}% + \@for\@fxlt:=\@fxlts\do{\usepackage{fxtargetlayout#1}}} + +\newcommand*\fxusetargetlayout[1]{% + \@ifundefined{@fxtargetlayout@#1}{\fxloadtargetlayouts{#1}}{}% + \@fxselecttargetlayout{#1}} +\let\FXRequireTargetLayout\fxusetargetlayout +\@fxdefinekey{targetlayout}{targetlayout}{\fxusetargetlayout{#1}} + +\newcommand\@fxtargetlayout@final[2]{#2} +\newcommand\@fxtargetlayout@draft[2]{% + \begingroup\@@fxtargetlayout{#1}{#2}\endgroup} + +\newcommand*\FXLogNote[1]{% \GenericInfo{% (FiXme)\@spaces\@spaces\@spaces\@spaces}{% - Package FiXme Note: `#1'}} -\newcommand\FXWarning[1]{% - \PackageWarning{FiXme}{`#1'}} -\newcommand\FXError[1]{% + FiXme Note: '#1'}} +\newcommand*\FXLogWarning[1]{% \GenericWarning{% (FiXme)\@spaces\@spaces\@spaces\@spaces}{% - Package FiXme Error: `#1'}} -\newcommand\FXFatal[1]{% + FiXme Warning: '#1'}} +\newcommand*\FXLogError[1]{% \GenericWarning{% (FiXme)\@spaces\@spaces\@spaces\@spaces}{% - Package FiXme: `#1'}} + FiXme Error: '#1'}} +\newcommand*\FXLogFatal[1]{% + \GenericWarning{% + (FiXme)\@spaces\@spaces\@spaces\@spaces}{% + FiXme Fatal Error: '#1'}} -\newif\iffixme@silent +\def\@fxlog@note{\FXLogNote} +\def\@fxlog@warning{\FXLogWarning} +\def\@fxlog@error{\FXLogError} +\def\@fxlog@fatal{\FXLogFatal} -%% Options that control whether to be silent or not: -\DeclareOption{silent}{\fixme@silenttrue} -\DeclareOption{nosilent}{\fixme@silentfalse} +\@fxdefineboolkey{log}{silent} \newcounter{fixmecount} -\newcounter{fixmenotecount} -\newcounter{fixmewarningcount} -\newcounter{fixmeerrorcount} -\newcounter{fixmefatalcount} - -\newcommand*\fixmenoteprefix{} -\newcommand*\fixmenoteindexname{} -\def\fixme@note@draft#1{% - \fixme@text{\fixmenoteprefix}{#1}% - \iffixme@index\FXIndex{\fixmenoteindexname\thefixmenotecount: #1}\fi% - \iffixme@silent\else\FXNote{#1}\fi% - \addcontentsline{lox}{fixme}{\protect\fixmenoteprefix: #1}} -\def\fixme@note@final#1{% - \iffixme@silent\else\FXNote{#1}\fi% - \addcontentsline{lox}{fixme}{\protect\fixmenoteprefix: #1}} - -\newcommand*\fixmewarningprefix{} -\newcommand*\fixmewarningindexname{} -\def\fixme@warning@draft#1{% - \fixme@text{\fixmewarningprefix}{#1}% - \iffixme@index\FXIndex{\fixmewarningindexname\thefixmewarningcount: #1}\fi% - \iffixme@silent\else\FXWarning{#1}\fi% - \addcontentsline{lox}{fixme}{\protect\fixmewarningprefix: #1}} -\def\fixme@warning@final#1{% - \iffixme@silent\else\FXWarning{#1}\fi% - \addcontentsline{lox}{fixme}{\protect\fixmewarningprefix: #1}} - -\newcommand*\fixmeerrorprefix{} -\newcommand*\fixmeerrorindexname{} -\def\fixme@error@draft#1{% - \fixme@text{\fixmeerrorprefix}{#1}% - \iffixme@index\FXIndex{\fixmeerrorindexname\thefixmeerrorcount: #1}\fi% - \iffixme@silent\else\FXError{#1}\fi% - \addcontentsline{lox}{fixme}{\protect\fixmeerrorprefix: #1}} -\def\fixme@error@final#1{% - \iffixme@silent\else\FXError{#1}\fi% - \addcontentsline{lox}{fixme}{\protect\fixmeerrorprefix: #1}} - -\newcommand*\fixmefatalindexname{} -\def\fixme@fatal@draft#1{% - \iffixme@inline\FiXmeInline{#1}\fi% - \iffixme@margin\FiXmeMargin{#1}\fi% - \iffixme@marginclue\FXMarginClue{\fixmefatalprefix}\fi% - \iffixme@footnote\FiXmeFootnote{#1}\fi% - \iffixme@user\FiXmeUser{#1}\fi% - \iffixme@index\FiXmeIndex{% - \fixmefatalindexname\thefixmefatalcount: #1}\fi% - \iffixme@silent\else\FXFatal{#1}\fi% - \addcontentsline{lox}{fixme}{\protect\fixmefatalprefix: #1}} -\def\fixme@fatal@final#1{% - \PackageError{FiXme}{`#1' fixme left in final version}{% - You are processing your document in final mode,\MessageBreak - but you still have some critical FiXme's left behind.\MessageBreak - Type X to quit, fix your document, and rerun LaTeX.}} - -\def\@@fixme#1#2{% - \stepcounter{fixmecount}% - \stepcounter{fixme#1count}% - \csname fixme@#1\endcsname{#2}} -\def\@fixme#1[#2]#3{% - \bgroup% - \fixme@inlinefalse% - \fixme@marginfalse% - \fixme@margincluefalse% - \fixme@footnotefalse% - \fixme@userfalse% - \fixme@indexfalse% - \@for\fixme@option:=#2\do{% - \expandafter\ifx\csname fixme@\fixme@option true\endcsname\relax - \PackageError{FiXme}{Unknown layout option `\fixme@option'}{% -You have given an invalid option to \string\fixme, or an \string\fx % -command.\MessageBreak -Valid options are `inline', `margin', `marginclue', `footnote', % -`user',\MessageBreak -and `index'.\MessageBreak -Type X to quit, fix your document, and rerun LaTeX.}% - \else% - \csname fixme@set\fixme@option\endcsname% - \fi}% - \@@fixme{#1}{#3}% - \egroup} -\DeclareRobustCommand\fxnote{\@ifnextchar[%] - {\@fixme{note}}{\@@fixme{note}}} -\DeclareRobustCommand\fxwarning{\@ifnextchar[%] - {\@fixme{warning}}{\@@fixme{warning}}} -\DeclareRobustCommand\fxerror{\@ifnextchar[%] - {\@fixme{error}}{\@@fixme{error}}} -\DeclareRobustCommand\fixme{\@ifnextchar[%] - {\@fixme{fatal}}{\@@fixme{fatal}}} - -\newcommand\FXEnvBegin{\begin{quotation}} -\newcommand\FXEnvEnd{\end{quotation}} - -\def\@fxenvbegin@draft#1#2{% - \FXEnvBegin - \edef\fixme@args{inline% - \iffixme@index,index\fi% - \iffixme@marginclue,marginclue\fi}% - \csname#1\endcsname[\fixme@args]{#2}} -\def\@fxenvbegin@final#1#2{ - \edef\fixme@args{inline% - \iffixme@index,index\fi% - \iffixme@marginclue,marginclue\fi}% - \csname#1\endcsname[\fixme@args]{#2} - \comment -} - -\def\@fxenvend@draft{\FXEnvEnd} -\def\@fxenvend@final{\endcomment} - -\newenvironment{anfxnote}[1][]{% - \@fxenvbegin{fxnote}{#1}}{% - \@fxenvend} -\newenvironment{anfxwarning}[1][]{% - \@fxenvbegin{fxwarning}{#1}}{% - \@fxenvend} -\newenvironment{anfxerror}[1][]{% - \@fxenvbegin{fxerror}{#1}}{% - \@fxenvend} -\newenvironment{afixme}[1][]{% - \@fxenvbegin{fixme}{#1}}{% - \@fxenvend} - -\DeclareOption{english}{% - \renewcommand*\fixmenoteprefix{\fixmelogo\nobreakspace Note} - \renewcommand*\fixmewarningprefix{\fixmelogo\nobreakspace Warning} - \renewcommand*\fixmeerrorprefix{\fixmelogo\nobreakspace Error} - \renewcommand*\fixmefatalprefix{\fixmelogo} - \renewcommand*\fixmeindexname{\fixmelogo} - \renewcommand*\fixmenoteindexname{**a@Notes:!} - \renewcommand*\fixmewarningindexname{**b@Warnings:!} - \renewcommand*\fixmeerrorindexname{**c@Errors:!} - \renewcommand*\fixmefatalindexname{} - \renewcommand*{\listfixmename}{List of Corrections}} -\DeclareOption{french}{% - \renewcommand*\fixmenoteprefix{\fixmelogo\nobreakspace Note} - \renewcommand*\fixmewarningprefix{\fixmelogo\nobreakspace Attention} - \renewcommand*\fixmeerrorprefix{\fixmelogo\nobreakspace Erreur} - \renewcommand*\fixmefatalprefix{\fixmelogo} - \renewcommand*\fixmeindexname{\fixmelogo} - \renewcommand*\fixmenoteindexname{**a@Notes:!} - \renewcommand*\fixmewarningindexname{**b@Avertissements:!} - \renewcommand*\fixmeerrorindexname{**c@Erreurs:!} - \renewcommand*\fixmefatalindexname{} - \renewcommand*{\listfixmename}{Liste des Corrections}} -\DeclareOption{francais}{\ExecuteOptions{french}} -\DeclareOption{spanish}{% - \renewcommand*\fixmenoteprefix{\fixmelogo\nobreakspace Nota} - \renewcommand*\fixmewarningprefix{\fixmelogo\nobreakspace Aviso} - \renewcommand*\fixmeerrorprefix{\fixmelogo\nobreakspace Error} - \renewcommand*\fixmefatalprefix{\fixmelogo} - \renewcommand*\fixmeindexname{\fixmelogo} - \renewcommand*\fixmenoteindexname{**a@Notas:!} - \renewcommand*\fixmewarningindexname{**b@Avisos:!} - \renewcommand*\fixmeerrorindexname{**c@Errores:!} - \renewcommand*\fixmefatalindexname{} - \renewcommand*{\listfixmename}{Lista de Correcciones}} -\DeclareOption{italian}{% - \renewcommand*\fixmenoteprefix{\fixmelogo\nobreakspace Nota} - \renewcommand*\fixmewarningprefix{\fixmelogo\nobreakspace Avviso} - \renewcommand*\fixmeerrorprefix{\fixmelogo\nobreakspace Errore} - \renewcommand*\fixmefatalprefix{\fixmelogo} - \renewcommand*\fixmeindexname{\fixmelogo} - \renewcommand*\fixmenoteindexname{**a@Note:!} - \renewcommand*\fixmewarningindexname{**b@Avvisi:!} - \renewcommand*\fixmeerrorindexname{**c@Errori:!} - \renewcommand*\fixmefatalindexname{} - \renewcommand*{\listfixmename}{Corrigenda}} -\DeclareOption{german}{% - \renewcommand*\fixmenoteprefix{\fixmelogo\nobreakspace Anm} - \renewcommand*\fixmewarningprefix{\fixmelogo\nobreakspace Warnung} - \renewcommand*\fixmeerrorprefix{\fixmelogo\nobreakspace Fehler} - \renewcommand*\fixmefatalprefix{\fixmelogo} - \renewcommand*\fixmeindexname{\fixmelogo} - \renewcommand*\fixmenoteindexname{**a@Anmerkungen:!} - \renewcommand*\fixmewarningindexname{**b@Warnungen:!} - \renewcommand*\fixmeerrorindexname{**c@Fehler:!} - \renewcommand*\fixmefatalindexname{} - \renewcommand*{\listfixmename}{Verzeichnis der Korrekturen}} -\DeclareOption{ngerman}{% - \ExecuteOptions{german}} -\DeclareOption{danish}{% - \renewcommand*\fixmenoteprefix{\fixmelogo\nobreakspace Note} - \renewcommand*\fixmewarningprefix{\fixmelogo\nobreakspace Advarsel} - \renewcommand*\fixmeerrorprefix{\fixmelogo\nobreakspace Fejl} - \renewcommand*\fixmefatalprefix{\fixmelogo} - \renewcommand*\fixmeindexname{\fixmelogo} - \renewcommand*\fixmenoteindexname{**a@Noter:!} - \renewcommand*\fixmewarningindexname{**b@Advarsler:!} - \renewcommand*\fixmeerrorindexname{**c@Fejl:!} - \renewcommand*\fixmefatalindexname{} - \renewcommand*{\listfixmename}{Rettelser}} -\DeclareOption{croatian}{% - \renewcommand*\fixmenoteprefix{\fixmelogo\nobreakspace Poruka} - \renewcommand*\fixmewarningprefix{\fixmelogo\nobreakspace Upozorenje} - \renewcommand*\fixmeerrorprefix{\fixmelogo\nobreakspace Gre\v ska} - \renewcommand*\fixmefatalprefix{\fixmelogo} - \renewcommand*\fixmeindexname{\fixmelogo} - \renewcommand*\fixmenoteindexname{**a@Poruke:!} - \renewcommand*\fixmewarningindexname{**b@Upozorenja:!} - \renewcommand*\fixmeerrorindexname{**c@Greske:!} - \renewcommand*\fixmefatalindexname{} - \renewcommand*{\listfixmename}{Popis korekcija}} - -\DeclareOption{final}{ - \let\fixme@note\fixme@note@final - \let\fixme@warning\fixme@warning@final - \let\fixme@error\fixme@error@final - \let\fixme@fatal\fixme@fatal@final - \let\@fxenvbegin\@fxenvbegin@final - \let\@fxenvend\@fxenvend@final - \let\listoffixmes\listoffixmes@final - } - -\DeclareOption{draft}{ - \@ifclassloaded{article}{ - \let\@listoffixmes@pretoc\@listoffixmes@pretoc@article - \let\@listoffixmes@posttoc\@listoffixmes@posttoc@article}{ - \@ifclassloaded{report}{ - \let\@listoffixmes@pretoc\@listoffixmes@pretoc@report - \let\@listoffixmes@posttoc\@listoffixmes@posttoc@report}{ - \@ifclassloaded{book}{ -\let\@listoffixmes@pretoc\@listoffixmes@pretoc@book -\let\@listoffixmes@posttoc\@listoffixmes@posttoc@book}{ -\@ifclassloaded{scrartcl}{ - \let\@listoffixmes@pretoc\@listoffixmes@pretoc@scrartcl - \let\@listoffixmes@posttoc\@listoffixmes@posttoc@scrartcl}{ - \@ifclassloaded{scrreprt}{ - \let\@listoffixmes@pretoc\@listoffixmes@pretoc@scrreprt - \let\@listoffixmes@posttoc\@listoffixmes@posttoc@scrreprt}{ - \@ifclassloaded{scrbook}{ - \let\@listoffixmes@pretoc\@listoffixmes@pretoc@scrbook - \let\@listoffixmes@posttoc\@listoffixmes@posttoc@scrbook}{ - \@ifclassloaded{amsbook}{ -\let\listoffixmes@draft\listoffixmes@draft@ams}{ -\@ifclassloaded{amsart}{ - \let\listoffixmes@draft\listoffixmes@draft@ams}{ - %% Use the article layout by default. - \let\@listoffixmes@pretoc\@listoffixmes@pretoc@article - \let\@listoffixmes@posttoc\@listoffixmes@posttoc@article} - } - } - } -} - } - } - } - \let\fixme@note\fixme@note@draft - \let\fixme@warning\fixme@warning@draft - \let\fixme@error\fixme@error@draft - \let\fixme@fatal\fixme@fatal@draft - \let\@fxenvbegin\@fxenvbegin@draft - \let\@fxenvend\@fxenvend@draft - \let\listoffixmes\listoffixmes@draft -} - -\ExecuteOptions{english,final,margin,nosilent} -\ProcessOptions* - -\AtBeginDocument{% - \ifx\FiXmeUser\empty - \renewcommand\FiXmeUser[1]{\FXUser{\fixmefatalprefix}{#1}} +\newcounter{fxnotecount} +\newcounter{fxwarningcount} +\newcounter{fxerrorcount} +\newcounter{fxfatalcount} + +\@fxdefinecmdkey{note}{author}{} +\@fxdefinecmdkey{note}{target}{} +\newcommand\@fxhandleinnermode{% + \ifinner% + \ifthenelse{\boolean{fx@layout@margin}}{% + \@fxpkginfo{% +inner mode detected;\MessageBreak +turning margin layout form off}}{% + \ifthenelse{\boolean{fx@layout@marginclue}}{% +\@fxpkginfo{% + inner mode detected;\MessageBreak + turning marginclue layout form off}}{}}% + \expandafter\fxuselayouts\expandafter{% + \cmdfx@layout@innerlayout,nomargin,nomarginclue}% + \fi} +\newcommand*\@fxissueearlydraftlayouts[2]{% + \@fxhandleinnermode% + \@for\@fxlt:=\@fxearlylayouts\do{% + \@nameuse{iffx@layout@\@fxlt}% + \@nameuse{@fxlayout@\@fxlt}{#1}{#2}{\cmdfx@note@author}% + \fi}} +\newcommand*\@fxissuelatedraftlayouts[2]{% + \@for\@fxlt:=\@fxlatelayouts\do{% + \@nameuse{iffx@layout@\@fxlt}% + \@nameuse{@fxlayout@\@fxlt}{#1}{#2}{\cmdfx@note@author}% + \fi}} +\newcommand*\@fxissuecommonlayouts[2]{% + \FXLayoutContentsLine{#1}{#2}{\cmdfx@note@author}% + \iffx@log@silent\else\@nameuse{@fxlog@#1}{#2}\fi} + +\newcommand*\@@@fxnote@early@final[2]{% + \ifthenelse{\equal{#1}{fatal}}{% + \@fxpkgerror{'#2' fatal error left in final version}{% + You are currently processing in final mode,\MessageBreak + but you still have some FiXme fatal errors left behind.\MessageBreak + Type X to quit, fix your document (or switch back to draft + mode),\MessageBreak + and rerun LaTeX.}}{}} +\newcommand*\@@@fxnote@late@final[2]{\@fxissuecommonlayouts{#1}{#2}} +\newcommand*\@@@fxnote@early@draft[2]{% + \@fxissueearlydraftlayouts{#1}{#2}} +\newcommand*\@@@fxnote@late@draft[2]{% + \@fxissuelatedraftlayouts{#1}{#2}% + \@fxissuecommonlayouts{#1}{#2}} + +\newcommand*\@fxpostconfigure{% + \ifthenelse{\equal{\cmdfx@note@author}{fixme}}{% + \@fxsetkeys{note}{author=\fixmelogo}}{}% + \iffx@lang@langtrack% + \@fxkeyifundefined{lang}{\languagename}{% + \@fxpkgwarning{unknown language '\languagename';\MessageBreak + falling back to \@fxdefaultlang}% + \@fxsetkeys{lang}{\@fxdefaultlang}}{% + \@fxsetkeys{lang}{\languagename}} \fi} +\let\@fxendgroup\endgroup +\def\@@fxnote@early#1#2{% + \@fxpostconfigure% + \stepcounter{fixmecount}% + \stepcounter{fx#1count}% + \@@@fxnote@early{#1}{#2}} +\def\@@fxnote@late#1#2{% + \@@@fxnote@late{#1}{#2}% + \@fxendgroup} +\def\@@fxnote#1#2{% + \@@fxnote@early{#1}{#2}% + \@@fxnote@late{#1}{#2}} +\def\@fxnote#1[#2]#3{% + \@fxsetkeys{mode,status,lang,log,note,face,layout}{#2}% + \@@fxnote{#1}{#3}} + +\long\def\@@fxsnote#1#2#3{% + \@fxpostconfigure\let\@fxpostconfigure\relax% + \@@fxnote@early{#1}{#2}\@fxtargetlayout{#1}{#3}\@@fxnote@late{#1}{#2}} +\long\def\@fxsnote#1[#2]#3#4{% + \@fxsetkeys{mode,status,lang,log,note,face,layout,targetlayout}{#2}% + \@@fxsnote{#1}{#3}{#4}} + +\newcommand*\@fxpreconfigure[1]{% + \ifthenelse{\equal{#1}{fixme}}{}{\@fxsetkeys{note}{author=#1}}} +\newcommand*\@fxnewnotemacro[3]{% + \expandafter\DeclareRobustCommand\csname #1#2\endcsname{% + \begingroup% + \@fxpreconfigure{#3}% + \@ifstar{% + \@ifnextchar[%] + {\@fxsnote{#2}}{\@@fxsnote{#2}}}{% + \@ifnextchar[%] + {\@fxnote{#2}}{\@@fxnote{#2}}}}} +\def\@@@@fxbeginenv@final#1{\comment} +\def\@@@@fxbeginenv@draft#1{\@fxenvlayout@begin{#1}{\cmdfx@note@author}} +\def\@fxendenv@final#1{\endcomment} +\def\@fxendenv@draft#1{\@fxenvlayout@end{#1}{\cmdfx@note@author}} + +\def\@@@fxbeginenv#1#2{% + \@fxpostconfigure\let\@fxpostconfigure\relax% + \@@fxnote{#1}{#2}% + \@@@@fxbeginenv{#1}} +\def\@@fxbeginenv#1#2{% + \@fxsetkeys{layout}{noinline}% + \@@@fxbeginenv{#1}{#2}} +\def\@fxbeginenv#1[#2]#3{% + \@fxsetkeys{mode,status,lang,log,note,face,layout,envlayout}{#2,noinline}% + \@@@fxbeginenv{#1}{#3}} + +\long\def\@@@fxbeginsenv#1#2#3{% + \@fxpostconfigure\let\@fxpostconfigure\relax% + \@@fxsnote{#1}{#2}{#3}% + \@@@@fxbeginenv{#1}} +\long\def\@@fxbeginsenv#1#2#3{% + \@fxsetkeys{layout}{noinline}% + \@@@fxbeginsenv{#1}{#2}{#3}} +\long\def\@fxbeginsenv#1[#2]#3#4{% + \@fxsetkeys{mode,status,lang,log,note,face,layout,envlayout,targetlayout}{% + #2,noinline}% + \@@@fxbeginsenv{#1}{#3}{#4}} + +\newcommand*\@fxnewnoteenvs[3]{% + \expandafter\def\csname #1#2\endcsname{% + \begingroup% + \let\@fxendgroup\relax% + \@fxpreconfigure{#3}% + \@ifnextchar[%] + {\@fxbeginenv{#2}}{\@@fxbeginenv{#2}}} + \expandafter\def\csname end#1#2\endcsname{% + \@fxendenv{#2}% + \endgroup}% + \expandafter\long\expandafter\def\csname #1#2*\endcsname{% + \begingroup% + \let\@fxendgroup\relax% + \@fxpreconfigure{#3}% + \@ifnextchar[%] + {\@fxbeginsenv{#2}}{\@@fxbeginsenv{#2}}} + \expandafter\def\csname end#1#2*\endcsname{% + \@fxendenv{#2}% + \endgroup}} + +\newcommand*\FXRegisterAuthor[3]{% + \@ifundefined{#1note}{}{% + \@fxpkgerror{command prefix '#1' already in use}{% + You have called \string\FXRegisterAuthor\space with a command prefix + already in use.\MessageBreak + Please choose another one.}}% + \@ifundefined{#2note}{}{% + \@fxpkgerror{environment prefix '#2' already in use}{% + You have called \string\FXRegisterAuthor\space with an environment + prefix already in use.\MessageBreak + Please choose another one.}}% + \@fxnewnotemacro{#1}{note}{#3}% + \@fxnewnotemacro{#1}{warning}{#3}% + \@fxnewnotemacro{#1}{error}{#3}% + \@fxnewnotemacro{#1}{fatal}{#3}% + \@fxnewnoteenvs{#2}{note}{#3}% + \@fxnewnoteenvs{#2}{warning}{#3}% + \@fxnewnoteenvs{#2}{error}{#3}% + \@fxnewnoteenvs{#2}{fatal}{#3}} + +\FXRegisterAuthor{fx}{anfx}{fixme} +\DeclareRobustCommand\fixme{% + \@fxpkgwarning{\string\fixme\space is deprecated;\MessageBreak + please use \string\fxfatal\space instead}% + \fxfatal} +\def\afixme{% + \@fxpkgwarning{The 'afixme' environment is deprecated;\MessageBreak + please use 'anfxfatal' instead}% + \anfxfatal} +\let\endafixme\endanfxfatal +\newcommand*\@fxlanguages{% + english,french,francais,spanish,italian,german,ngerman,danish,croatian} + +\newcommand\fxenglishnotename{Note} +\newcommand\fxenglishnotesname{Notes} +\newcommand\fxenglishwarningname{Warning} +\newcommand\fxenglishwarningsname{Warnings} +\newcommand\fxenglisherrorname{Error} +\newcommand\fxenglisherrorsname{Errors} +\newcommand\fxenglishfatalname{Fatal} +\newcommand\fxenglishfatalsname{Fatal errors} +\newcommand\englishlistfixmename{List of Corrections} + +\newcommand\fxfrenchnotename{Note} +\newcommand\fxfrenchnotesname{Notes} +\newcommand\fxfrenchwarningname{Attention} +\newcommand\fxfrenchwarningsname{Avertissements} +\newcommand\fxfrencherrorname{Erreur} +\newcommand\fxfrencherrorsname{Erreurs} +\newcommand\fxfrenchfatalname{Fatal} +\newcommand\fxfrenchfatalsname{Erreurs fatales} +\newcommand\frenchlistfixmename{Liste des Corrections} + +\newcommand\fxspanishnotename{Nota} +\newcommand\fxspanishnotesname{Notas} +\newcommand\fxspanishwarningname{Aviso} +\newcommand\fxspanishwarningsname{Avisos} +\newcommand\fxspanisherrorname{Error} +\newcommand\fxspanisherrorsname{Errores} +\newcommand\fxspanishfatalname{Fatal} +\newcommand\fxspanishfatalsname{Errores fatales} +\newcommand\spanishlistfixmename{Lista de Correcciones} + +\newcommand\fxitaliannotename{Nota} +\newcommand\fxitaliannotesname{Note} +\newcommand\fxitalianwarningname{Avviso} +\newcommand\fxitalianwarningsname{Avvisi} +\newcommand\fxitalianerrorname{Errore} +\newcommand\fxitalianerrorsname{Errori} +\newcommand\fxitalianfatalname{Fatale} +\newcommand\fxitalianfatalsname{Errori fatali} +\newcommand\italianlistfixmename{Corrigenda} + +\newcommand\fxgermannotename{Anm} +\newcommand\fxgermannotesname{Anmerkungen} +\newcommand\fxgermanwarningname{Warnung} +\newcommand\fxgermanwarningsname{Warnungen} +\newcommand\fxgermanerrorname{Fehler} +\newcommand\fxgermanerrorsname{Fehler} +\newcommand\fxgermanfatalname{Verh\"angnisvoll} +\newcommand\fxgermanfatalsname{Verh\"angnisvolle fehler} +\newcommand\germanlistfixmename{Verzeichnis der Korrekturen} + +\newcommand\fxdanishnotename{Note} +\newcommand\fxdanishnotesname{Noter} +\newcommand\fxdanishwarningname{Advarsel} +\newcommand\fxdanishwarningsname{Advarsler} +\newcommand\fxdanisherrorname{Fejl} +\newcommand\fxdanisherrorsname{Fejl} +\newcommand\fxdanishfatalname{D\o delige} +\newcommand\fxdanishfatalsname{Sk\ae bnesvangre fejl} +\newcommand\danishlistfixmename{Rettelser} + +\newcommand\fxcroatiannotename{Poruka} +\newcommand\fxcroatiannotesname{Poruke} +\newcommand\fxcroatianwarningname{Upozorenja} +\newcommand\fxcroatianwarningsname{Upozorenje} +\newcommand\fxcroatianerrorname{Gre\v ska} +\newcommand\fxcroatianerrorsname{Greske} +\newcommand\fxcroatianfatalname{Fatalan} +\newcommand\fxcroatianfatalsname{Kobne gre\v ske} +\newcommand\croatianlistfixmename{Popis korekcija} + +\@fxdefineboolkey{lang}{langtrack} +\def\@fxexpr{\@fxdefinechoicekey{lang}{defaultlang}[\@fxdefaultlang]} +\expandafter\@fxexpr\expandafter{\@fxlanguages}{} + +\def\@fxexpr{\@fxdefinechoicekey{lang}{lang}[\@fxlang]} +\expandafter\@fxexpr\expandafter{\@fxlanguages}{% + \ifthenelse{\equal{#1}{francais}}{\def\@fxlang{french}}{% + \ifthenelse{\equal{#1}{ngerman}}{\def\@fxlang{german}}{}}% + \@fxsetkeys{lang}{langtrack=false}} + +\@for\@fxlg:=\@fxlanguages\do{ + \def\@fxexprone{\@fxdefinevoidkey{lang}} + \edef\@fxexprtwo{{\@fxlg}{\noexpand\@fxsetkeys{lang}{lang=\@fxlg}}} + \expandafter\@fxexprone\@fxexprtwo} + +\newcommand*\@fxlistfixmename{\@nameuse{\@fxlang listfixmename}} +\newcommand*\fxnotename[1]{\@nameuse{fx\@fxlang#1name}} +\newcommand*\fxnotesname[1]{\@nameuse{fx\@fxlang#1sname}} + +\@fxdefinevoidkey{status}{final}{% + \let\@@@fxnote@early\@@@fxnote@early@final% + \let\@@@fxnote@late\@@@fxnote@late@final% + \let\@@@@fxbeginenv\@@@@fxbeginenv@final + \let\@fxendenv\@fxendenv@final% + \let\@fxtargetlayout\@fxtargetlayout@final% + \let\listoffixmes\lox@final} +\@fxdefinevoidkey{status}{draft}{% + \let\@@@fxnote@early\@@@fxnote@early@draft% + \let\@@@fxnote@late\@@@fxnote@late@draft% + \let\@@@@fxbeginenv\@@@@fxbeginenv@draft + \let\@fxendenv\@fxendenv@draft% + \let\@fxtargetlayout\@fxtargetlayout@draft% + \let\listoffixmes\lox@draft} +\@fxdefinechoicekey{status}{status}{final,draft}{\@fxsetkeys{status}{#1}} + +\newcommand*\FXProvidesTheme[1]{\ProvidesPackage{fxtheme#1}} +\newcommand*\fxusetheme[1]{\usepackage{fxtheme#1}} +\@fxdefinekey{theme}{theme}{\fxusetheme{#1}} +\@ifclassloaded{article}{% + \let\@lox@prtc\@lox@prtc@article% + \let\@lox@psttc\@lox@psttc@article}{% + \@ifclassloaded{report}{% + \let\@lox@prtc\@lox@prtc@report% + \let\@lox@psttc\@lox@psttc@report}{% + \@ifclassloaded{book}{% + \let\@lox@prtc\@lox@prtc@book% + \let\@lox@psttc\@lox@psttc@book}{% + \@ifclassloaded{scrartcl}{% +\let\@lox@prtc\@lox@prtc@scrartcl% +\let\@lox@psttc\@lox@psttc@scrartcl}{% +\@ifclassloaded{scrreprt}{% + \let\@lox@prtc\@lox@prtc@scrreprt% + \let\@lox@psttc\@lox@psttc@scrreprt}{% + \@ifclassloaded{scrbook}{% + \let\@lox@prtc\@lox@prtc@scrbook% + \let\@lox@psttc\@lox@psttc@scrbook}{% + \@ifclassloaded{amsbook}{% + \let\lox@draft\lox@draft@ams}{% + \@ifclassloaded{amsart}{% +\let\lox@draft\lox@draft@ams}{% +%% Use the article layout by default. +\let\@lox@prtc\@lox@prtc@article% +\let\@lox@psttc\@lox@psttc@article}}}}}}}} + +\ExecuteOptionsX[fx]<% + mode,status,lang,log,note,face,layout,envlayout,targetlayout>{% + mode=singleuser,% + status=final,% + lang=english,% + langtrack=false,% + defaultlang=english,% + nosilent,% + author=fixme,% + target=thepage,% + layout=margin,% + innerlayout={layout=inline},% + envlayout=plain,% + targetlayout=plain,% + inlineface=\bfseries,% + marginface=\footnotesize,% + envface=\bfseries,% + targetface=\itshape} +\ProcessOptionsX*[fx]<% + mode,status,lang,log,note,face,layout,envlayout,targetlayout> + +\newcommand*\fxsetup[1]{% + \@fxsetkeys{% + mode,status,lang,log,note,face,layout,envlayout,targetlayout,theme}{% + #1}} + \AtEndDocument{% - \GenericWarning{% - (FiXme)\@spaces\@spaces\@spaces\@spaces - }{% - Package FiXme Summary: Number of notes: \thefixmenotecount,\MessageBreak% - Number of warnings: \thefixmewarningcount,\MessageBreak% - Number of errors: \thefixmeerrorcount,\MessageBreak% - Number of fatal errors: \thefixmefatalcount,\MessageBreak% - Total: \thefixmecount\@gobble% - }} + \iffx@log@silent\else + \GenericWarning{% + (FiXme)\@spaces\@spaces}{% + FiXme Summary: Number of notes: \thefxnotecount,\MessageBreak% + Number of warnings: \thefxwarningcount,\MessageBreak% + Number of errors: \thefxerrorcount,\MessageBreak% + Number of fatal errors: \thefxfatalcount,\MessageBreak% + Total: \thefixmecount\@gobble}% + \fi} \endinput %% %% End of file `fixme.sty'. -- cgit v1.2.3