jgm / pandoc

Universal markup converter
https://pandoc.org
Other
33.14k stars 3.3k forks source link

Beamer table compilation failure after #9022 #9914

Open ccaprani opened 5 days ago

ccaprani commented 5 days ago

Here is an MWE:

---
title:
- My title
author:
- My name
slide-level: 1
---

# Section

## Subsection

| Col 1 | Col 2 |
|-------|-------|
| data  | data  |

## Subsection

Next slide

Compiling to beamer prior to #9022 gives:

```latex % Options for packages loaded elsewhere \PassOptionsToPackage{unicode}{hyperref} \PassOptionsToPackage{hyphens}{url} % \documentclass[ ignorenonframetext, ]{beamer} \usepackage{pgfpages} \setbeamertemplate{caption}[numbered] \setbeamertemplate{caption label separator}{: } \setbeamercolor{caption name}{fg=normal text.fg} \beamertemplatenavigationsymbolsempty % Prevent slide breaks in the middle of a paragraph \widowpenalties 1 10000 \raggedbottom \setbeamertemplate{part page}{ \centering \begin{beamercolorbox}[sep=16pt,center]{part title} \usebeamerfont{part title}\insertpart\par \end{beamercolorbox} } \setbeamertemplate{section page}{ \centering \begin{beamercolorbox}[sep=12pt,center]{part title} \usebeamerfont{section title}\insertsection\par \end{beamercolorbox} } \setbeamertemplate{subsection page}{ \centering \begin{beamercolorbox}[sep=8pt,center]{part title} \usebeamerfont{subsection title}\insertsubsection\par \end{beamercolorbox} } \AtBeginPart{ \frame{\partpage} } \AtBeginSection{ \ifbibliography \else \frame{\sectionpage} \fi } \AtBeginSubsection{ \frame{\subsectionpage} } \usepackage{amsmath,amssymb} \usepackage{iftex} \ifPDFTeX \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{textcomp} % provide euro and other symbols \else % if luatex or xetex \usepackage{unicode-math} % this also loads fontspec \defaultfontfeatures{Scale=MatchLowercase} \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} \fi \usepackage{lmodern} \ifPDFTeX\else % xetex/luatex font selection \fi % Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available \usepackage[]{microtype} \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts }{} \makeatletter \@ifundefined{KOMAClassName}{% if non-KOMA class \IfFileExists{parskip.sty}{% \usepackage{parskip} }{% else \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt}} }{% if KOMA class \KOMAoptions{parskip=half}} \makeatother \usepackage{xcolor} \newif\ifbibliography \usepackage{longtable,booktabs,array} \usepackage{calc} % for calculating minipage widths \usepackage{caption} % Make caption package work with longtable \makeatletter \def\fnum@table{\tablename~\thetable} \makeatother \setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} \setcounter{secnumdepth}{-\maxdimen} % remove section numbering \ifLuaTeX \usepackage{selnolig} % disable illegal ligatures \fi \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{same} \hypersetup{ pdfauthor={My name}, hidelinks, pdfcreator={LaTeX via pandoc}} \title{My title} \author{My name} \date{} \begin{document} \frame{\titlepage} \section{Section}\label{section} \begin{frame}{Subsection} \protect\hypertarget{subsection}{} \begin{longtable}[]{@{}ll@{}} \toprule\noalign{} Col 1 & Col 2 \\ \midrule\noalign{} \endhead data & data \\ \bottomrule\noalign{} \end{longtable} \end{frame} \begin{frame}{Subsection} \protect\hypertarget{subsection-1}{} Next slide \end{frame} \end{document} ```

After #9022, we get:

```latex % Options for packages loaded elsewhere \PassOptionsToPackage{unicode}{hyperref} \PassOptionsToPackage{hyphens}{url} % \documentclass[ ignorenonframetext, ]{beamer} \usepackage{pgfpages} \setbeamertemplate{caption}[numbered] \setbeamertemplate{caption label separator}{: } \setbeamercolor{caption name}{fg=normal text.fg} \beamertemplatenavigationsymbolsempty % Prevent slide breaks in the middle of a paragraph \widowpenalties 1 10000 \raggedbottom \setbeamertemplate{part page}{ \centering \begin{beamercolorbox}[sep=16pt,center]{part title} \usebeamerfont{part title}\insertpart\par \end{beamercolorbox} } \setbeamertemplate{section page}{ \centering \begin{beamercolorbox}[sep=12pt,center]{part title} \usebeamerfont{section title}\insertsection\par \end{beamercolorbox} } \setbeamertemplate{subsection page}{ \centering \begin{beamercolorbox}[sep=8pt,center]{part title} \usebeamerfont{subsection title}\insertsubsection\par \end{beamercolorbox} } \AtBeginPart{ \frame{\partpage} } \AtBeginSection{ \ifbibliography \else \frame{\sectionpage} \fi } \AtBeginSubsection{ \frame{\subsectionpage} } \usepackage{amsmath,amssymb} \usepackage{iftex} \ifPDFTeX \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{textcomp} % provide euro and other symbols \else % if luatex or xetex \usepackage{unicode-math} % this also loads fontspec \defaultfontfeatures{Scale=MatchLowercase} \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} \fi \usepackage{lmodern} \ifPDFTeX\else % xetex/luatex font selection \fi % Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available \usepackage[]{microtype} \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts }{} \makeatletter \@ifundefined{KOMAClassName}{% if non-KOMA class \IfFileExists{parskip.sty}{% \usepackage{parskip} }{% else \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt}} }{% if KOMA class \KOMAoptions{parskip=half}} \makeatother \usepackage{xcolor} \newif\ifbibliography \usepackage{longtable,booktabs,array} \usepackage{calc} % for calculating minipage widths \usepackage{caption} % Make caption package work with longtable \makeatletter \def\fnum@table{\tablename~\thetable} \makeatother \setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} \setcounter{secnumdepth}{-\maxdimen} % remove section numbering \usepackage{bookmark} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{same} \hypersetup{ pdfauthor={My name}, hidelinks, pdfcreator={LaTeX via pandoc}} \title{My title} \author{My name} \date{} \begin{document} \frame{\titlepage} \section{Section}\label{section} \begin{frame}{Subsection} \phantomsection\label{subsection} \begin{longtable}[]{@{}ll@{}} \toprule\noalign{} Col 1 & Col 2 \\ \midrule\noalign{} \endhead data & data \\ \bottomrule\noalign{} \end{longtable} \end{frame} \begin{frame}{Subsection} \phantomsection\label{subsection-1} Next slide \end{frame} \end{document} ```

The problematic difference is the hypertarget code: \protect\hypertarget{subsection-1}{} changed to \phantomsection\label{subsection}. The small diff with the bookmark package has no effect.

The post-#9022 compilation fails with:

! Undefined control sequence.
\@currentHref ->table.\theHtable

l.122 \end{frame}

The hyperref package doesn't play well with longtable and should be added as a package last I think.

jgm commented 4 days ago

I just tried this with the latest release:

% pandoc 9914.md -o 9914.pdf -t beamer

It finished with no problem, and the PDF looks correct. What pandoc version are you using? Perhaps you're using a custom template?