我有一个量化公式。我想展示当量词顺序颠倒时会发生什么。为此,我喜欢在公式上使用双向箭头,如下所示:
可能吗?我不介意您是否使用图形包(例如 TikZ),只要我可以将箭头放在正确的位置即可。
答案1
使用 TikZ 执行此操作的方法如下:
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
a
% `inner sep=0` removes unwanted padding in the nodes;
% `baseline, anchor=base` alignes the baseline of the text in the nodes
% with the baseline of the sourrounding text;
% `>=latex` selects the arrow style (see the TikZ manual for which
% arrows are available.
\begin{tikzpicture}[inner sep=0cm,baseline,anchor=base,>=latex]
% the first node, named 'left-node'
\node (left-node) {$(\forall x \in X)$};
% add a second node to the right of left-node
\node [right=0cm of left-node] (right-node) {$(\forall y \in Y)$};
% draw the connecting line between the north sides of the two nodes,
% 1.5ex above the nodes.
\draw[<->,red] (left-node.north) |- +(0,1.5ex) -| (right-node.north);
% alternatively, draw a line between the north sides of the two nodes, with
% starting angle 30° and ending at 150°.
%\draw[<->,red] (left-node.north) to[out=30,in=150] (right-node.north);
\end{tikzpicture}
b
\end{document}
这将给出或,具体取决于您取消注释了以 开头的哪一行\draw
。根据您想要在哪里使用它,您可能需要\displaystyle
在两个节点中添加数学运算。
似乎有人对pst-node
在 TikZ 中做类似的事情感兴趣。第一个近似值是(以下示例需要编译两次)
\newcommand\tikzmark[1]{\tikz[remember picture,overlay,baseline=-1ex] \node (#1) {};}
\[(\forall x\tikzmark{a}\in X)(\forall y\tikzmark{b}\in Y)\]
\tikz[remember picture,overlay] \draw[<->,red] (a.north) |- +(0,1.5ex) -| (b.north);
然而,在这种情况下,这并不是我们想要的,因为标记不在中间:
添加第二个参数并不是\tikzmark
一件简单的事情,因为仅仅将内容放入节点会破坏所有上下文(数学模式、间距等)。我不太明白pst-node
in 的作用\rnode
(但从结果来看,有些空间会丢失)。如果使用仅限于简单情况,以下方法应该可以很好地工作(如有必要,请添加\displaystyle
):
\newcommand\tikzmark[2]{\tikz[remember picture,baseline,anchor=base] \node (#1) {$#2$};}
\[(\forall x\tikzmark{a}{\in} X)(\forall y\tikzmark{b}{\in} Y)\]
\tikz[remember picture,overlay] \draw[<->,red] (a.north) |- +(0,1.5ex) -| (b.north);
还有一个问题:叠加的图片不占用任何空间,因此线条和箭头可能会与前一行的文本发生冲突。如果不手动添加一些空间,我不知道如何解决这个问题。
通过我的第一个例子,你还可以做更多有趣的事情,比如
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{positioning,decorations.pathreplacing,calc}
\begin{document}
\[
\begin{tikzpicture}[inner sep=0cm,baseline,anchor=base,>=latex,decoration=brace]
\node (left-node) {$(\forall x \in X)$};
\node [right=0cm of left-node] (right-node) {$(\forall y \in Y)$};
\draw[decorate,red] ($(left-node.north west)+(0.3ex,0.2ex)$) -- ($(left-node.north east)+(-0.3ex,0.2ex)$);
\draw[decorate,red] ($(right-node.north west)+(0.3ex,0.2ex)$) -- ($(right-node.north east)+(-0.3ex,0.2ex)$);
\draw[<->,red,transform canvas={yshift=1.2ex}] (left-node.north) to[out=30,in=150] (right-node.north);
\end{tikzpicture}
\]
\end{document}