解决方案IPE 7.1.6

解决方案IPE 7.1.6

我可以使用下面的代码片段创建两个附近的表:

\documentclass{article}
\begin{document}

\begin{tabular}{ll}
\begin{tabular}{ccc}
A & B & C \\
\cline{1-3}
1 & 2 & 3 \\
\cline{1-3}
C & B & A \\
\end{tabular}
&
\begin{tabular}{ccc}
D & E & F \\
\cline{1-3}
4 & 5 & 6 \\
\cline{1-3}
F & E & D \\
\end{tabular}
\end{tabular}

\end{document} 

是否可以使用某种线条或箭头连接两个表中的不同行。我还想给这些线条贴上标签。例如,将第一个表中的第 1 行与第二个表中的第 3 行连接起来。

答案1

我确信有一种方法可以将它与 Tikz 一起使用,如链接的重复问题中所示。

解决方案IPE 7.1.6

如果你想自由地“手工”绘图,还有另一种方法,使用优秀、免费且独立于平台的工具IPE 国际教育协会 7

生成的 PDF

结果是 PDF,您可以使用 includegraphics 将其插入到 LaTeX 中。

在此处输入图片描述

一步步

  • 在 IPE 中创建新文件
  • 使用以下代码创建 minipage 容器模式/文本标签页面某处
  • 将 LaTeX 代码(不带前言和开始/结束文档)插入到这个小页面的“文本字段”中
  • 编译它文件/运行 Latex
  • 用多边形线绘制箭头(末端有相应的箭头)
  • 另存为 PDF

(我仅选择了 .ipe 格式来向您提供纯源代码,但您可以直接将文件保存为 PDF 文件,然后使用 IPE 打开和编辑)

IPE 源文件 TabularArrowsIPE.ipe

这是源代码。如果您将其保存为文本文件filename.ipe并使用 IPE 打开它,您也可以直接将其保存为 PDF 并使用 IPE 重新打开此 PDF 文件进行编辑。

评论:以下 xml 文件看起来相当混乱,因为它还包含线条、文本、颜色等格式设置。

<?xml version="1.0"?>
<!DOCTYPE ipe SYSTEM "ipe.dtd">
<ipe version="70005" creator="Ipe 7.1.6">
<info created="D:20150319140150" modified="D:20150319140818"/>
<preamble>\usepackage[ngerman]{babel}</preamble>
<ipestyle name="basic">
<symbol name="arrow/arc(spx)">
<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
0 0 m
-1 0.333 l
-1 -0.333 l
h
</path>
</symbol>
<symbol name="arrow/farc(spx)">
<path stroke="sym-stroke" fill="white" pen="sym-pen">
0 0 m
-1 0.333 l
-1 -0.333 l
h
</path>
</symbol>
<symbol name="arrow/ptarc(spx)">
<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
0 0 m
-1 0.333 l
-0.8 0 l
-1 -0.333 l
h
</path>
</symbol>
<symbol name="arrow/fptarc(spx)">
<path stroke="sym-stroke" fill="white" pen="sym-pen">
0 0 m
-1 0.333 l
-0.8 0 l
-1 -0.333 l
h
</path>
</symbol>
<symbol name="mark/circle(sx)" transformations="translations">
<path fill="sym-stroke">
0.6 0 0 0.6 0 0 e
0.4 0 0 0.4 0 0 e
</path>
</symbol>
<symbol name="mark/disk(sx)" transformations="translations">
<path fill="sym-stroke">
0.6 0 0 0.6 0 0 e
</path>
</symbol>
<symbol name="mark/fdisk(sfx)" transformations="translations">
<group>
<path fill="sym-fill">
0.5 0 0 0.5 0 0 e
</path>
<path fill="sym-stroke" fillrule="eofill">
0.6 0 0 0.6 0 0 e
0.4 0 0 0.4 0 0 e
</path>
</group>
</symbol>
<symbol name="mark/box(sx)" transformations="translations">
<path fill="sym-stroke" fillrule="eofill">
-0.6 -0.6 m
0.6 -0.6 l
0.6 0.6 l
-0.6 0.6 l
h
-0.4 -0.4 m
0.4 -0.4 l
0.4 0.4 l
-0.4 0.4 l
h
</path>
</symbol>
<symbol name="mark/square(sx)" transformations="translations">
<path fill="sym-stroke">
-0.6 -0.6 m
0.6 -0.6 l
0.6 0.6 l
-0.6 0.6 l
h
</path>
</symbol>
<symbol name="mark/fsquare(sfx)" transformations="translations">
<group>
<path fill="sym-fill">
-0.5 -0.5 m
0.5 -0.5 l
0.5 0.5 l
-0.5 0.5 l
h
</path>
<path fill="sym-stroke" fillrule="eofill">
-0.6 -0.6 m
0.6 -0.6 l
0.6 0.6 l
-0.6 0.6 l
h
-0.4 -0.4 m
0.4 -0.4 l
0.4 0.4 l
-0.4 0.4 l
h
</path>
</group>
</symbol>
<symbol name="mark/cross(sx)" transformations="translations">
<group>
<path fill="sym-stroke">
-0.43 -0.57 m
0.57 0.43 l
0.43 0.57 l
-0.57 -0.43 l
h
</path>
<path fill="sym-stroke">
-0.43 0.57 m
0.57 -0.43 l
0.43 -0.57 l
-0.57 0.43 l
h
</path>
</group>
</symbol>
<symbol name="arrow/fnormal(spx)">
<path stroke="sym-stroke" fill="white" pen="sym-pen">
0 0 m
-1 0.333 l
-1 -0.333 l
h
</path>
</symbol>
<symbol name="arrow/pointed(spx)">
<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
0 0 m
-1 0.333 l
-0.8 0 l
-1 -0.333 l
h
</path>
</symbol>
<symbol name="arrow/fpointed(spx)">
<path stroke="sym-stroke" fill="white" pen="sym-pen">
0 0 m
-1 0.333 l
-0.8 0 l
-1 -0.333 l
h
</path>
</symbol>
<symbol name="arrow/linear(spx)">
<path stroke="sym-stroke" pen="sym-pen">
-1 0.333 m
0 0 l
-1 -0.333 l
</path>
</symbol>
<symbol name="arrow/fdouble(spx)">
<path stroke="sym-stroke" fill="white" pen="sym-pen">
0 0 m
-1 0.333 l
-1 -0.333 l
h
-1 0 m
-2 0.333 l
-2 -0.333 l
h
</path>
</symbol>
<symbol name="arrow/double(spx)">
<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
0 0 m
-1 0.333 l
-1 -0.333 l
h
-1 0 m
-2 0.333 l
-2 -0.333 l
h
</path>
</symbol>
<pen name="heavier" value="0.8"/>
<pen name="fat" value="1.2"/>
<pen name="ultrafat" value="2"/>
<symbolsize name="large" value="5"/>
<symbolsize name="small" value="2"/>
<symbolsize name="tiny" value="1.1"/>
<arrowsize name="large" value="10"/>
<arrowsize name="small" value="5"/>
<arrowsize name="tiny" value="3"/>
<color name="red" value="1 0 0"/>
<color name="green" value="0 1 0"/>
<color name="blue" value="0 0 1"/>
<color name="yellow" value="1 1 0"/>
<color name="orange" value="1 0.647 0"/>
<color name="gold" value="1 0.843 0"/>
<color name="purple" value="0.627 0.125 0.941"/>
<color name="gray" value="0.745"/>
<color name="brown" value="0.647 0.165 0.165"/>
<color name="navy" value="0 0 0.502"/>
<color name="pink" value="1 0.753 0.796"/>
<color name="seagreen" value="0.18 0.545 0.341"/>
<color name="turquoise" value="0.251 0.878 0.816"/>
<color name="violet" value="0.933 0.51 0.933"/>
<color name="darkblue" value="0 0 0.545"/>
<color name="darkcyan" value="0 0.545 0.545"/>
<color name="darkgray" value="0.663"/>
<color name="darkgreen" value="0 0.392 0"/>
<color name="darkmagenta" value="0.545 0 0.545"/>
<color name="darkorange" value="1 0.549 0"/>
<color name="darkred" value="0.545 0 0"/>
<color name="lightblue" value="0.678 0.847 0.902"/>
<color name="lightcyan" value="0.878 1 1"/>
<color name="lightgray" value="0.827"/>
<color name="lightgreen" value="0.565 0.933 0.565"/>
<color name="lightyellow" value="1 1 0.878"/>
<dashstyle name="dashed" value="[4] 0"/>
<dashstyle name="dotted" value="[1 3] 0"/>
<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
<textsize name="large" value="\large"/>
<textsize name="Large" value="\Large"/>
<textsize name="LARGE" value="\LARGE"/>
<textsize name="huge" value="\huge"/>
<textsize name="Huge" value="\Huge"/>
<textsize name="small" value="\small"/>
<textsize name="footnote" value="\footnotesize"/>
<textsize name="tiny" value="\tiny"/>
<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
<gridsize name="4 pts" value="4"/>
<gridsize name="8 pts (~3 mm)" value="8"/>
<gridsize name="16 pts (~6 mm)" value="16"/>
<gridsize name="32 pts (~12 mm)" value="32"/>
<gridsize name="10 pts (~3.5 mm)" value="10"/>
<gridsize name="20 pts (~7 mm)" value="20"/>
<gridsize name="14 pts (~5 mm)" value="14"/>
<gridsize name="28 pts (~10 mm)" value="28"/>
<gridsize name="56 pts (~20 mm)" value="56"/>
<anglesize name="90 deg" value="90"/>
<anglesize name="60 deg" value="60"/>
<anglesize name="45 deg" value="45"/>
<anglesize name="30 deg" value="30"/>
<anglesize name="22.5 deg" value="22.5"/>
<tiling name="falling" angle="-60" step="4" width="1"/>
<tiling name="rising" angle="30" step="4" width="1"/>
</ipestyle>
<page>
<layer name="alpha"/>
<view layers="alpha" active="alpha"/>
<text layer="alpha" transformations="translations" pos="32 816" stroke="black" type="label" width="142.964" height="20.406" depth="15.46" valign="baseline">\begin{tabular}{ll}
\begin{tabular}{ccc}
A &amp; B &amp; C \\
\cline{1-3}
1 &amp; 2 &amp; 3 \\
\cline{1-3}
C &amp; B &amp; A \\
\end{tabular}
&amp;
\begin{tabular}{ccc}
D &amp; E &amp; F \\
\cline{1-3}
4 &amp; 5 &amp; 6 \\
\cline{1-3}
F &amp; E &amp; D \\
\end{tabular}
\end{tabular}
</text>
<path stroke="black" arrow="normal/normal">
92.1758 830.603 m
101.834 830.603 l
101.834 807.628 l
111.932 807.628 l
</path>
</page>
</ipe>

答案2

{NiceTabular}这是使用nicematrix和 TikZ 绘制箭头的解决方案。

\documentclass{article}
\usepackage{nicematrix,tikz}
\usetikzlibrary{arrows.meta,ext.paths.ortho}

\begin{document}

\begin{tabular}{ll}
\begin{NiceTabular}{ccc}[name=A]
A & B & C \\
\cline{1-3}
1 & 2 & 3 \\
\cline{1-3}
C & B & A \\
\end{NiceTabular}
&
\begin{NiceTabular}{ccc}[name=B]
D & E & F \\
\cline{1-3}
4 & 5 & 6 \\
\cline{1-3}
F & E & D \\
\end{NiceTabular}
\end{tabular}

\begin{tikzpicture}[overlay,remember picture]
\draw [->] (A-1-3) -|- (B-3-1) ; 
\end{tikzpicture}

\end{document} 

上述代码的输出

答案3

使用tikz带有tikzmarkext.paths.ortho库的包:

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
                ext.paths.ortho,    % defined in the tikz-ext package
                tikzmark}           % <---
\tikzset{is/.style = {inner xsep=2pt}}

\begin{document}
    \begin{tabular}{ll}
\begin{tabular}{ccc}
A & B & \tikzmarknode[is]{c}{C} \\
\hline
1 & 2 & 3 \\
\hline
C & B & A \\
\end{tabular}
&
\begin{tabular}{ccc}
D & E & F \\
\hline
4 & 5 & 6 \\
\hline
\tikzmarknode[is]{f}{F} & E & D \\
\end{tabular}
    \begin{tikzpicture}[overlay,remember picture]
\draw[-Straight Barb] (c) -|- (f);
    \end{tikzpicture}
    \end{tabular}
\end{document}

在此处输入图片描述

附录:
箭头上带有标签:

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
                ext.paths.ortho,    % defined in the tikz-ext package
                tikzmark}
\tikzset{is/.style = {inner xsep=6pt}}

\begin{document}
    \begin{tabular}{l@{\qquad}l}
\begin{tabular}{ccc@{}}
A & B & \tikzmarknode[is]{c}{C} \\
\hline
1 & 2 & 3 \\
\hline
C & B & A \\
\end{tabular}
&
\begin{tabular}{@{}ccc}
D & E & F \\
\hline
4 & 5 & 6 \\
\hline
\tikzmarknode[is]{f}{F} & E & D \\
\end{tabular}
    \begin{tikzpicture}[overlay,remember picture,
                        lbl/.style={font=\scriptsize, inner sep=1pt, right, pos=0.5}
                        ]
\draw[-Straight Barb] (c) -|- [distance=-1.5em] (f) node[lbl=west] {xx};
    \end{tikzpicture}
    \end{tabular}
\end{document}

在此处输入图片描述

相关内容