天地有情

[LuaLaTeX] LuaLaTeX ソースファイルに Luaスクリプトを取り込む

LuaLaTeX ソースファイルに Luaスクリプトを取り込む

Luaスクリプトの文法や特徴などは「検索」すれば,色々な
情報が得られますので,ここでは割愛させて頂きます.

さて,LuaLaTeX ソースファイルに Luaスクリプトを取り込むには,
どうすれば良いでしょうか.サンプルで確認してみようと思います.

● サンプル

  ソースファイル foo.tex
======================================================
01:  \documentclass{ltjsarticle}
02:  \usepackage{luacode}
03:  \begin{luacode*}
04:  function kasan(x)
05:  i=0 ; total=0
06:  while(i < x) do
07:  i=i+1 ; total=total+i
08:  end
09:  tex.print(total)
10:  end
11:  \end{luacode*}
12: 
13:  \newcommand\accumulate[1]{\luadirect{kasan(#1)}}
14: 
15:  \begin{document}
16:  (a) $1+2+3+\ldots + 98+99+100$ の
17:  総計は \accumulate{100} です.
18: 
19:  (b) $1+2+3+\ldots + 8+9+10$ の
20:  総計は \accumulate{10} です.
21:  \end{document}
======================================================

【説明】
01: クラスファイルは ltjsarticle を使います.ltjarticle でも構いません.
02: luacode パッケージの登録が必要です.
03と11: luacode*環境.この環境内に Luaスクリプトを記述します.
04~08: 関数 kasan(x) を定義.内容は while~end 文による ”累加算”です.
09: 累加算された結果を表示します.
13: LuaTeX側でLuaスクリプトとのインタフェースをとるためのコマンド\accumulateを定義します.
   (定義中の\luadirect{..}の代わりに,\luaexec{..}でも構いません.)
15~21: 本文になります.
16: \accumulate{100}の累加算を行います.---> 答えは 5050 になる.
19: \accumulate{10}の累加算を行います. --> 答えは 55 になる.

● コンパイル

  luajitlatex foo.tex

あるいは

  lualatex foo.tex

● 結果

  foo.pdfの内容

luacode.png


== おわり ==



スポンサーサイト
  1. 2014/02/21(金) 14:41:47|
  2. lualatex
  3. | トラックバック:0
  4. | コメント:0
<<[LualLaTeX] LuaLaTeX ソースファイルに Luaスクリプトを取り込む(2) | ホーム | lualatex用の日本語クラスファイル>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://konoyonohana.blog.fc2.com/tb.php/64-e527042e
この記事にトラックバックする(FC2ブログユーザー)