【问题标题】:Internal section link fails in beamer output of pandoc markdownpandoc markdown 的投影仪输出中的内部部分链接失败
【发布时间】:2015-02-01 16:14:19
【问题描述】:

我已经尝试了this question 的答案,但我无法让Pandoc 中的内部部分链接与Latex Beamer 输出一起使用。

按照Pandoc Documentation,我创建了这个最小的工作示例:

# 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 Beamer pdf 看起来不错,但内部链接 [Section One](#section-one) 无法正常工作。它应该将我带到“第一节”框架,但事实并非如此。我该如何进行这项工作?

编辑:这是-o test.latex 的 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}

【问题讨论】:

  • 对我有用,您使用的是什么 pandoc 版本?另外,试试-s -t beamer -o test.tex,看看生成的.tex是否正常。
  • pandoc 1.13.1 用 texmath 0.8 编译,highlighting-kate 0.5.11。
  • 我已经添加了乳胶输出......它使用 hyperref 来“第一部分”(我正在尝试,所以链接不同),但我无法点击它pdf...

标签: pandoc beamer


【解决方案1】:

我想我已经将它定位到 \documentclass[ignorenonframetext,]{beamer} 中的 ignorenonframetext,它是默认 Pandoc beamer 模板的一部分。

由于\hyperdef{}{part-one}{\section{Part One}\label{part-one}} 不在frame 中,它显然被hyperref 忽略了。

您能否尝试在没有ignorenonframetext 的情况下创建自己的template (pandoc -D beamer > mytemplate.tex),看看是否可以在没有任何不良副作用的情况下工作? (手动测试 .tex 时,我总是必须运行两次 LaTeX 才能使更改完全生效。)

【讨论】:

  • 谢谢!我已经使用了新模板,现在链接在那里,但它把我带到了演示文稿的第一张幻灯片,而不是“第一节”幻灯片......
  • en.wikibooks.org/wiki/LaTeX/Hyperlinks - 在页面底部,有使用投影仪的故障排除说明......基本上,似乎需要使用超目标和超链接。你知道如何实现吗?
  • 您确定发布的 TeX 是从发布的 Markdown 生成的吗?注意\hyperdef{}{part-one} 部分,它们是链接目标。
  • 我已经更新了 LaTex 文件,以防万一出现上述问题。基本上,当我手动将\hyperref[section-one]{Section One} 替换为\hyperlink{section-one}{Section One} 时,它可以完美运行。
  • 我不是 LaTeX 大师(通常我自己使用 ConTeXt),但我认为它应该与指向 \hyperref\hyperref 一起使用......但也许你应该提出这个问题在pandoc-discuss 或他们的 GitHub 存储库或 tex.stackexchange.com 上。
【解决方案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/questions/233408/how-to-hyperlink-to-section-title-frame)。
  2. 手动创建版块页面并为其指定标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多