我在设置四个方阵时遇到了困难,一个方阵一个方阵。出于美观的原因,它们需要具有相同的大小,即相同的宽度。目前,它们非常丑陋,如以下代码所示:
\documentclass[11pt,letterpaper,twoside]{book}
\usepackage{lmodern}
\usepackage[total={6in,10in},left=1.5in,top=0.5in,includehead,includefoot]{geometry}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{mathtools}
\usepackage{tensor}
\begin{document}
\begin{align}
\gamma^0 &=
\begin{bmatrix}
0 & \tensor{\sigma}{_2} \\[1em]
\tensor{\sigma}{_2} & 0
\end{bmatrix},
\\
\gamma^1 &=
\begin{bmatrix}
-\, i \tensor{\sigma}{_3} & 0 \\[1em]
0 & -\, i \tensor{\sigma}{_3}
\end{bmatrix},
\\
\gamma^2 &=
\begin{bmatrix}
0 & \tensor{\sigma}{_2} \\[1em]
-\, \tensor{\sigma}{_2} & 0
\end{bmatrix},
\\
\gamma^3 &=
\begin{bmatrix}
i \tensor{\sigma}{_1} & 0 \\[1em]
0 & i \tensor{\sigma}{_1}
\end{bmatrix}.
\end{align}
\end{document}
预览:
减号是主要问题的根源。我尝试使用\mathclap
每个元素(0 除外)并添加一些幻像项来均衡间距,但效果不佳,而且感觉很不靠谱。那么我怎样才能使这些矩阵大小相同,并且内部元素均衡呢?我讨厌 LaTeX 中的矩阵!!
答案1
一个简单的代码eqparbox
:我定义了一个\eqmathbox
命令,确保共享相同标签的所有数学框(M
默认情况下)的宽度为其内容的最大自然宽度。将此命令与每列中最宽的元素一起使用就足够了(可能需要两次编译)。
amsmath
无关:加载时无需加载mathtools
:后者包会为您完成此操作。
\documentclass[11pt,letterpaper,twoside]{book}
\usepackage{lmodern}
\usepackage[total={6in,10in},left=1.5in,top=0.5in,includehead,includefoot]{geometry}
\usepackage{microtype}
\usepackage{amsfonts}
\usepackage{mathtools}
\usepackage{tensor}
\usepackage{eqparbox}
\newcommand{\eqmathbox}[2][M]{\eqmakebox[#1]{$#2$}}
\begin{document}
\begin{align}
\gamma^0 &=
\begin{bmatrix}
0 & \eqmathbox{\tensor{\sigma}{_2}} \\[1em]
\eqmathbox{\tensor{\sigma}{_2} }& 0
\end{bmatrix},
\\[0.5ex]
\gamma^1 &=
\begin{bmatrix}
\eqmathbox{-i\tensor{\sigma}{_3}} & 0 \\[1em]
0 & \eqmathbox{-i\tensor{\sigma}{_3}}
\end{bmatrix},
\\[0.5ex]
\gamma^2 &=
\begin{bmatrix}
0 & \eqmathbox{\tensor{\sigma}{_2}} \\[1em]
\eqmathbox{-\tensor{\sigma}{_2}} & 0
\end{bmatrix},
\\[0.5ex]
\gamma^3 &=
\begin{bmatrix}
\eqmathbox{i\tensor{\sigma}{_1}} & 0 \\[1em]
0 & \eqmathbox{i\tensor{\sigma}{_1}}
\end{bmatrix}.
\end{align}
\end{document}
答案2
该软件包nicematrix
有一个专门针对该问题的功能。在环境中,由(使用但此环境将创建与相同的结果){NiceMatrixBlock}
创建的所有矩阵将具有相同的列宽。需要进行两次编译。nicematrix
{bNiceMatrix}
{bmatrix}
\documentclass[11pt,letterpaper,twoside]{book}
\usepackage{lmodern}
\usepackage[total={6in,10in},left=1.5in,top=0.5in,includehead,includefoot]{geometry}
\usepackage{microtype}
\usepackage{amsfonts}
\usepackage{mathtools}
\usepackage{tensor}
\usepackage{nicematrix}
\begin{document}
\begin{NiceMatrixBlock}[auto-columns-width]
\begin{align}
\gamma^0 &=
\begin{bNiceMatrix}
0 & \tensor{\sigma}{_2} \\[1em]
\tensor{\sigma}{_2} & 0
\end{bNiceMatrix},
\\
\gamma^1 &=
\begin{bNiceMatrix}
-\, i \tensor{\sigma}{_3} & 0 \\[1em]
0 & -\, i \tensor{\sigma}{_3}
\end{bNiceMatrix},
\\
\gamma^2 &=
\begin{bNiceMatrix}
0 & \tensor{\sigma}{_2} \\[1em]
-\, \tensor{\sigma}{_2} & 0
\end{bNiceMatrix},
\\
\gamma^3 &=
\begin{bNiceMatrix}
i \tensor{\sigma}{_1} & 0 \\[1em]
0 & i \tensor{\sigma}{_1}
\end{bNiceMatrix}.
\end{align}
\end{NiceMatrixBlock}
\end{document}
答案3
薛定谔的猫建议的帖子处理这种间距的“减”,但你的矩阵有许多其他因素,需要太多的 if 条件。我发现最好的方法是添加幻影字符并生成输出。我相信会有一种方法可以自动化这一点,但如果你只是想让它适用于三个方程,那么phantom
手动添加就可以了。
\documentclass[11pt,letterpaper,twoside]{book}
\usepackage{lmodern}
\usepackage[total={6in,10in},left=1.5in,top=0.5in,includehead,includefoot]{geometry}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{mathtools}
\usepackage{tensor}
\begin{document}
\begin{align}
\gamma^0 &=
\begin{bmatrix}
0 & \phantom{-}\tensor{\sigma}{_2}\phantom{3} \\[1em]
\phantom{-}\tensor{\sigma}{_2}\phantom{3} & 0
\end{bmatrix},
\\
\gamma^1 &=
\begin{bmatrix}
-\, i \tensor{\sigma}{_3} & 0 \\[1em]
0 & -\, i \tensor{\sigma}{_3}
\end{bmatrix},
\\
\gamma^2 &=
\begin{bmatrix}
0 & \phantom{-}\tensor{\sigma}{_2}\phantom{3} \\[1em]
-\, \tensor{\sigma}{_2}\phantom{3} & \phantom{-}0\phantom{3}
\end{bmatrix},
\\
\gamma^3 &=
\begin{bmatrix}
\phantom{- }i \tensor{\sigma}{_1} & \phantom{-} 0 \phantom{3} \\[1em]
0 & \phantom{-1}i\tensor{\sigma}{_1}
\end{bmatrix}.
\end{align}
\end{document}
答案4
\documentclass{article}
\usepackage{amsmath}
\usepackage[pdftex]{graphicx}
\usepackage{tikz}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{tabular}{c c}
$ \gamma^0 =$ &{$\left[
\begin{tabular}{p{0.75cm}p{0.75cm}}
0 & $ \sigma _{2} $\\[1em]
$ \sigma _{2}$ & 0
\end{tabular}\right]$}
\end{tabular}\\
\vspace{1cm}
\begin{tabular}{cc}
$ \gamma^1 =$ & {$\left[
\begin{tabular}{p{0.75cm}p{0.75cm}}
$ -\iota \sigma_{3}$ & 0 \\[1em]
0 & $-\iota \sigma_ {3}$
\end{tabular}\right]$}
\end{tabular}
\vspace{1cm}
\begin{tabular}{cc}
$ \gamma^2 =$ &{$\left[
\begin{tabular}{p{0.75cm}p{0.75cm}}
0 & $\sigma_{ 2}$ \\[1em]
$-\iota \sigma _2$ & 0
\end{tabular}\right]$}
\end{tabular}
\vspace{1cm}
\begin{tabular}{cc}
$ \gamma^3 =$& {$\left[
\begin{tabular}{p{0.75cm}p{0.75cm}}
$ \iota \sigma _{1}$ & 0 \\[1em]
0 & $ \iota \sigma_{1}$
\end{tabular}\right]$}
\end{tabular}
\end{document}
这里我使用了简单的 latex 命令。我有适当的 latex 术语,例如 \iota 表示 i。sigma 中也有一个修正。我还尝试调整了表格列。