Latex3: Solicitação de recurso: detectar sistema operacional / nome da plataforma

Criado em 9 jan. 2019  ·  25Comentários  ·  Fonte: latex3/latex3

Considere adicionar uma interface para detectar o nome do sistema operacional / plataforma, por exemplo, windows ou linux .

ctex pacote \ctex_detected_platform:

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

expl3 feature-request

Comentários muito úteis

Acho que a solicitação é para \ sys_if_platform_ macos: pTF (ou semelhante) também. Isso pode ser feito verificando (digamos) a existência de um arquivo de uma fonte específica do mac ou arquivo de sistema.

Todos 25 comentários

Temos \sys_if_platform_(unix|windows):(pTF) e \c_sys_platform_str em l3candidates : eles funcionam para você?

Espero testar os macos também, já que fontspec etc pode ter um comportamento diferente.

Vejo que isso é feito simplesmente procurando um arquivo “padrão” no macOS, portanto, não precisa do write18 e deve ser bem rápido. Sem objeções de mim. O que você acha Joseph?

Enviado com GitHawk

Apenas para sua informação:

  • /Library/Fonts/Songti.ttc (fonte chinesa) existe desde o macOS 10.9 (Mavericks).

    • Os binários "darwin" suportam apenas macOS com suporte oficial da Apple (10.10 Yosemite ou posterior quando TL2018 começou), então isso pode ser bom.

    • No entanto, TL ainda contém binários "darwinlegacy" que suportam 10.6 Snow Leopard - 10.9 Mavericks. Portanto, o teste de existência para /Library/Fonts/Songti.ttc falhará para macOS 10.6 - 10.8.

  • Um teste um pouco mais seguro para macOS seria procurar uma fonte latina proprietária (por exemplo, /System/Library/Fonts/Palatino.ttc /System/Library/Fonts/Menlo.ttc ).

    • Observe que o código do CTeX ainda é razoável, porque o objetivo de detectar o SO para o CTeX é determinar qual fonte chinesa pode ser incorporada ao ambiente.

Obrigado pelos detalhes extras! Testar para Palatino parece uma aposta bastante segura.

Isso está coberto pelo código existente? Você está nos pedindo para considerar a mudança para o estável?

Acho que a solicitação é para \ sys_if_platform_ macos: pTF (ou semelhante) também. Isso pode ser feito verificando (digamos) a existência de um arquivo de uma fonte específica do mac ou arquivo de sistema.

Apenas para sua informação:

Desculpe, /System/Library/Fonts/Palatino.ttc existe desde 10.9 Mavericks (para 10.8 Mountain Lion ou anterior, era /Library/Fonts/Palatino.ttc vez disso),

A partir de 10.6 Snow Leopard até 10.14 Mojave, /System/Library/Fonts/Menlo.ttc sempre existe. Este pode ser um teste mais seguro.

Meu plano 'banner TeX' funcionaria? Teríamos que trabalhar um pouco para ordenar as primitivas ((u) pTeX / XeTeX), mas esse é um lugar óbvio para encontrar detalhes explícitos do sistema operacional.

O banner atual do TeX nem sempre contém o nome da plataforma.

Com o pdfTeX, vi que o build do Debian fornece (TeX Live 2018/debian) e o build do Win32 fornece (TeX Live 2018/W32TeX) , mas outros não contêm nenhuma string.

Para e- (u) pTeX, já temos uma implementação candidata para a primitiva de banner: https://github.com/texjporg/tex-jp-build/compare/banner

As questões restantes são seu nome (\ epTeXbanner, \ eptexbanner, vs. um mais genérico como \ enginebanner?) E a necessidade.

@aminophen Bem, parece que essa abordagem não vai funcionar: eu não conseguia me lembrar o que os sistemas MacOS TeX têm no banner. Portanto, não vale a pena se preocupar, eu suspeito. Provavelmente, procurar por um arquivo de marcador é o melhor que podemos fazer

algo como uma fonte do sistema básico pode ser um indicador bom o suficiente para algo como OSX, por outro lado, sempre existe o perigo de que versões futuras ou variantes regionais não a tenham. De alguma forma, parece-me que não deveria ser muito difícil se os motores estivessem fornecendo essas informações (desde que alguém chegue a um acordo sobre o que eles fornecem)

@FrankMittelbach Você está pensando em algo como \platformname como um primitivo? Um para levantar na lista TL, talvez?

@josephwright sim algo assim com resultados definidos entre os motores, de modo que todos relatem o mesmo valor de na mesma plataforma (e talvez "desconhecido" para plataformas incomuns / não padronizadas).

@FrankMittelbach Seria definitivamente melhor do que tentar adivinhar com peculiaridades dependentes do sistema. As chamadas de sistema C relevantes devem ser bastante fáceis de usar.

Apenas pesquisando, encontrei isto: https://stackoverflow.com/questions/3596310

Não tenho certeza se essa função está realmente disponível em todas as plataformas. Além disso, não sei sobre a lista completa de "sysname" retornado.

- De qualquer forma, se você decidir propor uma adição ao nível do motor, espero que esta seja a última proposta em relação às informações de arquitetura. Quer dizer, se houver uma possibilidade de proposta futura (por exemplo, detectar 32/64 bits ou detectar a revisão do sistema operacional), eles devem ser levantados aqui também. Não me sinto muito confortável em adicionar novos primitivos como esse de vez em quando, porque testar em várias plataformas geralmente é difícil.

Acho que no momento provavelmente cobrimos tanto quanto razoavelmente podemos aqui em expl3 : o negócio de fontes provavelmente deve ser tratado por código dedicado.

@josephwright Desculpe, eu pretendia voltar a isso. IMO, seria muito seguro testar /System/Library/Fonts/Menlo.ttc como um método rápido e robusto para consultar se estamos executando no Mac OS. Já existe há muito tempo, então funcionará em plataformas mais antigas; é uma parte central do sistema operacional, portanto, é extremamente improvável que desapareça e deve ser robusta em todas as instalações da região; está em um caminho que dificilmente será replicado em outras plataformas; o arquivo de fonte Menlo.ttc si AFAIK não está disponível de nenhuma forma de terceiros.

Eu proporia adicionar este teste, e o pior que pode acontecer é se ele conseguir algum uso, e for descoberto que tem alguns casos extremos, podemos explorar uma detecção de sistema operacional mais robusta por meio de primitivas ou semelhantes. Posso adicionar um branch para isso, se quiser?

@wspr O plano é apenas dividir o \sys_if_platform_unix:(TF) atual de forma que não seja verdade para MacOS? Ou você quer um teste \sys_if_platform_macos:(TF) separado? Eu posso ver a lógica em ambas as abordagens.

@josephwright Eu acho que "se unix" retornaria verdadeiro para o mac OS. E provavelmente também para o subsistema Windows para Linux ?? Eu não posso testar isso.

@wspr Eu verifiquei o WSL: ele relata ' unix '.

No momento, temos \c_sys_platform_str que será windows ou unix : podemos mudar isso no MacOS?

Em 06/05/19 10:37, Joseph Wright escreveu:

@wspr https://github.com/wspr Eu verifiquei o WSL: ele relata '| unix |'.

No momento, temos | \ c_sys_platform_str | que será | windows | ou
| unix |: nós mudamos isso no MacOS?

Esta é basicamente a mesma pergunta que o \ sys_if_engine_ luatex: TF e
\ c_sys_engine_str que tivemos em algum outro problema.

Eu sugiro fazer \ c_sys_engine_str e \ c_sys_platform_str como específicos
como pode ser (dentro do razoável, portanto, não incluindo versões e quais não), mas
permitindo que vários \ sys_if_engine _... e \ sys_if_platform _... sejam verdadeiros.
Minha opinião não é fortemente sustentada.

Eu concordo com o Bruno ...

É preciso mencionar que, no macOS Catalina (10.15), Songti.ttc e muitas outras fontes foram movidas para /System/Library/Fonts/Supplemental/ .

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

dbitouze picture dbitouze  ·  8Comentários

dbitouze picture dbitouze  ·  14Comentários

josephwright picture josephwright  ·  12Comentários

frougon picture frougon  ·  6Comentários

dbitouze picture dbitouze  ·  12Comentários