diff --git a/source/README b/source/README index 81e38d387ae4a49e491df77cde8051427b3d10cb..dc12619a81117aadb2e95f706e6fce79a570d883 100644 --- a/source/README +++ b/source/README @@ -1,4 +1,4 @@ -$Id: README 43261 2017-02-17 22:37:44Z karl $ +$Id: README 44143 2017-05-01 21:58:19Z karl $ Public domain. Originally written 2005 by Karl Berry. For a high-level overview of building TeX Live, see @@ -26,20 +26,18 @@ that document). Build information for some of the platforms. -i386-linux: gcc 4.9.2, Linux 2.6.18-* (CentOS 5.10, tug.org:~karl/bin/mybuild) - Except for dvisvgm, where we must use the system compiler (gcc 4.1.2, - Red Hat 4.1.2-54) or libgs.so crashes trying to use gcc 4.8.2's - libstdc++. On the other hand, the system compiler has an optimization - bug that causes lcdf-typetools's tfm.test to fail, so it can't be used - for everything. Sigh. - -x86_64-linux: Debian 5.0 (Lenny), Feb 2009. +x86_64-linux: Debian 6.0 (Squeeze), Feb 2009. amd64-netbsd: gcc version 4.5.3 (NetBSD nb2 20110806) NetBSD/amd64 6.1.3 TL_MAKE=gmake LDFLAGS='-L/usr/X11R7/lib -Wl,-rpath,/usr/X11R7/lib' ./Build +i386-freebsd, amd64-freebsd: + --disable-dvisvgm; upmendex for i386 built with -DU_IS_BIG_ENDIAN=0. + +i386-linux: Debian 7. + i386-openbsd, amd64-openbsd: e.g., see CONFIGURE_ARGS in the Makefile in http://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/print/texlive/base/ @@ -56,5 +54,18 @@ powerpc-linux (Debian Squeeze): sparc-solaris: Solaris 10, gcc. See doc/README.solaris. -universal-darwin, x86_64-darwin: a menagerie of versions. +x86_64-darwin: See Master/source/mactexdoc.tar.xz. + +x86_64-darwinlegacy, i386-darwin, powerpc-darwin: + https://github.com/TeXLive-M/texlive-buildbot + http://build.contextgarden.net/waterfall?tag=c/texlive + (These links have info on all platforms built by Mojca.) + + 32-bit binaries built on 10.6/x86_64 with backward compatibility to 10.5. + ppc binaries only work on <= 10.5, so 10.5/ppc will be the only OS for them. + i386 binaries only work on <= 10.6. While they theoretically work + "everywhere", they would only be used on 10.5 and 10.6/i386. + x86_64 binaries only work on >= 10.6 (and should work on any >= 10.6 machine) + but will only be used for < 10.10 since x86_64-darwin covers newer. + PPC binaries made with gcc-4.2 and Intel binaries with clang-3.7. diff --git a/source/README.0overview b/source/README.0overview index efdd1e87a12964b0429b6c4be12cc353deb2ae32..5065317b63701788b4f4307fde5985d0086c67f8 100644 --- a/source/README.0overview +++ b/source/README.0overview @@ -33,8 +33,8 @@ list of all 'configure' options. program and library module (or package) specifies its own requirements and properties, such as required libraries, whether an installed (system) version of a library can be used, 'configure' options to be -seen at the top-level, and more. An explicit list of all available -modules is kept in only one, central, place ('m4/kpse-pkgs.m4'). +seen at the top level, and more. An explicit list of all available +modules is kept in only one central place, namely 'm4/kpse-pkgs.m4'. A second, related goal is to configure and build each library before configuring any other (program or library) module which uses that @@ -46,7 +46,7 @@ version of that library. independently. The corresponding modules use (most of) the distributed source tree and document any modifications of that source. - All this is for the sake of simplifying both upgrading of modules -maintained independently and integrating new modules into the TL build -system. (Not to say that either task is trivial.) + All this is for the sake of simplifying both upgrading of modules and +integrating new modules into the TL build system. (Not to say that +either task is trivial.) diff --git a/source/README.1prerequisites b/source/README.1prerequisites index 80f0186cde61e4a29cb0c22d3d7db6a47be1f761..6d7ea74d589d40429dcf55bc7794e56e2797f196 100644 --- a/source/README.1prerequisites +++ b/source/README.1prerequisites @@ -10,13 +10,17 @@ the TL source tree, requires only C and C++ compilers and GNU 'make'. (If 'make' from your 'PATH' is not GNU make, you can set 'MAKE' in the environment to whatever is necessary.) - Indeed, GNU 'make' is required only because of some third-party -libraries, notably FreeType; all the TL-maintained directories (and + GNU 'make' is required only because of some third-party libraries, +notably FreeType; all the TL-maintained directories (and Automake/Autoconf output in general) should work with any reasonable 'make'. However, a few programs in the tree have additional requirements: +'dvisvgm' + requires a C++11 compiler, such as gcc 4.8.1 (or later) or clang + 3.3 (or later). + 'web2c' requires 'perl' for some tests run by 'make check'. diff --git a/source/README.2building b/source/README.2building index 0e256d93a655bd6b71751d656d9ae23dab9fdb86..12ddd9a93913c545d69629f9a9201ead4a592af7 100644 --- a/source/README.2building +++ b/source/README.2building @@ -47,7 +47,7 @@ done unless some source files have been modified. If configuring or building a module fails, you should first find and fix the problem, then perhaps remove the subdirectory for that module from -the build tree, and finally rerun the top-level 'make' (or 'Build' with +the build tree, and finally rerun the top level 'make' (or 'Build' with '--no-clean' as its first argument). 4.3 Build in parallel @@ -65,7 +65,7 @@ gained by using a configure cache file, i.e., with the option '-C' 4.4 Build distribution ====================== -Running 'make dist' at the top-level creates a tarball +Running 'make dist' at the top level creates a tarball 'tex-live-YYYY-MM-DD.tar.xz' from the TL source tree. Running 'make distcheck' also verifies that this tarball suffices to build and install all of TL. @@ -128,28 +128,24 @@ debugging purposes. things are working. There are many 'configure' options you can tweak as desired; check the output from 'configure --help'. - Finally, the above retrieves the entire TL source tree (some 300mb). -It is natural to ask if this is really necessary. Strictly speaking, -the answer is no, but it is vastly more convenient to do so. If you cut -down the source tree, you must also give additional 'configure' flags to -individually disable using system versions of libraries, or the -intricacies of the dependencies (such as 'teckit' requiring 'zlib') will -have undesired side effects. For an example, see the 'build-pdftex.sh' -script in the 'pdftex' development sources (<http://pdftex.org>), which -are indeed a cut-down TL source tree. - - Caveat 1: even with '--disable-all-pkgs', dependencies will be -checked. For instance, if a non-MacOSX system does not have -'fontconfig', XeTeX cannot be built (*note Prerequisites::) and -'configure' will terminate. To proceed without such dependencies, -specify '--enable-missing' also. (Arguably this should happen -automatically.) - - Caveat 2: unless 'CC' and 'CXX' and 'OBJCXX' are explicitly -specified, each package will configure its own compiler(s). In -practice, this results in a conflict in only one instance: the ICU -('libs/icu') library will prefer 'clang' and 'clang++' over all others -if they are installed, whereas everything else prefers 'gcc' and 'g++'. -Usually the results will be interoperable, but it can cause extra -confusion and problems when debugging a program that uses ICU. + Finally, the above retrieves the entire TL source tree (several +hundred megabytes). It is natural to ask if this is really necessary. +Strictly speaking, the answer is no, but it is vastly more convenient to +do so. If you cut down the source tree, you must also give additional +'configure' flags to individually disable using system versions of +libraries, or the intricacies of the dependencies (such as 'teckit' +requiring 'zlib') will have undesired side effects. For an example, see +the 'build-pdftex.sh' script in the 'pdftex' development source +(<http://pdftex.org>), which is indeed a cut-down TL source tree. + + Even with '--disable-all-pkgs', dependencies will be checked. For +instance, if a non-MacOSX system does not have 'fontconfig', XeTeX +cannot be built (*note Prerequisites::) and 'configure' will terminate. +To proceed without such dependencies, specify '--enable-missing' also. +(Arguably this should happen automatically.) + + By default, the 'gcc' compilers will be used if present; otherwise, +individual packages may use something different. You can explicitly +specify the compilers to be used with the environment variables 'CC', +'CXX', and 'OBJCXX'. diff --git a/source/README.4layout b/source/README.4layout index d2585430bbc2b5ccc36440954e725470ca348bde..aa691532f51725ae28c7c89a876b5a27392577a9 100644 --- a/source/README.4layout +++ b/source/README.4layout @@ -32,7 +32,7 @@ many extra hassles, so don't do that, tempting as it may be. bison (GNU Bison) 3.0.4 flex 2.6.0 ltmain.sh (GNU libtool) 2.4.6 - m4 (GNU M4) 1.4.17 + m4 (GNU M4) 1.4.18 makeinfo (GNU texinfo) 6.1 These versions should be used to update the generated files (e.g., @@ -63,11 +63,11 @@ the main source directories are 'texk/' (TeX-specific programs and libraries), 'utils/' (additional programs), and 'libs/' (generic libraries). - The top-level directories 'am/' and 'm4/' contain 'Makefile.am' -fragments and Autoconf macros, respectively, used in many places. -Specifically, the file 'm4/kpse-pkgs.m4' contains lists of all program -and library modules; missing modules are silently ignored. (This helps -in creating cut-down source trees.) + In addition, the top-level directories 'am/' and 'm4/' contain +'Makefile.am' fragments and Autoconf macros, respectively, used in many +places. Specifically, the file 'm4/kpse-pkgs.m4' contains lists of all +program and library modules; missing modules are silently ignored. +(This helps in creating cut-down source trees.) Each module contributes fragments (in separate files) defining its capabilities and requirements to the 'configure.ac' scripts at the @@ -80,17 +80,23 @@ configured for the benefit of 'make' targets such as 'dist' or 'distcheck'. The top-level 'build-aux/' directory contains the common files -'compile', 'config.guess', 'config.sub', 'depcomp', etc. for most -packages, pulled from the GNU Gnulib sources +'compile', 'config.guess', 'config.sub', 'depcomp', etc. used by most +packages. These are from the GNU Gnulib sources (<http://www.gnu.org/software/gnulib>), which in turn synchronizes with the appropriate ultimate upstream repository. There are, however, independent copies in, e.g., 'libs/freetype2/freetype-*/builds/unix/', -and similar places. The 'reautoconf' script does not touch those, but a -TL cron job keeps them in sync (nightly). +and a few other places. The 'reautoconf' script does not touch those, +but a TL cron job keeps them in sync (nightly). The directory 'extra/' contains things which are not part of the TL -build, but are present just for (someone's) convenience, e.g., -'epstopdf' which is developed here. +build, but are present just for (someone's) convenience, e.g., is +'epstopdf' development source is here. + + When the top-level './Build' script is used to build TL, two more two +more top-level directories appear: 'Work/' for the build tree, and +'inst/' for the install tree (from 'make install'). These names (and +everything else about 'Build''s operation) can be changed by setting +environment variables before running it; see the script file. 6.3 Autoconf macros =================== @@ -278,9 +284,8 @@ structure and variation. ---------------------------------------- This generic library uses the source tree in, e.g., the subdirectory -'libpng-1.6.16' with all modifications for TL recorded in -'libpng-1.6.16-PATCHES/*'. The 'configure.ac' fragment -'ac/withenable.ac' contains +'libpng-src/' with all modifications for TL recorded in 'TLpatches/*'. +The 'configure.ac' fragment 'ac/withenable.ac' contains KPSE_WITH_LIB([libpng], [zlib]) @@ -377,9 +382,9 @@ for a few of the programs in TL. 6.5.1 The 't1utils' package in 'utils/t1utils' ---------------------------------------------- -Once again we use the distributed source tree 't1utils-1.39' with -modifications documented in 't1utils-1.39-PATCHES/*' and a proxy build -system consisting of 'configure.ac' and 'Makefile.am'. The fragment +Once again we use the distributed source tree 't1utils-src' with +modifications documented in 'TLpatches/*' and a proxy build system +consisting of 'configure.ac' and 'Makefile.am'. The fragment 'ac/withenable.ac' contains KPSE_ENABLE_PROG([t1utils]) @@ -390,12 +395,11 @@ configure option '--disable-t1utils'. 6.5.2 The 'xindy' package in 'utils/xindy' ------------------------------------------ -This module uses the distributed source tree 'xindy-2.5.1' with -modifications documented in 'xindy-2.5.1-PATCHES/*', a proxy -'configure.ac', and a wrapper 'Makefile.am' that descends into -'xindy-2.5.1'. The 'xindy' build requires that the distributed -'Makefile's allow a 'VPATH' build, can handle all targets, and do not -refer to '${top_srcdir}' or '${top_builddir}'. The fragment +This module uses the distributed source tree 'xindy-src/' with +modifications documented in 'TLpatches/*', a proxy 'configure.ac', and a +wrapper 'Makefile.am' that descends into 'xindy-src'. The 'xindy' build +requires a 'make' that supports a 'VPATH' build, can handle all targets, +and do not refer to '${top_srcdir}' or '${top_builddir}'. The fragment 'ac/withenable.ac' contains KPSE_ENABLE_PROG([xindy], , [disable native]) @@ -446,6 +450,13 @@ but are included on the TL DVD together with their support files. This section outlines the basic process for adding new packages to the TL build system. + In any case, a new package directory 'foo' should contain the +original sources, as modified for TL, in 'foo/foo-src', and the changes +should be documented in 'foo/TLpatches/*'; changes should also be +submitted upstream whenever reasonable, of course. In addition, 'foo/' +will need the usual Automake build-related files ('configure.ac', +'Makefile.am', etc. Please keep a 'ChangeLog' for all TL changes. + 6.6.1 Adding a new program module --------------------------------- diff --git a/source/README.7coding b/source/README.7coding index 9d0e2291d8d6f2d39fda6dbc8aac1f2b5a56e6ff..8fd3ed0d2a48bcd6b04915180d7f80d6346279f3 100644 --- a/source/README.7coding +++ b/source/README.7coding @@ -10,8 +10,9 @@ should produce no (GCC) compiler warnings at all. In spite of considerable efforts into that direction we are still far from that goal and there are reasons that we may never fully reach it. Below are some rules about declarations of functions or variables and the use of -'const'. These rules should be applied to all parts of the TeX Live -tree, except some of those maintained independently. +'const'. These rules should be applied to most of the TeX Live tree, +the exception being code that is maintained independently and whose +maintainers don't want to accept patches. 9.1 Declarations and definitions ================================ diff --git a/source/build-aux/config.guess b/source/build-aux/config.guess index 69ed3e573bb3fa14476b0b539805850159eb23e0..2193702b12af303e32e673f25121fb646aa68d95 100755 --- a/source/build-aux/config.guess +++ b/source/build-aux/config.guess @@ -2,7 +2,7 @@ # Attempt to guess a canonical system name. # Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2017-03-05' +timestamp='2017-05-27' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -1304,14 +1304,21 @@ EOF if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub @@ -1335,16 +1342,16 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit ;; - NEO-?:NONSTOP_KERNEL:*:*) + NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; - NSR-?:NONSTOP_KERNEL:*:*) + NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; - NSX-?:NONSTOP_KERNEL:*:*) + NSX-*:NONSTOP_KERNEL:*:*) echo nsx-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) diff --git a/source/build-aux/config.sub b/source/build-aux/config.sub index 7203bf1e64bc40eaf8aa1ac68a97267a63deae0a..40ea5dfe1152f0fc5160879bb71bfe1fae2595f6 100755 --- a/source/build-aux/config.sub +++ b/source/build-aux/config.sub @@ -2,7 +2,7 @@ # Configuration validation subroutine script. # Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2017-03-21' +timestamp='2017-04-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -263,7 +263,7 @@ case $basic_machine in | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ - | i370 | i860 | i960 | ia64 \ + | i370 | i860 | i960 | ia16 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ @@ -389,7 +389,7 @@ case $basic_machine in | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ diff --git a/source/build-aux/texinfo.tex b/source/build-aux/texinfo.tex index 7bcb27b76e1d9a605596290d9e89f3235c85196c..8204f3e3aeb894572b1a1d6794c7234ed9c32cb1 100644 --- a/source/build-aux/texinfo.tex +++ b/source/build-aux/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2017-03-25.14} +\def\texinfoversion{2017-05-14.14} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, @@ -9118,7 +9118,13 @@ end \xdef\safexrefname{#1}% }% % - \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref + \bgroup + \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% + \egroup + % We put the \gdef inside a group to avoid the definitions building up on + % TeX's save stack, which can cause it to run out of space for aux files with + % thousands of lines. \gdef doesn't use the save stack, but \csname does + % when it defines an unknown control sequence as \relax. % % Was that xref control sequence that we just defined for a float? \expandafter\iffloat\csname XR\safexrefname\endcsname @@ -11595,6 +11601,9 @@ directory should work if nowhere else does.} @def ^^M{@let^^M@secondlinenl}% % Definition for a newline in the main Texinfo file. @gdef @secondlinenl{@fixbackslash}% + % In case the first line has a whole-line command on it + @let@originalparsearg@parsearg + @def@parsearg{@fixbackslash@originalparsearg} }} {@catcode`@^=7 @catcode`@^^M=13% @@ -11615,6 +11624,7 @@ directory should work if nowhere else does.} @catcode13=5 % regular end of line @enableemergencynewline @let@c=@texinfoc + @let@parsearg@originalparsearg % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. @catcode`+=@active diff --git a/source/doc/Makefile.am b/source/doc/Makefile.am index 23aa01a021886e174e7b4e1118344596f74c36c6..a9caaf8b59bb6792ee64156ae41808d064855153 100644 --- a/source/doc/Makefile.am +++ b/source/doc/Makefile.am @@ -34,35 +34,45 @@ readme-install: readme-files # none of this is intended to be executed except manually. mydoc = tlbuild -# until the next texinfo release, need development texinfo -# for --appendix-sections. -texinfo_dir = $(HOME)/gnu/src/texinfo -pod2texi = perl $(texinfo_dir)/Pod-Simple-Texinfo/pod2texi.pl +# Needs to be the pod2texi from at least Texinfo 6.3. +pod2texi = pod2texi pod2texi_args = \ --appendix-sections \ --base-level=section \ --no-fill-section-gaps \ --preamble='' -# We use a complicated L<> section reference in the tlmgr pod, -# schematically like this: +# We use complicated section names in the tlmgr pod, and consequently +# complicated section references, schematically like this: # L<whatever|/mysec I<myital>> # Unfortunately, the Pod module does not pass the necessary information # in the callbacks to allow pod2texi to preserve the I<>. It seems # better to kludge in some substitutions here than reimplement a whole # pod parser. Sigh. # -update_node_bad = ref{tlmgr update [option]... [pkg]... -update_node_good = ref{tlmgr update [\@emph{option}]... [\@emph{pkg}]... -install_node_bad = ref{tlmgr install [option]... pkg... -install_node_good = ref{tlmgr install [\@emph{option}]... \@emph{pkg}... +# The \@... in the replacements are escaping the @ in a Perl +# double-quote context, i.e., not an array. +# +update_node_bad = ref{tlmgr update [option]... [pkg]..., +update_node_bad2 = ref{tlmgr update, +update_node_good = ref{tlmgr update [\@emph{option}]... [\@emph{pkg}]..., +# +restore_node_bad = ref{tlmgr restore, +restore_node_good = ref{tlmgr restore [--backupdir \@emph{dir}] [--all | \@emph{pkg} [\@emph{rev}]], +# +install_node_bad = ref{tlmgr install [option]... pkg..., +install_node_good = ref{tlmgr install [\@emph{option}]... \@emph{pkg}..., # we don't actually use the (autogenerated) -incl.texi file, -# but it makes for a convenient target. +# but it makes for a convenient target. Copy the scripts into the build dir. $(mydoc)-incl.texi: install-tl tlmgr.pl $(pod2texi) -o $@ --subdir=$(mydoc)-incl $(pod2texi_args) $^ + cp $(mydoc)-incl/tlmgr.texi $(mydoc)-incl/tlmgr.texi.orig perl -pi \ -e 's/\Q$(update_node_bad)\E/$(update_node_good)/' \ + -e ';s/\Q$(update_node_bad2)\E/$(update_node_good),/' \ + -e ';' \ + -e 's/\Q$(restore_node_bad)\E/$(restore_node_good)/' \ -e ';' \ -e 's/\Q$(install_node_bad)\E/$(install_node_good)/' \ $(mydoc)-incl/tlmgr.texi diff --git a/source/doc/Makefile.in b/source/doc/Makefile.in index 3bb9f825badb144d4a27d4922fb1b4bbabb250f1..d2a4a24ff0f811ab46e9481971d3908565da6a3a 100644 --- a/source/doc/Makefile.in +++ b/source/doc/Makefile.in @@ -393,10 +393,8 @@ MAKEINFOFLAGS = --set INFO_SPECIAL_CHARS_WARNING=0 # none of this is intended to be executed except manually. mydoc = tlbuild -# until the next texinfo release, need development texinfo -# for --appendix-sections. -texinfo_dir = $(HOME)/gnu/src/texinfo -pod2texi = perl $(texinfo_dir)/Pod-Simple-Texinfo/pod2texi.pl +# Needs to be the pod2texi from at least Texinfo 6.3. +pod2texi = pod2texi pod2texi_args = \ --appendix-sections \ --base-level=section \ @@ -404,18 +402,26 @@ pod2texi_args = \ --preamble='' -# We use a complicated L<> section reference in the tlmgr pod, -# schematically like this: +# We use complicated section names in the tlmgr pod, and consequently +# complicated section references, schematically like this: # L<whatever|/mysec I<myital>> # Unfortunately, the Pod module does not pass the necessary information # in the callbacks to allow pod2texi to preserve the I<>. It seems # better to kludge in some substitutions here than reimplement a whole # pod parser. Sigh. # -update_node_bad = ref{tlmgr update [option]... [pkg]... -update_node_good = ref{tlmgr update [\@emph{option}]... [\@emph{pkg}]... -install_node_bad = ref{tlmgr install [option]... pkg... -install_node_good = ref{tlmgr install [\@emph{option}]... \@emph{pkg}... +# The \@... in the replacements are escaping the @ in a Perl +# double-quote context, i.e., not an array. +# +update_node_bad = ref{tlmgr update [option]... [pkg]..., +update_node_bad2 = ref{tlmgr update, +update_node_good = ref{tlmgr update [\@emph{option}]... [\@emph{pkg}]..., +# +restore_node_bad = ref{tlmgr restore, +restore_node_good = ref{tlmgr restore [--backupdir \@emph{dir}] [--all | \@emph{pkg} [\@emph{rev}]], +# +install_node_bad = ref{tlmgr install [option]... pkg..., +install_node_good = ref{tlmgr install [\@emph{option}]... \@emph{pkg}..., all: all-am .SUFFIXES: @@ -869,11 +875,15 @@ readme-install: readme-files .PHONY: readme-files readme-install # we don't actually use the (autogenerated) -incl.texi file, -# but it makes for a convenient target. +# but it makes for a convenient target. Copy the scripts into the build dir. $(mydoc)-incl.texi: install-tl tlmgr.pl $(pod2texi) -o $@ --subdir=$(mydoc)-incl $(pod2texi_args) $^ + cp $(mydoc)-incl/tlmgr.texi $(mydoc)-incl/tlmgr.texi.orig perl -pi \ -e 's/\Q$(update_node_bad)\E/$(update_node_good)/' \ + -e ';s/\Q$(update_node_bad2)\E/$(update_node_good),/' \ + -e ';' \ + -e 's/\Q$(restore_node_bad)\E/$(restore_node_good)/' \ -e ';' \ -e 's/\Q$(install_node_bad)\E/$(install_node_good)/' \ $(mydoc)-incl/tlmgr.texi diff --git a/source/doc/README.solaris b/source/doc/README.solaris index 0d0a6865ca5c46da3003676c42a16727b573a65a..45f10cad89e8ee1f07bfe41d82e47e8ef78177e9 100644 --- a/source/doc/README.solaris +++ b/source/doc/README.solaris @@ -167,14 +167,6 @@ The resulting binary depends on: libuutil.so.1 => /lib/libuutil.so.1 libgen.so.1 => /lib/libgen.so.1 -Additional notes: - -* gc-7.4.2 doesn't support sparc properly, so the sources for sparc were fetched from - https://github.com/ivmai/bdwgc/tree/release-7_4 - and put into gc-7.4.2 - Running ./autogen.sh was needed before proceeding - - Building texlive ================ @@ -188,11 +180,3 @@ luajittex seems to be broken on Solaris 10 x86_64 (even if it works with Solaris 11) and doesn't support Sparc, so it was only compiled for i386. -upmendex is broken on x86_64 by default. A workaround is to use - export CFLAGS='-DU_IS_BIG_ENDIAN=0' - export CXXFLAGS='-DU_IS_BIG_ENDIAN=0' -which seems to result in slower binaries for mysterious reasons. -For that reason binaries were compiled twice, once without those flags -and --disable-upmendex and the second time with those two flags, -but taking just 'upmendex'. - diff --git a/source/doc/tlbuild.info b/source/doc/tlbuild.info index 91e1b8084ab01ebc3ee8ac5e7a43258ac992c412..018fed3d4fb011457dd96f4e52b3fb6bc08a5eba 100644 --- a/source/doc/tlbuild.info +++ b/source/doc/tlbuild.info @@ -1998,6 +1998,7 @@ Appendix A install-tl * install-tl DESCRIPTION:: * install-tl REFERENCES:: * install-tl OPTIONS:: +* install-tl PROFILES:: * install-tl ENVIRONMENT VARIABLES:: * install-tl AUTHORS AND COPYRIGHT:: @@ -2017,7 +2018,9 @@ A.2 SYNOPSIS install-tl [_option_]... - install-tl.bat [_option_]... + install-tl-windows.bat [_option_]... + + install-tl-advanced.bat [_option_]... File: tlbuild.info, Node: install-tl DESCRIPTION, Next: install-tl REFERENCES, Prev: install-tl SYNOPSIS, Up: install-tl @@ -2026,21 +2029,22 @@ A.3 DESCRIPTION =============== This installer creates a runnable TeX Live installation from various -media, including over the network. The installer works across all -platforms supported by TeX Live. For information on initially -downloading the TeX Live, see <http://tug.org/texlive/acquire.html>. +media, including over the network, from local hard disk, a DVD, etc. +The installer works across all platforms supported by TeX Live. For +information on initially downloading the TeX Live, see +<http://tug.org/texlive/acquire.html>. - The basic idea of TeX Live installation is to choose one of the -top-level _schemes_, each of which is defined as a different set of + The basic idea of TeX Live installation is for you to choose one of +the top-level _schemes_, each of which is defined as a different set of _collections_ and _packages_, where a collection is a set of packages, and a package is what contains actual files. Within the installer, you can choose a scheme, and further customize the set of collections to install, but not the set of the packages. To -do that, use 'tlmgr' (reference below) after the initial installation is -completely. +work at the package level, use 'tlmgr' (reference just below) after the +initial installation is complete. - The default is 'scheme-full', to install everything, and this is + The default is 'scheme-full', which installs everything, and this is highly recommended. @@ -2053,14 +2057,14 @@ Post-installation configuration, package updates, and much more, are handled through *tlmgr*(1), the TeX Live Manager (<http://tug.org/texlive/tlmgr.html>). - The most up-to-date version of this documentation is on the Internet -at <http://tug.org/texlive/doc/install-tl.html>. + The most up-to-date version of this installer documentation is on the +Internet at <http://tug.org/texlive/doc/install-tl.html>. For the full documentation of TeX Live, see <http://tug.org/texlive/doc>. -File: tlbuild.info, Node: install-tl OPTIONS, Next: install-tl ENVIRONMENT VARIABLES, Prev: install-tl REFERENCES, Up: install-tl +File: tlbuild.info, Node: install-tl OPTIONS, Next: install-tl PROFILES, Prev: install-tl REFERENCES, Up: install-tl A.5 OPTIONS =========== @@ -2071,7 +2075,7 @@ by either a space or '='. *-gui* [[=]_module_] - If no _module_ is given starts the 'perltk' (see below) GUI + If no _module_ is given, starts the 'perltk' (see below) GUI installer. If _module_ is given loads the given installer module. Currently @@ -2094,7 +2098,7 @@ by either a space or '='. 'install-tl-advanced.bat'. The 'perltk' and 'wizard' modules, and thus also when calling with - a bare '-gui' (without _module_), requires the Perl/Tk module + bare '-gui' (with no _module_), require the Perl/Tk module (<http://tug.org/texlive/distro.html#perltk>); if Perl/Tk is not available, installation continues in text mode. @@ -2119,8 +2123,9 @@ by either a space or '='. Specify the package repository to be used as the source of the installation, either a local directory via '/path/to/directory' or - a 'file:/' url, or a network location via a 'http://' or 'ftp://' - url. (No other protocols are supported.) + a 'file:/' url, or a network location via a 'http://', 'https://', + or 'ftp://' url. (No other protocols are supported, and 'https://' + may not work on all platforms.) The default is to pick a mirror automatically, using <http://mirror.ctan.org/systems/texlive/tlnet>; the chosen mirror @@ -2135,9 +2140,9 @@ by either a space or '='. -repository http://ctan.example.org/its/ctan/dir/systems/texlive/tlnet - Of course a real hostname and its particular top-level CTAN path - have to be specified. The list of CTAN mirrors is available at - <http://ctan.org/mirrors>. + Of course a real hostname and its particular top-level CTAN + directory have to be specified. The list of CTAN mirrors is + available at <http://ctan.org/mirrors>. If the repository is local, the installation type (compressed or live) is automatically determined, by checking for the presence of @@ -2168,9 +2173,9 @@ by either a space or '='. *-all-options* Normally options not relevant to the current platform are not shown - (i.e., when running on Unix, Windows-specific options are omitted). - Giving this command line option allows configuring settings in the - final 'texlive.tlpdb' that do not have any immediate effect. + (e.g., when running on Unix, Windows-specific options are omitted). + Giving this command line option allows configuring such "foreign" + settings. *-custom-bin* _path_ @@ -2181,9 +2186,12 @@ by either a space or '='. installation will continue as usual, but at the end all files from _path_ are copied over to 'bin/custom/' under your installation directory and this 'bin/custom/' directory is what will be added to - the path for the post-install actions. (By the way, for - information on building TeX Live, see - <http://tug.org/texlive/build.html>). + the path for the post-install actions. To install multiple custom + binary sets, manully rename 'custom' before doing each. + + For more information on custom binaries, see + <http://tug.org/texlive/custom-bin.html>. For general information + on building TeX Live, see <http://tug.org/texlive/build.html>. *-debug-translation* @@ -2200,7 +2208,7 @@ by either a space or '='. *-help*, *-help*, *-?* - Display this help and exit (on the web via + Display this help and exit. (This help is on the web at <http://tug.org/texlive/doc/install-tl.html>). Sometimes the 'perldoc' and/or 'PAGER' programs on the system have problems, possibly resulting in control characters being literally output. @@ -2218,6 +2226,12 @@ by either a space or '='. option is not available via the installer interfaces. USE AT YOUR OWN RISK. +*-init-from-profile* _profile_file_ + + Similar to *-profile* (see *note PROFILES: install-tl PROFILES. + below), but only initializes the installation configuration from + _profile_file_ and then starts the interactive session. + *-logfile* _file_ Write both all messages (informational, debugging, warnings) to @@ -2229,7 +2243,7 @@ by either a space or '='. *-no-cls* - (only for text mode installer) do not clear the screen when + For the text mode installer only: do not clear the screen when entering a new menu (for debugging purposes). *-non-admin* @@ -2251,7 +2265,15 @@ by either a space or '='. This option is turned on by default, and the installation program will fall back to using 'wget' if this is not possible. To disable usage of LWP and persistent connections, use - '--no-persistent-downloads'. + '-no-persistent-downloads'. + +*-no-verify-downloads* + + By default, if a GnuPG 'gpg' binary is found in PATH, downloads are + verified against a cryptographic signature. This option disables + such verification. The full description is in the Crytographic + Verification section of the 'tlmgr' documentation, e.g., + <http://tug.org/texlive/doc/tlmgr.html#CRYPTOGRAPHIC-VERIFICATION> *-portable* @@ -2264,33 +2286,11 @@ by either a space or '='. (hardware/operating system) combination to standard output, and exit. '-print-arch' is a synonym. -*-profile* _profile_ - - Load the file _profile_ and do the installation with no user - interaction, that is, a batch (unattended) install. - - A _profile_ file contains all the values needed to perform an - installation. After a normal installation has finished, a profile - for that exact installation is written to the file - DEST/tlpkg/texlive.profile. That file can be given as the argument - to '-profile' to redo the exact same installation on a different - system, for example. Alternatively, you can use a custom profile, - most easily created by starting from a generated one and changing - values, or an empty file, which will take all the defaults. - - Normally a profile has to specify the value '1' for each collection - to be installed, even if the scheme is specified. This follows - from the logic of the installer in that you can first select a - scheme and then change the collections being installed. But for - convenience there is an exception to this within profiles: If the - profile contains a variable for 'selected_scheme' and _no_ - collection variables at all are defined in the profile, then the - collections which the specified scheme requires are installed. - - Thus, a line 'selected_scheme scheme-medium' together with the - definitions of the installation directories ('TEXDIR', 'TEXMFHOME', - 'TEXMFLOCAL', 'TEXMFSYSCONFIG', 'TEXMFSYSVAR') suffices to install - the medium scheme with all default options. +*-profile* _profile_file_ + + Load _profile_file_ and do the installation with no user + interaction, that is, a batch (unattended) install. See *note + PROFILES: install-tl PROFILES. below. *-q* @@ -2308,8 +2308,8 @@ by either a space or '='. *-v* - Include verbose debugging messages; repeat for maximum debugging, - as in '-v -v'. (Further repeats are accepted but ignored.) + Include verbose debugging messages; repeat for maximum debugging: + '-v -v'. (Further repeats are accepted but ignored.) *-version*, *-version* @@ -2317,13 +2317,143 @@ by either a space or '='. the revisions of the used modules are reported, too. -File: tlbuild.info, Node: install-tl ENVIRONMENT VARIABLES, Next: install-tl AUTHORS AND COPYRIGHT, Prev: install-tl OPTIONS, Up: install-tl +File: tlbuild.info, Node: install-tl PROFILES, Next: install-tl ENVIRONMENT VARIABLES, Prev: install-tl OPTIONS, Up: install-tl + +A.6 PROFILES +============ + +A _profile_ file contains all the values needed to perform an +installation. After a normal installation has finished, a profile for +that exact installation is written to the file 'tlpkg/texlive.profile'. +In addition, from the text menu one can select 'P' to save the current +setup as a profile at any time. Such a profile file can be given as the +argument to '-profile', for example to redo the exact same installation +on a different system. Alternatively, you can use a custom profile, +most easily created by starting from a generated one and changing +values, or an empty file, which will take all the defaults. + + Within a profile file, each line consists of + + _variable_ [_value_] + + except for comment lines starting with '#'. The possible variable +names are listed below. Values, when present, are either '0' or '1' for +booleans, or strings (which must be specified without any quote +characters). Leading whitespace is ignored. + + If the variable 'selected_scheme' is defined and _no_ collection +variables at all are defined, then the collections required by the +specified scheme (which might change over time) are installed, without +explicitly listing them. This eases maintenance of profile files. If +any collections are specified in a profile, though, then all desired +collections must be given explicitly. + + For example, a line + + selected_scheme scheme-small + + along with definitions for the installation directories (given below +under "path options") suffices to install the "small" scheme with all +default options. The schemes are described in the 'S' menu in the text +installer, or equivalent. + + Besides 'selected_scheme', here is the list of variable names +supported in a profile: + + *collection options* (prefix 'collection-') + + Collections are specified with a variable name with the prefix +'collection-' followed by a collection name; there is no value. For +instance, 'collection-basic'. The collections are described in the 'C' +menu. + + Schemes and collections (and packages) are ultimately defined by the +files in the 'tlpkg/tlpsrc/' source directory. + + *path options* + + It is best to define all of these, even though they may not be used +in the installation, so as to avoid unintentionally getting a default +value that could cause problems later. + + TEXDIR + TEXMFCONFIG + TEXMFVAR + TEXMFHOME + TEXMFLOCAL + TEXMFSYSCONFIG + TEXMFSYSVAR + + *installer options* (prefix 'instopt_') + +'instopt_adjustpath' (default 0 on Unix, 1 on Windows) + + Adjust 'PATH' environment variable. + +'instopt_adjustrepo' (default 1) + + Set remote repository to a multiplexed CTAN mirror after + installation; see '-repository' above. + +'instopt_letter' (default 0) + + Set letter size paper as the default, instead of a4. + +'instopt_portable' (default 0) + + Install for portable use, e.g., on a USB stick. + +'instopt_write18_restricted' (default 1) + + Enable '\write18' for a restricted set of programs. + + *tlpdb options* (prefix 'tlpdbopt_') + + The definitive list is given in 'tlpkg/TeXLive/TLConfig.pm', in +'%TeXLive::TLConfig::TLPDBOptions', together with explanations. All +items given there _except_ for 'tlpdbopt_location' can be specified. +Here is the current list: + + tlpdbopt_autobackup + tlpdbopt_backupdir + tlpdbopt_create_formats + tlpdbopt_desktop_integration + tlpdbopt_file_assocs + tlpdbopt_generate_updmap + tlpdbopt_install_docfiles + tlpdbopt_install_srcfiles + tlpdbopt_post_code + tlpdbopt_sys_bin + tlpdbopt_sys_info + tlpdbopt_sys_man + tlpdbopt_w32_multi_user + + *platform options* (prefix 'binary_') + + For each supported platform in TeX Live (directories under 'bin/'), +the variable 'binary_'_PLATFORM_ can be set. For example: + + binary_x86_64-linux + + If no 'binary_' variable is specified, the default is whatever the +current machine is running. + + In releases before 2017, many profile variables had different names +(not documented here; see the 'install-tl' source). They are accepted +and transformed to the names given above. When a profile is written, +the names above are always used. + + For more details on all of the above options, consult the TeX Live +installation manual, linked from <http://tug.org/texlive/doc>. + + +File: tlbuild.info, Node: install-tl ENVIRONMENT VARIABLES, Next: install-tl AUTHORS AND COPYRIGHT, Prev: install-tl PROFILES, Up: install-tl -A.6 ENVIRONMENT VARIABLES +A.7 ENVIRONMENT VARIABLES ========================= For ease in scripting and debugging, 'install-tl' will look for the -following environment variables. They are not of interest in normal +following environment variables. They are not of interest for normal user installations. 'TEXLIVE_INSTALL_ENV_NOCHECK' @@ -2337,10 +2467,19 @@ user installations. Omit creating the ConTeXt cache. This is useful for redistributors. +'TEXLIVE_INSTALL_NO_WELCOME' + + Omit printing the welcome message after successful installation, + e.g., for testing. + 'TEXLIVE_INSTALL_PREFIX' +'TEXLIVE_INSTALL_TEXDIR' + 'TEXLIVE_INSTALL_TEXMFCONFIG' +'TEXLIVE_INSTALL_TEXMFVAR' + 'TEXLIVE_INSTALL_TEXMFHOME' 'TEXLIVE_INSTALL_TEXMFLOCAL' @@ -2349,9 +2488,12 @@ user installations. 'TEXLIVE_INSTALL_TEXMFSYSVAR' -'TEXLIVE_INSTALL_TEXMFVAR' - - Specify the respective directories. + Specify the respective directories. 'TEXLIVE_INSTALL_PREFIX' + defaults to '/usr/local/texlive', while 'TEXLIVE_INSTALL_TEXDIR' + defaults to the release directory within that prefix, e.g., + '/usr/local/texlive/2016'. All the defaults can be seen by running + the installer interactively and then typing 'D' for the directory + menu. 'NOPERLDOC' @@ -2360,13 +2502,15 @@ user installations. File: tlbuild.info, Node: install-tl AUTHORS AND COPYRIGHT, Prev: install-tl ENVIRONMENT VARIABLES, Up: install-tl -A.7 AUTHORS AND COPYRIGHT +A.8 AUTHORS AND COPYRIGHT ========================= This script and its documentation were written for the TeX Live distribution (<http://tug.org/texlive>) and both are licensed under the GNU General Public License Version 2 or later. + $Id: install-tl 44407 2017-05-18 21:25:39Z karl $ + File: tlbuild.info, Node: tlmgr, Next: Index, Prev: install-tl, Up: Top @@ -2381,9 +2525,9 @@ Appendix B tlmgr * tlmgr EXAMPLES:: * tlmgr OPTIONS:: * tlmgr ACTIONS:: -* tlmgr USER MODE:: * tlmgr CONFIGURATION FILE FOR TLMGR:: -* tlmgr TAXONOMIES:: +* tlmgr CRYPTOGRAPHIC VERIFICATION:: +* tlmgr USER MODE:: * tlmgr MULTIPLE REPOSITORIES:: * tlmgr GUI FOR TLMGR:: * tlmgr MACHINE-READABLE OUTPUT:: @@ -2395,7 +2539,7 @@ File: tlbuild.info, Node: tlmgr NAME, Next: tlmgr SYNOPSIS, Up: tlmgr B.1 NAME ======== -tlmgr - the TeX Live Manager +tlmgr - the native TeX Live Manager File: tlbuild.info, Node: tlmgr SYNOPSIS, Next: tlmgr DESCRIPTION, Prev: tlmgr NAME, Up: tlmgr @@ -2439,11 +2583,17 @@ B.4 EXAMPLES After successfully installing TeX Live, here are a few common operations with 'tlmgr': +'tlmgr option repository ctan' + 'tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet' Tell 'tlmgr' to use a nearby CTAN mirror for future updates; useful - if you installed TeX Live from the DVD image and want continuing - updates. + if you installed TeX Live from the DVD image and want to have + continuing updates. The two commands are equivalent; 'ctan' is + just an alias for the given url. Caveat: 'mirror.ctan.org' + resolves to many different hosts, and they are not perfectly + synchronized; we recommend updating only daily (at most), and not + more often. 'tlmgr update --list' @@ -2454,10 +2604,11 @@ with 'tlmgr': Make your local TeX installation correspond to what is in the package repository (typically useful when updating from CTAN). -'tlmgr info' _pkg_ +'tlmgr info' _what_ - Display detailed information about _pkg_, such as the installation - status and description. + Display detailed information about a package _what_, such as the + installation status and description, of searches for _what_ in all + packages. For all the capabilities and details of 'tlmgr', please read the following voluminous information. @@ -2539,8 +2690,8 @@ name and its value. 'tlmgr' logs all package actions (install, remove, update, failed updates, failed restores) to a separate log file, by default - 'TEXMFSYSVAR/web2c/tlmgr.log'. This option allows you to specific - a different file for the log. + 'TEXMFSYSVAR/web2c/tlmgr.log'. This option allows you to specify a + different file for the log. *-pause* @@ -2568,6 +2719,15 @@ name and its value. below). Documented only for completeness, as this is only useful in debugging. +*-require-verification* + +*-no-require-verification* + + Instructs 'tlmgr' to only accept signed and verified remotes. In + any other case 'tlmgr' will quit operation. See *note + CRYPTOGRAPHIC VERIFICATION: tlmgr CRYPTOGRAPHIC VERIFICATION. below + for details. + *-usermode* Activates user mode for this run of 'tlmgr'; see *note USER MODE: @@ -2578,6 +2738,16 @@ name and its value. Uses _dir_ for the tree in user mode; see *note USER MODE: tlmgr USER MODE. below. +*-verify-downloads* + +*-no-verify-downloads* + + Enables or disables cryptographic verification of downloaded + database files. A working GnuPG ('gpg') binary needs to be present + in the path, otherwise this option has no effect. See *note + CRYPTOGRAPHIC VERIFICATION: tlmgr CRYPTOGRAPHIC VERIFICATION. below + for details. + The standard options for TeX Live programs are also accepted: '--help/-h/-?', '--version', '-q' (no informational messages), '-v' (debugging messages, can be repeated). For the details about these, see @@ -2588,7 +2758,7 @@ release and about the 'tlmgr' script itself. If '-v' is also given, revision number for the loaded TeX Live Perl modules are shown, too. -File: tlbuild.info, Node: tlmgr ACTIONS, Next: tlmgr USER MODE, Prev: tlmgr OPTIONS, Up: tlmgr +File: tlbuild.info, Node: tlmgr ACTIONS, Next: tlmgr CONFIGURATION FILE FOR TLMGR, Prev: tlmgr OPTIONS, Up: tlmgr B.6 ACTIONS =========== @@ -2601,12 +2771,14 @@ B.6 ACTIONS * tlmgr candidates _pkg_:: * tlmgr check [_option_]... [files|depends|executes|runfiles|all]:: * tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]:: +* tlmgr conf auxtrees [--conffile _file_] [show|add|delete] [_value_]:: * tlmgr dump-tlpdb [--local|--remote]:: * tlmgr generate [_option_]... _what_:: * tlmgr gui:: * tlmgr info [_option_...] [collections|schemes|_pkg_...]:: * tlmgr init-usertree:: * tlmgr install [_option_]... _pkg_...:: +* tlmgr key list|add _file_|remove _keyid_:: * tlmgr option:: * tlmgr paper:: * tlmgr path [--w32mode=user|admin] [add|remove]:: @@ -2616,10 +2788,11 @@ B.6 ACTIONS * tlmgr platform set auto:: * tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...:: * tlmgr print-platform:: -* tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]]:: * tlmgr remove [_option_]... _pkg_...:: * tlmgr repository:: +* tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]]:: * tlmgr search [_option_...] _what_:: +* tlmgr shell:: * tlmgr uninstall:: * tlmgr update [_option_]... [_pkg_]...:: @@ -2721,8 +2894,8 @@ Executes one (or all) check(s) on the consistency of the installation. *depends* Lists those packages which occur as dependencies in an installed - collections, but are themselves not installed, and those packages - that are not contained in any collection. + collection, but are themselves not installed, and those packages + which are not contained in any collection. If you call 'tlmgr check collections' this test will be carried out instead since former versions for 'tlmgr' called it that way. @@ -2735,7 +2908,7 @@ Executes one (or all) check(s) on the consistency of the installation. *runfiles* List those filenames that are occurring more than one time in the - runfiles. + runfiles sections. Options: @@ -2745,51 +2918,67 @@ Executes one (or all) check(s) on the consistency of the installation. checking the TL development repository. -File: tlbuild.info, Node: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]], Next: tlmgr dump-tlpdb [--local|--remote], Prev: tlmgr check [_option_]... [files|depends|executes|runfiles|all], Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]], Next: tlmgr conf auxtrees [--conffile _file_] [show|add|delete] [_value_], Prev: tlmgr check [_option_]... [files|depends|executes|runfiles|all], Up: tlmgr ACTIONS B.6.6 conf [texmf|tlmgr|updmap [-conffile _file_] [-delete] [_key_ [_value_]]] ------------------------------------------------------------------------------ + +File: tlbuild.info, Node: tlmgr conf auxtrees [--conffile _file_] [show|add|delete] [_value_], Next: tlmgr dump-tlpdb [--local|--remote], Prev: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]], Up: tlmgr ACTIONS + +B.6.7 conf auxtrees [-conffile _file_] [show|add|delete] [_value_] +------------------------------------------------------------------ + With only 'conf', show general configuration information for TeX Live, including active configuration files, path settings, and more. This is -like the 'texconfig conf' call, but works on all supported platforms. +like running 'texconfig conf', but works on all supported platforms. - With either 'conf texmf', 'conf tlmgr', or 'conf updmap' given in -addition, shows all key/value pairs (i.e., all settings) as saved in -'ROOT/texmf.cnf', the tlmgr configuration file (see below), or the first -found (via kpsewhich) 'updmap.cfg' file, respectively. + With one of 'conf texmf', 'conf tlmgr', or 'conf updmap', shows all +key/value pairs (i.e., all settings) as saved in 'ROOT/texmf.cnf', the +user-specific 'tlmgr' configuration file (see below), or the first found +(via 'kpsewhich') 'updmap.cfg' file, respectively. If _key_ is given in addition, shows the value of only that _key_ in -the respective file. If option _-delete_ is also given, the -configuration file - it is removed, not just commented out! +the respective file. If option _-delete_ is also given, the value in +the given configuration file is entirely removed (not just commented +out). If _value_ is given in addition, _key_ is set to _value_ in the respective file. _No error checking is done!_ - In all cases the file used can be explicitly specified via the option -'--conffile _file_', in case one wants to operate on a different file. + The 'PATH' value shown by 'conf' is as used by 'tlmgr'. The +directory in which the 'tlmgr' executable is found is automatically +prepended to the PATH value inherited from the environment. - Practical application: if the execution of (some or all) system -commands via '\write18' was left enabled during installation, you can -disable it afterwards: + Here is a practical example of changing configuration values. If the +execution of (some or all) system commands via '\write18' was left +enabled during installation, you can disable it afterwards: tlmgr conf texmf shell_escape 0 - A more complicated example: the 'TEXMFHOME' tree (see the main TeX -Live guide, <http://tug.org/texlive/doc.html>) can be set to multiple -directories, but they must be enclosed in braces and separated by -commas, so quoting the value to the shell is a good idea. Thus: + The subcommand 'auxtrees' allows adding and removing arbitrary +additional texmf trees, completely under user control. 'auxtrees show' +shows the list of additional trees, 'auxtrees add' _tree_ adds a tree to +the list, and 'auxtrees remove' _tree_ removes a tree from the list (if +present). The trees should not contain an 'ls-R' file (or files might +not be found if the 'ls-R' becomes stale). This works by manipulating +the Kpathsea variable 'TEXMFAUXTREES', in 'ROOT/texmf.cnf'. Example: + + tlmgr conf auxtrees add /quick/test/tree + tlmgr conf auxtrees remove /quick/test/tree - tlmgr conf texmf TEXMFHOME "{~/texmf,~/texmfbis}" + In all cases the configuration file can be explicitly specified via +the option '--conffile' _file_, if desired. - Warning: The general facility is here, but tinkering with settings in -this way is very strongly discouraged. Again, no error checking on -either keys or values is done, so any sort of breakage is possible. + Warning: The general facility for changing configuration values is +here, but tinkering with settings in this way is strongly discouraged. +Again, no error checking on either keys or values is done, so any sort +of breakage is possible. -File: tlbuild.info, Node: tlmgr dump-tlpdb [--local|--remote], Next: tlmgr generate [_option_]... _what_, Prev: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]], Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr dump-tlpdb [--local|--remote], Next: tlmgr generate [_option_]... _what_, Prev: tlmgr conf auxtrees [--conffile _file_] [show|add|delete] [_value_], Up: tlmgr ACTIONS -B.6.7 dump-tlpdb [-local|-remote] +B.6.8 dump-tlpdb [-local|-remote] --------------------------------- Dump complete local or remote TLPDB to standard output, as-is. The @@ -2800,11 +2989,11 @@ MACHINE-READABLE OUTPUT: tlmgr MACHINE-READABLE OUTPUT. section. *-local* - Dump the local tlpdb. + Dump the local TLPDB. *-remote* - Dump the remote tlpdb. + Dump the remote TLPDB. Exactly one of '--local' and '--remote' must be given. @@ -2822,7 +3011,7 @@ platform. File: tlbuild.info, Node: tlmgr generate [_option_]... _what_, Next: tlmgr gui, Prev: tlmgr dump-tlpdb [--local|--remote], Up: tlmgr ACTIONS -B.6.8 generate [_option_]... _what_ +B.6.9 generate [_option_]... _what_ ----------------------------------- *generate language* @@ -2833,8 +3022,6 @@ B.6.8 generate [_option_]... _what_ *generate language.dat.lua* -*generate fmtutil* - The 'generate' action overwrites any manual changes made in the respective files: it recreates them from scratch based on the information of the installed packages, plus local adaptions. The TeX @@ -2844,35 +3031,37 @@ files. For managing your own fonts, please read the 'updmap --help' information and/or <http://tug.org/fonts/fontinstall.html>. + For managing your own formats, please read the 'fmtutil --help' +information. + In more detail: 'generate' remakes any of the configuration files -'language.dat', 'language.def', 'language.dat.lua', and 'fmtutil.cnf', -from the information present in the local TLPDB, plus locally-maintained -files. +'language.dat', 'language.def', and 'language.dat.lua' from the +information present in the local TLPDB, plus locally-maintained files. The locally-maintained files are 'language-local.dat', -'language-local.def', 'language-local.dat.lua', or 'fmtutil-local.cnf', -searched for in 'TEXMFLOCAL' in the respective directories. If local -additions are present, the final file is made by starting with the main -file, omitting any entries that the local file specifies to be disabled, -and finally appending the local file. - - (Historical note: The formerly supported 'updmap-local.cfg' is no -longer read, since 'updmap' now supports multiple 'updmap.cfg' files. -Thus, local additions can and should be put into an 'updmap.cfg' file in -'TEXMFLOCAL'. The 'generate updmap' action no longer exists.) +'language-local.def', or 'language-local.dat.lua', searched for in +'TEXMFLOCAL' in the respective directories. If local additions are +present, the final file is made by starting with the main file, omitting +any entries that the local file specifies to be disabled, and finally +appending the local file. + + (Historical note: The formerly supported 'updmap-local.cfg' and +'fmtutil-local.cnf' are no longer read, since 'updmap' and 'fmtutil' now +reads and supports multiple configuration files. Thus, local additions +can and should be put into an 'updmap.cfg' of 'fmtutil.cnf' file in +'TEXMFLOCAL'. The 'generate updmap' and 'generate fmtutil' actions no +longer exist.) Local files specify entries to be disabled with a comment line, namely one of these: - #!NAME %!NAME --!NAME - where 'fmtutil.cnf' uses '#', 'language.dat' and 'language.def' use -'%', and 'language.dat.lua' use '--'. In all cases, the _name_ is the -respective format name or hyphenation pattern identifier. Examples: + where 'language.dat' and 'language.def' use '%', and +'language.dat.lua' use '--'. In all cases, the _name_ is the respective +format name or hyphenation pattern identifier. Examples: - #!pdflatex %!german --!usenglishmax @@ -2908,8 +3097,8 @@ with an extension recreates only that given language file. *-rebuild-sys* - tells tlmgr to run necessary programs after config files have been - regenerated. These are: 'fmtutil-sys --all' after 'generate + tells 'tlmgr' to run necessary programs after config files have + been regenerated. These are: 'fmtutil-sys --all' after 'generate fmtutil', 'fmtutil-sys --byhyphen .../language.dat' after 'generate language.dat', and 'fmtutil-sys --byhyphen .../language.def' after 'generate language.def'. @@ -2921,23 +3110,22 @@ with an extension recreates only that given language file. The respective locations are as follows: - tex/generic/config/language.dat (and language-local.dat); - tex/generic/config/language.def (and language-local.def); - tex/generic/config/language.dat.lua (and language-local.dat.lua); - web2c/fmtutil.cnf (and fmtutil-local.cnf); + tex/generic/config/language.dat (and language-local.dat) + tex/generic/config/language.def (and language-local.def) + tex/generic/config/language.dat.lua (and language-local.dat.lua) File: tlbuild.info, Node: tlmgr gui, Next: tlmgr info [_option_...] [collections|schemes|_pkg_...], Prev: tlmgr generate [_option_]... _what_, Up: tlmgr ACTIONS -B.6.9 gui ---------- +B.6.10 gui +---------- Start the graphical user interface. See *GUI* below. File: tlbuild.info, Node: tlmgr info [_option_...] [collections|schemes|_pkg_...], Next: tlmgr init-usertree, Prev: tlmgr gui, Up: tlmgr ACTIONS -B.6.10 info [_option_...] [collections|schemes|_pkg_...] +B.6.11 info [_option_...] [collections|schemes|_pkg_...] -------------------------------------------------------- With no argument, lists all packages available at the package @@ -2947,9 +3135,19 @@ repository, prefixing those already installed with 'i'. lists the request type instead of all packages. With any other arguments, display information about _pkg_: the name, -category, short and long description, installation status, and TeX Live -revision number. If _pkg_ is not locally installed, searches in the -remote installation source. +category, short and long description, sizes, installation status, and +TeX Live revision number. If _pkg_ is not locally installed, searches +in the remote installation source. + + For normal packages (not collections or schemes), the sizes of the +four groups of files (run/src/doc/bin files) are shown separately. For +collections, the cumulative size is shown, including all +directly-dependent packages (but not dependent collections). For +schemes, the cumulative size is also shown, including all +directly-dependent collections and packages. + + If _pkg_ is not found locally or remotely, the search action is used +and lists matching packages and files. It also displays information taken from the TeX Catalogue, namely the package version, date, and license. Consider these, especially the @@ -2971,26 +3169,14 @@ are still supported for backward compatibility. *-only-installed* - If this options is given, the installation source will not be used; + If this option is given, the installation source will not be used; only locally installed packages, collections, or schemes are - listed. (Does not work for listing of packages for now) - -*-taxonomy* - -*-keyword* - -*-functionality* - -*-characterization* - - In addition to the normal data displayed, also display information - for given packages from the corresponding taxonomy (or all of - them). See *note TAXONOMIES: tlmgr TAXONOMIES. below for details. + listed. File: tlbuild.info, Node: tlmgr init-usertree, Next: tlmgr install [_option_]... _pkg_..., Prev: tlmgr info [_option_...] [collections|schemes|_pkg_...], Up: tlmgr ACTIONS -B.6.11 init-usertree +B.6.12 init-usertree -------------------- Sets up a texmf tree for so-called user mode management, either the @@ -2998,13 +3184,22 @@ default user tree ('TEXMFHOME'), or one specified on the command line with '--usertree'. See *note USER MODE: tlmgr USER MODE. below. -File: tlbuild.info, Node: tlmgr install [_option_]... _pkg_..., Next: tlmgr option, Prev: tlmgr init-usertree, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr install [_option_]... _pkg_..., Next: tlmgr key list|add _file_|remove _keyid_, Prev: tlmgr init-usertree, Up: tlmgr ACTIONS -B.6.12 install [_option_]... _pkg_... +B.6.13 install [_option_]... _pkg_... ------------------------------------- -Install each _pkg_ given on the command line. By default this installs -all packages on which the given _pkg_s are dependent, also. Options: +Install each _pkg_ given on the command line, if it is not already +installed. (It does not touch existing packages; see the 'update' +action for how to get the latest version of a package.) + + By default this also installs all packages on which the given _pkg_s +are dependent. Options: + +*-dry-run* + + Nothing is actually installed; instead, the actions to be performed + are written to the terminal. *-file* @@ -3012,15 +3207,11 @@ all packages on which the given _pkg_s are dependent, also. Options: the package files given on the command line. These files must be standard TeX Live package files (with contained tlpobj file). -*-reinstall* - - Reinstall a package (including dependencies for collections) even - if it already seems to be installed (i.e, is present in the TLPDB). - This is useful to recover from accidental removal of files in the - hierarchy. +*-force* - When re-installing, only dependencies on normal packages are - followed (i.e., not those of category Scheme or Collection). + If updates to 'tlmgr' itself (or other parts of the basic + infrastructure) are present, 'tlmgr' will bail out and not perform + the installation unless this option is given. Not recommended. *-no-depends* @@ -3036,21 +3227,54 @@ all packages on which the given _pkg_s are dependent, also. Options: and also implies '--no-depends'. Don't use it unless you are sure of what you are doing. -*-dry-run* +*-reinstall* - Nothing is actually installed; instead, the actions to be performed - are written to the terminal. + Reinstall a package (including dependencies for collections) even + if it already seems to be installed (i.e, is present in the TLPDB). + This is useful to recover from accidental removal of files in the + hierarchy. -*-force* + When re-installing, only dependencies on normal packages are + followed (i.e., not those of category Scheme or Collection). - If updates to 'tlmgr' itself (or other parts of the basic - infrastructure) are present, 'tlmgr' will bail out and not perform - the installation unless this option is given. Not recommended. +*-with-doc* + +*-with-src* + + While not recommended, the 'install-tl' program provides an option + to omit installation of all documentation and/or source files. (By + default, everything is installed.) After such an installation, you + may find that you want the documentation or source files for a + given package after all. You can get them by using these options + in conjunction with '--reinstall', as in (using the 'fontspec' + package as the example): + + tlmgr install --reinstall --with-doc --with-src fontspec -File: tlbuild.info, Node: tlmgr option, Next: tlmgr paper, Prev: tlmgr install [_option_]... _pkg_..., Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr key list|add _file_|remove _keyid_, Next: tlmgr option, Prev: tlmgr install [_option_]... _pkg_..., Up: tlmgr ACTIONS + +B.6.14 key list|add _file_|remove _keyid_ +----------------------------------------- + +The action 'key' allows listing, adding and removing additional GPG keys +to the set of trusted keys, that is, those that are used to verify the +TeX Live databases. -B.6.13 option + With the 'list' argument, 'key' lists all keys. + + The 'add' argument requires another argument, either a filename or +'-' for stdin, from which the key is added. The key is added to the +local keyring 'GNUPGHOME/repository-keys.gpg', which is normally) +'tlpkg/gpg/repository-keys.gpg'. + + The 'remove' argument requires a key id and removes the requested id +from the local keyring. + + +File: tlbuild.info, Node: tlmgr option, Next: tlmgr paper, Prev: tlmgr key list|add _file_|remove _keyid_, Up: tlmgr ACTIONS + +B.6.15 option ------------- *option [show]* @@ -3106,7 +3330,9 @@ is not likely to be of interest except perhaps to developers. The 'docfiles' and 'srcfiles' options control the installation of their respective files of a package. By default both are enabled (1). -This can be disabled (set to 0) if disk space is (very) limited. +Either or both can be disabled (set to 0) if disk space is limited or +for minimal testing installations, etc. When disabled, the respective +files are not downloaded at all. The options 'autobackup' and 'backupdir' determine the defaults for the actions 'update', 'backup' and 'restore'. These three actions need @@ -3119,7 +3345,8 @@ backups. Its value is an integer. If the 'autobackup' value is '-1', no backups are removed. If 'autobackup' is 0 or more, it specifies the number of backups to keep. Thus, backups are disabled if the value is 0. In the '--clean' mode of the 'backup' action this option also -specifies the number to be kept. +specifies the number to be kept. The default value is 1, so that +backups are made, but only one backup is kept. To setup 'autobackup' to '-1' on the command line, use: @@ -3133,7 +3360,7 @@ feature across most Unix programs.) Unix-like systems to control the generation of links for executables, info files and man pages. See the 'path' action for details. - The last three options control behaviour on Windows installations. + The last three options also affect behavior on Windows installations. If 'desktop_integration' is set, then some packages will install items in a sub-folder of the Start menu for 'tlmgr gui', documentation, etc. If 'fileassocs' is set, Windows file associations are made (see also the @@ -3144,7 +3371,7 @@ of only the current user. All three options are on by default. File: tlbuild.info, Node: tlmgr paper, Next: tlmgr path [--w32mode=user|admin] [add|remove], Prev: tlmgr option, Up: tlmgr ACTIONS -B.6.14 paper +B.6.16 paper ------------ *paper [a4|letter]* @@ -3178,7 +3405,7 @@ settings. File: tlbuild.info, Node: tlmgr path [--w32mode=user|admin] [add|remove], Next: tlmgr pinning, Prev: tlmgr paper, Up: tlmgr ACTIONS -B.6.15 path [-w32mode=user|admin] [add|remove] +B.6.17 path [-w32mode=user|admin] [add|remove] ---------------------------------------------- On Unix, merely adds or removes symlinks for binaries, man pages, and @@ -3209,7 +3436,7 @@ issued that the caller does not have enough privileges. File: tlbuild.info, Node: tlmgr pinning, Next: tlmgr platform list|add|remove _platform_..., Prev: tlmgr path [--w32mode=user|admin] [add|remove], Up: tlmgr ACTIONS -B.6.16 pinning +B.6.18 pinning -------------- The 'pinning' action manages the pinning file, see *note Pinning: tlmgr @@ -3236,19 +3463,19 @@ Pinning. below. File: tlbuild.info, Node: tlmgr platform list|add|remove _platform_..., Next: tlmgr platform set _platform_, Prev: tlmgr pinning, Up: tlmgr ACTIONS -B.6.17 platform list|add|remove _platform_... +B.6.19 platform list|add|remove _platform_... --------------------------------------------- File: tlbuild.info, Node: tlmgr platform set _platform_, Next: tlmgr platform set auto, Prev: tlmgr platform list|add|remove _platform_..., Up: tlmgr ACTIONS -B.6.18 platform set _platform_ +B.6.20 platform set _platform_ ------------------------------ File: tlbuild.info, Node: tlmgr platform set auto, Next: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]..., Prev: tlmgr platform set _platform_, Up: tlmgr ACTIONS -B.6.19 platform set auto +B.6.21 platform set auto ------------------------ 'platform list' lists the TeX Live names of all the platforms (a.k.a. @@ -3283,7 +3510,7 @@ platform. File: tlbuild.info, Node: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]..., Next: tlmgr print-platform, Prev: tlmgr platform set auto, Up: tlmgr ACTIONS -B.6.20 postaction [-w32mode=user|admin] [-fileassocmode=1|2] [-all] [install|remove] [shortcut|fileassoc|script] [_pkg_]... +B.6.22 postaction [-w32mode=user|admin] [-fileassocmode=1|2] [-all] [install|remove] [shortcut|fileassoc|script] [_pkg_]... --------------------------------------------------------------------------------------------------------------------------- Carry out the postaction 'shortcut', 'fileassoc', or 'script' given as @@ -3303,9 +3530,9 @@ to 2, all associations are set to the TeX Live programs. (See also 'option fileassocs'.) -File: tlbuild.info, Node: tlmgr print-platform, Next: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]], Prev: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]..., Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr print-platform, Next: tlmgr remove [_option_]... _pkg_..., Prev: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]..., Up: tlmgr ACTIONS -B.6.21 print-platform +B.6.23 print-platform --------------------- Print the TeX Live identifier for the detected platform @@ -3313,60 +3540,42 @@ Print the TeX Live identifier for the detected platform '--print-arch' is a synonym. -File: tlbuild.info, Node: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]], Next: tlmgr remove [_option_]... _pkg_..., Prev: tlmgr print-platform, Up: tlmgr ACTIONS - -B.6.22 restore [-backupdir _dir_] [-all | _pkg_ [_rev_]] --------------------------------------------------------- - -Restore a package from a previously-made backup. - - If '--all' is given, try to restore the latest revision of all -package backups found in the backup directory. - - Otherwise, if neither _pkg_ nor _rev_ are given, list the available -backup revisions for all packages. - - With _pkg_ given but no _rev_, list all available backup revisions of -_pkg_. +File: tlbuild.info, Node: tlmgr remove [_option_]... _pkg_..., Next: tlmgr repository, Prev: tlmgr print-platform, Up: tlmgr ACTIONS - When listing available packages tlmgr shows the revision and in -parenthesis the creation time if available (in format yyyy-mm-dd hh:mm). - - With both _pkg_ and _rev_, tries to restore the package from the -specified backup. - - Options: +B.6.24 remove [_option_]... _pkg_... +------------------------------------ -*-all* +Remove each _pkg_ specified. Removing a collection removes all package +dependencies (unless '--no-depends' is specified), but not any +collection dependencies of that collection. However, when removing a +package, dependencies are never removed. Options: - Try to restore the latest revision of all package backups found in - the backup directory. Additional non-option arguments (like _pkg_) - are not allowed. +*-backup* *-backupdir* _directory_ - Specify the directory where the backups are to be found. If not - given it will be taken from the configuration setting in the TLPDB. + These options behave just as with the *note (update)tlmgr update + [_option_]... [_pkg_]...:: action (q.v.), except they apply to + making backups of packages before they are removed. The default is + to make such a backup, that is, to save a copy of packages before + removal. -*-dry-run* + See *note (update)tlmgr update [_option_]... [_pkg_]...:: action + for more. - Nothing is actually restored; instead, the actions to be performed - are written to the terminal. - -*-force* - - Don't ask questions. - - -File: tlbuild.info, Node: tlmgr remove [_option_]... _pkg_..., Next: tlmgr repository, Prev: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]], Up: tlmgr ACTIONS + neither option is given, no backup will be made. If '--backupdir' + is given and specifies a writable directory then a backup will be + made in that location. If only '--backup' is given, then a backup + will be made to the directory previously set via the 'option' + action (see below). If both are given then a backup will be made + to the specified _directory_. -B.6.23 remove [_option_]... _pkg_... ------------------------------------- + You can set options via the 'option' action to automatically make + backups for all packages, and/or keep only a certain number of + backups. Please see the 'option' action for details. The default + is to make one backup. -Remove each _pkg_ specified. Removing a collection removes all package -dependencies (unless '--no-depends' is specified), but not any -collection dependencies of that collection. However, when removing a -package, dependencies are never removed. Options: + The 'restore' action explains how to restore from a backup. *-no-depends* @@ -3393,9 +3602,9 @@ package, dependencies are never removed. Options: are written to the terminal. -File: tlbuild.info, Node: tlmgr repository, Next: tlmgr search [_option_...] _what_, Prev: tlmgr remove [_option_]... _pkg_..., Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr repository, Next: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]], Prev: tlmgr remove [_option_]... _pkg_..., Up: tlmgr ACTIONS -B.6.24 repository +B.6.25 repository ----------------- *repository list* @@ -3430,62 +3639,85 @@ B.6.24 repository otherwise, all operations will fail! -File: tlbuild.info, Node: tlmgr search [_option_...] _what_, Next: tlmgr uninstall, Prev: tlmgr repository, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]], Next: tlmgr search [_option_...] _what_, Prev: tlmgr repository, Up: tlmgr ACTIONS -B.6.25 search [_option_...] _what_ ----------------------------------- +B.6.26 restore [-backupdir _dir_] [-all | _pkg_ [_rev_]] +-------------------------------------------------------- -* Menu: +Restore a package from a previously-made backup. -* tlmgr search [_option_...] --file _what_:: -* tlmgr search [_option_...] --taxonomy _what_:: -* tlmgr search [_option_...] --keyword _what_:: -* tlmgr search [_option_...] --functionality _what_:: -* tlmgr search [_option_...] --characterization _what_:: -* tlmgr search [_option_...] --all _what_:: + If '--all' is given, try to restore the latest revision of all +package backups found in the backup directory. - -File: tlbuild.info, Node: tlmgr search [_option_...] --file _what_, Next: tlmgr search [_option_...] --taxonomy _what_, Up: tlmgr search [_option_...] _what_ + Otherwise, if neither _pkg_ nor _rev_ are given, list the available +backup revisions for all packages. With _pkg_ given but no _rev_, list +all available backup revisions of _pkg_. -B.6.25.1 search [_option_...] -file _what_ -.......................................... + When listing available packages, 'tlmgr' shows the revision, and in +parenthesis the creation time if available (in format yyyy-mm-dd hh:mm). - -File: tlbuild.info, Node: tlmgr search [_option_...] --taxonomy _what_, Next: tlmgr search [_option_...] --keyword _what_, Prev: tlmgr search [_option_...] --file _what_, Up: tlmgr search [_option_...] _what_ + If (and only if) both _pkg_ and a valid revision number _rev_ are +specified, try to restore the package from the specified backup. -B.6.25.2 search [_option_...] -taxonomy _what_ -.............................................. + Options: - -File: tlbuild.info, Node: tlmgr search [_option_...] --keyword _what_, Next: tlmgr search [_option_...] --functionality _what_, Prev: tlmgr search [_option_...] --taxonomy _what_, Up: tlmgr search [_option_...] _what_ +*-all* + + Try to restore the latest revision of all package backups found in + the backup directory. Additional non-option arguments (like _pkg_) + are not allowed. + +*-backupdir* _directory_ + + Specify the directory where the backups are to be found. If not + given it will be taken from the configuration setting in the TLPDB. + +*-dry-run* + + Nothing is actually restored; instead, the actions to be performed + are written to the terminal. -B.6.25.3 search [_option_...] -keyword _what_ -............................................. +*-force* + + Don't ask questions. -File: tlbuild.info, Node: tlmgr search [_option_...] --functionality _what_, Next: tlmgr search [_option_...] --characterization _what_, Prev: tlmgr search [_option_...] --keyword _what_, Up: tlmgr search [_option_...] _what_ +File: tlbuild.info, Node: tlmgr search [_option_...] _what_, Next: tlmgr shell, Prev: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]], Up: tlmgr ACTIONS -B.6.25.4 search [_option_...] -functionality _what_ -................................................... +B.6.27 search [_option_...] _what_ +---------------------------------- + +* Menu: + +* tlmgr search [_option_...] --file _what_:: +* tlmgr search [_option_...] --all _what_:: -File: tlbuild.info, Node: tlmgr search [_option_...] --characterization _what_, Next: tlmgr search [_option_...] --all _what_, Prev: tlmgr search [_option_...] --functionality _what_, Up: tlmgr search [_option_...] _what_ +File: tlbuild.info, Node: tlmgr search [_option_...] --file _what_, Next: tlmgr search [_option_...] --all _what_, Up: tlmgr search [_option_...] _what_ -B.6.25.5 search [_option_...] -characterization _what_ -...................................................... +B.6.27.1 search [_option_...] -file _what_ +.......................................... -File: tlbuild.info, Node: tlmgr search [_option_...] --all _what_, Prev: tlmgr search [_option_...] --characterization _what_, Up: tlmgr search [_option_...] _what_ +File: tlbuild.info, Node: tlmgr search [_option_...] --all _what_, Prev: tlmgr search [_option_...] --file _what_, Up: tlmgr search [_option_...] _what_ -B.6.25.6 search [_option_...] -all _what_ +B.6.27.2 search [_option_...] -all _what_ ......................................... By default, search the names, short descriptions, and long descriptions of all locally installed packages for the argument _what_, interpreted -as a regular expression. +as a (Perl) regular expression. Options: +*-file* + + List all filenames containing _what_. + +*-all* + + Search everything: package names, descriptions and filenames. + *-global* Search the TeX Live Database of the installation medium, instead of @@ -3493,45 +3725,76 @@ as a regular expression. *-word* - Restrict the search to match only full words. For example, - searching for 'table' with this option will not output packages - containing the word 'tables' (unless they also contain the word - 'table' on its own). + Restrict the search of package names and descriptions (but not + filenames) to match only full words. For example, searching for + 'table' with this option will not output packages containing the + word 'tables' (unless they also contain the word 'table' on its + own). -*-list* + +File: tlbuild.info, Node: tlmgr shell, Next: tlmgr uninstall, Prev: tlmgr search [_option_...] _what_, Up: tlmgr ACTIONS - If a search for any (or all) taxonomies is done, by specifying one - of the taxonomy options below, then instead of searching for - packages, list the entire corresponding taxonomy (or all of them). - See *note TAXONOMIES: tlmgr TAXONOMIES. below. +B.6.28 shell +------------ - Other search options are selected by specifying one of the following: +Starts an interactive mode, where tlmgr prompts for commands. This can +be used directly, or for scripting. The first line of output is +'protocol' _n_, where _n_ is an unsigned number identifying the protocol +version (currently 1). -*-file* + In general, tlmgr actions that can be given on the command line +translate to commands in this shell mode. For example, you can say +'update --list' to see what would be updated. The TLPDB is loaded the +first time it is needed (not at the beginning), and used for the rest of +the session. - List all filenames containing _what_. + Besides these actions, a few commands are specific to shell mode: -*-taxonomy* +protocol -*-keyword* + Print 'protocol _n_', the current protocol version. -*-functionality* +help -*-characterization* + Print pointers to this documentation. - Search in the corresponding taxonomy (or all) instead of the - package descriptions. See *note TAXONOMIES: tlmgr TAXONOMIES. - below. +version -*-all* + Print tlmgr version information. - Search for package names, descriptions, and taxonomies, but not - files. +quit, end, bye, byebye, EOF + + Exit. + +restart + + Restart 'tlmgr shell' with the original command line; most useful + when developing 'tlmgr'. + +load [local|remote] + + Explicitly load the local or remote, respectively, TLPDB. + +save + + Save the local TLPDB, presumably after other operations have + changed it. + +get [_var_] =item set [_var_ [_val_]] + + Get the value of _var_, or set it to _val_. Possible _var_ names: + 'debug-translation', 'machine-readable', 'no-execute-actions', + 'require-verification', 'verify-downloads', and 'repository'. All + except 'repository' are booleans, taking values 0 and 1, and behave + like the corresponding command line option. The 'repository' + variable takes a string, and sets the remote repository location. + + If _var_ or then _val_ is not specified, it is prompted for. -File: tlbuild.info, Node: tlmgr uninstall, Next: tlmgr update [_option_]... [_pkg_]..., Prev: tlmgr search [_option_...] _what_, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr uninstall, Next: tlmgr update [_option_]... [_pkg_]..., Prev: tlmgr shell, Up: tlmgr ACTIONS -B.6.26 uninstall +B.6.29 uninstall ---------------- Uninstalls the entire TeX Live installation. Options: @@ -3543,7 +3806,7 @@ Uninstalls the entire TeX Live installation. Options: File: tlbuild.info, Node: tlmgr update [_option_]... [_pkg_]..., Prev: tlmgr uninstall, Up: tlmgr ACTIONS -B.6.27 update [_option_]... [_pkg_]... +B.6.30 update [_option_]... [_pkg_]... -------------------------------------- Updates the packages given as arguments to the latest version available @@ -3682,29 +3945,31 @@ must be specified. Options: tlmgr update --reinstall-forcibly-removed --all -*-backup* and *-backupdir* _directory_ +*-backup* + +*-backupdir* _directory_ These two options control the creation of backups of packages _before_ updating; that is, backup of packages as currently - installed. If neither of these options are given, no backup - package will be saved. If '--backupdir' is given and specifies a - writable directory then a backup will be made in that location. If - only '--backup' is given, then a backup will be made to the - directory previously set via the 'option' action (see below). If - both are given then a backup will be made to the specified - _directory_. - - You can set options via the 'option' action to automatically create - backups for all packages, and/or keep only a certain number of - backups. Please see the 'option' action for details. + installed. If neither options is given, no backup will made saved. + If '--backupdir' is given and specifies a writable directory then a + backup will be made in that location. If only '--backup' is given, + then a backup will be made to the directory previously set via the + *note option: tlmgr option. action (see below). If both are given + then a backup will be made to the specified _directory_. + + You can also set options via the '/option' action to automatically + make backups for all packages, and/or keep only a certain number of + backups. 'tlmgr' always makes a temporary backup when updating packages, in case of download or other failure during an update. In contrast, - the purpose of this '--backup' option is to allow you to save a - persistent backup in case the actual _content_ of the update causes - problems, e.g., introduces an incompatibility. + the purpose of this '--backup' option is to save a persistent + backup in case the actual _content_ of the update causes problems, + e.g., introduces an TeX incompatibility. - The 'restore' action explains how to restore from a backup. + The *note restore: tlmgr restore [--backupdir _dir_] [--all | _pkg_ + [_rev_]]. action explains how to restore from a backup. *-no-depends* @@ -3728,10 +3993,134 @@ installed (e.g., if the selected mirror is out of date), 'tlmgr' does not downgrade. Also, packages for uninstalled platforms are not installed. + 'tlmgr' saves a copy of the 'texlive.tlpdb' file used for an update +with a suffix representing the repository url, as in +'tlpkg/texlive.tlpdb.'_long-hash-string_. These can be useful for +fallback information, but if you don't like them accumulating (e.g., +'mirror.ctan.org' resolves to many different hosts, each resulting in a +possibly different hash), it's harmless to delete them. + -File: tlbuild.info, Node: tlmgr USER MODE, Next: tlmgr CONFIGURATION FILE FOR TLMGR, Prev: tlmgr ACTIONS, Up: tlmgr +File: tlbuild.info, Node: tlmgr CONFIGURATION FILE FOR TLMGR, Next: tlmgr CRYPTOGRAPHIC VERIFICATION, Prev: tlmgr ACTIONS, Up: tlmgr + +B.7 CONFIGURATION FILE FOR TLMGR +================================ + +There are two configuration files for 'tlmgr': One is system-wide in +'TEXMFSYSCONFIG/tlmgr/config', and the other is user-specific in +'TEXMFCONFIG/tlmgr/config'. The user-specific one is the default for +the 'conf tlmgr' action. (Run 'kpsewhich -var-value=TEXMFSYSCONFIG' or +'... TEXMFCONFIG ...' to see the actual directory names.) + + A few defaults corresponding to command-line options can be set in +these configuration files. In addition, the system-wide file can +contain a directive to restrict the allowed actions. -B.7 USER MODE + In these config files, empty lines and lines starting with # are +ignored. All other lines must look like: + + key = value + + where the spaces are optional but the '=' is required. + + The allowed keys are: + +'auto-remove', value 0 or 1 (default 1), same as command-line option. + +'gui-expertmode', value 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings. + +'gui-lang' _llcode_, with a language code value as with the command-line option. + +'no-checksums', value 0 or 1 (default 0, see below). + +'persistent-downloads', value 0 or 1 (default 1), same as command-line option. + +'require-verification', value 0 or 1 (default 0), same as command-line option. + +'verify-downloads', value 0 or 1 (default 1), same as command-line option. + + The system-wide config file can contain one additional key: + +'allowed-actions' _action1_ [,_action_,...] The value is a comma-separated list of 'tlmgr' actions which are allowed to be executed when 'tlmgr' is invoked in system mode (that is, without '--usermode'). + + This allows distributors to include the 'tlmgr' in their packaging, + but allow only a restricted set of actions that do not interfere + with their distro package manager. For native TeX Live + installations, it doesn't make sense to set this. + + The 'no-checksums' key needs more explanation. By default, package +checksums computed and stored on the server (in the TLPDB) are compared +to checksums computed locally after downloading. That is, for each +'texlive.tlpdb' loaded from a repository, the corresponding checksum +file 'texlive.tlpdb.sha512' is also downloaded, and 'tlmgr' confirms +whether the checksum of the downloaded TLPDB file agrees with the +download data. 'no-checksums' disables this process. + + The checksum algorithm is SHA-512. Your system must have one of +(looked for in this order) the Perl 'Digest::SHA' module, the 'openssl' +program (<http://openssl.org>), the 'sha512sum' program (from GNU +Coreutils, <http://www.gnu.org/software/coreutils>), or finally the +'shasum' program (just to support old Macs). If none of these are +available, a warning is issued and 'tlmgr' proceeds without checking +checksums. (Incidentally, other SHA implementations, such as the pure +Perl and pure Lua modules, are much too slow to be usable in our +context.) 'no-checksums' avoids the warning. + + +File: tlbuild.info, Node: tlmgr CRYPTOGRAPHIC VERIFICATION, Next: tlmgr USER MODE, Prev: tlmgr CONFIGURATION FILE FOR TLMGR, Up: tlmgr + +B.8 CRYPTOGRAPHIC VERIFICATION +============================== + +'tlmgr' and 'install-tl' perform cryptographic verification if possible. +If verification is performed and successful, the programs report +'(verified)' after loading the TLPDB; otherwise, they report '(not +verified)'. Either way, by default the installation and/or updates +proceed normally. + + The attempted verification can be suppressed by specifying +'--no-verify-downloads' on the command line, or the entry +'verify-downloads = 0' in a 'tlmgr' config file (described in *note +CONFIGURATION FILE FOR TLMGR: tlmgr CONFIGURATION FILE FOR TLMGR.). On +the other hand, it is possible to _require_ verification by specifying +'--require-verification' on the command line, or 'require-verification = +1' in a 'tlmgr' config file; in this case, if verification is not +possible, the program quits. + + Cryptographic verification requires checksum checking (described just +above) to succeed, and a working GnuPG ('gpg') program (see below for +search method). Then, unless cryptographic verification has been +disabled, a signature file ('texlive.tlpdb.*.asc') of the checksum file +is downloaded and the signature verified. The signature is created by +the TeX Live Distribution GPG key 0x06BAB6BC, which in turn is signed by +Karl Berry's key 0x30D155AD and Norbert Preining's key 0x6CACA448. All +of these keys are obtainable from the standard key servers. + + Additional trusted keys can be added using the 'key' action. + +* Menu: + +* tlmgr Configuration of GnuPG invocation:: + + +File: tlbuild.info, Node: tlmgr Configuration of GnuPG invocation, Up: tlmgr CRYPTOGRAPHIC VERIFICATION + +B.8.1 Configuration of GnuPG invocation +--------------------------------------- + +The executable used for GnuPG is searched as follows: If the environment +variable 'TL_GNUPG' is set, it is tested and used; otherwise 'gpg' is +checked; finally 'gpg2' is checked. + + Further adaptation of the 'gpg' invocation can be made using the two +environment variables 'TL_GNUPGHOME', which is passed to 'gpg' as the +value for '--homedir', and 'TL_GNUPGARGS', which replaces the default +options '--no-secmem-warning --no-permission-warning'. + + +File: tlbuild.info, Node: tlmgr USER MODE, Next: tlmgr MULTIPLE REPOSITORIES, Prev: tlmgr CRYPTOGRAPHIC VERIFICATION, Up: tlmgr + +B.9 USER MODE ============= 'tlmgr' provides a restricted way, called "user mode", to manage @@ -3787,14 +4176,14 @@ be installed into a user tree. * Menu: -* tlmgr user mode install:: -* tlmgr user mode backup; restore; remove; update:: -* tlmgr user mode generate; option; paper:: +* tlmgr User mode install:: +* tlmgr User mode backup, restore, remove, update:: +* tlmgr User mode generate, option, paper:: -File: tlbuild.info, Node: tlmgr user mode install, Next: tlmgr user mode backup; restore; remove; update, Up: tlmgr USER MODE +File: tlbuild.info, Node: tlmgr User mode install, Next: tlmgr User mode backup, restore, remove, update, Up: tlmgr USER MODE -B.7.1 user mode install +B.9.1 User mode install ----------------------- In user mode, the 'install' action checks that the package and all @@ -3811,10 +4200,14 @@ collection-context' would install 'collection-basic' and other collections, while in user mode, _only_ the packages mentioned in 'collection-context' are installed. + If a package shipping map files is installed in user mode, a backup +of the user's 'updmap.cfg' in 'USERTREE/web2c/' is made, and then this +file regenerated from the list of installed packages. + -File: tlbuild.info, Node: tlmgr user mode backup; restore; remove; update, Next: tlmgr user mode generate; option; paper, Prev: tlmgr user mode install, Up: tlmgr USER MODE +File: tlbuild.info, Node: tlmgr User mode backup, restore, remove, update, Next: tlmgr User mode generate, option, paper, Prev: tlmgr User mode install, Up: tlmgr USER MODE -B.7.2 user mode backup; restore; remove; update +B.9.2 User mode backup, restore, remove, update ----------------------------------------------- In user mode, these actions check that all packages to be acted on are @@ -3822,9 +4215,9 @@ installed in the user tree before proceeding; otherwise, they behave just as in normal mode. -File: tlbuild.info, Node: tlmgr user mode generate; option; paper, Prev: tlmgr user mode backup; restore; remove; update, Up: tlmgr USER MODE +File: tlbuild.info, Node: tlmgr User mode generate, option, paper, Prev: tlmgr User mode backup, restore, remove, update, Up: tlmgr USER MODE -B.7.3 user mode generate; option; paper +B.9.3 User mode generate, option, paper --------------------------------------- In user mode, these actions operate only on the user tree's @@ -3832,78 +4225,7 @@ configuration files and/or 'texlive.tlpdb'. creates configuration files in user tree -File: tlbuild.info, Node: tlmgr CONFIGURATION FILE FOR TLMGR, Next: tlmgr TAXONOMIES, Prev: tlmgr USER MODE, Up: tlmgr - -B.8 CONFIGURATION FILE FOR TLMGR -================================ - -A small subset of the command line options can be set in a config file -for 'tlmgr' which resides in 'TEXMFCONFIG/tlmgr/config'. By default, -the config file is in '~/.texliveYYYY/texmf-config/tlmgr/config' -(replacing 'YYYY' with the year of your TeX Live installation). This is -_not_ 'TEXMFSYSVAR', so that the file is specific to a single user. - - In this file, empty lines and lines starting with # are ignored. All -other lines must look like - - key = value - - where the allowed keys are 'gui-expertmode' (value 0 or 1), -'persistent-downloads' (value 0 or 1), 'auto-remove' (value 0 or 1), and -'gui-lang' (value like in the command line option). - - 'persistent-downloads', 'gui-lang', and 'auto-remove' correspond to -the respective command line options of the same name. 'gui-expertmode' -switches between the full GUI and a simplified GUI with only the -important and mostly used settings. - - -File: tlbuild.info, Node: tlmgr TAXONOMIES, Next: tlmgr MULTIPLE REPOSITORIES, Prev: tlmgr CONFIGURATION FILE FOR TLMGR, Up: tlmgr - -B.9 TAXONOMIES -============== - -tlmgr allows searching and listing of various categorizations, which we -call _taxonomies_, as provided by an enhanced TeX Catalogue (available -for testing at <http://az.ctan.org>). This is useful when, for example, -you don't know a specific package name but have an idea of the -functionality you need; or when you want to see all packages relating to -a given area. - - There are three different taxonomies, specified by the following -options: - -'--keyword' - - The keywords, as specified at <http://az.ctan.org/keyword>. - -'--functionality' - - The "by-topic" categorization created by J\"urgen Fenn, as - specified at <http://az.ctan.org/characterization/by-function>. - -'--characterization' - - Both the primary and secondary functionalities, as specified at - <http://az.ctan.org/characterization/choose_dimen>. - -'--taxonomy' - - Operate on all the taxonomies. - - The taxonomies are updated nightly and stored within TeX Live, so -Internet access is not required to search them. - - Examples: - - tlmgr search --taxonomy exercise # check all taxonomies for "exercise" - tlmgr search --taxonomy --word table # check for "table" on its own - tlmgr search --list --keyword # dump entire keyword taxonomy - tlmgr show --taxonomy pdftex # show pdftex package information, - # including all taxonomy entries - - -File: tlbuild.info, Node: tlmgr MULTIPLE REPOSITORIES, Next: tlmgr GUI FOR TLMGR, Prev: tlmgr TAXONOMIES, Up: tlmgr +File: tlbuild.info, Node: tlmgr MULTIPLE REPOSITORIES, Next: tlmgr GUI FOR TLMGR, Prev: tlmgr USER MODE, Up: tlmgr B.10 MULTIPLE REPOSITORIES ========================== @@ -3918,11 +4240,11 @@ or should not be included in TeX Live, for whatever reason. installation source to any repository (with the '-repository' or 'option repository' command line options), and perform your operations. - When you are using multiple repositories over a sustained time, -however, explicitly switching between them becomes inconvenient. Thus, -it's possible to tell 'tlmgr' about additional repositories you want to -use. The basic command is 'tlmgr repository add'. The rest of this -section explains further. + When you are using multiple repositories over a sustained length of +time, however, explicitly switching between them becomes inconvenient. +Thus, it's possible to tell 'tlmgr' about additional repositories you +want to use. The basic command is 'tlmgr repository add'. The rest of +this section explains further. When using multiple repositories, one of them has to be set as the main repository, which distributes most of the installed packages. When @@ -4013,15 +4335,17 @@ File: tlbuild.info, Node: tlmgr GUI FOR TLMGR, Next: tlmgr MACHINE-READABLE OU B.11 GUI FOR TLMGR ================== -The graphical user interface for 'tlmgr' needs Perl/Tk to be installed. -For Windows the necessary modules are shipped within TeX Live, for all -other (i.e., Unix-based) systems Perl/Tk (as well as Perl of course) has -to be installed. <http://tug.org/texlive/distro.html#perltk> has a list -of invocations for some distros. +The graphical user interface for 'tlmgr' requires Perl/Tk +<http://search.cpan.org/search?query=perl%2Ftk>. For Windows the +necessary modules are shipped within TeX Live, for all other (i.e., +Unix-based) systems Perl/Tk (as well as Perl of course) has to be +installed outside of TL. <http://tug.org/texlive/distro.html#perltk> has +a list of invocations for some distros. - When started with 'tlmgr gui' the graphical user interface will be -shown. The main window contains a menu bar, the main display, and a -status area where messages normally shown on the console are displayed. + The GUI is started with the invocation 'tlmgr gui'; assuming Tk is +loadable, the graphical user interface will be shown. The main window +contains a menu bar, the main display, and a status area where messages +normally shown on the console are displayed. Within the main display there are three main parts: the 'Display configuration' area, the list of packages, and the action buttons. @@ -4037,6 +4361,7 @@ information about what is going on. * tlmgr Main display:: * tlmgr Menu bar:: +* tlmgr GUI options:: File: tlbuild.info, Node: tlmgr Main display, Next: tlmgr Menu bar, Up: tlmgr GUI FOR TLMGR @@ -4075,9 +4400,8 @@ Category Match Select packages matching for a specific pattern. By default, this - uses the same algorithm as 'tlmgr search', i.e., searches - everything: descriptions, taxonomies, and/or filenames. You can - also select any subset for searching. + searches both descriptions and filenames. You can also select a + subset for searching. Selection @@ -4176,7 +4500,7 @@ Backup General>). -File: tlbuild.info, Node: tlmgr Menu bar, Prev: tlmgr Main display, Up: tlmgr GUI FOR TLMGR +File: tlbuild.info, Node: tlmgr Menu bar, Next: tlmgr GUI options, Prev: tlmgr Main display, Up: tlmgr GUI FOR TLMGR B.11.2 Menu bar --------------- @@ -4229,6 +4553,42 @@ The following entries can be found in the menu bar: Provides access to the TeX Live manual (also on the web at <http://tug.org/texlive/doc.html>) and the usual "About" box. + +File: tlbuild.info, Node: tlmgr GUI options, Prev: tlmgr Menu bar, Up: tlmgr GUI FOR TLMGR + +B.11.3 GUI options +------------------ + +Some generic Perl/Tk options can be specified with 'tlmgr gui' to +control the display: + +'-background' _color_ + + Set background color. + +'-font "' _fontname_ _fontsize_ '"' + + Set font, e.g., 'tlmgr gui -font "helvetica 18"'. The argument to + '-font' must be quoted, i.e., passed as a single string. + +'-foreground' _color_ + + Set foreground color. + +'-geometry' _geomspec_ + + Set the X geometry, e.g., 'tlmgr gui -geometry 1024x512-0+0' + creates the window of (approximately) the given size in the + upper-right corner of the display. + +'-xrm' _xresource_ + + Pass the arbitrary X resource string _xresource_. + + A few other obscure options are recognized but not mentioned here. +See the Perl/Tk documentation (<http://search.cpan.org/perldoc?Tk>) for +the complete list, and any X documentation for general information. + File: tlbuild.info, Node: tlmgr MACHINE-READABLE OUTPUT, Next: tlmgr AUTHORS AND COPYRIGHT, Prev: tlmgr GUI FOR TLMGR, Up: tlmgr @@ -4394,6 +4754,8 @@ This script and its documentation were written for the TeX Live distribution (<http://tug.org/texlive>) and both are licensed under the GNU General Public License Version 2 or later. + $Id: tlmgr.pl 44422 2017-05-19 15:07:25Z karl $ + File: tlbuild.info, Node: Index, Prev: tlmgr, Up: Top @@ -5011,240 +5373,268 @@ Node: Coding conventions74510 Node: Declarations and definitions75237 Node: Const77419 Node: install-tl79282 -Node: install-tl NAME79623 -Node: install-tl SYNOPSIS79781 -Node: install-tl DESCRIPTION79989 -Node: install-tl REFERENCES80990 -Node: install-tl OPTIONS81506 -Ref: install-tl *-gui* [[=]_module_]81860 -Ref: install-tl text82069 -Ref: install-tl wizard82192 -Ref: install-tl perltk82346 -Ref: install-tl *-no-gui*82780 -Ref: install-tl *-lang* _llcode_82861 -Ref: install-tl *-repository* _url|path_83548 -Ref: install-tl *-select-repository*85359 -Ref: install-tl *-all-options*85795 -Ref: install-tl *-custom-bin* _path_86102 -Ref: install-tl *-debug-translation*86757 -Ref: install-tl *-force-platform* _platform_86976 -Ref: install-tl *-help*, *--help*, *-?*87220 -Ref: install-tl *-in-place*87613 -Ref: install-tl *-logfile* _file_88140 -Ref: install-tl *-no-cls*88491 -Ref: install-tl *-non-admin*88622 -Ref: install-tl *--persistent-downloads*88727 -Ref: install-tl *--no-persistent-downloads*88755 -Ref: install-tl *-portable*89363 -Ref: install-tl *-print-platform*89502 -Ref: install-tl *-profile* _profile_89695 -Ref: install-tl *-q*91189 -Ref: install-tl *-scheme* _scheme_91251 -Ref: install-tl *-v*91725 -Ref: install-tl *-version*, *--version*91886 -Node: install-tl ENVIRONMENT VARIABLES92017 -Ref: install-tl TEXLIVE_INSTALL_ENV_NOCHECK92406 -Ref: install-tl TEXLIVE_INSTALL_NO_CONTEXT_CACHE92608 -Ref: install-tl TEXLIVE_INSTALL_PREFIX92714 -Ref: install-tl TEXLIVE_INSTALL_TEXMFCONFIG92745 -Ref: install-tl TEXLIVE_INSTALL_TEXMFHOME92774 -Ref: install-tl TEXLIVE_INSTALL_TEXMFLOCAL92804 -Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSCONFIG92838 -Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSVAR92869 -Ref: install-tl TEXLIVE_INSTALL_TEXMFVAR92897 -Ref: install-tl NOPERLDOC92952 -Node: install-tl AUTHORS AND COPYRIGHT93016 -Node: tlmgr93374 -Node: tlmgr NAME93811 -Node: tlmgr SYNOPSIS93936 -Node: tlmgr DESCRIPTION94126 -Node: tlmgr EXAMPLES95222 -Ref: tlmgr tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet95513 -Ref: tlmgr tlmgr update --list95694 -Ref: tlmgr tlmgr update --all95787 -Ref: tlmgr tlmgr info _pkg_95943 -Node: tlmgr OPTIONS96149 -Ref: tlmgr *--repository* _url|path_96669 -Ref: tlmgr *--gui* [_action_]97394 -Ref: tlmgr *--gui-lang* _llcode_97801 -Ref: tlmgr *--debug-translation*98484 -Ref: tlmgr *--machine-readable*98687 -Ref: tlmgr *--no-execute-actions*98955 -Ref: tlmgr *--package-logfile* _file_99148 -Ref: tlmgr *--pause*99403 -Ref: tlmgr *--persistent-downloads*99558 -Ref: tlmgr *--no-persistent-downloads*99586 -Ref: tlmgr *--pin-file*100080 -Ref: tlmgr *--usermode*100298 -Ref: tlmgr *--usertree* _dir_100418 -Node: tlmgr ACTIONS100968 -Node: tlmgr help102200 -Node: tlmgr version102676 -Node: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]...102994 -Ref: tlmgr *--backupdir* _directory_104088 -Ref: tlmgr *--all*104285 -Ref: tlmgr *--clean*[=_N_]104507 -Ref: tlmgr *--dry-run*104804 -Node: tlmgr candidates _pkg_104924 -Ref: tlmgr *candidates _pkg_* 1105211 -Node: tlmgr check [_option_]... [files|depends|executes|runfiles|all]105355 -Ref: tlmgr *files*105798 -Ref: tlmgr *depends*105933 -Ref: tlmgr *executes*106275 -Ref: tlmgr *runfiles*106393 -Ref: tlmgr *--use-svn*106505 -Node: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]106622 -Node: tlmgr dump-tlpdb [--local|--remote]108694 -Ref: tlmgr *--local*109204 -Ref: tlmgr *--remote*109243 -Node: tlmgr generate [_option_]... _what_109665 -Ref: tlmgr *generate language*109906 -Ref: tlmgr *generate language.dat*109931 -Ref: tlmgr *generate language.def*109956 -Ref: tlmgr *generate language.dat.lua*109985 -Ref: tlmgr *generate fmtutil*110005 -Ref: tlmgr *--dest* _output_file_112242 -Ref: tlmgr *--localcfg* _local_conf_file_112818 -Ref: tlmgr *--rebuild-sys*112941 -Node: tlmgr gui113802 -Node: tlmgr info [_option_...] [collections|schemes|_pkg_...]114046 -Ref: tlmgr *--list*115251 -Ref: tlmgr *--only-installed*115530 -Ref: tlmgr *--taxonomy*115745 -Ref: tlmgr *--keyword*115757 -Ref: tlmgr *--functionality*115775 -Ref: tlmgr *--characterization*115796 -Node: tlmgr init-usertree116009 -Node: tlmgr install [_option_]... _pkg_...116435 -Ref: tlmgr *--file*116799 -Ref: tlmgr *--reinstall*117025 -Ref: tlmgr *--no-depends*117405 -Ref: tlmgr *--no-depends-at-all*117564 -Ref: tlmgr *--dry-run* 1117962 -Ref: tlmgr *--force*118080 -Node: tlmgr option118286 -Ref: tlmgr *option [show]*118459 -Ref: tlmgr *option showall*118477 -Ref: tlmgr *option _key_ [_value_]*118503 -Node: tlmgr paper122351 -Ref: tlmgr *paper [a4|letter]*122536 -Ref: tlmgr *[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*122610 -Node: tlmgr path [--w32mode=user|admin] [add|remove]123637 -Node: tlmgr pinning125120 -Ref: tlmgr pinning show125427 -Ref: tlmgr pinning add _repo_ _pkgglob_...125500 -Ref: tlmgr pinning remove _repo_ _pkgglob_...125619 -Ref: tlmgr pinning remove _repo_ --all125772 -Node: tlmgr platform list|add|remove _platform_...125826 -Node: tlmgr platform set _platform_126074 -Node: tlmgr platform set auto126302 -Ref: tlmgr *--dry-run* 2127419 -Node: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...127528 -Node: tlmgr print-platform128830 -Node: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]]129302 -Ref: tlmgr *--all* 1130198 -Ref: tlmgr *--backupdir* _directory_ 1130392 -Ref: tlmgr *--dry-run* 3130548 -Ref: tlmgr *--force* 1130665 -Node: tlmgr remove [_option_]... _pkg_...130693 -Ref: tlmgr *--no-depends* 1131216 -Ref: tlmgr *--no-depends-at-all* 1131278 -Ref: tlmgr *--force* 2131334 -Ref: tlmgr *--dry-run* 4131806 -Node: tlmgr repository131913 -Ref: tlmgr *repository list*132121 -Ref: tlmgr *repository list _path|tag_*132151 -Ref: tlmgr *repository add _path_ [_tag_]*132184 -Ref: tlmgr *repository remove _path|tag_*132216 -Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*132270 -Node: tlmgr search [_option_...] _what_133354 -Node: tlmgr search [_option_...] --file _what_133865 -Node: tlmgr search [_option_...] --taxonomy _what_134116 -Node: tlmgr search [_option_...] --keyword _what_134427 -Node: tlmgr search [_option_...] --functionality _what_134745 -Node: tlmgr search [_option_...] --characterization _what_135083 -Node: tlmgr search [_option_...] --all _what_135423 -Ref: tlmgr *--global*135871 -Ref: tlmgr *--word*135983 -Ref: tlmgr *--list* 1136222 -Ref: tlmgr *--file* 1136568 -Ref: tlmgr *--taxonomy* 1136625 -Ref: tlmgr *--keyword* 1136637 -Ref: tlmgr *--functionality* 1136655 -Ref: tlmgr *--characterization* 1136676 -Ref: tlmgr *--all* 2136831 -Node: tlmgr uninstall136914 -Ref: tlmgr *--force* 3137168 -Node: tlmgr update [_option_]... [_pkg_]...137224 -Ref: tlmgr *--all* 3137595 -Ref: tlmgr *--self*139336 -Ref: tlmgr *--dry-run* 5140100 -Ref: tlmgr *--list* [_pkg_]140277 -Ref: tlmgr *--exclude* _pkg_140966 -Ref: tlmgr *--no-auto-remove* [_pkg_]...141659 -Ref: tlmgr *--no-auto-install* [_pkg_]...142110 -Ref: tlmgr *--reinstall-forcibly-removed*142766 -Ref: tlmgr *--backup* and *--backupdir* _directory_143330 -Ref: tlmgr *--no-depends* 2144511 -Ref: tlmgr *--no-depends-at-all* 2144714 -Ref: tlmgr *--force* 4144770 -Node: tlmgr USER MODE145196 -Node: tlmgr user mode install148007 -Node: tlmgr user mode backup; restore; remove; update148954 -Node: tlmgr user mode generate; option; paper149396 -Node: tlmgr CONFIGURATION FILE FOR TLMGR149772 -Node: tlmgr TAXONOMIES150863 -Ref: tlmgr --keyword 2151489 -Ref: tlmgr --functionality 2151574 -Ref: tlmgr --characterization 2151730 -Ref: tlmgr --taxonomy 2151871 -Node: tlmgr MULTIPLE REPOSITORIES152412 -Node: tlmgr Pinning154133 -Node: tlmgr GUI FOR TLMGR156108 -Node: tlmgr Main display157330 -Node: tlmgr Display configuration area157582 -Ref: tlmgr Status157943 -Ref: tlmgr Category158107 -Ref: tlmgr Match158293 -Ref: tlmgr Selection158553 -Ref: tlmgr Display configuration buttons158757 -Node: tlmgr Package list area158940 -Ref: tlmgr a checkbox159524 -Ref: tlmgr package name159660 -Ref: tlmgr local revision (and version)159759 -Ref: tlmgr remote revision (and version)160134 -Ref: tlmgr short description160431 -Node: tlmgr Main display action buttons160476 -Ref: tlmgr Update all installed160742 -Ref: tlmgr Update161114 -Ref: tlmgr Install161164 -Ref: tlmgr Remove161350 -Ref: tlmgr Backup161528 -Node: tlmgr Menu bar161685 -Ref: tlmgr tlmgr menu161882 -Ref: tlmgr Options menu162190 -Ref: tlmgr Actions menu163273 -Ref: tlmgr Help menu163701 -Node: tlmgr MACHINE-READABLE OUTPUT163834 -Node: tlmgr Machine-readable update and install output164644 -Ref: tlmgr location-url _location_165920 -Ref: tlmgr total-bytes _count_166136 -Ref: tlmgr _pkgname_166546 -Ref: tlmgr _status_166756 -Ref: tlmgr d166834 -Ref: tlmgr f166894 -Ref: tlmgr u167073 -Ref: tlmgr r167119 -Ref: tlmgr a167242 -Ref: tlmgr i167420 -Ref: tlmgr I167539 -Ref: tlmgr _localrev_167641 -Ref: tlmgr _serverrev_167748 -Ref: tlmgr _size_167860 -Ref: tlmgr _runtime_168029 -Ref: tlmgr _esttot_168099 -Node: tlmgr Machine-readable option output168132 -Node: tlmgr AUTHORS AND COPYRIGHT168644 -Node: Index168991 +Node: install-tl NAME79647 +Node: install-tl SYNOPSIS79805 +Node: install-tl DESCRIPTION80063 +Node: install-tl REFERENCES81130 +Node: install-tl OPTIONS81656 +Ref: install-tl *-gui* [[=]_module_]81997 +Ref: install-tl text82207 +Ref: install-tl wizard82330 +Ref: install-tl perltk82484 +Ref: install-tl *-no-gui*82915 +Ref: install-tl *-lang* _llcode_82996 +Ref: install-tl *-repository* _url|path_83683 +Ref: install-tl *-select-repository*85563 +Ref: install-tl *-all-options*85999 +Ref: install-tl *-custom-bin* _path_86254 +Ref: install-tl *-debug-translation*87085 +Ref: install-tl *-force-platform* _platform_87304 +Ref: install-tl *-help*, *--help*, *-?*87548 +Ref: install-tl *-in-place*87955 +Ref: install-tl *-init-from-profile* _profile_file_88500 +Ref: install-tl *-logfile* _file_88720 +Ref: install-tl *-no-cls*89071 +Ref: install-tl *-non-admin*89205 +Ref: install-tl *-persistent-downloads*89310 +Ref: install-tl *-no-persistent-downloads*89338 +Ref: install-tl *-no-verify-downloads*89956 +Ref: install-tl *-portable*90317 +Ref: install-tl *-print-platform*90456 +Ref: install-tl *-profile* _profile_file_90654 +Ref: install-tl *-q*90834 +Ref: install-tl *-scheme* _scheme_90896 +Ref: install-tl *-v*91370 +Ref: install-tl *-version*, *--version*91525 +Node: install-tl PROFILES91656 +Ref: install-tl instopt_adjustpath (default 0 on Unix, 1 on Windows)94306 +Ref: install-tl instopt_adjustrepo (default 1)94382 +Ref: install-tl instopt_letter (default 0)94519 +Ref: install-tl instopt_portable (default 0)94610 +Ref: install-tl instopt_write18_restricted (default 1)94706 +Node: install-tl ENVIRONMENT VARIABLES96025 +Ref: install-tl TEXLIVE_INSTALL_ENV_NOCHECK96416 +Ref: install-tl TEXLIVE_INSTALL_NO_CONTEXT_CACHE96618 +Ref: install-tl TEXLIVE_INSTALL_NO_WELCOME96728 +Ref: install-tl TEXLIVE_INSTALL_PREFIX96849 +Ref: install-tl TEXLIVE_INSTALL_TEXDIR96875 +Ref: install-tl TEXLIVE_INSTALL_TEXMFCONFIG96906 +Ref: install-tl TEXLIVE_INSTALL_TEXMFVAR96934 +Ref: install-tl TEXLIVE_INSTALL_TEXMFHOME96963 +Ref: install-tl TEXLIVE_INSTALL_TEXMFLOCAL96993 +Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSCONFIG97027 +Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSVAR97058 +Ref: install-tl NOPERLDOC97429 +Node: install-tl AUTHORS AND COPYRIGHT97493 +Node: tlmgr97905 +Node: tlmgr NAME98358 +Node: tlmgr SYNOPSIS98490 +Node: tlmgr DESCRIPTION98680 +Node: tlmgr EXAMPLES99776 +Ref: tlmgr tlmgr option repository ctan100027 +Ref: tlmgr tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet100099 +Ref: tlmgr tlmgr update --list100551 +Ref: tlmgr tlmgr update --all100644 +Ref: tlmgr tlmgr info _what_100801 +Node: tlmgr OPTIONS101063 +Ref: tlmgr *--repository* _url|path_101583 +Ref: tlmgr *--gui* [_action_]102308 +Ref: tlmgr *--gui-lang* _llcode_102715 +Ref: tlmgr *--debug-translation*103398 +Ref: tlmgr *--machine-readable*103601 +Ref: tlmgr *--no-execute-actions*103869 +Ref: tlmgr *--package-logfile* _file_104062 +Ref: tlmgr *--pause*104316 +Ref: tlmgr *--persistent-downloads*104471 +Ref: tlmgr *--no-persistent-downloads*104499 +Ref: tlmgr *--pin-file*104993 +Ref: tlmgr *--require-verification*105223 +Ref: tlmgr *--no-require-verification*105251 +Ref: tlmgr *--usermode*105487 +Ref: tlmgr *--usertree* _dir_105607 +Ref: tlmgr *--verify-downloads*105722 +Ref: tlmgr *--no-verify-downloads*105746 +Node: tlmgr ACTIONS106499 +Node: tlmgr help107883 +Node: tlmgr version108359 +Node: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]...108677 +Ref: tlmgr *--backupdir* _directory_109771 +Ref: tlmgr *--all*109968 +Ref: tlmgr *--clean*[=_N_]110190 +Ref: tlmgr *--dry-run*110487 +Node: tlmgr candidates _pkg_110607 +Ref: tlmgr *candidates _pkg_* 1110894 +Node: tlmgr check [_option_]... [files|depends|executes|runfiles|all]111038 +Ref: tlmgr *files*111481 +Ref: tlmgr *depends*111616 +Ref: tlmgr *executes*111958 +Ref: tlmgr *runfiles*112076 +Ref: tlmgr *--use-svn*112197 +Node: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]112314 +Node: tlmgr conf auxtrees [--conffile _file_] [show|add|delete] [_value_]112752 +Node: tlmgr dump-tlpdb [--local|--remote]115320 +Ref: tlmgr *--local*115817 +Ref: tlmgr *--remote*115856 +Node: tlmgr generate [_option_]... _what_116278 +Ref: tlmgr *generate language*116519 +Ref: tlmgr *generate language.dat*116544 +Ref: tlmgr *generate language.def*116569 +Ref: tlmgr *generate language.dat.lua*116598 +Ref: tlmgr *--dest* _output_file_118924 +Ref: tlmgr *--localcfg* _local_conf_file_119500 +Ref: tlmgr *--rebuild-sys*119623 +Node: tlmgr gui120438 +Node: tlmgr info [_option_...] [collections|schemes|_pkg_...]120684 +Ref: tlmgr *--list*122377 +Ref: tlmgr *--only-installed*122656 +Node: tlmgr init-usertree122809 +Node: tlmgr install [_option_]... _pkg_...123235 +Ref: tlmgr *--dry-run* 1123776 +Ref: tlmgr *--file*123893 +Ref: tlmgr *--force*124115 +Ref: tlmgr *--no-depends*124335 +Ref: tlmgr *--no-depends-at-all*124494 +Ref: tlmgr *--reinstall*124894 +Ref: tlmgr *--with-doc*125272 +Ref: tlmgr *--with-src*125285 +Node: tlmgr key list|add _file_|remove _keyid_125807 +Node: tlmgr option126602 +Ref: tlmgr *option [show]*126779 +Ref: tlmgr *option showall*126797 +Ref: tlmgr *option _key_ [_value_]*126823 +Node: tlmgr paper130863 +Ref: tlmgr *paper [a4|letter]*131048 +Ref: tlmgr *[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*131122 +Node: tlmgr path [--w32mode=user|admin] [add|remove]132149 +Node: tlmgr pinning133632 +Ref: tlmgr pinning show133939 +Ref: tlmgr pinning add _repo_ _pkgglob_...134012 +Ref: tlmgr pinning remove _repo_ _pkgglob_...134131 +Ref: tlmgr pinning remove _repo_ --all134284 +Node: tlmgr platform list|add|remove _platform_...134338 +Node: tlmgr platform set _platform_134586 +Node: tlmgr platform set auto134814 +Ref: tlmgr *--dry-run* 2135931 +Node: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...136040 +Node: tlmgr print-platform137342 +Node: tlmgr remove [_option_]... _pkg_...137792 +Ref: tlmgr *--backup*138274 +Ref: tlmgr *--backupdir* _directory_ 1138300 +Ref: tlmgr *--no-depends* 1139393 +Ref: tlmgr *--no-depends-at-all* 1139455 +Ref: tlmgr *--force* 1139511 +Ref: tlmgr *--dry-run* 3139983 +Node: tlmgr repository140090 +Ref: tlmgr *repository list*140322 +Ref: tlmgr *repository list _path|tag_*140352 +Ref: tlmgr *repository add _path_ [_tag_]*140385 +Ref: tlmgr *repository remove _path|tag_*140417 +Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*140471 +Node: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]]141555 +Ref: tlmgr *--all* 1142494 +Ref: tlmgr *--backupdir* _directory_ 2142688 +Ref: tlmgr *--dry-run* 4142844 +Ref: tlmgr *--force* 2142961 +Node: tlmgr search [_option_...] _what_142989 +Node: tlmgr search [_option_...] --file _what_143329 +Node: tlmgr search [_option_...] --all _what_143575 +Ref: tlmgr *--file* 1144016 +Ref: tlmgr *--all* 2144068 +Ref: tlmgr *--global*144147 +Ref: tlmgr *--word*144259 +Node: tlmgr shell144549 +Ref: tlmgr protocol145310 +Ref: tlmgr help 1145374 +Ref: tlmgr version 1145427 +Ref: tlmgr quit, end, bye, byebye, EOF145495 +Ref: tlmgr restart145516 +Ref: tlmgr load [local|remote]145639 +Ref: tlmgr save145709 +Ref: tlmgr get [_var_] =item set [_var_ [_val_]]145832 +Node: tlmgr uninstall146324 +Ref: tlmgr *--force* 3146556 +Node: tlmgr update [_option_]... [_pkg_]...146612 +Ref: tlmgr *--all* 3146983 +Ref: tlmgr *--self*148724 +Ref: tlmgr *--dry-run* 5149488 +Ref: tlmgr *--list* [_pkg_]149665 +Ref: tlmgr *--exclude* _pkg_150354 +Ref: tlmgr *--no-auto-remove* [_pkg_]...151047 +Ref: tlmgr *--no-auto-install* [_pkg_]...151498 +Ref: tlmgr *--reinstall-forcibly-removed*152154 +Ref: tlmgr *--backup* 1152689 +Ref: tlmgr *--backupdir* _directory_ 3152715 +Ref: tlmgr *--no-depends* 2153912 +Ref: tlmgr *--no-depends-at-all* 2154115 +Ref: tlmgr *--force* 4154171 +Node: tlmgr CONFIGURATION FILE FOR TLMGR154986 +Ref: tlmgr auto-remove, value 0 or 1 (default 1), same as command-line option.155999 +Ref: tlmgr gui-expertmode, value 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings.156136 +Ref: tlmgr gui-lang _llcode_, with a language code value as with the command-line option.156218 +Ref: tlmgr no-checksums, value 0 or 1 (default 0, see below).156272 +Ref: tlmgr persistent-downloads, value 0 or 1 (default 1), same as command-line option.156352 +Ref: tlmgr require-verification, value 0 or 1 (default 0), same as command-line option.156432 +Ref: tlmgr verify-downloads, value 0 or 1 (default 1), same as command-line option.156508 +Ref: tlmgr allowed-actions _action1_ [,_action_,...] The value is a comma-separated list of tlmgr actions which are allowed to be executed when tlmgr is invoked in system mode (that is, without --usermode).156777 +Node: tlmgr CRYPTOGRAPHIC VERIFICATION158101 +Node: tlmgr Configuration of GnuPG invocation159774 +Node: tlmgr USER MODE160412 +Node: tlmgr User mode install163235 +Node: tlmgr User mode backup, restore, remove, update164379 +Node: tlmgr User mode generate, option, paper164821 +Node: tlmgr MULTIPLE REPOSITORIES165197 +Node: tlmgr Pinning166926 +Node: tlmgr GUI FOR TLMGR168901 +Node: tlmgr Main display170241 +Node: tlmgr Display configuration area170493 +Ref: tlmgr Status170854 +Ref: tlmgr Category171018 +Ref: tlmgr Match171204 +Ref: tlmgr Selection171385 +Ref: tlmgr Display configuration buttons171589 +Node: tlmgr Package list area171772 +Ref: tlmgr a checkbox172356 +Ref: tlmgr package name172492 +Ref: tlmgr local revision (and version)172591 +Ref: tlmgr remote revision (and version)172966 +Ref: tlmgr short description173263 +Node: tlmgr Main display action buttons173308 +Ref: tlmgr Update all installed173574 +Ref: tlmgr Update173946 +Ref: tlmgr Install173996 +Ref: tlmgr Remove174182 +Ref: tlmgr Backup174360 +Node: tlmgr Menu bar174517 +Ref: tlmgr tlmgr menu174740 +Ref: tlmgr Options menu175048 +Ref: tlmgr Actions menu176131 +Ref: tlmgr Help menu176559 +Node: tlmgr GUI options176692 +Ref: tlmgr -background _color_176938 +Ref: tlmgr -font " _fontname_ _fontsize_ "177003 +Ref: tlmgr -foreground _color_177161 +Ref: tlmgr -geometry _geomspec_177213 +Ref: tlmgr -xrm _xresource_177405 +Node: tlmgr MACHINE-READABLE OUTPUT177673 +Node: tlmgr Machine-readable update and install output178483 +Ref: tlmgr location-url _location_179759 +Ref: tlmgr total-bytes _count_179975 +Ref: tlmgr _pkgname_180385 +Ref: tlmgr _status_180595 +Ref: tlmgr d180673 +Ref: tlmgr f180733 +Ref: tlmgr u180912 +Ref: tlmgr r180958 +Ref: tlmgr a181081 +Ref: tlmgr i181259 +Ref: tlmgr I181378 +Ref: tlmgr _localrev_181480 +Ref: tlmgr _serverrev_181587 +Ref: tlmgr _size_181699 +Ref: tlmgr _runtime_181868 +Ref: tlmgr _esttot_181938 +Node: tlmgr Machine-readable option output181971 +Node: tlmgr AUTHORS AND COPYRIGHT182483 +Node: Index182882 End Tag Table diff --git a/source/libs/README b/source/libs/README index 92c747d35603030fb75b9d92b974db2ef0933fcf..8aaaf7f103c52a595eb81fb5cdb9faeec5a00db1 100644 --- a/source/libs/README +++ b/source/libs/README @@ -1,4 +1,4 @@ -$Id: README 43564 2017-03-21 03:36:55Z kakuto $ +$Id: README 44006 2017-04-24 04:08:31Z kakuto $ Public domain. Originally created by Karl Berry, 2005. Libraries we compile for TeX Live. @@ -24,7 +24,7 @@ gmp 6.1.2 - checked 16dec16 graphite2 1.3.9 - checked 13nov16 http://sourceforge.net/projects/silgraphite/files/graphite2/ -harfbuzz 1.4.5 - checked 11mar17 +harfbuzz 1.4.6 - checked 24apr17 http://www.freedesktop.org/software/harfbuzz/release/ icu 58.2 - checked 13mar17 diff --git a/source/texk/README b/source/texk/README index e99fec0efe8d50beb82c6a8ea086385ec0c74f4f..3a0857c970e8266e9dae446a53edbcb481374778 100644 --- a/source/texk/README +++ b/source/texk/README @@ -1,4 +1,4 @@ -$Id: README 43576 2017-03-22 22:18:48Z karl $ +$Id: README 43927 2017-04-19 22:27:13Z karl $ Copyright 2006-2017 TeX Users Group. You may freely use, modify and/or distribute this file. @@ -61,7 +61,7 @@ dvipsk - maintained here, by us dvisvgm 2.1.3 - checked 21feb17 http://dvisvgm.bplaced.net/Downloads -gregorio 4.2.0 - checked 25sep16 +gregorio 5.0.1 - checked 16apr17 https://github.com/gregorio-project/gregorio/releases/ gsftopk - from Paul Vojta's xdvi? @@ -108,9 +108,9 @@ web2c - maintained here, by us - core web2c, plain tex, etc. aleph - maintained here ctie - CTAN cweb - knuth, ftp://ftp.cs.stanford.edu/pub/cweb/ - eptex - https://osdn.jp/projects/eptex/ + eptex - https://osdn.jp/projects/eptex,https://texwiki.texjp.org/?e-pTeX etex - maintained here - euptex - https://texwiki.texjp.org/?e-pTeX + euptex - https://texwiki.texjp.org/?upTeX%2CupLaTeX mflua[jit] - https://foundry.supelec.fr/projects/mflua/ mplibdir - http://tug.org/metapost luatex - http://luatex.org diff --git a/source/texk/kpathsea/ChangeLog b/source/texk/kpathsea/ChangeLog index 724bc342f54cd04fd56c7552a58637d3b9d9b50a..38df80eef04d9d8f67373d5994311d5a9ce6d8c0 100644 --- a/source/texk/kpathsea/ChangeLog +++ b/source/texk/kpathsea/ChangeLog @@ -1,3 +1,32 @@ +2017-05-03 Karl Berry <karl@tug.org> + + * texmf.cnf (TEXMFAUXTREES): new variable (default value empty + string via empty braces), for tlmgr conf auxtrees. + (TEXMF): include $TEXMFAUXTREES, but don't assume it is nonempty. + +2017-04-22 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + * win32lib.c, mingw32.c: Update texlive_gs_init() (w32 only). + +2017-04-21 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + * win32lib.c, mingw32.c: Update texlive_gs_init() (w32 only). + +2017-04-14 Karl Berry <karl@tug.org> + + * texmf.cnf (shell_escape_commands): add texosquery-jre8. + +2017-04-13 Karl Berry <karl@tug.org> + + * texmf.cnf (TEXMF, TEXMFDBS): move TEXMFLOCAL to before TEXMFSYS*, + so, e.g., config.ps in TEXMFLOCAL overrides TEXMFSYSCONFIG. + Report from Michael Shell: + http://tug.org/pipermail/tex-live/2016-July/039062.html + +2017-04-05 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + * texmf.cnf: mendex requires the variable INDEXDICTIONARY. + 2017-03-27 Karl Berry <karl@freefriends.org> * Makefile.am (AM_TESTS_ENVIRONMENT): use instead of TESTS_ENVIRONMENT. diff --git a/source/texk/kpathsea/NEWS b/source/texk/kpathsea/NEWS index 22c314903e7fb79e2ff8aef0f625932f175886c3..45b572c00bf225302b6d874076613a162f816907 100644 --- a/source/texk/kpathsea/NEWS +++ b/source/texk/kpathsea/NEWS @@ -1,6 +1,6 @@ This file records noteworthy changes. (Public domain.) -6.2.3 (for TeX Live 2017) +6.2.3 (for TeX Live 2017, 19 May 2017) * .OTF treated like .otf. * texmf.cnf: mpost removed from default shell_escape_commands. * texmf.cnf: TEXINPUTS.luajitlatex added. diff --git a/source/texk/kpathsea/mingw32.c b/source/texk/kpathsea/mingw32.c index a126ba4cfdd8e6f671781356577ca7e372484261..2eaf763aa317daa2ee4522220fd518f96f964e70 100644 --- a/source/texk/kpathsea/mingw32.c +++ b/source/texk/kpathsea/mingw32.c @@ -410,19 +410,33 @@ void texlive_gs_init(void) char *nptr, *path; char tlgsbindir[512]; char tlgslibdir[512]; + char resourcedir[512]; nptr = kpse_var_value("TEXLIVE_WINDOWS_EXTERNAL_GS"); - if (nptr == NULL || !strcmp(nptr, "0") || !strcmp(nptr, "n") || !strcmp(nptr, "f")) { + if (nptr == NULL || *nptr == '0' || *nptr == 'n' || *nptr == 'f') { if (nptr) free (nptr); nptr = kpse_var_value("SELFAUTOPARENT"); if (nptr) { strcpy(tlgsbindir, nptr); strcat(tlgsbindir,"/tlpkg/tlgs"); + strcpy(resourcedir, tlgsbindir); + strcat(resourcedir, "/Resource"); if(is_dir(tlgsbindir)) { strcpy(tlgslibdir, tlgsbindir); strcat(tlgslibdir, "/lib;"); - strcat(tlgslibdir, tlgsbindir); - strcat(tlgslibdir, "/fonts"); + if(is_dir(resourcedir)) { + strcat(tlgslibdir, tlgsbindir); + strcat(tlgslibdir, "/fonts;"); + strcat(tlgslibdir, tlgsbindir); + strcat(tlgslibdir, "/Resource/Init;"); + strcat(tlgslibdir, tlgsbindir); + strcat(tlgslibdir, "/Resource;"); + strcat(tlgslibdir, tlgsbindir); + strcat(tlgslibdir, "/kanji"); + } else { + strcat(tlgslibdir, tlgsbindir); + strcat(tlgslibdir, "/fonts"); + } strcat(tlgsbindir, "/bin;"); free(nptr); for(nptr = tlgsbindir; *nptr; nptr++) { diff --git a/source/texk/kpathsea/texmf.cnf b/source/texk/kpathsea/texmf.cnf index 8d3f4938e9ecc2bac43126a9f227ed415a227617..a7ff623a8cabb97e8e97563b4bd7218fe5d2f71b 100644 --- a/source/texk/kpathsea/texmf.cnf +++ b/source/texk/kpathsea/texmf.cnf @@ -84,17 +84,26 @@ TEXMFVAR = ~/.texlive2017/texmf-var % TEXMFCONFIG, where texconfig/updmap/fmtutil store configuration data. TEXMFCONFIG = ~/.texlive2017/texmf-config +% This is the value manipulated by tlmgr's auxtrees subcommand in the +% root texmf.cnf. Kpathsea warns about a literally empty string for a +% value, hence the empty braces. +TEXMFAUXTREES = {} + % List all the texmf trees. For an explanation of what they are, see the % TeX Live manual. % % For texconfig to work properly, TEXMFCONFIG and TEXMFVAR should be named -% explicitly and before all other trees. +% explicitly and before other trees. % % TEXMFLOCAL precedes TEXMFDIST because locally-installed versions % should take precedence over distribution files -- although it is % generally a source of confusion to have different versions of a % package installed, whatever the trees, so try to avoid it. -TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFDIST} +% +% The odd-looking $TEXMFAUXTREES$TEXMF... construct is so that if no auxtree is +% ever defined (the 99% common case), no extra elements will be added to +% the search paths. tlmgr takes care to end any value with a trailing comma. +TEXMF = {$TEXMFAUXTREES$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFLOCAL,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFDIST} % Where to look for ls-R files. There need not be an ls-R in the % directories in this path, but if there is one, Kpathsea will use it. @@ -102,7 +111,7 @@ TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$T % does not create ls-R files in the non-!! elements -- because if an % ls-R is present, it will be used, and the disk will not be searched. % This is arguably a bug in kpathsea. -TEXMFDBS = {!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFDIST} +TEXMFDBS = {!!$TEXMFLOCAL,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFDIST} % The system trees. These are the trees that are shared by all users. % If a tree appears in this list, the mktex* scripts will use @@ -360,6 +369,10 @@ TEXCONFIG = $TEXMF/dvips// % Makeindex style (.ist) files. INDEXSTYLE = .;$TEXMF/makeindex// +% mendex dictionary files. Used internally by mendex and upmendex. +% It is not necessary to introduce a new format in Kpathsea. +INDEXDICTIONARY = .;$TEXMF/makeindex// + % Font encoding files (.enc). ENCFONTS = .;$TEXMF/fonts/enc// @@ -570,6 +583,7 @@ gregorio,\ kpsewhich,\ makeindex,\ repstopdf,\ +texosquery-jre8,\ % we'd like to allow: % dvips - but external commands can be executed, need at least -R1. diff --git a/source/texk/kpathsea/win32/ChangeLog b/source/texk/kpathsea/win32/ChangeLog index 5b8013f4543f9c1a860fa27db12cc7cd97aa692d..e164530fff9409a6115707c116c5a55c8ba3e00e 100644 --- a/source/texk/kpathsea/win32/ChangeLog +++ b/source/texk/kpathsea/win32/ChangeLog @@ -1,3 +1,7 @@ +2017-06-04 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + * mktexfmt.c: Adapt to the new fmtutil.pl in TeX Live. + 2016-04-06 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * All *.c, *.h files: Copyright year 2016. diff --git a/source/texk/kpathsea/win32/mktexfmt.c b/source/texk/kpathsea/win32/mktexfmt.c index ac400b54ab62fcc4867320f1bc4df53211f1d567..04a5c4acc5aac877b55a0231e91f4f68c854e632 100644 --- a/source/texk/kpathsea/win32/mktexfmt.c +++ b/source/texk/kpathsea/win32/mktexfmt.c @@ -1,6 +1,6 @@ /* mktexfmt.c - Copyright 2000, 2016 Akira Kakuto. + Copyright 2000, 2017 Akira Kakuto. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -21,7 +21,7 @@ */ #include <kpathsea/kpathsea.h> -#define VERSION "0.1" +#define VERSION "0.2" int main(int ac, char **av) { @@ -34,17 +34,28 @@ int main(int ac, char **av) char texbindir[256]; char fullbin[256]; + int is_w32tex; + kpse_set_program_name(av[0], NULL); + p = kpse_var_value("jtex_filetype"); + + if (p) { + is_w32tex = 1; + free(p); + } else { + is_w32tex = 0; + } + p = kpse_program_name; if(ac != 2) { fprintf(stderr,"%s : Usage %s formatname\n", p, p); - fprintf(stderr,"formatname : (foo.fmt, foo.nfmt, foo.mem, foo.base)\n"); + fprintf(stderr,"formatname : (foo.fmt, foo.base, foo.mem)\n"); return 1; } if(!strncmp(av[1], "-h", 2) || !strncmp(av[1], "--h", 3)) { fprintf(stderr,"%s : Usage %s formatname\n", p, p); - fprintf(stderr,"formatname : (foo.fmt, foo.nfmt, foo.mem, foo.base)\n"); + fprintf(stderr,"formatname : (foo.fmt, foo.base, foo.mem)\n"); return 0; } if(!strncmp(av[1], "-v", 2) || !strncmp(av[1], "--v", 3)) { @@ -77,8 +88,7 @@ int main(int ac, char **av) return 1; } - if(stricmp(p, ".fmt") && stricmp(p, ".nfmt") && - stricmp(p, ".base") && stricmp(p, ".mem")) { + if(stricmp(p, ".fmt") && stricmp(p, ".base") && stricmp(p, ".mem")) { fprintf(stderr, "%s : unknown format type.\n", av[1]); return 1; } @@ -101,10 +111,15 @@ int main(int ac, char **av) /* COMMAND */ strcpy(fullbin, texbindir); - strcat(fullbin, "fmtutil.exe"); - fprintf(stderr, "Running the command %s\n", fullbin); - _spawnlp(_P_WAIT, fullbin, "fmtutil", "--byfmt", av[1], NULL); - + if (is_w32tex) { + strcat(fullbin, "fmtutil.exe"); + fprintf(stderr, "Running the command %s\n", fullbin); + _spawnlp(_P_WAIT, fullbin, "fmtutil", "--byfmt", av[1], NULL); + } else { + strcat(fullbin, "fmtutil-sys.exe"); + fprintf(stderr, "Running the command %s\n", fullbin); + _spawnlp(_P_WAIT, fullbin, "fmtutil-sys", "--byfmt", av[1], NULL); + } /* END COMMAND */ /* return to original stdout and stdin */ diff --git a/source/texk/kpathsea/win32lib.c b/source/texk/kpathsea/win32lib.c index 9b4a615c6e2e7b359d858a22180269ea0ebfa6a3..35d57463650db683c0ab377f798446fb8f085b3c 100644 --- a/source/texk/kpathsea/win32lib.c +++ b/source/texk/kpathsea/win32lib.c @@ -134,19 +134,33 @@ void texlive_gs_init(void) char *nptr, *path; char tlgsbindir[512]; char tlgslibdir[512]; + char resourcedir[512]; nptr = kpse_var_value("TEXLIVE_WINDOWS_EXTERNAL_GS"); - if (nptr == NULL || !strcmp(nptr, "0") || !strcmp(nptr, "n") || !strcmp(nptr, "f")) { + if (nptr == NULL || *nptr == '0' || *nptr == 'n' || *nptr == 'f') { if (nptr) free (nptr); nptr = kpse_var_value("SELFAUTOPARENT"); if (nptr) { strcpy(tlgsbindir, nptr); strcat(tlgsbindir,"/tlpkg/tlgs"); + strcpy(resourcedir, tlgsbindir); + strcat(resourcedir, "/Resource"); if(is_dir(tlgsbindir)) { strcpy(tlgslibdir, tlgsbindir); strcat(tlgslibdir, "/lib;"); - strcat(tlgslibdir, tlgsbindir); - strcat(tlgslibdir, "/fonts"); + if(is_dir(resourcedir)) { + strcat(tlgslibdir, tlgsbindir); + strcat(tlgslibdir, "/fonts;"); + strcat(tlgslibdir, tlgsbindir); + strcat(tlgslibdir, "/Resource/Init;"); + strcat(tlgslibdir, tlgsbindir); + strcat(tlgslibdir, "/Resource;"); + strcat(tlgslibdir, tlgsbindir); + strcat(tlgslibdir, "/kanji"); + } else { + strcat(tlgslibdir, tlgsbindir); + strcat(tlgslibdir, "/fonts"); + } strcat(tlgsbindir, "/bin;"); free(nptr); for(nptr = tlgsbindir; *nptr; nptr++) { diff --git a/source/texk/texlive/linked_scripts/Makefile.am b/source/texk/texlive/linked_scripts/Makefile.am index 09c2f3b6896c58b64944dd0e6c88431717b958ce..efd046a584cce0b617c31c80c5578947d098ccd8 100644 --- a/source/texk/texlive/linked_scripts/Makefile.am +++ b/source/texk/texlive/linked_scripts/Makefile.am @@ -97,7 +97,9 @@ texmf_other_scripts = \ cjk-gs-integrate/cjk-gs-integrate.pl \ context/perl/mptopdf.pl \ convbkmk/convbkmk.rb \ + crossrefware/bbl2bib.pl \ crossrefware/bibdoiadd.pl \ + crossrefware/bibmradd.pl \ crossrefware/bibzbladd.pl \ crossrefware/ltx2crossrefxml.pl \ ctanify/ctanify \ @@ -162,10 +164,10 @@ texmf_other_scripts = \ pfarrei/pfarrei.tlu \ pkfix-helper/pkfix-helper \ pkfix/pkfix.pl \ - pmx/pmx2pdf.lua \ pmxchords/pmxchords.lua \ pst2pdf/pst2pdf.pl \ ptex-fontmaps/kanji-config-updmap-sys.sh \ + ptex-fontmaps/kanji-config-updmap-user.sh \ ptex-fontmaps/kanji-config-updmap.pl \ ptex-fontmaps/kanji-fontmap-creator.pl \ ptex2pdf/ptex2pdf.lua \ @@ -186,10 +188,12 @@ texmf_other_scripts = \ texdoc/texdoc.tlu \ texfot/texfot.pl \ texlive/fmtutil-sys.sh \ + texlive/fmtutil-user.sh \ texlive/fmtutil.pl \ texlive/rungs.tlu \ texlive/tlmgr.pl \ texlive/updmap-sys.sh \ + texlive/updmap-user.sh \ texlive/updmap.pl \ texliveonfly/texliveonfly.py \ texloganalyser/texloganalyser \ diff --git a/source/texk/texlive/linked_scripts/Makefile.in b/source/texk/texlive/linked_scripts/Makefile.in index ef72eadf000afeed6db6c1876b0e3728f1dfcfe4..16c0285ed7c9f8de07601bed7063e94037521dfa 100644 --- a/source/texk/texlive/linked_scripts/Makefile.in +++ b/source/texk/texlive/linked_scripts/Makefile.in @@ -313,7 +313,9 @@ texmf_other_scripts = \ cjk-gs-integrate/cjk-gs-integrate.pl \ context/perl/mptopdf.pl \ convbkmk/convbkmk.rb \ + crossrefware/bbl2bib.pl \ crossrefware/bibdoiadd.pl \ + crossrefware/bibmradd.pl \ crossrefware/bibzbladd.pl \ crossrefware/ltx2crossrefxml.pl \ ctanify/ctanify \ @@ -378,10 +380,10 @@ texmf_other_scripts = \ pfarrei/pfarrei.tlu \ pkfix-helper/pkfix-helper \ pkfix/pkfix.pl \ - pmx/pmx2pdf.lua \ pmxchords/pmxchords.lua \ pst2pdf/pst2pdf.pl \ ptex-fontmaps/kanji-config-updmap-sys.sh \ + ptex-fontmaps/kanji-config-updmap-user.sh \ ptex-fontmaps/kanji-config-updmap.pl \ ptex-fontmaps/kanji-fontmap-creator.pl \ ptex2pdf/ptex2pdf.lua \ @@ -402,10 +404,12 @@ texmf_other_scripts = \ texdoc/texdoc.tlu \ texfot/texfot.pl \ texlive/fmtutil-sys.sh \ + texlive/fmtutil-user.sh \ texlive/fmtutil.pl \ texlive/rungs.tlu \ texlive/tlmgr.pl \ texlive/updmap-sys.sh \ + texlive/updmap-user.sh \ texlive/updmap.pl \ texliveonfly/texliveonfly.py \ texloganalyser/texloganalyser \ diff --git a/source/texk/texlive/tl_scripts/ChangeLog b/source/texk/texlive/tl_scripts/ChangeLog index ae0ef904002ce42f6cb5ca3965cb82dcd47bd418..0334ba7567f858f0b47b718a361f623f71950096 100644 --- a/source/texk/texlive/tl_scripts/ChangeLog +++ b/source/texk/texlive/tl_scripts/ChangeLog @@ -1,3 +1,16 @@ +2017-04-24 Paul Vojta <vojta@math.berkeley.edu> + + * texconfig.sh: xdvi paper size updates (also in TLPaper.pm). + Also, no more dvipdfm "config" file. + +2017-04-16 Karl Berry <karl@tug.org> + + * texconfig.sh: remove references to dvipdfm, since it is no + longer separate from dvipdfmx. + * tcfmgr.map (config): likewise. + (pdftexconfig.tex): now in tex/generic/tex-ini-files. + From Paul Vojta. + 2017-03-28 Karl Berry <karl@tug.org> * Makefile.am (xupdmap.1,xfmtutil.1): also make /tmp/*.html. @@ -850,3 +863,5 @@ Sat Dec 18 14:19:43 CET 1999 te * added manpages for epstopdf and dvi2fax (contributed by "James R. Van Zandt" <jrv@vanzandt.mv.com>) + +(This file public domain.) diff --git a/source/texk/texlive/tl_scripts/tcfmgr.map b/source/texk/texlive/tl_scripts/tcfmgr.map index a5c6f35cb3d31c531c89175620f7431d54a22a18..9fc9d4cee16d629263ca06716bb6b9789a9d9247 100644 --- a/source/texk/texlive/tl_scripts/tcfmgr.map +++ b/source/texk/texlive/tl_scripts/tcfmgr.map @@ -1,9 +1,8 @@ # file rel dir search path progname dvipdfmx.cfg dvipdfmx other text files dvipdfmx -config dvipdfm/config other text files dvipdfm config.ps dvips/config dvips config - modes.mf metafont/misc .mf - -pdftexconfig.tex tex/generic/config .tex - +pdftexconfig.tex tex/generic/tex-ini-files .tex - fmtutil.cnf web2c web2c files - mktex.cnf web2c web2c files - updmap.cfg web2c web2c files - diff --git a/source/texk/texlive/tl_scripts/texconfig.sh b/source/texk/texlive/tl_scripts/texconfig.sh index b4e6da28c2ae46910c84cc9ad57d8ce1c28a8ec7..6abf91a1cd0a323fb2fd369b2752c54ba5d6be5a 100755 --- a/source/texk/texlive/tl_scripts/texconfig.sh +++ b/source/texk/texlive/tl_scripts/texconfig.sh @@ -1,5 +1,5 @@ #!/bin/sh -# $Id: texconfig.sh 34586 2014-07-13 00:06:11Z karl $ +# $Id: texconfig.sh 44000 2017-04-23 23:47:26Z karl $ # texconfig version 3.0 # Originally written by Thomas Esser. Public domain. # Now maintained as part of TeX Live; correspondence to tex-live@tug.org. @@ -28,7 +28,7 @@ PATH="$mydir:$PATH"; export PATH progname=texconfig # the version string -version='$Id: texconfig.sh 34586 2014-07-13 00:06:11Z karl $' +version='$Id: texconfig.sh 44000 2017-04-23 23:47:26Z karl $' envVars=" AFMFONTS BIBINPUTS BSTINPUTS CMAPFONTS CWEBINPUTS ENCFONTS GFFONTS @@ -559,7 +559,6 @@ the TeX installation. Usage: $progname conf (show configuration information) $progname dvipdfmx paper PAPER (dvipdfmx paper size) - $progname dvipdfm paper PAPER (dvipdfm paper size) $progname dvips [OPTION...] (dvips options) $progname faq (show teTeX faq) $progname findprog PROG... (show locations of PROGs, a la which) @@ -580,7 +579,6 @@ Usage: $progname conf (show configuration information) Get more help with: $progname dvipdfmx - $progname dvipdfm $progname dvips $progname font $progname hyphen @@ -603,13 +601,13 @@ TeX Live home page: <http://tug.org/texlive/> echo echo '==================== binaries found by searching $PATH ===================' echo "PATH=$PATH" - echoLocateBinary kpsewhich updmap fmtutil texconfig tex pdftex mktexpk dvips dvipdfm + echoLocateBinary kpsewhich updmap fmtutil texconfig tex pdftex mktexpk dvips dvipdfmx echo echo '=========================== active config files ==========================' - echoLocateCfgfile texmf.cnf updmap.cfg fmtutil.cnf config.ps mktex.cnf XDvi pdftexconfig.tex config | sort -k 2 + echoLocateCfgfile texmf.cnf updmap.cfg fmtutil.cnf config.ps mktex.cnf XDvi pdftexconfig.tex | sort -k 2 echo echo '============================= font map files =============================' - for m in psfonts.map pdftex.map ps2pk.map dvipdfm.map; do + for m in psfonts.map pdftex.map ps2pk.map; do echo "$m: `kpsewhich $m`" done echo @@ -621,39 +619,6 @@ TeX Live home page: <http://tug.org/texlive/> echoShowVariable $envVars ;; - # texconfig dvipdfm - dvipdfm) - help="Usage: $progname dvipdfm paper PAPER - -Valid PAPER settings: - letter legal ledger tabloid a4 a3" - case $2 in - # texconfig dvipdfm paper - paper-list) - for p in letter legal ledger tabloid a4 a3; do echo $p; done - ;; - paper) - case $3 in - letter|legal|ledger|tabloid|a4|a3) - fmgrConfigReplace config '^p' "p $3";; - "") echo "$help" >&2; rc=1;; - *) - echo "$progname: unknown PAPER \`$3' given as argument for \`$progname dvipdfm paper'" >&2 - echo "$progname: try \`$progname dvipdfm paper' for help" >&2 - rc=1 ;; - esac ;; - # texconfig dvipdfm "" - "") - echo "$help" >&2; rc=1 ;; - # texconfig dvipdfm <unknown> - *) - echo "$progname: unknown option \`$2' given as argument for \`$progname dvipdfm'" >&2 - echo "$progname: try \`$progname dvipdfm' for help" >&2 - rc=1 - ;; - esac - ;; - # texconfig dvipdfmx dvipdfmx) help="Usage: $progname dvipdfmx paper PAPER @@ -1218,12 +1183,9 @@ Valid MODE settings:" Valid PAPER settings: letter a4" - p=$2; pXdvi=$2; pDvips=$2 + p=$2; pDvips=$2 case $2 in - letter) - pXdvi=us;; - a4) - pXdvi=a4;; + letter|a4) ;; "") echo "$help" >&2; rc=1; return;; *) echo "$progname: unknown PAPER \`$2' given as argument for \`$progname paper'" >&2 @@ -1234,14 +1196,11 @@ Valid PAPER settings: if checkForBinary dvips >/dev/null && tcfmgr --cmd find --file config.ps >/dev/null 2>&1; then tcBatch dvips paper $pDvips fi - if checkForBinary dvipdfm >/dev/null && tcfmgr --cmd find --file config >/dev/null 2>&1; then - tcBatch dvipdfm paper $p - fi if checkForBinary dvipdfmx >/dev/null && tcfmgr --cmd find --file dvipdfmx.cfg >/dev/null 2>&1; then tcBatch dvipdfmx paper $p fi if checkForBinary xdvi >/dev/null && tcfmgr --cmd find --file XDvi >/dev/null 2>&1; then - tcBatch xdvi paper $pXdvi + tcBatch xdvi paper $p fi if checkForBinary pdftex >/dev/null && tcfmgr --cmd find --file pdftexconfig.tex >/dev/null 2>&1; then tcBatch pdftex paper $p @@ -1331,65 +1290,94 @@ Valid PAPER settings: # handle "xdvi paper PAPER" xdvi) tcBatchXdviPapers='us "8.5x11" +letter "8.5x11" +ledger "17x11" +tabloid "11x17" usr "11x8.5" legal "8.5x14" +legalr "14x8.5" foolscap "13.5x17.0" -a1 "59.4x84.0cm" +foolscapr "17.0x13.5" +a0 "84.1x118.9cm" +a1 "59.4x84.1cm" a2 "42.0x59.4cm" a3 "29.7x42.0cm" a4 "21.0x29.7cm" -a5 "14.85x21.0cm" -a6 "10.5x14.85cm" -a7 "7.42x10.5cm" -a1r "84.0x59.4cm" +a5 "14.8x21.0cm" +a6 "10.5x14.8cm" +a7 "7.4x10.5cm" +a8 "5.2x7.4cm" +a9 "3.7x5.2cm" +a10 "2.6x3.7cm" +a0r "118.9x84.1cm" +a1r "84.1x59.4cm" a2r "59.4x42.0cm" a3r "42.0x29.7cm" a4r "29.7x21.0cm" -a5r "21.0x14.85cm" -a6r "14.85x10.5cm" -a7r "10.5x7.42cm" -b1 "70.6x100.0cm" -b2 "50.0x70.6cm" +a5r "21.0x14.8cm" +a6r "14.8x10.5cm" +a7r "10.5x7.4cm" +a8r "7.4x5.2cm" +a9r "5.2x3.7cm" +a10r "3.7x2.6cm" +b0 "100.0x141.4cm" +b1 "70.7x100.0cm" +b2 "50.0x70.7cm" b3 "35.3x50.0cm" b4 "25.0x35.3cm" b5 "17.6x25.0cm" -b6 "13.5x17.6cm" -b7 "8.8x13.5cm" -b1r "100.0x70.6cm" -b2r "70.6x50.0cm" +b6 "12.5x17.6cm" +b7 "8.8x12.5cm" +b8 "6.2x8.8cm" +b9 "4.4x6.2cm" +b10 "3.1x4.4cm" +b0r "141.4x100.0cm" +b1r "100.0x70.7cm" +b2r "70.7x50.0cm" b3r "50.0x35.3cm" b4r "35.3x25.0cm" b5r "25.0x17.6cm" -b6r "17.6x13.5cm" -b7r "13.5x8.8cm" -c1 "64.8x91.6cm" +b6r "17.6x12.5cm" +b7r "12.5x8.8cm" +b8r "8.8x6.2cm" +b9r "6.2x4.4cm" +b10r "4.4x3.1cm" +c0 "91.7x129.7cm" +c1 "64.8x91.7cm" c2 "45.8x64.8cm" c3 "32.4x45.8cm" c4 "22.9x32.4cm" c5 "16.2x22.9cm" -c6 "11.46x16.2cm" -c7 "8.1x11.46cm" -c1r "91.6x64.8cm" +c6 "11.4x16.2cm" +c7 "8.1x11.4cm" +c8 "5.7x8.1cm" +c9 "4.0x5.7cm" +c10 "2.8x4.0cm" +c0r "129.7x91.7cm" +c1r "91.7x64.8cm" c2r "64.8x45.8cm" c3r "45.8x32.4cm" c4r "32.4x22.9cm" c5r "22.9x16.2cm" -c6r "16.2x11.46cm" -c7r "11.46x8.1cm"' +c6r "16.2x11.4cm" +c7r "11.4x8.1cm" +c8r "8.1x5.7cm" +c9r "5.7x4.0cm" +c10r "4.0x2.8cm"' help="Usage: $progname xdvi paper PAPER Valid PAPER settings: - a1 a1r a2 a2r a3 a3r a4 a4r a5 a5r a6 a6r a7 a7r - b1 b1r b2 b2r b3 b3r b4 b4r b5 b5r b6 b6r b7 b7r - c1 c1r c2 c2r c3 c3r c4 c4r c5 c5r c6 c6r c7 c7r - foolscap legal us usr" + a0 a0r a1 a1r a2 a2r a3 a3r a4 a4r a5 a5r a6 a6r a7 a7r a8 a8r a9 a9r a10 a10r + b0 b0r b1 b1r b2 b2r b3 b3r b4 b4r b5 b5r b6 b6r b7 b7r b8 b8r b9 b9r b10 b10r + c0 c0r c1 c1r c2 c2r c3 c3r c4 c4r c5 c5r c6 c6r c7 c7r c8 c8r c9 c9r c10 c10r + us letter ledger tabloid usr legal legalr foolscap foolscapr" case $2 in paper-list) echo "$tcBatchXdviPapers" ;; paper) case $3 in - a1|a1r|a2|a2r|a3|a3r|a4|a4r|a5|a5r|a6|a6r|a7|a7r|b1|b1r|b2|b2r|b3|b3r|b4|b4r|b5|b5r|b6|b6r|b7|b7r|c1|c1r|c2|c2r|c3|c3r|c4|c4r|c5|c5r|c6|c6r|c7|c7r|foolscap|legal|us|usr) + [abc][0-9]|[abc]10|[abc][0-9]r|[abc]10r|us|letter|ledger|tabloid|usr|legal|legalr|foolscap|foolscapr) fmgrConfigReplace XDvi paper: "*paper: $3" ;; "") echo "$help" >&2; rc=1;; diff --git a/source/texk/texlive/w32_wrapper/runscript.tlu b/source/texk/texlive/w32_wrapper/runscript.tlu index bd67db241c7bce5f64669c77bc14460d72444978..77d64f4804c7f71a8509a086d236fbd1938f1368 100644 --- a/source/texk/texlive/w32_wrapper/runscript.tlu +++ b/source/texk/texlive/w32_wrapper/runscript.tlu @@ -1,7 +1,7 @@ -local svnrevision = string.match("$Revision: 40700 $", "%d+") or "0" -local svndate = string.match("$Date: 2016-04-23 14:35:18 +0200 (Sat, 23 Apr 2016) $", "[-%d]+") or "2009-12-04" +local svnrevision = string.match("$Revision: 44235 $", "%d+") or "0" +local svndate = string.match("$Date: 2017-05-07 11:20:39 +0200 (Sun, 07 May 2017) $", "[-%d]+") or "2009-12-04" local bannerstr = "runscript wrapper utility (rev. " .. svnrevision .. ", " .. svndate .. ")\n" .. "usage: runscript script-name [arguments]\n" .. @@ -255,6 +255,13 @@ local docstr = [[ - fix spurious arguments for updmap and fmtutil 2016/04/22 - Warning if external perl is requested but missing + 2017/04/22 (exactly one year later ;-) + - Cater for fmtutil-user and updmap-user => -user arg + 2017/04/24 + - GS_LIB setting for tlgs. + 2017/05/06 + - introduce sys_user_progs, make checks for updmap/fmtutil + use sys_user_progs instead, add kanji-config-updmap ]] -- HELPER SUBROUTINES -- @@ -308,6 +315,16 @@ local function is_tex4ht_command(progname) return false end +-- checks whether an item is in an array +local function contains (tab, val) + for index, value in ipairs(tab) do + if value == val then + return true + end + end + return false +end + -- locates texmfscript to execute local function find_texmfscript(progname, ext_list) ext_list = ext_list or '\0' @@ -437,9 +454,14 @@ end -- special case of sys programs progname, substcount = string.gsub(progname, '%-sys$', '') local sysprog = (substcount > 0) -- true if there was a -sys suffix removed +-- special case of user programs +-- we do not guard against programs foobar-user-sys ... we don't ship them +progname, substcount = string.gsub(progname, '%-user$', '') +local userprog = (substcount > 0) -- true if there was a -user suffix removed -- prevent recursive calls to this script assert(progname ~= 'runscript', "oops! wrapping the wrapper?") + -- kpse and environment set-up -- init kpathsea @@ -447,11 +469,16 @@ local k = -1 while arg[k-1] do k = k - 1 end -- in case of a call: luatex --luaonly ... local lua_binary = arg[k] kpse.set_program_name(lua_binary, progname) + -- various dir-vars local TEXDIR = kpse.var_value('SELFAUTOPARENT') local TEXMFDIST = kpse.var_value('TEXMFDIST') local BINDIR = kpse.var_value('SELFAUTOLOC') local PATH = os.getenv('PATH') or '' + +-- list of programs that have -sys and -user variants +local sys_user_progs = { 'updmap', 'fmtutil', 'kanji-config-updmap' } + -- restricted programs local shell_escape_commands = string.lower(kpse.var_value('shell_escape_commands') or '') local is_restricted_progname = string.find( ','..shell_escape_commands..',', @@ -530,8 +557,12 @@ if GSEXE then end else -- use built in gs - os.setenv('GS_LIB', TEXDIR..'/tlpkg/tlgs/lib;'..TEXDIR..'/tlpkg/tlgs/fonts;' - ..os.getenv('WINDIR')..'/Fonts;'..TEXMFDIST..'/fonts') + os.setenv('GS_LIB', TEXDIR..'/tlpkg/tlgs/lib;' + ..TEXDIR..'/tlpkg/tlgs/fonts;' + ..TEXDIR..'/tlpkg/tlgs/Resource/Init;' + ..TEXDIR..'/tlpkg/tlgs/Resource;' + ..TEXDIR..'/tlpkg/tlgs/kanji;' + ..os.getenv('WINDIR')..'/Fonts;'..TEXMFDIST..'/fonts') os.setenv('GS_DLL', TEXDIR..'/tlpkg/tlgs/bin/gsdll32.dll') GSEXE = TEXDIR..'/tlpkg/tlgs/bin/gswin32c.exe' GSNAME = 'gswin32c.exe' @@ -542,7 +573,7 @@ PATH = prepend_path(PATH, GSDIR, BINDIR) os.setenv('PATH', PATH); -- sys stuff -if (sysprog and not (progname == 'updmap') and not (progname == 'fmtutil')) then +if (sysprog and not contains(sys_user_progs, progname)) then os.setenv('TEXMFVAR', kpse.var_value('TEXMFSYSVAR')) os.setenv('TEXMFCONFIG', kpse.var_value('TEXMFSYSCONFIG')) end @@ -586,13 +617,11 @@ if is_tex4ht_command(progname) then progname = 'mk4ht' elseif progname == 'a2ping' then table.insert(extension_map['.pl'], '-x') -elseif progname == 'updmap' then - if sysprog then - argline = ' --sys ' .. argline - end -elseif progname == 'fmtutil' then +elseif contains(sys_user_progs, progname) then if sysprog then argline = ' --sys ' .. argline + elseif userprog then + argline = ' --user ' .. argline end elseif progname == 'asy' then os.setenv('ASYMPTOTE_GS', GSEXE) diff --git a/source/texk/web2c/ChangeLog b/source/texk/web2c/ChangeLog index 189b79c0c5add218f06c1b198120bfb3bd890c6a..76a2d8023787444d2de90bebe38aef87a682fb30 100644 --- a/source/texk/web2c/ChangeLog +++ b/source/texk/web2c/ChangeLog @@ -85,7 +85,7 @@ * Makefile.am, am/bootstrap.am, am/cweb.am, am/texmf.am, am/web.am, libmd5/am/md5.am: Dependencies for 'make check'. -2015-07-09 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2015-07-09 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.h: Add \pdfmdfivesum to XeTeX. diff --git a/source/texk/web2c/Makefile.in b/source/texk/web2c/Makefile.in index ebff2e7ca40d6f2c613fc6c6a534d3a3c7cad6ad..9be427126fca761ca5e218eac1f11541bbc26c95 100644 --- a/source/texk/web2c/Makefile.in +++ b/source/texk/web2c/Makefile.in @@ -2167,42 +2167,18 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \ triptrap/tripman.tex triptrap/tripos.tex triptrap/writeo \ triptrap/writeo.2 $(mflua_web_srcs) $(mflua_ch_src) \ mfluadir/mflua.defines mfluadir/ChangeLog $(mflua_tests) \ - mfluadir/mfluatrap/begin_program.lua \ - mfluadir/mfluatrap/do_add_to.lua \ - mfluadir/mfluatrap/end_program.lua \ - mfluadir/mfluatrap/fill_envelope.lua \ - mfluadir/mfluatrap/fill_spec.lua \ - mfluadir/mfluatrap/final_cleanup.lua \ - mfluadir/mfluatrap/main_control.lua \ - mfluadir/mfluatrap/make_ellipse.lua \ - mfluadir/mfluatrap/mfluaini.lua \ - mfluadir/mfluatrap/offset_prep.lua \ - mfluadir/mfluatrap/print_edges.lua \ - mfluadir/mfluatrap/print_path.lua \ - mfluadir/mfluatrap/scan_direction.lua \ - mfluadir/mfluatrap/skew_line_edges.lua \ - mfluadir/mfluatrap/start_of_mf.lua \ + mfluadir/mfluatrap/mflua.lua \ + mfluadir/mfluatrap/mflua_svg_backend.lua \ + mfluadir/mfluatrap/mflua_ttx_backend.lua \ mfluadir/mfluatrap/texmf.cnf \ mfluadir/mfluatrap/mfluatrap.diffs $(mfluajit_web_srcs) \ $(mfluajit_ch_src) mfluajitdir/mfluajit.defines \ mfluajitdir/ChangeLog $(mfluajit_tests) \ - mfluadir/mfluatrap/begin_program.lua \ - mfluadir/mfluatrap/do_add_to.lua \ - mfluadir/mfluatrap/end_program.lua \ - mfluadir/mfluatrap/fill_envelope.lua \ - mfluadir/mfluatrap/fill_spec.lua \ - mfluadir/mfluatrap/final_cleanup.lua \ - mfluadir/mfluatrap/main_control.lua \ - mfluadir/mfluatrap/make_ellipse.lua \ - mfluadir/mfluatrap/mfluaini.lua \ - mfluadir/mfluatrap/offset_prep.lua \ - mfluadir/mfluatrap/print_edges.lua \ - mfluadir/mfluatrap/print_path.lua \ - mfluadir/mfluatrap/scan_direction.lua \ - mfluadir/mfluatrap/skew_line_edges.lua \ - mfluadir/mfluatrap/start_of_MF.lua \ + mfluadir/mfluatrap/mflua.lua \ + mfluadir/mfluatrap/mflua_svg_backend.lua \ + mfluadir/mfluatrap/mflua_ttx_backend.lua \ mfluadir/mfluatrap/texmf.cnf \ - mfluajitdir/mfluajittrap/mfluajittrap.diffs mplibdir/ChangeLog \ + mfluadir/mfluatrap/mfluatrap.diffs mplibdir/ChangeLog \ $(mpost_web) $(mp_tests) pmpostdir/ChangeLog $(pmpost_web) \ $(pmpost_tests) $(upmpost_tests) pmpostdir/tests/psample.mp \ $(libmplib_web) $(etex_web_srcs) $(etex_ch_srcs) \ @@ -3584,8 +3560,9 @@ xetex_cppflags = $(AM_CPPFLAGS) -I$(srcdir)/xetexdir $(ICU_INCLUDES) \ $(ZLIB_INCLUDES) -I$(srcdir)/libmd5 $(am__append_97) \ $(am__append_98) xetex_ldadd = $(libxetex) $(HARFBUZZ_LIBS) $(GRAPHITE2_LIBS) \ - $(ICU_LIBS) $(TECKIT_LIBS) $(POPPLER_LIBS) $(LIBPNG_LIBS) \ - $(FREETYPE2_LIBS) $(ZLIB_LIBS) libmd5.a $(am__append_99) + $(ICU_LIBS) $(ICU_LIBS_EXTRA) $(TECKIT_LIBS) $(POPPLER_LIBS) \ + $(LIBPNG_LIBS) $(FREETYPE2_LIBS) $(ZLIB_LIBS) libmd5.a \ + $(am__append_99) xetex_dependencies = $(proglib) $(KPATHSEA_DEPEND) $(ICU_DEPEND) \ $(TECKIT_DEPEND) $(HARFBUZZ_DEPEND) $(GRAPHITE2_DEPEND) \ $(POPPLER_DEPEND) $(LIBPNG_DEPEND) $(FREETYPE2_DEPEND) \ diff --git a/source/texk/web2c/NEWS b/source/texk/web2c/NEWS index 7120dd85fb9135e0bf85920b7108e6ae0b97b831..b37615dd87a1f1184c5b9be1c395409fdb198bf7 100644 --- a/source/texk/web2c/NEWS +++ b/source/texk/web2c/NEWS @@ -1,6 +1,6 @@ This file records noteworthy changes. (Public domain.) -2017 (for TeX Live 2017) +2017 (for TeX Live 2017, 19 May 2017) 2016 (for TeX Live 2016, 21 May 2016) 2015 (for TeX Live 2015, 21 May 2015) 2014 (for TeX Live 2014, 24 May 2014) diff --git a/source/texk/web2c/lib/ChangeLog b/source/texk/web2c/lib/ChangeLog index 04e933d45a4399a48f552b059c7ff38e81597526..c2d8a540345d1425919287031ca08196d8069a4a 100644 --- a/source/texk/web2c/lib/ChangeLog +++ b/source/texk/web2c/lib/ChangeLog @@ -1,18 +1,18 @@ -2017-03-12 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2017-03-12 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Adopt Jonathan's solution for the Change on 2017-02-01. -2017-02-13 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2017-02-13 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: unsigned long long >= 0. Thanks Luigi. -2017-02-01 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2017-02-01 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Avoid a crash in xelatex for http://tug.org/pipermail/xetex/2017-January/026975.html. It is not a fix but a stopgap. -2017-01-02 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2017-01-02 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * printversion.c: 2016 ---> 2017. @@ -31,7 +31,7 @@ * TeX Live 2016 release. -2016-05-06 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2016-05-06 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Avoid crash for too large a value of SOURCE_DATE_EPOCH. (w32 only). @@ -41,7 +41,7 @@ * texmfmp.c (init_start_time, get_date_and_time) [onlyTeX]: ignore SOURCE_DATE_EPOCH... envvars for original TeX. -2016-05-05 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2016-05-05 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c (strtoull) [_MSC_VER]: #define as _strtoui64. @@ -54,7 +54,7 @@ SOURCE_DATE_EPOCH value. Requested by Debian, thread starting at http://tug.org/pipermail/tex-k/2016-May/002691.html. -2016-04-14 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2016-04-14 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Fix a bug to show input file name in the case of pipe input. Reported by Enrico Gregorio: @@ -68,19 +68,19 @@ * texmfmp.c (initstarttime): wording of invalid SOURCE_DATE_EPOCH. -2016-01-26 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2016-01-26 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Improve to skip BOM (win32 only). -2016-01-02 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2016-01-02 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * printversion.c: 2015 ---> 2016. -2015-11-15 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2015-11-15 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Show return code of system() if it is not zero. -2015-11-01 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2015-11-01 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Improve restricted shell escape for w32 a little. @@ -92,7 +92,7 @@ * texmfmp.c: Patch from Maria with some minor modification. -2015-07-09 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2015-07-09 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Add \pdfmdfivesum to XeTeX. @@ -106,7 +106,7 @@ Integrate MFLua and MFLuaJIT. * texmfmp.c: Adapted. -2015-03-16 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2015-03-16 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * printversion.c: 2014 ---> 2015. @@ -114,7 +114,7 @@ * texmfmp.c: Avoid MinGW64 warnings (INVALID_SOCKET => -1). -2014-11-03 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2014-11-03 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Indentation. @@ -126,7 +126,7 @@ * texmfmp.c: Apply some code from W32TeX. -2014-08-22 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2014-08-22 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Symplify support of multibyte characters, by updating fsyscp_popen in kpathsea (Windows only). @@ -135,20 +135,20 @@ * texmfmp.c: Avoid several compiler warnings (Windows only). -2014-08-22 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2014-08-22 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Support multibyte characters in pipe (Windows only). -2014-07-23 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2014-07-23 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Short-file-name convention is incompatible with --src-specials (Windows only). -2014-07-21 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2014-07-21 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Use getnullstr() in maketexstring(), also in aleph. -2014-07-19 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2014-07-19 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Use getnullstr() in maketexstring(), as in pdfTeX, in most cases in order to avoid an assertion error. @@ -158,11 +158,11 @@ * texmfmp.c: Replace the deprecated spawnvp() by _spawnvp(), they differ for 64-bit MinGW. -2014-07-04 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2014-07-04 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Remove redundant cpp macros (w32 only). -2014-06-20 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2014-06-20 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Support short-file-name convention (w32 only). @@ -172,7 +172,7 @@ * texmfmp.c (getfiledump): Move definition of this function also used by e-(u)pTeX from ../pdftexdir/utils.c to here. -2014-01-20 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2014-01-20 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * printversion.c: 2013 ---> 2014. @@ -180,7 +180,7 @@ * texmfmp.c: Do not declare dump_name, now done in change files. -2014-01-14 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2014-01-14 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: use fsyscp_system instead of system (Windows only). @@ -203,7 +203,7 @@ getfilemoddate, getfilesize): Move definition of these functions also used by e-(u)pTeX from ../pdftexdir/utils.c to here. -2013-04-09 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2013-04-09 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * printversion.c: 2012 ---> 2013. @@ -219,7 +219,7 @@ * Makefile.am: Avoid use of deprecated INCLUDES. -2012-10-14 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2012-10-14 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Use _IONBF for unbuffered stream. @@ -227,7 +227,7 @@ * texmfmp.c (mk_shellcmdlist): The argument is not constant. -2012-10-10 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2012-10-10 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * texmfmp.c: Modify determination of fullpath for restricted shell escape commands. diff --git a/source/texk/web2c/luatexdir/ChangeLog b/source/texk/web2c/luatexdir/ChangeLog index 441fab87fe457a90a5e2d767fdd03c4f5766a5ef..f9aa304d87910ef2a4f2fe82ca01494cd62eefab 100644 --- a/source/texk/web2c/luatexdir/ChangeLog +++ b/source/texk/web2c/luatexdir/ChangeLog @@ -3,7 +3,6 @@ * luaffi/: First attempt to implement the ffi module in lua compatible with the ffi module of luajit. - 2015-11-01 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * luatex.c: Improve a little (w32 only). @@ -514,11 +513,11 @@ * lua/lepdflib.cc: No need to test for Annot::decRefCnt with poppler 0.18 or better. -2012-11-06 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2012-11-06 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * pdf/pdflistout.w: sync with r4471 (a bug fix by H. Henkel). -2012-10-13 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2012-10-13 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * tex/texfileio.w: input by pipe was impossible. enable it. @@ -526,7 +525,7 @@ * lua/luainit.w (lua_initialize): Free two malloc()ed strings. -2012-10-10 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2012-10-10 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * luatex.c: Modify determination of fullpath for restricted shell escape commands. @@ -552,7 +551,7 @@ * lua/luainit.w (parse_options): Avoid cast const => non-const. -2012-09-13 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2012-09-13 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * lua/luainit.w (parse_options): allow lualatex "\input" "a b" on Windows. @@ -562,7 +561,7 @@ * luatex-api.h: Avoid conflicting extern declaration of environ, declared in <stdlib.h> for WIN32 (from W32TeX). -2012-08-21 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> +2012-08-21 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * tex/texdeffont.w (tex_def_font): Recover the old code, because the new code seems not to work. diff --git a/source/texk/web2c/luatexdir/lua/luainit.w b/source/texk/web2c/luatexdir/lua/luainit.w index 54c34b34feaa602ce04dfde4bb995bc5702a64d2..fa43976b0ac2ae08247976347c905038235efaa7 100644 --- a/source/texk/web2c/luatexdir/lua/luainit.w +++ b/source/texk/web2c/luatexdir/lua/luainit.w @@ -1023,10 +1023,10 @@ void lua_initialize(int ac, char **av) } /* */ init_tex_table(Luas); - if (lua_only) { - if (load_luatex_core_lua(Luas)) - fprintf(stderr, "Error in execution of luatex-core.lua .\n"); - } + if (lua_only) { + if (load_luatex_core_lua(Luas)) + fprintf(stderr, "Error in execution of luatex-core.lua .\n"); + } if (lua_pcall(Luas, 0, 0, 0)) { fprintf(stdout, "%s\n", lua_tostring(Luas, -1)); lua_traceback(Luas); diff --git a/source/texk/web2c/mfluadir/am/mflua.am b/source/texk/web2c/mfluadir/am/mflua.am index 177f85884d2a45609a5deb4dbbb3e55d34fdca5b..37d76d564d9514aa1773ee3f48f2bdef23e4ee9a 100644 --- a/source/texk/web2c/mfluadir/am/mflua.am +++ b/source/texk/web2c/mfluadir/am/mflua.am @@ -131,20 +131,8 @@ mfluatrap-clean: ## Test data ## EXTRA_DIST += \ - mfluadir/mfluatrap/begin_program.lua \ - mfluadir/mfluatrap/do_add_to.lua \ - mfluadir/mfluatrap/end_program.lua \ - mfluadir/mfluatrap/fill_envelope.lua \ - mfluadir/mfluatrap/fill_spec.lua \ - mfluadir/mfluatrap/final_cleanup.lua \ - mfluadir/mfluatrap/main_control.lua \ - mfluadir/mfluatrap/make_ellipse.lua \ - mfluadir/mfluatrap/mfluaini.lua \ - mfluadir/mfluatrap/offset_prep.lua \ - mfluadir/mfluatrap/print_edges.lua \ - mfluadir/mfluatrap/print_path.lua \ - mfluadir/mfluatrap/scan_direction.lua \ - mfluadir/mfluatrap/skew_line_edges.lua \ - mfluadir/mfluatrap/start_of_mf.lua \ + mfluadir/mfluatrap/mflua.lua \ + mfluadir/mfluatrap/mflua_svg_backend.lua \ + mfluadir/mfluatrap/mflua_ttx_backend.lua \ mfluadir/mfluatrap/texmf.cnf \ mfluadir/mfluatrap/mfluatrap.diffs diff --git a/source/texk/web2c/mfluajitdir/am/mfluajit.am b/source/texk/web2c/mfluajitdir/am/mfluajit.am index ef385c893aeb9d235193095dc96ad5128d9ecd2f..0614fea77f0e9c9e59a58ef64c80d08dfc9deb80 100644 --- a/source/texk/web2c/mfluajitdir/am/mfluajit.am +++ b/source/texk/web2c/mfluajitdir/am/mfluajit.am @@ -124,23 +124,12 @@ mfluajittrap.diffs: mfluajit$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT) mfluajittrap-clean: rm -rf mfluajittrapdir + ## Test data ## EXTRA_DIST += \ - mfluadir/mfluatrap/begin_program.lua \ - mfluadir/mfluatrap/do_add_to.lua \ - mfluadir/mfluatrap/end_program.lua \ - mfluadir/mfluatrap/fill_envelope.lua \ - mfluadir/mfluatrap/fill_spec.lua \ - mfluadir/mfluatrap/final_cleanup.lua \ - mfluadir/mfluatrap/main_control.lua \ - mfluadir/mfluatrap/make_ellipse.lua \ - mfluadir/mfluatrap/mfluaini.lua \ - mfluadir/mfluatrap/offset_prep.lua \ - mfluadir/mfluatrap/print_edges.lua \ - mfluadir/mfluatrap/print_path.lua \ - mfluadir/mfluatrap/scan_direction.lua \ - mfluadir/mfluatrap/skew_line_edges.lua \ - mfluadir/mfluatrap/start_of_MF.lua \ - mfluadir/mfluatrap/texmf.cnf \ - mfluajitdir/mfluajittrap/mfluajittrap.diffs + mfluadir/mfluatrap/mflua.lua \ + mfluadir/mfluatrap/mflua_svg_backend.lua \ + mfluadir/mfluatrap/mflua_ttx_backend.lua \ + mfluadir/mfluatrap/texmf.cnf \ + mfluadir/mfluatrap/mfluatrap.diffs diff --git a/source/texk/web2c/synctexdir/ChangeLog b/source/texk/web2c/synctexdir/ChangeLog index d581a7e439ffeac629381097b4c4911dcd9a82c6..bf216d4c8bfbfae96b9bfd421b8ab58c2329f404 100644 --- a/source/texk/web2c/synctexdir/ChangeLog +++ b/source/texk/web2c/synctexdir/ChangeLog @@ -1,3 +1,14 @@ +2017-04-24 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp> + + * synctex-ep-mem.ch0, synctex-p-mem.ch0, + synctex-ep-mem.ch1, synctex-p-mem.ch1: + Adapt to changes in ptexdir/ptex-base.ch (p\TeX -> \pTeX). + +2017-04-22 Jerome Laurens + <jerome.laurens@u-bourgogne.fr> + + * man5/synctex.1, man5/synctex.5, synctex-pdf-rec.ch2, synctex-pdftex.h, synctex-rec.ch0, synctex.c, synctex.defines, synctex.h: add support for \pdfxform + 2016-03-04 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp> * synctex-ep-mem.ch1, synctex-p-mem.ch1: Adapt to changes in diff --git a/source/texk/web2c/synctexdir/synctex-luatex.h b/source/texk/web2c/synctexdir/synctex-luatex.h index f9146581ff49817b12153810d827c41b0cea63f4..6142bcc99d54d40fef5279fd1bcd1c21bd57a8cd 100644 --- a/source/texk/web2c/synctexdir/synctex-luatex.h +++ b/source/texk/web2c/synctexdir/synctex-luatex.h @@ -82,3 +82,6 @@ authorization from the copyright holder. /* New LuaTeX (0.87.0) or later */ #define glue_node 12 #define kern_node 13 + +# define SYNCTEX_PRE_NL "" +# define SYNCTEX_POST_NL "\n" diff --git a/source/texk/web2c/synctexdir/synctex.c b/source/texk/web2c/synctexdir/synctex.c index c01e4480245da6e9a9f4d4c25f8d87ada8437658..66397d164ae6370229810893c04d630f34d99fce 100644 --- a/source/texk/web2c/synctexdir/synctex.c +++ b/source/texk/web2c/synctexdir/synctex.c @@ -1,9 +1,10 @@ /* - Copyright (c) 2008, 2009, 2010, 2011 jerome DOT laurens AT u-bourgogne DOT fr + Copyright (c) 2008-2017 jerome DOT laurens AT u-bourgogne DOT fr This file is part of the SyncTeX package. - Latest Revision: Fri Apr 15 19:10:57 UTC 2011 + Version 1 + Latest Revision: Tue Apr 25 14:46:32 UTC 2017 License: -------- @@ -109,7 +110,7 @@ is producing the expected file named <my file.synctex>, (the '<' and '>' are not part of the name) whereas running the command line pdftex --synctex=-1 "my file.tex" - was producing the unexpected file named <"my file".synctex> where the two '"' chracters were part of the name. + was producing the unexpected file named <"my file".synctex> where the two '"' characters were part of the name. Of course, that was breaking the typesetting mechanism when pdftex was involved. To solve this problem, we prefer to rely on the output_file_name instead of the jobname. In the case when no output_file_name is available, we use jobname and test if the file name @@ -118,7 +119,7 @@ There is some conditional coding. Version 1 - Latest Revision: Wed Jul 1 08:15:44 UTC 2009 + Latest Revision: Sat Apr 22 09:10:30 UTC 2017 */ @@ -338,6 +339,10 @@ static int fsyscp_remove(char *name); # include "synctex.h" +# if !defined(SYNCTEX_SUPPORT_PDF_FORM) +# define SYNCTEX_SUPPORT_PDF_FORM 0 +# endif + # define SYNCTEX_YES (1) # define SYNCTEX_NO (0) # define SYNCTEX_NO_ERROR (0) @@ -394,34 +399,49 @@ static struct { integer curh, curv; /* current point */ integer magnification; /* The magnification as given by \mag */ integer unit; /* The unit, defaults to 1, use 8192 to produce shorter but less accurate info */ - integer total_length; /* The total length of the bytes written since the last check point */ + integer total_length; /* The total length of the bytes written since the last check point */ + integer options; /* unsigned options */ + integer lastv; /* compression trick if + |synctex_options&4|>0. */ + integer form_depth; /* pdf forms are an example of nested sheets */ struct _flags { unsigned int option_read:1; /* Command line option read (in case of problem or at the end) */ + unsigned int content_ready:1; /* Command line option read (in case of problem or at the end) */ unsigned int off:1; /* Definitely turn off synctex, corresponds to cli option -synctex=0 */ unsigned int no_gz:1; /* Whether zlib is used or not */ unsigned int not_void:1; /* Whether it really contains synchronization material */ unsigned int warn:1; /* One shot warning flag */ unsigned int quoted:1; /* Whether the input file name was quoted by tex or not, for example "\"my input file.tex\"", unused by XeTeX */ unsigned int output_p:1; /* Whether the output_directory is used */ - unsigned int reserved:SYNCTEX_BITS_PER_BYTE*sizeof(int)-7; /* Align */ + unsigned int reserved:SYNCTEX_BITS_PER_BYTE*sizeof(int)-8; /* Align */ } flags; } synctex_ctxt = { - NULL, NULL, NULL, NULL, 0, 0, NULL, 0, 0, 0, 0, 0, 0, 0, {0,0,0,0,0,0,0,0}}; + NULL, NULL, NULL, NULL, 0, 0, NULL, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, {0,0,0,0,0,0,0,0,0}}; /* last_v_recorded is initialized to -1. */ # define SYNCTEX_FILE synctex_ctxt.file +# define SYNCTEX_CONTENT_READY (synctex_ctxt.flags.content_ready) # define SYNCTEX_IS_OFF (synctex_ctxt.flags.off) # define SYNCTEX_NO_GZ (synctex_ctxt.flags.no_gz) # define SYNCTEX_NOT_VOID (synctex_ctxt.flags.not_void) # define SYNCTEX_WARNING_DISABLE (synctex_ctxt.flags.warn) # define SYNCTEX_fprintf (*synctex_ctxt.fprintf) -/* Initialize the options, synchronize the variables. - * This is sent by *tex.web before any TeX macro is used. - * */ -void synctexinitcommand(void) -{ +# define SYNCTEX_IS_READY (synctex_ctxt.flags.ready) + +# define SYNCTEX_NO_GZ_AUX_NAME\ + (SYNCTEX_NO_GZ||((synctex_ctxt.options)&2)!=0) +# define SYNCTEX_WITH_FORMS (((synctex_ctxt.options)&4)!=0) +# define SYNCTEX_H_COMPRESS (((synctex_ctxt.options)&8)!=0) + +static inline void _synctex_read_command_line_option(void) { +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: _synctex_read_command_line_option\n"); +# endif /* This is a one shot function, any subsequent call is void */ if (synctex_ctxt.flags.option_read) { +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: skipped\n"); +# endif return; } if (SYNCTEX_NO_OPTION == synctex_options) { @@ -429,20 +449,36 @@ void synctexinitcommand(void) SYNCTEX_VALUE = 0; } else if (synctex_options == 0) { /* -synctex=0 was given: SyncTeX must be definitely disabled, - * any subsequent \synctex=1 will have no effect at all */ + * any subsequent \synctex=N will have no effect at all */ SYNCTEX_IS_OFF = SYNCTEX_YES; SYNCTEX_VALUE = 0; } else { /* the command line options are not ignored */ if (synctex_options < 0) { SYNCTEX_NO_GZ = SYNCTEX_YES; + synctex_ctxt.options = -synctex_options; + } else { + SYNCTEX_NO_GZ = SYNCTEX_NO; + synctex_ctxt.options = synctex_options; } + synctex_options|=1; /* Do it when positive */ /* Initialize the content of the \synctex primitive */ SYNCTEX_VALUE = synctex_options; } synctex_ctxt.flags.option_read = SYNCTEX_YES; return; } +/* Initialize the options, synchronize the variables. + * This is sent by *tex.web before any TeX macro is used. + * */ +void synctexinitcommand(void) +{ +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: synctexinitcommand\n"); +# endif + _synctex_read_command_line_option(); + return; +} /* Free all memory used, close and remove the file if any, * It is sent locally when there is a problem with synctex output. @@ -551,6 +587,7 @@ static int fsyscp_rename(char *s1, char *s2) * plus 1 for the control but the overall benefits are not so clear. * For example foo-i.synctex would contain input synchronization * information for page i alone. + * Options given through \synctex=Number are managed here too. */ static void *synctex_dot_open(void) { @@ -558,7 +595,7 @@ static void *synctex_dot_open(void) # if SYNCTEX_DEBUG printf("\nwarning: Synchronize DEBUG: synctex_dot_open\n"); printf("\nwarning: SYNCTEX_VALUE=%0X\n", SYNCTEX_VALUE); - printf("\nwarning: synctex_options=%0X\n", synctex_options); + printf("\nwarning: synctex_options=%0X\n", synctex_ctxt.options); # endif if (SYNCTEX_IS_OFF || !SYNCTEX_VALUE) { return NULL; /* synchronization is disabled: do nothing */ @@ -566,6 +603,7 @@ static void *synctex_dot_open(void) if (SYNCTEX_FILE) { return SYNCTEX_FILE; /* synchronization is already enabled */ } + _synctex_read_command_line_option(); # if SYNCTEX_DEBUG printf("\nwarning: Synchronize DEBUG: synctex_dot_open 1\n"); # endif @@ -579,12 +617,11 @@ static void *synctex_dot_open(void) if (len>0) { /* jobname was set by the \jobname command on the *TeX side */ char *the_busy_name = xmalloc((size_t) - ( len - + strlen(synctex_suffix) - + strlen(synctex_suffix_gz) - + strlen(synctex_suffix_busy) - + 1 - + (output_directory?strlen(output_directory) + strlen(DIR_SEP_STRING):0))); + ( len + + strlen(synctex_suffix) + + strlen(synctex_suffix_busy) + + 1 + + (output_directory?strlen(output_directory) + strlen(DIR_SEP_STRING):0))); if (!the_busy_name) { SYNCTEX_FREE(tmp); tmp = NULL; @@ -620,10 +657,6 @@ static void *synctex_dot_open(void) tmp = NULL; strcat(the_busy_name, synctex_suffix); /* Initialize SYNCTEX_NO_GZ with the content of \synctex to let the user choose the format. */ - SYNCTEX_NO_GZ = SYNCTEX_VALUE < 0 ? SYNCTEX_YES : SYNCTEX_NO; - if (!SYNCTEX_NO_GZ) { - strcat(the_busy_name, synctex_suffix_gz); - } strcat(the_busy_name, synctex_suffix_busy); if (SYNCTEX_NO_GZ) { SYNCTEX_FILE = fopen(the_busy_name, FOPEN_W_MODE); @@ -680,6 +713,37 @@ static void *synctex_dot_open(void) return SYNCTEX_FILE; } +static inline int synctex_record_content(void); +static inline int synctex_record_settings(void); + +/** + * synctex_record_settings must be called very late, + * only once there is an opportunity to know whether + * in pdf or dvi mode. + */ +static void * synctex_prepare_content(void) +{ +# if SYNCTEX_DEBUG + printf("\nwarning: Synchronize DEBUG: synctex_prepare_content\n"); + printf("\nwarning: SYNCTEX_VALUE=%0X\n", SYNCTEX_VALUE); + printf("\nwarning: synctex_options=%0X\n", synctex_ctxt.options); +# endif + if (SYNCTEX_CONTENT_READY) { + return SYNCTEX_FILE; + } + if ((NULL != synctex_dot_open()) + && (SYNCTEX_NO_ERROR == synctex_record_settings()) + && (SYNCTEX_NO_ERROR == synctex_record_content())) { + SYNCTEX_CONTENT_READY = SYNCTEX_YES; +# if SYNCTEX_DEBUG + printf("\nwarning: DONE"); +# endif + return SYNCTEX_FILE; + } + synctexabort(0); + return NULL; +} + /* Each time TeX opens a file, it sends a synctexstartinput message and enters * this function. Here, a new synchronization tag is created and stored in * the synctex_tag_field of the TeX current input context. Each synchronized @@ -702,12 +766,14 @@ void synctexstartinput(void) { static unsigned int synctex_tag_counter = 0; + _synctex_read_command_line_option(); + SYNCTEX_RETURN_IF_DISABLED; # if SYNCTEX_DEBUG printf("\nwarning: Synchronize DEBUG: synctexstartinput %i", synctex_tag_counter); printf("\nwarning: SYNCTEX_VALUE=%i", SYNCTEX_VALUE); - printf("\nwarning: synctex_options=%0X", synctex_options); + printf("\nwarning: synctex_options=%0X\n", synctex_ctxt.options); # endif if (SYNCTEX_IS_OFF) { @@ -749,7 +815,7 @@ void synctexstartinput(void) return; } if (SYNCTEX_FILE - || (SYNCTEX_NO_ERROR != synctex_dot_open())) { + || (NULL != synctex_dot_open())) { #ifdef W32UPTEXSYNCTEX char *tmpb = SYNCTEX_GET_CURRENT_NAME(); char *tmp = chgto_oem(tmpb); @@ -757,7 +823,10 @@ void synctexstartinput(void) #else char *tmp = SYNCTEX_GET_CURRENT_NAME(); #endif - /* Always record the input, even if SYNCTEX_VALUE is 0 */ + /* Always record the input, even if SYNCTEX_VALUE is 0. + * It may happen when \synctex=0 was given temporarily + * in the source file. + */ synctex_record_input(SYNCTEX_CURRENT_TAG,tmp); SYNCTEX_FREE(tmp); } @@ -798,9 +867,11 @@ void synctexterminate(boolean log_opened) # endif if (log_opened && (tmp = SYNCTEX_GET_LOG_NAME())) { /* In version 1, the jobname was used but it caused problems regarding spaces in file names. */ - the_real_syncname = xmalloc((unsigned) - (strlen(tmp) + strlen(synctex_suffix) + - strlen(synctex_suffix_gz) + 1)); + the_real_syncname = + xmalloc((unsigned)(strlen(tmp) + + strlen(synctex_suffix) + + strlen(synctex_suffix_gz) + + 1)); if (!the_real_syncname) { SYNCTEX_FREE(tmp); synctexabort(0); @@ -822,7 +893,9 @@ void synctexterminate(boolean log_opened) if (!SYNCTEX_NO_GZ) { /* Remove any uncompressed synctex file, from a previous build. */ remove(the_real_syncname); - strcat(the_real_syncname, synctex_suffix_gz); + if (!SYNCTEX_NO_GZ_AUX_NAME) { + strcat(the_real_syncname, synctex_suffix_gz); + } } /* allways remove the synctex output file before renaming it, windows requires it. */ if (0 != remove(the_real_syncname) && errno == EACCES) { @@ -849,17 +922,35 @@ void synctexterminate(boolean log_opened) tmp += strlen(output_directory) + strlen(DIR_SEP_STRING); } # endif +#ifndef SYNCTEX_interaction +# define SYNCTEX_interaction 1 +#endif + if (SYNCTEX_interaction>0) { #ifdef W32UPTEXSYNCTEX { char *stmp = chgto_oem(tmp); - printf((synctex_ctxt.flags.quoted ? "\nSyncTeX written on \"%s\"" : "\nSyncTeX written on %s."), + printf((synctex_ctxt.flags.quoted ? "SyncTeX written on \"%s\"\n" : "\nSyncTeX written on %s.\n"), stmp); free(stmp); } #else - printf((synctex_ctxt.flags.quoted ? "\nSyncTeX written on \"%s\"" : "\nSyncTeX written on %s."), +#ifndef SYNCTEX_PRE_NL +# define SYNCTEX_PRE_NL "\n" +#endif +#ifndef SYNCTEX_POST_NL +# define SYNCTEX_POST_NL "" +#endif + printf((synctex_ctxt.flags.quoted ? + SYNCTEX_PRE_NL + "SyncTeX written on \"%s\"" + SYNCTEX_POST_NL : + SYNCTEX_PRE_NL + "SyncTeX written on %s." + SYNCTEX_POST_NL + ), tmp); #endif + } tmp = NULL; } } else { @@ -878,7 +969,7 @@ void synctexterminate(boolean log_opened) remove(synctex_ctxt.busy_name); } } - if (SYNCTEX_NO_GZ) { + if (SYNCTEX_NO_GZ || SYNCTEX_NO_GZ_AUX_NAME) { /* Remove any compressed synctex file, from a previous build. */ strcat(the_real_syncname, synctex_suffix_gz); remove(the_real_syncname); @@ -889,8 +980,10 @@ void synctexterminate(boolean log_opened) We just try to remove existing synctex output files including the busy one. */ the_real_syncname = xmalloc((size_t) - (len + strlen(synctex_suffix) - + strlen(synctex_suffix_gz) + 1)); + (len + + strlen(synctex_suffix) + + strlen(synctex_suffix_gz) + + 1)); if (!the_real_syncname) { SYNCTEX_FREE(tmp); synctexabort(0); @@ -935,8 +1028,6 @@ void synctexterminate(boolean log_opened) synctexabort(0); } -static inline int synctex_record_content(void); -static inline int synctex_record_settings(void); static inline int synctex_record_sheet(integer sheet); /* Recording the "{..." line. In *tex.web, use synctex_sheet(pdf_output) at @@ -956,8 +1047,7 @@ void synctexsheet(integer mag) } return; } - if (SYNCTEX_FILE - || (SYNCTEX_VALUE && (SYNCTEX_NO_ERROR != synctex_dot_open()))) { + if (NULL != synctex_prepare_content()) { /* First possibility: the .synctex file is already open because SyncTeX was activated on the CLI * or it was activated with the \synctex macro and the first page is already shipped out. * Second possibility: tries to open the .synctex, useful if synchronization was enabled @@ -967,11 +1057,6 @@ void synctexsheet(integer mag) if (mag > 0) { synctex_ctxt.magnification = mag; } - if (SYNCTEX_NO_ERROR != synctex_record_settings() - || SYNCTEX_NO_ERROR != synctex_record_content()) { - synctexabort(0); - return; - } } synctex_record_sheet(SYNCTEX_GET_TOTAL_PAGES()+1); } @@ -981,6 +1066,7 @@ void synctexsheet(integer mag) return; } +static inline int synctex_record_anchor(void); static inline int synctex_record_teehs(integer sheet); /* Recording the "}..." line. In *tex.web, use synctex_teehs at @@ -1002,7 +1088,217 @@ void synctexteehs(void) return; } -static inline void synctex_record_vlist(halfword p); +/* The SYNCTEX_IGNORE macro is used to detect unproperly initialized nodes. See + * details in the implementation of the functions below. */ +# define SYNCTEX_IGNORE(NODE) SYNCTEX_IS_OFF || !SYNCTEX_VALUE || !SYNCTEX_FILE || (synctex_ctxt.form_depth>0 && !SYNCTEX_WITH_FORMS) +#define SYNCTEX_RECORD_LEN_OR_RETURN_ERR do {\ + if (len > 0) {\ + synctex_ctxt.total_length += len;\ + ++synctex_ctxt.count;\ + } else {\ + return -1;\ + } } while(false) +#define SYNCTEX_RECORD_LEN_AND_RETURN_NOERR do {\ + if (len > 0) {\ + synctex_ctxt.total_length += len;\ + ++synctex_ctxt.count;\ + return SYNCTEX_NOERR;\ + } } while(false) + +/* Recording a "}..." or a ">" line */ +static inline int synctex_record_teehs(integer sheet) +{ +# if SYNCTEX_DEBUG > 999 + printf("\nSynchronize DEBUG: synctex_record_teehs\n"); +# endif + if (SYNCTEX_NOERR == synctex_record_anchor()) { + int len = SYNCTEX_fprintf(SYNCTEX_FILE, "}%i\n", sheet); + SYNCTEX_RECORD_LEN_AND_RETURN_NOERR; + } + synctexabort(0); + return -1; +} + +# define SYNCTEX_CTXT_CURH \ +(synctex_ctxt.curh) +# define SYNCTEX_CTXT_CURV \ +(synctex_ctxt.curv) +# define SYNCTEX_SHOULD_COMPRESS_V \ +SYNCTEX_H_COMPRESS && (synctex_ctxt.lastv == SYNCTEX_CTXT_CURV) + +#if SYNCTEX_SUPPORT_PDF_FORM + +static inline int synctex_record_pdfxform(halfword form); + +/* glue code, this message is sent whenever a pdf form will ship out + See pdftex.web: procedure out_form(p: pointer); */ +void synctexpdfxform(halfword p) +{ + SYNCTEX_RETURN_IF_DISABLED; +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: synctexpdfxform\n"); +# endif + if (SYNCTEX_IS_OFF) { + if (SYNCTEX_VALUE && !SYNCTEX_WARNING_DISABLE) { + SYNCTEX_WARNING_DISABLE = SYNCTEX_YES; + printf + ("\nSyncTeX warning: Synchronization was disabled from\nthe command line with -synctex=0\nChanging the value of \\synctex has no effect."); + } + return; + } + if (NULL != synctex_prepare_content()) { + synctex_record_pdfxform(p); + } +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: synctexpdfxform END\n"); +# endif + return; +} + +static inline int synctex_record_mrofxfdp(void); + +/* glue code, this message is sent whenever a pdf form did ship out */ +void synctexmrofxfdp(void) +{ + SYNCTEX_RETURN_IF_DISABLED; +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: synctexmrofxfdp\n"); +# endif + if (SYNCTEX_FILE) { + synctex_record_mrofxfdp(); + } +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: synctexmrofxfdp END\n"); +# endif + return; +} + +static inline int synctex_record_node_pdfrefxform(int formout); + +/* glue code, this message is sent whenever a pdf form ref will ship out + See pdftex.web: procedure out_form(p: pointer); */ +void synctexpdfrefxform(int objnum) +{ + SYNCTEX_RETURN_IF_DISABLED; +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: synctexpdfrefxform\n"); +# endif + if (SYNCTEX_FILE) { + synctex_record_node_pdfrefxform(objnum); + } +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: synctexpdfrefxform END\n"); +# endif + return; +} + +/* Recording a "<..." line */ +static inline int synctex_record_pdfxform(halfword form) +{ + SYNCTEX_RETURN_IF_DISABLED; +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: synctex_record_pdfxform\n"); +# endif + if (SYNCTEX_IGNORE(nothing)) { + return SYNCTEX_NO_ERROR; + } else { + ++synctex_ctxt.form_depth; + if (SYNCTEX_WITH_FORMS) { + int len = SYNCTEX_fprintf(SYNCTEX_FILE, "<%i\n", + SYNCTEX_PDF_CUR_FORM); + SYNCTEX_RECORD_LEN_AND_RETURN_NOERR; + } else { + return SYNCTEX_NO_ERROR; + } + } + synctexabort(0); + return -1; +} + +/* Recording a ">" line */ +static inline int synctex_record_mrofxfdp(void) +{ +# if SYNCTEX_DEBUG > 999 + printf("\nSynchronize DEBUG: synctex_record_mrofxfpd\n"); +# endif + if (SYNCTEX_NOERR == synctex_record_anchor()) { + --synctex_ctxt.form_depth; + if (SYNCTEX_WITH_FORMS) { + int len = SYNCTEX_fprintf(SYNCTEX_FILE, ">\n", + SYNCTEX_PDF_CUR_FORM); + SYNCTEX_RECORD_LEN_AND_RETURN_NOERR; + } else { + return SYNCTEX_NO_ERROR; + } + } + synctexabort(0); + return -1; +} + +/* Recording a "f..." line */ +static inline int synctex_record_node_pdfrefxform(int objnum)//UNUSED form JL +{ + SYNCTEX_RETURN_IF_DISABLED; +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: synctex_record_node_pdfrefxform\n"); +# endif + synctex_ctxt.curh = SYNCTEX_CURH; + synctex_ctxt.curv = SYNCTEX_CURV; + if (SYNCTEX_IGNORE(nothing)) { + return SYNCTEX_NO_ERROR; + } else if (synctex_ctxt.form_depth>0 && !SYNCTEX_WITH_FORMS) { + return SYNCTEX_NO_ERROR; + } else { + int len = 0; + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "f%i:%i,=\n", + objnum, + SYNCTEX_CURH UNIT); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "f%i:%i,%i\n", + objnum, + SYNCTEX_CURH UNIT, + SYNCTEX_CURV UNIT); + synctex_ctxt.lastv = SYNCTEX_CURV; + } + SYNCTEX_RECORD_LEN_AND_RETURN_NOERR; + } + synctexabort(0); + return -1; +} +#else +/* DO NOTHING functions. + Any engine will have these functions, even when not using pdf xforms. + One shoud be able to replace these void implementaions with an alternation in the header file. + */ +void synctexpdfxform(halfword p) +{ + SYNCTEX_RETURN_IF_DISABLED; +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: DO NOTHING synctexpdfxform\n"); +# endif + return; +} +void synctexmrofxfdp(void) +{ + SYNCTEX_RETURN_IF_DISABLED; +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: DO NOTHING synctexmrofxfdp END\n"); +# endif + return; +} +void synctexpdfrefxform(int objnum) +{ + SYNCTEX_RETURN_IF_DISABLED; +# if SYNCTEX_DEBUG + printf("\nSynchronize DEBUG: DO NOTHING synctexpdfrefxform\n"); +# endif + return; +} +#endif +/*#if SYNCTEX_SUPPORT_PDF_FORM*/ + +static inline void synctex_record_node_vlist(halfword p); /* When an hlist ships out, it can contain many different kern/glue nodes with * exactly the same sync tag and line. To reduce the size of the .synctex @@ -1012,16 +1308,12 @@ static inline void synctex_record_vlist(halfword p); * consecutive nodes, as far as possible. This tricky part uses a "recorder", * which is the address of the routine that knows how to write the * synchronization info to the .synctex file. It also uses criteria to detect - * a change in the context, this is the macro SYNCTEX_???_CONTEXT_DID_CHANGE. The - * SYNCTEX_IGNORE macro is used to detect unproperly initialized nodes. See - * details in the implementation of the functions below. */ -# define SYNCTEX_IGNORE(NODE) SYNCTEX_IS_OFF || !SYNCTEX_VALUE || !SYNCTEX_FILE - + * a change in the context, this is the macro SYNCTEX_???_CONTEXT_DID_CHANGE.*/ /* This message is sent when a vlist will be shipped out, more precisely at * the beginning of the vlist_out procedure in *TeX.web. It will be balanced * by a synctex_tsilv, sent at the end of the vlist_out procedure. p is the - * address of the vlist We assume that p is really a vlist node! */ + * address of the vlist. We assume that p is really a vlist node! */ void synctexvlist(halfword this_box) { SYNCTEX_RETURN_IF_DISABLED; @@ -1037,10 +1329,10 @@ void synctexvlist(halfword this_box) synctex_ctxt.line = SYNCTEX_LINE_MODEL(this_box,box); synctex_ctxt.curh = SYNCTEX_CURH; synctex_ctxt.curv = SYNCTEX_CURV; - synctex_record_vlist(this_box); + synctex_record_node_vlist(this_box); } -static inline void synctex_record_tsilv(halfword p); +static inline void synctex_record_node_tsilv(halfword p); /* Recording a "f" line ending a vbox: this message is sent whenever a vlist * has been shipped out. It is used to close the vlist nesting level. It is @@ -1062,10 +1354,10 @@ void synctextsilv(halfword this_box) synctex_ctxt.curh = SYNCTEX_CURH; synctex_ctxt.curv = SYNCTEX_CURV; synctex_ctxt.recorder = NULL; - synctex_record_tsilv(this_box); + synctex_record_node_tsilv(this_box); } -static inline void synctex_record_void_vlist(halfword p); +static inline void synctex_record_node_void_vlist(halfword p); /* This message is sent when a void vlist will be shipped out. * There is no need to balance a void vlist. */ @@ -1084,7 +1376,7 @@ void synctexvoidvlist(halfword p, halfword this_box __attribute__ ((unused))) synctex_ctxt.curh = SYNCTEX_CURH; synctex_ctxt.curv = SYNCTEX_CURV; synctex_ctxt.recorder = NULL; /* reset */ - synctex_record_void_vlist(p); + synctex_record_node_void_vlist(p); } static inline void synctex_record_hlist(halfword p); @@ -1111,7 +1403,7 @@ void synctexhlist(halfword this_box) synctex_record_hlist(this_box); } -static inline void synctex_record_tsilh(halfword p); +static inline void synctex_record_node_tsilh(halfword p); /* Recording a ")" line ending an hbox this message is sent whenever an hlist * has been shipped out it is used to close the hlist nesting level. It is @@ -1133,10 +1425,10 @@ void synctextsilh(halfword this_box) synctex_ctxt.curh = SYNCTEX_CURH; synctex_ctxt.curv = SYNCTEX_CURV; synctex_ctxt.recorder = NULL; /* reset */ - synctex_record_tsilh(this_box); + synctex_record_node_tsilh(this_box); } -static inline void synctex_record_void_hlist(halfword p); +static inline void synctex_record_node_void_hlist(halfword p); /* This message is sent when a void hlist will be shipped out. * There is no need to balance a void hlist. */ @@ -1160,11 +1452,12 @@ void synctexvoidhlist(halfword p, halfword this_box __attribute__ ((unused))) synctex_ctxt.curh = SYNCTEX_CURH; synctex_ctxt.curv = SYNCTEX_CURV; synctex_ctxt.recorder = NULL; /* reset */ - synctex_record_void_hlist(p); + synctex_record_node_void_hlist(p); } /* With LuaTeX we have to consider other node sizes than medium ones */ # define SYNCTEX_IGNORE_NODE(NODE,TYPE) SYNCTEX_IS_OFF || !SYNCTEX_VALUE \ +|| (synctex_ctxt.form_depth>0 && !SYNCTEX_WITH_FORMS) \ || (0 >= SYNCTEX_TAG_MODEL(NODE,TYPE)) \ || (0 >= SYNCTEX_LINE_MODEL(NODE,TYPE)) /* This macro will detect a change in the synchronization context. As long as @@ -1175,7 +1468,7 @@ void synctexvoidhlist(halfword p, halfword this_box __attribute__ ((unused))) || (SYNCTEX_TAG_MODEL(NODE,TYPE) != synctex_ctxt.tag)\ || (SYNCTEX_LINE_MODEL(NODE,TYPE) != synctex_ctxt.line)) -void synctex_math_recorder(halfword p); +void synctex_record_node_math(halfword p); /* glue code, this message is sent whenever an inline math node will ship out See: @ @<Output the non-|char_node| |p| for... */ @@ -1198,12 +1491,12 @@ void synctexmath(halfword p, halfword this_box __attribute__ ((unused))) synctex_ctxt.curh = SYNCTEX_CURH; synctex_ctxt.curv = SYNCTEX_CURV; synctex_ctxt.recorder = NULL;/* no need to record once more */ - synctex_math_recorder(p);/* always record synchronously */ + synctex_record_node_math(p);/* always record synchronously */ } -static inline void synctex_record_glue(halfword p); -static inline void synctex_record_kern(halfword p); -static inline void synctex_record_rule(halfword p); +static inline void synctex_record_node_glue(halfword p); +static inline void synctex_record_node_rule(halfword p); +static inline void synctex_record_node_kern(halfword p); /* this message is sent whenever an horizontal glue node or rule node ships out See: move_past:... */ @@ -1216,7 +1509,7 @@ void synctexhorizontalruleorglue(halfword p, halfword this_box { SYNCTEX_RETURN_IF_DISABLED; # if SYNCTEX_DEBUG - printf("\nSynchronize DEBUG: synctexglue\n"); + printf("\nSynchronize DEBUG: synctexhorizontalruleorglue\n"); # endif switch (SYNCTEX_TYPE(p)) { case rule_node: @@ -1245,25 +1538,23 @@ void synctexhorizontalruleorglue(halfword p, halfword this_box case rule_node: synctex_ctxt.tag = SYNCTEX_TAG_MODEL(p,rule); synctex_ctxt.line = SYNCTEX_LINE_MODEL(p,rule); - synctex_record_rule(p); /* always record synchronously: maybe some text is outside the box */ + synctex_record_node_rule(p); /* always record synchronously: maybe some text is outside the box */ break; case glue_node: synctex_ctxt.tag = SYNCTEX_TAG_MODEL(p,glue); synctex_ctxt.line = SYNCTEX_LINE_MODEL(p,glue); - synctex_record_glue(p); /* always record synchronously: maybe some text is outside the box */ + synctex_record_node_glue(p); /* always record synchronously: maybe some text is outside the box */ break; case kern_node: synctex_ctxt.tag = SYNCTEX_TAG_MODEL(p,kern); synctex_ctxt.line = SYNCTEX_LINE_MODEL(p,kern); - synctex_record_kern(p); /* always record synchronously: maybe some text is outside the box */ + synctex_record_node_kern(p); /* always record synchronously: maybe some text is outside the box */ break; default: printf("\nSynchronize ERROR: unknown node type %i\n", SYNCTEX_TYPE(p)); } } -void synctex_kern_recorder(halfword p); - /* this message is sent whenever a kern node ships out See: @ @<Output the non-|char_node| |p| for... */ void synctexkern(halfword p, halfword this_box) @@ -1286,7 +1577,7 @@ void synctexkern(halfword p, halfword this_box) synctex_ctxt.node = p; synctex_ctxt.tag = SYNCTEX_TAG_MODEL(p,kern); synctex_ctxt.line = SYNCTEX_LINE_MODEL(p,kern); - synctex_ctxt.recorder = &synctex_kern_recorder; + synctex_ctxt.recorder = &synctex_record_node_kern; } else { synctex_ctxt.node = p; synctex_ctxt.tag = SYNCTEX_TAG_MODEL(p,kern); @@ -1294,14 +1585,14 @@ void synctexkern(halfword p, halfword this_box) synctex_ctxt.recorder = NULL; /* always record when the context has just changed * and when not the first node */ - synctex_kern_recorder(p); + synctex_record_node_kern(p); } } else { /* just update the geometry and type (for future improvements) */ synctex_ctxt.node = p; synctex_ctxt.tag = SYNCTEX_TAG_MODEL(p,kern); synctex_ctxt.line = SYNCTEX_LINE_MODEL(p,kern); - synctex_ctxt.recorder = &synctex_kern_recorder; + synctex_ctxt.recorder = &synctex_record_node_kern; } } @@ -1311,7 +1602,7 @@ void synctexkern(halfword p, halfword this_box) # define SYNCTEX_IGNORE(NODE) SYNCTEX_IS_OFF || !SYNCTEX_VALUE || !SYNCTEX_FILE \ || (synctex_ctxt.count>2000) -void synctex_char_recorder(halfword p); +void synctex_record_node_char(halfword p); /* this message is sent whenever a char node ships out */ void synctexchar(halfword p, halfword this_box __attribute__ ((unused))) @@ -1332,10 +1623,10 @@ void synctexchar(halfword p, halfword this_box __attribute__ ((unused))) synctex_ctxt.line = 0; synctex_ctxt.recorder = NULL; /* always record when the context has just changed */ - synctex_char_recorder(p); + synctex_record_node_char(p); } -void synctex_node_recorder(halfword p); +void synctex_record_node_unknown(halfword p); # undef SYNCTEX_IGNORE # define SYNCTEX_IGNORE(NODE) (SYNCTEX_IS_OFF || !SYNCTEX_VALUE || !SYNCTEX_FILE) @@ -1352,7 +1643,7 @@ void synctexnode(halfword p, halfword this_box __attribute__ ((unused))) return; } /* always record, not very usefull yet */ - synctex_node_recorder(p); + synctex_record_node_unknown(p); } /* this message should be sent to record information @@ -1366,9 +1657,18 @@ void synctexcurrent(void) if (SYNCTEX_IGNORE(nothing)) { return; } else { - int len = SYNCTEX_fprintf(SYNCTEX_FILE, "x%i,%i:%i,%i\n", + int len = 0; + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "x%i,%i:%i,=\n", + synctex_ctxt.tag,synctex_ctxt.line, + SYNCTEX_CURH UNIT); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "x%i,%i:%i,%i\n", synctex_ctxt.tag,synctex_ctxt.line, - SYNCTEX_CURH UNIT,SYNCTEX_CURV UNIT); + SYNCTEX_CURH UNIT, + SYNCTEX_CURV UNIT); + synctex_ctxt.lastv = SYNCTEX_CURV; + } if (len > 0) { synctex_ctxt.total_length += len; return; @@ -1409,7 +1709,9 @@ static inline int synctex_record_preamble(void) printf("\nSynchronize DEBUG: synctex_record_preamble\n"); # endif len = - SYNCTEX_fprintf(SYNCTEX_FILE, "SyncTeX Version:%i\n", SYNCTEX_VERSION); + SYNCTEX_fprintf(SYNCTEX_FILE, "SyncTeX Version:%i\n", + synctex_ctxt.options>SYNCTEX_VERSION? + synctex_ctxt.options:SYNCTEX_VERSION); if (len > 0) { synctex_ctxt.total_length = len; return SYNCTEX_NOERR; @@ -1440,8 +1742,13 @@ static inline int synctex_record_anchor(void) int len = 0; # if SYNCTEX_DEBUG > 999 printf("\nSynchronize DEBUG: synctex_record_anchor\n"); + printf("\nSYNCTEX_FILE:%p\n",SYNCTEX_FILE); + printf("\ntotal_length:%i\n",synctex_ctxt.total_length); # endif len = SYNCTEX_fprintf(SYNCTEX_FILE, "!%i\n", synctex_ctxt.total_length); +# if SYNCTEX_DEBUG > 999 + printf("\nSynchronize DEBUG: synctex_record_anchor 1\n"); +# endif if (len > 0) { synctex_ctxt.total_length = len; ++synctex_ctxt.count; @@ -1475,116 +1782,121 @@ static inline int synctex_record_sheet(integer sheet) # endif if (SYNCTEX_NOERR == synctex_record_anchor()) { int len = SYNCTEX_fprintf(SYNCTEX_FILE, "{%i\n", sheet); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return SYNCTEX_NOERR; - } - } - synctexabort(0); - return -1; -} - -/* Recording a "}..." line */ -static inline int synctex_record_teehs(integer sheet) -{ -# if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_record_teehs\n"); -# endif - if (SYNCTEX_NOERR == synctex_record_anchor()) { - int len = SYNCTEX_fprintf(SYNCTEX_FILE, "}%i\n", sheet); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return SYNCTEX_NOERR; - } + SYNCTEX_RECORD_LEN_AND_RETURN_NOERR; } synctexabort(0); return -1; } /* Recording a "v..." line */ -static inline void synctex_record_void_vlist(halfword p) +static inline void synctex_record_node_void_vlist(halfword p) { int len = 0; # if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_record_void_vlist\n"); -# endif - len = SYNCTEX_fprintf(SYNCTEX_FILE, "v%i,%i:%i,%i:%i,%i,%i\n", - SYNCTEX_TAG_MODEL(p,box), - SYNCTEX_LINE_MODEL(p,box), - synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT, - SYNCTEX_WIDTH(p) UNIT, - SYNCTEX_HEIGHT(p) UNIT, - SYNCTEX_DEPTH(p) UNIT); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; - } + printf("\nSynchronize DEBUG: synctex_record_node_void_vlist\n"); +# endif + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "v%i,%i:%i,=:%i,%i,%i\n", + SYNCTEX_TAG_MODEL(p,box), + SYNCTEX_LINE_MODEL(p,box), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_WIDTH(p) UNIT, + SYNCTEX_HEIGHT(p) UNIT, + SYNCTEX_DEPTH(p) UNIT); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "v%i,%i:%i,%i:%i,%i,%i\n", + SYNCTEX_TAG_MODEL(p,box), + SYNCTEX_LINE_MODEL(p,box), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_CTXT_CURV UNIT, + SYNCTEX_WIDTH(p) UNIT, + SYNCTEX_HEIGHT(p) UNIT, + SYNCTEX_DEPTH(p) UNIT); + synctex_ctxt.lastv = SYNCTEX_CTXT_CURV; + } +# define SYNCTEX_RECORD_LEN_AND_RETURN do {\ + if (len > 0) {\ + synctex_ctxt.total_length += len;\ + ++synctex_ctxt.count;\ + return;\ + } } while(false) + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } /* Recording a "[..." line */ -static inline void synctex_record_vlist(halfword p) +static inline void synctex_record_node_vlist(halfword p) { int len = 0; SYNCTEX_NOT_VOID = SYNCTEX_YES; # if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_record_vlist\n"); -# endif - len = SYNCTEX_fprintf(SYNCTEX_FILE, "[%i,%i:%i,%i:%i,%i,%i\n", - SYNCTEX_TAG_MODEL(p,box), - SYNCTEX_LINE_MODEL(p,box), - synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT, - SYNCTEX_WIDTH(p) UNIT, - SYNCTEX_HEIGHT(p) UNIT, - SYNCTEX_DEPTH(p) UNIT); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; + printf("\nSynchronize DEBUG: synctex_record_node_vlist\n"); +# endif + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "[%i,%i:%i,=:%i,%i,%i\n", + SYNCTEX_TAG_MODEL(p,box), + SYNCTEX_LINE_MODEL(p,box), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_WIDTH(p) UNIT, + SYNCTEX_HEIGHT(p) UNIT, + SYNCTEX_DEPTH(p) UNIT); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "[%i,%i:%i,%i:%i,%i,%i\n", + SYNCTEX_TAG_MODEL(p,box), + SYNCTEX_LINE_MODEL(p,box), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_CTXT_CURV UNIT, + SYNCTEX_WIDTH(p) UNIT, + SYNCTEX_HEIGHT(p) UNIT, + SYNCTEX_DEPTH(p) UNIT); + synctex_ctxt.lastv = SYNCTEX_CTXT_CURV; } + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } /* Recording a "]..." line */ -static inline void synctex_record_tsilv(halfword p __attribute__ ((unused))) +static inline void synctex_record_node_tsilv(halfword p __attribute__ ((unused))) { int len = 0; # if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_record_tsilv\n"); + printf("\nSynchronize DEBUG: synctex_record_node_tsilv\n"); # endif len = SYNCTEX_fprintf(SYNCTEX_FILE, "]\n"); - if (len > 0) { - synctex_ctxt.total_length += len; - return; - } + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } /* Recording a "h..." line */ -static inline void synctex_record_void_hlist(halfword p) +static inline void synctex_record_node_void_hlist(halfword p) { int len = 0; # if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_record_void_hlist\n"); -# endif - len = SYNCTEX_fprintf(SYNCTEX_FILE, "h%i,%i:%i,%i:%i,%i,%i\n", - SYNCTEX_TAG_MODEL(p,box), - SYNCTEX_LINE_MODEL(p,box), - synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT, - SYNCTEX_WIDTH(p) UNIT, - SYNCTEX_HEIGHT(p) UNIT, - SYNCTEX_DEPTH(p) UNIT); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; + printf("\nSynchronize DEBUG: synctex_record_node_void_hlist\n"); +# endif + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "h%i,%i:%i,=:%i,%i,%i\n", + SYNCTEX_TAG_MODEL(p,box), + SYNCTEX_LINE_MODEL(p,box), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_WIDTH(p) UNIT, + SYNCTEX_HEIGHT(p) UNIT, + SYNCTEX_DEPTH(p) UNIT); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "h%i,%i:%i,%i:%i,%i,%i\n", + SYNCTEX_TAG_MODEL(p,box), + SYNCTEX_LINE_MODEL(p,box), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_CTXT_CURV UNIT, + SYNCTEX_WIDTH(p) UNIT, + SYNCTEX_HEIGHT(p) UNIT, + SYNCTEX_DEPTH(p) UNIT); + synctex_ctxt.lastv = SYNCTEX_CTXT_CURV; } + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } @@ -1597,35 +1909,39 @@ static inline void synctex_record_hlist(halfword p) # if SYNCTEX_DEBUG > 999 printf("\nSynchronize DEBUG: synctex_record_hlist\n"); # endif - len = SYNCTEX_fprintf(SYNCTEX_FILE, "(%i,%i:%i,%i:%i,%i,%i\n", - SYNCTEX_TAG_MODEL(p,box), - SYNCTEX_LINE_MODEL(p,box), - synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT, - SYNCTEX_WIDTH(p) UNIT, - SYNCTEX_HEIGHT(p) UNIT, - SYNCTEX_DEPTH(p) UNIT); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "(%i,%i:%i,=:%i,%i,%i\n", + SYNCTEX_TAG_MODEL(p,box), + SYNCTEX_LINE_MODEL(p,box), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_WIDTH(p) UNIT, + SYNCTEX_HEIGHT(p) UNIT, + SYNCTEX_DEPTH(p) UNIT); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "(%i,%i:%i,%i:%i,%i,%i\n", + SYNCTEX_TAG_MODEL(p,box), + SYNCTEX_LINE_MODEL(p,box), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_CTXT_CURV UNIT, + SYNCTEX_WIDTH(p) UNIT, + SYNCTEX_HEIGHT(p) UNIT, + SYNCTEX_DEPTH(p) UNIT); + synctex_ctxt.lastv = SYNCTEX_CTXT_CURV; } + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } /* Recording a ")..." line */ -static inline void synctex_record_tsilh(halfword p __attribute__ ((unused))) +static inline void synctex_record_node_tsilh(halfword p __attribute__ ((unused))) { int len = 0; # if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_record_tsilh\n"); + printf("\nSynchronize DEBUG: synctex_record_node_tsilh\n"); # endif len = SYNCTEX_fprintf(SYNCTEX_FILE, ")\n"); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; - } + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } @@ -1671,141 +1987,149 @@ static inline int synctex_record_postamble(void) } /* Recording a "g..." line */ -static inline void synctex_record_glue(halfword p) +static inline void synctex_record_node_glue(halfword p) { int len = 0; # if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_glue_recorder\n"); + printf("\nSynchronize DEBUG: synctex_record_node_glue\n"); # endif - len = SYNCTEX_fprintf(SYNCTEX_FILE, "g%i,%i:%i,%i\n", - SYNCTEX_TAG_MODEL(p,glue), - SYNCTEX_LINE_MODEL(p,glue), - synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "g%i,%i:%i,=\n", + SYNCTEX_TAG_MODEL(p,glue), + SYNCTEX_LINE_MODEL(p,glue), + SYNCTEX_CTXT_CURH UNIT); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "g%i,%i:%i,%i\n", + SYNCTEX_TAG_MODEL(p,glue), + SYNCTEX_LINE_MODEL(p,glue), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_CTXT_CURV UNIT); + synctex_ctxt.lastv = SYNCTEX_CTXT_CURV; } + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } /* Recording a "k..." line */ -static inline void synctex_record_kern(halfword p) +static inline void synctex_record_node_kern(halfword p) { int len = 0; # if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_kern_recorder\n"); -# endif - len = SYNCTEX_fprintf(SYNCTEX_FILE, "k%i,%i:%i,%i:%i\n", - SYNCTEX_TAG_MODEL(p,glue), - SYNCTEX_LINE_MODEL(p,glue), - synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT, - SYNCTEX_WIDTH(p) UNIT); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; + printf("\nSynchronize DEBUG: synctex_record_node_kern\n"); +# endif + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "k%i,%i:%i,=:%i\n", + SYNCTEX_TAG_MODEL(p,glue), + SYNCTEX_LINE_MODEL(p,glue), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_WIDTH(p) UNIT); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "k%i,%i:%i,%i:%i\n", + SYNCTEX_TAG_MODEL(p,glue), + SYNCTEX_LINE_MODEL(p,glue), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_CTXT_CURV UNIT, + SYNCTEX_WIDTH(p) UNIT); + synctex_ctxt.lastv = SYNCTEX_CTXT_CURV; } + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } /* Recording a "r..." line */ -static inline void synctex_record_rule(halfword p) +static inline void synctex_record_node_rule(halfword p) { int len = 0; # if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_record_tsilh\n"); -# endif - len = SYNCTEX_fprintf(SYNCTEX_FILE, "r%i,%i:%i,%i:%i,%i,%i\n", - SYNCTEX_TAG_MODEL(p,rule), - SYNCTEX_LINE_MODEL(p,rule), - synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT, - SYNCTEX_RULE_WD UNIT, SYNCTEX_RULE_HT UNIT, SYNCTEX_RULE_DP UNIT); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; + printf("\nSynchronize DEBUG: synctex_record_node_tsilh\n"); +# endif + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "r%i,%i:%i,=:%i,%i,%i\n", + SYNCTEX_TAG_MODEL(p,rule), + SYNCTEX_LINE_MODEL(p,rule), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_RULE_WD UNIT, SYNCTEX_RULE_HT UNIT, SYNCTEX_RULE_DP UNIT); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "r%i,%i:%i,%i:%i,%i,%i\n", + SYNCTEX_TAG_MODEL(p,rule), + SYNCTEX_LINE_MODEL(p,rule), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_CTXT_CURV UNIT, + SYNCTEX_RULE_WD UNIT, SYNCTEX_RULE_HT UNIT, SYNCTEX_RULE_DP UNIT); + synctex_ctxt.lastv = SYNCTEX_CTXT_CURV; } + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } /* Recording a "$..." line */ -void synctex_math_recorder(halfword p) -{ - int len = 0; -# if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_math_recorder\n"); -# endif - len = SYNCTEX_fprintf(SYNCTEX_FILE, "$%i,%i:%i,%i\n", - SYNCTEX_TAG_MODEL(p, math), - SYNCTEX_LINE_MODEL(p, math), - synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; - } - synctexabort(0); - return; -} - -/* Recording a "k..." line */ -void synctex_kern_recorder(halfword p) +void synctex_record_node_math(halfword p) { int len = 0; # if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_kern_recorder\n"); + printf("\nSynchronize DEBUG: synctex_record_node_math\n"); # endif - len = SYNCTEX_fprintf(SYNCTEX_FILE, "k%i,%i:%i,%i:%i\n", - SYNCTEX_TAG_MODEL(p, kern), - SYNCTEX_LINE_MODEL(p, kern), - synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT, - SYNCTEX_WIDTH(p) UNIT); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "$%i,%i:%i,=\n", + SYNCTEX_TAG_MODEL(p, math), + SYNCTEX_LINE_MODEL(p, math), + SYNCTEX_CTXT_CURH UNIT); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "$%i,%i:%i,%i\n", + SYNCTEX_TAG_MODEL(p, math), + SYNCTEX_LINE_MODEL(p, math), + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_CTXT_CURV UNIT); + synctex_ctxt.lastv = SYNCTEX_CTXT_CURV; } + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } /* Recording a "c..." line */ -void synctex_char_recorder(halfword p __attribute__ ((unused))) +void synctex_record_node_char(halfword p __attribute__ ((unused))) { int len = 0; # if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_char_recorder\n"); + printf("\nSynchronize DEBUG: synctex_record_node_char\n"); # endif - len = SYNCTEX_fprintf(SYNCTEX_FILE, "c%i,%i\n", - synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "c%i,=\n", + SYNCTEX_CTXT_CURH UNIT); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "c%i,%i\n", + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_CTXT_CURV UNIT); + synctex_ctxt.lastv = SYNCTEX_CTXT_CURV; } + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } /* Recording a "?..." line, type, subtype and position */ -void synctex_node_recorder(halfword p) +void synctex_record_node_unknown(halfword p) { int len = 0; # if SYNCTEX_DEBUG > 999 - printf("\nSynchronize DEBUG: synctex_node_recorder(0x%x)\n", p); + printf("\nSynchronize DEBUG: synctex_record_node_unknown(0x%x)\n", p); # endif - len = SYNCTEX_fprintf(SYNCTEX_FILE, "?%i,%i:%i,%i\n", - synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT, - SYNCTEX_TYPE(p), SYNCTEX_SUBTYPE(p)); - if (len > 0) { - synctex_ctxt.total_length += len; - ++synctex_ctxt.count; - return; + if (SYNCTEX_SHOULD_COMPRESS_V) { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "?%i,=:%i,%i\n", + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_TYPE(p), SYNCTEX_SUBTYPE(p)); + } else { + len = SYNCTEX_fprintf(SYNCTEX_FILE, "?%i,%i:%i,%i\n", + SYNCTEX_CTXT_CURH UNIT, + SYNCTEX_CTXT_CURV UNIT, + SYNCTEX_TYPE(p), SYNCTEX_SUBTYPE(p)); + synctex_ctxt.lastv = SYNCTEX_CTXT_CURV; } + SYNCTEX_RECORD_LEN_AND_RETURN; synctexabort(0); return; } diff --git a/source/texk/web2c/synctexdir/synctex.h b/source/texk/web2c/synctexdir/synctex.h index 96e03c84cd99e433d04dcc3c026db233d694d68a..4fcf5d65c426c0c63cb209416f8d73ece99c0cf2 100644 --- a/source/texk/web2c/synctexdir/synctex.h +++ b/source/texk/web2c/synctexdir/synctex.h @@ -1,9 +1,12 @@ /* synctex.h -Copyright (c) 2008, 2009 jerome DOT laurens AT u-bourgogne DOT fr +Copyright (c) 2008-2017 jerome DOT laurens AT u-bourgogne DOT fr This file is part of the SyncTeX package. +Version 1 +Lates Revision: Sat Apr 22 10:07:05 UTC 2017 + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without @@ -35,9 +38,6 @@ Nota Bene: If you include or use a significant part of the synctex package into a software, I would appreciate to be listed as contributor and see "SyncTeX" highlighted. -Version 1 -Latest Revision: Wed Jul 1 08:17:50 UTC 2009 - */ # ifndef __SYNCTEX_HEADER__ @@ -53,14 +53,24 @@ extern void synctexstartinput(void); /* Recording the "{..." line. In *tex.web, use synctex_sheet(pdf_output) at * the very beginning of the ship_out procedure. -*/ + */ extern void synctexsheet(integer mag); /* Recording the "}..." line. In *tex.web, use synctex_teehs at * the very end of the ship_out procedure. -*/ + */ extern void synctexteehs(void); +/* Recording the "<..." line. In pdftex.web, use synctex_pdfxform(p) at + * the very beginning of the pdf_ship_out procedure. + */ +extern void synctexpdfxform(halfword p); + +/* Recording the ">" line. In pdftex.web, use synctex_mrofxfdp at + * the very end of the ship_out procedure. + */ +extern void synctexmrofxfdp(void); + /* This message is sent when a vlist will be shipped out, more precisely at * the beginning of the vlist_out procedure in *TeX.web. It will be balanced * by a synctex_tsilv, sent at the end of the vlist_out procedure. p is the @@ -100,6 +110,10 @@ extern void synctexhorizontalruleorglue(halfword p, halfword this_box); /* Send this message whenever a kern node will ship out. */ extern void synctexkern(halfword p, halfword this_box); +/* Recording the "f" line. In pdftex.web, use synctex_pdfrefxform when \pfdrefxform si used. + */ +extern void synctexpdfrefxform(int objnum); + /* this message is sent whenever a char node ships out */ extern void synctexchar(halfword p, halfword this_box); diff --git a/source/texk/web2c/texmfmp-help.h b/source/texk/web2c/texmfmp-help.h index b6a5f9ddee33f9190b5a9fa7d21cda2804fc217e..2127aaabba88b174caef66530b51ae46eaa62c37 100644 --- a/source/texk/web2c/texmfmp-help.h +++ b/source/texk/web2c/texmfmp-help.h @@ -132,7 +132,8 @@ const_string EPTEXHELP[] = { " the DVI file. WHERE is a comma-separated value", " list: cr display hbox math par parend vbox", #if defined(__SyncTeX__) - "-synctex=NUMBER generate SyncTeX data for previewers if nonzero", + "-synctex=NUMBER generate SyncTeX data for previewers according to", + " bits of NUMBER (`man synctex' for details)", #endif "-translate-file=TCXNAME use the TCX file TCXNAME", "-help print this message and exit.", @@ -192,7 +193,8 @@ const_string ETEXHELP[] = { " the DVI file. WHERE is a comma-separated value", " list: cr display hbox math par parend vbox", #if defined(__SyncTeX__) - "-synctex=NUMBER generate SyncTeX data for previewers if nonzero", + "-synctex=NUMBER generate SyncTeX data for previewers according to", + " bits of NUMBER (`man synctex' for details)", #endif "-translate-file=TCXNAME use the TCX file TCXNAME", "-8bit make all characters printable by default", @@ -260,7 +262,8 @@ const_string EUPTEXHELP[] = { " the DVI file. WHERE is a comma-separated value", " list: cr display hbox math par parend vbox", #if defined(__SyncTeX__) - "-synctex=NUMBER generate SyncTeX data for previewers if nonzero", + "-synctex=NUMBER generate SyncTeX data for previewers according to", + " bits of NUMBER (`man synctex' for details)", #endif "-translate-file=TCXNAME use the TCX file TCXNAME", "-help print this message and exit.", @@ -458,7 +461,8 @@ const_string PDFTEXHELP[] = { " the DVI file. WHERE is a comma-separated value", " list: cr display hbox math par parend vbox", #if defined(__SyncTeX__) - "-synctex=NUMBER generate SyncTeX data for previewers if nonzero", + "-synctex=NUMBER generate SyncTeX data for previewers according to", + " bits of NUMBER (`man synctex' for details)", #endif "-translate-file=TCXNAME use the TCX file TCXNAME", "-8bit make all characters printable by default", @@ -527,7 +531,8 @@ const_string PTEXHELP[] = { " the DVI file. WHERE is a comma-separated value", " list: cr display hbox math par parend vbox", #if defined(__SyncTeX__) - "-synctex=NUMBER generate SyncTeX data for previewers if nonzero", + "-synctex=NUMBER generate SyncTeX data for previewers according to", + " bits of NUMBER (`man synctex' for details)", #endif "-translate-file=TCXNAME use the TCX file TCXNAME", "-help print this message and exit.", @@ -586,7 +591,8 @@ const_string TEXHELP[] = { " the DVI file. WHERE is a comma-separated value", " list: cr display hbox math par parend vbox", #if defined(__SyncTeX__) - "-synctex=NUMBER generate SyncTeX data for previewers if nonzero", + "-synctex=NUMBER generate SyncTeX data for previewers according to", + " bits of NUMBER (`man synctex' for details)", #endif "-translate-file=TCXNAME use the TCX file TCXNAME", "-8bit make all characters printable by default", @@ -653,7 +659,8 @@ const_string UPTEXHELP[] = { " the DVI file. WHERE is a comma-separated value", " list: cr display hbox math par parend vbox", #if defined(__SyncTeX__) - "-synctex=NUMBER generate SyncTeX data for previewers if nonzero", + "-synctex=NUMBER generate SyncTeX data for previewers according to", + " bits of NUMBER (`man synctex' for details)", #endif "-translate-file=TCXNAME use the TCX file TCXNAME", "-help print this message and exit.", @@ -710,7 +717,8 @@ const_string XETEXHELP[] = { " the XDV file. WHERE is a comma-separated value", " list: cr display hbox math par parend vbox", #if defined(__SyncTeX__) - "-synctex=NUMBER generate SyncTeX data for previewers if nonzero", + "-synctex=NUMBER generate SyncTeX data for previewers according to", + " bits of NUMBER (`man synctex' for details)", #endif "-translate-file=TCXNAME (ignored)", "-8bit make all characters printable, don't use ^^X sequences", diff --git a/source/texk/web2c/xetexdir/am/xetex.am b/source/texk/web2c/xetexdir/am/xetex.am index 475f8dc44bce9d6724aaf07f8b95d35f24067554..f6175bf939682edc2f8c6b935158ee9f12c73128 100644 --- a/source/texk/web2c/xetexdir/am/xetex.am +++ b/source/texk/web2c/xetexdir/am/xetex.am @@ -1,6 +1,8 @@ +## $Id: xetex.am 44086 2017-04-27 21:38:29Z karl $ ## texk/web2c/xetexdir/am/xetex.am: Makefile fragment for XeTeX. ## -## Copyright (C) 2009-2015 Peter Breitenlohner <tex-live@tug.org> +## Copyright 2017 Karl Berry <tex-live@tug.org> +## Copyright 2009-2015 Peter Breitenlohner <tex-live@tug.org> ## You may freely use, modify and/or distribute this file. ## XeTeX @@ -33,7 +35,7 @@ xetex_cppflags += -I$(srcdir)/libmd5 xetex_ldadd = $(libxetex) xetex_ldadd += $(HARFBUZZ_LIBS) xetex_ldadd += $(GRAPHITE2_LIBS) -xetex_ldadd += $(ICU_LIBS) +xetex_ldadd += $(ICU_LIBS) $(ICU_LIBS_EXTRA) xetex_ldadd += $(TECKIT_LIBS) xetex_ldadd += $(POPPLER_LIBS) xetex_ldadd += $(LIBPNG_LIBS) @@ -210,4 +212,3 @@ endif XETEX ## xetex-bug73.test EXTRA_DIST += xetexdir/tests/bug73.log xetexdir/tests/bug73.tex DISTCLEANFILES += bug73.fmt bug73.log bug73.out bug73.tex - diff --git a/source/utils/README b/source/utils/README index 652081884d259d208c623999a535a5ad021c0446..e3c340b003cea51e1cbad38da39180d9abf54b19 100644 --- a/source/utils/README +++ b/source/utils/README @@ -1,4 +1,4 @@ -$Id: README 43602 2017-03-25 21:11:20Z karl $ +$Id: README 43761 2017-04-12 17:31:37Z karl $ Public domain. Originally written 2005 by Karl Berry. Extra utilities we (optionally) compile for TeX Live. @@ -104,7 +104,7 @@ cd $libiconv_ver # foil wrong attempts at dynamic linking, etc. (cd $clisp_basedir/clisp-tools/lib && rm -f *.dylib *.la) -clisp_ver=clisp-2.49 +clisp_ver=clisp-2.49.50 cd $clisp_basedir $wget https://haible.de/bruno/gnu/clisp-2.49.50.tar.bz2 bunzip2 -dc $clisp_ver.tar.bz2 | tar xf - @@ -117,7 +117,7 @@ cd $clisp_ver # On FreeBSD/amd64: add --disable-mmap. # ./configure CPPFLAGS=-DUNIX_BINARY_DISTRIB --prefix=$clisp_toolsdir \ - --without-readline --without-dynamic-modules \ + --without-readline --without-dynamic-modules --without-termcap-ncurses \ --disable-nls --enable-portability \ --with-libsigsegv-prefix=$clisp_toolsdir \ --with-libffcall-prefix=$clisp_toolsdir \