Skip to content

Instantly share code, notes, and snippets.

@jimbojsb
Created January 18, 2012 03:52
Show Gist options
  • Save jimbojsb/1630790 to your computer and use it in GitHub Desktop.
Save jimbojsb/1630790 to your computer and use it in GitHub Desktop.
Code highlighting for Keynote presentations

Step 0:

Get Homebrew installed on your mac if you don't already have it

Step 1:

Install highlight. "brew install highlight". (This brings down Lua and Boost as well)

Step 2:

Highlight your source. "highlight -O rtf myfile.php | pbcopy". This will highlight the source code in RTF format and copy the result of that operation to your Mac's clipboard.

Step 3:

Paste into your slide in Keynote. Keynote will create a new text box with your highlighted code. You can adjust the width as needed, and adjust the font size with cmd+ and cmd-

@mazuhl
Copy link

mazuhl commented Apr 8, 2014

@hadifarnoud this one works with the filename or clipboard. Put the code in your .bash_profile.

Following on from @snookca and @felixyz you can enter the syntax on the command line and either copy from the clipboard (light js) or pass a filename too (light js func.js).

function light() {
  if [ -z "$2" ]
    then src="pbpaste"
  else
    src="cat $2"
  fi
  $src | highlight -O rtf --syntax $1 --font Inconsolata --style solarized-dark --font-size 24 | pbcopy
}

@QuatschSalat
Copy link

For me it works when I copy & paste some code directly from Xcode to TextEdit.
Also it is possible to create a textfield in Pages or Keynote and paste the code in it.
Tested on Mac OS X 10.9.1 with Xcode 5.1, Keynote 6.2 and Pages 5.2.

@backflip
Copy link

If you want to use Alfred to format code from the clipboard (based on @mazuhl's comment above): https://dl.dropboxusercontent.com/u/1806977/Highlight%20Code.alfredworkflow

In case it doesn't work: Make sure $PATH is set accordingly. Alfred apparently does not know about your $PATH, that's why the workflow starts with export PATH=$PATH:/usr/local/bin. However, if highlight is on a different path, this has to be changed.

@lrytz
Copy link

lrytz commented Nov 8, 2014

Here's how to set up a keyboard shortcut to highlight the current selection directly within Keynote: https://gist.github.com/lrytz/d82c1adf7337a4cecace

@nikcorg
Copy link

nikcorg commented Nov 13, 2014

On mac, you can quickly preview a HTML version with the help of netcat:

(cat <source> | highlight --inline-css | nc -l 5555)& open http://localhost:5555

@zangbianxuegu
Copy link

highlight: Could not read input file:

@lkuper
Copy link

lkuper commented Sep 12, 2015

I've done this for years with pygmentize: pygmentize -f rtf <filename> | pbcopy does the trick, although some upthread commenters have fancier variations.

@prodis
Copy link

prodis commented Dec 6, 2015

Thank you. This helped me to create my last presentation.

@cksachdev
Copy link

@aoberoi Did you figure out a solution to persist background color using highlight?

@M2shad0w
Copy link

Thank you. This helped me to create my last presentation.

@freak4pc
Copy link

Anyone has ideas for ES6 support ?

@mcspronko
Copy link

Thanks for advice. Works perfect for my slides.

@satblip
Copy link

satblip commented Feb 10, 2016

Thanks for the share!

@gregberger
Copy link

I tried and succeeded in copy-pasting from PHPStorm and XCode aswell [ MacOS 10.11.3 ].
@freak4pc : works in Atom too with the copy-as-rtf package, which uses pygments under the hood.

It seems there is a Sublime package doing the same.

As far as I know, this is not working with Netbeans

@fancymax
Copy link

fancymax commented Jul 5, 2016

Thanks,very helpful~

@AlexanderTserkovniy
Copy link

Amazing!

@cblanc
Copy link

cblanc commented Sep 6, 2016

To format JSON with human readable spacing and breaklines (requires python 2.6+)

pbpaste | python -m json.tool | highlight --syntax=json -O rtf | pbcopy

@gyzerok
Copy link

gyzerok commented Feb 21, 2017

Any suggestions about which highlight theme is better to use for good contrast on white slides?

@sparanoid
Copy link

@rafarocha I found moria, neon, vampire, and zenburn are good for themes with dark background.

@rkettelerij
Copy link

rkettelerij commented May 2, 2017

This is a real gem! Thanks for sharing.

Tip: if you have some code on your clipboard and want it highlighted, enter: pbpaste | highlight -O rtf --syntax=groovy | pbcopy (replace syntax=groovy with your language of choice)

@xiaoronglv
Copy link

xiaoronglv commented Aug 23, 2017

why are background color missed ?

image

this snippet is generate by this commmand

export PATH=$PATH:/usr/local/bin
pbpaste | highlight -O rtf --syntax {query} --font-size 14 --font Inconsolata --style zellner --inline-css | pbcopy

@sfletche
Copy link

Any solutions for highlighting jsx code?

@nitish24p
Copy link

The following works for VSCODE.. add the following in your keybindings.json

    {
      "command": "editor.action.clipboardCopyWithSyntaxHighlightingAction",
      "key": "shift+cmd+c"
    }

Now any bit of code you want to copy do a cmd + shift + c.
Paste this onto a text editor like TextEdit for mac. Now copy the same code from textEdit and paste onto keynote..

@EdgarOrtegaRamirez
Copy link

My solution is to use Vim with vim-polyglot installed for syntax highlight

  1. Open the file with the code on Vim
  2. Use vertical selection (Option+Command + Left Click) on Terminal to select the part of the code I want to put into Keynote.
  3. Pasted the copied content into a page in Keynote, the content is already formatted
  4. You can customize the formatting even further on Keynote

Notes:

  • point 2 works on iTerm as well, but you have to enable the option to copy text with styles.
    Prefs > Advanced > Copy to pasteboard on selection includes color and font style.
  • The background color of your terminal is also copied, use Keynote to remove the background color. see this image

@javadba
Copy link

javadba commented Oct 12, 2018

I would like to reduce the inter-line spacing : can either highlight or pygmentize handle that?

@LeeYunhang
Copy link

It seems does not support js. :(

@taizilongxu
Copy link

👍

@PaulRBerg
Copy link

Any plans to add support for --syntax=solidity?

@iknownothing
Copy link

This is really helpful, thanks a lot. However, I can not get background color working, with canvas setting. Any suggestion?

@christoph-daehne
Copy link

Very nice, thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment