2014-09-25 2 views
2

Я создаю документ PDF с Rmarkdown, в пределах которого я хочу, чтобы вручную определял цифры цифр.Заменить автоматическую нумерацию титров inrmarkdown/knitr/pdf

Ниже приведен пример фрагмента:

```{r chunk26, fig.cap = "Fig. 5.3 My figure caption"} 
plot(1, 1) 
``` 

Я использую специальную нумерацию, чтобы следовать главы моего документа.

Проблема в том, что когда я вязать PDF, перед каждой подписью автоматически добавляется «Рисунок X:». В результате, мои рисункам выглядеть как в этом примере:

Example of problem with the figure captions

Примечание Я использовал следующие параметры в начале моего rmarkdown файла:

output: 
    pdf_document: 
    fig_caption: yes 

Мой вопрос поэтому это:

Можно ли удалить автоматическую генерацию «Рисунок X» до того, как fi gure caption при создании PDF-файла с использованием rmarkdown/knitr?

+1

Как формируется рисунок 26? Это не по умолчанию, т. Е. Если я скопирую и вставляю код в новый rmarkdown, я не получаю автоматическую нумерацию. Я предполагаю, что у вас есть какие-то дополнительные параметры knitr, где-то, которые это делают. – rawr

+0

Да, это правильно. Я добавил 'fig_caption: yes'; в противном случае я не могу добавить титры к моим цифрам. –

ответ

2

На основании ссылки, опубликованной kohske, Наконец, мне удалось найти временное решение, то есть определить число фигур в соответствии с шаблоном

Рисунок # section. # Figure
Например: Рисунок 3.1

Это не то, что я изначально хотел сделать (т. удалите автоматическую нумерацию цифр), но это хороший обходной путь.

Как сделать это

Прежде всего, создайте файл «mystyle.sty», расположенный в том же каталоге, что и файл rmarkdown. В этом mystyle.sty файл, поместите следующую строку кода:

\usepackage{chngcntr} 

Затем в заголовке файла rmarkdown, добавьте следующую информацию:

output: 
    pdf_document: 
    fig_caption: yes 
    includes: 
     in_header: mystyle.sty 

Целью этого было сделать что rmarkdown просит латекс использовать пакет, позволяющий создать соответствующую автоматическую нумерацию.

Следующим шагом является добавление этого в начале документа:

\counterwithin{figure}{section} 

так что цифры будут пронумерованы в каждой секции.

И затем, вы можете вручную определить значение «раздела» и «цифра» с \setcounter{section}{#}

На самом деле, что вы должны сделать, это просто поставить две следующие строки в начале каждого раздела:

\setcounter{section}{1} 
\setcounter{figure}{0} 

Если вы находитесь в разделе 3, изменить к \setcounter{section}{3}.

И это работает правильно; например, цифра 3 моего раздела 5:

Proper caption

Однако, есть еще один вопрос остался: хотя это решает проблему вязки PDF, это не будет работать на HTML. Если вы используете один и тот же документ для создания файлов PDF и HTML, то ваш PDF будет иметь хорошие номера, а ваш HTML не будет иметь никакого номера. Я до сих пор не понял, как сделать то же самое в HTML.

0

Вы можете использовать:

header-includes: 
\renewcommand{\caption}{Figure} 

в заголовке YAML. Затем в блоке кода используйте:

```{r, fig.cap=" 5.3: Response functions"} 
... 
```