Latex3: Запрос функции: определение имени ОС / платформы

Созданный на 9 янв. 2019  ·  25Комментарии  ·  Источник: latex3/latex3

Пожалуйста, подумайте о добавлении интерфейса для определения имени ОС / платформы, например, windows или linux .

Пакет 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, поэтому запись не требуется, и она должна быть довольно быстрой. Никаких возражений с моей стороны. Как вы думаете, Иосиф?

Отправлено с помощью GitHawk

Просто чтобы ты знал:

  • /Library/Fonts/Songti.ttc (китайский шрифт) существует с macOS 10.9 (Mavericks).

    • Бинарные файлы "darwin" поддерживают только macOS с официальной поддержкой Apple (10.10 Yosemite или более поздняя версия на момент запуска TL2018), так что это может быть нормально.

    • Однако TL все еще содержит двоичные файлы darwinlegacy, которые поддерживают 10.6 Snow Leopard - 10.9 Mavericks. Таким образом, проверка существования /Library/Fonts/Songti.ttc не удастся для macOS 10.6–10.8.

  • Немного более безопасным тестом для macOS будет поиск проприетарного латинского шрифта (например, /System/Library/Fonts/Palatino.ttc /System/Library/Fonts/Menlo.ttc ).

    • Обратите внимание, что код CTeX по-прежнему разумен, потому что цель обнаружения ОС для CTeX - определить, какой китайский шрифт может быть встроен в среду.

Спасибо за дополнительные сведения! Тестирование на Палатино звучит как довольно безопасная ставка.

Это покрывается существующим кодом? Вы просите нас подумать о переходе в стабильную?

Я думаю, что запрос также предназначен для \ 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://github.com/texjporg/tex-jp-build/compare/banner

Остальные проблемы - это название (\ epTeXbanner, \ eptexbanner или более общее, например, \ enginebanner?) И необходимость.

@aminophen Ну, похоже, такой подход не поможет: я не мог вспомнить, какие системы MacOS TeX изображены на баннере. Так что, я подозреваю, не стоит об этом беспокоиться. Наверное, поиск файла с маркером - лучшее, что мы можем сделать

что-то вроде базового системного шрифта может быть достаточно хорошим индикатором для чего-то вроде OSX, с другой стороны, всегда есть опасность, что в будущих версиях или региональных вариантах этого не будет. Почему-то мне кажется, что это не должно быть слишком сложно, если движки вместо этого предоставляют эту информацию (при условии, что кто-то получит согласие, что они предоставляют)

@FrankMittelbach Вы думаете о чем-то вроде \platformname как о примитиве? Возможно, кого-то поднять в список TL?

@josephwright да, что-то в этом роде с определенными результатами для всех движков, так что все сообщают одно и то же значение на одной платформе (и, возможно, «неизвестно» для необычных / нестандартных платформ).

@FrankMittelbach Определенно было бы лучше, чем пытаться угадать системно-зависимые причуды. Соответствующие системные вызовы C должны быть довольно простыми в использовании.

Просто погуглил, я нашел это: https://stackoverflow.com/questions/3596310

Я не уверен, действительно ли эта функция доступна на всех платформах. Кроме того, я не знаю полного списка возвращенных "sysname".

- В любом случае, если вы решите предложить дополнение на уровне движка, я надеюсь, что это последнее предложение, касающееся информации об архитектуре. Я имею в виду, что если есть возможность будущего предложения (например, обнаружение 32/64-битной версии или обнаружение ревизии ОС), они также должны быть подняты здесь. Мне не очень удобно добавлять такие новые примитивы время от времени, потому что тестирование на различных платформах обычно затруднено.

Я думаю, что в настоящее время мы, вероятно, охватили здесь все, что разумно, в expl3 : бизнесом по шрифтам, вероятно, придется заниматься с помощью специального кода.

@josephwright Извини, что я хотел вернуться к этому. ИМО, было бы очень безопасно протестировать /System/Library/Fonts/Menlo.ttc как быстрый и надежный метод, чтобы узнать, работаем ли мы в Mac OS. Он существует уже давно, поэтому будет работать на более старых платформах; это основная часть ОС, поэтому маловероятно, что она исчезнет, ​​и она должна быть надежной при установке в разных регионах; это путь, который вряд ли будет воспроизведен на других платформах; сам файл шрифта Menlo.ttc AFAIK недоступен каким-либо сторонним способом.

Я бы предложил добавить этот тест, и худшее, что может случиться, - это если он получит какое-то применение и обнаружится несколько крайних случаев, мы сможем изучить более надежное обнаружение ОС с помощью примитивов или чего-то подобного. Я могу добавить для этого ветку, если хотите?

@wspr Планируется ли просто разделить текущий \sys_if_platform_unix:(TF) , чтобы это не соответствовало MacOS? Или вам нужен отдельный тест \sys_if_platform_macos:(TF) ? Я вижу логику в обоих подходах.

@josephwright Я бы подумал, что "if unix" вернет истину для Mac OS. И, наверное, еще и для Подсистемы Windows для Linux ?? Я не могу это проверить.

@wspr Я проверил WSL: он сообщает « unix ».

В настоящее время у нас есть \c_sys_platform_str которое будет windows или unix : мы изменим это в MacOS?

06.05.19 10:37 Джозеф Райт написал:

@wspr https://github.com/wspr Я проверил WSL: он сообщает '| unix |'.

В настоящее время у нас есть | \ c_sys_platform_str | что будет | окна | или
| 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 рейтинги