Re: Formattazione matrici con siunitx

#96071
Up
0
Down
::

Little” post=95641Buondì

Nell’esempio sotto riportato sono presenti due matrici:
la prima è come si presenta attualmente
la seconda è come vorrei diventasse (la prima oltre ad essere poco elegante eccede la gabbia del testo risultando molto sgradevole in alcuni casi).

Vedo che il pacchetto siunitx ha l’opzione “giusta” per le tabelle (table-omit-exponent) ma non trovo nulla per le matrici. Dato che ho un centinaio di matrici da trattare vorrei evitare come la peste il dover fare un postprocessing manuale come ho fatto in questo esempio.
Qualcuno ha qualche idea?

Grazie per l’aiuto

`% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = pdflatex

\documentclass[paper=a4,fleqn]{book}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amsfonts,amsthm} % pacchetti matematici
\usepackage{graphicx} %pacchetti grafici
\usepackage{siunitx}

\setlength{\mathindent}{0pt}

%—————————————————————————————-
% DOCUMENT
%—————————————————————————————-

\begin{document}

\begin{equation*}
\sisetup{round-mode = places,
round-precision = 3,
scientific-notation=fixed,
fixed-exponent = -10
}
\underset{\sim}{\overline{C}}=
\begin{bmatrix}
\num{ 1.629643e-10 } &\num{ -6.939290e-11 } &\num{ -2.720952e-11 } &\num{ 0 } &\num{ 0 } &\num{ 0 } \\
\num{ -6.939290e-11 } &\num{ 1.629846e-10 } &\num{ -2.720952e-11 } &\num{ 0 } &\num{ 0 } &\num{ 0 } \\
\num{ -2.720952e-11 } &\num{ -2.720952e-11 } &\num{ 8.032101e-11 } &\num{ 0 } &\num{ 0 } &\num{ 0 } \\
\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 2.301838e-10 } &\num{ 0 } &\num{ 0 } \\
\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 2.280471e-10 } &\num{ 0 } \\
\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 2.200831e-10 } \\
\end{bmatrix}
\end{equation*}

\begin{equation*}
\sisetup{round-mode = places,
round-precision = 3,
retain-unity-mantissa=false
}
\underset{\sim}{\overline{C}}=
\begin{bmatrix}
\num{ 1.629643 } &\num{ -.6939290 } &\num{ -.2720952 } &\num{ 0 } &\num{ 0 } &\num{ 0 } \\
\num{ -.6939290 } &\num{ 1.629846 } &\num{ -.2720952} &\num{ 0 } &\num{ 0 } &\num{ 0 } \\
\num{ -.2720952 } &\num{ -.2720952 } &\num{ .8032101 } &\num{ 0 } &\num{ 0 } &\num{ 0 } \\
\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 2.301838} &\num{ 0 } &\num{ 0 } \\
\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 2.280471 } &\num{ 0 } \\
\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 0 } &\num{ 2.200831 } \\
\end{bmatrix}
\num{1e-10}
\end{equation*}

\end{document}`

Nulla ti vieta di definire un nuovo ambiente:
`\documentclass[a4paper,fleqn]{book}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amsfonts,amsthm,accents} % pacchetti matematici
\usepackage{graphicx} %pacchetti grafici
\usepackage{siunitx}

\setlength{\mathindent}{0pt}

\newenvironment{nbmatrix}[1]
{\left[\begin{array}{@{}#1@{}}}
{\end{array}\right]}

\newcommand{\wbar}[2][2]{\mspace{#1mu}\overline{\mspace{-#1mu}#2}}

\begin{document}

\begin{equation*}
\sisetup{
round-mode = places,
round-precision = 3,
scientific-notation=fixed,
fixed-exponent = -10
}
\underaccent{\sim}{\wbar{C}}=
\begin{nbmatrix}{*{6}{S[table-format=-1.3e-2]}}
1.629643e-10 & -6.939290e-11 & -2.720952e-11 & 0 & 0 & 0 \\
-6.939290e-11 & 1.629846e-10 & -2.720952e-11 & 0 & 0 & 0 \\
-2.720952e-11 & -2.720952e-11 & 8.032101e-11 & 0 & 0 & 0 \\
0 & 0 & 0 & 2.301838e-10 & 0 & 0 \\
0 & 0 & 0 & 0 & 2.280471e-10 & 0 \\
0 & 0 & 0 & 0 & 0 & 2.200831e-10 \\
\end{nbmatrix}
\end{equation*}

\begin{equation*}
\sisetup{
round-mode = places,
round-precision = 3,
retain-unity-mantissa=false
}
\underaccent{\sim}{\overline{C}}=
\begin{nbmatrix}{*{6}{S[table-format=-1.3]}}
1.629643 &-.6939290 &-.2720952 &0 &0 &0 \\
-.6939290 &1.629846 &-.2720952 &0 &0 &0 \\
-.2720952 &-.2720952 &.8032101 &0 &0 &0 \\
0 &0 &0 &2.301838 &0 &0 \\
0 &0 &0 &0 &2.280471 &0 \\
0 &0 &0 &0 &0 &2.200831 \\
\end{nbmatrix}
\cdot\num{1e-10}
\end{equation*}

\end{document}`
Nota che [tt]paper=a4[/tt] è specifica delle classi Koma-Script ([tt]scrbook[/tt]) e non è capita da [tt]book[/tt].

Ciao
Enrico

Go to top