{"id":8017,"date":"2012-11-04T12:46:35","date_gmt":"2012-11-04T17:46:35","guid":{"rendered":"http:\/\/scruss.com\/blog\/?p=8017"},"modified":"2020-05-17T17:45:37","modified_gmt":"2020-05-17T21:45:37","slug":"pretty-printing-arduino-sketches","status":"publish","type":"post","link":"https:\/\/scruss.com\/blog\/2012\/11\/04\/pretty-printing-arduino-sketches\/","title":{"rendered":"pretty-printing Arduino sketches"},"content":{"rendered":"<p>I don&#8217;t often need it, but the code printing facility in the <a href=\"http:\/\/www.arduino.cc\/\">Arduino<\/a> IDE is very weak. It has some colour highlighting, but no page numbering, no line numbering, and no headers at all.<\/p>\n<p><a href=\"https:\/\/www.gnu.org\/software\/a2ps\/\">a2ps<\/a> will sort you right out here. Years back, it was a simple text to PostScript filter, but now it has many wonderful filters for pretty-printing code. The Wiring\/Arduino language is basically C++, and a2ps knows how to deal with that. So, to create a PostScript file with a nice version of the the most basic Blink sketch:<\/p>\n<pre>a2ps --pro=color -C -1 -M letter -g --pretty-print='c++' -o ~\/Desktop\/Blink.ps Blink.ino<\/pre>\n<p>If you&#8217;re somewhere that uses sensible paper sizes (in other words, not North America), you probably don&#8217;t want the\u00c2\u00a0<code>-M letter<\/code> option. <del>a2ps is supposed to have a PDF print option (<code>-P pdf<\/code>), but it doesn&#8217;t work on my installation, so I just splat the output through <a href=\"http:\/\/www.ghostscript.com\/\">ps2pdf<\/a><\/del>. You can&#8217;t use the <code>-P \u00c2\u00abprinter\u00c2\u00bb<\/code> option combined with the <code>-o \u00c2\u00abfile\u00c2\u00bb<\/code> option, but cups-pdf is your friend if you need to print to a PDF. The results are linked below:<\/p>\n<p><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2012\/11\/Blink.pdf\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8018\" title=\"Blink\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2012\/11\/Blink.jpg\" alt=\"\" width=\"612\" height=\"343\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2012\/11\/Blink.jpg 612w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2012\/11\/Blink-160x89.jpg 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2012\/11\/Blink-320x179.jpg 320w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2012\/11\/Blink-500x280.jpg 500w\" sizes=\"auto, (max-width: 612px) 100vw, 612px\" \/><\/a><\/p>\n<p>Not bad, eh?<\/p>\n<p>(<strong>Update<\/strong>: think I must have written this post on a Mac with a case-insensitive filesystem. Using the <code>--pretty-print='C++'<\/code> option I had before failed on Linux.)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I don&#8217;t often need it, but the code printing facility in the Arduino IDE is very weak. It has some colour highlighting, but no page numbering, no line numbering, and no headers at all. a2ps will sort you right out here. Years back, it was a simple text to PostScript filter, but now it has [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[2],"tags":[2582,2207,1596,813,765,812,1679],"class_list":["post-8017","post","type-post","status-publish","format-standard","hentry","category-goatee-stroking-musing-or-something","tag-a2ps","tag-arduino","tag-code","tag-ghostscript","tag-pdf","tag-postscript","tag-print"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pQNZZ-25j","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/8017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/comments?post=8017"}],"version-history":[{"count":4,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/8017\/revisions"}],"predecessor-version":[{"id":16281,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/8017\/revisions\/16281"}],"wp:attachment":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/media?parent=8017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/categories?post=8017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/tags?post=8017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}