mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-06 00:10:59 +00:00
InsetListings: lyx2lyx for caption and label
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18328 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
2260a558da
commit
49cb2e69e7
@ -1427,6 +1427,27 @@ lstinline[language=Delphi]{var i = 10;}
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
|
There can be an caption inset in this inset
|
||||||
|
|
||||||
|
\begin_layout Standard
|
||||||
|
\begin_inset Caption
|
||||||
|
|
||||||
|
\begin_layout Standard
|
||||||
|
before label
|
||||||
|
\begin_inset LatexCommand label
|
||||||
|
name "lst:caption"
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
after label
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
|
||||||
|
\end_layout
|
||||||
|
|
||||||
'''
|
'''
|
||||||
i = 0
|
i = 0
|
||||||
while True:
|
while True:
|
||||||
@ -1443,7 +1464,6 @@ lstinline[language=Delphi]{var i = 10;}
|
|||||||
inline = 'false'
|
inline = 'false'
|
||||||
params = ''
|
params = ''
|
||||||
status = 'open'
|
status = 'open'
|
||||||
inlinecode = ''
|
|
||||||
# first three lines
|
# first three lines
|
||||||
for line in range(i + 1, i + 4):
|
for line in range(i + 1, i + 4):
|
||||||
if document.body[line].startswith('inline'):
|
if document.body[line].startswith('inline'):
|
||||||
@ -1453,13 +1473,50 @@ lstinline[language=Delphi]{var i = 10;}
|
|||||||
if document.body[line].startswith('status'):
|
if document.body[line].startswith('status'):
|
||||||
status = document.body[line].split()[1].strip()
|
status = document.body[line].split()[1].strip()
|
||||||
k = line + 1
|
k = line + 1
|
||||||
# looking for the oneline code for lstinline
|
# caption?
|
||||||
for line in range(i + 2, j + 1):
|
caption = ''
|
||||||
if document.body[line].startswith(r'\end_layout'):
|
label = ''
|
||||||
inlinecode = document.body[line - 1]
|
cap = find_token(document.body, '\\begin_inset Caption', i)
|
||||||
|
if cap != -1:
|
||||||
|
cap_end = find_end_of_inset(document.body, cap + 1)
|
||||||
|
if cap_end == -1:
|
||||||
|
# this should not happen
|
||||||
break
|
break
|
||||||
|
# label?
|
||||||
|
lbl = find_token(document.body, '\\begin_inset LatexCommand label', cap + 1)
|
||||||
|
if lbl != -1:
|
||||||
|
lbl_end = find_end_of_inset(document.body, lbl + 1)
|
||||||
|
if lbl_end == -1:
|
||||||
|
# this should not happen
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
lbl = cap_end
|
||||||
|
lbl_end = cap_end
|
||||||
|
for line in document.body[lbl : lbl_end + 1]:
|
||||||
|
if line.startswith('name '):
|
||||||
|
label = line.split()[1].strip('"')
|
||||||
|
break
|
||||||
|
for line in document.body[cap : lbl ] + document.body[lbl_end + 1 : cap_end + 1]:
|
||||||
|
if not line.startswith('\\'):
|
||||||
|
caption += line.strip()
|
||||||
|
k = cap_end + 1
|
||||||
|
inlinecode = ''
|
||||||
|
# looking for the oneline code for lstinline
|
||||||
|
inlinecode = document.body[find_end_of_layout(document.body,
|
||||||
|
find_token(document.body, '\\begin_layout Standard', i + 1) +1 ) - 1]
|
||||||
|
if len(caption) > 0:
|
||||||
|
if len(params) == 0:
|
||||||
|
params = 'caption={%s}' % caption
|
||||||
|
else:
|
||||||
|
params += ',caption={%s}' % caption
|
||||||
|
if len(label) > 0:
|
||||||
|
if len(params) == 0:
|
||||||
|
params = 'label={%s}' % label
|
||||||
|
else:
|
||||||
|
params += ',label={%s}' % label
|
||||||
if len(params) > 0:
|
if len(params) > 0:
|
||||||
params = '[%s]' % params
|
params = '[%s]' % params
|
||||||
|
params = params.replace('\\', '\\backslash\n')
|
||||||
if inline == 'true':
|
if inline == 'true':
|
||||||
document.body[i:(j+1)] = [r'\begin_inset ERT',
|
document.body[i:(j+1)] = [r'\begin_inset ERT',
|
||||||
'status %s' % status,
|
'status %s' % status,
|
||||||
@ -1526,8 +1583,11 @@ lstinputlisting{file}[opt]
|
|||||||
if j == -1:
|
if j == -1:
|
||||||
# this should not happen
|
# this should not happen
|
||||||
break
|
break
|
||||||
# find command line
|
# find command line lstinputlisting{file}[options]
|
||||||
cmd = document.body[i].split()[2]
|
cmd, file, option = '', '', ''
|
||||||
|
if re.match(r'\\(lstinputlisting){([.\w]*)}(.*)', document.body[i].split()[2]):
|
||||||
|
cmd, file, option = re.match(r'\\(lstinputlisting){([.\w]*)}(.*)', document.body[i].split()[2]).groups()
|
||||||
|
option = option.replace('\\', '\\backslash\n')
|
||||||
document.body[i : j + 1] = [r'\begin_inset ERT',
|
document.body[i : j + 1] = [r'\begin_inset ERT',
|
||||||
'status open',
|
'status open',
|
||||||
'',
|
'',
|
||||||
@ -1535,7 +1595,7 @@ lstinputlisting{file}[opt]
|
|||||||
'',
|
'',
|
||||||
'',
|
'',
|
||||||
r'\backslash',
|
r'\backslash',
|
||||||
'%s' % cmd[1:],
|
'%s%s{%s}' % (cmd, option, file),
|
||||||
r'\end_layout',
|
r'\end_layout',
|
||||||
'',
|
'',
|
||||||
r'\end_inset']
|
r'\end_inset']
|
||||||
|
Loading…
Reference in New Issue
Block a user