我正在绘制一些像这样的范畴论图表:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\newcommand{\dual}{\draw (-2,-1) node[below] {$X$} arc (180:0:2cm) node[below] {$^*X$};}
\begin{tikzpicture}
\dual
\node {Evaluation};
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}[yscale=-1]
\dual
\end{scope}
\node {Coevaluation};
\end{tikzpicture}
\end{document}
由于实际图片更复杂(装饰),而且我正在绘制几张这样的图片,它们只是彼此的反射,所以我想先定义图片一次,然后为其他图片设置范围和缩放比例,如示例中所示。但显然,节点的位置现在应该在“上方”而不是“下方”。有没有“好”的方法来解决这个问题?
答案1
这里有个想法。我不知道它是否适用于你的场景,但如果适用的话,它是最简单的一个:不要使用above
nor below
。相反,让节点“置于”边缘之上,并给它一个白色背景来隐藏部分曲线。即:
\newcommand{\dual}{\draw (-2,-1) node[fill=white] {$X$} arc (180:0:2cm) node[fill=white] {$^*X$};}
\begin{tikzpicture}
\dual
\node {Evaluation};
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}[yscale=-1]
\dual
\end{scope}
\node {Coevaluation};
\end{tikzpicture}
其结果为: