我正在用 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}
}
此方法确实假设整个文档是一列或两列并且不会切换。