Convert Typst to TSV

Drag and drop files here or click to select.
Max file size 100mb.
Uploading progress:

Typst vs TSV Format Comparison

Aspect Typst (Source Format) TSV (Target Format)
Format Overview
Typst
Modern Typesetting System

Typst is a modern typesetting system launched in 2023 as a faster, cleaner alternative to LaTeX. It combines markup syntax (= headings, *bold*, _italic_) with scripting (#let, #set, #for), mathematical notation ($ ... $), and structured tables (#table()). Written in Rust with incremental compilation.

Typesetting Modern
TSV
Tab-Separated Values

TSV is a simple tabular data format where each line represents a row and tab characters separate column values. It is widely used for data exchange between spreadsheets, databases, statistical software, and command-line tools. TSV avoids many quoting issues that affect CSV files.

Tabular Data Data Exchange
Technical Specifications
Structure: Plain text with Typst markup and scripting
Encoding: UTF-8
Format: Modern typesetting language
Compiler: Typst CLI (Rust-based)
Extensions: .typ
Structure: Tab-delimited rows and columns
Encoding: UTF-8 or ASCII
Delimiter: Tab character (U+0009)
Line Ending: LF or CRLF
Extensions: .tsv, .tab
Syntax Examples

Typst table with data:

#table(
  columns: 3,
  [*Name*],   [*Score*], [*Grade*],
  [Alice],    [95],      [A],
  [Bob],      [87],      [B+],
  [Charlie],  [92],      [A-],
)

TSV tab-delimited data:

Name	Score	Grade
Alice	95	A
Bob	87	B+
Charlie	92	A-
Content Support
  • Clean markup syntax (= for headings)
  • Built-in scripting language (#let, #if)
  • Mathematical equations ($ ... $)
  • Tables with #table() function
  • Figures and images with #figure()
  • Bibliography management
  • Cross-references and labels
  • Custom functions and templates
  • Incremental compilation
  • Real-time preview
  • Flat tabular data
  • Unlimited rows
  • Unlimited columns
  • Text, numbers, dates
  • Optional header row
  • No quoting issues (unlike CSV)
  • Copy-paste friendly
  • Command-line tool compatible
Advantages
  • Fast incremental compilation
  • Clean, readable syntax
  • Built-in scripting language
  • Real-time preview support
  • Consistent and predictable behavior
  • Helpful error messages
  • Modern package system
  • Written in Rust (fast and safe)
  • Simpler than CSV (no quoting rules)
  • Universal spreadsheet import
  • Works with cut, sort, awk, paste
  • Copy-paste from/to spreadsheets
  • No ambiguity in parsing
  • Smaller than XML/JSON for tabular data
  • Database import compatible
Disadvantages
  • Newer ecosystem (since 2023)
  • Smaller package library than LaTeX
  • Less journal template availability
  • Still evolving specification
  • Fewer tutorials and resources
  • Limited legacy document support
  • No formatting or styling
  • No hierarchical data support
  • Tab characters in data cause issues
  • No metadata or schema definition
  • No data type specification
  • Single table per file
Common Uses
  • Academic papers and reports
  • Technical documentation
  • Scientific manuscripts
  • Mathematical documents
  • Theses and dissertations
  • Letters and formal correspondence
  • Presentations and slides
  • Resumes and CVs
  • Spreadsheet data exchange
  • Database export/import
  • Statistical software (R, SPSS)
  • Bioinformatics data files
  • Log file analysis
  • Command-line data processing
  • Clipboard data from spreadsheets
Best For
  • Modern academic publishing
  • Fast document compilation
  • Scripted document generation
  • Clean typesetting workflow
  • Spreadsheet data import
  • Command-line data processing
  • Statistical analysis input
  • Simple data exchange
Version History
Introduced: 2023 (Martin Haug & Laurenz Mager)
Written In: Rust
License: Apache 2.0
Status: Active development, rapidly evolving
Origin: 1960s-70s (mainframe era)
IANA Type: text/tab-separated-values
Related: CSV (RFC 4180)
Status: De facto standard, widely used
Software Support
Typst CLI: Official compiler (all platforms)
Typst App: Online collaborative editor
VS Code: Tinymist extension
Packages: Typst Universe registry
Excel: Open/import TSV files
Google Sheets: Import TSV data
R/Python: read.delim(), pandas.read_csv(sep='\t')
CLI: cut, sort, awk, paste

Why Convert Typst to TSV?

Converting Typst documents to TSV extracts tabular data from typeset documents into a clean, tab-delimited format that can be imported directly into spreadsheets, databases, and statistical software. Typst's #table() function defines tables with explicit column counts and cell contents, making automated data extraction straightforward and reliable.

TSV is preferred over CSV in many scientific contexts because tab characters rarely appear in data values, eliminating the quoting and escaping issues that plague CSV files. For research data that includes commas in text fields (descriptions, locations, chemical formulas), TSV provides unambiguous column separation without complex parsing rules.

Typst's scripting capabilities allow authors to generate tables from computed data using #let bindings, loops, and expressions. When converting to TSV, both manually authored and programmatically generated tables are captured, preserving the final computed values. This makes Typst-to-TSV conversion ideal for reproducible research workflows.

Command-line data processing tools like cut, sort, awk, and paste work seamlessly with TSV data. Converting research results from Typst to TSV enables Unix-style data pipelines for filtering, sorting, and aggregating results across multiple papers without requiring spreadsheet software.

Key Benefits of Converting Typst to TSV:

  • Clean Data: Tab-delimited format avoids CSV quoting issues
  • Spreadsheet Ready: Direct import into Excel, Google Sheets, LibreOffice
  • Statistical Analysis: Load directly into R, Python/pandas, SPSS
  • Command-Line: Process with cut, sort, awk, and other Unix tools
  • Database Import: Bulk-load into PostgreSQL, MySQL, SQLite
  • Reproducibility: Extract computed data from Typst scripts
  • Simple Format: No complex parsing required

Practical Examples

Example 1: Research Results Table

Input Typst file (results.typ):

== Model Performance

#table(
  columns: 4,
  [*Model*], [*Accuracy*], [*F1 Score*], [*Latency*],
  [BERT],    [94.2%],      [93.8],       [12ms],
  [GPT-2],   [91.5%],      [90.9],       [18ms],
  [T5],      [95.1%],      [94.7],       [22ms],
)

Output TSV file (results.tsv):

Model	Accuracy	F1 Score	Latency
BERT	94.2%	93.8	12ms
GPT-2	91.5%	90.9	18ms
T5	95.1%	94.7	22ms

Example 2: Scripted Data Extraction

Input Typst file (data.typ):

#let experiments = (
  (trial: 1, temp: 25.3, pressure: 1.01, yield: 87.2),
  (trial: 2, temp: 30.1, pressure: 1.05, yield: 91.5),
  (trial: 3, temp: 35.7, pressure: 0.98, yield: 94.1),
)

#table(
  columns: 4,
  [Trial], [Temp (C)], [Pressure (atm)], [Yield (%)],
  ..experiments.map(e =>
    (str(e.trial), str(e.temp), str(e.pressure), str(e.yield))
  ).flatten()
)

Output TSV file (data.tsv):

Trial	Temp (C)	Pressure (atm)	Yield (%)
1	25.3	1.01	87.2
2	30.1	1.05	91.5
3	35.7	0.98	94.1

Example 3: Multi-Table Document

Input Typst file (survey.typ):

= Survey Results

== Demographics
#table(
  columns: 2,
  [*Age Group*], [*Count*],
  [18-24],       [42],
  [25-34],       [67],
  [35-44],       [53],
  [45+],         [38],
)

Output TSV file (survey.tsv):

Age Group	Count
18-24	42
25-34	67
35-44	53
45+	38

Frequently Asked Questions (FAQ)

Q: What is TSV format?

A: TSV (Tab-Separated Values) is a simple text format for tabular data where columns are separated by tab characters and rows by line breaks. It is widely used for data exchange between spreadsheets, databases, and analysis tools. TSV is simpler than CSV because tab characters rarely appear in data, avoiding quoting complications.

Q: Why TSV instead of CSV?

A: TSV is preferred when data contains commas (common in descriptions, addresses, and number formatting). Tab characters rarely appear in natural text, so TSV files rarely need quoting or escaping. This makes TSV simpler to parse, especially with command-line tools like cut and awk that can split on tabs directly.

Q: Which Typst content is converted to TSV?

A: The conversion extracts data from Typst #table() functions. Each table becomes a TSV dataset with the first row as headers. If a document contains multiple tables, they can be extracted individually. Non-tabular content like paragraphs and headings is not included in the TSV output.

Q: Can I open TSV files in Excel?

A: Yes. Microsoft Excel, Google Sheets, and LibreOffice Calc all support TSV import. In Excel, use File > Open and select the TSV file, or use the Text Import Wizard. Google Sheets can import TSV files directly. The data will be automatically separated into columns.

Q: How are Typst's scripted tables handled?

A: Tables generated through Typst scripting (#let, #for loops, .map()) are evaluated to their final content before TSV conversion. The TSV output contains the computed values, not the scripting code. This ensures the extracted data is ready for analysis regardless of how it was generated in Typst.

Q: Are mathematical expressions in tables preserved?

A: Math expressions in table cells are converted to their text representation. Simple expressions like $ x^2 $ become x^2, while complex formulas are linearized. For numerical data, the values are preserved as-is. TSV is primarily a data format, so visual mathematical formatting is not applicable.

Q: Can I load TSV data into R or Python?

A: Yes. In R, use `read.delim("file.tsv")` which defaults to tab separation. In Python with pandas, use `pd.read_csv("file.tsv", sep="\t")`. Both tools handle TSV natively and will correctly parse the tabular data into data frames for analysis.

Q: What about formatting like bold headers in Typst tables?

A: Formatting markup such as *bold* in Typst table headers is stripped during conversion. TSV is a plain data format with no formatting capabilities. Header text is preserved as clean column names without any markup characters, ready for use as column headers in spreadsheets and databases.