¿Cómo puedo insertar de forma limpia/eficiente *la mitad* de un salto entre palabras?

¿Cómo puedo insertar de forma limpia/eficiente *la mitad* de un salto entre palabras?

La pregunta del título está claramente planteada: ¿existe una manera más sencilla de hacer esto (o al menos una que realmente lo haga)?obras?

Cuando se trata de guiones largos (—), he leído que es importante mantener una pequeña cantidad de espacio entre el guión y el texto que separa. Supongo que es la mitad de un salto entre palabras, sea lo que sea. (Podría cambiarlo a 2/3 dependiendo, pero eso es irrelevante para la pregunta central).

Con un espaciado ideal entre palabras, se recomienda (aunque no recuerdodónde) que este espaciado sea un \thinspace. (Pruebe this---separationversus: this --- separationninguno se ve muy bien). Sin embargo, como puede ver en la captura de pantalla (exagerada) a continuación, esto puede causar inconsistencias visuales (particularmente notables en la primera línea del segundo párrafo). (Reconozco que esto también está influenciado por la fuente utilizada).

captura de pantalla del problema original

Mi intento de solucionar este problema:

\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}

Resultado:

intento de captura de pantalla

Respuesta1

El espacio normal entre palabras para la fuente actual está disponible como

\fontdimen2\font

Te equivocas al considerarlo \hspace*como un “espacio que no se rompe”: es un “espacio que no desaparece”.

Aquí hay dos definiciones bastante similares para su \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}

Puntos a tener en cuenta:

  1. Con \nobreak\hspace{...}establecemos un espacio que no se rompa.

  2. Un kern, y \thinspacelo es, no se puede utilizar como punto de salto de línea a menos que vaya seguido de pegamento; una penalización será un punto de ruptura de línea factible y \allowbreaksolo agrega una penalización cero.

  3. El espacio normal entre palabras para la fuente Computer Modern con un tamaño de 10 puntos es 3,33 puntos; un espacio delgado es .16667em y un em es 10pt, por lo que al final un espacio delgado (al menos con esta configuración de fuente) es lo mismo que medio espacio.

ingrese la descripción de la imagen aquí

Si desea agregar flexibilidad al espacio alrededor del tablero electrónico, entonces

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

Usamos el hecho de que \fontdimen3y \fontdimen4contiene la capacidad de extensión y contracción predeterminada del espacio entre palabras.

Ver¿Qué significan diferentes \fontdimen<num>?para obtener una lista de lo que \fontdimensignifica el parámetro.

información relacionada