![如何在 `spreadtab` 中获取“千位”分隔符(包装 `longtable`)?](https://linux22.com/image/336187/%E5%A6%82%E4%BD%95%E5%9C%A8%20%60spreadtab%60%20%E4%B8%AD%E8%8E%B7%E5%8F%96%E2%80%9C%E5%8D%83%E4%BD%8D%E2%80%9D%E5%88%86%E9%9A%94%E7%AC%A6%EF%BC%88%E5%8C%85%E8%A3%85%20%60longtable%60%EF%BC%89%EF%BC%9F.png)
我正在尝试使用 Pandoc 从 YAML 文本输入半自动生成账单:
- 为了进行总和计算,我使用
spreadtab
包裹。 - 如果语句很长,为了获得自动分页符,
longtable
包裹在里面spreadtab
。
现在,大多数基本功能都可以按需要工作了,但我想通过插入千位分隔符来改善长数字的外观。但是,我现在对最后一个问题感到困惑:在长数字的显示中插入“千位分隔符”:
下面是 Pandoc 根据我自己的自定义 LaTeX 模板生成的最低限度可运行的 LaTeX 代码示例:
%\列表文件 \documentclass[12pt]{文章} \usepackage[]{几何} \geometry{a4paper, paperwidth=595pt, paperheight=842pt, 左=25.0mm, 右=18mm, 上=45.5mm, 下=32mm} \usepackage[boldmath, np, oldcolumntypes, sepfour, warning, autolanguage, addplus,]{numprint} \usepackage[表]{xcolor} \usepackage{多语} \setmainlanguage{德语} \usepackage[document]{ragged2e} \usepackage{字体规格} \usepackage{xunicode} %-------------------------------- % 我实际上使用的是 WeidemannStd-Medium %-------------------------------- %\setmainfont[SmallCapsFeatures={LetterSpace=5,Letters=SmallCaps}]{WeidemannStd-Medium} % \setsansfont{WeidemannStd-Medium} %-------------------------------- %-------------------------------- % 但是,对于 MWE,我将切换到 Vollkorn,因为并非每个人都拥有 Weidemann 字体…… %-------------------------------- \setmainfont[Numbers={Lining,Monospaced}]{Vollkorn-Regular} %-------------------------------- \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} %-------------------------------- % 表格定制 %-------------------------------- \usepackage{enumitem} % 请求 Listen \setlist{nolistsep} % 中间无空格 Listen-Items \setlist[itemize]{leftmargin=0.6cm} % 缩小链接 添加到 Listen \usepackage{spreadtab} \setlength{\tabcolsep}{6pt} % 中间空白 %-------------------------------- % 即将被决定! %-------------------------------- \usepackage{longtable} %\usepackage{supertabular} %\usepackage{tabularx} %\usepackage{booktabs} %\usepackage{ltablex} %\usepackage{禁忌} %-------------------------------- \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 %如果为 pdftex \TeXXeTstate=1 \newcommand{\RL}[1]{\beginR #1\endR} \newcommand{\LR}[1]{\beginL #1\endL} \newenvironment{RTL}{\beginR}{\endR} \newenvironment{LTR}{\beginL}{\endL} \fi \开始{文档} \制作字母 \newcommand\myFootnotesize{\@setfontsize\tinyv{9pt}{11.5}} \makeatother \newcounter{pos} \setcounter{位置}{0} \STautoround*{2} \STsetdecimalsep{,} \np四位数字分隔符 \npstylegerman \npthousandsep{\.} \rowcolors{1}{灰色!30}{灰色!20} %-------------------------------- % 这儿有人感兴趣! %-------------------------------- \开始{扩展标签} {{longtable}[ttt]{rp{120.0mm}r}} @ \textbf{Pos.} & @ \textbf{Beschreibung} & @ \textbf{价格(欧元)} \\ @ \refstepcounter{pos}\thepos & @ 第一次使用服务位置 & 14450 \\ @ \refstepcounter{pos}\thepos & @ 更多位置,带有单个列表 \新队 \开始{逐项列举} \我的脚注大小 \项目 下一个关于 erbrachten\ldots{} 的说明 \我的脚注大小 \项目 \ldots{}Leistung,例如。受謝者 \我的脚注大小 \项目 西赫特 \结束{项目化} & -734 \\ @ & @ \multicolumn{1}{r}{Summe,净值:} & :={sum(c1:[0,-1])} \\ @ & @ \multicolumn{1}{r}{MWSt. 19\%:} & 19/100*[0,-1] \\ @ & @ \multicolumn{1}{r}{\textbf{总:} } & \textbf{:={[0,-1]+[0,-2]}}\\ \end{扩展标签} \结束{文档}
我正在使用xelatex
将 LaTeX 代码编译为 PDF。
正如您所看到的,numprint
在第 5 行中,packages 已加载,并且带有sepfour
选项,因此我可以让千位分隔符正常工作。我尝试了那里可用的选项,但没有找到任何可以让它正常工作的选项。
我认为\npthousandsep{\.}
命令(MWE 的第 73 行)应该执行我想要的操作,但是它却没有。
所以我显然忽略了一些明显的东西......
我目前的主要问题是以下第一个问题。不过,我也有兴趣得到第二和第三个问题的答案:
- 如何在所有长数字中插入“千位分隔符”(一个点或一个窄空格)?
- 有没有办法自动将欧元符号附加到第 3 列显示的所有数字上?
- 我无法让代码与其他表包(除
longtable
)一起工作,因为它们列在第 44-49 行:- 其他哪一个表格包也可以在需要时自动插入换行符?
- 我需要在表代码中做哪些更改才能使用其他包?
更新:我简直不敢相信,在我提交问题 12 个月后竟然没有人回答我的问题。也许这次更新会再次引起人们的关注?
答案1
不知道这是否还重要,但我相信numprint
可以用以下命令做你想做的事:
\renewcommand\STprintnum[1]{\numprint{#1}}
\npthousandsep{,}
我还必须重新定义小数点分隔符。下面显示了一个示例(抱歉,表格不长)。
\documentclass{article}
\usepackage{spreadtab}
\usepackage{numprint}
\usepackage{booktabs} % for more table lines
\begin{document}
\begin{table}[!ht]
\centering
\renewcommand\STprintnum[1]{\numprint{#1}}
\nprounddigits{2}
\npthousandsep{,}
\npdecimalsign{.}
\begin{spreadtab}{{tabular}{lrrrrrrr}}
\toprule
& @Time step & @\shortstack{Simulation\\ Time [sec] } &@ \shortstack{Data File \\Size [KB] } &@ \shortstack{Real time \\Speed up}& @\shortstack{ PSDS\\Speed up} & @\shortstack{Reduction \\ of file size} & @ \shortstack{Steady State $f$ \\ error [Hz]}\\
\midrule
@PSDS &@4.167 ms & 56.12 & 35070 & \STcopy{v}{90/C2} & 1 & 1 & 0\\
@LTD &@ 2 sec & 13.88 & 300 & & \STcopy{v}{56.12/c3} & \STcopy{v}{!d!2/d3} &@ NA \\
@LTD &@ 1 sec & 26.28 & 496 & & & &@ 9.50E-4\\
@LTD &@ 0.5 sec & 52.27 & 888 & & & &@ 9.71E-4\\
@LTD &@ 0.25 sec & 102.43 & 1672 & & & &@ 9.78E-4\\
\bottomrule
\end{spreadtab}
\end{table}
\end{document}