我尝试使用以下 .tex 文件创建一个 156 pt x 85 pt 大小的 PDF,其中文本大小为 9 pt 和 11 pt:
%!TEX TS-program = xelatex
\documentclass[border=0pt]{standalone}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[no-math]{fontspec}
\usepackage{tikz}
\newcommand{\FigureWidthPt}{156}
\newcommand{\FigureHeightPt}{85}
\newcommand{\fontSizeNine}{9}
\newcommand{\fontSizeEleven}{11}
\begin{document}
\begin{tikzpicture}[]
\draw[red, line width=0.0pt, fill=none, opacity=1.0]
(-\FigureWidthPt/2 pt, -\FigureHeightPt/2 pt)
rectangle
+(\FigureWidthPt pt, \FigureHeightPt pt);
\draw[inner sep=0, outer sep=0, anchor=north west]
(-\FigureWidthPt/2 pt, \FigureHeightPt/2 pt) node[color=black]
{\fontsize{\fontSizeNine pt}{\fontSizeNine pt + 2 pt}\selectfont
test nine
};
\draw[inner sep=0, outer sep=0, anchor=north west]
(-\FigureWidthPt/2 pt, \FigureHeightPt/2 pt - 20 pt) node[color=black]
{\fontsize{\fontSizeEleven pt}{\fontSizeEleven pt + 2 pt}\selectfont
test 11
};
\end{tikzpicture}
\end{document}
但是,当使用 Adobe Acrobat 或 Illustrator 打开 PDF 时,画板大小为 155.62 pt x 84.88 pt(带有“获取信息”大小时为 155 pt x 84 pt),字体分别读取为 8.97 pt 和 10.96 pt。
是否可以通过更改 tikz 中的默认单位或通过其他方式获得这些点完美?
我尝试打开 tikzpicture,\begin{tikzpicture}[x=1pt, y=1pt]
没有任何变化。
答案1
这里有 2 个因素。
如果要匹配 Adobe 的 pt,则需要在 TeX 中使用
bp
而不是pt
unit。请参阅为什么 TeX 点与桌面出版点不同?。如果您使用,
\draw
那么 TikZ 会考虑将“点”放在坐标处,即使实际上没有绘制任何线。(大概。)例如在下面的代码中
\documentclass[border=0pt]{standalone} \usepackage{tikz} \newcommand{\FigureWidthPt}{156} \newcommand{\FigureHeightPt}{85} \begin{document} \begin{tikzpicture} \draw[ red, line width=0.0pt, fill=none, opacity=1.0] (-\FigureWidthPt/2 pt, -\FigureHeightPt/2 pt) rectangle +(\FigureWidthPt pt, \FigureHeightPt pt); \draw (-\FigureWidthPt/2 pt, \FigureHeightPt/2 pt); % try commenting out this line or add `line width=0pt` \end{tikzpicture} \end{document}
注释掉标记的行会使框架稍微变小。
尽管如此,强制 TikZ 图像具有特定大小的简单方法是
use as bounding box
关键(来源https://tex.stackexchange.com/a/94723/250119 tikz 中的零宽度文本节点)\path[use as bounding box] (-\FigureWidthPt/2 bp, -\FigureHeightPt/2 bp) rectangle +(\FigureWidthPt bp, \FigureHeightPt bp);
答案2
为了完整起见,下面修改后的 .tex 文件具有正确的轮廓大小和字体大小。正如 user202729 和 Daniel N 指出的那样,使用 bp 而不是 pt 可以创建与 Adobe 和 Inkscape 兼容的点大小(“桌面发布点”)。
%!TEX TS-program = xelatex
\documentclass[border=0]{standalone}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[no-math]{fontspec}
\usepackage{tikz}
\newcommand{\FigureWidthPt}{156}
\newcommand{\FigureHeightPt}{85}
\newcommand{\fontSizeNine}{9}
\newcommand{\fontSizeEleven}{11}
\begin{document}
\begin{tikzpicture}[]
\path[use as bounding box]
(-\FigureWidthPt/2 bp, -\FigureHeightPt/2 bp)
rectangle +(\FigureWidthPt bp, \FigureHeightPt bp);
\draw[inner sep=0, outer sep=0, anchor=north west]
(-\FigureWidthPt/2 bp, \FigureHeightPt/2 bp) node[color=black]
{\fontsize{\fontSizeNine bp}{\fontSizeNine bp + 2 bp}\selectfont
test nine
};
\draw[inner sep=0, outer sep=0, anchor=north west]
(-\FigureWidthPt/2 bp, \FigureHeightPt/2 bp - 20 bp) node[color=black]
{\fontsize{\fontSizeEleven bp}{\fontSizeEleven bp + 2 bp}\selectfont
test 11
};
\end{tikzpicture}
\end{document}