我有一个宏来定义我的图形的比例:
\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}