![如何计算百分比并在进度条中使用结果?](https://linux22.com/image/306850/%E5%A6%82%E4%BD%95%E8%AE%A1%E7%AE%97%E7%99%BE%E5%88%86%E6%AF%94%E5%B9%B6%E5%9C%A8%E8%BF%9B%E5%BA%A6%E6%9D%A1%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%BB%93%E6%9E%9C%EF%BC%9F.png)
使用进度条包,我想根据计数器在页面上显示条形图。
进度条的工作原理如下:
\progressbar{0.7}
无论如何我都会使用 calc 包,所以我认为计算每个页面的条形图的比例应该很容易,如下所示:
\newcounter{y}
\setcounter{y}{5 / 1} % check that calc is working
\newcounter{total}
\setcounter{total}{30}
但是,下面的方法似乎都不起作用:
\progressbar{\value{y}/\value{total}}\\
\progressbar{\value{y} / \value{total}}\\
\progressbar{\they{}/\thetotal{}}\\
我收到错误:非法计量单位(插入 pt)。
我究竟做错了什么?
答案1
包裹进度条使用仅接受十进制数而非比率calc
的包。包提供了但不幸的是这似乎不是合法的语法。\real
calc
\ratio
\real{\ratio{\lenA}{\lenB}}
因此,绝望的是,您可以使用:
\makeatletter
\expandafter\progressbar\expandafter {\strip@pt \dimexpr \value{y}pt/\value{total}\relax}
\makeatother
当然,这应该被包装在一个宏中。
答案2
计数器(以及用于操作它们的数学)只使用整数,因此你永远不会得到\progressbar{.7}
。
progressbar.sty
使用 TikZ,因此您可以执行以下操作:
\documentclass{article}
\usepackage{progressbar}
\def\total{30}
\newlength{\basicwidth}
\setlength{\basicwidth}{5in}
\newcommand{\pbar}[1]{%
\pgfmathsetmacro{\barpc}{#1/\total}%
}
\begin{document}
\noindent\pbar{15}%
\progressbar{\barpc}\\
\pbar{20}%
\progressbar{\barpc}\\
\pbar{10}%
\progressbar{\barpc}\\
\pbar{5}%
\progressbar{\barpc}\\
\end{document}
答案3
根据第一个答案,我的解决方案如下:
\documentclass{article}
\usepackage{pgfmath}
\usepackage{progressbar}
\usepackage{totcount}
\newcommand{\tutprogress}{%
\stepcounter{tutpageCounter}
\pgfmathsetmacro{\ratio}{\value{tutpageCounter}/\totvalue{tutpageCounter}}
\progressbar{\ratio}
}
\begin{document}
\progressbarchange {ticksheight=1,borderwidth=0.8pt,tickswidth=1.0pt,filledcolor=gray!50,emptycolor=gray!10}
\progressbarchange {subdivisions=\totvalue{tutpageCounter}}
\newtotcounter{tutpageCounter}
\tutprogress{}
\tutprogress{}
\tutprogress{}
\tutprogress{}
\tutprogress{}
\tutprogress{}
\tutprogress{}
\tutprogress{}
\end{document}
答案4
出于评级目的,我的回答基于@sgmoye'沙@Philippp的答案是,
\documentclass{article}
\usepackage{pgfmath}
\usepackage{progressbar}
\def\totalvalp{5}
\newcommand{\pbar}[1]{%
\pgfmathsetmacro{\ratio}{#1/\totalvalp}
\progressbar{\ratio}
}
\progressbarchange {ticksheight=1,borderwidth=0.8pt,tickswidth=1.0pt,filledcolor=gray!50,emptycolor=gray!10}
\progressbarchange {subdivisions=5}
\begin{document}
\noindent\pbar{1} % for rating 1/5
\noindent\pbar{2} % for rating 2/5
\noindent\pbar{3} % for rating 3/5
\noindent\pbar{4} % for rating 4/5
\noindent\pbar{5} % for rating 5/5
\end{document}