方法 1

方法 1

使用 pdftex 编译 LaTeX 文档时,其名称通常为newfile.pdf。是否可以根据即将编译的 LaTeX 源中的内容更改文档的名称?更准确地说,是否可以在 LaTeX 中插入命令,以便当我在\change{name}文本正文中键入类似 的内容并进行编译时,编译后的文档会自动具有名称name

如果我用 LyX 编译该文档,会有什么帮助吗?

答案1

您至少可以通过两种方式使用 Arara 来实现这一点。

方法 1

这可能是最直接的,而且是跨平台的。它只使用默认的 Arara 配置 - 无需添加任何额外的脚本或规则。

great-name.pdf无论文件本身的名称是什么,都会产生以下代码.tex

% arara: pdflatex: { options: "--jobname great-name" }
\documentclass{article}
\usepackage{kantlipsum}
\begin{document}
  \kant[1]
\end{document}

要编译它,你可以写

arara <filename>

其中<filename>.tex是文件的名称.tex。然后 Arara 运行pdflatex --jobname great-name <filename>.tex并生成great-name.pdf

使用此方法时要记住的一件事是,辅助文件也将使用指定的名称。因此,您将拥有great-name.aux-great-name.log不是 <filename>.aux<filename>.log。当然,这可能是一个优势,但也可能是一个劣势,因此值得注意。

方法 2

这不太简单,而且根据您的要求,可能更好也可能不好。具体细节取决于操作系统。下面的方法适用于默认 shell 为shbash或类似的系统。它也可能适用于其他相当符合 POSIX 标准的 shell。例如,我认为它在 Windows 上不起作用。

这是我刚刚编写的附加规则,我认为它应该根据要求重命名 PDF。请注意,我不熟悉 YAML,所以我的 Arara 脚本编写能力非常初级。

买者自负...

!config
# renamepdf rule for arara
identifier: renamepdf
name: rename PDF
command: <arara> mv -n @{force} @{options} "@{getBasename(file)}.pdf" "@{output}.pdf"
arguments:
- identifier: output
  flag: <arara> @{parameters.output}
  default: <arara> @{getBasename(file).concat("copy")}
- identifier: force
  flag: <arara> @{isTrue(parameters.force,"-f")}
- identifier: options
  flag: <arara> @{parameters.options}
# vim: set nospell:

这将为 Arara 创建一条新规则,您应将其放入您的个人规则目录中。我的是~/.arara/rules/。文件应命名renamepdf.yaml为 例如我的是~/.arara/rules/renamepdf.yaml

那么你可以说,例如:

% arara: pdflatex
% arara: renamepdf: { output: great-name, force: true, options: "-b" }
\documentclass{article}
\usepackage{kantlipsum}
\begin{document}
  \kant[1]
\end{document}

这将首先运行pdflatex,然后将生成的 PDF 重命名为great-name.pdf。如果该名称的文件已经存在,它将覆盖它,因为forcetrue。但是,它将首先进行备份,因为 选项-b也会传递给mv命令。(我只是用作-b示例 - 这个想法是options允许规则未明确涵盖的任何选项直接传递给命令。)

如果您查看默认规则目录,您会发现 Arara 在 Windows 上执行一项操作,而在其他系统上执行另一项操作的示例。因此,如果您想将上述内容改编为适用于 Windows 的内容,我建议您查看那里以寻求帮助。显然,手册是另一个信息来源。

答案2

控制输出文件名的正常方法是将输入保存为合适的名称,但是 web2c tex 实现确实有一个--jobname选项

 pdflatex --jobname=zzz newfile.tex

将产生zzz.pdf我不认为您可以在文件中设置它,因为一旦 tex 启动日志,作业名称就会被冻结。

相关内容