Saltar al contenido

¿Qué es una dimensión interna/pegamento/muglue?

Nuestro equipo de expertos luego de varios días de trabajo y de recopilar de datos, han obtenido la respuesta, deseamos que resulte útil para ti en tu proyecto.

Solución:

Trataré primero con el concepto general de TeX, luego por qué es importante en la documentación de esos expl3 funciones

Una dimensión interna (o conteo interno o lo que sea) es algo que ha sido analizado por TeX y ahora está almacenado en la forma correcta. As TeX ‘sabe’ que una dimensin interna es una dimensión válida, y no tiene que ‘buscar’ ningún otro material. Por el contrario, una dimensión externa (etc.) es algo que se compone de tokens discretos y TeX tendría que volver a analizarlo para usarlo. Así cuando nosotros escribe12.0ptestamos dando un externo representación (TeX tendría que analizarlo para saber que es una dimensión válida), pero después

newdimenmydimen
mydimen=12pt %

Puedo usar mydimen y TeX lo hace no Necesito analizar cualquier cosa: mydimen tiene una dimensión interna.

¿Porque es esto importante? Se trata de las reglas de análisis de TeX, en particular que TeX permite un espacio final opcional después de dimensiones, enteros, etc., y lo que es más importante, con una representación externa, TeX no deja de analizar hasta que encuentra algo que no “encaja”. Por ejemplo

deffoo123
newcountfooint
fooint=123 %
newcounttestint
%%%
testint=foo 456 %
showthetestint
testint=fooint 456 %
showthetestint

verás que el primer caso da un resultado erróneo: tenemos un macro que simplemente se expande a 123, y TeX sigue buscando un número entero hasta que llegamos al espacio opcional. Por el contrario, con una representación de conteo interno, no se trata de analizar: foointes123.

Él key El punto es que una representación interna es ‘más segura’ de usar (además de más rápida): nunca hay duda de dónde termina.


¿Cómo se relaciona esto con expl3? Algo como dim_eval:n se utiliza para tomar una expresión y convertirla en una dimensión. Sin embargo, resulta conveniente permitir que también sea solo tipografiado, almacenado por expansión en un macro (tl), etc. Para hacer eso, tenemos que arreglar que la evaluación resulte en un externo representación, no una interno uno. Eso significa que estas funciones se comportan como almacenar un valor como un macro: tienes que ver la terminación.

Por todo ‘puro’ expl3 el uso no es un problema, ya que tenemos la terminación correcta en los lugares correctos. Pero si combina el uso de estas funciones con la programación TeX más clásica, necesita saber cómo se comportarán. La respuesta de egreg muestra esto muy bien.


Para aquellos que quieren los detalles de TeX, dim_eval:n es en términos primitivos

thedimexpr #1relax

mientras que si queremos terminar con una representación interna solo queremos

dimexpr #1relax

Sin embargo, eso no se puede usar en composición tipográfica o (con éxito) dentro de un x-tipo de expansión, por lo tanto, no es adecuado para la definición que queremos.

Considere el siguiente ejemplo

documentclassarticle
usepackageexpl3

ExplSyntaxOn
cs_set_eq:NN dimeval dim_eval:n
ExplSyntaxOff

newlengthmylen

begindocument

Do an assignment mylen=dimeval3pt+1cm plus something else.

enddocument

lo que genera un error

! Missing number, treated as zero.
 
                   s
l.12 ...assignment mylen=dimeval3pt+1cm plus s
                                                  omething else.

Esto es precisamente a lo que se hace referencia en interface3.

Un es cualquier dimen registro o cualquier registro interno que almacene una longitud (rígida), como parindent; con extensiones e-TeX, también dimexpr es una instancia de .

Otro dato importante es que newlength asigna un skip regístrese, por lo que TeX esperará plus o minus especificaciones; esto no ocurre cuando setlength se utiliza, porque el macro proporciona el adecuado relax terminación.

Tienes la opción de animar nuestro estudio escribiendo un comentario y dejando una valoración te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *