常数到尺寸

常数到尺寸

假设我定义一个常量如下:

\fp_const:Nn \c_shcphi_fp   { 1.618 0339 8874 9894 }

现在我想全局使用它来创建尺寸,例如,框的宽度。如何创建自动执行此操作的命令?

以下是我正在研究的 MWE:

\documentclass[letterpaper,11pt]{article}
\usepackage{xparse}
\ExplSyntaxOn

\fp_const:Nn \c_shcphi_fp   { 1.618 0339 8874 9894 } % phi (golden ratio) constant

\NewDocumentCommand{\shcevalphi}{  O{5} }
 {
  \fp_eval:n { round (\c_shcphi_fp , #1) }
 } 

\ExplSyntaxOff 


\begin{document}
    \shcevalphi[3]
\end{document}

请注意,上面的命令可以使用我创建的新常量。

我还希望能够用它来定义操作,比如新的长度

2 * \c_shcphi_fp - 1 %random example of length computation.

答案1

的浮点模块expl3目前没有用于添加命名常量或函数的接口。

你可以做

\documentclass{article}
\usepackage{xparse,xfp}

\ExplSyntaxOn

\fp_const:Nn \c_shcphi_fp   { 1.618 0339 8874 9894 } % phi (golden ratio) constant
\fp_set_eq:NN \shcphi \c_shcphi_fp % for "external" use

\ExplSyntaxOff

\newlength{\azetinalen}
\setlength{\azetinalen}{\fpeval{2\shcphi-1}pt}

或任何你需要的表达式。由于\fpeval是完全可扩展的,它基本上可以在任何地方使用。假设你想将长度设置为文本宽度乘以黄金比例;那么

\setlength{\azetinalen}{\fpeval{\shcphi}\textwidth}

将工作。

没有特殊原因导致常量的定义pi格式为

\fp_const:Nn \c_pi_fp { 3.141 5926 5358 9793 }

这只是确保使用 15 位十进制数字的一种方便方法。请记住,\ExplSyntaxOn空格在范围内会被忽略。

然后,该常数在内部也用于pi在浮点表达式中生成“合法”单词。我不确定是否会提供用于创建用户定义单词的接口。另一方面,如果有需要,我认为没有理由不添加其他常用常数。黄金比例可能是一个候选者。另一方面,您也可以隐式定义它:使用

\fp_const:Nn \c_goldenratio_fp { (1+sqrt(5)}/2 }

分配的值将是1.618 0339 8874 9895,它实际上比您拥有的值更准确(小数点后十六位数字是8)。

相关内容