включить экранирование оболочки с помощью pandoc

Я пытаюсь использовать пакет latex graphvis в документе pandoc markdown. Однако, похоже, требуется, чтобы флаг -shell-escape был передан латексу. Как я могу включить -shell-escape на pandoc?

\digraph[scale=0.5]{MyGraph}{
Business -- Job;
Job -- Task;
Job -- User;
Job -- PayRate;
Task -- WorkSession;
User -- WorkSession;
PayRate -- WorkSession;
}

http://mark.aufflick.com/blog/2007/03/25/embedding-graphviz-in-latex-documents


person HSchmale    schedule 23.03.2016    source источник
comment
существует фильтр pandoc, который может преобразовывать код графовиза перед преобразованием в латекс: raw. githubusercontent.com/jgm/pandocfilters/master/examples/; может быть проще и работает со всеми форматами вывода, а не только с латексом   -  person scoa    schedule 25.03.2016


Ответы (2)


pandoc теперь может передавать аргументы непосредственно механизму LaTeX через флаг --latex-engine-opt. Например, чтобы передать флаг -shell-escape в xelatex, вы можете сделать:

pandoc myfile.md -s -o myfile.pdf --latex-engine=xelatex --latex-engine-opt=-shell-escape
person pikkio    schedule 16.02.2017
comment
Вам следует обновить свой ответ: последняя версия pandoc сообщает --latex-engine-opt has been removed. Use --pdf-engine-opt instead.. - person Clément; 17.05.2018

Вы можете указать pandoc сгенерировать LaTeX, а затем сделать с выводом все, что захотите.

pandoc -o mydocument.tex mydocument.md
pdflatex -shell-escape mydocument.tex

У Pandoc есть опция --latex-engine, указывающая ему запускать LaTeX по-другому, но это может быть только путь к программе с именем pdflatex, lualatex или xelatex. Если по какой-то причине вы хотите иметь возможность создавать PDF-файлы из Markdown, вызывая pandoc напрямую, вы можете использовать сценарий-оболочку.

pandoc --latex-engine=/path/to/pdflatex -o mydocument.pdf mydocument.md

где /path/to/pdflatex исполняемый файл и содержит (при условии, что система, подобная Unix)

#!/bin/sh
exec pdflatex -shell-escape "$@"
person Gilles 'SO- stop being evil'    schedule 23.03.2016