我正在尝试用 LaTex 做逻辑课的作业,我需要制作论证图。我不知道如何在 LaTex 中制作这些。我唯一的想法是使用 TikzImage 手动完成。
以下是论证图的一些示例。(摘自我们的教科书“Schaum 大纲逻辑第二版”)
在网上搜索后,我看到有人用 tikzcd 制作论证图。这是我抄袭他人作品的一个例子。
\begin{center}
\begin{tikzcd}[row sep=1.5em,column sep=0.3em]
{1} \arrow{d} \& {} \& {} \& {} \& {} \& {} \& {} \\
{2} \& {+} \& {3} \& {+}\arrow{d} \& {4} \& {+} \& {5} \\
{} \& {} \& {} \& {6} \& {} \& {} \& {} \\
\end{tikzcd}
\end{center}
但是,我想在第二行下面添加一条水平线。
我找不到任何办法。你们知道如何做这样的事吗?
答案1
也许这是你喜欢的:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{center}
\begin{tikzcd}[every matrix/.append style={name=mymatr},row sep=1.5em,column sep=0.3em, ampersand replacement=\&, execute at end picture={\draw (mymatr-2-1.south west) -- (mymatr-2-7.south east);}]
{1} \arrow{d} \& {} \& {} \& {} \& {} \& {} \& {} \\
{2} \& {+} \& {3} \& {+}\arrow{d} \& {4} \& {+} \& {5} \\
{} \& {} \& {} \& {6} \& {} \& {} \& {} \\
\end{tikzcd}
\end{center}
\end{document}
答案2
一种可能性是使用纯tikz
。
对于起点可以提供这个(不太简单)的例子:
\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
positioning,
shapes.multipart,
}
\newcommand\ppbb{path picture bounding box}
\begin{document}
\begin{tikzpicture}[
node distance = 5mm and 0mm,
arr/.style = {-{Straight Barb[scale=0.8]}, semithick},
HMPN/.style args = {#1/#2}{%
rectangle split, rectangle split parts=3,
rectangle split horizontal,
inner ysep=1pt, outer ysep=1pt,
node contents={#1\nodepart{two}\kern-1.4pt+\kern-1.4pt\nodepart{three}#2},
path picture={\draw (\ppbb.south west) -- (\ppbb.south east);}},
]
\node (a) [HMPN=3/4]; % 3 + 4
\node (b) [HMPN=1/2, below left = of a.two split south]; % 1 + 2
\draw[arr] (a.south) -- (b.three north);
\node (c) [below=of b] {5};
\draw[arr] (b) -- (c);
\end{tikzpicture}
\end{document}
答案3
您好,在互联网上搜索后,我看到有人使用 tikzcd 制作论证图。这是我通过复制其他人的作品所做的事情的示例。
\begin{center}
\begin{tikzcd}[row sep=1.5em,column sep=0.3em]
{1} \arrow{d} \& {} \& {} \& {} \& {} \& {} \& {} \\
{2} \& {+} \& {3} \& {+}\arrow{d} \& {4} \& {+} \& {5} \\
{} \& {} \& {} \& {6} \& {} \& {} \& {} \\
\end{tikzcd}
\end{center}
但是我想在第二行下添加一条水平线。
我找不到任何可以做到这一点的方法。你们知道如何做这样的事情吗?
谢谢