计算数字

计算数字

我想计算一些数字,主要用于一些布局。但是,我被困在了这一点上,因为似乎你不能在 latex 中写这样的内容:

\newcommand{\MyNewWidthValueA}{{0.6666 + 0.075} \textwidth}
\newcommand{\MyNewWidthValueB}{\MyNewWidthValueA + 2cm}

有没有办法做这些非常基本的事情?我认为这是一个非常标准的函数,应该可以工作,因为我需要它来定义某些特定布局的框架和框的位置。

答案1

Latex 无法直接处理表达式或计算。我远非专家,但我相信有办法实现你想要的。

您可以将数字保留为尺寸并用于\dimexpr计算:例如,\the\dimexpr12pt + 13.5pt得到 25.5pt。这在宏和新长度名称中都有效。在这种情况下,\the如果您想提取和打印尺寸,则使用。

您还可以直接在 内部计算表达式\fpeval{<expression>},它返回一个数字(不带单位),可以访问数学函数,并允许格式化结果、进行舍入(需要xfp2022/01/06 之前的包)

类似于\fpeval{}pgfmath包添加了以下宏(以及许多其他宏):\pgfmathparse{expression}\pgfmathresult。后者返回 解析的最后一个表达式\pgfmathparse{}

最后,calc但是我对此的经验最少。

以下是根据您的代码的一个示例:

\documentclass{article}
\usepackage{pgfmath}
% \usepackage{xfp}   % Required before 2022/01/06 of latex

\newlength{\MyNewWidthValueA}
\newlength{\MyNewWidthValueB}
\setlength{\MyNewWidthValueA}{\dimexpr0.6666\textwidth + 0.075\textwidth}
\setlength{\MyNewWidthValueB}{\dimexpr\MyNewWidthValueA+2cm}

\newcommand{\Vala}{\dimexpr0.6666\textwidth + 0.075\textwidth}
\newcommand{\Valb}{\dimexpr\MyNewWidthValueA + 2cm}


\begin{document}
\the\dimexpr12pt +13.5pt

Length names:

\the\MyNewWidthValueA, \the\MyNewWidthValueB

\bigskip

Macros expanding to lengths:

\the\Vala, \the\Valb

\bigskip

A macro to print a formatted result from an expression:

\fpeval{round((0.6666 + 0.075)\textwidth,1)}
\end{document}

答案2

您可以使用\fpeval

\documentclass{article}

\newcommand{\MyNewWidthValueA}{}
\newcommand{\MyNewWidthValueB}{}

\begin{document}

\edef\MyNewWidthValueA{\fpeval{(0.6666 + 0.075)*\textwidth}pt}

\MyNewWidthValueA

\edef\MyNewWidthValueB{\fpeval{\MyNewWidthValueA+2cm}pt}

\MyNewWidthValueB

\end{document}

在此处输入图片描述

你可能想做

\fpeval{round(<expression>,5)}

但是如果您使用许多十进制数字,TeX 就不会介意并且会忽略多余的数字。

相关内容