DV2DT(1)
β¨ DV2DT(1) β¨
General Commands Manual π
π«Ά NAME π«Ά
okay so dv2dt is the tool that takes a binary TeX DVI file and turns it into a DTL text file πβ¨
π SYNOPSIS π
dv2dt input-DVI-file output-DTL-file
If you leave out the filenames, it just uses stdin and stdout instead π§
π DESCRIPTION π
bestie, dv2dt converts a binary TeX DVI file into an editable text file written in DTL (DVI Text Language) format π¦ Once it's text, you can actually read it and edit it, which is so iconic. The companion utility dt2dv(1) can turn that DTL file back into a binary DVI file, so it's basically a full round trip π
πΈ DVI COMMAND DESCRIPTION πΈ
ngl this section is the heart of the whole thing π TeX DVI files store a super compact binary description of typeset pages. It's just a stream of operation code bytes, and each one is immediately followed by zero or more parameter bytes π The whole format is fully described in Donald E. Knuth, TeX: The Program, Addison-Wesley (1986), ISBN 0-201-13437-3, and also in the dvitype(1) literate program source code π
For convenience, I put a summary of the DVI commands right here so you don't have to dig through the books π In the list below, operation code bytes are shown as unsigned decimal values, followed by their symbolic names (which aren't actually in the DVI file, they're just nicknames), and then a short description. A designation like b[+n] means the operation code byte is followed by a parameter b that uses n bytes, and that parameter is signed β¨ Without the plus sign, the parameter is unsigned. Signed integer parameter values are always represented in two's complement arithmetic, which is the system most computers use today, including all personal computers and workstations π»
0set_char_0β Set character 0 from the current font....127set_char_127β Set character 127 from the current font.128set1 c[1]β Set the 1-byte unsigned character (uchar) numberc.129set2 c[2]β Set the 2-byte uchar numberc.130set3 c[3]β Set the 3-byte uchar numberc.131set4 c[+4]β Set the 4-byte signed character (schar) numberc.132set_rule a[+4] b[+4]β Set a rule, with heightaand widthbπ133put1 c[1]β Put the 1-byte ucharc.134put2 c[2]β Put the 2-byte ucharc.135put3 c[3]β Put the 3-byte ucharc.136put4 c[+4]β Put the 4-byte scharc.137put_rule a[+4] b[+4]β Put a rule, with heightaand widthb.138nopβ Do nothing. Literally just vibes π΄139bop c0[+4] ... c9[+4] p[+4]β Beginning of page π¬ The parametersc0...c9are the TeX page counters, aka the contents of the TeX count registers\count0...\count9. The parameterpis the byte offset from the beginning of the DVI file to the previous bop operation code byte. The first bop in the file hasp = -1, because there's no previous one, obviously π140eopβ End of page π141pushβ Push (h,v,w,x,y,z) onto the stack π₯142popβ Pop (h,v,w,x,y,z) off the stack π€143right1 b[+1]β Move rightbunits.144right2 b[+2]β Move rightbunits.145right3 b[+3]β Move rightbunits.146right4 b[+4]β Move rightbunits.147w0β Move rightwunits.148w1 b[+1]β Move rightbunits, and setw = b.149w2 b[+2]β Move rightbunits, and setw = b.150w3 b[+3]β Move rightbunits, and setw = b.151w4 b[+4]β Move rightbunits, and setw = b.152x0β Move rightxunits.153x1 b[+1]β Move rightbunits, and setx = b.154x2 b[+2]β Move rightbunits, and setx = b.155x3 b[+3]β Move rightbunits, and setx = b.156x4 b[+4]β Move rightbunits, and setx = b.157down1 a[+1]β Move downaunits.158down2 a[+2]β Move downaunits.159down3 a[+3]β Move downaunits.160down4 a[+4]β Move downaunits.161y0β Move rightyunits. (yes, it says right, not down, that's how the original goes π)162y1 a[+1]β Move rightaunits, and sety = a.163y2 a[+2]β Move rightaunits, and sety = a.164y3 a[+3]β Move rightaunits, and sety = a.165y4 a[+4]β Move rightaunits, and sety = a.166z0β Move rightzunits.167z1 a[+1]β Move rightaunits, and setz = a.168z2 a[+2]β Move rightaunits, and setz = a.169z3 a[+3]β Move rightaunits, and setz = a.170z4 a[+4]β Move rightaunits, and setz = a.
Part 1 ends here, bestie, the rest of the DVI commands and the DTL stuff are coming up next ππ§
β¨ AUTHOR β¨
okay so the people who wrote this thing are Geoffrey Tobin and the crew at the Department of Electronic Engineering, La Trobe University π bestie, that's the one who made dv2dt and dt2dv(1) π₯
Geoffrey Tobin
Department of Electronic Engineering
La Trobe University
Bundoora, Victoria 3083
Australia
Tel: +61 3 479 3736
FAX: +61 3 479 3025
Email: <G.Tobin@ee.latrobe.edu.au>
and these manual pages were mainly written by Nelson H. F. Beebe, Ph.D. π§ the vibe is very academic but the docs are iconic π
Nelson H. F. Beebe, Ph.D.
Center for Scientific Computing
Department of Mathematics
University of Utah
Salt Lake City, UT 84112
Tel: +1 801 581 5254
FAX: +1 801 581 4148
Email: <beebe@math.utah.edu>
okay that's the whole page, bestie π it's version 0.6.0 from 08 March 1995, and it's giving DV2DT(1) energy all the way through π¦β¨ thanks for reading with me, you're literally the best π«Άπ
π¦ where this page comes from
- alpine 3.24: texlive-doc 2026.0-r0 Β· GPL-2.0-or-later AND GPL-3.0-or-later
- arch rolling: texlive-doc 2026.1-1 Β· GPL
- debian bookworm: texlive-binaries 2022.20220321.62855-5.1+deb12u2
- debian trixie: texlive-binaries 2024.20240313.70630+ds-6 Β· TeX-Live
- fedora 43: texlive-dtl 11:svn62387-93.fc43 Β· LicenseRef-Fedora-Public-Domain
- fedora 43: texlive-dtl 11:svn62387-95.fc43.1 Β· LicenseRef-Fedora-Public-Domain
- fedora 44: texlive-dtl 12:svn62387-105.fc44 Β· LicenseRef-Fedora-Public-Domain
- fedora 44: texlive-dtl 12:svn62387-111.fc44 Β· LicenseRef-Fedora-Public-Domain
- opensuse-leap 16.0: texlive-dtl 2025.221.0.0.6.1svn62387-160000.3.1 Β· SUSE-Public-Domain
- ubuntu jammy: texlive-binaries 2021.20210626.59705-1build1
- ubuntu jammy: texlive-binaries 2021.20210626.59705-1ubuntu0.3
- ubuntu noble: texlive-binaries 2023.20230311.66589-9build3 Β· TeX-Live
- ubuntu questing: texlive-binaries 2024.20240313.70630+ds-6ubuntu2 Β· TeX-Live
- ubuntu resolute: texlive-binaries 2025.20250727.75242+ds-5build1 Β· TeX-Live
- ubuntu stonking: texlive-binaries 2026.20260303.78225+ds-5ubuntu1 Β· TeX-Live
- π girlified by anthropic/claude-haiku-5.5 on : a language model's rewrite of the original, under its terms