hyperref 中与英语和希腊语结合的警告

hyperref 中与英语和希腊语结合的警告

在之前的邮政,我遇到了 hyperref 问题。使用给出的 MWE,我的问题解决了。但当我尝试结合英语和希腊语时,我遇到了警告Token not allowed in a PDF string (Unicode):(hyperref) removing \<def>-command'

请查看以下 MWE:

\documentclass[12pt,a4paper]{book}

\usepackage[T1]{fontenc} % <============================================
\usepackage[utf8]{inputenc}

\usepackage{amsmath,amsthm,amsfonts,amssymb}
\usepackage[english,greek]{babel}
\usepackage{mathtools}
\usepackage{enumerate} 
\usepackage{textcomp}
\usepackage{tcolorbox,xcolor}
\usepackage{array}
\usepackage{extarrows} %για να γράφω πανω από συνεπαγωγές 

\newcommand{\rightarrowdbl}{\rightarrow\mathrel{\mkern-14mu}\rightarrow} % για να γραφω πανω απο βελη επιμορφισμων
\newcommand{\xrightarrowdbl}[2][]{%
  \xrightarrow[#1]{#2}\mathrel{\mkern-14mu}\rightarrow
}

\sloppy %Ρυθμίζει τα overfull/underfile στις γραμμές!

%Φτιάχνει το μέγεθος της γραμματοσειράς μέσα στα math enviroments δηλαδή μέσα στα δολάρια. Το πρώτο bracket είναι για το κείμενο και το δεύτερο για τα δολάρια. Δες και https://texfaq.org/FAQ-mathsize
\usepackage{lmodern}
\usepackage{anyfontsize}
\DeclareMathSizes{12}{13}{7}{5}

\theoremstyle{definition}

% Define amsthm theorems first
\newtheorem{defin}{Ορισμός}[section] % Creates a new counter, number within section
\newtheorem{prt}[defin]{Παρατήρηση} % Putting [defin] in second position uses defin's counter instead of creating a new one
\newtheorem{prts}[defin]{Παρατηρήσεις} % Again share defin's counter
\newtheorem{exmp}[defin]{Παράδειγμα} % etc.
\newtheorem{exmps}[defin]{Παραδείγματα}
\newtheorem*{simiosi}{Σημείωση}

\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\newtcbtheorem[use counter*=defin, number within=section]{mytheo}{Θεώρημα}%
{colback=black!5,colframe=red!35!black,fonttitle=\bfseries}{th} % <=====================
\newtcbtheorem[use counter*=defin, number within=section]{myprop}{Πρόταση}%
{colback=black!5,colframe=red!50!black,fonttitle=\bfseries}{th}
\newtcbtheorem[use counter*=defin, number within=section]{mylem}{Λήμμα}%
{colback=black!5,colframe=red!50!black,fonttitle=\bfseries}{th}
\newtcbtheorem[use counter*=defin, number within=section]{mypor}{Πόρισμα}%
{colback=black!5,colframe=red!35!black,fonttitle=\bfseries}{th}
\newtcbtheorem[use counter*=defin, number within=section]{myax}{Αξίωμα}%
{colback=black!5,colframe=blue!35!black,fonttitle=\bfseries}{th}
\renewcommand{\rmdefault}{udidot}

\usepackage{calrsfs}
\usepackage[unicode]{hyperref} % <======================================


\raggedbottom

\BeforeBeginEnvironment{mylm}{\begin{minipage}{\linewidth}}
\AfterEndEnvironment{mylm}{\end{minipage}\par}

\DeclareMathAlphabet{\pazocal}{OMS}{zplm}{m}{n}



\begin{document}

\title{\Huge Το Θεώρημα των \\ \latintext Hopkins - Levitzki \greektext} % <==========
\author{{\Large ασδφ}\\  ΑΠΘ} % <=======================================
\maketitle{} 
\thispagestyle{empty}
\newpage

%\frontmatter % <============================ resulting in roman numbers
\tableofcontents

%\mainmatter % <========================================================
\chapter{Πρώτα και Μέγιστα Ιδεώδη}
\section{\latintext Maximal - \greektext Μέγιστα}  
\begin{myprop}[label=krmegid]{\latintext Critirion - \greektext Κριτήριο Μέγιστων Ιδεωδών}{}
Έστω $R$ 
ιλθυηβξν
\end{myprop}
Από την Πρόταση \ref{krmegid}

\end{document}

附言:如果您愿意,请随意提出除点赞帖子之外的一些解决方案。谢谢。

在此处输入图片描述

答案1

这里的问题是两个命令的使用\latintext以及\greektext字体/语言的改变。

在某个部分的参数中使用它是罪魁祸首,因为在 pdf 书签中是一个字符或命令\latintext/\greektext未知。

这里的解决方法是使用命令\texorpdfstring{\latintext}{}\texorpdfstring{\greektext}{}在部分参数内像这样:

\section{\texorpdfstring{\latintext}{} Maximal - \texorpdfstring{\greektext}{} Μέγιστα}

完整的代码如下

\documentclass[12pt,a4paper]{book}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{amsmath,amsthm,amsfonts,amssymb}
\usepackage[english,greek]{babel}
\usepackage{mathtools}
\usepackage{enumerate} 
\usepackage{textcomp}
\usepackage{tcolorbox,xcolor}
\usepackage{array}
\usepackage{extarrows} %για να γράφω πανω από συνεπαγωγές 

\newcommand{\rightarrowdbl}{\rightarrow\mathrel{\mkern-14mu}\rightarrow} % για να γραφω πανω απο βελη επιμορφισμων
\newcommand{\xrightarrowdbl}[2][]{%
  \xrightarrow[#1]{#2}\mathrel{\mkern-14mu}\rightarrow
}

\sloppy %Ρυθμίζει τα overfull/underfile στις γραμμές!

%Φτιάχνει το μέγεθος της γραμματοσειράς μέσα στα math enviroments δηλαδή μέσα στα δολάρια. Το πρώτο bracket είναι για το κείμενο και το δεύτερο για τα δολάρια. Δες και https://texfaq.org/FAQ-mathsize
\usepackage{lmodern}
\usepackage{anyfontsize}
\DeclareMathSizes{12}{13}{7}{5}

\theoremstyle{definition}

% Define amsthm theorems first
\newtheorem{defin}{Ορισμός}[section] % Creates a new counter, number within section
\newtheorem{prt}[defin]{Παρατήρηση} % Putting [defin] in second position uses defin's counter instead of creating a new one
\newtheorem{prts}[defin]{Παρατηρήσεις} % Again share defin's counter
\newtheorem{exmp}[defin]{Παράδειγμα} % etc.
\newtheorem{exmps}[defin]{Παραδείγματα}
\newtheorem*{simiosi}{Σημείωση}

\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\newtcbtheorem[use counter*=defin, number within=section]{mytheo}{Θεώρημα}%
{colback=black!5,colframe=red!35!black,fonttitle=\bfseries}{th}
\newtcbtheorem[use counter*=defin, number within=section]{myprop}{Πρόταση}%
{colback=black!5,colframe=red!50!black,fonttitle=\bfseries}{th}
\newtcbtheorem[use counter*=defin, number within=section]{mylem}{Λήμμα}%
{colback=black!5,colframe=red!50!black,fonttitle=\bfseries}{th}
\newtcbtheorem[use counter*=defin, number within=section]{mypor}{Πόρισμα}%
{colback=black!5,colframe=red!35!black,fonttitle=\bfseries}{th}
\newtcbtheorem[use counter*=defin, number within=section]{myax}{Αξίωμα}%
{colback=black!5,colframe=blue!35!black,fonttitle=\bfseries}{th}
\renewcommand{\rmdefault}{udidot}

\usepackage{calrsfs}
\usepackage[unicode]{hyperref}


\raggedbottom

\BeforeBeginEnvironment{mylm}{\begin{minipage}{\linewidth}}
\AfterEndEnvironment{mylm}{\end{minipage}\par}

\DeclareMathAlphabet{\pazocal}{OMS}{zplm}{m}{n}



\begin{document}

\title{\Huge Το Θεώρημα των \\ \latintext Hopkins - Levitzki \greektext}
\author{{\Large ασδφ}\\  ΑΠΘ}
\maketitle{} 
\thispagestyle{empty}
\newpage

%\frontmatter
\tableofcontents

%\mainmatter
\chapter{Πρώτα και Μέγιστα Ιδεώδη}
\section{\texorpdfstring{\latintext}{} Maximal - \texorpdfstring{\greektext}{} Μέγιστα}   % <=====================
\begin{myprop}[label=krmegid]{\latintext Critirion - \greektext Κριτήριο Μέγιστων Ιδεωδών}{}
Έστω $R$ 
ιλθυηβξν
\end{myprop}
Από την Πρόταση \ref{krmegid}

\end{document}

您会得到以下结果,但没有任何警告:

生成的 pdf

答案2

如果您使用 Babel 机制将文本切换为英语(这也将提供正确的连字符),则可以避免该错误:

\documentclass[12pt]{scrbook}
\usepackage{lmodern}
\usepackage[english,main=greek]{babel}
\babeltags{english = english}
\usepackage[unicode]{hyperref}

\begin{document}

\title{Το Θεώρημα των \\ \textenglish{Hopkins - Levitzki}}
\author{ασδφ ΑΠΘ}
\maketitle

\frontmatter
\tableofcontents

\mainmatter
\chapter{Πρώτα και Μέγιστα Ιδεώδη}
\section{\textenglish{Maximal} -- Μέγιστα} 
Από την Πρόταση
\end{document}

相关内容