Я создаю документ, используя bookdown. Основная цель - вывод на принтер в формате PDF, поэтому я хочу получить гиперссылки в виде сносок. Для этого я добавил следующие строки в заголовок YAML в index.Rmd.
header-includes:
- \let\oldhref\href
- \renewcommand{\href}[2]{#2\footnote{\url{#1}}}
Это абсолютно не влияет. Если вместо этого я добавляю следующее в файл preamble.tex в каталоге проекта, я получаю желаемое поведение:
\let\oldhref\href
\renewcommand{\href}[2]{#2\footnote{\url{#1}}}
У меня та же проблема при попытке включить пакеты, используя заголовочные включения. Они просто не привыкли, и я получаю ошибки в сборке документа. Опять же, добавление \ usepackage в preamble.tex работает.
Так что мне явно не хватает чего-то, что касается заголовочных включений, но я не знаю, что это такое.
Есть предложения?
Редактировать:
Чтобы воспроизвести это (по крайней мере, \ usepackage версия проблемы), используя последнюю версию RStudio для Windows с последней версией bookdown из CRAN, создайте новый проект Bookdown, используяRStudio и убедитесь, что у вас установлены места размещения пакетов в вашей среде LaTex, затем отредактируйте предоставленный заголовок в index.Rmd, чтобы получить следующее:
---
title: "A Minimal Book Example"
author: "Yihui Xie"
date: "`r Sys.Date()`"
site: bookdown::bookdown_site
documentclass: book
header-includes:
- \usepackage{placeins}
bibliography: [book.bib, packages.bib]
biblio-style: apalike
link-citations: yes
description: "This is a minimal example of using the bookdown package to write a book. The output format for this example is bookdown::gitbook."
---
В файле 01-intro.Rmd добавьте это сразу после кодачтобы создать рисунок:
\FloatBarrier
Используйте вкладку Build Book для создания книги PDF, и вы увидите ошибку:
! Undefined control sequence.
l.179 \FloatBarrier
Помещение оператора \ usepackage в preamble.tex удаляетошибка.