嗨,我刚开始使用 latex,但到目前为止我很喜欢它。我正在使用 Rmarkdown 和 xtable 创建一个表格,表格末尾有一个图表。
两年前有人问过一个问题——是否可以在表格中创建条形图?- 关于如何在表格中创建条形图。效果非常好。
我的问题:我可以在图表后面加一个数字吗?
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{array}
\usepackage{xcolor}
\def\mybar#1{%%
#1s & {\color{red}\rule{#1cm}{8pt}}}
\pagestyle{empty}
\begin{document}
\begin{tabular}{>{$\rhd$ }lrl}
Loop at line 151 in divergence & \mybar{3.420}\\
Loop at line 1071 in radiation & \mybar{3.270}\\
scalar face value & \mybar{3.090}\\
Loop at line 102 in get & \mybar{1.700}\\
get sensible enthalpy & \mybar{1.250}\\
\end{tabular}
\end{document}
这里他添加了一个包含值的新列。由于对齐问题,Xtable 无法处理这个额外的列。没有这个额外的列可以完成此操作吗?
我目前的解决方案:
乳胶头:
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{array}
\usepackage{xcolor}
\definecolor{blueColor}{rgb}{0,.30667,.55111}
\def\mybar#1{%%
{\color{blueColor}\rule{#1mm}{9pt}}} %I only want the bar, not the extra column
xtable 解决方案:
align <- paste0(c("L{4cm}", rep("C{15mm}", 4), "L{3cm}"), collapse = "")
latexGraph <- function(x) gsub('GRAPH(.*)',paste('\\\\mybar{\\1}'),x)
print(xtable(x, align=align, auto = TRUE),
sanitize.text.function = latexGraph) #To add the graph to the table
我的函数现在的工作方式是:我有一列数字,例如 (1、2、3、4、5)。要将这些数字更改为图形,我将这些数字更改为:,,,,,GRAPH1
。然后Xtable 使用我的函数 (latexGraph) 来“清理”此列。该函数将更改为。GRAPH2
GRAPH3
GRAPH4
GRAPH5
GRAPH4
\mybar{\4}
答案1
按照您在评论中所说的,这更容易,您只需更改\mybar
命令中的顺序:
\def\mybar#1{%%
{\color{red}\rule{#1cm}{8pt}} #1s} % See the #1s repeating itself?
MWE 如下所示:
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{array}
\usepackage{xcolor}
\def\mybar#1{%%
{\color{red}\rule{#1cm}{8pt}} #1s}
\pagestyle{empty}
\begin{document}
\begin{tabular}{>{$\rhd$ }ll}
Loop at line 151 in divergence & \mybar{3.420}\\
Loop at line 1071 in radiation & \mybar{3.270}\\
scalar face value & \mybar{3.090}\\
Loop at line 102 in get & \mybar{1.700}\\
get sensible enthalpy & \mybar{1.250}\\
\end{tabular}
\end{document}
结果如下:
但如果你要排版很多数字,我建议你使用siunitx
包提供了大量用于排版数字和单位的工具,下面是一个 MWE siunitx
(该命令\sisetup
设置了所处理的所有数字和单位的格式siunitx
):
\documentclass{article}
\usepackage{amsmath,amssymb,siunitx}
\sisetup{output-decimal-marker={,}, round-mode=places, round-precision=2}
\usepackage{array}
\usepackage{xcolor}
\def\mybar#1{%%
{\color{red}\rule{#1cm}{8pt}} \SI{#1}{\second}}
\pagestyle{empty}
\begin{document}
\begin{tabular}{>{$\rhd$ }ll}
Loop at line 151 in divergence & \mybar{3.420}\\
Loop at line 1071 in radiation & \mybar{3.270}\\
scalar face value & \mybar{3.090}\\
Loop at line 102 in get & \mybar{1.700}\\
get sensible enthalpy & \mybar{1.250}\\
\end{tabular}
\end{document}
结果几乎相同,但现在数字遵循指定的格式\sisetup
,并且单位和数字之间有一个很细的空格。