Математический оператор в определении ширины фигуры в LaTeX
В рисунках LaTeX можно использовать \textwidth
и \columnwidth
, чтобы указать размеры графического изображения относительно размера окружающего текста, например.
\includegraphics[width=.5\textwidth]{myimage}
.
Я бы хотел с легкостью переключиться с onecolumn на twocolumn template (и обратно) без увеличения фигуры слишком большого размера для шаблона onecolumn. Для шаблона twocolumn (где \columnwidth
составляет примерно половину \textwidth
), я хотел бы иметь что-то вроде:
\includegraphics[width=.9\columnwidth]{myimage}
.
и для шаблона onecolumn (где \columnwidth
и \textwidth
равны):
\includegraphics[width=.5\textwidth]{myimage}
.
Теперь я решил, что могу ограничить это, используя какой-то оператор min:
\includegraphics[width=min(.5\textwidth,.9\columnwidth)]{myimage}
, но это недопустимый синтаксис. Есть ли что-то подобное для решения этой проблемы, возможно, с помощью макросистемы LaTeX?
Ответы
Ответ 1
Хотя можно написать этот вид макроса, я бы не хотел его жестко указывать на каждую фигуру; как насчет чего-то вроде этого
\makeatletter
\newlength \figwidth
\[email protected]
\setlength \figwidth {0.9\columnwidth}
\else
\setlength \figwidth {0.5\textwidth}
\fi
\makeatother
а затем используйте
\includegraphics[width=\figwidth]{myimage}
чтобы вставить графику.
Ответ 2
\textwidth
- это горизонтальная ширина тела страницы и не подходит для ваших целей.
\linewidth
- ширина текущей строки; он будет обновлен соответствующим столбцам, отстукам и т.д.
В следующем параграфе создается изображение, которое должно точно соответствовать ширине всей строки (то есть не содержать чрезмерного предупреждения):
\noindent\includegraphics[width=\linewidth]{myimage}
Если вы предпочитаете небольшие поля слева и справа, вы можете использовать:
\begin{center}
\includegraphics[width=.9\linewidth]{myimage}
\end{center}
Или, если вы хотите указать поля в абсолютном размере:
\usepackage{calc}
...
\begin{center}
\includegraphics[width=\linewidth-20pt]{myimage}
\end{center}
Ответ 3
Хм... код выше (\ if @twocolumn и т.д.) не работает для меня вообще. Не знаю, почему нет.:( tetex on osX using fink. Попытка использовать revtex4, так что, возможно, эта проблема. Мне очень нравится идея такого типа изменений, потому что я собираюсь уклоняться с шириной и т.д. для моей диссертации и различных журнальных статей и чтобы эти расстояния, заданные с помощью макроса, могли быть полезны для этих типов преобразований.
Любые комментарии очень ценятся!
Аллен
Ответ 4
Кто-нибудь, кто более знаком с этим, вероятно, ответит, но заметьте, что вам также нужно будет изменить тип фигуры, чтобы фигурировать *, если вы собираетесь на двух столбцах.