Класс университетского документа и tikzpicture, сгенерированные R's ggplot и tikzdevice

Я использую университетский класс документов, и я предполагаю, что этот класс каким-то образом влияет на расположение ключей легенды и меток легенды графиков, созданных с использованием R ggplot2 и tikzDevice.

Чтобы воспроизвести эту проблему, запустите следующий скрипт R:

require(dplyr)
require(ggplot2)
require(tikzDevice)

pi <- filter(diamonds, (cut=="Premium" | cut=="Ideal") & color<"I")
pi$cut <- factor(pi$cut)
pi$color <- factor(pi$color)

g1 <- ggplot(data=pi, aes(x=color, fill=cut, y=price)) +
  geom_violin() + theme(legend.position = "top")

setTikzDefaults(overwrite = TRUE)
preamble <- options("tikzLatexPackages") 
options("tikzLatexPackages" = c(preamble$tikzLatexPackages, "\\usepackage{amsmath}"))
tikz(file = "out.tex", width = 3, height = 2, standAlone = T )

print(g1)

dev.off()

Теперь, если мы скомпилируем выходной файл этого скрипта (out.tex) с помощью pdflatex, мы должны получить что-то вроде этого (обратите внимание, что легенда здесь совершенно нормальная):

Теперь давайте изменим строку "\documentclass[10pt]{article}" внутри выходного файла (out.tex) на "\documentclass[pdftex]{pittetd}" и скомпилируем out.tex с помощью pdflatex. Обратите внимание, что pittetd.cls должен находиться в том же каталоге, что и out.tex (или установлен в вашей системе). Вы увидите некоторые ошибки компилятора, такие как "Пропущенное число, обработанное как ноль". Просто игнорируйте эти ошибки, поскольку они не имеют никакого отношения к нашей проблеме, и продолжайте нажимать Enter, пока не будет создан новый файл PDF (out.pdf). Вывод выглядит примерно так (обратите внимание, что надписи и клавиши легенды перекрываются):

Мое лучшее предположение состоит в том, что проблема может быть в некотором конфликте макроопределений между TikZ и pittetd.

Может кто-нибудь сказать, пожалуйста, почему это происходит и как это исправить?

РЕДАКТИРОВАТЬ:

В файле out.tex, если мы используем класс документов pittetd, я заметил, что если я изменю параметры среды tikzpicture, проблема будет решена; другими словами, если мы изменим следующую строку:

\begin{tikzpicture}[x=1pt,y=1pt]

Для того, чтобы:

\begin{tikzpicture}[x=1.1pt,y=1pt]

Это должно устранить перекрытие; однако, это также растянет участок по горизонтали, что нежелательно. Интересно, есть ли лучший способ решить эту проблему без использования этого хака (возможно, путем изменения файла pittetd.cls).

1 ответ

Решение

Размер шрифта изменяется от 10pt до 12pt, поэтому размеры слов, которые были оценены tikzDevice при 10pt, теперь слишком малы, поэтому возникают конфликты.

Как примечание, я считаю, что проще создавать PDF-файлы извне, а затем включать их без какого-либо масштабирования в основной латексный документ. Мне труднее отлаживать встроенные графики Тикза.

Другие вопросы по тегам