Modify

Erstellt vor 3 Jahren

#403 new Verbesserung

Uniinput LuaLaTeX-fähig machen

Erstellt von: anton.pirogov@… Verantwortlicher:
Priorität: normal Meilenstein:
Komponente: sonstiges Version: 2.0 Final
Stichworte: uniinput, latex, lualatex Beobachter:

Beschreibung

Ich hatte http://the-user.org/post/switched-to-lualatex hier eine konvertierte uniinput entdeckt (mit unicode-math bin ich unzufrieden), fand es aber nicht schön, beide Versionen nebeneinander zu haben, wenn ich es mit pdflatex und lualatex bauen können möchte. Habe mit viel Google und Stackoverflow etwas zusammengebastelt, damit es ohne Duplikationen funktioniert. Bin weder Lua noch LaTeX-Entwickel-Guru, also wenn jemand da noch etwas verbessern kann (beim Escaping bin ich unsicher ob das ganz sicher ist)..

Das folgende Schnipsel gehört dann direkt vor Beginn der Deklarationen der Symbole:

\RequirePackage{iftex}
\ifLuaTeX
\RequirePackage{luacode}
\begin{luacode*}
  -- As parameter pass hexadecimal unicode code point and replacement string
  function cmdutf(c, cmd)
    local sym = unicode.utf8.char(tonumber(c,16))
    local str = "\\providecommand\\" .. sym .. "{" .. cmd .. "}"
    tex.print(str)
    -- texio.write_nl(str)
    tex.print("\\renewcommand\\" .. sym .. "{" .. cmd .. "}")
  end
  function letutf(c)
    local sym = unicode.utf8.char(tonumber(c,16))
    local str = "\\let" .. sym .. "\\" .. sym
    -- texio.write_nl(str)
    tex.print(str)
  end
\end{luacode*}
\def\DeclareUnicodeCharacter#1#2{%
\catcode"#1=\active
\directlua{cmdutf("#1",[[\unexpanded{#2}]])}
\directlua{letutf("#1")}
}
\fi

Das Übersetzt quasi on-the-fly die \DeclareUnicodeCharacter Befehle in gleichwertige Befehle in LuaLaTeX (wie in der Datei im verlinkten Blog-Post) und funktioniert dadurch mit beiden Engines.

Wäre schön, wenn das jemand einpflegt.

Anhänge (0)

Änderungshistorie (0)

Kommentar hinzufügen

Ticket ändern

Eigenschaften ändern
<Autor-Feld>
Aktion
als new .
als Der Status der Lösung wird gesetzt. Der nächste Status wird 'closed' sein.
zu (none) wird von der Verantwortlichkeit für das Ticket befreit. Der nächste Status wird 'new' sein.
Die Verantwortlichkeit für das Ticket wird von (none) an anonymous übertragen. Der nächste Status wird 'assigned' sein.
Autor


E-Mail-Adresse und Benutzername können in den Einstellungen gespeichert werden.

 
Hinweis: Hilfe zur Verwendung von Tickets finden Sie in TracTickets.