我第一次在这里发布问题,我想提前感谢您的帮助;)继续我的问题,我想做以下事情:
\newcommand{\my_image_width}{300}
###
###
###
if(\my_image_width > \columnwidth){
\begin{figure*}[htc]
\begin{center}
\includegraphics[width=\my_image_width pt]{path/to/my/image.png}
\caption[]{My figure occupies two columns}
\end{center}
\end{figure*}
}
else{
\begin{figure}[htc]
\begin{center}
\includegraphics[width=\my_image_width pt]{path/to/my/image.png}
\caption[]{My figure occupies one column}
\end{center}
\end{figure}
}
请记住,这可以是图像或表格。为了澄清起见,我的主要问题是如何针对列宽和变量使用这种“if”。
答案1
请考虑该命令\Figure[][]{}{}
,它将接受四个参数,其中第一个选项是可选的。该宏将把带有比例参数的图像放在一个框内,如果框的宽度大于,\columnwidth
则将figure*
使用它来代替figure
环境。宏的参数:
- 通过此选项可以提供键值选项来缩放图形,对齐图形,以及各种垂直跳过(例如图形的上方、中间和下方跳过)。
- 浮标的位置。
- 图形的名称。
- 字幕文字。
您可以提供以下键值选项:
scale
:缩放图像align
:值应为centering
,raggedleft
或raggedright
。aboveskip
:跳过上面的图片middleskip
:在图片和标题之间切换belowskip
:跳过下面的图片\documentclass[twocolumn]{article} \RequirePackage{xkeyval} \RequirePackage{graphicx} \RequirePackage{lipsum} \makeatletter \fboxsep=0pt\fboxrule=1pt \def\fig@default{% \def\fig@scale{1}% \def\fig@align{centering}% \def\fig@aboveskip{0pt}% \def\fig@belowskip{0pt}% \def\fig@middleskip{10pt}% } \define@key{fig}{scale}{\def\fig@scale{#1}} \define@key{fig}{align}{\def\fig@align{#1}} \define@key{fig}{aboveskip}{\def\fig@aboveskip{#1}} \define@key{fig}{belowskip}{\def\fig@belowskip{#1}} \define@key{fig}{middleskip}{\def\fig@middleskip{#1}} \def\Figure{\@ifnextchar[{\@Figure}{\@Figure[scale=1]}} \def\@Figure[#1][#2]#3#4{\fig@default% \setkeys{fig}{#1}% \global\setbox0\hbox{\includegraphics[scale=\fig@scale]{#3}}% \ifdim\the\wd0>\the\columnwidth% \xdef\fig@env{figure*}% \else% \xdef\fig@env{figure}% \fi% \begin{\fig@env}[#2]% \expandafter\csname\fig@align\endcsname% \vskip\fig@aboveskip% \fbox{\includegraphics[scale=\fig@scale]{#3}}% \vskip\fig@middleskip% \caption{#4}% \vskip\fig@belowskip% \end{\fig@env}% } \makeatother \begin{document} \lipsum[1-4] \Figure[scale=.3,align=raggedleft,middleskip=1pc][b!]{example-image}{Test caption.} \Figure[scale=1][t!]{example-image}{Test caption.} \lipsum \Figure[scale=.3,align=raggedleft,middleskip=1pc][b!]{example-image}{Test caption.} \lipsum[1-20] \end{document}
类似地,您可以为表定义一个宏。