info###latexinfo.ru

Ответы на вопросы: Картинки

Основное различие

Разница между командами заключается в области их действия и изменяемости:

  • \textwidth — это глобальная константа. Она определяет полную ширину текстового блока страницы (расстояние между левым и правым полями). Это значение задается классом документа или пакетом геометрии и не меняется в зависимости от того, где находится курсор.
  • \linewidth — это локальная переменная. Она определяет ширину текущей строки набора в конкретном контексте. Это значение меняется динамически при входе в списки, цитаты, мини-страницы или многоколоночную верстку.

Поведение в различных окружениях

  • Обычный текст: \linewidth равен \textwidth.
  • Списки (itemize, enumerate):
    • \textwidth остается равным ширине страницы.
    • \linewidth уменьшается на величину отступа списка.
  • Цитаты (quote, quotation):
    • \linewidth сужается согласно отступам цитаты.
  • Мини-страницы (minipage, parbox):
    • \linewidth автоматически принимает ширину созданного блока.
  • Две колонки (twocolumn):
    • \textwidth равен суммарной ширине обеих колонок плюс промежуток.
    • \linewidth равен ширине только одной текущей колонки.

Что использовать

  1. Используйте \textwidth, когда необходимо растянуть объект (рисунок, таблицу) на всю ширину текстового поля страницы или колонки, независимо от текущего уровня вложенности.
  2. Используйте \linewidth, когда объект должен занимать всю доступную ширину текущего контейнера. Это вариант для:
    • вставки изображений внутри списков и цитат;
    • создания универсальных макросов и окружений;
    • верстки внутри ячеек таблиц или блоков minipage.

Пример

Приведем пример, демонстрирующий разницу внутри нумерованного списка:

Длинный текст для демонстрации ширины страницы, сколько занимает текст в обычном абзаце, чтобы были видны обе границы.
\begin{enumerate}
\item Пункт списка.

% linewidth: изображение впишется в отступ пункта
\includegraphics[width=\linewidth]{image.png}

% textwidth: изображение может вылезти за границы пункта,
% так как оно попытается занять всю ширину страницы
\includegraphics[width=\textwidth]{image.png}
\end{enumerate}
Пример
Рисунок 1: Пример

Вывод: Если есть сомнения, какую команду использовать, безопаснее выбрать \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 и, если он существует, вставит его с заданными параметрами (сдвиг и высота). Если файл не найден, то изображение просто не появится и ошибки компиляции файла не будет.



Подробнее

Находясь на нашем сайте, вы принимаете условия использования файлов cookies. Более подробная информация здесь.