使用 LaTeX 计算变量

使用 LaTeX 计算变量

我正在尝试使用命令中存储的值进行一些基本计算,但它没有进行计算:

\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并进行管理来处理尺寸计算,而无需手动剥离尺寸。fp

答案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}

\结束{文档}

相关内容