LINUX.ORG.RU

Перенос слов при формировании таблиц knitr+kable

 , ,


0

1

Приветствую! Собственно по сабжу: формируется таблица knitr+kable, на выходе очень много варнингов - Overfull \hbox ... - не переносит слова, таблица <<плывёт>>.

Пытаюсь регулировать точечно:

\usepackage{hyphenat}
\hyphenation{поль-зо-ва-тель де-ло-про-из-вод-ство не-зна-чи-тель-ная}

безрезультатно.

Настройки геометрии прилагаю.

\usepackage{geometry}
\geometry{a4paper, top=1cm, bottom=1cm, left=1cm, right=1cm, nofoot, nomarginpar}
\setlength{\topskip}{0pt}   					
\setlength{\footskip}12.3pt} 																
\tolerance 1414
\hbadness 1414
\emergencystretch 1.5em 
\hfuzz 0.3pt
\vfuzz \hfuzz
\raggedbottom
\sloppy
\clubpenalty=10000
\widowpenalty=10000
\brokenpenalty=4991

Это конечно прекрасно, но где ты включаешь переносы для кириллицы? В смысле как именно выбираешь русский язык?

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от arbyz

Тогда ещё одна попытка угадать подземный стук: а в таблице формат столбца подразумевает перенос? В смысле формат должен быть типа p{0.3\textwidth}, а не скажем: c

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Evgueni

Заголовок сгенерированной таблицы.

\begin{longtabu} to \linewidth {>{\raggedright\arraybackslash}p{1.5cm}>{\raggedright\arraybackslash}p{2cm}>{\raggedright\arraybackslash}p{2cm}>{\raggedright\arraybackslash}p{2cm}>{\raggedright\arraybackslash}p{3.5cm}>{\raggedright\arraybackslash}p{3.5cm}>{\raggedright\arraybackslash}p{7cm}>{\centering\arraybackslash}p{1.5cm}>{\centering\arraybackslash}p{1cm}}

arbyz
() автор топика
Ответ на: комментарий от arbyz

Странный какой-то заголовок.

Сделай минимальный пример tex-файла (или R с инструкцией как получить tex), где проблема сохраняется и запости его код сюда. Гадать где там стучит как-то сложно без материала.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от arbyz

pdflatex не переносит первое слово в абзаце. Чтобы переносил в таблице, можно в преамбулу к \>{\raggedright\arraybackslash} добавить \hspace{0pt}: \>{\raggedright\arraybackslash\hspace{0pt}}. Это обманывает TeX, заставляя полагать, что раз перед первым словом стоит пробел, то оно не первое.

TeopeTuK ★★★★
()
Ответ на: комментарий от TeopeTuK

Согласен. Похоже что это. Как только добавляешь символ перед непереносимым словом, так сразу оно начинает переноситься.

Evgueni ★★★★★
()
Ответ на: комментарий от TeopeTuK

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

Может alias какой или переменную ввести

arbyz
() автор топика
Последнее исправление: arbyz (всего исправлений: 1)
Ответ на: комментарий от Evgueni

Ещё один вариант решения: перейти на lualatex (к сожалению нужно поменять преамбулу). Поведение pdflatex к сожалению заморожено и исправляться не будет.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Потратил час на эксперементы. Так вот, перегнал преамбулу под Xelatex.

\usepackage{xecyr}
\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage{polyglossia}
\setmainlanguage{russian}
\setotherlanguage{english}
\setkeys{russian}{babelshorthands=true}
\setmainfont[Mapping=tex-text, HyphenChar="00AD]{Times New Roman}
\setromanfont{Times New Roman} 
\setsansfont{Arial} 
\setmonofont{Courier New} 


\newfontfamily{\cyrillicfont}{Times New Roman} 
\newfontfamily{\cyrillicfontrm}{Times New Roman}
\newfontfamily{\cyrillicfonttt}{Courier New}
\newfontfamily{\cyrillicfontsf}{Arial}

Собираю pdf и .... переносы не работают. Вношу в готовый tex-файл \>{\raggedright\arraybackslash\hspace{0pt}} и переносы работают ....

arbyz
() автор топика
Ответ на: комментарий от TeopeTuK

Ээээ, я вообще-то говорил про lualatex (это не xelatex, а ещё одна альтернатива компилятора latex). Информацию по этому вопросу я нашёл после лёгкого гуглинга по проблеме переносов первого слова в абзаце. Сразу признаюсь: не экспериментировал.

Предположительно (результат того же лёгкого гуглинга) нужную функциональность обеспечивает пакет polyglossia, так что следует изучить документацию по этому вопросу. Возможно сработает.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Лёгкий гуглинг принёс инфу, что «баг» с первым словом из latex в случае xelatex любовно сохранён. Так что смотрите в сторону lualatex.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Прошу прощения за невнимательность. Конечно, xelatex не при чём. Убрал из преамбулы xelatex-ные пакеты, собрал с lualatex – переносы работают. Посмотрю как целиком документ собираться будет.

arbyz
() автор топика
Ответ на: комментарий от arbyz

Возможно это хорошее решение, хотя не исключено что вы откроете море новых и интересных багов :)

Приносите их сюда. Не поможем, так посочувствуем.

Evgueni ★★★★★
()
Ответ на: комментарий от arbyz

Можно слегка похакать код, переопределив \arraybackslash:

\let\oldarraybackslash\arraybackslash
\def\arraybackslash{\oldarraybackslash\hspace{0pt}}

в преамбуле. Тогда заработает и в pdflatex.

TeopeTuK ★★★★
()
Ответ на: комментарий от TeopeTuK

Благодарствую! Теперь есть два варианта решения проблемы.

arbyz
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.