"echte" Röm. Ziffern m. \RN und Libertine (XeTeX, fontspec)
-
- Forum-Anfänger
- Beiträge: 19
- Registriert: Do 14. Sep 2017, 11:30
"echte" Röm. Ziffern m. \RN und Libertine (XeTeX, fontspec)
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!
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!
Bei mir ist \RN auch bei Verwendung von libertine undefiniert:
Da fehlt also mal wieder ein vollständiges Minimalbeispiel. Du solltest ein solches bei allen Fragen immer angeben!
\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}
-
- Forum-Anfänger
- Beiträge: 19
- Registriert: Do 14. Sep 2017, 11:30
Ich hatte übersehen, dass \RN{} nicht allgemein, sondern von biblatex definiert ist, ich bitte um Entschuldigung.
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.
\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}
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:
Das Ergebnis mit XeLaTeX ist bei mir dann:\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}
-
- Forum-Anfänger
- Beiträge: 19
- Registriert: Do 14. Sep 2017, 11:30
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.
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.
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.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.
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.
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:sondern "echte" röm. Ziffern,
D.h. Wenn du sie für größere Zahlen verwendest, erzeugst du eigentlich "unechte" römische Zahlen.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
Ulrike Fischer
www.troubleshooting-tex.de
www.troubleshooting-tex.de
-
- Forum-Anfänger
- Beiträge: 19
- Registriert: Do 14. Sep 2017, 11:30
... und unschöne noch dazu, wie man am Bsp. des Gastes oben siehtu_fischer hat geschrieben:D.h. Wenn du sie für größere Zahlen verwendest, erzeugst du eigentlich "unechte" römische Zahlen.sondern "echte" röm. Ziffern,
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.
Ulrike Fischer
www.troubleshooting-tex.de
www.troubleshooting-tex.de
-
- Forum-Anfänger
- Beiträge: 19
- Registriert: Do 14. Sep 2017, 11:30
Danke!u_fischer hat geschrieben:https://www.unicode.org/versions/Unicode13.0.0/ch22.pdf, Seite 834
(Falls es dafür einen Button gibt und ich ihn übersehen habe, bitte ich um Entschuldigung.)