Ошибка компоновки в PDF: геометрия пакета \ paperwidth (0.0pt) слишком мала - PullRequest
0 голосов
/ 08 мая 2018

Я пишу статью в уценке R и мне нужно отформатировать ее с помощью этого файла .cls , предоставленного академическим журналом.

Минимальный файл .tex прекрасно сочетается с приведенным вышефайл cls.

Мой файл .tex (скомпилированный на ShareLaTeX с clv3.cls, сохраненный в том же каталоге):

\documentclass[shortpaper]{clv3}
\usepackage[utf8]{inputenc}

\title{Paper title}
\author{Name Surname}
\date{May 2018}

\begin{document}

\maketitle

\section{Introduction}

Some text.

\end{document}

Однако сопоставимый минимальный документ в R уценке, использующий тот же файл cls, не удается скомпилировать в Rstudio, со следующей ошибкой: ! Package geometry Error: \paperwidth (0.0pt) too short.

Мой Rmd-файл (с clv3.cls файлом, сохраненным в том же каталоге):

---
title: "Paper title"
author: "Name Surname"
documentclass: clv3
classoption: shortpaper
output: pdf_document
---

# Introduction

Some text.

Почему возникает эта ошибкакогда я пытаюсь использовать этот файл класса с документом разметки R и как я могу это исправить?

Я пытался вручную указать настройку ширины страницы в заголовке YAML, но на самом деле я не знаю, что я 'я делаю.В любом случае это кажется нежелательным, поскольку обычный документ LaTeX работает без него (и, безусловно, ширина страницы должна указываться журналом, а не переписываться автором вручную).

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Принятый ответ отлично работает для минимального представленного примера. Однако он довольно быстро ломается, поскольку документ становится более сложным (например, вставка библиографии и цитат в тексте). Я хотел бы немного подробнее рассказать о своем решении для потенциальной выгоды для будущих читателей, поскольку я нашел в нем немного крутой кривой обучения:

Проблема здесь в том, что Pandoc имеет шаблон LaTeX, который он использует для создания PDF-документов. Это отдельно от файла класса .cls, который определяет класс документа. Как говорит Ральф Стубнер, что-то в моем конкретном файле класса не взаимодействовало с шаблоном Пандока по умолчанию. Вероятно, это очень просто и очевидно для многих, но я не оценил этот дополнительный шаг и не понял различия между этими файлами.

Если кто-то не хочет иметь дело с необработанным LaTeX, кажется, что существует немало шаблонов для различных типов документов (см., Например, пакет rticle). Однако использование R Markdown для создания PDF-документа в определенном пользовательском формате (например, для определенного журнала) потребует создания шаблона LaTeX. Это можно сделать одним из двух способов:

  1. Работа с существующим шаблоном, пока вы не получите то, что вам нужно, либо найдя шаблон Pandoc по умолчанию и начав с него (см. Комментарий пользователя 2554330 для определения местоположения), либо клонируя чужой шаблон на Github и т. Д.
  2. Написание шаблона с нуля. В этом случае приведенный выше минимальный пример Ральфа Стубнера плюс этот раздел руководства Pandoc будет информативным.

В моем случае я выбрал последний вариант. Я сохранил свой возможный шаблон как пакет R , который можно установить с помощью devtools::install_github("JaydenM-C/CLtemplate"). Поэтому, если кто-то еще захочет написать документ для Компьютерная лингвистика с использованием этого конкретного стиля документа, это может сэкономить вам время.

0 голосов
/ 08 мая 2018

Я не знаю, где именно класс clv3.cls и шаблон по умолчанию pandoc. Тем не менее, этот шаблон делает так много вещей, которые не имеют смысла при написании с определенным стилем, поэтому лучше использовать свой собственный шаблон. Использование clv3-template.tex

\documentclass[shortpaper]{clv3}
\usepackage[utf8]{inputenc}

$if(title)$
  \title{$title$}
$else$
  \title{}
$endif$
$if(author)$
  \author{$for(author)$$author$$sep$ \\ $endfor$}
$else$
  \author{}
$endif$

\begin{document}

$if(title)$
\maketitle
$endif$

$body$

\end{document}

вместе с

---
title: "Paper title"
author: "Name Surname"
output: 
  pdf_document:
    template:
      clv3-template.tex
---

# Introduction

Some text.

должно быть хорошей отправной точкой.

...