Ошибка siunitx: "invalid-number" Неверный числовой ввод 'e'

Ошибка siunitx: "invalid-number" Неверный числовой ввод 'e'

Ну, я работал с некоторыми таблицами, и для выравнивания чисел я обычно использую пакет, siunitxтак как Мико помог мне с этим.этот вопрос.

Но в этих новых таблицах у меня возникла ошибка, которую я не понимаю, как исправить.

siunitx error: "invalid-number" Invalid numerical input 'e'. 
For immediate help type H <return>. \end{tabularx}

Я нашел следующие вопросы по этому поводу:Вопрос 1ивопрос 2. К сожалению, это не тот случай, и я не нашел подсказок, которые привели бы меня к решению.

Мой MWE:

\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}

Я пытаюсь использовать Scolumn-type в средней и правой колонках, но не могу из-за ошибки, упомянутой ранее. Я пробовал использовать simply Scolumn без успеха и позже, S[table-format=5.0]но это не сработало. Что не так с моими таблицами?


Обновлять

Хотя оба ответа были очень интересными и полезными, боюсь, что моя проблема осталась. Я не могу добавить в свои таблицы столбцы типа, Sа они мне нужны.

Теперь я добавляю таблицу, которая в настоящее время работает с той же проблемой, в которой я использовал тип столбцов, Yно результат оказался неудовлетворительным.

Думаю, виноват один из пакетов в моей преамбуле. Посмотрим, смогу ли я его обнаружить, потому что MWE, похоже, работает гладко.

решение1

(Переписал ответ после того, как автор изменил таблицу в MWE.)

Следующее решение позволяет использовать Sтип столбца для четырех столбцов «ГВт·ч»ипозволяет использовать tabularxокружение (чтобы гарантировать, что ширина таблицы равна \linewidth). Хитрость — как она есть — заключается в использовании Sдля чисел и C(центрированной версии X) для заголовков.

Вы заметите, что я реорганизовал заголовок таблицы. Ваша исходная настройка требует переносов строк для всех четырех важных слов заголовка — Producción, Consumo, Exportaciones, и Importaciones. Я думаю, что лучше избегать (насколько это возможно) переноса таких слов. Я оставил квадратные скобки вокруг заголовков GWh; однако они могут не понадобиться.

(Чтобы упростить и оптимизировать код преамбулы, я также удалил все пакеты, которые, по-видимому, не являются необходимыми для создания таблицы.)

введите описание изображения здесь

\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} 

Приложение: Вот та же таблица, но без реорганизации материала заголовка. Код тот же, что и выше, за исключением того, что Yдля четырех ячеек заголовка используется тип столбца.

введите описание изображения здесь

....
\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
....

решение2

Вам не нужно tabularx, но запас tabular*. Я просто сократил «Estados Unidos» до «EUA», чтобы лучше вписать таблицу в имеющееся пространство.

Обратите внимание, что нечисловые данные в Sстолбцах следует заключать в скобки; в этом случае siunitxтекст не будет интерпретироваться как число, что является причиной сообщения об ошибке в ячейке «Exportaciones».

\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}

введите описание изображения здесь

решение3

Этот код работает. Я воспользовался возможностью улучшить вашу таблицу: я не думаю, что вам действительно нужна среда tabularx, поэтому я заменил Yстолбец на простой l. Я также сделал заголовок столбца двухстрочным, когда посчитал это необходимым, с помощью makecellпакета:

\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} 

введите описание изображения здесь

решение4

Прежде всего, чтобы ответить на ваш вопрос (исправить вашу ошибку): вы использовали нечисловую ячейку в столбце S. Она должна читаться (или начинаться с) "e". Просто поместите эту ячейку в фигурные скобки.

Теперь в целом и для вашей таблицы: Не используйте tabularxс числовыми данными. Поскольку ваша таблица слишком велика для \linewidth, просто уменьшите ширину вручную.

Это будет выглядеть так:

% 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}

Если вы действительно хотите использовать tabularx, вы найдете ответы здесь:Как использовать siunitx и tabularx вместе?

введите описание изображения здесь

Не используйте скобки вокруг единиц измерения. Это неправильно.

Связанный контент