Zunächst habe ich dieses Rechtfertigungsproblem bei dieser anderen Frage gelöstWie könnte die Begründungsanweisung „\everypar“ verwendet werden?, jedoch fällt mir jetzt ein neues Problem auf, das ich auch gerne automatisch erledigen lassen würde.
Durch das Schreiben dieses Latex-Codes habe ich das gewünschte Verhalten erzielt:
% proposal.tex
% Based on http://www.latextemplates.com/template/simple-sectioned-essay
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage[brazil]{babel}
\usepackage{hyphsubst}
\usepackage{mathptmx}
\begin{document}
\section{Riscos}
\newbox\linebox \newbox\snapbox
\def\eatlines{
\setbox\linebox\lastbox % check the last line
\ifvoid\linebox
\else % if it’s not empty
\unskip\unpenalty % take whatever is
{\eatlines} % above it;
\setbox\snapbox\hbox{\unhcopy\linebox}
\ifdim\wd\snapbox<.98\wd\linebox
\box\snapbox % take the one or the other,
\else \box\linebox \fi
\fi}
\everypar={\setbox0=\lastbox \par
\vbox\bgroup \everypar={}\def\par{\endgraf\eatlines\egroup}}
In typesetting advertisement copy, a way of justifying paragraphs has
become popular in recent years that is somewhere between flushright
and raggedrightddddd setting. Lines that would stretch beyond certain limits
are set with their glue at natural width. This single paragraph is but an
example of this procedure; the macros are given next.
\medskip
Second paragraph.
\end{document}
Dadurch wird dieses PDF mit korrekter Einrückung und dem .98
verwendeten Faktor erstellt:
Wenn die Zeile jedoch ein zu großes Wort enthält, gibt Latex Overfull \hbox (133.24454pt too wide) in paragraph at lines
bei folgender Eingabe den Fehler aus:
In typesetting advertisement copy, a way of justifying paragraphs has
become popular in recent years that is somewhere between flushright
and raggedrightdddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
setting. Lines that would stretch beyond certain limits
are set with their glue at natural width. This single paragraph is but an
example of this procedure; the macros are given next.
\medskip
Second paragraph.
Das Ergebnis ist folgende Ausgabe:
Frage
Ich möchte, dass Latex das Wort automatisch raggedrightdddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
in eine neue Zeile umbricht, anstatt es über den Bildschirm/das Dokument hinausgehen zu lassen.
Ich weiß, dass ich die folgende Lösung verwenden kann vonLange Wörter in eine neue Zeile verschieben, sodass das Wort raggedrightdddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
in eine neue Zeile umgebrochen wird:
% Allow to push long words on new lines when they do not fit entirely on the current line.
\newcommand\lword[1]{\leavevmode\nobreak\hskip0pt plus\linewidth\penalty50\hskip0pt plus-\linewidth\nobreak{#1}}
In typesetting advertisement copy, a way of justifying paragraphs has
become popular in recent years that is somewhere between flushright
and \lword{raggedrightdddddddddddddddddddddddddddddddddddddddddddddddddddddddddd}
setting. Lines that would stretch beyond certain limits
are set with their glue at natural width. This single paragraph is but an
example of this procedure; the macros are given next.
\medskip
Second paragraph.
Dadurch wird das folgende Dokument generiert:
Jetzt sprengt auch noch ein weiteres Wort die Seitenbegrenzung. Die Lösung wäre also, \lword{that}
das that
Wort, das sich aufgelöst hat, wieder einzusetzen.
Das ist also eine sehr lästige Arbeit, die ich um die Korrektur meines Latex-Dokuments herum mache. Ich hoffe, dass Latex mir erlaubt, mich um den Inhalt des Dokuments zu kümmern, anstatt um die Ästhetik des Dokuments.
Wie kann ich Latex richtig machen und lange Wörter automatisch in neue Zeilen einfügen, anstatt das Dokument zu umgehen \lword{...}
?
Aktualisierung 1
Nach@David CarlisleAntwort: Ich habe ein neues Problem mit diesem Dokument:
% proposal.tex
% Based on http://www.latextemplates.com/template/simple-sectioned-essay
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage[brazil]{babel}
\usepackage{hyphsubst}
\usepackage{mathptmx}
\begin{document}
\section{Riscos}
\newbox\linebox \newbox\snapbox
\def\eatlines{
\setbox\linebox\lastbox % check the last line
\ifvoid\linebox
\else % if it’s not empty
\unskip\unpenalty % take whatever is
{\eatlines} % above it;
\setbox\snapbox\hbox{\unhcopy\linebox}
\ifdim\wd\snapbox<.98\wd\linebox
\box\snapbox % take the one or the other,
\else \box\linebox \fi
\fi}
\everypar={\setbox0=\lastbox \par
\vbox\bgroup \everypar={}\def\par{\endgraf\eatlines\egroup}}
\noindent X\dotfill X
\sloppy
\rightskip 0pt plus 1pt
\emergencystretch\textwidth
\hyphenpenalty=10000
\parskip\baselineskip
In typesetting advertisement copy, a way of justifying paragraphs has
become popular in recent years that is somewhere between flushright
and raggedrightdddddddddddddddddddddddddddddddddddddddddddd setting. Lines that would stretch beyond certain limits
are set with their glue at natural width. This single paragraph is but an
example of this procedure; the macros are given next.
\medskip
Second paragraph.
\end{document}
Ich habe ein zusätzliches Loch, das nicht existieren sollte:
Das Loch in der zweiten Zeile ist zu erwarten, da das lange Wort gepusht wurde. Das Loch in der ersten Zeile ist jedoch nicht zu erwarten.
Das Endergebnis sollte wie folgt aussehen:
Dieses ehemalige Image kann mit dem folgenden Befehl erstellt werden \lword{raggedrightdddddddddddddddddddddddddddddddddddddddddddd}
, Beispiel:
% proposal.tex
% Based on http://www.latextemplates.com/template/simple-sectioned-essay
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage[brazil]{babel}
\usepackage{hyphsubst}
\usepackage{mathptmx}
\begin{document}
\section{Riscos}
\newbox\linebox \newbox\snapbox
\def\eatlines{
\setbox\linebox\lastbox % check the last line
\ifvoid\linebox
\else % if it’s not empty
\unskip\unpenalty % take whatever is
{\eatlines} % above it;
\setbox\snapbox\hbox{\unhcopy\linebox}
\ifdim\wd\snapbox<.98\wd\linebox
\box\snapbox % take the one or the other,
\else \box\linebox \fi
\fi}
\everypar={\setbox0=\lastbox \par
\vbox\bgroup \everypar={}\def\par{\endgraf\eatlines\egroup}}
\newcommand\lword[1]{\leavevmode\nobreak\hskip0pt plus\linewidth\penalty50\hskip0pt plus-\linewidth\nobreak{#1}}
In typesetting advertisement copy, a way of justifying paragraphs has
become popular in recent years that is somewhere between flushright
and \lword{raggedrightdddddddddddddddddddddddddddddddddddddddddddd} setting. Lines that would stretch beyond certain limits
are set with their glue at natural width. This single paragraph is but an
example of this procedure; the macros are given next.
\medskip
Second paragraph.
\end{document}
Aktualisierung 2
Das Problem ist die Automatisierung des Textschreibens. Normalerweise geschieht dies aufgrund von Pfaden, es ist jedoch ein Latex-Problem, bei dem Wörter über die Zeile hinausgehen. Deshalb möchte ich nur eine Lösung dafür finden. Das erste Latex-Tool für dieses Problem mit langen Wörtern sind Bindestriche. Ich mag sie jedoch nicht. Außerdem ziehe ich es vor, das Wort einfach in die nächste Zeile zu setzen, wie in diesem Beispiel:https://i.stack.imgur.com/f6Bes.pngFür mich ist das eine unkomplizierte Lösung. Latex sollte niemals zulassen, dass ein Wort über die Seitenbegrenzung hinausgeht. Versuchen Sie es mal mit Microsoft Word. Das wird nicht zugelassen. Stattdessen wird das Wort in die nächste Zeile gesetzt.
Ich hätte gerne eine Zeilenausrichtung, außer bei bestimmten Zeilen, die lange Wörter enthalten oder aufgrund der Ausrichtung zu spärlich sind. Bei den meisten Zeilen funktioniert die Ausrichtung gut, außer in den genannten Fällen.
So geht Microsoft Word damit um:
Während die Zeile vor dem langen Wort schlecht ausgerichtet war, durfte das lange Wort nicht über die Zeilenbegrenzung hinausgehen.
Antwort1
Angenommen, die konkrete Frage lautet eher: „Ich muss lange Dateipfade sinnvoll ausdrucken“, wie wäre es hiermit?
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[a4paper, margin=2cm]{geometry}
% https://tex.stackexchange.com/a/10401
\usepackage[hyphens]{url}
\expandafter\def\expandafter\UrlBreaks\expandafter{\UrlBreaks% save the current one
\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j%
\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t%
\do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D%
\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N%
\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X%
\do\Y\do\Z}
\begin{document}
\section{Riscos}
Original bad breaks, Assim após ativar os testes, basta abrir o arquivo
ArtificialIntelligence/AnswersGuessAiGame/players.py, encontrar a classe ...
Tests logo do final do arquivo e escolher quais dos testes se quer executar.
Option 1, rewrite the paragraph to avoid bad breaks.
Assim após ativar os testes, basta abrir o arquivo
ArtificialIntelligence/AnswersGuessAiGame/players.py, encontrar a classe ...
Tests logo do final do arquivo e escolher quais dos testes se quer executar.
Option 2, use the \verb|\path| command from the \verb|url| package, and allow
URLs to break after any character.
Assim após ativar os testes, basta abrir o arquivo
\path{ArtificialIntelligence/AnswersGuessAiGame/players.py}, encontrar a classe ...
Tests logo do final do arquivo e escolher quais dos testes se quer executar.
\end{document}