Hier ist, wie ich gesucht, wie dies zu tun:
Die Art und Weise eine Tabelle hinzuzufügen, in Docx den <w:tbl>
Tag zu verwenden ist. Also suchte ich diese im Github-Repository, und fand es in this file (genannt Writers/Docx.hs, so ist es keine große Überraschung ist)
blockToOpenXML opts (Table caption aligns widths headers rows) = do
let captionStr = stringify caption
caption' <- if null caption
then return []
else withParaProp (pStyle "TableCaption")
$ blockToOpenXML opts (Para caption)
let alignmentFor al = mknode "w:jc" [("w:val",alignmentToString al)]()
let cellToOpenXML (al, cell) = withParaProp (alignmentFor al)
$ blocksToOpenXML opts cell
headers' <- mapM cellToOpenXML $ zip aligns headers
rows' <- mapM (\cells -> mapM cellToOpenXML $ zip aligns cells)
$ rows
let borderProps = mknode "w:tcPr" []
[ mknode "w:tcBorders" []
$ mknode "w:bottom" [("w:val","single")]()
, mknode "w:vAlign" [("w:val","bottom")]() ]
let mkcell border contents = mknode "w:tc" []
$ [ borderProps | border ] ++
if null contents
then [mknode "w:p" []()]
else contents
let mkrow border cells = mknode "w:tr" [] $ map (mkcell border) cells
let textwidth = 7920 -- 5.5 in in twips, 1/20 pt
let mkgridcol w = mknode "w:gridCol"
[("w:w", show $ (floor (textwidth * w) :: Integer))]()
return $
[ mknode "w:tbl" []
(mknode "w:tblPr" []
([ mknode "w:tblStyle" [("w:val","TableNormal")]() ] ++
[ mknode "w:tblCaption" [("w:val", captionStr)]()
| not (null caption) ])
: mknode "w:tblGrid" []
(if all (==0) widths
then []
else map mkgridcol widths)
: [ mkrow True headers' | not (all null headers) ] ++
map (mkrow False) rows'
)
] ++ caption'
Ich bin nicht vertraut überhaupt mit Haskell, aber ich kann sehen, dass der Rahmenstil fest codiert ist, da keine Variable darin enthalten ist:
let borderProps = mknode "w:tcPr" []
[ mknode "w:tcBorders" []
$ mknode "w:bottom" [("w:val","single")]()
, mknode "w:vAlign" [("w:val","bottom")]() ]
Was bedeutet das?
Das bedeutet, dass Sie den Stil der docx-Tabellen mit der aktuellen Version von PanDoc nicht ändern können. Howewer, es gibt einen Weg, um Ihren eigenen Stil zu bekommen.
Wie bekommt man seinen eigenen Stil?
- erstellen docx-Dokument mit dem Stil, den Sie auf Ihrem Tisch wollen (durch diese Tabelle erstellen)
- Ändern Sie die Erweiterung der Datei und entpacken Sie es
- öffnen
word/document.xml
und die Suche nach dem <w:tbl>
- Try Finden Sie heraus, wie Ihr Stil in XML übersetzt wird, und ändern Sie die borderProps nach dem, was Sie sehen.
Hier ist ein Test mit einem Rand-Stil, den ich erstellt:
Und hier ist die entsprechende XML:
<w:tblBorders>
<w:top w:val="dotted" w:sz="18" w:space="0" w:color="C0504D" w:themeColor="accent2"/>
<w:left w:val="dotted" w:sz="18" w:space="0" w:color="C0504D" w:themeColor="accent2"/>
<w:bottom w:val="dotted" w:sz="18" w:space="0" w:color="C0504D" w:themeColor="accent2"/>
<w:right w:val="dotted" w:sz="18" w:space="0" w:color="C0504D" w:themeColor="accent2"/>
<w:insideH w:val="dotted" w:sz="18" w:space="0" w:color="C0504D" w:themeColor="accent2"/>
<w:insideV w:val="dotted" w:sz="18" w:space="0" w:color="C0504D" w:themeColor="accent2"/>
</w:tblBorders>
Was odt?
Ich habe es noch nicht angesehen, fragen Sie, ob Sie nicht selbst eine ähnliche Methode finden.
hoffe, das hilft und zögern Sie nicht, etwas mehr
Ich werde dieses akzeptieren, da es das erste war. Ich habe nicht einmal daran gedacht, den Code einfach zu überprüfen (oder vielleicht bin ich einfach zu faul und lasse es lieber von anderen tun;))! Vielen Dank! –
Es ist nicht immer so einfach, den Code zu überprüfen, wenn Sie nicht wissen, was sich dahinter verbirgt, zB wie ein Dokument strukturiert ist und wie die Tabelle in docx dargestellt wird. Es ist also normal. – edi9999
Das ist eine wunderbare Antwort. Alle upvotes zu dir @ edi9999. – Archonic