Le mystère de l'astérisque qui disparaît [duplicate]

Nov 21 2020

J'ai un étrange "bug" dans ma table. Pour une raison quelconque, un astérisque n'apparaît pas. J'utilise LuaLaTex qui, d'après ce que je comprends, utilise Unicode, donc tous ces glyphes étranges que j'ai dans ma table devraient être imprimés directement et ils le sont tous, à l'exception d'un astérisque! Et ce qui est étrange, c'est que si j'ajoute un deuxième astérisque, un apparaît. J'ai essayé le tableau sans tcolorboxet avec tabularau lieu de tabularxet ni l'un ni l'autre ne ramène l'astérisque. Je suis perplexe.

À quoi il ressemble:

Voici mon code:

\documentclass[12pt,a4paper,openany]{book}
\usepackage{fontspec}
\setmainfont[Numbers=OldStyle,Ligatures=TeX]{linux libertine} 

\usepackage{polyglossia}
\setdefaultlanguage{icelandic}

\usepackage{tcolorbox}
\usepackage{tabularx}

\begin{document}
\begin{table}[h!]%
\begin{footnotesize}

\begin{tcolorbox}
    \begin{center}
    \begin{tabularx}{0.9\textwidth}{lXX}
        Stofn    &  Tenging við [GULUR]         &   Orð af sama stofni   \\
        \hline
        *ƀlaikaz &  gamalháþýska: \textit{bleih} ‘gulleitur, fölur’ &   is. \textit{bleikur};   \\
                 &                                      &   dk. \textit{bleg} ‘fölur’; \\
                 &                                      &   en. \textit{bleak} ‘hráslagalegur’ \\
        \hline
        *ƀlēwaz  &  skylt latnesku \textit{flāvus} ‘gullingulur’;       &   is. \textit{blár}; \\
                 &  fornírska \textit{blár} ‘gulur’     &   dk. \textit{blå} ‘blár’; \\
                 &                                      &   en. \textit{blue} ‘blár’ \\
        \hline
        *falvaz  &  fornenska \textit{fealu} ‘gulbrúnn, gulur’; &   is. \textit{fölur}; \\
                 &  gamalsaxneska \textit{falu} ‘fölgulur’; &   en. \textit{fallow} ‘gulbrúnn’  \\
                 &  fornháþýska \textit{falo} ‘fölur, rauðgulur’;       &       \\
                 &  slavneska *\textit{polь} ‘gulur, hvítleitur’        &       \\
        \hline
        *ʒallan  &  talið skylt *\textit{g̑hel}-                    &   is. \textit{gall};  \\
        *ʒallōn  &  sanskrít \textit{hári} ‘fölur, gulleitur, grænleitur’; & en. \textit{gall} ‘ósvífni’  \\
                 &  avestíska \textit{zairi} ‘gulur, gulleitur’     &       \\
        \hline
        *ʒelwaz  &  fornenska \textit{ʒeolu} ‘gulur’;               &   is. \textit{gulur};  \\
                 &  skylt sanskrít \textit{gaurá}- ‘hvítleitur, gulleitur’; &   dk. \textit{gul} ‘gulur’;  \\
                 &  latína \textit{giluus} ‘fölgulur’;          &   en. \textit{yellow} ‘gulur’  \\
                 &  latína \textit{fuluus} ‘skærgulur’          &           \\
        \hline
        *ʒlōraz  &  sama og gríska \textit{khlorós} ‘grænleitur gulur’ & is. \textit{glor} ‘gulgrár hungurlitur’;  \\
                 &                                  &   en. \textit{chlorine} ‘klór(gas)’  \\
        \hline
        *ʒlūmaz  &  skylt grísku \textit{khloús} ‘grænleitur gulur’ & is. \textit{Glúmur} ‘björn’; \\
                 &                              &   en. \textit{glum} ‘dökkur, daufur, leiður’  \\
        \hline
        *xunaʒgan & tengt grísku \textit{knikós} ‘fölgulur’ &   is. \textit{hunang}; \\
                 &                                          &   en. \textit{honey} ‘hunang’  \\
        \hline
        *pađđōn  &  fornírska \textit{buide} ‘gulur’        &   is. \textit{padda}; \\
                 &                                          &   dk. \textit{padde} ‘froskur’  \\
        \hline
        *salwaz  &  fornnorræna \textit{sǫlr} ‘gulur’       &   is. \textit{söl}  \\
                 &  miðhollenska \textit{salu} ‘skítugur, fölur, gulur’ &   en. \textit{sallow} ‘gugginn, fölur’  \\
    \end{tabularx}
    \end{center}
\end{tcolorbox}
\end{footnotesize}
    \caption{Germanskir stofnar íslenskra litaorða}
    \label{tafla:gulur}
\end{table}
\end{document}

Je me rends compte que puisque j'ai techniquement trouvé une solution (en ajoutant le deuxième astérisque), ce ne serait pas un problème en soi, mais cela me dérange vraiment. Donc, si quelqu'un a des idées sur les raisons pour lesquelles cela se produirait, dites-le-moi.

Réponses

4 campa Nov 21 2020 at 00:34

Un document très simple

\documentclass{article}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{5cm}{lX}
\show\\
\end{tabularx}
\end{document}

donne la sortie du terminal

> \\=macro:
->\relax \iffalse {\fi \ifnum 0=`}\fi \@ifstar \@xarraycr \@xarraycr .

Outre le hack d'accolade, il y a un \@ifstarsuivi de deux occurrences de la même macro \@xarraycr. Cela signifie que les deux \\et \\*ont le même effet. Maintenant, la \@ifstarmacro est basée sur \@ifnextchar, ce qui fait un bon travail pour ignorer les espaces après elle. L'effet secondaire dans des cas comme celui-ci est que un \\suivi d'une nouvelle ligne suivie de *est interprété comme \\*. Vous devez donc "arrêter" le scan \@ifnextcharet l'utiliser par exemple \\ \relaxsi votre ligne commence par a *.