将两个值相乘的简单方法

将两个值相乘的简单方法

我有一个宏来定义我的图形的比例:

\newcommand{\myscale}{0.35}

现在我有一个需要缩放两倍的图形,因此我尝试使用如下方法:

\begin{figure}[hbt]
  \includegraphics[scale=2\myscale]{my-image}
  \caption{My Caption}
  \label{fig:my-label}
\end{figure}

这会产生一个非常大的图像,2\scale扩展到20.35......

我尝试/发现:

  • 使用scale=2*\myscale,但仍然会出现错误
  • 更多使用的东西calc,再次没有工作
  • \real{},但似乎也不起作用
  • 计算,但这似乎只对整数有效,对于 而言并非总是如此\myscale
  • pgf 包,但对于简单的乘法来说,这似乎很复杂
  • fp 封装可以,但仍然有些复杂

最简单的方法(对我有用)是这种基于 fp 的实现:

\begin{figure}[hbt]
  \FPeval\calculatedScale{2*\myscale}
  \includegraphics[scale=\calculatedScale]{my-image}
  \caption{My Caption}
  \label{fig:my-label}
\end{figure}

我是不是漏掉了什么?有没有更简单/优雅的解决方案?最好直接使用命令,\includegraphics而无需创建额外的\calculatedScale

答案1

l3fp包允许使用浮点数进行可扩展计算。可扩展性意味着您不需要将结果存储在临时变量中。

\documentclass{article}
\usepackage{graphicx} % 

%%%%
% Provide the command \fpeval as a copy of the code-level \fp_eval:n.
\usepackage{expl3}[2012-07-08]
\ExplSyntaxOn
\cs_new_eq:NN \fpeval \fp_eval:n
\ExplSyntaxOff
%%%%

\begin{document}
\newcommand{\myscale}{0.53}
\includegraphics[scale=\fpeval{2*\myscale}]{your-image}
\end{document}

答案2

也许简单(第二个版本带有缩放):

\documentclass{article}
\usepackage{graphicx}


\begin{document}

\includegraphics[scale=0.2]{it}

\scalebox{2}{\includegraphics[scale=0.2]{it}

\end{document}

答案3

Bruno 的上述回答非常有帮助,谢谢。我甚至不知道 latex3 中有这个功能,并尝试使用 pgfmath 操作,但不起作用。

这是一个 overleaf 项目https://www.overleaf.com/read/kbbhfkpywfnp有制作此表格图表的样本条形图

用于此的乳胶是

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}

% makes a table with bars that scale to desired maximum percent or degrees values

% based on https://tex.stackexchange.com/questions/115558/simple-way-to-multiply-two-values
%%%%
% Provide the command \fpeval as a copy of the code-level \fp_eval:n.
\usepackage{expl3}
\ExplSyntaxOn
\cs_new_eq:NN \fpeval \fp_eval:n
\ExplSyntaxOff
%%%%

\begin{document}
\pagestyle{empty}

\newcommand{\barwidth}{10} % cm
\newcommand{\percentscale}{100} % max scale for percent bars
\newcommand{\degscale}{90} % max scale for degree bars

\def\pcbar#1{%%
  #1s\% & {\color{red}\rule{\fpeval{#1/\percentscale*\barwidth} cm}{8pt}}%
}
\def\degbar#1{%%
  #1s$^\circ$ & {\color{red}\rule{\fpeval{#1/\degscale*\barwidth} cm}{8pt}}%
}

\begin{table*}
\begin{tabular}{rl}
 \pcbar{90}\\
 \pcbar{60}\\
 \pcbar{30}\\

\degbar{10}\\
\degbar{50}\\
\degbar{89}\\
\end{tabular}
\end{table*}

\end{document}

相关内容