Добавить разрыв линии в переплетение вязания, сохраняя tidy=TRUE

Я знаю, что могу отформатировать весь код вручную, если задаю tidy=FALSE для соответствующего блока кода, но мне нравится вариант tidy=TRUE. Это делает мой код красивым! Но у меня есть длинный вектор, который я хочу напечатать, и он выходит из строя и вызывает бэдбокс LaTeX.

Редактировать - я знаю, что людям нравятся примеры. Вот пример.

<<HolySnail>>=
X <- data.frame(p1=c(0,2,0,0,-1,1),
                p2=c(3,0,1,1,0,1),
                p3=c(0,0,3,2,1,1))
poor_formatting_requires_tidying <- function(x,y,z) { a <- x*y+z; return(a+z) }
@

Редактировать - вопрос: «Как я могу заставить Knitr соблюдать разрывы строк в определении X, не устанавливая tidy = FALSE?»


person rcorty    schedule 02.05.2014    source источник
comment
Возможно, вы захотите добавить вопрос к своему вопросу   -  person Dason    schedule 03.05.2014
comment
вы можете установить tidy на false для одного фрагмента, и он сохранит ваше форматирование для x. поскольку другая функция представляет собой одну строку, для нее это все равно не имеет значения. И я всегда думал, что tidy = TRUE делает код дерьмовым, но это личное мнение. Я имею в виду, именно поэтому вы все равно вставляете разрывы строк в код — чтобы сделать его более читабельным и эстетически привлекательным, верно?   -  person rawr    schedule 03.05.2014


Ответы (1)


Я думаю, вы просто искали возможность контролировать ширину исходного кода? Установка ширины очень сложна с tidy = TRUE; вам часто приходится пробовать разные значения, чтобы получить подходящую ширину. Вы можете использовать параметр tidy.opts для передачи аргумента width.cutoff в formatR::tidy.source(), например.

\documentclass{article}
\begin{document}
<<HolySnail, tidy.opts=list(width.cutoff=60)>>=
X <- data.frame(p1=c(0,2,0,0,-1,1),
                p2=c(3,0,1,1,0,1),
                p3=c(0,0,3,2,1,1))
poor_formatting_requires_tidying <- function(x,y,z) { a <- x*y+z; return(a+z) }
@
\end{document}

Примечание width.cutoff устанавливает только минимальную ширину, что означает, что вывод может быть шире, чем ваша настройка. Это зависит от того, сможет ли R действительно сломать код после width.cutoff символов.

После того, как вы потрудитесь над настройкой значения ширины, вы, вероятно, просто вернетесь к tidy = FALSE...

person Yihui Xie    schedule 03.05.2014
comment
ОК, я пошел на уборку = FALSE. Спасибо за ваш вдумчивый ответ. - person rcorty; 04.05.2014