如何计算百分比并在进度条中使用结果?

如何计算百分比并在进度条中使用结果?

使用进度条包,我想根据计数器在页面上显示条形图。

进度条的工作原理如下:

\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的包。包提供了但不幸的是这似乎不是合法的语法。\realcalc\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}

进度条.sty exx

答案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}

输出

相关内容