-
-
Notifications
You must be signed in to change notification settings - Fork 240
File data
Quarkdown offers functions to retrieve information from files.
Note
The following functions refer to a path parameter, which accepts the path to the target file, which may be relative to the location of the main source file, or absolute.
A slash (/) is the global path separator, agnostic to the current file system in use.
The .read {path} function returns the string content of the given file.
An optional lines parameter of type Range is also supported, which allows for the selection of a specific range of lines (inclusive, starting from 1). An invalid or out of bounds range causes an error.
If no range is provided, the whole file is read.
.read {myfile.txt} lines:{3..8}
The strategy used for open ranges is defined as follows:
- If the range is open on the left end (
..N) it starts reading from the beginning of the file until lineN. - If the range is open on the right end (
N..) it reads from lineNto the end of the file. - If the range is open on both ends (
..) the whole file is read.
Tip
.read can be particularly useful when used in combination with .code and .mermaid in order to load code snippets from external files:
.code {java}
.read {Point.java}
The .listfiles {path} {sortby?} {order?}[docs] function returns an iterable of the files in a directory. It's unordered by default, or can be sorted by name or date.
As any other collection, the result can be iterated upon, or supplied to other functions. For example, it's possible to perform automatic bulk inclusions via .includeall:
.includeall {.listfiles {somedirectory} sortby:{name}}
The .filename {path} {extension?}[docs] function returns the file name from a given file path. The optional extension boolean parameter controls whether the file extension is included in the result.
.filename {path/to/myfile.txt} extension:{false}Output:
myfile
The .csv {path} {mode?} {caption?}[docs] function loads a table from a CSV file.
The first row of the CSV file is always used as the header row.
Tables loaded from CSV can also be manipulated: see Table manipulation for more.
.csv {people.csv}
The mode parameter controls how the CSV file is parsed.
It defaults to plain, which treats all cell content as plain text.
If set to markdown, cell content is parsed as inline Quarkdown source code,
allowing for formatting, rich content, and even inline function calls inside CSV.
Name, Favorite drink, Age *(as of 2026)*
Alice, Coffee, .subtract {2026} {1995}
Bob, *Pepsi*, .subtract {2026} {2001}
A caption can also be provided:
.csv {people.csv} caption:{People data.}
- Figures
- Image size
- TeX formulae
- Table caption
- Code caption
- Decorative headings
- Alerts (quote types)
- Quotation source
- Cross-references
- Page breaks
- Text symbols (text replacement)
- Emojis
- Document metadata
- Theme
- CSS
- Fonts
- Page format
- Page margin content
- Page counter
- Persistent headings
- Automatic page break
- Numbering
- Paragraph style
- Caption position
- Table of contents
- Bibliography
- Footnotes
- Stacks (row, column, grid)
- Container
- Align
- Float
- Figure
- Clip
- Box
- Collapsible
- Landscape
- Whitespace
- Variables
- Optionality
- Math
- Conditional statements
- Loops
- Let
- Destructuring
- String manipulation
- Table manipulation: sorting, computing, and more
- Table generation
- String
- Number
- Markdown content
- Boolean
- None
- Enumeration entry
- Iterable
- Dictionary
- Range
- Lambda
- Size(s)
- Color
- Dynamic
- Paper: abstract, definitions, theorems, and more