当我按 Ctrl + R 时,出现此错误:
外部程序... 完成时出现错误。建议您修复外部程序错误的原因(检查日志)。
这个外部程序是什么?我如何检查它的日志?
(后来我发现,这里的具体错误是由于我未能在 ERT URL 中插入适当的反斜杠。但我的问题仍然存在。)
以下是来自 LyX 的 MWE。
#LyX 2.2 created this file. For more info see http://www.lyx.org/
\lyxformat 508
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass article
\use_default_options true
\maintain_unincluded_children false
\language english
\language_package default
\inputencoding auto
\fontencoding global
\font_roman "default" "default"
\font_sans "default" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\use_hyperref false
\papersize default
\use_geometry false
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
hfill
\backslash
raisebox{-0.5pt}{
\backslash
href{
\end_layout
\end_inset
\begin_inset ERT
status open
\begin_layout Plain Layout
https://www.wolframalpha.com/input/?i=1%2B1
\end_layout
\end_inset
\begin_inset ERT
status open
\begin_layout Plain Layout
}{
\backslash
includegraphics[scale=0.04]{1.pdf}}}
\end_layout
\end_inset
\end_layout
\end_body
\end_document
答案1
您的 ERT 盒应具有如下代码:
\hfill\raisebox{-0.5pt}{%
\href{https://www.wolframalpha.com/input/?i=1\%2B1}{%
\includegraphics[scale=0.04]{example-image}}}
注意 之前的反斜杠%2B1
,否则 URL 的结尾将成为 LaTeX 注释,从而破坏参数\href
!此外,没有理由将代码拆分为 3 个 ERT 框:一个就足够了,这样在 ERT 框之间包含错误空格的风险就更小了。
另一方面,同样重要的是,由于文档的所有内容都只是 LyX 看不见的 ERT 框,程序将不会处理定义这些命令的包,因此至少您必须在Documents> Settings..中手动加载所需的包Latex preamble:
\usepackage{graphicx}
\usepackage{hyperref}
然后就可以工作了:
尽管结果 照原样不是很好,我建议至少添加colorlinks
选项hyperref
。
或者,您也可以使用 Lyx 工具插入至少一个 ERT 框外的图像和一个超链接,以便自动加载包。在这种情况下,即使您已经编写了上述内容,LyX 也会删除该行以避免与自动加载发生冲突。
关于如何处理错误消息,您可以:
- 在错误窗口中按左下角的按钮View Complete log,您将看到:
这是`pdfTeX,版本 3.14159265-2.6-1.40.19(TeX Live 2018)(预加载格式=pdflatex2018.7.29)...
- 或者,从终端运行 lyx,显示另一种类型的错误
Systemcall.cpp (294): Systemcall: 'pdflatex "newfile1.tex"' finished with exit code 1
。
第一种方法将出现有关编译的错误,而第二种方法可能是有关 Lyx 及其外部程序、加载文件等的任何错误。
但是在这个例子中,使用这两种方法,您都会发现有问题的外部程序是pdftex
(pdflatex
实际上只是一个带有预加载的“pdflatex”格式的链接pdftex
),但显然第二种方法没有说明错误的原因。当描述不够充分时,完整的日志(总体上接近结尾)可以为您提供更多有关正在发生的事情的线索。但不可否认的是,错误消息一开始有点神秘。具体来说,“扫描 \foo 时文件结束”可能意味着您输入了\foo{
而不是\foo{}
。说“聪明点!\foo 的参数永远不会结束!”会更清楚,但随着时间的推移,您会欣赏这些消息的神秘魅力:)