PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Libertine und lualatex



Iluvatar
06-02-2010, 16:14
Ich möchte gerne von LaTeX auf lualatex umsteigen. Insbesondere aus dem Grund die volle Funktionalität des neo2 Tastutarlayouts zu nutzen.

Als Schriftart bietet sich Libertine an, da in lmodern zbestimmte Zeichen wie ẞ fehlen. auch würde ich gerne den Mathesatz entsprechend UTF8 kodiert nutzen.
Es ist halt schon angenehmer φ zu schreiben anstatt \varphi.

Jedoch traf ich auf ein paar Probleme. Libertine wird einfach nicht benutzt, da wohl was fehlt:

LaTeX Font Warning: Font shape `OT1/fxl/m/n' undefined

Das entsprechende Beispiel ist

\documentclass{article}
\usepackage{luatextra}
\usepackage[ngerman]{babel}
\usepackage[utf8]{luainputenc}
\usepackage{libertine}
\usepackage{a4wide}

\begin{document}
Das Mädchen ging über die Brücke nach draußen. ßẞ
\end{document}
Das Versal-ß erscheint nicht und die Schriftart ist auch kein Libertine.

Ich würde gerne den Textsatz für mich einfacher gestalten, doch konnte ich bisher keine Dokumentation finden, die mir hier weiterhilft.

Ich wäre daher sehr dankbar für eine Hilfestellung wie ich Libertine unter Texlive2009 zum Laufen bewege (Das Paket libertine selbst ist installiert) und wie ich den utf8 math mode nutze.

mechanicus
06-02-2010, 16:24
Hi,


\documentclass[ngerman]{article}
\usepackage{luatextra}
\usepackage[ngerman]{babel}
\usepackage[utf8]{luainputenc}
\usepackage[T1]{fontenc}
\usepackage{libertine}
\usepackage{a4wide}

\begin{document}
Das Mädchen ging über die Brücke nach draußen. ßẞ
\end{document}

Gruß
Marco

Iluvatar
06-02-2010, 16:27
Danke, Libertine wird nun verwendert. Allerdings wird das ẞ aus dem Beispiel weiterhin nicht angezeigt.

Habe das Beispiel einmal erweitert um die Zeile

\textsc{Das Mädchen ging über die Brücke nach draußen. ßẞ}

Hier wird das ß richtig als Kapitälchen dargestellt, dass ẞ ist weiterhin verschwunden.

u_fischer
06-02-2010, 19:05
Nun, T1-encoding hat kein Versal-ß. Was du brauchst ist ein Äquivalent zu fontspec in xelatex, das dir ermöglicht unicode-Schriften zu nutzen.


(Ob und wozu du luainputenc brauchst, kann ich dir nicht sagen. Mir erschließt sich die Argumentation des Autors öfter nicht.)

koppor
16-02-2011, 14:56
Hier ein Code, der zeigt, wie's mit pdflatex und lualatex geht. Bei lualatex braucht man kein inputenc, da UTF8 der Standard ist.


\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{microtype} %optischen Randausgleich aktivieren.

\usepackage{ifluatex}
\ifluatex
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\else
\usepackage[UTF8]{inputenc}
\usepackage{libertine}
\usepackage[T1]{fontenc}
\fi

\begin{document}
Umlaute und Sonderzeichen: äöüß
\end{document}

cookie170
16-02-2011, 19:22
Hier ein Code, der zeigt, wie's mit pdflatex und lualatex geht. Bei lualatex braucht man kein inputenc, da UTF8 der Standard ist.


\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{microtype} %optischen Randausgleich aktivieren.

\usepackage{ifluatex}
\ifluatex
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\else
\usepackage[UTF8]{inputenc}
\usepackage{libertine}
\usepackage[T1]{fontenc}
\fi

\begin{document}
Umlaute und Sonderzeichen: äöüß
\end{document}


Aus schlechter Erfahrung hätte ich dazu folgende Anmerkungen:


Libertine hat unter Linux und Windows unterschiedliche Namen, zumindest bei mir.
microtype wird wohl erst in der neuen beta-Version und mit luatex ab 0.62 funktionieren.
LuaTeX unterstützt babel nicht. Wenn Du also irgendwas mit \directlua ... anstellen willst und innerhalb eines solchen Befehls Anführungszeichen verwendest, bricht LuaTeX mit einer völlig unbrauchbaren Fehlermeldung ab.
Die lokal von luaotfload angelegte Datenbank mit den verfügbaren Schriften hat manchmal Fehler, beispielsweise zu den bei mir auch installierten chinesischen Fonts. Das führt auch zu kaum nachzuverfolgenden Fehlermeldungen.


Ich bin eigentlich immer zu Abenteuern im TeX-Reich aufgelegt, aber LuaTeX ist noch sehr beta. Es ist auch sehr langsam, zumindest unter Windows XP mit MikTeX 2.9.

Dass Libertine keine vollständige Mathe-Schrift bereit stellt, weder so noch so, ist Dir klar? Schreib' mal eine Formel Deiner Wahl mit dem obigen Beispiel, nur zum Ausprobieren.

Gruß,
Alexander

u_fischer
16-02-2011, 19:39
Libertine hat unter Linux und Windows unterschiedliche Namen, zumindest bei mir.

Soweit ich weiß (aber ungetestet) hat das nichts mit dem Betriebssystem sondern mit der Schrift zu tun: Es gibt die Libertine als ttf und otf. Die otf-Variante braucht hinten das "O".

voss
16-02-2011, 22:54
Libertine hat unter Linux und Windows unterschiedliche Namen, zumindest bei mir.
Die lokal von luaotfload angelegte Datenbank mit den verfügbaren Schriften hat manchmal Fehler, beispielsweise zu den bei mir auch installierten chinesischen Fonts. Das führt auch zu kaum nachzuverfolgenden Fehlermeldungen.


Ich bin eigentlich immer zu Abenteuern im TeX-Reich aufgelegt, aber LuaTeX ist noch sehr beta. Es ist auch sehr langsam, zumindest unter Windows XP mit MikTeX 2.9.

Dass Libertine keine vollständige Mathe-Schrift bereit stellt, weder so noch so, ist Dir klar? Schreib' mal eine Formel Deiner Wahl mit dem obigen Beispiel, nur zum Ausprobieren.


Dass die Schriftnamen unterschiedlich sind, hat nichts mit windows/Linux zu tun; bei der True-Type-Variante fehlt das O.

Ich hatte noch nie Probleme im Zusammenhang mit ConTeXt und luatex irgendwelche Fonts zu finden. Man kann das auch leicht testen, ob sie gefunden werden.

Herbert

Schweinebacke
17-02-2011, 09:19
LuaTeX unterstützt babel nicht. Wenn Du also irgendwas mit \directlua ... anstellen willst und innerhalb eines solchen Befehls Anführungszeichen verwendest, bricht LuaTeX mit einer völlig unbrauchbaren Fehlermeldung ab.
Dass das zu einer Fehlermeldung führt ist richtig und völlig logisch. Das Argument von \directlua wird zunächst expandiert und dann von Lua ausgeführt. Da babel mit ngerman das " aktiv macht, wird eben zunächst die "-Expansion durchgeführt. Das ist auch das, was der Anwender erwarten sollte. LuaTeX anzulasten, dass es babel nicht untertützt ist also völlig falsch. Die Expansion von " arbeitet korrekt. Der Anwender muss eben wissen, welche Zeichen aktiv sind. Das gibt genauso für \. In etwas anderer Form gilt es auch für % und --. Die Nebenwirkungen der Expansion bei \directlua sind am Beispiel von % und -- sogar in der Anleitung dokumentiert.

Es gibt aber unzählige Möglichkeiten, wenn man trotzdem einen String benötigt. Zum einen kann man Strings bei Lua nicht nur in doppelten Anführungszeichen angeben. Es gibt diverse weitere Möglichkeiten, beispielsweise einfache Anführungszeichen. Dann gibt es die Anweisung \luatexluaescapestring, mit der man TeX-Zeichen in Lua-Zeichenfolgen umwandeln kann. Desweiteren bietet LuaTeX catcode-Tabellen. Man kann also eine catcode-Tabelle definieren, bei der alle Zeichen, die nicht aktiv sein sollen auch nicht aktiv sind und dann bei Bedarf diese Tabelle verwenden. Man kann auch einfach auf Babel zurückgreifen und das dort definierte \dq verwenden. Oder man schaltet das shorthand-Zeichen vorrübergehend ab.

Mit babel gibt es eher ein anderes Problem: babel schaltet teilweise die Codierung um. Das Problem gibt es mit xelatex ebenso. Deshalb wurde für xelatex ein eigenes Sprachpaket entwickelt, das allerdings bisher AFAIK noch nicht mit lualatex funktioniert. Glücklicherweise gibt es das Problem nicht bei Englisch oder Deutsch als Sprache.

Wenn überhaupt müsste man also eher schreiben, dass babel LuaTeX nicht gut unterstützt.

cookie170
17-02-2011, 10:20
. . .
Wenn überhaupt müsste man also eher schreiben, dass babel LuaTeX nicht gut unterstützt.

Deine Sicht ist die des TeX-Profis. Dito Herbert und andere. Ich verwende LaTeX aber dazu, meine Arbeit zu erledigen. Woher soll ich, Anwender, dieses Wissen, das Du hier so verschwenderisch ausbreitest, denn haben? Es gibt keine Anleitung mit Warnungen vor möglichen Fehlerquellen für bloße Anwender von LuaTeX.

Wie soll ich herausfinden, wo der Fehler liegt? Die Fehlermeldung ist unbrauchbar. Also sucht man nach einem Fehler im Lua-Code. Dann sucht man nach einem Codierungsfehler im Editor. Und dann kostet das Zeit, die man für andere Dinge verplant hat.

Ich verwende LaTeX, weil es zuverlässig ist, nicht aus Masochismus. Und LuaTeX ist für mich als Anwender unzuverlässig, weil die Nutzung gelegentlich durch Fehler verhindert wird, deren Ursache ich allenfalls nach stundenlanger Suche finde, wenn überhaupt.

Wenn LuaTeX und babel nicht wirklich kompatibel sind, was für Überraschungen warten dann noch auf den Anwender?

Dazu kommt, dass nach meinem Eindruck auch die TeX-Profis keinen Überblick darüber haben, wie LuaTeX funktioniert. Was Taco Hoekwater und Hans Hagen und noch eine Handvoll anderer Leute da zusammenschrauben, mag sich in fünf Jahren als technische Meisterleistung entpuppen. Aber wer von den übrigen TeX-Profis beherrscht Lua so, dass er oder sie versteht, wie luainputenc funktioniert?

Nein, man muss jedem davon abraten, zur Zeit eine bedeutende Arbeit mit LuaTeX zu verfassen. pdftex ist auf Jahre hin noch das Programm der Wahl.

Leider. Denn ich hätte es wirklich gut brauchen können. Stellt Euch vor, man könnte einfach in der letzten Zeile von longtable vor dem Umbruch eine Zwischensumme bilden und auf der nächsten Seite in der ersten Zeile wiederholen, wie es jedes blöde Handwerker-Abrechnungsprogramm kann? Grundsätzlich habe ich keinen Zweifel, dass das mit fünfzig Zeilen Lua-Code geht.

Gruß,
Alexander

Schweinebacke
17-02-2011, 10:43
Ich glaube, wenn man \directlua im produktiven Einsatz verwenden will, sollte man schon wissen, wie die Anweisung funktioniert. Dann sollte man eigentlich auch wissen, dass catcodes Auswirkungen auf das Verhalten von "Zeichen" haben. Gerade der Punkt ist auch in der LuaTeX-Anleitung sehr gut dokumentiert. Ich verstehe deshalb Deinen diesbezüglichen Einwand absolut nicht.

Der reine Anwender sollte von LuaTeX auch keine Wunder erwarten. Man kann nicht einfach ohne Vorwissen, wild in Lua basteln. Gerade die typischen TeX-Probleme, die ein reiner Anwender hat, also beispielsweise das Verständnis, wie Expansion funktioniert, änderen sich durch LuaTeX nicht. Wer TeX nicht kapiert hat, wird LuaTeX kaum besser kapieren. Ich glaube, da sind einfach die Erwartungen falsch. Der reine Anwender wird auch bei LuaTeX reiner Anwender bleiben, also eher selten \directlua verwenden, sondern in erster Linie mit Paketen arbeiten, die ihrerseits \directlua verwenden.

Was ich verstehe ist der Einwand, dass LuaTeX noch nicht für den produktiven Einsatz geeignet ist. Allerdings ist der für mich aus einem ganz anderen Grund nachvollziehbar: LuaTeX ist derzeit bei Version 0.65. Release 1.0 wird erst ein ein paar Jahren erwartet. Bis dahin wird es sicher auch ein Sprachpaket geben, dass voll und ganz damit zusammenarbeitet. Viele der shorthands sind dann auch überflüssig. Umlaute gibt man ohnehin besser direkt ein, Bindestriche und optionale Trennzeichen kann man auch in UTF8 eingeben …

Übrigens ist LuaTeX 0.65 eine BETA. Als letzte stabile Version wird auf luatex.org Version 0.60 bezeichnet. Seither hat es aber so viele Änderungen und Neuerungen gegeben, dass wohl keiner, der mit LuaTeX wirklich etwas tun will, noch damit arbeitet.

Was luainputenc anbelangt: Das braucht man eigentlich nur:

wenn man keine unicode-Fonts verwendet; bei lmodern und Linux Libertine braucht man es also nicht; warum man es braucht, steht eigentlich in er Anleitung.
wenn man kein UTF8 für die Eingabe verwenden will.



Fazit: Dinge, die eigentlich Entwicklerarbeit sind, aus Anwendersicht tun zu wollen, war schon immer mit Problemen verbunden. Wer das macht, sollte sich über die Risiken bewusst sein und auch klar darüber sein, dass er eventuell auf Probleme stößt, die er ohne Hilfe nicht lösen kann. Dein "-Problem lässt sich jedenfalls lösen, wie ich oben bereits erklärt habe. Es ist auch kein spezifisches babel-Problem, sondern ein Problem im Verständnis der Arbeitsweise von TeX (und weniger von LuaTeX).

u_fischer
17-02-2011, 11:20
Alexander,

einerseits hast du völlig recht: Luatex ist noch beta, bei vielen Dingen/Paketen ist noch unklar, ob und wie sie mit luatex funktionieren und wo die Stolperstellen sind. Ich würde niemanden, der unter Zeitdruck eine wichtige Arbeit erstellen muss, empfehlen nur auf luatex zu setzen.


Außerdem benutzen die Entwickler context und nicht LaTeX. LaTeX profitiert zwar von der context-Entwicklung (luaotfload besteht im Wesentlichen aus context-Code), aber da context mehr oder weniger ein Ein-Mann-Projekt ist, wird in den context-Listen wenig öffentlich über die Interna diskutiert: Wenn es ein Problem gibt, gibt es irgendwann ein Nachricht "solved in new beta". Das und die spärliche Dokumentation führt dazu, dass Wissen über eine sinnvolle Verwendung von luatex sich nur langsam verbreitert.

Andererseits glaube ich nicht, dass es noch Jahre dauern wird, bis man lua(la)tex empfehlen kann. Mittlerweile wird luatex ja auch von LaTeX benutzt. Und in LaTeX sind Diskussionen über Interna und wie man Probleme löst normal - und zwar auf allen Ebenen. Paketautoren müssen sich absprechen, um Konflikte zu vermeiden oder zu lösen, aber auch Anfänger stellen Fragen. Einige deiner neuen lua-Probleme ähneln sehr den Problemen über die viele Anfänger bei LaTeX schnell stolpern: \catcode-Fragen (wieso muss ich \makeatletter verwenden?), rekursive Schleifen beim Patchen von Befehlen, komische Fehlermeldungen. Wenn die Diskussionen über lualatex zunehmen, werden sich daher relativ schnell die Standardantworten entwickeln. Z.B. da \directlua TeX-Befehle expandiert und das häufig (wie beim Anführungszeichen + ngerman) gar nicht erwünscht ist, empfiehlt es sich das luacode-Paket zu nützen und eine geeignetere Umgebung (z. B. luacode) zu benutzen.



Aber wer von den übrigen TeX-Profis beherrscht Lua so, dass er oder sie versteht, wie luainputenc funktioniert?

luainputenc habe ich im Prinzip verstanden. Die größte Schwierigkeit ist dabei aber nicht der lua-Teil. Du musst einige Kenntnisse über inputenc + LICR haben. Grundsätzlich würde ich aber empfehlen luainputenc nur zu benutzen, wenn man es wirklich nicht vermeiden kann, 8-Bit-Dateien zu verarbeiten.

cookie170
17-02-2011, 16:44
Vielleicht sollten wir hier in diesem Forum einen Thread aufmachen, in dem jeder Anwender seine MB-artige Lösung für irgendein LuaLaTeX-Problem darstellt.

Dank Dir, Ulrike, weiß ich jetzt, dass ich wohl statt \directlua besser die luacode-Umgebung verwende. Ich muss mal ein Beispiel basteln.

Ein anderes, grundlegendes Beispiel hat ja hier "koppor" (ich wäre ja neugierig, wer da dahinter steckt) gebracht. Guter Einstieg.

Gruß,
Alexander