Как печатать отрицательные числа в скобках с помощью spreadtab в LaTex - PullRequest
1 голос
/ 04 августа 2020

Я пытаюсь составить финансовую отчетность с помощью латекса. Важным условием финансовой отчетности является то, что отрицательные числа не должны быть представлены с отрицательным знаком, а заключаются в круглые скобки, например: -100 -> (100)

Минимально необходимое воссоздание моей проблемы выглядит следующим образом:

\documentclass{report}

\usepackage{tabularx}
\usepackage{spreadtab}
\usepackage{numprint}
\npthousandsep{,}

\begin{document}
\begin{center}
\STautoround{0}
\begin{spreadtab}{{tabularx}{\linewidth}{XN{7}{0}N{7}{0}}}
@\multicolumn{3}{c}{\uppercase{Municipal Government}}\\
@\multicolumn{3}{c}{Statement of Net Position}\\
@\multicolumn{3}{c}{December 31, 2019}\\
&& \\
@\multicolumn{1}{c}{\uppercase{Assets}} & @\multicolumn{1}{c}{2019} & @\multicolumn{1}{c}{2018}\\
@\multicolumn{1}{c}{Current Assets}&&\\
@ Cash & 12345 & 54321\\
@ Receivables:&&\\
@ \hspace{0.25in}Sewer Fees: & 12345 & 54321\\ \cline{2-3}
@\multicolumn{1}{r}{Total Current Assets}  & sum(b7:[0,-1]) & sum(c7:[0,-1])\\ % r10
@\multicolumn{1}{c}{\uppercase{Fixed Assets}}&&\\
@ Land & 12345 & 54321\\
@ Garage & 99247 & 54321\\
@ Equipment & 12345 & 54321\\
@ Lagoon and Related & 12345 & 54321\\ \cline{2-3}
@\multicolumn{1}{r}{Total Fixed Assets} & sum(b12:[0,-1]) & sum(c12:[0,-1])\\ \cline{2-3} % r15
@ Accumulated Depreciation & -12345 & -54321\\ \cline{2-3}
@\multicolumn{1}{r}{Net Fixed Assets} & sum(b16:[0,-1]) & sum(c16:[0,-1])\\ \cline{2-3}
@\multicolumn{1}{r}{Total Assets} & b18+b10 & c18+c10\\ \cline{2-3} \cline{2-3}
\end{spreadtab}
\end{center}
\end{document}

Вместо Accumulated Depreciation -12345 -54321 он читается как Accumulated Depreciation (12345) (54321).

Я нашел скудную информацию об этом в Интернете, и я не совсем уверен, что это возможно. Если это вообще возможно, я хотел бы сохранить десятичное выравнивание при добавлении круглых скобок. Но опять же, я не уверен, что это возможно.

Решение, приведенное ниже, было опубликовано в StackOverflow несколько лет go, но оно заканчивалось несколькими ошибками, которые я не знаю, как выйти за рамки: в первую очередь, компилятор жалуется на десятки «отсутствующих» или «лишних» скобок.

\makeatletter
\renewcommand\STprintnum[1]{\FPifneg{#1}(\@gobble#1)\else#1\fi}
\makeatother

Обновление: согласно приведенному ниже ответу, использование SIunitx позволяет заключать отрицательные числа в скобки, но это нарушает десятичное выравнивание. Минимальный рабочий пример этого выглядит следующим образом:

\documentclass{report}
\usepackage{tabularx}
\usepackage{siunitx}
\usepackage{spreadtab}
\sisetup{group-separator = {,}}
\sisetup{bracket-negative-numbers = true}

\begin{document}
\begin{spreadtab}{{tabularx}{\linewidth}{XS[table-format=7.1]S[table-format=7.1]}}
@ Fixed Assets & 123456.1 & 135791.1\\
@ {Accumulated Depreciation} &-100000.1 &-90000.1\\ \cline{2-3}
@\multicolumn{1}{r}{Net Fixed Assets} & sum(b1:[0,-1]) & sum(c1:[0,-1])\\ \cline{2-3}
\end{spreadtab}
\end{document}

В приведенном выше примере отрицательные числа теперь смещены в их выравнивании левой и правой круглой скобкой, поэтому они перестают совпадать с положительными числами. .

...