Bitte denken Sie daran, eine Schnittstelle hinzuzufügen, um den Betriebssystem-/Plattformnamen zu erkennen, zB windows
oder linux
.
ctex
Paket hat beispielsweise \ctex_detected_platform:
implementiert
Wir haben \sys_if_platform_(unix|windows):(pTF)
und \c_sys_platform_str
in l3candidates
: Funktionieren sie für Sie?
Ich hoffe, auch Macos testen zu können, da fontspec
usw. ein anderes Verhalten haben können.
Ich sehe, dass dies einfach durch die Suche nach einer „Standard“-Datei in macOS geschieht, also kein write18 benötigt und ziemlich schnell sein sollte. Keine Einwände von mir. Was meinst du Josef?
Gesendet mit GitHawk
Nur zu deiner Information:
/Library/Fonts/Songti.ttc
(chinesische Schriftart) existiert seit macOS 10.9 (Mavericks)./Library/Fonts/Songti.ttc
schlägt also für macOS 10.6 – 10.8 fehl./System/Library/Fonts/Palatino.ttc
/System/Library/Fonts/Menlo.ttc
).Danke für die zusätzlichen Details! Das Testen auf Palatino klingt nach einer ziemlich sicheren Sache.
Ist dies durch den bestehenden Code abgedeckt? Bitten Sie uns, einen Umzug in einen Stall in Betracht zu ziehen?
Ich denke, die Anfrage ist auch für \sys_if_platform_ macos :pTF (oder ähnlich). Dies kann durchgeführt werden, indem (beispielsweise) die Existenz einer Datei einer Mac-spezifischen Schriftart oder einer Systemdatei überprüft wird.
Nur zu deiner Information:
Entschuldigung, /System/Library/Fonts/Palatino.ttc
existiert seit 10.9 Mavericks (für 10.8 Mountain Lion oder früher war es stattdessen /Library/Fonts/Palatino.ttc
),
Von 10.6 Snow Leopard bis 10.14 Mojave existiert /System/Library/Fonts/Menlo.ttc
immer. Dies kann ein sicherer Test sein.
Würde mein 'TeX-Banner'-Plan funktionieren? Wir müssten ein wenig arbeiten, um die Primitiven zu sortieren ((u)pTeX/XeTeX), aber das ist ein offensichtlicher Ort, um explizite Betriebssystemdetails zu finden.
Das aktuelle TeX-Banner enthält nicht immer den Plattformnamen.
Bei pdfTeX habe ich gesehen, dass Debian-Build (TeX Live 2018/debian)
bereitstellt und Win32-Build (TeX Live 2018/W32TeX)
bereitstellt, aber andere enthalten keinen String.
Für e-(u)pTeX haben wir bereits eine Kandidatenimplementierung für das Bannerprimitive: https://github.com/texjporg/tex-jp-build/compare/banner
Die verbleibenden Probleme sind der Name (\epTeXbanner, \eptexbanner, vs. allgemeinere wie \enginebanner?) und die Notwendigkeit.
@aminophen Nun, es hört sich so an, als würde dieser Ansatz nicht funktionieren: Ich konnte mich nicht erinnern, was MacOS TeX-Systeme im Banner haben. Es lohnt sich also nicht, sich Sorgen zu machen, vermute ich. Wahrscheinlich ist die Suche nach einer Markerdatei das Beste, was wir tun können
so etwas wie ein Basissystemfont kann ein guter Indikator für so etwas wie OSX sein, andererseits besteht immer die Gefahr, dass zukünftige Versionen oder regionale Varianten es nicht mehr haben. Irgendwie scheint es mir nicht allzu schwer zu sein, wenn die Engines stattdessen diese Informationen bereitstellen (vorausgesetzt, man bekommt eine Vereinbarung, was sie bereitstellen).
@FrankMittelbach Du \platformname
als Primitiv? Einer, der vielleicht auf die TL-Liste gesetzt wird?
@josephwright ja so etwas mit definierten Ergebnissen für alle Engines, sodass alle den gleichen Wert auf derselben Plattform melden (und möglicherweise "unbekannt" für ungewöhnliche / nicht standardisierte Plattformen).
@FrankMittelbach Wäre definitiv besser, als mit systemabhängigen Macken zu raten. Die entsprechenden C-Systemaufrufe sollten recht einfach zu handhaben sein.
Gerade beim googeln habe ich das gefunden: https://stackoverflow.com/questions/3596310
Ich bin mir nicht sicher, ob diese Funktion tatsächlich auf allen Plattformen verfügbar ist. Außerdem kenne ich die vollständige Liste der zurückgegebenen "sysname" nicht.
-- Wie auch immer, wenn Sie sich entscheiden, eine Erweiterung auf Engine-Ebene vorzuschlagen, hoffe ich, dass dies der letzte Vorschlag in Bezug auf Architekturinformationen ist. Ich meine, wenn es die Möglichkeit eines zukünftigen Vorschlags gibt (zB Erkennung von 32/64bit oder Erkennung von OS-Revisionen), sollten sie auch hier angesprochen werden. Ich bin nicht sehr zufrieden damit, von Zeit zu Zeit neue Primitiven hinzuzufügen, da das Testen auf verschiedenen Plattformen normalerweise schwierig ist.
Ich denke, im Moment haben wir wahrscheinlich so viel wie möglich hier in expl3
: Das Schriftgeschäft muss wahrscheinlich durch dedizierten Code abgewickelt werden.
@josephwright Entschuldigung, ich wollte darauf zurückkommen. IMO wäre es sehr sicher, /System/Library/Fonts/Menlo.ttc
als schnelle und robuste Methode zu testen, um abzufragen, ob wir unter Mac OS laufen. Es ist schon lange da und wird auf älteren Plattformen funktionieren; es ist ein Kernbestandteil des Betriebssystems, so dass es äußerst unwahrscheinlich ist, dass es verschwindet, und sollte über alle regionalen Installationen hinweg robust sein; es befindet sich in einem Pfad, der auf anderen Plattformen wahrscheinlich nicht repliziert wird; die Schriftartendatei Menlo.ttc
selbst AFAIK ist nicht von Drittanbietern verfügbar.
Ich würde vorschlagen, diesen Test hinzuzufügen, und das Schlimmste, was passieren kann, ist, wenn er von Nutzen ist und einige Grenzfälle auftreten, können wir eine robustere Betriebssystemerkennung über Primitive oder ähnliches untersuchen. Ich kann dafür eine Filiale hinzufügen, wenn Sie möchten?
@wspr Ist der Plan nur, die aktuellen \sys_if_platform_unix:(TF)
so aufzuteilen, dass dies für MacOS nicht gilt? Oder möchten Sie einen separaten \sys_if_platform_macos:(TF)
Test? Ich kann die Logik in beiden Ansätzen sehen.
@josephwright Ich würde denken, dass "wenn Unix" für Mac OS wahr zurückgeben würde. Und wahrscheinlich auch für das Windows-Subsystem für Linux?? Das kann ich nicht testen.
@wspr Ich habe die WSL überprüft: sie meldet ' unix
'.
Zur Zeit haben wir \c_sys_platform_str
was windows
oder unix
: ändern wir das unter MacOS?
Am 06.05.19 10:37 schrieb Joseph Wright:
@wspr https://github.com/wspr Ich habe die WSL überprüft: sie meldet '|unix|'.
Zur Zeit haben wir |\c_sys_platform_str| das wird |windows| oder
|unix|: Ändern wir das unter MacOS?
Dies ist im Grunde die gleiche Frage wie bei \ sys_if_engine_luatex:TF und
\c_sys_engine_str hatten wir in einem anderen Problem.
Ich schlage vor, \c_sys_engine_str und \c_sys_platform_str als spezifisch festzulegen
wie möglich (im Rahmen des Zumutbaren, also ohne Versionen und was nicht), aber
mehrere \sys_if_engine_... und \sys_if_platform_... wahr sein lassen.
Meine Meinung wird nicht stark vertreten.
Ich stimme Bruno zu...
Ich muss erwähnen, dass in macOS Catalina (10.15) Songti.ttc
und viele andere Schriftarten nach /System/Library/Fonts/Supplemental/
verschoben werden.
Hilfreichster Kommentar
Ich denke, die Anfrage ist auch für \sys_if_platform_ macos :pTF (oder ähnlich). Dies kann durchgeführt werden, indem (beispielsweise) die Existenz einer Datei einer Mac-spezifischen Schriftart oder einer Systemdatei überprüft wird.