适用于从右到左语言的 Todonotes

适用于从右到左语言的 Todonotes

我想为用阿拉伯语写的数学讲座笔记添加一些边注说明,我正在使用 todonotes 包。问题是注释文本没有调整好。我想过更改每个注释的文本宽度,但这个选项\todo[textwidth=4cm]不起作用。此外,todo 注释中的阿拉伯语文本被调整到左侧而不是右侧。有什么帮助吗?

\documentclass[12pt,a4paper]{book}
%\usepackage[force]{filehook}
% Page format
\usepackage[left=5cm,right=5cm,top=3cm,bottom=2.5cm,
headsep=1.5cm,headheight=1cm]{geometry}

\usepackage{amsfonts}
\usepackage[x11names]{xcolor}
\usepackage[framemethod=tikz]{mdframed}
\usetikzlibrary{calc}
\usepackage{todonotes}


\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[calendar=gregorian,hijricorrection=1,locale=morocco]{arabic} 

\defaultfontfeatures{Ligatures=TeX,%
Mapping=tex-text,%
AutoFakeSlant=0.2%Simulate Italic%
}
\newfontfamily\arabicfont[Script = Arabic,Scale=1.5]{Scheherazade} 

\begin{document}


\section{مجموعات الأعداد}

 قسمة عددين صحيحين هو عدد نسبي، أي أنه عنصر من مجموعة 
{\bfseries الأعداد النسبية}:
\todo{\RL{ مجموعة العناصر 
$\frac{m}{n}$
 حيث $m$ عدد صحيح و $n$ عدد طبيعي.
 }}
$$
\mathbb{Q} = \left\{\frac{m}{n} : m\in \mathbb{Z} , n\in\mathbb{N}\right\}. 
$$

\end{document}

答案1

您可以像这样 添加align=right样式notestyle

\tikzset{notestyle/.append style={
    align=right}}

但这还不够,因为命令的环境remember picture选项,你应该用tikzpikture\@todonotes@drawMarginNoterenewcommand

代码

\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[calendar=gregorian,hijricorrection=1,locale=morocco]{arabic} 

\defaultfontfeatures{Ligatures=TeX,%
Mapping=tex-text,%
AutoFakeSlant=0.2%Simulate Italic%
}
\newfontfamily\arabicfont[Script = Arabic,Scale=1.5]{Amiri} 


\makeatletter
\tikzset{notestyle/.append style={
    align=right}}


\renewcommand{\@todonotes@drawMarginNote}{%
\if@todonotes@dviStyle%
    \begin{tikzpicture}[remember picture]%
        \draw node[notestyle] {};%
    \end{tikzpicture}\\%
    \begin{minipage}{\@todonotes@textwidth}%
    \if@todonotes@authorgiven%
      \@todonotes@sizecommand \@todonotes@author \@todonotes@text%
    \else%
      \@todonotes@sizecommand \@todonotes@text%
    \fi%
    \end{minipage}\\%
    \begin{tikzpicture}[remember picture]%
        \draw node[notestyle] (inNote) {};%
    \end{tikzpicture}%
\else%
    \let\originalHbadness\hbadness%
    \hbadness 100000%
    \begin{tikzpicture}[remember picture,baseline=(X.base)]%
        \node(X){\vphantom{X}};%
        \draw node[notestyle,font=\@todonotes@sizecommand,anchor=north] (inNote) at (X.north)%
            {\@todonotes@text};%
        \if@todonotes@authorgiven%
            \draw node[notestyle,font=\@todonotes@sizecommand,anchor=north] (inNote) at (X.north)%
                {\@todonotes@sizecommand\@todonotes@author};%
            \node(Y)[below=of X]{};%
            \draw node[notestyle,font=\@todonotes@sizecommand,anchor=north] (inNote) at (X.south)%
                {\@todonotes@text};%
        \else%
            \draw node[notestyle,font=\@todonotes@sizecommand,anchor=north] (inNote) at (X.north)%
                {\@todonotes@text};%
        \fi%
    \end{tikzpicture}%
    \hbadness \originalHbadness%
\fi}
\makeatother

\begin{document}


\section{مجموعات الأعداد}

 قسمة عددين صحيحين هو عدد نسبي، أي أنه عنصر من مجموعة 
{\bfseries الأعداد النسبية}:
\todo{\RL{مجموعة العناصر 
$\frac{m}{n}$
 حيث $m$ عدد صحيح و $n$ عدد طبيعي.
 }}
$$
\mathbb{Q} = \left\{\frac{m}{n} : m\in \mathbb{Z} , n\in\mathbb{N}\right\}. 
$$

\end{document}

输出

在此处输入图片描述

答案2

不幸的是,[textwidth=4cm]这似乎只是一个包选项,因此您只能在加载包时设置它\usepackage[textwidth=4cm]{todonotes}。但您可以调整 tikz 样式的todonotes使用(notestyleraw)来调整宽度,并将其与您想要具有不同宽度的注释一起放入一个组中。

\documentclass{article}
\usepackage{todonotes}
\usepackage{blindtext}
\begin{document}
\blindtext
\todo{A regular note}
\blindtext
{% text width group start
\tikzstyle{notestyleraw} += [text width=4cm]%
\todo{A note with a custom width.}
}% text width group end
\blindtext
\todo{A regular note}
\end{document}

输出:

待办事项

相关内容