如何全局设置 Tikz 在绘制图形模型图时使用的默认箭头大小?
简化示例:
\documentclass[13pt]{beamer}
\usetheme{Singapore}
\usepackage{tikz}
\usetikzlibrary{fit,positioning,shapes,arrows,positioning,matrix,shapes.geometric,bayesnet}
\begin{document}
\begin{frame}{test}
\begin{tikzpicture}[]
\node[obs,circle] (a) {a};
\node[obs,circle,right=of a] (b) {b};%
\node[obs,circle,right=of b] (c) {c};%
\edge {a} {b};
\edge[style={-latex}] {b} {c};
\end{tikzpicture}
\end{frame}
\end{document}
- 代码不能针对
[style={-latex}]
每个边缘进行调整 - 调整应该是标题中的一个命令,它会影响所有
tikzpicture
s中所有箭头的默认样式 - 我想将尺寸调整到默认尺寸
->
和较小尺寸之间-latex
(如上图所示)。
相关问题
这个问题非常相似(相同?),但我无法从答案中找到解决方案。答案讨论了如何覆盖单箭头的样式,而不是如何按某个固定的全局量缩放所有默认箭头。
这个答案是方式对于我的需求来说太花哨了,而且我很难从这么多的代码中分析出更简单的答案是什么。
这个问题可能包含答案的提示,但它适用于 tikz-cd,并设置“latex”箭头的大小,这似乎不是 Beamer 中的默认大小。Tex/Latex/Tikz/etc 语法非常晦涩难懂,我无法猜测对此进行哪些更改可以让我全局设置默认箭头大小。
这个改变了一些其他箭头的属性,但是同样——语言是这样的,人们无法猜测一个简化的命令来影响箭头的大小。
这个可能包含答案,但也包含大量额外信息,这使我很难分析出这个特定问题的简单解决方案。
从这个问题开始,这个答案看起来最简单。我可以确认添加
\usetikzlibrary{arrows.meta}
\tikzset{>={Latex[scale=1.2]}
似乎改变了默认箭头样式Latex
并配置了其大小。
这就引出了一个问题:在应用此功能之前,Beamer 中的默认样式是什么?默认情况下,使用->
和<->
绘制的箭头比 大-latex
,因此它一定是其他样式(至少在 Beamer 中)。它是什么?配置它的最简单方法是什么?
有没有办法缩放这个默认箭头,或者全部箭头?这样使用 eg\edge[style={<->}]
会自动生成所需大小的箭头?看起来这arrows.meta
是一个非常奇特的箭头,我并不特别在意。有没有办法全局调整更简单/更旧的箭头包的大小?
答案1
latent
改变箭头长度:从重新定义样式bayesnet
。(obs
基于latent
)默认使用 node distance=1
。
或者使用
\tikzstyle{obs} = [circle,fill=white,draw=black,inner sep=1pt,
minimum size=20pt, font=\fontsize{10}{10}\selectfont, node distance=0.5,fill=gray!25 ]
[style={-latex}]
为了避免每次都添加可选参数\edge
,您可以定义一个新命令。
\newcommand{\edgex}[3][style={-latex}]{% edge with a new style <<<
% Connect all nodes #2 to all nodes #3.
\foreach \x in {#2} { %
\foreach \y in {#3} { %
\draw[#1] (\x) -- (\y) ;%
} ;
} ;
}
把所有内容放在一起:
\documentclass[13pt]{beamer}
\usetheme{Singapore}
\usepackage{tikz}
\usetikzlibrary{fit,positioning,shapes,positioning,matrix,shapes.geometric,bayesnet}
\usetikzlibrary{arrows.meta}
\newcommand{\edgex}[3][style={-latex}]{% edge with a new style <<<
% Connect all nodes #2 to all nodes #3.
\foreach \x in {#2} { %
\foreach \y in {#3} { %
\draw[#1] (\x) -- (\y) ;%
} ;
} ;
}
\begin{document}
\begin{frame}{test}
\begin{tikzpicture}[]
\node[obs,circle] (a) {a};
\node[obs,circle,right=of a] (b) {b};%
\node[obs,circle,right=of b] (c) {c};%
\edge {a} {b};
\edge[style={-latex}] {b} {c};
\end{tikzpicture}
\bigskip
% change distance between nodes
\tikzstyle{obs} = [circle,fill=white,draw=black,inner sep=1pt,minimum size=20pt, font=\fontsize{10}{10}\selectfont, node distance=0.5,fill=gray!25 ]
\begin{tikzpicture}
\node[obs,circle] (a) {a};
\node[obs,circle,right=of a] (b) {b};%
\node[obs,circle,right=of b] (c) {c};%
\edge {a} {b};
\edgex {b} {c};
\end{tikzpicture}
\end{frame}
\end{document}
答案2
\tikzset{>={triangle 45}}
这是tikz 库添加的(全局)设置bayesnet
,导致箭头->
和之间的大小差异-latex
。与类无关beamer
。
根据 pgfmanual,第 16.4.4 节定义简写,密钥处理程序<key>/.tip
,
默认情况下,
>
是 的简写,当未加载库时, 是 的简写(来自旧库的箭头)。当To
加载To
时to
,被重新定义为与 相同。arrows.meta
arrows.meta
To
Computer Modern Rightarrow
因此您可以使用\tikzset{<->/.tip=To}
恢复为默认箭头->
。
triangle 45
箭头尖和之间的大小差异latex
是内置的,无法通过箭头选项(如)进行配置scale
。这些箭头选项仅在库中定义的“完整”箭头尖支持arrows.meta
,其名称以大写首字母表示。例如,scale=1.2
适用于-{Latex[scale=1.2]}
,但会被忽略-{latex[scale=1.2]}
。
默认箭头选项可以通过以下方式设置
\tikzset{arrows={[<arrow options>]}}
参见 pgfmanual 第 16.4.5 节“箭头键的作用域”。但您必须加载arrows.meta
并确保所有箭头都是“完整的”,也就是说了解箭头选项。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta}
\begin{document}
\begin{tikzpicture}
\node (a) {a};
\node[right=of a] (b) {b};
\node[right=of b] (c) {c};
\path (a) edge[->] (b)
(b) edge[-Latex] (c);
\end{tikzpicture}
\tikzset{arrows={[scale=3]}}
\begin{tikzpicture}
\node (a) {a};
\node[right=of a] (b) {b};
\node[right=of b] (c) {c};
\path (a) edge[->] (b)
(b) edge[-Latex] (c);
\end{tikzpicture}
\end{document}
答案3
作为临时答案,这几乎是同样的问题。。大多数答案对于这个应用程序来说都是多余的,但是这个似乎导致缩放默认值->
和<->
边缘:
\usetikzlibrary{arrows.meta}
\tikzset{>={Latex[scale=1.2]}
不过,这确实留下了一些问题:有没有办法不使用 来实现这一点?如果 被删除,、 和arrows.meta
看起来都会以不同的大小渲染。这告诉我默认箭头(在 Beamer 中?)不是-latex
-Latex
->
\tikzset{>={Latex[scale=1.2]
确切地 -latex
或?默认箭头是或-Latex
之一,但可能缩放?如果是,那么在哪里设置?-latex
-Latex
所以我认为这些问题仍然悬而未决:
- Tikz 中的默认箭头(头部)是如何配置的?
- 用户是否可以在不使用的情况下对其进行全局调整
arrows.meta
? - 是否有通用的“缩放所有箭头”命令?
- Tikz 的行为与 Beamer 内部的行为略有不同吗?
我会接受任何澄清这些问题的答案(: