به این خاطر که pdf حروف یونیکد نمیفهمه. باید برای آن ماکرونویسی کرد. دقیقاً همین مشکل با \appendix وجود داشت که حل شد.این جوابی است که مولف hyperref به من داد:
نقل قول
It seems to be a problem of XeTeX/xdvipdfmx or whatever.
The destination string contains a "big character", your
"Persian one". Hyperref uses \Hy@pstringdef in both
cases to transform the destination string to the
PDF string form for the \special.
* In case of \special{pdf:bann ...} the conversion to a
Unicode PDF string in the PDF file is correct, pure luck?
* With \special{pdf:dest (...) ...} the string is written
as UTF-8 in the PDF file.
You can try:
\makeatletter
\def\Hy@pstringdef#1#2{%
\pdfstringdef\MyPstring{#2}%
\let#1\MyPstring
}
\makeatother
\pdfstringdef explicitly converts the string to unicode PDF byte string.
xdvipdfmx complains with warnings, but the PDF file is correct
(at least in my test today).