texlive[60964] trunk: cluttex (5nov21)

commits+karl at tug.org commits+karl at tug.org
Fri Nov 5 23:05:00 CET 2021


Revision: 60964
          http://tug.org/svn/texlive?view=revision&revision=60964
Author:   karl
Date:     2021-11-05 23:05:00 +0100 (Fri, 05 Nov 2021)
Log Message:
-----------
cluttex (5nov21)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/cluttex/cluttex.lua
    trunk/Master/texmf-dist/doc/support/cluttex/CHANGELOG.md
    trunk/Master/texmf-dist/doc/support/cluttex/Makefile
    trunk/Master/texmf-dist/doc/support/cluttex/bin/cluttex.bat
    trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex-ja.pdf
    trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex-ja.tex
    trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex.pdf
    trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex.tex
    trunk/Master/texmf-dist/doc/support/cluttex/src/cluttex.lua
    trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/checkdriver.lua
    trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/handleoption.lua
    trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/isatty.lua
    trunk/Master/texmf-dist/scripts/cluttex/cluttex.lua

Modified: trunk/Build/source/texk/texlive/linked_scripts/cluttex/cluttex.lua
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/cluttex/cluttex.lua	2021-11-05 22:04:10 UTC (rev 60963)
+++ trunk/Build/source/texk/texlive/linked_scripts/cluttex/cluttex.lua	2021-11-05 22:05:00 UTC (rev 60964)
@@ -1369,7 +1369,7 @@
 end
 package.preload["texrunner.handleoption"] = function(...)
 local COPYRIGHT_NOTICE = [[
-Copyright (C) 2016-2020  ARATA Mizuki
+Copyright (C) 2016-2021  ARATA Mizuki
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -1893,6 +1893,7 @@
   -- Try LuaJIT-like FFI
   local succ, M = pcall(function()
       local ffi = require "ffi"
+      assert(ffi.os ~= "" and ffi.arch ~= "", "ffi library is stub")
       ffi.cdef[[
 int isatty(int fd);
 int fileno(void *stream);
@@ -1938,9 +1939,26 @@
     end
   end
 
+  -- Fallback using system command
+  return {
+    isatty = function(file)
+      local fd
+      if file == io.stdin then
+        fd = 0
+      elseif file == io.stdout then
+        fd = 1
+      elseif file == io.stderr then
+        fd = 2
+      else
+        return false
+      end
+      local result = os.execute(string.format("test -t %d", fd))
+      return result == true or result == 0
+    end,
+  }
+
 else
   -- Try LuaJIT
-  -- TODO: Try to detect MinTTY using GetFileInformationByHandleEx
   local succ, M = pcall(function()
       local ffi = require "ffi"
       local bitlib = assert(bit32 or bit, "Neither bit32 (Lua 5.2) nor bit (LuaJIT) found") -- Lua 5.2 or LuaJIT
@@ -2730,35 +2748,53 @@
 local right_values = {
   dvips = {
     graphics = "dvips",
-    expl3    = "dvips",
+    expl3    = {
+      old = "dvips",
+      new = "dvips",
+    },
     hyperref = "dvips",
     xypic    = "dvips",
   },
   dvipdfmx = {
     graphics = "dvipdfmx",
-    expl3    = "dvipdfmx",
+    expl3    = {
+      old = "dvipdfmx",
+      new = "dvipdfmx",
+    },
     hyperref = "dvipdfmx",
     xypic    = "pdf",
   },
   dvisvgm = {
     graphics = "dvisvgm",
-    expl3    = "dvisvgm",
+    expl3    = {
+      old = "dvisvgm",
+      new = "dvisvgm",
+    },
   },
   xetex = {
     graphics = "xetex",
-    expl3    = "xdvipdfmx",
+    expl3    = {
+      old = "xdvipdfmx",
+      new = "xetex",
+    },
     hyperref = "xetex",
     xypic    = "pdf",
   },
   pdftex = {
     graphics = "pdftex",
-    expl3    = "pdfmode",
+    expl3    = {
+      old = "pdfmode",
+      new = "pdftex",
+    },
     hyperref = "pdftex",
     xypic    = "pdf",
   },
   luatex = {
     graphics = "luatex",
-    expl3    = "pdfmode",
+    expl3    = {
+      old = "pdfmode",
+      new = "luatex",
+    },
     hyperref = "luatex",
     xypic    = "pdf",
   },
@@ -2797,18 +2833,24 @@
       graphics_driver = "unknown"
     end
   end
-  local expl3_driver = nil -- "pdfmode" | "dvisvgm" | "xdvipdfmx" | "dvipdfmx" | "dvips" | "unknown"
-  if loaded["expl3-code.tex"] or loaded["expl3.sty"] or loaded["l3backend-dvips.def"] or loaded["l3backend-dvipdfmx.def"] or loaded["l3backend-xdvipdfmx.def"] or loaded["l3backend-pdfmode.def"] then
+  local expl3_driver = nil -- "pdfmode" | "dvisvgm" | "xdvipdfmx" | "dvipdfmx" | "dvips" | "pdftex" | "luatex" | "xetex" | "unknown"
+  if loaded["expl3-code.tex"] or loaded["expl3.sty"] or loaded["l3backend-dvips.def"] or loaded["l3backend-dvipdfmx.def"] or loaded["l3backend-xdvipdfmx.def"] or loaded["l3backend-pdfmode.def"] or loaded["l3backend-pdftex.def"] or loaded["l3backend-luatex.def"] or loaded["l3backend-xetex.def"] then
     if loaded["l3backend-pdfmode.def"] then
-      expl3_driver = "pdfmode" -- pdftex, luatex
+      expl3_driver = "pdfmode" -- pdftex, luatex in older l3backend
     elseif loaded["l3backend-dvisvgm.def"] then
       expl3_driver = "dvisvgm"
     elseif loaded["l3backend-xdvipdfmx.def"] then
-      expl3_driver = "xdvipdfmx"
+      expl3_driver = "xdvipdfmx" -- xetex in older l3backend
     elseif loaded["l3backend-dvipdfmx.def"] then
       expl3_driver = "dvipdfmx"
     elseif loaded["l3backend-dvips.def"] then
       expl3_driver = "dvips"
+    elseif loaded["l3backend-pdftex.def"] then
+      expl3_driver = "pdftex"
+    elseif loaded["l3backend-luatex.def"] then
+      expl3_driver = "luatex"
+    elseif loaded["l3backend-xetex.def"] then
+      expl3_driver = "xetex"
     else
       -- TODO: driver=latex2e?
       expl3_driver = "unknown"
@@ -2857,9 +2899,12 @@
     message.diag("The driver option for graphics(x)/color is missing or wrong.")
     message.diag("Consider setting '", expected.graphics, "' option.")
   end
-  if expl3_driver ~= nil and expected.expl3 ~= nil and expl3_driver ~= expected.expl3 then
+  if expl3_driver ~= nil and expected.expl3 ~= nil and expl3_driver ~= expected.expl3.old and expl3_driver ~= expected.expl3.new then
     message.diag("The driver option for expl3 is missing or wrong.")
-    message.diag("Consider setting 'driver=", expected.expl3, "' option when loading expl3.")
+    message.diag("Consider setting 'driver=", expected.expl3.new, "' option when loading expl3.")
+    if expected.expl3.old ~= expected.expl3.new then
+      message.diag("You might need to instead set 'driver=", expected.expl3.old, "' if you are using an older version of expl3.")
+    end
   end
   if hyperref_driver ~= nil and expected.hyperref ~= nil and hyperref_driver ~= expected.hyperref then
     message.diag("The driver option for hyperref is missing or wrong.")
@@ -2888,7 +2933,7 @@
 }
 end
 --[[
-  Copyright 2016-2020 ARATA Mizuki
+  Copyright 2016-2021 ARATA Mizuki
 
   This file is part of ClutTeX.
 
@@ -2906,7 +2951,7 @@
   along with ClutTeX.  If not, see <http://www.gnu.org/licenses/>.
 ]]
 
-CLUTTEX_VERSION = "v0.5"
+CLUTTEX_VERSION = "v0.5.1"
 
 -- Standard libraries
 local coroutine = coroutine

Modified: trunk/Master/texmf-dist/doc/support/cluttex/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/support/cluttex/CHANGELOG.md	2021-11-05 22:04:10 UTC (rev 60963)
+++ trunk/Master/texmf-dist/doc/support/cluttex/CHANGELOG.md	2021-11-05 22:05:00 UTC (rev 60964)
@@ -1,3 +1,11 @@
+Version 0.5.1 (2021-11-04)
+-----
+
+Changes:
+
+* Support terminal detection on more platforms (especially on Apple Silicon)
+* Support newer l3backend ([Issue #5](https://github.com/minoki/cluttex/issues/5), thanks to @gksato)
+
 Version 0.5 (2020-02-06)
 -----
 

Modified: trunk/Master/texmf-dist/doc/support/cluttex/Makefile
===================================================================
--- trunk/Master/texmf-dist/doc/support/cluttex/Makefile	2021-11-05 22:04:10 UTC (rev 60963)
+++ trunk/Master/texmf-dist/doc/support/cluttex/Makefile	2021-11-05 22:05:00 UTC (rev 60964)
@@ -35,6 +35,6 @@
 	lua build.lua --windows-batchfile $@
 	lua checkglobal.lua $@
 
-archive:
+archive: all
 	git archive --format=tar --prefix=cluttex/ -o cluttex.tar HEAD
 	gzip -k9 cluttex.tar

Modified: trunk/Master/texmf-dist/doc/support/cluttex/bin/cluttex.bat
===================================================================
--- trunk/Master/texmf-dist/doc/support/cluttex/bin/cluttex.bat	2021-11-05 22:04:10 UTC (rev 60963)
+++ trunk/Master/texmf-dist/doc/support/cluttex/bin/cluttex.bat	2021-11-05 22:05:00 UTC (rev 60964)
@@ -1372,7 +1372,7 @@
 end
 package.preload["texrunner.handleoption"] = function(...)
 local COPYRIGHT_NOTICE = [[
-Copyright (C) 2016-2020  ARATA Mizuki
+Copyright (C) 2016-2021  ARATA Mizuki
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -1896,6 +1896,7 @@
   -- Try LuaJIT-like FFI
   local succ, M = pcall(function()
       local ffi = require "ffi"
+      assert(ffi.os ~= "" and ffi.arch ~= "", "ffi library is stub")
       ffi.cdef[[
 int isatty(int fd);
 int fileno(void *stream);
@@ -1941,9 +1942,26 @@
     end
   end
 
+  -- Fallback using system command
+  return {
+    isatty = function(file)
+      local fd
+      if file == io.stdin then
+        fd = 0
+      elseif file == io.stdout then
+        fd = 1
+      elseif file == io.stderr then
+        fd = 2
+      else
+        return false
+      end
+      local result = os.execute(string.format("test -t %d", fd))
+      return result == true or result == 0
+    end,
+  }
+
 else
   -- Try LuaJIT
-  -- TODO: Try to detect MinTTY using GetFileInformationByHandleEx
   local succ, M = pcall(function()
       local ffi = require "ffi"
       local bitlib = assert(bit32 or bit, "Neither bit32 (Lua 5.2) nor bit (LuaJIT) found") -- Lua 5.2 or LuaJIT
@@ -2733,35 +2751,53 @@
 local right_values = {
   dvips = {
     graphics = "dvips",
-    expl3    = "dvips",
+    expl3    = {
+      old = "dvips",
+      new = "dvips",
+    },
     hyperref = "dvips",
     xypic    = "dvips",
   },
   dvipdfmx = {
     graphics = "dvipdfmx",
-    expl3    = "dvipdfmx",
+    expl3    = {
+      old = "dvipdfmx",
+      new = "dvipdfmx",
+    },
     hyperref = "dvipdfmx",
     xypic    = "pdf",
   },
   dvisvgm = {
     graphics = "dvisvgm",
-    expl3    = "dvisvgm",
+    expl3    = {
+      old = "dvisvgm",
+      new = "dvisvgm",
+    },
   },
   xetex = {
     graphics = "xetex",
-    expl3    = "xdvipdfmx",
+    expl3    = {
+      old = "xdvipdfmx",
+      new = "xetex",
+    },
     hyperref = "xetex",
     xypic    = "pdf",
   },
   pdftex = {
     graphics = "pdftex",
-    expl3    = "pdfmode",
+    expl3    = {
+      old = "pdfmode",
+      new = "pdftex",
+    },
     hyperref = "pdftex",
     xypic    = "pdf",
   },
   luatex = {
     graphics = "luatex",
-    expl3    = "pdfmode",
+    expl3    = {
+      old = "pdfmode",
+      new = "luatex",
+    },
     hyperref = "luatex",
     xypic    = "pdf",
   },
@@ -2800,18 +2836,24 @@
       graphics_driver = "unknown"
     end
   end
-  local expl3_driver = nil -- "pdfmode" | "dvisvgm" | "xdvipdfmx" | "dvipdfmx" | "dvips" | "unknown"
-  if loaded["expl3-code.tex"] or loaded["expl3.sty"] or loaded["l3backend-dvips.def"] or loaded["l3backend-dvipdfmx.def"] or loaded["l3backend-xdvipdfmx.def"] or loaded["l3backend-pdfmode.def"] then
+  local expl3_driver = nil -- "pdfmode" | "dvisvgm" | "xdvipdfmx" | "dvipdfmx" | "dvips" | "pdftex" | "luatex" | "xetex" | "unknown"
+  if loaded["expl3-code.tex"] or loaded["expl3.sty"] or loaded["l3backend-dvips.def"] or loaded["l3backend-dvipdfmx.def"] or loaded["l3backend-xdvipdfmx.def"] or loaded["l3backend-pdfmode.def"] or loaded["l3backend-pdftex.def"] or loaded["l3backend-luatex.def"] or loaded["l3backend-xetex.def"] then
     if loaded["l3backend-pdfmode.def"] then
-      expl3_driver = "pdfmode" -- pdftex, luatex
+      expl3_driver = "pdfmode" -- pdftex, luatex in older l3backend
     elseif loaded["l3backend-dvisvgm.def"] then
       expl3_driver = "dvisvgm"
     elseif loaded["l3backend-xdvipdfmx.def"] then
-      expl3_driver = "xdvipdfmx"
+      expl3_driver = "xdvipdfmx" -- xetex in older l3backend
     elseif loaded["l3backend-dvipdfmx.def"] then
       expl3_driver = "dvipdfmx"
     elseif loaded["l3backend-dvips.def"] then
       expl3_driver = "dvips"
+    elseif loaded["l3backend-pdftex.def"] then
+      expl3_driver = "pdftex"
+    elseif loaded["l3backend-luatex.def"] then
+      expl3_driver = "luatex"
+    elseif loaded["l3backend-xetex.def"] then
+      expl3_driver = "xetex"
     else
       -- TODO: driver=latex2e?
       expl3_driver = "unknown"
@@ -2860,9 +2902,12 @@
     message.diag("The driver option for graphics(x)/color is missing or wrong.")
     message.diag("Consider setting '", expected.graphics, "' option.")
   end
-  if expl3_driver ~= nil and expected.expl3 ~= nil and expl3_driver ~= expected.expl3 then
+  if expl3_driver ~= nil and expected.expl3 ~= nil and expl3_driver ~= expected.expl3.old and expl3_driver ~= expected.expl3.new then
     message.diag("The driver option for expl3 is missing or wrong.")
-    message.diag("Consider setting 'driver=", expected.expl3, "' option when loading expl3.")
+    message.diag("Consider setting 'driver=", expected.expl3.new, "' option when loading expl3.")
+    if expected.expl3.old ~= expected.expl3.new then
+      message.diag("You might need to instead set 'driver=", expected.expl3.old, "' if you are using an older version of expl3.")
+    end
   end
   if hyperref_driver ~= nil and expected.hyperref ~= nil and hyperref_driver ~= expected.hyperref then
     message.diag("The driver option for hyperref is missing or wrong.")
@@ -2891,7 +2936,7 @@
 }
 end
 --[[
-  Copyright 2016-2020 ARATA Mizuki
+  Copyright 2016-2021 ARATA Mizuki
 
   This file is part of ClutTeX.
 
@@ -2909,7 +2954,7 @@
   along with ClutTeX.  If not, see <http://www.gnu.org/licenses/>.
 ]]
 
-CLUTTEX_VERSION = "v0.5"
+CLUTTEX_VERSION = "v0.5.1"
 
 -- Standard libraries
 local coroutine = coroutine

Modified: trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex-ja.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex-ja.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex-ja.tex	2021-11-05 22:04:10 UTC (rev 60963)
+++ trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex-ja.tex	2021-11-05 22:05:00 UTC (rev 60964)
@@ -2,17 +2,18 @@
 \usepackage[unicode]{hyperref}
 \usepackage{jslogo} % for \BibTeX
 \usepackage{amsmath}
+\usepackage[nameinlink]{cleveref}
 \newcommand\ClutTeX{Clut\TeX}
 \newcommand\texcmd[1]{\texttt{\textbackslash #1}}
 \newcommand\texenv[1]{\texttt{#1}}
 \newcommand\texpkg[1]{\texttt{#1}}
 \newcommand\metavar[1]{\textsf{#1}}
-\renewcommand\sectionautorefname{セクション}
-\renewcommand\subsectionautorefname{サブセクション}
+\crefformat{section}{#2セクション#1#3}
+\crefformat{subsection}{#2サブセクション#1#3}
 
-\title{\ClutTeX{}マニュアル\\(バージョン0.5)}
+\title{\ClutTeX{}マニュアル\\(バージョン0.5.1)}
 \author{ARATA Mizuki}
-\date{2020年2月6日}
+\date{2021年11月4日}
 
 \begin{document}
 \maketitle
@@ -74,7 +75,7 @@
 \item[\texttt{--watch}]
   入力ファイルを監視する。
   別途、\texttt{fswatch}プログラムまたは\texttt{inotifywait}プログラムが必要となる場合がある。
-  詳しくは\autoref{sec:watch-mode}を参照。
+  詳しくは\cref{sec:watch-mode}を参照。
 \item[\texttt{--color[=\metavar{WHEN}]}]
   ターミナルへの出力を色付けする。
   \metavar{WHEN}は\texttt{always}, \texttt{auto}, \texttt{never}のいずれかを指定する。
@@ -127,7 +128,7 @@
 \item[\texttt{--synctex=\metavar{NUMBER}}]
   Sync\TeX{}用のファイルを生成する。
   注意点として、\texttt{.synctex.gz}ファイルは\texttt{.pdf}ファイルと同じディレクトリに生成される。
-  詳しくは\autoref{sec:synctex}を参照。
+  詳しくは\cref{sec:synctex}を参照。
 \item[\texttt{--[no-]file-line-error}]
   デフォルト:Yes
 \item[\texttt{--[no-]halt-on-error}]
@@ -176,7 +177,7 @@
 しかし、\texcmd{includeonly}コマンドを\TeX{}ソース中に記述していちいち切り替えるのは面倒である。
 
 そこで、\ClutTeX{}では\texcmd{includeonly}コマンドを\texttt{--includeonly}オプションによって指定できるようにした。
-使用例は\autoref{sec:makefile-example}を参照せよ。
+使用例は\cref{sec:makefile-example}を参照せよ。
 
 Tips: \texttt{includeonly}を使用する際は、\texttt{--makeindex}等のオプションは使用しない方が良い。
 

Modified: trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex.tex	2021-11-05 22:04:10 UTC (rev 60963)
+++ trunk/Master/texmf-dist/doc/support/cluttex/doc/cluttex.tex	2021-11-05 22:05:00 UTC (rev 60964)
@@ -8,9 +8,9 @@
 \newcommand\texpkg[1]{\texttt{#1}}
 \newcommand\metavar[1]{\textnormal{\textsf{#1}}}
 
-\title{\ClutTeX\ manual\\(Version 0.5)}
+\title{\ClutTeX\ manual\\(Version 0.5.1)}
 \author{ARATA Mizuki}
-\date{2020-02-06}
+\date{2021-11-04}
 
 \begin{document}
 \maketitle

Modified: trunk/Master/texmf-dist/doc/support/cluttex/src/cluttex.lua
===================================================================
--- trunk/Master/texmf-dist/doc/support/cluttex/src/cluttex.lua	2021-11-05 22:04:10 UTC (rev 60963)
+++ trunk/Master/texmf-dist/doc/support/cluttex/src/cluttex.lua	2021-11-05 22:05:00 UTC (rev 60964)
@@ -1,6 +1,6 @@
 #!/usr/bin/env texlua
 --[[
-  Copyright 2016-2020 ARATA Mizuki
+  Copyright 2016-2021 ARATA Mizuki
 
   This file is part of ClutTeX.
 
@@ -18,7 +18,7 @@
   along with ClutTeX.  If not, see <http://www.gnu.org/licenses/>.
 ]]
 
-CLUTTEX_VERSION = "v0.5"
+CLUTTEX_VERSION = "v0.5.1"
 
 -- Standard libraries
 local table = table

Modified: trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/checkdriver.lua
===================================================================
--- trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/checkdriver.lua	2021-11-05 22:04:10 UTC (rev 60963)
+++ trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/checkdriver.lua	2021-11-05 22:05:00 UTC (rev 60964)
@@ -26,35 +26,53 @@
 local right_values = {
   dvips = {
     graphics = "dvips",
-    expl3    = "dvips",
+    expl3    = {
+      old = "dvips",
+      new = "dvips",
+    },
     hyperref = "dvips",
     xypic    = "dvips",
   },
   dvipdfmx = {
     graphics = "dvipdfmx",
-    expl3    = "dvipdfmx",
+    expl3    = {
+      old = "dvipdfmx",
+      new = "dvipdfmx",
+    },
     hyperref = "dvipdfmx",
     xypic    = "pdf",
   },
   dvisvgm = {
     graphics = "dvisvgm",
-    expl3    = "dvisvgm",
+    expl3    = {
+      old = "dvisvgm",
+      new = "dvisvgm",
+    },
   },
   xetex = {
     graphics = "xetex",
-    expl3    = "xdvipdfmx",
+    expl3    = {
+      old = "xdvipdfmx",
+      new = "xetex",
+    },
     hyperref = "xetex",
     xypic    = "pdf",
   },
   pdftex = {
     graphics = "pdftex",
-    expl3    = "pdfmode",
+    expl3    = {
+      old = "pdfmode",
+      new = "pdftex",
+    },
     hyperref = "pdftex",
     xypic    = "pdf",
   },
   luatex = {
     graphics = "luatex",
-    expl3    = "pdfmode",
+    expl3    = {
+      old = "pdfmode",
+      new = "luatex",
+    },
     hyperref = "luatex",
     xypic    = "pdf",
   },
@@ -93,18 +111,24 @@
       graphics_driver = "unknown"
     end
   end
-  local expl3_driver = nil -- "pdfmode" | "dvisvgm" | "xdvipdfmx" | "dvipdfmx" | "dvips" | "unknown"
-  if loaded["expl3-code.tex"] or loaded["expl3.sty"] or loaded["l3backend-dvips.def"] or loaded["l3backend-dvipdfmx.def"] or loaded["l3backend-xdvipdfmx.def"] or loaded["l3backend-pdfmode.def"] then
+  local expl3_driver = nil -- "pdfmode" | "dvisvgm" | "xdvipdfmx" | "dvipdfmx" | "dvips" | "pdftex" | "luatex" | "xetex" | "unknown"
+  if loaded["expl3-code.tex"] or loaded["expl3.sty"] or loaded["l3backend-dvips.def"] or loaded["l3backend-dvipdfmx.def"] or loaded["l3backend-xdvipdfmx.def"] or loaded["l3backend-pdfmode.def"] or loaded["l3backend-pdftex.def"] or loaded["l3backend-luatex.def"] or loaded["l3backend-xetex.def"] then
     if loaded["l3backend-pdfmode.def"] then
-      expl3_driver = "pdfmode" -- pdftex, luatex
+      expl3_driver = "pdfmode" -- pdftex, luatex in older l3backend
     elseif loaded["l3backend-dvisvgm.def"] then
       expl3_driver = "dvisvgm"
     elseif loaded["l3backend-xdvipdfmx.def"] then
-      expl3_driver = "xdvipdfmx"
+      expl3_driver = "xdvipdfmx" -- xetex in older l3backend
     elseif loaded["l3backend-dvipdfmx.def"] then
       expl3_driver = "dvipdfmx"
     elseif loaded["l3backend-dvips.def"] then
       expl3_driver = "dvips"
+    elseif loaded["l3backend-pdftex.def"] then
+      expl3_driver = "pdftex"
+    elseif loaded["l3backend-luatex.def"] then
+      expl3_driver = "luatex"
+    elseif loaded["l3backend-xetex.def"] then
+      expl3_driver = "xetex"
     else
       -- TODO: driver=latex2e?
       expl3_driver = "unknown"
@@ -153,9 +177,12 @@
     message.diag("The driver option for graphics(x)/color is missing or wrong.")
     message.diag("Consider setting '", expected.graphics, "' option.")
   end
-  if expl3_driver ~= nil and expected.expl3 ~= nil and expl3_driver ~= expected.expl3 then
+  if expl3_driver ~= nil and expected.expl3 ~= nil and expl3_driver ~= expected.expl3.old and expl3_driver ~= expected.expl3.new then
     message.diag("The driver option for expl3 is missing or wrong.")
-    message.diag("Consider setting 'driver=", expected.expl3, "' option when loading expl3.")
+    message.diag("Consider setting 'driver=", expected.expl3.new, "' option when loading expl3.")
+    if expected.expl3.old ~= expected.expl3.new then
+      message.diag("You might need to instead set 'driver=", expected.expl3.old, "' if you are using an older version of expl3.")
+    end
   end
   if hyperref_driver ~= nil and expected.hyperref ~= nil and hyperref_driver ~= expected.hyperref then
     message.diag("The driver option for hyperref is missing or wrong.")

Modified: trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/handleoption.lua
===================================================================
--- trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/handleoption.lua	2021-11-05 22:04:10 UTC (rev 60963)
+++ trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/handleoption.lua	2021-11-05 22:05:00 UTC (rev 60964)
@@ -1,5 +1,5 @@
 local COPYRIGHT_NOTICE = [[
-Copyright (C) 2016-2020  ARATA Mizuki
+Copyright (C) 2016-2021  ARATA Mizuki
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by

Modified: trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/isatty.lua
===================================================================
--- trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/isatty.lua	2021-11-05 22:04:10 UTC (rev 60963)
+++ trunk/Master/texmf-dist/doc/support/cluttex/src/texrunner/isatty.lua	2021-11-05 22:05:00 UTC (rev 60964)
@@ -21,6 +21,7 @@
   -- Try LuaJIT-like FFI
   local succ, M = pcall(function()
       local ffi = require "ffi"
+      assert(ffi.os ~= "" and ffi.arch ~= "", "ffi library is stub")
       ffi.cdef[[
 int isatty(int fd);
 int fileno(void *stream);
@@ -66,9 +67,26 @@
     end
   end
 
+  -- Fallback using system command
+  return {
+    isatty = function(file)
+      local fd
+      if file == io.stdin then
+        fd = 0
+      elseif file == io.stdout then
+        fd = 1
+      elseif file == io.stderr then
+        fd = 2
+      else
+        return false
+      end
+      local result = os.execute(string.format("test -t %d", fd))
+      return result == true or result == 0
+    end,
+  }
+
 else
   -- Try LuaJIT
-  -- TODO: Try to detect MinTTY using GetFileInformationByHandleEx
   local succ, M = pcall(function()
       local ffi = require "ffi"
       local bitlib = assert(bit32 or bit, "Neither bit32 (Lua 5.2) nor bit (LuaJIT) found") -- Lua 5.2 or LuaJIT

Modified: trunk/Master/texmf-dist/scripts/cluttex/cluttex.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/cluttex/cluttex.lua	2021-11-05 22:04:10 UTC (rev 60963)
+++ trunk/Master/texmf-dist/scripts/cluttex/cluttex.lua	2021-11-05 22:05:00 UTC (rev 60964)
@@ -1369,7 +1369,7 @@
 end
 package.preload["texrunner.handleoption"] = function(...)
 local COPYRIGHT_NOTICE = [[
-Copyright (C) 2016-2020  ARATA Mizuki
+Copyright (C) 2016-2021  ARATA Mizuki
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -1893,6 +1893,7 @@
   -- Try LuaJIT-like FFI
   local succ, M = pcall(function()
       local ffi = require "ffi"
+      assert(ffi.os ~= "" and ffi.arch ~= "", "ffi library is stub")
       ffi.cdef[[
 int isatty(int fd);
 int fileno(void *stream);
@@ -1938,9 +1939,26 @@
     end
   end
 
+  -- Fallback using system command
+  return {
+    isatty = function(file)
+      local fd
+      if file == io.stdin then
+        fd = 0
+      elseif file == io.stdout then
+        fd = 1
+      elseif file == io.stderr then
+        fd = 2
+      else
+        return false
+      end
+      local result = os.execute(string.format("test -t %d", fd))
+      return result == true or result == 0
+    end,
+  }
+
 else
   -- Try LuaJIT
-  -- TODO: Try to detect MinTTY using GetFileInformationByHandleEx
   local succ, M = pcall(function()
       local ffi = require "ffi"
       local bitlib = assert(bit32 or bit, "Neither bit32 (Lua 5.2) nor bit (LuaJIT) found") -- Lua 5.2 or LuaJIT
@@ -2730,35 +2748,53 @@
 local right_values = {
   dvips = {
     graphics = "dvips",
-    expl3    = "dvips",
+    expl3    = {
+      old = "dvips",
+      new = "dvips",
+    },
     hyperref = "dvips",
     xypic    = "dvips",
   },
   dvipdfmx = {
     graphics = "dvipdfmx",
-    expl3    = "dvipdfmx",
+    expl3    = {
+      old = "dvipdfmx",
+      new = "dvipdfmx",
+    },
     hyperref = "dvipdfmx",
     xypic    = "pdf",
   },
   dvisvgm = {
     graphics = "dvisvgm",
-    expl3    = "dvisvgm",
+    expl3    = {
+      old = "dvisvgm",
+      new = "dvisvgm",
+    },
   },
   xetex = {
     graphics = "xetex",
-    expl3    = "xdvipdfmx",
+    expl3    = {
+      old = "xdvipdfmx",
+      new = "xetex",
+    },
     hyperref = "xetex",
     xypic    = "pdf",
   },
   pdftex = {
     graphics = "pdftex",
-    expl3    = "pdfmode",
+    expl3    = {
+      old = "pdfmode",
+      new = "pdftex",
+    },
     hyperref = "pdftex",
     xypic    = "pdf",
   },
   luatex = {
     graphics = "luatex",
-    expl3    = "pdfmode",
+    expl3    = {
+      old = "pdfmode",
+      new = "luatex",
+    },
     hyperref = "luatex",
     xypic    = "pdf",
   },
@@ -2797,18 +2833,24 @@
       graphics_driver = "unknown"
     end
   end
-  local expl3_driver = nil -- "pdfmode" | "dvisvgm" | "xdvipdfmx" | "dvipdfmx" | "dvips" | "unknown"
-  if loaded["expl3-code.tex"] or loaded["expl3.sty"] or loaded["l3backend-dvips.def"] or loaded["l3backend-dvipdfmx.def"] or loaded["l3backend-xdvipdfmx.def"] or loaded["l3backend-pdfmode.def"] then
+  local expl3_driver = nil -- "pdfmode" | "dvisvgm" | "xdvipdfmx" | "dvipdfmx" | "dvips" | "pdftex" | "luatex" | "xetex" | "unknown"
+  if loaded["expl3-code.tex"] or loaded["expl3.sty"] or loaded["l3backend-dvips.def"] or loaded["l3backend-dvipdfmx.def"] or loaded["l3backend-xdvipdfmx.def"] or loaded["l3backend-pdfmode.def"] or loaded["l3backend-pdftex.def"] or loaded["l3backend-luatex.def"] or loaded["l3backend-xetex.def"] then
     if loaded["l3backend-pdfmode.def"] then
-      expl3_driver = "pdfmode" -- pdftex, luatex
+      expl3_driver = "pdfmode" -- pdftex, luatex in older l3backend
     elseif loaded["l3backend-dvisvgm.def"] then
       expl3_driver = "dvisvgm"
     elseif loaded["l3backend-xdvipdfmx.def"] then
-      expl3_driver = "xdvipdfmx"
+      expl3_driver = "xdvipdfmx" -- xetex in older l3backend
     elseif loaded["l3backend-dvipdfmx.def"] then
       expl3_driver = "dvipdfmx"
     elseif loaded["l3backend-dvips.def"] then
       expl3_driver = "dvips"
+    elseif loaded["l3backend-pdftex.def"] then
+      expl3_driver = "pdftex"
+    elseif loaded["l3backend-luatex.def"] then
+      expl3_driver = "luatex"
+    elseif loaded["l3backend-xetex.def"] then
+      expl3_driver = "xetex"
     else
       -- TODO: driver=latex2e?
       expl3_driver = "unknown"
@@ -2857,9 +2899,12 @@
     message.diag("The driver option for graphics(x)/color is missing or wrong.")
     message.diag("Consider setting '", expected.graphics, "' option.")
   end
-  if expl3_driver ~= nil and expected.expl3 ~= nil and expl3_driver ~= expected.expl3 then
+  if expl3_driver ~= nil and expected.expl3 ~= nil and expl3_driver ~= expected.expl3.old and expl3_driver ~= expected.expl3.new then
     message.diag("The driver option for expl3 is missing or wrong.")
-    message.diag("Consider setting 'driver=", expected.expl3, "' option when loading expl3.")
+    message.diag("Consider setting 'driver=", expected.expl3.new, "' option when loading expl3.")
+    if expected.expl3.old ~= expected.expl3.new then
+      message.diag("You might need to instead set 'driver=", expected.expl3.old, "' if you are using an older version of expl3.")
+    end
   end
   if hyperref_driver ~= nil and expected.hyperref ~= nil and hyperref_driver ~= expected.hyperref then
     message.diag("The driver option for hyperref is missing or wrong.")
@@ -2888,7 +2933,7 @@
 }
 end
 --[[
-  Copyright 2016-2020 ARATA Mizuki
+  Copyright 2016-2021 ARATA Mizuki
 
   This file is part of ClutTeX.
 
@@ -2906,7 +2951,7 @@
   along with ClutTeX.  If not, see <http://www.gnu.org/licenses/>.
 ]]
 
-CLUTTEX_VERSION = "v0.5"
+CLUTTEX_VERSION = "v0.5.1"
 
 -- Standard libraries
 local coroutine = coroutine



More information about the tex-live-commits mailing list.