foreach 生成的公式的格式

foreach 生成的公式的格式

我是 Latex 的新手,有软件开发背景。我发现自动生成公式和列表的能力令人印象深刻,但由于字母略大,很难正确格式化结果。请原谅我不熟悉元素之间的差异,因为我仍在反复试验。

我该如何为这些循环生成的方程式定义自定义字体大小?

这是我的文档,它确实有效:

\documentclass{article}

\usepackage{tikz}
\usepackage[nomessages]{fp}
\usepackage{etoolbox}
\usepackage{calc}
\usepackage{mathtools}

\def\square[#1]{#1^2}
\gdef\squareresult{}%
\foreach \i in {0,...,6}{%
    \FPeval\A{\square[i]}%
    \FPeval\A{round(A:0)}%
    \xappto\squareresult{ \pmb{\A} = \i^2 = \i \cdot \i \\ }%
}%

\begin{document}

   \begin{align*}
    \squareresult 
    \end{align*}

\end{document}

我认为 Latex 在使用 foreach 循环时似乎存在问题\begin{equation} \squareresult \end{equation}(在这种情况下,每个公式后没有换行符)。使用gather*代替 似乎align*也是一个可行的选择,但坦率地说,我不知道哪一个是首选 - 以及原因。一些来源建议使用\[ \textstyle(或其他样式) - 我无法在此设置中使用它,因为它似乎只适用于equation

总的来说:是否有首选方法可以正确地执行 foreach 循环,并在每行后换行并应用特定的样式集?

答案1

使用\noexpand\bm而不是(在 之后\pmb加载包)。bmmathtools

然而,你可以做得更好。

\documentclass{article}
\usepackage{mathtools,bm}
%\usepackage{xparse} % not needed with LaTeX 2020-10-01 or later

\ExplSyntaxOn

\NewDocumentCommand{\showexpr}{mmmm}
 {% #1 = evaluation, #2 = output format, #3 = start, #4 = end
  \qohelet_showexpr:nnnn { #1 } { #2 } { #3 } { #4 }
 }

\seq_new:N \l__qohelet_lines_seq

\cs_new_protected:Nn \qohelet_showexpr:nnnn
 {
  % the function to evaluate the expression according to the given template
  \cs_set:Nn \__qohelet_eval:n { \fp_eval:n { #1 } }
  % an alias for the second argument
  \cs_set_eq:NN \eval \__qohelet_eval:n
  % the function to print the output according to the given template
  \cs_set:Nn \__qohelet_output:n { #2 }
  % clear the sequence where we store the lines
  \seq_clear:N \l__qohelet_lines_seq
  % loop in the given range
  \int_step_inline:nnn { #3 } { #4 }
   {
    % add the corresponding line for the current value ##1
    \seq_put_right:Nn \l__qohelet_lines_seq { \__qohelet_output:n { ##1 } }
   }
  % output the results
  \begin{align*}
  \seq_use:Nn \l__qohelet_lines_seq { \\ }
  \end{align*}
 }

\ExplSyntaxOff

\begin{document}

\showexpr
  {#1^2}
  {\bm{#1^2}&=\eval{#1}=#1\cdot#1}
  {0}{6}

\showexpr
  {#1^2-2*#1+3}
  {#1^2-2\cdot#1+3&=\eval{#1}}
  {1}{4}

\showexpr
  {round(sqrt(#1),4)}
  {\sqrt{#1}&=\eval{#1}}
  {1}{6}

\end{document}

第一个参数\showexpr是要计算的表达式,使用相当自然的语法。第二个参数是输出的模板,其中\eval{#1}代表计算结果。第三和第四个参数是范围的起点和终点。

请注意,第一个和第二个参数都#1代表循环中的当前值。

我们\seq_use:Nn确保在末尾不会添加空行,这在您的代码中会发生(即使使用 进行修复\noexpand)。

在此处输入图片描述

相关内容