LaTeX 文書のグローバル改行

LaTeX 文書のグローバル改行

改行に問題があります。URLやパスなどの長い行を含むレポートを生成するツールを作成しました。結果のPDFでは、これらの行は折り返される必要があります。さらに、折り返しは自動的に行われる必要があります。手動で折り返しを挿入できることはわかっています。しかし、グローバルルールのようなアプローチ(長い行を囲む関数なし)または行が終了した場合に単語の折り返しを全体的に強制します。

すでにパッケージ\sloppyを試しましたmicrotype。しかし、成功しませんでした。

問題を説明するために、簡単な 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}

3 行すべてを行/ページ幅の終わりで折り返す必要があります。

これに対する解決策はあるのでしょうか? 私はすでに何日も解決策を探していました...

答え1

行は自動的に生成されるため、各行にマクロを使用したくないと思います。ただし、 を使用する場合は\sloppy、すべての行を囲む環境で問題ない可能性があります。

そこで考えられるアイデアとしては、環境の内容をスキャンし、文字間に任意の区切りを追加するというものがあります。

以下のコードはwraplines、すべての行が行末で折り返される環境を定義します。

\begin{wraplines}
% text
\end{wraplines}

この環境は、実際には任意の制限された水平モード マテリアルである可能性のあるオプションのハイフネーション文字を取ります: -、、$\rightarrow$...

\begin{wraplines}[-]
% text
\end{wraplines}

コードでは、環境内にテキストのみが存在することを前提としています。ただし、テキストには複数の段落が含まれる場合があります。

\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}

ラップ.png

関連情報