Latex3: 功能请求:检测操作系统/平台名称

创建于 2019-01-09  ·  25评论  ·  资料来源: latex3/latex3

请考虑添加一个接口来检测操作系统/平台名称,例如windowslinux

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 (或类似的)的。 它可以通过检查(比如)mac 特定字体或系统文件的文件的存在来完成。

所有25条评论

我们在\sys_if_platform_(unix|windows):(pTF)\c_sys_platform_str l3candidates :它们对您有用吗?

希望也测试 macos,因为fontspec等可能有不同的行为。

我看到这只是通过在 macOS 中查找“标准”文件来完成的,因此不需要 write18 并且应该很快。 没有我的反对。 你怎么看约瑟夫?

使用GitHawk发送

仅供参考:

  • /Library/Fonts/Songti.ttc (中文字体)自 macOS 10.9 (Mavericks) 开始存在。

    • “达尔文”二进制文件仅支持苹果官方支持的 macOS(TL2018 开始时的 10.10 Yosemite 或更高版本),所以这可能没问题。

    • 但是,TL 仍然包含支持 10.6 Snow Leopard -- 10.9 Mavericks 的“darwinlegacy”二进制文件。 因此,对于 macOS 10.6 -- 10.8, /Library/Fonts/Songti.ttc的存在性测试将失败。

  • 对于 macOS 稍微安全一点的测试是寻找专有的拉丁字体(例如/System/Library/Fonts/Palatino.ttc /System/Library/Fonts/Menlo.ttc )。

    • 注意CTeX的代码还是合理的,因为CTeX检测OS的目的是判断环境可以嵌入哪种中文字体。

感谢您提供额外的详细信息! 测试 Palatino 听起来是一个非常安全的赌注。

这是否包含在现有代码中? 您是否要求我们考虑转向稳定版?

我认为该请求也是针对 \sys_if_platform_ macos:pTF (或类似的)的。 它可以通过检查(比如)mac 特定字体或系统文件的文件的存在来完成。

仅供参考:

抱歉, /System/Library/Fonts/Palatino.ttc从 10.9 Mavericks 开始存在(对于 10.8 Mountain Lion 或更早版本,它是/Library/Fonts/Palatino.ttc ),

从 10.6 Snow Leopard 到 10.14 Mojave, /System/Library/Fonts/Menlo.ttc始终存在。 这可能是一个更安全的测试。

我的“TeX 横幅”计划行得通吗? 我们必须做一点工作才能对原语进行排序 ((u)pTeX/XeTeX),但这是一个明显的地方,可以找到明确的操作系统细节。

当前的 TeX 横幅并不总是包含平台名称。

使用 pdfTeX 我已经看到 Debian 构建提供(TeX Live 2018/debian)和 Win32 构建提供(TeX Live 2018/W32TeX) ,但其他人不包含任何字符串。

对于 e-(u)pTeX,我们已经有了横幅原语的候选实现: https :

剩下的问题是它的名称(\epTeXbanner、\eptexbanner,与更通用的像 \enginebanner?)和必要性。

@aminophen听起来这种方法行不通:我不记得 MacOS TeX 系统在横幅中有什么。 所以这不值得担心,我怀疑。 可能寻找标记文件是我们能做的最好的事情

像基本系统字体这样的东西对于像 OSX 这样的东西来说可能是一个足够好的指标,另一方面,它总是存在未来版本或区域变体没有它的危险。 不知何故,在我看来,如果引擎提供该信息,应该不会太难(前提是人们就他们提供的内容达成一致)

@FrankMittelbach你在\platformname这样的东西是原始的吗? 可能会在 TL 列表中提出?

@josephwright是的,在引擎中定义了类似的结果,以便所有报告都在同一平台上报告相同的值(对于不常见/非标准化平台可能是“未知”)。

@FrankMittelbach肯定比试图用依赖于系统的怪癖来猜测要好。 相关的 C 系统调用应该很容易使用。

只是谷歌搜索,我发现这个: https :

我不确定该功能是否实际上在所有平台上都可用。 另外,我不知道返回的“sysname”的完整列表。

-- 无论如何,如果您选择提出引擎级添加,我希望这是关于架构信息的最后一个建议。 我的意思是,如果将来有可能提出建议(例如检测 32/64 位,或检测操作系统修订版),也应该在这里提出。 我对不时添加这样的新原语不太舒服,因为在各种平台上进行测试通常很困难。

我认为目前我们可能已经在expl3尽可能多地涵盖

@josephwright对不起,我本想回到这个问题上。 IMO 将/System/Library/Fonts/Menlo.ttc为一种快速而强大的方法来查询我们是否在 mac OS 中运行是非常安全的。 它已经存在很长时间了,因此可以在旧平台上运行; 它是操作系统的核心部分,因此极不可能消失,并且在跨区域安装时应该是健壮的; 它走在一条不太可能在其他平台上复制的道路上; 字体文件Menlo.ttc本身 AFAIK 不能以任何 3rd 方方式使用。

我建议添加这个测试,可能发生的最坏情况是,如果它确实得到一些使用,并且发现有一些边缘情况,我们可以通过原语或类似方法探索更强大的操作系统检测。 如果你愿意,我可以为此添加一个分支吗?

@wspr计划是否只是拆分当前的\sys_if_platform_unix:(TF)以至于它不适用于 MacOS? 或者你想要一个单独的\sys_if_platform_macos:(TF)测试? 我可以看到两种方法的逻辑。

@josephwright我认为“如果 unix”会为 mac OS 返回 true。 可能也适用于 Linux 的 Windows 子系统?? 我无法测试。

@wspr我检查了 WSL:它报告了“ unix ”。

目前我们有\c_sys_platform_str将是windowsunix :我们会在 MacOS 上更改它吗?

在 5/6/19 10:37,约瑟夫·赖特写道:

@wspr https://github.com/wspr我检查了 WSL:它报告了“|unix|”。

目前我们有|\c_sys_platform_str| 将是 |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_... 为真。
我的意见并不强烈。

我同意布鲁诺...

需要提及的是,在 macOS Catalina (10.15) 中, Songti.ttc和许多其他字体被移至/System/Library/Fonts/Supplemental/

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

bastien-roucaries picture bastien-roucaries  ·  19评论

dbitouze picture dbitouze  ·  4评论

JairoAdelRio picture JairoAdelRio  ·  7评论

EvanAad picture EvanAad  ·  49评论

dbitouze picture dbitouze  ·  8评论