amsmath 方程式识别文本错误

amsmath 方程式识别文本错误

我在创建方程式时遇到问题,首先我想将其写为文本,然后将其解析为数字。

这是一个最小的例子:

\documentclass[headings=small,12pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{float}
\usepackage{amsmath}

\newcommand{\mtxt}[1]{\textsc{#1}}

\begin{document}
\begin{equation}
\begin{aligned}
\mtxt{Total Size} & =\mtxt{Text1} & + \mtxt{Text2} & + \mtxt{Text3} & + \mtxt{Text4} & + \mtxt{Text5}\\
& = 1 & + 2 & + 3 & + 4 & + 5
\end{aligned}
\end{equation} 
\end{document}

问题是,第一次对齐是正确的,第三次对齐也是正确的,但其他的都不正确。

结果图像

这就是结果,显然不是我想要的,但是我深入研究了许多相关的文章,仍然无法理解为什么会发生这种情况。

编辑:预期缩进在每个 之后对齐&,因此加号对齐时有足够的空间容纳该列中的每个单元格。如 Christian Hupfer 的图片以及 Steven B. Segletes 的图片所示。

答案1

您应该记住,要aligned制作成对的列,一个右对齐,一个左对齐,并在每对之间添加空格。

您希望alignat不要在列对之间添加空间,而是跳过右对齐的列。

\documentclass[headings=small,12pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{float}
\usepackage{amsmath}

\newcommand{\mtxt}[1]{\textsc{#1}}

\begin{document}
\begin{equation}
\begin{alignedat}{5}
\mtxt{Total Size} & =\mtxt{Text1} && + \mtxt{Text2} && + \mtxt{Text3} && + \mtxt{Text4} && + \mtxt{Text5}\\
& = 1 && + 2 && + 3 && + 4 && + 5
\end{alignedat}
\end{equation}
\end{document}

在此处输入图片描述

答案2

不清楚请求的是什么,因此这是一次试验alignat

笔记:和文本之间的间距+必须改变)

\documentclass[headings=small,12pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{float}
\usepackage{amsmath}

\newcommand{\mtxt}[1]{\text{\textsc{#1}}}

\begin{document}
\begin{alignat}{5}
\mtxt{Total Size} & =\mtxt{Text1} & +& \mtxt{Text2} & +& \mtxt{Text3} & +& \mtxt{Text4} & +& \mtxt{Text5}\\
& = 1 & +& 2 & +& 3 & +& 4 & +& 5
\end{alignat}
\end{document}

在此处输入图片描述

答案3

这里用两种 TABstack 来实现,即\tabbedCenterstack左对齐和。请注意,和符号\tabularCenterstack周围的间距已达到适当。+=

\documentclass[headings=small,12pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{float}
\usepackage{amsmath}
\usepackage{tabstackengine}
\stackMath
\newcommand{\mtxt}[1]{\textsc{#1}}
\begin{document}
\begin{equation}
\TABbinaryLeft
\tabbedCenterstack[l]{
  \mtxt{Total Size} & =\mtxt{Text1} & + \mtxt{Text2} & + \mtxt{Text3} & 
  + \mtxt{Text4} & + \mtxt{Text5}\\
& = 1 & + 2 & + 3 & + 4 & + 5
}
\end{equation} 
\begin{equation}
\TABbinary\setstacktabulargap{0pt}
\tabularCenterstack{rclclclclc}{
  \mtxt{Total Size} =& \mtxt{Text1} & +& \mtxt{Text2} & +& \mtxt{Text3} & 
  +& \mtxt{Text4} & +& \mtxt{Text5}\\
=&  1 & +& 2 & + &3 & + &4 & +& 5
}
\end{equation} 
\end{document}

在此处输入图片描述

解释一下,a\TABbinaryLeft将 a 放在每个字段的开头,以激活以 a或{}开头的字段的二进制性质。例如,对于以 a 开头并以 a结尾的字段,a将 a 放在每个字段的开头和结尾。默认包行为是,这就是为什么应该出现默认制表符位置的原因(默认情况下)+=\TABbinary{}+=\TABbinaryRight操作符。

此外,该设置会删除相邻列之间的\setstacktabulargap{0pt}默认分隔,这是设置数学所需要的。\tabcolsep\tabularCenterstack

相关内容