Python-docx はPythonでワード文書を出力できるライブラリです.ワードのみ許可される事務所類を自動生成するのに便利です.
1行に左揃えと右揃えを混在させる方法が分かったのでメモします.
TabStopという便利な機能がワードにあります*1.TabStopはタブの開始位置を指定するためのもので,alignment, leader, positionの属性があります*2.
1つのParagraphにTabStopを2つ用意して,1つ目を左揃え,2つ目を右揃えにすることで,上記を実現できます.
サンプルとして,左,中央,右の3つを混在させたワード文書を作成してみます.
from docx import Document from docx.shared import Inches from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_TAB_ALIGNMENT document = Document() page = document.sections[0] width = page.page_width - page.left_margin - page.right_margin # 文書の幅を計算 document.add_paragraph('Left message. \t Center message.\t Rignt message.') # \tはタブ文字として変換される r = document.add_paragraph('Left message. \t Center message.\t Rignt message.') tabstops = r.paragraph_format.tab_stops tabstops.add_tab_stop(0, WD_TAB_ALIGNMENT.LEFT) tabstops.add_tab_stop(int(width/2), WD_TAB_ALIGNMENT.CENTER) # 文書の幅を半分にして中央を取得 tabstops.add_tab_stop(width, WD_TAB_ALIGNMENT.RIGHT) print([(t.position, t.alignment) for t in tabstops]) document.add_paragraph('Left message. \t Center message.\t Rignt message.') document.save('demo.docx')
[(0, 0), (2743200, 1), (5486400, 2)]
2行目でCenter message. Right message.がそれぞれ中央,右に配置されているのが分かります.
段落に対してtabstopsは指定するので,前後の段落では影響を受けません.