文書の本文を変更せずに、ゲラの切り抜きが後で繰り返されないようにする正しい方法はありますか?

文書の本文を変更せずに、ゲラの切り抜きが後で繰り返されないようにする正しい方法はありますか?

次の FMWE (Fairly Minimal Working Example) を検討してください。

\documentclass[a4paper]{article}
\usepackage{kantlipsum,xgalley}
\usepackage[scale=.8]{geometry}
\pagestyle{empty}
\ExplSyntaxOn
\NewDocumentCommand\resetindents { }
{
  \galley_parshape_set_multi:nnnN { 0 } { 0pt } { 0pt } \c_true_bool
}
\NewDocumentCommand\cutleft { m m }
{
  \galley_cutout_left:nn { #1 } { #2 }
}
\NewDocumentCommand\cutright { m m }
{
  \galley_cutout_right:nn { #1 } { #2 }
}
\ExplSyntaxOff
\begin{document}
% \ExplSyntaxOn
\cutleft{0}{25mm,25mm,25mm,25mm,25mm,25mm,25mm,25mm}
This is an extremely short paragraph.

\kant[4]

\cutright{4}{25mm,25mm,25mm,25mm,25mm,25mm}
\kant[5]
% \resetindents

\kant[6-7]

% \ExplSyntaxOff
\end{document}

このコードから私が期待する出力は

期待される

実際の出力は

実際の

ドキュメントの本文を変更せずに期待どおりの出力を実現する正しい方法はありますか?

目的の結果を得るには、本文に次の 2 つの変更のいずれかを加えるだけで十分です。

  1. 行のコメントを解除する

    % \resetindents
    
  2. 行のコメントを解除する

    % \ExplSyntaxOn
    

    そして

    % \ExplSyntaxOff
    

そのため、ソースにはこれらの行が含まれています。

ただし、\resetindents次の例では実際の望ましくない出力も得られるため、実際に問題が解決されたようには思えません。

\begin{document}
\ExplSyntaxOn
\cutleft{0}{25mm,25mm,25mm,25mm,25mm,25mm,25mm,25mm}
This is an extremely short paragraph.\par
\kant[4]
\cutright{4}{25mm,25mm,25mm,25mm,25mm,25mm}
\kant[5]
% \resetindents
\kant[6-7]
\ExplSyntaxOff
\end{document}

どうやら、ソースから空白行を削除すると、expl3構文の切り替えによって問題が回避されなくなるようです。さらに、

\begin{document}
\ExplSyntaxOn
\cutleft{0}{25mm,25mm,25mm,25mm,25mm,25mm,25mm,25mm}
This is an extremely short paragraph.\par
\kant[4]\par
\cutright{4}{25mm,25mm,25mm,25mm,25mm,25mm}
\kant[5]\par
% \resetindents
\kant[6-7]\par
\ExplSyntaxOff
\end{document}

問題も示しています。

したがって\resetindents必要と思われるが、私は考えるガレー船の哲学は、そうすべきではないことを示唆している。

カットのパターンがどのように決定されるのか知りたいです。例えば、

\begin{document}
\cutleft{0}{25mm,25mm,25mm,25mm,25mm,25mm,25mm,25mm}
This is an extremely short paragraph.\par
\kant[4]

\cutright{4}{25mm,25mm,25mm,25mm,25mm,25mm}

\kant[5-6]

\kant[7]
\end{document}

最後の段落までカットを繰り返さない

決勝のみ

その間

\begin{document}
\cutleft{0}{25mm,25mm,25mm,25mm,25mm,25mm,25mm,25mm}
This is an extremely short paragraph.\par
\kant[4]

\cutright{4}{25mm,25mm,25mm,25mm,25mm,25mm}

\kant[5]

\kant[6]

\kant[7]
\end{document}

最後の2段落でカットを繰り返す

最後の2つ

最新のカットが繰り返されることはありません。繰り返されると右側のカットが発生します。重要なのは、繰り返されるカットが 1 つの段落以上にわたることです。

\begin{document}
\cutright{0}{25mm,25mm,25mm,25mm,25mm,25mm,25mm,25mm}
This is an extremely short paragraph.
Perhaps we should make it a bit longer just to see what happens to things in that case.\par
\kant[4]

\cutleft{4}{25mm,25mm,25mm,25mm,25mm,25mm}

\kant[5]

\kant[6]

\kant[7]
\end{document}

右をもう一度切る

しかし、少なくともその効果は累積的ではありません。

\begin{document}
\cutright{0}{25mm,25mm,25mm,25mm,25mm,25mm,25mm,25mm}
This is an extremely short paragraph.
Perhaps we should make it a bit longer just to see what happens to things in that case.\par
\kant[4]

\cutleft{4}{25mm,25mm,25mm,25mm,25mm,25mm}
This is another extremely short paragraph.

\kant[5]

\kant[6]

\kant[7]
\end{document}

非累積的な繰り返しカット

その点に注意してください

  • これは実験的なもので、さまざまな奇妙で素晴らしい方法で使用しようとすると壊れることが予想されることを私はよく知っていますl3galley。これは、結果として生じる奇妙さと驚異のほんの一部を巡るガイド付きの冒険だと考えてください。

  • また、奇妙さや驚異は見る人の目によって大きく異なることもわかっています。私が予想外だと思う効果は、実際には、熱いキーボードに長時間を費やして、正確なアルゴリズムに従って切り抜きを繰り返すように必死に努力した開発者が非常に高く評価した設計機能である可能性は十分にあります。そのパターンは私にとっては難解ですが。TeX はミステリーです (極小文字と大文字の奇妙な組み合わせによるタイポグラフィの精霊の召喚を他にどのように表現すればよいでしょうか)。そのミステリーがその後継者で完全に消えてしまったら、私はがっかりするでしょう。

答え1

これは のバグが原因でしたl3galley。デモでは、 が\parshape最上位レベルで設定され、その後、カットアウトがグループ内で「使い果たされ」ます (ここでは表示されませんが、グループ内に\kantは が適用されるため存在します\par)。グループの後、 は\parshapeリセットされませんでした。l3galleyこれは、これを回避する試みが必要なかったためです (カットアウトは実際には存在せず、他のマージンやその他の設定は行われません)。

コードが変更され、カットアウトがまだ「アクティブ」であることを検出するようになり、カットアウトが発生し、最上位グループ レベルにない\parshape場合は設定が必要になります。この修正は、おそらく今週後半 (2016 年 6 月中旬) の\par次の更新で反映される予定です。expl3

関連情報