Повышение четкости вырезания и наклеивания кодовых блоков вязального устройства

Я хотел бы использовать knitr для создания PDF-документов, из которых примерный код можно было бы аккуратно вырезать и вставить, но, похоже, не могу.

Пример проблем, с которыми я столкнулся:

руководство по вязанию pdf включает этот блок кода (стр. 3):

## option tidy=TRUE
for (k in 1:10) {
j <- cos(sin(k) * kˆ2) + 3
print(j - 5)
} 

При копировании из pdf и последующей вставке в R (или SO, или т. Д.) Он дает:

## option tidy=TRUE
for (k in 1:10) f j <- cos(sin(k) * kˆ2) + 3
print(j - 5)
g 

Посмотрите, как первые две строки кода объединяются в одну и, что еще хуже, { и } преобразуются в f и g?

Мои вопросы:

Во-первых, я полагаю, испытывают ли это другие люди? Это происходит только в Windows или где-то еще?

Если дело не только во мне, есть ли какое-нибудь простое решение? Будет ли использование другого шрифта при компиляции файла *.tex создавать *.pdf документ, который будет легче копировать и вставлять?

(FWIW, если я вместо этого использую отчеканенный , чтобы выделить мой код R, у меня нет подобных проблем, поэтому я знаю, что возможно сделать это правильно.)


person Josh O'Brien    schedule 09.05.2013    source источник
comment
(Теперь я понимаю, что этот может быть более подходящим вопросом для tex.stackexchange. Однако оставлю его здесь, поскольку кажется возможным, что код R knitr является причиной поведения, показанного выше.)   -  person Josh O'Brien    schedule 09.05.2013
comment
Я испытал то же самое на своем Mac. Я думаю, это также может зависеть от текстового редактора, в который вы вставляете.   -  person Carson    schedule 09.05.2013
comment
@Carson - Спасибо за подтверждение! Вставка в Emacs, WinEdt, NotePad и TextPad также не удалась. Вставка в WordpPad дает скобки, но они выглядят странно. Я подозреваю, что скобки в файле pdf представлены не как символы ASCII, а как символы в какой-то другой кодировке, отличной от ASCII, которую понимают только некоторые текстовые редакторы.   -  person Josh O'Brien    schedule 10.05.2013
comment
вы пробовали xelatex или luatex для компиляции документа? Похоже на проблему со шрифтом   -  person baptiste    schedule 10.05.2013
comment
@baptiste - думаю, я только что понял это (и да, это проблема шрифта). Я опубликую свое исправление на мгновение. (Кстати, испытываете ли вы ту же проблему при вставке из связанных PDF-файлов в R?)   -  person Josh O'Brien    schedule 10.05.2013
comment
Я стараюсь не копировать из PDF-файлов, они, как известно, подвержены таким проблемам. Кроме того, я всегда компилирую с помощью xelatex. В вашем примере я получаю только отсутствующий перенос строки перед печатью, но с другими символами все в порядке.   -  person baptiste    schedule 10.05.2013
comment
@baptise - Полезно знать, и я посмотрю на xelatex. У меня это не работает, но это «вероятно, потому что он сообщает о неопределенной форме шрифта для« textleftbrace »и вместо этого использует другой символ.   -  person Josh O'Brien    schedule 10.05.2013


Ответы (1)


Основываясь на подсказках в этом вопросе и принятом на него ответе, я обнаружил, что с помощью Пакет LaTeX fontenc для установки кодировки шрифта на T1 устраняет проблемы, о которых сообщалось выше. (См. также здесь для объяснения того, почему использование T1 более или менее официально рекомендованная передовая практика для всех видов документов LaTeX. Улучшение возможности копирования и вставки - одна из нескольких веских причин, указанных в этой ссылке.)

Вот как выглядит начало преамбулы в фиксированном документе:

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
person Josh O'Brien    schedule 09.05.2013
comment
хм ... Я этого не знал, хотя у меня есть \usepackage[T1]{fontenc} в knitr-manual.Rnw, который LyX добавил автоматически :) - person Yihui Xie; 23.05.2013
comment
@Yihui - Интересно. Думаю, это еще одно доказательство того, что это хорошая кодировка по умолчанию. - person Josh O'Brien; 30.05.2013