包括 jpg 图像,pdflatex 中的源代码编译不会创建 pdf

包括 jpg 图像,pdflatex 中的源代码编译不会创建 pdf

我正在用 LaTeX 写一份关于编程项目的报告,需要插入一些图片。我使用有限元程序 Freefem++ 创建了图像,并将结果保存在图像文件中。我试过 png、jpeg、eps 和 ps,但想使用 jpg,但到目前为止它们都不起作用。我搜索了整个互联网,似乎我的代码应该可以工作,所以我不确定我遗漏了什么。

\documentclass[a4paper,11pt]{article}

\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage[pdftex]{graphicx}
%\graphicspath{{images/}}
 \DeclareGraphicsExtensions{.pdf,.jpeg,.png,.jpg}   

\usepackage[english]{babel}
\begin{document}

\section*{Introduction}
\addcontentsline{toc}{section}{Introduction}


The domain considered will be

\begin{figure}
\begin{center}
\includegraphics{domain.jpg}
\end{center}
\end{figure}

\end{document}

我尝试将文件放在 images 文件夹中,并将其放在与 doc 相同的文件夹中,尝试使用和不使用文件扩展名,使用和不使用[pdftex]\DeclareGraphicsExtensions。它使用 进行编译pdflatex并且没有给出任何错误,退出代码为 1,然后当我尝试查看 pdf 时,它说它不存在,并询问我是否编译了源代码。如果我使用 进行编译pdftex,它只会创建一个空白的第一页。我已经尝试了所有我能想到的方法,但我不知道我错过了什么。也许是我需要在电脑上安装一个包?或者只是代码中的一个愚蠢的错误?有人看到我的错误吗?提前谢谢您!

答案1

问题:显然Freefem++创建了.jpg.png等 LaTeX 无法读取的图像。感谢上面的评论告诉我这是图像的问题,我决定尝试将其转换为.jpeg(其他格式可能也可以,但我想要jpg)。为此,我从 Linux 中的终端安装了 ImageMagick 包,然后使用命令convert创建domain.jpeg

$ convert domain.JPG domain.jpeg

这使得图像可用,之后只需格式化即可使其看起来正确。

答案2

当我尝试将 epub 转换为 pdf 时,我偶然发现了 pandoc 的相同错误:

[macfarlane@boulder]:(~/Documents)$ pandoc -s -t latex --toc --chapters \
    --latex-engine=lualatex $BOOK.epub -o $BOOK.pdf
!LuaTeX error (file /tmp/tex2pdf.23440/3f21bef8dd2877aad72f5cddbf00284ca88fa0e7
.jpg): reading JPEG image failed (no marker found)
 ==> Fatal error occurred, no output PDF file produced!

pandoc: Error producing PDF
[macfarlane@boulder]:(~/Documents)$ 

这是一个解决方法。检查是否可以生成 tex 文件:

[macfarlane@boulder]:(~/Documents)$ pandoc \
    -s -t latex \
    --toc --chapters \
    --latex-engine=lualatex $BOOK.epub -o $BOOK.tex
[macfarlane@boulder]:(~/Documents)$ 

将 epub 容器中包含的图像和其他媒体提取到路径 DIR,如有必要,请创建该路径,并使用选项 --extract-media= DIR 调整 [LaTeX] 文档中的图像引用,使其指向提取的文件。选择当前目录,该目录也包含 ePub 文件。添加 --extract-media=.,这表示在当前目录(也是 $HOME/Documents)中提取

[macfarlane@boulder]:(~)$ cd Documents
[macfarlane@boulder]:(~/Documents)$ pandoc \
    -s -t latex \
    --toc --chapters \
    --latex-engine=lualatex \
    --extract-media=. $BOOK.epub -o $BOOK.tex
pandoc: extracting ./images/9781501144158.jpg
pandoc: extracting ./images/com-01.jpg
pandoc: extracting ./images/f0003-01.jpg
pandoc: extracting ./images/f0005-01.jpg
[ ----- extract-media logging shortened ---- ]
pandoc: extracting ./images/f0177-01.jpg
pandoc: extracting ./images/f0187-01.jpg
pandoc: extracting ./images/logo.jpg
pandoc: extracting ./images/logo1.jpg
pandoc: extracting ./images/title.jpg
[macfarlane@boulder]:(~/Documents)$ 

通过使用“转换”实用程序(来自 imagemagick 程序套件)创建新的与 LaTeX 兼容的 JPEG 图像来废除提取的 .jpg 图像

[macfarlane@boulder]:(~/Documents)$ cd images
[macfarlane@boulder]:(~/Documents/images)$ convert logo1.jpg logo1.jpeg 

并用新创建的 .jpeg 图像替换之前用 pandoc 提取的 .jpg 图像:

[macfarlane@boulder]:(~/Documents/images)$ mv logo1.jpeg logo1.jpg 

可以使用命令行上的单个 for 循环来完成此操作:

[macfarlane@boulder]:(~/Documents)$ 
[macfarlane@boulder]:(~/Documents)$ cd images/
[macfarlane@boulder]:(~/Documents/images)$ for i in *.jpg; do convert $i `echo $i | sed 's/jpg/jpeg/'`; done
[macfarlane@boulder]:(~/Documents/images)$ rm -f *.jpg
[macfarlane@boulder]:(~/Documents/images)$ for i in *.jpeg; do mv $i `echo $i | sed 's/jpeg/jpg/'`; done 
[macfarlane@boulder]:(~/Documents/images)$ cd ..
[macfarlane@boulder]:(~/Documents)$ 

再次运行第一个命令行,但这次让 LuaTeX 引擎在与之前提取 ePub 图像的同一目录中寻找其 \includegraphics( --data-dir=DIRECTORY 指定用户数据目录以搜索 pandoc 数据文件。如果未指定此选项,则将使用默认用户数据目录。在 Unix 中为: $HOME/.pandoc )通过添加选项 --data-dir=. :

[macfarlane@boulder]:(~/Documents)$ pandoc \
    -s -t latex \
    --toc --chapters \
    --latex-engine=lualatex \
    --data-dir=. $BOOK.epub -o $BOOK.pdf
[macfarlane@boulder]:(~/Documents)$ 

相关内容