如果两列 LaTeX

如果两列 LaTeX

我正在用 LaTeX 写一篇论文。我需要这篇论文的单栏和双栏版本。为此,两个文档中的图形大小/配置需要不同。我正在寻找一个类似的命令\iftwocolumn!你知道它是否存在吗?如果不存在,我该如何定义和使用它?

我需要类似这样的东西:

\begin{figure}[tb]
\iftwocolumn\includegraphics[width=0.7\linewidth]{FiguresDouble/figure.eps}
\else\includegraphics[width=0.5\linewidth]{FiguresSingle/figure.eps}
\fi

答案1

\linewidth\columnwidth应该可以工作,因为非twocolumn文档在技术上由单个列(宽度\columnwidth)组成。

但是如果你使用传统twocolumn模式(比如说)article,该条件\if@twocolumn可供测试/分支。

这是一个展示差异的简短示例:

\documentclass{article}
\usepackage{graphicx,showframe}% http://ctan.org/pkg/{graphicx,showframe}
\begin{document}
\noindent
\makeatletter%
\if@twocolumn%
  \includegraphics[width=\columnwidth]{example-image-a}%
\else% \@twocolumnfalse
  \includegraphics[width=\columnwidth]{example-image-b}%
\fi
\makeatother
\end{document}

请注意,您需要使用\makeatletter...\makeatother对,因为条件的命令定义包含@。请参阅做什么\makeatletter\makeatother做什么?

答案2

以下是我如何制定条件来用一列或两列做不同的事情:

\documentclass[onecolumn]{article}
\begin{document}

\makeatletter
\if@twocolumn
\newcommand{\whencolumns}[2]{
#2
}
\else
\newcommand{\whencolumns}[2]{
#1
}
\fi
\makeatother

\whencolumns{One Column}{Two Columns}
\end{document}

定义好之后,你可以像这样回答原始问题:

\whencolumns{
 \includegraphics[width=0.5\linewidth]{FiguresSingle/figure.eps}
}{
 \includegraphics[width=0.7\linewidth]{FiguresDouble/figure.eps}
}

此方法确实假设整个文档是一列或两列并且不会切换。

相关内容