On Friday 04 June 2010 23:32:40 Richard Heck wrote:
> Thoughts?
>
> Richard
I agree with your analysis.
It would possible for us to have the user configuring from its personal .lyx
directory lyx2lyx to bypass some conversion filters. It is not difficult and I
am not suggesting it for this case I am just saying that it could be done
easily.
On the same vein as your work and since I dislike the latex output of lyx-
beamer I have a workaround in the form of a python script and another layout.
This work is incomplete in the sense that only supports normal frames (no
plain or otherwise) but it allows me to share the latex output with my
colleagues that only use plain latex. (for any definition of plain that I will
ignore due to the respect to the readers :-) )
--
José Abílio
import sys
end_frame="""\\end_deeper
\\begin_layout Separator
\\end_layout
"""
begin_frame="""\\begin_layout BeginFrame
\\end_layout
\\begin_deeper
"""
titlepage=r"""\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
titlepage
\end_layout
\end_inset
\end_layout
"""
def clean(lyx_file):
# find textclass
for line in lyx_file:
# strip endline char
line = line[:-1]
if line.startswith("\\textclass"):
print("\\textclass beamer-clean")
break
else:
print line
# goto the document body
for line in lyx_file:
# strip endline char
line = line[:-1]
print line
if line.startswith("\\begin_body"):
break
# scan document body
print (begin_frame)
frame_closed = False
first_frame = True
for line in lyx_file:
# strip endline char
line = line[:-1]
if line.startswith("\\begin_layout"):
layout = line[len("\\begin_layout "):]
if layout in ("BeginFrame", "Section", "SubSection", "Section*", "Subsection*"):
if first_frame:
print (titlepage)
first_frame = False
if not frame_closed:
print(end_frame)
frame_closed = True
if layout == "BeginFrame":
frame_closed = False
print (begin_frame)
line = "\\begin_layout FrameTitle"
if layout == "EndFrame":
if first_frame:
print (titlepage)
first_frame = False
frame_closed = True
print ("\\end_deeper")
print ("")
line = "\\begin_layout Separator"
# if layout == "Title":
# line = "\\begin_layout FrameTitle"
if line.startswith("\\end_body"):
if not frame_closed:
print(end_frame)
print(line)
def main():
if len(sys.argv) < 2:
lyx_file = sys.stdin
else:
lyx_file = open(sys.argv[1])
clean(lyx_file)
if __name__ == "__main__":
main()
#% Do not delete the line below; configure depends on this
# \DeclareLaTeXClass[beamer,pgf.sty,xcolor.sty]{presentation (beamer, clean
lattex code)}
Format 11
Input beamer
# Section style _re_definition
Style Section
LatexName section
End
# Section* style _re_definition
Style Section*
LatexName section*
End
# Subsection style _re_definition
Style Subsection
LatexName subsection
End
# Subsection* style _re_definition
Style Subsection*
LatexName subsection*
End
Style FrameTitle
CopyStyle BeginFrame
LatexName frametitle
LabelString ""
Preamble
EndPreamble
End
Style BeginFrame
LatexName frame
LatexType Environment
Margin Static
Align Center
AlignPossible Center
LabelString "______________________ Frame ______________________"
Preamble
EndPreamble
Font
Series Medium
Size Normal
Color None
EndFont
End
TitleLaTeXName titlepage
Preamble
EndPreamble