なぜ Lua に興味を持つべきなのでしょうか?

なぜ Lua に興味を持つべきなのでしょうか?

私は TeX に慣れてからずっと LuaLaTex を使っています。これは、本当に必要なシステム フォントを簡単に使用できるからです。TeX のフォント パッケージはロシア語の友ではありますが、ロシアLua語の友ではありません。

ここでいくつか例を見つけました:LuaTeX で実行できる簡単な例は何ですか?、しかし、何ができるのかまだ完全には理解していませんLua

そこで私の質問は次のとおりです。

  • TeX 用に特別に設計されたものでしょうかLua、それとも単に TeX で実装できるプログラミング言語なのでしょうか?回答: これは単なるプログラミング言語であり、TeX に固有のものではありません。
  • 組版ではどのように使用できますか? 何らかのパッケージの代わりに使用できますか?
  • OS に依存しますか? つまり、Windows で使用する場合に何か特別なことはありますか?
  • ラテン文字以外の文字でも動作しますか?答え:はい。

答え1

あなたは、とりわけ次のように尋ねました:

[Lua] はタイプセッティングで何に使用できますか? 何らかのパッケージの代わりに使用できますか?

  • いくつかの組版作業はLuaTeXでしか実行できませんが、pdfTeXやXeTeXでは実行できません。必要とするLuaLaTeX では目的を達成できませんでした。これらのパッケージは、pdfLaTeX や XeLaTeX ではまったく記述できませんでした。例としては、パッケージshowhyphensselnoligパッケージがあります。(完全な開示: 私はパッケージの主な作成者ですselnolig。)

  • いくつかのタイプセッティング作業は、pdfLaTeXやXeLaTeXよりもLuaLaTeXで簡単に(または少なくとも手間をかけずに)実行できます。たとえば、次の2つのコードチャンク(投稿から)を比較してください。TEX における算術一時変数どちらの場合も、マクロは\StrMid文字列から部分文字列を抽出するために使用されます。

    \usepackage{luacode} % for "\luastring" macro
    \newcommand\StrMid[3]{\directlua{tex.sprint(string.sub(\luastring{#1},#2,#3))}}
    

    \usepackage{xparse}
    \ExplSyntaxOn
    \NewExpandableDocumentCommand{\StrMid}{mmm}
     {
      \tl_map_function:fN { \tl_range:onn { #1 } { #2 } { #3 } } \use:n
     }
    \cs_generate_variant:Nn \tl_map_function:nN { f }
    \cs_generate_variant:Nn \tl_range:nnn { o }
    \ExplSyntaxOff
    

    これら 2 つのコードを比較することで、LaTeX3 コードの作者を軽視するつもりはまったくありません。まったく違います! 私が言いたいのは、Lua をほんの少し知っていれば、いくつかのタスクをかなり簡単に実行できるということを示したいだけです。これは特に文字列の操作に当てはまります。Lua には強力な文字列処理関数が数多く用意されているからです。

  • 最新のプログラミング言語の使用には慣れているものの、マクロ拡張言語の細かい点をすべて完全に習得したことがない場合は (私自身、この点については有罪を認めざるを得ませんが...)、Lua コードと、LuaTeX に組み込まれている Lua と TeX 間の明確なインターフェイスを使用すると、いくつかの重要なタイプセット タスクをプログラムする方がはるかに簡単になることがわかるでしょう。

答え2

Lua は、簡単に組み込める小型の仮想マシン (たとえば Java JVM よりもはるかに小さい) で実行するように設計されたプログラミング言語であり、他のシステムに組み込むのに最適です (たとえば、いくつかのゲームの構成言語として使用されます)。

したがって、これは luatex 開発者によって開発されたものではなく (実際、Lua 自体は現在少なくともバージョン 5.3 であり、luatex に同梱されている Lua 5.2 バージョンよりも上位です)、適切な拡張言語として選択されたものです。

これは、TeXに組み込まれているアルゴリズムのいくつかを再実装するために使用できます。

ほぼOSに依存しない

はい、Luatex でわかるように、Unicode フォントと Unicode 文字列を処理できます (Unicode 文字列は UTF-8 エンコードとして公開されるため、1 つの単位は文字ではなくバイトです)

答え3

LuaLaTeX で何ができるかの例として、CSV データを LaTeX の表形式またはマトリックス形式に自動的に変換するスクリプトを作成しました。これは、ユーザーが TeX ファイル内のデータやシミュレーション結果を手動で更新する必要がなくなるため、ラボ レポートに非常に役立ちます。

https://gist.github.com/calebreister/8dd7ab503c91dea4dd2c499b9d004231

関連情報