Создание перекрестных ссылок на таблицу или рисунок в rmarkdown в заголовке другого рисунка или таблицы - PullRequest
1 голос
/ 05 мая 2020

Я создаю документ rmarkdown, вяжу в PDF и имею рисунок (рисунок 1) и таблицу (таблица 1), где таблица объясняет рисунок более подробно. У меня нет проблем с присвоением любому из них стандартного заголовка, но я хотел бы изменить заголовок таблицы на «Пояснение к рисунку 1». Есть ли способ сделать это?

Фрагменты кода перечислены ниже, сообщите мне, если мне нужно предоставить дополнительную информацию:

YAML:

- \usepackage{caption} #and several others

output:
  bookdown::pdf_document2:
    keep_tex: no
    latex_engine: xelatex

Фрагменты кода: Рисунок 1:

```{r figure-1, fig.cap="Figure"}
ggplot()
```

Таблица 1:

```{r table, fig.cap="Explanation of Figure \@ref(fig:figure-1)"}
knitr
kableExtra::kable(caption = "Explanation of Figure \@ref(fig:figure-1)")
```

Основное сообщение об ошибке с одним backsla sh: «Ошибка: '@' - это нераспознанный escape-символ. строка "и предлагает, что я забыл заключить в кавычки параметры символов, что неверно.

С двумя обратными косыми чертами документ связывается, но выдает заголовок« Объяснение рисунка reffig: table »

3 обратных косых черты: та же ошибка, что и с 1.

4 обратной косой черты: ошибка: «pando c -citepro c: ссылка на ссылку не найдена.! Ошибка заголовка пакета: \ caption outside float.»

Ценю любые предложения!

1 Ответ

0 голосов
/ 05 мая 2020

Я пробовал много разных подходов текстовые ссылки , подписи кусков, аргумент caption в функции kable, и я уверен, что где-то есть умное решение, так что здесь просто обходной путь с чистым латексом.

Добавьте кусок латекса с label перед фрагментом с цифрой:

```{=latex}
\begin{figure}
\caption{Figure 1}
\label{Fig-1}
``` 
```{r figure-1, echo = FALSE}
ggplot(mtcars) +
  geom_point(aes(cyl, gear))
```
```{=latex}
\end{figure}
``` 

Теперь вы можете ссылаться на Fig-1 в заголовке латекса для таблицы с нормальным кодом латекса \ref{Fig-1}:

```{=latex}
\begin{table}
\caption{Explanation of Figure \ref{Fig-1}}
``` 
```{r table}
kableExtra::kable(x = mtcars)
```

```{=latex}
\end{table}
``` 

Примечания: * На мой взгляд, это просто обходной путь. * Невозможно использовать параметр фрагмента fig.cap = "" и код латекса параллельно

...