свяжите Rmarkdown moderncv в pdf, используя make-файл с файлом sty в подкаталоге - PullRequest
0 голосов
/ 29 сентября 2018

Я использую класс moderncv для создания резюме в Rmarkdown.Чтобы сделать cv воспроизводимым из коробки, я включил файлы .cls и .sty в корневой каталог.Тем не менее, в попытке сохранить корневой каталог незагроможденным, я бы предпочел хранить все файлы, связанные с moderncv, в подкаталоге (assets / tex /).Я могу получить доступ к файлу .cls, используя относительный путь в файле yaml, но я не могу получить доступ к файлам .sty, если они не находятся в корневом каталоге.

Поиск предыдущих вопросов по stackoverflow Я узнал следующее: (1) хранить файлы .cls и .sty во вложенных каталогах не рекомендуется.Я понимаю это и хотел бы сделать это в любом случае, чтобы другие люди могли раскошелиться на мой проект и иметь возможность связать резюме, не имея дело с поиском своей папки texmk.(2) кажется, что решение моей проблемы заключается в установке TEXINPUTS с использованием Makefile (см. этот поток и другой поток )

Я не очень хорошс Makefiles, но мне удалось получить один рабочий, который без проблем свяжет мой файл .Rmd в pdf, при условии, что файлы .sty все еще находятся в корне.Вот как это выглядит в настоящее время:

PDF_FILE=my_cv.pdf

all : $(PDF_FILE)
    echo All files are now up to date

clean : 
    rm -f $(PDF_FILE) 

%.pdf : %.Rmd
    Rscript -e 'rmarkdown::render("$<")'

Насколько я понимаю, я могу установить TEXINPUTS, используя:

export TEXINPUTS=".:./assets/tex:"

Где "assets / tex" представляет подкаталог, где.sty файлы находятся.Я не знаю, как включить приведенный выше код в мой make-файл, чтобы файлы .sty распознавались в подкаталогах, а мой .Rmd был связан с PDF.В текущем состоянии я получаю следующую ошибку, если удаляю файлы .sty из корня и помещаю их в вышеупомянутый подкаталог:

! LaTeX Error: Command \fax already defined.
           Or name \end... illegal, see p.192 of the manual.

, который, как я предполагаю, происходит, потому что класс moderncv нуждается в---и не может найти --- соответствующие файлы .sty.

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете попытаться определить переменную среды в правиле make:

%.pdf : %.Rmd
    export TEXINPUTS=".:./assets/tex:"
    Rscript -e 'rmarkdown::render("$<")'

Или вы можете установить переменную среды в блоке настроек в вашем файле Rmd:

```{r setup, include = FALSE}
Sys.setenv(TEXINPUTS=".:./assets/tex:")
```

Примечание: не тестировалось из-за отсутствия минимального примера.

...