当前的 lualibs 是否损坏?

当前的 lualibs 是否损坏?

在最新更新到 MiKTeX 2.9 后,我的 luatex 安装似乎已损坏。我尝试跟踪错误,但不确定这是错误还是其他奇怪的问题。

生成的文件lualibs.lua如下所示:

-- 
--  This is file `lualibs.lua',
--  generated with the docstrip utility.
-- 
--  The original source files were:
-- 
--  lualibs.dtx  (with options: `lualibs')
--  This is a generated file.
--  
--  Copyright (C) 2009 by PRAGMA ADE / ConTeXt Development Team
--  
--  See ConTeXt's mreadme.pdf for the license.
--  
--  This work consists of the main source file lualibs.dtx
--  and the derived file lualibs.lua.
--  
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  By default, \identifier{lualibs} will not load the libraries individually.
  Instead, it includes two \emphasis{merged packages} that have been compiled
  from the original files.
  This is achieved by means of \identifier{mtx-package}, a script for bundling
  \LUA code shipped with \CONTEXT.
  This concatenates the code of several \LUA files into a single file that is
  both easier to distribute and loading (marginally) faster.
  \identifier{mtx-package} ensures that the code from each file gets its
  own closure and strips newlines and comments, resulting in a smaller payload.
  Another package that relies on it heavily is the font loader as contained in
  \identifier{luaotfload} and \identifier{luatex-fonts}.

  If \CONTEXT is installed on the system, the merge files can be created
  by running:

  \begin{quote}\begin{verbatim}
    mtxrun --script package --merge lualibs-basic.lua
    mtxrun --script package --merge lualibs-extended.lua
  \end{verbatim}\end{quote}

  \noindent
  Of course there is a make target for that:

  \begin{quote}\begin{verbatim}
    make merge
  \end{verbatim}\end{quote}
  \noindent
  will take care of assembling the packages from the files distributed with
  \identifier{lualibs}.

  For this to work, the syntax of the \LUA file needs to be well-formed:
  files that should be merged must be included via a function
  \verb|loadmodule()|.
  It doesn’t matter if the function actually does something; a dummy will
  suffice.
  Also, the argument to \verb|loadmodule()| must be wrapped in parentheses.
  This rule is quite convenient, actually, since it allows excluding files
  from the merge while still using \verb|loadmodule()| consistently.

  \begin{quote}\begin{verbatim}
    ...
    loadmodule("my-lua-file.lua") -- <= will be merged
    loadmodule('my-2nd-file.lua') -- <= will be merged
    loadmodule "my-3rd-file.lua"  -- <= will be ignored
    ...
  \end{verbatim}\end{quote}

  Note that there is one exception to the packaging:
  \fileent{lualibs-util-jsn.lua} cannot be successfully packaged because
  it follows a different coding convention, returning a \LUA table on exit.
  Therefore, the file is loaded separately as part of the \identifier{extended}
  set like any other \LUA module.

-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lualibs = lualibs or { }

lualibs.module_info = {
  name          = "lualibs",
  version       = 2.00,
  date          = "2013/04/30",
  description   = "ConTeXt Lua standard libraries.",
  author        = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux & Philipp Gesang",
  copyright     = "PRAGMA ADE / ConTeXt Development Team",
  license       = "See ConTeXt's mreadme.pdf for the license",
}


config           = config or { }
config.lualibs   = config.lualibs or { }

if config.lualibs.prefer_merged == nil then
  lualibs.prefer_merged = true
end
if config.lualibs.load_extended == nil then
  lualibs.load_extended = true
end
config.lualibs.verbose = config.lualibs.verbose == false


local dofile          = dofile
local kpsefind_file   = kpse.find_file
local stringformat    = string.format
local texiowrite_nl   = texio.write_nl

local find_file, error, warn, info
do
  local _error, _warn, _info
  if luatexbase and luatexbase.provides_module then
    _error, _warn, _info = luatexbase.provides_module(lualibs.module_info)
  else
    _error, _warn, _info = texiowrite_nl, texiowrite_nl, texiowrite_nl
  end

  if lualibs.verbose then
    error, warn, info = _error, _warn, _info
  else
    local dummylogger = function ( ) end
    error, warn, info = _error, dummylogger, dummylogger
  end
  lualibs.error, lualibs.warn, lualibs.info = error, warn, info
end

if luatexbase and luatexbase.find_file then
  find_file = luatexbase.find_file
else
  kpse.set_program_name"luatex"
  find_file = kpsefind_file
end


local loadmodule = loadmodule or function (name, t)
  if not t then t = "library" end
  local filepath  = find_file(name, "lua")
  if not filepath or filepath == "" then
    warn(stringformat("Could not locate %s “%s”.", t, name))
    return false
  end
  dofile(filepath)
  return true
end

lualibs.loadmodule = loadmodule


if lualibs.basic_loaded ~= true then
  loadmodule"lualibs-basic.lua"
  loadmodule"lualibs-compat.lua" --- restore stuff gone since v1.*
end

if  lualibs.load_extended   == true
and lualibs.extended_loaded ~= true then
  loadmodule"lualibs-extended.lua"
end

--- This restores the default of loading everything should a package
--- have requested otherwise. Will be gone once there is a canonical
--- interface for parameterized loading of libraries.
lualibs.load_extended = true

-- vim:tw=71:sw=2:ts=2:expandtab

-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- 
--  End of File `lualibs.lua'.

据我所知,这不是一个有效的 lua 文件,因此所有依赖于此的文件(例如)都会失败。我尝试从 CTANmkluatexfontdb获取当前版本并启动,但最终得到的是相同的文件。lualibstex lualibs.dtxlualibs.lua

这是一个错误还是其他什么?

相关内容