如何在 Windows 上的 LuaLaTeX 中使用 wxLua?

如何在 Windows 上的 LuaLaTeX 中使用 wxLua?

我在 LuaLateX 中使用 wxLua 遇到了一些问题。

这有效:

lua simpleui.lua

(打印而不是tex.print

但如果我尝试这样做:

lualatex wx.tex

它不起作用。

\documentclass{article}
\directlua{require("simpleui.lua")}
\usepackage{color}

\begin{document}
  {\Huge\color{\ChoicewxRadioBox} Test!}
\end{document}

错误:

在此处输入图片描述

simpleui.lua

require("wx")

frame = nil

function HandleEvents(event)
  local name = event:GetEventObject():DynamicCast("wxWindow"):GetName()
  print(string.format("\\global\\def\\Choice%s{%s}", name, event:GetString()))
end

function main()
  frame = wx.wxFrame(wx.NULL,
                     wx.wxID_ANY,
                     "Erstellen Sie Ihr PDF-Dokument mit LuaTeX",
                     wx.wxDefaultPosition,
                     wx.wxSize(185, 85),
                     wx.wxDEFAULT_FRAME_STYLE)
  local panel = wx.wxPanel(frame, wx.wxID_ANY)
  local choices = {"blue", "red", "green"}
  local radioBox = wx.wxRadioBox(panel,
                                 wx.wxID_ANY,
                                 "Farbe",
                                 wx.wxDefaultPosition,
                                 wx.wxDefaultSize,
                                 choices, 1,wx.wxRA_SPECIFY_ROWS)
  frame:Connect(wx.wxID_ANY,
                wx.wxEVT_COMMAND_RADIOBOX_SELECTED,
                HandleEvents)
  frame:Show(true)
end

main()

wx.wxGetApp():MainLoop()

该文件夹包含以下文件:

  • lua51.dll
  • lua5.1.dll
  • simpleui.lua
  • wx.tex
  • wx.dll

我正在使用 Lua 5.1 和 LuaTeX beta-0.70.2(MikTeX 2.9)。

texlua simpleui.lua不起作用:

在此处输入图片描述

示例在第24页:

http://www.dante.de/events/Archiv/dante2012/Programm/Vortraege/vortrag-meigen.pdf

编辑:我能够在 Linux 上编译 wxlua 库并且它可以工作,但我仍然没有针对 Windows 的任何解决方案。

答案1

德国消息人士称%1 is not a valid Win32 application

也许您首先快速检查所有 wx 模块文件(可能是“wc*.*”?),看它们是否看起来像通常的 DLL 文件。

PATH直接运行时lua和在lualuatex 内部执行时很可能有不同的环境设置(尤其是)。

然后可能会发现不同的版本:1. 此刻已经加载的内容(DLL 文件和 lua 本身);2. 将要加载的内容。

控制住它。

较长的回答首先建议查找您拥有的 DLL 文件的不同版本(包括 lua.exe 本身与 luatex 中构建的 lua)。

然后,您应该比较命令行上的环境变量和 luatex 启动的 DLL 可用的环境变量。可以从 luatex 内部简单地执行命令提示符(以交互方式或非交互方式)。创建AAA.BAT 包含

echo I AM HERE
SET
echo I-would  lua someprog.lua
ehoo I-would  lua simpleui.lua

并使其从 TeX 文件内部执行。检查您看到的I AM HERE,思考输出的内容SET,然后开始测试如果您首先删除echo I-would-- 会发生什么,对于一些简单的 someprog.lua。

这两个文件也lua51.dll可能lua5.1.dll是问题的一部分。当前目录中的 DLL 加载有时可以完成,有时则不能。

相关内容