我有一张这样的图表,解释一个公式:
\documentclass{article}
\usepackage{stackrel}
\begin{document}
$\stackrel[e+f+g+h^i]{a^b}{c d}$
\end{document}
为了举个例子,我删除了数字。
- 我怎样才能放大此图,以便每个部分看起来正好大 300%?
- 如果我使用 OpenType 字体,这种缩放会产生错误吗?
- 如何在公式中添加标签来描述每个部分的含义?
答案1
scalebox
应该可以帮你解决问题。你需要这个graphicx
包。例如:
\documentclass{article}
\usepackage{graphicx}
\usepackage{stackrel}
\begin{document}
\scalebox{3}{
$\stackrel[e+f+g+h^i]{a^b}{c d}$
}
\end{document}
对于标签,你可以使用类似下面的内容
\begin{equation}
H_{\mathrm{atom-light}}=
\underbrace{\frac{\hbar\omega_{\mathrm{a}}}{2}\sigma_3 \rule[-12pt]{0pt}{5pt}}_{\mbox{atom}}
+\underbrace{\hbar\omega\left(a^\dagger a+\frac{1}{2}\right) \rule[-12pt]{0pt}{5pt}}_{\mbox{field}}
-\underbrace{i\hbar g\left(a-a^\dagger\right)\left(\sigma^++\sigma^-\right) \rule[-12pt]{0pt}{5pt}}_{\mbox{interaction}}\,,
\end{equation}
突出underbraces
显示一个部分,这些rule
命令允许您通过向下推下括号来排列它们。标签放在mbox
s 中,
结果是这样的
正如 Werner 所指出的,用包中的\mbox
文本替换会更好一些,因为它可以正确调整文本大小。\text
amsmath
您可能还想考虑使用amsmath
包 and将方程式拆分为多行align
。这将为您提供更多空间。
\begin{align}
H_{\mathrm{atom-light}}=\ &\frac{\hbar\omega_{\mathrm{a}}}{2}\sigma_3 &&\mbox{atom}\\
&+\hbar\omega\left(a^\dagger a+\frac{1}{2}\right) &&\mbox{field}\\
&-i\hbar g\left(a-a^\dagger\right)\left(\sigma^++\sigma^-\right)\,. &&\mbox{interaction}
\end{align}
最后,受到 Werner 的启发,我将其与 TikZ 结合在一起:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{equation}
H_{\mathrm{atom-light}} =
\tikz[baseline]{
\node[draw=red,rounded corners,anchor=base] (m1)
{$\displaystyle\frac{\hbar\omega_{\mathrm{a}}}{2}\sigma_3$};
\node[above of=m1] (l1) {atom};
\draw[-,red] (l1) -- (m1);
}
+
\tikz[baseline]{
\node[draw=red,rounded corners,anchor=base] (m2)
{$\displaystyle\hbar\omega\left(a^\dagger a+\frac{1}{2}\right)$};
\node[above of=m2] (l2) {field};
\draw[-,red] (l2) -- (m2);
}
-
\tikz[baseline]{
\node[draw=red,rounded corners,anchor=base] (m3)
{$\displaystyle i\hbar g\left(a-a^\dagger\right)\left(\sigma^++\sigma^-\right)$};
\node[above of=m2] (l3) {interaction};
\draw[-,red] (l3) -- (m3);
}
\end{equation}
\end{document}
它基于一个方程,这个方程又基于一个方程...我第一次借用了这里。不过,对于你的情况,最好在 TikZ 图片中从头开始构建它。请记住,你仍然可以将其放入以下scalebox
位置:
\begin{tikzpicture}[node distance=20pt]
%
\tikzstyle{boxes}=[draw=red, rounded corners]
%
\node[boxes] (middle) {\Large$c d$};
\node[boxes,above of=middle] (top) {$\displaystyle a^b$};
\node[boxes,below of=middle] (bottom) {$\displaystyle e+f+g+h^i$};
%
\node[right of=top, node distance = 35pt] (toplabel) {the top};
\draw[red] (toplabel) -- (top);
\node[left of=middle, node distance = 45pt] (midlabel) {the middle};
\draw[red] (midlabel) -- (middle);
\node[below of=bottom, node distance = 25pt] (botlabel) {the bottom};
\draw[red] (botlabel) -- (bottom);
%
\end{tikzpicture}
答案2
LaTeX 中的缩放比例可以通过\scalebox{<factor>}{<stuff>}
以下方式轻松实现:graphicx
包裹. 不管是什么,它都能工作<stuff>
:
\documentclass{article}
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\usepackage{stackrel}% http://ctan.org/pkg/stackrel
\begin{document}
$\stackrel[e+f+g+h^i]{a^b}{c d}$ \quad \scalebox{3}{$\stackrel[e+f+g+h^i]{a^b}{c d}$}
\end{document}
要向构造的组件添加标签,您可以使用pst-node
来自pstricks
捆。这是一个小的模型,虽然我将构造放在了里面array
,但为了更清晰地呈现:
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\usepackage{pst-node}% http://ctan.org/pkg/pst-node
\newcommand{\node}[2]{\rnode{#1}{#2}}
\begin{document}
\psset{nodesep=1pt}
\[
\scalebox{3}{$\begin{array}{c}
\node{a}{a}^{\node{b}{\mbox{\scriptsize$b$}}} \\
\node{c}{c} \node{d}{d} \\
\node{e}{e}+\node{f}{f}+\node{g}{g}+\node{h}{h}^{\node{i}{\mbox{\scriptsize$i$}}}
\end{array}$}
\uput{20pt}[135]{0}(a){\rnode{a-desc}{\text{This is $a$}}} \ncline{->}{a-desc}{a}
\uput{3cm}[40]{0}(b){\rnode{b-desc}{\text{This is $b$}}} \ncline{->}{b-desc}{b}
\uput{140pt}[l]{0}(c){\rnode{c-desc}{\text{This is $c$}}} \ncline{->}{c-desc}{c}
\uput{5em}[r]{0}(d){\rnode{d-desc}{\text{This is $d$}}} \ncline{->}{d-desc}{d}
\uput{20pt}[190]{0}(e){\rnode{e-desc}{\text{This is $e$}}} \ncline{->}{e-desc}{e}
\uput{20pt}[235]{0}(f){\rnode{f-desc}{\text{This is $f$}}} \ncline{->}{f-desc}{f}
\uput{20pt}[300]{0}(g){\rnode{g-desc}{\text{This is $g$}}} \ncline{->}{g-desc}{g}
\uput{20pt}[320]{0}(h){\rnode{h-desc}{\text{This is $h$}}} \ncline{->}{h-desc}{h}
\uput{20pt}[345]{0}(i){\rnode{i-desc}{\text{This is $i$}}} \ncline{->}{i-desc}{i}
\]
\end{document}
宏的\node{<label>}{<stuff>}
定义是为了易于使用。\rnode
所用的 s中包含的内容\node
可以是任何内容,即使\parbox
是长句子/段落。此外,由于此方法使用了 的丰富图形组件库,因此也可以pstricks
格式化(例如) 。\ncline
“元素描述符”(?-desc)的放置是使用
\uput{<labelsep>}[<refangle>]{<rotation>}(x,y){<stuff>}
这将 放置<stuff>
,按度数旋转,与相距<rotation>
一定距离<labelsep>
和一定角度(因为我们使用的是,可以用一个节点表示)。也可以是符号角度参考,如eft、ight、p、own 或这些的组合(、、...)。我对<refangle>
x,y
pst-node
x,y
<refangle>
l
r
u
d
ur
dl
tikz/pgf
是有限的,但使用该设计媒介也是可能的;期待使用此工具得到一些答案。
由于这使用了,因此您需要使用或-> ->序列pstricks
进行编译。xelatex
latex
dvips
ps2pdf