Definición de un inserto Lyx, que siempre tiene el ancho de línea completo en el editor

Definición de un inserto Lyx, que siempre tiene el ancho de línea completo en el editor

Corrección: En el texto original escribí que los flotadores se muestran en ancho completo. Esto fue un error; Al igual que los "insertos flexibles" creados con InsetLayoutellos, solo se muestran en ancho completo cuando contienen más de una línea. Por lo tanto, la solución alternativa tampoco funciona según lo previsto.

En LyX hay algunos diseños integrados que, Resources/layouts/stdlayouts.inccuando se insertan, llenan todo el ancho del editor. Este comportamiento se aplica al diseño del prototipo Boxy a la Box:<SpecificName>familia de diseños. Un comportamiento similar se aplica a los flotadores.

Quería definir un diseño local que incluya un párrafo en el widetextentorno. El diseño

InsetLayout WideText 
    LyXType          Custom
    LabelString      WideText
    LatexType        environment
    LatexName        widetext
    Decoration       classic
    LabelFont        
        Color        blue
        Size         Small
    EndFont
    MultiPar         true
    OptionalArgs     0
    Preamble
        \RequirePackage{widetext}
    EndPreamble 
End

hace esto, pero en LyX el recuadro se mostrará sólo con el ancho de su contenido, lo cual es una mala representación del entorno real. Preferiría que mi inserto se muestre en el Estilo de cuadros y flotantes, sin ser ninguno de los dos: Cuadrossiempreincluyen un entorno de minipágina (lo cual no es deseable) y los flotantes causan cambios no deseados en el preámbulo a menos que se supriman mediante un hack (que por lo tanto puede fallar en futuras versiones de LyX).

Como solución alternativa, estoy usando el diseño.

Float
    Type         widetext
    GuiName      widetext
    IsPredefined true
End 

donde IsPredefinese suprime una entrada en el preámbulo que choca con la definición de widetextmedio ambiente. El recuadro luego se enumera enInsertar → FlotarLos resultados se ven así

Inserción de texto ancho vs pseudo-flotante y el comportamiento compilado es correcto en ambos casos.

Pero, ¿existe una solución limpia para obtener el comportamiento deseado sin el truco flotante?

Respuesta1

Por lo que tengo entendido, esto no es posible para las inserciones Flex.

Mirando el código fuente, vemos que Inset.h tiene lo siguiente

/// Is the width forced to some value?
virtual bool hasFixedWidth() const { return false; }

En la cadena de herencia de InsetFlex, esta función miembro nunca se anula.

Los cuadros tienen lo siguiente (ver InsetBox.cpp):

bool InsetBox::hasFixedWidth() const
{
    return !params_.width.empty();
}

Si cambia ese retorno para que sea return false;, tampoco tendrán el ancho de página completo del que está hablando.

Tenga en cuenta que cuando copio/pego su definición en Documento > Configuración > Diseño local, obtengo el siguiente resultado en mi terminal:

insets/InsetLayout.cpp (206): Flex insets must have names of the form `Flex:<name>'.
This one has the name `WideText'
Ignoring LyXType declaration.
LyX: Unknown InsetLayout tag [around line 2 of file  current token: 'Custom' context: '']
LyX: Unknown InsetLayout tag [around line 11 of file  current token: 'OptionalArgs' context: '']
LyX: Unknown InsetLayout tag [around line 12 of file  current token: '0' context: '']
frontends/qt4/GuiDocument.cpp (571): Format 49
InsetLayout "Flex:WideText"
    LyXType          Custom
    LabelString      WideText
    LatexType        environment
    LatexName        widetext
    Decoration       classic
    LabelFont        
        Color        blue
        Size         Small
    EndFont
    MultiPar         true
    ResetArgs   1
    Preamble
        \RequirePackage{widetext}
    EndPreamble 
    ResetsFont true
End

Es posible que desee corregir estos errores.

Finalmente, tenga en cuenta que tengo poca experiencia con diseños en LyX, por lo que cualquiera de las opciones anteriores podría estar mal. Deberías unirte a nuestra lista de correo en[correo electrónico protegido]y publicar más preguntas allí. Los expertos allí saben más que yo.

información relacionada