Я очень стараюсь, чтобы это не звучало как тирада, но сейчас я очень зол.
Я пытался использовать экстернализацию 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. Пакеты обновляются по мере того, как у разработчиков появляется время или желание опубликовать обновление.