LuaLaTeX 使用札记
LuaLaTeX 使用札记 LuaLaTeX 使用札记 LuaLaTeX 使用札记
LuaLaTeX 使用札记
LuaLaTeX 使用札记
LuaLaTeX 使用札记
作品简介

% !TEX program = LuaLaTeX % !Mode:: "TeX:UTF-8" \documentclass[12pt]{article} \usepackage{ctex} \usepackage{geometry} \geometry{a4paper,top=2.54cm,bottom=2.54cm,left=2.3cm,right=2.3cm} \usepackage{metalogox} \usepackage{luacode} \begin{luacode} function mytable () for deg = 0, 18, 3 do x = math.rad(deg) tex.print(string.format('%2d° & %1.8f & %1.8f & %1.8f & %1.8f & %1.8f & %1.8f \\', deg, x, math.sin(x), math.cos(x), math.tan(x), math.sinh(x), math.cosh(x))) end end \end{luacode} \newcommand{\mytable}{\luadirect{mytable()}} %%------------------- \usepackage{pgfplots} \usepgfplotslibrary{polar,colormaps} \pgfplotsset{compat=newest} \usepackage{luamplib} \usepackage{luacolor} \newcommand{\red}{\color{red}} \newcommand{\green}{\color{green}} \newcommand{\blue}{\color{blue}} \usepackage{listings} \usepackage{booktabs} %%------------------------------------------------ \usepackage{unicode-math} \usepackage{lualatex-math} \usepackage{verbatim} %%------------------------------------------------ \linespread{1.5} % 1.5倍行距 \newcommand{\me}{\mathrm{e}} \newcommand{\mi}{\mathrm{i}} \newcommand{\dif}{\mathop{}! \mathrm{d}} \DeclareSymbolFont{lettersA}{U}{pxmia}{m}{it} \DeclareMathSymbol{\piup}{\mathord}{lettersA}{"19} \begin{document} %%%%-------------------------------------------------------

\centerline{\huge \kaishu \color{magenta} \LuaLaTeX 使用札记} %%%%------------------------------------------------------- \section{引言} \LuaTeX 是作为带有Lua脚本引擎嵌入的pdfTeX版本发起的基于 \TeX 的电脑排版系统。经过一段时间的开发后被pdfTeX小组采纳作为pdfTeX的继任者.2019 年,Luigi Scarso 等人为 LuaTeX 添加了 HarfBuzz 库支持,构建了另一个分支 LuaHBTeX,随后,\LaTeX 的开发版本就改用它代替原来的 \LuaTeX,在 TeX Live 2020 中 LuaHBTeX 也将成为默认的 \LuaTeX 引擎.

测试环境:Texlive 2023, 为了能在\LuaLaTeX 中执行Lua 代码, 我们需要将Lua 代码包裹起来以和通常的\LaTeX 语句相区分, 为此\LuaLaTeX 提供了\verb|\directlua|语句, 时常我们需要将Lua执行后的结果显示出来, 我们可以使用\verb|tex.sprint()|函数或者 \verb|tex.print()|函数, 比如计算3的平方, 可以写成 \verb|\directlua{tex.print(3^2)}|, 结果显示\directlua{tex.print(3^2)}. 我们还可以将 Lua 代码塞到数学环境里,譬如输入

\verb|$\sqrt{3}=\luaexec{tex.sprint{string.format("\%.3f", math.sqrt(3))}} $|, 结果显示$\sqrt{3}=\luaexec{tex.sprint{string.format("\%.3f", math.sqrt(3))}} $ , \verb| \directlua | 这条语句适合特别简短的代码.要特别注意的是,如果编写的lua代码中有百分号,反斜杠等 \LaTeX 特殊符号时,这个命令就会出问题,即使在这些特殊符号前加反斜杠也没用.这时可使用\verb|\luaexec | 语句,当然了\LuaLaTeX 还提供了两个lua编程环境 \verb|luacode | 和 \verb|luacode* | ,用于在 \LaTeX 中编写较多的 lua代码.

一个典型的\LuaLaTeX 英文环境是这样的 \begin{verbatim} % !TEX program = LuaLaTeX % !Mode:: "TeX:UTF-8" \documentclass{article} \usepackage{metalogo}%LuaLaTeX的LOGO \begin{document} This is \LuaLaTeX \directlua{tex.sprint(math.sqrt(3))} \end{document} \end{verbatim} \input{wanba.tex}

\directlua{tex.sprint(os.date())} \end{document}

暂无评论