Fontspec 创建左边距

Fontspec 创建左边距

我正在使用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以及您需要的内容,或者使用“补丁”方法来做同样的事情。

相关内容