eso-pic 与 bidi 相结合

eso-pic 与 bidi 相结合

我构建了一个文档类,它使用该eso-pic包将内容放置在相对于左上角的每个页面上。现在我在一个(部分)希伯来语的文档中使用了这个文档类。对于希伯来语polyglossia,我根据这个帖子与 XeLaTeX 一起使用。polyglossia使用bidi将页面布局切换为从右到左。

除了左上角的定位外,其他一切都正常。以下示例显示了我的问题:

\documentclass{article}

% set font for hebrew
\usepackage{fontspec}
\setmainfont{DejaVuSans.ttf}

% if polyglossia is commented
\providecommand{\setLTR}{}
\providecommand{\setRTL}{}

% write "test" a few times
\newcounter{loopcounter}
\newcommand{\writetest}{
    \loop
    \ifnum\value{loopcounter}<36
        Test\theloopcounter 
        \stepcounter{loopcounter}
    \repeat
}

% add the test in the top left corner
\usepackage{calc}
\usepackage{picture}
\usepackage{eso-pic}
\AddToShipoutPictureFG{
    \AtPageUpperLeft{%
        % see the bottom of the question for the \put()
        \put(0,0){
            \raisebox{-\height-3pt}{
                % needed to do left to right align and for breaking
                \parbox{\paperwidth}{
                    \setLTR
                    \writetest
                }
            }
        }
    }
}

\usepackage{polyglossia} % <- If those packages are commented the placing
\setmainlanguage{hebrew} % <- of the top left content is correct.

\begin{document}
    תוכן
\end{document}

如果我编译给定的示例,我将得到下图底部所示的结果。但是放置在左上角的内容并不在左上角。

第二张上图是完全相同的示例,但 和\usepackage{polyglossia}\setmainlanguage{hebrew}注释掉了。因此bidi包未加载。角落的文字是正确的。但现在希伯来语文本(当然)不是从右到左的。

在此处输入图片描述

正如您在我提供的代码中看到的,我已经尝试使用\put()(与picture包一起)来修复偏移量。但我找不到它是什么。它应该是这样的-\textwidth-\marginright。但事实并非如此。

请注意,\AddToShipoutPictureFG在 documentclass 中。它与内容不在同一个文件中。我想在各种文件中使用 documentclass,因此尺寸会发生变化。我必须知道相对于页面尺寸的偏移量。不是绝对值。使用put(-11.872cm, 0)不能解决我的问题。

我该如何polyglossiaeso-pic将内容放置在左上角一起使用?

答案1

background虽然这不是您所希望的,但这里有一个使用包和易于实现的解决方案tikz

\documentclass[letterpaper]{article}

% set font for hebrew
\usepackage{fontspec}
\setmainfont{DejaVuSans.ttf}

% write "test" a few times
\newcounter{loopcounter}
\newcommand{\writetest}{
    \loop
    \ifnum\value{loopcounter}<36
        Test\theloopcounter 
        \stepcounter{loopcounter}
    \repeat
}

% add the test in the top left corner
\usepackage[all]{background}
\backgroundsetup{%
  placement = top,
  color = black,
  opacity=1,
  scale = 1,
  vshift=-6pt,
  contents = {%
    \tikz \node [text width=\paperwidth-12pt, align=justify] {\writetest};
  },
}

\usepackage{polyglossia}
\setmainlanguage{hebrew}

\begin{document}
    תוכן
\end{document}

输出

相关内容