
Eu tenho um monte de tabelas de markdown como esta abaixo, e elas estão sendo convertidas em PDF usando pandoc
um modelo de PDF LaTeX.
| Column1 | Column2 | Column3 | Column4 | Column5 | Column6 | Column7 | Column8 | Column9 | Column10 |
|-----------------------------------------------------------------------------------------------------------------------------------|----------------|---------|---------|---------------------|-------------------------------------------------------------------------------------------------------------|------------------|----------------------------------------------------------------------------------------|-------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|
| Lorem Ipsum verylongwordwithnospacehere simply dummy text of the printing and typesetting indust | Lor | Lor | L | Lor | Lorem Ipsum is simply dumm | Lorem Ipsum i | Lorem Ipsum is simply 9834JKEMKWJ4334DWEE44 the printing and typesetting industry. Lo | Lorem Ipsum is simply dummy text of the printin | Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard |
| Lorem Ipsum is simply dummy text of the printing anotherverylongwordwithoutspace | Lor | Lor | L | Lor | Lorem Ipsum is simply dummy | Lorem Ipsum i | Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsu | Lorem Ipsum is simply dummy text of the printin | Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard |
| Lorem Ipsum is simply dummy Q034DJSKJ32492139DK | Lor | Lor | L | Lor | Lorem Ipsum is simply dummy t | Lorem Ipsum i | Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsu | Lorem Ipsum is simply dummy text of the printin | Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard |
Portanto, quando há palavras longas ou algum tipo de código longo nas células da tabela, a saída que estou obtendo é algo como as imagens abaixo. Eles estão sendo cortados ou transbordando para a próxima coluna.
O que eu preciso é de uma maneira de permitir que as palavras separem qualquer letra. Também não deve haver hifenização, então estou usando \usepackage[none]{hyphenat}
para isso.
Então, no final, o que eu quero é algo assim:
Como eu disse, o conteúdo do markdown está sendo convertido em código látex automaticamente, então não acho que possa usar algo como \seqsplit{longword}
. Não tenho certeza se é possível, mas preciso de algo que permita a quebra de palavras para todo o documento ou direcione apenas as tabelas...
Responder1
Provavelmente não é uma resposta final, nesta fase, mas é muito longa para um comentário. Lembro-me e tenho um arquivo allhyph.tex com padrões de hifenização para pontos de hifenização após todos os 256 caracteres nas fontes do TeX do dia. Não consigo encontrá-lo no CTAN ou na pesquisa na web, então posso até tê-lo escrito. (O oposto zerohyph.tex deve ser carregado como linguagem "nohifenização".)
Mas descobri outro truque que usa regras comuns (padrão) de hifenização em inglês. Os padrões sempre permitem a hifenização após a letra l
(ell). Portanto, às custas de nunca poder usar \lowercase
ou \MakeLowercase
, defina o código minúsculo de cada caractere para o código de l (108). A seguir está um exemplo destinado à codificação da fonte T1. Lidar com codificações de fontes grandes exigiria uma lista mais longa de pontos de código de caracteres.
O próximo ingrediente que você precisa é definir o caractere hífen da fonte (para todas as fontes) como um caractere em branco com largura pequena ou zero. Esse é o \textcompoundwordmark.
Mais duas coisas: você precisa dizer ao LaTeX para hifenizar as palavras mesmo no final; e você precisa permitir a hifenização na primeira palavra de um parágrafo (geralmente evitada).
\documentclass{article}
\usepackage[T1]{fontenc} % require \textcompwordmark
\usepackage[english]{babel}
\makeatletter
\newcount\lccodepoint
\def\setAllBreak{\lccodepoint=33 \@whilenum{\lccodepoint<256}\do
{\lccode\lccodepoint=`\l\advance\lccodepoint\@ne}%
\lefthyphenmin\@ne \righthyphenmin\@ne
\hyphenchar\font=\csname\f@encoding\string\textcompwordmark\endcsname
}
\g@addto@macro\selectfont{\setAllBreak}
\AtBeginDocument{\setAllBreak}
% That finishes the setup, except for \everypar below.
\setlength\textwidth{2pt}% ultra-narrow for testing
\setlength\parskip{8pt}
\begin{document}
% This allows hyphenation of the first word in the paragraph
% but can't be in preamble
\everypar{\nolinebreak\hspace{0pt}}
abracadabra
\noindent abracadabra \emph{wowzers}
\end{document}
Isso não introduzirá quebras de linha onde nenhuma é permitida, é claro! Imagine \mbox{ }
. Mais importante para a questão, a maioria dos tipos de colunas tabulares são semelhantes \mbox
e evitam todas as quebras de linha. Sugiro mudar os ambientes tabulares para tabularx e usar todos os tipos de coluna X, ou tipos derivados disso (como para centralização), como
\newcolumntype{C}{>{\centering\arraybackslash}X}
Para tornar algumas colunas proporcionalmente mais estreitas ou mais largas que outras colunas X, você pode verCentralizando em colunas tabularx