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-escape
pode -enable-write18
fazer a diferença, assim como -enable-write18
vs. --enable-write18
Passei 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 \write18
no 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 ( luatex
neste 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á
e também
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 shellesc
você 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 \write18
pudemos 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.