Как я мог узнать, что LuaTeX удалил \write18?

Как я мог узнать, что LuaTeX удалил \write18?

Я очень стараюсь, чтобы это не звучало как тирада, но сейчас я очень зол.

Я пытался использовать экстернализацию TikZ для создания диаграммы рассеяния для своей диссертации. Было слишком много точек данных для памяти TeX, поэтому я переключился на LuaTeX. Экстернализация не сработала.

(МВЭ нравится:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
\tikz\node{Hello};
\end{document}

)

У меня был прошлый опыт работы с MiKTeX, который подсказывал, что изменение -shell-escapeна -enable-write18может иметь значение, а также -enable-write18против --enable-write18. Я потратил буквально полдня (помните, время компиляции LuaTeX все еще на порядки медленнее на MiKTeX), пытаясь заставить его работать и выяснить, почему он не работает, меняя командную строку и значение tikz/external/shell escape. Ничего не сработало.

Сегодня я делаю поиск в Google и нахожу ответ наhttps://github.com/gpoore/minted/issues/112: В LuaTeX больше нет \write18. Вам нужно, \usepackage{shellesc}чтобы он снова его добавил.

Мой вопрос в том, что я пытаюсь быть хорошим пользователем здесь и всегда RTFM. Где TFM я должен был прочитать, чтобы узнать, что эта функциональность была удалена и как ее вернуть? Чтобы не тратить полдня, думая, что я делаю что-то не так? Конечно, это не проблема Github совершенно не связанного пакета?

решение1

Немного жаль, что Кристиан Шенк развертывает в MiKTeX новые версии двоичных файлов ( luatexв данном случае) сразу же, как только они становятся доступны.

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

Когда был выпущен LuaTeX 0.87, было внесено много изменений, в частности, одно, касающееся \write18. Если вы посмотрите наНовости LaTeX 24, выпущенный в феврале 2016 года, вы увидите

введите описание изображения здесь

а также

введите описание изображения здесь

решение2

В руководстве luatex упоминается следующее изменение:

Кроме того, мы больше не поддерживаем write18, поскольку os.execute может делать то же самое.

Но я очень сомневаюсь, что даже если бы вы это прочитали, вы бы поняли последствия и что это могло бы повлиять на tikzexternalize.

Изменение произошло в прошлом году, и если вы поищете на этом сайте, то shellescнайдете ряд вопросов (также связанных с texlive, это не проблема, специфичная для miktex,Невозможно запустить tikz externalize с lualatex, но раньше это работало). Но опять же: даже если вы увидите один из этих вопросов в течение года, я не ожидаю, что вы их запомните и поймете, что они применимы к вашей текущей проблеме.

Так что же вы можете сделать?Несколько советов:

  • Изменения происходят, особенно с новым ПО, таким как luatex. Примите это.
  • Не все изменения очевидны и их можно узнать, прочитав руководство.
  • Не пытайтесь решать свои проблемы часами в одиночку. Поищите немного, и если у вас сложилось впечатление, что вы не добиваетесь никакого прогресса, то лучше потратьте свое время на создание разумного минимального примера, а затемпросить.

решение3

Если вы используете бета-версию программного обеспечения, лучше всего следовать ее каналам разработки, поскольку критические изменения ожидаются в бета-версиях. Это обсуждалось в списке luatex до внесения изменений. (Это не относится ко всем критическим изменениям в luatex:-). Например, эта ветка от ноября 2015 г.http://tug.org/pipermail/luatex/2015-November/005499.html

Без подписки на рассылку это изменение было отмечено в ltnews, а также в руководстве luatex.

Тем не менее, в идеальном мире конечному пользователю вообще не нужно было бы это знать, мы искали в ctan все \write18возможные варианты использования и пытались связаться с разработчиками пакетов для их обновления.доизмененный luatex был распространен в основных дистрибутивах. Проблема minted github, на которую вы ссылались, является одним из примеров этого.

То, что все еще существуют пакеты, требующие от конечного пользователя использования shellesc(или luatex85) пакетов, немного досадно, но, возможно, это неизбежный результат распределенной природы разработки пакетов LaTeX. Пакеты обновляются по мере того, как у разработчиков появляется время или желание опубликовать обновление.

Связанный контент