内部部分链接pandoc降价的投影仪输出失败(Internal section link fails

2019-10-21 18:11发布

我试图回答这个问题 ,但我不能让内部部分中的链接Pandoc与合作乳胶默输出。

继Pandoc文档 ,我创造了这个最小的工作示例:

# Part One {#part-one}

## Section One {#section-one} 

### Frame one {#frame-one}

- Items... 

### Frame two {#frame-two}

- Items... 
- Link to [Section One](#section-one)

而且内置它使用:

pandoc \
    --table-of-contents \
    -s -t beamer test.md \
    -o test.pdf

内置LaTex的默PDF看起来不错,但内部链接[Section One](#section-one)只是不工作。 它应该带我去了“一节”框架,但事实并非如此。 如何使这项工作?

编辑:这里是乳胶输出-o test.latex

\documentclass[]{beamer}
\setbeamertemplate{caption}[numbered]
\setbeamertemplate{caption label separator}{:}
\setbeamercolor{caption name}{fg=normal text.fg}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\usepackage{lmodern}
\ifxetex
  \usepackage{fontspec,xltxtra,xunicode}
  \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
  \newcommand{\euro}{€}
\else
  \ifluatex
    \usepackage{fontspec}
    \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
    \newcommand{\euro}{€}
  \else
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
      \fi
\fi
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
% use microtype if available
\IfFileExists{microtype.sty}{\usepackage{microtype}}{}

% Comment these out if you don't want a slide with just the
% part/section/subsection/subsubsection title:
\AtBeginPart{
  \let\insertpartnumber\relax
  \let\partname\relax
  \frame{\partpage}
}
\AtBeginSection{
  \let\insertsectionnumber\relax
  \let\sectionname\relax
  \frame{\sectionpage}
}
\AtBeginSubsection{
  \let\insertsubsectionnumber\relax
  \let\subsectionname\relax
  \frame{\subsectionpage}
}

\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em}  % prevent overfull lines
\setcounter{secnumdepth}{0}

\date{}

\begin{document}

\begin{frame}
\tableofcontents[hideallsubsections]
\end{frame}

\part{Part One}\label{part-one}

\hyperdef{}{section-one}{\section{Section One}\label{section-one}}

\begin{frame}{Frame one}

\begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt
\item
  Items\ldots{}
\end{itemize}

\end{frame}

\begin{frame}{Frame two}

\begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt
\item
  Items\ldots{}
\item
  Link to \hyperref[section-one]{Section One}
\end{itemize}

\end{frame}

\end{document}

Answer 1:

我想我是精确定位到ignorenonframetext\documentclass[ignorenonframetext,]{beamer} ,这是默认Pandoc投影仪模板的一部分。

由于\hyperdef{}{part-one}{\section{Part One}\label{part-one}}是不是一个内部frame ,它是显然是由忽略hyperref宏。

你可以尝试创建自己的模板 ( pandoc -D beamer > mytemplate.tex没有) ignorenonframetext ,看看是否是工作没有任何不良副作用? (当手动测试.tex我一直运行乳胶两次更改才能充分发挥作用。)



Answer 2:

内部链接做的工作,只要他们指向幻灯片(不是部分)。 所以下面应该工作:

# Part One {#part-one}

## Section One {#section-one} 

### Frame one {#frame-one}

- Items... 

### Frame two {#frame-two}

- Items... 
- Link to [Section One](#frame-one)

当然,这种解决方法链接到该部分的第一页,这样(1)一个具有添加幻灯片的部分和一开始的时候要小心(2)如果该部分具有自动部分页面,它不起作用要链接。 在这种情况下,我看到两个选项:

  1. 如果你只是想链接到当前或者下一章节开始页,你可以使用\hyperlinksectionstart{text}\hyperlinksectionstartnext{text} (这似乎在是无证beameruserguide ,看到https://tex.stackexchange.com/问题/ 233408 /如何对超链接到节标题帧 )。
  2. 手动创建栏目页面,并给他们的标签。


文章来源: Internal section link fails in beamer output of pandoc markdown
标签: pandoc beamer