Tengo un problema con el salto de línea. Escribí una herramienta para generar informes que contienen líneas largas, por ejemplo, URL o rutas. En mi PDF resultante, estas líneas deberían estar ajustadas. Además, el envoltorio debe realizarse de forma automática. Sé que puedo insertar envoltura manual. pero necesito unglobalenfoque (sin funciones que rodeen las líneas largas) como una regla o una aplicación global del ajuste de palabras si la línea termina.
Ya lo probé \sloppy
y el microtype
paquete. Pero sin éxito.
Para ilustrar mi problema hice un ejemplo simple 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}
Las tres líneas deben ajustarse al final del ancho de línea/página.
¿Existe siquiera una solución para esto? Ya busqué días para una solución.
Respuesta1
Supongo que no deseas utilizar una macro para cada línea porque tus líneas se generan automáticamente. Pero como puedes usar \sloppy
, un entorno que rodee todas tus líneas podría estar bien.
Entonces una posible idea es escanear el contenido del entorno y agregar pausas discrecionales entre personajes.
El siguiente código define un entorno wraplines
dentro del cual todas las líneas se ajustan al final de la línea.
\begin{wraplines}
% text
\end{wraplines}
El entorno adopta un carácter de separación de palabras opcional que en realidad puede ser material de modo horizontal restringido arbitrario: -
, $\rightarrow$
, ...
\begin{wraplines}[-]
% text
\end{wraplines}
El código supone que sólo aparece texto dentro del entorno. Sin embargo, el texto puede contener varios párrafos.
\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}