-
I have difficulties producing a landscape CSV that does wrap column content if width is too large. I would appreciate any help. csv
command |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 1 reply
-
Came up with an improved template but still it faces some issues #let horizontalrule = line(start: (25%,0%), end: (75%,0%))
#show terms: it => {
it.children
.map(child => [
#strong[#child.term]
#block(inset: (left: 1.5em, top: -0.4em))[#child.description]
])
.join()
}
#set table(
inset: 6pt, // Minimal inset for table cells
stroke: none
)
#show figure.where(
kind: table
): set figure.caption(position: $if(table-caption-position)$$table-caption-position$$else$top$endif$)
#show figure.where(
kind: image
): set figure.caption(position: $if(figure-caption-position)$$figure-caption-position$$else$bottom$endif$)
// Set page to landscape mode with reduced margins
#set page(
width: 297mm, // A4 landscape width
height: 210mm, // A4 landscape height
margin: 10mm // Reduced margin (10mm on all sides)
)
// Function to create a table with wrapping content, including long words
#let dynamic-table(rows) = {
table(
columns: (auto,) * 18, // 18 columns, auto-sized
align: left, // Align text left for readability
// Header row
[*ID*], [*Year*], [*Volume*], [*Asset Group*], [*Asset ID*], [*Source Type*], [*Source ID*], [*Date*],
[*Vol. Base Asset*], [*Vol. Base Discovery*], [*Consumed*], [*Gain/Loss*], [*Gain/Loss < 1 Yr*],
[*Gain/Loss ≥ 1 Yr*], [*Consumed Volumes*], [*Years Passed*], [*Consumed Ledger IDs*], [*Gain/Loss List*],
// Flatten rows into a sequence of content items with wrapping and hyphenation
..rows.map(row => row.map(cell => block(width: 100%, breakable: true)[
#set text(hyphenate: true)
#cell
])).flatten()
)
}
$if(template)$
#import "$template$": conf
$else$
$template.typst()$
$endif$
$if(smart)$
$else$
#set smartquote(enabled: false)
$endif$
$for(header-includes)$
$header-includes$
$endfor$
#show: doc => conf(
$if(title)$
title: [$title$],
$endif$
$if(subtitle)$
subtitle: [$subtitle$],
$endif$
$if(author)$
authors: (
$for(author)$
$if(author.name)$
( name: [$author.name$],
affiliation: [$author.affiliation$],
email: [$author.email$] ),
$else$
( name: [$author$],
affiliation: "",
email: "" ),
$endif$
$endfor$
),
$endif$
$if(keywords)$
keywords: ($for(keywords)$$keyword$$sep$,$endfor$),
$endif$
$if(date)$
date: [$date$],
$endif$
$if(lang)$
lang: "$lang$",
$endif$
$if(region)$
region: "$region$",
$endif$
$if(abstract)$
abstract: [$abstract$],
$endif$
$if(margin)$
margin: ($for(margin/pairs)$$margin.key$: $margin.value$,$endfor$), // Custom margins if provided
$else$
margin: 10mm, // Default to 10mm if no custom margin
$endif$
$if(papersize)$
paper: "$papersize$",
$else$
paper: "a4",
$endif$
$if(mainfont)$
font: ("$mainfont$",),
$endif$
$if(fontsize)$
fontsize: $fontsize$,
$endif$
$if(section-numbering)$
sectionnumbering: "$section-numbering$",
$endif$
pagenumbering: $if(page-numbering)$"$page-numbering$"$else$none$endif$,
cols: $if(columns)$$columns$$else$1$endif$,
doc,
)
$for(include-before)$
$include-before$
$endfor$
$if(toc)$
#outline(
title: auto,
depth: $toc-depth$
);
$endif$
$body$
$if(citations)$
$if(csl)$
#set bibliography(style: "$csl$")
$elseif(bibliographystyle)$
#set bibliography(style: "$bibliographystyle$")
$endif$
$if(bibliography)$
#bibliography($for(bibliography)$"$bibliography$"$sep$,$endfor$)
$endif$
$endif$
$for(include-after)$
$include-after$
$endfor$ |
Beta Was this translation helpful? Give feedback.
-
New problem: if CSV has many entries first rendered pdf page is empty and it totally has only two pages. |
Beta Was this translation helpful? Give feedback.
-
Why not use typst directly instead of involving pandoc? |
Beta Was this translation helpful? Give feedback.
Why not use typst directly instead of involving pandoc?
https://typst.app/docs/reference/data-loading/csv/