![편집기에서 항상 전체 선 너비를 갖는 Lyx 삽입 정의](https://rvso.com/image/309865/%ED%8E%B8%EC%A7%91%EA%B8%B0%EC%97%90%EC%84%9C%20%ED%95%AD%EC%83%81%20%EC%A0%84%EC%B2%B4%20%EC%84%A0%20%EB%84%88%EB%B9%84%EB%A5%BC%20%EA%B0%96%EB%8A%94%20Lyx%20%EC%82%BD%EC%9E%85%20%EC%A0%95%EC%9D%98.png)
보정: 내가 쓴 원본 텍스트에서는 float가 전체 너비로 표시됩니다. 이것은 오류였습니다. 생성된 "flexi-insets"과 마찬가지로 InsetLayout
두 줄 이상을 포함하는 경우에만 전체 너비로 표시됩니다. 따라서 해결 방법도 의도한 대로 작동하지 않습니다.
Resources/layouts/stdlayouts.inc
LyX에는 삽입 시 편집기의 전체 너비를 채우는 내장 레이아웃이 있습니다 . 이 동작은 프로토타입 레이아웃 Box
과 Box:<SpecificName>
레이아웃 제품군에 적용됩니다. 유사한 동작이 수레에도 적용됩니다.
저는 환경에 단락을 포함하는 로컬 레이아웃을 정의하고 싶었습니다 widetext
. 배치
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
이렇게 하지만 LyX에서는 삽입된 내용이 내용만큼만 표시됩니다. 이는 실제 환경을 제대로 표현하지 못하는 것입니다. 나는 내 삽입물이 다음 중 하나가 아닌 상자 및 플로트 스타일로 표시되기를 원합니다.언제나미니페이지 환경(바람직하지 않음)을 포함하고 부동 소수점은 해킹에 의해 억제되지 않는 한 서문에 바람직하지 않은 변경을 야기합니다(따라서 향후 버전의 LyX에서 깨질 수 있음).
해결 방법으로 레이아웃을 사용하고 있습니다.
Float
Type widetext
GuiName widetext
IsPredefined true
End
여기서는 IsPredefine
환경 정의와 충돌하는 서문의 항목을 억제합니다 widetext
. 그런 다음 인세트가 다음 목록에 나열됩니다.삽입 → 부동결과는 다음과 같습니다
두 경우 모두 컴파일된 동작이 정확합니다.
하지만 플로트 해킹 없이 원하는 동작을 얻을 수 있는 깔끔한 솔루션이 있을까요?
답변1
내가 이해한 바로는 Flex 인셋에서는 이것이 불가능합니다.
소스 코드를 보면 Inset.h에 다음이 있음을 알 수 있습니다.
/// Is the width forced to some value?
virtual bool hasFixedWidth() const { return false; }
InsetFlex에 대한 상속 체인에서 이 멤버 함수는 절대 재정의되지 않습니다.
상자에는 다음이 포함됩니다(InsetBox.cpp 참조).
bool InsetBox::hasFixedWidth() const
{
return !params_.width.empty();
}
해당 반환 값을 로 변경하면 return false;
말하는 전체 페이지 너비도 갖지 않게 됩니다.
문서 > 설정 > 로컬 레이아웃에 정의를 복사하여 붙여넣으면 터미널에 다음과 같은 출력이 표시됩니다.
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
이러한 오류를 수정하고 싶을 수도 있습니다.
마지막으로, 저는 LyX의 레이아웃에 대한 경험이 거의 없으므로 위의 내용 중 하나라도 다를 수 있습니다. 당신은 우리의 메일링 리스트에 가입해야 합니다:[이메일 보호됨]거기에 추가 질문을 게시하세요. 거기 전문가들은 나보다 더 많은 것을 알고 있다.