角を切る - 1pt(0.3515mm)程度削る方法

角を切る - 1pt(0.3515mm)程度削る方法

文を書き直す方法はありません。たとえば、文中の文字「i」を削除すると、すべてが完璧に収まります。

そこで、空白の角をカットしようかと考えていました。特定の 1 行だけの問題です。何かいい案はありませんか? これはタイポグラフィの法則に反すると思いますが...

私が MS ユーザーだったとき、一度この現象に遭遇し、空白スペースのサイズを変更しただけでした。

ムウェ

\documentclass[12pt]{article}


\begin{document}

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 

Neither text reformulation nor deleting any characters is not the option (btw, is neither A nor B considered singular or plural?). Anyway, any idea????

\end{document}

この文書は 1 ページにする必要があります。最後の行 (できればスペース) を縮小して、疑問符を 4 つ残しておきたいです。「considered」の「i」の文字を削除すると機能するので、ちょっとしたチートを探しています。

答え1

この回答では、ドキュメント全体に影響するグローバル パラメータをリセットするのではなく、問題をローカル (困難な点) で解決しようとするアプローチを採用しています。

この回答は、ピリオドとカンマの後のスペースを小さくすることを優先するというバーバラの提案を取り入れて改訂されました。元の解決策はコード内にコメントとして残しています。その行のコメントを解除して再コンパイルすると、バーバラの提案による違いがわかります。(結果の順序を逆にしたことに注意してください。以前は最良から最悪でしたが、今は最悪から最良になっています。バーバラのコメントを読むときは、その点を考慮してください)。

一見違うように思えるかもしれませんが、この回答は私が最近回答した内容に基づいています。グループの最初の文字だけをタイプセットするマクロ を作成します。このマクロは\squeeze{}、すべてのスペースを 2 つの\hfils (ただし、\hfilそれぞれコンマとピリオドの後は 1 つだけ) に変換して内容を圧縮します。このマクロを使用するには、段落の終わりが議論の終わりであり、議論の始まりが最終行のどこかにあることを確認するだけです。以下では、圧縮の開始が正確である必要はないが、一般的に議論に含まれる単語が多いほど、圧縮がより多くのスペースに緩やかに広がることを示します。

\documentclass[12pt]{article}
\def\squeeze#1{\squeezeit#1 \relax\relax}
% REVISED SOLUTION
\def\squeezeit#1 #2\relax{#1\if\relax#2\else
  \findlast#1\relax\relax%
    \if.\LastChar\hfil\else
      \if,\LastChar\hfil\else
        \hfil\hfil%
       \fi
    \fi
  \squeezeit#2\relax\fi%
}
\def\findlast#1#2\relax{\def\LastChar{#1}\if\relax#2\else\findlast#2\relax\fi}
\parskip 1ex
% ORIGINAL SOLUTION (No \findlast and this \squeezeit below
% Uncomment old definition below, to see comparison
%\def\squeezeit#1 #2\relax{#1\if\relax#2\else{}\hfill\squeezeit#2\relax\fi}
\begin{document}
{\bfseries Goal: get 3 line expression down to two lines.}\par
Neither text reformulation nor deleting any characters is not the option 
(btw, is neither A nor B considered singular or plural?). Anyway, any idea????\par
{\bfseries Marginal:}\par
Neither text reformulation nor deleting any characters is not the option 
(btw, is neither A nor B considered \squeeze{singular or plural?). Anyway, any idea????}\par
{\bfseries Good:}\par
Neither text reformulation nor deleting any characters is not the option 
(btw, is neither \squeeze{A nor B considered singular or plural?). Anyway, any idea????}\par
{\bfseries Better:}\par
Neither text reformulation nor deleting any characters is not the option 
\squeeze{(btw, is neither A nor B considered singular or plural?). Anyway, any idea????}
\end{document}

ここに画像の説明を入力してください

答え2

サイズを変更することができます単語間のスペースMWEを1ページの文書にするには、少なくとも3つの方法があります。

\spaceskip=0.95\fontdimen2\font plus \fontdimen3\font minus \fontdimen4\font

単語間のスペースの自然な長さを減らすことができます。この新しい自然な長さで段落の悪さが最小になる改行のセットは、元の単語間のスペースでの改行のセットとは異なります。これにより、ページにより多くのものを収めることができます。

もう一つの選択肢は

\spaceskip=\fontdimen2\font plus \fontdimen3\font minus 1.2\fontdimen4\font

これにより、単語間のスペースをもう少し縮小することができます。

おそらく最も簡単な解決策は、microtypeパッケージ。

\usepackage{microtype}

このパッケージは、わずかに優れたタイプセッティングにつながるあらゆる種類のトリックを有効にし、この場合は 2 ページのドキュメントを 1 ページのドキュメントに変換します。

答え3

\hspace{-0.7mm}「anyway」の直前に置くとうまくいきました。どう思いますか?

ここに画像の説明を入力してください

(おそらく、問題をローカルで、つまり最後の行内、あるいは特定の段落内で解決したいということをもっとよく述べたほうがよかったでしょう。)

答え4

\enlargethispage{50pt}または星印付きバージョンを\enlargethispage*{50pt}最後の段落の前に使用できます。その後、\newpage最後の段落の後に使用します。

関連情報