我正在使用铸造lyx 软件包。我想\inputminted
使用必须能够指定相对路径(在具有不同主目录名称的机器之间共享)。
问题是\inputminted
调用时的工作目录是/tmp/lyxbuf_tmp
。这是 2009 年的邮件列表帖子讨论了将外部材料复制到该目录的确切问题,但似乎没有我能找到的解决方案。
有人能解释一下如何制作一个minted.layout
允许我使用\inputminted
并实现包含外部源代码文件的预期效果的文件吗?
或者有人可以建议任何方法来实现预期的效果吗?
答案1
有两种方法:
创建外部变量模板。
这是最好的方法,但需要一些时间来理解和设置。转到工具 > 自定义 > 第 6 部分(包括外部材料)
路径变量有很多。例如:
$$AbsOrRelPathParent The file path, absolute or relative to the LyX document.
$$FPath The path part of $$FName (absolute name or relative to the LyX document).
$$RelPathMaster The file path, relative to the master LyX document.
$$RelPathParent The file path, relative to the LyX document.
使用脚本(例如 Python 或 Bash)进行替换。
这有点儿像黑客行为,但可以让您完全控制。转到“工具”>“首选项”>“文件处理”>“转换器”,创建一个转换器(再次,有关详细信息,请参阅自定义手册)。编辑该converter
字段。参见以下屏幕截图:
答案2
我根据 @scottkosty 的回答找到了解决方案!我将其放入 ~/.lyx/external_templates 文件夹中,然后转到“插入”>“文件”>“外部材料”,然后选择“minted”。它的参数化程度不够,但我没有更多时间去摆弄它。
Template MintedSource
GuiName "Minted Source Code"
HelpText
Run \inputminted{}
HelpTextEnd
InputFormat text
FileFilter "*"
AutomaticProduction true
Preview InstantPreview
Format PDFLaTeX
Product "\\inputminted[linenos,fontsize=\\footnotesize,baselinestretch=1]{python}{$$AbsPath$$Basename$$Extension}"
Requirement "underscore"
Requirement "minted"
UpdateFormat text
UpdateResult "$$AbsPath$$Basename$$Extension"
ReferencedFile text "$$AbsPath$$Basename$$Extension"
FormatEnd
TemplateEnd