首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Archlinux的LuaLaTeX与LuaSQL

基于Archlinux的LuaLaTeX与LuaSQL
EN

Stack Overflow用户
提问于 2017-08-20 23:40:57
回答 1查看 379关注 0票数 0

我正在处理一个LuaLaTeX文件,该文件将使用LuaSQL从我的数据库中获取数据。这是我想出的003-v1.tex003-v1.lua文件:

003-v1.tex文件:

代码语言:javascript
复制
\documentclass{article}
\usepackage{luacode}

% Lua kodo vpišemo v ločeno datoteko zaradi syntax highlithing
\directlua{dofile('003-v1.lua')}

\newcommand{\stranke}{\luadirect{stranke()}}

\begin{document}
    \begin{tabular}{ll}
        \hline
        id stranke & ime \\
        \hline
        \stranke
        \hline
    \end{tabular}
\end{document} 

003-v1.lua文件:

代码语言:javascript
复制
function stranke ()

    package.cpath = package.cpath .. ";/usr/lib/i386-linux-gnu/lua/5.1/?.so"
    luasql = require "luasql.mysql"

    env = assert (luasql.mysql())
    con = assert (env:connect("linux_krozki","root","mypassword"))
    cur = assert (con:execute("SELECT * FROM stranke"))

    vnos = cur:fetch ({}, "a")

    while vnos do

        print(
            string.format([[%s & %s \\]], vnos.id_stranke, vnos.ime)
        )
        vnos = cur:fetch (vnos, "a")

    end 

end

这个文件应该可以工作,但是当我试图使用lualatex 003-v1.tex编译时,我得到了错误:

代码语言:javascript
复制
This is LuaTeX, Version 1.0.4 (TeX Live 2017/Arch Linux) 
 restricted system commands enabled.
(./003-v1.tex
LaTeX2e <2017-04-15>
(using write cache: /home/ziga/.texlive/texmf-var/luatex-cache/generic)(using r
ead cache: /var/lib/texmf/luatex-cache/generic /home/ziga/.texlive/texmf-var/lu
atex-cache/generic)
luaotfload | main : initialization completed in 0.144 seconds
Babel <3.12> and hyphenation patterns for 1 language(s) loaded.
(/usr/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texmf-dist/tex/latex/base/size10.clo(load luc: /home/ziga/.texlive/
texmf-var/luatex-cache/generic/fonts/otl/lmroman10-regular.luc)))
(/usr/share/texmf-dist/tex/lualatex/luacode/luacode.sty
(/usr/share/texmf-dist/tex/generic/oberdiek/ifluatex.sty)
(/usr/share/texmf-dist/tex/luatex/luatexbase/luatexbase.sty
(/usr/share/texmf-dist/tex/luatex/ctablestack/ctablestack.sty))) (./003-v1.aux)
003-v1.lua:8: module 'luasql.mysql' not found:
        no field package.preload['luasql.mysql']
        [kpse lua searcher] file not found: 'luasql.mysql'
        [kpse C searcher] file not found: 'luasql.mysql'
        no file '/usr/local/lib/lua/5.2/luasql.so'
        no file '/usr/local/lib/lua/5.2/loadall.so'
        no file './luasql.so'
        no file '/usr/lib/i386-linux-gnu/lua/5.1/luasql.so'
stack traceback:
        [C]: in function 'require'
        003-v1.lua:8: in function 'stranke'
        [\directlua]:1: in main chunk.
\luadirect ... { \luacode@maybe@printdbg {#1} #1 }

l.14         \stranke

根据本题的说法,这个错误是因为LuaLaTeX不能加载模块luasql.mysql,而lua可以自己加载模块。我怎么知道这个?如果在用function stranke ()编译之前从003-v1.lua中注释掉第一行( lua 003-v1.lua )和最后一行(end),就会得到一个非常好的输出:

代码语言:javascript
复制
1 & Žiga \\
2 & Ranja \\
3 & Romana \\

因此,我的问题是,如何确保模块luasql.mysql在调用LuaLateX时加载?我在Archlinux上,正在使用文本直播。我听说人们在支持luasql的情况下重新编译了文本,但是找不到一步一步的指南.那就太棒了!如果有人已经编好了它,那就更好了。

以下是有关我的纺织品版本的信息:

代码语言:javascript
复制
[ziga@laptop ~]$ pacman -Qs tex | grep live
local/texlive-bibtexextra 2017.44915-1 (texlive-most)                                                                                                                          
local/texlive-bin 2017.44590-2                                                                                                                                                 
local/texlive-core 2017.44918-1 (texlive-most)
local/texlive-fontsextra 2017.44818-1 (texlive-most)
local/texlive-formatsextra 2017.44177-2 (texlive-most)
local/texlive-games 2017.44131-1 (texlive-most)
local/texlive-humanities 2017.44833-1 (texlive-most)
local/texlive-langchinese 2017.44333-1 (texlive-lang)
local/texlive-langcyrillic 2017.44895-1 (texlive-lang)
local/texlive-langextra 2017.44908-1 (texlive-lang)
local/texlive-langgreek 2017.44917-1 (texlive-lang)
local/texlive-langjapanese 2017.44914-1 (texlive-lang)
local/texlive-langkorean 2017.44467-1 (texlive-lang)
local/texlive-latexextra 2017.44907-1 (texlive-most)
local/texlive-music 2017.44885-1 (texlive-most)
local/texlive-pictures 2017.44899-1 (texlive-most)
local/texlive-pstricks 2017.44742-1 (texlive-most)
local/texlive-publishers 2017.44916-1 (texlive-most)
local/texlive-science 2017.44906-1 (texlive-most)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-31 10:14:39

在这个帖子发布后,我们在Archlinux论坛上找到了一个答案。看起来Lua语言存在一些内部问题-- package.cpath无法计算出问题标记,因此?.so不得不改为mysql.so。有人能解释为什么会发生这种事吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45787737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档