如何在 `spreadtab` 中获取“千位”分隔符(包装 `longtable`)?

如何在 `spreadtab` 中获取“千位”分隔符(包装 `longtable`)?

我正在尝试使用 Pandoc 从 YAML 文本输入半自动生成账单:

  • 为了进行总和计算,我使用spreadtab包裹。
  • 如果语句很长,为了获得自动分页符,longtable包裹在里面spreadtab

现在,大多数基本功能都可以按需要工作了,但我想通过插入千位分隔符来改善长数字的外观。但是,我现在对最后一个问题感到困惑:在长数字的显示中插入“千位分隔符”:

MWE 示例——结果表显示的数字没有“千位分隔符”。

下面是 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 行)应该执行我想要的操作,但是它却没有。

所以我显然忽略了一些明显的东西......

我目前的主要问题是以下第一个问题。不过,我也有兴趣得到第二和第三个问题的答案:

  1. 如何在所有长数字中插入“千位分隔符”(一个点或一个窄空格)?
  2. 有没有办法自动将欧元符号附加到第 3 列显示的所有数字上?
  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}

相关内容