16

在 LaTeX 图形中,可以使用\textwidth\columnwidth指定相对于周围文本大小的图形大小,例如 \includegraphics[width=.5\textwidth]{myimage}.

我想轻松地从 onecolumn 切换到 twocolumn 模板(然后返回),而不会使图形对于 onecolumn 模板变得太大。对于双列模板(\columnwidth大约是 的一半\textwidth),我想要类似的东西: \includegraphics[width=.9\columnwidth]{myimage}. 并且对于一个列模板(其中\columnwidth\textwidth相等)
\includegraphics[width=.5\textwidth]{myimage}:。

现在,我想我可以使用某种 min 运算符来限制它: \includegraphics[width=min(.5\textwidth,.9\columnwidth)]{myimage}但这是无效的语法。有没有这样的东西可以解决这个问题,可能是通过使用 LaTeX 宏系统?

4

4 回答 4

19

尽管可以编写这种宏,但我不想将它硬编码到每个图形中;像这样的东西怎么样

\makeatletter
\newlength \figwidth
\if@twocolumn
  \setlength \figwidth {0.9\columnwidth}
\else
  \setlength \figwidth {0.5\textwidth}
\fi
\makeatother

然后使用

\includegraphics[width=\figwidth]{myimage}

插入图形。

于 2009-03-07T22:44:57.123 回答
4

\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}
于 2009-03-09T17:32:50.213 回答
1

嗯...上面的代码(\if@twocolumn 等)根本不适合我。不知道为什么不。:( 使用 fink 在 osX 上使用 tetex。尝试使用 revtex4,所以也许这就是问题所在。我真的很喜欢这种改变的想法,因为我将在我的论文和各种期刊文章中使用宽度等,并且使用宏指定这些距离可能有助于这些类型的转换。

任何意见都非常感谢!-艾伦

于 2010-04-21T04:42:29.640 回答
0

对此更熟悉的其他人可能会回答,但请注意,如果您要使用两列,您还需要将您的图形类型更改为 figure*。

于 2009-03-07T21:06:19.623 回答