这是我现在的代码:
\documentclass[11pt, a4paper, english]{article}
\usepackage[main=english, ngerman]{babel}
\usepackage{amsmath, amssymb, amsfonts, mathtools, amsthm}
\usepackage{stmaryrd}
\usepackage{geometry}
\begin{document}
\begin{align*}
\lbrace \rho : G \rightarrow \text{GL}(K^n) \, |\, \rho &\, \text{is a homomorphism} \rbrace
\overset{1:1}\longleftrightarrow
\lbrace \rho':G\rightarrow \text{GL}_n(K) \, | \, \rho' \, \text{is a homomorphism} \rbrace \\
\rho&\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,
\,\,\,\,\,\,\,\,\,\,
\,\,\, \longmapsto \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,
\textbf{c}_{B,B}(?)\circ p \\
\textbf{c}_{B,B}(?&)^{-1} \circ \rho'
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\, \longmapsfrom \,\,\,
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,
\rho'
\end{align*}
\end{document}
我手动在两个元素的映射之间留出了空间。有没有更优雅的解决方案?也许使用更多的“,,&”符号来表示“在这里设置第一个,在这里设置第二个,依此类推……”也许除了对齐之外,还需要另一个环境?
提前致谢!
答案1
我会避免使用长篇文字描述集合。我认为每个人都能理解“hom”。左边的符号\longmapsto
被理解为上方集合中的变量,右边的符号也是如此\longmapsfrom
。
我建议两种不同的排列方式,请您自行选择。
\documentclass[11pt, a4paper, english]{article}
\usepackage[main=english, ngerman]{babel}
\usepackage{amsmath, amssymb, mathtools, amsthm,array}
\usepackage{stmaryrd}
\usepackage{geometry}
\DeclareMathOperator{\GL}{GL}
\begin{document}
\begin{equation*}
\renewcommand{\arraystretch}{1.2}
\setlength{\arraycolsep}{0pt}
\begin{array}{ c >{{}}c<{{}} c }
\hom(G,\GL(K^n)) & \overset{1:1}\longleftrightarrow & \hom(G,\GL_n(K)) \\
\rho & \longmapsto & \mathbf{c}_{B,B}(?)\circ \rho \\
\mathbf{c}_{B,B}(?)^{-1} \circ \rho' & \longmapsfrom & \rho'
\end{array}
\end{equation*}
\begin{equation*}
\renewcommand{\arraystretch}{1.2}
\setlength{\arraycolsep}{0pt}
\begin{array}{ r >{{}}c<{{}} l }
\hom(G,\GL(K^n)) & \overset{1:1}\longleftrightarrow & \hom(G,\GL_n(K)) \\
\rho & \longmapsto & \mathbf{c}_{B,B}(?)\circ \rho \\
\mathbf{c}_{B,B}(?)^{-1} \circ \rho' & \longmapsfrom & \rho'
\end{array}
\end{equation*}
\end{document}
的(局部)重新定义\arraystretch
是为了展开数组的行(例如,它与amsmath
的操作相同)。cases
为什么\setlength{\arraycolsep}{0pt}
?我们想依靠 TeX 在数学公式中添加的自动间距,而不是填充列。因此,中间列以特殊方式设置,方法是
>{{}}c<{{}}
这意味着中间一列中将array
出现或类似内容(有关语法,{}\longmapsto{}
请参阅包的文档)。由于在数学模式下排版每个单元格,因此两个空组在关系符号周围提供了“幻像原子”,TeX 会适时在这些原子和关系符号之间插入标准间距。array
array
为什么equation*
?因为显示屏中只有一个对象,即array
。最好将 保留align
用于不同行中有多个对象的显示屏,因此 位于\\
“外层”。
答案2
也许tikz-cd
这里值得一试。
\documentclass[10pt]{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{tikz-cd}
\begin{document}
\[\begin{tikzcd}[row sep=1ex]
\lbrace \rho : G \rightarrow \text{GL}(K^n) \mid \rho \text{ is a homomorphism} \rbrace
\arrow[r,"1:1"]&
\lbrace \rho':G\rightarrow \text{GL}_n(K) \mid \rho'
\text{ is a homomorphism} \rbrace
\\
\rho\arrow[r,mapsto]&
\textbf{c}_{B,B}(?)\circ p \\
\textbf{c}_{B,B}(?)^{-1} \circ \rho'
&\arrow[l,mapsto] \rho'
\end{tikzcd}\]
\end{document}
答案3
如果你想居中,我会使用数组(并且\mid
\documentclass{article}
\addtolength\textwidth{70pt}
\usepackage{array,amsmath}
\begin{document}
\[\renewcommand\arraystretch{1.5}
\begin{array}{c@{}>{{}}c<{{}}@{}c}
\lbrace \rho : G \rightarrow \mathrm{GL}(K^n) \mid \rho \text{ is a homomorphism} \rbrace
&\overset{1:1}\longleftrightarrow&
\lbrace \rho':G\rightarrow \mathrm{GL}_n(K) \mid \rho' \text{ is a homomorphism} \rbrace \\
\rho
&\longrightarrow& % to not defined
\textbf{c}_{B,B}(?)\circ p \\
\textbf{c}_{B,B}(?)^{-1} \circ \rho'
&\longrightarrow &% from not defined
\rho'
\end{array}
\]
\end{document}