mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 01:59:02 +00:00
jss.layout: support for more layouts
Since lyX 2.0 we support to use the in_preamble tag. This allows to support more commands. For an unknown reason I forgot the jss.layout when I updated the other layouts once. Fileformat change
This commit is contained in:
parent
7c48bb0208
commit
e6c225d582
@ -11,6 +11,9 @@ adjustments are made to tex2lyx and bugs are fixed in lyx2lyx.
|
||||
|
||||
-----------------------
|
||||
|
||||
2015-05-24 Uwe Stöhr <uwestoehr@web.de>
|
||||
* Format incremented to 494: support more layouts in jss.layout
|
||||
No new parameters.
|
||||
|
||||
2015-05-17 Georg Baum <Georg.Baum@post.rwth-aachen.de>
|
||||
* Format incremented to 493
|
||||
@ -22,7 +25,7 @@ adjustments are made to tex2lyx and bugs are fixed in lyx2lyx.
|
||||
New box parameters:
|
||||
- framcolor
|
||||
- backgroundcolor
|
||||
|
||||
|
||||
2015-05-14 Uwe Stöhr <uwestoehr@web.de>
|
||||
* Format incremented to 491: support for xcolor's default colors
|
||||
No new parameter, the \color parameter can now also have these values:
|
||||
|
@ -1,12 +1,14 @@
|
||||
#% Do not delete the line below; configure depends on this
|
||||
# \DeclareLaTeXClass[jss,ae.sty,color.sty,fancyvrb.sty,hyperref.sty,natbib.sty,upquote.sty]{Journal of Statistical Software (JSS)}
|
||||
# \DeclareLaTeXClass[jss,ae.sty,color.sty,fancyvrb.sty,hyperref.sty,natbib.sty,upquote.sty]{Journal of Statistical Software (JSS) version 2}
|
||||
# \DeclareCategory{Articles}
|
||||
# Journal of Statistical Software (JSS) article textclass definition file
|
||||
# Author: Andreas Karlsson <andreas.karlsson@ltv.se>
|
||||
# Phil Chalmers <rphilip.chalmers@gmail.com>
|
||||
# Uwe Stöhr <uwestoehr@lyx.org>
|
||||
# License: GNU GPL version 2 or later
|
||||
# JSS LaTeX files can be downloaded from http://www.jstatsoft.org/downloads/JSSstyle.zip
|
||||
|
||||
Format 54
|
||||
Format 49
|
||||
|
||||
# Read the definitions from article.layout
|
||||
Input article.layout
|
||||
@ -17,3 +19,194 @@ Input article.layout
|
||||
AddToPreamble
|
||||
%\usepackage{Sweave}
|
||||
EndPreamble
|
||||
|
||||
Style Title
|
||||
InPreamble 1
|
||||
Font
|
||||
Size Huge
|
||||
EndFont
|
||||
End
|
||||
|
||||
Style "Plain Title"
|
||||
CopyStyle Title
|
||||
LatexName Plaintitle
|
||||
End
|
||||
|
||||
Style Author
|
||||
InPreamble 1
|
||||
End
|
||||
|
||||
Style "Plain Author"
|
||||
CopyStyle Author
|
||||
LatexName Plainauthor
|
||||
End
|
||||
|
||||
Style Abstract
|
||||
Category FrontMatter
|
||||
LatexName Abstract
|
||||
LatexType Command
|
||||
InTitle 1
|
||||
InPreamble 1
|
||||
Margin Dynamic
|
||||
LeftMargin MMNMM
|
||||
ParSkip 0.4
|
||||
BottomSep 1.5
|
||||
TopSep 1.5
|
||||
ParSep 1.5
|
||||
TopSep 0.8
|
||||
BottomSep 0.8
|
||||
AlignPossible Block, Left, Right, Center
|
||||
Labeltype Centered
|
||||
LabelString "Abstract"
|
||||
Labelsep M
|
||||
LabelFont
|
||||
Series Bold
|
||||
EndFont
|
||||
End
|
||||
|
||||
Style Address
|
||||
CopyStyle Abstract
|
||||
LatexName Address
|
||||
Labeltype Above
|
||||
LabelString "Affiliation:"
|
||||
Margin Static
|
||||
LeftMargin M
|
||||
Labelsep M
|
||||
LabelFont
|
||||
Size normal
|
||||
EndFont
|
||||
End
|
||||
|
||||
Style Keywords
|
||||
CopyStyle Abstract
|
||||
LatexName Keywords
|
||||
Font
|
||||
Size Small
|
||||
EndFont
|
||||
Margin Dynamic
|
||||
LeftMargin MMN
|
||||
RightMargin MMN
|
||||
Align Block
|
||||
NextNoIndent 1
|
||||
BottomSep 0.5
|
||||
ParSkip 0.4
|
||||
Labeltype Static
|
||||
LabelString "Keywords:"
|
||||
LabelFont
|
||||
Shape Italic
|
||||
EndFont
|
||||
End
|
||||
|
||||
Style "Plain Keywords"
|
||||
CopyStyle Keywords
|
||||
LatexName Plainkeywords
|
||||
LabelString "Plain Keywords:"
|
||||
End
|
||||
|
||||
Style "Short Title"
|
||||
CopyStyle Keywords
|
||||
LatexName Shorttitle
|
||||
LabelString "Short Title:"
|
||||
End
|
||||
|
||||
InsetLayout "Flex:pkg"
|
||||
LyxType custom
|
||||
LabelString pkg
|
||||
LatexType command
|
||||
LatexName pkg
|
||||
Font
|
||||
Color foreground
|
||||
Size Small
|
||||
Family Roman
|
||||
Shape Up
|
||||
Series Medium
|
||||
Misc No_Emph
|
||||
Misc No_Noun
|
||||
Misc No_Bar
|
||||
Series Bold
|
||||
EndFont
|
||||
LabelFont
|
||||
Color latex
|
||||
Size Small
|
||||
EndFont
|
||||
InToc true
|
||||
HTMLTag pkg
|
||||
ResetsFont true
|
||||
spellcheck false
|
||||
End
|
||||
|
||||
InsetLayout "Flex:proglang"
|
||||
CopyStyle "Flex:pkg"
|
||||
LabelString proglang
|
||||
LatexName proglang
|
||||
Font
|
||||
Family Typewriter
|
||||
Series Medium
|
||||
EndFont
|
||||
LabelFont
|
||||
Color latex
|
||||
Size Small
|
||||
EndFont
|
||||
HTMLTag proglang
|
||||
End
|
||||
|
||||
InsetLayout "Flex:code"
|
||||
CopyStyle "Flex:proglang"
|
||||
LabelString code
|
||||
LatexName code
|
||||
HTMLTag code
|
||||
End
|
||||
|
||||
InsetLayout "Flex:E-mail"
|
||||
CopyStyle "Flex:URL"
|
||||
LabelString E-mail
|
||||
LatexName email
|
||||
HTMLTag email
|
||||
End
|
||||
|
||||
Style "Code Chunk"
|
||||
Category MainText
|
||||
LatexType Environment
|
||||
LatexName CodeChunk
|
||||
NextNoIndent 1
|
||||
ParbreakIsNewline 1
|
||||
FreeSpacing 1
|
||||
PassThru 1
|
||||
KeepEmpty 1
|
||||
NewLine 0
|
||||
TopSep 0.7
|
||||
BottomSep 0.7
|
||||
Align Block
|
||||
AlignPossible Block
|
||||
Labeltype Above
|
||||
LabelString "Code Chunk"
|
||||
Font
|
||||
Family Typewriter
|
||||
EndFont
|
||||
LabelFont
|
||||
Series Bold
|
||||
Color Green
|
||||
EndFont
|
||||
HTMLTag <pre></pre>
|
||||
HTMLItem p
|
||||
End
|
||||
|
||||
Style "Standard Code"
|
||||
CopyStyle "Code Chunk"
|
||||
LatexName Code
|
||||
LabelString "Code"
|
||||
TopSep 0
|
||||
BottomSep 0
|
||||
End
|
||||
|
||||
Style "Code Input"
|
||||
CopyStyle "Standard Code"
|
||||
LatexName CodeInput
|
||||
LabelString "Code Input"
|
||||
End
|
||||
|
||||
Style "Code Output"
|
||||
CopyStyle "Standard Code"
|
||||
LatexName CodeOutput
|
||||
LabelString "Code Output"
|
||||
End
|
||||
|
@ -85,7 +85,7 @@ format_relation = [("0_06", [200], minor_versions("0.6" , 4)),
|
||||
("1_6", list(range(277,346)), minor_versions("1.6" , 10)),
|
||||
("2_0", list(range(346,414)), minor_versions("2.0" , 8)),
|
||||
("2_1", list(range(414,475)), minor_versions("2.1" , 0)),
|
||||
("2_2", list(range(475,494)), minor_versions("2.2" , 0))
|
||||
("2_2", list(range(475,495)), minor_versions("2.2" , 0))
|
||||
]
|
||||
|
||||
####################################################################
|
||||
|
@ -1160,6 +1160,270 @@ def revert_mathmulticol(document):
|
||||
i = j
|
||||
|
||||
|
||||
def revert_Argument_to_TeX_brace(document, line, endline, n, nmax, environment, opt):
|
||||
'''
|
||||
Reverts an InsetArgument to TeX-code
|
||||
usage:
|
||||
revert_Argument_to_TeX_brace(document, LineOfBegin, LineOfEnd, StartArgument, EndArgument, isEnvironment, isOpt)
|
||||
LineOfBegin is the line of the \begin_layout or \begin_inset statement
|
||||
LineOfEnd is the line of the \end_layout or \end_inset statement, if "0" is given, the end of the file is used instead
|
||||
StartArgument is the number of the first argument that needs to be converted
|
||||
EndArgument is the number of the last argument that needs to be converted or the last defined one
|
||||
isEnvironment must be true, if the layout is for a LaTeX environment
|
||||
isOpt must be true, if the argument is an optional one
|
||||
'''
|
||||
lineArg = 0
|
||||
wasOpt = False
|
||||
while lineArg != -1 and n < nmax + 1:
|
||||
lineArg = find_token(document.body, "\\begin_inset Argument " + str(n), line)
|
||||
if lineArg > endline and endline != 0:
|
||||
return wasOpt
|
||||
if lineArg != -1:
|
||||
beginPlain = find_token(document.body, "\\begin_layout Plain Layout", lineArg)
|
||||
# we have to assure that no other inset is in the Argument
|
||||
beginInset = find_token(document.body, "\\begin_inset", beginPlain)
|
||||
endInset = find_token(document.body, "\\end_inset", beginPlain)
|
||||
k = beginPlain + 1
|
||||
l = k
|
||||
while beginInset < endInset and beginInset != -1:
|
||||
beginInset = find_token(document.body, "\\begin_inset", k)
|
||||
endInset = find_token(document.body, "\\end_inset", l)
|
||||
k = beginInset + 1
|
||||
l = endInset + 1
|
||||
if environment == False:
|
||||
if opt == False:
|
||||
document.body[endInset - 2 : endInset + 1] = put_cmd_in_ert("}{")
|
||||
del(document.body[lineArg : beginPlain + 1])
|
||||
wasOpt = False
|
||||
else:
|
||||
document.body[endInset - 2 : endInset + 1] = put_cmd_in_ert("]")
|
||||
document.body[lineArg : beginPlain + 1] = put_cmd_in_ert("[")
|
||||
wasOpt = True
|
||||
else:
|
||||
document.body[endInset - 2 : endInset + 1] = put_cmd_in_ert("}")
|
||||
document.body[lineArg : beginPlain + 1] = put_cmd_in_ert("{")
|
||||
wasOpt = False
|
||||
n += 1
|
||||
return wasOpt
|
||||
|
||||
|
||||
def revert_jss(document):
|
||||
" Reverts JSS In_Preamble commands to ERT in preamble "
|
||||
|
||||
if document.textclass != "jss":
|
||||
return
|
||||
|
||||
h = 0
|
||||
m = 0
|
||||
j = 0
|
||||
k = 0
|
||||
n = 0
|
||||
while True:
|
||||
# at first revert the inset layouts because they can be part of the In_Preamble layouts
|
||||
while m != -1 or j != -1 or h != -1 or k != -1 or n != -1:
|
||||
# \pkg
|
||||
if h != -1:
|
||||
h = find_token(document.body, "\\begin_inset Flex pkg", h)
|
||||
if h != -1:
|
||||
endh = find_end_of_inset(document.body, h)
|
||||
document.body[endh - 2 : endh + 1] = put_cmd_in_ert("}")
|
||||
document.body[h : h + 4] = put_cmd_in_ert("\\pkg{")
|
||||
h = h + 5
|
||||
# \proglang
|
||||
if m != -1:
|
||||
m = find_token(document.body, "\\begin_inset Flex proglang", m)
|
||||
if m != -1:
|
||||
endm = find_end_of_inset(document.body, m)
|
||||
document.body[endm - 2 : endm + 1] = put_cmd_in_ert("}")
|
||||
document.body[m : m + 4] = put_cmd_in_ert("\\proglang{")
|
||||
m = m + 5
|
||||
# \code
|
||||
if j != -1:
|
||||
j = find_token(document.body, "\\begin_inset Flex code", j)
|
||||
if j != -1:
|
||||
endj = find_end_of_inset(document.body, j)
|
||||
document.body[endj - 2 : endj + 1] = put_cmd_in_ert("}")
|
||||
document.body[j : j + 4] = put_cmd_in_ert("\\code{")
|
||||
j = j + 5
|
||||
# \email
|
||||
if k != -1:
|
||||
k = find_token(document.body, "\\begin_inset Flex E-mail", k)
|
||||
if k != -1:
|
||||
endk = find_end_of_inset(document.body, k)
|
||||
document.body[endk - 2 : endk + 1] = put_cmd_in_ert("}")
|
||||
document.body[k : k + 4] = put_cmd_in_ert("\\email{")
|
||||
k = k + 5
|
||||
# \url
|
||||
if n != -1:
|
||||
n = find_token(document.body, "\\begin_inset Flex URL", n)
|
||||
if n != -1:
|
||||
endn = find_end_of_inset(document.body, n)
|
||||
document.body[endn - 2 : endn + 1] = put_cmd_in_ert("}")
|
||||
document.body[n : n + 4] = put_cmd_in_ert("\\url{")
|
||||
n = n + 5
|
||||
# now revert the In_Preamble layouts
|
||||
# \title
|
||||
i = find_token(document.body, "\\begin_layout Title", 0)
|
||||
if i == -1:
|
||||
return
|
||||
j = find_end_of_layout(document.body, i)
|
||||
if j == -1:
|
||||
document.warning("Malformed LyX document: Can't find end of Title layout")
|
||||
i += 1
|
||||
continue
|
||||
content = lyx2latex(document, document.body[i:j + 1])
|
||||
add_to_preamble(document, ["\\title{" + content + "}"])
|
||||
del document.body[i:j + 1]
|
||||
# \author
|
||||
i = find_token(document.body, "\\begin_layout Author", 0)
|
||||
if i == -1:
|
||||
return
|
||||
j = find_end_of_layout(document.body, i)
|
||||
if j == -1:
|
||||
document.warning("Malformed LyX document: Can't find end of Author layout")
|
||||
i += 1
|
||||
continue
|
||||
content = lyx2latex(document, document.body[i:j + 1])
|
||||
add_to_preamble(document, ["\\author{" + content + "}"])
|
||||
del document.body[i:j + 1]
|
||||
# \Plainauthor
|
||||
i = find_token(document.body, "\\begin_layout Plain Author", 0)
|
||||
if i == -1:
|
||||
return
|
||||
j = find_end_of_layout(document.body, i)
|
||||
if j == -1:
|
||||
document.warning("Malformed LyX document: Can't find end of Plain Author layout")
|
||||
i += 1
|
||||
continue
|
||||
content = lyx2latex(document, document.body[i:j + 1])
|
||||
add_to_preamble(document, ["\\Plainauthor{" + content + "}"])
|
||||
del document.body[i:j + 1]
|
||||
# \Plaintitle
|
||||
i = find_token(document.body, "\\begin_layout Plain Title", 0)
|
||||
if i == -1:
|
||||
return
|
||||
j = find_end_of_layout(document.body, i)
|
||||
if j == -1:
|
||||
document.warning("Malformed LyX document: Can't find end of Plain Title layout")
|
||||
i += 1
|
||||
continue
|
||||
content = lyx2latex(document, document.body[i:j + 1])
|
||||
add_to_preamble(document, ["\\Plaintitle{" + content + "}"])
|
||||
del document.body[i:j + 1]
|
||||
# \Shorttitle
|
||||
i = find_token(document.body, "\\begin_layout Short Title", 0)
|
||||
if i == -1:
|
||||
return
|
||||
j = find_end_of_layout(document.body, i)
|
||||
if j == -1:
|
||||
document.warning("Malformed LyX document: Can't find end of Short Title layout")
|
||||
i += 1
|
||||
continue
|
||||
content = lyx2latex(document, document.body[i:j + 1])
|
||||
add_to_preamble(document, ["\\Shorttitle{" + content + "}"])
|
||||
del document.body[i:j + 1]
|
||||
# \Abstract
|
||||
i = find_token(document.body, "\\begin_layout Abstract", 0)
|
||||
if i == -1:
|
||||
return
|
||||
j = find_end_of_layout(document.body, i)
|
||||
if j == -1:
|
||||
document.warning("Malformed LyX document: Can't find end of Abstract layout")
|
||||
i += 1
|
||||
continue
|
||||
content = lyx2latex(document, document.body[i:j + 1])
|
||||
add_to_preamble(document, ["\\Abstract{" + content + "}"])
|
||||
del document.body[i:j + 1]
|
||||
# \Keywords
|
||||
i = find_token(document.body, "\\begin_layout Keywords", 0)
|
||||
if i == -1:
|
||||
return
|
||||
j = find_end_of_layout(document.body, i)
|
||||
if j == -1:
|
||||
document.warning("Malformed LyX document: Can't find end of Keywords layout")
|
||||
i += 1
|
||||
continue
|
||||
content = lyx2latex(document, document.body[i:j + 1])
|
||||
add_to_preamble(document, ["\\Keywords{" + content + "}"])
|
||||
del document.body[i:j + 1]
|
||||
# \Plainkeywords
|
||||
i = find_token(document.body, "\\begin_layout Plain Keywords", 0)
|
||||
if i == -1:
|
||||
return
|
||||
j = find_end_of_layout(document.body, i)
|
||||
if j == -1:
|
||||
document.warning("Malformed LyX document: Can't find end of Plain Keywords layout")
|
||||
i += 1
|
||||
continue
|
||||
content = lyx2latex(document, document.body[i:j + 1])
|
||||
add_to_preamble(document, ["\\Plainkeywords{" + content + "}"])
|
||||
del document.body[i:j + 1]
|
||||
# \Address
|
||||
i = find_token(document.body, "\\begin_layout Address", 0)
|
||||
if i == -1:
|
||||
return
|
||||
j = find_end_of_layout(document.body, i)
|
||||
if j == -1:
|
||||
document.warning("Malformed LyX document: Can't find end of Address layout")
|
||||
i += 1
|
||||
continue
|
||||
content = lyx2latex(document, document.body[i:j + 1])
|
||||
add_to_preamble(document, ["\\Address{" + content + "}"])
|
||||
del document.body[i:j + 1]
|
||||
# finally handle the code layouts
|
||||
h = 0
|
||||
m = 0
|
||||
j = 0
|
||||
k = 0
|
||||
while m != -1 or j != -1 or h != -1 or k != -1:
|
||||
# \CodeChunk
|
||||
if h != -1:
|
||||
h = find_token(document.body, "\\begin_layout Code Chunk", h)
|
||||
if h != -1:
|
||||
endh = find_end_of_layout(document.body, h)
|
||||
begindeeper = find_token(document.body, "\\begin_deeper", h)
|
||||
enddeeper = find_token(document.body, "\\end_deeper", h)
|
||||
document.body[enddeeper + 1 : enddeeper] = ["\\end_layout"]
|
||||
document.body[enddeeper : enddeeper + 1] = put_cmd_in_ert("\\end{CodeChunk}")
|
||||
del document.body[begindeeper]
|
||||
document.body[h : h + 3] = put_cmd_in_ert("\\begin{CodeChunk}")
|
||||
document.body[h - 1 : h] = ["\\begin_layout Standard"]
|
||||
h = h + 1
|
||||
# \Code
|
||||
if m != -1:
|
||||
m = find_token(document.body, "\\begin_layout Standard Code", m)
|
||||
if m != -1:
|
||||
endm = find_end_of_layout(document.body, m)
|
||||
document.body[endm : endm + 1] = ["\\end_layout", "", "\\begin_layout Standard"]
|
||||
document.body[endm + 3 : endm + 4] = put_cmd_in_ert("\\end{Code}")
|
||||
document.body[endm + 13 : endm + 13] = ["\\end_layout", "", "\\begin_layout Standard"]
|
||||
document.body[m + 1 : m] = ["\\end_layout", "", "\\begin_layout Standard"]
|
||||
document.body[m : m + 1] = put_cmd_in_ert("\\begin{Code}")
|
||||
m = m + 1
|
||||
# \CodeInput
|
||||
if j != -1:
|
||||
j = find_token(document.body, "\\begin_layout Code Input", j)
|
||||
if j != -1:
|
||||
endj = find_end_of_layout(document.body, j)
|
||||
document.body[endj : endj + 1] = ["\\end_layout", "", "\\begin_layout Standard"]
|
||||
document.body[endj + 3 : endj + 4] = put_cmd_in_ert("\\end{CodeInput}")
|
||||
document.body[endj + 13 : endj + 13] = ["\\end_layout", "", "\\begin_layout Standard"]
|
||||
document.body[j + 1 : j] = ["\\end_layout", "", "\\begin_layout Standard"]
|
||||
document.body[j : j + 1] = put_cmd_in_ert("\\begin{CodeInput}")
|
||||
j = j + 1
|
||||
# \CodeOutput
|
||||
if k != -1:
|
||||
k = find_token(document.body, "\\begin_layout Code Output", k)
|
||||
if k != -1:
|
||||
endk = find_end_of_layout(document.body, k)
|
||||
document.body[endk : endj + 1] = ["\\end_layout", "", "\\begin_layout Standard"]
|
||||
document.body[endk + 3 : endk + 4] = put_cmd_in_ert("\\end{CodeOutput}")
|
||||
document.body[endk + 13 : endk + 13] = ["\\end_layout", "", "\\begin_layout Standard"]
|
||||
document.body[k + 1 : k] = ["\\end_layout", "", "\\begin_layout Standard"]
|
||||
document.body[k : k + 1] = put_cmd_in_ert("\\begin{CodeOutput}")
|
||||
k = k + 1
|
||||
|
||||
|
||||
##
|
||||
# Conversion hub
|
||||
#
|
||||
@ -1187,10 +1451,12 @@ convert = [
|
||||
[490, [convert_origin]],
|
||||
[491, []],
|
||||
[492, [convert_colorbox]],
|
||||
[493, []]
|
||||
[493, []],
|
||||
[494, []]
|
||||
]
|
||||
|
||||
revert = [
|
||||
[493, [revert_jss]],
|
||||
[492, [revert_mathmulticol]],
|
||||
[491, [revert_colorbox]],
|
||||
[490, [revert_textcolor]],
|
||||
|
@ -32,8 +32,8 @@ extern char const * const lyx_version_info;
|
||||
|
||||
// Do not remove the comment below, so we get merge conflict in
|
||||
// independent branches. Instead add your own.
|
||||
#define LYX_FORMAT_LYX 493 // gb math multicolumn
|
||||
#define LYX_FORMAT_TEX2LYX 493
|
||||
#define LYX_FORMAT_LYX 494 // uwestoehr jss layout changes
|
||||
#define LYX_FORMAT_TEX2LYX 494
|
||||
|
||||
#if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
|
||||
#ifndef _MSC_VER
|
||||
|
Loading…
Reference in New Issue
Block a user