想要在 ToC、LoF 和 LoT 上添加超链接,但使用 Hyperref 时出错

想要在 ToC、LoF 和 LoT 上添加超链接,但使用 Hyperref 时出错

我想让目录、LoF 和 LoT 上的章节、部分、小节可点击。我读过一些可能的重复项,但我不满意,它们也没有回答我的问题。他们没有提到如何做到这一点,而且每当我仅添加时,我的操作都会出错\usepackage{hyperref}。顺便说一下,错误消息是:

未定义控制序列 \tableofcontents

未定义控制序列 \tableofcontents

未定义控制序列 \tableofcontents

检测到旧的 toc 文件,未使用;再次运行 LaTeX。

我希望当我点击图表列表时,它会直接指向图表。到目前为止,我还没有找到相关内容。

我不知道这是如何可能的,因为我在我的 ToC 上使用了很多自定义。

无论如何,这是我的 MWE。由于我的文档被分成几个部分,无法将它们全部包含在这里,因此无法编译。很抱歉浪费了您的时间,但希望您能帮助我。谢谢。

编辑 : 日志文件显示 \MakeUppercase UnsupportedInPdfStrings

\documentclass[a4paper,12pt,oneside,openany]{book}
\usepackage{pgf, tikz}
\usepackage[a4paper, inner=4cm, outer=3cm, top=4cm, bottom=3cm]{geometry}
\usepackage{geometry}
\usepackage[onehalfspacing]{setspace}
\usepackage{fancyhdr}
\usepackage{titlesec}
\usepackage{setspace}
\usepackage[titles]{tocloft}
\usepackage{tocbibind}
\usepackage{indentfirst}
\usepackage{blindtext}
\usepackage{tocloft}
\usepackage{etoolbox}
\usepackage[none]{hyphenat}
\sloppy
\usepackage{times}
\usepackage{enumitem}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amsthm}
\usepackage[utf8]{inputenc}
\usepackage{array}
\usepackage[column=O]{cellspace}
\usepackage{caption}
\usepackage{afterpage}
\usepackage{mathtools}
\usepackage{subcaption}
\usepackage{wrapfig}
\usepackage{cancel}
\usepackage{longtable}
\usepackage[indonesian]{babel}
\usepackage{lipsum}
\usepackage{pdflscape}
\usepackage{makecell} 
\usepackage{ragged2e}
\usepackage{natbib}
%\usepackage[]{hyperref}
%
%\hypersetup{
%   linktoc=all
%}

\newlist{ColEnum}{enumerate}{1}
\setlist[ColEnum,1]{label = \arabic*), left = 0pt, nosep, 
    before= {\begin{minipage}[t]{\hsize}\RaggedRight},
        after = {\end{minipage}}}

\DeclareMathOperator{\Res}{Res}
\numberwithin{equation}{section}

\setlength{\cellspacetoplimit}{5pt}
\setlength{\cellspacebottomlimit}{4pt}
\setlength\bibhang{25pt}

\theoremstyle{plain}
\newtheorem{thm}{Teorema}[section]
\newtheorem{cl}{Corollary}[section]
\newtheorem{lm}{Lemma}[section]

\theoremstyle{definition}
\newtheorem{defn}{Definisi}[section]
\newtheorem{exmp}{Contoh}
\renewcommand{\proofname}{\rm\bf{Bukti}}

\renewcommand\tablename{Tabel}
\renewcommand\figurename{Gambar}


\patchcmd{\section}{\bfseries}{\bfseries\boldmath}{}{}
\patchcmd{\tableofcontents}{\contentsname}{\MakeUppercase\contentsname}{}{}
\patchcmd{\listoffigures}{\listfigurename}{\MakeUppercase\listfigurename}{}{}
\patchcmd{\listoftables}{\listtablename}{\MakeUppercase\listtablename}{}{}
\setlength{\cftbeforesecskip}{10pt}
\setlength{\cftbeforesubsecskip}{10pt}

\fancyhf{}
\cfoot{\thepage}
\linespread{1.5}
\pagestyle{plain}
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\renewcommand{\cftdotsep}{1}
\renewcommand\cftchapdotsep{\cftdotsep}
\renewcommand{\cftchapfont}{\bfseries}
\renewcommand{\cftsecfont}{\bfseries}
\renewcommand{\cftchappagefont}{}
\titleformat{\chapter}[block]
    {\normalfont\bfseries\centering}
    {}{0pt}{}
\titleformat{\section}
    {\normalfont\bfseries}
    {\thesection}{1em}{}
\titleformat{\subsection}
    {\normalfont\bfseries}
    {\thesubsection}{1em}{}
\titlespacing*{\chapter}{0pt}{0pt}{20pt}
\titlespacing*{\section}{0pt}{0pt}{0pt}
\titlespacing*{\subsection}{0pt}{0pt}{0pt}

\renewcommand{\contentsname}{DAFTAR ISI}
\renewcommand{\listtablename}{DAFTAR TABEL}
\renewcommand{\listfigurename}{DAFTAR GAMBAR}
\newcommand\dd{\mathop{}\!\mathrm{d}}

%\addtocontents{toc}{\protect\null\protect\hfill{Halaman}\protect\par}
\setlength\parindent{1.25cm} 

\addtocontents{toc}{~\hfill{Halaman}\par}
%\addtocontents{toc}{\protect\afterpage{~\hfill{Halaman}\par\medskip}}
\addtocontents{lot}{~\hfill{Halaman}\par}
\addtocontents{lof}{~\hfill{Halaman}\par}

\makeatletter
\def\ttl@mkchap@i#1#2#3#4#5#6#7{%
    \ttl@assign\@tempskipa#3\relax\beforetitleunit
    \vspace{\@tempskipa}%<<<<<< REMOVE THE * AFTER \vspace
    \global\@afterindenttrue
    \ifcase#5 \global\@afterindentfalse\fi
    \ttl@assign\@tempskipb#4\relax\aftertitleunit
    \ttl@topmode{\@tempskipb}{%
        \ttl@select{#6}{#1}{#2}{#7}}%
    \ttl@finmarks  % Outside the box!
    \@ifundefined{ttlp@#6}{}{\ttlp@write{#6}}}
\makeatother

\begin{document}

\clearpage
\thispagestyle{empty}
\include{cover1}
\frontmatter %

\pagestyle{fancy}   
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\bibname}{DAFTAR PUSTAKA}

\include{cover2}
\begin{spacing}{0.1}
    \tableofcontents
    
\end{spacing}
\begin{spacing}{1.5}
    \listoffigures
    \listoftables
\end{spacing}

\mainmatter 
\pagestyle{fancyplain}
\fancyhf{}
\fancyhead[R]{\thepage}
\renewcommand{\headrulewidth}{0pt}
\include{bab1}
\include{bab2}
\include{bab3}

\backmatter
\bibliography{dafpus}
\bibliographystyle{unejstyle}
\nocite{*}
\include{lampiran}


\end{document}

答案1

\texorpdfstring对我来说很管用。我只需要在我的\patchcmd

因此就变成:

\patchcmd{\tableofcontents}{\contentsname}{\texorpdfstring{\MakeUppercase\contentsname}{\contentsname}}{}{}
\patchcmd{\listoffigures}{\listfigurename}{\texorpdfstring{\MakeUppercase\listfigurename}{\listfigurename}}{}{}
\patchcmd{\listoftables}{\listtablename}{\texorpdfstring{\MakeUppercase\listtablename}{\listtablename}}{}{}

相关内容