Mercurial > octave
changeset 30242:33d895260fa4
publish.m: Support some non-ASCII characters in comments for pdf output.
* scripts/miscellaneous/publish.m: Clarify documentation. Publishing Markup is
only interpreted in section comments. Remove sentence that suggests that
commands in the output format might be interpreted in that format.
* scripts/miscellaneous/private/__publish_latex_output__.m: Add substitution
rules for some multi-byte UTF-8 characters (mostly Latin-based) to LaTeX
publish template. This fixes a bug where using these characters in comments
would cause `pdflatex` to fail.
See: https://github.com/gnu-octave/octave/pull/5
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Sun, 17 Oct 2021 12:28:51 +0200 |
parents | ba4aebad10d1 |
children | a4061ae5ff79 |
files | scripts/miscellaneous/private/__publish_latex_output__.m scripts/miscellaneous/publish.m |
diffstat | 2 files changed, 40 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/miscellaneous/private/__publish_latex_output__.m Wed Oct 13 10:36:20 2021 -0700 +++ b/scripts/miscellaneous/private/__publish_latex_output__.m Sun Oct 17 12:28:51 2021 +0200 @@ -137,6 +137,15 @@ '\usepackage[T1]{fontenc}', '\usepackage{lmodern}'); + # "lstlisting" doesn't support multi-byte UTF-8 characters. + # Add substitution rules for some characters (commonly used in languages with + # Latin-based script). + # Set of substitions taken from: + # https://en.wikibooks.org/w/index.php?title=LaTeX/Source_Code_Listings&oldid=3815132#Encoding_issue + # FIXME: Any multi-byte UTF-8 character in a non-section comment without a + # substitution rule will still cause an error. This should be fixed + # more generally, or a way how to work around this limitation should + # be documented. listings_option = sprintf ("%s\n", "", "", @@ -146,7 +155,26 @@ 'frame=single,', 'tabsize=2,', 'showstringspaces=false,', -'breaklines=true}'); +'breaklines=true,', +'inputencoding=utf8,', +'extendedchars=true,', +'literate=', +' {á}{{\''a}}1 {é}{{\''e}}1 {í}{{\''i}}1 {ó}{{\''o}}1 {ú}{{\''u}}1', +' {Á}{{\''A}}1 {É}{{\''E}}1 {Í}{{\''I}}1 {Ó}{{\''O}}1 {Ú}{{\''U}}1', +' {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1', +' {À}{{\`A}}1 {È}{{\''E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1', +' {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1', +' {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1', +' {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1', +' {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1', +' {ã}{{\~a}}1 {ẽ}{{\~e}}1 {ĩ}{{\~i}}1 {õ}{{\~o}}1 {ũ}{{\~u}}1', +' {Ã}{{\~A}}1 {Ẽ}{{\~E}}1 {Ĩ}{{\~I}}1 {Õ}{{\~O}}1 {Ũ}{{\~U}}1', +' {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1', +' {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1', +' {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1', +' {€}{{\euro}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1', +' {»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1 {¡}{{!`}}1', +'}'); latex_head = sprintf ("%s\n", "",
--- a/scripts/miscellaneous/publish.m Wed Oct 13 10:36:20 2021 -0700 +++ b/scripts/miscellaneous/publish.m Sun Oct 17 12:28:51 2021 +0200 @@ -33,10 +33,12 @@ ## Generate a report from the Octave script file @var{file} in one of several ## output formats. ## -## The generated reports interpret any Publishing Markup in comments, which is -## explained in detail in the GNU Octave manual. Assume the following example, -## using some Publishing Markup, to be the contents of the script file -## @file{pub_example.m}: +## The generated reports interpret Publishing Markup in section comments, which +## is explained in detail in the GNU Octave manual. Section comments are +## comment blocks that start with a line with double comment character. +## +## Assume the following example, using some Publishing Markup, to be the +## contents of the script file @file{pub_example.m}: ## ## @example ## @group @@ -61,12 +63,11 @@ ## ## To publish this script file, type @code{publish ("pub_example.m")}. ## -## With only @var{file} given, a HTML report is generated in a subdirectory -## @file{html} relative to the current working directory. The Octave commands -## are evaluated in a separate context and any figures created while executing -## the script file are included in the report. All formatting syntax of -## @var{file} is treated according to the specified output format and included -## in the report. +## When called with one input argument, a HTML report is generated in a +## subdirectory @file{html} relative to the current working directory. Any +## Octave commands in @file{pub_example.m} are evaluated in a separate context +## and any figures created while executing the script file are included in the +## report. ## ## Using @code{publish (@var{file}, @var{output_format})} is equivalent to the ## function call using a structure