Latex3: Demande de fonctionnalité : détecter le nom du système d'exploitation/de la plate-forme

Créé le 9 janv. 2019  ·  25Commentaires  ·  Source: latex3/latex3

Veuillez envisager d'ajouter une interface pour détecter le nom du système d'exploitation/de la plate-forme, par exemple windows ou linux .

ctex package \ctex_detected_platform:

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

expl3 feature-request

Commentaire le plus utile

Je pense que la demande concerne également \sys_if_platform_ macos:pTF (ou similaire). Cela peut être fait en vérifiant (disons) l'existence d'un fichier d'une police ou d'un fichier système spécifique à mac.

Tous les 25 commentaires

Nous avons \sys_if_platform_(unix|windows):(pTF) et \c_sys_platform_str dans l3candidates : fonctionnent-ils pour vous ?

J'espère également tester les macos, car fontspec etc peut avoir un comportement différent.

Je vois que cela se fait simplement en recherchant un fichier "standard" dans macOS, il n'a donc pas besoin d'écrire18 et devrait être assez rapide. Aucune objection de ma part. Qu'en penses-tu Joseph?

Envoyé avec GitHawk

Juste pour votre information:

  • /Library/Fonts/Songti.ttc (police chinoise) existe depuis macOS 10.9 (Mavericks).

    • Les binaires "darwin" ne prennent en charge que macOS avec le support officiel d'Apple (10.10 Yosemite ou version ultérieure au démarrage de TL2018), donc cela pourrait être bien.

    • Cependant, TL contient toujours des binaires "darwinlegacy" qui prennent en charge 10.6 Snow Leopard -- 10.9 Mavericks. Ainsi, le test d'existence pour /Library/Fonts/Songti.ttc échouera pour macOS 10.6 -- 10.8.

  • Un test légèrement plus sûr pour macOS serait de rechercher une police latine propriétaire (par exemple /System/Library/Fonts/Palatino.ttc /System/Library/Fonts/Menlo.ttc ).

    • Notez que le code de CTeX est toujours raisonnable, car le but de la détection du système d'exploitation pour CTeX est de déterminer quelle police chinoise peut être intégrée pour l'environnement.

Merci pour les détails supplémentaires ! Tester Palatino semble être une valeur sûre.

Est-ce couvert par le code existant? Nous demandez-vous d'envisager de passer à stable?

Je pense que la demande concerne également \sys_if_platform_ macos:pTF (ou similaire). Cela peut être fait en vérifiant (disons) l'existence d'un fichier d'une police ou d'un fichier système spécifique à mac.

Juste pour votre information:

Désolé, /System/Library/Fonts/Palatino.ttc existe depuis 10.9 Mavericks (pour 10.8 Mountain Lion ou avant, c'était /Library/Fonts/Palatino.ttc place),

À partir de 10.6 Snow Leopard jusqu'à 10.14 Mojave, /System/Library/Fonts/Menlo.ttc existe toujours. Cela peut être un test plus sûr.

Mon plan « bannière TeX » fonctionnerait-il ? Nous devrons travailler un peu pour trier les primitives ((u)pTeX/XeTeX), mais c'est un endroit évident pour trouver des détails explicites sur le système d'exploitation.

La bannière TeX actuelle ne contient pas toujours le nom de la plate-forme.

Avec pdfTeX, j'ai vu que la version Debian fournit (TeX Live 2018/debian) et la version Win32 fournit (TeX Live 2018/W32TeX) , mais d'autres ne contiennent aucune chaîne.

Pour e-(u)pTeX, nous avons déjà une implémentation candidate pour la primitive de bannière : https://github.com/texjporg/tex-jp-build/compare/banner

Les problèmes restants sont son nom (\epTeXbanner, \eptexbanner, contre un plus générique comme \enginebanner ?) et la nécessité.

@aminophen Eh bien, il semble que cette approche ne fera pas le travail : je ne me souvenais pas de ce que les systèmes MacOS TeX ont dans la bannière. Donc ça ne vaut pas la peine de s'inquiéter, je suppose. La recherche d'un fichier de marqueurs est probablement le mieux que nous puissions faire

quelque chose comme une police système de base pourrait être un indicateur suffisant pour quelque chose comme OSX, d'un autre côté, il y a toujours un danger que les futures versions ou variantes régionales ne l'aient pas. D'une manière ou d'une autre, il me semble que cela ne devrait pas être trop difficile si les moteurs fournissent cette information à la place (à condition que l'on obtienne un accord sur ce qu'ils fournissent)

@FrankMittelbach Vous pensez à quelque chose comme \platformname comme primitive ? Un à élever sur la liste TL peut-être ?

@josephwright oui quelque chose comme ça avec des résultats définis sur tous les moteurs, de sorte que tous rapportent la même valeur sur la même plate-forme (et peut-être "inconnu" pour les plates-formes peu courantes/non standardisées).

@FrankMittelbach Ce serait certainement mieux que d'essayer de deviner avec des bizarreries dépendantes du système. Les appels système C appropriés devraient être assez faciles à utiliser.

Juste en cherchant sur Google, j'ai trouvé ceci : https://stackoverflow.com/questions/3596310

Je ne sais pas si cette fonction est réellement disponible sur toutes les plateformes. De plus, je ne connais pas la liste complète des "sysname" renvoyés.

-- Quoi qu'il en soit, si vous choisissez de proposer un ajout au niveau du moteur, j'espère que c'est la dernière proposition concernant les informations sur l'architecture. Je veux dire, s'il existe une possibilité de proposition future (par exemple, détection de 32/64 bits ou détection de révision du système d'exploitation), elles devraient également être soulevées ici. Je ne suis pas très à l'aise pour ajouter de nouvelles primitives comme celle-ci de temps en temps, car les tests sur différentes plates-formes sont généralement difficiles.

Je pense qu'à l'heure actuelle, nous avons probablement couvert tout ce que nous pouvons raisonnablement ici dans expl3 : l'activité des polices doit probablement être gérée par un code dédié.

@josephwright Désolé, j'avais l'intention de revenir là- /System/Library/Fonts/Menlo.ttc comme méthode rapide et robuste pour demander si nous fonctionnons sous mac OS. Il existe depuis longtemps et fonctionnera donc sur les anciennes plates-formes ; il s'agit d'un élément central du système d'exploitation, il est donc extrêmement peu probable qu'il disparaisse et devrait être robuste dans toutes les installations régionales ; c'est dans un chemin qui est peu susceptible d'être répliqué sur d'autres plates-formes ; le fichier de police Menlo.ttc lui-même AFAIK n'est pas disponible d'une manière tierce.

Je proposerais d'ajouter ce test, et le pire qui puisse arriver est que s'il est utilisé et qu'il présente des cas extrêmes, nous pouvons explorer une détection de système d'exploitation plus robuste via des primitives ou similaires. Je peux ajouter une branche pour cela si vous le souhaitez?

@wspr Le plan \sys_if_platform_unix:(TF) actuel \sys_if_platform_macos:(TF) séparé ? Je peux voir la logique dans les deux approches.

@josephwright Je penserais que "si unix" retournerait vrai pour mac OS. Et probablement aussi pour le sous-système Windows pour Linux ?? Je ne peux pas tester ça.

@wspr J'ai vérifié le WSL : il rapporte ' unix '.

Actuellement nous avons \c_sys_platform_str qui sera windows ou unix : est-ce qu'on change ça sur MacOS ?

Le 5/6/19 10:37, Joseph Wright a écrit :

@wspr https://github.com/wspr J'ai vérifié le WSL : il rapporte '|unix|'.

Actuellement, nous avons |\c_sys_platform_str| qui seront |windows| ou
|unix| : changeons-nous cela sur MacOS ?

C'est fondamentalement la même question que le \ sys_if_engine_luatex:TF et
\c_sys_engine_str que nous avons eu dans un autre problème.

Je suggère de rendre \c_sys_engine_str et \c_sys_platform_str spécifiques
comme cela peut être (dans des limites raisonnables, donc sans inclure les versions et autres), mais
permettant à plusieurs \sys_if_engine_... et \sys_if_platform_... d'être vrais.
Mon opinion n'est pas ferme.

Je suis d'accord avec Bruno...

Il faut mentionner que, dans macOS Catalina (10.15), Songti.ttc et de nombreuses autres polices sont déplacées vers /System/Library/Fonts/Supplemental/ .

Cette page vous a été utile?
0 / 5 - 0 notes