KTikZ中文设置

KTikZ是一个编写TikZ脚本的辅助软件。主要功能有关键字提示、高亮、自动补全,作图结果实时预览等。初学TikZ的时候用一下,还是很方便的。

但是还有几个问题,都跟中文有关:
1. 不支持中文,输入、显示都没有问题,但是一旦保存退出再打开,就乱码了。不知道是什么编码,肯定用的不是utf8。如果图片中有中文,千万要小心。(更新:升级到svn版就没有这个问题了)
2. 默认用的是pdflatex进行编译,直接生成pdf后再预览,如果想用xelatex,可以在配置中直接设置。但是这样做并不能得到正确的结果,因为KTikZ默认的模板中,用到了preview这个包(这个包使得导出的图片没有多余空白),并且指定编译器是pdftex系列,所以会有问题。这个问题和下面的问题一起通过修改默认模板的方式解决。
3. 图片不支持中文标注。TikZ对中文的支持非常好,一般在文章中作图时,中文都没有问题,主要原因还是KTikZ用的模板没考虑中文。

KTikZ可以直接指定模板,默认的模板放在/usr/share/apps/ktikz/templates下(archlinux环境,其他发行版类似)。为了保险,复制一份到自己的home目录里再修改。
以template_example.pgs为例,改成下面这样,就支持中文标注和xelatex了,有变动的行加了注释。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\documentclass{article}
\usepackage[adobefonts]{ctex
} %支持中文就靠这一行了
%\usepackage{mathptmx} %这一行是指定公式所用的字体,我看着不习惯,就去掉了
\usepackage{tikz}
%\usepackage{color}
\usepackage[active,xetex,tightpage]{preview} %这一行有改动,将pdftex换成xetex
\PreviewEnvironment[]{tikzpicture}
\PreviewEnvironment[
]{pgfpicture}
\DeclareSymbolFont{symbolsb}{OMS}{cmsy}{m}{n}
\SetSymbolFont{symbolsb}{bold}{OMS}{cmsy}{b}{n}
\DeclareSymbolFontAlphabet{\mathcal}{symbolsb}
\begin{document}
<>
\end{document
}

顺便贴上今天下午作的图和源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
\usetikzlibrary{decorations.markings}
\begin{tikzpicture
}[x=4cm,y=4cm, decoration={
markings,%
mark=at position 0.5 with{\arrowreversed[black]{latex};}}] %stealth

\draw(0, 0) node[below left] {$O$};
\draw[-latex] (0,0) --node[below] {$\sqrt{-k/b}$} (1.125,0) node[right=3, below] {$x(t)$};
\draw[-latex] (0,0) --node[left] {$\sqrt{k/a}$} (0,1.125) node[left=-1] {$y(t)$};

\draw[postaction={decorate}, thick] (0, 0) -- (1, 1) node[above right] {$k=0$,平局};

\draw[postaction={decorate}, thick] (0, 0.3) parabola (0.4,0.5);
\draw[postaction={decorate}, thick] (0, 0.5) parabola (0.42,0.75);
\draw[postaction={decorate}, thick] (0, 0.7) parabola (0.41,0.95) node[above] {$k&gt;0$,乙方胜};
\draw[postaction={decorate}, thick, rotate=-90] (0, 0.25) parabola (-0.4,0.5);
\draw[postaction={decorate}, thick, rotate=-90] (0, 0.45) parabola (-0.42,0.75) node[above right] {$k \draw[postaction={decorate}, thick, rotate=-90] (0, 0.65) parabola (-0.41,0.95);
\end{tikzpicture
}


发表评论

电子邮件地址不会被公开。 必填项已用*标注

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。