TikZ 中是否存在一种转换,可以转换节点的位置,但不转换节点本身?

TikZ 中是否存在一种转换,可以转换节点的位置,但不转换节点本身?

我正在绘制一些像这样的范畴论图表:

\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

这里有个想法。我不知道它是否适用于你的场景,但如果适用的话,它是最简单的一个:不要使用abovenor 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}

其结果为:

结果

相关内容