Tajemnica znikającej gwiazdki [duplikat]

Nov 21 2020

Mam dziwny „błąd” w mojej tabeli. Z jakiegoś powodu jedna gwiazdka nie pojawia się. Używam LuaLaTex, który, jak rozumiem, używa Unicode, więc wszystkie te dziwne glify, które mam w mojej tabeli, powinny być dobrze wydrukowane bezpośrednio i wszystkie są, z wyjątkiem jednej gwiazdki! A dziwne jest to, że jeśli dodam drugą gwiazdkę, pojawi się jedna. Wypróbowałem tabelę bez tcolorboxi z tabularzamiast tabularxi żadna z nich nie przywraca gwiazdki. Jestem zdumiony.

Jak to wygląda:

To jest mój kod:

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

Zdaję sobie sprawę, że skoro technicznie znalazłem rozwiązanie (dodając drugą gwiazdkę), sam w sobie nie byłby to problem, ale naprawdę mnie to niepokoi. Więc jeśli ktoś ma jakieś pomysły, dlaczego tak się dzieje, proszę, powiedz mi.

Odpowiedzi

4 campa Nov 21 2020 at 00:34

Bardzo prosty dokument

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

podaje wyjście terminala

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

Oprócz hackowania nawiasów klamrowych \@ifstarnastępuje dwa wystąpienia tego samego makra \@xarraycr. Oznacza to, że oba \\i \\*mają ten sam efekt. Teraz \@ifstarmakro jest oparte na programie \@ifnextchar, który dobrze radzi sobie z ignorowaniem spacji po nim. Efektem ubocznym w takich przypadkach jest to, że a, \\po którym następuje nowy wiersz, *jest interpretowane jako \\*. Dlatego musisz "zatrzymać" skanowanie \@ifnextchari użyć np. \\ \relaxJeśli twoja linia zaczyna się od *.