¿Cómo debería haber descubierto que LuaTeX eliminó \write18?

¿Cómo debería haber descubierto que LuaTeX eliminó \write18?

Estoy intentando con todas mis fuerzas que esto no parezca una perorata, pero estoy muy enojado en este momento.

Estaba intentando utilizar la externalización de TikZ para crear un diagrama de dispersión para mi tesis. Había demasiados puntos de datos para la memoria de TeX, así que cambié a LuaTeX. La externalización no funcionó.

(MWE como:

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

)

Tuve experiencias pasadas con MiKTeX que sugirieron que cambiar -shell-escapea -enable-write18puede marcar la diferencia, así como -enable-write18frente a --enable-write18. Pasé literalmente medio día (recuerde, los tiempos de compilación de LuaTeX siguen siendo mucho más lentos en MiKTeX) tratando de hacerlo funcionar y descubrir por qué no funciona, cambiando la línea de comando y el valor de tikz/external/shell escape. Nada funcionó.

Hoy hago una búsqueda en Google y encuentro la respuesta enhttps://github.com/gpoore/minted/issues/112: No hay más \write18en LuaTeX. Tienes que \usepackage{shellesc}volver a agregarlo.

Mi pregunta es, estoy tratando de ser un buen usuario aquí y siempre RTFM. ¿Dónde está TFM? Debería haber leído para saber que esta funcionalidad se eliminó y cómo volver a agregarla. ¿Para evitar pasar medio día pensando que estoy haciendo algo mal? Seguramente no es el problema de Github de un paquete completamente ajeno.

Respuesta1

Es un poco desafortunado que Christian Schenk implemente en MiKTeX nuevas versiones de los binarios ( luatexen este caso) tan pronto como estén disponibles.

TeX Live solo cambia los binarios (principales) con el lanzamiento anual y no los modifica durante el año (excepto errores muy graves, pero generalmente se detectan durante la fase de prueba previa).

Cuando se lanzó LuaTeX 0.87, se realizaron muchos cambios, en particular el relacionado con \write18. Si mirasNoticias de látex 24, lanzado en febrero de 2016, verás

ingrese la descripción de la imagen aquí

y también

ingrese la descripción de la imagen aquí

Respuesta2

El manual de luatex menciona el cambio:

Además, ya no admitimos write18 porque os.execute puede hacer lo mismo.

Pero dudo mucho que incluso si hubieras leído esto habrías entendido las implicaciones y que podría afectar a tikzexternalize.

El cambio ocurrió el año pasado y si busca en este sitio shellescencontrará una serie de preguntas (también relacionadas con texlive, no es un problema específico de miktex,No se puede ejecutar tikz externalize con lualatex pero solía funcionar). Pero nuevamente: incluso si vieras una de estas preguntas durante el año, no esperaría que las recordaras y te dieras cuenta de que se aplican a tu problema actual.

Entonces, ¿qué podrías hacer? Algunos consejos:

  • Los cambios ocurren, aún más con software nuevo como luatex. Acepta esto.
  • No todos los cambios son obvios y se pueden aprender leyendo el manual.
  • No intentes resolver tus problemas durante horas solo. Busque un poco y si tiene la impresión de que no avanza, será mejor que invierta su tiempo en hacer un ejemplo mínimo sensato y luegopreguntar.

Respuesta3

Si utiliza una versión beta de software, es mejor seguir sus canales de desarrollo, ya que se esperan cambios importantes en las versiones beta. Esto se discutió en la lista de luatex antes de realizar el cambio. (No es cierto para todos los cambios importantes en luatex :-). Por ejemplo, este hilo de noviembre de 2015.http://tug.org/pipermail/luatex/2015-November/005499.html

Sin seguir la lista de correo, este cambio se marcó en ltnews y también en el manual de luatex.

Dicho esto, en un mundo ideal un usuario final no necesitaría saber esto en absoluto, buscamos en ctan cada uso que \write18pudimos encontrar e intentamos comunicarnos con los desarrolladores de paquetes para actualizar los paquetes.antesEl luatex modificado se distribuyó en las principales distribuciones. El problema de github acuñado al que hizo referencia es un ejemplo de eso.

Que todavía haya paquetes que requieran que el usuario final use shellesc(o luatex85) paquetes es un poco desafortunado, pero es un resultado posiblemente inevitable de la naturaleza distribuida del desarrollo de paquetes LaTeX. Los paquetes se actualizan cuando los desarrolladores tienen tiempo o ganas de publicar una actualización.

información relacionada