我在创建方程式时遇到问题,首先我想将其写为文本,然后将其解析为数字。
这是一个最小的例子:
\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