LOWDOWN-DIFF(1)
๐ lowdown-diff โ the manual page (part 1)
okay so bestie, welcome to LOWDOWN-DIFF(1) โ General Commands Manual energy, tiny tool, huge personality. sit down, grab a strawberry ๐, and let's get into it.
โจ NAME โจ
lowdown-diff โ view differences in markdown files. that's it, that's the vibe. ๐ฆ
โจ SYNOPSIS โจ
lowdown-diff [input_options] [output_options] [-s] [-M metadata]
[-m metadata] [-o file] [-t mode] oldfile [newfile]
โจ DESCRIPTION โจ
So what does this icon actually do? It shows differences between lowdown(5) documents as formatted output. Like, you feed it two markdown files and it tells you what changed โ but pretty. Results are written to standard output. slay. ๐
The short arguments are as follows:
-sโ produce a standalone document (e.g., a valid HTML document including document type, head, etc.) around the formatted content. See โStandalone documentsโ for the deets. ๐-M metadataโ provide a single metadata key-value pair. This may be in the normal syntax or as pairs separated by an equal sign, depending upon which character (a colon or equal sign) comes first. Exits with an error if given neither. This overrides-mand what's parsed from the document. See โMetadataโ. no cap,-Malways wins ๐-m metadataโ like-M, but overridden by what's parsed the document, then-M. so the priority chain is literally document โ-mโ-M,-Msitting at the top like the main character it is.-o fileโ send output to file unless it's โ-โ, in which case fall back to the default of standard output. ๐ซถ-t mode,-T modeโ the output mode. This may be:htmlfor HTML5 outputlatexfor LaTeXgeminifor the Gemini โgemtextโ formatmsfor roff output using the-mspdfpackage and needing table supporttermfor ANSI-compatible UTF-8 terminal outputmanfor roff output using the-manpackagemdocfor roff output using the-mdocpackagetree, to show the parse tree of the input documentnullto parse the document but do no rendering
See โOutput mediaโ. oh and btw, the -T mode form is retained for backward compatibility โ it's giving legacy, but we respect it. ๐
- oldfile, newfile โ markdown documents used for comparison. If newfile is not given or โ
-โ, it is read from standard input. ๐ classic stdin behaviour.
The following are long options for input parsing. These affect the parse tree passed to all outputs. (so like, they change the tree before any renderer gets its hands on it โ big deal energy ๐ฅ)
--parse-hiliteโ enable highlight span support. This are disabled by default because it may be erroneously interpreted as section headers. yes, that's a real risk, don't come for me. ๐ธ--parse-mathโ recognise mathematics equations. math girlies rise ๐ง--parse-maxdepth=depthโ the maximum depth of nested elements. This defaults to128, which is probably more than enough for any real-world document. If the maximum is hit, the system exits as if memory were exhausted. Set to zero for no maximum. so basically: chaos mode is available, but it is chaos. ๐ญ--parse-no-autolinkโ do not parsehttp,https,ftp,mailto, and relative links or link fragments. links stay plain, no glow-up. โจ--parse-no-cmarkโ do not parse with CommonMark constraints. This also disables using the first ordered list value instead of starting all lists at one. ๐--parse-no-codeindentโ do not parse indented content as code blocks. four spaces? just vibes now.--parse-no-calloutsโ do not parse GFM/MDN callouts (โadmonitionsโ). no shouty boxes for you. ๐ฃ--parse-no-deflistsโ do not parse PHP extra definition lists.--parse-no-ext-attrsโ do not parse PHP extra extended attributes.--parse-no-fencedโ do not parse GFM fenced (language-specific) code blocks. bye bye ``` fences ๐--parse-no-footnotesโ do not parse MMD footnotes. no little endnotes hiding at the bottom.--parse-no-img-extโ deprecated. See--parse-no-ext-attrs. it's giving old news, move on bestie ๐--parse-no-intraemphโ do not parse emphasis within words and links. like in*side*word? no ma'am.--parse-no-mantitleโ do not parse manpage title, section, source, and volume from Pandoc title metadata. Manpages titles are indicated by a title then an open parenthesis, digit followed by optional characters, then a closed parenthesis. (that's the wholename(1)situation, iykyk ๐)--parse-no-metadataโ do not parse metadata. This does not affect metadata given on-mor-M. so the flags still work, only the in-document stuff gets skipped. ๐ซถ--parse-no-strikeโ do not parse strikethroughs. ~~nothing gets crossed out~~, sorry, nvm, nothing gets crossed out.--parse-no-superโ do not parse super-scripts or sub-scripts at all. no^no~, none of it. โญ--parse-no-tablesโ do not parse GFM tables. no grid, no glamour. ๐--parse-no-tasklistsโ do not parse GFM task lists. no checkboxes, no ticking things off.--parse-super-shortโ if super-script parsing is enabled, use the traditional non-GFM โshortโ syntax. throwback edition ๐ฆ
๐ output long options โ the shared ones
There are many output long options. The following are shared by all output media:
--out-standaloneโ alias for-s. same energy, longer name.--out-no-smartyโ do not use the smart typography filter. By default, certain character sequences are translated into output-specific glyphs. (yes, the curly quotes are watching you ๐)--template templateโ when producing standalone-soutput, use a template file. See โTemplatesโ. Currently only for-tgemini,-thtml,-tlatex,-tman,-tms, and-ttree. so check your mode first, bestie. ๐
๐ธ HTML options โ for -thtml
What follows are per-output long options. For HTML with -thtml, these are as follows:
--html-callout-mdn,--html-callout-gfmโ output either or both MDN or GFM callout syntaxes. pick your fighter, or don't, both is valid ๐--html-hardwrapโ hard-wrap paragraph content by outputting line breaks where applicable. aggressive line breaks, on purpose.--html-no-escapehtmlโ if--html-no-skiphtmlhas been specified, this causes embedded HTML not to be escaped, and is instead output verbatim. This has no effect if--html-no-skiphtmlhas not been specified. read that one twice, it's a two-flag situation ๐ฅ--html-no-head-idsโ do not outputidattributes for headers. no anchors, no jump-links.--html-no-num-entโ don't normalise HTML entities (when possible) as numeric ones and instead use the entities as given on input. honour the original, periodt โจ--html-no-owaspโ don't follow the OWASP recommendations for escaping text, and do only the minimal escaping to make sure that regular content isn't interpreted as HTML. > โ ๏ธ okay so like, this is the minimal safety setting โ the original says OWASP escaping is the thing being skipped, so know that you're trading safety for vibes here.--html-no-skiphtmlโ output embedded HTML. By default, embedded HTML is not output at all. See--html-no-escapehtml. ๐ซถ--html-titleblockโ if any were parsed, format the title information (title, author, date) into a header element appearing first in the document. cute lil title card, main character energy ๐
๐ฅ roff options โ for -tman, -tmdoc, and -tms
For roff formats -tman, -tmdoc, and -tms (unless as noted), the following apply:
--roff-code-font=fontsโ override the default constant-width fonts with a tuple of regular, bold, italic, and bold-italic variants in that order. For example,B,B,BI,BIuses bold (โBโ) instead of a constant-width. Not specifying a font will use the default, as will specifying a zero-length font name. Aliasesnone,bold, andcodeset no special fonts, bold, and the default constant-width. tuple order matters, don't come for me ๐--roff-endnotesโ delay printing of footnotes until the end of the document. Only applies to-tms, as-tmanand-tmdoconly support endnotes. so like, those two are already endnote-only, no choice given ๐ญ--roff-manpageโ format output as a manpage. This re-formats paragraphs under theNAME,SYNOPSIS, andSEE ALSOsections in the canonical form used by manpages. The way the document is formatted depends upon the section metadata:1,6, and8for program-style;2,3, and9for function-style. Program style re-formats flags and arguments, while function style re-formats function names, variables, arguments. Any content in font spans (e.g., emphasis or double emphasis) in other sections is stripped of the font and re-formatted in the same way. Only applies to-tmanand-tmdoc. this is the whole โlooking like a real manpageโ button ๐--roff-no-numberedโ don't output numbered headings (.NH NN). Only applies to-tms.--roff-no-skiphtmlโ output embedded HTML. This usually doesn't make sense because the HTML won't be interpreted by the output reader. By default, HTML is omitted. so like, it works but nobody's reading it ๐--roff-no-linksโ when possible, don't show URLs for images and links. Link content is always shown. Overrides--roff-short-linksand--roff-no-rellinks. the content stays, only the URL gets shy ๐ซถ--roff-no-rellinksโ when possible, don't show URLs for relative links. Link content is always shown. Overrides--roff-short-links.--roff-short-linksโ when possible, shorten URLs for images, links, and autolinks to only the domain name and final path. cute lil trimmed URL โจ--roff-traditionalโ output traditional-ms(not-mspdf) and-manwithout extensions. Specifically, don't use hyperlink macros (.pdfhref,.UR,.MT), multi-page tables (.TS H,.TH), Unicode sequence syntax (\[uNNNN]), example block macros (.EX), modern section headings (.NH NN,.SH NN,.pdfhref O NN), or intra-document links (.pdfhref L). The output is compatible withtroff(1). old-school, no extensions, extremely vintage of it โญ
The argument prefix --nroff, such as in --nroff-traditional, is deprecated in favour of --roff. it's giving legacy naming, we've moved on ๐ฆ
๐ฅ๏ธ term options โ for -tterm
The -tterm output has the following:
--term-all-metadataโ if-sis specified, output all metadata instead of just the title, author, and date. so-splus this = the whole metadata dump ๐--term-columns=columnsโ the number of columns in the terminal. Useful for when running in a pipe. Defaults to what the terminal reports or72if not in a terminal. pipe girlies, set this one ๐ญ--term-hmargin=marginโ the number of left margin characters. Defaults to zero. Can also beautoto set the left margin to half the remaining--term-columnsafter subtracting--term-width. math, but make it layout โจ--term-hpadding=paddingโ the number of left padding characters. Defaults to four. Padding eats into--term-width. yes, it eats it, that's the actual wording, respect it ๐--term-no-ansiโ don't show ANSI styles at all. Use backspace encoding instead for bold/underline. This implies--term-no-colour. retro encoding, iconic ๐--term-no-colourโ don't show ANSI colours. This will still decorate text with underlines, bolds, and italics, but not emit any colour codes. style stays, colour dips ๐--term-no-linksโ when possible, don't show URLs for images and links. Link content is always shown. Overrides--term-short-linksand--term-no-rellinks.--term-no-rellinksโ when possible, don't show URLs for relative links. Link content is always shown. Overrides--term-short-links. so this one outranks--term-short-links, noted ๐ซถ--term-no-styleโ don't use any escape styles at all. This implies--term-no-ansi. full plain-text mode, no cap ๐--term-no-tablewrapโ don't wrap table columns to fit the width of the output. horizontal scroll girlies, this is your moment ๐--term-short-linksโ when possible, shorten URLs for images, links, and autolinks to only the domain name and final path.--term-vmargin=marginโ the number of top and bottom margin newlines. Defaults to zero. breathing room, if you want it ๐ธ- *
--term-width=width*** โ a soft limit on how many characters can fit on a line,including</pink>--term-hpadding. Soft means soft, bestie โ literal text can absolutely blow right past it. If it's zero or just not set, it falls back to--term-columns, or80at most. And it truncates to--term-columns. ๐
Okay so the -tgemini output has a whole little crew of flags that control where links go. Default behaviour, no cap: links (images, autolinks, and links) get queued when they're specified in-line, then emitted in a block sequence right after the nearest block element. ๐
--gemini-link-endโ dumps the whole queue of links at the end of the document instead of after the nearest block element. Big fan of the dramatic finale energy. โจ--gemini-link-inlineโ renders all links right there in the flow of text. Careful though โ this will cause breakage when you've got nested links, like images inside links, links in blockquotes, etc. Don't use it unless your document is carefully crafted, iykyk. ๐--gemini-link-norefโ don't format link labels at all. Takes precedence over--gemini-link-roman. ๐--gemini-link-romanโ when formatting link labels, use lower-case Roman numerals instead of the default lower-case hexavigesimal (i.e., โaโ, โbโ, ..., โaaโ, โabโ, ...). Rome-core. ๐๏ธ--gemini-metadataโ prints metadata as the canonicalised key, then a colon, then the value, each one on its own line (newlines get replaced by spaces). The metadata block is terminated by a double newline. If there's no metadata? Does literally nothing. ๐
The -tlatex output has these options:
--latex-no-numberedโ don't number sections (and subsections, etc.). Unnumbered and unbothered. ๐ธ--latex-no-skiphtmlโ output embedded HTML. Tbh this usually doesn't make sense, because the HTML won't be interpreted by the output reader. By default, HTML is omitted. ๐ซถ
The -tfodt output has these options:
--odt-no-skiphtmlโ output embedded HTML. Same deal, this usually doesn't make sense because the HTML won't be interpreted by the output reader. By default, HTML is omitted. โจ--odt-style=file** โ specify an OpenDocument style file. It must consist of at least<office:font-face-decls>,<office:scripts>, and<office:styles>` XML elements in the root of the document. And ngl, this is **not syntax-checked in any way. So, like, be responsible. ๐ญ
๐จ Output media
The output media is specified by -t, which defaults to -thtml.
-tfodtโ โFlatโ OpenDocument output. Automatic styles (those conditional upon document state) are generated with output. Classes specified by PHP extended attributes are not checked for existence. ๐ฆ-tgeminiโ Gemini โgemtextโ format. โจ-thtmlโ HTML5 output with UTF-8 encoding. The main character of output formats, honestly. ๐-tlatexโ simple LaTeX output. The following packages are required:amsmathandamssymbfor maths,graphicxfor images,inputenc(utf8) for UTF-8 input,frontend(T1) andtextcompfor output glyphs,lmodernfor Latin modern font,xcolorfor the difference engine output, andhyperreffor links. It's giving โจacademiaโจ.-tmanโ the man macro package, suitable for reading bygroff(1),mandoc(1), Heirloomtroff(1), or traditionaltroff(1). Does not support equations and images. Table support is provided bytbl(1). And heads up โ since UTF-8 may be passed as input values,preconv(1)may need to be used. ๐-tmdocโ the mdoc macro package, suitable for reading bygroff(1),mandoc(1), Heirloomtroff(1), or (possibly?) traditionaltroff(1). Does not support equations and images. Table support is provided bytbl(1). Since UTF-8 may be passed as input values,preconv(1)may need to be used. ๐-tmsโ the ms macro package, suitable for reading bygroff(1)or traditionaltroff(1). Does not support equations, and has limited image support for encapsulated postscript (PSandEPSsuffix) images. Images are always block-formatted. Image dimensions and extended attributes are ignored, though images are downsized if larger than the current text width. Table support is provided bytbl(1). Since UTF-8 may be passed as input values,preconv(1)may need to be used. ๐ฎโ๐จ-ttermโ ANSI-escaped UTF-8 output, suitable for reading on the terminal. Images and equations not supported. ๐ฅ๏ธ-ttreeโ debugging output. Not for programmatic use, because the format may change between versions. ๐
๐ฆ Differences
The differences between old and new document are illustrated in the following ways:
-tfodtโ โFlatโ Differences are rendered using document tracking. ๐-tgeminiโ Differences are not rendered. We simply do not perceive them. ๐-tlatexโ Differences are rendered by colouring in blue (insert) and red (delete) (this format is not fixed). ๐โค๏ธ-tman,-tmdoc,-tmsโ Differences are rendered by colouring in blue (insert) and red (delete) (this format is not fixed). ๐โค๏ธ-ttermโ Differences are rendered by background-colouring in blue (insert) and red (delete) (this format is not fixed). ๐โค๏ธ-ttreeโ Differences are manually in the tree output. ๐ง
Differences in content metadata use the following rule: deleted metadata key-value pairs are not processed in the output, so only inserted or retained metadata are processed. Periodt. โจ
๐ Standalone documents
When -s is specified, the formatted content is serialised into a self-contained document template as defined by the output type.
If not explicitly set with --template, a default template is produced as follows:
-tfodtโ envelope<office:document>and prologue<office:automatic-styles>,<office:master-styles>, and<office:body>. ๐-thtmlโ HTML5 doctype declaration followed by envelope<html>with optional language, then<head>. In order, the<head>consists of charset and viewport<meta>elements; optional<meta>elements from metadata affiliation (creator), author, copyright, and date; optional CSS sources from metadata; optional JavaScript sources from metadata; the possibly-empty<title>; then optional arbitrary content from metadata HTML header. That's a lot of head, bestie. ๐-tlatexโ prologuedocumentclassandusepackagestatements, optional arbitrary content from metadata LaTeX header, then surroundingbegin{document}statements. ๐-tman,-tmdoc,-tmsโ prologue macros. ๐ซถ-ttermโ prologue lines. โญ-ttreeโ metadata and parsed template. ๐ธ
See โMetadataโ for metadata values used by the default template.
๐ Metadata
Metadata keys are canonicalised and de-deduplicated in the following order: -m (overridden by document content and -M), the prologue of the document itself, then -M (overriding document content and -m). Yes, the last one wins. It's giving survival of the fittest. ๐ฅ
After de-duplication, metadata is serialised into document variables and/or standalone -s output.
When not using --template, the following metadata keys are used in the default -s template:
affiliationโ author affiliation (organisation or institution). Multiple affiliations may be separated by two or more spaces (including newlines). Used in-thtml,-tlatex, and-tms. ๐ซauthorโ document author. Multiple authors may be separated by two or more spaces (including newlines). Overridden byrcsauthor. Used in-tfodt,-thtml,-tlatex,-tms, and-tterm. ๐baseheaderlevelโ added to each header level. Deprecated in favour ofshiftheadinglevelby. Don't be that girl, use the new one. ๐copyrightโ a document copyright (without the word โCopyrightโ), for example, โ2017, Kristaps Dzonsonsโ. Used in-tmsand-thtml. ยฉ๏ธcssโ a CSS file output in the HTML document head as a<link rel="stylesheet" href="..." />statement. Multiple CSS files (in order) may be separated by two or more spaces (including newlines) and are output in the given order. Only used in-thtml. ๐จdateโ document date in ISO-8601YYYY-MM-DDformat. Overridden byrcsdate. Used in-tfodt,-thtml,-tlatex,-tman,-tmdoc,-tms, and-tterm. ๐htmlheaderโ arbitrary HTML content output in the HTML document head immediately prior to closing the head element. Only used in-thtmland with-s. This metadata is not processed: it's passed unchanged into the output. ๐ซถjavascriptโ a JavaScript file output in the HTML document head as a<script src="..."></script>statement. Multiple script files (in order) may be separated by two or more spaces (including newlines) and are output in the given order. Only used in-thtml. โกlangโ document language in RFC 5646 format. Only used in-thtml. ๐latexheaderโ arbitrary LaTeX content output in the document prologue immediately prior to thebegin{document}. Only used in-tlatexand with-s. This metadata is not processed: it's passed unchanged into the output. ๐manheaderโ arbitrary roff content output immediately prior to the.THmacro. Only used in-tmanand with-s. This metadata is not processed: it's passed unchanged into the output. ๐msheaderโ arbitrary roff content output immediately prior to the.TLmacro. Only used in-tmsand with-s. This metadata is not processed: it's passed unchanged into the output. ๐rcsauthorโ likeauthor, but in RCS author format. Overridesauthor. ๐rcsdateโ likedate, but in RCS date format. Overridesdate. ๐sectionโ man page section, defaulting to โ7โ. Only used in-tmanand-tmdoc. ๐shiftheadinglevelbyโ shift all headers by the given number. For example, a value of1causes headers originally at level 1 (โ<h1>โ) to be level 2 (โ<h2>โ), while a value of-1moves level 2 to 1. Levels will not move to less than 1. Takes precedence overbaseheaderlevel. If unset or not a valid number, defaults to zero. Used in-tfodt,-thtml,-tlatex,-tman,-tmdoc, and-tms. ๐ชsourceโ man page source (organisation providing the manual). Only used in-tmanand-tmdoc. ๐ขvolumeโ man page volume (describes the manual page section). Only used in-tmanand-tmdoc. ๐titleโ document title. Used in-tfodt,-thtml,-tlatex,-tman,-tmdoc,-tms, and-tterm. โจ
Default values, such โ7โ for the section, are not set as metadata values, and will not appear if the metadata key is used as a variable. Sneaky little defaults. ๐
๐ง Templates
Some output media accept a template (--template) to customise standalone (-s) output. Parsed input content is filled into templates through control statements that support conditionals, loops, and variable transformation sequences. Honestly? Iconic. ๐
ok so control statements are delimited as $statement$ or ${statement} โ that's the whole vibe ๐
. Arbitrary white-space may surround the case-insensitive statement between the matching delimiters, so you can space it out however you like. And if a statement is missing its closing delimiter? It's just considered opaque text, like, it's not even invited to the party ๐.
The following statements are available, bestie:
$$,${}โ outputs a literal$. Yep, this one may contain arbitrary white-space. Iconic.$ifdef(expression)$โ the conditional statement. Heads up: there may not be any white-space between theifdefand the opening parenthesis, so keep 'em glued together ๐ซถ. It begins a block that gets ended by aelse,endif, or the end of file. Its contents are output only if expression evaluates to a non-empty string.$else$โ begins a block that's ended by aendifor the end of file. Its contents are output only if the condition of a precedingifdefevaluates to an empty string. Anelsewith no precedingifdef? Yeah it's just not output, sorry babe ๐.$endif$โ closes a block begun withifdeforelse. If it's not preceded by one of those statements, it's silently ignored. no drama, no error, it just minds its business.$for(expression)$โ the looping statement. Again, no white-space between theforand the opening parenthesis โจ. Begins a block ended by anendforor the end of file. The block contents are repeatedly output for each list item evaluated from expression. And the anaphoric keywordthismay be used to access the current loop expression within the block โ main character energy for real.$expression$โ replaced by the result of evaluating a template expression. simple as that.
Here's a lil trick that's lowkey iconic: if a control statement ends with two consecutive hyphens before the closing delimiter, input is consumed up to and including the next newline or until end of file ๐. This lets line-sensitive output media use control statements without leaving superfluous blank lines everywhere. chef's kiss.
Expressions consist of
initial[([arg]*)]?[.transform[([arg]*)]?]*,
or an initial value accepting optional arguments followed by an optional series of transforms accepting optional arguments. If an argument list is empty or not provided, it evaluates to an empty list. noted ๐.
The initial value is one of the following:
and(expression[,expression]*)โ a non-empty list containing the value true if all expressions evaluate to non-empty lists, otherwise an empty list. An empty expression evaluates to an empty list."literal string"โ evaluates to a singleton list containing the string. An empty string evaluates to an empty list. The double quote character may be escaped, such as"foo\"bar"๐.bodyโ the parsed input document body.- canonicalised metadata key โ the value for the given metadata key, if found, otherwise an empty list.
bodyโ the parsed input document body. (yes bestie it's listed twice in the source, we don't make the rules, we just keep the receipts ๐)meta(key)โ produces the metadata value for the canonicalised metadata key. This one's for the keys that are also keywords likebodyorendifโ iykyk.not(expression)โ a non-empty list containing the value true if the expression evaluates as an empty list, otherwise an empty list.or(expression[,expression]*)โ a non-empty list containing the value true if one expression evaluates to non-empty lists, otherwise an empty list. An empty expression evaluates to an empty list.thisโ the value of a current loop context, or an empty list.
If a metadata key isn't specified in the input, or if the anaphoric this hasn't been initialised by a looping context, the initial value evaluates to an empty list. Otherwise, the value is a singleton list โจ. And if transforms are invalid, they'll transform into an empty list โ no cap.
The following transformations are available:
escapegemini,escapegeminilineโ escape list items for gemini (-tgemini), either for multiple lines or compressed to a single line.escapehtml,escapehtmlattr,escapehtmlurlโ escape list items for HTML (-thtml) body content, attributes, and URL attributes, respectively.escapelatexโ escape list items for LaTeX (-tlatex) body content.escaperoff,escaperofflineโ escape list items for roff (-tms,-tman,-tmdoc), either for multiple lines or compressed to a single line. fun fact:escaperoffalso escapes initial roff delimiters and those after newlines ๐ฅ.joinโ joins a list into a singleton list using two spaces as a join delimiter.lowercaseโ lowercases all list items.splitโ splits list items on sequences of two or more white-space tokens (space, newline, tab). This is usually invoked on a singleton, but it may be repeatedly invoked on a pre-split list. Invokestrimprior to the first split. The resulting list has no items that are only white-space.trimโ trims white-space from the beginning and end of all list items. If an item has no non-white-space, it's discarded. bye felicia ๐.uppercaseโ uppercases all list items.
๐ฟ ENVIRONMENT ๐ฟ
NO_COLORโ do not emit colours when in-ttermmode. It's a synonym forNO_COLOUR, and same as--term-nocolour๐จ.
๐ FILES ๐
share/html/default.htmlโ the default template used if--templateis not provided to-thtml.share/latex/default.latexโ the default template used if--templateis not provided to-tlatex.share/man/default.manโ the default template used if--templateis not provided to-tman.share/man/default.msโ the default template used if--templateis not provided to-tms.share/odt/styles.xmlโ the default styles used when generating standalone-tfodtdocuments. It's also the template for--odt-stylestyles ๐ฆ.
๐ช EXIT STATUS ๐ช
The lowdown-diff utility exits 0 on success, and >0 if an error occurs. slay when it works, ๐ญ when it doesn't.
โจ EXAMPLES โจ
Wanna view Markdown differences on an ANSI-compatible, UTF-8 terminal? say less:
lowdown-diff -tterm old.md new.md | less -R
To emit a standalone HTML5 document ๐:
lowdown-diff -s old.md new.md > foo.html
To use groff(1) to format as a PS file:
lowdown-diff -stms old.md new.md | \
groff -itk -mspdf > foo.ps
Or with LaTeX ๐:
lowdown-diff -stlatex old.md new.md > foo.latex
pslatex foo.latex
PDF generation follows similar logic:
lowdown-diff -stms old.md new.md | \
pdfroff -itk -mspdf > foo.pdf
lowdown-diff -stlatex old.md new.md > foo.latex
pdflatex foo.latex
Heads up bestie: UTF-8 support forgroff(1)PDF or PS output requires appropriate fonts, such as the Unicode Times font. This and other Unicode fonts are not always installed by default ๐ญ. They may be found, for PDF output, in thedevpdfset of thegroff(1)font directory and are prefixed with โUโ.
lowdown-diff -stms old.md new.md | \
pdfroff -itk -mspdf -FU-T > foo.pdf
๐ SEE ALSO ๐
lowdown(1), lowdown(3), lowdown(5) โ go read those too, bestie, they're literally right there ๐.
๐ AUTHORS ๐
lowdown-diff was written by Kristaps Dzonsons, kristaps@bsd.lv. absolute legend behavior.
โ ๏ธ CAVEATS โ ๏ธ
When viewing -tman or -tmdoc differences with mandoc(1), the marker colours are not rendered ๐. And the -tgemini output also currently has no way of encoding differences. it's giving "we're working on it" energy, fr fr.
ok that's the whole page, bestie ๐ this one's straight from the Debian fam, dated $Mdocdate$, and it's LOWDOWN-DIFF(1) โ now go diff some markdown and live your truth ๐
โจ๐ฆ
๐ฆ where this page comes from
- arch rolling: lowdown 3.2.1-1 ยท ISC
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms