我正在尝试使用命令中存储的值进行一些基本计算,但它没有进行计算:
\newcommand{\lenghtHeatExchanger}{0.820}
\newcommand{\heightHeatExchanger}{1.081}
\newcommand{\areaHeatExchanger}{\lenghtHeatExchanger*\heightHeatExchanger}
有没有一种使用 LaTeX 的简单方法可以做到这一点?
谢谢。
答案1
我建议使用该calculator
包及其\MULTIPLY
命令,请参阅文档这里。但是:我认为如果您可以切换到 LuaLaTeX,那肯定是最好的解决方案!
答案2
xfp
提供了许多f
浮动p
点操作:
\documentclass{article}
\usepackage{xfp}
\begin{document}
\newcommand{\lengthHeatExchanger}{0.820}
\newcommand{\heightHeatExchanger}{1.081}
\newcommand{\areaHeatExchanger}{\fpeval{\lengthHeatExchanger * \heightHeatExchanger}}
$\verb|\lengthHeatExchanger| = \lengthHeatExchanger$
$\verb|\heightHeatExchanger| = \heightHeatExchanger$
$\verb|\lengthHeatExchanger| \times \verb|\heightHeatExchanger| = \areaHeatExchanger$
\end{document}
如果需要,它可以通过将尺寸转换为浮动点pt
并进行管理来处理尺寸计算,而无需手动剥离尺寸。f
p
答案3
如果您可以自由使用 LuaLaTeX,则执行涉及宏的计算不需要加载任何外部包,如以下示例所示。解决方法利用了 的参数\directlua
会自动扩展的事实。在当前示例中,\docalc{\length*\height}
扩展为\directlua{tex.sprint(2.5*4)}
;LuaTeX 执行计算,结果 ( 10
) 替换\docalc{\length*\height}
;因此,计算结果为\newcommand{\area}{10}
。
当然,如果您不需要存储计算的值,您可以简单地运行$\length \times \height = \docalc{\length*\height}$
。
\documentclass{article}
%% The following setup assumes that either pdfLaTeX or LuaLaTeX is in use.
\usepackage{ifluatex} % for '\ifluatex' macro
\ifluatex
\usepackage{unicode-math} % load 'fontspec' package automatically
% use \setmainfont and \setmathfont directives as needed...
% Set up a LaTeX macro to interface with Lua:
\newcommand\docalc[1]{\directlua{tex.sprint(#1)}}
\else % assume that pdfLaTeX is in use
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\fi
% remainder of preamble...
\begin{document}
\newcommand{\length}{2.5}
\newcommand{\height}{4}
\ifluatex
\newcommand{\area}{\docalc{\length*\height}}
$\length \times \height = \area$
\fi
\end{document}
答案4
解决方案很好。作为使用变量计算的更新。我需要对图形进行基本的数学运算。以下使用的示例\usepackage{xfp}
允许fpeval
常量,因此它们不需要定义为宏命令,并且您不必为常量创建变量。
\documentclass{文章} \usepackage{tikz} \usepackage{xfp} \开始{文档} \开始{tikzpicture} \foreach \x 位于 {1,2,3,4,5,6,7,8,9,10,11} { \node 在(-5.0,\fpeval{(11.0-\x)*0.5} ){$\x$}; }; \结束{tikzpicture} \结束{文档}