Estou com um problema com quebra de linha. Eu escrevi uma ferramenta para gerar relatórios que contêm linhas longas, por exemplo, URLs ou caminhos. No meu PDF resultante, essas linhas devem ser quebradas. Além disso, o empacotamento deve ser feito automaticamente. Eu sei que sou capaz de inserir embalagem manual. Mas eu preciso de umglobalabordagem (sem funções em torno das linhas longas) como uma regra ou uma aplicação global de quebra de linha se a linha terminar.
Eu já tentei \sloppy
e o microtype
pacote. Mas sem sucesso.
Para ilustrar meu problema fiz um exemplo simples de LaTeX:
\documentclass{article}
\usepackage{microtype}
\usepackage{ragged2e}
\usepackage[hyphens]{url}
\usepackage{path}
\begin{document}
\specialpathdelimiterstrue
AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash AAAA\textbackslash
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
http://aaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
\end{document}
Todas as três linhas devem ser quebradas no final da largura da linha/página.
Existe alguma solução para isso? Já procurei dias por uma solução..
Responder1
Acho que você não deseja usar uma macro para cada linha porque suas linhas são geradas automaticamente. Mas como você pode usar \sloppy
, um ambiente ao redor de todas as suas linhas pode ser adequado.
Então uma ideia possível é escanear o conteúdo do ambiente e adicionar pausas discricionárias entre os personagens.
O código abaixo define um ambiente wraplines
dentro do qual todas as linhas são agrupadas no final da linha.
\begin{wraplines}
% text
\end{wraplines}
O ambiente usa um caractere de hifenização opcional que pode, na verdade, ser material de modo horizontal restrito arbitrário: -
, $\rightarrow$
, ...
\begin{wraplines}[-]
% text
\end{wraplines}
O código assume que apenas texto ocorre dentro do ambiente. No entanto, o texto pode conter vários parágrafos.
\documentclass{article}
\makeatletter
\newenvironment{wraplines}[1][]{%
% encapsulate hyphenation character in a \hbox so that
% it may be arbitrary restricted horizontal mode material e.g $\rightarrow$
\def\@wrapdiscr{\discretionary{\hbox{#1}}{}{}}%
\@wraplines
}{}
\newcommand\@wraplines{%
\@ifnextchar\end\relax{%
\@ifnextchar\par{%
\par\expandafter\@wraplines\@gobble
}%
\@wraplines@aux
}%
}
\def\@wraplines@aux#1 {\x@wraplines@aux#1\@nnil}
\newcommand*\x@wraplines@aux[1]{#1\y@wraplines@aux}
\newcommand*\y@wraplines@aux[1]{%
\ifx#1\@nnil
\space
\expandafter\@wraplines
\else
\@wrapdiscr#1%
\expandafter\y@wraplines@aux
\fi
}
\makeatother
\begin{document}
\begin{wraplines}
\end{wraplines}
\noindent\verb|\begin{wraplines} ... \end{wraplines}|
\begin{wraplines}
Xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
\end{wraplines}
\bigskip
\noindent\verb|\begin{wraplines}[-] ... \end{wraplines}|
\begin{wraplines}[-]
Xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
\end{wraplines}
\bigskip
\noindent\verb|\begin{wraplines}[$\rightarrow$] ... \end{wraplines}|
\begin{wraplines}[$\rightarrow$]
Xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
\end{wraplines}
\end{document}