Lyx 与 \graphicspath 搭配使用效果不佳,而 LaTeX 与 \graphicspath 搭配使用效果良好。可能有错误吗?

Lyx 与 \graphicspath 搭配使用效果不佳,而 LaTeX 与 \graphicspath 搭配使用效果良好。可能有错误吗?

考虑以下 MWE:我有

  • 一个 LyX 文件/home/user/latex_files/main.lyx,我用它\graphicspath{{./img/}}来设置我想要包含在文件中的所有图像的(相对)路径
  • 一个 TeX/home/user/latex_files/test.tex
  • 以及 中的一个图像文件/home/user/latex_files/img/a.jpg

我的问题是 LyX 无法将我的文件编译为 pdf,因为我得到了LaTeX 错误:未找到文件“a”。
然而,当我从 LyX 中取出代码并粘贴时没有任何变化放入 tex 文件并使用 Texmaker 进行编译,编译没有任何问题。这是怎么回事?

我也尝试在 中使用绝对路径\graphicspath:结果相同!tex 文件可以编译,lyx 文件不能,并给出相同的错误消息。
如果我放弃使用\graphicspath并在 tex 文件和 lyx 文件中指定路径\includegraphics,则可以完美编译,正如预期的那样;所以问题似乎在于 LyX 如何处理\graphicspath

这令人沮丧因为我有很多图片文件,所以我需要手动设置图片文件的文件夹。如果我在每个\includegraphics命令中分别设置图片文件的文件夹,并且由于某种原因我需要更改图片文件夹的名称,那么如果我必须浏览整个代码来更改每个出现的每个名称,那将是一场噩梦\includegraphics。我相信其他用户也非常希望这种方法能够奏效,因为它简化了在文件夹结构发生变化时保持代码更新的过程。
我开始怀疑这种行为可能是一个长期存在的错误,因为在这个8年前的问题中基本上提到了相同的问题。他的解决方法是使用绝对路径,但这对我来说不起作用。

编辑:这是一个错误https://www.lyx.org/trac/ticket/8895但该问题已解决。我添加了更多票,希望开发人员能够宽容并修复 LyX 处理此问题的部分或全部问题。

最糟糕的是,LyX 无法优雅地失败:如果有人导入 LaTeX 文件或决定使用,\graphicspathLyX 不会发出任何警报,表示它无法处理该命令。


这是 LyX 文件的代码:我已将 LyX 中的所有内容设置为“类默认”,然后打开“代码预览”窗格,选择“完整源代码”并从那里复制。然后,我将同一源代码复制到 中text.tex,编译没有问题。

% Preview source code

%% LyX 2.3.4.2 created this file.  For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[english]{article}
\usepackage[latin9]{inputenc}
\usepackage{geometry}
\geometry{verbose}
\usepackage{mathtools}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific LaTeX commands.
\newlength{\lyxlabelwidth}      % auxiliary length 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\usepackage{graphicx}

\graphicspath{{./img/}}

\makeatother

\usepackage{babel}
\begin{document}
asd

\includegraphics{a} % This needs to be added using "evil red code", because 
% adding it using Insert -> Graphics insert the command with weird, additional parameters.

\end{document}

顺便说一句,我正在使用 Ubuntu 20.04.3 LTS 和 LyX 2.3.4.2(对于我的发行版来说,这是最新版本)。

答案1

有必要了解的是:

  1. Lyx 不会编译工作目录的文件,而是将使用过的文件复制到临时目录中/tmp/lyx_tmpdir.ezqVeYKSCOmQ...

  2. 另一方面,LyX 不知道也无法控制您手动在 LaTeX 序言中输入的内容(用DocumentSettings→添加的部分LaTeX preamble)。

  3. 在选择图像的对话框中 ( InsertGraphics...) 必须设置路径。否则,由于找不到图像,Lyx 会插入选项draft到图像中,因此您必须在发现时将图像包含在 ERT(邪恶的红色文本)中...首先也在\usepackage{graphicx}手册 LaTeX 序言中,因为对于 LyX 来说,文档中没有图像,所以显然没有理由加载“graphicx”。

  4. 而且,由于这种方式对于 LyX 来说没有图像,它们被复制到临时目录,因此查看 PDF(Ctrl+R)仍然失败。

  5. 然而,可行的是导出到 LaTeX(→→File到工作目录,然后在外部进行编译,因为在那个地方路径是正确的。ExportLaTeX (pdflatex)

话虽如此,对于使用所见即所得编辑器的人来说,这种情况很痛苦。在我看来,最好还是忘掉它\graphicpath,享受编辑器中的图像预览,如果有一天图像的路径需要更改,搜索和替换.lyx 文件中过时的路径比使用 LyX 编辑它来修改前言更快。

相关内容