在之前的邮政,我遇到了 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}
您会得到以下结果,但没有任何警告:
答案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}