From b316efb7c226ec53ad21c090980220a4dacd15ff Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Sat, 3 Oct 2009 15:28:25 +0000
Subject: fixme 4.1 (30sep09)

git-svn-id: svn://tug.org/texlive/trunk@15612 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/source/latex/fixme/fixme.dtx | 620 +++++++++++++++++++++++--
 1 file changed, 576 insertions(+), 44 deletions(-)

(limited to 'Master/texmf-dist/source/latex/fixme/fixme.dtx')

diff --git a/Master/texmf-dist/source/latex/fixme/fixme.dtx b/Master/texmf-dist/source/latex/fixme/fixme.dtx
index d30152e715f..6b81d18c64b 100644
--- a/Master/texmf-dist/source/latex/fixme/fixme.dtx
+++ b/Master/texmf-dist/source/latex/fixme/fixme.dtx
@@ -8,7 +8,7 @@
 % Author:        Didier Verna <didier@lrde.epita.fr>
 % Maintainer:    Didier Verna <didier@lrde.epita.fr>
 % Created:       Thu Dec 10 16:04:01 1998
-% Last Revision: Thu Jul 16 19:55:00 2009
+% Last Revision: Wed Sep 30 18:01:02 2009
 %
 % This file is part of FiXme.
 %
@@ -70,7 +70,7 @@
 % \fi
 %
 % \catcode`\�=14
-% \CheckSum{1613}
+% \CheckSum{1833}
 % \GetFileInfo{fixme.inc}
 %% \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
@@ -481,22 +481,19 @@
 %   that, you can select any of those layouts anywhere you wish.
 % \end{enumerate}
 %
-% \newpage
 % \subsubsection{Available layouts}
 % \DescribeBooleanOption{inline}
 % \DescribeBooleanOption{margin}
-% \DescribeBooleanOption{marginclue}
 % \DescribeBooleanOption{footnote}
 % \DescribeBooleanOption{index}
 % \DescribeLayout[noprint]{inline}
 % \DescribeLayout[noprint]{margin}
-% \DescribeLayout[noprint]{marginclue}
 % \DescribeLayout[noprint]{footnote}
 % \DescribeLayout[noprint]{index}
 % Table \ref{table:layouts} lists the annotation layouts currently distributed
-% with \fx. By default, only the \texttt{margin} layout is active. While most
-% of these layouts should be self-explanatory, marginal clues deserve a bit
-% more explanation.
+% with \fx. By default, only the \texttt{margin} layout is active. Most of
+% these layouts should be self-explanatory, but some precisions are given
+% below.
 % \begin{table}
 %   \centering
 %   \DeleteShortVerb{\|}
@@ -509,12 +506,32 @@
 %     \texttt{footnote} & & Display note in a footnote\\
 %     \texttt{index} & & Display note in the index\\
 %     \texttt{marginclue} & & Display a marginal clue\\
+%     \texttt{marginnote} & \texttt{*} & Display non-floating note in the
+%     margin\\
+%     \texttt{pdfnote} & \texttt{*} & Display note as inline PDF comment\\
+%     \texttt{pdfmargin} & \texttt{*} & Display note as marginal PDF
+%     comment\\
+%     \texttt{pdfsignote} & \texttt{*} & Display signed note ala
+%     \texttt{pdfnote}\\
+%     \texttt{pdfsigmargin} & \texttt{*} & Display signed note ala
+%     \texttt{pdfmargin}\\
+%     \texttt{pdfcnote} & \texttt{*} & Display colored note ala
+%     \texttt{pdfnote}\\
+%     \texttt{pdfcmargin} & \texttt{*} & Display colored note ala
+%     \texttt{pdfmargin}\\
+%     \texttt{pdfcsignote} & \texttt{*} & Display colored note ala
+%     \texttt{pdfcsignote}\\
+%     \texttt{pdfcsigmargin} & \texttt{*} & Display colored note ala
+%     \texttt{pdfsigmargin}\\
 %     \hline
 %   \end{tabular}
 %   \MakeShortVerb{\|}
 %   \caption{Available annotation layouts}
 %   \label{table:layouts}
 % \end{table}
+% \paragraph{\texttt{marginclue}}
+% \DescribeBooleanOption{marginclue}
+% \DescribeLayout[noprint]{marginclue}
 % If your preferred layout is \texttt{inline} or say, \texttt{footnote},it
 % might be somewhat difficult to localize the annotation on the page,
 % especially its vertical position. That's where marginal clues come into
@@ -527,6 +544,51 @@
 % you try to activate both, only the most recently activated one will be
 % enabled (and you'll get a notice in the log file and on the terminal).
 %
+% \paragraph{\texttt{marginnote}}
+% \DescribeBooleanOption{marginnote}
+% \DescribeLayout[noprint]{marginnote}
+% The \texttt{marginnote} layout is an alternate (external) way to display
+% annotations in the margin, using the eponymous package. Contrary to \LaTeX's
+% standard marginal paragraphs, the ones issued by \texttt{marginnote} are
+% constructed in a non-floating way. This might be an advantage in some
+% situations but \texttt{marginnote} also comes with some disadvantages of its
+% own. For more information, please refer to \texttt{marginnote}'s
+% documentation, and also read the next section. Also, note that it is not
+% currently possible to pass options to the \cs{marginnote} command through
+% this layout.
+%
+% \paragraph{PDF comments}
+% \DescribeBooleanOption{pdfnote}
+% \DescribeLayout[noprint]{pdfnote}
+% \DescribeBooleanOption{pdfmargin}
+% \DescribeLayout[noprint]{pdfmargin}
+% \DescribeBooleanOption{pdfsignote}
+% \DescribeLayout[noprint]{pdfsignote}
+% \DescribeBooleanOption{pdfsigmargin}
+% \DescribeLayout[noprint]{pdfsigmargin}
+% \DescribeBooleanOption{pdfcnote}
+% \DescribeLayout[noprint]{pdfcnote}
+% \DescribeBooleanOption{pdfcmargin}
+% \DescribeLayout[noprint]{pdfcmargin}
+% \DescribeBooleanOption{pdfcsignote}
+% \DescribeLayout[noprint]{pdfcsignote}
+% \DescribeBooleanOption{pdfcsigmargin}
+% \DescribeLayout[noprint]{pdfcsigmargin}
+% The PDF format comes with a concept of \emph{comment}, which \fx can use to
+% display its own annotations. Support for PDF comments varies across PDF
+% viewers. Acrobat Reader is usually considered a reference, and MacOS X's
+% Preview supports them reasonably well. The \texttt{pdfnote} and
+% \texttt{pdfmargin} layouts use the \texttt{pdfcomment} package to display
+% annotations as PDF inline or marginal comments.
+%
+% The \texttt{sig} versions additionally display the author's tag (see
+% \sectionref{sec:manual:modes}) as a signature instead of as a prefix.
+%
+% The versions with a \texttt{c} in their name (as in \textbf{c}olor) use one
+% of four different colors named \texttt{fx}\meta{level} (according to the
+% annotation's importance level). They also avoid printing the annotation's
+% level since this information is already conveyed by the color.
+%
 % \subsubsection{Inner layout}
 % There might be various reasons for you to change the layout locally for one
 % particular annotation: creating a floating one is an example, see also
@@ -543,7 +605,9 @@
 % provides an option named \texttt{innerlayout} that allows you to specify an
 % alternative layout setting to use when \TeX{} is in \emph{inner} mode. In
 % addition to that, \fx automatically disables the \texttt{margin} and
-% \texttt{marginclue} layouts.
+% \texttt{marginclue} layouts. If you really want to use marginal paragraphs
+% in inner mode, a good idea is then to set your inner layout to
+% \texttt{marginnote} (see the previous section).
 %
 % Using \texttt{innerlayout} is not as trivial as it may seem: it
 % \emph{really} is an alternative layout configuration, and as such, you can
@@ -573,6 +637,12 @@
 %   What would happen if you didn't provide the \texttt{innerlayout} option?
 % \end{itemize}
 %
+% One final remark on the \texttt{innerlayout} option: this option is not
+% processed immediately when you specify it, but instead, its value is stored
+% and used only when needed. As a result, if you plan to use an external
+% layout in inner mode (typically, \texttt{marginnote})~, you need to load it
+% explicitely in the preamble first. Use \cs{fxloadlayouts} for that.
+%
 % \subsubsection{Other common layout
 %   problems\label{sec:manual:othercommonproblems}}
 % This section describes some other common problems that people have
@@ -1054,6 +1124,13 @@
 % \FXRegisterAuthor{fx}{anfx}{fixme}
 % \end{verbatim}
 %
+% \textbf{Warning!} \meta{cmdprefix} and \meta{envprefix} need to be
+% different, or you will get very strange errors. The technical reason is that
+% in \LaTeX, an environment named \texttt{foo} is defined in terms of two
+% commands: \cs{foo} and \cs{endfoo} (yes, this is silly; the first one should
+% really be \cs{beginfoo}). As a consequence, if you use the same prefix, you
+% will get a name clash between the annotation commands and environments.
+%
 % \paragraph{Fun with the \texttt{author} option}
 % Some precisions about the author option are in order here. When a new
 % author is registered with \fx, the generated commands and environments
@@ -1232,7 +1309,7 @@
 %
 % \paragraph{Registering late layouts}
 % \begin{sloppypar}
-%   \DescribeMacro{\FXRegisterLayout}\oarg{boolfunc}\marg{name}\marg{macro}\\
+%   \DescribeMacro{\FXRegisterLayout}\oarg{mutex}\marg{name}\marg{macro}\\
 %   In order to register a late annotation layout with \fx, use the command
 %   \cs{FXRegisterLayout}. This macro has two mandatory arguments: the layout
 %   \meta{name} (at least 3 characters long) and the associated layout
@@ -1242,12 +1319,17 @@
 % \begin{verbatim}
 % \FXRegisterLayout{inline}{\FXLayoutInline}
 % \end{verbatim}
-% The first (optional) argument may provide code that will be executed when
-% the layout is activated (it is used for instance to implement mutual
-% exclusion between the \texttt{margin} and \texttt{marginclue} layouts. Once
-% registered, the new layout gets a boolean option \meta{name} and is also
-% recognized by the \texttt{layout} and \texttt{morelayout} options, as well
-% as by the \cs{fxuselayouts} command as \meta{name}.
+% Once registered, the new layout gets a boolean option \meta{name} and is
+% also recognized by the \texttt{layout} and \texttt{morelayout} options, as
+% well as by the \cs{fxuselayouts} command as \meta{name}.
+%
+% The first (optional) argument \meta{mutex} is a comma-separated list of
+% other layout names that should be in mutual exclusion with the layout we are
+% registering (for example, the \texttt{margin} and \texttt{marginclue}
+% layouts are in mutual exclusion). Note that mutual exclusion between two
+% layouts need only be registered once. In other words, a previsouly
+% registered layout will automatically be made aware of subsequent mutex
+% declarations.
 %
 % \paragraph{Registering early layouts}
 % \DescribeMacro{\FXRegisterLayout*}\oarg{boolfunc}\marg{name}\marg{macro}\\
@@ -1406,6 +1488,11 @@
 %
 % \section{History\label{sec:manual:history}}
 % \begin{itemize}
+% \item[v4.1] 8 new PDF-specific annotation layouts.\\
+%   New annotation layout: \texttt{marginnote}, suggested by S�bastien
+%   Mengin.\\
+%   Better mechanism for handling layout mutual exclusion.\\
+%   Fix bug in inner layout processing.
 % \item[v4.0] Support for collaborative annotations, suggested by Michael
 %   Kubovy.\\
 %   Support for ``targeted'' notes and environments (highlighting a portion of
@@ -1478,7 +1565,7 @@
 %    \begin{macrocode}
 %<fixme>\NeedsTeXFormat{LaTeX2e}
 %<*header>
-\ProvidesPackage{fixme}[2009/09/21 v4.0 Insert fixme notes in your documents]
+\ProvidesPackage{fixme}[2009/09/30 v4.1 Insert fixme notes in your documents]
 
 %</header>
 %    \end{macrocode}
@@ -1522,7 +1609,24 @@
 
 %    \end{macrocode}
 % \end{macro}
-%
+% \begin{macro}{\@fxaddtolist}
+%   \marg{list}\marg{elt}\\
+%   Add \meta{elt} at the end of \meta{list}. We should check for duplicates,
+%   but this is not currently done.
+%    \begin{macrocode}
+\newcommand*\@fxaddtolist[2]{%
+  \expandafter\ifx\csname #1\endcsname\relax%
+    \expandafter\def\csname #1\endcsname{#2}%
+  \else%
+    \expandafter\ifx\csname #1\endcsname\empty%
+      \expandafter\g@addto@macro\csname #1\endcsname{#2}%
+    \else%
+      \expandafter\g@addto@macro\csname #1\endcsname{,#2}%
+    \fi%
+  \fi}
+
+%    \end{macrocode}
+% \end{macro}
 % \subsubsection{\texttt{xkeyval} related}
 % \begin{macro}{\@fxkeyifundefined}
 %   \marg{families}\marg{keys}\marg{then}\marg{else}
@@ -1889,25 +1993,53 @@
 %   \marg{name}\oarg{release information}
 %    \begin{macrocode}
 \newcommand*\FXProvidesLayout[1]{\ProvidesPackage{fxlayout#1}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fxrecordlayoutmutex}
+%   \marg{layout}\marg{layouts}\\
+%   Record mutual exclusion between \meta{layout} and the comma-separated list
+%   of \meta{layouts}. For each \meta{layout}, the mutual exclusion list is
+%   stored in \cs{@fxlayout@}\meta{layout}\texttt{@mutex}.
+%    \begin{macrocode}
+\newcommand*\@fxrecordlayoutmutex[2]{%
+  \edef\@fxlts{\zap@space#2 \@empty}%
+  \def\@fxexpr{\@fxaddtolist{@fxlayout@#1@mutex}}%
+  \expandafter\@fxexpr\expandafter{\@fxlts}%
+  \@for\@fxlt:=\@fxlts\do{\@fxaddtolist{@fxlayout@\@fxlt @mutex}{#1}}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fxhandlelayoutmutex}
+%   \marg{layout}\\
+%   Handle \meta{layout}'s mutual exclusion list.
+%    \begin{macrocode}
+\newcommand*\@fxhandlelayoutmutex[1]{%
+  \ifthenelse{\boolean{fx@layout@#1}}{%
+    \def\@fxexpr{\@for\@fxlt:=}%
+    \expandafter\@fxexpr\csname @fxlayout@#1@mutex\endcsname\do{%
+      \@ifundefined{iffx@layout@\@fxlt}{}{%
+        \ifthenelse{\boolean{fx@layout@\@fxlt}}{%
+          \@fxpkgwarning{%
+            #1 layout requested;\MessageBreak
+            turning \@fxlt\space layout off}%
+          \@nameuse{fx@layout@\@fxlt}{false}}{}}}}{}}
+
 %    \end{macrocode}
 % \end{macro}
 % \begin{macro}{\@FXRegisterLayout}
-%   \marg{when}\oarg{boolfunc}\marg{name}\marg{funcname}\\
+%   \marg{when}\oarg{mutex}\marg{name}\marg{funcname}\\
 %   Register a new layout with \fx. This currently involves creating the
 %   boolean layout option with an optional function argument, constructing the
 %   translation macro to call the actual layout macro, and updating the
 %   appropriate layout list (early or late). The translation macro can't be
-%   \cs{let} to the real one, because themes might want to redefine latter.
+%   \cs{let} to the real one, because themes might want to redefine latter. An
+%   optional mutual exclusion list may also be given.
 %    \begin{macrocode}
 \def\@FXRegisterLayout#1[#2]#3#4{%
   \@fxkeyifundefined{layout}{#3}{%
-    \@fxdefineboolkey[#2]{layout}{#3}%
+    \@fxrecordlayoutmutex{#3}{#2}%
+    \@fxdefineboolkey[\@fxhandlelayoutmutex{#3}]{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}{%
+    \@fxaddtolist{@fx#1layouts}{#3}}{%
     \@fxpkgerror{layout '#3' already registered}{%
       You have called \string\FXRegisterLayout\space with a name already
       in use.\MessageBreak
@@ -1955,13 +2087,7 @@
 %   \begin{booleanoption}{margin}
 %     \mbox{}
 %    \begin{macrocode}
-\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}
+\FXRegisterLayout*{margin}{\FXLayoutMargin}
 %    \end{macrocode}
 % \end{booleanoption}
 % \end{macro}
@@ -1982,13 +2108,7 @@
 %   \begin{booleanoption}{marginclue}
 %     \mbox{}
 %    \begin{macrocode}
-\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}
+\FXRegisterLayout*[margin]{marginclue}{\FXLayoutMarginClue}
 %    \end{macrocode}
 % \end{booleanoption}
 % \end{macro}
@@ -2131,6 +2251,14 @@
 % \end{macro}
 %
 % \subsubsection{Layout control}
+% \begin{macro}{\@fxsetlayoutkeys}
+%   \marg{keys}
+%   This macro would probably be overkill if we didn't need to
+%   \cs{expandafter} it at some point (See \cs{@fxhandleinnermode}).
+%    \begin{macrocode}
+\newcommand\@fxsetlayoutkeys{\@fxsetkeys{layout}}
+%    \end{macrocode}
+% \end{macro}
 % \begin{macro}{\@fxparselayout}
 %   Utility macro to detect the \texttt{no}\meta{name} form of layout options.
 %   The drawback of this technique is that layout options must be at least 3
@@ -2579,7 +2707,7 @@
 	\@fxpkginfo{%
 	  inner mode detected;\MessageBreak
 	  turning marginclue layout form off}}{}}%
-    \expandafter\fxuselayouts\expandafter{%
+    \expandafter\@fxsetlayoutkeys\expandafter{%
       \cmdfx@layout@innerlayout,nomargin,nomarginclue}%
   \fi}
 %    \end{macrocode}
@@ -3513,6 +3641,410 @@
 %
 % \appendix
 % \section{External Layouts}
+% \subsection{Annotation layouts}
+% \subsubsection{The \texttt{marginnote} layout}
+% \begin{layout}{marginnote}
+%   \mbox{}
+%    \begin{macrocode}
+%<*fxlayoutmarginnote>
+\NeedsTeXFormat{LaTeX2e}
+\FXProvidesLayout{marginnote}
+
+\RequirePackage{marginnote}
+
+%    \end{macrocode}
+% \begin{macro}{\FXLayoutMarginNote}
+%   \marg{type}\marg{note}\marg{author}
+%    \begin{macrocode}
+\newcommand*\FXLayoutMarginNote[3]{%
+  \marginnote[%
+  \raggedleft\@fxuseface{margin}\ignorespaces#3 \fxnotename{#1}: #2]{%
+    \raggedright\@fxuseface{margin}\ignorespaces#3 \fxnotename{#1}: #2}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fxlayout@marginnote}
+%   \begin{booleanoption}{marginnote}
+%    \begin{macrocode}
+\FXRegisterLayout*[margin,marginclue]{marginnote}{\FXLayoutMarginNote}
+%</fxlayoutmarginnote>
+%    \end{macrocode}
+% \end{booleanoption}
+% \end{macro}
+% \end{layout}
+%
+% \subsubsection{The \texttt{pdfnote} layout}
+% \begin{layout}{pdfnote}
+%   \mbox{}
+%    \begin{macrocode}
+%<*fxlayoutpdfnote>
+\NeedsTeXFormat{LaTeX2e}
+\FXProvidesLayout{pdfnote}
+
+\RequirePackage{pdfcomment}
+
+%    \end{macrocode}
+% \begin{macro}{\FXLayoutPDFNote}
+%   \marg{type}\marg{note}\marg{author}
+%    \begin{macrocode}
+\newcommand*\FXLayoutPDFNote[3]{%
+  \pdfcomment[author=#3]{\ignorespaces#3 \fxnotename{#1}: #2}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fxlayout@pdfnote}
+%   \begin{booleanoption}{pdfnote}
+%    \begin{macrocode}
+\FXRegisterLayout{pdfnote}{\FXLayoutPDFNote}
+%</fxlayoutpdfnote>
+%    \end{macrocode}
+% \end{booleanoption}
+% \end{macro}
+% \end{layout}
+%
+% \subsubsection{The \texttt{pdfmargin} layout}
+% \begin{layout}{pdfmargin}
+%   \mbox{}
+%    \begin{macrocode}
+%<*fxlayoutpdfmargin>
+\NeedsTeXFormat{LaTeX2e}
+\FXProvidesLayout{pdfmargin}
+
+\RequirePackage{pdfcomment}
+
+%    \end{macrocode}
+% \begin{macro}{\FXLayoutPDFMargin}
+%   \marg{type}\marg{note}\marg{author}
+%    \begin{macrocode}
+\newcommand*\FXLayoutPDFMargin[3]{%
+  \pdfmargincomment[author=#3]{\ignorespaces#3 \fxnotename{#1}: #2}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fxlayout@pdfmargin}
+%   \begin{booleanoption}{pdfmargin}
+%    \begin{macrocode}
+\FXRegisterLayout*[margin,marginclue,marginnote]{pdfmargin}{%
+  \FXLayoutPDFMargin}
+%</fxlayoutpdfmargin>
+%    \end{macrocode}
+% \end{booleanoption}
+% \end{macro}
+% \end{layout}
+%
+% \subsubsection{The \texttt{pdfsignote} layout}
+% \begin{layout}{pdfsignote}
+%   \mbox{}
+%    \begin{macrocode}
+%<*fxlayoutpdfsignote>
+\NeedsTeXFormat{LaTeX2e}
+\FXProvidesLayout{pdfsignote}
+
+\RequirePackage{pdfcomment}
+
+%    \end{macrocode}
+% \begin{macro}{\@fxdosig}
+%   \marg{author}
+% \begin{macro}{\@fxsignature}
+%   Use a signature of the form ``-- sig'', unless author is empty.
+%    \begin{macrocode}
+\providecommand*\@fxdosig[1]{%
+  \ifthenelse{\equal{#1}{}}{\def\@fxsignature{}}{%
+    \def\@fxsignature{ -- {\@fxuseface{signature}#1}}}}
+
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\FXLayoutPDFSigNote}
+%   \marg{type}\marg{note}\marg{author}
+%    \begin{macrocode}
+\newcommand*\FXLayoutPDFSigNote[3]{%
+  \@fxdosig{#3}%
+  \pdfcomment[author=#3]{\fxnotename{#1}: #2\@fxsignature}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fxlayout@pdfsignote}
+%   \begin{booleanoption}{pdfsignote}
+%    \begin{macrocode}
+\FXRegisterLayout[pdfnote]{pdfsignote}{\FXLayoutPDFSigNote}
+%</fxlayoutpdfsignote>
+%    \end{macrocode}
+% \end{booleanoption}
+% \end{macro}
+% \end{layout}
+%
+% \subsubsection{The \texttt{pdfsigmargin} layout}
+% \begin{layout}{pdfsigmargin}
+%   \mbox{}
+%    \begin{macrocode}
+%<*fxlayoutpdfsigmargin>
+\NeedsTeXFormat{LaTeX2e}
+\FXProvidesLayout{pdfsigmargin}
+
+\RequirePackage{pdfcomment}
+
+%    \end{macrocode}
+% \begin{macro}{\@fxdosig}
+%   \marg{author}
+% \begin{macro}{\@fxsignature}
+%   Use a signature of the form ``-- sig'', unless author is empty.
+%    \begin{macrocode}
+\providecommand*\@fxdosig[1]{%
+  \ifthenelse{\equal{#1}{}}{\def\@fxsignature{}}{%
+    \def\@fxsignature{ -- {\@fxuseface{signature}#1}}}}
+
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\FXLayoutPDFSigMargin}
+%   \marg{type}\marg{note}\marg{author}
+%    \begin{macrocode}
+\newcommand*\FXLayoutPDFSigMargin[3]{%
+  \@fxdosig{#3}%
+  \pdfmargincomment[author=#3]{\fxnotename{#1}: #2\@fxsignature}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fxlayout@pdfsigmargin}
+%   \begin{booleanoption}{pdfsigmargin}
+%    \begin{macrocode}
+\FXRegisterLayout*[margin,marginclue,marginnote,pdfmargin]{pdfsigmargin}{%
+  \FXLayoutPDFSigMargin}
+%</fxlayoutpdfsigmargin>
+%    \end{macrocode}
+% \end{booleanoption}
+% \end{macro}
+% \end{layout}
+%
+% \subsubsection{The \texttt{pdfcnote} layout}
+% \begin{layout}{pdfcnote}
+%   \mbox{}
+%    \begin{macrocode}
+%<*fxlayoutpdfcnote>
+\NeedsTeXFormat{LaTeX2e}
+\FXProvidesLayout{pdfcnote}
+
+\RequirePackage{pdfcomment}
+\RequirePackage{xcolor}
+
+%    \end{macrocode}
+% \begin{color}{fxnote}
+% \begin{color}{fxwarning}
+% \begin{color}{fxerror}
+% \begin{color}{fxfatal}
+%   Environments use the same colors as the notes themselves because
+%   their contents really is a longer note.
+%    \begin{macrocode}
+\definecolor{fxnote}{rgb}{0.0000,0.6000,0.0000}
+\definecolor{fxwarning}{rgb}{1.0000,0.5490,0.0000}
+\definecolor{fxerror}{rgb}{1.0000,0.2706,0.0000}
+\definecolor{fxfatal}{rgb}{1.0000,0.0000,0.0000}
+
+%    \end{macrocode}
+% \end{color}
+% \end{color}
+% \end{color}
+% \end{color}
+% \begin{macro}{\@fxdocolon}
+%   \marg{author}\\
+%   Add a colon after the author tag, unless empty.
+%    \begin{macrocode}
+\providecommand*\@fxdocolon[1]{%
+  \ifthenelse{\equal{#1}{}}{\def\@fxcolon{}}{\def\@fxcolon{: }}}
+
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\FXLayoutPDFCNote}
+%   \marg{type}\marg{note}\marg{author}
+%    \begin{macrocode}
+\newcommand*\FXLayoutPDFCNote[3]{%
+  \@fxdocolon{#3}%
+  \pdfcomment[author=#3,color=fx#1]{\ignorespaces#3\@fxcolon#2}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fxlayout@pdfcnote}
+%   \begin{booleanoption}{pdfcnote}
+%    \begin{macrocode}
+\FXRegisterLayout[pdfnote]{pdfcnote}{\FXLayoutPDFCNote}
+%</fxlayoutpdfcnote>
+%    \end{macrocode}
+% \end{booleanoption}
+% \end{macro}
+% \end{layout}
+%
+% \subsubsection{The \texttt{pdfcmargin} layout}
+% \begin{layout}{pdfcmargin}
+%   \mbox{}
+%    \begin{macrocode}
+%<*fxlayoutpdfcmargin>
+\NeedsTeXFormat{LaTeX2e}
+\FXProvidesLayout{pdfcmargin}
+
+\RequirePackage{pdfcomment}
+\RequirePackage{xcolor}
+
+%    \end{macrocode}
+% \begin{color}{fxnote}
+% \begin{color}{fxwarning}
+% \begin{color}{fxerror}
+% \begin{color}{fxfatal}
+%   Environments use the same colors as the notes themselves because
+%   their contents really is a longer note.
+%    \begin{macrocode}
+\definecolor{fxnote}{rgb}{0.0000,0.6000,0.0000}
+\definecolor{fxwarning}{rgb}{1.0000,0.5490,0.0000}
+\definecolor{fxerror}{rgb}{1.0000,0.2706,0.0000}
+\definecolor{fxfatal}{rgb}{1.0000,0.0000,0.0000}
+
+%    \end{macrocode}
+% \end{color}
+% \end{color}
+% \end{color}
+% \end{color}
+% \begin{macro}{\@fxdocolon}
+%   \marg{author}\\
+%   Add a colon after the author tag, unless empty.
+%    \begin{macrocode}
+\providecommand*\@fxdocolon[1]{%
+  \ifthenelse{\equal{#1}{}}{\def\@fxcolon{}}{\def\@fxcolon{: }}}
+
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\FXLayoutPDFCMargin}
+%   \marg{type}\marg{note}\marg{author}
+%    \begin{macrocode}
+\newcommand*\FXLayoutPDFCMargin[3]{%
+  \@fxdocolon{#3}%
+  \pdfmargincomment[author=#3,color=fx#1]{\ignorespaces#3\@fxcolon#2}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fxlayout@pdfcmargin}
+%   \begin{booleanoption}{pdfcmargin}
+%    \begin{macrocode}
+\FXRegisterLayout*[margin,marginclue,marginnote,pdfmargin]{pdfcmargin}{%
+  \FXLayoutPDFCMargin}
+%</fxlayoutpdfcmargin>
+%    \end{macrocode}
+% \end{booleanoption}
+% \end{macro}
+% \end{layout}
+%
+% \subsubsection{The \texttt{pdfcsignote} layout}
+% \begin{layout}{pdfcsignote}
+%   \mbox{}
+%    \begin{macrocode}
+%<*fxlayoutpdfcsignote>
+\NeedsTeXFormat{LaTeX2e}
+\FXProvidesLayout{pdfcsignote}
+
+\RequirePackage{pdfcomment}
+\RequirePackage{xcolor}
+
+%    \end{macrocode}
+% \begin{color}{fxnote}
+% \begin{color}{fxwarning}
+% \begin{color}{fxerror}
+% \begin{color}{fxfatal}
+%   Environments use the same colors as the notes themselves because
+%   their contents really is a longer note.
+%    \begin{macrocode}
+\definecolor{fxnote}{rgb}{0.0000,0.6000,0.0000}
+\definecolor{fxwarning}{rgb}{1.0000,0.5490,0.0000}
+\definecolor{fxerror}{rgb}{1.0000,0.2706,0.0000}
+\definecolor{fxfatal}{rgb}{1.0000,0.0000,0.0000}
+
+%    \end{macrocode}
+% \end{color}
+% \end{color}
+% \end{color}
+% \end{color}
+% \begin{macro}{\@fxdosig}
+%   \marg{author}
+% \begin{macro}{\@fxsignature}
+%   Use a signature of the form ``-- sig'', unless author is empty.
+%    \begin{macrocode}
+\providecommand*\@fxdosig[1]{%
+  \ifthenelse{\equal{#1}{}}{\def\@fxsignature{}}{%
+    \def\@fxsignature{ -- {\@fxuseface{signature}#1}}}}
+
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\FXLayoutPDFCSigNote}
+%   \marg{type}\marg{note}\marg{author}
+%    \begin{macrocode}
+\newcommand*\FXLayoutPDFCSigNote[3]{%
+  \@fxdosig{#3}%
+  \pdfcomment[author=#3,color=fx#1]{#2\@fxsignature}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fxlayout@pdfcsignote}
+%   \begin{booleanoption}{pdfcsignote}
+%    \begin{macrocode}
+\FXRegisterLayout[pdfnote,pdfcnote]{pdfcsignote}{\FXLayoutPDFCSigNote}
+%</fxlayoutpdfcsignote>
+%    \end{macrocode}
+% \end{booleanoption}
+% \end{macro}
+% \end{layout}
+%
+% \subsubsection{The \texttt{pdfcsigmargin} layout}
+% \begin{layout}{pdfcsigmargin}
+%   \mbox{}
+%    \begin{macrocode}
+%<*fxlayoutpdfcsigmargin>
+\NeedsTeXFormat{LaTeX2e}
+\FXProvidesLayout{pdfcsigmargin}
+
+\RequirePackage{pdfcomment}
+\RequirePackage{xcolor}
+
+%    \end{macrocode}
+% \begin{color}{fxnote}
+% \begin{color}{fxwarning}
+% \begin{color}{fxerror}
+% \begin{color}{fxfatal}
+%   Environments use the same colors as the notes themselves because
+%   their contents really is a longer note.
+%    \begin{macrocode}
+\definecolor{fxnote}{rgb}{0.0000,0.6000,0.0000}
+\definecolor{fxwarning}{rgb}{1.0000,0.5490,0.0000}
+\definecolor{fxerror}{rgb}{1.0000,0.2706,0.0000}
+\definecolor{fxfatal}{rgb}{1.0000,0.0000,0.0000}
+
+%    \end{macrocode}
+% \end{color}
+% \end{color}
+% \end{color}
+% \end{color}
+% \begin{macro}{\@fxdosig}
+%   \marg{author}
+% \begin{macro}{\@fxsignature}
+%   Use a signature of the form ``-- sig'', unless author is empty.
+%    \begin{macrocode}
+\providecommand*\@fxdosig[1]{%
+  \ifthenelse{\equal{#1}{}}{\def\@fxsignature{}}{%
+    \def\@fxsignature{ -- {\@fxuseface{signature}#1}}}}
+
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\FXLayoutPDFCSigMargin}
+%   \marg{type}\marg{note}\marg{author}
+%    \begin{macrocode}
+\newcommand*\FXLayoutPDFCSigMargin[3]{%
+  \@fxdosig{#3}%
+  \pdfmargincomment[author=#3,color=fx#1]{#2\@fxsignature}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fxlayout@pdfcsigmargin}
+%   \begin{booleanoption}{pdfcsigmargin}
+%    \begin{macrocode}
+\FXRegisterLayout*[margin,marginclue,marginnote,pdfmargin,pdfsigmargin]{%
+  pdfcsigmargin}{%
+  \FXLayoutPDFCSigMargin}
+%</fxlayoutpdfcsigmargin>
+%    \end{macrocode}
+% \end{booleanoption}
+% \end{macro}
+% \end{layout}
+%
 % \subsection{Environment layouts}
 % \subsubsection{The \texttt{color} layout}
 % \begin{envlayout}{color}
@@ -3813,7 +4345,7 @@
 
 \renewcommand*\FXLayoutFootnote[3]{%
   \@fxdocolon{#3}%
-  \footnote{\color{fx#1}\ignorespaces#3\@fxcolon #2}}
+  \footnote{\color{fx#1}\ignorespaces#3\@fxcolon#2}}
 \renewcommand*\FXLayoutMargin[3]{%
   \@fxdocolon{#3}%
   \marginpar[%
@@ -3913,7 +4445,7 @@
 % \Finale
 %
 % ^^A Local variables:
-% ^^A eval: (doxitems "option" "counter" "lang" "face" "color")
-% ^^A eval: (doxitem "\\(env\\|target\\)?layout")
+% ^^A eval : (add-hook 'TeX-update-style-hook (lambda () (doxitems "option" "counter" "lang" "face" "color")) nil t)
+% ^^A eval: (add-hook 'TeX-update-style-hook (lambda () (doxitem "\\(env\\|target\\)?layout")) nil t)
 % ^^A End:
 % ^^A fixme.dtx ends here.
-- 
cgit v1.2.3

