Latex3: 機能リクエスト:OS /プラットフォーム名を検出

作成日 2019年01月09日  ·  25コメント  ·  ソース: latex3/latex3

windowslinux 、OS /プラットフォーム名を検出するためのインターフェースを追加することを検討してください。

たとえば、 ctexパッケージは\ctex_detected_platform:実装しています

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

expl3 feature-request

最も参考になるコメント

リクエストは\ sys_if_platform_ macos:pTF (または同様のもの)にも

全てのコメント25件

我々は持っている\sys_if_platform_(unix|windows):(pTF)\c_sys_platform_strl3candidates :彼らはあなたのために働くのですか?

fontspecなどは動作が異なる可能性があるため、macosもテストしてください。

これは、macOSで「標準」ファイルを探すだけで実行されるので、write18は必要なく、非常に高速である必要があります。 私からの異議はありません。 ジョセフはどう思いますか?

GitHawkで送信

ご参考まで:

  • /Library/Fonts/Songti.ttc (中国語フォント)はmacOS 10.9(Mavericks)以降に存在します。

    • 「ダーウィン」バイナリは、Appleによる公式サポート(TL2018が開始された10.10 Yosemite以降)を備えたmacOSのみをサポートするため、問題ない可能性があります。

    • ただし、TLには、10.6 Snow Leopard-10.9Mavericksをサポートする「darwinlegacy」バイナリがまだ含まれています。 したがって、 /Library/Fonts/Songti.ttcの存在テストは、macOS10.6-10.8では失敗します。

  • macOSの少し安全なテストでは、独自のラテンフォントを探します(例: /System/Library/Fonts/Palatino.ttc /System/Library/Fonts/Menlo.ttc )。

    • CTeXのOSを検出する目的は、環境に埋め込むことができる中国語フォントを判別することであるため、CTeXのコードは依然として妥当であることに注意してください。

余分な詳細をありがとう! パラティーノのテストはかなり安全な賭けのように聞こえます。

これは既存のコードでカバーされていますか? 厩舎への移行を検討するようにお願いしていますか?

リクエストは\ sys_if_platform_ macos:pTF (または同様のもの)にも

ご参考まで:

申し訳ありませんが、 /System/Library/Fonts/Palatino.ttcは10.9 Mavericks以降に存在します(10.8 Mountain Lion以前の場合は、代わりに/Library/Fonts/Palatino.ttcた)。

10.6 SnowLeopardから10.14Mojaveまで、 /System/Library/Fonts/Menlo.ttc常に存在します。 これは、より安全なテストになる可能性があります。

私の「TeXバナー」プランは機能しますか? プリミティブをソート((u)pTeX / XeTeX)するために少し作業する必要がありますが、それは明示的なOSの詳細を見つけるための明白な場所です。

現在のTeXバナーには、必ずしもプラットフォーム名が含まれているとは限りません。

pdfTeXでは、Debianビルドが(TeX Live 2018/debian)を提供し、Win32ビルドが(TeX Live 2018/W32TeX)を提供することを確認しましたが、他のビルドには文字列が含まれていません。

e-(u)pTeXの場合、バナープリミティブの実装候補がすでにあります//github.com/texjporg/tex-jp-build/compare/banner

残りの問題は、その名前(\ epTeXbanner、\ eptexbanner、vs。\ enginebannerのようなより一般的なもの?)と必要性です。

@aminophenそうですね、そのアプローチではうまくいかないようです

基本システムフォントのようなものは、OSXのようなものの十分な指標となる可能性がありますが、一方で、将来のバージョンまたは地域のバリアントにそれがないという危険性が常にあります。 どういうわけか、エンジンが代わりにその情報を提供していれば、それほど難しいことではないように思えます(提供するものについて合意が得られれば)

@FrankMittelbachあなたは\platformnameようなものをプリミティブとして考えていますか? おそらくTLリストで取り上げる人はいますか?

@josephwrightはい、エンジン全体で結果が定義されているようなものです。そのため、すべてが同じプラットフォームで同じ値を報告します(また、一般的でない/標準化されていないプラットフォームでは「不明」である可能性があります)。

@FrankMittelbachは、システムに依存する癖で推測しようとするよりも間違いなく優れています。 関連するCシステムコールは非常に使いやすいはずです。

ただグーグル、私はこれを見つけました: https

その機能が実際にすべてのプラットフォームで利用できるかどうかはわかりません。 また、返された「sysname」の完全なリストについてはわかりません。

-とにかく、エンジンレベルの追加を提案することを選択した場合、これがアーキテクチャ情報に関する最後の提案であることを願っています。 つまり、将来の提案(32/64ビットの検出やOSリビジョンの検出など)の可能性がある場合は、ここでも提起する必要があります。 さまざまなプラットフォームでのテストは通常​​難しいため、私は時々そのような新しいプリミティブを追加することにあまり慣れていません。

現在、 expl3で合理的に可能な限り多くのことをカバーしていると思います。フォントビジネスは、専用のコードで処理する必要があります。

@josephwright申し訳ありませんが、これに戻る/System/Library/Fonts/Menlo.ttcをテストするのが非常に安全です。 それは長い間そこにあったので、古いプラットフォームで動作します。 これはOSのコア部分であるため、消える可能性は非常に低く、リージョンのインストール全体で堅牢である必要があります。 他のプラットフォームで複製される可能性が低いパスにあります。 フォントファイルMenlo.ttc自体AFAIKは、サードパーティの方法では使用できません。

このテストを追加することを提案します。発生する可能性のある最悪の事態は、それがある程度使用され、いくつかのエッジケースがあることが判明した場合、プリミティブなどを介してより堅牢なOS検出を調査できます。 必要に応じて、このブランチを追加できますか?

@wspr MacOSに\sys_if_platform_unix:(TF)を分割するだけの計画ですか? または、別の\sys_if_platform_macos:(TF)テストが必要ですか? 私は両方のアプローチの論理を見ることができます。

@josephwright

@wspr WSLを確認しました:「 unix 」を報告します。

現在、 \c_sys_platform_strがありますが、 windowsまたはunixます:MacOSで変更しますか?

5/6/19 10:37に、ジョセフライトは次のように書いています。

@wspr https://github.com/wspr WSLを確認しました:「| unix |」と報告されます。

現在、| \ c_sys_platform_str |があります whicは| windows |になりますまた
| unix |:MacOSで変更しますか?

これは基本的に\ sys_if_engine_ luatex:TFと同じ質問です
\ c_sys_engine_str他の問題で発生しました。

\ c_sys_engine_strと\ c_sys_platform_strを具体的にすることをお勧めします
可能な限り(理由の範囲内で、バージョンなどを含まない)、しかし
いくつかの\ sys_if_engine _...と\ sys_if_platform _...をtrueにすることができます。
私の意見は強く保持されていません。

ブルーノに同意します...

macOS Catalina(10.15)では、 Songti.ttcと他の多くのフォントが/System/Library/Fonts/Supplemental/移動されていることに注意してください。

このページは役に立ちましたか?
0 / 5 - 0 評価