About these ads

Menukeys: typesetting menu sequences, directory path names and keyboard shortcuts in LaTeX

I recently came across the menukeys package and found it very useful for software documentation and description of workflows. The output it creates is quite neat. Therefore, I will briefly introduce the main features and give some examples here.

 

An example at the beginning

menukeys-example

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[os=mac, mackeys=symbols]{menukeys}

\begin{document}
\noindent For saving a file to the desktop, go to \menu[,]{File, Save As...} and navigate to \directory{Users/Username/Desktop}. Alternatively, use the following keyboard shortcuts: \keys{\cmd+\shift+S} and \keys{\cmd+D}.
\end{document}

 

Getting the package

The package comes with the texlive distribution. Alternatively, you can download it from CTAN or the author’s GitHub repository.

 

Loading the package

As for any package, menukeys is loaded in the document preamble:

\usepackage{menukeys}

 

Package options

The package implements several options. They handle the differences in keys or key modifiers between different operating systems and are therefore only required when typesetting keyboard shortcuts.

%Windows
\usepackage[os=win]{menukeys}

%Mac OS X (symbols)
\usepackage[os=mac, mackeys=symbols]{menukeys}

%Mac OS X (text)
\usepackage[os=mac, mackeys=text]{menukeys}

A full list of special keys is given below.

 

Menu sequences

Typesetting menu sequences becomes useful for documenting a software’s graphical user interface or to keep track of a series of actions in a complex analysis workflow. The command is straight forward:

\documentclass{article}
\usepackage{menukeys}

\begin{document}
\menu[,]{Item 1, Item 2, Item 3, ...}
\end{document}

The optional argument [,] changes the default separator to comma (,). Due to a conflict with HTML, I can’t use the package’s default separator, the greater than symbol (>), in the code here on my blog.

menukeys-menu

 

Directory path names

The default separator for directory path names is the forward slash (/), which is converted to a small arrow-head in the output.

\documentclass{article}
\usepackage{menukeys}

\begin{document}
\directory{Item 1 / Item 2 / Item 3 / ...}
\end{document}

menukeys-directory

 

Keyboard shortcuts

Keyboard shortcuts describe combinations of keys to be pressed for a certain action. The default separator used between keys is the plus symbol (+).

\documentclass{article}
\usepackage{menukeys}

\begin{document}
\keys{Item 1 + Item 2 + Item 3 + ...}
\end{document}

menukeys-keys

Below a list of key macros copied from the package documentation.

menukeys-key-macros

Here is an example of how to describe the keyboard shortcut to create a custom-size screen grab on Mac OS X using Mac keyboard symbols:

\documentclass{article}
\usepackage[T1]{fontenc} % required for Mac command key rendering
\usepackage[os=mac, mackeys=symbols]{menukeys}

\begin{document}
\keys{\cmd + \shift + 4}
\end{document}

menukeys-mac-custom-screen-grab

 

Changing the style

The package comes with a set of styles. Some styles change the look only subtly, others more drastically. See chapter 4.2 of the package documentation for a complete list of styles available. To change the style, the package provides the following macro:

\renewmenumacro{list}[separator]{style}

A few examples:

\renewmenumacro{\menu}{roundedmenus} % default: menus
\renewmenumacro{\directory}{pathswithfolder} % default: paths
\renewmenumacro{\keys}{shadowedroundedkeys} % default: roundedkeys

menukeys-styles

 

Changing the default separator

Each command has its specific default separator, as described earlier. Simply use the optional argument to change the default separator. This will not, however, change the way the output looks, only the way a command is typed. E.g. the following command changes the key default separator locally to comma.

\keys[,]{\cmd, \shift, 4}

To change the separator globally (preamble) or from a certain position onwards, use the same macro as for changing the style. Here is an example:

\documentclass{article}
\parindent=0pt
\usepackage{menukeys}

\begin{document}
\directory{Item 1 / Item 2 / Item 3 / ...} % default separator

\renewmenumacro{\directory}[,]{paths}
\directory{Item 1, Item 2, Item 3, ...} % comma as separator
\end{document}

The output is exactly the same.

menukeys-change-default-separator

Final note: Spaces added before or after the separator will be ignored by the package, i.e. a + b, a+ b, and a+b produce exactly the same result.

See the package documentation for a complete list of separators available.

About these ads

9 Responses to “Menukeys: typesetting menu sequences, directory path names and keyboard shortcuts in LaTeX”

  • mbork

    Very nice, though I can see that you can only say os=mac or os=win. This means that the two operating systems I use are excluded… Maybe I’ll contact the package auhor about it. I guess that for os=linux not many changes would be required, but os=emacs would definitely need some work;).

    • tom

      Thanks for your comment! It does’t necessarily mean Linux is not supported. It only means that Linux does’t have any OS-specific buttons like the command key on an Apple or the Windows key on a Windows keyboard.

      Tom.

  • mbork

    Well, my Ubuntu box calls the Windoze key “Super”. And Emacs has its M-x, C-c etc. (basically M (Meta) instead of Alt, C for Control, for Enter etc., and a hyphen instead of a plus sign). I guess it would be easy to implement, and being able to have an option “os=emacs” would be soooo cute;)…

    • mbork

      Aaargh, your blog engine ate my less than/greater than signs. Of course, Enter is called [RET] in Emacs, with “angle brackets” instead of normal ones.

    • tom

      I really encourage you to contact the package author to tell him about your ideas. He was extremely friendly and helpful when I got in touch with him while writing the post.
      Thanks for your comment!

    • Tobi

      @mbork: The reason that there are only these to values for the os option is that I don’t know other systems and don’t know their special requirements … Any suggestion are very welcome, the more detailed they are the better I can implement the desired features. Just add an issu at GitHub or send me an e-mail if you don’t have an GitHub account.

  • Lev Abramov

    Wow, that looks great!
    I just asked to make tutorial “for dummies” at my university, how to easy install and use latex. Definitely will use it!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 712 other followers

%d bloggers like this: