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 InsetLayout
ellos, 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.inc
cuando se insertan, llenan todo el ancho del editor. Este comportamiento se aplica al diseño del prototipo Box
y 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 widetext
entorno. 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 IsPredefine
se suprime una entrada en el preámbulo que choca con la definición de widetext
medio ambiente. El recuadro luego se enumera enInsertar → FlotarLos resultados se ven así
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.