<div dir="ltr">The same kind of isssue existed with the margins in the bibliography environment and they can be avoided by using LTRitems and RTLitems environments. To fix lists bidirectionallly, bidi redefines \list as follow:<br>
<br>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<br>\def\list#1#2{%<br>  \ifnum \@listdepth >5\relax<br>    \@toodeep<br>  \else<br>    \global\advance\@listdepth\@ne<br>  \fi<br>  \rightmargin\z@<br>  \listparindent\z@<br>
  \itemindent\z@<br>  \csname @list\romannumeral\the\@listdepth\endcsname<br>  \def\@itemlabel{#1}%<br>  \let\makelabel\@mklab<br>  \@nmbrlistfalse<br>  #2\relax<br>  \@trivlist<br>  \parskip\parsep<br>  \parindent\listparindent<br>
  \advance\linewidth -\rightmargin<br>  \advance\linewidth -\leftmargin<br>  \if@RTL<br>    \advance\@totalleftmargin \rightmargin<br>  \else<br>    \advance\@totalleftmargin \leftmargin<br>  \fi<br>  \parshape \@ne \@totalleftmargin \linewidth<br>
  \ignorespaces}<br>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<br><br>The most important part of this redefinition is:<br><br>  \if@RTL<br>
    \advance\@totalleftmargin \rightmargin<br>
  \else<br>
    \advance\@totalleftmargin \leftmargin<br>
  \fi<br><br>So if your direction is RTL, you add \rightmargin otherwise \leftmargin to \@totalleftmargin. Itemize, enumerate and so verse uses lists. Now imagin you have something like this:<br><br>\begin{verse}<br>some text<br>
<br>\setRTL<br>some text<br>\end{verse}<br><br>Once you start the verse environment, then you already have started the list environment and since your directional is LTR first, you add \leftmargin to \@totalleftmargin but then you make text RTL, and so what should it do? do you get the idea? This is the kind of bidirectionality that gets complicated and it needs more, so that is why I have implemented RTLitems and LTRitems in bidi for itemize, enumerate, description and thebibliography environment.<br>
<br></div>