Forgot password?
 Create new account
View 183|Reply 12

如何缩小 $\min$ 和 $f(x)$ 的间距?

[Copy link]

81

Threads

170

Posts

1660

Credits

Credits
1660

Show all posts

APPSYZY Posted at 2024-12-16 00:16:12 |Read mode
  1. \begin{align*}
  2.     & {\min}     & & f(x)   \\
  3.     & \text{s.t.}& & g(x)=0 \\
  4.     &            & & h(x)>0.
  5. \end{align*}
Copy the Code

ppppic.png
$\min$ 和 $f(x)$ 的间距实在太宽了,这是什么原因导致的呢?能否将间距缩小,比如调整为一个 quad,同时不改变原有的对齐格式呢?请教大家。

81

Threads

170

Posts

1660

Credits

Credits
1660

Show all posts

 Author| APPSYZY Posted at 2024-12-16 00:20:42
正常的间距(以及对齐格式)应该是类似这样的:
ppppic.png

701

Threads

110K

Posts

910K

Credits

Credits
94145
QQ

Show all posts

kuing Posted at 2024-12-16 00:46:03
Last edited by kuing at 2024-12-16 15:06:00先解释为什么会是大间距:
align 环境是用于行间公式,视野是整行,所以它在处理多列的时候会给足够的空间来隔开各组公式,一般用于多组公式,像这样
  1. \begin{align*}
  2.    A & = a+b+c  &  B & = d+e+f  &  C & = g+h+i \\
  3.    D & = x+y+z  &  E & = p+q+r  &  F & = u+v+w \\
  4. ...
  5. \end{align*}
Copy the Code

这种情况间隔拉开很多是合理的。

而对于楼主的需求,改用 aligned 就行,ailgned 是块环境,不能独立使用,得插入数学环境中,所以它的视野是小的,就是小间距了。
代码可以改成:
  1. \[
  2. \begin{aligned}
  3.     & {\min}     & & f(x)   \\
  4.     & \text{s.t.}& & g(x)=0 \\
  5.     &            & & h(x)>0.
  6. \end{aligned}
  7. \]
Copy the Code

81

Threads

170

Posts

1660

Credits

Credits
1660

Show all posts

 Author| APPSYZY Posted at 2024-12-16 12:51:38
kuing 发表于 2024-12-16 00:46
先解释为什么会是大间距:
align 环境是用于行间公式,视野是整行,所以它在处理多列的时候会给足够的空间 ...
align* 环境下,每行最后都可以加一个 \tag{...};但 aligned 环境下,一加 \tag{...} 就会报错,这该如何解决呢?

701

Threads

110K

Posts

910K

Credits

Credits
94145
QQ

Show all posts

kuing Posted at 2024-12-16 14:33:08
APPSYZY 发表于 2024-12-16 12:51
align* 环境下,每行最后都可以加一个 \tag{...};但 aligned 环境下,一加 \tag{...} 就会报错,这该如 ...
\tag 是行间公式的东东,前面也说了 aligned 不是行间公式环境,所以在它内部用不了 \tag。

如果只是加一个 \tag,像 2# 的截图那样,可以用 equation 环境套 aligned 。

如果是要加多个 \tag,那大概就不能用 aligned 了……

类似于 align 的还有一个 alignat 环境,是行间公式环境,但它将列间距设为零😅,用法像这样:
  1. \begin{alignat}{3}
  2. abc &= xxx    &  &= xxxxxx &  &= aaaaa \\
  3. ab  &= yyyyyy &  &= yyy    &  &= ab
  4. \end{alignat}
Copy the Code

\begin{alignat}{3}
abc &= xxx    &  &= xxxxxx &  &= aaaaa \\
ab  &= yyyyyy &  &= yyy    &  &= ab
\end{alignat}(那个 {3} 是表示有 3 组公式,是必要参数)

我没找到既是小间距,又能多编号的行间公式环境。

需要隔开小间距的话,用 alignat 然后自己手动加一个 \quad 吧,比如
  1. \begin{alignat}{2}
  2.     & {\min}     & \quad & f(x)   \\
  3.     & \text{s.t.}& & g(x)=0 \\
  4.     &            & & h(x)>0.
  5. \end{alignat}
Copy the Code

\begin{alignat}{2}
    & {\min}     & \quad & f(x)   \\
    & \text{s.t.}& & g(x)=0 \\
    &            & & h(x)>0.
\end{alignat}

418

Threads

1627

Posts

110K

Credits

Credits
11886

Show all posts

abababa Posted at 2024-12-16 17:00:45
  1. \begin{align*}
  2.     & {\min}     & & f(x)   \\[-2.5mm]
  3.     & \text{s.t.}& & g(x)=0 \\[-2.5mm]
  4.     &            & & h(x)>0.
  5. \end{align*}
Copy the Code

如上,可以在换行后面加间距。

Comment

楼主指的是水平间距  Posted at 2024-12-16 17:08

418

Threads

1627

Posts

110K

Credits

Credits
11886

Show all posts

abababa Posted at 2024-12-16 17:22:49
abababa 发表于 2024-12-16 17:00
如上,可以在换行后面加间距。
原来如此,那用\hspace也可以吧:
  1. \begin{align*}
  2.     {\min} \hspace{5mm}& f(x)\\
  3.     \text{s.t.} \hspace{5mm}& g(x)=0 \\
  4.     ~ \hspace{5mm}& h(x)>0.
  5. \end{align*}
Copy the Code

701

Threads

110K

Posts

910K

Credits

Credits
94145
QQ

Show all posts

kuing Posted at 2024-12-16 18:05:45
abababa 发表于 2024-12-16 17:22
原来如此,那用\hspace也可以吧:
这达不到楼主要求的对齐格式,他应该是希望 min 与 st 左对齐,你的方法会是右对齐。

418

Threads

1627

Posts

110K

Credits

Credits
11886

Show all posts

abababa Posted at 2024-12-16 18:13:32
kuing 发表于 2024-12-16 18:05
这达不到楼主要求的对齐格式,他应该是希望 min 与 st 左对齐,你的方法会是右对齐。 ...
那变成这样:\text{s.t.\hspace{1mm}}

Comment

😅  Posted at 2024-12-16 20:36

3148

Threads

8489

Posts

610K

Credits

Credits
66148
QQ

Show all posts

hbghlyj Posted at 2024-12-16 19:11:22
kuing 发表于 2024-12-16 06:33
我没找到既是小间距,又能多编号的行间公式环境。
tex.stackexchange.com/questions/40124/how-to- … in-align-environment
可指定间距的align环境:
  1. \documentclass[a4paper]{article}
  2. \usepackage{amsmath}
  3. \usepackage{environ}
  4. \makeatletter
  5. \newdimen\royalignsep@
  6. \def\royalign@preamble{%
  7.    &\hfil
  8.     \strut@
  9.     \setboxz@h{\@lign$\m@th\displaystyle{##}$}%
  10.     \ifmeasuring@\savefieldlength@\fi
  11.     \set@field
  12.     \tabskip\z@skip
  13.    &\setboxz@h{\@lign$\m@th\displaystyle{{}##}$}%
  14.     \ifmeasuring@\savefieldlength@\fi
  15.     \set@field
  16.     \hfil
  17.     \tabskip\royalignsep@
  18. }
  19. \NewEnviron{royalign}[1]{%
  20.   \royalignsep@=#1\let\align@preamble=\royalign@preamble
  21.   \begin{align}\BODY\end{align}}
  22. \NewEnviron{royalign*}[1]{%
  23.   \royalignsep@=#1\let\align@preamble=\royalign@preamble
  24.   \begin{align*}\BODY\end{align*}}
  25. \makeatother
  26. \pagestyle{empty}
  27. \begin{document}
  28. \begin{royalign*}{1cm}
  29. 4   &= 4 & 1+3+5 &= 9\\
  30. 0   &= 0 & 2+1   &= 3\\
  31. 1+1 &= 2 & 1     &= 1
  32. \end{royalign*}
  33. \end{document}
Copy the Code

701

Threads

110K

Posts

910K

Credits

Credits
94145
QQ

Show all posts

kuing Posted at 2024-12-16 21:02:43
哦,中间那段原来是复制自 amsmath.sty 里面 \def\align@preamble{... 的代码,替换了最后那个 \alignsep@ ,明白鸟😊

手机版Mobile version|Leisure Math Forum

2025-4-20 11:56 GMT+8

Powered by Discuz!

× Quick Reply To Top Return to the list