我正在使用standalone
文档类并尝试绘制 TikZ 图片。图片有边框,即页面的边框。我这样做像这样:
\documentclass{standalone}
\usepackage{tikz}
\def\W{220}
\def\H{250}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt]
\draw[ultra thick] (0,0) -- (\W,0) -- (\W,\H) -- (0,\H) -- (0,0);
\end{tikzpicture}
\end{document}
它看起来像这样(我添加了红色背景只是为了使差异可见,并且我已经使用 gimp 完成了它,这不是问题的一部分)
但如果我只是\usepackage{fontspec}
在序言中添加一些内容,那么就会出现一些左边距,看起来像这样
那么,它是从哪里来的?我该如何摆脱它?
答案1
我在 TexLive 2013 中看到了效果,但在 2014 和 miktex 中没有看到。所以你可能需要更新一些东西(fontspec?)。如果我\unskip
在后面添加,效果就会消失\begin{document}
。所以它看起来像某个地方的虚假空间。
答案2
Ulrike 已经证明这是个fontspec
问题。实际错误的代码是
\tl_put_right:Nn \document
{
\tl_set_eq:NN \cyrillicencoding \g_fontspec_encoding_tl
\tl_set_eq:NN \latinencoding \g_fontspec_encoding_tl
}
它用于在文档开始之前执行“非常晚”的操作。问题是,它会被添加到\ignorespaces
位于标准宏末尾的之后\document
。这会导致问题,因为 之后有一个空格(行尾)\begin{document}
。较新版本的fontspec
通过使用标准\AtBeginDocument
钩子避免了这种情况,因此问题就消失了。如果您真的需要在的末尾挂钩\document
,您必须始终添加\ignorespaces
以及您需要的内容,或者使用“补丁”方法来做同样的事情。