在“对齐”中将公式向左移动

在“对齐”中将公式向左移动

是否有可能在环境中将等式稍微向左移动align

例如,如何将下列等式向左移动,使得其\simeq大约位于中心?

我读这个问题,但建议\MoveEqLeft不太适合这里,那里的答案需要额外的包,所以我想知道是否有更简单的方法

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools}
\DeclareMathOperator{\Hom}{Hom}

\begin{document}

\begin{align*}
    \Hom_C(C \otimes_B (B \otimes_A M), P)
    & \simeq \Hom_B(B \otimes_A M, P)\\
    & \simeq \Hom_A(M, P)\\
    & \simeq \Hom_C(C \otimes_A M, P)
\end{align*}

\end{document}

答案1

说实话,我看不出有什么理由这么做。

测量两侧并插入适当的空间(正极或负极)。

\documentclass{article}
\usepackage{mathtools}

\DeclareMathOperator{\Hom}{Hom}

\makeatletter
\newcommand{\centralize}[3]{%
  \settowidth{\@tempdima}{$\m@th\displaystyle#1$}%
  \settowidth{\@tempdimb}{$\m@th\displaystyle#3$}%
  \hspace*{\dimexpr\@tempdimb-\@tempdima}#1&#2#3%
}
\makeatother


\begin{document}

\noindent
X\dotfill X\dotfill X
\begin{align*}
  \centralize{\Hom_C(C \otimes_B (B \otimes_A M), P)}{\simeq}{\Hom_B(B \otimes_A M, P)}\\
  & \simeq \Hom_A(M, P)\\
  & \simeq \Hom_C(C \otimes_A M, P)
\end{align*}
X\dotfill X\dotfill X
\begin{align*}
  \centralize{\Hom_C(C, P)}{\simeq}{\Hom_B(B \otimes_A M, P)}\\
  & \simeq \Hom_A(M, P)\\
  & \simeq \Hom_C(C \otimes_A M, P)
\end{align*}

\end{document}

在此处输入图片描述

对于更复杂的情况,请使用幻影。

\documentclass{article}
\usepackage{mathtools}

\DeclareMathOperator{\Hom}{Hom}

\makeatletter
\newcommand{\centralize}[3]{%
  \settowidth{\@tempdima}{$\m@th\displaystyle#1$}%
  \settowidth{\@tempdimb}{$\m@th\displaystyle#3$}%
  \hspace*{\dimexpr\@tempdimb-\@tempdima}#1&#2#3%
}
\makeatother


\begin{document}

\noindent
X\dotfill X\dotfill X
\begin{align*}
  \centralize{\Hom_C(C \otimes_B (B \otimes_A M), P)}{\simeq}{\Hom_B(B \otimes_A M, P)}\\
  & \simeq \Hom_A(M, P)\\
  & \simeq \Hom_C(C \otimes_A M, P)
\end{align*}
X\dotfill X\dotfill X
\begin{align*}
  \Hom_C(C \otimes_B (B \otimes_A M), P)
  & \simeq \Hom_B(B \otimes_A M, P)\\
  & \simeq \Hom_A(M, P)\\
  & \simeq \Hom_C(C \otimes_A M, P) \\
  \centralize{\hphantom{\Hom_C(C \otimes_B (B \otimes_A M), P)}}
             {\simeq}{xxxxxxxxxxxxxxxxxxxxxxxxx}
\end{align*}
X\dotfill X\dotfill X
\begin{align*}
  \centralize{\Hom_C(C, P)}{\simeq}{\Hom_B(B \otimes_A M, P)}\\
  & \simeq \Hom_A(M, P)\\
  & \simeq \Hom_C(C \otimes_A M, P)
\end{align*}

\end{document}

在此处输入图片描述

答案2

如果您希望 ≃ 字符正好位于中心,并且没有明确设置任何随机尺寸,那么您可以\calign基于\halign原始 TeX 命令和\tabskip原始寄存器定义自己的对齐宏。

\def\calign#1{\tabskip=0pt plus1fill
   \halign to\hsize{\llap{$\displaystyle##$}\tabskip=0pt &%
      $\displaystyle{}##{}$&\rlap{$\displaystyle##$}\tabskip=0pt plus1fill\cr
      #1\crcr}%
}

\def\Hom{\mathop{\rm Hom}\nolimits}

\noindent X\dotfill Y
$$
\calign{
   \Hom_C(C ⊗_B (B ⊗_A M), P) & ≃ & \Hom_B(B ⊗_A M, P)\cr
                              & ≃ & \Hom_A(M, P)\cr
                              & ≃ & \Hom_C(C ⊗_A M, P)
}
$$
X\dotfill Y

\noindent X\dotfill Y\dotfill Z

答案3

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools}
\DeclareMathOperator{\Hom}{Hom}

\begin{document}


\noindent X\dotfill X
\begin{align*}
    \Hom_C(C \otimes_B (B \otimes_A M), P)
    & \simeq \Hom_B(B \otimes_A M, P)\\
    & \simeq \Hom_A(M, P)\\
    & \simeq \Hom_C(C \otimes_A M, P)
\end{align*}

\noindent X\dotfill X
\begin{align*}
    \hspace*{-2cm}\Hom_C(C \otimes_B (B \otimes_A M), P)
    & \simeq \Hom_B(B \otimes_A M, P)\\
    & \simeq \Hom_A(M, P)\\
    & \simeq \Hom_C(C \otimes_A M, P)
\end{align*}

\end{document}

不会\hspace直接移动对齐方式,但会影响第一个单元格的有效大小,从而导致位置发生改变

答案4

fleqn使用来自 的环境的简单解决方案nccmath。此环境可以采用可选参数来指定从左边距开始的距离:

    \documentclass{article}

    \usepackage{mathtools}
    \usepackage{nccmath}
    \DeclareMathOperator{\Hom}{Hom}
    \usepackage{showframe}
    \renewcommand{\ShowFrameLinethickness}{0.4pt}

    \begin{document}

    \begin{fleqn}[4.5em]
    \begin{align*}
        \Hom_C(C \otimes_B (B \otimes_A M), P)
        & \simeq \Hom_B(B \otimes_A M, P)\\
        & \simeq \Hom_A(M, P)\\
        & \simeq \Hom_C(C \otimes_A M, P)
    \end{align*}
    \end{fleqn}

    \end{document} 

在此处输入图片描述

相关内容