HISTRETCH(1)
π histretch π
General Commands Manual
β¨ NAME β¨
okay so histretch is the tool that translates binary HINT files into ASCII HINT files π¦
π SYNOPSIS π
histretch [options] [file]
πΈ DESCRIPTION πΈ
okay so stretching takes a binary HINT file, usually the one ending in .hnt, and turns it into an ASCII based HINT file ending in .hint β¨
the binary HINT format (also called 'short' format) is built for displaying HINT files. it can be parsed equally well forward and backward, so navigating the file quickly in either direction is no problem πββοΈπ¨
the ASCII based HINT format (also called 'long' format) is built for readability π you can edit it in any text editor, so simple changes that would be a total nightmare in the binary format become easy. it's also super convenient when you're debugging π«Ά
the binary HINT format is designed for reading documents on screen π when a HINT viewer shows one, the content adapts on the fly to whatever display area is available. for the full scoop on the HINT file format and programs that view HINT files, check out https://hint.userweb.mwn.de π
π OPTIONS π
this version of histretch understands these command line options, so let's go:
-aβ writes auxiliary files to disk using the localized path names explained in the FILES section below ποΈ use this if you're stretching a HINT file that you plan to shrink back into binary format later, unless you already know it has all the auxiliary files inside it π-d bitmaskβ sets HINT file debugging flags according to the bitmask π check the--helpoption for the details-fβ forces existing auxiliary files to be replaced π₯ pair it with-gor-aso already existing auxiliary files get swapped out for the ones stored in the HINT file. WARNING: this is a dangerous option, especially together with-gπ never use it on a HINT file of unknown origin, because it can overwrite any file on your machine that you have write access to. if you're in doubt, don't use-fπ«£-gβ writes auxiliary files to disk using the path names stored in the HINT file π£οΈ this is an alternative to-a, and it wins if both are given. if you're in doubt, skip-g. if you just want to stretch the file, edit it, then shrink it back to binary, you want-ainstead π- if you're stretching on the same machine, in the same directory where you created the HINT file,
-gcan be a vibe π every file gets copied back to where it came from in case it was deleted in the meantime - if you're stretching on a different machine than the one that created the file, histretch will try to copy an auxiliary file into the same directory that was used when the HINT file was created, as long as you have the writing rights for it π that's probably where you want it, assuming both machines have the same directory structure
- WARNING: this is a dangerous option, especially together with
-fπ never use it on a HINT file of unknown origin, because it can write (and replace) any file on your machine where you have write access
- if you're stretching on the same machine, in the same directory where you created the HINT file,
--helpβ prints a help message and exits π-lβ redirects standard error to a log file π the log file's name comes from the input file's name, with the.hntextension swapped for.log-o nameβ usesnameas the output file instead of deriving it from the input file name π― the.hintextension gets appended ifnamedoesn't already have it-uβ enables UTF8 character codes β¨ without this, the output is a pure ASCII file, since character codes outside the ASCII range are written as their numeric representation. with this option, printable characters are always shown with their UTF8 character codes. this can make the output nicer to read in a UTF8 enabled program, but it can be harder to read in a program that doesn't handle UTF8 characters properly π₯Ί see also the-xoption--versionβ prints version information and exits π·οΈ-xβ enables hexadecimal character codes π’ without this, characters that aren't shown by their character codes get a decimal representation of their character code instead. with this option you get a hexadecimal representation. the characters that get a numeric representation include the non printable ones (character codes smaller than 32), and, unless-uis given, the character codes with a value of 127 and up π
π§ FILES π§
binary HINT files have to contain every resource needed to display the file, like font and image files πΌοΈ these are called auxiliary files. ASCII HINT files only hold the path names of these files.
when you make a binary HINT file from an ASCII HINT file, histretch has to find those files, read them, and bundle them into the binary output file π¦ when you make an ASCII HINT file from a binary one, it's handy if those files can be extracted and written to the file system. to avoid clobbering random directories with files while extracting auxiliary files, the path names stored in the HINT file can be mapped to localized path names before auxiliary files are written or read π§Ή
when computing a localized path name, there's a difference between global resources, like fonts, which are referenced by an absolute path name, and local resources, like an image, which are referenced by a relative path name πββοΈ the directory that starts the localized path name of a global resource gets the extension .abs, and local resources use the extension .rel. to keep auxiliary files in these subdirectories even when their path contains links to a parent directory, parent links .. get replaced by __ links to subdirectories π
for example, with an input file paper.hint, global resources are stored in the paper.abs directory and local resources go in paper.rel. an absolute path like /usr/share/fonts/ maps to the localized path paper.abs/usr/share/fonts/, and a relative path like ../image/img1.jpg maps to the localized path paper.rel/__/image/img1.jpg π·
π NOTES π
this manual page isn't meant to be exhaustive, bestie π the complete documentation is in HINT: The file format. it's available as a book or in electronic form from the HINT project home page at https://hint.userweb.mwn.de. over there you'll find extra software, most importantly viewers for HINT files, plus more info β¨
π¦ AVAILABILITY π¦
histretch should compile on a huge variety of machine architectures and operating systems πͺ it's part of the TeX Live distribution π
π SEE ALSO π
π AUTHORS π
Martin Ruckert
That's the whole thing, bestie π§ histretch v1.3, dated 11 November 2021, with the HISTRETCH(1) manual page to match π β¨
π¦ where this page comes from
- 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-hitex 11:svn65883-93.fc43 Β· MIT
- fedora 43: texlive-hitex 11:svn65883-95.fc43.1 Β· MIT
- fedora 44: texlive-hitex 12:svn77830-105.fc44 Β· MIT
- fedora 44: texlive-hitex 12:svn77830-111.fc44 Β· MIT
- opensuse-leap 16.0: texlive-hitex-doc 2025.221.svn74030-160000.3.1 Β· LPPL-1.0
- ubuntu noble: texlive-binaries 2023.20230311.66589-9build3 Β· TeX-Live
- ubuntu questing: texlive-binaries 2024.20240313.70630+ds-6ubuntu2 Β· TeX-Live
- π girlified by anthropic/claude-haiku-5.5 on : a language model's rewrite of the original, under its terms