Erro ao usar o pacote cunhado para escrever um trecho de código LaTeX em um documento

Erro ao usar o pacote cunhado para escrever um trecho de código LaTeX em um documento

Desejo escrever um trecho de código LaTeX em um documento e, portanto, carreguei o pacote criado. Mas ao compilar apareceu o seguinte erro:

! Erro criado pelo pacote: você deve invocar o LaTeX com o sinalizador -shell-escape. Consulte a documentação do pacote cunhado para obter explicação.

Por favor, me ajude com esse problema!

Desde já, obrigado!

Responder1

Como o pacote cunhado requer acesso ao shell, isso deve ser permitido em seu editor. Para fazer isso, você deve adicionar -shell-escapeà sua lista de comandos LaTex, PdfLaTex, XeLaTex e LuaLaTex em seu editor. Em “TexWorks” modifique esses comandos indo em “Opções > Configurar TexWorks > Comandos” altere os seguintes comandos adicionando -shell-escape:

latex.exe -shell-escape -src -interaction=nonstopmode %.tex
pdflatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex
xelatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex
lualatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex

TeXworks com pdflatex e shellescape habilitados

insira a descrição da imagem aqui

O console será exibido \write18 enabledassim que o procedimento acima for executado em um arquivo

OU

Você também pode salvar o código em um arquivo tex (digamos que você o nomeou testMinted.tex) e compilá-lo a partir da linha de comando, indo para a pasta onde o arquivo reside (digamos que esteja em C:\Users\uqapourm\Desktop\testMinted) e executando pdflatex.exe -shell-escape -synctex=1 -interaction=nonstopmode testMinted.texna linha de comando.

SEGURANÇA

Às vezes, é útil poder executar comandos externos de dentro do arquivo tex: permite, por exemplo, externalizar alguma composição tipográfica ou usar ferramentas externas como o bibtex. Isto está disponível através da \write18primitiva tex.

The problem is that it allows for almost everything.

Um arquivo tex deve ser portátil e não se deve temer nenhum problema de segurança ao compilar um arquivo de terceiros. Portanto, por padrão, esta primitiva está desabilitada.

Se um usuário precisar usá-lo, ele precisará informar explicitamente ao compilador que confia no autor do arquivo com a interação do shell, e esse é exatamente o objetivo do --shell-escapeargumento opcional.

Durante anos \write18tem sido usado como uma porta dos fundos para o sistema operacional. Sintaticamente, o TeX o trata como uma gravação em um arquivo, mas register 18é tratado como um arquivo pré-aberto que na verdade executa comandos.

"irrestrito" write18significa que você pode executar qualquer comando, portanto, se você permitir isso e executar um arquivo TeX que alguém lhe enviou, ele poderá executar código arbitrário, enviar seu arquivo de senha por e-mail para um bot de spam ou qualquer outra coisa.

Isso é obviamente um risco de segurança, mas existem alguns comandos que fazem naturalmente parte da distribuição Tex que você pode querer sempre permitir (como conversão de imagem e fonte), então o web2c permite que você (ou os mantenedores do texlive por padrão) configure um conjunto de comandos "permitidos e seguros" e estes podem ser executados em modo restrito.

A terceira alternativa é nunca executar comandos do \write18.

O que significa "\write18 restrito habilitado" e por que o TexLive continua reportando isso?

Como habilitar o shell-escape no TeXworks?

PS

Às vezes, você precisa limpar o cache para que o pacote funcione. Isso tornará a operação mais lenta, mas evitará erros. Para fazer isso, adicione a opção a \usepackage[cache=false]{minted}.

informação relacionada