Latex3: Solicitud de función: detectar el nombre del sistema operativo / plataforma

Creado en 9 ene. 2019  ·  25Comentarios  ·  Fuente: latex3/latex3

Considere agregar una interfaz para detectar el nombre del sistema operativo / plataforma, por ejemplo, windows o linux .

ctex paquete, por ejemplo, ha implementado \ctex_detected_platform:

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

expl3 feature-request

Comentario más útil

Creo que la solicitud también es para \ sys_if_platform_ macos: pTF (o similar). Se puede hacer comprobando (digamos) la existencia de un archivo de una fuente específica de Mac o un archivo de sistema.

Todos 25 comentarios

Tenemos \sys_if_platform_(unix|windows):(pTF) y \c_sys_platform_str en l3candidates : ¿funcionan para usted?

Espero probar macos también, ya que fontspec etc pueden tener un comportamiento diferente.

Veo que esto se hace simplemente buscando un archivo "estándar" en macOS, por lo que no necesita escritura18 y debería ser bastante rápido. No tengo objeciones. ¿Qué opinas José?

Enviado con GitHawk

Solo para tu información:

  • /Library/Fonts/Songti.ttc (fuente china) existe desde macOS 10.9 (Mavericks).

    • Los archivos binarios "darwin" solo admiten macOS con soporte oficial de Apple (10.10 Yosemite o posterior cuando se inició TL2018), por lo que podría estar bien.

    • Sin embargo, TL todavía contiene binarios "darwinlegacy" que admiten 10.6 Snow Leopard - 10.9 Mavericks. Entonces, la prueba de existencia para /Library/Fonts/Songti.ttc fallará para macOS 10.6 - 10.8.

  • Una prueba un poco más segura para macOS sería buscar una fuente latina patentada (por ejemplo, /System/Library/Fonts/Palatino.ttc /System/Library/Fonts/Menlo.ttc ).

    • Tenga en cuenta que el código de CTeX sigue siendo razonable, porque el propósito de detectar el sistema operativo para CTeX es determinar qué fuente china se puede incrustar para el entorno.

¡Gracias por los detalles adicionales! Probar para Palatino parece una apuesta bastante segura.

¿Está esto cubierto por el código existente? ¿Nos estás pidiendo que consideremos cambiarnos a estable?

Creo que la solicitud también es para \ sys_if_platform_ macos: pTF (o similar). Se puede hacer comprobando (digamos) la existencia de un archivo de una fuente específica de Mac o un archivo de sistema.

Solo para tu información:

Lo sentimos, /System/Library/Fonts/Palatino.ttc existe desde 10.9 Mavericks (para 10.8 Mountain Lion o anterior, era /Library/Fonts/Palatino.ttc lugar),

Desde 10.6 Snow Leopard hasta 10.14 Mojave, /System/Library/Fonts/Menlo.ttc siempre existe. Esta puede ser una prueba más segura.

¿Funcionaría mi plan de 'banner TeX'? Tendríamos que trabajar un poco para ordenar las primitivas ((u) pTeX / XeTeX), pero ese es un lugar obvio para encontrar detalles explícitos del sistema operativo.

El banner actual de TeX no siempre contiene el nombre de la plataforma.

Con pdfTeX he visto que Debian build proporciona (TeX Live 2018/debian) y Win32 build proporciona (TeX Live 2018/W32TeX) , pero otros no contienen ninguna cadena.

Para e- (u) pTeX, ya tenemos una implementación candidata para la primitiva de banner: https://github.com/texjporg/tex-jp-build/compare/banner

Los problemas restantes son su nombre (\ epTeXbanner, \ eptexbanner, vs. uno más genérico como \ enginebanner?) Y la necesidad.

@aminophen Bueno, parece que ese enfoque no funcionará: no recuerdo qué tienen los sistemas MacOS TeX en el banner. Así que sospecho que no vale la pena preocuparse. Probablemente buscar un archivo de marcador es lo mejor que podemos hacer

algo como una fuente del sistema base podría ser un indicador suficientemente bueno para algo como OSX, por otro lado, siempre existe el peligro de que las versiones futuras o la variante regional no lo tengan. De alguna manera me parece que no debería ser demasiado difícil si los motores brindan esa información en su lugar (siempre que uno obtenga un acuerdo sobre lo que brindan)

@FrankMittelbach ¿ Estás pensando en algo como \platformname como primitivo? ¿Quizás uno para subir en la lista de TL?

@josephwright sí, algo así con resultados definidos en todos los motores, de modo que todos reporten el mismo valor de en la misma plataforma (y tal vez "desconocido" para plataformas poco comunes / no estandarizadas).

@FrankMittelbach Definitivamente sería mejor que intentar adivinar con peculiaridades dependientes del sistema. Las llamadas al sistema C relevantes deberían ser bastante fáciles de usar.

Solo buscando en Google, encontré esto: https://stackoverflow.com/questions/3596310

No estoy seguro de si esa función está realmente disponible en todas las plataformas. Además, no conozco la lista completa de "sysname" devueltos.

- De todos modos, si eliges proponer una adición a nivel de motor, espero que esta sea la última propuesta con respecto a la información de arquitectura. Quiero decir, si existe la posibilidad de una propuesta futura (por ejemplo, detección de 32/64 bits o detección de revisión del sistema operativo), también deberían plantearse aquí. No me siento muy cómodo añadiendo nuevas primitivas como esa de vez en cuando, porque las pruebas en varias plataformas suelen ser difíciles.

Creo que en la actualidad es probable que hayamos cubierto todo lo que razonablemente podemos aquí en expl3 : es probable que el negocio de las fuentes tenga que manejarse mediante un código dedicado.

@josephwright Siento haber querido volver a esto. En mi opinión, sería muy seguro probar /System/Library/Fonts/Menlo.ttc como un método rápido y robusto para consultar si estamos ejecutando en mac OS. Ha estado ahí durante mucho tiempo, por lo que funcionará en plataformas más antiguas; es una parte central del sistema operativo, por lo que es extremadamente improbable que desaparezca y debe ser sólida en todas las instalaciones de la región; está en un camino que es poco probable que se pueda replicar en otras plataformas; el archivo de fuente Menlo.ttc sí mismo AFAIK no está disponible de ninguna manera de terceros.

Propondría agregar esta prueba, y lo peor que puede suceder es que si obtiene algún uso, y se encuentra que tiene algunos casos extremos, podemos explorar una detección de sistema operativo más robusta a través de primitivas o similares. ¿Puedo agregar una rama para esto si lo desea?

@wspr ¿El plan es solo dividir el \sys_if_platform_unix:(TF) actual de manera que no sea cierto para MacOS? ¿O desea una prueba \sys_if_platform_macos:(TF) separada? Puedo ver la lógica en ambos enfoques.

@josephwright Creo que "si unix" volvería verdadero para mac OS. ¿Y probablemente también para el subsistema de Windows para Linux? No puedo probar eso.

@wspr Revisé el WSL: informa ' unix '.

Actualmente tenemos \c_sys_platform_str que será windows o unix : ¿cambiamos eso en MacOS?

El 6/5/19 10:37, Joseph Wright escribió:

@wspr https://github.com/wspr Revisé el WSL: informa '| unix |'.

Actualmente tenemos | \ c_sys_platform_str | que serán | ventanas | o
| unix |: ¿cambiamos eso en MacOS?

Esta es básicamente la misma pregunta que \ sys_if_engine_ luatex: TF y
\ c_sys_engine_str que tuvimos en algún otro problema.

Sugiero hacer \ c_sys_engine_str y \ c_sys_platform_str como específicos
como puede ser (dentro de lo razonable, por lo que no se incluyen versiones y lo que no), pero
permitiendo que varios \ sys_if_engine _... y \ sys_if_platform _... sean verdaderos.
Mi opinión no está muy arraigada.

Estoy de acuerdo con Bruno ...

Es necesario mencionar que, en macOS Catalina (10.15), Songti.ttc y muchas otras fuentes se mueven a /System/Library/Fonts/Supplemental/ .

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

tail-reversion picture tail-reversion  ·  8Comentarios

dbitouze picture dbitouze  ·  43Comentarios

bastien-roucaries picture bastien-roucaries  ·  19Comentarios

josephwright picture josephwright  ·  12Comentarios

dbitouze picture dbitouze  ·  8Comentarios