Como eu deveria ter descoberto que LuaTeX removeu \write18?

Como eu deveria ter descoberto que LuaTeX removeu \write18?

Estou tentando muito não fazer isso parecer um discurso retórico, mas estou com muita raiva agora.

Eu estava tentando usar a externalização TikZ para criar um gráfico de dispersão para minha tese. Havia muitos pontos de dados para a memória do TeX, então mudei para o LuaTeX. A externalização não funcionou.

(MWE gosta:

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

)

Tive experiências anteriores com o MiKTeX que sugeriram que mudar para -shell-escapepode -enable-write18fazer a diferença, assim como -enable-write18vs. --enable-write18Passei literalmente meio dia (lembre-se, os tempos de compilação do LuaTeX ainda são muito mais lentos no MiKTeX) tentando fazê-lo funcionar e descobrir por que não funciona, alterando a linha de comando e também o valor de tikz/external/shell escape. Nada funcionou.

Hoje faço uma pesquisa no Google e encontro a resposta emhttps://github.com/gpoore/minted/issues/112: Não existe mais \write18no LuaTeX. Você tem \usepackage{shellesc}que adicioná-lo novamente.

Minha dúvida é, estou tentando ser um bom usuário aqui e sempre RTFM. Onde está o TFM que eu deveria ter lido para descobrir que essa funcionalidade foi removida e como adicioná-la novamente? Para evitar passar meio dia pensando que estou fazendo algo errado? Certamente não é a questão do Github de um pacote completamente não relacionado?

Responder1

É um pouco lamentável que Christian Schenk implemente no MiKTeX novas versões dos binários ( luatexneste caso) assim que estiverem disponíveis.

O TeX Live apenas altera os binários (principais) com o lançamento anual e não os modifica durante o ano (exceto por bugs muito sérios, mas estes geralmente são detectados durante a fase de pré-teste).

Quando o LuaTeX 0.87 foi lançado, muitas mudanças foram feitas, em particular aquela sobre o \write18. Se você olharNotícias do LaTeX 24, lançado em fevereiro de 2016, você verá

insira a descrição da imagem aqui

e também

insira a descrição da imagem aqui

Responder2

O manual do luatex menciona a mudança:

Além disso, não oferecemos mais suporte a write18 porque os.execute pode fazer o mesmo.

Mas duvido muito que mesmo se você tivesse lido isso, você entenderia as implicações e que isso poderia afetar a externalização do tikze.

A mudança aconteceu no ano passado e se você pesquisar neste site shellescvocê encontrará uma série de dúvidas (também envolvendo o texlive, não é um problema específico do miktex,Não é possível executar o tikz externalize com lualatex, mas costumava funcionar). Mas, novamente: mesmo que você tenha visto uma dessas perguntas durante o ano, eu não esperaria que você se lembrasse delas e percebesse que elas se aplicam ao seu problema atual.

Então, o que você poderia fazer? Algumas dicas:

  • Mudanças acontecem, ainda mais com novos softwares como o luatex. Aceite isso.
  • Nem todas as mudanças são óbvias e podem ser aprendidas lendo o manual.
  • Não tente resolver seus problemas por horas sozinho. Pesquise um pouco e se você tem a impressão de que não faz nenhum progresso, então é melhor gastar seu tempo para dar um exemplo mínimo sensato e entãoperguntar.

Responder3

Se estiver usando uma versão beta do software, é melhor seguir seus canais de desenvolvimento, pois mudanças importantes são esperadas nas versões beta. Isso foi discutido na lista luatex antes da mudança ser feita. (Não é verdade para todas as alterações significativas no luatex :-). Por exemplo, este tópico de novembro de 2015http://tug.org/pipermail/luatex/2015-November/005499.html

Sem seguir a mailing list, esta mudança foi sinalizada no ltnews e também no manual do luatex.

Dito isto, em um mundo ideal, um usuário final não precisaria saber disso, pesquisamos no ctan cada uso que \write18pudemos encontrar e tentamos entrar em contato com os desenvolvedores de pacotes para atualizar os pacotes.anteso luatex alterado foi distribuído em distribuições principais. O problema cunhado do github que você mencionou é um exemplo disso.

O fato de ainda existirem pacotes que exigem que o usuário final use shellesc(ou luatex85) pacotes é um pouco lamentável, mas é um resultado possivelmente inevitável da natureza distribuída do desenvolvimento de pacotes LaTeX. Os pacotes são atualizados conforme e quando os desenvolvedores têm tempo ou vontade de publicar uma atualização.

informação relacionada