Я пытаюсь построить ОДИН абзац в созданном слове docx (через python docx), которое выглядит так:
text kjdfkjshfkjshfdkjhskjdhf
kjdhfksdfkhsgfdghsf
ksjdgfkjsgkjfgjsgf
Дело в том, что мне нужно убедиться, что этот абзац не будет разбит на части, если на текущей странице недостаточно места для печати всего этого на одной странице. Поэтому мне нужно связать три абзаца, чтобы достичь того, что я хочу (чтобы иметь возможность сделать отступ в первой строке абзаца в середине, что является обязательным; верхняя и нижняя строки просто строятся без отступа с подчеркиванием). Это, однако, не сработало, когда я просто построил три абзаца и установил .paragraph_format.keep_together
, а также .paragrapgh_format.keep_with_next modules = True
, для первых двух абзацев (для последнего только .paragraph_format.keep_together
было set = True
). Выполнение кода ниже (только соответствующая часть) работает отлично, дело в том, что верхняя и / или нижняя строки разделяются, если на странице недостаточно места для всего этого, а средняя часть даже не заполняется половину страницы (было бы достаточно места, чтобы поместить все на одну страницу, но она ломается). Это говорит мне, что мне не удалось связать три абзаца друг с другом. Помогите? (Я копирую из таблицы слов, и все содержимое копируется идеально, как я хочу; единственная проблема на самом деле в том, что мой абзац разбивается на части).
limitor = doc.add_paragraph()
limitor.add_run(separator)
limitor.paragraph_format.keep_together = True
limitor.paragraph_format.keep_with_next = True
ProdPar = doc.add_paragraph()
ProdPar.paragraph_format.keep_together = True
ProdPar.style.font.name = "Times New Roman"
ProdPar.paragraph_format.first_line_indent = Inches(-0.6496)
ProdPar.paragraph_format.left_indent = Inches(0.6496)
ProdPar.add_run(AmountNum + " " + Stücke).bold = True
ProdPar.add_run().add_tab()
table = source.tables[0]
amountofrows = 0
for xx in table.rows:
amountofrows += 1
rownum = amountofrows - 1
for ab in range(rownum):
for par in table.rows[ab].cells[1].paragraphs:
for run in par.runs:
copied_run = ProdPar.add_run(run.text)
if ab == 0:
copied_run.bold=True
elif ab == 1:
copied_run.italic=True
elif ab == 2:
copied_run.underline = True
if run.text == Spezif:
copied_run.italic = True
copied_run.underline = True
ProdPar.add_run("\n")
ProdPar.add_run("\n")