我在 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
和在lua
luatex 内部执行时很可能有不同的环境设置(尤其是)。
然后可能会发现不同的版本: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 加载有时可以完成,有时则不能。