From 258180d35e597fb2b82d02b3897a3ace0433875f Mon Sep 17 00:00:00 2001 From: Franck Dary <franck.dary@lis-lab.fr> Date: Wed, 2 Mar 2022 10:25:51 +0100 Subject: [PATCH] conllu2latex now hides empty cells depending on strategy --- scripts/conllu2latex.py | 49 +++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/scripts/conllu2latex.py b/scripts/conllu2latex.py index 8d2c410..7cd872f 100755 --- a/scripts/conllu2latex.py +++ b/scripts/conllu2latex.py @@ -95,7 +95,11 @@ def getLayout(sentence, text) : ################################################################################ -def produceTabular(sentence, ranges, text, columns, nodes, reduce, breakSize, hsep=True) : +def produceTabular(sentence, ranges, text, columns, nodes, reduce, breakSize, mask=[None,None], hsep=True) : + + if mask[0] not in [None, "incr", "seq"] : + print("ERROR : invalid mask '%s'"%mask, file=sys.stderr) + exit(1) maxNbLetters = 45 @@ -123,6 +127,19 @@ def produceTabular(sentence, ranges, text, columns, nodes, reduce, breakSize, hs else : value = sentence[j][i] value = value.replace('_','\_') + valueEmpty = "\ "*len(value) + if mask[0] == "seq" : + if i > mask[1][0] : + value = valueEmpty + if i == mask[1][0] and j > mask[1][1] : + value = valueEmpty + if mask[0] == "incr" : + if columns[i] == "HEAD" and int(value) >= mask[1][1] : + value = valueEmpty + if j > mask[1][1] : + value = valueEmpty + if j == mask[1][1] and i > mask[1][0] : + value = valueEmpty values = value.split('|') for k in range(len(values)) : @@ -191,10 +208,10 @@ def getNodes(firstNodeIndex, nbLines, nbCols) : def drawCenterRect(centerNode) : lineConf = "color=blue, dashed, opacity=0.4, line width=0.8mm" - center1 = "($(%d.north east)!0.5!(%d.north west)$)"%(centerNode-1, centerNode) - center2 = "($(%d.north east)!0.5!(%d.north west)$)"%(centerNode, centerNode+1) - center3 = "($%s-(%d.north)+(%d.south)$)"%(center2, centerNode, centerNode) - center4 = "($%s-(%d.north)+(%d.south)$)"%(center1, centerNode, centerNode) + center1 = "($(%d.north west)-(0.1,0)$)"%centerNode + center2 = "($(%d.north east)+(0.1,0)$)"%centerNode + center3 = "($(%d.south east)+(0.1,0.0)-(0.0,0.04)$)"%centerNode + center4 = "($(%d.south west)-(0.1,0.0)-(0.0,0.04)$)"%centerNode print("\draw[%s] %s -- %s -- %s -- %s -- cycle;"%(lineConf, center1, center2, center3, center4)) ################################################################################ @@ -216,10 +233,10 @@ def drawTextAbove(node, txt) : def drawRectanglePalo(firstNodeIndex, nbLines, nbCols) : centerNode, centerLine, centerLineEnd, bottomLine, bottomLineEnd, _ = getNodes(firstNodeIndex, nbLines, nbCols) pt1 = "(%d.north west)"%centerLine - pt2 = "($(%d.north east)!0.5!(%d.north west)$)"%(centerNode-1, centerNode) - pt3 = "($%s-(%d.north)+(%d.south)$)"%(pt2, centerNode, centerNode) - pt4 = "($%s-(%d.north)+(%d.south)$)"%("($(%d.north east)!0.5!(%d.north west)$)"%(centerNode, centerNode+1), centerNode, centerNode) - pt5 = "($%s-(%d)+(%d)$)"%(pt4, centerLineEnd, bottomLineEnd) + pt2 = "($%s+(%d.east)-(%d.west)$)"%(pt1, centerNode-1, centerLine) + pt3 = "($%s-(%d.north)+(%d.south)$)"%(pt2, centerNode-1, centerNode-1) + pt4 = "($%s+(%d.east)-(%d.west)$)"%(pt3, centerNode, centerNode) + pt5 = "($%s-(%d)+(%d)$)"%(pt4, centerLine, bottomLine) pt6 = "($%s-(%d)+(%d)-(%d.north)+(%d.south)$)"%(pt1, centerLine, bottomLine, centerLine, centerLine) print(r"\begin{tikzpicture}[overlay]") @@ -316,17 +333,21 @@ def drawFeatures(sentence, ranges, text, columns) : print(r"\tikzstyle{every picture}+=[remember picture,baseline]") print(r"\tikzstyle{every node}+=[inner sep=0pt,anchor=base]") + nbLines = len(sentence[0]) + nbCols = len(sentence) + + center = (nbLines//2, nbCols//2) + print(r"\begin{figure}") print("\\tabcolsep=0.10mm") print(r"\resizebox{\textwidth}{!}{") - produceTabular(sentence, ranges, text, columns, True, True, "0.1", hsep="") + produceTabular(sentence, ranges, text, columns, True, True, "0.1", mask=("seq", center), hsep="") print(r"\quad", end="") - produceTabular(sentence, ranges, text, columns, True, True, "0.1", hsep="") + produceTabular(sentence, ranges, text, columns, True, True, "0.1", mask=("seq", center), hsep="") print(r"\quad", end="") - produceTabular(sentence, ranges, text, columns, True, True, "0.1", hsep="") + produceTabular(sentence, ranges, text, columns, True, True, "0.1", mask=("incr", center), hsep="") print("") - nbLines = len(sentence[0]) - nbCols = len(sentence) + drawRectanglePalo(1, nbLines, nbCols) drawRectangleFulo(nbLines*nbCols+1, nbLines, nbCols) drawRectanglePahi(2*nbLines*nbCols+1, nbLines, nbCols) -- GitLab