使 pgfplotstable 中的数字加粗而不改变宽度

使 pgfplotstable 中的数字加粗而不改变宽度

我希望在使用 pgfplotstable 显示的表格中将某些数字加粗。手动的这个答案

建议使用

every row 2 column 1/.style={ %Row number just for example
    postproc cell content/.style={
      @cell content/.add={$\bf}{$}
    }
  },

但是,当我这样做时,数字会变得不对齐,因为加粗的数字太宽了。

屏幕截图显示未对齐

在阅读了一些有关排版的知识后,我得出结论,我想要的是使用带有表格图形的字体来显示数字,并使用双面功能使粗体具有相同的宽度。

我在看这是针对普通表格的答案,它显示了我想要的内容。但是当我尝试时:

every row 4 column 1/.style={ %Row number just for example
    postproc cell content/.style={
      @cell content/.add={\fontseries{b}\selectfont}{}
    }
  },

没有任何变化。它甚至没有将其变为粗体。

最小可验证示例:

\documentclass{article}
\usepackage{pgfplotstable}

\begin{document}
\pgfplotstabletypeset[
    precision=5, fixed zerofill=true,
    every row 2 column 1/.style={
        postproc cell content/.append style={
            @cell content/.add={$\bf}{$}
        }
    }
]{
a b
5 1.23
6 1.6311
7 4.231
9 2.10144
}
\end{document}

答案1

您遇到的问题以及该\fontseries命令对您不起作用的原因在于 pgfplotstables 格式化了所有数字数学模式-- 就像它们位于$符号之间一样。 \fontseries不会影响数学模式中使用的字体。您可以改为更改数学模式中使用的字体(针对该单元格)。它基于回答有关制作 pgfplotstables 用途的类似问题\sffamily

可以声明普通字体的版本,该版本为粗体 ( b),而非粗体扩展 ( bx)

使用

\DeclareMathVersion{tabularbold}
\SetSymbolFont{operators}{tabularbold}{OT1}{cmr}{b}{n}

在序言中。

然后,您可以使用以下方式切换到其中的一个部分\mathversion{tabularbold},例如

every row 2 column 1/.style={
    postproc cell content/.append style={
        @cell content/.add={\mathversion{tabularbold}}{}
   }
}

屏幕截图显示对齐正确

完整示例:

\documentclass{article}
\usepackage{pgfplotstable}

\DeclareMathVersion{tabularbold}
\SetSymbolFont{operators}{tabularbold}{OT1}{cmr}{b}{n}
\begin{document}
\pgfplotstabletypeset[
precision=5, fixed zerofill=true,
every row 2 column 1/.style={
    postproc cell content/.append style={
        @cell content/.add={\mathversion{tabularbold}}{}
    }
}
]{
a b
5 1.23
6 1.6311
7 4.231
9 2.10144
}
\end{document}

相关内容