"echte" Röm. Ziffern m. \RN und Libertine (XeTeX, fontspec)

Schriftbild, Absätze und Auflistungen einstellen
hastaenuntius
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Do 14. Sep 2017, 11:30

"echte" Röm. Ziffern m. \RN und Libertine (XeTeX, fontspec)

Beitrag von hastaenuntius »

Hallo in die Runde,

ich möchte gerne, dass die römischen Zahlen, die bspw. \RN{3} ausgibt nicht nur Großbuchstaben sind, sondern "echte" röm. Ziffern, lt. meiner Zeichentabelle U+2160 bis U+216F (für Versalien.)
Ich verwende die Schriftart (Linus) Libertine, die dafür Glyphen bereithält. (Könnte ggf. auch auf Libertinus wechseln.) Für die Schriftverwaltung nutze ich fontspec unter XeLaTeX
Gibt es eine Möglichkeit, das umzustellen?

Vielen Dank für Eure Antworten!

Gast

Beitrag von Gast »

Bei mir ist \RN auch bei Verwendung von libertine undefiniert:

Code: Alles auswählen

\documentclass{article}

\usepackage{libertine}% lädt bei Verwendung von lualatex oder xelatex auch fontspec

\begin{document}
\RN{3}% ergibt eine Fehlermeldung wegen nicht definiertem \RN
\end{document}
Da fehlt also mal wieder ein vollständiges Minimalbeispiel. Du solltest ein solches bei allen Fragen immer angeben!

hastaenuntius
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Do 14. Sep 2017, 11:30

Beitrag von hastaenuntius »

Ich hatte übersehen, dass \RN{} nicht allgemein, sondern von biblatex definiert ist, ich bitte um Entschuldigung.

Code: Alles auswählen

\documentclass{scrartcl}
\usepackage{fontspec}
\setmainfont[Ligatures={TeX,Common,Contextual},Numbers=OldStyle,Contextuals=Alternate]{Linux Libertine O}
\usepackage{biblatex}
\begin{document}
\RN{2} \RN{3} \RN{4}\\
ⅡⅢⅣ (das sind die Unicode-Zeichen: so soll es aussehen)
\end{document}
Ich habe inzwischen herausgefunden, dass man wohl \RNfont neu definieren könnte. Aber ich weiß eben noch nicht wie ich "der Schrift" mitteile, was ich will.

Gast

Beitrag von Gast »

Kann man machen, indem man für \RNfont eine Ersetzung der römischen Zahlenbestandteile definiert. Mit l3kernel geht das recht einfach. Da es nur sehr wenige zusammengesetzte römische Zahlen in der Unicode-Tabelle gibt, muss man aber sehr genau überlegen, in welcher Reihenfolge man die Ersetzung macht. Hier im Beispiel gefällt es mir beispielsweise nicht, bei der 13 zuerst die 12 anzuwenden und diese um eine 1 zu ergänzen. Hinweis: Da goLaTeX leider keine Unicode-Zeichen im Code unterstützt, habe ich folgendes nicht als Code, sondern als Quote gepostet. Etwaige Probleme, die aus einer Umformatierung o.ä. entstehen sind nicht auszuschließen:
\documentclass{scrartcl}
\usepackage{libertine}
\usepackage{biblatex}
\usepackage{expl3}

\ExplSyntaxOn
\renewcommand*{\RNfont}[1]{%
\str_set:Nn \l_tmpa_str {#1}%
\str_replace_all:Nnn \l_tmpa_str { m } { Ⅿ }
\str_replace_all:Nnn \l_tmpa_str { d } { Ⅾ }
\str_replace_all:Nnn \l_tmpa_str { c } { Ⅽ }
\str_replace_all:Nnn \l_tmpa_str { l } { Ⅼ }
\str_replace_once:Nnn \l_tmpa_str { iv } { Ⅳ }
\str_replace_once:Nnn \l_tmpa_str { ix } { Ⅸ }
\str_replace_once:Nnn \l_tmpa_str { viii } { Ⅷ }
\str_replace_once:Nnn \l_tmpa_str { vii } { Ⅶ }
\str_replace_once:Nnn \l_tmpa_str { vi } { Ⅵ }
\str_replace_once:Nnn \l_tmpa_str { xii } { Ⅻ }
\str_replace_once:Nnn \l_tmpa_str { xi } { Ⅺ }
\str_replace_once:Nnn \l_tmpa_str { ix } { Ⅸ }
\str_replace_all:Nnn \l_tmpa_str { v } { Ⅴ }
\str_replace_all:Nnn \l_tmpa_str { x } { Ⅹ }
\str_replace_once:Nnn \l_tmpa_str { iii } { Ⅲ }
\str_replace_once:Nnn \l_tmpa_str { ii } { Ⅱ }
\str_replace_all:Nnn \l_tmpa_str { i } { Ⅰ }
\str_use:N \l_tmpa_str
}
\ExplSyntaxOff
\begin{document}
\RN{1} \RN{2} \RN{3} \RN{4} \RN{5} \RN{6} \RN{7} \RN{8} \RN{9} \RN{10} \RN{11}
\RN{12} \RN{13} \RN{14} \RN{15} \RN{16} \RN{25} \RN{143} \\
ⅡⅢⅣ (das sind die Unicode-Zeichen: so soll es aussehen)
\end{document}
Das Ergebnis mit XeLaTeX ist bei mir dann:

Bild

hastaenuntius
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Do 14. Sep 2017, 11:30

Beitrag von hastaenuntius »

Danke, das ist zumindest eine Möglichkeit.

Bei höheren Zahlen wird es dann etwas komplizierter, bzw. müssten ja alle Zahlen, die vorkommen, in dem vorgeschlagenen Format in die Präambel.

Ich hatte gehofft, es der Schriftart direkt entlocken zu können.
Danke auch für den Hinweis mit den "zusammengesetzten" Zahlen, das ist tatsächlich suboptimal.

Gast

Beitrag von Gast »

hastaenuntius hat geschrieben:Bei höheren Zahlen wird es dann etwas komplizierter, bzw. müssten ja alle Zahlen, die vorkommen, in dem vorgeschlagenen Format in die Präambel.
Nö. Da Unicode nicht alle Zahlen enthält, sind höhere Zahlen immer aus den 16 vorhandenen Zahlen zusammengesetzt, die existieren. Die Ersetzung für Zahlen, die in Unicode nicht explizit vorhanden sind, habe ich an einigen Beispiel gezeigt. Wie diese dann aus den paar vorhandenen Zahlen zusammengesetzt werden, hängt von der Reihenfolge der Ersetzungen in der Definition von \RNfont ab. Verschiebt man beispielsweise die Regel für iii vor die für xii, dann sieht die 13 anschließend anders aus, weil sie dann nicht mehr aus einer 12 und einer 1, sondern aus einer 10 und einer 3 kombiniert wird.

Wie gesagt: Unicode bietet einfach nicht genügend römische Zahlen, um alle arabische Zahlen durch einheitliche römische zu ersetzen. Bis 12 ist es OK, aber danach wird es unschön. Ich würde das daher eher lassen, wenn du Zahlen >12 hast. Die aus Buchstaben gebildeten römischen Zahlen wirken deutlich einheitlicher als die aus den wenigen römischen Unicode-Zahlen zusammengesetzten. Der gezeigte Code ist sowohl als Machbarkeitsstudie zu verstehen als zusammen mit dem Bild auch als Warnung.

BTW: Mir fällt gerade auf, dass ich die Ersetzung für ix zweimal vorgenommen habe. Die zweite muss weg.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4025
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

sondern "echte" röm. Ziffern,
Die sind nicht echter als die normalen Buchstaben. Zumindest nicht was Unicode angeht. Die zusammengesetzten Zeichen sind eigentlich für Spezialfälle (und nur für Zahlen unter 12) gedacht:
Roman Numerals. For most purposes, it is preferable to compose the Roman numerals
from sequences of the appropriate Latin letters. However, the uppercase and lowercase
variants of the Roman numerals through 12, plus L, C, D, and M, have been encoded for
compatibility with East Asian standards. Unlike sequences of Latin letters, these symbols
remain upright in vertical layout. Additionally, in certain locales, compact date formats use
Roman numerals for the month, but may expect the use of a single character
D.h. Wenn du sie für größere Zahlen verwendest, erzeugst du eigentlich "unechte" römische Zahlen.

hastaenuntius
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Do 14. Sep 2017, 11:30

Beitrag von hastaenuntius »

u_fischer hat geschrieben:
sondern "echte" röm. Ziffern,
D.h. Wenn du sie für größere Zahlen verwendest, erzeugst du eigentlich "unechte" römische Zahlen.
... und unschöne noch dazu, wie man am Bsp. des Gastes oben sieht :D

Danke für das Zitat! (woher kommt es denn?)

Für die Verwendung als Monat ergibt es natürlich Sinn, dass es die zusammengesetzten Zahlen bis 12 gibt.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4025
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »


hastaenuntius
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Do 14. Sep 2017, 11:30

Beitrag von hastaenuntius »

u_fischer hat geschrieben:https://www.unicode.org/versions/Unicode13.0.0/ch22.pdf, Seite 834
Danke!

(Falls es dafür einen Button gibt und ich ihn übersehen habe, bitte ich um Entschuldigung.)

Antworten