emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Export of this table fails LuaLaTeX compilation


From: Max Nikulin
Subject: Re: Export of this table fails LuaLaTeX compilation
Date: Thu, 13 Oct 2022 11:59:37 +0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2

On 13/10/2022 09:44, Ihor Radchenko wrote:
Max Nikulin writes:

I am considering \noalign{} instead of \relax. I was never aware of its
effect, but accordingly to The TeXbook it should keep TeX in vertical
mode without any action due to empty argument. (Actually I surprised
that \relax causes any change of internal state besides parser.)

If \noalign has less side effects compared to \relax, I'd prefer
\noalign. Can you confirm this?

My understanding of TeX is not solid enough to confirm this. From The TeXbook I have an impression that \noalign is added specially for table-like blocks to be used immediately after \cr (low level command similar to \\). So I would not use it outside of tables however it may be safe. I am not aware of problems with \\\noalign{} in tables. The exact effect of \relax is not clear to me yet. I do not have an example of negative effect of \relax similar to \hline but outside of tables.

I can try to ask for a better suggestion at stackexchange, but I am unsure if the question will be noticed by some person from a TeX engine or core LaTeX developers or at least with better understanding of TeX internals.

Unfortunately \noalign{} just as \relax will not allow @@latex:[1cm]@@
on the next line, perhaps @@latex:\noalign{\vskip 1cm}@@ is a workaround
to introduce additional vertical space.

What you are talking about appears to be abusing our exporter. We give
no guarantees about how \\ is going to be exported internally into
LaTeX. We should have no obligation to keep use-cases like this.

On the other hand LaTeX backend was transparent to such hacks, so the change might be breaking to some users. That is why conditionally adding \noalign{} or \relax if \\ is not followed by an export snippet may be a better solution.

I never used \\* or \\*[10pt] variants of the command. Current stable
release should has problems when the line next to \\ starts from * that
is not bold marker, besides square brackets.

I feel like I am missing what you are talking about here.

The rabbit hole is deeper than I thought. The \\ command has its star counterpart \\* to prevent page break at this point, and both of them allow optional [<LENGTH>] argument. In vanilla LaTeX2e space is allowed between \\ and *. However \usepackage{amsmath} redefines \\ command. It still can recognize following *, but only on the same line. Unsure if it is a bug or feature. So before your commit the following is not a problem in *default* Org configuration:

Star\\
@@ignore:@@* on the next line.

Star and brackets\\
*[1em] on the next line.

| Star |
| * in the next row. |
|-|
| Star and brackets |
| *[1em] in the next row. |

However it might be if someone changes list of default packages. Adding \noalign{} and \relax should fix the issue just for square brackets.

So at least as a temporary fix \noalign{} should be used for tables instead of \relax to mitigate negative effect of the recent patch.

P.S. Packages like longtable might bring more surprises.

Attachment: doublebackslash.tex
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]