
l3skip 式を に送信して回復するにはどうすればよいですかsetlength
? または:length + stretch - shrink
を に変換するにはどうすればよいですかlength plus stretch minus shrink\relax
?
\ExplSyntaxOn
\skip_const:Nn \c__par_skip { 1ex +0.2ex -0.1ex }
\setlength {\c__par_skip} % NOPE!
\exp_args:Nv \setlength {\skip_use:N \c__par_skip} % ALSO NO: skip_use:N evaluates
答え1
私のコメントを回答に変えます:
の入力構文は、\skip_const:Nn
おそらく希望どおりのものではありません。 式のスキップは評価されるため、単純な計算を使用できます。 は1ex + 0.2ex - 0.1ex
そのような計算として評価され、結果は になります(これはTeX によって/1.1ex
に変換され、 TeX の基礎となるレジスタを使用します)。pt
sp
l3skip
代わりに、グルーを使用してスキップを入力する場合はplus
、minus
次のように入力する必要があります。
\skip_const:Nn \c__douglas_par_skip { 1ex plus 0.2ex minus 0.1ex }
が読み込まれarticle
、デフォルトのフォント サイズが設定されると、 が\c__douglas_par_skip
に設定されます4.30554pt plus 0.86108pt minus 0.43057pt
。
これを LaTeX2e の長さに割り当てたい場合は、単に を使用すると\skip_use:N
、上記の文字列が挿入されます。つまり、次のコードで目的の動作が実行されます。
\newlength \douglaslength
\setlength \douglaslength { \skip_use:N \c__douglas_par_skip }
MWE を完了する:
\documentclass{article}
\ExplSyntaxOn
\skip_const:Nn \c__douglas_par_skip {1ex plus 0.2ex minus 0.1ex}
\newlength \douglaslength
\setlength \douglaslength { \skip_use:N \c__douglas_par_skip }
\showthe \douglaslength
\stop
プリント
> 4.30554pt plus 0.86108pt minus 0.43057pt.
l.7 \showthe \douglaslength
ターミナルへ。
答え2
スキップとは順序付けられた3つの値通常は次のように入力する
<length1> plus <length2> minus <length2>
最初の長さは標準単位(pt
、mm
などcm
)のいずれかで指定され、他の2つは標準単位または
fil fill filll
は「無限グルーの順序」に対応します。スキップを合計する場合、加算はコンポーネントごとに行われ、無限グルーは有限グルーに勝ち、 の数が多いグルーは の数がl
少ないグルーに勝ちます。 または のいずれか(または両方) が欠落しているl
場合、3 つの値には暗黙的に が割り当てられます。長さは正確な順序で指定する必要があります。plus
minus
0pt
キーワード と はplus
、minus
加算と減算の標準名に似ていますが、加算や減算を示すものではありません。
したがって、あなたが考えているようにスキップを入力するのは間違いです。1ex +0.2ex -0.1ex
プリミティブ割り当てによるスキップ指定では場違いです。
\skip0=1ex +0.2ex -0.1ex
plus
TeX は後続のコードが見つからないとすぐに<length1>
割り当てを停止するからです。
expl3
課題により
\skip_const:Nn \c__par_skip { 1ex +0.2ex -0.1ex}
代入では「式」が使えるため、別のアプローチが使われるexpl3
。しかし、スキップは標準的な方法で入力する必要がある。その式を使うと、単純に次の式と同等になる。
\skip0=1.1ex
「スキップ式」はどのように機能するのでしょうか?
\skip_new:N \l_dmt_a_skip
\skip_new:N \l_dmt_b_skip
\skip_new:N \l_dmt_c_skip
\skip_set:Nn \l_dmt_a_skip { 12pt plus 6pt minus 3pt }
\skip_set:Nn \l_dmt_b_skip { 24pt plus 1fil }
\skip_set:Nn \l_dmt_c_skip { \l_dmt_a_skip + \l_dmt_b_skip }
\skip_show:N \l_dmt_c_skip
すると
\l_dmt_c_skip=36.0pt plus 1.0fil minus 3.0pt
成分ごとの加算の仕組みのためそして無限接着剤のルールに従って。