我正在尝试制作一个在视觉上模仿的表格华尔街日报市场页面。具体来说,我希望有一种简单的方法来实现 Range 列的视觉效果:
我觉得有既定的方法可以做到这一点,但我不知道如何描述我正在寻找的东西。我现在能想到的一个选择是全部用 TikZ 完成,但如果可能的话,我宁愿避免这种复杂性。
是否有一种简单的方法可以根据输入值在范围框中放置项目符号?
答案1
像这样吗?
\documentclass{article}
\usepackage{booktabs}
\usepackage{tikz}
\newcommand\Range[1]{%
\begin{tikzpicture}[scale=0.2]
\fill[gray!40](0,0) rectangle (8,1);
\foreach \x in {2,4,6}\draw[white,very thick](\x,0)--+(0,1);
\fill[black](0.4+#1/100*7.2,0.5) circle (0.4);
\end{tikzpicture}
}
\begin{document}
\begin{tabular}{l}
\toprule
RANGE\\\midrule
\Range{50}\\
\Range{100}\\
\Range{0}\\
\Range{12}\\
\Range{62}\\\bottomrule
\end{tabular}
\end{document}
答案2
还有另一种方法。
\documentclass{elsarticle}
\usepackage{xcolor,stackengine}
\def\greybox{\textcolor{gray!50}{\rule{8pt}{1.2ex}}}
\def\backgrid{\greybox\kern1pt\greybox\kern1pt\greybox\kern1pt\greybox}
\setbox0=\hbox{\backgrid}
\edef\backgridwd{\the\wd0}
\newcommand\Range[1]{\stackengine{0pt}{\backgrid}{%
\kern#1\dimexpr\backgridwd\makebox[0pt]{$\mkern.5mu\bullet$}}{O}{l}{F}{F}{L}}
\begin{document}
\begin{tabular}{c}
\hline
Range\\
\hline
\Range{.50}\\
\Range{1.00}\\
\Range{0}\\
\Range{.12}\\
\Range{.62}
\\
\hline
\end{tabular}
\end{document}
答案3
我最终使用了这个sparklines
包:
\documentclass{article}
\usepackage{sparklines,booktabs}
\begin{document}
\definecolor{sparkspikecolor}{gray}{1}
\setlength{\sparkspikewidth}{1pt}
\setlength{\sparkdotwidth}{2pt}
\newcommand{\rangebox}[1]{
\begin{sparkline}{10}
\sparkrectangle 0 1
\sparkspike .25 1
\sparkspike .5 1
\sparkspike .75 1
\sparkdot #1 0.5 black
\end{sparkline}
}
\begin{tabular}{c}
\toprule
Range
\\\midrule
\rangebox{.2}\\
\rangebox{1}\\
\rangebox{0}\\
\rangebox{.8}\\
\rangebox{.95}\\\bottomrule
\end{tabular}
\end{document}