Latex3: Funktionsanfrage: Betriebssystem-/Plattformnamen erkennen

Erstellt am 9. Jan. 2019  ·  25Kommentare  ·  Quelle: latex3/latex3

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

https://github.com/CTeX-org/ctex-kit/blob/22cb36acfed66dab0fb35994bf18dd4bb5eb384e/ctex/ctex.dtx#L5947 -L6026

expl3 feature-request

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.

Alle 25 Kommentare

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).

    • Die "darwin" -Binärdateien unterstützen nur macOS mit offizieller Unterstützung von Apple (10.10 Yosemite oder höher, als TL2018 gestartet wurde), also könnte das in Ordnung sein.

    • TL enthält jedoch immer noch "darwinlegacy"-Binärdateien, die 10.6 Snow Leopard - 10.9 Mavericks unterstützen. Der Existenztest für /Library/Fonts/Songti.ttc schlägt also für macOS 10.6 – 10.8 fehl.

  • Ein etwas sichererer Test für macOS wäre die Suche nach einer proprietären lateinischen Schriftart (zB /System/Library/Fonts/Palatino.ttc /System/Library/Fonts/Menlo.ttc ).

    • Beachten Sie, dass der Code von CTeX immer noch vernünftig ist, da der Zweck der Erkennung des Betriebssystems für CTeX darin besteht, festzustellen, welche chinesische Schriftart für die Umgebung eingebettet werden kann.

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

josephwright picture josephwright  ·  12Kommentare

josephwright picture josephwright  ·  31Kommentare

dbitouze picture dbitouze  ·  3Kommentare

dbitouze picture dbitouze  ·  8Kommentare

JairoAdelRio picture JairoAdelRio  ·  7Kommentare