独立 tikzpicture 中的点完美轮廓和字体大小

独立 tikzpicture 中的点完美轮廓和字体大小

我尝试使用以下 .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}

但是,当使用 Adob​​e 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 个因素。

  • 如果要匹配 Adob​​e 的 pt,则需要在 TeX 中使用bp而不是ptunit。请参阅为什么 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 可以创建与 Adob​​e 和 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}

相关内容