Я пишу отчет по проекту программирования в 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
). Для этого я установил пакет ImageMagick из терминала в Linux, затем использовал convert
команду для создания domain.jpeg
:
$ convert domain.JPG domain.jpeg
Это сделало изображение пригодным для использования, после чего оставалось только отформатировать его, чтобы оно выглядело правильно.
решение2
Я столкнулся с той же ошибкой в pandoc при попытке конвертировать epub в pdf:
[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, создав его при необходимости, и настройте ссылки на изображения в документе [LaTeX] так, чтобы они указывали на извлеченные файлы, с помощью параметра --extract-media= DIR . Выберите текущий каталог, который также содержит файл 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)$
Удалите извлеченные изображения .jpg, создав новые изображения JPEG, совместимые с LaTeX, с помощью утилиты `convert' (из пакета программ imagemagick)
[macfarlane@boulder]:(~/Documents)$ cd images
[macfarlane@boulder]:(~/Documents/images)$ convert logo1.jpg logo1.jpeg
и замените ранее извлеченные с помощью pandoc изображения .jpg на вновь созданные изображения .jpeg:
[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 ищет свой \includegraphics в том же каталоге, куда ранее были извлечены изображения ePub ( --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)$