如何更改希伯来语文档中 tabularray 的语言和方向性?

如何更改希伯来语文档中 tabularray 的语言和方向性?

通过最小工作示例演示该问题

我在文件中保存了以下 LaTeX 代码~/Test.tex

\documentclass{article}
\usepackage[bidi=basic,english,hebrew,provide=*]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{cc}
left & right
\end{tblr}
\end{document}

代码使用该babel包将文档的主要语言设置为希伯来语(一种从右到左书写的语言),将文档的次要语言设置为英语。然后,它使用该tabularray包创建一个简单的表格。该表有两列和一行。行中的第一个条目是left,第二个条目是right

然后我在终端中执行了以下命令。

> cd ~
> lualatex Test

这导致文件~/Test.pdf被创建。在 PDF 查看器中打开时,此文件显示如下。(我仅截取了显示的相关部分。)

希伯来语文档中的 tabularray

可以看出,“左”和“右”这两个词的相对顺序与它们的含义相反。这不是错误。这是由于该文档的主要语言是希伯来语。

如果希望保留文档的主要语言为希伯来语,但更改表格的方向性,则实现此目的的一种方法是在表格定义之前将语言更改为英语,并在表格定义之后将其更改回希伯来语,因此:

\selectlanguage{english}
\begin{tblr}{cc}
left & right
\end{tblr}
\selectlanguage{hebrew}

这产生了

希伯来语文档中的从左到右的 tabularray

问题

  1. 有没有办法通过传递参数而tblr不是将其包装在\selectlanguage命令中来改变表的语言和方向性?
  2. tabularray有没有办法使用\SetTblrInner或命令来改变文档中所有表格的语言和方向性\SetTblrOuter

评论

我感兴趣的是更改两个独立属性:表格的方向性和表格的语言。为了通过示例来澄清区别,以下希伯来语文档的 PDF 文件包含一个tabularrray单列和单行(因此没有方向性),并且-2其单个单元格中的条目显示为2-(即减号排版在数字右侧2),因为表格的语言是从文档继承而来的希伯来语。

\documentclass{article}
\usepackage[bidi=basic,english,hebrew,provide=*]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{c}
-2
\end{tblr}
\end{document}

答案1

笔记

看起来语言可以嵌套,就像级联一样:表、行、单元格等。

语言

因此,从某种babel层面上讲,方向性可以与语言分离。

平均能量损失

\documentclass{article}
\usepackage{xcolor}

\usepackage[bidi=basic,english,hebrew,provide=*]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{tabularray}
\newcommand\testh{\textcolor{red}אבג רשת}
\newcommand\testt{The cat sat on the mat. \testh}

\begin{document}
\testh

---


\bigskip
\selectlanguage{english}
English
\begin{longtblr}[
  caption = {Test},
    ]{
    cells={c},
    row{1}={bg=blue!20,cmd={\selectlanguage{english}}},
    row{2}={bg=blue!10,cmd={\selectlanguage{hebrew}}},
    row{3}={bg=blue!5,cmd={\selectlanguage{hebrew}}},
    cell{2-3}{1}={cmd={\selectlanguage{english}}},
    }
(E) & 1. left & \testt & 2. right \\
(H$_{1}$) & 1. left & \testt & 2. right \\
(H$_{2}$) & 1. \testh & \testt & 2. xxx \\
\end{longtblr}


\bigskip
\selectlanguage{hebrew}
Hebrew
\begin{longtblr}[
                     caption = {Test},
                        remark{\selectlanguage{english}* Note} = {\selectlanguage{english}Cell language is English.},
]{
    cells={c},
    row{1}={bg=blue!20,cmd={\selectlanguage{english}}},
    row{2}={bg=blue!10,cmd={\selectlanguage{hebrew}}},
    row{3}={bg=blue!5,cmd={\selectlanguage{hebrew}}},
    cell{3}{3}={bg=red!20,
                        cmd={\selectlanguage{english}}},
    cell{2-4}{1}={cmd={\selectlanguage{english}}},
    }
(E) & 1. left & \testt & 2. right \\
(H$_{1a}$) & 1. left & \testt & 2. right \\
(H$_{1b}$) & 1. left & *\testt & 2. right \\
(H$_{2}$) & 1. \testh & \testt & 2. xxx \\
\end{longtblr}

\end{document}

答案2

问题 2 的部分答案。使用环境钩子。

\documentclass{article}
\usepackage[bidi=basic,english,hebrew,provide=*]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{tabularray}
\AddToHook{env/tblr/before}{\selectlanguage{english}}
\AddToHook{env/tblr/after}{\selectlanguage{hebrew}}
\begin{document}
\begin{tblr}{cc}
left & right
\end{tblr}
\end{document}

使用环境钩子设置 tblr 的语言

相关内容