我正在尝试利用这解决方案来获取问题列表。
我正在使用 XeTeX,如果我使用非英语作为问题名称——“问题列表”中 hyperref 指向问题的链接将不起作用。
以下是 MWE:
\documentclass{book}
% =====================
%% XeTeX customization:
\usepackage{fontspec} % enagles loading of OpenType fonts
\usepackage{polyglossia} % support for languages
% fonts:
\defaultfontfeatures{Scale=MatchLowercase,Mapping=tex-text} % without this XeLaTeX won't turn "--" into dashes
\setmainfont{Arial}
\setsansfont{Arial}
\setromanfont{Arial}
\setmonofont{DejaVu Sans Mono}
% Russian/English document:
\usepackage{xecyr}
\newfontfamily\cyrillicfont{Arial}
\setmainlanguage{russian}
\setdefaultlanguage{russian}
\setotherlanguage{english}
% =======================
%% hyperref and ntheorem:
\usepackage[hyperref]{ntheorem}
\theoremlisttype{all}
\makeatletter
\newtheoremstyle{problem}
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}
\makeatother
\theoremstyle{problem}
\newtheorem{Задача}{Задача}[chapter]
\usepackage{hyperref}
\begin{document}
\chapter*{List of problems}
\listtheorems{Задача}
\chapter{foo}
\begin{Задача}[Short foo name]
Foo!
\end{Задача}
\chapter{bar}
\begin{Задача}[Short bar name]
Bar!
\end{Задача}
\end{document}
它需要用 进行编译xelatex
。我想要获得可点击的问题列表。
我尝试向 hyperref 添加一些选项:
\hypersetup{xetex,
unicode=true,
pdfencoding=unicode,
bookmarks={true},
}
它不起作用。
编辑:
版本:
ntheorem 1.31
hyperref 6.82q
polyglossia 1.2.1
xecyr 1.0
完整的编译日志是这里。
编辑2:
以下是 egreg 请求的 thm 文件:
\contentsline {Задача}{{Задача}{1.{1}}{Short foo name}}{3}{Задача.1.1}
\contentsline {Задача}{{Задача}{2.{1}}{Short bar name}}{5}{Задача.2.1}
使用我在下面发布的解决方案,同一个文件是
\contentsline {problem}{{Задача}{1.{1}}{Short foo name}}{3}{problem.1.1}
\contentsline {problem}{{Задача}{2.{1}}{Short bar name}}{5}{problem.2.1}
答案1
哦,我解决了:
\documentclass{book}
% =====================
%% XeTeX customization:
\usepackage{fontspec} % enagles loading of OpenType fonts
\usepackage{polyglossia} % support for languages
% fonts:
\defaultfontfeatures{Scale=MatchLowercase,Mapping=tex-text} % without this XeLaTeX won't turn "--" into dashes
\setmainfont{Arial}
\setsansfont{Arial}
\setromanfont{Arial}
\setmonofont{DejaVu Sans Mono}
% Russian/English document:
\usepackage{xecyr}
\newfontfamily\cyrillicfont{Arial}
\setmainlanguage{russian}
\setdefaultlanguage{russian}
\setotherlanguage{english}
% =======================
%% hyperref and ntheorem:
\usepackage[hyperref]{ntheorem}
\theoremlisttype{all}
\makeatletter
\newtheoremstyle{problem}
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}
\makeatother
\theoremstyle{problem}
\newtheorem{problem}{Задача}[chapter]
\usepackage{hyperref}
\begin{document}
\chapter*{List of problems}
\listtheorems{problem}
\chapter{foo}
\begin{problem}[Short foo name]
Foo!
\end{problem}
\chapter{bar}
\begin{problem}[Short bar name]
Bar!
\end{problem}
\end{document}
诀窍是将其problem
作为内部问题名称:
\newtheorem{problem}{Задача}[chapter]
并生成问题列表:
\listtheorems{problem}
示例问题:
\begin{problem}[Short foo name]
Foo!
\end{problem}
编译后,我仍然得到 Задача 作为问题名称。
尽管这解决了问题,但我想说的是,拥有较新的 xelatex 分布的 egreg 根本不会遇到任何问题。