texstudio
具有通过右键单击文件名从另一个文件中打开包含的文件的良好功能
\include{test}
这对当前工作文件夹中的文件或指定了相对或绝对路径的文件有效。对 latex 搜索路径内的文件无效。
问题:
是否可以创建用户宏(或类似的)来从乳胶搜索路径打开文件?
在命令行中,我会使用
open `kpsewhich ushyphex.tex`
打开它们。我尝试编写一个 texstudio 用户宏
%SCRIPT
system(open `kpsewhich cursor.selectedText()`);
(为简单起见,已.tex
包含在选定的文本中)然而这会导致错误
答案1
我将讨论主要问题:是否可以创建用户宏(或类似的)来从乳胶搜索路径打开文件?
实际上,整个问题是 TeXstudio 在执行其命令时(默认情况下)不涉及 shell,其中包括system(...)
用户宏中使用的命令。这在TXS 用户手册,见第 1.3.2 节 Shell 功能。因此,为了使您的命令(如下所示<cmds>
)能够像在终端/命令提示符中一样运行,您必须在用户命令中明确调用 shell:
对于 Mac OS / Linux:
sh -c "<cmds>"
对于 Windows:
cmd /C "<cmds>"
按照用户手册。
考虑到这一点,剩下的就相当简单了:的结果cursor.selectedText()
可以像在 的参数中连接字符串一样连接起来system(...)
。
在你的情况下(Mac OS),类似这样的操作就足够了:
%SCRIPT
system('sh -c "open `kpsewhich ' + cursor.selectedText() + '`"')
请注意上述命令中引号(单引号/双引号)的位置。