Comments (15)
@davidcarlisle So
longtable
did change (@SverreStausland said the version was the same).
https://chat.stackexchange.com/transcript/message/32722915#32722915 :-)
from babel.
@davidcarlisle So longtable
did change (@SverreStausland said the version was the same).
from babel.
@SverreStausland as I showed just make sure you don't start a vbox with \begin{otherlanguage}
so use \leavevmode\begin{otherlanguage}
or \mbox{}\begin{otherlanguage}
in such a context.
from babel.
I’ll investigate, but this doesn’t mean there will be a general solution. An option is to document \leavevmode
will be necessary in some cases. Interestingly, the babel
manual explains neither \foreignlanguage
nor otherlanguage*
enter in horizontal mode, but I missed a similar remark in otherlanguage
. Very likely, and for compatibility reasons. the current behavior will stay (as \foreignlanguage
stayed), but, well, I'd like to investigate.
from babel.
As I explained on tex.sx chat this is unrelated to the table packages,
\documentclass{article}
\usepackage[main = american, norsk]{babel}
\begin{document}
xxx \parbox[t]{5cm}{%
\begin{otherlanguage}{norsk}Foo bar baz\end{otherlanguage}}
\bigskip
xxx \parbox[t]{5cm}{%
\leavevmode\begin{otherlanguage}{norsk}Foo bar baz\end{otherlanguage}}
\end{document}
produces
due to a \write
whatsit at the start of the language switch.
from babel.
It seems there is a change in behavior in the LaTeX kernel [edit: actually, in longtable
], which now enters in vertical mode (formerly it didn’t; or exists horizontal mode, I’m not yet sure). The following test file prints ‘Vertical’ in current LaTeX, while Overleaf prints ‘Horizontal’:
\documentclass{article}
\usepackage{array, ltxtable}
\begin{document}
\begin{filecontents}[overwrite]{testing.tex}
\begin{longtable}{p{3em}X}
9999 & {\ifhmode Horizontal\else Vertical\fi}\\
9999 & {\ifhmode Horizontal\else Vertical\fi}\\
\end{longtable}
\end{filecontents}
\LTXtable{\linewidth}{testing.tex}
\end{document}
from babel.
@SverreStausland Just read David’s message, which gave me the workaround: use \leavevmode
.
from babel.
longtable now follows array
% \changes{v4.18}{2023/08/25}{Use \cs{everypar} to match array package, github 1128}%
so the strut is delayed in everypar (so if the p-entry starts wih a list you don't have a paragraph with just an invisible strut before the list
so while you see a change in behaviour for longtable it would always have been this way in a tabular using the array package, or as shown above in a standard parbox
from babel.
@jbezos you could try to delay the write with \ifvmode\everypar{...}\else...}
but it's a tricky area to ensure everypar survives at starts of sections and places.
In color.sty I just documented that \color
may do this (footnote page 7 of grfguide) and made \textcolor
always have \leavevmode
so it does not have the issue, but always starts a paragraph so can not surround lists etc
from babel.
As otherlanguage
can be used in many contexts, I can’t change it hastly. I have to investigate.
from babel.
@jbezos I looked through my two log files twice to make sure that the package versions were the same, and now that I'm doing the same one more time, I notice that the versions for longtable
are indeed different ... Sorry! 😖
from babel.
@davidcarlisle @jbezos Can someone explain how exactly one should "use \leavemode
" as a workaround?
from babel.
If I understood it correctly, @jbezos will investigate and see if there's a solution that doesn't require the user to insert \leavemode
before \begin{otherlanguage}
whenever it's used in a table. Did I understand that correctly?
from babel.
@SverreStausland yes but it's tricky, for \color
I decided to just document that it could happen and the user should add the correction at the start of vmode. For \textcolor
I went the other way and always add \leavevmode
but that's for small text fragments that should always be in a paragraph. So @jbezos may find a safe compromise, but this is a hard area (TeX really doesn't help) so I'd simply add them.
If in your document you always have \begin{otherlanguage}Text
never \begin{otherlanguage}\begin{itemize}
or similar, then you can simply define it locally to always start a paragraph so
\let\xxotherlanguage\otherlanguage
\def\otherlanguage{\leavevmode\xxotherlanguage}
But that is not a general solution
from babel.
Finally the current behavior will stay for a couple of reasons: (1) backwards compatibility; (2) otherlanguage
is the environment version of \selectlanguage
and entering in horizontal mode doesn’t make much sense. I even considered an option to change the behavior, but I discarded it for reason 2. If a \leavevmode
is always required in otherlanguage
, there is the possibility to add it with:
\AddToHook{env/otherlanguage/before}{\leavevmode}
So, I’ll just document neither \selectlanguage
nor otherlanguage
change the current mode.
from babel.
Related Issues (20)
- hbox inside equation is problematic HOT 5
- An outdated link in doc
- Too much space before a comma in maths if [italian] is used HOT 9
- \endotherlanguage leaves @ignore globally true HOT 17
- TL2024 + latex or pdflatex + norsk = “! Missing number, treated as zero.” HOT 15
- [british]babel should spit out a warning of a noticeable kind if hyphen-english is missing HOT 9
- Tibetan line breaks HOT 3
- Problems with \Ref and babel (The Latex Companion 3rd edition p.78) HOT 2
- Rollback option for .ldf files HOT 5
- Estonia babel won't compile due to missing headtoname HOT 2
- Spurious space in welsh.ldf HOT 3
- \babelfont fails with some fonts as of recent update HOT 2
- Change first item in abjad alph counter for Algeria, Morocco and Tunisia. HOT 2
- Incompatibility with igo gameborard typesetting package HOT 2
- eqref is misaligned when placed above equal sign in align and gather environments
- LuaLaTeX + babel + hyperref: extraneous = HOT 5
- Fix Finnish typo HOT 2
- Vietnamese warnings with babel and biblatex
- Bidi: Insert paragraph indent according to its direction HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from babel.