\textwidth — это глобальная константа. Она определяет полную ширину текстового блока страницы (расстояние между левым и правым полями). Это значение задается классом документа или пакетом геометрии и не меняется в зависимости от того, где находится курсор.\linewidth — это локальная переменная. Она определяет ширину текущей строки набора в конкретном контексте. Это значение меняется динамически при входе в списки, цитаты, мини-страницы или многоколоночную верстку.\linewidth равен \textwidth.itemize, enumerate): \textwidth остается равным ширине страницы.\linewidth уменьшается на величину отступа списка.quote, quotation): \linewidth сужается согласно отступам цитаты.minipage, parbox): \linewidth автоматически принимает ширину созданного блока.twocolumn): \textwidth равен суммарной ширине обеих колонок плюс промежуток.\linewidth равен ширине только одной текущей колонки.\textwidth, когда необходимо растянуть объект (рисунок, таблицу) на всю ширину текстового поля страницы или колонки, независимо от текущего уровня вложенности.\linewidth, когда объект должен занимать всю доступную ширину текущего контейнера. Это вариант для: minipage.Приведем пример, демонстрирующий разницу внутри нумерованного списка:
Длинный текст для демонстрации ширины страницы, сколько занимает текст в обычном абзаце, чтобы были видны обе границы.
\begin{enumerate}
\item Пункт списка.
% linewidth: изображение впишется в отступ пункта
\includegraphics[width=\linewidth]{image.png}
% textwidth: изображение может вылезти за границы пункта,
% так как оно попытается занять всю ширину страницы
\includegraphics[width=\textwidth]{image.png}
\end{enumerate}

Вывод: Если есть сомнения, какую команду использовать, безопаснее выбрать \linewidth, так как она гарантирует, что контент не выйдет за границы текущего блока.
Как вставлять картинки в latex, не беспокоясь о том, есть файл изображения или нет?
В случаях, когда нужно добавить в текст изображение и при этом неизвестно, есть ли файлы по указанному пути, можно воспользоваться "условной" командой \IfFileExists.
Посмотрим на примере как это будет выглядеть. Определим новую команду:
\newcommand{\myPict}[4]{%
\IfFileExists{#4}{
\setlength{\unitlength}{1cm}
\begin{picture}(0,0)
\put(#1,#2){\includegraphics[height=#3 cm]{{#4}}}
\end{picture}
}
}
Вызов команды будет следующим:
\myPict{0}{0}{5}{img/img1.jpg}
где первый, второй параметр определяет положение картинки, третий параметр определяет высоту картинки, а четвертый — путь к файлу.
В случае, когда файл img1.jpg не окажется по указанному адресу, компиляция файла продолжится без ошибок.
Команда \myPict проверит наличие файла img/img1.jpg и, если он существует, вставит его с заданными параметрами (сдвиг и высота). Если файл не найден, то изображение просто не появится и ошибки компиляции файла не будет.