Difference between revisions of "LuaLaTeX"

From A-Eskwiki
Jump to: navigation, search
m (opsomming iets beter)
m (':' weggehaald, subkop overig nuttig)
 
Line 1: Line 1:
 
[[Category:TeXniCie]]
 
[[Category:TeXniCie]]
  
<h3> Compilen: </h3>
+
<h3> Compilen </h3>
 
Zet eerst je compiler op "PDFLuaLaTeX".
 
Zet eerst je compiler op "PDFLuaLaTeX".
 
In TeXstudio:
 
In TeXstudio:
Line 11: Line 11:
 
- op commando: Voeg in 'Build' een 'user command' toe, bijvoorbeeld user5:LuaCompile. Selecteer daarachter de moersleutel en kies daar LuaLaTeX en verwijder de 'unkown'. Nu is ALT+SHIFT+F5 een sneltoets om LuaLaTeX te compileren. Voor ALT+SHIFT+F3 gebruik je user3: ipv user5:.
 
- op commando: Voeg in 'Build' een 'user command' toe, bijvoorbeeld user5:LuaCompile. Selecteer daarachter de moersleutel en kies daar LuaLaTeX en verwijder de 'unkown'. Nu is ALT+SHIFT+F5 een sneltoets om LuaLaTeX te compileren. Voor ALT+SHIFT+F3 gebruik je user3: ipv user5:.
  
<h3> Lua basics: </h3>
+
<h3> Lua basics </h3>
 
Je begint een stuk Lua in LaTeX met \directlua{}. Met behulp van het luacode package kan dat ook met \begin{luacode} ... \end{luacode}, wat voor lange code handiger is. Het luacode package geeft ook luaexec.
 
Je begint een stuk Lua in LaTeX met \directlua{}. Met behulp van het luacode package kan dat ook met \begin{luacode} ... \end{luacode}, wat voor lange code handiger is. Het luacode package geeft ook luaexec.
 
Het verschil is wie de prioriteit krijgt qua compileren: eerst LaTeX, dan Lua of andersom. Zo wordt \luaexec niet eerst door LaTeX bekeken dus kun je er \\commando's in gebruiken. In \directlua moet je er dan een \noexpand o.i.d. voor gooien.
 
Het verschil is wie de prioriteit krijgt qua compileren: eerst LaTeX, dan Lua of andersom. Zo wordt \luaexec niet eerst door LaTeX bekeken dus kun je er \\commando's in gebruiken. In \directlua moet je er dan een \noexpand o.i.d. voor gooien.
Line 18: Line 18:
 
   meer commentaar --]] </code>.
 
   meer commentaar --]] </code>.
  
<h3> Escape Strings: </h3>
+
<h3> Escape Strings </h3>
 
Je schrijft binnen lua code tex output met behulp van tex.print("TEKST"); en gelijksoortig print je een een variabele met tex.print(var). Om in de LaTeX code tekens te krijgen, moet je er in Lua een backslash voor zetten. Zo wordt <code> tex.print("\\euro") </code> gecompileerd naar \euro in LaTeX.
 
Je schrijft binnen lua code tex output met behulp van tex.print("TEKST"); en gelijksoortig print je een een variabele met tex.print(var). Om in de LaTeX code tekens te krijgen, moet je er in Lua een backslash voor zetten. Zo wordt <code> tex.print("\\euro") </code> gecompileerd naar \euro in LaTeX.
 
Escape strings zijn in ieder geval nodig voor $, \, %, @, waarschijnlijk voor veel meer dingen.
 
Escape strings zijn in ieder geval nodig voor $, \, %, @, waarschijnlijk voor veel meer dingen.
  
<h3> Functies in lua: </h3>
+
<h3> Functies in lua </h3>
 
De volgende code maakt een functie met 2 argumenten (een string en een geheel getal) en print dan zo vaak als het gehele getal de string.
 
De volgende code maakt een functie met 2 argumenten (een string en een geheel getal) en print dan zo vaak als het gehele getal de string.
 
<code>
 
<code>
Line 38: Line 38:
 
</code>
 
</code>
  
<h3> Lua functies in LaTeX, en andersom: </h3>
+
<h3> Lua functies in LaTeX, en andersom </h3>
 
Gegeven een Lua functie foo(a, b).
 
Gegeven een Lua functie foo(a, b).
 
Dan kunnen we een LaTeX functie maken die foo aanroept, dat kan met:
 
Dan kunnen we een LaTeX functie maken die foo aanroept, dat kan met:
Line 58: Line 58:
 
Meer informatie met formats:
 
Meer informatie met formats:
 
https://www.gammon.com.au/scripts/doc.php?lua=string.format
 
https://www.gammon.com.au/scripts/doc.php?lua=string.format
 +
 +
<h3> Overig nuttig </h3>
 +
Strings samenvoegen gaat met '..', dus "Lua".."LaTeX" wordt "LuaLaTeX"

Latest revision as of 19:04, 5 May 2017


Compilen

Zet eerst je compiler op "PDFLuaLaTeX". In TeXstudio:

- voor een los bestand: Zet bovenaan  % !TeX program = lualatex

- voor alle bestanden: Verander de compiler in 'Build' in 'Options'->'Configure TeXstudio'.

- op commando: Voeg in 'Build' een 'user command' toe, bijvoorbeeld user5:LuaCompile. Selecteer daarachter de moersleutel en kies daar LuaLaTeX en verwijder de 'unkown'. Nu is ALT+SHIFT+F5 een sneltoets om LuaLaTeX te compileren. Voor ALT+SHIFT+F3 gebruik je user3: ipv user5:.

Lua basics

Je begint een stuk Lua in LaTeX met \directlua{}. Met behulp van het luacode package kan dat ook met \begin{luacode} ... \end{luacode}, wat voor lange code handiger is. Het luacode package geeft ook luaexec. Het verschil is wie de prioriteit krijgt qua compileren: eerst LaTeX, dan Lua of andersom. Zo wordt \luaexec niet eerst door LaTeX bekeken dus kun je er \\commando's in gebruiken. In \directlua moet je er dan een \noexpand o.i.d. voor gooien. Commentaar in een stuk lua doe je enkellijns met --commentaar en multilijn met

 --[[ commentaar
 meer commentaar --]] .

Escape Strings

Je schrijft binnen lua code tex output met behulp van tex.print("TEKST"); en gelijksoortig print je een een variabele met tex.print(var). Om in de LaTeX code tekens te krijgen, moet je er in Lua een backslash voor zetten. Zo wordt tex.print("\\euro") gecompileerd naar \euro in LaTeX. Escape strings zijn in ieder geval nodig voor $, \, %, @, waarschijnlijk voor veel meer dingen.

Functies in lua

De volgende code maakt een functie met 2 argumenten (een string en een geheel getal) en print dan zo vaak als het gehele getal de string.

 \begin{luacode}
 
 function printvaak(s, n)
 local i = 1
 while i <= n do
 tex.print(s,"\\newline") --De luacode environment komt uit de luacode package, dus hierin hebben we geen noexpands nodig.
 i = i + 1
 end --while
 end --function
 
 \end{luacode}

Lua functies in LaTeX, en andersom

Gegeven een Lua functie foo(a, b). Dan kunnen we een LaTeX functie maken die foo aanroept, dat kan met:

 \directlua{
   post(#1,#2)
 }

Een voorbeeld is de bovengenoemde printvaak functie, daarbij zouden we kunnen doen: \newcommand{\printvaak}[2]{\directlua{printvaak("#1", #2)}} Om een LaTeX commando te maken dat de tekst (eerste argument) zo vaak print als het tweede argument.

Andersom kunnen we een LaTeX functie bar{a}{b}{c} aanroepen in Lua met behulp van 'format'. Dit kan met:

 tex.print(
   string.format("\\bar{\%s}{\%s}{\%s}",a,b,c)
 )

Meer informatie met formats: https://www.gammon.com.au/scripts/doc.php?lua=string.format

Overig nuttig

Strings samenvoegen gaat met '..', dus "Lua".."LaTeX" wordt "LuaLaTeX"