我在下面写了方程,但我无法控制用来显示迭代过程的箭头类型。我想至少让它变大一点,因为目前它太小了。这个方程适用于科学海报,它高度重视创造力,所以如果你除了尺寸之外还知道如何将普通箭头改为“酷”箭头,那也非常感谢。谢谢!
(我正在用 LuaLatex 编译它)
\documentclass[final]{beamer}
\usepackage{amsmath, amsthm, amssymb, amsfonts}
\usepackage{tikzsymbols}
\usepackage{tikz}
\usepackage{bigints}
\DeclareMathOperator*{\argmax}{arg\,max}
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\tikzset{square arrow/.style={to path={-- ++(0,-2.25) -| (\tikztotarget) \tikztonodes},below,pos=3.75}}
\begin{document}
\[ Q(\theta | \tikzmark{a}{\theta_{(i)}}) = \bigint\limits_{\{ {\small \Springtree, \Autumntree, \Summertree,...} \}} logL(\theta|\Wintertree) d\Wintertree \longrightarrow \tikzmark{b}{\theta_{(i+1)}} = \displaystyle\argmax_{\theta} Q(\theta | \theta_{(i)} ) \]
\tikz[overlay,remember picture]
{\draw[->,square arrow] (b.south) to (a.south);}
\end{document}
答案1
对数学设置进行一些小的更改(对箭头来说不是必需的,但数学运算符的排版正确并且积分极限被打破)我得到了以下结果:
这就是你要找的吗?
\documentclass[final]{beamer}
\usepackage{mathtools, amsthm, amssymb}
\usepackage{tikzsymbols}
\usepackage{tikz}
\usepackage{bigints}
\DeclareMathOperator*{\argmax}{arg\,max}
\newcommand{\tikzmark}[1]{%
\tikz[overlay,remember picture] \node (#1) {};
}
\tikzset{square arrow/.style={%
-{Stealth[length=3mm]},rounded corners,draw=red,%
to path={-- ++(0,-1.5) -| (\tikztotarget)}}
}
\begin{document}
\[
Q(\theta | \tikzmark{a}{\theta_{(i)}})
= \smashoperator[r]{\bigint_{\{\small
\Springtree, \Autumntree, \Summertree, \dots \}}
}
\log L(\theta|\Wintertree) \mathrm{d}\Wintertree \longrightarrow
\tikzmark{b}{\theta_{(i+1)}}
= \displaystyle\argmax_{\theta} Q\left(\theta | \theta_{(i)}\right)
\]
\tikz[overlay,remember picture]
{\draw[square arrow] (b.south) to (a.south);}
\end{document}
我使用 pdfLaTeX,为了显示结果,至少需要两次连续编译。
编辑:
另一种选择,灵感来自格诺特解决方案,但方法略有不同:
arrows.meta
箭头的头部在库的帮助下像以前一样定义- 箭头弯曲使用库
topaths
。弯曲由选项定义bend left=60
- 方程式的一部分,通过箭头连接,以红色突出显示
\tikzmarks
被移动到变量索引中,因此不需要调整它的开始、结束和长度。
具有显著变化的完整 MWE 是:
\documentclass[final]{beamer}
\usepackage{mathtools, amsthm, amssymb}% <-- amsmath replaced with mathtools
\usepackage{tikzsymbols}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,topaths}% <-- new
\usepackage{bigints}
\DeclareMathOperator*{\argmax}{arg\,max}
\newcommand{\tikzmark}[1]{%
\tikz[overlay,remember picture] \node (#1) {};
}
\tikzset{loop arrow/.style={% <-- new
-{Stealth[length=5mm]}, ultra thick, draw=red!40,
bend left=60}}
\begin{document}
\[
Q(\theta | \textcolor{red}{\theta_{(i\tikzmark{a})}})% <-- changed
= \smashoperator[r]{\bigint_{\{\small
\Springtree, \Autumntree, \Summertree, \dots \}}
}
\log L(\theta|\Wintertree) \mathrm{d}\Wintertree \longrightarrow
\textcolor{red}{\theta_{(i\tikzmark{b}+1)}}% <-- changed
= \displaystyle\argmax_{\theta} Q\left(\theta | \theta_{(i)}\right)
\]
\tikz[overlay,remember picture]
{\draw[loop arrow] (b.south) to (a.south);}% <-- changed
\end{document}
答案2
为了得到这样的东西:
我使用以下代码
\documentclass[final]{beamer}
\usepackage{amsmath, amsthm, amssymb, amsfonts}
\usepackage{tikzsymbols}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\tikzset{myarrow/.style={->,>=Stealth[open],shorten >=3pt,shorten <=3pt,thick}}
\usepackage{bigints}
\DeclareMathOperator*{\argmax}{arg\,max}
\newcommand{\tikzmark}[3][0ex]%
{\tikz[baseline=#1,remember picture]
\node[outer sep=0mm,inner sep=0mm,minimum width=0mm] (#2) {#3};%
}
\begin{document}
\[ Q(\theta | \tikzmark[-0.28ex]{a}{$\theta_{(i)}$})
= \bigint\limits_{\{ \mbox{\small \Springtree, \Autumntree, \Summertree,...} \}}
\hspace{-1.5em}
\log L(\theta|\Wintertree) d\Wintertree
\tikz[baseline=-0.8ex]\draw[myarrow] (0,0) -- (1,0);
\tikzmark[-0.28ex]{b}{$\theta_{(i+1)}$}
= \displaystyle\argmax_{\theta} Q(\theta | \theta_{(i)} )
\]
\tikz[overlay,remember picture]%
{\draw[myarrow] (b.south) to[out=-70,in=-110] (a.south);
}
\end{document}
我添加了下面的内容。
\usetikzlibrary{arrows.meta}
允许您绘制更漂亮的箭头;其选项记录在 tikz 手册中。我将其用于Stealth
箭头尖。
\tikzset{myarrow/.style={->,>=Stealth[open],shorten >=3pt,shorten <=3pt,thick}}
这将箭头所共有的样式元素收集在名称下myarrow
。->
表示它应该以尖端结束,>=Stealth[open]
定义尖端的形式,两个shorten
键表示箭头应该在距离目标 3pt 处开始并在目标前 3pt 处结束。
\newcommand{\tikzmark}[3][0ex]{...}
该命令现在有三个参数:第一个是可选的,允许我们上下移动节点的基线(定位需要试验)。第二个参数和以前一样是节点的名称,第三个是节点的内容。将某些内容放入节点中允许我们让箭头从项目下方居中开始。
\log
假设指log
的是对数,我将其改为\log
。
\mbox{\small \Springtree, \Autumntree, \Summertree,...}
\small
应该以文本模式出现(LaTex 之前对此有抱怨)。
\hspace{-1.5em}
删除积分和公式之间的一些空间。
\tikz[baseline=-0.8ex]\draw[myarrow] (0,0) -- (1,0);
使用 tikz 绘制内联箭头以使用相同的样式。
\draw[myarrow] (b.south) to[out=-70,in=-110] (a.south);
out
和参数in
分别给出箭头开始和结束的方向,以从 x 轴正方向逆时针测量的度数。