需要结合两个三个值进行表格中的计算,我已给出代码
\documentclass[11pt,a4paper]{article}
\usepackage{array}
\newcolumntype{L}{>{\centering\arraybackslash}m{3cm}}
\usepackage{amsmath}
\usepackage{graphicx,float}
\usepackage{xcolor}
\usepackage{pgfmath}
\usepackage{calculator}
\usepackage{calculus}
\begin{document}
\flushleft
{\color{blue}
\LARGE{Powerloss Table}
}
\begin{table}[!hbt]
\begin{tabular}{|l|l|l|}\hline
\pgfmathsetmacro{\tmp}{16383}
% \pgfmathsetmacro{\tmp}{16384} % Error
Fault type & No of Modules Affected & Approx.power loss(W) \\\hline
Table & 50 &\pgfmathparse{int(round(50*250))}\pgfmathresult \\\hline
Module & 20 &\pgfmathparse{int(round(20*250))}\pgfmathresult \\\hline
String & 57&\pgfmathparse{int(round(57*84))}\pgfmathresult \\\hline
Total approx. power loss (W) &\pgfmathparse{int(round(50*250)+(20*250)+(57*84))}\pgfmathresult \\\hline
Total approx. power loss (KW) &\pgfmathparse{int(round((50*250)+(20*250)+(57*84)/1000))}\pgfmathresult \\\hline
Total approx. power loss (MW) &\pgfmathparse{int(round((50*250)+(20*250)+(57*84)/1000000))}\pgfmathresult \\\hline
\end{tabular}
\end{table}
\end{document}
....
获取错误为
尺寸太大。\pgfmath@x
l.23 ...解析{int(round(50*250)+(20*250)+(57*84))} \pgfmathresult \\hline ? ....
答案1
解决方案可以在回答薛定谔的猫。我的回答提供了一些关于为什么会出现错误的解释Dimension too large
。
- TeX 没有内置浮点数表示,所有维度都内部存储在一个相当小的单位 中
sp
,其中1pt = 65536sp
。除了pgf
库fpu
和xfp
包之外,LaTeX3 内核还附带一个l3fp
模块。(自 LaTeX2e 2020-02-02 起,LaTeX3 内核已打包为 LaTeX2e 格式。) - TeX 格式(如 plainTeX 和 LaTeX2e)提供了一个维度
\maxdimen
,初始化为16383.99999pt
,用于存储最大合法维度。因此 TeX 中的合法维度范围是[-\maxdimen, \maxdimen]
。(请注意,当您使用\the\maxdimen
输出值时,可能会16383.99998pt
因四舍五入而得到 。) \pgfmathparse
用作pt
默认单位。因此\pgfmathparse{1}
和\pgfmathparse{1pt}
相同。这解释了为什么\pgfmathsetmacro{\tmp}{16384}
和\pgfmathparseFPU{int(round(50*250)+(20*250)+(57*84))}
(50 * 250 * 2 = 25,000 > 16,384)都会引起错误。
答案2
TeX 有一个最大维度,这是一个众所周知的问题。有多种方法可以解决这个问题。在这里,我加载库fpu
并在本地打开它。有多种替代方案,当然包括 nicexfp
包。
\documentclass[11pt,a4paper]{article}
\usepackage{geometry}
\usepackage{array}
\newcolumntype{L}{>{\centering\arraybackslash}m{3cm}}
\usepackage{amsmath}
\usepackage{pgf,pgfmath}
\usepgflibrary{fpu}
\newcommand\pgfmathparseFPU[1]{\begingroup%
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}%
\pgfmathparse{#1}%
\pgfmathsmuggle\pgfmathresult\endgroup}%
\begin{document}
\flushleft
{\color{blue}
\LARGE{Powerloss Table}
}
\begin{table}[!hbt]
\begin{tabular}{|l|l|l|}\hline
\pgfmathsetmacro{\tmp}{16383}
% \pgfmathsetmacro{\tmp}{16384} % Error
Fault type & No of Modules Affected & Approx.power loss(W) \\\hline
Table & 50 &\pgfmathparseFPU{int(round(50*250))}\pgfmathprintnumber\pgfmathresult \\\hline
Module & 20 &\pgfmathparseFPU{int(round(20*250))}\pgfmathprintnumber\pgfmathresult \\\hline
String & 57&\pgfmathparseFPU{int(round(57*84))}\pgfmathprintnumber\pgfmathresult \\\hline
Total approx. power loss (W) & & \pgfmathparseFPU{int(round(50*250)+(20*250)+(57*84))}\pgfmathprintnumber\pgfmathresult \\\hline
Total approx. power loss (KW) && \pgfmathparseFPU{int(round((50*250)+(20*250)+(57*84)/1000))}\pgfmathprintnumber\pgfmathresult \\\hline
Total approx. power loss (MW) &&\pgfmathparseFPU{int(round((50*250)+(20*250)+(57*84)/1000000))}\pgfmathprintnumber\pgfmathresult \\\hline
\end{tabular}
\end{table}
\end{document}
请注意,我添加了空列和geometry
包,因为表格有点太宽了。不过,这都是题外话。
附录:这是具有不同包围的版本,我从您的评论中获得了数字。
\documentclass[11pt,a4paper]{article}
\usepackage{geometry}
\usepackage{array}
\newcolumntype{L}{>{\centering\arraybackslash}m{3cm}}
\usepackage{amsmath}
\usepackage{pgf,pgfmath}
\usepgflibrary{fpu}
\newcommand\pgfmathparseFPU[1]{\begingroup%
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}%
\pgfmathparse{#1}%
\pgfmathsmuggle\pgfmathresult\endgroup}%
\begin{document}
\flushleft
{\color{blue}
\LARGE{Powerloss Table}
}
\begin{table}[!hbt]
\begin{tabular}{|l|l|l|}\hline
\pgfmathsetmacro{\tmp}{16383}
% \pgfmathsetmacro{\tmp}{16384} % Error
Fault type & No of Modules Affected & Approx.power loss(W) \\\hline
Table & 50 &\pgfmathparseFPU{int(round(50*250))}\pgfmathprintnumber\pgfmathresult \\\hline
Module & 20 &\pgfmathparseFPU{int(round(20*250))}\pgfmathprintnumber\pgfmathresult \\\hline
String & 57&\pgfmathparseFPU{int(round(57*84))}\pgfmathprintnumber\pgfmathresult \\\hline
Total approx. power loss (W) & & \pgfmathparseFPU{int(round(50*250)+(20*250)+(57*84))}\pgfmathprintnumber\pgfmathresult \\\hline
Total approx. power loss (KW) && \pgfmathparseFPU{((50*250)+(20*250)+(57*84))/1000}\pgfmathprintnumber\pgfmathresult \\\hline
Total approx. power loss (MW) &&\pgfmathparseFPU{(50*250)+(20*250)+(57*84))/1000000}\pgfmathresult \\\hline
\end{tabular}
\end{table}
\end{document}
请注意
\pgfmathparseFPU{(50*250)+(20*250)+(57*84))/1000000}
除以整数和
\pgfmathparseFPU{int(round((50*250)+(20*250)+(57*84)/1000000))}
仅除最后一项(并截断结果)。