summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-10-11 22:30:33 +0000
committerKarl Berry <karl@freefriends.org>2014-10-11 22:30:33 +0000
commit4888499385c44655bec69496f0e01649d7636627 (patch)
treeb4530c653b64a9b165768c4423d6bcf0dd192c31
parent9406c7d3ffc09ac95d52d72e53d84e010a0a747d (diff)
latex-make (11oct14)
git-svn-id: svn://tug.org/texlive/trunk@35357 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/support/latex-make/LaTeX.mk921
-rw-r--r--Master/texmf-dist/doc/support/latex-make/LaTeX.mk.conf3
-rw-r--r--Master/texmf-dist/doc/support/latex-make/README63
-rw-r--r--Master/texmf-dist/doc/support/latex-make/figlatex.pdfbin0 -> 223740 bytes
-rw-r--r--Master/texmf-dist/doc/support/latex-make/latex-make.pdfbin0 -> 337659 bytes
-rw-r--r--Master/texmf-dist/doc/support/latex-make/texdepends.pdfbin0 -> 261794 bytes
-rwxr-xr-xMaster/texmf-dist/scripts/latex-make/figdepth.py51
-rwxr-xr-xMaster/texmf-dist/scripts/latex-make/gensubfig.py63
-rwxr-xr-xMaster/texmf-dist/scripts/latex-make/latexfilter.py59
-rwxr-xr-xMaster/texmf-dist/scripts/latex-make/svg2dev.py42
-rwxr-xr-xMaster/texmf-dist/scripts/latex-make/svgdepth.py55
-rw-r--r--Master/texmf-dist/source/support/latex-make/figlatex.dtx510
-rw-r--r--Master/texmf-dist/source/support/latex-make/latex-make.dtx1940
-rw-r--r--Master/texmf-dist/source/support/latex-make/latex-make.ins68
-rw-r--r--Master/texmf-dist/source/support/latex-make/pdfswitch.dtx127
-rw-r--r--Master/texmf-dist/source/support/latex-make/texdepends.dtx1037
-rw-r--r--Master/texmf-dist/tex/latex/latex-make/figlatex.cfg48
-rw-r--r--Master/texmf-dist/tex/latex/latex-make/figlatex.sty210
-rw-r--r--Master/texmf-dist/tex/latex/latex-make/pdfswitch.sty140
-rw-r--r--Master/texmf-dist/tex/latex/latex-make/texdepends.sty581
-rw-r--r--Master/texmf-dist/tex/latex/latex-make/texgraphicx.sty52
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds2
-rw-r--r--Master/tlpkg/tlpsrc/collection-pictures.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/latex-make.tlpsrc0
25 files changed, 5973 insertions, 2 deletions
diff --git a/Master/texmf-dist/doc/support/latex-make/LaTeX.mk b/Master/texmf-dist/doc/support/latex-make/LaTeX.mk
new file mode 100644
index 00000000000..eb11e60e83d
--- /dev/null
+++ b/Master/texmf-dist/doc/support/latex-make/LaTeX.mk
@@ -0,0 +1,921 @@
+
+####[ Check Software ]################################################
+
+ifeq ($(filter else-if,$(.FEATURES)),)
+$(error GNU Make 3.81 needed. Please, update your software.)
+ exit 1
+endif
+
+# Some people want to call our Makefile snippet with
+# make -f LaTeX.mk
+# This should not work as $(MAKE) is call recursively and will not read
+# LaTeX.mk again. We cannot just add LaTeX.mk to MAKEFILES as LaTeX.mk
+# should be read AFTER a standard Makefile (if any) that can define some
+# variables (LU_MASTERS, ...) that LaTeX.mk must see.
+# So I introduce an HACK here that try to workaround the situation. Keep in
+# mind that this hack is not perfect and does not handle all cases
+# (for example, "make -f my_latex_config.mk -f LaTeX.mk" will not recurse
+# correctly)
+ifeq ($(foreach m,$(MAKEFILES), $(m)) $(lastword $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+# We are the first file read after the ones from MAKEFILES
+# So we assume we are read due to "-f LaTeX.mk"
+LU_LaTeX.mk_NAME := $(lastword $(MAKEFILE_LIST))
+# Is this Makefile correctly read for recursive calls ?
+ifeq ($(findstring -f $(LU_LaTeX.mk_NAME),$(MAKE)),)
+$(info ********************************************************************************)
+$(info Warning: $(LU_LaTeX.mk_NAME) called directly. I suppose that you run:)
+$(info Warning: $(MAKE) -f $(LU_LaTeX.mk_NAME) $(MAKECMDGOALS))
+$(info Warning: or something similar that does not allow recursive invocation of make)
+$(info Warning: )
+$(info Warning: Trying to enable a workaround. This ACK will be disabled in a future)
+$(info Warning: release. Consider using another syntax, for example:)
+$(info Warning: $(MAKE) -f $(LU_LaTeX.mk_NAME) MAKE="$(MAKE) -f $(LU_LaTeX.mk_NAME)" $(MAKECMDGOALS))
+$(info ********************************************************************************)
+MAKE+= -f $(LU_LaTeX.mk_NAME)
+endif
+endif
+
+####[ Configuration ]################################################
+
+# For global site options
+-include LaTeX.mk.conf
+
+# list of messages categories to display
+LU_SHOW ?= warning #info debug debug-vars
+
+# Select GNU/BSD/MACOSX utils (cp, rm, mv, ...)
+LU_UTILS ?= GNU
+
+####[ End of configuration ]################################################
+# Modifying the remaining of this document may endanger you life!!! ;)
+
+#---------------------------------------------------------------------
+# Controling verbosity
+ifdef VERB
+MAK_VERB := $(VERB)
+else
+#MAK_VERB := verbose
+#MAK_VERB := normal
+MAK_VERB := quiet
+#MAK_VERB := silent
+endif
+
+#---------------------------------------------------------------------
+# MAK_VERB -> verbosity
+ifeq ($(MAK_VERB),verbose)
+COMMON_PREFIX = echo " ======> building " $@ "<======" ; \
+ printf "%s $(@F) due to:$(foreach file,$?,\n * $(file))\n" $1;
+#
+COMMON_HIDE :=#
+COMMON_CLEAN :=#
+SHOW_LATEX:=true
+else
+ifeq ($(MAK_VERB),normal)
+COMMON_PREFIX =#
+COMMON_HIDE := @
+COMMON_CLEAN :=#
+SHOW_LATEX:=true
+else
+ifeq ($(MAK_VERB),quiet)
+COMMON_PREFIX = @ echo " ======> building " $@ "<======" ;
+# echo "due to $?" ;
+COMMON_HIDE := @
+COMMON_CLEAN :=#
+SHOW_LATEX:=
+else # silent
+COMMON_PREFIX = @
+COMMON_HIDE := @
+COMMON_CLEAN := @
+SHOW_LATEX:=
+endif
+endif
+endif
+
+#---------------------------------------------------------------------
+# Old LaTeX have limitations
+_LU_PDFTEX_EXT ?= pdftex
+
+#########################################################################
+# Utilities
+LU_CP=$(LU_CP_$(LU_UTILS))
+LU_MV=$(LU_MV_$(LU_UTILS))
+LU_RM=$(LU_RM_$(LU_UTILS))
+LU_CP_GNU ?= cp -a --
+LU_MV_GNU ?= mv --
+LU_RM_GNU ?= rm -f --
+LU_CP_BSD ?= cp -p
+LU_MV_BSD ?= mv
+LU_RM_BSD ?= rm -f
+LU_CP_MACOSX ?= /bin/cp -p
+LU_MV_MACOSX ?= /bin/mv
+LU_RM_MACOSX ?= /bin/rm -f
+
+lu-show=\
+$(if $(filter $(LU_SHOW),$(1)), \
+ $(if $(2), \
+ $(if $(filter-out $(2),$(MAKELEVEL)),,$(3)), \
+ $(3)))
+lu-show-infos=\
+$(if $(filter $(LU_SHOW),$(1)), \
+ $(if $(2), \
+ $(if $(filter-out $(2),$(MAKELEVEL)),,$(warning $(3))), \
+ $(warning $(3))))
+lu-show-rules=$(call lu-show-infos,info,0,$(1))
+lu-show-flavors=$(call lu-show-infos,info,0,$(1))
+lu-show-var=$(call lu-show-infos,debug-vars,, * Set $(1)=$($(1)))
+lu-show-read-var=$(eval $(call lu-show-infos,debug-vars,, Reading $(1) in $(2) ctx: $(3)))$(3)
+lu-show-readone-var=$(eval $(call lu-show-infos,debug-vars,, Reading $(1) for $(2) [one value]: $(3)))$(3)
+lu-show-set-var=$(call lu-show-infos,debug-vars,, * Setting $(1) for $(2) to value: $(3))
+lu-show-add-var=$(call lu-show-infos,debug-vars,, * Adding to $(1) for $(2) values: $(value 3))
+lu-show-add-var2=$(call lu-show-infos,warning,, * Adding to $(1) for $(2) values: $(value 3))
+
+lu-save-file=$(call lu-show,debug,,echo "saving $1" ;) \
+ if [ -f "$1" ];then $(LU_CP) "$1" "$2" ;else $(LU_RM) "$2" ;fi
+lu-cmprestaure-file=\
+ if cmp -s "$1" "$2"; then \
+ $(LU_MV) "$2" "$1" ; \
+ $(call lu-show,debug,,echo "$1" not modified ;) \
+ else \
+ $(call lu-show,debug,,echo "$1" modified ;) \
+ if [ -f "$2" -o -f "$1" ]; then \
+ $(RM) -- "$2" ; \
+ $3 \
+ fi ; \
+ fi
+
+lu-clean=$(if $(strip $(1)),$(RM) $(1))
+
+define lu-bug # description
+ $$(warning Internal error: $(1))
+ $$(error You probably found a bug. Please, report it.)
+endef
+
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+################## #########################
+################## Variables #########################
+################## #########################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+#
+# _LU_FLAVORS_DEFINED : list of available flavors
+# _LU_FLAV_*_'flavname' : per flavor variables
+# where * can be :
+# PROGNAME : variable name for programme (and .._OPTIONS for options)
+# EXT : extension of created file
+# TARGETNAME : global target
+# DEPFLAVOR : flavor to depend upon
+# CLEANFIGEXT : extensions to clean for fig figures
+_LU_FLAVORS_DEFINED = $(_LU_FLAVORS_DEFINED_TEX) $(_LU_FLAVORS_DEFINED_DVI)
+
+# INDEXES_TYPES = GLOSS INDEX
+# INDEXES_INDEX = name1 ...
+# INDEXES_GLOSS = name2 ...
+# INDEX_name1_SRC
+# GLOSS_name2_SRC
+
+define _lu-getvalues# 1:VAR 2:CTX (no inheritage)
+$(if $(filter-out undefined,$(origin LU_$2$1)),$(LU_$2$1),$($2$1) $(_LU_$2$1_MK) $(TD_$2$1))
+endef
+define lu-define-addvar # 1:suffix_fnname 2:CTX 3:disp-debug 4:nb_args 5:inherited_ctx 6:ctx-build-depend
+ define lu-addtovar$1 # 1:VAR 2:... $4: value
+ _LU_$2$$1_MK+=$$($4)
+ $$(call lu-show-add-var,$$1,$3,$$(value $4))
+ endef
+ define lu-def-addvar-inherited-ctx$1 # 1:VAR 2:...
+ $6
+ _LU_$2$$1_INHERITED_CTX=$$(sort \
+ $$(foreach ctx,$5,$$(ctx) $$(if $$(filter-out undefined,$$(origin \
+ LU_$$(ctx)$$1)),,\
+ $$(_LU_$$(ctx)$$1_INHERITED_CTX))))
+ $$$$(call lu-show-var,_LU_$2$$1_INHERITED_CTX)
+ endef
+ define lu-getvalues$1# 1:VAR 2:...
+$$(if $$(filter-out undefined,$$(origin _LU_$2$$1_INHERITED_CTX)),,$$(eval \
+ $$(call lu-def-addvar-inherited-ctx$1,$$1,$$2,$$3,$$4,$$5,$$6)\
+))$$(call lu-show-read-var,$$1,$3,$$(foreach ctx,\
+ $(if $2,$2,GLOBAL) $$(if $$(filter-out undefined,$$(origin LU_$2$$1)),,\
+ $$(_LU_$2$$1_INHERITED_CTX))\
+ ,$$(call _lu-getvalues,$$1,$$(filter-out GLOBAL,$$(ctx)))))
+ endef
+endef
+
+# Global variable
+# VAR (DEPENDS)
+$(eval $(call lu-define-addvar,-global,,global,2))
+
+# Per flavor variable
+# FLAVOR_$2_VAR (FLAVOR_DVI_DEPENDS)
+# 2: flavor name
+# Inherit from VAR (DEPENDS)
+$(eval $(call lu-define-addvar,-flavor,FLAVOR_$$2_,flavor $$2,3,\
+ GLOBAL,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx-global,$$1)) \
+))
+
+# Per master variable
+# $2_VAR (source_DEPENDS)
+# 2: master name
+# Inherit from VAR (DEPENDS)
+$(eval $(call lu-define-addvar,-master,$$2_,master $$2,3,\
+ GLOBAL,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx-global,$$1)) \
+))
+
+# Per target variable
+# $2$(EXT of $3)_VAR (source.dvi_DEPENDS)
+# 2: master name
+# 3: flavor name
+# Inherit from $2_VAR FLAVOR_$3_VAR (source_DEPENDS FLAVOR_DVI_DEPENDS)
+$(eval $(call lu-define-addvar,,$$2$$(call lu-getvalue-flavor,EXT,$$3)_,target $$2$$(call lu-getvalue-flavor,EXT,$$3),4,\
+ $$2_ FLAVOR_$$3_,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx-master,$$1,$$2)) \
+ $$(eval $$(call lu-def-addvar-inherited-ctx-flavor,$$1,$$3)) \
+))
+
+# Per index/glossary variable
+# $(2)_$(3)_VAR (INDEX_source_DEPENDS)
+# 2: type (INDEX, GLOSS, ...)
+# 3: index name
+# Inherit from VAR (DEPENDS)
+$(eval $(call lu-define-addvar,-global-index,$$2_$$3_,index $$3[$$2],4,\
+ GLOBAL,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx-global,$$1)) \
+))
+
+# Per master and per index/glossary variable
+# $(2)_$(3)_$(4)_VAR (source_INDEX_source_DEPENDS)
+# 2: master name
+# 3: type (INDEX, GLOSS, ...)
+# 4: index name
+# Inherit from $2_VAR $3_$4_VAR (source_DEPENDS INDEX_source_DEPENDS)
+$(eval $(call lu-define-addvar,-master-index,$$2_$$3_$$4_,index $$2/$$4[$$3],5,\
+ $$2_ $$3_$$4_,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx-master,$$1,$$2)) \
+ $$(eval $$(call lu-def-addvar-inherited-ctx-global-index,$$1,$$3,$$4)) \
+))
+
+# Per target and per index/glossary variable
+# $(2)$(EXT of $3)_$(4)_$(5)_VAR (source.dvi_INDEX_source_DEPENDS)
+# 2: master name
+# 3: flavor name
+# 4: type (INDEX, GLOSS, ...)
+# 5: index name
+# Inherit from $2$(EXT of $3)_VAR $(2)_$(3)_$(4)_VAR
+# (source.dvi_DEPENDS source_INDEX_source_DEPENDS)
+$(eval $(call lu-define-addvar,-index,$$2$$(call lu-getvalue-flavor,EXT,$$3)_$$4_$$5_,index $$2$$(call lu-getvalue-flavor,EXT,$$3)/$$5[$$4],6,\
+ $$2$$(call lu-getvalue-flavor,EXT,$$3)_ $$2_$$4_$$5_,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx,$$1,$$2,$$3)) \
+ $$(eval $$(call lu-def-addvar-inherited-ctx-master-index,$$1,$$2,$$4,$$5)) \
+))
+
+define lu-setvar-global # 1:name 2:value
+ _LU_$(1) ?= $(2)
+ $$(eval $$(call lu-show-set-var,$(1),global,$(2)))
+endef
+
+define lu-setvar-flavor # 1:name 2:flavor 3:value
+ _LU_FLAVOR_$(2)_$(1) ?= $(3)
+ $$(eval $$(call lu-show-set-var,$(1),flavor $(2),$(3)))
+endef
+
+define lu-setvar-master # 1:name 2:master 3:value
+ _LU_$(2)_$(1) ?= $(3)
+ $$(eval $$(call lu-show-set-var,$(1),master $(2),$(3)))
+endef
+
+define lu-setvar # 1:name 2:master 3:flavor 4:value
+ _LU_$(2)$$(call lu-getvalue-flavor,EXT,$(3))_$(1)=$(4)
+ $$(eval $$(call lu-show-set-var,$(1),master/flavor $(2)/$(3),$(4)))
+endef
+
+define lu-getvalue # 1:name 2:master 3:flavor
+$(call lu-show-readone-var,$(1),master/flavor $(2)/$(3),$(or \
+ $(LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(1)), \
+ $(TD_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(1)), \
+ $(LU_$(2)_$(1)), \
+ $($(2)_$(1)), \
+ $(LU_FLAVOR_$(3)_$(1)), \
+ $(LU_$(1)), \
+ $($(1)), \
+ $(_LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(1)), \
+ $(_LU_$(2)_$(1)), \
+ $(_LU_FLAVOR_$(3)_$(1)), \
+ $(_LU_$(1))\
+))
+endef
+
+define lu-getvalue-flavor # 1:name 2:flavor
+$(call lu-show-readone-var,$(1),flavor $(2),$(or \
+ $(LU_FLAVOR_$(2)_$(1)), \
+ $(LU_$(1)), \
+ $($(1)), \
+ $(_LU_FLAVOR_$(2)_$(1)), \
+ $(_LU_$(1))\
+))
+endef
+
+define lu-getvalue-master # 1:name 2:master
+$(call lu-show-readone-var,$(1),master $(2),$(or \
+ $(LU_$(2)_$(1)), \
+ $($(2)_$(1)), \
+ $(LU_$(1)), \
+ $($(1)), \
+ $(_LU_$(2)_$(1)), \
+ $(_LU_$(1))\
+))
+endef
+
+define lu-getvalue-index # 1:name 2:master 3:flavor 4:type 5:indexname
+$(call lu-show-readone-var,$(1),master/flavor/index $(2)/$(3)/[$(4)]$(5),$(or \
+ $(LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(4)_$(5)_$(1)), \
+ $(LU_$(2)_$(4)_$(5)_$(1)), \
+ $(TD_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(4)_$(5)_$(1)), \
+ $($(2)_$(4)_$(5)_$(1)), \
+ $(LU_$(4)_$(5)_$(1)), \
+ $($(4)_$(5)_$(1)), \
+ $(LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(4)_$(1)), \
+ $(LU_$(2)_$(4)_$(1)), \
+ $($(2)_$(4)_$(1)), \
+ $(LU_$(4)_$(1)), \
+ $($(4)_$(1)), \
+ $(LU_$(2)_$(1)), \
+ $($(2)_$(1)), \
+ $(LU_FLAVOR_$(3)_$(1)), \
+ $(LU_$(1)), \
+ $($(1)), \
+ $(_LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(4)_$(5)_$(1)), \
+ $(_LU_$(2)_$(4)_$(5)_$(1)), \
+ $(_LU_$(4)_$(5)_$(1)), \
+ $(_LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(4)_$(1)), \
+ $(_LU_$(2)_$(4)_$(1)), \
+ $(_LU_FLAVOR_$(3)_$(4)_$(1)), \
+ $(_LU_$(4)_$(1)), \
+ $(_LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(1)), \
+ $(_LU_$(2)_$(1)), \
+ $(_LU_FLAVOR_$(3)_$(1)), \
+ $(_LU_$(1))\
+))
+endef
+
+define lu-call-prog # 1:varname 2:master 3:flavor [4:index]
+$(call lu-getvalue,$(1),$(2),$(3)) $(call lu-getvalues,$(1)_OPTIONS,$(2),$(3))
+endef
+
+define lu-call-prog-index # 1:varname 2:master 3:flavor 4:type 5:indexname
+$(call lu-getvalue$(if $(4),-index),$(1),$(2),$(3),$(4),$(5)) \
+ $(call lu-getvalues$(if $(4),-index),$(1)_OPTIONS,$(2),$(3),$(4),$(5))
+endef
+
+define lu-call-prog-flavor # 1:master 2:flavor
+$(call lu-call-prog,$(call lu-getvalue,VARPROG,$(1),$(2)),$(1),$(2))
+endef
+
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+################## #########################
+################## Global variables #########################
+################## #########################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+
+# Globals variables
+$(eval $(call lu-setvar-global,LATEX,latex))
+$(eval $(call lu-setvar-global,PDFLATEX,pdflatex))
+$(eval $(call lu-setvar-global,DVIPS,dvips))
+$(eval $(call lu-setvar-global,DVIPDFM,dvipdfm))
+$(eval $(call lu-setvar-global,BIBTEX,bibtex))
+#$(eval $(call lu-setvar-global,MPOST,TEX="$(LATEX)" mpost))
+$(eval $(call lu-setvar-global,FIG2DEV,fig2dev))
+#$(eval $(call lu-setvar-global,SVG2DEV,svg2dev))
+$(eval $(call lu-setvar-global,EPSTOPDF,epstopdf))
+$(eval $(call lu-setvar-global,MAKEINDEX,makeindex))
+
+# Look for local version, then texmfscript, then in PATH of our program
+# At each location, we prefer with suffix than without
+define _lu_which # VARNAME progname
+ ifeq ($(origin _LU_$(1)_DEFAULT), undefined)
+ _LU_$(1)_DEFAULT := $$(firstword $$(wildcard \
+ $$(addprefix bin/,$(2) $$(basename $(2))) \
+ $$(addprefix ./,$(2) $$(basename $(2))) \
+ $$(shell kpsewhich -format texmfscripts $(2)) \
+ $$(shell kpsewhich -format texmfscripts $$(basename $(2))) \
+ $$(foreach dir,$$(subst :, ,$$(PATH)), \
+ $$(dir)/$(2) $$(dir)/$$(basename $(2))) \
+ ) $(2))
+ export _LU_$(1)_DEFAULT
+ endif
+ $$(eval $$(call lu-setvar-global,$(1),$$(_LU_$(1)_DEFAULT)))
+endef
+
+$(eval $(call _lu_which,GENSUBFIG,gensubfig.py))
+$(eval $(call _lu_which,FIGDEPTH,figdepth.py))
+$(eval $(call _lu_which,GENSUBSVG,gensubfig.py))
+$(eval $(call _lu_which,SVGDEPTH,svgdepth.py))
+$(eval $(call _lu_which,SVG2DEV,svg2dev.py))
+$(eval $(call _lu_which,LATEXFILTER,latexfilter.py))
+
+# Rules to use to check if the build document (dvi or pdf) is up-to-date
+# This can be overruled per document manually and/or automatically
+#REBUILD_RULES ?= latex texdepends bibtopic bibtopic_undefined_references
+$(eval $(call lu-addtovar-global,REBUILD_RULES,latex texdepends))
+
+# Default maximum recursion level
+$(eval $(call lu-setvar-global,MAX_REC,6))
+
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+################## #########################
+################## Flavors #########################
+################## #########################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+
+define lu-create-texflavor # 1:name 2:tex_prog 3:file_ext
+ # 4:master_cible 5:fig_extention_to_clean
+ _LU_FLAVORS_DEFINED_TEX += $(1)
+ $(eval $(call lu-setvar-flavor,VARPROG,$(1),$(2)))
+ $(eval $(call lu-setvar-flavor,EXT,$(1),$(3)))
+ $(eval $(call lu-setvar-flavor,TARGETNAME,$(1),$(4)))
+ $(eval $(call lu-addtovar-flavor,CLEANFIGEXT,$(1),$(5)))
+ $(eval $(call lu-addtovar-flavor,CLEANSVGEXT,$(1),$(5)))
+endef
+
+define lu-create-dviflavor # 1:name 2:dvi_prog 3:file_ext
+ # 4:master_cible 5:tex_flavor_depend
+ $$(eval $$(call lu-define-flavor,$(5)))
+ _LU_FLAVORS_DEFINED_DVI += $(1)
+ $(eval $(call lu-setvar-flavor,VARPROG,$(1),$(2)))
+ $(eval $(call lu-setvar-flavor,EXT,$(1),$(3)))
+ $(eval $(call lu-setvar-flavor,TARGETNAME,$(1),$(4)))
+ $(eval $(call lu-setvar-flavor,DEPFLAVOR,$(1),$(5)))
+endef
+
+define lu-create-flavor # 1:name 2:type 3..7:options
+ $$(if $$(filter $(1),$(_LU_FLAVORS_DEFINED)), \
+ $$(call lu-show-flavors,Flavor $(1) already defined), \
+ $$(call lu-show-flavors,Creating flavor $(1) ($(2))) \
+ $$(eval $$(call lu-create-$(2)flavor,$(1),$(3),$(4),$(5),$(6),$(7))))
+endef
+
+define lu-define-flavor # 1:name
+ $$(eval $$(call lu-define-flavor-$(1)))
+endef
+
+define lu-flavor-rules # 1:name
+ $$(call lu-show-flavors,Defining rules for flavor $(1))
+ $$(if $$(call lu-getvalue-flavor,TARGETNAME,$(1)), \
+ $$(call lu-getvalue-flavor,TARGETNAME,$(1)): \
+ $$(call lu-getvalues-flavor,TARGETS,$(1)))
+ $$(if $$(call lu-getvalue-flavor,TARGETNAME,$(1)), \
+ .PHONY: $$(call lu-getvalue-flavor,TARGETNAME,$(1)))
+endef
+
+define lu-define-flavor-DVI #
+ $$(eval $$(call lu-create-flavor,DVI,tex,LATEX,.dvi,dvi,\
+ .pstex_t .pstex))
+endef
+
+define lu-define-flavor-PDF #
+ $$(eval $$(call lu-create-flavor,PDF,tex,PDFLATEX,.pdf,pdf,\
+ .pdftex_t .$$(_LU_PDFTEX_EXT)))
+endef
+
+define lu-define-flavor-PS #
+ $$(eval $$(call lu-create-flavor,PS,dvi,DVIPS,.ps,ps,DVI))
+endef
+
+define lu-define-flavor-DVIPDF #
+ $$(eval $$(call lu-create-flavor,DVIPDF,dvi,DVIPDFM,.pdf,pdf,DVI))
+endef
+
+$(eval $(call lu-addtovar-global,FLAVORS,PDF PS))
+
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+################## #########################
+################## Masters #########################
+################## #########################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+
+define _lu-do-latex # 1:master 2:flavor 3:source.tex 4:ext(.dvi/.pdf)
+ exec 3>&1; \
+ run() { \
+ echo -n "Running:" 1>&3 ; \
+ for arg; do \
+ echo -n " '$$arg'" 1>&3 ; \
+ done ; echo 1>&3 ; \
+ "$$@" ; \
+ }; \
+ doit() { \
+ $(RM) -v "$(1)$(4)_FAILED" \
+ "$(1)$(4)_NEED_REBUILD" \
+ "$(1)$(4).mk" ;\
+ ( echo X | \
+ run $(call lu-call-prog-flavor,$(1),$(2)) \
+ --interaction errorstopmode \
+ --jobname "$(1)" \
+ '\RequirePackage[extension='"$(4)"']{texdepends}\input'"{$(3)}" || \
+ touch "$(1)$(4)_FAILED" ; \
+ if grep -sq '^! LaTeX Error:' "$(1).log" ; then \
+ touch "$(1)$(4)_FAILED" ; \
+ fi \
+ ) | $(call lu-call-prog,LATEXFILTER,$(1),$(2)) ; \
+ NO_TEXDEPENDS_FILE=0 ;\
+ if [ ! -f "$(1)$(4).mk" ]; then \
+ NO_TEXDEPENDS_FILE=1 ;\
+ fi ;\
+ sed -e 's,\\openout[0-9]* = `\(.*\)'"'.,TD_$(1)$(4)_OUTPUTS += \1,p;d" \
+ "$(1).log" >> "$(1)$(4).mk" ;\
+ if [ -f "$(1)$(4)_FAILED" ]; then \
+ echo "*************************************" ;\
+ echo "Building $(1)$(4) fails" ;\
+ echo "*************************************" ;\
+ echo "Here are the last lines of the log file" ;\
+ echo "If this is not enought, try to" ;\
+ echo "call 'make' with 'VERB=verbose' option" ;\
+ echo "*************************************" ;\
+ echo "==> Last lines in $(1).log <==" ; \
+ sed -e '/^[?] X$$/,$$d' \
+ -e '/^Here is how much of TeX'"'"'s memory you used:$$/,$$d' \
+ < "$(1).log" | tail -n 20; \
+ return 1; \
+ fi; \
+ if [ "$$NO_TEXDEPENDS_FILE" = 1 ]; then \
+ echo "*************************************" ;\
+ echo "texdepends does not seems be loaded" ;\
+ echo "Either your (La)TeX installation is wrong or you found a bug." ;\
+ echo "If so, please, report it (with the result of shell command 'kpsepath tex')";\
+ echo "Aborting compilation" ;\
+ echo "*************************************" ;\
+ touch "$(1)$(4)_FAILED" ; \
+ return 1 ;\
+ fi ;\
+ }; doit
+endef
+
+.PHONY: clean-build-fig
+
+##########################################################
+define lu-master-texflavor-index-vars # MASTER FLAVOR TYPE INDEX ext(.dvi/.pdf)
+ $$(call lu-show-rules,Setting flavor index vars for $(1)/$(2)/[$(3)]$(4))
+ $$(eval $$(call lu-addtovar,DEPENDS,$(1),$(2), \
+ $$(call lu-getvalue-index,TARGET,$(1),$(2),$(3),$(4))))
+ $$(eval $$(call lu-addtovar,WATCHFILES,$(1),$(2), \
+ $$(call lu-getvalue-index,SRC,$(1),$(2),$(3),$(4))))
+endef ####################################################
+define lu-master-texflavor-index-rules # MASTER FLAVOR TYPE INDEX ext(.dvi/.pdf)
+ $$(call lu-show-rules,Setting flavor index rules for $(1)/$(2)/[$(3)]$(4))
+ $$(if $$(_LU_DEF_IND_$$(call lu-getvalue-index,TARGET,$(1),$(2),$(3),$(4))), \
+ $$(call lu-show-rules,=> Skipping: already defined in flavor $$(_LU_DEF_IND_$$(call lu-getvalue-index,TARGET,$(1),$(2),$(3),$(4)))), \
+ $$(eval $$(call _lu-master-texflavor-index-rules\
+ ,$(1),$(2),$(3),$(4),$(5),$$(call lu-getvalue-index,TARGET,$(1),$(2),$(3),$(4)))))
+endef
+define _lu-master-texflavor-index-rules # MASTER FLAVOR TYPE INDEX ext TARGET
+ $(6): \
+ $$(call lu-getvalue-index,SRC,$(1),$(2),$(3),$(4)) \
+ $$(wildcard $$(call lu-getvalue-index,STYLE,$(1),$(2),$(3),$(4)))
+ $$(COMMON_PREFIX)$$(call lu-call-prog-index,MAKEINDEX,$(1),$(2),$(3),$(4)) \
+ $$(addprefix -s ,$$(call lu-getvalue-index,STYLE,$(1),$(2),$(3),$(4))) \
+ -o $$@ $$<
+ _LU_DEF_IND_$(6)=$(2)
+ clean::
+ $$(call lu-clean,$$(call lu-getvalue-index,TARGET,$(1),$(2),$(3),$(4)) \
+ $$(addsuffix .ilg,$$(basename \
+ $$(call lu-getvalue-index,SRC,$(1),$(2),$(3),$(4)))))
+endef ####################################################
+define lu-master-texflavor-index # MASTER FLAVOR INDEX ext(.dvi/.pdf)
+ $$(eval $$(call lu-master-texflavor-index-vars,$(1),$(2),$(3),$(4)))
+ $$(eval $$(call lu-master-texflavor-index-rules,$(1),$(2),$(3),$(4)))
+endef
+##########################################################
+
+##########################################################
+define lu-master-texflavor-vars # MASTER FLAVOR ext(.dvi/.pdf)
+ $$(call lu-show-rules,Setting flavor vars for $(1)/$(2))
+ -include $(1)$(3).mk
+ $$(eval $$(call lu-addtovar,DEPENDS,$(1),$(2), \
+ $$(call lu-getvalues,FIGURES,$(1),$(2)) \
+ $$(call lu-getvalues,BIBFILES,$(1),$(2)) \
+ $$(wildcard $$(call lu-getvalues,INPUTS,$(1),$(2))) \
+ $$(wildcard $$(call lu-getvalues,BIBSTYLES,$(1),$(2))) \
+ $$(call lu-getvalues,BBLFILES,$(1),$(2))\
+ ))
+
+ $$(eval $$(call lu-addtovar-flavor,TARGETS,$(2),$(1)$(3)))
+
+ $$(eval $$(call lu-addtovar,GPATH,$(1),$(2), \
+ $$(subst },,$$(subst {,,$$(subst }{, ,\
+ $$(call lu-getvalue,GRAPHICSPATH,$(1),$(2)))))))
+
+ $$(if $$(sort $$(call lu-getvalues,SUBFIGS,$(1),$(2))), \
+ $$(eval include $$(addsuffix .mk,$$(sort \
+ $$(call lu-getvalues,SUBFIGS,$(1),$(2))))))
+
+ $$(eval $$(call lu-addtovar,WATCHFILES,$(1),$(2), \
+ $$(filter %.aux, $$(call lu-getvalues,OUTPUTS,$(1),$(2)))))
+
+ $$(foreach type,$$(call lu-getvalues,INDEXES,$(1),$(2)), \
+ $$(foreach index,$$(call lu-getvalues,INDEXES_$$(type),$(1),$(2)), \
+ $$(eval $$(call lu-master-texflavor-index-vars,$(1),$(2),$$(type),$$(index),$(3)))))
+endef ####################################################
+define lu-master-texflavor-rules # MASTER FLAVOR ext(.dvi/.pdf)
+ $$(call lu-show-rules,Defining flavor rules for $(1)/$(2))
+ $$(call lu-getvalues,BBLFILES,$(1),$(2)): \
+ $$(sort $$(call lu-getvalues,BIBFILES,$(1),$(2)) \
+ $$(wildcard $$(call lu-getvalues,BIBSTYLES,$(1),$(2))))
+ $(1)$(3): %$(3): \
+ $$(call lu-getvalues,DEPENDS,$(1),$(2)) \
+ $$(call lu-getvalues,REQUIRED,$(1),$(2)) \
+ $$(if $$(wildcard $(1)$(3)_FAILED),LU_FORCE,) \
+ $$(if $$(wildcard $(1)$(3)_NEED_REBUILD),LU_FORCE,) \
+ $$(if $$(wildcard $(1)$(3)_NEED_REBUILD_IN_PROGRESS),LU_FORCE,)
+ $$(if $$(filter-out $$(LU_REC_LEVEL),$$(call lu-getvalue,MAX_REC,$(1),$(2))),, \
+ $$(warning *********************************) \
+ $$(warning *********************************) \
+ $$(warning *********************************) \
+ $$(warning Stopping generation of $$@) \
+ $$(warning I got max recursion level $$(LU_$(1)_$(2)_MAX_REC)) \
+ $$(warning Set LU_$(1)_$(2)_MAX_REC, LU_MAX_REC_$(1) or LU_MAX_REC if you need it) \
+ $$(warning *********************************) \
+ $$(warning *********************************) \
+ $$(warning *********************************) \
+ $$(error Aborting generation of $$@))
+ $$(MAKE) LU_REC_MASTER="$(1)" LU_REC_FLAVOR="$(2)" LU_REC_TARGET="$$@"\
+ LU_WATCH_FILES_SAVE
+ $$(COMMON_PREFIX)$$(call _lu-do-latex\
+ ,$(1),$(2),$$(call lu-getvalue-master,MAIN,$(1)),$(3))
+ $$(MAKE) LU_REC_MASTER="$(1)" LU_REC_FLAVOR="$(2)" LU_REC_TARGET="$$@"\
+ LU_WATCH_FILES_RESTORE
+ $$(MAKE) LU_REC_MASTER="$(1)" LU_REC_FLAVOR="$(2)" LU_REC_TARGET="$$@"\
+ $(1)$(3)_NEED_REBUILD
+ifneq ($(LU_REC_TARGET),)
+ $(1)$(3)_NEED_REBUILD_IN_PROGRESS:
+ $$(COMMON_HIDE)touch $(1)$(3)_NEED_REBUILD_IN_PROGRESS
+ $$(addprefix LU_rebuild_,$$(call lu-getvalues,REBUILD_RULES,$(1),$(2))): \
+ $(1)$(3)_NEED_REBUILD_IN_PROGRESS
+.PHONY: $(1)$(3)_NEED_REBUILD
+ $(1)$(3)_NEED_REBUILD: \
+ $(1)$(3)_NEED_REBUILD_IN_PROGRESS \
+ $$(addprefix LU_rebuild_,$$(call lu-getvalues,REBUILD_RULES,$(1),$(2)))
+ $$(COMMON_HIDE)$(RM) $(1)$(3)_NEED_REBUILD_IN_PROGRESS
+ $$(COMMON_HIDE)if [ -f "$(1)$(3)_NEED_REBUILD" ];then\
+ echo "********************************************" ;\
+ echo "*********** New build needed ***************" ;\
+ echo "********************************************" ;\
+ cat "$(1)$(3)_NEED_REBUILD" ; \
+ echo "********************************************" ;\
+ fi
+ $$(MAKE) LU_REC_LEVEL=$$(shell expr $$(LU_REC_LEVEL) + 1) \
+ $$(LU_REC_TARGET)
+endif
+ clean-build-fig::
+ $$(call lu-clean,$$(foreach fig, \
+ $$(basename $$(wildcard $$(filter %.fig, \
+ $$(call lu-getvalues,FIGURES,$(1),$(2))))), \
+ $$(addprefix $$(fig),$$(call lu-getvalues-flavor,CLEANFIGEXT,$(2)))))
+ $$(call lu-clean,$$(foreach svg, \
+ $$(basename $$(wildcard $$(filter %.svg, \
+ $$(call lu-getvalues,FIGURES,$(1),$(2))))), \
+ $$(addprefix $$(svg),$$(call lu-getvalues-flavor,CLEANSVGEXT,$(2)))))
+ clean:: clean-build-fig
+ $$(call lu-clean,$$(call lu-getvalues,OUTPUTS,$(1),$(2)) \
+ $$(call lu-getvalues,BBLFILES,$(1),$(2)) \
+ $$(addsuffix .mk,$$(call lu-getvalues,SUBFIGS,$(1),$(2))) \
+ $$(patsubst %.bbl,%.blg,$$(call lu-getvalues,BBLFILES,$(1),$(2))))
+ $$(call lu-clean,$$(wildcard $(1).log))
+ distclean::
+ $$(call lu-clean,$$(wildcard $(1)$(3) $(1)$(3)_FAILED \
+ $(1)$(3)_NEED_REBUILD $(1)$(3)_NEED_REBUILD_IN_PROGRESS))
+ $$(foreach type,$$(call lu-getvalues,INDEXES,$(1),$(2)), \
+ $$(foreach index,$$(call lu-getvalues,INDEXES_$$(type),$(1),$(2)), \
+ $$(eval $$(call lu-master-texflavor-index-rules,$(1),$(2),$$(type),$$(index),$(3)))))
+endef ####################################################
+define lu-master-texflavor # MASTER FLAVOR ext(.dvi/.pdf)
+ $$(eval $$(call lu-master-texflavor-vars,$(1),$(2),$(3)))
+ $$(eval $$(call lu-master-texflavor-rules,$(1),$(2),$(3)))
+endef
+##########################################################
+
+##########################################################
+define lu-master-dviflavor-vars # MASTER FLAVOR ext(.ps)
+ $$(call lu-show-rules,Setting flavor vars for \
+ $(1)/$(2)/$$(call lu-getvalue-flavor,DEPFLAVOR,$(2)))
+# $$(eval $$(call lu-addvar,VARPROG,$(1),$(2)))
+# $$(eval $$(call lu-addvar,$$(call lu-getvalue,VARPROG,$(1),$(2)),$(1),$(2)))
+ $$(eval $$(call lu-addtovar-flavor,TARGETS,$(2),$(1)$(3)))
+endef ####################################################
+define lu-master-dviflavor-rules # MASTER FLAVOR ext(.ps)
+ $$(call lu-show-rules,Defining flavor rules for \
+ $(1)/$(2)/$$(call lu-getvalue-flavor,DEPFLAVOR,$(2)))
+ $(1)$(3): %$(3): %$$(call lu-getvalue-flavor,EXT,$$(call lu-getvalue-flavor,DEPFLAVOR,$(2)))
+ $$(call lu-call-prog-flavor,$(1),$(2)) -o $$@ $$<
+ distclean::
+ $$(call lu-clean,$$(wildcard $(1)$(3)))
+endef ####################################################
+define lu-master-dviflavor # MASTER FLAVOR ext(.ps)
+ $$(eval $$(call lu-master-dviflavor-vars,$(1),$(2),$(3)))
+ $$(eval $$(call lu-master-dviflavor-rules,$(1),$(2),$(3)))
+endef
+##########################################################
+
+##########################################################
+define lu-master-vars # MASTER
+ $$(call lu-show-rules,Setting vars for $(1))
+ $$(eval $$(call lu-setvar-master,MAIN,$(1),$(1).tex))
+ $$(eval $$(call lu-addtovar-master,DEPENDS,$(1),\
+ $$(call lu-getvalue-master,MAIN,$(1))))
+ _LU_$(1)_DVI_FLAVORS=$$(filter $$(_LU_FLAVORS_DEFINED_DVI),\
+ $$(sort $$(call lu-getvalues-master,FLAVORS,$(1))))
+ _LU_$(1)_TEX_FLAVORS=$$(filter $$(_LU_FLAVORS_DEFINED_TEX),\
+ $$(sort $$(call lu-getvalues-master,FLAVORS,$(1)) \
+ $$(LU_REC_FLAVOR) \
+ $$(foreach dvi,$$(call lu-getvalues-master,FLAVORS,$(1)), \
+ $$(call lu-getvalue-flavor,DEPFLAVOR,$$(dvi)))))
+ $$(foreach flav,$$(_LU_$(1)_TEX_FLAVORS), $$(eval $$(call \
+ lu-master-texflavor-vars,$(1),$$(flav),$$(call lu-getvalue-flavor,EXT,$$(flav)))))
+ $$(foreach flav,$$(_LU_$(1)_DVI_FLAVORS), $$(eval $$(call \
+ lu-master-dviflavor-vars,$(1),$$(flav),$$(call lu-getvalue-flavor,EXT,$$(flav)))))
+endef ####################################################
+define lu-master-rules # MASTER
+ $$(call lu-show-rules,Defining rules for $(1))
+ $$(foreach flav,$$(_LU_$(1)_TEX_FLAVORS), $$(eval $$(call \
+ lu-master-texflavor-rules,$(1),$$(flav),$$(call lu-getvalue-flavor,EXT,$$(flav)))))
+ $$(foreach flav,$$(_LU_$(1)_DVI_FLAVORS), $$(eval $$(call \
+ lu-master-dviflavor-rules,$(1),$$(flav),$$(call lu-getvalue-flavor,EXT,$$(flav)))))
+endef ####################################################
+define lu-master # MASTER
+ $$(eval $$(call lu-master-vars,$(1)))
+ $$(eval $$(call lu-master-rules,$(1)))
+endef
+##########################################################
+
+#$(warning $(call LU_RULES,example))
+$(eval $(call lu-addtovar-global,MASTERS,\
+ $$(shell grep -l '\\documentclass' *.tex 2>/dev/null | sed -e 's/\.tex$$$$//')))
+ifneq ($(LU_REC_TARGET),)
+_LU_DEF_MASTERS = $(LU_REC_MASTER)
+_LU_DEF_FLAVORS = $(LU_REC_FLAVOR) $(FLAV_DEPFLAVOR_$(LU_REC_FLAVOR))
+else
+_LU_DEF_MASTERS = $(call lu-getvalues-global,MASTERS)
+_LU_DEF_FLAVORS = $(sort $(foreach master,$(_LU_DEF_MASTERS),\
+ $(call lu-getvalues-master,FLAVORS,$(master))))
+endif
+
+$(foreach flav, $(_LU_DEF_FLAVORS), $(eval $(call lu-define-flavor,$(flav))))
+$(foreach master, $(_LU_DEF_MASTERS), $(eval $(call lu-master-vars,$(master))))
+$(foreach flav, $(_LU_FLAVORS_DEFINED), $(eval $(call lu-flavor-rules,$(flav))))
+$(foreach master, $(_LU_DEF_MASTERS), $(eval $(call lu-master-rules,$(master))))
+
+##################################################################""
+# Gestion des subfigs
+
+%.subfig.mk: %.subfig %.fig
+ $(COMMON_PREFIX)$(call lu-call-prog,GENSUBFIG) \
+ -p '$$(COMMON_PREFIX)$(call lu-call-prog,FIGDEPTH) < $$< > $$@' \
+ -s $*.subfig $*.fig < $^ > $@
+
+%.subfig.mk: %.subfig %.svg
+ $(COMMON_PREFIX)$(call lu-call-prog,GENSUBSVG) \
+ -p '$$(COMMON_PREFIX)$(call lu-call-prog,SVGDEPTH) < $$< > $$@' \
+ -s $*.subfig $*.svg < $^ > $@
+
+clean::
+ $(call lu-clean,$(FIGS2CREATE_LIST))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.fig=%.pstex))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.fig=%.pstex_t))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.fig=%.$(_LU_PDFTEX_EXT)))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.fig=%.pdftex_t))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.svg=%.pstex))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.svg=%.pstex_t))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.svg=%.$(_LU_PDFTEX_EXT)))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.svg=%.pdftex_t))
+
+.PHONY: LU_FORCE clean distclean
+LU_FORCE:
+ @echo "Previous compilation failed. Rerun needed"
+
+#$(warning $(MAKEFILE))
+
+distclean:: clean
+
+%.eps: %.fig
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L eps $< $@
+
+%.pdf: %.fig
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L pdf $< $@
+
+%.pstex: %.fig
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L pstex $< $@
+
+%.pstex: %.svg
+ $(COMMON_PREFIX)$(call lu-call-prog,SVG2DEV) -L pstex $< $@
+
+
+.PRECIOUS: %.pstex
+%.pstex_t: %.fig %.pstex
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L pstex_t -p $*.pstex $< $@
+
+%.pstex_t: %.svg %.pstex
+ $(COMMON_PREFIX)$(call lu-call-prog,SVG2DEV) -L pstex_t -p $*.pstex $< $@
+
+
+%.$(_LU_PDFTEX_EXT): %.fig
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L pdftex $< $@
+
+%.$(_LU_PDFTEX_EXT): %.svg
+ $(COMMON_PREFIX)$(call lu-call-prog,SVG2DEV) -L pdftex $< $@
+
+.PRECIOUS: %.$(_LU_PDFTEX_EXT)
+%.pdftex_t: %.fig %.$(_LU_PDFTEX_EXT)
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L pdftex_t -p $*.$(_LU_PDFTEX_EXT) $< $@
+
+%.pdftex_t: %.svg %.$(_LU_PDFTEX_EXT)
+ $(COMMON_PREFIX)$(call lu-call-prog,SVG2DEV) -L pdftex_t -p $*.$(_LU_PDFTEX_EXT) $< $@
+
+%.pdf: %.eps
+ $(COMMON_PREFIX)$(call lu-call-prog,EPSTOPDF) --filter < $< > $@
+
+#########################################################################
+# Les flavors
+LU_REC_LEVEL ?= 1
+ifneq ($(LU_REC_TARGET),)
+export LU_REC_FLAVOR
+export LU_REC_MASTER
+export LU_REC_TARGET
+export LU_REC_LEVEL
+LU_REC_LOGFILE=$(LU_REC_MASTER).log
+LU_REC_GENFILE=$(LU_REC_MASTER)$(call lu-getvalue-flavor,EXT,$(LU_REC_FLAVOR))
+
+lu-rebuild-head=$(info *** Checking rebuild with rule '$(subst LU_rebuild_,,$@)')
+lu-rebuild-needed=echo $(1) >> "$(LU_REC_GENFILE)_NEED_REBUILD" ;
+
+.PHONY: $(addprefix LU_rebuild_,latex texdepends bibtex)
+LU_rebuild_latex:
+ $(call lu-rebuild-head)
+ $(COMMON_HIDE)if grep -sq 'Rerun to get'\
+ "$(LU_REC_LOGFILE)" ; then \
+ $(call lu-rebuild-needed\
+ ,"$@: new run needed (LaTeX message 'Rerun to get...')") \
+ fi
+
+LU_rebuild_texdepends:
+ $(call lu-rebuild-head)
+ $(COMMON_HIDE)if grep -sq '^Package texdepends Warning: .* Check dependencies again.$$'\
+ "$(LU_REC_LOGFILE)" ; then \
+ $(call lu-rebuild-needed,"$@: new depends required") \
+ fi
+
+LU_rebuild_bibtopic:
+ $(call lu-rebuild-head)
+ $(COMMON_HIDE)sed -e '/^Package bibtopic Warning: Please (re)run BibTeX on the file(s):$$/,/^(bibtopic) *and after that rerun LaTeX./{s/^(bibtopic) *\([^ ]*\)$$/\1/p};d' \
+ "$(LU_REC_LOGFILE)" | while read file ; do \
+ touch $$file.aux ; \
+ $(call lu-rebuild-needed,"bibtopic: $$file.bbl outdated") \
+ done
+
+LU_rebuild_bibtopic_undefined_references:
+ $(call lu-rebuild-head)
+ $(COMMON_HIDE)if grep -sq 'There were undefined references'\
+ "$(MASTER_$(LU_REC_MASTER)).log" ; then \
+ $(call lu-rebuild-needed,"$@: new run needed") \
+ fi
+
+.PHONY: LU_WATCH_FILES_SAVE LU_WATCH_FILES_RESTORE
+LU_WATCH_FILES_SAVE:
+ $(COMMON_HIDE)$(foreach file, $(sort \
+ $(call lu-getvalues,WATCHFILES,$(LU_REC_MASTER),$(LU_REC_FLAVOR))), \
+ $(call lu-save-file,$(file),$(file).orig);)
+
+LU_WATCH_FILES_RESTORE:
+ $(COMMON_HIDE)$(foreach file, $(sort \
+ $(call lu-getvalues,WATCHFILES,$(LU_REC_MASTER),$(LU_REC_FLAVOR))), \
+ $(call lu-cmprestaure-file,"$(file)","$(file).orig",\
+ echo "New $(file) file" >> $(LU_REC_GENFILE)_NEED_REBUILD;\
+ );)
+
+endif
+
+%.bbl: %.aux
+ $(COMMON_PREFIX)$(call lu-call-prog,BIBTEX) $*
diff --git a/Master/texmf-dist/doc/support/latex-make/LaTeX.mk.conf b/Master/texmf-dist/doc/support/latex-make/LaTeX.mk.conf
new file mode 100644
index 00000000000..c6f3fa931d7
--- /dev/null
+++ b/Master/texmf-dist/doc/support/latex-make/LaTeX.mk.conf
@@ -0,0 +1,3 @@
+# Choose between GNU/BSD utilities (cp, rm, ...)
+# LU_UTILS = GNU
+# LU_UTILS = BSD
diff --git a/Master/texmf-dist/doc/support/latex-make/README b/Master/texmf-dist/doc/support/latex-make/README
new file mode 100644
index 00000000000..57e43009a5e
--- /dev/null
+++ b/Master/texmf-dist/doc/support/latex-make/README
@@ -0,0 +1,63 @@
+ +------------------------------+
+ | The LaTeX-Make system |
+ +------------------------------+
+
+VERSION: 2.1.19.1
+
+DESCRIPTION
+===========
+
+This package provides several tools that aim to simplify the
+compilation of LaTeX documents:
+* LaTeX.mk: a Makefile snippet to help compiling LaTeX documents in
+ DVI, PDF, PS, ... format. Dependencies are automatically tracked: one
+ should be able to compile documents with a one-line Makefile
+ containing 'include LaTeX.mk'. Complex documents (with multiple
+ bibliographies, indexes, glossaries, ...) should be correctly managed.
+
+* figlatex.sty: a LaTeX package to easily insert xfig figures (with
+ \includegraphics{file.fig}). It can interact with LaTeX.mk so that the
+ latter automatically invokes transfig if needed.
+
+* And various helper tools for LaTeX.mk
+
+Homepage: http://gforge.inria.fr/projects/latex-utils/
+License type: gpl
+
+INSTALLATION:
+=============
+
+Once generated, the following files need to be installed:
+* LaTeX.mk:
+ This is the Makefile snipset to include into your main Makefile.
+ To avoid the need to hardcode the path of LaTeX.mk in the 'include' directive
+ of the Makefile, LaTeX.mk must be installed in a default search directory of
+ GNUMake such as PREFIX/include, /usr/local/include, /usr/include/, etc.
+ See your GNUMake documentation for the list of such search directories;
+* *.sty, *.cfg
+ Main LaTeX package files. Should be installed into
+ TEXMF/tex/latex/latex-make/ where TEXMF is a base of a TeX Directory
+ Structure for your TeX installation;
+* *.py
+ Helper scripts used by LaTeX.mk. They should be installed into
+ TEXMF/scripts/latex-make/
+* *.pdf
+ Documentation that can be installed into
+ TEXMF/doc/latex/latex-make/
+
+REQUIREMENTS:
+=============
+
+ In order to work, LaTeX Make requires:
+ - GNU Make (>= 3.81)
+ type "make --version" to check
+ - a relatively recent LaTeX distribution (teTeX 3.0 should work,
+ TeXLive >= 2005 also)
+
+ If using figlatex, LaTeX Make also needs:
+ - inkscape (>= 0.48.2) for converting svg files
+ - transfig (>= 3.2.4) for the fig2dev command
+ type "transfig -V" to check
+ - ghostscript that is called by fig2dev
+ type "gs --version" to check
+
diff --git a/Master/texmf-dist/doc/support/latex-make/figlatex.pdf b/Master/texmf-dist/doc/support/latex-make/figlatex.pdf
new file mode 100644
index 00000000000..dadd499d909
--- /dev/null
+++ b/Master/texmf-dist/doc/support/latex-make/figlatex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/support/latex-make/latex-make.pdf b/Master/texmf-dist/doc/support/latex-make/latex-make.pdf
new file mode 100644
index 00000000000..9d9c2ca5035
--- /dev/null
+++ b/Master/texmf-dist/doc/support/latex-make/latex-make.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/support/latex-make/texdepends.pdf b/Master/texmf-dist/doc/support/latex-make/texdepends.pdf
new file mode 100644
index 00000000000..400393dcad7
--- /dev/null
+++ b/Master/texmf-dist/doc/support/latex-make/texdepends.pdf
Binary files differ
diff --git a/Master/texmf-dist/scripts/latex-make/figdepth.py b/Master/texmf-dist/scripts/latex-make/figdepth.py
new file mode 100755
index 00000000000..7782d0b29e6
--- /dev/null
+++ b/Master/texmf-dist/scripts/latex-make/figdepth.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+#coding=utf8
+
+"""
+
+stdin : the original xfig file
+stdout : the output xfig file
+args : all depths we want to keep
+
+"""
+
+import optparse
+import os.path
+import sys
+
+def main():
+ parser = optparse.OptionParser()
+ (options, args) = parser.parse_args()
+
+ depths_to_keep = set()
+ for arg in args:
+ depths_to_keep.add(arg)
+
+ comment = ''
+ display = True
+ def show(depth, line):
+ if depth in depths_to_keep:
+ print comment+line,
+ return True
+ else:
+ return False
+ for line in sys.stdin:
+ if line[0] == '#':
+ comment += line
+ continue
+ if line[0] in "\t ":
+ if display:
+ print line
+ else:
+ Fld = line.split(' ', 9999)
+ if not Fld[0] or Fld[0] not in ('1', '2', '3', '4', '5'):
+ print comment+line
+ display = True
+ elif Fld[0] == '4':
+ display = show(Fld[3], line)
+ else:
+ display = show(Fld[6], line)
+ comment = ''
+
+if __name__ == "__main__":
+ main()
diff --git a/Master/texmf-dist/scripts/latex-make/gensubfig.py b/Master/texmf-dist/scripts/latex-make/gensubfig.py
new file mode 100755
index 00000000000..a6fcd5d5677
--- /dev/null
+++ b/Master/texmf-dist/scripts/latex-make/gensubfig.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+#coding=utf8
+
+"""
+
+Arguments passes :
+ - fichier image (image.fig ou image.svg)
+ - -s fichier subfig (image.subfig)
+ - -p chemin du script pour generer les sous-images (svgdepth.py ou figdepth.py)
+
+Sortie standard :
+ - makefile pour creer les sous-images (au format .fig ou .svg), et pour les supprimer
+
+"""
+
+from optparse import OptionParser
+import os.path
+
+def main():
+ parser = OptionParser(usage='usage: %prog [options] svg file', description='Creates a\
+Makefile generating subfigures using figdepth.py or svgdepth.py')
+ parser.add_option("-s", "--subfig", dest="subfig", help="subfig file")
+ parser.add_option("-p", "--depth", dest="depth", help="full path of depth script")
+ (options, args) = parser.parse_args()
+ if len(args) < 1:
+ parser.error("incorrect number of arguments")
+ if not options.subfig:
+ parser.error("no subfig file specified")
+ if not options.depth:
+ parser.error("no depth script specified")
+
+ (root, ext) = os.path.splitext(args[0])
+ sf_name = options.subfig
+ ds_name = options.depth
+ varname = '%s_FIGS' % root.upper()
+
+ subfigs = []
+ for line in open(options.subfig, 'r'):
+ t = line.find('#') # looking for comments
+ if t > -1: line = line[0:t] # remove comments...
+ line = line.strip() #remove blank chars
+ if line == '': continue
+ subfigs.append(line)
+
+ count = 1
+ for subfig in subfigs:
+ print "%s_%d%s: %s%s %s" % (root, count, ext, root, ext, sf_name)
+ print "\t%s %s" % (ds_name, subfig)
+ print ""
+ count += 1
+ print "%s := $(foreach n, " % varname,
+ count = 1
+ for subfig in subfigs:
+ print '%d ' % count,
+ count += 1
+ print ", %s_$(n)%s)" % (root, ext)
+ print "FILES_TO_DISTCLEAN += $(%s)" % varname
+ print "FIGS2CREATE_LIST += $(%s)" % varname
+ print "$(TEMPORAIRE): $(%s)" % varname
+ print "$(TEMPORAIRE): $(%s)" % varname
+
+if __name__ == "__main__":
+ main()
diff --git a/Master/texmf-dist/scripts/latex-make/latexfilter.py b/Master/texmf-dist/scripts/latex-make/latexfilter.py
new file mode 100755
index 00000000000..1e94870125d
--- /dev/null
+++ b/Master/texmf-dist/scripts/latex-make/latexfilter.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+#coding=utf8
+
+"""
+
+stdin : the original xfig file
+stdout : the output xfig file
+args : all depths we want to keep
+
+"""
+
+from __future__ import print_function
+import optparse
+import os.path
+import re
+import sys
+
+def main():
+ parser = optparse.OptionParser()
+ (options, args) = parser.parse_args()
+
+ display = 0
+ in_display = 0
+ start_line = ''
+ warnerror_re = re.compile(r"^(LaTeX|Package|Class)( (.*))? (Warning:|Error:)")
+ fullbox_re = re.compile(r"^(Underfull|Overfull) \\[hv]box")
+ accu = ''
+ for line in sys.stdin:
+ if display > 0:
+ display -= 1
+ if line[0:4].lower() in ('info', 'warn') or line[0:5].lower() == 'error':
+ display = 0
+ line_groups = warnerror_re.match(line)
+ if line_groups:
+ start_line = line_groups.group(3)
+ if not start_line:
+ start_line = ''
+ if line_groups.group(2):
+ start_line = "(" + start_line + ")"
+ display = 1
+ in_display = 1
+ elif (start_line != '') and (line[0:len(start_line)] == start_line):
+ display = 1
+ elif line == "\n":
+ in_display = 0
+ elif line[0:4] == 'Chap':
+ display = 1
+ elif fullbox_re.match(line):
+ display = 2
+ if display:
+ print(accu, end="")
+ accu = line
+ elif in_display:
+ print(accu[0:-1], end="")
+ accu = line
+
+if __name__ == "__main__":
+ main()
+
diff --git a/Master/texmf-dist/scripts/latex-make/svg2dev.py b/Master/texmf-dist/scripts/latex-make/svg2dev.py
new file mode 100755
index 00000000000..1b968edfc49
--- /dev/null
+++ b/Master/texmf-dist/scripts/latex-make/svg2dev.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+#coding=utf8
+
+from optparse import OptionParser
+import shutil
+import subprocess
+
+svg2eps = 'inkscape %s -z -C --export-eps=%s --export-latex'
+svg2pdf = 'inkscape %s -z -C --export-pdf=%s --export-latex'
+
+def create_image(input_filename, output_filename, mode):
+ subprocess.Popen(mode % (input_filename, output_filename),
+ stdout=subprocess.PIPE, shell=True).communicate()[0]
+ n1 = output_filename + '_tex'
+ n2 = output_filename + '_t'
+ shutil.move(n1, n2)
+
+def main():
+ parser = OptionParser()
+ parser.add_option("-L", "--format", dest="outputFormat",
+ metavar="FORMAT", help="output format", default="spstex")
+ parser.add_option("-p", "--portrait", dest="portrait", help="dummy arg")
+ (options, args) = parser.parse_args()
+ if len(args) != 2: return
+ (input_filename, output_filename) = args
+ fmt = options.outputFormat
+ portrait = options.portrait
+
+ if fmt == 'eps':
+ create_image(input_filename, output_filename, svg2eps)
+ elif fmt == 'spstex' or fmt == 'pstex':
+ create_image(input_filename, output_filename, svg2eps)
+ elif fmt == 'spstex_t' or fmt == 'pstex_t':
+ pass
+ elif fmt == 'spdftex' or fmt == 'pdftex':
+ create_image(input_filename, output_filename, svg2pdf)
+ elif fmt == 'spdftex_t' or fmt == 'pdftex_t':
+ pass
+
+if __name__ == "__main__":
+ main()
+
diff --git a/Master/texmf-dist/scripts/latex-make/svgdepth.py b/Master/texmf-dist/scripts/latex-make/svgdepth.py
new file mode 100755
index 00000000000..6f146647b15
--- /dev/null
+++ b/Master/texmf-dist/scripts/latex-make/svgdepth.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+#coding=utf8
+
+import sys
+import xml.parsers.expat
+
+layers = []
+for arg in sys.argv:
+ layers.append(arg)
+
+parser = xml.parsers.expat.ParserCreate()
+class XmlParser(object):
+ def __init__(self, layers):
+ self.state_stack = [True]
+ self.last_state = True
+ self.layers = layers
+ def XmlDeclHandler(self, version, encoding, standalone):
+ sys.stdout.write("<?xml version='%s' encoding='%s'?>\n" % (version, encoding))
+ def StartDoctypeDeclHandler(self, doctypeName, systemId, publicId, has_internal_subset):
+ if publicId != None: sys.stdout.write("<!DOCTYPE %s PUBLIC \"%s\" \"%s\">\n" %\
+ (doctypeName, publicId, systemId))
+ else: sys.stdout.write("<!DOCTYPE %s \"%s\">\n" % (doctypeName, systemId))
+ def StartElementHandler(self, name, attributes):
+ if name.lower() == 'g':
+ r = self.last_state and ('id' not in attributes or \
+ attributes['id'] in self.layers)
+ self.last_state = r
+ self.state_stack.append(r)
+ if not self.last_state: return
+ s = ""
+ for k, v in attributes.items(): s += ' %s="%s"' % (k, v)
+ sys.stdout.write("<%s%s>" % (name, s))
+ def EndElementHandler(self, name):
+ r = self.last_state
+ if name.lower() == 'g':
+ self.state_stack = self.state_stack[0:-1]
+ self.last_state = self.state_stack[-1]
+ if not r: return
+ sys.stdout.write("</%s>" % (name))
+ def CharacterDataHandler(self, data):
+ if not self.last_state: return
+ sys.stdout.write(data)
+
+my_parser = XmlParser(layers)
+
+parser.XmlDeclHandler = my_parser.XmlDeclHandler
+parser.StartDoctypeDeclHandler = my_parser.StartDoctypeDeclHandler
+parser.StartElementHandler = my_parser.StartElementHandler
+parser.EndElementHandler = my_parser.EndElementHandler
+parser.CharacterDataHandler = my_parser.CharacterDataHandler
+
+for line in sys.stdin:
+ parser.Parse(line, False)
+parser.Parse('', True)
+
diff --git a/Master/texmf-dist/source/support/latex-make/figlatex.dtx b/Master/texmf-dist/source/support/latex-make/figlatex.dtx
new file mode 100644
index 00000000000..c389ed4b487
--- /dev/null
+++ b/Master/texmf-dist/source/support/latex-make/figlatex.dtx
@@ -0,0 +1,510 @@
+% \iffalse meta-comment
+%%
+%% File: figlatex.dtx Copyright (C) 2002--2005 V. Danjean, A. Legrand
+%% Vincent.Danjean@ens-lyon.org
+%% Arnaud.Legrand@ens-lyon.org
+%%
+%% This program is free software; you can redistribute it and/or
+%% modify it under the terms of the GNU General Public License
+%% as published by the Free Software Foundation; either version 2
+%% of the License, or (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%%
+%
+%<*dtx>
+ \ProvidesFile{figlatex.dtx}
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}%
+%<package>\ProvidesPackage{figlatex}%
+%<config> \ProvidesFile{figlatex.cfg}%
+%<compat> \ProvidesPackage{texgraphicx}%
+% \fi
+% \ProvidesFile{figlatex.dtx}
+[2011/09/25 v0.1.4 include fig and svg in LaTeX]
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[latin1]{inputenc}
+\usepackage[french,english]{babel}
+\NoAutoSpaceBeforeFDP
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\setcounter{IndexColumns}{2} % make a twocolumn index
+\setlength{\columnseprule}{0pt} % no rules between columns ...
+\setlength{\columnsep}{2em} % ... but more spacing instead.
+\setcounter{unbalance}{4}
+\setlength{\IndexMin}{100pt}
+%%%%\OnlyDescription % uncomment this line to suppress printing the source code
+\makeatletter
+% don't show underfull hboxes in index/glossary:
+\g@addto@macro{\IndexParms}{\hbadness=10000}
+\g@addto@macro{\GlossaryParms}{\hbadness=10000}
+\makeatother
+\begin{document}
+ \DocInput{figlatex.dtx}
+ \PrintIndex
+ \PrintChanges
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{figlatex.dtx}
+%
+% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ }
+% \DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global}
+% \DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,%
+% \iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi,\loop,\do}
+% \DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,%
+% \vbox,\vtop,\vcenter}
+% \DoNotIndex{\@empty,\immediate,\write}
+% \DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup}
+% \DoNotIndex{\divide,\advance,\multiply,\count,\dimen}
+% \DoNotIndex{\relax,\space,\string}
+% \DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,%
+% \closein,\closeout}
+% \DoNotIndex{\catcode,\endinput}
+% \DoNotIndex{\jobname,\message,\read,\the,\noexpand}
+% \DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss}
+% \DoNotIndex{\m@ne,\z@,\@m,\z@skip,\@ne,\tw@,\p@}
+% \DoNotIndex{\DeclareRobustCommand,\DeclareOption,\newcommand,\newcommand*}
+% \DoNotIndex{\newcount,\newif,\newlinechar,\newread,\newtoks,\newwrite}
+% \DoNotIndex{\dp,\wd,\ht,\vss,\unskip,\ifthenelse}
+%
+% \DoNotIndex{\@filef@und,\@nameddef,\@tempa}
+% \DoNotIndex{\define@key,\equal,\ExecuteOptions}
+% \DoNotIndex{\filename@area,\filename@base,\filename@ext,\filename@parse}
+% \DoNotIndex{\Gin@exclamation,\Gin@getbase,\Gin@scalex,\Gin@scaley}
+% \DoNotIndex{\Gread@eps,\Gread@pdf,\Gscale@box}
+% \DoNotIndex{\IfFileExists,\ifpdf,\input,\InputIfFileExists}
+% \DoNotIndex{\MessageBreak,\PackageWarning,\PackageWarningNoLine}
+% \DoNotIndex{\ProcessOptions,\RequirePackage,\typeout}
+% \DoNotIndex{}
+% \DoNotIndex{}
+%
+% \title{The \textsf{figlatex} package\thanks{This file
+% has version number \fileversion, last
+% revised \filedate.}}
+% \author{Arnaud \textsc{Legrand}\and Vincent \textsc{Danjean}}
+% \date{\filedate}
+% \maketitle
+% \begin{abstract}
+% This package allows \LaTeX\space to load XFig and SVG figures (or
+% subfigures) with the |\includegraphics| command.
+% \end{abstract}
+% \CheckSum{217}
+%
+% \changes{v0.1.1}{2005/03/28}{Version 0.1.1 at last}
+% \changes{v0.1.2}{2005/03/29}{Manage index/glossary}
+% \changes{v0.1.3}{2008/01/28}{Better support for subfig with texdepends}
+% \changes{v0.1.4}{2011/09/25}{Support for svg with texdepends}
+%
+% \makeatletter
+% \def\SpecialOptionIndex#1{\@bsphack
+% \index{#1\actualchar{\protect\ttfamily#1}
+% (option)\encapchar usage}%
+% \index{options:\levelchar{\protect\ttfamily#1}\encapchar
+% usage}\@esphack}
+% \def\SpecialFileIndex#1{\@bsphack
+% \index{#1\actualchar{\protect\ttfamily#1}
+% (file)\encapchar usage}%
+% \index{files:\levelchar{\protect\ttfamily#1}\encapchar
+% usage}\@esphack}
+% \def\SpecialMainOptionIndex#1{\@bsphack\special@index{#1\actualchar
+% {\string\ttfamily\space#1}
+% (option)\encapchar main}%
+% \special@index{options:\levelchar{%
+% \string\ttfamily\space#1}\encapchar
+% main}\@esphack}
+% \def\option{\begingroup
+% \catcode`\\12
+% \MakePrivateLetters \mym@cro@ \iffalse}
+% \long\def\mym@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
+% \edef\saved@macroname{\string#2}%
+% \def\makelabel##1{\llap{##1}}%
+% \if@inlabel
+% \let\@tempa\@empty \count@\macro@cnt
+% \loop \ifnum\count@>\z@
+% \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
+% \edef\makelabel##1{\llap{\vtop to\baselineskip
+% {\@tempa\hbox{##1}\vss}}}%
+% \advance \macro@cnt \@ne
+% \else \macro@cnt\@ne \fi
+% \edef\@tempa{\noexpand\item[%
+% #1%
+% \noexpand\PrintMacroName
+% \else
+% \noexpand\PrintEnvName
+% \fi
+% {\string#2}]}%
+% \@tempa
+% \global\advance\c@CodelineNo\@ne
+% #1%
+% \SpecialMainIndex{#2}\nobreak
+% \DoNotIndex{#2}%
+% \else
+% \SpecialMainOptionIndex{#2}\nobreak
+% \fi
+% \global\advance\c@CodelineNo\m@ne
+% \ignorespaces}
+% \let\endoption \endtrivlist
+% \def\DescribeOption{\leavevmode\@bsphack\begingroup\MakePrivateLetters
+% \Describe@Option}
+% \def\Describe@Option#1{\endgroup
+% \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
+% \SpecialOptionIndex{#1}\@esphack\ignorespaces}
+% \def\DescribeFile{\leavevmode\@bsphack\begingroup\MakePrivateLetters
+% \Describe@Option}
+% \def\Describe@File#1{\endgroup
+% \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
+% \SpecialFileIndex{#1}\@esphack\ignorespaces}
+% \makeatother
+% \MakeShortVerb{\|}
+%
+% \section{Introduction}
+%
+% \subsection{General}
+% \DescribeMacro{\includegraphics}
+% This package allows to load XFig figures from \LaTeX\space sources with
+% the |\includegraphics| command from the |graphicx| package:
+% \begin{verbatim}
+% \includegraphics[width=\linewidth]{myfig.fig}
+% \end{verbatim}
+%
+% This package does not convert by itself XFig figures (see package
+% |texdepends| for that). It only diverts the loading functions so
+% that \LaTeX\space includes the |.pstex_t| or the |.pdftex_t|.
+%
+% \subsection{Options}
+% Available options for this package:
+% \begin{description}
+% \item[debug~:] \DescribeOption{debug}more messages written while compiling
+% \item[compatibility~:] \DescribeOption{compatibility}old versions of |pdflatex| do not allow
+% to declare a PDF file with |\DeclareGraphicsRule| that has not the
+% |.pdf| extension. In such cases, this package uses the extension
+% |.pdf| instead of |.pdftex| for PDF created from XFig figures.
+% \end{description}
+%
+% \DescribeFile{figlatex.cfg}
+% \DescribeMacro{\compatibility}
+% \DescribeMacro{\debug}
+% When the package is loaded, it tries to read a |figlatex.cfg|
+% file. This file can contains |\compatibility| and/or |\debug| to
+% enable theses options site wide.
+%
+% \subsection{Subfigures}
+%
+% Sometimes, several figures made with XFig should be similar. It is
+% possible to make only one XFig figure and then create subfigures
+% which contains only a subset of the depths of the original figure.
+%
+% \StopEventually{
+% }
+% \section{Implementation}
+%
+% \subsection{figlatex}
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% Options definitions
+% \begin{option}{compatibility}
+% \begin{macrocode}
+\newif\ifFL@compatibility
+\DeclareOption{compatibility}{%
+ %\PackageWarning{figlatex}{option compatibility}%
+ \global\FL@compatibilitytrue%
+}
+% \end{macrocode}
+% \end{option}
+% \begin{option}{debug}
+% \begin{macrocode}
+\newif\ifFL@debug
+\DeclareOption{debug}{%
+ \global\FL@debugtrue%
+}
+% \end{macrocode}
+% \end{option}
+%
+% We load the config file if it exists.
+% Commands for the config file are local.
+% \begin{macrocode}
+{
+% \end{macrocode}
+% \begin{macro}{\compatibility}
+% \begin{macrocode}
+ \def\compatibility{%
+ \ExecuteOptions{compatibility}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\debug}
+% \begin{macrocode}
+ \def\debug{%
+ \ExecuteOptions{debug}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+ \InputIfFileExists{figlatex.cfg}{%
+ \typeout{***************************************^^J%
+ * Local config file figlatex.cfg used *^^J%
+ ***************************************}
+ }{%
+ \typeout{Found no configuration file for figlatex}
+ }
+}
+% \end{macrocode}
+% Run the options
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+% and requires some packages
+% \begin{macrocode}
+\RequirePackage{ifpdf}
+\RequirePackage{graphicx}
+% \end{macrocode}
+% XFig uses heavily the color package
+% \begin{macrocode}
+\RequirePackage{color}
+\RequirePackage{epstopdf}
+% \end{macrocode}
+% \begin{macro}{\FL@dmessage}
+% Write the message only if debug is set
+% \begin{macrocode}
+\def\FL@dmessage#1{%
+ \ifFL@debug%
+ \message{#1}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Ginclude@rawtex}
+% |.pstex_t| or |.pdftex_t| are loaded with |\input|
+% \begin{macrocode}
+\def\Ginclude@rawtex#1{%
+ \FL@dmessage{<#1>}%
+ \bgroup%
+ \def\@tempa{!}%
+ \ifx\Gin@scaley\@tempa%
+ \let\Gin@scaley\Gin@scalex%
+ \else%
+ \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi%
+ \fi%
+ \hbox{%
+ \Gscale@box{\Gin@scalex}[\Gin@scaley]{%
+ \def\Gin@scalex{1}%
+ \let\Gin@scaley\Gin@exclamation% needed for pdflatex
+ \FL@dmessage{<loading rawtex #1>}%
+ \input{#1}}}%
+ \egroup}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Ginclude@figtex}
+% |.fig| are loaded with |\includegraphics| after modifying the name
+% \begin{macrocode}
+\def\Ginclude@figtex#1{%
+ \message{<#1>}%
+ \bgroup%
+ \xdef\FL@filename{#1}%
+ \filename@parse{\FL@filename}%
+ \xdef\FL@filename{\filename@area\filename@base.\FL@figext}%
+ \FL@dmessage{<****loading fig \FL@filename>}%
+ \FL@includerawtexgraphics[]{\FL@filename}%
+ \egroup}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Gread@figtex}
+% |.fig| bounding box is the same as the corresponding |.pstex_t| or |.pdftex_t|
+% \begin{macrocode}
+\newcommand{\Gread@figtex}[1]{%
+ %\typeout{Oh, file exists #1}%
+ \Gread@rawtex{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Ginclude@svgtex}
+% |.svg| are loaded with |\includegraphics| after modifying the name
+% \begin{macrocode}
+\def\Ginclude@svgtex#1{%
+ \message{<#1>}%
+ \bgroup%
+ \xdef\FL@filename{#1}%
+ \filename@parse{\FL@filename}%
+ \xdef\FL@filename{\filename@area\filename@base.\FL@svgext}%
+ \FL@dmessage{<****loading svg \FL@filename>}%
+ \FL@includerawtexgraphics[]{\FL@filename}%
+ \egroup}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Gread@svgtex}
+% |.svg| bounding box is the same as the corresponding |.pstex_t| or |.pdftex_t|
+% \begin{macrocode}
+\newcommand{\Gread@svgtex}[1]{%
+ %\typeout{Oh, file exists #1}%
+ \Gread@rawtex{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% Declare the right things depending whether we build a DVI or a PDF file.
+% \begin{macrocode}
+\ifpdf
+% \end{macrocode}
+% PDF part
+% \begin{macrocode}
+ \def\FL@figext{pdftex_t}%
+ \def\FL@svgext{pdftex_t}%
+% \end{macrocode}
+% To read bounding box information:
+% \begin{macrocode}
+ \let\Gread@rawtex\Gread@pdf%
+ \DeclareGraphicsRule{.pdftex}{pdf}{*}{}%
+ \ifFL@compatibility%
+ \PackageWarningNoLine{figlatex}{Compatibility mode enabled
+ for old LaTeX
+ \MessageBreak Using .pdf extension for pdftex files}%
+ \DeclareGraphicsRule{.pdftex_t}{rawtex}{.pdf}{}%
+ \DeclareGraphicsRule{.fig}{figtex}{.pdf}{}%
+ \DeclareGraphicsRule{.svg}{svgtex}{.pdf}{}%
+ \else%
+ \DeclareGraphicsRule{.pdftex_t}{rawtex}{.pdftex}{}%
+ \DeclareGraphicsRule{.fig}{figtex}{.pdftex}{}%
+ \DeclareGraphicsRule{.svg}{svgtex}{.pdftex}{}%
+ \fi%
+\else
+% \end{macrocode}
+% DVI part
+% \begin{macrocode}
+ \def\FL@figext{pstex_t}%
+ \def\FL@svgext{pstex_t}%
+% \end{macrocode}
+% To read bounding box information:
+% \begin{macrocode}
+ \let\Gread@rawtex\Gread@eps%
+ \DeclareGraphicsRule{.pstex}{eps}{*}{}%
+ \DeclareGraphicsRule{.pstex_t}{rawtex}{.pstex}{}%
+ \DeclareGraphicsRule{.fig}{figtex}{.pstex}{}%
+ \DeclareGraphicsRule{.svg}{svgtex}{.pstex}{}%
+\fi
+% \end{macrocode}
+% This command is not really necessary here (code could be added in
+% |\Ginclude@figtex|). However, it's very convinient for the
+% |texdepends| package.
+% \begin{macrocode}
+\newcommand{\FL@includerawtexgraphics}[2][]{%
+ \includegraphics[#1]{#2}%
+}
+% \end{macrocode}
+% Addition of the |subfig=name| key for the options of the
+% |\includegraphicx[..]{..}| macro.
+% \begin{macrocode}
+\def\FL@exclamation{!}%
+\let\FL@subfig@name\FL@exclamation%
+\define@key{Gin}{subfig}{%
+ \def\FL@subfig@name{#1}%
+}
+\def\FL@sepdefault{_}%
+% \end{macrocode}
+% We should ckeck if the \#1 file exists (XXX.subfig)
+% This is not yet done but texdepends divert this macro
+% to record the dependency
+% \begin{macrocode}
+\def\FL@subfig@check#1{%
+}
+% \end{macrocode}
+% We divert |\Gin@getbase| to modify the file name if the |subfig| key
+% is used.
+% \begin{macrocode}
+\def\FL@Gin@getbase#1{%
+ \ifx\FL@subfig@name\FL@exclamation%
+ \else%
+ \ifthenelse{\equal{#1}{.fig}}{%
+ % If we're including a subfig
+ \IfFileExists{\filename@area\filename@base#1}{%
+ % If the original .fig file exists, just change the name so that
+ % it comprises the full path.
+ \filename@parse{\@filef@und}%
+ % Remove potential trailing spage at the end of the extension
+ \def\filename@ext{fig}%
+ % Check if the subfig file exists
+ \FL@subfig@check{\filename@area\filename@base.subfig}%
+ }{%
+ % Else, write a warning (LaTeX will warn as well but it doesn't
+ % hurt)
+ \PackageWarning{figlatex}{No file
+ '\filename@area\filename@base#1'}%
+ }
+ % Add the subfig suffix to the fig name.
+ \edef\filename@base{\filename@base\FL@sepdefault\FL@subfig@name}%
+ }{%
+ }%
+ \ifthenelse{\equal{#1}{.svg}}{%
+ % If we're including a subfig
+ \IfFileExists{\filename@area\filename@base#1}{%
+ % If the original .svg file exists, just change the name so that
+ % it comprises the full path.
+ \filename@parse{\@filef@und}%
+ % Remove potential trailing spage at the end of the extension
+ \def\filename@ext{svg}%
+ % Check if the subfig file exists
+ \FL@subfig@check{\filename@area\filename@base.subfig}%
+ }{%
+ % Else, write a warning (LaTeX will warn as well but it doesn't
+ % hurt)
+ \PackageWarning{figlatex}{No file
+ '\filename@area\filename@base#1'}%
+ }
+ % Add the subfig suffix to the svg name.
+ \edef\filename@base{\filename@base\FL@sepdefault\FL@subfig@name}%
+ }{%
+ }%
+ \fi%
+ \FL@orig@Gin@getbase{#1}%
+}
+\let\FL@orig@Gin@getbase\Gin@getbase
+\let\Gin@getbase\FL@Gin@getbase
+
+%\@namedef{Gin@rule@.fig}#1{%
+
+%}
+% \end{macrocode}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+% The sample config file |figlatex.cfg|\ldots
+% \begin{macrocode}
+%<*config>
+% \end{macrocode}
+% \begin{macrocode}
+ %\compatibility
+ %\debug
+% \end{macrocode}
+% \begin{macrocode}
+%</config>
+% \end{macrocode}
+% \subsection{texgraphicx}
+% \begin{macrocode}
+%<*compat>
+% \end{macrocode}
+% |texgraphicx.sty| is only a wrapper arround |figlatex.sty|.
+% \begin{macrocode}
+\PackageWarning{texgraphicx}{'texgraphicx' is now
+ deprecated\MessageBreak%
+ Please, consider switching to 'figlatex'
+ package\MessageBreak}
+\RequirePackage{figlatex}
+\ProcessOptions
+% \end{macrocode}
+% \begin{macrocode}
+%</compat>
+% \end{macrocode}
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/source/support/latex-make/latex-make.dtx b/Master/texmf-dist/source/support/latex-make/latex-make.dtx
new file mode 100644
index 00000000000..24e32d0dd62
--- /dev/null
+++ b/Master/texmf-dist/source/support/latex-make/latex-make.dtx
@@ -0,0 +1,1940 @@
+% \iffalse meta-comment
+%
+%<*dtx>
+ \ProvidesFile{latex-make.dtx}
+[2012/03/17 v2.1.2 Makefile for LaTeX]
+%</dtx>
+% \fi
+% \iffalse
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+\usepackage{a4wide}
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{palatino}
+\usepackage{pdfswitch}
+\usepackage{array}
+\usepackage{tabularx}
+\usepackage{boxedminipage}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\setcounter{IndexColumns}{2} % make a twocolumn index
+\setlength{\columnseprule}{0pt} % no rules between columns ...
+\setlength{\columnsep}{2em} % ... but more spacing instead.
+\setcounter{unbalance}{4}
+\setlength{\IndexMin}{100pt}
+%%%%\OnlyDescription % uncomment this line to suppress printing the source code
+\makeatletter
+% don't show underfull hboxes in index/glossary:
+\g@addto@macro{\IndexParms}{\hbadness=10000}
+\g@addto@macro{\GlossaryParms}{\hbadness=10000}
+\makeatother
+\newenvironment{source}[1][.8\linewidth]{%
+ \begin{center}%
+ \begin{boxedminipage}[c]{#1}\tt%
+ \vspace{1em}%
+ \hspace{2em}\begin{minipage}[c]{#1}\tt%
+ }{%
+ \end{minipage}%
+ \vspace{1em}%
+ \end{boxedminipage}%
+ \end{center}%
+}
+\sloppy
+\begin{document}
+ \DocInput{latex-make.dtx}
+ \PrintIndex
+ \PrintChanges
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{latex-make.dtx}
+%
+% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ }
+% \DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global}
+% \DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,%
+% \iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi,\loop,\do}
+% \DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,%
+% \vbox,\vtop,\vcenter}
+% \DoNotIndex{\@empty,\immediate,\write}
+% \DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup}
+% \DoNotIndex{\divide,\advance,\multiply,\count,\dimen}
+% \DoNotIndex{\relax,\space,\string}
+% \DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,%
+% \closein,\closeout}
+% \DoNotIndex{\catcode,\endinput}
+% \DoNotIndex{\jobname,\message,\read,\the,\noexpand}
+% \DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss}
+% \DoNotIndex{\m@ne,\z@,\@m,\z@skip,\@ne,\tw@,\p@}
+% \DoNotIndex{\DeclareRobustCommand,\DeclareOption,\newcommand,\newcommand*}
+% \DoNotIndex{\newcount,\newif,\newlinechar,\newread,\newtoks,\newwrite}
+% \DoNotIndex{\dp,\wd,\ht,\vss,\unskip,\ifthenelse}
+%
+% \DoNotIndex{\@filef@und,\@nameddef,\@tempa}
+% \DoNotIndex{\define@key,\equal,\ExecuteOptions}
+% \DoNotIndex{\filename@area,\filename@base,\filename@ext,\filename@parse}
+% \DoNotIndex{\Gin@exclamation,\Gin@getbase,\Gin@scalex,\Gin@scaley}
+% \DoNotIndex{\Gread@eps,\Gread@pdf,\Gscale@box}
+% \DoNotIndex{\IfFileExists,\ifpdf,\input,\InputIfFileExists}
+% \DoNotIndex{\MessageBreak,\PackageWarning,\PackageWarningNoLine}
+% \DoNotIndex{\ProcessOptions,\RequirePackage,\typeout}
+% \DoNotIndex{\(,\),\.,\1,\t,\n,\^^J}
+% \catcode\endlinechar 12\DoNotIndex{\
+% }\catcode\endlinechar 10{}
+% \catcode`\$=12
+% \DoNotIndex{\$}
+% \catcode`\$=3
+% \DoNotIndex{\DeclareGraphicsExtensions,\DeclareGraphicsRule}
+%
+%
+% \title{The \LaTeX.mk Makefile\\
+% and related script tools\thanks{This file
+% has version number \fileversion, last
+% revised \filedate.}}
+% \author{Vincent \textsc{Danjean} \and Arnaud \textsc{Legrand}}
+% \date{\filedate}
+% \maketitle
+% \begin{abstract}
+% This package allows to compile all kind and complex \LaTeX\space
+% documents with the help of a Makefile. Dependencies are
+% automatically tracked with the help of the |texdepends.sty| package.
+% \end{abstract}
+% \CheckSum{313}
+%
+% \changes{v2.0.0}{2006/03/09}{First autocommented version}
+% \changes{v2.1.0}{2008/01/28}{That's the question}
+% \changes{v2.1.1}{2009/11/08}{Improve error message}
+% \changes{v2.1.2}{2012/03/17}{Switch from perl to python}
+%
+% \makeatletter
+% \def\SpecialOptionIndex#1{\@bsphack
+% \index{#1\actualchar{\protect\ttfamily#1}
+% (option)\encapchar usage}%
+% \index{options:\levelchar{\protect\ttfamily#1}\encapchar
+% usage}\@esphack}
+% \def\SpecialFileIndex#1{\@bsphack
+% \index{#1\actualchar{\protect\ttfamily#1}
+% (file)\encapchar usage}%
+% \index{files:\levelchar{\protect\ttfamily#1}\encapchar
+% usage}\@esphack}
+% \def\SpecialMainOptionIndex#1{\@bsphack\special@index{#1\actualchar
+% {\string\ttfamily\space#1}
+% (option)\encapchar main}%
+% \special@index{options:\levelchar{%
+% \string\ttfamily\space#1}\encapchar
+% main}\@esphack}
+% \def\option{\begingroup
+% \catcode`\\12
+% \MakePrivateLetters \mym@cro@ \iffalse}
+% \long\def\mym@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
+% \edef\saved@macroname{\string#2}%
+% \def\makelabel##1{\llap{##1}}%
+% \if@inlabel
+% \let\@tempa\@empty \count@\macro@cnt
+% \loop \ifnum\count@>\z@
+% \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
+% \edef\makelabel##1{\llap{\vtop to\baselineskip
+% {\@tempa\hbox{##1}\vss}}}%
+% \advance \macro@cnt \@ne
+% \else \macro@cnt\@ne \fi
+% \edef\@tempa{\noexpand\item[%
+% #1%
+% \noexpand\PrintMacroName
+% \else
+% \noexpand\PrintEnvName
+% \fi
+% {\string#2}]}%
+% \@tempa
+% \global\advance\c@CodelineNo\@ne
+% #1%
+% \SpecialMainIndex{#2}\nobreak
+% \DoNotIndex{#2}%
+% \else
+% \SpecialMainOptionIndex{#2}\nobreak
+% \fi
+% \global\advance\c@CodelineNo\m@ne
+% \ignorespaces}
+% \let\endoption \endtrivlist
+% \def\DescribeOption{\leavevmode\@bsphack\begingroup\MakePrivateLetters
+% \Describe@Option}
+% \def\Describe@Option#1{\endgroup
+% \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
+% \SpecialOptionIndex{#1}\@esphack\ignorespaces}
+% \def\DescribeFile{\leavevmode\@bsphack\begingroup\MakePrivateLetters
+% \Describe@Option}
+% \def\Describe@File#1{\endgroup
+% \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
+% \SpecialFileIndex{#1}\@esphack\ignorespaces}
+% \makeatother
+% \MakeShortVerb{\|}
+%
+% \tableofcontents
+% \newpage
+% \section{Introduction}
+%
+% |latex-make| is a collection of \LaTeX{} packages, scripts and
+% Makefile fragments that allows to easily compile \LaTeX{} documents.
+% The best feature is that \textbf{\emph{dependencies are
+% automatically tracked}}\footnote{Dependencies are tracked with
+% the help of the |texdepend.sty| package that is automatically
+% loaded: no need to specify it with |\textbackslash usepackage\{\}|
+% in your documents.}.
+% \par
+% These tools can be used to compile small \LaTeX{} documents
+% as well as big ones (such as, for example, a thesis with summary, tables of
+% contents, list of figures, list of tabulars, multiple indexes and
+% multiple bibliographies).
+%
+% \section{Quick start}
+%
+% \subsection{First (and often last) step}
+% When you want to use |latex-make|, most of the time you have to
+% create a |Makefile| with the only line: \par
+% \begin{source}
+% include LaTeX.mk
+% \end{source}
+% % Then, the following targets are available: |dvi|, |ps|, |pdf|,
+% \emph{file}|.dvi|, \emph{file}|.ps|, \emph{file}|.pdf|, etc.,
+% |clean| and |distclean|.
+% \par
+%
+% All \LaTeX{} documents of the current directory should be compilable
+% with respect to their dependencies. If something fails, please,
+% provide me the smallest example you can create to show me what is
+% wrong.
+% \par\medskip
+%
+% \paragraph{Tip:}
+% If you change the dependencies inside your document (for example, if
+% you change |\include{first}| into |\include{second}|), you may have
+% to type |make distclean| before being able to recompile your
+% document. Else, |make| can fail, trying to build or found the old
+% |first.tex| file.
+% \subsection{Customization}
+% Of course, lots of things can be customized. Here are the most
+% useful ones. Look at the section \ref{sec:reference} for more detailed
+% and complete possibilities.
+% \par
+% Customization is done through variables in the |Makefile| set
+% \emph{before} including |LaTeX.mk|. Setting them after can sometimes
+% work, but not always and it is not supported.\par
+%
+% \newcommand{\variable}[4][\texttt]{%
+% \paragraph*{#3}%
+% \addcontentsline{toc}{subsubsection}{#3}%
+% \hfill \hbox{#1{\textbf{#2}}}\par\medskip%
+% \textbf{Example:}\hspace{1em} |#4|\par\medskip }
+%
+% \variable{LU\_MASTERS}%
+% {Which \LaTeX{} documents to compile}%
+% {LU\_MASTERS=figlatex texdepends latex-make}%
+% This variable contains the basename of the \LaTeX{} documents to
+% compile. \par
+% If not set, |LaTeX.mk| looks for all |*.tex| files containing the
+% |\documentclass| command.
+%
+% \variable[]{\emph{master}\texttt{\_MAIN}}%
+% {Which \LaTeX{} main source for a document}%
+% {figlatex\_MAIN=figlatex.dtx}%
+% There is one such variable per documents declared in |LU_MASTERS|.
+% It contains the file against which the |latex| (or |pdflatex|, etc.)
+% program must be run. \par
+% If not set, \emph{master}|.tex| is used.
+%
+% \variable{LU\_FLAVORS}%
+% {Which flavors must be compiled}%
+% {LU\_FLAVORS=DVI DVIPDF}%
+% A flavor can be see as a kind of document (postscript, PDF, DVI,
+% etc.) and the way to create it. For example, a PDF document can be
+% created directly from the |.tex| file (with |pdflatex|), from a
+% |.dvi| file (with |dvipdfm|) or from a postscript file (with
+% |ps2pdf|). This would be three different flavors.
+% \par
+% Some flavors are already defined in |LaTeX.mk|. Other flavors can be
+% defined by the user (see section~\ref{sec:def_flavors}). The list of
+% predefined flavors can be see in the table~\ref{tab:flavors}. A
+% flavor can depend on another. For example, the flavor creating a
+% postscript file from a DVI file depends on the flavor creating a DVI
+% file from a \LaTeX{} file. This is automatically handled.
+% \par
+% If not set, |PS| and |PDF| are used (and |DVI| due to |PS|).
+%\def\extrarowheight{2pt}
+% \begin{table}[htbp]
+% \centering
+%
+% \begin{tabular}{|c|c|l|l|}
+% \hline
+% Flavor & dependency & program variable & Transformation \\
+% \hline \hline
+% DVI & & LATEX & |.tex| $\Rightarrow$ |.dvi| \\
+% \hline
+% PS & DVI & DVIPS & |.dvi| $\Rightarrow$ |.ps| \\
+% \hline
+% PDF & & PDFLATEX & |.tex| $\Rightarrow$ |.pdf| \\
+% \hline
+% DVIPDF & DVI & DVIPDFM & |.dvi| $\Rightarrow$ |.pdf| \\
+% \hline
+% \end{tabular}
+% \par\smallskip
+% \begin{minipage}[t]{0.8\linewidth}
+% \em For example, the |DVI| flavor transforms a |*.tex| file into
+% a |*.dvi| file with the |Makefile| command
+% |$(LATEX) $(LATEX\_OPTIONS)|
+% \end{minipage}
+% % \caption{Predefined flavors}
+% \label{tab:flavors}
+%
+% \end{table}
+%
+% \variable[]{\emph{prog}/\emph{prog}\texttt{\_OPTIONS}}
+% {Which programs are called and with which options}%
+% {
+% \begin{minipage}[t]{0.5\linewidth}
+% DVIPS=dvips\\DVIPS\_OPTIONS=-t a4
+% \end{minipage}
+% }
+% Each flavor has a program variable name that is used by |LaTeX.mk|
+% to run the program. Another variable with the suffix |\_OPTIONS| is
+% also provided if needed. See the table~\ref{tab:flavors} the look
+% for the program variable name associated to the predefined flavors.
+% \par
+% Other programs are also run in the same manner. For example, the
+% |makeindex| program is run from |LaTeX.mk| with the help of the
+% variables |MAKEINDEX| and |MAKEINDEX_OPTIONS|.
+%
+% \variable[]{\emph{master}\texttt{\_}\emph{prog}/\emph{master}\texttt{\_}\emph{prog}\texttt{\_OPTIONS}}
+% {Per target programs and options}%
+% {
+% \begin{minipage}[t]{0.5\linewidth}
+% figlatex\_DVIPS=dvips\\
+% figlatex\_DVIPS\_OPTIONS=-t a4
+% \end{minipage}
+% }
+% Note that, if defined, \emph{master}\texttt{\_}\emph{prog} will
+% \textbf{\emph{replace}} \emph{prog} whereas
+% \emph{master}\texttt{\_}\emph{prog}\texttt{\_OPTIONS} will
+% \textbf{\emph{be added to}} \emph{prog}\texttt{\_OPTIONS} (see
+% section \ref{sec:variables} for more details).
+%
+% \variable[]{\texttt{DEPENDS}/\emph{master}\texttt{\_DEPENDS}}
+% {Global and per target dependencies}%
+% {
+% \begin{minipage}[t]{0.5\linewidth}
+% DEPENDS=texdepends.sty\\
+% figlatex\_DEPENDS=figlatex.tex
+% \end{minipage}
+% }
+% All flavor targets will depend to theses files. This should not be
+% used as dependencies are automatically tracked.
+%
+%\section{Reference manual}
+%\label{sec:reference}
+%
+% \subsection{Flavors}
+% \subsubsection{What is a flavor ?}
+% A flavor can be see as a kind of document (postscript, PDF, DVI,
+% etc.) and the way to create it. Several property are attached to
+% each flavor. Currently, there exists two kinds of flavors:
+% \begin{description}
+% \item[TEX-flavors:] these flavors are used to compile a
+% \texttt{*.tex} file into a target. A \LaTeX{} compiler
+% (\texttt{latex}, \texttt{pdflatex}, etc.) is used;
+% \item[DVI-flavors:] these flavors are used to compile a file
+% produced by a TEX-flavors into an other file. Examples of such
+% flavors are all the ones converting a DVI file into another format
+% (postscript, PDF, etc.).
+% \end{description}
+% Several properties are attached to each flavors. Most are common, a
+% few a specific to the kind of the flavor.
+% \begin{description}
+% \item[Name:] the name of the flavor. It is used to declare dependencies
+% between flavors (see below). It also used to tell which flavor
+% should be compiled for each document (see the \texttt{FLAVORS}
+% variables);
+% \item[Program variable name:] name of the variable that will be used
+% to run the program of this flavor. This name is used for the
+% program and also for the options (variable with the
+% \texttt{\_OPTIONS} suffix);
+% \item[Target extension:] extension of the target of the flavor. The
+% dot must be added if wanted;
+% \item[Master target:] if not empty, all documents registered for the
+% flavor will be built when this master target is called;
+% \item[XFig extensions to clean (\emph{TEX-flavor only}):] files
+% extensions of figures that will be cleaned for the \texttt{clean}
+% target. Generally, there is \texttt{.pstex\_t .pstex} when using
+% \texttt{latex} and \texttt{.pdftex\_t .pdftex} when using
+% \texttt{pdflatex};
+% \item[Dependency \emph{DVI-flavor only}:] name of the TEX-flavor the
+% one depends upon.
+% \end{description}
+%
+% \subsubsection{Defining a new flavor}
+% \label{sec:def_flavors}
+% To define a new flavor named \texttt{NAME}, one just have to declare
+% a \texttt{lu-define-flavor-NAME} that calls and evaluates the
+% \texttt{lu-create-flavor} with the right parameters, ie:
+% \begin{itemize}
+% \item name of the flavor;
+% \item kind of flavor (\texttt{tex} or \texttt{dvi});
+% \item program variable name;
+% \item target extension;
+% \item master target;
+% \item XFig extensions to clean \emph{or} TEX-flavor to depend upon.
+% \end{itemize}
+%
+% \par
+%
+% For example, \texttt{LaTeX.mk} already defines:
+% \paragraph{DVI flavor}
+% \begin{source}[0.9\linewidth]
+% define lu-define-flavor-DVI\\
+% \hspace*{2ex}\$\$(eval \$\$(call lu-create-flavor,DVI,tex,LATEX,.dvi,dvi,\textbackslash\\
+% \hspace*{4ex}.pstex\_t .pstex))\\
+% endef
+% \end{source}
+% \subparagraph{Tip:} the \texttt{LATEX} program variable name means
+% that the program called will be the one in the \texttt{LATEX}
+% variable and that options in the \texttt{LATEX\_OPTIONS} variable
+% will be used.
+%
+% \paragraph{PDF flavor}
+% \begin{source}[0.9\linewidth]
+% define lu-define-flavor-PDF\\
+% \hspace*{2ex}\$\$(eval \$\$(call lu-create-flavor,PDF,tex,PDFLATEX,.pdf,pdf,\textbackslash\\
+% \hspace*{4ex}.pdftex\_t .\$\$(\_LU\_PDFTEX\_EXT)))\\
+% endef
+% \end{source}
+%
+% \paragraph{PS flavor}
+% \begin{source}[0.9\linewidth]
+% define lu-define-flavor-PS\\
+% \hspace*{2ex}\$\$(eval \$\$(call lu-create-flavor,PS,dvi,DVIPS,.ps,ps,DVI))\\
+% endef
+% \end{source}
+% \subparagraph{Tip:} for DVI-flavors, the program will be invoked with
+% with the option \texttt{-o \emph{target}} and with the name of the
+% file source in argument.
+%
+% \paragraph{DVIPDF flavor}
+% \begin{source}[0.9\linewidth]
+% define lu-define-flavor-DVIPDF\\
+% \hspace*{2ex}\$\$(eval \$\$(call lu-create-flavor,DVIPDF,dvi,DVIPDFM,.pdf,pdf,DVI))\\
+% endef
+% \end{source}
+%
+%
+% \subsection{Variables}
+% \label{sec:variables}
+% \texttt{LaTeX.mk} use a generic mechanism to manage variables, so
+% that lots of thing can easily be customized per document and/or per
+% flavor.
+% \subsubsection{Two kind of variables}
+% \texttt{LaTeX.mk} distinguish two kind of variables. The first one
+% (called SET-variable) is for variables where only \emph{one} value
+% can be set. For example, this is the case for a variable that
+% contain the name of a program to launch. The second one (called
+% ADD-variable) is for variables where values can be cumulative. For
+% example, this will be the case for the options of a program.
+% \par
+%
+% For each variable used by \texttt{LaTeX.mk}, there exists several
+% variables that can be set in the Makefile so that the value will be
+% used for all documents, only for one document, only for one flavor,
+% etc.
+%
+% \newcounter{nbvars}%
+% \newenvironment{descvars}{%
+% \par
+% \noindent%
+% \bgroup%
+% \setcounter{nbvars}{0}%
+% \renewcommand{\emph}[1]{{\it ##1}}
+% \renewcommand{\variable}[3][;]{%
+% \stepcounter{nbvars}%
+% \arabic{nbvars}&\textbf{##2}&##3##1\\%
+% }
+% \begin{tabular}{clp{0.5\linewidth}}
+% }{%
+% \end{tabular}
+% \egroup
+% \par\medskip
+% }
+%
+% \paragraph{SET-variable.} For each SET-variable \texttt{\emph{NAME}}, we
+% can find in the Makfile:
+% \begin{descvars}
+% \variable{\texttt{LU\_\emph{target}\_\emph{NAME}}}{per document
+% and per flavor value}%
+% \variable{\texttt{TD\_\emph{target}\_\emph{NAME}}}{per document
+% and per flavor value filled by the \texttt{texdepends} \LaTeX{}
+% package}%
+% \variable{\texttt{LU\_\emph{master}\_\emph{NAME}}}{per document
+% value}%
+% \variable{\texttt{\emph{master}\_\emph{NAME}}}{per document
+% value}%
+% \variable{\texttt{LU\_FLAVOR\_\emph{flavor}\_\emph{NAME}}}{per
+% flavor value}%
+% \variable{\texttt{LU\_\emph{NAME}}}{global value}%
+% \variable{\texttt{\emph{NAME}}}{global value}%
+% \variable[.]{\texttt{\_LU\_\ldots\emph{NAME}}}{internal
+% \texttt{LaTeX.mk} default values}%
+% \end{descvars}
+% The first set variable will be used.
+%
+% \subparagraph{Tip:} in case of flavor context or document context,
+% only relevant variables will be checked. For example, the
+% SET-variable \texttt{MAIN} that give the main source of the document
+% will be evaluated in document context, so only 4, 5, 6, 7 and 8 will
+% be used (and I cannot see any real interest in using 6 or 7 for this
+% variable).
+%
+% \subparagraph{Tip2:} in case of context of index (when building
+% indexes or glossary), there exists several other variables per index
+% to add to this list (mainly ending with \texttt{\_{\it kind}\_{\it
+% indexname}\_{\it NAME}} or \texttt{\_{\it kind}\_{\it NAME}}).
+% Refer to the sources if you really need them.
+%
+% \paragraph{ADD-variable.} An ADD-variable is cumulative. The user
+% can replace or add any values per document, per flavor, etc.
+% \begin{descvars}
+% \variable{\texttt{LU\_\emph{target}\_\emph{NAME}}}{replacing per
+% document and per flavor values}%
+% \variable{\texttt{\emph{target}\_\emph{NAME}}}{cumulative per
+% document and per flavor values}%
+% \variable{\texttt{LU\_\emph{master}\_\emph{NAME}}}{replacing per
+% document values}%
+% \variable{\texttt{\emph{master}\_\emph{NAME}}}{cumulative per
+% document values}%
+% \variable{\texttt{LU\_FLAVOR\_\emph{flavor}\_\emph{NAME}}}{replacing
+% per flavor values}%
+% \variable{\texttt{FLAVOR\_\emph{flavor}\_\emph{NAME}}}{cumulative
+% per flavor values}%
+% \variable{\texttt{LU\_\emph{NAME}}}{replacing global values}%
+% \variable{\texttt{\emph{NAME}}}{cumulative global values}%
+% \end{descvars}
+% \subparagraph{Tip:} if not defined, \texttt{LU\_\emph{variable}}
+% defaults to ``\texttt{\$(\emph{variable})
+% \$(\_LU\_\emph{variable})}'' and \texttt{\_LU\_\emph{variable}}
+% contains default values managed by \texttt{LaTeX.mk} and the
+% \texttt{texdepends} \LaTeX{} package.
+% \subparagraph{Example:} the ADD-variable \texttt{FLAVORS} is invoked
+% in document context to know which flavors needs to be build for each
+% document. This means that \texttt{LU\_{\it master}\_FLAVORS} will be
+% used.
+% \begin{source}
+% \# We override default value for MASTERS\\
+% LU\_MASTERS=foo bar baz\\
+% \# By default, only the DVIPDF flavor will be build\\
+% FLAVORS=DVIPDF\\
+% ~\\
+% bar\_FLAVORS=PS\\
+% LU\_baz\_FLAVORS=PDF\\
+% \# there will be rules to build\\
+% \# * foo.dvi and foo.pdf\\
+% \# ~ (the DVIPDF flavor depends on the DVI flavor)\\
+% \# * bar.dvi, bar.pdf and bar.ps\\
+% \# ~ (the PS flavor is added to global flavors)\\
+% \# * baz.pdf\\
+% \# ~ (the PDF flavor will be the only one for baz)
+% include LaTeX.mk
+% \end{source}
+% \subsubsection{List of used variables}
+% Here are most of the variables used by \texttt{LaTeX.mk}. Users
+% should only have to sometimes managed the first ones. The latter are
+% described here for information only (and are subject to
+% modifications). Please, report a bug if some of them are not
+% correctly pickup by the \texttt{texdepends} \LaTeX{} package and
+% \texttt{LaTeX.mk}.
+%
+% \newenvironment{describevars}{%
+% \par
+% \noindent%
+% \bgroup%
+% \renewcommand{\emph}[1]{{\it ##1}}%
+% \newcommand{\default}[1]{\newline\textbf{Default: }##1}
+% \renewcommand{\variable}[4]{%
+% \textbf{\texttt{##1}}&##2&##3&##4\\%
+% }
+% \begin{tabular}{cccp{0.5\linewidth}}
+% Name & Kind &%
+% \multicolumn{1}{m{4em}}{\begin{center}Context of
+% use\end{center}} &
+% \multicolumn{1}{c}{Description} \\
+% \hline
+% \hline
+% }{%
+% \end{tabular}
+% \egroup
+% \par\medskip
+% }
+%
+% \begin{describevars}
+% \variable{MASTERS}{ADD}{Global}{List of documents to compile.
+% These values will be used as jobname. \default{basename of
+% \texttt{*.tex} files containing the \texttt{\textbackslash
+% documentclass} pattern}}%
+% \variable{FLAVORS}{ADD}{Document}{List of flavors for each
+% document. \default{\texttt{PS PDF}}}%
+% \variable{MAIN}{SET}{Document}{Master \texttt{tex} source
+% file\default{\texttt{\emph{master}.tex}}}%
+% \variable{DEPENDS}{ADD}{Target}{List of dependencies}%
+% \variable{\emph{progvarname}}{SET}{Target}{Program to launch for
+% the corresponding flavor}%
+% \variable{\emph{progvarname}\_OPTIONS}{ADD}{Target}{Options to use
+% when building the target}%
+% \variable{STYLE}{SET}{Index}{Name of the index/glossary style file
+% to use (\texttt{.ist}, etc.)}%
+% \hline
+% \variable{TARGET}{SET}{Index}{Name of the index/glossary file to
+% produce (\texttt{.ind}, \texttt{.gls}, etc.)}%
+% \variable{SRC}{SET}{Index}{Name of the index/glossary file source
+% (\texttt{.idx}, \texttt{.glo}, etc.)}%
+% \variable{FIGURES}{ADD}{Target}{Lists of figures included}%
+% \variable{BIBFILES}{ADD}{Target}{Lists of bibliography files used
+% (\texttt{.bib})}%
+% \variable{BIBSTYLES}{ADD}{Target}{Lists of bibliography style
+% files used (\texttt{.bst})}%
+% \variable{BBLFILES}{ADD}{Target}{Lists of built bibliography files
+% (\texttt{.bbl})}%
+% \variable{INPUT}{ADD}{Target}{Lists of input files (\texttt{.cls},
+% \texttt{.sty}, \texttt{.tex}, etc.)}%
+% \variable{OUTPUTS}{ADD}{Target}{Lists of output files
+% (\texttt{.aux}, etc.)}%
+% \variable{GRAPHICSPATH}{ADD}{Target}{\texttt{\textbackslash
+% graphicspath\{\}} arguments}%
+% \variable{GPATH}{ADD}{Target}{List of directories from
+% \texttt{GRAPHICSPATH} without \texttt{\{} and \texttt{\}},
+% separated by spaces}%
+% \variable{INDEXES}{ADD}{Target}{Kinds of index (\texttt{INDEX},
+% \texttt{GLOSS}, etc.)}%
+% \variable{INDEXES\_\emph{kind}}{ADD}{Target}{List of indexes or
+% glossaries}%
+% \variable{WATCHFILES}{ADD}{Target}{List of files that trigger a
+% rebuild if modified (\texttt{.aux}, etc.)}%
+% \variable{REQUIRED}{ADD}{Target}{List of new dependencies found by
+% the \texttt{texdepends} \LaTeX{} package}%
+% \variable{MAX\_REC}{SET}{Target}{Maximum level of recursion
+% authorized}%
+% \variable{REBUILD\_RULES}{ADD}{Target}{List of rebuild rules to
+% use (can be modified by the \texttt{texdepends} \LaTeX{}
+% package}%
+% \variable{EXT}{SET}{Flavor}{Target file extension of the flavor}%
+% \variable{DEPFLAVOR}{SET}{Flavor}{TEX-flavor a DVI-flavor depend
+% upon}%
+% \variable{CLEANFIGEXT}{ADD}{Flavor}{Extensions of figure files to
+% remove on clean}%
+% \end{describevars}
+%
+% \newpage
+% \section{FAQ}
+%
+% \newenvironment{question}[2]{
+% \subsection{#1}
+% \texttt{}\llap{$\Rightarrow$ \quad }\emph{#2}\par\bigskip}{
+% }
+%
+% \begin{question}{No rule to make target `LU\_WATCH\_FILES\_SAVE'}{When
+% using |LaTeX.mk|, I got the error:\\
+% |make[1]: *** No rule to make target `LU\_WATCH\_FILES\_SAVE'. Stop.|}
+%
+% |make| is called in such a way that does not allow correct recursive
+% calls. As one can not know by advance how many times \LaTeX{},
+% bib\TeX{}, etc. will need to be run, |latex-make| use recursive
+% invocations of |make|. This means that in the |LaTeX.mk| makefile,
+% there exist rules such as:
+% \begin{source}
+% \$(MAKE) INTERNAL\_VARIABLE=value internal\_target
+% \end{source}
+% In order |latex-make| to work, this invocation of |make| must read
+% the same rules and variable definitions as the main one. This means
+% that calling "|make -f LaTeX.mk foo.pdf|" in a directory with only
+% |foo.tex| will not work. Recursive invocations of make will not load
+% |LaTeX.mk|, will search for a |Makefile| in the current directory
+% and will complain about being unable to build the
+% |LU_WATCH_FILES_SAVE| internal target.
+%
+% \par\medskip
+% The solution is to call |make| so that recursive invocations will
+% read the same variables and rules. For example:\\
+% |make -f LaTeX.mk MAKE="make -f LaTeX.mk" foo.pdf|\\
+% or (if there is no |Makefile| in the directory):\\
+% |env MAKEFILES=LaTeX.mk make foo.pdf|\\
+%
+% \end{question}
+%
+% \StopEventually{
+% }
+% \newpage
+% \section{Implementation}
+%
+% \subsection{LaTeX.mk}
+% \begin{macrocode}
+%<*makefile>
+
+####[ Check Software ]################################################
+
+ifeq ($(filter else-if,$(.FEATURES)),)
+$(error GNU Make 3.81 needed. Please, update your software.)
+ exit 1
+endif
+
+# Some people want to call our Makefile snippet with
+# make -f LaTeX.mk
+# This should not work as $(MAKE) is call recursively and will not read
+# LaTeX.mk again. We cannot just add LaTeX.mk to MAKEFILES as LaTeX.mk
+# should be read AFTER a standard Makefile (if any) that can define some
+# variables (LU_MASTERS, ...) that LaTeX.mk must see.
+# So I introduce an HACK here that try to workaround the situation. Keep in
+# mind that this hack is not perfect and does not handle all cases
+# (for example, "make -f my_latex_config.mk -f LaTeX.mk" will not recurse
+# correctly)
+ifeq ($(foreach m,$(MAKEFILES), $(m)) $(lastword $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+# We are the first file read after the ones from MAKEFILES
+# So we assume we are read due to "-f LaTeX.mk"
+LU_LaTeX.mk_NAME := $(lastword $(MAKEFILE_LIST))
+# Is this Makefile correctly read for recursive calls ?
+ifeq ($(findstring -f $(LU_LaTeX.mk_NAME),$(MAKE)),)
+$(info ********************************************************************************)
+$(info Warning: $(LU_LaTeX.mk_NAME) called directly. I suppose that you run:)
+$(info Warning: $(MAKE) -f $(LU_LaTeX.mk_NAME) $(MAKECMDGOALS))
+$(info Warning: or something similar that does not allow recursive invocation of make)
+$(info Warning: )
+$(info Warning: Trying to enable a workaround. This ACK will be disabled in a future)
+$(info Warning: release. Consider using another syntax, for example:)
+$(info Warning: $(MAKE) -f $(LU_LaTeX.mk_NAME) MAKE="$(MAKE) -f $(LU_LaTeX.mk_NAME)" $(MAKECMDGOALS))
+$(info ********************************************************************************)
+MAKE+= -f $(LU_LaTeX.mk_NAME)
+endif
+endif
+
+####[ Configuration ]################################################
+
+# For global site options
+-include LaTeX.mk.conf
+
+# list of messages categories to display
+LU_SHOW ?= warning #info debug debug-vars
+
+# Select GNU/BSD/MACOSX utils (cp, rm, mv, ...)
+LU_UTILS ?= GNU
+
+####[ End of configuration ]################################################
+# Modifying the remaining of this document may endanger you life!!! ;)
+
+#---------------------------------------------------------------------
+# Controling verbosity
+ifdef VERB
+MAK_VERB := $(VERB)
+else
+#MAK_VERB := verbose
+#MAK_VERB := normal
+MAK_VERB := quiet
+#MAK_VERB := silent
+endif
+
+#---------------------------------------------------------------------
+# MAK_VERB -> verbosity
+ifeq ($(MAK_VERB),verbose)
+COMMON_PREFIX = echo " ======> building " $@ "<======" ; \
+ printf "%s $(@F) due to:$(foreach file,$?,\n * $(file))\n" $1;
+#
+COMMON_HIDE :=#
+COMMON_CLEAN :=#
+SHOW_LATEX:=true
+else
+ifeq ($(MAK_VERB),normal)
+COMMON_PREFIX =#
+COMMON_HIDE := @
+COMMON_CLEAN :=#
+SHOW_LATEX:=true
+else
+ifeq ($(MAK_VERB),quiet)
+COMMON_PREFIX = @ echo " ======> building " $@ "<======" ;
+# echo "due to $?" ;
+COMMON_HIDE := @
+COMMON_CLEAN :=#
+SHOW_LATEX:=
+else # silent
+COMMON_PREFIX = @
+COMMON_HIDE := @
+COMMON_CLEAN := @
+SHOW_LATEX:=
+endif
+endif
+endif
+
+#---------------------------------------------------------------------
+# Old LaTeX have limitations
+_LU_PDFTEX_EXT ?= pdftex
+
+#########################################################################
+# Utilities
+LU_CP=$(LU_CP_$(LU_UTILS))
+LU_MV=$(LU_MV_$(LU_UTILS))
+LU_RM=$(LU_RM_$(LU_UTILS))
+LU_CP_GNU ?= cp -a --
+LU_MV_GNU ?= mv --
+LU_RM_GNU ?= rm -f --
+LU_CP_BSD ?= cp -p
+LU_MV_BSD ?= mv
+LU_RM_BSD ?= rm -f
+LU_CP_MACOSX ?= /bin/cp -p
+LU_MV_MACOSX ?= /bin/mv
+LU_RM_MACOSX ?= /bin/rm -f
+
+lu-show=\
+$(if $(filter $(LU_SHOW),$(1)), \
+ $(if $(2), \
+ $(if $(filter-out $(2),$(MAKELEVEL)),,$(3)), \
+ $(3)))
+lu-show-infos=\
+$(if $(filter $(LU_SHOW),$(1)), \
+ $(if $(2), \
+ $(if $(filter-out $(2),$(MAKELEVEL)),,$(warning $(3))), \
+ $(warning $(3))))
+lu-show-rules=$(call lu-show-infos,info,0,$(1))
+lu-show-flavors=$(call lu-show-infos,info,0,$(1))
+lu-show-var=$(call lu-show-infos,debug-vars,, * Set $(1)=$($(1)))
+lu-show-read-var=$(eval $(call lu-show-infos,debug-vars,, Reading $(1) in $(2) ctx: $(3)))$(3)
+lu-show-readone-var=$(eval $(call lu-show-infos,debug-vars,, Reading $(1) for $(2) [one value]: $(3)))$(3)
+lu-show-set-var=$(call lu-show-infos,debug-vars,, * Setting $(1) for $(2) to value: $(3))
+lu-show-add-var=$(call lu-show-infos,debug-vars,, * Adding to $(1) for $(2) values: $(value 3))
+lu-show-add-var2=$(call lu-show-infos,warning,, * Adding to $(1) for $(2) values: $(value 3))
+
+lu-save-file=$(call lu-show,debug,,echo "saving $1" ;) \
+ if [ -f "$1" ];then $(LU_CP) "$1" "$2" ;else $(LU_RM) "$2" ;fi
+lu-cmprestaure-file=\
+ if cmp -s "$1" "$2"; then \
+ $(LU_MV) "$2" "$1" ; \
+ $(call lu-show,debug,,echo "$1" not modified ;) \
+ else \
+ $(call lu-show,debug,,echo "$1" modified ;) \
+ if [ -f "$2" -o -f "$1" ]; then \
+ $(RM) -- "$2" ; \
+ $3 \
+ fi ; \
+ fi
+
+lu-clean=$(if $(strip $(1)),$(RM) $(1))
+
+define lu-bug # description
+ $$(warning Internal error: $(1))
+ $$(error You probably found a bug. Please, report it.)
+endef
+
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+################## #########################
+################## Variables #########################
+################## #########################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+#
+# _LU_FLAVORS_DEFINED : list of available flavors
+# _LU_FLAV_*_'flavname' : per flavor variables
+# where * can be :
+# PROGNAME : variable name for programme (and .._OPTIONS for options)
+# EXT : extension of created file
+# TARGETNAME : global target
+# DEPFLAVOR : flavor to depend upon
+# CLEANFIGEXT : extensions to clean for fig figures
+_LU_FLAVORS_DEFINED = $(_LU_FLAVORS_DEFINED_TEX) $(_LU_FLAVORS_DEFINED_DVI)
+
+# INDEXES_TYPES = GLOSS INDEX
+# INDEXES_INDEX = name1 ...
+# INDEXES_GLOSS = name2 ...
+# INDEX_name1_SRC
+# GLOSS_name2_SRC
+
+define _lu-getvalues# 1:VAR 2:CTX (no inheritage)
+$(if $(filter-out undefined,$(origin LU_$2$1)),$(LU_$2$1),$($2$1) $(_LU_$2$1_MK) $(TD_$2$1))
+endef
+define lu-define-addvar # 1:suffix_fnname 2:CTX 3:disp-debug 4:nb_args 5:inherited_ctx 6:ctx-build-depend
+ define lu-addtovar$1 # 1:VAR 2:... $4: value
+ _LU_$2$$1_MK+=$$($4)
+ $$(call lu-show-add-var,$$1,$3,$$(value $4))
+ endef
+ define lu-def-addvar-inherited-ctx$1 # 1:VAR 2:...
+ $6
+ _LU_$2$$1_INHERITED_CTX=$$(sort \
+ $$(foreach ctx,$5,$$(ctx) $$(if $$(filter-out undefined,$$(origin \
+ LU_$$(ctx)$$1)),,\
+ $$(_LU_$$(ctx)$$1_INHERITED_CTX))))
+ $$$$(call lu-show-var,_LU_$2$$1_INHERITED_CTX)
+ endef
+ define lu-getvalues$1# 1:VAR 2:...
+$$(if $$(filter-out undefined,$$(origin _LU_$2$$1_INHERITED_CTX)),,$$(eval \
+ $$(call lu-def-addvar-inherited-ctx$1,$$1,$$2,$$3,$$4,$$5,$$6)\
+))$$(call lu-show-read-var,$$1,$3,$$(foreach ctx,\
+ $(if $2,$2,GLOBAL) $$(if $$(filter-out undefined,$$(origin LU_$2$$1)),,\
+ $$(_LU_$2$$1_INHERITED_CTX))\
+ ,$$(call _lu-getvalues,$$1,$$(filter-out GLOBAL,$$(ctx)))))
+ endef
+endef
+
+# Global variable
+# VAR (DEPENDS)
+$(eval $(call lu-define-addvar,-global,,global,2))
+
+# Per flavor variable
+# FLAVOR_$2_VAR (FLAVOR_DVI_DEPENDS)
+# 2: flavor name
+# Inherit from VAR (DEPENDS)
+$(eval $(call lu-define-addvar,-flavor,FLAVOR_$$2_,flavor $$2,3,\
+ GLOBAL,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx-global,$$1)) \
+))
+
+# Per master variable
+# $2_VAR (source_DEPENDS)
+# 2: master name
+# Inherit from VAR (DEPENDS)
+$(eval $(call lu-define-addvar,-master,$$2_,master $$2,3,\
+ GLOBAL,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx-global,$$1)) \
+))
+
+# Per target variable
+# $2$(EXT of $3)_VAR (source.dvi_DEPENDS)
+# 2: master name
+# 3: flavor name
+# Inherit from $2_VAR FLAVOR_$3_VAR (source_DEPENDS FLAVOR_DVI_DEPENDS)
+$(eval $(call lu-define-addvar,,$$2$$(call lu-getvalue-flavor,EXT,$$3)_,target $$2$$(call lu-getvalue-flavor,EXT,$$3),4,\
+ $$2_ FLAVOR_$$3_,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx-master,$$1,$$2)) \
+ $$(eval $$(call lu-def-addvar-inherited-ctx-flavor,$$1,$$3)) \
+))
+
+# Per index/glossary variable
+# $(2)_$(3)_VAR (INDEX_source_DEPENDS)
+# 2: type (INDEX, GLOSS, ...)
+# 3: index name
+# Inherit from VAR (DEPENDS)
+$(eval $(call lu-define-addvar,-global-index,$$2_$$3_,index $$3[$$2],4,\
+ GLOBAL,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx-global,$$1)) \
+))
+
+# Per master and per index/glossary variable
+# $(2)_$(3)_$(4)_VAR (source_INDEX_source_DEPENDS)
+# 2: master name
+# 3: type (INDEX, GLOSS, ...)
+# 4: index name
+# Inherit from $2_VAR $3_$4_VAR (source_DEPENDS INDEX_source_DEPENDS)
+$(eval $(call lu-define-addvar,-master-index,$$2_$$3_$$4_,index $$2/$$4[$$3],5,\
+ $$2_ $$3_$$4_,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx-master,$$1,$$2)) \
+ $$(eval $$(call lu-def-addvar-inherited-ctx-global-index,$$1,$$3,$$4)) \
+))
+
+# Per target and per index/glossary variable
+# $(2)$(EXT of $3)_$(4)_$(5)_VAR (source.dvi_INDEX_source_DEPENDS)
+# 2: master name
+# 3: flavor name
+# 4: type (INDEX, GLOSS, ...)
+# 5: index name
+# Inherit from $2$(EXT of $3)_VAR $(2)_$(3)_$(4)_VAR
+# (source.dvi_DEPENDS source_INDEX_source_DEPENDS)
+$(eval $(call lu-define-addvar,-index,$$2$$(call lu-getvalue-flavor,EXT,$$3)_$$4_$$5_,index $$2$$(call lu-getvalue-flavor,EXT,$$3)/$$5[$$4],6,\
+ $$2$$(call lu-getvalue-flavor,EXT,$$3)_ $$2_$$4_$$5_,\
+ $$(eval $$(call lu-def-addvar-inherited-ctx,$$1,$$2,$$3)) \
+ $$(eval $$(call lu-def-addvar-inherited-ctx-master-index,$$1,$$2,$$4,$$5)) \
+))
+
+
+
+
+
+
+define lu-setvar-global # 1:name 2:value
+ _LU_$(1) ?= $(2)
+ $$(eval $$(call lu-show-set-var,$(1),global,$(2)))
+endef
+
+define lu-setvar-flavor # 1:name 2:flavor 3:value
+ _LU_FLAVOR_$(2)_$(1) ?= $(3)
+ $$(eval $$(call lu-show-set-var,$(1),flavor $(2),$(3)))
+endef
+
+define lu-setvar-master # 1:name 2:master 3:value
+ _LU_$(2)_$(1) ?= $(3)
+ $$(eval $$(call lu-show-set-var,$(1),master $(2),$(3)))
+endef
+
+define lu-setvar # 1:name 2:master 3:flavor 4:value
+ _LU_$(2)$$(call lu-getvalue-flavor,EXT,$(3))_$(1)=$(4)
+ $$(eval $$(call lu-show-set-var,$(1),master/flavor $(2)/$(3),$(4)))
+endef
+
+define lu-getvalue # 1:name 2:master 3:flavor
+$(call lu-show-readone-var,$(1),master/flavor $(2)/$(3),$(or \
+ $(LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(1)), \
+ $(TD_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(1)), \
+ $(LU_$(2)_$(1)), \
+ $($(2)_$(1)), \
+ $(LU_FLAVOR_$(3)_$(1)), \
+ $(LU_$(1)), \
+ $($(1)), \
+ $(_LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(1)), \
+ $(_LU_$(2)_$(1)), \
+ $(_LU_FLAVOR_$(3)_$(1)), \
+ $(_LU_$(1))\
+))
+endef
+
+define lu-getvalue-flavor # 1:name 2:flavor
+$(call lu-show-readone-var,$(1),flavor $(2),$(or \
+ $(LU_FLAVOR_$(2)_$(1)), \
+ $(LU_$(1)), \
+ $($(1)), \
+ $(_LU_FLAVOR_$(2)_$(1)), \
+ $(_LU_$(1))\
+))
+endef
+
+define lu-getvalue-master # 1:name 2:master
+$(call lu-show-readone-var,$(1),master $(2),$(or \
+ $(LU_$(2)_$(1)), \
+ $($(2)_$(1)), \
+ $(LU_$(1)), \
+ $($(1)), \
+ $(_LU_$(2)_$(1)), \
+ $(_LU_$(1))\
+))
+endef
+
+define lu-getvalue-index # 1:name 2:master 3:flavor 4:type 5:indexname
+$(call lu-show-readone-var,$(1),master/flavor/index $(2)/$(3)/[$(4)]$(5),$(or \
+ $(LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(4)_$(5)_$(1)), \
+ $(LU_$(2)_$(4)_$(5)_$(1)), \
+ $(TD_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(4)_$(5)_$(1)), \
+ $($(2)_$(4)_$(5)_$(1)), \
+ $(LU_$(4)_$(5)_$(1)), \
+ $($(4)_$(5)_$(1)), \
+ $(LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(4)_$(1)), \
+ $(LU_$(2)_$(4)_$(1)), \
+ $($(2)_$(4)_$(1)), \
+ $(LU_$(4)_$(1)), \
+ $($(4)_$(1)), \
+ $(LU_$(2)_$(1)), \
+ $($(2)_$(1)), \
+ $(LU_FLAVOR_$(3)_$(1)), \
+ $(LU_$(1)), \
+ $($(1)), \
+ $(_LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(4)_$(5)_$(1)), \
+ $(_LU_$(2)_$(4)_$(5)_$(1)), \
+ $(_LU_$(4)_$(5)_$(1)), \
+ $(_LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(4)_$(1)), \
+ $(_LU_$(2)_$(4)_$(1)), \
+ $(_LU_FLAVOR_$(3)_$(4)_$(1)), \
+ $(_LU_$(4)_$(1)), \
+ $(_LU_$(2)$(call lu-getvalue-flavor,EXT,$(3))_$(1)), \
+ $(_LU_$(2)_$(1)), \
+ $(_LU_FLAVOR_$(3)_$(1)), \
+ $(_LU_$(1))\
+))
+endef
+
+define lu-call-prog # 1:varname 2:master 3:flavor [4:index]
+$(call lu-getvalue,$(1),$(2),$(3)) $(call lu-getvalues,$(1)_OPTIONS,$(2),$(3))
+endef
+
+define lu-call-prog-index # 1:varname 2:master 3:flavor 4:type 5:indexname
+$(call lu-getvalue$(if $(4),-index),$(1),$(2),$(3),$(4),$(5)) \
+ $(call lu-getvalues$(if $(4),-index),$(1)_OPTIONS,$(2),$(3),$(4),$(5))
+endef
+
+define lu-call-prog-flavor # 1:master 2:flavor
+$(call lu-call-prog,$(call lu-getvalue,VARPROG,$(1),$(2)),$(1),$(2))
+endef
+
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+################## #########################
+################## Global variables #########################
+################## #########################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+
+# Globals variables
+$(eval $(call lu-setvar-global,LATEX,latex))
+$(eval $(call lu-setvar-global,PDFLATEX,pdflatex))
+$(eval $(call lu-setvar-global,DVIPS,dvips))
+$(eval $(call lu-setvar-global,DVIPDFM,dvipdfm))
+$(eval $(call lu-setvar-global,BIBTEX,bibtex))
+#$(eval $(call lu-setvar-global,MPOST,TEX="$(LATEX)" mpost))
+$(eval $(call lu-setvar-global,FIG2DEV,fig2dev))
+#$(eval $(call lu-setvar-global,SVG2DEV,svg2dev))
+$(eval $(call lu-setvar-global,EPSTOPDF,epstopdf))
+$(eval $(call lu-setvar-global,MAKEINDEX,makeindex))
+
+# Look for local version, then texmfscript, then in PATH of our program
+# At each location, we prefer with suffix than without
+define _lu_which # VARNAME progname
+ ifeq ($(origin _LU_$(1)_DEFAULT), undefined)
+ _LU_$(1)_DEFAULT := $$(firstword $$(wildcard \
+ $$(addprefix bin/,$(2) $$(basename $(2))) \
+ $$(addprefix ./,$(2) $$(basename $(2))) \
+ $$(shell kpsewhich -format texmfscripts $(2)) \
+ $$(shell kpsewhich -format texmfscripts $$(basename $(2))) \
+ $$(foreach dir,$$(subst :, ,$$(PATH)), \
+ $$(dir)/$(2) $$(dir)/$$(basename $(2))) \
+ ) $(2))
+ export _LU_$(1)_DEFAULT
+ endif
+ $$(eval $$(call lu-setvar-global,$(1),$$(_LU_$(1)_DEFAULT)))
+endef
+
+$(eval $(call _lu_which,GENSUBFIG,gensubfig.py))
+$(eval $(call _lu_which,FIGDEPTH,figdepth.py))
+$(eval $(call _lu_which,GENSUBSVG,gensubfig.py))
+$(eval $(call _lu_which,SVGDEPTH,svgdepth.py))
+$(eval $(call _lu_which,SVG2DEV,svg2dev.py))
+$(eval $(call _lu_which,LATEXFILTER,latexfilter.py))
+
+# Rules to use to check if the build document (dvi or pdf) is up-to-date
+# This can be overruled per document manually and/or automatically
+#REBUILD_RULES ?= latex texdepends bibtopic bibtopic_undefined_references
+$(eval $(call lu-addtovar-global,REBUILD_RULES,latex texdepends))
+
+# Default maximum recursion level
+$(eval $(call lu-setvar-global,MAX_REC,6))
+
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+################## #########################
+################## Flavors #########################
+################## #########################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+
+define lu-create-texflavor # 1:name 2:tex_prog 3:file_ext
+ # 4:master_cible 5:fig_extention_to_clean
+ _LU_FLAVORS_DEFINED_TEX += $(1)
+ $(eval $(call lu-setvar-flavor,VARPROG,$(1),$(2)))
+ $(eval $(call lu-setvar-flavor,EXT,$(1),$(3)))
+ $(eval $(call lu-setvar-flavor,TARGETNAME,$(1),$(4)))
+ $(eval $(call lu-addtovar-flavor,CLEANFIGEXT,$(1),$(5)))
+ $(eval $(call lu-addtovar-flavor,CLEANSVGEXT,$(1),$(5)))
+endef
+
+define lu-create-dviflavor # 1:name 2:dvi_prog 3:file_ext
+ # 4:master_cible 5:tex_flavor_depend
+ $$(eval $$(call lu-define-flavor,$(5)))
+ _LU_FLAVORS_DEFINED_DVI += $(1)
+ $(eval $(call lu-setvar-flavor,VARPROG,$(1),$(2)))
+ $(eval $(call lu-setvar-flavor,EXT,$(1),$(3)))
+ $(eval $(call lu-setvar-flavor,TARGETNAME,$(1),$(4)))
+ $(eval $(call lu-setvar-flavor,DEPFLAVOR,$(1),$(5)))
+endef
+
+define lu-create-flavor # 1:name 2:type 3..7:options
+ $$(if $$(filter $(1),$(_LU_FLAVORS_DEFINED)), \
+ $$(call lu-show-flavors,Flavor $(1) already defined), \
+ $$(call lu-show-flavors,Creating flavor $(1) ($(2))) \
+ $$(eval $$(call lu-create-$(2)flavor,$(1),$(3),$(4),$(5),$(6),$(7))))
+endef
+
+define lu-define-flavor # 1:name
+ $$(eval $$(call lu-define-flavor-$(1)))
+endef
+
+define lu-flavor-rules # 1:name
+ $$(call lu-show-flavors,Defining rules for flavor $(1))
+ $$(if $$(call lu-getvalue-flavor,TARGETNAME,$(1)), \
+ $$(call lu-getvalue-flavor,TARGETNAME,$(1)): \
+ $$(call lu-getvalues-flavor,TARGETS,$(1)))
+ $$(if $$(call lu-getvalue-flavor,TARGETNAME,$(1)), \
+ .PHONY: $$(call lu-getvalue-flavor,TARGETNAME,$(1)))
+endef
+
+define lu-define-flavor-DVI #
+ $$(eval $$(call lu-create-flavor,DVI,tex,LATEX,.dvi,dvi,\
+ .pstex_t .pstex))
+endef
+
+define lu-define-flavor-PDF #
+ $$(eval $$(call lu-create-flavor,PDF,tex,PDFLATEX,.pdf,pdf,\
+ .pdftex_t .$$(_LU_PDFTEX_EXT)))
+endef
+
+define lu-define-flavor-PS #
+ $$(eval $$(call lu-create-flavor,PS,dvi,DVIPS,.ps,ps,DVI))
+endef
+
+define lu-define-flavor-DVIPDF #
+ $$(eval $$(call lu-create-flavor,DVIPDF,dvi,DVIPDFM,.pdf,pdf,DVI))
+endef
+
+$(eval $(call lu-addtovar-global,FLAVORS,PDF PS))
+
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+################## #########################
+################## Masters #########################
+################## #########################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+#########################################################################
+
+define _lu-do-latex # 1:master 2:flavor 3:source.tex 4:ext(.dvi/.pdf)
+ exec 3>&1; \
+ run() { \
+ echo -n "Running:" 1>&3 ; \
+ for arg; do \
+ echo -n " '$$arg'" 1>&3 ; \
+ done ; echo 1>&3 ; \
+ "$$@" ; \
+ }; \
+ doit() { \
+ $(RM) -v "$(1)$(4)_FAILED" \
+ "$(1)$(4)_NEED_REBUILD" \
+ "$(1)$(4).mk" ;\
+ ( echo X | \
+ run $(call lu-call-prog-flavor,$(1),$(2)) \
+ --interaction errorstopmode \
+ --jobname "$(1)" \
+ '\RequirePackage[extension='"$(4)"']{texdepends}\input'"{$(3)}" || \
+ touch "$(1)$(4)_FAILED" ; \
+ if grep -sq '^! LaTeX Error:' "$(1).log" ; then \
+ touch "$(1)$(4)_FAILED" ; \
+ fi \
+ ) | $(call lu-call-prog,LATEXFILTER,$(1),$(2)) ; \
+ NO_TEXDEPENDS_FILE=0 ;\
+ if [ ! -f "$(1)$(4).mk" ]; then \
+ NO_TEXDEPENDS_FILE=1 ;\
+ fi ;\
+ sed -e 's,\\openout[0-9]* = `\(.*\)'"'.,TD_$(1)$(4)_OUTPUTS += \1,p;d" \
+ "$(1).log" >> "$(1)$(4).mk" ;\
+ if [ -f "$(1)$(4)_FAILED" ]; then \
+ echo "*************************************" ;\
+ echo "Building $(1)$(4) fails" ;\
+ echo "*************************************" ;\
+ echo "Here are the last lines of the log file" ;\
+ echo "If this is not enought, try to" ;\
+ echo "call 'make' with 'VERB=verbose' option" ;\
+ echo "*************************************" ;\
+ echo "==> Last lines in $(1).log <==" ; \
+ sed -e '/^[?] X$$/,$$d' \
+ -e '/^Here is how much of TeX'"'"'s memory you used:$$/,$$d' \
+ < "$(1).log" | tail -n 20; \
+ return 1; \
+ fi; \
+ if [ "$$NO_TEXDEPENDS_FILE" = 1 ]; then \
+ echo "*************************************" ;\
+ echo "texdepends does not seems be loaded" ;\
+ echo "Either your (La)TeX installation is wrong or you found a bug." ;\
+ echo "If so, please, report it (with the result of shell command 'kpsepath tex')";\
+ echo "Aborting compilation" ;\
+ echo "*************************************" ;\
+ touch "$(1)$(4)_FAILED" ; \
+ return 1 ;\
+ fi ;\
+ }; doit
+endef
+
+.PHONY: clean-build-fig
+
+##########################################################
+define lu-master-texflavor-index-vars # MASTER FLAVOR TYPE INDEX ext(.dvi/.pdf)
+ $$(call lu-show-rules,Setting flavor index vars for $(1)/$(2)/[$(3)]$(4))
+ $$(eval $$(call lu-addtovar,DEPENDS,$(1),$(2), \
+ $$(call lu-getvalue-index,TARGET,$(1),$(2),$(3),$(4))))
+ $$(eval $$(call lu-addtovar,WATCHFILES,$(1),$(2), \
+ $$(call lu-getvalue-index,SRC,$(1),$(2),$(3),$(4))))
+endef ####################################################
+define lu-master-texflavor-index-rules # MASTER FLAVOR TYPE INDEX ext(.dvi/.pdf)
+ $$(call lu-show-rules,Setting flavor index rules for $(1)/$(2)/[$(3)]$(4))
+ $$(if $$(_LU_DEF_IND_$$(call lu-getvalue-index,TARGET,$(1),$(2),$(3),$(4))), \
+ $$(call lu-show-rules,=> Skipping: already defined in flavor $$(_LU_DEF_IND_$$(call lu-getvalue-index,TARGET,$(1),$(2),$(3),$(4)))), \
+ $$(eval $$(call _lu-master-texflavor-index-rules\
+ ,$(1),$(2),$(3),$(4),$(5),$$(call lu-getvalue-index,TARGET,$(1),$(2),$(3),$(4)))))
+endef
+define _lu-master-texflavor-index-rules # MASTER FLAVOR TYPE INDEX ext TARGET
+ $(6): \
+ $$(call lu-getvalue-index,SRC,$(1),$(2),$(3),$(4)) \
+ $$(wildcard $$(call lu-getvalue-index,STYLE,$(1),$(2),$(3),$(4)))
+ $$(COMMON_PREFIX)$$(call lu-call-prog-index,MAKEINDEX,$(1),$(2),$(3),$(4)) \
+ $$(addprefix -s ,$$(call lu-getvalue-index,STYLE,$(1),$(2),$(3),$(4))) \
+ -o $$@ $$<
+ _LU_DEF_IND_$(6)=$(2)
+ clean::
+ $$(call lu-clean,$$(call lu-getvalue-index,TARGET,$(1),$(2),$(3),$(4)) \
+ $$(addsuffix .ilg,$$(basename \
+ $$(call lu-getvalue-index,SRC,$(1),$(2),$(3),$(4)))))
+endef ####################################################
+define lu-master-texflavor-index # MASTER FLAVOR INDEX ext(.dvi/.pdf)
+ $$(eval $$(call lu-master-texflavor-index-vars,$(1),$(2),$(3),$(4)))
+ $$(eval $$(call lu-master-texflavor-index-rules,$(1),$(2),$(3),$(4)))
+endef
+##########################################################
+
+##########################################################
+define lu-master-texflavor-vars # MASTER FLAVOR ext(.dvi/.pdf)
+ $$(call lu-show-rules,Setting flavor vars for $(1)/$(2))
+ -include $(1)$(3).mk
+ $$(eval $$(call lu-addtovar,DEPENDS,$(1),$(2), \
+ $$(call lu-getvalues,FIGURES,$(1),$(2)) \
+ $$(call lu-getvalues,BIBFILES,$(1),$(2)) \
+ $$(wildcard $$(call lu-getvalues,INPUTS,$(1),$(2))) \
+ $$(wildcard $$(call lu-getvalues,BIBSTYLES,$(1),$(2))) \
+ $$(call lu-getvalues,BBLFILES,$(1),$(2))\
+ ))
+
+ $$(eval $$(call lu-addtovar-flavor,TARGETS,$(2),$(1)$(3)))
+
+ $$(eval $$(call lu-addtovar,GPATH,$(1),$(2), \
+ $$(subst },,$$(subst {,,$$(subst }{, ,\
+ $$(call lu-getvalue,GRAPHICSPATH,$(1),$(2)))))))
+
+ $$(if $$(sort $$(call lu-getvalues,SUBFIGS,$(1),$(2))), \
+ $$(eval include $$(addsuffix .mk,$$(sort \
+ $$(call lu-getvalues,SUBFIGS,$(1),$(2))))))
+
+ $$(eval $$(call lu-addtovar,WATCHFILES,$(1),$(2), \
+ $$(filter %.aux, $$(call lu-getvalues,OUTPUTS,$(1),$(2)))))
+
+ $$(foreach type,$$(call lu-getvalues,INDEXES,$(1),$(2)), \
+ $$(foreach index,$$(call lu-getvalues,INDEXES_$$(type),$(1),$(2)), \
+ $$(eval $$(call lu-master-texflavor-index-vars,$(1),$(2),$$(type),$$(index),$(3)))))
+endef ####################################################
+define lu-master-texflavor-rules # MASTER FLAVOR ext(.dvi/.pdf)
+ $$(call lu-show-rules,Defining flavor rules for $(1)/$(2))
+ $$(call lu-getvalues,BBLFILES,$(1),$(2)): \
+ $$(sort $$(call lu-getvalues,BIBFILES,$(1),$(2)) \
+ $$(wildcard $$(call lu-getvalues,BIBSTYLES,$(1),$(2))))
+ $(1)$(3): %$(3): \
+ $$(call lu-getvalues,DEPENDS,$(1),$(2)) \
+ $$(call lu-getvalues,REQUIRED,$(1),$(2)) \
+ $$(if $$(wildcard $(1)$(3)_FAILED),LU_FORCE,) \
+ $$(if $$(wildcard $(1)$(3)_NEED_REBUILD),LU_FORCE,) \
+ $$(if $$(wildcard $(1)$(3)_NEED_REBUILD_IN_PROGRESS),LU_FORCE,)
+ $$(if $$(filter-out $$(LU_REC_LEVEL),$$(call lu-getvalue,MAX_REC,$(1),$(2))),, \
+ $$(warning *********************************) \
+ $$(warning *********************************) \
+ $$(warning *********************************) \
+ $$(warning Stopping generation of $$@) \
+ $$(warning I got max recursion level $$(LU_$(1)_$(2)_MAX_REC)) \
+ $$(warning Set LU_$(1)_$(2)_MAX_REC, LU_MAX_REC_$(1) or LU_MAX_REC if you need it) \
+ $$(warning *********************************) \
+ $$(warning *********************************) \
+ $$(warning *********************************) \
+ $$(error Aborting generation of $$@))
+ $$(MAKE) LU_REC_MASTER="$(1)" LU_REC_FLAVOR="$(2)" LU_REC_TARGET="$$@"\
+ LU_WATCH_FILES_SAVE
+ $$(COMMON_PREFIX)$$(call _lu-do-latex\
+ ,$(1),$(2),$$(call lu-getvalue-master,MAIN,$(1)),$(3))
+ $$(MAKE) LU_REC_MASTER="$(1)" LU_REC_FLAVOR="$(2)" LU_REC_TARGET="$$@"\
+ LU_WATCH_FILES_RESTORE
+ $$(MAKE) LU_REC_MASTER="$(1)" LU_REC_FLAVOR="$(2)" LU_REC_TARGET="$$@"\
+ $(1)$(3)_NEED_REBUILD
+ifneq ($(LU_REC_TARGET),)
+ $(1)$(3)_NEED_REBUILD_IN_PROGRESS:
+ $$(COMMON_HIDE)touch $(1)$(3)_NEED_REBUILD_IN_PROGRESS
+ $$(addprefix LU_rebuild_,$$(call lu-getvalues,REBUILD_RULES,$(1),$(2))): \
+ $(1)$(3)_NEED_REBUILD_IN_PROGRESS
+.PHONY: $(1)$(3)_NEED_REBUILD
+ $(1)$(3)_NEED_REBUILD: \
+ $(1)$(3)_NEED_REBUILD_IN_PROGRESS \
+ $$(addprefix LU_rebuild_,$$(call lu-getvalues,REBUILD_RULES,$(1),$(2)))
+ $$(COMMON_HIDE)$(RM) $(1)$(3)_NEED_REBUILD_IN_PROGRESS
+ $$(COMMON_HIDE)if [ -f "$(1)$(3)_NEED_REBUILD" ];then\
+ echo "********************************************" ;\
+ echo "*********** New build needed ***************" ;\
+ echo "********************************************" ;\
+ cat "$(1)$(3)_NEED_REBUILD" ; \
+ echo "********************************************" ;\
+ fi
+ $$(MAKE) LU_REC_LEVEL=$$(shell expr $$(LU_REC_LEVEL) + 1) \
+ $$(LU_REC_TARGET)
+endif
+ clean-build-fig::
+ $$(call lu-clean,$$(foreach fig, \
+ $$(basename $$(wildcard $$(filter %.fig, \
+ $$(call lu-getvalues,FIGURES,$(1),$(2))))), \
+ $$(addprefix $$(fig),$$(call lu-getvalues-flavor,CLEANFIGEXT,$(2)))))
+ $$(call lu-clean,$$(foreach svg, \
+ $$(basename $$(wildcard $$(filter %.svg, \
+ $$(call lu-getvalues,FIGURES,$(1),$(2))))), \
+ $$(addprefix $$(svg),$$(call lu-getvalues-flavor,CLEANSVGEXT,$(2)))))
+ clean:: clean-build-fig
+ $$(call lu-clean,$$(call lu-getvalues,OUTPUTS,$(1),$(2)) \
+ $$(call lu-getvalues,BBLFILES,$(1),$(2)) \
+ $$(addsuffix .mk,$$(call lu-getvalues,SUBFIGS,$(1),$(2))) \
+ $$(patsubst %.bbl,%.blg,$$(call lu-getvalues,BBLFILES,$(1),$(2))))
+ $$(call lu-clean,$$(wildcard $(1).log))
+ distclean::
+ $$(call lu-clean,$$(wildcard $(1)$(3) $(1)$(3)_FAILED \
+ $(1)$(3)_NEED_REBUILD $(1)$(3)_NEED_REBUILD_IN_PROGRESS))
+ $$(foreach type,$$(call lu-getvalues,INDEXES,$(1),$(2)), \
+ $$(foreach index,$$(call lu-getvalues,INDEXES_$$(type),$(1),$(2)), \
+ $$(eval $$(call lu-master-texflavor-index-rules,$(1),$(2),$$(type),$$(index),$(3)))))
+endef ####################################################
+define lu-master-texflavor # MASTER FLAVOR ext(.dvi/.pdf)
+ $$(eval $$(call lu-master-texflavor-vars,$(1),$(2),$(3)))
+ $$(eval $$(call lu-master-texflavor-rules,$(1),$(2),$(3)))
+endef
+##########################################################
+
+##########################################################
+define lu-master-dviflavor-vars # MASTER FLAVOR ext(.ps)
+ $$(call lu-show-rules,Setting flavor vars for \
+ $(1)/$(2)/$$(call lu-getvalue-flavor,DEPFLAVOR,$(2)))
+# $$(eval $$(call lu-addvar,VARPROG,$(1),$(2)))
+# $$(eval $$(call lu-addvar,$$(call lu-getvalue,VARPROG,$(1),$(2)),$(1),$(2)))
+ $$(eval $$(call lu-addtovar-flavor,TARGETS,$(2),$(1)$(3)))
+endef ####################################################
+define lu-master-dviflavor-rules # MASTER FLAVOR ext(.ps)
+ $$(call lu-show-rules,Defining flavor rules for \
+ $(1)/$(2)/$$(call lu-getvalue-flavor,DEPFLAVOR,$(2)))
+ $(1)$(3): %$(3): %$$(call lu-getvalue-flavor,EXT,$$(call lu-getvalue-flavor,DEPFLAVOR,$(2)))
+ $$(call lu-call-prog-flavor,$(1),$(2)) -o $$@ $$<
+ distclean::
+ $$(call lu-clean,$$(wildcard $(1)$(3)))
+endef ####################################################
+define lu-master-dviflavor # MASTER FLAVOR ext(.ps)
+ $$(eval $$(call lu-master-dviflavor-vars,$(1),$(2),$(3)))
+ $$(eval $$(call lu-master-dviflavor-rules,$(1),$(2),$(3)))
+endef
+##########################################################
+
+##########################################################
+define lu-master-vars # MASTER
+ $$(call lu-show-rules,Setting vars for $(1))
+ $$(eval $$(call lu-setvar-master,MAIN,$(1),$(1).tex))
+ $$(eval $$(call lu-addtovar-master,DEPENDS,$(1),\
+ $$(call lu-getvalue-master,MAIN,$(1))))
+ _LU_$(1)_DVI_FLAVORS=$$(filter $$(_LU_FLAVORS_DEFINED_DVI),\
+ $$(sort $$(call lu-getvalues-master,FLAVORS,$(1))))
+ _LU_$(1)_TEX_FLAVORS=$$(filter $$(_LU_FLAVORS_DEFINED_TEX),\
+ $$(sort $$(call lu-getvalues-master,FLAVORS,$(1)) \
+ $$(LU_REC_FLAVOR) \
+ $$(foreach dvi,$$(call lu-getvalues-master,FLAVORS,$(1)), \
+ $$(call lu-getvalue-flavor,DEPFLAVOR,$$(dvi)))))
+ $$(foreach flav,$$(_LU_$(1)_TEX_FLAVORS), $$(eval $$(call \
+ lu-master-texflavor-vars,$(1),$$(flav),$$(call lu-getvalue-flavor,EXT,$$(flav)))))
+ $$(foreach flav,$$(_LU_$(1)_DVI_FLAVORS), $$(eval $$(call \
+ lu-master-dviflavor-vars,$(1),$$(flav),$$(call lu-getvalue-flavor,EXT,$$(flav)))))
+endef ####################################################
+define lu-master-rules # MASTER
+ $$(call lu-show-rules,Defining rules for $(1))
+ $$(foreach flav,$$(_LU_$(1)_TEX_FLAVORS), $$(eval $$(call \
+ lu-master-texflavor-rules,$(1),$$(flav),$$(call lu-getvalue-flavor,EXT,$$(flav)))))
+ $$(foreach flav,$$(_LU_$(1)_DVI_FLAVORS), $$(eval $$(call \
+ lu-master-dviflavor-rules,$(1),$$(flav),$$(call lu-getvalue-flavor,EXT,$$(flav)))))
+endef ####################################################
+define lu-master # MASTER
+ $$(eval $$(call lu-master-vars,$(1)))
+ $$(eval $$(call lu-master-rules,$(1)))
+endef
+##########################################################
+
+#$(warning $(call LU_RULES,example))
+$(eval $(call lu-addtovar-global,MASTERS,\
+ $$(shell grep -l '\\documentclass' *.tex 2>/dev/null | sed -e 's/\.tex$$$$//')))
+ifneq ($(LU_REC_TARGET),)
+_LU_DEF_MASTERS = $(LU_REC_MASTER)
+_LU_DEF_FLAVORS = $(LU_REC_FLAVOR) $(FLAV_DEPFLAVOR_$(LU_REC_FLAVOR))
+else
+_LU_DEF_MASTERS = $(call lu-getvalues-global,MASTERS)
+_LU_DEF_FLAVORS = $(sort $(foreach master,$(_LU_DEF_MASTERS),\
+ $(call lu-getvalues-master,FLAVORS,$(master))))
+endif
+
+$(foreach flav, $(_LU_DEF_FLAVORS), $(eval $(call lu-define-flavor,$(flav))))
+$(foreach master, $(_LU_DEF_MASTERS), $(eval $(call lu-master-vars,$(master))))
+$(foreach flav, $(_LU_FLAVORS_DEFINED), $(eval $(call lu-flavor-rules,$(flav))))
+$(foreach master, $(_LU_DEF_MASTERS), $(eval $(call lu-master-rules,$(master))))
+
+##################################################################""
+# Gestion des subfigs
+
+%<<MAKEFILE
+%.subfig.mk: %.subfig %.fig
+ $(COMMON_PREFIX)$(call lu-call-prog,GENSUBFIG) \
+ -p '$$(COMMON_PREFIX)$(call lu-call-prog,FIGDEPTH) < $$< > $$@' \
+ -s $*.subfig $*.fig < $^ > $@
+%MAKEFILE
+
+%<<MAKEFILE
+%.subfig.mk: %.subfig %.svg
+ $(COMMON_PREFIX)$(call lu-call-prog,GENSUBSVG) \
+ -p '$$(COMMON_PREFIX)$(call lu-call-prog,SVGDEPTH) < $$< > $$@' \
+ -s $*.subfig $*.svg < $^ > $@
+%MAKEFILE
+
+clean::
+ $(call lu-clean,$(FIGS2CREATE_LIST))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.fig=%.pstex))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.fig=%.pstex_t))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.fig=%.$(_LU_PDFTEX_EXT)))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.fig=%.pdftex_t))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.svg=%.pstex))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.svg=%.pstex_t))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.svg=%.$(_LU_PDFTEX_EXT)))
+ $(call lu-clean,$(FIGS2CREATE_LIST:%.svg=%.pdftex_t))
+
+.PHONY: LU_FORCE clean distclean
+LU_FORCE:
+ @echo "Previous compilation failed. Rerun needed"
+
+#$(warning $(MAKEFILE))
+
+distclean:: clean
+
+%<<MAKEFILE
+%.eps: %.fig
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L eps $< $@
+
+%.pdf: %.fig
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L pdf $< $@
+
+%.pstex: %.fig
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L pstex $< $@
+
+%.pstex: %.svg
+ $(COMMON_PREFIX)$(call lu-call-prog,SVG2DEV) -L pstex $< $@
+
+
+.PRECIOUS: %.pstex
+%.pstex_t: %.fig %.pstex
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L pstex_t -p $*.pstex $< $@
+
+%.pstex_t: %.svg %.pstex
+ $(COMMON_PREFIX)$(call lu-call-prog,SVG2DEV) -L pstex_t -p $*.pstex $< $@
+
+
+%.$(_LU_PDFTEX_EXT): %.fig
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L pdftex $< $@
+
+%.$(_LU_PDFTEX_EXT): %.svg
+ $(COMMON_PREFIX)$(call lu-call-prog,SVG2DEV) -L pdftex $< $@
+
+.PRECIOUS: %.$(_LU_PDFTEX_EXT)
+%.pdftex_t: %.fig %.$(_LU_PDFTEX_EXT)
+ $(COMMON_PREFIX)$(call lu-call-prog,FIG2DEV) -L pdftex_t -p $*.$(_LU_PDFTEX_EXT) $< $@
+
+%.pdftex_t: %.svg %.$(_LU_PDFTEX_EXT)
+ $(COMMON_PREFIX)$(call lu-call-prog,SVG2DEV) -L pdftex_t -p $*.$(_LU_PDFTEX_EXT) $< $@
+
+%.pdf: %.eps
+ $(COMMON_PREFIX)$(call lu-call-prog,EPSTOPDF) --filter < $< > $@
+%MAKEFILE
+
+#########################################################################
+# Les flavors
+LU_REC_LEVEL ?= 1
+ifneq ($(LU_REC_TARGET),)
+export LU_REC_FLAVOR
+export LU_REC_MASTER
+export LU_REC_TARGET
+export LU_REC_LEVEL
+LU_REC_LOGFILE=$(LU_REC_MASTER).log
+LU_REC_GENFILE=$(LU_REC_MASTER)$(call lu-getvalue-flavor,EXT,$(LU_REC_FLAVOR))
+
+lu-rebuild-head=$(info *** Checking rebuild with rule '$(subst LU_rebuild_,,$@)')
+lu-rebuild-needed=echo $(1) >> "$(LU_REC_GENFILE)_NEED_REBUILD" ;
+
+.PHONY: $(addprefix LU_rebuild_,latex texdepends bibtex)
+LU_rebuild_latex:
+ $(call lu-rebuild-head)
+ $(COMMON_HIDE)if grep -sq 'Rerun to get'\
+ "$(LU_REC_LOGFILE)" ; then \
+ $(call lu-rebuild-needed\
+ ,"$@: new run needed (LaTeX message 'Rerun to get...')") \
+ fi
+
+LU_rebuild_texdepends:
+ $(call lu-rebuild-head)
+ $(COMMON_HIDE)if grep -sq '^Package texdepends Warning: .* Check dependencies again.$$'\
+ "$(LU_REC_LOGFILE)" ; then \
+ $(call lu-rebuild-needed,"$@: new depends required") \
+ fi
+
+LU_rebuild_bibtopic:
+ $(call lu-rebuild-head)
+%</makefile>
+% \end{macrocode}
+% This part is not needed: already checked with the |lu_rebuild_latex| rule
+% \begin{macrocode}
+%<*notused>
+ $(COMMON_HIDE)if grep -sq 'Rerun to get indentation of bibitems right'\
+ "$(LU_REC_LOGFILE)" ; then \
+ $(call lu-rebuild-needed,"$@: new run needed") \
+ fi
+ $(COMMON_HIDE)if grep -sq 'Rerun to get cross-references right'\
+ "$(LU_REC_LOGFILE)" ; then \
+ $(call lu-rebuild-needed,"$@: new run needed") \
+ fi
+%</notused>
+%<*makefile>
+ $(COMMON_HIDE)sed -e '/^Package bibtopic Warning: Please (re)run BibTeX on the file(s):$$/,/^(bibtopic) *and after that rerun LaTeX./{s/^(bibtopic) *\([^ ]*\)$$/\1/p};d' \
+ "$(LU_REC_LOGFILE)" | while read file ; do \
+ touch $$file.aux ; \
+ $(call lu-rebuild-needed,"bibtopic: $$file.bbl outdated") \
+ done
+
+LU_rebuild_bibtopic_undefined_references:
+ $(call lu-rebuild-head)
+ $(COMMON_HIDE)if grep -sq 'There were undefined references'\
+ "$(MASTER_$(LU_REC_MASTER)).log" ; then \
+ $(call lu-rebuild-needed,"$@: new run needed") \
+ fi
+
+.PHONY: LU_WATCH_FILES_SAVE LU_WATCH_FILES_RESTORE
+LU_WATCH_FILES_SAVE:
+ $(COMMON_HIDE)$(foreach file, $(sort \
+ $(call lu-getvalues,WATCHFILES,$(LU_REC_MASTER),$(LU_REC_FLAVOR))), \
+ $(call lu-save-file,$(file),$(file).orig);)
+
+LU_WATCH_FILES_RESTORE:
+ $(COMMON_HIDE)$(foreach file, $(sort \
+ $(call lu-getvalues,WATCHFILES,$(LU_REC_MASTER),$(LU_REC_FLAVOR))), \
+ $(call lu-cmprestaure-file,"$(file)","$(file).orig",\
+ echo "New $(file) file" >> $(LU_REC_GENFILE)_NEED_REBUILD;\
+ );)
+
+endif
+
+%<<MAKEFILE
+%.bbl: %.aux
+ $(COMMON_PREFIX)$(call lu-call-prog,BIBTEX) $*
+%MAKEFILE
+%</makefile>
+% \end{macrocode}
+% \subsection{LaTeX.mk.conf}
+% \begin{macrocode}
+%<*makefile-config>
+# Choose between GNU/BSD utilities (cp, rm, ...)
+# LU_UTILS = GNU
+# LU_UTILS = BSD
+%</makefile-config>
+% \end{macrocode}
+% \subsection{figdepth}
+%
+% \begin{macrocode}
+%<*figdepth>
+#!/usr/bin/env python
+#coding=utf8
+
+"""
+
+stdin : the original xfig file
+stdout : the output xfig file
+args : all depths we want to keep
+
+"""
+
+import optparse
+import os.path
+import sys
+
+def main():
+ parser = optparse.OptionParser()
+ (options, args) = parser.parse_args()
+
+ depths_to_keep = set()
+ for arg in args:
+ depths_to_keep.add(arg)
+
+ comment = ''
+ display = True
+ def show(depth, line):
+ if depth in depths_to_keep:
+ print comment+line,
+ return True
+ else:
+ return False
+ for line in sys.stdin:
+ if line[0] == '#':
+ comment += line
+ continue
+ if line[0] in "\t ":
+ if display:
+ print line
+ else:
+ Fld = line.split(' ', 9999)
+ if not Fld[0] or Fld[0] not in ('1', '2', '3', '4', '5'):
+ print comment+line
+ display = True
+ elif Fld[0] == '4':
+ display = show(Fld[3], line)
+ else:
+ display = show(Fld[6], line)
+ comment = ''
+
+if __name__ == "__main__":
+ main()
+%</figdepth>
+% \end{macrocode}
+% \subsection{gensubfig}
+% \begin{macrocode}
+%<*gensubfig>
+#!/usr/bin/env python
+#coding=utf8
+
+"""
+
+Arguments passes :
+ - fichier image (image.fig ou image.svg)
+ - -s fichier subfig (image.subfig)
+ - -p chemin du script pour generer les sous-images (svgdepth.py ou figdepth.py)
+
+Sortie standard :
+ - makefile pour creer les sous-images (au format .fig ou .svg), et pour les supprimer
+
+"""
+
+from optparse import OptionParser
+import os.path
+
+def main():
+ parser = OptionParser(usage='usage: %prog [options] svg file', description='Creates a\
+Makefile generating subfigures using figdepth.py or svgdepth.py')
+ parser.add_option("-s", "--subfig", dest="subfig", help="subfig file")
+ parser.add_option("-p", "--depth", dest="depth", help="full path of depth script")
+ (options, args) = parser.parse_args()
+ if len(args) < 1:
+ parser.error("incorrect number of arguments")
+ if not options.subfig:
+ parser.error("no subfig file specified")
+ if not options.depth:
+ parser.error("no depth script specified")
+
+ (root, ext) = os.path.splitext(args[0])
+ sf_name = options.subfig
+ ds_name = options.depth
+ varname = '%s_FIGS' % root.upper()
+
+ subfigs = []
+ for line in open(options.subfig, 'r'):
+ t = line.find('#') # looking for comments
+ if t > -1: line = line[0:t] # remove comments...
+ line = line.strip() #remove blank chars
+ if line == '': continue
+ subfigs.append(line)
+
+ count = 1
+ for subfig in subfigs:
+ print "%s_%d%s: %s%s %s" % (root, count, ext, root, ext, sf_name)
+ print "\t%s %s" % (ds_name, subfig)
+ print ""
+ count += 1
+ print "%s := $(foreach n, " % varname,
+ count = 1
+ for subfig in subfigs:
+ print '%d ' % count,
+ count += 1
+ print ", %s_$(n)%s)" % (root, ext)
+ print "FILES_TO_DISTCLEAN += $(%s)" % varname
+ print "FIGS2CREATE_LIST += $(%s)" % varname
+ print "$(TEMPORAIRE): $(%s)" % varname
+ print "$(TEMPORAIRE): $(%s)" % varname
+
+if __name__ == "__main__":
+ main()
+%</gensubfig>
+% \end{macrocode}
+% \subsection{svg2dev}
+% \begin{macrocode}
+%<*svg2dev>
+#!/usr/bin/env python
+#coding=utf8
+
+from optparse import OptionParser
+import shutil
+import subprocess
+
+
+svg2eps = 'inkscape %s -z -C --export-eps=%s --export-latex'
+svg2pdf = 'inkscape %s -z -C --export-pdf=%s --export-latex'
+
+
+def create_image(input_filename, output_filename, mode):
+ subprocess.Popen(mode % (input_filename, output_filename),
+ stdout=subprocess.PIPE, shell=True).communicate()[0]
+ n1 = output_filename + '_tex'
+ n2 = output_filename + '_t'
+ shutil.move(n1, n2)
+
+
+def main():
+ parser = OptionParser()
+ parser.add_option("-L", "--format", dest="outputFormat",
+ metavar="FORMAT", help="output format", default="spstex")
+ parser.add_option("-p", "--portrait", dest="portrait", help="dummy arg")
+ (options, args) = parser.parse_args()
+ if len(args) != 2: return
+ (input_filename, output_filename) = args
+ fmt = options.outputFormat
+ portrait = options.portrait
+
+ if fmt == 'eps':
+ create_image(input_filename, output_filename, svg2eps)
+ elif fmt == 'spstex' or fmt == 'pstex':
+ create_image(input_filename, output_filename, svg2eps)
+ elif fmt == 'spstex_t' or fmt == 'pstex_t':
+ pass
+ elif fmt == 'spdftex' or fmt == 'pdftex':
+ create_image(input_filename, output_filename, svg2pdf)
+ elif fmt == 'spdftex_t' or fmt == 'pdftex_t':
+ pass
+
+
+if __name__ == "__main__":
+ main()
+
+%</svg2dev>
+% \end{macrocode}
+% \subsection{latexfilter}
+% |latexfilter.py| is a small python program that hides most of the output
+% of \TeX/\LaTeX{} output. It only display info, warnings, errors
+% and underfull/overfull hbox/vbox.
+% \begin{macrocode}
+%<*latexfilter>
+#!/usr/bin/env python
+#coding=utf8
+
+"""
+
+stdin : the original xfig file
+stdout : the output xfig file
+args : all depths we want to keep
+
+"""
+
+from __future__ import print_function
+import optparse
+import os.path
+import re
+import sys
+
+def main():
+ parser = optparse.OptionParser()
+ (options, args) = parser.parse_args()
+
+ display = 0
+ in_display = 0
+ start_line = ''
+ warnerror_re = re.compile(r"^(LaTeX|Package|Class)( (.*))? (Warning:|Error:)")
+ fullbox_re = re.compile(r"^(Underfull|Overfull) \\[hv]box")
+ accu = ''
+ for line in sys.stdin:
+ if display > 0:
+ display -= 1
+ if line[0:4].lower() in ('info', 'warn') or line[0:5].lower() == 'error':
+ display = 0
+ line_groups = warnerror_re.match(line)
+ if line_groups:
+ start_line = line_groups.group(3)
+ if not start_line:
+ start_line = ''
+ if line_groups.group(2):
+ start_line = "(" + start_line + ")"
+ display = 1
+ in_display = 1
+ elif (start_line != '') and (line[0:len(start_line)] == start_line):
+ display = 1
+ elif line == "\n":
+ in_display = 0
+ elif line[0:4] == 'Chap':
+ display = 1
+ elif fullbox_re.match(line):
+ display = 2
+ if display:
+ print(accu, end="")
+ accu = line
+ elif in_display:
+ print(accu[0:-1], end="")
+ accu = line
+
+if __name__ == "__main__":
+ main()
+
+%</latexfilter>
+% \end{macrocode}
+% \subsection{svgdepth}
+% \begin{macrocode}
+%<*svgdepth>
+#!/usr/bin/env python
+#coding=utf8
+
+import sys
+import xml.parsers.expat
+
+
+layers = []
+for arg in sys.argv:
+ layers.append(arg)
+
+parser = xml.parsers.expat.ParserCreate()
+class XmlParser(object):
+ def __init__(self, layers):
+ self.state_stack = [True]
+ self.last_state = True
+ self.layers = layers
+ def XmlDeclHandler(self, version, encoding, standalone):
+ sys.stdout.write("<?xml version='%s' encoding='%s'?>\n" % (version, encoding))
+ def StartDoctypeDeclHandler(self, doctypeName, systemId, publicId, has_internal_subset):
+ if publicId != None: sys.stdout.write("<!DOCTYPE %s PUBLIC \"%s\" \"%s\">\n" %\
+ (doctypeName, publicId, systemId))
+ else: sys.stdout.write("<!DOCTYPE %s \"%s\">\n" % (doctypeName, systemId))
+ def StartElementHandler(self, name, attributes):
+ if name.lower() == 'g':
+ r = self.last_state and ('id' not in attributes or \
+ attributes['id'] in self.layers)
+ self.last_state = r
+ self.state_stack.append(r)
+ if not self.last_state: return
+ s = ""
+ for k, v in attributes.items(): s += ' %s="%s"' % (k, v)
+ sys.stdout.write("<%s%s>" % (name, s))
+ def EndElementHandler(self, name):
+ r = self.last_state
+ if name.lower() == 'g':
+ self.state_stack = self.state_stack[0:-1]
+ self.last_state = self.state_stack[-1]
+ if not r: return
+ sys.stdout.write("</%s>" % (name))
+ def CharacterDataHandler(self, data):
+ if not self.last_state: return
+ sys.stdout.write(data)
+
+my_parser = XmlParser(layers)
+
+parser.XmlDeclHandler = my_parser.XmlDeclHandler
+parser.StartDoctypeDeclHandler = my_parser.StartDoctypeDeclHandler
+parser.StartElementHandler = my_parser.StartElementHandler
+parser.EndElementHandler = my_parser.EndElementHandler
+parser.CharacterDataHandler = my_parser.CharacterDataHandler
+
+for line in sys.stdin:
+ parser.Parse(line, False)
+parser.Parse('', True)
+
+
+%</svgdepth>
+% \end{macrocode}
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/source/support/latex-make/latex-make.ins b/Master/texmf-dist/source/support/latex-make/latex-make.ins
new file mode 100644
index 00000000000..b00b11e4e48
--- /dev/null
+++ b/Master/texmf-dist/source/support/latex-make/latex-make.ins
@@ -0,0 +1,68 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{latex-make.ins}[2005/03/28 v1.1 Installation script for latex-make package]
+
+\def\batchfile{latex-make.ins}
+\input docstrip
+
+\ifx\generate\undefined
+ \Msg{**********************************************}
+ \Msg{* This installation requires docstrip}
+ \Msg{* version 2.4 or later.}
+ \Msg{* An older version of docstrip has been input}
+ \Msg{**********************************************}
+ \errhelp{Move or rename old docstrip.tex and get a newer one.}
+ \errmessage{Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname\end
+\fi
+
+\askforoverwritefalse
+\keepsilent
+
+\catcode`\^^I=12
+\generate{
+ \file{figlatex.sty}{\from{figlatex.dtx}{package}}
+ \file{figlatex.cfg}{\from{figlatex.dtx}{config}}
+ \file{texgraphicx.sty}{\from{figlatex.dtx}{compat}}
+ \file{pdfswitch.sty}{\from{pdfswitch.dtx}{package}}
+ \file{texdepends.sty}{\from{texdepends.dtx}{package}}
+ \nopreamble
+ \nopostamble
+ \file{LaTeX.mk}{\from{latex-make.dtx}{makefile}}
+ \file{LaTeX.mk.conf}{\from{latex-make.dtx}{makefile-config}}
+ \file{figdepth.py}{\from{latex-make.dtx}{figdepth}}
+ \file{gensubfig.py}{\from{latex-make.dtx}{gensubfig}}
+ \file{latexfilter.py}{\from{latex-make.dtx}{latexfilter}}
+ \file{svg2dev.py}{\from{latex-make.dtx}{svg2dev}}
+ \file{svgdepth.py}{\from{latex-make.dtx}{svgdepth}}
+}
+\catcode`\^^I=10
+
+\Msg{***************************************************************}
+\Msg{*}
+\Msg{* \space Copy the files listed below into a TeX searchable directory.}
+\Msg{* \@spaces figlatex.sty}
+\Msg{* \@spaces figlatex.cfg}
+\Msg{* \@spaces texgraphicx.sty}
+\Msg{* \@spaces pdfswitch.sty}
+\Msg{* \@spaces texdepends.sty}
+\Msg{* \space Copy the files listed below into a Make searchable directory}
+\Msg{* \space (as /usr/include or current directory)}
+\Msg{* \@spaces LaTeX.mk}
+\Msg{* \space Make executable the files listed below and install them in the current}
+\Msg{* \space directory, in a 'bin' subdirectory, in a scripts directory of a searchable}
+\Msg{* \space TeX Directory Structure, or in your PATH}
+\Msg{* \@spaces figdepth.py}
+\Msg{* \@spaces gensubfig.py}
+\Msg{* \@spaces latexfilter.py}
+\Msg{* \@spaces svg2dev.py}
+\Msg{* \@spaces svgdepth.py}
+\Msg{*}
+\Msg{* \space To get latex-make documentation,}
+\Msg{* \@spaces make doc (for A4 PDF) or}
+\Msg{* \@spaces make dvi.}
+\Msg{*}
+\Msg{***************************************************************}
+
+\endinput
+
diff --git a/Master/texmf-dist/source/support/latex-make/pdfswitch.dtx b/Master/texmf-dist/source/support/latex-make/pdfswitch.dtx
new file mode 100644
index 00000000000..ef63c39f5ed
--- /dev/null
+++ b/Master/texmf-dist/source/support/latex-make/pdfswitch.dtx
@@ -0,0 +1,127 @@
+%<*package>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% SWITCH FOR PDFLATEX or LATEX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+\def\fileversion{0.0.2}
+\def\filedate{2003/07/12}
+
+\NeedsTeXFormat{LaTeX2e}
+
+\ProvidesPackage%
+{pdfswitch}%
+[\filedate\space Automatic switch between pdf and ps. v\fileversion]
+
+\RequirePackage{ae,aeguill}
+\RequirePackage{color}
+\RequirePackage{ifthen}
+\RequirePackage{ifpdf}
+
+\newboolean{nocolor@pdfswitch}
+\setboolean{nocolor@pdfswitch}{false}
+\DeclareOption{nocolor}{\setboolean{nocolor@pdfswitch}{true}}
+\newboolean{backref@pdfswitch}
+\setboolean{backref@pdfswitch}{false}
+\DeclareOption{backref}{\setboolean{backref@pdfswitch}{true}}
+\newboolean{pagebackref@pdfswitch}
+\setboolean{pagebackref@pdfswitch}{false}
+\DeclareOption{pagebackref}{\setboolean{pagebackref@pdfswitch}{true}}
+\newboolean{noborder@pdfswitch}
+\setboolean{noborder@pdfswitch}{false}
+\DeclareOption{noborder}{\setboolean{noborder@pdfswitch}{true}}
+\newboolean{plainpages@pdfswitch}
+\setboolean{plainpages@pdfswitch}{false}
+\DeclareOption{plainpages}{\setboolean{plainpages@pdfswitch}{true}}
+
+\ProcessOptions
+
+\definecolor{pdfurlcolor}{rgb}{0,0,0.6}
+\definecolor{pdfcitecolor}{rgb}{0,0.6,0}
+\definecolor{pdflinkcolor}{rgb}{0.6,0,0}
+
+ %%%%%%%%%%%%%%%%%%%%%%%%% graphicx and thumbpdf %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifpdf
+\usepackage[pdftex]{graphicx} %%% graphics for pdfLaTeX
+\DeclareGraphicsExtensions{.pdf} %%% standard extension for included graphics
+\usepackage[pdftex]{thumbpdf} %%% thumbnails for pdflatex
+\else
+\usepackage[dvips]{graphicx} %%% graphics for dvips
+\DeclareGraphicsExtensions{.eps} %%% standard extension for included graphics
+%\usepackage[ps2pdf]{thumbpdf} %%% thumbnails for ps2pdf
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%% Basic options for hyperref %%%%%%%%%%%%%%%%%%%%%%%%%
+\ifpdf
+\edef\keys@pdfswitch{%
+ pdftex, %%% hyper-references for pdflatex
+ bookmarks=true,% %%% generate bookmarks ...
+ bookmarksnumbered=true,% %%% ... with numbers
+ hypertexnames=false,% %%% needed for correct links to figures !!!
+ breaklinks=true% %%% break links if exceeding a single line
+}
+\else
+\edef\keys@pdfswitch{%
+ ps2pdf, %%% hyper-references for ps2pdf
+ bookmarks=true,% %%% generate bookmarks ...
+ bookmarksnumbered=true,% %%% ... with numbers
+ hypertexnames=false,% %%% needed for correct links to figures !!!
+ breaklinks=true,% %%% breaks lines, but links are very small
+ pdfborder={0 0 11.0} %%% border-width of frames will
+ %%% be multiplied with 0.009 by ps2pdf
+}
+\fi
+
+\ifthenelse{\boolean{nocolor@pdfswitch}}{%
+ \edef\keys@pdfswitch{\keys@pdfswitch,colorlinks=false}%
+}{
+ \edef\keys@pdfswitch{\keys@pdfswitch,colorlinks=true,%
+ citecolor=pdfcitecolor,
+ urlcolor=pdfurlcolor,
+ linkcolor=pdflinkcolor,
+ linkbordercolor={1 1 1}}%
+}
+
+\ifthenelse{\boolean{plainpages@pdfswitch}}{%
+}{
+ \edef\keys@pdfswitch{\keys@pdfswitch,plainpages=false}%
+}
+
+\ifthenelse{\boolean{noborder@pdfswitch}}{%
+ \edef\keys@pdfswitch{\keys@pdfswitch,pdfborder={0 0 0}}%
+}{}
+
+\ifthenelse{\boolean{backref@pdfswitch}}{%
+ \edef\keys@pdfswitch{\keys@pdfswitch,backref}%
+}{}
+
+\ifthenelse{\boolean{pagebackref@pdfswitch}}{%
+ \edef\keys@pdfswitch{\keys@pdfswitch,pagebackref}%
+}{}
+
+\usepackage[\keys@pdfswitch]{hyperref}
+
+%%%%%%%%%%%%%%%%%%%%%%%%% HyperSetup %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifpdf
+\AtBeginDocument{
+ \hypersetup{
+ pdfauthor = {\@author},
+ pdftitle = {\@title},
+ pdfsubject = {\@ifundefined{@subject}{}{\@subject}},
+ pdfkeywords = {\@ifundefined{@keywords}{}{\@keywords}}
+ }
+}
+%%% pdfcreator, pdfproducer, and Creation Date are automatically set by pdflatex !!!
+\pdfadjustspacing=1 %%% force LaTeX-like character spacing
+\else
+\AtBeginDocument{
+% \hypersetup{
+% pdfauthor = {\@author},
+% pdftitle = {\@title},
+% pdfsubject = {\@ifundefined{@subject}{}{\@subject}},
+% pdfkeywords = {\@ifundefined{@keywords}{}{\@keywords}},
+% pdfcreator = {LaTeX with hyperref package},
+% pdfproducer = {dvips + ps2pdf}
+% }
+}
+\fi
+%</package> \ No newline at end of file
diff --git a/Master/texmf-dist/source/support/latex-make/texdepends.dtx b/Master/texmf-dist/source/support/latex-make/texdepends.dtx
new file mode 100644
index 00000000000..0a9d0b645ad
--- /dev/null
+++ b/Master/texmf-dist/source/support/latex-make/texdepends.dtx
@@ -0,0 +1,1037 @@
+% \iffalse meta-comment
+%%
+%% File: texdepends.dtx Copyright (C) 2004--2011 V. Danjean
+%% Vincent.Danjean@ens-lyon.org
+%% Modified by Matthieu Gallet
+%% Matthieu.Gallet@ens-lyon.org
+%%
+%% This program is free software; you can redistribute it and/or
+%% modify it under the terms of the GNU General Public License
+%% as published by the Free Software Foundation; either version 2
+%% of the License, or (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%%
+%
+%<*dtx>
+ \ProvidesFile{texdepends.dtx}
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}%
+%<package>\ProvidesPackage{texdepends}%
+% \fi
+% \ProvidesFile{texdepends.dtx}
+[2008/01/28\space Automatic depends generation. v1.2.0]
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[latin1]{inputenc}
+\usepackage[french,english]{babel}
+\usepackage{pdfswitch}
+\NoAutoSpaceBeforeFDP
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\setcounter{IndexColumns}{2} % make a twocolumn index
+\setlength{\columnseprule}{0pt} % no rules between columns ...
+\setlength{\columnsep}{2em} % ... but more spacing instead.
+\setcounter{unbalance}{4}
+\setlength{\IndexMin}{100pt}
+%%%%\OnlyDescription % uncomment this line to suppress printing the source code
+\makeatletter
+% don't show underfull hboxes in index/glossary:
+\g@addto@macro{\IndexParms}{\hbadness=10000}
+\g@addto@macro{\GlossaryParms}{\hbadness=10000}
+\makeatother
+\begin{document}
+ \DocInput{texdepends.dtx}
+ \PrintIndex
+ \PrintChanges
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{texdepends.dtx}
+%
+% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ }
+% \DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global}
+% \DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,%
+% \iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi,\loop,\do}
+% \DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,%
+% \vbox,\vtop,\vcenter}
+% \DoNotIndex{\@empty,\immediate,\write}
+% \DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup}
+% \DoNotIndex{\divide,\advance,\multiply,\count,\dimen}
+% \DoNotIndex{\relax,\space,\string}
+% \DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,%
+% \closein,\closeout}
+% \DoNotIndex{\catcode,\endinput}
+% \DoNotIndex{\jobname,\message,\read,\the,\noexpand}
+% \DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss}
+% \DoNotIndex{\m@ne,\z@,\@m,\z@skip,\@ne,\tw@,\p@}
+% \DoNotIndex{\DeclareRobustCommand,\DeclareOption,\newcommand,\newcommand*}
+% \DoNotIndex{\newcount,\newif,\newlinechar,\newread,\newtoks,\newwrite}
+% \DoNotIndex{\dp,\wd,\ht,\vss,\unskip,\ifthenelse}
+%
+% \DoNotIndex{\@filef@und,\@nameddef,\@tempa}
+% \DoNotIndex{\define@key,\equal,\ExecuteOptions}
+% \DoNotIndex{\filename@area,\filename@base,\filename@ext,\filename@parse}
+% \DoNotIndex{\Gin@exclamation,\Gin@getbase,\Gin@scalex,\Gin@scaley}
+% \DoNotIndex{\Gread@eps,\Gread@pdf,\Gscale@box}
+% \DoNotIndex{\IfFileExists,\ifpdf,\input,\InputIfFileExists}
+% \DoNotIndex{\MessageBreak,\PackageWarning,\PackageWarningNoLine}
+% \DoNotIndex{\ProcessOptions,\RequirePackage,\typeout}
+% \DoNotIndex{}
+% \DoNotIndex{}
+%
+% \title{The \textsf{texdepends} package\thanks{This file
+% has version number \fileversion, last
+% revised \filedate.}}
+% \author{Vincent \textsc{Danjean}}
+% \date{\filedate}
+% \maketitle
+% \begin{abstract}
+% This package allows \LaTeX\space to automatically generate
+% dependencies while compiling documents.
+% \end{abstract}
+% \CheckSum{785}
+%
+% \changes{v1.0.1}{2005/03/22}{Version 1.0.1 at last}
+% \changes{v1.0.2}{2005/10/22}{Add support for package index.sty}
+% \changes{v1.1.0}{2005/11/05}{Manage index/glossary}
+% \changes{v1.1.0}{2005/11/05}{Rewrite of the package}
+% \changes{v1.2.0}{2008/01/28}{Better management of subfig files}
+% \changes{v1.3.0}{2011/09/25}{Management of svg files}
+%
+% \makeatletter
+% \def\SpecialOptionIndex#1{\@bsphack
+% \index{#1\actualchar{\protect\ttfamily#1}
+% (option)\encapchar usage}%
+% \index{options:\levelchar{\protect\ttfamily#1}\encapchar
+% usage}\@esphack}
+% \def\SpecialFileIndex#1{\@bsphack
+% \index{#1\actualchar{\protect\ttfamily#1}
+% (file)\encapchar usage}%
+% \index{files:\levelchar{\protect\ttfamily#1}\encapchar
+% usage}\@esphack}
+% \def\SpecialMainOptionIndex#1{\@bsphack\special@index{#1\actualchar
+% {\string\ttfamily\space#1}
+% (option)\encapchar main}%
+% \special@index{options:\levelchar{%
+% \string\ttfamily\space#1}\encapchar
+% main}\@esphack}
+% \def\option{\begingroup
+% \catcode`\\12
+% \MakePrivateLetters \mym@cro@ \iffalse}
+% \long\def\mym@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
+% \edef\saved@macroname{\string#2}%
+% \def\makelabel##1{\llap{##1}}%
+% \if@inlabel
+% \let\@tempa\@empty \count@\macro@cnt
+% \loop \ifnum\count@>\z@
+% \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
+% \edef\makelabel##1{\llap{\vtop to\baselineskip
+% {\@tempa\hbox{##1}\vss}}}%
+% \advance \macro@cnt \@ne
+% \else \macro@cnt\@ne \fi
+% \edef\@tempa{\noexpand\item[%
+% #1%
+% \noexpand\PrintMacroName
+% \else
+% \noexpand\PrintEnvName
+% \fi
+% {\string#2}]}%
+% \@tempa
+% \global\advance\c@CodelineNo\@ne
+% #1%
+% \SpecialMainIndex{#2}\nobreak
+% \DoNotIndex{#2}%
+% \else
+% \SpecialMainOptionIndex{#2}\nobreak
+% \fi
+% \global\advance\c@CodelineNo\m@ne
+% \ignorespaces}
+% \let\endoption \endtrivlist
+% \def\DescribeOption{\leavevmode\@bsphack\begingroup\MakePrivateLetters
+% \Describe@Option}
+% \def\Describe@Option#1{\endgroup
+% \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
+% \SpecialOptionIndex{#1}\@esphack\ignorespaces}
+% \def\DescribeFile{\leavevmode\@bsphack\begingroup\MakePrivateLetters
+% \Describe@Option}
+% \def\Describe@File#1{\endgroup
+% \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
+% \SpecialFileIndex{#1}\@esphack\ignorespaces}
+% \makeatother
+% \MakeShortVerb{\|}
+%
+% \tableofcontents
+% \section{Introduction}
+% This package automatically generates dependancies on \LaTeX\ files and
+% packages, figures, bibliography files, glossary and index files. The
+% generated file is then used by a Makefile to handle dependancies.
+% \StopEventually{
+% }
+% \section{Implementation of texdepends}
+% \subsection{Options}
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+% |texdepends| is easier to write with the |ifthen| package.
+% \begin{macrocode}
+\RequirePackage{ifthen}
+% \end{macrocode}
+% \begin{option}{debug}
+% The debug option (enable debug messages, useful for debuging)
+% \begin{macrocode}
+\newboolean{TD@debug}
+\newcommand{\TD@option@debug}[1][true]{%
+ %\PackageWarningNoLine{texdepends}{Setting debug to #1}
+ \setboolean{TD@debug}{#1}%
+}%
+% \end{macrocode}
+% \end{option}
+% \begin{option}{extension}
+% The extension option. We can use it to let |texdepends|
+% know whether we compile a dvi or a pdf file.
+% \begin{macrocode}
+\def\TD@option@extension[#1]{%
+ %\PackageWarningNoLine{texdepends}{Using extention #1}
+ \def\TD@extention{#1}%
+}%
+% \end{macrocode}
+% \end{option}
+% Managing options with specific code. Using the |keyval|
+% package could be a solution, but this would add one more dependency.
+% \begin{macrocode}
+\def\TD@option@split#1=#2=#3\relax{%
+ \def\TD@option@name{#1}%
+ \ifx\TD@option@name\@empty\else
+ \expandafter\let\expandafter\TD@option@cmd
+ \csname TD@option@\TD@option@name\endcsname
+ %\PackageWarningNoLine{texdepends}{1: '#1', 2: '#2', 3: '#3'}
+ \ifx\TD@option@cmd\relax
+ \@unknownoptionerror%
+ \else
+ \ifx\@empty#3\@empty
+ \TD@option@cmd\relax%
+ \else
+ \def\TD@option@value{#2}%
+ \TD@option@cmd[\TD@option@value]%
+ \fi
+ \fi
+ \fi
+}%
+% \end{macrocode}
+% All option are managed by the same code.
+% \begin{macrocode}
+\DeclareOption*{%
+ %\PackageWarningNoLine{texdepends}{Option \CurrentOption}%
+ \expandafter\TD@option@split\CurrentOption==\relax%
+}%
+% \end{macrocode}
+% So lets process options
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+% If the |extension| option is not used, we try to find ourselves
+% the good extension based on TeX engine or mode.
+% \begin{macrocode}
+\ifthenelse{\isundefined{\TD@extention}}{%
+ \PackageWarningNoLine{texdepends}{No extension given: detecting it}%
+ \RequirePackage{ifxetex,ifpdf}%
+ \ifxetex%
+ \PackageWarningNoLine{textdepends}{Detected XeTeX: using .pdf}%
+ \def\TD@extention{.pdf}%
+ \else\ifpdf%
+ \PackageWarningNoLine{texdepends}{Detected PDF mode: using .pdf}%
+ \def\TD@extention{.pdf}%
+ \else%
+ \PackageWarningNoLine{texdepends}{Detected DVI mode. Using .dvi}%
+ \def\TD@extention{.dvi}%
+ \fi\fi%
+}{}%
+% \end{macrocode}
+%
+% \subsection{Tools}
+% Some macros to help development
+% \subsubsection{Debug/info wrapper}
+% \begin{macro}{\TD@warning}
+% To write a warning
+% \begin{macrocode}
+\newcommand{\TD@warning}[1]{%
+ \PackageWarningNoLine{texdepends}{#1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@warningLine}
+% To write a warning with line info
+% \begin{macrocode}
+\newcommand{\TD@warningLine}[1]{%
+ \PackageWarning{texdepends}{#1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@info}
+% To write an info (as a warning if the |debug| option is set
+% \begin{macrocode}
+\newcommand{\TD@info}[1]{%
+ \ifthenelse{\boolean{TD@debug}}{%
+ \PackageWarningNoLine{texdepends}{#1}%
+ }{%
+ \PackageInfo{texdepends}{#1}%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@debug}
+% To write a message if the |debug| option is set
+% \begin{macrocode}
+\newcommand{\TD@debug}[1]{%
+ \ifthenelse{\boolean{TD@debug}}{%
+ \PackageWarningNoLine{texdepends}{#1}%
+ }{%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+% \subsubsection{Writing dependencies}
+% We open the file where we will write dependencies and other infos.
+% \begin{macrocode}
+\newwrite\TD@write
+\TD@info{Writing info in '\jobname\TD@extention.mk'}
+\immediate\openout\TD@write\jobname\TD@extention.mk%
+% \end{macrocode}
+% And we define a few macro to write in this file
+%
+% \begin{macro}{\TD@print}
+% We write something in the file
+% \begin{macrocode}
+\def\TD@print#1{%
+ \immediate\write\TD@write{#1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printClass}
+% We need a class
+% \begin{macrocode}
+\def\TD@printClass#1{%
+ \TD@print{TD_\jobname\TD@extention _INPUTS\space += #1.cls}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printPackage}
+% We need a package
+% \begin{macrocode}
+\def\TD@printPackage#1{%
+ \TD@print{TD_\jobname\TD@extention _INPUTS\space += #1.sty}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printInput}
+% We need a (\LaTeX) file
+% \begin{macrocode}
+\def\TD@printInput#1{%
+ \TD@print{TD_\jobname\TD@extention _INPUTS\space += #1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printFig}
+% We need an |XFig| file
+% \begin{macrocode}
+\def\TD@printFig#1{%
+ \TD@print{TD_\jobname\TD@extention _FIGURES\space += #1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printSubfig}
+% Web need a subfig file (see figlatex.dtx)
+% \begin{macrocode}
+\def\TD@printSubfig#1{%
+ \TD@print{TD_\jobname\TD@extention _SUBFIGS\space += #1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printRequiredFile}
+% A file is missing. |texdepend| will try to skip it this time,
+% but it will be needed at the next compilation
+% \begin{macrocode}
+\def\TD@printRequiredFile#1{%
+ \TD@print{TD_\jobname\TD@extention _REQUIRED\space += #1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\RequireFile}
+% LaTeX users can directly declare a dependencie
+% \begin{macrocode}
+\let\RequireFile\TD@printRequiredFile
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printOut}
+% We write in a file
+% \begin{macrocode}
+\def\TD@printOut#1{%
+ \TD@print{TD_\jobname\TD@extention _OUTPUTS\space += #1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printGraphicspath}
+% We modify the graphicspath
+% \begin{macrocode}
+\def\TD@printGraphicspath#1{%
+ \TD@print{TD_\jobname\TD@extention _GRAPHICSPATH\space := #1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printBibfile}
+% We use a bibfile (|*.bib|)
+% \begin{macrocode}
+\def\TD@printBibfile#1{%
+ \TD@print{TD_\jobname\TD@extention _BIBFILES\space += #1.bib}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printBibstyle}
+% We use a bibstyle file (|*.bst|)
+% \begin{macrocode}
+\def\TD@printBibstyle#1{%
+ \TD@print{TD_\jobname\TD@extention _BIBSTYLES\space += #1.bst}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printBblfile}
+% We use a bibliography file (|*.bbl|)
+% \begin{macrocode}
+\def\TD@printBblfile#1{%
+ \TD@print{TD_\jobname\TD@extention _BBLFILES\space += #1.bbl}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printRebuildRule}
+% We need a specific rule in the |Makefile| to check if a
+% rebuild is needed
+% \begin{macrocode}
+\def\TD@printRebuildRule#1{%
+ \TD@print{TD_\jobname\TD@extention _REBUILD_RULES\space += #1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printIndex}
+% We use a new index
+% \begin{macrocode}
+\def\TD@printIndex#1{%
+ \TD@print{TD_\jobname\TD@extention _INDEXES\space += INDEX}%
+ \TD@print{TD_\jobname\TD@extention _INDEXES_INDEX\space += #1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printIndexSource}
+% The index file filled by \LaTeX
+% \begin{macrocode}
+\def\TD@printIndexSource#1#2{%
+ \TD@print{TD_\jobname\TD@extention _INDEX_#1_SRC\space = #2}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printIndexTarget}
+% And the index file read by \LaTeX{} after |makeindex|
+% processing
+% \begin{macrocode}
+\def\TD@printIndexTarget#1#2{%
+ \TD@print{TD_\jobname\TD@extention _INDEX_#1_TARGET\space = #2}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printIndexStyle}
+% The index style to be used with |makeindex| (never
+% called for now)
+% \begin{macrocode}
+\def\TD@printIndexStyle#1#2{%
+ \TD@print{TD_\jobname\TD@extention _INDEX_#1_STYLE\space = #2}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printGlossary}
+% And the same things for glossary. Its name
+% \begin{macrocode}
+\def\TD@printGlossary#1{%
+ \TD@print{TD_\jobname\TD@extention _INDEXES += GLOSS}%
+ \TD@print{TD_\jobname\TD@extention _INDEXES_GLOSS\space += #1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printGlossarySource}
+% The glossary file filled by \LaTeX
+% \begin{macrocode}
+\def\TD@printGlossarySource#1#2{%
+ \TD@print{TD_\jobname\TD@extention _GLOSS_#1_SRC\space = #2}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printGlossaryTarget}
+% And the glossary file read by \LaTeX{} after |makeindex|
+% processing
+% \begin{macrocode}
+\def\TD@printGlossaryTarget#1#2{%
+ \TD@print{TD_\jobname\TD@extention _GLOSS_#1_TARGET\space = #2}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@printGlossaryStyle}
+% The glossary style to be used with |makeindex| (never
+% called for now)
+% \begin{macrocode}
+\def\TD@printGlossaryStyle#1#2{%
+ \TD@print{TD_\jobname\TD@extention _GLOSS_#1_STYLE\space = #2}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Diverting a macro}
+% \begin{macro}{\TD@switch}
+% |\TD@switch| replace the macro |\#1| by the macro |\TD@#1|. The
+% original macro is stored in the |\TD@orig@#1| macro. Nothing is done
+% if |\#1| is already |\TD@#1| (that is if |\TD@switch| is called
+% severall times with the same argument)
+% \begin{macrocode}
+\def\TD@switch#1{%
+ \expandafter\let\expandafter\TD@local@old\csname#1\endcsname%
+ \expandafter\let\expandafter\TD@local@new\csname TD@#1\endcsname%
+ \ifx\TD@local@old\TD@local@new
+ \PackageWarning{texdepends}{#1 already redefined. Skipping it.}%
+ \else
+ \ifx\TD@local@old\relax
+ \TD@warning{Diverting empty macro '#1' \MessageBreak%
+ Probably a bug in texdepends.sty}%
+ \else
+ \TD@info{Diverting macro '#1'}%
+ \fi
+ \expandafter\let\csname TD@orig@#1\endcsname\TD@local@old%
+ \expandafter\let\csname#1\endcsname\TD@local@new%
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TD@docswitch}
+% Sometimes, we want the diversion to be delayed until the start of
+% the document.
+% \begin{macrocode}
+\def\TD@docswitchlist{}%
+\def\TD@docswitch#1{%
+ \TD@info{Registering macro '#1' for diversion}%
+ \ifx\TD@docswitchlist\@empty%
+ \xdef\TD@docswitchlist{#1}%
+ \else%
+ \xdef\TD@docswitchlist{\TD@docswitchlist,#1}%
+ \fi%
+}%
+\AtBeginDocument{%
+ \TD@info{Diverting registered macros...}%
+ \@for\TD@cmd:=\TD@docswitchlist\do{%
+ \TD@switch{\TD@cmd}%
+ }%
+ \TD@info{Divertions done}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\TD@PackagePreDivert}
+% \begin{macro}{\TD@PackagePostDivert}
+% And then, two macros to insert command just before or after
+% loading a package. The first argument is the name of the package
+% we want to add an hook before or after, and then there is the
+% definition of the hook that will be called. Four parameters (|#1|,
+% \ldots, |#4|) are available (the same as the |@onefilewithoptions|
+% \LaTeX{} macro, ie package name, options, and the two remaining ;-)).
+% \begin{macrocode}
+\def\TD@PackagePreDivert#1{%
+ \expandafter\def\csname TD@PackageStart@#1\endcsname ##1##2##3##4%
+}%
+\def\TD@PackagePostDivert#1{%
+ \expandafter\def\csname TD@PackageEnd@#1\endcsname ##1##2##3##4%
+}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Initialisation}
+% We need to be loaded \emph{before} \string\documentclass
+% \begin{macrocode}
+\ifx\documentclass\@twoclasseserror
+ \PackageError{texdepends}{texdepends needs to be loaded BEFORE
+ \string\documentclass \MessageBreak
+ Use \string\RequirePackage\space instead of \string\usepackage
+ \MessageBreak as the later is not allowed before
+ \string\documentclass}
+\fi
+% \end{macrocode}
+% And we write the first dependency (upon ourself)
+% \begin{macrocode}
+\TD@printPackage{texdepends}
+% \end{macrocode}
+% We write default graphicspath (is this really needed ?)
+% \begin{macrocode}
+\TD@printGraphicspath{{.}}
+% \end{macrocode}
+%
+% \subsubsection{Warning upon missing figures}
+% \begin{macro}{\TD@depends}
+% \begin{macro}{\TD@dependsWarning}
+% \begin{macro}{\TD@missingDepends}
+% If some figures are missing, |\TD@missingDepends| will be called so
+% that a warning will be displayed at the end of the
+% compilation. Figures should be generated before the next run.
+% \begin{macrocode}
+\def\TD@depends{}%
+\def\TD@dependsWarning{%
+ \PackageWarningNoLine{texdepends}{Figure(s) missing. Check
+ dependencies again}%
+}%
+\def\TD@missingDepends{%
+ \global\let\TD@depends\TD@dependsWarning%
+}%
+\AtEndDocument{%
+ \TD@depends%
+}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \subsection{Diversion of \LaTeX{} macros}
+%
+% \subsubsection{Class and package loading}
+% \begin{macro}{\TD@@fileswith@pti@ns}
+% \begin{macro}{\TD@@@fileswith@pti@ns}
+% Diverting |\@fileswith@pti@ns| and |@@fileswith@pti@ns| so that we
+% can track class loading. Package are tracked with an other macro
+% (see just after).
+% \begin{macrocode}
+\def\TD@@fileswith@pti@ns#1[#2]#3[#4]{%
+ \ifx#1\@clsextension
+ \TD@printClass{#3}
+ \fi
+ \TD@orig@@fileswith@pti@ns{#1}[#2]{#3}[#4]%
+}%
+\let\TD@@@fileswith@pti@ns\TD@@fileswith@pti@ns
+\TD@switch{@fileswith@pti@ns}%
+\TD@switch{@@fileswith@pti@ns}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\TD@@onefilewithoptions}
+% By diverting |\@onefilewithoptions|, we can track all loaded
+% packages. We write the dependency, and we look at the loaded package
+% to see if we need some special requirements
+% \begin{macrocode}
+\def\TD@@onefilewithoptions#1[#2][#3]#4{%
+ \TD@printPackage{#1}%
+ \ifthenelse{\equal{#1}{texdepends}}{%
+% \end{macrocode}
+% The |texdepends| package is special : we know it has already been
+% loaded (we are running code in it) but perhaps \LaTeX{} does not
+% know it. So we try to honor the |debug| option.
+% \begin{macrocode}
+ \TD@debug{Package '#1' detected}
+ \@for\TD@package@option:=#2\do{%
+ \ifthenelse{\expandafter\isundefined\csname TD@option@\TD@package@option\endcsname}{
+ \TD@warningLine{Ignoring unknown option '\TD@package@option'}
+ }{
+ \ifthenelse{%
+ \equal{\TD@package@option}{debug}%
+ %\OR\equal{\TD@package@option}{debug}%
+ }{
+ \csname TD@option@\TD@package@option\endcsname%
+ }{
+ \TD@warningLine{Ignoring option '\TD@package@option'
+ \MessageBreak #1 already loaded
+ }
+ }
+ }
+ }
+ }{%
+ \expandafter\let\expandafter\TD@divert
+ \csname TD@PackageStart@#1\endcsname
+ \ifx\TD@divert\relax
+ \TD@debug{No preamble for package #1}
+ \else
+ \TD@info{Preamble for package #1}
+ \TD@divert{#1}{#2}{#3}{#4}%
+ \fi
+ \TD@orig@@onefilewithoptions{#1}[#2][#3]{#4}%
+ \expandafter\let\expandafter\TD@divert
+ \csname TD@PackageEnd@#1\endcsname
+ \ifx\TD@divert\relax
+ \TD@debug{No postamble for package #1}
+ \else
+ \TD@info{Postamble for package #1}
+ \TD@divert{#1}{#2}{#3}{#4}%
+ \fi
+ }%
+}%
+\TD@switch{@onefilewithoptions}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Tracking input files}
+% \begin{macro}{\TD@@iinput}
+% \begin{macro}{\TD@@input@}
+% |\@iinput| and |\@input@| are diverted to track loaded files
+% \begin{macrocode}
+\def\TD@@iinput#1{%
+ \TD@printInput{#1}%
+ \TD@orig@@iinput{#1}}%
+\def\TD@@input@#1{%
+ \IfFileExists{#1}{%
+ \TD@printInput{#1}%
+ }{}%
+ \TD@orig@@input@{#1}}%
+\TD@switch{@iinput}%
+\TD@switch{@input@}%
+\def\TD@verbatiminput#1{%
+ \TD@printInput{#1}%
+ \TD@orig@verbatiminput{#1}}%
+\TD@PackagePostDivert{verbatim}{%
+ \TD@switch{verbatiminput}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Tracking output files}
+% \begin{macro}{\TD@openout}
+% \begin{macro}{\TD@poenout@eq}
+% \begin{macro}{\TD@poenout@noeq}
+% Note: that does not work. Currently, we parse the log file instead
+% of using this. If someone has ideas\ldots
+% \begin{macrocode}
+\let\TD@orig@openout\openout
+\def\TD@openout#1{%
+ \@ifnextchar={\TD@openout@eq#1}{\TD@openout@noeq#1}}
+\def\TD@openout@eq#1=#2.#3{%
+ \TD@printOut{#2.#3}%
+ \TD@orig@openout#1=#2.#3%
+}%
+\def\TD@openout@noeq#1#2.#3{%
+ \TD@printOut{#2.#3}%
+ \TD@orig@openout#1#2.#3%
+}%
+ %\TD@switch{openout}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \subsubsection{Tracking bibliography files}
+% \begin{macrocode}
+\def\TD@bibli@bbl{%
+ \TD@printBblfile{\jobname}%
+ \global\let\TD@bibli@bbl\relax%
+}%
+\def\TD@bibli@files#1{%
+ \TD@bibli@bbl%
+ \@for\TD@bibfile:=#1\do{%
+ \TD@printBibfile{\TD@bibfile}%
+ }%
+}
+\def\TD@bibli@style#1{%
+ \TD@bibli@bbl%
+ %\@for\TD@bibstyle:=#1\do{%
+ % \TD@printBibstyle{\TD@bibstyle}%
+ %}
+ \TD@printBibstyle{#1}%
+}
+\def\TD@bibliography#1{%
+ \TD@bibli@files{#1}%
+ \TD@orig@bibliography{#1}%
+}%
+\def\TD@bibliographystyle#1{%
+ \TD@bibli@style{#1}%
+ \TD@orig@bibliographystyle{#1}%
+}%
+\TD@docswitch{bibliography}%
+\TD@switch{bibliographystyle}%
+% \end{macrocode}
+% \subsubsection{Glossary and index files}
+% \begin{macrocode}
+\def\TD@makeindex{%
+ \TD@printIndex{\jobname}%
+ \TD@printIndexSource{\jobname}{\jobname.idx}%
+ \TD@orig@makeindex%
+}%
+\def\TD@makeglossary{%
+ \TD@printGlossary{\jobname}%
+ \TD@printGlossarySource{\jobname}{\jobname.glo}%
+ \TD@orig@makeglossary%
+}%
+\TD@switch{makeindex}%
+\TD@switch{makeglossary}%
+% \end{macrocode}
+% \subsection{Diversion of package's macros}
+% \subsubsection{Package graphics}
+% \begin{macrocode}
+\def\TD@Gin@getbase#1{%
+ \TD@orig@Gin@getbase{#1}%
+ \ifx\Gin@ext\relax%
+ \else%
+ \TD@printFig{\Gin@base\Gin@ext}%
+ \fi%
+}%
+\def\TD@Ginclude@eps#1{%
+ \IfFileExists{#1}{%
+ \TD@orig@Ginclude@eps{#1}%
+ }{%
+ \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ \TD@missingDepends%
+ \TD@printRequiredFile{#1}%
+ }%
+}%
+\def\TD@Ginclude@pdf#1{%
+ \IfFileExists{#1}{%
+ \TD@orig@Ginclude@pdf{#1}%
+ }{%
+ \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ \TD@missingDepends%
+ \TD@printRequiredFile{#1}%
+ }%
+}%
+\def\TD@graphicspath#1{%
+ \TD@printGraphicspath{#1}%
+ \TD@orig@graphicspath{#1}%
+}%
+\def\TD@Gread@eps#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Gread File '#1' exists}%
+ \TD@orig@Gread@eps{#1}%
+ }{%
+ \PackageWarning{texdepends}{No '#1' file \MessageBreak
+ using 1 for graphic dimensions}%
+ \setbox\@tempboxa\hbox{\relax}%
+ \def\Gin@llx{1}\let\Gin@lly\Gin@llx
+ \Gin@defaultbp\Gin@urx{\wd\@tempboxa}%
+ \Gin@defaultbp\Gin@ury{\ht\@tempboxa}%
+ }%
+}%
+\def\TD@Gread@pdf#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Gread File '#1' exists}%
+ \TD@orig@Gread@pdf{#1}%
+ }{%
+ \PackageWarning{texdepends}{No '#1' file \MessageBreak
+ using 1 for graphic dimensions}%
+ \setbox\@tempboxa\hbox{\relax}%
+ \def\Gin@llx{1}\let\Gin@lly\Gin@llx
+ \Gin@defaultbp\Gin@urx{\wd\@tempboxa}%
+ \Gin@defaultbp\Gin@ury{\ht\@tempboxa}%
+ }%
+}%
+\TD@PackagePostDivert{graphics}{%
+ \TD@switch{graphicspath}%
+ \TD@docswitch{Gin@getbase}%
+ \TD@docswitch{Ginclude@eps}%
+ \TD@docswitch{Ginclude@pdf}%
+ \TD@docswitch{Gread@eps}%
+ \TD@docswitch{Gread@pdf}%
+}%
+% \end{macrocode}
+% \subsubsection{Package figlatex}
+% \begin{macrocode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% We do not want to fail when trying to load a missing subfig.
+% \@Ginclude@rawtex
+\def\TD@FL@includerawtexgraphics[#1]#2{%
+ \IfFileExists{#2}{%
+ \TD@orig@FL@includerawtexgraphics[#1]{#2}%
+ }{%
+ \PackageWarning{texdepends}{Figure '#2' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ \TD@missingDepends%
+ \TD@printRequiredFile{#2}%
+ }%
+}%
+
+\def\TD@Ginclude@rawtex#1{%
+ \IfFileExists{#1}{%
+ \TD@orig@Ginclude@rawtex{#1}%
+ }{%
+ \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ \TD@missingDepends%
+ \TD@printRequiredFile{#1}%
+ }%
+}%
+
+% \@Ginclude@figtex
+\def\TD@Ginclude@figtex#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Ginclude File '#1' exists}%
+ \TD@orig@Ginclude@figtex{#1}%
+ }{%
+ \ifthenelse{\isundefined{\FL@subfig@mainfigname}}{%
+ \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ }{%
+ \PackageWarning{texdepends}{SubFigure '#1' from
+ \FL@subfig@mainfigname needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ }
+ \TD@missingDepends%
+ \TD@printRequiredFile{#1}%
+ }%
+}%
+% \@Ginclude@svgtex
+\def\TD@Ginclude@svgtex#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Ginclude File '#1' exists}%
+ \TD@orig@Ginclude@svgtex{#1}%
+ }{%
+ \ifthenelse{\isundefined{\FL@subfig@mainfigname}}{%
+ \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ }{%
+ \PackageWarning{texdepends}{SubFigure '#1' from
+ \FL@subfig@mainfigname needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ }
+ \TD@missingDepends%
+ \TD@printRequiredFile{#1}%
+ }%
+}%
+
+
+% \@Gread@figtex
+\def\TD@Gread@figtex#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Gread File '#1' exists}%
+ \TD@orig@Gread@figtex{#1}%
+ }{%
+ \PackageWarning{texdepends}{No '#1' file \MessageBreak
+ using 1 for graphic dimensions}%
+ \setbox\@tempboxa\hbox{\relax}%
+ \def\Gin@llx{1}\let\Gin@lly\Gin@llx
+ \Gin@defaultbp\Gin@urx{\wd\@tempboxa}%
+ \Gin@defaultbp\Gin@ury{\ht\@tempboxa}%
+ }%
+}%
+
+% \@Gread@svgtex
+\def\TD@Gread@svgtex#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Gread File '#1' exists}%
+ \TD@orig@Gread@svgtex{#1}%
+ }{%
+ \PackageWarning{texdepends}{No '#1' file \MessageBreak
+ using 1 for graphic dimensions}%
+ \setbox\@tempboxa\hbox{\relax}%
+ \def\Gin@llx{1}\let\Gin@lly\Gin@llx
+ \Gin@defaultbp\Gin@urx{\wd\@tempboxa}%
+ \Gin@defaultbp\Gin@ury{\ht\@tempboxa}%
+ }%
+}%
+% \FL@subfig@check
+\def\TD@FL@subfig@check#1{%
+ \TD@printRequiredFile{#1}%
+ \TD@printSubfig{#1}%
+}%
+%
+\TD@PackagePostDivert{figlatex}{%
+ \TD@docswitch{FL@includerawtexgraphics}%
+ \TD@docswitch{Ginclude@rawtex}%
+ \TD@docswitch{Ginclude@figtex}%
+ \TD@docswitch{Ginclude@svgtex}%
+ \TD@docswitch{Gread@figtex}%
+ \TD@docswitch{Gread@svgtex}%
+ \TD@docswitch{FL@subfig@check}%
+}%
+% \end{macrocode}
+% \subsubsection{Package doc}
+% \begin{macrocode}
+\def\TD@PrintIndex{%
+ \TD@printIndexStyle{\jobname}{gind.ist}
+ \TD@printIndexTarget{\jobname}{\jobname.ind}
+ \TD@orig@PrintIndex%
+}%
+\def\TD@PrintChanges{%
+ \TD@printGlossaryStyle{\jobname}{gglo.ist}
+ \TD@printGlossaryTarget{\jobname}{\jobname.gls}
+ \TD@orig@PrintChanges%
+}%
+\TD@PackagePostDivert{doc}{%
+ \TD@docswitch{PrintIndex}%
+ \TD@docswitch{PrintChanges}%
+}%
+% \end{macrocode}
+% \subsubsection{Package index}
+% \begin{macrocode}
+\def\TD@def@index#1#2#3#4{%
+ \TD@printIndex{#2}%
+ \TD@printIndexSource{#2}{\jobname.#3}%
+ \TD@printIndexTarget{#2}{\jobname.#4}
+ \TD@orig@def@index{#1}{#2}{#3}{#4}%
+}%
+\TD@PackagePostDivert{index}{%
+ \TD@switch{def@index}%
+}%
+% \end{macrocode}
+% \subsubsection{Package makeidx}
+% \begin{macrocode}
+\def\TD@printindex{%
+ \TD@printIndexTarget{\jobname}{\jobname.ind}
+ \TD@orig@printindex%
+}%
+\TD@PackagePostDivert{makeidx}{%
+ \TD@docswitch{printindex}%
+}%
+% \end{macrocode}
+% \subsubsection{Package nomencl}
+% We divert |makeglossary| again after loading this package as its
+% redefines this macro (loosing our divertion). We also setup the
+% glossary style for this package.
+% \begin{macrocode}
+\def\TD@printglossary{%
+ \TD@printGlossaryTarget{\jobname}{\jobname.gls}
+ \TD@orig@printglossary%
+}%
+\TD@PackagePostDivert{nomencl}{%
+ \TD@docswitch{printglossary}%
+ \TD@switch{makeglossary}%
+ \TD@printGlossaryStyle{\jobname}{nomencl.ist}
+}%
+% \end{macrocode}
+% \subsubsection{Package bibtopic}
+% \begin{macrocode}
+% Pour le package bibtopic
+\def\TD@btSect{%
+ \@ifnextchar[{\TD@btSect@opt}{\TD@btSect@noopt}}
+\def\TD@btSect@opt[#1]#2{%
+ \TD@bibli@files{#2}%
+ \TD@bibli@style{#1}%
+ \TD@orig@btSect[#1]{#2}}
+\def\TD@btSect@noopt#1{%
+ \TD@bibli@files{#1}%
+ \TD@orig@btSect{#1}}
+
+\def\TD@@bt@write@auxfile{%
+ \TD@printBblfile{\thebtauxfile}%
+ \TD@orig@@bt@write@auxfile%
+}%
+\TD@PackagePostDivert{bibtopic}{%
+ \global\let\TD@bibli@bbl\relax%
+ \global\let\TD@biblio@rules@package\TD@biblio@rules@package@bibtopic%
+ \TD@switch{@bt@write@auxfile}%
+ \TD@printOut{btbbl.aux}%
+ \TD@printRebuildRule{bibtopic}%
+ \TD@docswitch{btSect}%
+}%
+% \end{macrocode}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/tex/latex/latex-make/figlatex.cfg b/Master/texmf-dist/tex/latex/latex-make/figlatex.cfg
new file mode 100644
index 00000000000..bb139c3581f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/latex-make/figlatex.cfg
@@ -0,0 +1,48 @@
+%%
+%% This is file `figlatex.cfg',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% figlatex.dtx (with options: `config')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from figlatex.cfg.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file figlatex.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%%
+%% File: figlatex.dtx Copyright (C) 2002--2005 V. Danjean, A. Legrand
+%% Vincent.Danjean@ens-lyon.org
+%% Arnaud.Legrand@ens-lyon.org
+%%
+%% This program is free software; you can redistribute it and/or
+%% modify it under the terms of the GNU General Public License
+%% as published by the Free Software Foundation; either version 2
+%% of the License, or (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%%
+ \ProvidesFile{figlatex.cfg}%
+[2011/09/25 v0.1.4 include fig and svg in LaTeX]
+ %\compatibility
+ %\debug
+\endinput
+%%
+%% End of file `figlatex.cfg'.
diff --git a/Master/texmf-dist/tex/latex/latex-make/figlatex.sty b/Master/texmf-dist/tex/latex/latex-make/figlatex.sty
new file mode 100644
index 00000000000..9efc78a077c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/latex-make/figlatex.sty
@@ -0,0 +1,210 @@
+%%
+%% This is file `figlatex.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% figlatex.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from figlatex.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file figlatex.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%%
+%% File: figlatex.dtx Copyright (C) 2002--2005 V. Danjean, A. Legrand
+%% Vincent.Danjean@ens-lyon.org
+%% Arnaud.Legrand@ens-lyon.org
+%%
+%% This program is free software; you can redistribute it and/or
+%% modify it under the terms of the GNU General Public License
+%% as published by the Free Software Foundation; either version 2
+%% of the License, or (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%%
+\NeedsTeXFormat{LaTeX2e}%
+\ProvidesPackage{figlatex}%
+[2011/09/25 v0.1.4 include fig and svg in LaTeX]
+\newif\ifFL@compatibility
+\DeclareOption{compatibility}{%
+ %\PackageWarning{figlatex}{option compatibility}%
+ \global\FL@compatibilitytrue%
+}
+\newif\ifFL@debug
+\DeclareOption{debug}{%
+ \global\FL@debugtrue%
+}
+{
+ \def\compatibility{%
+ \ExecuteOptions{compatibility}%
+ }
+ \def\debug{%
+ \ExecuteOptions{debug}%
+ }
+ \InputIfFileExists{figlatex.cfg}{%
+ \typeout{***************************************^^J%
+ * Local config file figlatex.cfg used *^^J%
+ ***************************************}
+ }{%
+ \typeout{Found no configuration file for figlatex}
+ }
+}
+\ProcessOptions
+\RequirePackage{ifpdf}
+\RequirePackage{graphicx}
+\RequirePackage{color}
+\RequirePackage{epstopdf}
+\def\FL@dmessage#1{%
+ \ifFL@debug%
+ \message{#1}%
+ \fi%
+}
+\def\Ginclude@rawtex#1{%
+ \FL@dmessage{<#1>}%
+ \bgroup%
+ \def\@tempa{!}%
+ \ifx\Gin@scaley\@tempa%
+ \let\Gin@scaley\Gin@scalex%
+ \else%
+ \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi%
+ \fi%
+ \hbox{%
+ \Gscale@box{\Gin@scalex}[\Gin@scaley]{%
+ \def\Gin@scalex{1}%
+ \let\Gin@scaley\Gin@exclamation% needed for pdflatex
+ \FL@dmessage{<loading rawtex #1>}%
+ \input{#1}}}%
+ \egroup}
+\def\Ginclude@figtex#1{%
+ \message{<#1>}%
+ \bgroup%
+ \xdef\FL@filename{#1}%
+ \filename@parse{\FL@filename}%
+ \xdef\FL@filename{\filename@area\filename@base.\FL@figext}%
+ \FL@dmessage{<****loading fig \FL@filename>}%
+ \FL@includerawtexgraphics[]{\FL@filename}%
+ \egroup}
+\newcommand{\Gread@figtex}[1]{%
+ %\typeout{Oh, file exists #1}%
+ \Gread@rawtex{#1}%
+}
+\def\Ginclude@svgtex#1{%
+ \message{<#1>}%
+ \bgroup%
+ \xdef\FL@filename{#1}%
+ \filename@parse{\FL@filename}%
+ \xdef\FL@filename{\filename@area\filename@base.\FL@svgext}%
+ \FL@dmessage{<****loading svg \FL@filename>}%
+ \FL@includerawtexgraphics[]{\FL@filename}%
+ \egroup}
+\newcommand{\Gread@svgtex}[1]{%
+ %\typeout{Oh, file exists #1}%
+ \Gread@rawtex{#1}%
+}
+\ifpdf
+ \def\FL@figext{pdftex_t}%
+ \def\FL@svgext{pdftex_t}%
+ \let\Gread@rawtex\Gread@pdf%
+ \DeclareGraphicsRule{.pdftex}{pdf}{*}{}%
+ \ifFL@compatibility%
+ \PackageWarningNoLine{figlatex}{Compatibility mode enabled
+ for old LaTeX
+ \MessageBreak Using .pdf extension for pdftex files}%
+ \DeclareGraphicsRule{.pdftex_t}{rawtex}{.pdf}{}%
+ \DeclareGraphicsRule{.fig}{figtex}{.pdf}{}%
+ \DeclareGraphicsRule{.svg}{svgtex}{.pdf}{}%
+ \else%
+ \DeclareGraphicsRule{.pdftex_t}{rawtex}{.pdftex}{}%
+ \DeclareGraphicsRule{.fig}{figtex}{.pdftex}{}%
+ \DeclareGraphicsRule{.svg}{svgtex}{.pdftex}{}%
+ \fi%
+\else
+ \def\FL@figext{pstex_t}%
+ \def\FL@svgext{pstex_t}%
+ \let\Gread@rawtex\Gread@eps%
+ \DeclareGraphicsRule{.pstex}{eps}{*}{}%
+ \DeclareGraphicsRule{.pstex_t}{rawtex}{.pstex}{}%
+ \DeclareGraphicsRule{.fig}{figtex}{.pstex}{}%
+ \DeclareGraphicsRule{.svg}{svgtex}{.pstex}{}%
+\fi
+\newcommand{\FL@includerawtexgraphics}[2][]{%
+ \includegraphics[#1]{#2}%
+}
+\def\FL@exclamation{!}%
+\let\FL@subfig@name\FL@exclamation%
+\define@key{Gin}{subfig}{%
+ \def\FL@subfig@name{#1}%
+}
+\def\FL@sepdefault{_}%
+\def\FL@subfig@check#1{%
+}
+\def\FL@Gin@getbase#1{%
+ \ifx\FL@subfig@name\FL@exclamation%
+ \else%
+ \ifthenelse{\equal{#1}{.fig}}{%
+ % If we're including a subfig
+ \IfFileExists{\filename@area\filename@base#1}{%
+ % If the original .fig file exists, just change the name so that
+ % it comprises the full path.
+ \filename@parse{\@filef@und}%
+ % Remove potential trailing spage at the end of the extension
+ \def\filename@ext{fig}%
+ % Check if the subfig file exists
+ \FL@subfig@check{\filename@area\filename@base.subfig}%
+ }{%
+ % Else, write a warning (LaTeX will warn as well but it doesn't
+ % hurt)
+ \PackageWarning{figlatex}{No file
+ '\filename@area\filename@base#1'}%
+ }
+ % Add the subfig suffix to the fig name.
+ \edef\filename@base{\filename@base\FL@sepdefault\FL@subfig@name}%
+ }{%
+ }%
+ \ifthenelse{\equal{#1}{.svg}}{%
+ % If we're including a subfig
+ \IfFileExists{\filename@area\filename@base#1}{%
+ % If the original .svg file exists, just change the name so that
+ % it comprises the full path.
+ \filename@parse{\@filef@und}%
+ % Remove potential trailing spage at the end of the extension
+ \def\filename@ext{svg}%
+ % Check if the subfig file exists
+ \FL@subfig@check{\filename@area\filename@base.subfig}%
+ }{%
+ % Else, write a warning (LaTeX will warn as well but it doesn't
+ % hurt)
+ \PackageWarning{figlatex}{No file
+ '\filename@area\filename@base#1'}%
+ }
+ % Add the subfig suffix to the svg name.
+ \edef\filename@base{\filename@base\FL@sepdefault\FL@subfig@name}%
+ }{%
+ }%
+ \fi%
+ \FL@orig@Gin@getbase{#1}%
+}
+\let\FL@orig@Gin@getbase\Gin@getbase
+\let\Gin@getbase\FL@Gin@getbase
+
+
+\endinput
+%%
+%% End of file `figlatex.sty'.
diff --git a/Master/texmf-dist/tex/latex/latex-make/pdfswitch.sty b/Master/texmf-dist/tex/latex/latex-make/pdfswitch.sty
new file mode 100644
index 00000000000..b103f8d54dd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/latex-make/pdfswitch.sty
@@ -0,0 +1,140 @@
+%%
+%% This is file `pdfswitch.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% pdfswitch.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from pdfswitch.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file pdfswitch.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+\def\fileversion{0.0.2}
+\def\filedate{2003/07/12}
+
+\NeedsTeXFormat{LaTeX2e}
+
+\ProvidesPackage%
+{pdfswitch}%
+[\filedate\space Automatic switch between pdf and ps. v\fileversion]
+
+\RequirePackage{ae,aeguill}
+\RequirePackage{color}
+\RequirePackage{ifthen}
+\RequirePackage{ifpdf}
+
+\newboolean{nocolor@pdfswitch}
+\setboolean{nocolor@pdfswitch}{false}
+\DeclareOption{nocolor}{\setboolean{nocolor@pdfswitch}{true}}
+\newboolean{backref@pdfswitch}
+\setboolean{backref@pdfswitch}{false}
+\DeclareOption{backref}{\setboolean{backref@pdfswitch}{true}}
+\newboolean{pagebackref@pdfswitch}
+\setboolean{pagebackref@pdfswitch}{false}
+\DeclareOption{pagebackref}{\setboolean{pagebackref@pdfswitch}{true}}
+\newboolean{noborder@pdfswitch}
+\setboolean{noborder@pdfswitch}{false}
+\DeclareOption{noborder}{\setboolean{noborder@pdfswitch}{true}}
+\newboolean{plainpages@pdfswitch}
+\setboolean{plainpages@pdfswitch}{false}
+\DeclareOption{plainpages}{\setboolean{plainpages@pdfswitch}{true}}
+
+\ProcessOptions
+
+\definecolor{pdfurlcolor}{rgb}{0,0,0.6}
+\definecolor{pdfcitecolor}{rgb}{0,0.6,0}
+\definecolor{pdflinkcolor}{rgb}{0.6,0,0}
+
+ %%%%%%%%%%%%%%%%%%%%%%%%% graphicx and thumbpdf %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifpdf
+\usepackage[pdftex]{graphicx} %%% graphics for pdfLaTeX
+\DeclareGraphicsExtensions{.pdf} %%% standard extension for included graphics
+\usepackage[pdftex]{thumbpdf} %%% thumbnails for pdflatex
+\else
+\usepackage[dvips]{graphicx} %%% graphics for dvips
+\DeclareGraphicsExtensions{.eps} %%% standard extension for included graphics
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%% Basic options for hyperref %%%%%%%%%%%%%%%%%%%%%%%%%
+\ifpdf
+\edef\keys@pdfswitch{%
+ pdftex, %%% hyper-references for pdflatex
+ bookmarks=true,% %%% generate bookmarks ...
+ bookmarksnumbered=true,% %%% ... with numbers
+ hypertexnames=false,% %%% needed for correct links to figures !!!
+ breaklinks=true% %%% break links if exceeding a single line
+}
+\else
+\edef\keys@pdfswitch{%
+ ps2pdf, %%% hyper-references for ps2pdf
+ bookmarks=true,% %%% generate bookmarks ...
+ bookmarksnumbered=true,% %%% ... with numbers
+ hypertexnames=false,% %%% needed for correct links to figures !!!
+ breaklinks=true,% %%% breaks lines, but links are very small
+ pdfborder={0 0 11.0} %%% border-width of frames will
+ %%% be multiplied with 0.009 by ps2pdf
+}
+\fi
+
+\ifthenelse{\boolean{nocolor@pdfswitch}}{%
+ \edef\keys@pdfswitch{\keys@pdfswitch,colorlinks=false}%
+}{
+ \edef\keys@pdfswitch{\keys@pdfswitch,colorlinks=true,%
+ citecolor=pdfcitecolor,
+ urlcolor=pdfurlcolor,
+ linkcolor=pdflinkcolor,
+ linkbordercolor={1 1 1}}%
+}
+
+\ifthenelse{\boolean{plainpages@pdfswitch}}{%
+}{
+ \edef\keys@pdfswitch{\keys@pdfswitch,plainpages=false}%
+}
+
+\ifthenelse{\boolean{noborder@pdfswitch}}{%
+ \edef\keys@pdfswitch{\keys@pdfswitch,pdfborder={0 0 0}}%
+}{}
+
+\ifthenelse{\boolean{backref@pdfswitch}}{%
+ \edef\keys@pdfswitch{\keys@pdfswitch,backref}%
+}{}
+
+\ifthenelse{\boolean{pagebackref@pdfswitch}}{%
+ \edef\keys@pdfswitch{\keys@pdfswitch,pagebackref}%
+}{}
+
+\usepackage[\keys@pdfswitch]{hyperref}
+
+%%%%%%%%%%%%%%%%%%%%%%%%% HyperSetup %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifpdf
+\AtBeginDocument{
+ \hypersetup{
+ pdfauthor = {\@author},
+ pdftitle = {\@title},
+ pdfsubject = {\@ifundefined{@subject}{}{\@subject}},
+ pdfkeywords = {\@ifundefined{@keywords}{}{\@keywords}}
+ }
+}
+%%% pdfcreator, pdfproducer, and Creation Date are automatically set by pdflatex !!!
+\pdfadjustspacing=1 %%% force LaTeX-like character spacing
+\else
+\AtBeginDocument{
+}
+\fi
+\endinput
+%%
+%% End of file `pdfswitch.sty'.
diff --git a/Master/texmf-dist/tex/latex/latex-make/texdepends.sty b/Master/texmf-dist/tex/latex/latex-make/texdepends.sty
new file mode 100644
index 00000000000..e40de23c813
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/latex-make/texdepends.sty
@@ -0,0 +1,581 @@
+%%
+%% This is file `texdepends.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% texdepends.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from texdepends.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file texdepends.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%%
+%% File: texdepends.dtx Copyright (C) 2004--2011 V. Danjean
+%% Vincent.Danjean@ens-lyon.org
+%% Modified by Matthieu Gallet
+%% Matthieu.Gallet@ens-lyon.org
+%%
+%% This program is free software; you can redistribute it and/or
+%% modify it under the terms of the GNU General Public License
+%% as published by the Free Software Foundation; either version 2
+%% of the License, or (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%%
+\NeedsTeXFormat{LaTeX2e}%
+\ProvidesPackage{texdepends}%
+[2008/01/28\space Automatic depends generation. v1.2.0]
+\RequirePackage{ifthen}
+\newboolean{TD@debug}
+\newcommand{\TD@option@debug}[1][true]{%
+ %\PackageWarningNoLine{texdepends}{Setting debug to #1}
+ \setboolean{TD@debug}{#1}%
+}%
+\def\TD@option@extension[#1]{%
+ %\PackageWarningNoLine{texdepends}{Using extention #1}
+ \def\TD@extention{#1}%
+}%
+\def\TD@option@split#1=#2=#3\relax{%
+ \def\TD@option@name{#1}%
+ \ifx\TD@option@name\@empty\else
+ \expandafter\let\expandafter\TD@option@cmd
+ \csname TD@option@\TD@option@name\endcsname
+ %\PackageWarningNoLine{texdepends}{1: '#1', 2: '#2', 3: '#3'}
+ \ifx\TD@option@cmd\relax
+ \@unknownoptionerror%
+ \else
+ \ifx\@empty#3\@empty
+ \TD@option@cmd\relax%
+ \else
+ \def\TD@option@value{#2}%
+ \TD@option@cmd[\TD@option@value]%
+ \fi
+ \fi
+ \fi
+}%
+\DeclareOption*{%
+ %\PackageWarningNoLine{texdepends}{Option \CurrentOption}%
+ \expandafter\TD@option@split\CurrentOption==\relax%
+}%
+\ProcessOptions
+\ifthenelse{\isundefined{\TD@extention}}{%
+ \PackageWarningNoLine{texdepends}{No extension given: detecting it}%
+ \RequirePackage{ifxetex,ifpdf}%
+ \ifxetex%
+ \PackageWarningNoLine{textdepends}{Detected XeTeX: using .pdf}%
+ \def\TD@extention{.pdf}%
+ \else\ifpdf%
+ \PackageWarningNoLine{texdepends}{Detected PDF mode: using .pdf}%
+ \def\TD@extention{.pdf}%
+ \else%
+ \PackageWarningNoLine{texdepends}{Detected DVI mode. Using .dvi}%
+ \def\TD@extention{.dvi}%
+ \fi\fi%
+}{}%
+\newcommand{\TD@warning}[1]{%
+ \PackageWarningNoLine{texdepends}{#1}%
+}%
+\newcommand{\TD@warningLine}[1]{%
+ \PackageWarning{texdepends}{#1}%
+}%
+\newcommand{\TD@info}[1]{%
+ \ifthenelse{\boolean{TD@debug}}{%
+ \PackageWarningNoLine{texdepends}{#1}%
+ }{%
+ \PackageInfo{texdepends}{#1}%
+ }%
+}%
+\newcommand{\TD@debug}[1]{%
+ \ifthenelse{\boolean{TD@debug}}{%
+ \PackageWarningNoLine{texdepends}{#1}%
+ }{%
+ }%
+}%
+\newwrite\TD@write
+\TD@info{Writing info in '\jobname\TD@extention.mk'}
+\immediate\openout\TD@write\jobname\TD@extention.mk%
+\def\TD@print#1{%
+ \immediate\write\TD@write{#1}%
+}%
+\def\TD@printClass#1{%
+ \TD@print{TD_\jobname\TD@extention _INPUTS\space += #1.cls}%
+}%
+\def\TD@printPackage#1{%
+ \TD@print{TD_\jobname\TD@extention _INPUTS\space += #1.sty}%
+}%
+\def\TD@printInput#1{%
+ \TD@print{TD_\jobname\TD@extention _INPUTS\space += #1}%
+}%
+\def\TD@printFig#1{%
+ \TD@print{TD_\jobname\TD@extention _FIGURES\space += #1}%
+}%
+\def\TD@printSubfig#1{%
+ \TD@print{TD_\jobname\TD@extention _SUBFIGS\space += #1}%
+}%
+\def\TD@printRequiredFile#1{%
+ \TD@print{TD_\jobname\TD@extention _REQUIRED\space += #1}%
+}%
+\let\RequireFile\TD@printRequiredFile
+\def\TD@printOut#1{%
+ \TD@print{TD_\jobname\TD@extention _OUTPUTS\space += #1}%
+}%
+\def\TD@printGraphicspath#1{%
+ \TD@print{TD_\jobname\TD@extention _GRAPHICSPATH\space := #1}%
+}%
+\def\TD@printBibfile#1{%
+ \TD@print{TD_\jobname\TD@extention _BIBFILES\space += #1.bib}%
+}%
+\def\TD@printBibstyle#1{%
+ \TD@print{TD_\jobname\TD@extention _BIBSTYLES\space += #1.bst}%
+}%
+\def\TD@printBblfile#1{%
+ \TD@print{TD_\jobname\TD@extention _BBLFILES\space += #1.bbl}%
+}%
+\def\TD@printRebuildRule#1{%
+ \TD@print{TD_\jobname\TD@extention _REBUILD_RULES\space += #1}%
+}%
+\def\TD@printIndex#1{%
+ \TD@print{TD_\jobname\TD@extention _INDEXES\space += INDEX}%
+ \TD@print{TD_\jobname\TD@extention _INDEXES_INDEX\space += #1}%
+}%
+\def\TD@printIndexSource#1#2{%
+ \TD@print{TD_\jobname\TD@extention _INDEX_#1_SRC\space = #2}%
+}%
+\def\TD@printIndexTarget#1#2{%
+ \TD@print{TD_\jobname\TD@extention _INDEX_#1_TARGET\space = #2}%
+}%
+\def\TD@printIndexStyle#1#2{%
+ \TD@print{TD_\jobname\TD@extention _INDEX_#1_STYLE\space = #2}%
+}%
+\def\TD@printGlossary#1{%
+ \TD@print{TD_\jobname\TD@extention _INDEXES += GLOSS}%
+ \TD@print{TD_\jobname\TD@extention _INDEXES_GLOSS\space += #1}%
+}%
+\def\TD@printGlossarySource#1#2{%
+ \TD@print{TD_\jobname\TD@extention _GLOSS_#1_SRC\space = #2}%
+}%
+\def\TD@printGlossaryTarget#1#2{%
+ \TD@print{TD_\jobname\TD@extention _GLOSS_#1_TARGET\space = #2}%
+}%
+\def\TD@printGlossaryStyle#1#2{%
+ \TD@print{TD_\jobname\TD@extention _GLOSS_#1_STYLE\space = #2}%
+}%
+\def\TD@switch#1{%
+ \expandafter\let\expandafter\TD@local@old\csname#1\endcsname%
+ \expandafter\let\expandafter\TD@local@new\csname TD@#1\endcsname%
+ \ifx\TD@local@old\TD@local@new
+ \PackageWarning{texdepends}{#1 already redefined. Skipping it.}%
+ \else
+ \ifx\TD@local@old\relax
+ \TD@warning{Diverting empty macro '#1' \MessageBreak%
+ Probably a bug in texdepends.sty}%
+ \else
+ \TD@info{Diverting macro '#1'}%
+ \fi
+ \expandafter\let\csname TD@orig@#1\endcsname\TD@local@old%
+ \expandafter\let\csname#1\endcsname\TD@local@new%
+ \fi
+}%
+\def\TD@docswitchlist{}%
+\def\TD@docswitch#1{%
+ \TD@info{Registering macro '#1' for diversion}%
+ \ifx\TD@docswitchlist\@empty%
+ \xdef\TD@docswitchlist{#1}%
+ \else%
+ \xdef\TD@docswitchlist{\TD@docswitchlist,#1}%
+ \fi%
+}%
+\AtBeginDocument{%
+ \TD@info{Diverting registered macros...}%
+ \@for\TD@cmd:=\TD@docswitchlist\do{%
+ \TD@switch{\TD@cmd}%
+ }%
+ \TD@info{Divertions done}%
+}%
+\def\TD@PackagePreDivert#1{%
+ \expandafter\def\csname TD@PackageStart@#1\endcsname ##1##2##3##4%
+}%
+\def\TD@PackagePostDivert#1{%
+ \expandafter\def\csname TD@PackageEnd@#1\endcsname ##1##2##3##4%
+}%
+\ifx\documentclass\@twoclasseserror
+ \PackageError{texdepends}{texdepends needs to be loaded BEFORE
+ \string\documentclass \MessageBreak
+ Use \string\RequirePackage\space instead of \string\usepackage
+ \MessageBreak as the later is not allowed before
+ \string\documentclass}
+\fi
+\TD@printPackage{texdepends}
+\TD@printGraphicspath{{.}}
+\def\TD@depends{}%
+\def\TD@dependsWarning{%
+ \PackageWarningNoLine{texdepends}{Figure(s) missing. Check
+ dependencies again}%
+}%
+\def\TD@missingDepends{%
+ \global\let\TD@depends\TD@dependsWarning%
+}%
+\AtEndDocument{%
+ \TD@depends%
+}%
+\def\TD@@fileswith@pti@ns#1[#2]#3[#4]{%
+ \ifx#1\@clsextension
+ \TD@printClass{#3}
+ \fi
+ \TD@orig@@fileswith@pti@ns{#1}[#2]{#3}[#4]%
+}%
+\let\TD@@@fileswith@pti@ns\TD@@fileswith@pti@ns
+\TD@switch{@fileswith@pti@ns}%
+\TD@switch{@@fileswith@pti@ns}%
+\def\TD@@onefilewithoptions#1[#2][#3]#4{%
+ \TD@printPackage{#1}%
+ \ifthenelse{\equal{#1}{texdepends}}{%
+ \TD@debug{Package '#1' detected}
+ \@for\TD@package@option:=#2\do{%
+ \ifthenelse{\expandafter\isundefined\csname TD@option@\TD@package@option\endcsname}{
+ \TD@warningLine{Ignoring unknown option '\TD@package@option'}
+ }{
+ \ifthenelse{%
+ \equal{\TD@package@option}{debug}%
+ %\OR\equal{\TD@package@option}{debug}%
+ }{
+ \csname TD@option@\TD@package@option\endcsname%
+ }{
+ \TD@warningLine{Ignoring option '\TD@package@option'
+ \MessageBreak #1 already loaded
+ }
+ }
+ }
+ }
+ }{%
+ \expandafter\let\expandafter\TD@divert
+ \csname TD@PackageStart@#1\endcsname
+ \ifx\TD@divert\relax
+ \TD@debug{No preamble for package #1}
+ \else
+ \TD@info{Preamble for package #1}
+ \TD@divert{#1}{#2}{#3}{#4}%
+ \fi
+ \TD@orig@@onefilewithoptions{#1}[#2][#3]{#4}%
+ \expandafter\let\expandafter\TD@divert
+ \csname TD@PackageEnd@#1\endcsname
+ \ifx\TD@divert\relax
+ \TD@debug{No postamble for package #1}
+ \else
+ \TD@info{Postamble for package #1}
+ \TD@divert{#1}{#2}{#3}{#4}%
+ \fi
+ }%
+}%
+\TD@switch{@onefilewithoptions}%
+\def\TD@@iinput#1{%
+ \TD@printInput{#1}%
+ \TD@orig@@iinput{#1}}%
+\def\TD@@input@#1{%
+ \IfFileExists{#1}{%
+ \TD@printInput{#1}%
+ }{}%
+ \TD@orig@@input@{#1}}%
+\TD@switch{@iinput}%
+\TD@switch{@input@}%
+\def\TD@verbatiminput#1{%
+ \TD@printInput{#1}%
+ \TD@orig@verbatiminput{#1}}%
+\TD@PackagePostDivert{verbatim}{%
+ \TD@switch{verbatiminput}}%
+\let\TD@orig@openout\openout
+\def\TD@openout#1{%
+ \@ifnextchar={\TD@openout@eq#1}{\TD@openout@noeq#1}}
+\def\TD@openout@eq#1=#2.#3{%
+ \TD@printOut{#2.#3}%
+ \TD@orig@openout#1=#2.#3%
+}%
+\def\TD@openout@noeq#1#2.#3{%
+ \TD@printOut{#2.#3}%
+ \TD@orig@openout#1#2.#3%
+}%
+ %\TD@switch{openout}
+\def\TD@bibli@bbl{%
+ \TD@printBblfile{\jobname}%
+ \global\let\TD@bibli@bbl\relax%
+}%
+\def\TD@bibli@files#1{%
+ \TD@bibli@bbl%
+ \@for\TD@bibfile:=#1\do{%
+ \TD@printBibfile{\TD@bibfile}%
+ }%
+}
+\def\TD@bibli@style#1{%
+ \TD@bibli@bbl%
+ %\@for\TD@bibstyle:=#1\do{%
+ % \TD@printBibstyle{\TD@bibstyle}%
+ %}
+ \TD@printBibstyle{#1}%
+}
+\def\TD@bibliography#1{%
+ \TD@bibli@files{#1}%
+ \TD@orig@bibliography{#1}%
+}%
+\def\TD@bibliographystyle#1{%
+ \TD@bibli@style{#1}%
+ \TD@orig@bibliographystyle{#1}%
+}%
+\TD@docswitch{bibliography}%
+\TD@switch{bibliographystyle}%
+\def\TD@makeindex{%
+ \TD@printIndex{\jobname}%
+ \TD@printIndexSource{\jobname}{\jobname.idx}%
+ \TD@orig@makeindex%
+}%
+\def\TD@makeglossary{%
+ \TD@printGlossary{\jobname}%
+ \TD@printGlossarySource{\jobname}{\jobname.glo}%
+ \TD@orig@makeglossary%
+}%
+\TD@switch{makeindex}%
+\TD@switch{makeglossary}%
+\def\TD@Gin@getbase#1{%
+ \TD@orig@Gin@getbase{#1}%
+ \ifx\Gin@ext\relax%
+ \else%
+ \TD@printFig{\Gin@base\Gin@ext}%
+ \fi%
+}%
+\def\TD@Ginclude@eps#1{%
+ \IfFileExists{#1}{%
+ \TD@orig@Ginclude@eps{#1}%
+ }{%
+ \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ \TD@missingDepends%
+ \TD@printRequiredFile{#1}%
+ }%
+}%
+\def\TD@Ginclude@pdf#1{%
+ \IfFileExists{#1}{%
+ \TD@orig@Ginclude@pdf{#1}%
+ }{%
+ \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ \TD@missingDepends%
+ \TD@printRequiredFile{#1}%
+ }%
+}%
+\def\TD@graphicspath#1{%
+ \TD@printGraphicspath{#1}%
+ \TD@orig@graphicspath{#1}%
+}%
+\def\TD@Gread@eps#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Gread File '#1' exists}%
+ \TD@orig@Gread@eps{#1}%
+ }{%
+ \PackageWarning{texdepends}{No '#1' file \MessageBreak
+ using 1 for graphic dimensions}%
+ \setbox\@tempboxa\hbox{\relax}%
+ \def\Gin@llx{1}\let\Gin@lly\Gin@llx
+ \Gin@defaultbp\Gin@urx{\wd\@tempboxa}%
+ \Gin@defaultbp\Gin@ury{\ht\@tempboxa}%
+ }%
+}%
+\def\TD@Gread@pdf#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Gread File '#1' exists}%
+ \TD@orig@Gread@pdf{#1}%
+ }{%
+ \PackageWarning{texdepends}{No '#1' file \MessageBreak
+ using 1 for graphic dimensions}%
+ \setbox\@tempboxa\hbox{\relax}%
+ \def\Gin@llx{1}\let\Gin@lly\Gin@llx
+ \Gin@defaultbp\Gin@urx{\wd\@tempboxa}%
+ \Gin@defaultbp\Gin@ury{\ht\@tempboxa}%
+ }%
+}%
+\TD@PackagePostDivert{graphics}{%
+ \TD@switch{graphicspath}%
+ \TD@docswitch{Gin@getbase}%
+ \TD@docswitch{Ginclude@eps}%
+ \TD@docswitch{Ginclude@pdf}%
+ \TD@docswitch{Gread@eps}%
+ \TD@docswitch{Gread@pdf}%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\TD@FL@includerawtexgraphics[#1]#2{%
+ \IfFileExists{#2}{%
+ \TD@orig@FL@includerawtexgraphics[#1]{#2}%
+ }{%
+ \PackageWarning{texdepends}{Figure '#2' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ \TD@missingDepends%
+ \TD@printRequiredFile{#2}%
+ }%
+}%
+
+\def\TD@Ginclude@rawtex#1{%
+ \IfFileExists{#1}{%
+ \TD@orig@Ginclude@rawtex{#1}%
+ }{%
+ \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ \TD@missingDepends%
+ \TD@printRequiredFile{#1}%
+ }%
+}%
+
+\def\TD@Ginclude@figtex#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Ginclude File '#1' exists}%
+ \TD@orig@Ginclude@figtex{#1}%
+ }{%
+ \ifthenelse{\isundefined{\FL@subfig@mainfigname}}{%
+ \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ }{%
+ \PackageWarning{texdepends}{SubFigure '#1' from
+ \FL@subfig@mainfigname needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ }
+ \TD@missingDepends%
+ \TD@printRequiredFile{#1}%
+ }%
+}%
+\def\TD@Ginclude@svgtex#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Ginclude File '#1' exists}%
+ \TD@orig@Ginclude@svgtex{#1}%
+ }{%
+ \ifthenelse{\isundefined{\FL@subfig@mainfigname}}{%
+ \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ }{%
+ \PackageWarning{texdepends}{SubFigure '#1' from
+ \FL@subfig@mainfigname needed\MessageBreak
+ Skipping it this time (the last one however)\MessageBreak}%
+ }
+ \TD@missingDepends%
+ \TD@printRequiredFile{#1}%
+ }%
+}%
+
+\def\TD@Gread@figtex#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Gread File '#1' exists}%
+ \TD@orig@Gread@figtex{#1}%
+ }{%
+ \PackageWarning{texdepends}{No '#1' file \MessageBreak
+ using 1 for graphic dimensions}%
+ \setbox\@tempboxa\hbox{\relax}%
+ \def\Gin@llx{1}\let\Gin@lly\Gin@llx
+ \Gin@defaultbp\Gin@urx{\wd\@tempboxa}%
+ \Gin@defaultbp\Gin@ury{\ht\@tempboxa}%
+ }%
+}%
+
+\def\TD@Gread@svgtex#1{%
+ \IfFileExists{#1}{%
+ %\PackageWarning{texdepends}{Gread File '#1' exists}%
+ \TD@orig@Gread@svgtex{#1}%
+ }{%
+ \PackageWarning{texdepends}{No '#1' file \MessageBreak
+ using 1 for graphic dimensions}%
+ \setbox\@tempboxa\hbox{\relax}%
+ \def\Gin@llx{1}\let\Gin@lly\Gin@llx
+ \Gin@defaultbp\Gin@urx{\wd\@tempboxa}%
+ \Gin@defaultbp\Gin@ury{\ht\@tempboxa}%
+ }%
+}%
+\def\TD@FL@subfig@check#1{%
+ \TD@printRequiredFile{#1}%
+ \TD@printSubfig{#1}%
+}%
+\TD@PackagePostDivert{figlatex}{%
+ \TD@docswitch{FL@includerawtexgraphics}%
+ \TD@docswitch{Ginclude@rawtex}%
+ \TD@docswitch{Ginclude@figtex}%
+ \TD@docswitch{Ginclude@svgtex}%
+ \TD@docswitch{Gread@figtex}%
+ \TD@docswitch{Gread@svgtex}%
+ \TD@docswitch{FL@subfig@check}%
+}%
+\def\TD@PrintIndex{%
+ \TD@printIndexStyle{\jobname}{gind.ist}
+ \TD@printIndexTarget{\jobname}{\jobname.ind}
+ \TD@orig@PrintIndex%
+}%
+\def\TD@PrintChanges{%
+ \TD@printGlossaryStyle{\jobname}{gglo.ist}
+ \TD@printGlossaryTarget{\jobname}{\jobname.gls}
+ \TD@orig@PrintChanges%
+}%
+\TD@PackagePostDivert{doc}{%
+ \TD@docswitch{PrintIndex}%
+ \TD@docswitch{PrintChanges}%
+}%
+\def\TD@def@index#1#2#3#4{%
+ \TD@printIndex{#2}%
+ \TD@printIndexSource{#2}{\jobname.#3}%
+ \TD@printIndexTarget{#2}{\jobname.#4}
+ \TD@orig@def@index{#1}{#2}{#3}{#4}%
+}%
+\TD@PackagePostDivert{index}{%
+ \TD@switch{def@index}%
+}%
+\def\TD@printindex{%
+ \TD@printIndexTarget{\jobname}{\jobname.ind}
+ \TD@orig@printindex%
+}%
+\TD@PackagePostDivert{makeidx}{%
+ \TD@docswitch{printindex}%
+}%
+\def\TD@printglossary{%
+ \TD@printGlossaryTarget{\jobname}{\jobname.gls}
+ \TD@orig@printglossary%
+}%
+\TD@PackagePostDivert{nomencl}{%
+ \TD@docswitch{printglossary}%
+ \TD@switch{makeglossary}%
+ \TD@printGlossaryStyle{\jobname}{nomencl.ist}
+}%
+\def\TD@btSect{%
+ \@ifnextchar[{\TD@btSect@opt}{\TD@btSect@noopt}}
+\def\TD@btSect@opt[#1]#2{%
+ \TD@bibli@files{#2}%
+ \TD@bibli@style{#1}%
+ \TD@orig@btSect[#1]{#2}}
+\def\TD@btSect@noopt#1{%
+ \TD@bibli@files{#1}%
+ \TD@orig@btSect{#1}}
+
+\def\TD@@bt@write@auxfile{%
+ \TD@printBblfile{\thebtauxfile}%
+ \TD@orig@@bt@write@auxfile%
+}%
+\TD@PackagePostDivert{bibtopic}{%
+ \global\let\TD@bibli@bbl\relax%
+ \global\let\TD@biblio@rules@package\TD@biblio@rules@package@bibtopic%
+ \TD@switch{@bt@write@auxfile}%
+ \TD@printOut{btbbl.aux}%
+ \TD@printRebuildRule{bibtopic}%
+ \TD@docswitch{btSect}%
+}%
+\endinput
+%%
+%% End of file `texdepends.sty'.
diff --git a/Master/texmf-dist/tex/latex/latex-make/texgraphicx.sty b/Master/texmf-dist/tex/latex/latex-make/texgraphicx.sty
new file mode 100644
index 00000000000..911070e7cdd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/latex-make/texgraphicx.sty
@@ -0,0 +1,52 @@
+%%
+%% This is file `texgraphicx.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% figlatex.dtx (with options: `compat')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from texgraphicx.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file figlatex.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%%
+%% File: figlatex.dtx Copyright (C) 2002--2005 V. Danjean, A. Legrand
+%% Vincent.Danjean@ens-lyon.org
+%% Arnaud.Legrand@ens-lyon.org
+%%
+%% This program is free software; you can redistribute it and/or
+%% modify it under the terms of the GNU General Public License
+%% as published by the Free Software Foundation; either version 2
+%% of the License, or (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%%
+ \ProvidesPackage{texgraphicx}%
+[2011/09/25 v0.1.4 include fig and svg in LaTeX]
+\PackageWarning{texgraphicx}{'texgraphicx' is now
+ deprecated\MessageBreak%
+ Please, consider switching to 'figlatex'
+ package\MessageBreak}
+\RequirePackage{figlatex}
+\ProcessOptions
+\endinput
+%%
+%% End of file `texgraphicx.sty'.
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 8c74eec66c5..17a086ef4a7 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -276,7 +276,7 @@ my @TLP_working = qw(
labbook labelcas labels labyrinth lambda-lists langcode
lapdf lastpackage lastpage
latex latex-bib-ex latex-brochure latex-course latex-doc-ptr latex-fonts
- latex-git-log latex-graphics-companion latex-notes-zh-cn
+ latex-git-log latex-graphics-companion latex-make latex-notes-zh-cn
latex-referenz latex-tabellen
latex-tds latex-veryshortguide latex-web-companion
latex2e-help-texinfo latex2e-help-texinfo-spanish latex2man
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index f81c6b6875d..d83ea60647b 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -549,7 +549,6 @@ chomp ($Build = `cd $Master/../Build/source && pwd`);
'latex_maker', "die 'skipping, ruby'",
'latex-fonts', "&MAKEflatten",
'latex-help-texinfo', "die 'skipping, use latex2e-help-texinfo'",
- 'latex-make', "die 'skipping, subprograms seem problematic'",
'latex-pro-pragmatiky', "die 'skipping, no source'",
'latex-sciences-humaines', "die 'skipping, no source'",
'latex-tipps-und-tricks', "die 'skipping, noinfo license'",
@@ -2483,6 +2482,7 @@ $standardxmt='\.xmt';
# scripts to install under texmf*/.../scripts, but not bindir.
%specialscripts_nobin = (
'epspdf' => '(epspdf(|\.help|boot|tk)|\.rb|makegray\.pro)$',
+ 'latex-make' => '\.py$',
'latexindent' => 'Settings\.yaml$',
'lilyglyphs' => 'lilyglyphs_common.py',
'lua-alt-getopt' => '\.lua$',
diff --git a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
index ce44e352ccd..100b12414f8 100644
--- a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
@@ -54,6 +54,7 @@ depend hvfloat
depend knitting
depend knittingpattern
depend lapdf
+depend latex-make
depend lpic
depend makeshape
depend mathspic
diff --git a/Master/tlpkg/tlpsrc/latex-make.tlpsrc b/Master/tlpkg/tlpsrc/latex-make.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/latex-make.tlpsrc