Класс университетского документа и 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-файлы извне, а затем включать их без какого-либо масштабирования в основной латексный документ. Мне труднее отлаживать встроенные графики Тикза.