是否有一个带有变量和数字替换且使用 LaTeX 语法的计算器?
以下是一个例子:
- 首先我设置变量:
m_\text{груза} = 5
h = 2
g = 9,81
- 接下来,我写出要求解的方程:
E_\text{п} = m_\text{груза} \cdot g \cdot h
- 我想要得到的输出如下:
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
在格式方面不符合您的需要,您可以使用siunitx
或numprint
包轻松进行格式化。
同样,如果您想在第二行打印\mryp
为9,81
而不是,9.81
您将使用来numprint
处理小数分隔符。
在这种典型情况下,我所做的是定义一个结合numprint
/siunitx
和的宏\fpeval
,利用后者的可扩展性。
编辑:最后一点请 \printandeval
参见这个很好的答案尤其是答案。这明确了的宏xfp+siunitx
的使用(自定义其选项列表,例如通过添加)。siunitx
\num
output-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
\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 这里 这里我展示如何创建简单的动态计算表格