summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-01-03 22:00:08 +0000
committerKarl Berry <karl@freefriends.org>2019-01-03 22:00:08 +0000
commitad60f0fc89a27a88fcfa2401037cfd1a44af9995 (patch)
treef78b4d439cb27b6d2652cabd523acb945175a1a3 /Master/texmf-dist
parent7abdb429e2ffcd91585c294fb8f11f95fadfabe2 (diff)
fixme (3jan19)
git-svn-id: svn://tug.org/texlive/trunk@49591 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/fixme/NEWS11
-rw-r--r--Master/texmf-dist/doc/latex/fixme/README.md6
-rw-r--r--Master/texmf-dist/doc/latex/fixme/THANKS15
-rw-r--r--Master/texmf-dist/doc/latex/fixme/fixme.el780
-rw-r--r--Master/texmf-dist/doc/latex/fixme/fixme.pdfbin380789 -> 394702 bytes
-rw-r--r--Master/texmf-dist/doc/latex/fixme/header.inc4
-rw-r--r--Master/texmf-dist/source/latex/fixme/fixme.dtx271
-rw-r--r--Master/texmf-dist/source/latex/fixme/fixme.ins4
-rw-r--r--Master/texmf-dist/tex/latex/fixme/fixme.sty24
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/env/fxenvlayoutcolor.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/env/fxenvlayoutcolorsig.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutmarginnote.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcmargin.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcnote.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcsigmargin.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcsignote.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfmargin.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfnote.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfsigmargin.sty9
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfsignote.sty9
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutchangebar.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutcolor.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutcolorcb.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/themes/fxthemecolor.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/themes/fxthemecolorsig.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fixme/themes/fxthemesignature.sty2
26 files changed, 967 insertions, 196 deletions
diff --git a/Master/texmf-dist/doc/latex/fixme/NEWS b/Master/texmf-dist/doc/latex/fixme/NEWS
index 20231635c0d..7e9c520dfc7 100644
--- a/Master/texmf-dist/doc/latex/fixme/NEWS
+++ b/Master/texmf-dist/doc/latex/fixme/NEWS
@@ -1,7 +1,7 @@
WHAT'S NEW IN FIXME
-Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
Author: Didier Verna <didier@didierverna.net>
@@ -16,6 +16,15 @@ distributions of LaTeX version 2005/12/01 or later.
FiXme consists of the files listed in the file `README.md'.
+* Version 4.5
+** Public interface for extending FiXme with new key/value options.
+** Revamp the AUCTeX support
+with help from Arash Esbati and Ikumi Keita.
+** Fix PDF signature layouts not working anymore
+reported by Soeren Wolfers.
+** Fix spurious space at the end of environments contents
+reported by Frank Mittelbach.
+
* Version 4.4
** Handle existing yet empty lox files properly
meaning, don't actually typeset an empty list of corrections.
diff --git a/Master/texmf-dist/doc/latex/fixme/README.md b/Master/texmf-dist/doc/latex/fixme/README.md
index d3f311ff694..9e6ea65248b 100644
--- a/Master/texmf-dist/doc/latex/fixme/README.md
+++ b/Master/texmf-dist/doc/latex/fixme/README.md
@@ -39,7 +39,7 @@ annotations, by offering a set of predefined note levels and layouts, the
possibility to register multiple authors, to reference annotations by listing
and indexing etc. FiXme is extensible, giving you the possibility to create
new layouts or even complete "themes", and also comes with support
-for [AUC-TeX](https://www.gnu.org/software/auctex/).
+for [AUCTeX](https://www.gnu.org/software/auctex/).
FiXme homepage: http://www.lrde.epita.fr/~didier/software/latex.php#fixme
@@ -70,5 +70,5 @@ following locations are suggested:
[TEXMF]/tex/latex/fixme/themes/fxtheme*.sty
[TEXMF]/doc/latex/fixme/fixme.[pdf|dvi]
-If you're an AUC-TeX user, you may also install the file `fixme.el` in a
-suitable AUC-TeX style directory.
+If you're an AUCTeX user, you may also install the file `fixme.el` in a
+suitable AUCTeX style directory.
diff --git a/Master/texmf-dist/doc/latex/fixme/THANKS b/Master/texmf-dist/doc/latex/fixme/THANKS
index e429e004465..efd61bb808d 100644
--- a/Master/texmf-dist/doc/latex/fixme/THANKS
+++ b/Master/texmf-dist/doc/latex/fixme/THANKS
@@ -1,7 +1,7 @@
THANK YOU!
-Copyright (C) 2007, 2009, 2013, 2017 Didier Verna
+Copyright (C) 2007, 2009, 2013, 2017, 2018 Didier Verna
Author: Didier Verna <didier@didierverna.net>
@@ -21,12 +21,13 @@ FiXme consists of the files listed in the file `README.md'.
** The following persons have contributed code, bug reports, localization,
** suggestions etc.:
-Kreuvf, Dirk Surmann, Victor Porton, Joseph Wright, Lars Madsen, Norman Gray,
-Sébastien Mengin, Michael Kubovy, Mark Edgington, Rasmus Villemoes, Philipp
-Stephani, Will Robertson, Jochen Wuttke, Jens Remus, Brian van den Broek,
-Stefan Mann, Marcel Maretic, Claude Lacoursière, Arnold Beckmann, Akim
-Demaille, Kim Rud Bille, Knut Lickert, Kasper B. Graversen, Augustín Martín,
-Ulf Jaenicke-Roessler, Riccardo Murri, Harald Harders.
+Soeren Wolfers, Frank Mittelbach, Ikumi Keita, Arash Esbati, Kreuvf, Dirk
+Surmann, Victor Porton, Joseph Wright, Lars Madsen, Norman Gray, Sébastien
+Mengin, Michael Kubovy, Mark Edgington, Rasmus Villemoes, Philipp Stephani,
+Will Robertson, Jochen Wuttke, Jens Remus, Brian van den Broek, Stefan Mann,
+Marcel Maretic, Claude Lacoursière, Arnold Beckmann, Akim Demaille, Kim Rud
+Bille, Knut Lickert, Kasper B. Graversen, Augustín Martín, Ulf
+Jaenicke-Roessler, Riccardo Murri, Harald Harders.
diff --git a/Master/texmf-dist/doc/latex/fixme/fixme.el b/Master/texmf-dist/doc/latex/fixme/fixme.el
index bcefb63a552..b140e878825 100644
--- a/Master/texmf-dist/doc/latex/fixme/fixme.el
+++ b/Master/texmf-dist/doc/latex/fixme/fixme.el
@@ -1,6 +1,6 @@
-;;; fixme.el --- AUC-TeX style file for FiXme
+;;; fixme.el --- AUCTeX style file for FiXme
-;; Copyright (C) 2000, 2002, 2004, 2006, 2009, 2017 Didier Verna
+;; Copyright (C) 2000, 2002, 2004, 2006, 2009, 2017, 2019 Didier Verna
;; Author: Didier Verna <didier@didierverna.net>
;; Keywords: tex abbrev data
@@ -21,128 +21,662 @@
;;; Code:
+
+;; ===========================================================================
+;; Utilities
+;; ===========================================================================
+
+(defun LaTeX-fixme-xkeyval-boolean-values (items)
+ "Create a sorted list of XKeyVal boolean values for ITEMS.
+Every item leads to two strings: \"item\" and \"noitem\"."
+ (sort (mapcan (lambda (item) `(,item ,(concat "no" item))) items)
+ #'string<))
+
+(defun LaTeX-fixme-xkeyval-boolean-option (item)
+ "Create an XKeyVal boolean option for ITEM.
+This creates a list of the form (\"ITEM\" (\"true\" \"false\"))."
+ `(,item ("true" "false")))
+
+(defun LaTeX-fixme-option< (option1 option2)
+ "Return t if the car of OPTION1 is STRING< to the car of OPTION2.
+This function is used as a predicate for sorting XKeyVal option
+lists."
+ (string< (car option1) (car option2)))
+
+(defun LaTeX-fixme-xkeyval-boolean-options (items)
+ "Create a sorted list of XKeyVal boolean options for ITEMS.
+Every item leads to two lists: (\"item\" (\"true\" \"false\"))
+and (\"noitem\" (\"true\" \"false\"))."
+ (sort (mapcar #'LaTeX-fixme-xkeyval-boolean-option
+ (LaTeX-fixme-xkeyval-boolean-values items))
+ #'LaTeX-fixme-option<))
+
+;; The two functions below steal AUCTeX's mechanism for reading key=value
+;; lists of options, only without the =value part. This is probably suboptimal
+;; because that part could still be entered manually (withtout, completion
+;; that is) although it's not supposed to, but it's simpler to do it this way.
+(defun LaTeX-fixme-read-key (optional key-list &optional prompt)
+ "Prompt for keys in KEY-LIST and return them.
+If OPTIONAL is non-nil, indicate in the prompt that we are
+reading an optional argument. KEY-LIST is a list of strings.
+Use PROMPT as the prompt string."
+ (multi-prompt-key-value
+ (TeX-argument-prompt optional prompt "Keys")
+ (if (symbolp key-list)
+ (eval key-list)
+ (mapcar #'list key-list))))
+
+(defun LaTeX-fixme-arg-key (optional key-list &optional prompt)
+ "Prompt for keys in KEY-LIST and insert them as a TeX macro argument.
+If OPTIONAL is non-nil, insert as an optional argument. KEY-LIST
+is a list of strings. Use PROMPT as the prompt string."
+ (TeX-argument-insert (LaTeX-fixme-read-key optional key-list prompt)
+ optional))
+
+(defun LaTeX-fixme-file-feature (kind)
+ "Return the KIND of feature name provided by the current file, or nil.
+KIND may be one of \"layout\", \"envlout\", \"targetlayout\" or
+\"theme\", in order to attempt matching the file name with
+\"fxKIND<feature>.sty\"."
+ (let ((file-name (buffer-file-name)))
+ (when file-name
+ (setq file-name (file-name-nondirectory file-name))
+ (when (string-match (concat (regexp-quote (concat "fx" kind))
+ "\\(.+\\)\\.sty")
+ file-name)
+ (match-string 1 file-name)))))
+
+(defun maybe-upcase-initials (string-or-nil)
+ "Upcase STRING-OR-NIL initials if it is a string, or return \"\"."
+ (if string-or-nil (upcase-initials string-or-nil) ""))
+
+
+
+;; ===========================================================================
+;; Options
+;; ===========================================================================
+
+;; Status processing
+;; -----------------
+(defvar LaTeX-fixme-status-options
+ '(("draft")
+ ("final")
+ ("status" ("draft" "final")))
+ "FiXme document status options.")
+
+
+;; Layouts
+;; -------
+(defvar LaTeX-fixme-builtin-layouts
+ '("footnote" "index" "inline" "margin" "marginclue")
+ "FiXme builtin layouts.")
+
+(defvar LaTeX-fixme-builtin-layout-boolean-values
+ (LaTeX-fixme-xkeyval-boolean-values LaTeX-fixme-builtin-layouts)
+ "FiXme built-in layout boolean values.")
+
+(defvar LaTeX-fixme-builtin-layout-boolean-options
+ (LaTeX-fixme-xkeyval-boolean-options LaTeX-fixme-builtin-layouts)
+ "FiXme built-in layout boolean options.")
+
+(defvar LaTeX-fixme-external-layouts
+ '("marginnote"
+ "pdfcmargin" "pdfcnote" "pdfcsigmargin" "pdfcsignote"
+ "pdfmargin" "pdfnote" "pdfsigmargin" "pdfsignote")
+ "FiXme external layouts.")
+
+(defvar LaTeX-fixme-external-layout-boolean-values
+ (LaTeX-fixme-xkeyval-boolean-values LaTeX-fixme-external-layouts)
+ "FiXme external layout boolean values.")
+
+(defvar LaTeX-fixme-external-layout-boolean-options
+ (LaTeX-fixme-xkeyval-boolean-options LaTeX-fixme-external-layouts)
+ "FiXme external layout boolean options.")
+
+(defvar LaTeX-fixme-layouts
+ (sort (copy-sequence `(,@LaTeX-fixme-builtin-layouts
+ ,@LaTeX-fixme-external-layouts))
+ #'string<)
+ "FiXme layouts.")
+
+(defvar LaTeX-fixme-layout-boolean-values
+ (LaTeX-fixme-xkeyval-boolean-values LaTeX-fixme-layouts)
+ "FiXme layout boolean values.")
+
+(defvar LaTeX-fixme-layout-boolean-options
+ (LaTeX-fixme-xkeyval-boolean-options LaTeX-fixme-layouts)
+ "FiXme layout boolean options.")
+
+;; #### FIXME: this is not totally correct. The layout, morelayout and
+;; innerlayout options accept either a single value, or a comma-separated list
+;; of such.
+(defvar LaTeX-fixme-layout-options
+ (sort (copy-sequence
+ `(,@LaTeX-fixme-layout-boolean-options
+ ("layout" ,LaTeX-fixme-layout-boolean-values)
+ ("morelayout" ,LaTeX-fixme-layout-boolean-values)
+ ("innerlayout" (,@LaTeX-fixme-layout-boolean-values
+ ("layout" ,LaTeX-fixme-layout-boolean-values)
+ ("morelayout",LaTeX-fixme-layout-boolean-values)))))
+ #'LaTeX-fixme-option<)
+ "FiXme layout options.")
+
+
+;; Environment layouts
+;; -------------------
+(defvar LaTeX-fixme-builtin-env-layouts
+ '("plain" "signature")
+ "FiXme builtin environment layouts.")
+
+(defvar LaTeX-fixme-external-env-layouts
+ '("color" "colorsig")
+ "FiXme external environment layouts.")
+
+(defvar LaTeX-fixme-env-layouts
+ (sort (copy-sequence `(,@LaTeX-fixme-builtin-env-layouts
+ ,@LaTeX-fixme-external-env-layouts))
+ #'string<)
+ "FiXme environment layouts.")
+
+(defvar LaTeX-fixme-envlayout-option
+ `("envlayout" ,LaTeX-fixme-env-layouts)
+ "FiXme envlayout option.")
+
+
+;; Target layouts
+;; --------------
+(defvar LaTeX-fixme-builtin-target-layouts
+ '("changebar" "plain")
+ "FiXme builtin target layouts.")
+
+(defvar LaTeX-fixme-external-target-layouts
+ '("color" "colorcb")
+ "FiXme external target layouts.")
+
+(defvar LaTeX-fixme-target-layouts
+ (sort (copy-sequence `(,@LaTeX-fixme-builtin-target-layouts
+ ,@LaTeX-fixme-external-target-layouts))
+ #'string<)
+ "FiXme target layouts.")
+
+(defvar LaTeX-fixme-targetlayout-option
+ `("targetlayout" ,LaTeX-fixme-target-layouts)
+ "FiXme targetlayout option.")
+
+
+;; Target option
+;; -------------
+(defvar LaTeX-fixme-target-option
+ '("target" ("thepage"))
+ "FiXme target option.")
+
+
+;; Faces
+;; -----
+(defun LaTeX-fixme-face-option (face)
+ "Return the face option corresponding to FACE.
+This is (\"FACEface\")."
+ `(,(concat face "face")))
+
+(defvar LaTeX-fixme-common-faces '("inline" "margin" "signature")
+ "FiXme common faces.")
+
+(defvar LaTeX-fixme-common-face-options
+ (sort (mapcar #'LaTeX-fixme-face-option LaTeX-fixme-common-faces)
+ #'LaTeX-fixme-option<)
+ "FiXme common face options.")
+
+(defvar LaTeX-fixme-env-face "env"
+ "FiXme environment face.")
+
+(defvar LaTeX-fixme-env-face-option
+ (LaTeX-fixme-face-option LaTeX-fixme-env-face)
+ "FiXme env face option.")
+
+(defvar LaTeX-fixme-target-face "target"
+ "FiXme environment face.")
+
+(defvar LaTeX-fixme-target-face-option
+ (LaTeX-fixme-face-option LaTeX-fixme-target-face)
+ "FiXme target face option.")
+
+(defvar LaTeX-fixme-faces
+ (sort (copy-sequence `(,@LaTeX-fixme-common-faces
+ ,LaTeX-fixme-env-face ,LaTeX-fixme-target-face))
+ #'string<)
+ "FiXme faces.")
+
+(defvar LaTeX-fixme-face-options
+ (sort (mapcar #'LaTeX-fixme-face-option LaTeX-fixme-faces)
+ #'LaTeX-fixme-option<)
+ "FiXme face options.")
+
+
+;; Logging
+;; -------
+(defvar LaTeX-fixme-logging-options
+ (LaTeX-fixme-xkeyval-boolean-options '("silent"))
+ "FiXme logging options.")
+
+
+;; Languages
+;; ---------
+(defvar LaTeX-fixme-languages
+ '("croatian" "danish" "english" "francais" "french" "german" "italian"
+ "ngerman" "spanish")
+ "FiXme Languages.")
+
+;; #### NOTE: langtrack not included
+(defvar LaTeX-fixme-language-options
+ (sort `(,@(mapcar #'list LaTeX-fixme-languages)
+ ("lang" ,LaTeX-fixme-languages)
+ ("defaultlang" ,LaTeX-fixme-languages))
+ #'LaTeX-fixme-option<)
+ "FiXme options for language selection.")
+
+(defvar LaTeX-fixme-langtrack-option
+ (LaTeX-fixme-xkeyval-boolean-option "langtrack")
+ "FiXme langtrack option.")
+
+
+;; Authoring
+;; ---------
+(defvar LaTeX-fixme-author-option
+ '("author")
+ "FiXme author option.")
+
+
+(defvar LaTeX-fixme-mode-options
+ (sort (copy-sequence `(,(LaTeX-fixme-xkeyval-boolean-option "singleuser")
+ ,(LaTeX-fixme-xkeyval-boolean-option "multiuser")
+ ("mode" ("multiuser""singleuser"))))
+ #'LaTeX-fixme-option<)
+ "FiXme mode options.")
+
+
+;; Themes
+;; ------
+(defvar LaTeX-fixme-themes
+ '("color" "colorsig" "signature")
+ "FiXme themes.")
+
+(defvar LaTeX-fixme-theme-option
+ `("theme" ,LaTeX-fixme-themes)
+ "FiXme theme option.")
+
+
+;; Macro-dependent
+;; ---------------
+(defun LaTeX-fixme-annotation-options (&optional targeted)
+ "Return a specification for the optional argument to FiXme annotations.
+Mostly all, except for envlayout, envface, langtrack and theme.
+TARGETED is for the starred versions, where additional options
+exist (targetlayout and targetface)."
+ `[ TeX-arg-key-val
+ ,(sort (copy-sequence `(,@LaTeX-fixme-status-options
+ ,@LaTeX-fixme-layout-options
+ ,@LaTeX-fixme-common-face-options
+ ,LaTeX-fixme-target-option
+ ,@(when targeted
+ `(,LaTeX-fixme-targetlayout-option
+ ,LaTeX-fixme-target-face-option))
+ ,@LaTeX-fixme-logging-options
+ ,@LaTeX-fixme-language-options
+ ,LaTeX-fixme-author-option
+ ,@LaTeX-fixme-mode-options))
+ #'LaTeX-fixme-option<) ])
+
+;; #### WARNING: gross hack. This function makes the targeted annotations look
+;; like they're taking a single mandatory argument, whereas they actually take
+;; 2.
+(defun LaTeX-fixme-targeted-annotation-hack (optional)
+ "Hook for targeted FiXme annotations.
+This function inserts a first couple of braces and a second one,
+potentially with the active region's contents within it. The point is left
+inside the first couple of braces."
+ (TeX-argument-insert "" nil)
+ (TeX-parse-argument optional nil))
+
+
+;; #### NOTE: an even DWIMer thing to do would be to make the MACRO argument
+;; depend on the NAME one, in case the user changed it from the initial input.
+(defvar LaTeX-fixme-args-register-layout
+ `([ (LaTeX-fixme-arg-key ,LaTeX-fixme-layouts "Incompatible layout(s)") ]
+ (TeX-arg-eval TeX-read-string "Name: " (LaTeX-fixme-file-feature "layout"))
+ (TeX-arg-eval TeX-read-string "Macro: "
+ (concat TeX-esc "FXLayout"
+ (maybe-upcase-initials
+ (LaTeX-fixme-file-feature "layout")))))
+ "FiXme layout registration arguments.
+An optional mutual exclusion list, a layout name and the
+corresponding macro.")
+
+;; #### NOTE: OPTIONALP is ignored.
+(defun LaTeX-fixme-boolean-option-definition (optionalp)
+ "Hook for boolean option definitions.
+Prompt for, and insert a key between braces.
+When TeX-insert-macro is called with a prefix argument, first insert an empty
+pair of square brackets for a function definition, and leave point inside."
+ (cond (current-prefix-arg
+ (insert "[")
+ (let ((point (point)))
+ (insert "]")
+ (TeX-arg-string nil "Key")
+ (goto-char point)))
+ (t
+ (TeX-arg-string nil "Key"))))
+
+
+;; Environment-dependent
+;; ---------------------
+;; #### NOTE: this function compensates for the fact that AUCTeX doesn't
+;; understand t arguments in environments as it does in macros (the point is
+;; always left within the argument's body). The other solution (actually, the
+;; previous one) was to prompt for the annotation summary, but I find that
+;; less convenient to edit it in the minibuffer, rather than in the file
+;; directly.
+(defun LaTeX-fixme-insert-environment (environment)
+ "Insert a FiXme annotation ENVIRONMENT.
+Prompt for arguments, and leave point within the first couple of
+braces, where the annotation summary needs to go. For targeted
+environments, use the active region as the second mandatory
+argument."
+ (let* ((targeted (string-match "\\*" environment))
+ (options-list (sort (copy-sequence
+ (append LaTeX-fixme-status-options
+ LaTeX-fixme-layout-options
+ LaTeX-fixme-common-face-options
+ LaTeX-fixme-logging-options
+ LaTeX-fixme-language-options
+ LaTeX-fixme-mode-options
+ (list LaTeX-fixme-envlayout-option
+ LaTeX-fixme-env-face-option
+ LaTeX-fixme-target-option
+ LaTeX-fixme-author-option)
+ (when targeted
+ (list LaTeX-fixme-targetlayout-option
+ LaTeX-fixme-target-face-option))))
+ #'LaTeX-fixme-option<))
+ (options (TeX-read-key-val t options-list))
+ (target (when (and targeted (TeX-active-mark))
+ (prog1 (buffer-substring (point) (mark))
+ (delete-region (point) (mark))))))
+ (LaTeX-insert-environment
+ environment
+ (concat (when (and options (not (string= options "")))
+ (format "[%s]" options))
+ (concat TeX-grop TeX-grcl)
+ (when targeted
+ (concat TeX-grop target TeX-grcl))))
+ (when target
+ (LaTeX-fill-environment nil)
+ (indent-according-to-mode)
+ ;; #### NOTE: for some reason, doing this after DELETE-REGION doesn't
+ ;; work (maybe something related to the insertion of the environment) so
+ ;; I'm deferring it to here.
+ (TeX-deactivate-mark))
+ (LaTeX-find-matching-begin)
+ (re-search-forward TeX-grcl)
+ (when (= (char-after) ?\[)
+ (forward-list))
+ (forward-char)))
+
+
+
+;; ===========================================================================
+;; Style Hooks
+;; ===========================================================================
+
(TeX-add-style-hook "fixme"
- (function
- (lambda ()
- (TeX-add-symbols
- '("fxsetup")
-
- '("fxnote" ["Options"] "Annotation")
- '("fxwarning" ["Options"] "Annotation")
- '("fxerror" ["Options"] "Annotation")
- '("fxfatal" ["Options"] "Annotation")
- '("fixme" ["Options"] "Annotation")
-
- '("fxnote*" ["Options"] "Annotation" t)
- '("fxwarning*" ["Options"] "Annotation" t)
- '("fxerror*" ["Options"] "Annotation" t)
- '("fxfatal*" ["Options"] "Annotation" t)
-
- '("listoffixmes" 0)
-
- '("fxuselayouts" t)
- '("fxloadlayouts" t)
- '("fxuseenvlayout" t)
- '("fxloadenvlayouts" t)
- '("fxusetargetlayout" t)
- '("fxloadtargetlayouts" t)
-
- '("fxsetface" "Face" "Value")
-
- '("FXRegisterAuthor" "Command prefix" "Environment prefix" "Tag")
-
- '("fxusetheme" "Theme")
-
- '("FXRegisterLayout" "Name" "Macro")
- '("FXRegisterLayout*" "Name" "Macro")
- '("FXRegisterEnvLayout" "Name" "Opening macro" "Closing macro")
- '("FXRegisterTargetLayout" "Name" "Macro")
-
- '("FXRequireLayout" "Name")
- '("FXRequireEnvLayout" "Name")
- '("FXRequireTargetLayout" "Name")
-
- '("FXProvidesLayout" "Name" ["Release information"])
- '("FXProvidesEnvLayout" "Name" ["Release information"])
- '("FXProvidesTargetLayout" "Name" ["Release information"])
-
- '("fxenglishnotename" 0)
- '("fxenglishnotesname" 0)
- '("fxenglishwarningname" 0)
- '("fxenglishwarningsname" 0)
- '("fxenglisherrorname" 0)
- '("fxenglisherrorsname" 0)
- '("fxenglishfatalname" 0)
- '("fxenglishfatalsname" 0)
- '("fxfrenchnotename" 0)
- '("fxfrenchnotesname" 0)
- '("fxfrenchwarningname" 0)
- '("fxfrenchwarningsname" 0)
- '("fxfrencherrorname" 0)
- '("fxfrencherrorsname" 0)
- '("fxfrenchfatalname" 0)
- '("fxfrenchfatalsname" 0)
- '("fxspanishnotename" 0)
- '("fxspanishnotesname" 0)
- '("fxspanishwarningname" 0)
- '("fxspanishwarningsname" 0)
- '("fxspanisherrorname" 0)
- '("fxspanisherrorsname" 0)
- '("fxspanishfatalname" 0)
- '("fxspanishfatalsname" 0)
- '("fxitaliannotename" 0)
- '("fxitaliannotesname" 0)
- '("fxitalianwarningname" 0)
- '("fxitalianwarningsname" 0)
- '("fxitalianerrorname" 0)
- '("fxitalianerrorsname" 0)
- '("fxitalianfatalname" 0)
- '("fxitalianfatalsname" 0)
- '("fxgermannotename" 0)
- '("fxgermannotesname" 0)
- '("fxgermanwarningname" 0)
- '("fxgermanwarningsname" 0)
- '("fxgermanerrorname" 0)
- '("fxgermanerrorsname" 0)
- '("fxgermanfatalname" 0)
- '("fxgermanfatalsname" 0)
- '("fxdanishnotename" 0)
- '("fxdanishnotesname" 0)
- '("fxdanishwarningname" 0)
- '("fxdanishwarningsname" 0)
- '("fxdanisherrorname" 0)
- '("fxdanisherrorsname" 0)
- '("fxdanishfatalname" 0)
- '("fxdanishfatalsname" 0)
- '("fxcroatiannotename" 0)
- '("fxcroatiannotesname" 0)
- '("fxcroatianwarningname" 0)
- '("fxcroatianwarningsname" 0)
- '("fxcroatianerrorname" 0)
- '("fxcroatianerrorsname" 0)
- '("fxcroatianfatalname" 0)
- '("fxcroatianfatalsname" 0)
-
- '("englishlistfixmename" 0)
- '("frenchlistfixmename" 0)
- '("spanishlistfixmename" 0)
- '("italianlistfixmename" 0)
- '("germanlistfixmename" 0)
- '("danishlistfixmename" 0)
- '("croatianlistfixmename" 0))
-
- (LaTeX-add-environments
- '("anfxnote" ["Options"] "Summary")
- '("anfxwarning" ["Options"] "Summary")
- '("anfxerror" ["Options"] "Summary")
- '("anfxfatal" ["Options"] "Summary")
- '("afixme" ["Options"] "Summary")
-
- ;; #### NOTE: I would like to insert a couple of braces here.
- '("anfxnote*" ["Options"] "Summary")
- '("anfxwarning*" ["Options"] "Summary")
- '("anfxerror*" ["Options"] "Summary")
- '("anfxfatal*" ["Options"] "Summary")))))
+ (lambda ()
+
+ (TeX-add-symbols
+ `("fxsetup" (TeX-arg-key-val ,(sort (copy-sequence
+ `(,@LaTeX-fixme-status-options
+ ,@LaTeX-fixme-layout-options
+ ,@LaTeX-fixme-common-face-options
+ ,LaTeX-fixme-envlayout-option
+ ,LaTeX-fixme-env-face-option
+ ,LaTeX-fixme-targetlayout-option
+ ,LaTeX-fixme-target-face-option
+ ,LaTeX-fixme-target-option
+ ,@LaTeX-fixme-logging-options
+ ,@LaTeX-fixme-language-options
+ ,LaTeX-fixme-langtrack-option
+ ,LaTeX-fixme-author-option
+ ,@LaTeX-fixme-mode-options
+ ,LaTeX-fixme-theme-option))
+ #'LaTeX-fixme-option<)))
+
+ `("fxnote" ,(LaTeX-fixme-annotation-options) t)
+ `("fxwarning" ,(LaTeX-fixme-annotation-options) t)
+ `("fxerror" ,(LaTeX-fixme-annotation-options) t)
+ `("fxfatal" ,(LaTeX-fixme-annotation-options) t)
+ ;; #### NOTE: \fixme is obsolete so I don't want to support it here.
+
+ `("fxnote*" ,(LaTeX-fixme-annotation-options t)
+ LaTeX-fixme-targeted-annotation-hack)
+ `("fxwarning*" ,(LaTeX-fixme-annotation-options t)
+ LaTeX-fixme-targeted-annotation-hack)
+ `("fxerror*" ,(LaTeX-fixme-annotation-options t)
+ LaTeX-fixme-targeted-annotation-hack)
+ `("fxfatal*" ,(LaTeX-fixme-annotation-options t)
+ LaTeX-fixme-targeted-annotation-hack)
+
+ '("listoffixmes" 0)
+
+ `("fxuselayouts" (TeX-arg-key-val ,LaTeX-fixme-layout-boolean-options
+ "Layout options"))
+ `("fxloadlayouts" (LaTeX-fixme-arg-key ,LaTeX-fixme-external-layouts
+ "External layouts"))
+
+ '("fxuseenvlayout" (TeX-arg-eval completing-read "Environment layout: "
+ LaTeX-fixme-env-layouts))
+ `("fxloadenvlayouts" (LaTeX-fixme-arg-key
+ ,LaTeX-fixme-external-env-layouts
+ "External environment layout(s)"))
+
+ '("fxusetargetlayout" (TeX-arg-eval completing-read "Target layout: "
+ LaTeX-fixme-target-layouts))
+ `("fxloadtargetlayouts" (LaTeX-fixme-arg-key
+ ,LaTeX-fixme-external-target-layouts
+ "External target layout(s)"))
+
+ '("fxsetface" (TeX-arg-eval completing-read "Face: " LaTeX-fixme-faces) t)
+
+ '("FXRegisterAuthor"
+ ;; #### WARNING: this really is a dirty, dirty trick. We construct a
+ ;; single argument out of 3, and let AUCTeX enclose the whole thing
+ ;; with the missing pair of braces...
+ (TeX-arg-eval
+ let* ((tag (read-from-minibuffer "Tag: "))
+ (cmd (read-from-minibuffer "Command prefix: " (downcase tag)))
+ (env (read-from-minibuffer "Environment prefix: "
+ (concat "a" (downcase cmd)))))
+ (concat cmd TeX-grcl
+ TeX-grop env TeX-grcl
+ TeX-grop tag)))
+
+ '("fxusetheme" (TeX-arg-eval completing-read "Theme: " LaTeX-fixme-themes))
+
+ `("FXRegisterLayout" ,@LaTeX-fixme-args-register-layout)
+ `("FXRegisterLayout*" ,@LaTeX-fixme-args-register-layout)
+ '("FXProvidesLayout"
+ (TeX-arg-eval TeX-read-string "Name: "
+ (LaTeX-fixme-file-feature "layout"))
+ [ TeX-arg-version ])
+ `("FXRequireLayouts" (LaTeX-fixme-arg-key ,LaTeX-fixme-external-layouts
+ "External layout(s)"))
+
+ '("FXRegisterEnvLayout"
+ (TeX-arg-eval TeX-read-string "Name: "
+ (LaTeX-fixme-file-feature "envlayout"))
+ (TeX-arg-eval TeX-read-string "Opening macro: "
+ (concat TeX-esc "FXEnvLayout"
+ (maybe-upcase-initials
+ (LaTeX-fixme-file-feature "envlayout"))
+ "Begin"))
+ (TeX-arg-eval TeX-read-string "Closing macro: "
+ (concat TeX-esc "FXEnvLayout"
+ (maybe-upcase-initials
+ (maybe-LaTeX-fixme-file-feature "envlayout"))
+ "End")))
+ '("FXProvidesEnvLayout"
+ (TeX-arg-eval TeX-read-string "Name: "
+ (LaTeX-fixme-file-feature "envlayout"))
+ [ TeX-arg-version ])
+ '("FXRequireEnvLayout" (TeX-arg-eval completing-read
+ "External environment layout: "
+ LaTeX-fixme-external-env-layouts))
+
+ '("FXRegisterTargetLayout"
+ (TeX-arg-eval TeX-read-string "Name: "
+ (LaTeX-fixme-file-feature "targetlayout"))
+ (TeX-arg-eval TeX-read-string "Macro: "
+ (concat TeX-esc "FXTargetLayout"
+ (maybe-upcase-initials
+ (LaTeX-fixme-file-feature "targetlayout")))))
+ '("FXProvidesTargetLayout"
+ (TeX-arg-eval TeX-read-string "Name: "
+ (LaTeX-fixme-file-feature "targetlayout"))
+ [ TeX-arg-version ])
+ '("Fxrequiretargetlayout"
+ (TeX-arg-eval completing-read "External target layout: "
+ LaTeX-fixme-external-target-layouts))
+
+ '("FXProvidesTheme"
+ (TeX-arg-eval TeX-read-string "Name: "
+ (LaTeX-fixme-file-feature "theme"))
+ [ TeX-arg-version ]))
+
+ (let ((families '("Layout" "EnvLayout" "TargetLayout")))
+ (apply #'TeX-add-symbols
+ (mapcar (lambda (macro)
+ (cons macro
+ '("Key" [ "Default" ] t)))
+ (mapcar (lambda (family) (concat "FXDefine" family "Key"))
+ families)))
+ (apply #'TeX-add-symbols
+ (mapcar (lambda (macro)
+ (cons macro
+ '([ "Macro prefix" ] "Key" [ "Default" ] t)))
+ (mapcar (lambda (family)
+ (concat "FXDefine" family "CmdKey"))
+ families)))
+ (apply #'TeX-add-symbols
+ (mapcar (lambda (macro)
+ (cons macro
+ '("Key" [ "Bin" ] "Alternatives" [ "Default" ] t)))
+ (mapcar (lambda (family)
+ (concat "FXDefine" family "ChoiceKey"))
+ families)))
+ (apply #'TeX-add-symbols
+ (mapcar (lambda (macro) (cons macro '("Key" t)))
+ (mapcar (lambda (family)
+ (concat "FXDefine" family "VoidKey"))
+ families)))
+ (apply #'TeX-add-symbols
+ (mapcar (lambda (macro)
+ (cons macro '(LaTeX-fixme-boolean-option-definition)))
+ (mapcar (lambda (family)
+ (concat "FXDefine" family "BoolKey"))
+ families))))
+
+ (apply #'TeX-add-symbols
+ (mapcan (lambda (macro)
+ (mapcar (lambda (language)
+ (list (concat "fx" language macro) 0))
+ ;; #### NOTE: francais is an alias to french.
+ (remove "francais" LaTeX-fixme-languages)))
+ (mapcar (lambda (macro) (concat macro "name"))
+ '("note" "notes"
+ "warning" "warnings"
+ "error" "errors"
+ "fatal" "fatals"))))
+
+ (apply #'TeX-add-symbols
+ (mapcar (lambda (language)
+ (list (concat language "listfixmename") 0))
+ ;; #### NOTE: francais is an alias to french.
+ (remove "francais" LaTeX-fixme-languages)))
+
+
+ (LaTeX-add-environments
+ `("anfxnote" LaTeX-fixme-insert-environment)
+ `("anfxwarning" LaTeX-fixme-insert-environment)
+ `("anfxerror" LaTeX-fixme-insert-environment)
+ `("anfxfatal" LaTeX-fixme-insert-environment)
+
+ `("anfxnote*" LaTeX-fixme-insert-environment)
+ `("anfxwarning*" LaTeX-fixme-insert-environment)
+ `("anfxerror*" LaTeX-fixme-insert-environment)
+ `("anfxfatal*" LaTeX-fixme-insert-environment))
+
+
+ (when (and (featurep 'font-latex)
+ (eq TeX-install-font-lock 'font-latex-setup))
+ (font-latex-add-keywords '(("fxsetup" "{")
+
+ "listoffixmes"
+
+ ("fxuselayouts" "{")
+ ("fxloadlayouts" "{")
+
+ ("fxuseenvlayout" "{")
+ ("fxloadenvlayouts" "{")
+
+ ("fxusetargetlayout" "{")
+ ("fxloadtargetlayouts" "{")
+
+ ("fxsetface" "{{")
+
+ ("FXRegisterAuthor" "{{{")
+
+ ("fxusetheme" "{")
+
+ ("FXRegisterLayout" "*[{{")
+ ("FXProvidesLayout" "{[")
+ ("FXRequireLayout" "{")
+
+ ("FXRegisterEnvLayout" "{{{")
+ ("FXProvidesEnvLayout" "{[")
+ ("FXRequireEnvLayout" "{")
+
+ ("FXRegisterTargetLayout" "{{")
+ ("FXProvidesTargetLayout" "{[")
+ ("FXRequireTargetLayout" "{")
+
+ ("FXDefineLayoutKey" "{[{")
+ ("FXDefineEnvLayoutKey" "{[{")
+ ("FXDefineTargetLayoutKey" "{[{")
+
+ ("FXDefineLayoutCmdKey" "[{[{")
+ ("FXDefineEnvLayoutCmdKey" "[{[{")
+ ("FXDefineTargetLayoutCmdKey" "[{[{")
+
+ ("FXDefineLayoutChoiceKey" "{[{[{")
+ ("FXDefineEnvLayoutChoiceKey" "{[{[{")
+ ("FXDefineTargetLayoutChoiceKey" "{[{[{")
+
+ ("FXDefineLayoutVoidKey" "{{")
+ ("FXDefineEnvLayoutVoidKey" "{{")
+ ("FXDefineTargetLayoutVoidKey" "{{")
+
+ ("FXDefineLayoutBoolKey" "[{")
+ ("FXDefineEnvLayoutBoolKey" "[{")
+ ("FXDefineTargetLayoutBoolKey" "[{")
+
+ ("FXProvidesTheme" "{["))
+ 'function)
+ ;; The starred version of the 4 macros below takes a second mandatory
+ ;; argument. We skip this since it would confuse font-latex when used as
+ ;; the non-starred version
+ (font-latex-add-keywords '(("fxnote" "*[{")
+ ("fxwarning" "*[{")
+ ("fxerror" "*[{")
+ ("fxfatal" "*[{"))
+ 'textual)))
+ LaTeX-dialect)
diff --git a/Master/texmf-dist/doc/latex/fixme/fixme.pdf b/Master/texmf-dist/doc/latex/fixme/fixme.pdf
index 7b011529dec..47c6d8f161d 100644
--- a/Master/texmf-dist/doc/latex/fixme/fixme.pdf
+++ b/Master/texmf-dist/doc/latex/fixme/fixme.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/fixme/header.inc b/Master/texmf-dist/doc/latex/fixme/header.inc
index 2287644ee3e..114d3c03be7 100644
--- a/Master/texmf-dist/doc/latex/fixme/header.inc
+++ b/Master/texmf-dist/doc/latex/fixme/header.inc
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
@@ -36,7 +36,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fixme}[2017/03/05 v4.4 Collaborative annotations for LaTeX2e]
+\ProvidesPackage{fixme}[2019/01/03 v4.5 Collaborative annotations for LaTeX2e]
\newcommand\fixmelogo{\textsf{FiXme}}
diff --git a/Master/texmf-dist/source/latex/fixme/fixme.dtx b/Master/texmf-dist/source/latex/fixme/fixme.dtx
index e27d6507397..6cf902ef5f2 100644
--- a/Master/texmf-dist/source/latex/fixme/fixme.dtx
+++ b/Master/texmf-dist/source/latex/fixme/fixme.dtx
@@ -2,7 +2,7 @@
%
% fixme.dtx --- docTeX file for FiXme
%
-% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%
% Author: Didier Verna <didier@didierverna.net>
%
@@ -31,6 +31,7 @@
\doxitem[idxtype=opt.]{Option}{option}{options}
\doxitem[idxtype=cnt.]{Counter}{counter}{counters}
\doxitem[idxtype=lang.]{Lang}{lang}{languages}
+\doxitem[idxtype=cond.]{Cond}{cond}{conditionals}
\doxitem{Face}{face}{faces}
\doxitem{Color}{color}{colors}
\doxitem[idxtype={note lt.}]{Layout}{layout}{note layouts}
@@ -61,7 +62,7 @@
%
% \fi
%
-% \CheckSum{1719}
+% \CheckSum{1769}
% \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
@@ -115,12 +116,12 @@
% \newcommand\vs{\textit{vs.}\xspace}
% \newcommand\ie{\textit{i.e.}\xspace}
% \newcommand\komascript{\textsc{Koma}-Script\xspace}
-% \newcommand\auctex{AUC-\TeX\xspace}
+% \newcommand\auctex{AUC\TeX\xspace}
% \newcommand\emacs{\textsf{Emacs}\xspace}
%
% \newcommand\fx{\fixmelogo\xspace}
% \newcommand\packagecopyright{%
-% Copyright \copyright{} 1998--2002, 2004--2007, 2009, 2013, 2017 Didier Verna}
+% Copyright \copyright{} 1998--2002, 2004--2007, 2009, 2013, 2017-2019 Didier Verna}
%
% \pagestyle{mystyle}
% \newcommand\fxmarkright{%
@@ -453,7 +454,6 @@
% consume \TeX{} resources if not used. As a consequence, selecting an
% external layout might involve loading the relevant file first.
%
-% \noindent\DescribeMacro{\fxloadlayouts}\marg{name,\ldots}\\
% For technical reasons, it is not possible to do such a thing outside the
% preamble, neither in the middle of processing \cs{usepackage} options. As a
% result, layout options are restricted and you have three possibilities for
@@ -465,7 +465,11 @@
% \item Use the \cs{fxuselayouts} command in the preamble like this:\\
% |\fxuselayouts{|\meta{name}|}|. This is strictly equivalent to the
% previous solution.
-% \item If on the other hand you want to load one or several external layouts
+% \end{enumerate}
+% \DescribeMacro{\fxloadlayouts}\marg{name,\ldots}
+% \begin{enumerate}
+% \item[3]
+% If on the other hand you want to load one or several external layouts
% \emph{without} using them immediately (perhaps in order to use them
% locally in some specific annotation), use the \cs{fxloadlayouts} command
% in the preamble like this: |\fxloadlayouts{|\meta{name}|,...}|. After
@@ -523,7 +527,7 @@
% \paragraph{\texttt{marginclue}}
% \DescribeBooleanOption{marginclue}
% \DescribeLayout[noprint]{marginclue}
-% If your preferred layout is \texttt{inline} or say, \texttt{footnote},it
+% 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
% play. A marginal clue does not display the annotation's contents, but only
@@ -1146,7 +1150,7 @@
% \jdfatal[author=Anonymous]{For $500.00, you got your Ph.D.}
% \end{verbatim}
% I don't see any good reason for doing it though, the above example
-% notwithstanding.^^A $ AUC-TeX hack to prevent math-mode
+% notwithstanding.^^A $ AUCTeX hack to prevent math-mode
%
% The final remark is about the default \texttt{fx*} user interface: the
% \texttt{fixme} default user is special in that it is the only registered
@@ -1244,7 +1248,7 @@
% description of their prototypes is given below.
%
% \subsubsection{Modifying existing annotation layouts}
-% \DescribeMacro[noindex]{\FXLayout\ldots}
+% \DescribeMacro[noindex]{\FXLayout\meta{name}}
% \marg{type}\marg{annotation}\marg{author}\\
% \DescribeMacro[noprint]{\FXLayoutInline}
% \DescribeMacro[noprint]{\FXLayoutMargin}
@@ -1253,14 +1257,14 @@
% \DescribeMacro[noprint]{\FXLayoutMarginClue}
% Each annotation layout is implemented as a macro taking three mandatory
% arguments. By convention, this macro is named \cs{FXLayout}\meta{name}, for
-% instance \cs{FXLayoutInline}.\meta{type} is the annotation type. It can be
+% instance \cs{FXLayoutInline}. \meta{type} is the annotation type. It can be
% one of \texttt{note}, \texttt{warning}, \texttt{error} and \texttt{fatal}.
% \meta{annotation} is the annotation itself, and \meta{author} is the
% author's tag.
%
% \subsubsection{Modifying existing environment layouts}
-% \DescribeMacro[noindex]{\FXEnvLayout\ldots Begin}
-% \DescribeMacro[noindex]{\FXEnvLayout\ldots End}\marg{type}\marg{author}\\
+% \DescribeMacro[noindex]{\FXEnvLayout\meta{name}Begin}
+% \DescribeMacro[noindex]{\FXEnvLayout\meta{name}End}\marg{type}\marg{author}\\
% \DescribeMacro[noprint]{\FXEnvLayoutPlainBegin}
% \DescribeMacro[noprint]{\FXEnvLayoutPlainEnd}
% \DescribeMacro[noprint]{\FXEnvLayoutSignatureBegin}
@@ -1280,7 +1284,7 @@
% \end{sloppypar}
%
% \subsubsection{Modifying existing target layouts}
-% \DescribeMacro[noindex]{\FXTargetLayout\ldots}\marg{type}\marg{target}\\
+% \DescribeMacro[noindex]{\FXTargetLayout\meta{name}}\marg{type}\marg{target}\\
% \DescribeMacro[noprint]{\FXTargetLayoutPlain}
% \DescribeMacro[noprint]{\FXTargetLayoutColor}
% Each target layout is implemented as a macro taking two mandatory arguments.
@@ -1337,7 +1341,7 @@
% declarations.
%
% \paragraph{Registering early layouts}
-% \DescribeMacro{\FXRegisterLayout*}\oarg{boolfunc}\marg{name}\marg{macro}\\
+% \DescribeMacro{\FXRegisterLayout*}\oarg{mutex}\marg{name}\marg{macro}\\
% In order to register an early annotation layout with \fx, use the starred
% form of \cs{FXRegisterLayout}. Everything else behaves the same.
%
@@ -1391,6 +1395,85 @@
% calling \cs{FXProvidesTargetLayout}. It will then be recognized by the
% \cs{fxloadtargetlayouts} commands as \meta{name}.
%
+% \subsection{Adding new options}
+% \begin{quotation}\itshape
+% \textbf{Note:} \fx uses the \texttt{xkeyval} package for its underlying
+% options management, so some knowledge of this package is required in order
+% to understand the remainder of this section.
+% \end{quotation}
+% Yet another way to customize \fx is to plug additional behavior in, by way
+% of options. As of version 4.5, \fx provides a convenient interface for
+% creating new options, and associate them with code to execute.
+%
+% First of all, new options must belong to a ``family'', which essentially
+% defines exactly where they make sense. \fx currently provides three option
+% families: \texttt{Layout}, \texttt{EnvLayout}, and
+% \texttt{TargetLayout}. Obviously, these families allow you to define options
+% that will affect the behavior of the corresponding three kinds of layouts.
+%
+% For each family, \fx provides five commands wrapping around \texttt{xkeyval}
+% to define special kinds of options (\emph{keys} in the \texttt{xkeyval}
+% jargon). They are explained below.
+%
+% \noindent\DescribeMacro[noindex]{\FXDefine\meta{family}Key}
+% \marg{key}\oarg{default}\marg{function}\\
+% \DescribeMacro[noprint]{\FXDefineLayoutKey}
+% \DescribeMacro[noprint]{\FXDefineEnvLayoutKey}
+% \DescribeMacro[noprint]{\FXDefineTargetLayoutKey}
+% Define an \texttt{xkeyval} ordinary \meta{key} belonging to \meta{family}.
+%
+% \noindent\DescribeMacro[noindex]{\FXDefine\meta{family}CmdKey}
+% \oarg{mp}\marg{key}\oarg{default}\marg{function}\\
+% \DescribeMacro[noprint]{\FXDefineLayoutCmdKey}
+% \DescribeMacro[noprint]{\FXDefineEnvLayoutCmdKey}
+% \DescribeMacro[noprint]{\FXDefineTargetLayoutCmdKey}
+% Define an \texttt{xkeyval} command \meta{key} belonging to \meta{family}.
+%
+% \noindent\DescribeMacro[noindex]{\FXDefine\meta{family}ChoiceKey}
+% \marg{key}\oarg{bin}\marg{alternatives}\oarg{default}\marg{function}\\
+% \DescribeMacro[noprint]{\FXDefineLayoutChoiceKey}
+% \DescribeMacro[noprint]{\FXDefineEnvLayoutChoiceKey}
+% \DescribeMacro[noprint]{\FXDefineTargetLayoutChoiceKey}
+% Define an \texttt{xkeyval} choice \meta{key} belonging to \meta{family}.
+%
+% \noindent\DescribeMacro[noindex]{\FXDefine\meta{family}VoidKey}
+% \marg{key}\marg{func}\\
+% \DescribeMacro[noprint]{\FXDefineLayoutVoidKey}
+% \DescribeMacro[noprint]{\FXDefineEnvLayoutVoidKey}
+% \DescribeMacro[noprint]{\FXDefineTargetLayoutVoidKey}
+% A ``void \meta{key}'' is an option that is not supposed to get an
+% argument. This property is automatically checked everytime the option is
+% used.
+%
+% \noindent\DescribeMacro[noindex]{\FXDefine\meta{family}BoolKey}
+% \oarg{func}\marg{key}\\
+% \DescribeMacro[noprint]{\FXDefineLayoutBoolKey}
+% \DescribeMacro[noprint]{\FXDefineEnvLayoutBoolKey}
+% \DescribeMacro[noprint]{\FXDefineTargetLayoutBoolKey}
+% Finally, a ``boolean \meta{key}'' is like an \texttt{xkeyval} one, with the
+% addition that for every such \texttt{key}, there is a void \texttt{nokey}
+% counterpart.
+%
+% Every new option you define is inserted into the global options management
+% mechanism, which has some implications.
+% \begin{itemize}
+% \item First of all, new options are automatically available almost
+% everywhere, and in particular in the \cs{fxsetup} macro, in the
+% annotations commands and environments, \etc Note however that the
+% \texttt{EnvLayout} and \texttt{TargetLayout} family options are only
+% processed when it makes sense, that is, when environments or targeted
+% commands are involved.
+% \item Because new options are treated globally, they may affect every layout
+% (existing, loaded in the future, \etc) and of course, also the built-in
+% ones. Suppose, for example, that you want the ability to adjust the
+% vertical position of the marginal notes layout. One solution is to create
+% a \texttt{vadj} option like this:
+% |\FXDefineLayoutKey{vadj}{\def\marginnotevadjust{#1}}|, which you can then
+% use like that: |\fxnote[vadj=.5ex]{...}|.
+% \item Finally, and again, because options are treated globally, beware of
+% name clashes! Every option name must be unique within a family.
+% \end{itemize}
+%
% \subsection{Creating a new theme}
% Creating a new theme may involve anything from using (by way of
% \cs{fxsetup}) or modifying existing layouts, to providing new ones. If your
@@ -1398,11 +1481,15 @@
% files as described before, in order to make them more generally available.
%
% \noindent
-% \DescribeMacro{\FXRequireLayout}
+% \DescribeMacro{\FXRequireLayouts}\marg{layout names}\\
+% In order to use external layouts in a theme, use the command
+% \cs{FXRequireLayouts}, passing it a list of \meta{layout names} as
+% argument.\\
% \DescribeMacro{\FXRequireEnvLayout}
% \DescribeMacro{\FXRequireTargetLayout}\marg{name}\\
-% In order to use an external layout in a theme, use the commands
-% \cs{FXRequire*Layout} and give them the layout's name as argument.
+% In order to use and external environment or target layout in a theme, use
+% the commands \cs{FXRequire*Layout} and give them the layout's name as
+% argument.
%
% \noindent
% \DescribeMacro{\FXProvidesTheme}\marg{name}\oarg{release information}\\
@@ -1412,8 +1499,8 @@
% option and the \cs{fxusetheme} command.
%
% \subsection{Internationalization}
-% \DescribeMacro[noindex]{\fx\ldots name}
-% \DescribeMacro[noindex]{\fx\ldots sname}
+% \DescribeMacro[noindex]{\fx\meta{lang}name}
+% \DescribeMacro[noindex]{\fx\meta{lang}sname}
% \DescribeMacro[noprint]{\fxenglishnotename}
% \DescribeMacro[noprint]{\fxenglishnotesname}
% \DescribeMacro[noprint]{\fxenglishwarningname}
@@ -1476,7 +1563,7 @@
% \cs{fx}\meta{lang}\texttt{notename}, \cs{fx}\meta{lang}\texttt{notesname},
% and their equivalent for the other annotation levels define the singular and
% plural forms of the note names.\\
-% \DescribeMacro[noindex]{\...listfixmename}
+% \DescribeMacro[noindex]{\ \unskip\meta{lang}listfixmename}
% \DescribeMacro[noprint]{\englishlistfixmename}
% \DescribeMacro[noprint]{\frenchlistfixmename}
% \DescribeMacro[noprint]{\spanishlistfixmename}
@@ -1493,6 +1580,13 @@
%
% \section{History\label{sec:manual:history}}
% \begin{itemize}
+% \item[v4.5] Public interface for extending \fx with new key/value options.\\
+% Revamp the \auctex support, with help from Arash Esbati and
+% Ikumi Keita.\\
+% Fix PDF signature layouts not working anymore, reported by Soeren
+% Wolfers.\\
+% Fix spurious space at the end of environments contents, reported
+% by Frank Mittelbach.
% \item[v4.4] Handle existing yet empty lox file properly, meaning don't
% actually typeset an empty list of corrections.\\
% Don't update the \texttt{lox} file in final mode, avoiding potential
@@ -1586,7 +1680,7 @@
%<fixme>
\NeedsTeXFormat{LaTeX2e}
%<*header>
-\ProvidesPackage{fixme}[2017/03/05 v4.4 Collaborative annotations for LaTeX2e]
+\ProvidesPackage{fixme}[2019/01/03 v4.5 Collaborative annotations for LaTeX2e]
%</header>
% \end{macrocode}
@@ -1695,7 +1789,7 @@
% \paragraph{Wrappers}
% \begin{macro}{\@fxvoidkeyerror}
% \marg{key}\marg{value}\\
-% Issue a \fx error about a void key misuse (see below):
+% Issue a \fx error about a void \meta{key} misuse (see below):
% \begin{macrocode}
\newcommand*\@fxvoidkeyerror[2]{%
\@fxpkgerror{misuse of key '#1'}{%
@@ -1705,9 +1799,8 @@
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@fxdefinevoidkey}
-% \marg{family}\marg{name}\marg{func}\\
-% A \fx ``void key'' is an \texttt{xkeyval} key that doesn't expect any
-% argument.
+% \marg{family}\marg{key}\marg{func}\\
+% A \fx ``void \meta{key}'' isn't supposed to get an argument.
% \begin{macrocode}
\newcommand*\@fxdefinevoidkey[3]{%
\define@key[fx]{#1}{#2}[]{%
@@ -1718,10 +1811,10 @@
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@fxdefineboolkey}
-% \oarg{func}\marg{family}\marg{name}\\
-% A \fx ``boolean key'' is like an \texttt{xkeyval} one, with the
-% addition that for every such \texttt{key}, there is a \texttt{nokey} void
-% key counterpart.
+% \oarg{func}\marg{family}\marg{key}\\
+% A \fx ``boolean \meta{key}'' is like an \texttt{xkeyval} one, with the
+% addition that for every such \texttt{key}, there is a void \texttt{nokey}
+% counterpart.
% \begin{macrocode}
\newcommand*\@fxdefineboolkey[3][]{%
\define@boolkey[fx]{#2}{#3}[true]{#1}
@@ -1730,6 +1823,41 @@
% \end{macrocode}
% \end{macro}
%
+% \paragraph{Extension-level option creation interface}
+% \begin{macro}{\@fxdefineoptioninterface}
+% \marg{family}\marg{infix}
+% \begin{macro}[noindex]{\FXDefine...Key}
+% \begin{macro}[noindex]{\FXDefine...CmdKey}
+% \begin{macro}[noindex]{\FXDefine...ChoiceKey}
+% \begin{macro}[noindex]{\FXDefine...VoidKey}
+% \begin{macro}[noindex]{\FXDefine...BoolKey}
+% This macro defines the extension-level interface allowing users to define
+% new \texttt{xkeyval} options for a certain \meta{family}. Note that the core
+% of \fx could use those interfaces once defined, but it wouldn't bring much
+% to the picture. Indeed, it basically boils down to using a \meta{family}
+% within the names of the macros instead of as an argument (and avoiding the
+% use of the ``at'' character).
+% \begin{macrocode}
+\newcommand*\@fxdefineoptioninterface[2]{%
+ \expandafter\newcommand\csname FXDefine#2Key\endcsname{%
+ \@fxdefinekey{#1}}%
+ \expandafter\newcommand\csname FXDefine#2CmdKey\endcsname{%
+ \@fxdefinecmdkey{#1}}%
+ \expandafter\newcommand\csname FXDefine#2ChoiceKey\endcsname{%
+ \@fxdefinechoicekey{#1}}%
+ \expandafter\newcommand\csname FXDefine#2VoidKey\endcsname{%
+ \@fxdefinevoidkey{#1}}%
+ \expandafter\newcommand\expandafter*\csname FXDefine#2BoolKey\endcsname[2][]{%
+ \@fxdefineboolkey[##1]{#1}{##2}}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \subsection{List macros}
% \subsubsection{Contents lines\label{sec:code:contentsline}}
% \begin{macro}{\l@fixme}
@@ -2016,7 +2144,7 @@
% \end{macro}
% \begin{macro}{\FXRegisterLayout}
% \begin{macro}{\FXRegisterLayout*}
-% \meta{\texttt{*}}\oarg{boolfunc}\marg{name}\marg{funcname}\\
+% \meta{\texttt{*}}\oarg{mutex}\marg{name}\marg{funcname}\\
% And the use-level interface:
% \begin{macrocode}
\newcommand\FXRegisterLayout{%
@@ -2029,6 +2157,23 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \begin{macro}[noindex]{\FXDefineLayout...Key}
+% \begin{macro}[noprint]{\FXDefineLayoutKey}
+% \begin{macro}[noprint]{\FXDefineLayoutCmdKey}
+% \begin{macro}[noprint]{\FXDefineLayoutChoiceKey}
+% \begin{macro}[noprint]{\FXDefineLayoutVoidKey}
+% \begin{macro}[noprint]{\FXDefineLayoutBoolKey}
+% Finally, the extension-level option creation interface:
+% \begin{macrocode}
+\@fxdefineoptioninterface{layout}{Layout}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \subsubsection{Standard textual dispositions}
% \begin{macro}{\@fxtextstd}
@@ -2338,6 +2483,23 @@
% \end{macrocode}
% \end{macro}
+% \begin{macro}[noindex]{\FXDefineEnvLayout...Key}
+% \begin{macro}[noprint]{\FXDefineEnvLayoutKey}
+% \begin{macro}[noprint]{\FXDefineEnvLayoutCmdKey}
+% \begin{macro}[noprint]{\FXDefineEnvLayoutChoiceKey}
+% \begin{macro}[noprint]{\FXDefineEnvLayoutVoidKey}
+% \begin{macro}[noprint]{\FXDefineEnvLayoutBoolKey}
+% The extension-level option creation interface:
+% \begin{macrocode}
+\@fxdefineoptioninterface{envlayout}{EnvLayout}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \subsubsection{Built-in layouts}
% \paragraph{Plain}
@@ -2479,6 +2641,23 @@
% \end{macrocode}
% \end{macro}
+% \begin{macro}[noindex]{\FXDefineTargetLayout...Key}
+% \begin{macro}[noprint]{\FXDefineTargetLayoutKey}
+% \begin{macro}[noprint]{\FXDefineTargetLayoutCmdKey}
+% \begin{macro}[noprint]{\FXDefineTargetLayoutChoiceKey}
+% \begin{macro}[noprint]{\FXDefineTargetLayoutVoidKey}
+% \begin{macro}[noprint]{\FXDefineTargetLayoutBoolKey}
+% The extension-level option creation interface:
+% \begin{macrocode}
+\@fxdefineoptioninterface{targetlayout}{TargetLayout}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \subsubsection{Built-in layouts}
% \paragraph{Plain}
@@ -2912,7 +3091,7 @@
\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\@fxendenv@draft#1{\unskip\@fxenvlayout@end{#1}{\cmdfx@note@author}}
% \end{macrocode}
% \end{macro}
@@ -3721,10 +3900,20 @@
% \end{macrocode}
% \begin{macro}{\FXLayoutPDFSigNote}
-% \marg{type}\marg{note}\marg{author}
+% \marg{type}\marg{note}\marg{author}\\
+% Warning: this layout cannot use \cs{@fxsignature} properly, because of the
+% presence of an \cs{ifthenelse} inside, and that, eventough it was declared
+% robust. This problem seems to affect PDF layouts only. The workaround I use
+% below is to externalize the conditional and temporarily redefine
+% \cs{@fxsignature} accordingly. This is a bit clumsy but it works\ldots
% \begin{macrocode}
\newcommand*\FXLayoutPDFSigNote[3]{%
- \pdfcomment[author={#3}]{\@fxsigstd{#1}{#2}{#3}}}
+ \begingroup%
+ \ifthenelse{\equal{#3}{}}{%
+ \def\@fxsignature##1{}}{%
+ \def\@fxsignature##1{ -- {\@fxuseface{signature}#1}}}%
+ \pdfcomment[author={#3}]{\@fxsigstd{#1}{#2}{#3}}%
+ \endgroup}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@fxlayout@pdfsignote}
@@ -3749,10 +3938,20 @@
% \end{macrocode}
% \begin{macro}{\FXLayoutPDFSigMargin}
-% \marg{type}\marg{note}\marg{author}
+% \marg{type}\marg{note}\marg{author}\\
+% Warning: this layout cannot use \cs{@fxsignature} properly, because of the
+% presence of an \cs{ifthenelse} inside, and that, eventough it was declared
+% robust. This problem seems to affect PDF layouts only. The workaround I use
+% below is to externalize the conditional and temporarily redefine
+% \cs{@fxsignature} accordingly. This is a bit clumsy but it works\ldots
% \begin{macrocode}
\newcommand*\FXLayoutPDFSigMargin[3]{%
- \pdfmargincomment[author={#3}]{\@fxsigstd{#1}{#2}{#3}}}
+ \begingroup%
+ \ifthenelse{\equal{#3}{}}{%
+ \def\@fxsignature##1{}}{%
+ \def\@fxsignature##1{ -- {\@fxuseface{signature}#1}}}%
+ \pdfmargincomment[author={#3}]{\@fxsigstd{#1}{#2}{#3}}%
+ \endgroup}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@fxlayout@pdfsigmargin}
@@ -4338,7 +4537,7 @@
% \Finale
%
% ^^A Local variables:
-% ^^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 () (doxitems "option" "counter" "lang" "cond" "face" "color" "theme")) nil t)
% ^^A eval: (add-hook 'TeX-update-style-hook (lambda () (doxitem "\\(env\\|target\\)?layout")) nil t)
% ^^A End:
% ^^A fixme.dtx ends here.
diff --git a/Master/texmf-dist/source/latex/fixme/fixme.ins b/Master/texmf-dist/source/latex/fixme/fixme.ins
index 056038afc94..9ad1a0d14bf 100644
--- a/Master/texmf-dist/source/latex/fixme/fixme.ins
+++ b/Master/texmf-dist/source/latex/fixme/fixme.ins
@@ -1,6 +1,6 @@
%%% fixme.ins --- Installation file for FiXme
-%% Copyright (C) 1998-2002, 2004, 2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004, 2007, 2009, 2013, 2017-2019 Didier Verna
%% Author: Didier Verna <didier@didierverna.net>
@@ -28,7 +28,7 @@
\preamble
^^J^^J
-Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna^^J
+Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna^^J
This file is part of FiXme.^^J
FiXme may be distributed and/or modified under the conditions of the LaTeX
Project Public License, either version 1.3 of this license or (at your option)
diff --git a/Master/texmf-dist/tex/latex/fixme/fixme.sty b/Master/texmf-dist/tex/latex/fixme/fixme.sty
index 4bc6fbbe0e8..0c12233056b 100644
--- a/Master/texmf-dist/tex/latex/fixme/fixme.sty
+++ b/Master/texmf-dist/tex/latex/fixme/fixme.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
@@ -37,7 +37,7 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fixme}[2017/03/05 v4.4 Collaborative annotations for LaTeX2e]
+\ProvidesPackage{fixme}[2019/01/03 v4.5 Collaborative annotations for LaTeX2e]
\RequirePackage{ifthen}
\RequirePackage{verbatim}
@@ -83,6 +83,18 @@
\define@boolkey[fx]{#2}{#3}[true]{#1}
\@fxdefinevoidkey{#2}{no#3}{\@nameuse{fx@#2@#3}{false}}}
+\newcommand*\@fxdefineoptioninterface[2]{%
+ \expandafter\newcommand\csname FXDefine#2Key\endcsname{%
+ \@fxdefinekey{#1}}%
+ \expandafter\newcommand\csname FXDefine#2CmdKey\endcsname{%
+ \@fxdefinecmdkey{#1}}%
+ \expandafter\newcommand\csname FXDefine#2ChoiceKey\endcsname{%
+ \@fxdefinechoicekey{#1}}%
+ \expandafter\newcommand\csname FXDefine#2VoidKey\endcsname{%
+ \@fxdefinevoidkey{#1}}%
+ \expandafter\newcommand\expandafter*\csname FXDefine#2BoolKey\endcsname[2][]{%
+ \@fxdefineboolkey[##1]{#1}{##2}}}
+
\let\l@fixme\l@figure
\newcommand*\@fxdottedtocline[5]{%
\ifnum #1>\c@tocdepth \else
@@ -212,6 +224,8 @@
\@ifnextchar[%]
{\@FXRegisterLayout{late}}{\@FXRegisterLayout{late}[]}}}
+\@fxdefineoptioninterface{layout}{Layout}
+
\newcommand*\@fxtextstd[3]{\ignorespaces#3 \fxnotename{#1}: #2}
\DeclareRobustCommand*\@fxsignature[1]{%
\ifthenelse{\equal{#1}{}}{}{ -- {\@fxuseface{signature}#1}}}
@@ -300,6 +314,8 @@
commands.\MessageBreak
Otherwise, you must choose a different name.}}}
+\@fxdefineoptioninterface{envlayout}{EnvLayout}
+
\@fxnewface{env}
\newcommand*\FXEnvLayoutPlainBegin[2]{%
\@fxuseface{env}\ignorespaces#2 \fxnotename{#1}: \ignorespaces}
@@ -340,6 +356,8 @@
command.\MessageBreak
Otherwise, you must choose another name.}}}
+\@fxdefineoptioninterface{targetlayout}{TargetLayout}
+
\@fxnewface{target}
\newcommand\FXTargetLayoutPlain[2]{\@fxuseface{target}#2}
\FXRegisterTargetLayout{plain}{\FXTargetLayoutPlain}
@@ -485,7 +503,7 @@
\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\@fxendenv@draft#1{\unskip\@fxenvlayout@end{#1}{\cmdfx@note@author}}
\def\@@@fxbeginenv#1#2{%
\@fxpostconfigure\let\@fxpostconfigure\relax%
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/env/fxenvlayoutcolor.sty b/Master/texmf-dist/tex/latex/fixme/layouts/env/fxenvlayoutcolor.sty
index 20c465ad0d3..7b996f42e91 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/env/fxenvlayoutcolor.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/env/fxenvlayoutcolor.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/env/fxenvlayoutcolorsig.sty b/Master/texmf-dist/tex/latex/fixme/layouts/env/fxenvlayoutcolorsig.sty
index 2fb75189730..fd058bdbbb9 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/env/fxenvlayoutcolorsig.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/env/fxenvlayoutcolorsig.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutmarginnote.sty b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutmarginnote.sty
index 5927140ba36..52e1366f36e 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutmarginnote.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutmarginnote.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcmargin.sty b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcmargin.sty
index 1f9178d3852..13ac6ec9f25 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcmargin.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcmargin.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcnote.sty b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcnote.sty
index e1081a913da..6681de2291c 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcnote.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcnote.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcsigmargin.sty b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcsigmargin.sty
index 91ef6560dce..11ff0ea397b 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcsigmargin.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcsigmargin.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcsignote.sty b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcsignote.sty
index 92de60a0cd6..cefcd4b656b 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcsignote.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfcsignote.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfmargin.sty b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfmargin.sty
index b4ffdb504ec..f753b047263 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfmargin.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfmargin.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfnote.sty b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfnote.sty
index 8a375d69829..c9b26d63cbc 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfnote.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfnote.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfsigmargin.sty b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfsigmargin.sty
index 52d0743e63e..8c0a9aa2d1d 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfsigmargin.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfsigmargin.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
@@ -42,7 +42,12 @@
\RequirePackage{pdfcomment}
\newcommand*\FXLayoutPDFSigMargin[3]{%
- \pdfmargincomment[author={#3}]{\@fxsigstd{#1}{#2}{#3}}}
+ \begingroup%
+ \ifthenelse{\equal{#3}{}}{%
+ \def\@fxsignature##1{}}{%
+ \def\@fxsignature##1{ -- {\@fxuseface{signature}#1}}}%
+ \pdfmargincomment[author={#3}]{\@fxsigstd{#1}{#2}{#3}}%
+ \endgroup}
\FXRegisterLayout*[margin,marginclue,marginnote,pdfmargin]{pdfsigmargin}{%
\FXLayoutPDFSigMargin}
\endinput
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfsignote.sty b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfsignote.sty
index 4691897f8e3..76dfe6a05cc 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfsignote.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/fxlayoutpdfsignote.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
@@ -42,7 +42,12 @@
\RequirePackage{pdfcomment}
\newcommand*\FXLayoutPDFSigNote[3]{%
- \pdfcomment[author={#3}]{\@fxsigstd{#1}{#2}{#3}}}
+ \begingroup%
+ \ifthenelse{\equal{#3}{}}{%
+ \def\@fxsignature##1{}}{%
+ \def\@fxsignature##1{ -- {\@fxuseface{signature}#1}}}%
+ \pdfcomment[author={#3}]{\@fxsigstd{#1}{#2}{#3}}%
+ \endgroup}
\FXRegisterLayout[pdfnote]{pdfsignote}{\FXLayoutPDFSigNote}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutchangebar.sty b/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutchangebar.sty
index b5b22568fea..ffb83e97ed5 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutchangebar.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutchangebar.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutcolor.sty b/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutcolor.sty
index 336904ef6f3..32c2329ef45 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutcolor.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutcolor.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutcolorcb.sty b/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutcolorcb.sty
index 5c787dd77d9..c610b08e6f9 100644
--- a/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutcolorcb.sty
+++ b/Master/texmf-dist/tex/latex/fixme/layouts/target/fxtargetlayoutcolorcb.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/themes/fxthemecolor.sty b/Master/texmf-dist/tex/latex/fixme/themes/fxthemecolor.sty
index a4dc7fd9816..aaa2df9df4b 100644
--- a/Master/texmf-dist/tex/latex/fixme/themes/fxthemecolor.sty
+++ b/Master/texmf-dist/tex/latex/fixme/themes/fxthemecolor.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/themes/fxthemecolorsig.sty b/Master/texmf-dist/tex/latex/fixme/themes/fxthemecolorsig.sty
index 8fa7259385b..8e534636364 100644
--- a/Master/texmf-dist/tex/latex/fixme/themes/fxthemecolorsig.sty
+++ b/Master/texmf-dist/tex/latex/fixme/themes/fxthemecolorsig.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.
diff --git a/Master/texmf-dist/tex/latex/fixme/themes/fxthemesignature.sty b/Master/texmf-dist/tex/latex/fixme/themes/fxthemesignature.sty
index a98547bcd9b..d87f611de14 100644
--- a/Master/texmf-dist/tex/latex/fixme/themes/fxthemesignature.sty
+++ b/Master/texmf-dist/tex/latex/fixme/themes/fxthemesignature.sty
@@ -8,7 +8,7 @@
%%
-%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017 Didier Verna
+%% Copyright (C) 1998-2002, 2004-2007, 2009, 2013, 2017-2019 Didier Verna
%% This file is part of FiXme.