PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Microtype mit luaLaTeX (TL2010)



Amandus
22-06-2010, 16:43
Hallo,

mittlerweile hat sich einiges in der Entwicklung getan und ich versuche unter TL2010 Microtype zur Mitarbeit zu bewegen. Leider ohne Erfolg.

Hier steht auf Seite 7, daß Protrusion und Expansion verfügbar sein sollen:
http://www.ctan.org/tex-archive/macros/latex/contrib/microtype/microtype.pdf

Und neuerdings soll Fontspec auch für luaTeX arbeiten:
http://www.tex.ac.uk/tex-archive/macros/latex/contrib/fontspec/README

Kompiliert wird mit »lualatex test.tex«. Kann mir jemand sagen, warum von Microtype nichts zu bemerken ist?


\documentclass[fontsize=12pt]{scrartcl}
\usepackage{luaotfload}
\usepackage[EU2]{fontenc}
\usepackage{microtype}
\usepackage{lipsum}

\usepackage{fontspec}
\setromanfont[Ligatures=TeX]{Linux Libertine O}

\begin{document}
\lipsum
\end{document}

u_fischer
23-06-2010, 13:14
Also protrusion funktioniert, wenn man sie mit den Lowlevel-Befehlen aus luaoftload aktiviert
(z.B. \font\lmr={Latin Modern Roman:protrusion=default} at 12pt \lmr). Das Problem liegt also auf der fontspec-Seite. Soweit ich das sehe (und wenn ich eine Nachricht von Will von Anfang Juni richtig interpretiere), fehlt einfach noch die entsprechende Option. Es sieht aber so aus, als ließe sich die mit RawFeature oder \newfontfeature leicht nachrüsten:


\documentclass[fontsize=12pt]{scrartcl}
\usepackage{luaotfload}
\usepackage[EU2]{fontenc}
\usepackage{microtype}
\usepackage{lipsum}

\usepackage{fontspec}
\newfontfeature{Microtype}{protrusion=default;expa nsion=default;}

%\setmainfont[RawFeature={protrusion=default;expansion=default;} ,Ligatures=TeX]{Linux Libertine O}
\setmainfont[Microtype,Ligatures=TeX]{Linux Libertine O}
\begin{document}
\lipsum
\end{document}

Amandus
23-06-2010, 15:30
Das ist großartig - danach habe ich solange gesucht. Herzlichen Dank dafür!

Amandus
23-06-2010, 17:48
Eine Frage ist noch aufgetaucht: läßt sich der Wert von protrusion mit factor=500 irgendwo einstellen? Wohin ich factor auch gebe, es zeigt keine Wirkung.

u_fischer
23-06-2010, 18:45
Wenn ich Khaled richtig verstanden habe, wird vom microtype-Code für otf-Schriften eigentlich das Setzen von \pdfprotrudechars und \pdfadjustspacing benötigt.

In der Dokumentation von luaotfload wird beschrieben, wo die "default"-Tabelle definiert ist: in otfl-font-dum.lua in der Funktion/Tabelle
fonts.protrusions.setups['default'].

Du kannst dir diese Tabelle in eine Datei "prottest.lua" kopieren, 'default' in z.B. 'test' ändern und die Werte ändern. Dann kannst du diese neue Tabelle nutzen:


\documentclass[fontsize=12pt]{scrartcl}
\usepackage{luaotfload}
\usepackage[EU2]{fontenc}
%\usepackage{microtype}
\pdfprotrudechars2
\pdfadjustspacing2
\usepackage{lipsum}

\usepackage{fontspec}
\directlua{require("prottest.lua");}

\newfontfeature{Microtype}{protrusion=test;expansi on=default;}
\setmainfont[Microtype,Ligatures=TeX]{Linux Libertine O}

\begin{document}
\lipsum
\end{document}

Entsprechend kannst du natürlich auch die Expansion-Werte ändern (fonts.expansions.setups['default'])

Amandus
28-06-2010, 19:00
Du kannst dir diese Tabelle in eine Datei "prottest.lua" kopieren, 'default' in z.B. 'test' ändern und die Werte ändern. Dann kannst du diese neue Tabelle nutzen:

Jetzt läuft es bei mir auch mit diesen Anpassungen. Ich hoffe, daß man bald diese Funktionen von Microtype etwas komfortabler bedienen kann.

Meine prottest.lua habe ich in den Projekt-Ordner der betreffenden *.tex abgelegt. Eigentlich hätte ich sie lieber unter
/usr/local/texlive/texmf-local
stationiert. Aber ein texhash hat meinem TL2010 nicht helfen können, diese neue Datei zu finden. Muß die prottest.lua irgendwo besonders im TL-Verzeichnis abgelegt werden?

u_fischer
29-06-2010, 08:49
Muß die prottest.lua irgendwo besonders im TL-Verzeichnis abgelegt werden?

Ja. Schau einfach nach, wo in deinen anderen Bäumen lua-Dateien sind, die gefunden werden. (Meines Wissens nach, müsste $TEXINPUTS im Suchpfad sein, d.h. z.B. irgendwo unter tex\latex\ müsste gehen. Aber da ich kein TeXLive habe, weiß ich es nicht sicher.)

Amandus
29-06-2010, 09:12
Schau einfach nach, wo in deinen anderen Bäumen lua-Dateien sind, die gefunden werden.

Ich habe noch ein Verzeichnis angelegt (analog zum Pfad /usr/local/texlive/2010/texmf-dist/tex/luatex), die prottest.lua hineinkopiert und damit läuft es:


/usr/local/texlive/texmf-local/tex/luatex

Danke für die kompetente Hilfestellung!

u_fischer
29-06-2010, 10:30
Du kannst übrigens den Faktor auch direkt ändern (du musst es aber machen, bevor du die Schrift deklarierst, also vor \setmainfont):


\documentclass[fontsize=12pt]{scrartcl}
\usepackage{luaotfload}
\usepackage[EU2]{fontenc}
\pdfprotrudechars2
\pdfadjustspacing2
\usepackage{lipsum}
\usepackage{fontspec}

\newfontfeature{Microtype}{protrusion=default;expa nsion=default;}
\directlua{fonts.protrusions.setups.default.factor =5}
\setmainfont[Microtype,Ligatures=TeX]{Linux Libertine O}

\begin{document}
\lipsum
\end{document}

Amandus
29-06-2010, 10:50
Damit ist es ja noch schöner! Ich werde mir die Lösung mit prottest.lua aber aufbewahren, falls ich irgendwann individuellere Einstellungen in Sachen Protrusion vornehmen will …

sheldor
11-11-2010, 12:23
hm, zum einen mag lulatex das \setmainfont nach den \begin{document} haben, was kein problem ist, ich aber im pdf code müll:

\@tempswatrue\@tempswatrue\@tempswatrue\@tempswatr ue\@tempswatrue\@tempswafalse

aus nem template habe.

und es funktioniert mit dem microtype package irgendwie nicht. ligaturen funktionieren, guillements auch, den faktor 5 brauch ich nicht bei protrusion und expansion. aber der rand, ob mit oder ohne microtype package (sehe da auch überhaupt keinen unterschied), ist weiterhin fransig.

hab das test pdf angehängt.

jmd ne idee?



\documentclass[fontsize=12pt]{scrartcl}
\usepackage{luaotfload}
\usepackage[ngerman]{babel}
\usepackage[EU2]{fontenc}
\pdfprotrudechars2
\pdfadjustspacing2
\usepackage{lipsum}
\usepackage{fontspec}
\usepackage{microtype}
\newfontfeature{Microtype}{protrusion=default;expa nsion=default;}
\begin{document}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\lipsum
\end{document}

u_fischer
11-11-2010, 13:07
1. Lade nur fontspec, das kümmert sich um luaotfload + fontenc.

2. Kontrolliere ob du wirklich die neueste Version von fontspec hast. Dieses \@tempswatrue war ein Bug. In fontspec 2010/11/07 v2.1b und 2.1d gibt es ihn nicht mehr.

3. Es reicht nicht, ein \newfontfeature zu definieren. Man muss es auch benutzen.

4. Wenn du microtype.sty verwenden willst, brauchst du die beta-Version und musst wahrscheinlich erst noch eine Konfigurationsdatei erstellen.


\documentclass[fontsize=12pt]{scrartcl}
\usepackage{lipsum}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\pdfprotrudechars2
\pdfadjustspacing2
\newfontfeature{Microtype}{protrusion=default;expa nsion=default;}

\setmainfont[Microtype,Ligatures=TeX]{Linux Libertine O}
\begin{document}

\lipsum
\end{document}