问题:
我需要通过 \href{}{} 将 URL 显示在演示文稿中的蓝色文本中。但是,使用 \hypersetup{colorlinks=true,linkcolor = blue} 会更改部分中的文本、标题中的子部分文本以及脚注中的标题文本。由于区域的背景颜色为蓝色,因此这些更改是有问题的。
需要:
我真的希望对章节和小节进行更好的修改,按照第一个可能的解决方案的顺序使用 \renewcommand\insertshortitle,或者至少指出我应该走的方向。
目标是能够使用修改来创建 beamer 主题。
可能的修复(有点):
我找到了一些想法并实施了它们,取得了不同的成功,发现禁用自动着色链接是可行的。这导致我使用 \textcolor{blue}{\href{}{}},但这并不理想。
有一个建议的解决方案,其简称为:
\makeatletter
\renewcommand\insertshorttitle[1][]{%
\beamer@setupshort{#1}%
\let\thanks=\@gobble%
\ifnum\c@page=1%
\hyperlinkpresentationend{\beamer@insertshort{\usebeamercolor*[fg]{title in head/foot}\beamer@shorttitle}}%
\else%
\hyperlinkpresentationstart{\beamer@insertshort{\usebeamercolor*[fg]{title in head/foot}\beamer@shorttitle}}%
\fi}
\makeatother
我无法使用 \insertsectionhead 和 \insertsubsectionhead 来实现这一点。我更愿意采用这种方法,而不是为 \href 定义一种新方法。
关于如何禁用链接,这里还有另一个想法:如何从页脚中的标题中删除链接
主要思想是使用:\let\hyperlink\@secondoftwo
抑制链接的创建。
我使用标题标记
\setbeamertemplate{headline}
{
\leavevmode%
\hbox{%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex,right,rightskip=1em]{section in head/foot}%
\usebeamerfont{subsection in head/foot}\hspace*{2ex} \let\hyperlink\@secondoftwo\insertsectionhead
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex,left,leftskip=1em]{subsection in head/foot}%
\usebeamerfont{section in head/foot} \let\hyperlink\@secondoftwo\insertsubsectionhead \hspace*{2ex}
\end{beamercolorbox}}%
\vskip0pt%
}
但是,这种方法会将 secondoftwo 附加到节和子节字符串中。
我遇到并实施的最后一个选项似乎解决了这个问题,唯一的缺点是我必须包含一个新包(etoolbox)。这个想法来自:
MakeUppercase 和 Beamer 的 insertsectionhead 错误
\usepackage{etoolbox}
\makeatletter
\patchcmd{\beamer@section}
{\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
{\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{\usebeamercolor*[fg]{section in head/foot}#1}}}
{}{}
\patchcmd{\beamer@subsection}
{\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
{\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{\usebeamercolor*[fg]{subsection in head/foot}#1}}}
{}{}
\makeatother
MWE(问题可视化)
\documentclass{beamer}
%normal
\usepackage{color}
\usepackage{beamerthemebars}
\usepackage{lmodern}
\usetheme{AnnArbor}
\usecolortheme{wolverine}
\setbeamercolor{palette tertiary}{bg=blue,fg=white}
\setbeamercolor{palette secondary}{bg=gray,fg=white}
\setbeamercolor{palette primary}{bg=pink,fg=white}
\beamertemplatenavigationsymbolsempty %hides navigation.
\usepackage{hyperref}
\usepackage{amssymb,amsmath}
\author[Coatless]{Lack of Coat}
\institute[Uni]{Uni All}
\date[Date]{\today}
\title[Title]{Fake Presentation}
\begin{document}
\section{Section naught}
\subsection{Subsection Ya}
\hypersetup{colorlinks=true,urlcolor=blue,linkcolor = blue}
% link color causes the section, subsection, and title to fg (font color) to be blue
\frame{\titlepage}
\hypersetup{colorlinks=false,urlcolor=blue,linkcolor = white}
% link color causes the section, subsection, and title to fg (font color) to be white
\frame{\titlepage}
\end{document}
预览:
答案1
您可以使用
\hypersetup{colorlinks,urlcolor=blue}
\addtobeamertemplate{headline}{\hypersetup{linkcolor=.}}{}
\addtobeamertemplate{footline}{\hypersetup{linkcolor=.}}{}
将 设置为模板内的linkcolor
当前颜色并。.
headline
footline
代码:
\documentclass[]{beamer}
\usepackage{beamerthemebars}
\usepackage{lmodern}
\usetheme{AnnArbor}
\usecolortheme{wolverine}
\setbeamercolor{palette tertiary}{bg=blue,fg=white}
\setbeamercolor{palette secondary}{bg=gray,fg=white}
\setbeamercolor{palette primary}{bg=pink,fg=white}
\beamertemplatenavigationsymbolsempty %hides navigation.
\hypersetup{colorlinks,urlcolor=blue}
\addtobeamertemplate{headline}{\hypersetup{linkcolor=.}}{}
\addtobeamertemplate{footline}{\hypersetup{linkcolor=.}}{}
\author[Coatless]{Lack of Coat}
\institute[Uni]{Uni All}
\date[Date]{\today}
\title[Title]{Fake Presentation}
\begin{document}
\section{Section naught}
\subsection{Subsection Ya}
\frame{\titlepage}
\begin{frame}{First Frame}
\href{http://tex.stackexchange.com/}{StackExchange}
\end{frame}
\end{document}
此外,如果只需要为 URL 着色,那么可能性会更短:
\hypersetup{colorlinks,allcolors=.,urlcolor=blue}
答案2
类似的问题是这里。
定义一个新的宏\newhref
,您可以在其中指定文本颜色,或者使用默认颜色(例如蓝色)
\newcommand{\newhref}[3][blue]{\href{#2}{\textcolor{#1}{#3}}}
并像使用它一样
\newhref{https://tex.stackexchange.com/}{StackExchange} % to get the default (blue) link - 2nd line
\newhref[red]{https://tex.stackexchange.com/}{StackExchange} % to get red link - 1st line
因此在您的文档中:
\documentclass{beamer}
\usepackage{color}
\usepackage{beamerthemebars}
\usepackage{lmodern}
\usetheme{AnnArbor}
\usecolortheme{wolverine}
\setbeamercolor{palette tertiary}{bg=blue,fg=white}
\setbeamercolor{palette secondary}{bg=gray,fg=white}
\setbeamercolor{palette primary}{bg=pink,fg=white}
\beamertemplatenavigationsymbolsempty %hides navigation.
\usepackage{hyperref}
\usepackage{amssymb}
\usepackage{amsmath}
% HERE IS THE DEFINITION
\newcommand{\newhref}[3][blue]{\href{#2}{\textcolor{#1}{#3}}}
\author[Coatless]{Lack of Coat}
\institute[Uni]{Uni All}
\date[Date]{\today}
\title[Title]{Fake Presentation}
\begin{document}
\section{Section naught}
\subsection{Subsection Ya}
% HERE IS THE TEXT
\newhref[red]{https://tex.stackexchange.com/}{StackExchange}
\newhref{https://tex.stackexchange.com/}{StackExchange}
\frame{\titlepage}
\end{document}