我在使用 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 上存在同样的问题...
我是不是做错了什么?谢谢
该.bat包含:
D:
copy D:\babla\blabla\File.pdf D:\Dropbox\blabla\blabla\
TeXstudio 2.12.6
答案1
您可以尝试使用用户宏实现您想要实现的任何目标,希望它能够起作用。
附言。我应该指出,以下宏是针对 Windows 10 操作系统编写的——请自行对其他操作系统进行适当的更改。我将描述脚本每一行的输出,希望您能轻松找出需要更改的内容。
我还假设您正在将.pdf
文件从工作目录(即主/根文件所在的位置)复制到 D 驱动器中名为(即位置).tex
的文件夹folder
D:\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
底部的消息框中出现一条消息。