Latest commit

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Converting text into PDF

enscript cannot do the job. I always cannot figure out how to change the font for enscript output, and the language support for highlighting in enscript is limited. With pygmentize and xelatex, we can do a better job.

Synopsis

usage: mintscript.py [--columns COLUMNS] [-2] [-1] [-b HEADER] [-B] [-c]
[-C [LINE_NUMBERS]] [-E [HIGHLIGHT]] [-f NAME] [-F NAME]
[--fancy-header [NAME]] [-h] [-I CMD] [-j] [-M PAPER]
[-p FILE] [-q] [-r] [-R] [-s NUM] [-T NUM] [-u TEXT] [-V]
[-X NAME] [--color [bool]] [--filter-stdin NAME]
[--footer FOOTER] [--help]
[--margins LEFT RIGHT TOP BOTTOM]
[--mark-wrapped-lines [STYLE]] [--style STYLE]
[--swap-even-page-margins] [--toc] [--ul-angle ANGLE]
[--ul-font NAME] [--ul-gray NUM] [--ul-position POS]
[--ul-style STYLE] [--word-wrap]
[--geometry-args OPTION [OPTION ...]]
[--fontspec-args OPTION [OPTION ...]]
[--minted-args OPTION [OPTION ...]]
[file [file ...]]
convert text files to PDF
positional arguments:
file Text files
optional arguments:
--columns COLUMNS specify the number of columns per page
-2 same as --columns=2
-1 same as --columns=1
-b HEADER, --header HEADER
set page header
-B, --no-header no page headers
-c, --truncate-lines cut long lines (default is to wrap)
-C [LINE_NUMBERS], --line-numbers [LINE_NUMBERS]
precede each line with its line number
-E [HIGHLIGHT], --highlight [HIGHLIGHT]
highlight source code (see pygmentize -L lexers)
-f NAME, --font NAME use font NAME for body text
-F NAME, --header-font NAME
use font NAME for header text
--fancy-header [NAME]
select fancy page header
-h, --no-job-header suppress the job header page
-I CMD, --filter CMD read input files through input filter CMD
-j, --borders print borders around columns
-M PAPER, --media PAPER
use output media PAPER
-p FILE, -o FILE, --output FILE
leave output to file FILE. If FILE is `-', leave
output to stdout.
-q, --quiet, --silent
Suppress stdout
-r, --landscape print in landscape mode
-R, --portrait print in portrait mode
-s NUM, --baselineskip NUM
set baselineskip to NUM
-T NUM, --tabsize NUM
set tabulator size to NUM
-u TEXT, --underlay TEXT
print TEXT under every page
-V, --version print version number
-X NAME, --encoding NAME
use input encoding NAME
--color [bool] create color outputs with states
--filter-stdin NAME specify how stdin is shown to the input filter
--footer FOOTER set page footer
--help print this help and exit
--margins LEFT RIGHT TOP BOTTOM
adjust page marginals
--mark-wrapped-lines [STYLE]
mark wrapped lines in the output with STYLE
--style STYLE use highlight style STYLE (see pygmentize -L styles)
--swap-even-page-margins
swap left and right side margins for each even
numbered page
--toc print table of contents
--ul-angle ANGLE set underlay text's angle to ANGLE
--ul-font NAME print underlays with font NAME
--ul-gray NUM print underlays with gray value NUM
--ul-position POS set underlay's starting position to POS
--ul-style STYLE print underlays with style STYLE
--word-wrap wrap long lines from word boundaries
--geometry-args OPTION [OPTION ...]
argument for geometry package
--fontspec-args OPTION [OPTION ...]
argument for fontspec \set*font commands
--minted-args OPTION [OPTION ...]
argument for \inputminted command

Requirements

It invokes xelatex command with -shell-escape option. The LaTeX code generated will use minted package, which in turn calls pygmentize command to format source code. It uses fancyhdr package for header and footers and tikz package for page underlays (i.e. watermarks). Font support is provided by fontspec package. By default, it expects a font named "Inconsolata" available and accessible by fontspec. This has been tested with TexLive 2017. An older version of TexLive or older version of LaTeX packages may not compatible.

Example and output

Most arguments are same as that of enscript. The following command

$ mintscript.py -M a4paper --footer 'sample output' -u 'TESTING' -r -2 <some_plain_text_file>

Generates the following LaTeX code and run through XeLaTeX to generate the PDF, in the same directory as the input file.

\documentclass{article}
\usepackage[xetex,twocolumn,a4paper,landscape,margin=15mm]{geometry}
\usepackage{amssymb}
\usepackage{fontspec}
\usepackage{minted}
\usemintedstyle{autumn}
\setmonofont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setsansfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setmainfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc}
\makeatletter\global\let\tikz@ensure@dollar@catcode=\relax\makeatother\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\newfontfamily\Headerfont{Inconsolata}
\fancyhead[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}yourfilename.txt\hfill{}Fri Feb 23 18:01:46 2018\hfill{}\thepage{}}
\fancyhead[R]{\begin{tikzpicture}[remember picture,overlay]
\fontsize{64}{64}
\selectfont\node[text=black!20.000000!white,rotate=45.000000] at ($(current page.center) + (0,0)$) {TESTING};
\end{tikzpicture}}
\fancyfoot[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}sample output}
\begin{document}
\fontsize{8pt}{8pt}\selectfont\inputminted[breaklines,breakanywhere]{text}{source0.txt}
\label{LastPage}
\end{document}

XeLaTeX is used in order to make use of TTF available in the system. Currently we set all fonts used in the LaTeX document to be the same (default Inconsolata, adjustable by -f option). Additional options pass on to geometry package, set font command of fontspec package, or \inputminted command of minted package are allowed via the options --geometry-args, --fontspec-args, --minted-args, respectively.

Intermediate files will be generated for and by LaTeX system but they will be cleaned up automatically.

About

enscript replacement using XeLaTeX and minted

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Converting text into PDF

enscript cannot do the job. I always cannot figure out how to change the font for enscript output, and the language support for highlighting in enscript is limited. With pygmentize and xelatex, we can do a better job.

Synopsis

usage: mintscript.py [--columns COLUMNS] [-2] [-1] [-b HEADER] [-B] [-c]
[-C [LINE_NUMBERS]] [-E [HIGHLIGHT]] [-f NAME] [-F NAME]
[--fancy-header [NAME]] [-h] [-I CMD] [-j] [-M PAPER]
[-p FILE] [-q] [-r] [-R] [-s NUM] [-T NUM] [-u TEXT] [-V]
[-X NAME] [--color [bool]] [--filter-stdin NAME]
[--footer FOOTER] [--help]
[--margins LEFT RIGHT TOP BOTTOM]
[--mark-wrapped-lines [STYLE]] [--style STYLE]
[--swap-even-page-margins] [--toc] [--ul-angle ANGLE]
[--ul-font NAME] [--ul-gray NUM] [--ul-position POS]
[--ul-style STYLE] [--word-wrap]
[--geometry-args OPTION [OPTION ...]]
[--fontspec-args OPTION [OPTION ...]]
[--minted-args OPTION [OPTION ...]]
[file [file ...]]
convert text files to PDF
positional arguments:
file Text files
optional arguments:
--columns COLUMNS specify the number of columns per page
-2 same as --columns=2
-1 same as --columns=1
-b HEADER, --header HEADER
set page header
-B, --no-header no page headers
-c, --truncate-lines cut long lines (default is to wrap)
-C [LINE_NUMBERS], --line-numbers [LINE_NUMBERS]
precede each line with its line number
-E [HIGHLIGHT], --highlight [HIGHLIGHT]
highlight source code (see pygmentize -L lexers)
-f NAME, --font NAME use font NAME for body text
-F NAME, --header-font NAME
use font NAME for header text
--fancy-header [NAME]
select fancy page header
-h, --no-job-header suppress the job header page
-I CMD, --filter CMD read input files through input filter CMD
-j, --borders print borders around columns
-M PAPER, --media PAPER
use output media PAPER
-p FILE, -o FILE, --output FILE
leave output to file FILE. If FILE is `-', leave
output to stdout.
-q, --quiet, --silent
Suppress stdout
-r, --landscape print in landscape mode
-R, --portrait print in portrait mode
-s NUM, --baselineskip NUM
set baselineskip to NUM
-T NUM, --tabsize NUM
set tabulator size to NUM
-u TEXT, --underlay TEXT
print TEXT under every page
-V, --version print version number
-X NAME, --encoding NAME
use input encoding NAME
--color [bool] create color outputs with states
--filter-stdin NAME specify how stdin is shown to the input filter
--footer FOOTER set page footer
--help print this help and exit
--margins LEFT RIGHT TOP BOTTOM
adjust page marginals
--mark-wrapped-lines [STYLE]
mark wrapped lines in the output with STYLE
--style STYLE use highlight style STYLE (see pygmentize -L styles)
--swap-even-page-margins
swap left and right side margins for each even
numbered page
--toc print table of contents
--ul-angle ANGLE set underlay text's angle to ANGLE
--ul-font NAME print underlays with font NAME
--ul-gray NUM print underlays with gray value NUM
--ul-position POS set underlay's starting position to POS
--ul-style STYLE print underlays with style STYLE
--word-wrap wrap long lines from word boundaries
--geometry-args OPTION [OPTION ...]
argument for geometry package
--fontspec-args OPTION [OPTION ...]
argument for fontspec \set*font commands
--minted-args OPTION [OPTION ...]
argument for \inputminted command

Requirements

It invokes xelatex command with -shell-escape option. The LaTeX code generated will use minted package, which in turn calls pygmentize command to format source code. It uses fancyhdr package for header and footers and tikz package for page underlays (i.e. watermarks). Font support is provided by fontspec package. By default, it expects a font named "Inconsolata" available and accessible by fontspec. This has been tested with TexLive 2017. An older version of TexLive or older version of LaTeX packages may not compatible.

Example and output

Most arguments are same as that of enscript. The following command

$ mintscript.py -M a4paper --footer 'sample output' -u 'TESTING' -r -2 <some_plain_text_file>

Generates the following LaTeX code and run through XeLaTeX to generate the PDF, in the same directory as the input file.

\documentclass{article}
\usepackage[xetex,twocolumn,a4paper,landscape,margin=15mm]{geometry}
\usepackage{amssymb}
\usepackage{fontspec}
\usepackage{minted}
\usemintedstyle{autumn}
\setmonofont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setsansfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setmainfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc}
\makeatletter\global\let\tikz@ensure@dollar@catcode=\relax\makeatother\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\newfontfamily\Headerfont{Inconsolata}
\fancyhead[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}yourfilename.txt\hfill{}Fri Feb 23 18:01:46 2018\hfill{}\thepage{}}
\fancyhead[R]{\begin{tikzpicture}[remember picture,overlay]
\fontsize{64}{64}
\selectfont\node[text=black!20.000000!white,rotate=45.000000] at ($(current page.center) + (0,0)$) {TESTING};
\end{tikzpicture}}
\fancyfoot[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}sample output}
\begin{document}
\fontsize{8pt}{8pt}\selectfont\inputminted[breaklines,breakanywhere]{text}{source0.txt}
\label{LastPage}
\end{document}

XeLaTeX is used in order to make use of TTF available in the system. Currently we set all fonts used in the LaTeX document to be the same (default Inconsolata, adjustable by -f option). Additional options pass on to geometry package, set font command of fontspec package, or \inputminted command of minted package are allowed via the options --geometry-args, --fontspec-args, --minted-args, respectively.

Intermediate files will be generated for and by LaTeX system but they will be cleaned up automatically.

About

enscript replacement using XeLaTeX and minted

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Converting text into PDF

enscript cannot do the job. I always cannot figure out how to change the font for enscript output, and the language support for highlighting in enscript is limited. With pygmentize and xelatex, we can do a better job.

Synopsis

usage: mintscript.py [--columns COLUMNS] [-2] [-1] [-b HEADER] [-B] [-c]
[-C [LINE_NUMBERS]] [-E [HIGHLIGHT]] [-f NAME] [-F NAME]
[--fancy-header [NAME]] [-h] [-I CMD] [-j] [-M PAPER]
[-p FILE] [-q] [-r] [-R] [-s NUM] [-T NUM] [-u TEXT] [-V]
[-X NAME] [--color [bool]] [--filter-stdin NAME]
[--footer FOOTER] [--help]
[--margins LEFT RIGHT TOP BOTTOM]
[--mark-wrapped-lines [STYLE]] [--style STYLE]
[--swap-even-page-margins] [--toc] [--ul-angle ANGLE]
[--ul-font NAME] [--ul-gray NUM] [--ul-position POS]
[--ul-style STYLE] [--word-wrap]
[--geometry-args OPTION [OPTION ...]]
[--fontspec-args OPTION [OPTION ...]]
[--minted-args OPTION [OPTION ...]]
[file [file ...]]
convert text files to PDF
positional arguments:
file Text files
optional arguments:
--columns COLUMNS specify the number of columns per page
-2 same as --columns=2
-1 same as --columns=1
-b HEADER, --header HEADER
set page header
-B, --no-header no page headers
-c, --truncate-lines cut long lines (default is to wrap)
-C [LINE_NUMBERS], --line-numbers [LINE_NUMBERS]
precede each line with its line number
-E [HIGHLIGHT], --highlight [HIGHLIGHT]
highlight source code (see pygmentize -L lexers)
-f NAME, --font NAME use font NAME for body text
-F NAME, --header-font NAME
use font NAME for header text
--fancy-header [NAME]
select fancy page header
-h, --no-job-header suppress the job header page
-I CMD, --filter CMD read input files through input filter CMD
-j, --borders print borders around columns
-M PAPER, --media PAPER
use output media PAPER
-p FILE, -o FILE, --output FILE
leave output to file FILE. If FILE is `-', leave
output to stdout.
-q, --quiet, --silent
Suppress stdout
-r, --landscape print in landscape mode
-R, --portrait print in portrait mode
-s NUM, --baselineskip NUM
set baselineskip to NUM
-T NUM, --tabsize NUM
set tabulator size to NUM
-u TEXT, --underlay TEXT
print TEXT under every page
-V, --version print version number
-X NAME, --encoding NAME
use input encoding NAME
--color [bool] create color outputs with states
--filter-stdin NAME specify how stdin is shown to the input filter
--footer FOOTER set page footer
--help print this help and exit
--margins LEFT RIGHT TOP BOTTOM
adjust page marginals
--mark-wrapped-lines [STYLE]
mark wrapped lines in the output with STYLE
--style STYLE use highlight style STYLE (see pygmentize -L styles)
--swap-even-page-margins
swap left and right side margins for each even
numbered page
--toc print table of contents
--ul-angle ANGLE set underlay text's angle to ANGLE
--ul-font NAME print underlays with font NAME
--ul-gray NUM print underlays with gray value NUM
--ul-position POS set underlay's starting position to POS
--ul-style STYLE print underlays with style STYLE
--word-wrap wrap long lines from word boundaries
--geometry-args OPTION [OPTION ...]
argument for geometry package
--fontspec-args OPTION [OPTION ...]
argument for fontspec \set*font commands
--minted-args OPTION [OPTION ...]
argument for \inputminted command

Requirements

It invokes xelatex command with -shell-escape option. The LaTeX code generated will use minted package, which in turn calls pygmentize command to format source code. It uses fancyhdr package for header and footers and tikz package for page underlays (i.e. watermarks). Font support is provided by fontspec package. By default, it expects a font named "Inconsolata" available and accessible by fontspec. This has been tested with TexLive 2017. An older version of TexLive or older version of LaTeX packages may not compatible.

Example and output

Most arguments are same as that of enscript. The following command

$ mintscript.py -M a4paper --footer 'sample output' -u 'TESTING' -r -2 <some_plain_text_file>

Generates the following LaTeX code and run through XeLaTeX to generate the PDF, in the same directory as the input file.

\documentclass{article}
\usepackage[xetex,twocolumn,a4paper,landscape,margin=15mm]{geometry}
\usepackage{amssymb}
\usepackage{fontspec}
\usepackage{minted}
\usemintedstyle{autumn}
\setmonofont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setsansfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setmainfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc}
\makeatletter\global\let\tikz@ensure@dollar@catcode=\relax\makeatother\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\newfontfamily\Headerfont{Inconsolata}
\fancyhead[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}yourfilename.txt\hfill{}Fri Feb 23 18:01:46 2018\hfill{}\thepage{}}
\fancyhead[R]{\begin{tikzpicture}[remember picture,overlay]
\fontsize{64}{64}
\selectfont\node[text=black!20.000000!white,rotate=45.000000] at ($(current page.center) + (0,0)$) {TESTING};
\end{tikzpicture}}
\fancyfoot[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}sample output}
\begin{document}
\fontsize{8pt}{8pt}\selectfont\inputminted[breaklines,breakanywhere]{text}{source0.txt}
\label{LastPage}
\end{document}

XeLaTeX is used in order to make use of TTF available in the system. Currently we set all fonts used in the LaTeX document to be the same (default Inconsolata, adjustable by -f option). Additional options pass on to geometry package, set font command of fontspec package, or \inputminted command of minted package are allowed via the options --geometry-args, --fontspec-args, --minted-args, respectively.

Intermediate files will be generated for and by LaTeX system but they will be cleaned up automatically.

About

enscript replacement using XeLaTeX and minted

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Converting text into PDF

enscript cannot do the job. I always cannot figure out how to change the font for enscript output, and the language support for highlighting in enscript is limited. With pygmentize and xelatex, we can do a better job.

Synopsis

usage: mintscript.py [--columns COLUMNS] [-2] [-1] [-b HEADER] [-B] [-c]
[-C [LINE_NUMBERS]] [-E [HIGHLIGHT]] [-f NAME] [-F NAME]
[--fancy-header [NAME]] [-h] [-I CMD] [-j] [-M PAPER]
[-p FILE] [-q] [-r] [-R] [-s NUM] [-T NUM] [-u TEXT] [-V]
[-X NAME] [--color [bool]] [--filter-stdin NAME]
[--footer FOOTER] [--help]
[--margins LEFT RIGHT TOP BOTTOM]
[--mark-wrapped-lines [STYLE]] [--style STYLE]
[--swap-even-page-margins] [--toc] [--ul-angle ANGLE]
[--ul-font NAME] [--ul-gray NUM] [--ul-position POS]
[--ul-style STYLE] [--word-wrap]
[--geometry-args OPTION [OPTION ...]]
[--fontspec-args OPTION [OPTION ...]]
[--minted-args OPTION [OPTION ...]]
[file [file ...]]
convert text files to PDF
positional arguments:
file Text files
optional arguments:
--columns COLUMNS specify the number of columns per page
-2 same as --columns=2
-1 same as --columns=1
-b HEADER, --header HEADER
set page header
-B, --no-header no page headers
-c, --truncate-lines cut long lines (default is to wrap)
-C [LINE_NUMBERS], --line-numbers [LINE_NUMBERS]
precede each line with its line number
-E [HIGHLIGHT], --highlight [HIGHLIGHT]
highlight source code (see pygmentize -L lexers)
-f NAME, --font NAME use font NAME for body text
-F NAME, --header-font NAME
use font NAME for header text
--fancy-header [NAME]
select fancy page header
-h, --no-job-header suppress the job header page
-I CMD, --filter CMD read input files through input filter CMD
-j, --borders print borders around columns
-M PAPER, --media PAPER
use output media PAPER
-p FILE, -o FILE, --output FILE
leave output to file FILE. If FILE is `-', leave
output to stdout.
-q, --quiet, --silent
Suppress stdout
-r, --landscape print in landscape mode
-R, --portrait print in portrait mode
-s NUM, --baselineskip NUM
set baselineskip to NUM
-T NUM, --tabsize NUM
set tabulator size to NUM
-u TEXT, --underlay TEXT
print TEXT under every page
-V, --version print version number
-X NAME, --encoding NAME
use input encoding NAME
--color [bool] create color outputs with states
--filter-stdin NAME specify how stdin is shown to the input filter
--footer FOOTER set page footer
--help print this help and exit
--margins LEFT RIGHT TOP BOTTOM
adjust page marginals
--mark-wrapped-lines [STYLE]
mark wrapped lines in the output with STYLE
--style STYLE use highlight style STYLE (see pygmentize -L styles)
--swap-even-page-margins
swap left and right side margins for each even
numbered page
--toc print table of contents
--ul-angle ANGLE set underlay text's angle to ANGLE
--ul-font NAME print underlays with font NAME
--ul-gray NUM print underlays with gray value NUM
--ul-position POS set underlay's starting position to POS
--ul-style STYLE print underlays with style STYLE
--word-wrap wrap long lines from word boundaries
--geometry-args OPTION [OPTION ...]
argument for geometry package
--fontspec-args OPTION [OPTION ...]
argument for fontspec \set*font commands
--minted-args OPTION [OPTION ...]
argument for \inputminted command

Requirements

It invokes xelatex command with -shell-escape option. The LaTeX code generated will use minted package, which in turn calls pygmentize command to format source code. It uses fancyhdr package for header and footers and tikz package for page underlays (i.e. watermarks). Font support is provided by fontspec package. By default, it expects a font named "Inconsolata" available and accessible by fontspec. This has been tested with TexLive 2017. An older version of TexLive or older version of LaTeX packages may not compatible.

Example and output

Most arguments are same as that of enscript. The following command

$ mintscript.py -M a4paper --footer 'sample output' -u 'TESTING' -r -2 <some_plain_text_file>

Generates the following LaTeX code and run through XeLaTeX to generate the PDF, in the same directory as the input file.

\documentclass{article}
\usepackage[xetex,twocolumn,a4paper,landscape,margin=15mm]{geometry}
\usepackage{amssymb}
\usepackage{fontspec}
\usepackage{minted}
\usemintedstyle{autumn}
\setmonofont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setsansfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setmainfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc}
\makeatletter\global\let\tikz@ensure@dollar@catcode=\relax\makeatother\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\newfontfamily\Headerfont{Inconsolata}
\fancyhead[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}yourfilename.txt\hfill{}Fri Feb 23 18:01:46 2018\hfill{}\thepage{}}
\fancyhead[R]{\begin{tikzpicture}[remember picture,overlay]
\fontsize{64}{64}
\selectfont\node[text=black!20.000000!white,rotate=45.000000] at ($(current page.center) + (0,0)$) {TESTING};
\end{tikzpicture}}
\fancyfoot[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}sample output}
\begin{document}
\fontsize{8pt}{8pt}\selectfont\inputminted[breaklines,breakanywhere]{text}{source0.txt}
\label{LastPage}
\end{document}

XeLaTeX is used in order to make use of TTF available in the system. Currently we set all fonts used in the LaTeX document to be the same (default Inconsolata, adjustable by -f option). Additional options pass on to geometry package, set font command of fontspec package, or \inputminted command of minted package are allowed via the options --geometry-args, --fontspec-args, --minted-args, respectively.

Intermediate files will be generated for and by LaTeX system but they will be cleaned up automatically.

About

enscript replacement using XeLaTeX and minted

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Converting text into PDF

enscript cannot do the job. I always cannot figure out how to change the font for enscript output, and the language support for highlighting in enscript is limited. With pygmentize and xelatex, we can do a better job.

Synopsis

usage: mintscript.py [--columns COLUMNS] [-2] [-1] [-b HEADER] [-B] [-c]
[-C [LINE_NUMBERS]] [-E [HIGHLIGHT]] [-f NAME] [-F NAME]
[--fancy-header [NAME]] [-h] [-I CMD] [-j] [-M PAPER]
[-p FILE] [-q] [-r] [-R] [-s NUM] [-T NUM] [-u TEXT] [-V]
[-X NAME] [--color [bool]] [--filter-stdin NAME]
[--footer FOOTER] [--help]
[--margins LEFT RIGHT TOP BOTTOM]
[--mark-wrapped-lines [STYLE]] [--style STYLE]
[--swap-even-page-margins] [--toc] [--ul-angle ANGLE]
[--ul-font NAME] [--ul-gray NUM] [--ul-position POS]
[--ul-style STYLE] [--word-wrap]
[--geometry-args OPTION [OPTION ...]]
[--fontspec-args OPTION [OPTION ...]]
[--minted-args OPTION [OPTION ...]]
[file [file ...]]
convert text files to PDF
positional arguments:
file Text files
optional arguments:
--columns COLUMNS specify the number of columns per page
-2 same as --columns=2
-1 same as --columns=1
-b HEADER, --header HEADER
set page header
-B, --no-header no page headers
-c, --truncate-lines cut long lines (default is to wrap)
-C [LINE_NUMBERS], --line-numbers [LINE_NUMBERS]
precede each line with its line number
-E [HIGHLIGHT], --highlight [HIGHLIGHT]
highlight source code (see pygmentize -L lexers)
-f NAME, --font NAME use font NAME for body text
-F NAME, --header-font NAME
use font NAME for header text
--fancy-header [NAME]
select fancy page header
-h, --no-job-header suppress the job header page
-I CMD, --filter CMD read input files through input filter CMD
-j, --borders print borders around columns
-M PAPER, --media PAPER
use output media PAPER
-p FILE, -o FILE, --output FILE
leave output to file FILE. If FILE is `-', leave
output to stdout.
-q, --quiet, --silent
Suppress stdout
-r, --landscape print in landscape mode
-R, --portrait print in portrait mode
-s NUM, --baselineskip NUM
set baselineskip to NUM
-T NUM, --tabsize NUM
set tabulator size to NUM
-u TEXT, --underlay TEXT
print TEXT under every page
-V, --version print version number
-X NAME, --encoding NAME
use input encoding NAME
--color [bool] create color outputs with states
--filter-stdin NAME specify how stdin is shown to the input filter
--footer FOOTER set page footer
--help print this help and exit
--margins LEFT RIGHT TOP BOTTOM
adjust page marginals
--mark-wrapped-lines [STYLE]
mark wrapped lines in the output with STYLE
--style STYLE use highlight style STYLE (see pygmentize -L styles)
--swap-even-page-margins
swap left and right side margins for each even
numbered page
--toc print table of contents
--ul-angle ANGLE set underlay text's angle to ANGLE
--ul-font NAME print underlays with font NAME
--ul-gray NUM print underlays with gray value NUM
--ul-position POS set underlay's starting position to POS
--ul-style STYLE print underlays with style STYLE
--word-wrap wrap long lines from word boundaries
--geometry-args OPTION [OPTION ...]
argument for geometry package
--fontspec-args OPTION [OPTION ...]
argument for fontspec \set*font commands
--minted-args OPTION [OPTION ...]
argument for \inputminted command

Requirements

It invokes xelatex command with -shell-escape option. The LaTeX code generated will use minted package, which in turn calls pygmentize command to format source code. It uses fancyhdr package for header and footers and tikz package for page underlays (i.e. watermarks). Font support is provided by fontspec package. By default, it expects a font named "Inconsolata" available and accessible by fontspec. This has been tested with TexLive 2017. An older version of TexLive or older version of LaTeX packages may not compatible.

Example and output

Most arguments are same as that of enscript. The following command

$ mintscript.py -M a4paper --footer 'sample output' -u 'TESTING' -r -2 <some_plain_text_file>

Generates the following LaTeX code and run through XeLaTeX to generate the PDF, in the same directory as the input file.

\documentclass{article}
\usepackage[xetex,twocolumn,a4paper,landscape,margin=15mm]{geometry}
\usepackage{amssymb}
\usepackage{fontspec}
\usepackage{minted}
\usemintedstyle{autumn}
\setmonofont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setsansfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setmainfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc}
\makeatletter\global\let\tikz@ensure@dollar@catcode=\relax\makeatother\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\newfontfamily\Headerfont{Inconsolata}
\fancyhead[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}yourfilename.txt\hfill{}Fri Feb 23 18:01:46 2018\hfill{}\thepage{}}
\fancyhead[R]{\begin{tikzpicture}[remember picture,overlay]
\fontsize{64}{64}
\selectfont\node[text=black!20.000000!white,rotate=45.000000] at ($(current page.center) + (0,0)$) {TESTING};
\end{tikzpicture}}
\fancyfoot[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}sample output}
\begin{document}
\fontsize{8pt}{8pt}\selectfont\inputminted[breaklines,breakanywhere]{text}{source0.txt}
\label{LastPage}
\end{document}

XeLaTeX is used in order to make use of TTF available in the system. Currently we set all fonts used in the LaTeX document to be the same (default Inconsolata, adjustable by -f option). Additional options pass on to geometry package, set font command of fontspec package, or \inputminted command of minted package are allowed via the options --geometry-args, --fontspec-args, --minted-args, respectively.

Intermediate files will be generated for and by LaTeX system but they will be cleaned up automatically.

About

enscript replacement using XeLaTeX and minted

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Converting text into PDF

enscript cannot do the job. I always cannot figure out how to change the font for enscript output, and the language support for highlighting in enscript is limited. With pygmentize and xelatex, we can do a better job.

Synopsis

usage: mintscript.py [--columns COLUMNS] [-2] [-1] [-b HEADER] [-B] [-c]
[-C [LINE_NUMBERS]] [-E [HIGHLIGHT]] [-f NAME] [-F NAME]
[--fancy-header [NAME]] [-h] [-I CMD] [-j] [-M PAPER]
[-p FILE] [-q] [-r] [-R] [-s NUM] [-T NUM] [-u TEXT] [-V]
[-X NAME] [--color [bool]] [--filter-stdin NAME]
[--footer FOOTER] [--help]
[--margins LEFT RIGHT TOP BOTTOM]
[--mark-wrapped-lines [STYLE]] [--style STYLE]
[--swap-even-page-margins] [--toc] [--ul-angle ANGLE]
[--ul-font NAME] [--ul-gray NUM] [--ul-position POS]
[--ul-style STYLE] [--word-wrap]
[--geometry-args OPTION [OPTION ...]]
[--fontspec-args OPTION [OPTION ...]]
[--minted-args OPTION [OPTION ...]]
[file [file ...]]
convert text files to PDF
positional arguments:
file Text files
optional arguments:
--columns COLUMNS specify the number of columns per page
-2 same as --columns=2
-1 same as --columns=1
-b HEADER, --header HEADER
set page header
-B, --no-header no page headers
-c, --truncate-lines cut long lines (default is to wrap)
-C [LINE_NUMBERS], --line-numbers [LINE_NUMBERS]
precede each line with its line number
-E [HIGHLIGHT], --highlight [HIGHLIGHT]
highlight source code (see pygmentize -L lexers)
-f NAME, --font NAME use font NAME for body text
-F NAME, --header-font NAME
use font NAME for header text
--fancy-header [NAME]
select fancy page header
-h, --no-job-header suppress the job header page
-I CMD, --filter CMD read input files through input filter CMD
-j, --borders print borders around columns
-M PAPER, --media PAPER
use output media PAPER
-p FILE, -o FILE, --output FILE
leave output to file FILE. If FILE is `-', leave
output to stdout.
-q, --quiet, --silent
Suppress stdout
-r, --landscape print in landscape mode
-R, --portrait print in portrait mode
-s NUM, --baselineskip NUM
set baselineskip to NUM
-T NUM, --tabsize NUM
set tabulator size to NUM
-u TEXT, --underlay TEXT
print TEXT under every page
-V, --version print version number
-X NAME, --encoding NAME
use input encoding NAME
--color [bool] create color outputs with states
--filter-stdin NAME specify how stdin is shown to the input filter
--footer FOOTER set page footer
--help print this help and exit
--margins LEFT RIGHT TOP BOTTOM
adjust page marginals
--mark-wrapped-lines [STYLE]
mark wrapped lines in the output with STYLE
--style STYLE use highlight style STYLE (see pygmentize -L styles)
--swap-even-page-margins
swap left and right side margins for each even
numbered page
--toc print table of contents
--ul-angle ANGLE set underlay text's angle to ANGLE
--ul-font NAME print underlays with font NAME
--ul-gray NUM print underlays with gray value NUM
--ul-position POS set underlay's starting position to POS
--ul-style STYLE print underlays with style STYLE
--word-wrap wrap long lines from word boundaries
--geometry-args OPTION [OPTION ...]
argument for geometry package
--fontspec-args OPTION [OPTION ...]
argument for fontspec \set*font commands
--minted-args OPTION [OPTION ...]
argument for \inputminted command

Requirements

It invokes xelatex command with -shell-escape option. The LaTeX code generated will use minted package, which in turn calls pygmentize command to format source code. It uses fancyhdr package for header and footers and tikz package for page underlays (i.e. watermarks). Font support is provided by fontspec package. By default, it expects a font named "Inconsolata" available and accessible by fontspec. This has been tested with TexLive 2017. An older version of TexLive or older version of LaTeX packages may not compatible.

Example and output

Most arguments are same as that of enscript. The following command

$ mintscript.py -M a4paper --footer 'sample output' -u 'TESTING' -r -2 <some_plain_text_file>

Generates the following LaTeX code and run through XeLaTeX to generate the PDF, in the same directory as the input file.

\documentclass{article}
\usepackage[xetex,twocolumn,a4paper,landscape,margin=15mm]{geometry}
\usepackage{amssymb}
\usepackage{fontspec}
\usepackage{minted}
\usemintedstyle{autumn}
\setmonofont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setsansfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setmainfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc}
\makeatletter\global\let\tikz@ensure@dollar@catcode=\relax\makeatother\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\newfontfamily\Headerfont{Inconsolata}
\fancyhead[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}yourfilename.txt\hfill{}Fri Feb 23 18:01:46 2018\hfill{}\thepage{}}
\fancyhead[R]{\begin{tikzpicture}[remember picture,overlay]
\fontsize{64}{64}
\selectfont\node[text=black!20.000000!white,rotate=45.000000] at ($(current page.center) + (0,0)$) {TESTING};
\end{tikzpicture}}
\fancyfoot[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}sample output}
\begin{document}
\fontsize{8pt}{8pt}\selectfont\inputminted[breaklines,breakanywhere]{text}{source0.txt}
\label{LastPage}
\end{document}

XeLaTeX is used in order to make use of TTF available in the system. Currently we set all fonts used in the LaTeX document to be the same (default Inconsolata, adjustable by -f option). Additional options pass on to geometry package, set font command of fontspec package, or \inputminted command of minted package are allowed via the options --geometry-args, --fontspec-args, --minted-args, respectively.

Intermediate files will be generated for and by LaTeX system but they will be cleaned up automatically.

About

enscript replacement using XeLaTeX and minted

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Converting text into PDF

enscript cannot do the job. I always cannot figure out how to change the font for enscript output, and the language support for highlighting in enscript is limited. With pygmentize and xelatex, we can do a better job.

Synopsis

usage: mintscript.py [--columns COLUMNS] [-2] [-1] [-b HEADER] [-B] [-c]
[-C [LINE_NUMBERS]] [-E [HIGHLIGHT]] [-f NAME] [-F NAME]
[--fancy-header [NAME]] [-h] [-I CMD] [-j] [-M PAPER]
[-p FILE] [-q] [-r] [-R] [-s NUM] [-T NUM] [-u TEXT] [-V]
[-X NAME] [--color [bool]] [--filter-stdin NAME]
[--footer FOOTER] [--help]
[--margins LEFT RIGHT TOP BOTTOM]
[--mark-wrapped-lines [STYLE]] [--style STYLE]
[--swap-even-page-margins] [--toc] [--ul-angle ANGLE]
[--ul-font NAME] [--ul-gray NUM] [--ul-position POS]
[--ul-style STYLE] [--word-wrap]
[--geometry-args OPTION [OPTION ...]]
[--fontspec-args OPTION [OPTION ...]]
[--minted-args OPTION [OPTION ...]]
[file [file ...]]
convert text files to PDF
positional arguments:
file Text files
optional arguments:
--columns COLUMNS specify the number of columns per page
-2 same as --columns=2
-1 same as --columns=1
-b HEADER, --header HEADER
set page header
-B, --no-header no page headers
-c, --truncate-lines cut long lines (default is to wrap)
-C [LINE_NUMBERS], --line-numbers [LINE_NUMBERS]
precede each line with its line number
-E [HIGHLIGHT], --highlight [HIGHLIGHT]
highlight source code (see pygmentize -L lexers)
-f NAME, --font NAME use font NAME for body text
-F NAME, --header-font NAME
use font NAME for header text
--fancy-header [NAME]
select fancy page header
-h, --no-job-header suppress the job header page
-I CMD, --filter CMD read input files through input filter CMD
-j, --borders print borders around columns
-M PAPER, --media PAPER
use output media PAPER
-p FILE, -o FILE, --output FILE
leave output to file FILE. If FILE is `-', leave
output to stdout.
-q, --quiet, --silent
Suppress stdout
-r, --landscape print in landscape mode
-R, --portrait print in portrait mode
-s NUM, --baselineskip NUM
set baselineskip to NUM
-T NUM, --tabsize NUM
set tabulator size to NUM
-u TEXT, --underlay TEXT
print TEXT under every page
-V, --version print version number
-X NAME, --encoding NAME
use input encoding NAME
--color [bool] create color outputs with states
--filter-stdin NAME specify how stdin is shown to the input filter
--footer FOOTER set page footer
--help print this help and exit
--margins LEFT RIGHT TOP BOTTOM
adjust page marginals
--mark-wrapped-lines [STYLE]
mark wrapped lines in the output with STYLE
--style STYLE use highlight style STYLE (see pygmentize -L styles)
--swap-even-page-margins
swap left and right side margins for each even
numbered page
--toc print table of contents
--ul-angle ANGLE set underlay text's angle to ANGLE
--ul-font NAME print underlays with font NAME
--ul-gray NUM print underlays with gray value NUM
--ul-position POS set underlay's starting position to POS
--ul-style STYLE print underlays with style STYLE
--word-wrap wrap long lines from word boundaries
--geometry-args OPTION [OPTION ...]
argument for geometry package
--fontspec-args OPTION [OPTION ...]
argument for fontspec \set*font commands
--minted-args OPTION [OPTION ...]
argument for \inputminted command

Requirements

It invokes xelatex command with -shell-escape option. The LaTeX code generated will use minted package, which in turn calls pygmentize command to format source code. It uses fancyhdr package for header and footers and tikz package for page underlays (i.e. watermarks). Font support is provided by fontspec package. By default, it expects a font named "Inconsolata" available and accessible by fontspec. This has been tested with TexLive 2017. An older version of TexLive or older version of LaTeX packages may not compatible.

Example and output

Most arguments are same as that of enscript. The following command

$ mintscript.py -M a4paper --footer 'sample output' -u 'TESTING' -r -2 <some_plain_text_file>

Generates the following LaTeX code and run through XeLaTeX to generate the PDF, in the same directory as the input file.

\documentclass{article}
\usepackage[xetex,twocolumn,a4paper,landscape,margin=15mm]{geometry}
\usepackage{amssymb}
\usepackage{fontspec}
\usepackage{minted}
\usemintedstyle{autumn}
\setmonofont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setsansfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setmainfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc}
\makeatletter\global\let\tikz@ensure@dollar@catcode=\relax\makeatother\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\newfontfamily\Headerfont{Inconsolata}
\fancyhead[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}yourfilename.txt\hfill{}Fri Feb 23 18:01:46 2018\hfill{}\thepage{}}
\fancyhead[R]{\begin{tikzpicture}[remember picture,overlay]
\fontsize{64}{64}
\selectfont\node[text=black!20.000000!white,rotate=45.000000] at ($(current page.center) + (0,0)$) {TESTING};
\end{tikzpicture}}
\fancyfoot[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}sample output}
\begin{document}
\fontsize{8pt}{8pt}\selectfont\inputminted[breaklines,breakanywhere]{text}{source0.txt}
\label{LastPage}
\end{document}

XeLaTeX is used in order to make use of TTF available in the system. Currently we set all fonts used in the LaTeX document to be the same (default Inconsolata, adjustable by -f option). Additional options pass on to geometry package, set font command of fontspec package, or \inputminted command of minted package are allowed via the options --geometry-args, --fontspec-args, --minted-args, respectively.

Intermediate files will be generated for and by LaTeX system but they will be cleaned up automatically.

About

enscript replacement using XeLaTeX and minted

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Converting text into PDF

enscript cannot do the job. I always cannot figure out how to change the font for enscript output, and the language support for highlighting in enscript is limited. With pygmentize and xelatex, we can do a better job.

Synopsis

usage: mintscript.py [--columns COLUMNS] [-2] [-1] [-b HEADER] [-B] [-c]
[-C [LINE_NUMBERS]] [-E [HIGHLIGHT]] [-f NAME] [-F NAME]
[--fancy-header [NAME]] [-h] [-I CMD] [-j] [-M PAPER]
[-p FILE] [-q] [-r] [-R] [-s NUM] [-T NUM] [-u TEXT] [-V]
[-X NAME] [--color [bool]] [--filter-stdin NAME]
[--footer FOOTER] [--help]
[--margins LEFT RIGHT TOP BOTTOM]
[--mark-wrapped-lines [STYLE]] [--style STYLE]
[--swap-even-page-margins] [--toc] [--ul-angle ANGLE]
[--ul-font NAME] [--ul-gray NUM] [--ul-position POS]
[--ul-style STYLE] [--word-wrap]
[--geometry-args OPTION [OPTION ...]]
[--fontspec-args OPTION [OPTION ...]]
[--minted-args OPTION [OPTION ...]]
[file [file ...]]
convert text files to PDF
positional arguments:
file Text files
optional arguments:
--columns COLUMNS specify the number of columns per page
-2 same as --columns=2
-1 same as --columns=1
-b HEADER, --header HEADER
set page header
-B, --no-header no page headers
-c, --truncate-lines cut long lines (default is to wrap)
-C [LINE_NUMBERS], --line-numbers [LINE_NUMBERS]
precede each line with its line number
-E [HIGHLIGHT], --highlight [HIGHLIGHT]
highlight source code (see pygmentize -L lexers)
-f NAME, --font NAME use font NAME for body text
-F NAME, --header-font NAME
use font NAME for header text
--fancy-header [NAME]
select fancy page header
-h, --no-job-header suppress the job header page
-I CMD, --filter CMD read input files through input filter CMD
-j, --borders print borders around columns
-M PAPER, --media PAPER
use output media PAPER
-p FILE, -o FILE, --output FILE
leave output to file FILE. If FILE is `-', leave
output to stdout.
-q, --quiet, --silent
Suppress stdout
-r, --landscape print in landscape mode
-R, --portrait print in portrait mode
-s NUM, --baselineskip NUM
set baselineskip to NUM
-T NUM, --tabsize NUM
set tabulator size to NUM
-u TEXT, --underlay TEXT
print TEXT under every page
-V, --version print version number
-X NAME, --encoding NAME
use input encoding NAME
--color [bool] create color outputs with states
--filter-stdin NAME specify how stdin is shown to the input filter
--footer FOOTER set page footer
--help print this help and exit
--margins LEFT RIGHT TOP BOTTOM
adjust page marginals
--mark-wrapped-lines [STYLE]
mark wrapped lines in the output with STYLE
--style STYLE use highlight style STYLE (see pygmentize -L styles)
--swap-even-page-margins
swap left and right side margins for each even
numbered page
--toc print table of contents
--ul-angle ANGLE set underlay text's angle to ANGLE
--ul-font NAME print underlays with font NAME
--ul-gray NUM print underlays with gray value NUM
--ul-position POS set underlay's starting position to POS
--ul-style STYLE print underlays with style STYLE
--word-wrap wrap long lines from word boundaries
--geometry-args OPTION [OPTION ...]
argument for geometry package
--fontspec-args OPTION [OPTION ...]
argument for fontspec \set*font commands
--minted-args OPTION [OPTION ...]
argument for \inputminted command

Requirements

It invokes xelatex command with -shell-escape option. The LaTeX code generated will use minted package, which in turn calls pygmentize command to format source code. It uses fancyhdr package for header and footers and tikz package for page underlays (i.e. watermarks). Font support is provided by fontspec package. By default, it expects a font named "Inconsolata" available and accessible by fontspec. This has been tested with TexLive 2017. An older version of TexLive or older version of LaTeX packages may not compatible.

Example and output

Most arguments are same as that of enscript. The following command

$ mintscript.py -M a4paper --footer 'sample output' -u 'TESTING' -r -2 <some_plain_text_file>

Generates the following LaTeX code and run through XeLaTeX to generate the PDF, in the same directory as the input file.

\documentclass{article}
\usepackage[xetex,twocolumn,a4paper,landscape,margin=15mm]{geometry}
\usepackage{amssymb}
\usepackage{fontspec}
\usepackage{minted}
\usemintedstyle{autumn}
\setmonofont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setsansfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\setmainfont[AutoFakeSlant,AutoFakeBold]{Inconsolata}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc}
\makeatletter\global\let\tikz@ensure@dollar@catcode=\relax\makeatother\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\newfontfamily\Headerfont{Inconsolata}
\fancyhead[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}yourfilename.txt\hfill{}Fri Feb 23 18:01:46 2018\hfill{}\thepage{}}
\fancyhead[R]{\begin{tikzpicture}[remember picture,overlay]
\fontsize{64}{64}
\selectfont\node[text=black!20.000000!white,rotate=45.000000] at ($(current page.center) + (0,0)$) {TESTING};
\end{tikzpicture}}
\fancyfoot[C]{\Headerfont\fontsize{8pt}{8pt}\selectfont{}sample output}
\begin{document}
\fontsize{8pt}{8pt}\selectfont\inputminted[breaklines,breakanywhere]{text}{source0.txt}
\label{LastPage}
\end{document}

XeLaTeX is used in order to make use of TTF available in the system. Currently we set all fonts used in the LaTeX document to be the same (default Inconsolata, adjustable by -f option). Additional options pass on to geometry package, set font command of fontspec package, or \inputminted command of minted package are allowed via the options --geometry-args, --fontspec-args, --minted-args, respectively.

Intermediate files will be generated for and by LaTeX system but they will be cleaned up automatically.

About

enscript replacement using XeLaTeX and minted

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages