用TikZ在 Latex 中绘制多面体¶
有时在纸上画三维多面体是很有帮助的。TikZ是一个非常通用的绘制科学文献的工具,Sage可以轻松地处理三维多面体。最后,sagetex使Sage、TikZ和LaTeX之间的一切都能很好地协同工作。自从Sage的6.3版本以来,有一个多面体的(投影)函数可以输出多面体的TikZ图片。这个简短的教程展示了它是如何工作的。
指令¶
要使用TikZ和Sage在 Latex 中放置3d多面体的图像,只需按照说明操作:
安装 SageTex (可选但推荐!)
放
\usepackage{{tikz}}
在你文章的序言中打开Sage并通过命令将目录更改为文章的目录
cd /path/to/article
输入你的多面体,例如称为P的Sage
使用命令可视化多面体P
P.show(aspect_ratio=1)
这将打开一个名为Jmol的交互式查看器,您可以在其中旋转多面体。找到所需的视角后,右键单击图像并选择 慰问
单击对话框中的按钮 州
向上滚动到以开头的行 移动到
它读起来像
moveto 0.0 {{x y z angle}} scale
回到Sage和打字
Img = P.projection().tikz([x,y,z],angle)
Img 现在包含类型为的Sage对象
LatexExpr
包含你的多面体的原始图片
然后,您可以通过键入将其复制粘贴到文章中 Img
在Sage或保存到一个文件,通过
f = open('Img_poly.tex','w')
f.write(Img)
f.close()
然后在pwd(sage的当前工作目录,您的文章之一)中,您将有一个名为 Img_poly.tex
里面有你多面体的照片。
定制¶
可以使用命令中的以下选项自定义多面体 P.tikz()
scale
:正数缩放多面体,edge_color
:字符串(默认值:blue!95!black
)代表tikz识别的颜色,facet_color
:字符串(默认值:blue!95!black
)代表tikz识别的颜色,vertex_color
:字符串(默认值:green
)代表tikz识别的颜色,opacity
:实数(默认值:0.8
)介于0和1之间,表示前面板的不透明度,axis
:布尔值(默认值:False
)是否在原点绘制轴。
实例¶
假设你想画下面的极性对偶(很好!)由以下顶点列表给出的多面体:
[[1,0,1],[1,0,0],[1,1,0],[0,0,-1],[0,1,0],[-1,0,0],[0,1,1],[0,0,1],[0,-1,0]]
在Sage中,您可以键入:
P = Polyhedron(vertices=[[1,0,1],[1,0,0],[1,1,0],[0,0,-1],[0,1,0],[-1,0,0],[0,1,1],[0,0,1],[0,-1,0]]).polar()
然后,通过输入来可视化多面体 P.show(aspect_ratio=1)
当您找到一个好的角度时,请按照上述步骤获取值 [674,108,-731] 例如,角度=112。
Img = P.projection().tikz([674,108,-731],112)
也可以使用命令进行自定义
Img = P.projection().tikz([674,108,-731],112,scale=2, edge_color='orange',facet_color='red',vertex_color='blue',opacity=0.4)
此外,您可能需要在tikzpicture中更深入地编辑polytope的样式。例如,tikzpicture中的第6-9行显示:
back/.style={loosely dotted, thin},
edge/.style={color=orange, thick},
facet/.style={fill=red,fill opacity=0.400000},
vertex/.style={inner sep=1pt,circle,draw=blue!25!black,fill=blue!75!black,thick,anchor=base}]
也可以用以下4行替换(并添加 \usetikzlibrary{{shapes}}
在序言中)
back/.style={loosely dashed,line width=2pt},
edge/.style={color=yellow, line width=2pt},
facet/.style={fill=cyan,fill opacity=0.400000},
vertex/.style={inner sep=4pt,star,star points=7,draw=blue!75!white,fill=blue!85!white,thick,anchor=base}]
最后,你可能想调整你的图片我添加标签,元素在顶点,边,面等。
使用SageTex实现自动化¶
为了这个你需要
\usepackage{sagetex}
在你文章的序言中
使用sagetex有不同的方法,您可以创建自己的方法。这里有一些可能性。
您可以在文章中直接键入sagestr:
\sagestr{(polytopes.permutahedron(4)).projection().tikz([4,5,6],45,scale=0.75, facet_color='red',vertex_color='yellow',opacity=0.3)}
您可以创建以下tex命令
\newcommand{\polytopeimg}[4]{\sagestr{(#1).projection().tikz(#2,#3,#4)}}
\newcommand{\polytopeimgopt}[9]{\sagestr{(#1).projection().tikz(#2,#3,#4,#5,#6,#7,#8,#9)}}
在你的序言中,并在你的文章中与一个Sage合用:
\begin{sagesilent}
Polytope = polytopes.great_rhombicuboctahedron()
\end{sagesilent}
\polytopeimg{Polytope}{[276,-607,-746]}{102}{1}
\polytopeimgopt{Polytope}{view=[-907,379,183]}{angle=129}{scale=2}{edge_color='red'}{facet_color='yellow'}{vertex_color='blue'}{opacity=0.6}{axis=False}
然后,运行pdflatex,对文件执行Sage article_name.sagetex.sage
再次运行pdflatex。
有关SageTeX的更多信息,请参阅教程教程http://sage.org/sage.org/。