TexStudio 中的元命令存在问题/将 pdf 复制到其他地方

TexStudio 中的元命令存在问题/将 pdf 复制到其他地方

我在使用 TexStudio 时遇到问题。我定义了一个用户命令,每次重新编译时都会将 pdf 复制到另一个目录中。我在 Windows 10 和 Ubuntu 16.04 上都这样做过,分别使用:

cmd /C copy %.pdf D:\folder
bash -c "cp -t ~/folder %.pdf"

如果我尝试单击“工具>用户>复制 PDF”命令,它们可以正常工作。

因此,我尝试使用 | txs:///copypdf 将此命令插入元命令“Build & View”中,但单击 Build&View 时未执行该命令。Windows 和 Linux 上存在同样的问题...

我是不是做错了什么?谢谢

更新:看来更改 Meta 命令无效 在此处输入图片描述

该.bat包含:

D:
copy D:\babla\blabla\File.pdf D:\Dropbox\blabla\blabla\

TeXstudio 2.12.6

答案1

您可以尝试使用用户宏实现您想要实现的任何目标,希望它能够起作用。

附言。我应该指出,以下宏是针对 Windows 10 操作系统编写的——请自行对其他操作系统进行适当的更改。我将描述脚本每一行的输出,希望您能轻松找出需要更改的内容。

我还假设您正在将.pdf文件从工作目录(即主/根文件所在的位置)复制到 D 驱动器中名为(即位置).tex的文件夹folderD:\folder


在 下Macros -> Edit Macros,单击Add弹出窗口的左下角,然后粘贴以下内容:

%SCRIPT
full_dir = editor.fileName().replace(/\//,"\\")
file_name = full_dir.split(".tex")[0]
system('cmd /C "copy '+file_name+'.pdf D:\\folder"')

并给它一个事件触发器,?after-command-run如下图所示:

在此处输入图片描述

单击Ok,然后现在,每当命令运行结束时(例如在通话结束时Build and View),该脚本将自动激活,并且应复制到指定的文件夹。


简短解释

  • 1号线editor.filename()返回一个包含主文件完整目录的字符串.tex(也应该是.pdf生成的位置)。例如,它可能类似于

    C:/Users/.../main.tex
    

    (其中...只是通向 的相关路径main.tex。)

    • /然后,我通过正则表达式替换将目录字符串中的所有(正斜杠)更改为\(反斜杠),因为 Windows 使用反斜杠。我猜其他操作系统不是这种情况,所以.replace(...)在这种情况下你可以省略该语句。
  • 2号线:还请注意,结果在末尾editor.filename()留下了一个扩展名。所以我在这行中删除了它。.tex

  • 3号线:在这里,system命令将其参数传递给命令行,我们需要显式调用 shell,并且依赖于操作系统: (阅读TXS 用户手册,请参阅第 1.3.2 节“Shell 功能”下的更多信息):

    对于 Mac OS / Linux:

    sh -c "<cmds>"
    

    对于 Windows:

    cmd /C "<cmds>"
    

    最后,请注意D:\\folder第 3 行的部分。只需将其更改为您想要复制到的任何目录/文件夹.pdf即可。确保该文件夹确实存在。


如果它确实运行成功,您应该会看到1 file(s) copied底部的消息框中出现一条消息。

相关内容