具有变量和数字替换功能的 LaTeX 计算器

具有变量和数字替换功能的 LaTeX 计算器

是否有一个带有变量和数字替换且使用 LaTeX 语法的计算器?

以下是一个例子:

  1. 首先我设置变量:
  • m_\text{груза} = 5
  • h = 2
  • g = 9,81
  1. 接下来,我写出要求解的方程:
  • E_\text{п} = m_\text{груза} \cdot g \cdot h
  1. 我想要得到的输出如下:
  • E_\text{п} = m_\text{груза} \cdot g \cdot h = 5 \cdot 2 \cdot 9,81 = 98,1

注意:请注意,我在变量的下部索引中使用了西里尔字符。

答案1

这也许不是预期的答案,但如果您的参数存储在宏中,并且您有一个最新的 LaTeX 内核(或加载包xfp),您可以使用 latex3 fpu 并写入

\def\mгру{5}
\def\hh{2}
\def\ggrav{9.81}

$ E_n = m_{\text{груза}} \cdot g \cdot h$ \\
$= \mrpy \cdot \ggrav \cdot \hh$ \\ 
$=\fpeval{\mrpy*\ggrav*\hh}$

如果的输出\fpeval在格式方面不符合您的需要,您可以使用siunitxnumprint包轻松进行格式化。

同样,如果您想在第二行打印\mryp9,81而不是,9.81您将使用来numprint处理小数分隔符。

在这种典型情况下,我所做的是定义一个结合numprint/siunitx和的宏\fpeval,利用后者的可扩展性。

编辑:最后一点请 \printandeval参见这个很好的答案尤其是答案。这明确了的宏xfp+siunitx的使用(自定义其选项列表,例如通过添加)。siunitx\numoutput-decimal-marker = {,}

\cdot如果您愿意,还可以通过添加\def\cdot{*}已完成的功能来保留\times

答案2

我建议一个集中的变量定义工厂。

您可以\defvar定义文本表示和(数字)值。可选参数用于无法安全使用文本表示的变量,以下代码中的示例为mgruza(当然,您可以选择任何您喜欢的字符串)。

\documentclass[a4paper]{article}
\usepackage[T2A]{fontenc}
\usepackage[ukrainian]{babel}
\usepackage{amsmath}
\usepackage{siunitx}

\sisetup{
  output-decimal-marker={,},
}

\ExplSyntaxOn

\NewDocumentCommand{\defvar}{O{#2}mm}
 {% #1 = name, #2 = text, #3 = value
  \gusev_var_def:nnn { #1 } { #2 } { #3 }
 }

\NewExpandableDocumentCommand{\vval}{m}
 {% #1 = name
  \prop_item:Nn \g_gusev_var_prop { #1@value }
 }
\NewDocumentCommand{\vtext}{m}
 {% #1 = name
  \prop_item:Nn \g_gusev_var_prop { #1@text }
 }

\NewDocumentCommand{\numeval}{O{}m}
 {
  \num[#1]{\fpeval{#2}}
 }

\prop_new:N \g_gusev_var_prop

\cs_new_protected:Nn \gusev_var_def:nnn
 {
  \prop_gput:Nnn \g_gusev_var_prop { #1@text } { #2 }
  \prop_gput:Nnn \g_gusev_var_prop { #1@value } { #3 }
 }

\ExplSyntaxOff

\defvar[mgruza]{m_{\textup{груза}}}{5}
\defvar{h}{2}
\defvar{g}{9.81}

\begin{document}

\begin{align*}
E_{\textup{п}}
&= \vtext{mgruza} \cdot \vtext{g} \cdot \vtext{h} \\
&= \num{\vval{mgruza}} \cdot \num{\vval{g}} \cdot \num{\vval{h}} \\
&= \numeval{\vval{mgruza} * \vval{g} * \vval{h}}
\end{align*}

\end{document}

在此处输入图片描述

\numeval命令采用可选参数,就像\num进行本地设置(例如舍入精度等)一样(参见手册siunitx)。

我建议不是使用\text,但是\textup,因为如果上下文是斜体,您不希望下标为斜体。还请注意额外的括号。

最后一个警告:始终输入以句点作为小数点分隔符的数值。

答案3

尝试使用fp 在此处输入图片描述

\documentclass{article}
\usepackage[T1,T2A]{fontenc} % Кодировка для кириллицы
\usepackage[utf8]{inputenc}  % UTF-8 кодировка
\usepackage[english,russian]{babel} % Поддержка русского языка
\usepackage{fp}

 
\usepackage{amsmath} % for text in equations
\usepackage{pgfmath} % for calculations

% Define variables using newcommand
\newcommand{\mrus}{5}
\newcommand{\hrus}{2}
\newcommand{\grus}{9.81}

\begin{document}

% Calculate potential energy
\pgfmathsetmacro{\Erus}{\mrus * \grus * \hrus}

% Print the equation and result
\[ E_{\text{п}} = m_{\text{груза}} \cdot g \cdot h = \mrus \cdot \grus \cdot \hrus = \Erus \]

\end{document}

另外,请看示例1.2 这里 这里我展示如何创建简单的动态计算表格

相关内容