我怎样才能用 LaTeX 排版这封信件?

我怎样才能用 LaTeX 排版这封信件?

我希望在 LaTeX 中创建一个“表格”或类似的东西,在其中显示一个自然数与其他自然数之间的对应关系/映射,如下图所示(请原谅这个画得很糟糕的示例):

在此处输入图片描述

换句话说,“一映射到零,二映射到一...”等等。但是,我不确定如何在 LaTeX 中做到这一点。

有人能帮我一下如何在 LaTeX 环境中排版类似这样的内容吗?

答案1

也可以使用一个使用matrix;的选项,但您不必指定列的数量和格式:arraymatrix

\documentclass{article}
\usepackage{amsmath}

\begin{document}

\[
\begin{matrix}
0 & 1 & 2 \\
\updownarrow & \updownarrow & \updownarrow  \\
2 & 3 & 1 
\end{matrix}
\]

\end{document}

在此处输入图片描述

正如已经指出的,箭头周围的垂直空间似乎有点不均匀:箭头上方的空间比下方的空间大,因此可以轻松修复它:

\documentclass{article}
\usepackage{amsmath}

\newcommand\UpDownarrow[1][0.2ex]{
  \raisebox{#1}[0pt][0pt]{$\updownarrow$}
}

\begin{document}
\[
\begin{matrix}
0 & 1 & 2 \\
\UpDownarrow & \UpDownarrow & \UpDownarrow \\
2 & 3 & 1 
\end{matrix}
\]

\end{document}

在此处输入图片描述

仅供记录,版本array

\documentclass{article}
\usepackage{amsmath}

\begin{document}

\[
\begin{array}{ccc}
0 & 1 & 2 \\
\updownarrow & \updownarrow & \updownarrow  \\
2 & 3 & 1 
\end{array}
\]

\end{document}

答案2

这可能看起来有点小题大做,但可能是一种很好的概括方式。

\documentclass{scrartcl}
\usepackage{mathtools,tikz}
\usetikzlibrary{matrix}

\begin{document}
\[
  \begin{tikzpicture}
    \matrix[name=m,matrix of math nodes,column sep=1em,row sep=1em]
      {0 & 1 & 2 \\ 2 & 3 & 1 \\};
    \draw[<->] (m-1-1) -- (m-2-1);
    \draw[<->] (m-1-2) -- (m-2-2);
    \draw[<->] (m-1-3) -- (m-2-3);
  \end{tikzpicture}
\]
\end{document}

在此处输入图片描述

PS:如果您加载\usetikzlibrary{arrows.meta}它,默认情况下可能会提供更好的箭头。

答案3

还有另一种tikz解决方案,但在这里我使用了一个\foreach循环:

\documentclass{article}
\usepackage{tikz}
\newcommand\aestrut{\rule[-0.5ex]{0pt}{2ex}}
\begin{document}

  \begin{tikzpicture}[my node/.style={anchor=base}]
    \foreach[count=\myi from 0] \mya/\myb in {0/1,1/2,2/3,h/g,e/j,j/k}
    {
      \node[my node] (A\myi) at (\myi,1) {\aestrut\mya};
      \node[my node] (B\myi) at (\myi,0) {\aestrut\myb};
      \draw[arrows=<->] (A\myi) -- (B\myi);
    }
  \end{tikzpicture}

\end{document}

在此处输入图片描述

设置起来有点困难,但一旦设置完成,就可以很容易地在对应关系中添加或删除对:只需从in {.....}以 分隔的组中添加(或删除)对即可/

答案4

PSTricks 解决方案:

\documentclass{article}

\usepackage{multido,pstricks}

\def\Map(#1)#2#3{%
  \psline{<->}(#1,0)(#1,1)
  \rput(#1,-0.3){#2}
  \rput(#1,1.3){#3}}

% parameter
\def\arrows{3}

\begin{document}

\begin{pspicture}(0.95,-0.4)(\arrows.05,1.4) % boundry found manually
  \multido{\iA = 0+1, \iB = 1+1}{\arrows}{\Map(\iB){$\iA$}{$\iB$}}
\end{pspicture}

\end{document}

输出

您所要做的就是选择值\arrows,然后绘图将进行相应的调整。

相关内容