단어 간 건너뛰기의 *절반*을 깔끔하고 효율적으로 삽입하려면 어떻게 해야 합니까?

단어 간 건너뛰기의 *절반*을 깔끔하고 효율적으로 삽입하려면 어떻게 해야 합니까?

제목 질문은 명백하게 제시되어 있습니다. 이를 수행하는 더 간단한 방법이 있습니까(또는 실제로는 최소한 하나의 방법이 있습니까?)공장?

엠 대시(—)를 다룰 때 대시와 대시가 구분하는 텍스트 사이에 약간의 공간을 유지하는 것이 중요하다는 내용을 읽었습니다. 나는 그것이 무엇이든 간에 단어 간 건너뛰기의 절반 정도라고 추측합니다. (상황에 따라 2/3로 변경할 수도 있지만 핵심 질문과는 관련이 없습니다.)

이상적인 단어 간 간격을 사용하는 것이 좋습니다(기억은 나지 않지만).어디) 이 간격은 \thinspace. (시도 this---separationthis --- separation—둘 다 별로 좋아 보이지 않습니다.) 그러나 아래의 (과장된) 스크린샷에서 볼 수 있듯이 이로 인해 시각적 불일치가 발생할 수 있습니다(특히 두 번째 문단의 첫 번째 줄에서 눈에 띕니다). (이것은 사용된 글꼴의 영향도 받는 것으로 알고 있습니다.)

원래 문제 스크린샷

이 문제를 해결하려는 나의 시도는 다음과 같습니다.

\documentclass{article}

\newlength\halfinterwordspace
\newsavebox\interwordspace

\newcommand\Dash{%
  \savebox\interwordspace{\ }
  \setlength\halfinterwordspace{.5\wd\interwordspace}
  \typeout{\the\halfinterwordspace}
%
  \unskip                       % remove all previous skips
  \hspace* \halfinterwordspace  % unbreakable half-interword space
  \textemdash                   % dash, equivalent to "---"
  \hspace \halfinterwordspace   % breakable half-interword space
  % ^ also plays nice with microtype protrusion; see q/163116
}

% Uncomment to see the problem I am ultimately trying to fix.
% \def\Dash{\unskip\thinspace\textemdash\thinspace}

\sloppy
\hyphenpenalty=10000

\begin{document}
Lorem ipsum dolor sit amet \Dash consectetur adipiscing elit.  Fusce
pharetra velit in sem congue \Dash quis malesuada lectus
vulputate. Quisque eu scelerisque nunc. Nam at dui eget metus
ullamcorper rutrum quis et tellus.  Interdum et malesuada fames ac
ante ipsum primis in faucibus. Donec vitae augue vel nisi sollicitudin
tempus.  Nam neque sapien \Dash ullamcorper vitae sapien at \Dash
volutpat cursus nisi.  Nullam lorem ante \Dash fermentum sit amet
fermentum et \Dash rhoncus id ligula.  Pellentesque habitant morbi
tristique senectus et netus et malesuada fames ac turpis egestas.
Integer congue \Dash sem eu tincidunt pharetra \Dash mi nunc accumsan
neque \Dash in auctor elit eros eget eros. Vestibulum quis varius
lectus.

Curabitur faucibus \Dash feugiat porttitor.  Lorem ipsum dolor sit
amet \Dash consectetur adipiscing elit.  Vestibulum elementum ipsum id
nisl accumsan \Dash sed rutrum sapien tincidunt.  Cras sodales
sagittis neque vitae sollicitudin. Mauris at viverra quam. In nec
interdum diam \Dash ut ultrices velit. Nulla dapibus vulputate
luctus. Etiam vel faucibus augue \Dash ut aliquet massa. Vivamus eu
nunc at velit varius volutpat at eget eros.  Nulla at justo quis quam
sagittis aliquam eget in tellus.  Nunc est sem \Dash congue et tempus
a \Dash aliquet et nibh.  Sed malesuada \Dash nisi eu placerat porta
\Dash orci augue pellentesque ante \Dash ac sollicitudin urna nunc sit
amet tellus. Curabitur hendrerit et enim non vehicula. Donec in nibh
fringilla \Dash sodales arcu eu \Dash hendrerit massa.
\end{document}

결과:

스크린샷 시도

답변1

현재 글꼴의 일반 단어 간 공간은 다음과 같이 사용할 수 있습니다.

\fontdimen2\font

'깨지지 않는 공간'으로 생각하면 착각입니다 \hspace*. '사라지지 않는 공간'입니다.

다음은 귀하에 대한 두 가지 유사한 정의입니다 \Dash.

\documentclass{article}

\newcommand\Dash{%
  \leavevmode
  \unskip\nobreak\hspace{.5\fontdimen2\font}%
  \textemdash
  \hspace{.5\fontdimen2\font}%
}

\sloppy
\hyphenpenalty=10000

\begin{document}
Lorem ipsum dolor sit amet \Dash consectetur adipiscing elit.  Fusce
pharetra velit in sem congue \Dash quis malesuada lectus
vulputate. Quisque eu scelerisque nunc. Nam at dui eget metus
ullamcorper rutrum quis et tellus.  Interdum et malesuada fames ac
ante ipsum primis in faucibus. Donec vitae augue vel nisi sollicitudin
tempus.  Nam neque sapien \Dash ullamcorper vitae sapien at \Dash
volutpat cursus nisi.  Nullam lorem ante \Dash fermentum sit amet
fermentum et \Dash rhoncus id ligula.  Pellentesque habitant morbi
tristique senectus et netus et malesuada fames ac turpis egestas.
Integer congue \Dash sem eu tincidunt pharetra \Dash mi nunc accumsan
neque \Dash in auctor elit eros eget eros. Vestibulum quis varius
lectus.

\renewcommand\Dash{%
   \leavevmode\unskip
   \thinspace\textemdash
   \allowbreak\thinspace}

Lorem ipsum dolor sit amet \Dash consectetur adipiscing elit.  Fusce
pharetra velit in sem congue \Dash quis malesuada lectus
vulputate. Quisque eu scelerisque nunc. Nam at dui eget metus
ullamcorper rutrum quis et tellus.  Interdum et malesuada fames ac
ante ipsum primis in faucibus. Donec vitae augue vel nisi sollicitudin
tempus.  Nam neque sapien \Dash ullamcorper vitae sapien at \Dash
volutpat cursus nisi.  Nullam lorem ante \Dash fermentum sit amet
fermentum et \Dash rhoncus id ligula.  Pellentesque habitant morbi
tristique senectus et netus et malesuada fames ac turpis egestas.
Integer congue \Dash sem eu tincidunt pharetra \Dash mi nunc accumsan
neque \Dash in auctor elit eros eget eros. Vestibulum quis varius
lectus.

\end{document}

참고 사항:

  1. 우리 \nobreak\hspace{...}는 깨지지 않는 공간을 설정했습니다

  2. kern은 \thinspace글루가 뒤따르지 않는 한 줄 바꿈 지점으로 사용할 수 없습니다. 페널티는 실행 가능한 라인 중단점이 되며 \allowbreak페널티가 0으로 추가됩니다.

  3. 10pt 크기의 Computer Modern 글꼴의 일반적인 단어 간 간격은 3.33pt입니다. 얇은 공백은 .16667em이고 em은 10pt이므로 결국 얇은 공백(적어도 이 글꼴 설정에서는)은 절반 공백과 동일합니다.

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

em-dash 주변 공간에 유연성을 추가하려면 다음을 수행하십시오.

\newcommand\Dash{%
  \leavevmode\unskip\nobreak
  \hspace{\halfspace}%
  \textemdash
  \hspace{\halfspace}%
}
\newcommand{\halfspace}{%
  .5\fontdimen2\font plus .5\fontdimen3\font minus .5\fontdimen4\font
}

우리는 단어 간 공간의 기본 신축성과 수축성을 포함한다는 \fontdimen3사실 을 사용합니다 .\fontdimen4

보다\fontdimen<num>이 다르다는 것은 무엇을 의미하나요?\fontdimen매개변수의 의미 목록을 보려면

관련 정보