
Nun, ich habe in einigen Tabellen gearbeitet und für die Zahlenausrichtung verwende ich normalerweise diesiunitx
Paket, da Mico mir geholfen hatdiese Frage.
Aber ich habe in diesen neuen Tabellen einen Fehler, bei dem ich nicht weiß, wie ich ihn beheben soll.
siunitx error: "invalid-number" Invalid numerical input 'e'.
For immediate help type H <return>. \end{tabularx}
Ich habe diese Fragen dazu gefunden:Frage 1UndFrage 2. Leider ist es nicht derselbe Fall und ich habe keine Hinweise gefunden, die mich zur Lösung führen.
Mein MWE ist:
\documentclass[fontsize=10pt,paper=letter,headings=small,bibliography=totoc,DIV=9,headsepline=true,titlepage=on]{scrartcl}
\usepackage[spanish,mexico]{babel}
\usepackage{xspace}
\usepackage{xkeyval}
\usepackage{array,multirow,multicol,rotating,tabularx,ragged2e,booktabs}
%\newcolumntype{Y}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}
\newcolumntype{Y}{>{\RaggedRight\arraybackslash}X}
%\newcolumntype{C}{>{\centering\arraybackslash\hspace{0pt}}X}
\usepackage{rotating} % Paquete para rotar objetos flotantes
\usepackage{colortbl} % Paquete pata colorear tablas
\usepackage[per-mode=symbol]{siunitx} % Paquete para insertar unidades
\sisetup{
output-decimal-marker = {.},
group-minimum-digits = 4,
range-units = brackets,
list-final-separator = { \translate{and} },
list-pair-separator = { \translate{and} },
range-phrase = { \translate{to (numerical range)} },
}
\ExplSyntaxOn
\providetranslation [ to = Spanish ]
{ to~(numerical~range) } { a } % substitute the right word here
\ExplSyntaxOff
\begin{document}
\begin{table}[htbp]
\centering
\caption{Mercado de energía eléctrica en Norteamérica}
\label{tab:emna}
\begin{tabularx}{\linewidth}{@{}lYrYrYrYr @{}}
\toprule
País & Producción [\si{\giga\watt\hour}] & Fecha & Consumo [\si{\giga\watt\hour}] & Fecha & Exportaciones [\si{\giga\watt\hour}] & Fecha & Importaciones [\si{\giga\watt\hour}] & Fecha \\
\midrule
Canadá & 612000 & 2007 & 530000 & 2006 & 50120 & 2007 & 19660 & 2007 \\
Estados Unidos & 4167000 & 2007 & 3892000 & 2007 & 20140 & 2007 & 51400 & 2007 \\
México & 243300 & 2007 & 202000 & 2007 & 1278 & 2007 & 482.2 & 2007 \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
S
Ich versuche , den Spaltentyp in der mittleren und rechten Spalte zu verwenden , aber das geht nicht, weil der zuvor erwähnte Fehler auftritt. Ich habe S
erfolglos versucht, einfach die Spalte zu verwenden, und später S[table-format=5.0]
hat das auch nicht funktioniert. Was ist mit meinen Tabellen los?
Aktualisieren
Obwohl beide Antworten sehr interessant und hilfreich waren, befürchte ich, dass mein Problem weiterhin besteht. Ich kann meinem Tabellenspaltentyp keinen hinzufügen, S
obwohl ich ihn brauche.
Nun füge ich eine Tabelle hinzu, die aktuell mit dem gleichen Problem funktioniert, in der ich inzwischen den Spaltentyp verwendet habe, Y
aber das Ergebnis war nicht zufriedenstellend.
Ich vermute, dass eines der Pakete in meiner Präambel dafür verantwortlich ist. Mal sehen, ob ich es herausfinden kann, denn das MWE scheint reibungslos zu funktionieren.
Antwort1
(Habe die Antwort neu geschrieben, nachdem der OP die Tabelle im MWE geändert hatte.)
Mit der folgenden Lösung können Sie den S
Spaltentyp für die vier Spalten "GWh" verwenden.Undermöglicht die Verwendung einer tabularx
Umgebung (um sicherzustellen, dass die Breite der Tabelle gleich ist \linewidth
). Der Trick – wenn man ihn denn kennt – besteht darin, S
für die Zahlen und C
(eine zentrierte Version von X
) für die Überschriften zu verwenden.
Sie werden feststellen, dass ich die Überschrift der Tabelle neu organisiert habe. Ihr ursprüngliches Setup erfordert Zeilenumbrüche für alle vier wichtigen Überschriftenwörter -- Producción
, Consumo
, Exportaciones
, und Importaciones
. Ich denke, es ist besser, die Silbentrennung solcher Wörter (so weit wie möglich) zu vermeiden. Ich habe die eckigen Klammern um die GWh
Überschriften gelassen; sie werden jedoch möglicherweise nicht benötigt.
(Um den Präambelcode zu vereinfachen und zu rationalisieren, habe ich auch alle Pakete entfernt, die für die Generierung der Tabelle nicht unbedingt erforderlich zu sein scheinen.)
\documentclass[fontsize=10pt,paper=letter,headings=small,bibliography=totoc,
DIV=9,headsepline=true,titlepage=on]{scrartcl}
\usepackage[spanish,mexico]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx,booktabs}
\newcolumntype{C}{>{\centering\arraybackslash}X} % centered version of "X" column type
\newcommand\mc[1]{\multicolumn{2}{@{}C@{}}{#1}} % shortcut macro
\usepackage{siunitx} % Paquete para insertar unidades
\sisetup{
per-mode = symbol,
output-decimal-marker = {.},
group-minimum-digits = 4,
range-units = brackets,
list-final-separator = { \translate{and} },
list-pair-separator = { \translate{and} },
range-phrase = { \translate{to (numerical range)} },
}
\ExplSyntaxOn
\providetranslation [ to = Spanish ]
{ to~(numerical~range) } { a } % substitute the right word here
\ExplSyntaxOff
\begin{document}
\begin{table}
\caption{Mercado de energía eléctrica en Norteamérica}
\label{tab:emna}
\begin{tabularx}{\linewidth}{@{} l
*{2}{S[table-format=7.0]r}
S[table-format=5.0]r
S[table-format=5.1]r @{}}
\toprule
País & \mc{Producción} & \mc{Consumo} & \mc{Exportaciones} & \mc{Importaciones} \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(lr){6-7} \cmidrule(l){8-9}
& [\si{\giga\watt\hour}] & Fecha & [\si{\giga\watt\hour}] & Fecha
& [\si{\giga\watt\hour}] & Fecha & [\si{\giga\watt\hour}] & Fecha \\
\midrule
Canadá & 612000 & 2007 & 530000 & 2006 & 50120 & 2007 & 19660 & 2007 \\
Estados Unidos & 4167000 & 2007 & 3892000 & 2007 & 20140 & 2007 & 51400 & 2007 \\
México & 243300 & 2007 & 202000 & 2007 & 1278 & 2007 & 482.2 & 2007 \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
Nachtrag: Hier ist dieselbe Tabelle, jedoch ohne die Neuorganisation des Kopfmaterials. Der Code ist derselbe wie oben, außer dass Y
für vier der Kopfzellen ein Spaltentyp verwendet wird.
....
\newcolumntype{Y}{>{\hspace{0pt}\RaggedRight\arraybackslash}X} % allow hyphenation
....
\begin{table}[htbp]
\setlength\tabcolsep{4pt}
\caption{Mercado de energía eléctrica en Norteamérica}
\label{tab:emna}
\begin{tabularx}{\linewidth}{@{}l
*{2}{S[table-format=7.0]r}
S[table-format=5.0]r
S[table-format=5.1]r @{}}
\toprule
País
& \multicolumn{1}{Y}{Producción [\si{\giga\watt\hour}]} & Fecha
& \multicolumn{1}{Y}{Consumo [\si{\giga\watt\hour}]} & Fecha
& \multicolumn{1}{Y}{Exportaciones [\si{\giga\watt\hour}]} & Fecha
& \multicolumn{1}{Y}{Importaciones [\si{\giga\watt\hour}]} & Fecha \\
\midrule
....
Antwort2
Sie benötigen nicht tabularx
, sondern den Bestand tabular*
. Ich habe „Estados Unidos“ einfach mit „EUA“ abgekürzt, damit die Tabelle besser in den verfügbaren Platz passt.
Beachten Sie, dass nicht numerische Eingaben in S
Spalten mit Klammern gesetzt werden sollten. Auf diese Weise siunitx
wird nicht versucht, den Text als Zahl zu interpretieren, was der Grund für die Fehlermeldung in der Zelle „Exportaciones“ wäre.
\documentclass[
fontsize=10pt,
paper=letter,
headings=small,
bibliography=totoc,
DIV=9,
headsepline=true,
titlepage=on
]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish,mexico]{babel}
\usepackage{booktabs}
\usepackage[per-mode=symbol]{siunitx} % Paquete para insertar unidades
\sisetup{
output-decimal-marker = {.},
group-minimum-digits = 4,
range-units = brackets,
list-final-separator = { \translate{and} },
list-pair-separator = { \translate{and} },
range-phrase = { \translate{to (numerical range)} },
}
\begin{document}
\begin{table}[htbp]
\centering
\caption{Mercado de energía eléctrica en Norteamérica}
\label{tab:emna}
\setlength{\tabcolsep}{1pt}% just a minimum
\begin{tabular*}{\linewidth}{
@{\extracolsep{\fill}}
l
S[table-format=7.0]
c
S[table-format=7.0]
c
S[table-format=5.0]
c
S[table-format=5.1]
c
@{}
}
\toprule
País & {Producción} & Fecha
& {Consumo} & Fecha
& {Exportaciones} & Fecha
& {Importaciones} & Fecha \\
& {(\si{\giga\watt\hour})} &
& {(\si{\giga\watt\hour})} &
& {(\si{\giga\watt\hour})} &
& {(\si{\giga\watt\hour})} & \\
\midrule
Canadá & 612000 & 2007 & 530000 & 2006 & 50120 & 2007 & 19660 & 2007 \\
EUA & 4167000 & 2007 & 3892000 & 2007 & 20140 & 2007 & 51400 & 2007 \\
México & 243300 & 2007 & 202000 & 2007 & 1278 & 2007 & 482.2 & 2007 \\
\bottomrule
\end{tabular*}
\end{table}
\end{document}
Antwort3
Dieser Code funktioniert. Ich habe die Gelegenheit genutzt, um Ihre Tabelle zu verbessern: Ich glaube nicht, dass Sie wirklich eine tabularx
Umgebung benötigen, also habe ich die Y
Spalte durch ein einfaches ersetzt l
. Ich habe auch den Spaltenkopf zweizeilig gemacht, als ich es für nötig hielt, mit dem makecell
Paket:
\documentclass[fontsize=10pt, paper=letter, headings=small, bibliography=totoc, DIV=9, headsepline=true, titlepage=on]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[spanish,mexico]{babel}
\usepackage{xspace}
\usepackage{xkeyval}
\usepackage{array,multirow,multicol,rotating,tabularx,ragged2e,booktabs}
\usepackage{ makecell}
\usepackage{rotating} % Paquete para rotar objetos flotantes
\usepackage{colortbl} % Paquete pata colorear tablas
\usepackage[per-mode=symbol]{siunitx} % Paquete para insertar unidades
\sisetup{
output-decimal-marker = {.},
group-minimum-digits = 4,
range-units = brackets,
list-final-separator = { \translate{and} },
list-pair-separator = { \translate{and} },
range-phrase = { \translate{to (numerical range)} },
}
\ExplSyntaxOn
\providetranslation [ to = Spanish ]
{ to~(numerical~range) } { a } % substitute the right word here
\ExplSyntaxOff
\begin{document}
\begin{table}[htb]
\centering
\caption{Reservas y Recursos Prospectivos}
\label{tab:RecOtorgados}%{0.85\linewidth}
\begin{tabular}{@{}l@{\qquad}S[table-format=5.0]S[table-format=5.0] @{}}%
\toprule
Tipo/Área & {\thead{Recursos 2P \\{} [MMBPCE]}} & {\thead{Recursos Prospectivo\\{} [MMBPCE]}} \\
\midrule
Convencional & 20589 & 18222 \\
Aguas Someras & 11374 & 7472 \\
Sureste & 11238 & 7472 \\
Norte & 136 & \\
Terrestre & 8818 & 5913 \\
Sur & 4379 & 5371 \\
Chicontepec & 3556 & \\
Burgos & 425 & \\
Resto Norte & 459 & 542 \\
Aguas Profundas & 397 & 4837 \\
Perdido & & 3013 \\
Holok-Han & 397 & 1824 \\
No Convencional & & 5225 \\
\midrule
Total & 20589 & 23447 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Antwort4
Um Ihre Frage zunächst zu beantworten (Ihren Fehler zu beheben): Sie haben eine nicht numerische Zelle in einer S
Spalte verwendet. Dort sollte „e“ stehen (oder damit beginnen). Setzen Sie diese Zelle einfach in geschweifte Klammern.
Nun allgemein und für deine Tabelle: Verwende keine tabularx
numerischen Daten. Da deine Tabelle für die zu groß ist \linewidth
, reduziere die Breite einfach manuell.
Das würde dann so aussehen:
% arara: pdflatex
\documentclass[fontsize=10pt,paper=letter,headings=small,DIV=9,headsepline=true]{scrartcl}
\usepackage[spanish,mexico]{babel}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{caption}
%\usepackage{rotating} % do not load that twice
\usepackage{siunitx}
\sisetup{group-minimum-digits = 4}
\begin{document}
\begin{table}[htbp]
\centering
\tabcolsep=1.33ex
\caption{Mercado de energía eléctrica en Norteamérica}
\label{tab:emna}
\begin{tabular}{@{}lS[table-format=7.0]cS[table-format=7.0]cS[table-format=5.0]cS[table-format=5.1]c@{}}
\toprule
País & {Producción} & Fecha & {Consumo} & Fecha & {Exptciones} & Fecha & {Imptciones} & Fecha \\
& {en \si{\giga\watt\hour}} & & {en \si{\giga\watt\hour}} & & {en \si{\giga\watt\hour}} & & {en \si{\giga\watt\hour}} & \\
\midrule
Canadá & 612000 & 2007 & 530000 & 2006 & 50120 & 2007 & 19660 & 2007 \\
EEUU & 4167000 & 2007 & 3892000 & 2007 & 20140 & 2007 & 51400 & 2007 \\
México & 243300 & 2007 & 202000 & 2007 & 1278 & 2007 & 482.2 & 2007 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Wenn Sie wirklich verwenden möchtentabularx
, finden Sie hier Antworten:Wie verwende ich siunitx und tabularx zusammen?
Verwenden Sie keine Klammern um Einheiten. Das ist falsch.