我在文档类中使用了包tipa
和。但是,在绘制箭头时,我很难将它们组合起来。请查看下面的 MWE:tikz
beamer
\documentclass{beamer}
\usepackage{tipa}
\usepackage{tikz} % if i remove package from preamble i get error message
\begin{document}
\tikzstyle{every picture}+=[remember picture]
\tikzstyle{na} = [shape=rectangle,inner sep=0pt,text depth=0pt]
\begin{frame}
\centering
Text [ t ] more text [ \textsubbridge{t} ]
\vspace{2em}
symbol 1 and symbol 2
\end{frame}
\begin{frame}
\centering
Text [ \tikz\node[na](t1){t}; ] more text [ \tikz\node[na](t2){\textsubbridge{t}}; ]
\vspace{2em}
\tikz\node[na](n1){symbol 1}; and \tikz\node[na](n2){symbol 2};
\begin{tikzpicture}[overlay]
\path[->,red,thick](n1) edge (t1);
\path[->,red,thick](n2) edge (t2);
\end{tikzpicture}
\end{frame}
\end{document}
无箭头的滑动:
带箭头滑动:
如您所见,当我添加箭头时,它会遮挡符号的一部分,而这部分是符号的重要部分。我该如何降低箭头的高度,使其不遮挡第二个符号的任何部分?
PS:我知道 beamer 会自动加载tikz
包。但是,对于这个 MWE,如果我不手动加载它,我就会一直收到错误。我相信这与 的定义有关tikzstyle{na}
,但如果我错了,请随时纠正我。
答案1
该类
beamer
不会tikz
自动加载,这解释了为什么必须加载它。\tikzstyle
已被弃用,取而代之的是\tikzset
。您的问题是由 引起的
text depth=0pt
。您可能这样做是为了将字符与基线对齐,但这可以使用选项来实现baseline
。要使文本元素成为箭头的源或目标,可以使用
\tikznode
所述命令这里。它大致对应于您的\tikz\node[na]
(去除上述问题)。为了使箭和目标之间保持一定的距离,您可以使用选项
shorten <=1pt,shorten >=1pt
。您可能更喜欢其他箭头,例如
\tikzset{>=stealth}
。
\documentclass{beamer}
\usepackage{tipa}
\usepackage{tikz}
\newcommand\tikznode[3][]%
{\tikz[remember picture,baseline=(#2.base)]
\node[minimum size=0pt,inner sep=0pt,#1](#2){#3};%
}
\tikzset{%
every picture/.append style={remember picture},
>=stealth
}
\begin{document}
\begin{frame}
\centering
Text [ \tikznode{t1}{t} ] more text [ \tikznode{t2}{\textsubbridge{t}} ]
\vspace{2em}
\tikznode{n1}{symbol 1} and \tikznode{n2}{symbol 2}
\begin{tikzpicture}[overlay,shorten >=1pt,shorten <=1pt]
\path[->,red,thick](n1) edge (t1);
\path[->,red,thick](n2) edge (t2);
\end{tikzpicture}
\end{frame}
\end{document}
答案2
需要注意的是tikzmark
库有一个命令\tikzmarknode
可以替换你的命令\tikz\node...;
,可以自动处理不同的数学模式以及 TikZ 和 babel 包之间的冲突,仅举两个例子。
此外,尽管箭头是在 tikzpicture 中排版的,并且已overlay
设置选项,但它们仍然会引入一个调整间距的 TeX 框。通过%
在合理的位置引入几个 s,可以将该框放置在不会影响间距的位置(而不会使源代码无法阅读)。
\documentclass{beamer}
%\url{https://tex.stackexchange.com/q/630413/86}
\usepackage{tipa}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\begin{frame}
\centering
Text [ t ] more text [ \textsubbridge{t} ]
\vspace{2em}
symbol 1 and symbol 2
\end{frame}
\begin{frame}
\centering
Text [ \tikzmarknode{t1}{t} ] more text [ \tikzmarknode{t2}{\textsubbridge{t}} ]
\vspace{2em}
\tikzmarknode{n1}{symbol 1} and \tikzmarknode{n2}{symbol 2}%
% <- here and on previous line to avoid the arrows adding space
\begin{tikzpicture}[remember picture, overlay]
\path[->,red,thick](n1) edge (t1);
\path[->,red,thick](n2) edge (t2);
\end{tikzpicture}
\end{frame}
\end{document}