如何全局控制 Tikz 箭头大小(在 Beamer 中,如果这很重要的话)?

如何全局控制 Tikz 箭头大小(在 Beamer 中,如果这很重要的话)?

如何全局设置 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}]每个边缘进行调整
  • 调整应该是标题中的一个命令,它会影响所有tikzpictures中所有箭头的默认样式
  • 我想将尺寸调整到默认尺寸->和较小尺寸之间-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) ;%
        } ;
    } ;
}
    

把所有内容放在一起:

A

\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加载Toto,被重新定义为与 相同。arrows.metaarrows.metaToComputer 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 内部的行为略有不同吗?

我会接受任何澄清这些问题的答案(:

相关内容