我想使用 overleaf 中的 tikz-cd 包制作类似下图的图表。
我可以这样做:
\documentclass[a4paper, 12pt, twoside]{article}
% ------------ Packages ------------ %
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[top=2cm, bottom=2cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{tikz-cd}
% --------------------------------------
\begin{document}
\begin{tikzcd}[cramped, column sep=tiny]
1 \arrow[to=d21, dashed]& 1 \arrow[to=d21, dashed]\\
&|[alias=d21]| 0\\
\end{tikzcd}
\end{document}
但无法集中化。那么,我该如何在 LaTeX 中做到这一点?我想添加另一个这样的列:
\documentclass[a4paper, 12pt, twoside]{article}
% ------------ Packages ------------ %
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[top=2cm, bottom=2cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{tikz-cd}
% --------------------------------------
\begin{document}
\begin{tikzcd}
1 \arrow[to=d21, dashed] && 1 \arrow[to=d21, dashed]\\
&|[alias=d21]| 0\\
\end{tikzcd}
\end{document}
但如果我需要添加其他行,那么这将适得其反。
此外,我无法插入系数 y_i、d_2、c_2、...、c_0。
问题:
- 我怎样才能将系数 y_i、d_2、c_2、...、d_0、c_0 放在右边?
- 我怎样才能像第一个图形那样自动对齐线条?
如果需要使用另一个包,也没有问题。
观察:虚线箭头表示减法,实线箭头表示加法。
答案1
我认为tikz-cd
这是错误的工具。我建议改用forest
:
\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={inner sep=1pt,
grow'=north, s sep=10mm,
math content,
edge={densely dashed,<-},
if n children=1{for children={no edge}}{},
if level<=1{no edge}{if n children=2{for children={tikz={\draw[->]()--(!uu);}}}{}}
}
[
[42
[6
[18
[14
[2
[0[1][1]]
]
[16
[2[7][9]]
]
]
]
[24
[4
[10
[6[2][8]]
]
[14
[-2[8][6]]
]
]
]
]
]
[c_0[d_0[c_1[d_1[c_2[d_2[y_i]]]]]]]
]
\end{forest}
\end{document}