Как переместить заголовок рисунка снизу вверх? - PullRequest
0 голосов
/ 07 ноября 2018

Извините, если я упускаю из виду что-то очевидное, но я погуглил все, что мог придумать, и не нашел ответа, который работал бы для меня.

Моя проблема в том, что я создаю рисунки с пакетом ggplot2 (с заголовками, созданными в параметрах чанка с "fig.cap = xy") и таблицы с пакетом kable. Теперь дело в том, что при привязке к PDF подписи к таблицам автоматически создаются в верхней части таблицы, а подписи к рисункам - в нижней части. Мне бы хотелось, чтобы мой PDF-файл выглядел одинаково, поэтому я хотел бы, чтобы заголовки таблиц и рисунков были сверху.

То, что было предложено, использовало - \usepackage{floatrow} и - \floatsetup[figure]{capposition=top} в yaml, но когда я пытаюсь это сделать, я получаю эту ошибку при попытке связать с PDF:

"! Package floatrow Error: Do not use float package with floatrow.
(floatrow)                The latter will be skipped.

Error: Failed to compile test.tex. See test.log for more info.
Execution stopped"

В конце журнала есть следующее:

"! ==> Произошла фатальная ошибка, выходной файл PDF не создан!"

Это мои "заголовочные включения" в yaml:

- \usepackage[below]{placeins}
- \usepackage{setspace}
- \usepackage{flafter}
- \usepackage{chngcntr}
- \counterwithout{figure}{section}
- \counterwithout{table}{section}
- \usepackage{microtype}
- \floatplacement{figure}{H}
- \floatplacement{table}{H}
- \usepackage{floatrow}
- \floatsetup[figure]{capposition=top}

А те, которые использовались моими пакетами:

library(plyr)
library(readxl)
library(xlsx)
library(markdown)
library(rmarkdown)
library(knitr)
library(kableExtra)
library(ggplot2)
library(reshape2)
library(httpuv)
formatlibrary(caTools)

Есть ли обходной путь для этого? Или есть другой способ получить подпись к верхней части рисунка?

Edit1: я сузил его до пакета "kableExtra", вызывающего эту проблему, даже если пакет "float" не отображается как загруженный в sessionInfo (). После удаления и всего кода я столкнулся с другой ошибкой:

! Undefined control sequence.
<recently read> \floatplacement 

После удаления

- \floatplacement{figure}{H}
- \floatplacement{table}{H}

из ямля, который он успешно вязал. Заголовок теперь на вершине, но все остальное сейчас беспорядок. Я, вероятно, могу обойтись без пакета "kableExtra", но не без "floatplacement" в yaml.

Будем благодарны за каждое предложение!

1 Ответ

0 голосов
/ 03 февраля 2019

У меня тоже была эта ошибка. Потребовалось некоторое время, чтобы выяснить, но если вы запретите kableExtra загружать какие-либо пакеты LaTeX, тогда не будет конфликта между float и floatrow.

Итак, укажите заголовок YAML как обычно:

output:
  bookdown::pdf_document2:
    fig_caption: yes
header-includes: 
  - \usepackage{floatrow}
  - \floatsetup[figure]{capposition=top}
  - \floatsetup[table]{capposition=top}
  - \floatplacement{figure}{H}
  - \floatplacement{table}{H}
---

И убедитесь, что вы установили эту опцию перед загрузкой kableExtra

options(kableExtra.latex.load_packages = FALSE)
library(kableExtra)

В зависимости от того, как вы используете kableExtra, вам может потребоваться указать дополнительные пакеты в заголовке YAML (например, если вы выделите цвета строк). Полный список пакетов, используемых kableExtra, можно найти на странице 3 здесь .

...