Do not autodetect note alignment
This commit is contained in:
parent
5fd15585fd
commit
dbc94bc119
BIN
example.pdf
BIN
example.pdf
Binary file not shown.
@ -1 +1 @@
|
|||||||
{\rtf1\deff0{\fonttbl{\f0 TeX Gyre Heros{\*\falt FreeSans}{\*\falt Liberation Sans}{\*\falt Arial};}}\paperw11905\paperh16837\margl1133\margr1133\margt1133\margb1133{\header\f0\fs16\tqr\tx9637 Example Legal Document\tab }{\footer\f0\fs16\tqr\tx9637 \tab\chpgn}\sa198\fs1\~\fs24 {\fs20\li0{\b Note:} This is a note.\par}{\sb566\keepn\b\fs26\qc\caps Part 1\u8212?Preliminary\par}{\keepn\b\fi-566\li566 1\tab Short title\par}{\li566 This is the {\i blah blah}.\par}{\keepn\b\fi-566\li566 2\tab Another heading\par}{\fi-566\li1133 (1)\tab ABC\par}{\li1133 Continued\par}{\fi-566\li1700 (a)\tab asdf\par}{\fi-566\li1700 (b)\tab abcdefg\par}{\li1700 hijkl\par}{\li1133 Continued\par}{\fi-566\li1133 (2)\tab DEF\par}{\keepn\b\fi-566\li566 3\tab Table example\par}{\sa0\trowd\trgaph120\trleft566\clbrdrt\brdrs\clbrdrb\brdrs\cellx5101\clbrdrt\brdrs\clbrdrb\brdrs\cellx9636 {\b Column 1\intbl\cell}{\b Column 2\intbl\cell}\row{\b First column\intbl\cell}{\b Second column\intbl\cell}\row {1. First row\intbl\cell}{Foo bar\intbl\cell}\row {2. Second row\intbl\cell}{Baz qux\intbl\cell}\row }}
|
{\rtf1\deff0{\fonttbl{\f0 TeX Gyre Heros{\*\falt FreeSans}{\*\falt Liberation Sans}{\*\falt Arial};}}\paperw11905\paperh16837\margl1133\margr1133\margt1133\margb1133{\header\f0\fs16\tqr\tx9637 Example Legal Document\tab }{\footer\f0\fs16\tqr\tx9637 \tab\chpgn}\sa198\fs1\~\fs24 {\fs20\li566{\b Note:} This is a note.\par}{\sb566\keepn\b\fs26\qc\caps Part 1\u8212?Preliminary\par}{\keepn\b\fi-566\li566 1\tab Short title\par}{\li566 This is the {\i blah blah}.\par}{\keepn\b\fi-566\li566 2\tab Another heading\par}{\fi-566\li1133 (1)\tab ABC\par}{\li1133 Continued\par}{\fi-566\li1700 (a)\tab asdf\par}{\fi-566\li1700 (b)\tab abcdefg\par}{\li1700 hijkl\par}{\li1133 Continued\par}{\fi-566\li1133 (2)\tab DEF\par}{\keepn\b\fi-566\li566 3\tab Table example\par}{\sa0\trowd\trgaph120\trleft566\clbrdrt\brdrs\clbrdrb\brdrs\cellx5101\clbrdrt\brdrs\clbrdrb\brdrs\cellx9636 {\b Column 1\intbl\cell}{\b Column 2\intbl\cell}\row{\b First column\intbl\cell}{\b Second column\intbl\cell}\row {1. First row\intbl\cell}{Foo bar\intbl\cell}\row {2. Second row\intbl\cell}{Baz qux\intbl\cell}\row }}
|
||||||
|
@ -97,7 +97,7 @@ class LaTeXRenderer(mistletoe.latex_renderer.LaTeXRenderer):
|
|||||||
def render_paragraph(self, token):
|
def render_paragraph(self, token):
|
||||||
self.heading_last = False
|
self.heading_last = False
|
||||||
|
|
||||||
return format(r'\N{\par\leftskip=\dimexpr\quotemargin+<lmarg>\relax\updatealign <content>\par}\N',
|
return format(r'\N{\par\leftskip=\dimexpr\quotemargin+<lmarg>\relax <content>\par}\N',
|
||||||
content=self.render_inner(token)
|
content=self.render_inner(token)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ class LaTeXRenderer(mistletoe.latex_renderer.LaTeXRenderer):
|
|||||||
def render_definition(self, token):
|
def render_definition(self, token):
|
||||||
self.heading_last = False
|
self.heading_last = False
|
||||||
|
|
||||||
return format(r'\N{\par\leftskip=\dimexpr<lmarg>+1cm\relax\hangindent=1cm\updatealign <content>\par}\N',
|
return format(r'\N{\par\leftskip=\dimexpr<lmarg>+1cm\relax\hangindent=1cm <content>\par}\N',
|
||||||
content=self.render_inner(token)
|
content=self.render_inner(token)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -122,14 +122,14 @@ class LaTeXRenderer(mistletoe.latex_renderer.LaTeXRenderer):
|
|||||||
|
|
||||||
def render_subrules_item(self, token):
|
def render_subrules_item(self, token):
|
||||||
if token.label:
|
if token.label:
|
||||||
return format(r'\N{\par\leftskip=\dimexpr\quotemargin+<lmarg>+<level>cm\relax\hangindent=1cm\updatealign\parskip=<parskip>\makebox[<lmarg>][l]{<label>}<content>\par}\N',
|
return format(r'\N{\par\leftskip=\dimexpr\quotemargin+<lmarg>+<level>cm\relax\hangindent=1cm\parskip=<parskip>\makebox[<lmarg>][l]{<label>}<content>\par}\N',
|
||||||
parskip=r'\parskip',# if token.level <= 1 else '0cm',
|
parskip=r'\parskip',# if token.level <= 1 else '0cm',
|
||||||
label=token.label,
|
label=token.label,
|
||||||
level=token.level,
|
level=token.level,
|
||||||
content=self.render_inner(token)
|
content=self.render_inner(token)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return format(r'\N{\par\leftskip=\dimexpr<lmarg>+<level>cm+1cm\relax\updatealign\parskip=<parskip> <content>\par}\N',
|
return format(r'\N{\par\leftskip=\dimexpr<lmarg>+<level>cm+1cm\relax\parskip=<parskip> <content>\par}\N',
|
||||||
parskip=r'\parskip',# if token.level <= 1 else '0cm',
|
parskip=r'\parskip',# if token.level <= 1 else '0cm',
|
||||||
level=token.level,
|
level=token.level,
|
||||||
content=self.render_inner(token)
|
content=self.render_inner(token)
|
||||||
@ -138,7 +138,8 @@ class LaTeXRenderer(mistletoe.latex_renderer.LaTeXRenderer):
|
|||||||
def render_note(self, token):
|
def render_note(self, token):
|
||||||
self.heading_last = False
|
self.heading_last = False
|
||||||
|
|
||||||
return format(r'\N{\nopagebreak\par\footnotesize\selectfont\settowidth{\notetaglength}{\bfseries <label>:}\addtolength{\notetaglength}{1em}\leftskip=\lastalign\hangindent=\notetaglength\makebox[\notetaglength][l]{\bfseries <label>:}<content>\par}\N',
|
return format(r'\N{\nopagebreak\par\footnotesize\selectfont\settowidth{\notetaglength}{\bfseries <label>:}\addtolength{\notetaglength}{1em}\leftskip=\dimexpr1cm+<level>cm\relax\hangindent=\notetaglength\makebox[\notetaglength][l]{\bfseries <label>:}<content>\par}\N',
|
||||||
|
level=token.level,
|
||||||
label=token.label,
|
label=token.label,
|
||||||
content=self.render_inner(token)
|
content=self.render_inner(token)
|
||||||
)
|
)
|
||||||
@ -205,7 +206,6 @@ class LaTeXRenderer(mistletoe.latex_renderer.LaTeXRenderer):
|
|||||||
\usepackage{longtable}\usepackage{tabu}\usepackage{booktabs}
|
\usepackage{longtable}\usepackage{tabu}\usepackage{booktabs}
|
||||||
\newlength\quotemargin
|
\newlength\quotemargin
|
||||||
\newlength\notetaglength
|
\newlength\notetaglength
|
||||||
\newlength\lastalign\newcommand{\updatealign}{\global\lastalign=\dimexpr\leftskip+\hangindent\relax}
|
|
||||||
% TOC format
|
% TOC format
|
||||||
\usepackage{titletoc}
|
\usepackage{titletoc}
|
||||||
\makeatletter
|
\makeatletter
|
||||||
|
@ -45,7 +45,6 @@ class NumberedHeading(mistletoe.block_token.BlockToken):
|
|||||||
|
|
||||||
return level, label, content
|
return level, label, content
|
||||||
|
|
||||||
#mistletoe.block_token.remove_token(mistletoe.block_token.Heading)
|
|
||||||
mistletoe.block_token.add_token(NumberedHeading)
|
mistletoe.block_token.add_token(NumberedHeading)
|
||||||
|
|
||||||
class Subrules(mistletoe.block_token.BlockToken):
|
class Subrules(mistletoe.block_token.BlockToken):
|
||||||
@ -73,6 +72,8 @@ class Subrules(mistletoe.block_token.BlockToken):
|
|||||||
|
|
||||||
lines.reset()
|
lines.reset()
|
||||||
|
|
||||||
|
if Note.pattern.match(line):
|
||||||
|
break
|
||||||
if not SubrulesItem.start(line):
|
if not SubrulesItem.start(line):
|
||||||
break
|
break
|
||||||
|
|
||||||
@ -115,11 +116,10 @@ class SubrulesItem(mistletoe.block_token.BlockToken):
|
|||||||
return level, label, children
|
return level, label, children
|
||||||
|
|
||||||
class Note(mistletoe.block_token.BlockToken):
|
class Note(mistletoe.block_token.BlockToken):
|
||||||
pattern = re.compile(r'([0-9A-Z ]+):\s+(.+)')
|
pattern = re.compile(r'(\t*)([0-9A-Z ]+):\s+(.+)')
|
||||||
|
|
||||||
def __init__(self, match):
|
def __init__(self, match):
|
||||||
self.label, content = match
|
self.level, self.label, self.children = match
|
||||||
self.children = mistletoe.span_token.tokenize_inner(content)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def start(cls, line):
|
def start(cls, line):
|
||||||
@ -130,9 +130,9 @@ class Note(mistletoe.block_token.BlockToken):
|
|||||||
line = next(lines)
|
line = next(lines)
|
||||||
match = cls.pattern.match(line)
|
match = cls.pattern.match(line)
|
||||||
|
|
||||||
label, content = match.group(1, 2)
|
level_str, label, content = match.group(1, 2, 3)
|
||||||
label = label[0].upper() + label[1:].lower()
|
label = label[0].upper() + label[1:].lower()
|
||||||
return label, content
|
return len(level_str), label, mistletoe.span_token.tokenize_inner(content)
|
||||||
|
|
||||||
mistletoe.block_token.add_token(Note)
|
mistletoe.block_token.add_token(Note)
|
||||||
|
|
||||||
|
@ -45,7 +45,6 @@ class RTFRenderer(mistletoe.base_renderer.BaseRenderer):
|
|||||||
self.render_map['Definition'] = self.render_definition
|
self.render_map['Definition'] = self.render_definition
|
||||||
|
|
||||||
self.quotemargin = 0
|
self.quotemargin = 0
|
||||||
self.lastalign = 0
|
|
||||||
self.heading_last = False
|
self.heading_last = False
|
||||||
|
|
||||||
def render_strong(self, token):
|
def render_strong(self, token):
|
||||||
@ -136,7 +135,6 @@ class RTFRenderer(mistletoe.base_renderer.BaseRenderer):
|
|||||||
return inner
|
return inner
|
||||||
|
|
||||||
def render_paragraph(self, token):
|
def render_paragraph(self, token):
|
||||||
self.lastalign = LMARG
|
|
||||||
self.heading_last = False
|
self.heading_last = False
|
||||||
|
|
||||||
return format(r'{\li<leftmargin> <content>\par}',
|
return format(r'{\li<leftmargin> <content>\par}',
|
||||||
@ -219,7 +217,6 @@ class RTFRenderer(mistletoe.base_renderer.BaseRenderer):
|
|||||||
|
|
||||||
def render_subrules_item(self, token):
|
def render_subrules_item(self, token):
|
||||||
if token.label:
|
if token.label:
|
||||||
self.lastalign = LMARG + token.level + 1
|
|
||||||
return format(r'{\fi<fi>\li<li> <label>\tab <content>\par}',
|
return format(r'{\fi<fi>\li<li> <label>\tab <content>\par}',
|
||||||
fi=cm_to_twip(-1),
|
fi=cm_to_twip(-1),
|
||||||
li=cm_to_twip(LMARG + token.level + 1)+self.quotemargin,
|
li=cm_to_twip(LMARG + token.level + 1)+self.quotemargin,
|
||||||
@ -227,7 +224,6 @@ class RTFRenderer(mistletoe.base_renderer.BaseRenderer):
|
|||||||
content=self.render_inner(token)
|
content=self.render_inner(token)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.lastalign = LMARG + token.level + 1
|
|
||||||
return format(r'{\li<li> <content>\par}',
|
return format(r'{\li<li> <content>\par}',
|
||||||
li=cm_to_twip(LMARG + token.level + 1)+self.quotemargin,
|
li=cm_to_twip(LMARG + token.level + 1)+self.quotemargin,
|
||||||
label=token.label,
|
label=token.label,
|
||||||
@ -237,14 +233,13 @@ class RTFRenderer(mistletoe.base_renderer.BaseRenderer):
|
|||||||
def render_note(self, token):
|
def render_note(self, token):
|
||||||
self.heading_last = False
|
self.heading_last = False
|
||||||
|
|
||||||
return format(r'{\fs20\li<lastalign>{\b <label>:} <content>\par}',
|
return format(r'{\fs20\li<leftindent>{\b <label>:} <content>\par}',
|
||||||
lastalign=cm_to_twip(self.lastalign),
|
leftindent=cm_to_twip(LMARG + token.level),
|
||||||
label=token.label,
|
label=token.label,
|
||||||
content=self.render_inner(token)
|
content=self.render_inner(token)
|
||||||
)
|
)
|
||||||
|
|
||||||
def render_definition(self, token):
|
def render_definition(self, token):
|
||||||
self.lastalign = LMARG + 2
|
|
||||||
self.heading_last = False
|
self.heading_last = False
|
||||||
|
|
||||||
return format(r'{\fi<fi>\li<li> <content>\par}',
|
return format(r'{\fi<fi>\li<li> <content>\par}',
|
||||||
|
Loading…
Reference in New Issue
Block a user