Lineno 行号在 2 列、Polyglossia 和 RTL 语言中呈现不正确

Lineno 行号在 2 列、Polyglossia 和 RTL 语言中呈现不正确

我正在尝试使用亚麻布包。但是,我需要包含一些用从右到左语言编写的示例(在我的例子中是乌尔都语,但任何从右到左的语言似乎都会导致同样的问题)。

一旦我将 RTL 语言\setotherlanguages纳入多语包中,行号中断:第二列中的数字没有像应有的那样位于该列的右侧,而是位于页面的中间,与文本重叠。

这是一个最小的工作示例:

\documentclass[11pt,twocolumn]{article}
\usepackage[a4paper,margin=2.5cm,heightrounded=true]{geometry}

\usepackage[switch,mathlines]{lineno}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{lipsum}

\setdefaultlanguage{english}
\setotherlanguages{urdu}  % this is what breaks the line numbers
\linenumbers


\begin{document}
\lipsum
\end{document}

请注意,它实际上不包含任何乌尔都语文本,只有多语环境。

这是生成的内容(请注意中间的行号): 带有行号与文本重叠的 Lorem ipsum

这是所需的输出(交换urdufrench任何 LTR 语言即可获得): 在此处输入图片描述

任何想法如何解决这一问题?

答案1

bidi包尝试通过在钩子中添加以下代码来确保数字排版在正确的边距begindocument

  \if@RTLmain
    \rightlinenumbers*
  \else
    \leftlinenumbers*
  \fi
  \@ifpackagewith{lineno}{left}{%
    \leftlinenumbers*
  }{}
  \@ifpackagewith{lineno}{right}{%
    \rightlinenumbers*
  }{}

因此,其中一个宏\rightlinenumbers*, 或\leftlinenumbers*被使用并覆盖了该switch选项。您可以通过在文档开头切换回所需的模式来解决这个问题:

\documentclass[11pt,twocolumn]{article}
\usepackage[a4paper,margin=2.5cm,heightrounded=true]{geometry}

\usepackage[switch,mathlines]{lineno}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{lipsum}

\setdefaultlanguage{english}
\setotherlanguages{urdu}  % this is what breaks the line numbers
\linenumbers
\AtBeginDocument{\switchlinenumbers} %% <------ new

\begin{document}
\lipsum
\end{document}

在此处输入图片描述

相关内容