![如何获取变量赋值的两个或多个值的最大值/最小值](https://linux22.com/image/451004/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E5%8F%98%E9%87%8F%E8%B5%8B%E5%80%BC%E7%9A%84%E4%B8%A4%E4%B8%AA%E6%88%96%E5%A4%9A%E4%B8%AA%E5%80%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC%2F%E6%9C%80%E5%B0%8F%E5%80%BC.png)
我想根据两个值的最大值动态分配一个变量。我看到max
这里使用了一个函数:https://tex.stackexchange.com/a/505352/194783。尽管我看不出它是如何使用的。
另外,我想了解其他选项以及最佳选项是什么。
相关问题:
答案1
您可以创建宏,\maxvalue
例如:
\def\maxvalue(#1,#2){\ifnum #1>#2 #1\else #2\fi}
\newcount\num
\num=\maxvalue(10,11)
\the\num % prints 11
\bye
答案2
您可以利用 TeX 中的长度始终被标准化的事实pt
,并将l3-fp
长度转换为其以点为单位的值。
\documentclass{article}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\maxlength}{m}
{
\fp_eval:n { max(#1) } pt
}
\ExplSyntaxOff
\newlength{\testlen}
\begin{document}
\setlength{\testlen}{\maxlength{1pt,2pt,3pt}}
\the\testlen
\maxlength{45pt,0.5\textwidth,20cm}---\the\dimexpr20cm\relax
\maxlength{45pt,3\textwidth,20cm}---\the\dimexpr3\textwidth\relax
\edef\test{\maxlength{600pt,\textwidth,6cm}}
\texttt{\meaning\test}
\end{document}
与往常一样,对于旧版本的 LaTeX,您可能需要\usepackage{xparse}
。