1

(May not be minimal) working example:

% use XeLaTeX to compile
\documentclass{beamer}
\usetheme{Berlin}
\title{Test}
\author{Testname}
\institute{Testing University}


%%---------------------------
\begin{document}

\section*{}
\begin{frame}
\titlepage
\end{frame}

\section{SecA}\subsection{sub1}\frame{Hello1a}\frame{Hello1b}\subsection{sub2}\frame{Hello2a}\frame{Hello2b}\subsection{sub3}\frame{Hello3a}\frame{Hello3b}
\section{SecB}\subsection{sub1}\frame{Hello4a}\frame{Hello4b}\subsection{sub2}\frame{Hello5a}\frame{Hello5b}\subsection{sub3}\frame{Hello6a}\frame{Hello6b}
\section{SecC}\subsection{sub1}\frame{Hello7a}\frame{Hello7b}\subsection{sub2}\frame{Hello8a}\frame{Hello8b}\subsection{sub3}\frame{Hello9a}\frame{Hello9b}
\end{document}

When using miniframes beamer outer theme and XeLaTeX to compile, I found that the bullets on the navigation bar are clickable but the positions are shifted. If you click the second bullet on the second line, you’ll enter the frame “Hello3b” but not “Hello2b”, and you can’t even use the navigation bar to enter the page “Hello1b”.

d

If I use pdfLaTeX or LuaLaTeX, then there’s no problem.

Related question and answer: XeLaTeX and Beamer miniframes not compatible, but the answer there didn’t solve the problem. And the related issue and related pull request don’t seem to solve the problem as I’m using TeX Live 2022 and the file beamerouterthemedefault.sty included the changes.

1 Answer 1

1

The problem seems to be that starting somewhere between TL2016 and TL2017, a link in xelatex now occupies the whole height of the line, even if the actual content is much shorter.

Try the following with TL2016 vs. TL2017:

% !TeX TS-program = xelatex

\documentclass{article}

\usepackage{hyperref}
\usepackage{tikz}

\hypersetup{pdfborder=1 1 1}

\begin{document}

\section{test}
\label{test}

\hyperlink{test}{%
.
}

\end{document}

For your beamer example, this means that the link of the different miniframes overlap. As a workaround you could try the following trick by @Ulrike Fischer https://github.com/josephwright/beamer/issues/332#issuecomment-774659976

% !TeX TS-program = xelatex
\documentclass[]{beamer}
\usetheme{Berlin}
\title{Test}
\author{Testname}
\institute{Testing University}

\makeatletter
\renewcommand{\beamer@xelatex@fixminiframes}{%
 \expandafter\ifx\csname XeTeXrevision\endcsname\relax
 \else
 \special{dvipdfmx:catch_phantom true height 0.1cm depth 0cm}%
 \fi
}

\setbeamertemplate{mini frame}
{%
 \beamer@xelatex@fixminiframes
 \begin{pgfpicture}{0pt}{0pt}{0.1cm}{0.1cm}
   \pgfpathcircle{\pgfpoint{0.05cm}{0.05cm}}{0.05cm}
   \pgfusepath{fill,stroke}
 \end{pgfpicture}%
}


\setbeamertemplate{mini frame in current section}
{%
 \beamer@xelatex@fixminiframes
 \begin{pgfpicture}{0pt}{0pt}{0.1cm}{0.1cm}
   \pgfpathcircle{\pgfpoint{0.05cm}{0.05cm}}{0.05cm}
   \pgfusepath{stroke}
 \end{pgfpicture}%
}

\setbeamertemplate{mini frame in current subsection}
{%
 \beamer@xelatex@fixminiframes
 \begin{pgfpicture}{0pt}{0pt}{0.1cm}{0.1cm}
   \pgfpathcircle{\pgfpoint{0.05cm}{0.05cm}}{0.05cm}
   \pgfusepath{stroke}
 \end{pgfpicture}%
}

\makeatother



%%---------------------------
\begin{document}

\section*{}
\begin{frame}
\titlepage
\end{frame}

\section{SecA}\subsection{sub1}\frame{Hello1a}\frame{Hello1b}\subsection{sub2}\frame{Hello2a}\frame{Hello2b}\subsection{sub3}\frame{Hello3a}\frame{Hello3b}
\section{SecB}\subsection{sub1}\frame{Hello4a}\frame{Hello4b}\subsection{sub2}\frame{Hello5a}\frame{Hello5b}\subsection{sub3}\frame{Hello6a}\frame{Hello6b}
\section{SecC}\subsection{sub1}\frame{Hello7a}\frame{Hello7b}\subsection{sub2}\frame{Hello8a}\frame{Hello8b}\subsection{sub3}\frame{Hello9a}\frame{Hello9b}
\end{document}

Update:

This has now been fixed in beamer, see https://github.com/josephwright/beamer/commit/5432ce75540d80157f0a7897f0cd98ca6cc99aa2 . It should be included in beamer v3.68 or newer.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .