질문

질문

처음에 나는 이 다른 질문에 대한 정당화 문제를 해결했습니다.`\everypar` 정당화 진술은 어떻게 사용될 수 있습니까?, 그러나 이제 자동으로 완료하고 싶은 새로운 문제가 발견되었습니다.

이 라텍스 코드를 작성함으로써 원하는 동작을 올바르게 얻었습니다.

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

다음 요소를 사용하여 올바르게 들여쓰기된 이 PDF를 생성합니다 .98.

여기에 이미지 설명을 입력하세요

그러나 줄에 너무 큰 단어가 있는 경우 Overfull \hbox (133.24454pt too wide) in paragraph at lines입력이 주어지면 라텍스에서 오류가 발생합니다.

    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.

출력이 생성됩니다.

여기에 이미지 설명을 입력하세요


질문

raggedrightdddddddddddddddddddddddddddddddddddddddddddddddddddddddddd라텍스가 화면/문서를 벗어나는 대신 자동으로 단어를 새 줄로 나누기를 원합니다 .

다음 솔루션을 사용할 수 있다는 것을 알고 있습니다.새 줄에 긴 단어를 넣습니다., 따라서 단어는 raggedrightdddddddddddddddddddddddddddddddddddddddddddddddddddddddddd새 줄로 나누어집니다.

% 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.

다음 문서가 생성됩니다.

여기에 이미지 설명을 입력하세요

이제 페이지 제한을 깨는 또 다른 단어도 있습니다. 그러므로 해결책은 이미 횡설수설했던 말씀을 \lword{that}다시 입는 것입니다.that

그래서 이것은 내 라텍스 문서 수정을 우회하는 데 매우 짜증나는 작업입니다. 라텍스의 의도는 문서의 미학이 아닌 문서의 내용에 대해 걱정할 수 있게 해주기를 바랍니다.

문서를 돌아다니는 대신 라텍스를 올바르게 만들고 자동으로 긴 단어를 새 줄에 넣을 수 있는 방법은 무엇입니까 \lword{...}?


업데이트 1

후에@데이비드 칼라일답변 이 문서를 사용하면 새로운 문제가 발생합니다.

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

존재해서는 안되는 추가 구멍이 있습니다.

여기에 이미지 설명을 입력하세요

긴 단어가 밀려서 두 번째 줄의 구멍이 예상됩니다. 그러나 첫 번째 줄의 구멍은 예상되지 않습니다.

최종은 다음과 같아야합니다 :

여기에 이미지 설명을 입력하세요

이 이전 이미지는 다음 명령을 사용하여 생성할 수 있습니다 \lword{raggedrightdddddddddddddddddddddddddddddddddddddddddddd}.

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

업데이트 2

문제는 텍스트 작성의 자동화입니다. 일반적으로 이는 정당한 경로에 따라 발생하지만 단어가 선을 넘어서도록 허용하는 것은 라텍스 문제입니다. 그러므로 내가 원하는 것은 단지 그것을 고치는 것뿐이다. 이 긴 단어 문제를 해결하는 첫 번째 라텍스 도구는 하이픈입니다. 그러나 나는 그들을 좋아하지 않습니다. 게다가 나는 이 예에서처럼 단어를 다음 줄에 배치하는 것을 선호합니다.https://i.stack.imgur.com/f6Bes.png, 나에게 그것은 간단한 솔루션입니다. Latex에서는 단어가 페이지 제한을 초과하는 것을 허용해서는 안 됩니다. Microsoft Word에서 시도해 보십시오. 허용되지 않습니다. 대신, 다음 줄에 단어를 넣습니다.

긴 단어를 포함하거나 양쪽 맞춤으로 인해 너무 희박한 일부 특정 줄을 제외하고 줄 맞춤을 원합니다. 언급된 경우를 제외하고 대부분의 행에서 정렬이 제대로 작동합니다.

Microsoft Word에서 이를 처리하는 방법은 다음과 같습니다.

여기에 이미지 설명을 입력하세요

긴 단어 앞의 줄 정렬이 잘못되었지만 긴 단어가 줄 제한을 벗어나는 것을 허용하지 않았습니다.

답변1

특정 질문이 "긴 파일 경로를 현명하게 인쇄해야 합니다"와 비슷하다고 가정하면 어떻습니까?

여기에 이미지 설명을 입력하세요

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

관련 정보