setlength에 대한 인수로 l3skip을 어떻게 사용합니까?

setlength에 대한 인수로 l3skip을 어떻게 사용합니까?

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의 기본 레지스터를 사용함).ptspl3skip

대신에 접착제를 사용하여 건너뛰기를 입력하려면 다음과 같이 입력해야 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

스킵은세 배의 값을 주문했습니다., 일반적으로 다음과 같이 입력됩니다.

<length1> plus <length2> minus <length2>

pt첫 번째 길이는 표준 단위( , 등) 중 하나로 지정됩니다 mm. cm나머지 두 개는 표준 단위 또는 다음과 같이 지정할 수 있습니다.

fil    fill    filll

"무한 접착제 순서"에 해당합니다. 건너뛰기를 합산할 때 덧셈은 구성 요소별로 이루어집니다. 여기서 무한 글루가 유한 글루보다 이기고 l'가 더 많은 글루가 '가 적은 글루보다 이깁니다 l. 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

구성요소별 추가가 작동하는 방식 때문에그리고무한 접착제의 규칙에 따라.

관련 정보