关于绘制地图的问题

关于绘制地图的问题

我想要绘制下面的地图。

在此处输入图片描述

输入是N,e,R,输出是R^d。在框中,S是 在\mathcal{S};所以是M。这对我来说似乎有点难。谁能帮助我?

我使用以下代码绘制了一个框:

\documentclass{article}
\usepackage{amsmath}

\setlength{\fboxrule}{2pt}
 \setlength{\fboxsep}{1cm}

\begin{document}

$\xrightarrow{N,e,R}$
 \fbox{$\mathcal{M}$ $\updownarrow {mOT}$
 $\mathcal{S}$
    }
$\xrightarrow{R^{d}}$

\end{document}

它就像上面这样在此处输入图片描述

离我想要的有点远,而且也有点丑。

答案1

这里有两个解决方案,一个tikz是我个人的选择。另一个是stackengine下面这个。最后一个更多的是想帮助你,而不是一个明确的答案,因为这是我第一次接触这种代码。

Tikz 解决方案

tikz 图像

代码如下:

\documentclass[border=1cm]{standalone}
\usepackage{tikz}

\usetikzlibrary{calc}

\tikzset{squary/.style={anchor=west, 
                        minimum height=7mm,
                        text width=2cm,
                        },
        }

\begin{document}
\begin{tikzpicture}

    % NODES

    \node[squary] (1) at (0,1.5) {$\mathcal{M}$};
    \node[squary] (2) at (0,0) {$S (A,B,\ldots)$};
    \node[squary] (3) at (0,-.8) {$RSA$ $Solver$};

    \draw ($(1.north west)+(-.1,.1)$) |- ($(2.south east)+(.1,-.1)$) |- ($(1.north east)+(.1,.1)$)  -- cycle;

    % PATHS

    \draw[<->] ($(1.south)+(-.8,.1)$) -- ($(2.north)+(-.8,-.1)$) node[midway, right] {$mOT$};
    \draw[->] ($(2.190)+(-1.5,0)$) -- ($(2.190)+(-.1,0)$) node[midway, above]{$N,e,R$};
    \draw[->] ($(1.10)+(.1,0)$) -- ($(1.10)+(1,0)$) node[midway, above]{$R^d$};

\end{tikzpicture}
\end{document}

Stackengine + amsmath 解决方案

修改代码即可实现此目的。虽然有些不完善,但可以帮到你。检查stackengine 手册以供参考。

stackengine 图片

\documentclass[border=1cm]{standalone}
\usepackage{stackengine}
\usepackage{amsmath}

\def\stackalignment{l}
\setstackgap{L}{1.8\baselineskip}
\fboxsep=1mm

\begin{document}

\stackanchor{}{$\xrightarrow{N,e,R}$}
\stackunder{\fbox{\fboxsep=3pt\Centerstack[l]{$\mathcal{M}$ $\updownarrow {mOT}$ $\mathcal{S (A,B,...,)}$}}}{$RSA Solver$}
\stackanchor{$\xrightarrow{R^{d}}$}{}

\end{document}

答案2

这是一个“易于理解”的*示例解决方案。

在此处输入图片描述

\documentclass{article}

\usepackage{lipsum} % demo only
\usepackage{tikz}

\begin{document}

\lipsum[1] % demo only

\resizebox{4cm}{!}{
\begin{tikzpicture}[thick]
    \draw[->] (0.0,0.2) -- (1.0,0.2);
    \draw (1.0,0.0) -- (1.0,2.0) -- (3.0,2.0) -- (3.0,0.0) -- cycle;
    \draw[->] (3.0,1.6) -- (4.0,1.6);
    \draw[<->, thin] (1.3,0.6) -- (1.3,1.4);
    \node at (0.4,0.4) {$N$,$e$,$R$};
    \node[anchor=west] at (1.0,1.7) {$\mathcal{M}$};
    \node[anchor=west] at (1.3,1.0) {$m\text{OT}$};
    \node[anchor=west] at (1.0,0.3) {$\mathcal{S}\left(A,B,\dots\right)$};
    \node at (2.0,-0.2) {RSA solver};
    \node at (3.4, 1.8) {$R^d$};
\end{tikzpicture}
}

\lipsum[2] % demo only

\end{document}

*这是我的主要目的,创建一个足够简单的例子

相关内容