# Is there a way to eliminate the "\" in frequently used LaTeX commands?

The "\" in all of the commands requires frequent finger gymnastics of the pinky of the right hand in LaTeX, at least for the touch typist. It occurred to me that although it makes things more readable via syntax highlighting, it certainly slows things down.

So, is there a way to, for certain often used commands, to eliminate the "\"?

For instance to type: textit{some text here}; textbf{some more text here}; quotation{some text here}; item instead of \textit; \textbf; \quotation; \item etc.

Not that I really mind stretching my right pinky frequently.

• How should LaTeX know that you mean the word item in context This item is a weird question instead of the command form \item or in your version: item? Or quotation? On a US - Keyboard layout the backslash character is left to the Enter key, so this is not really a finger breaking procedure ;-)
– user31729
Dec 18, 2015 at 6:28
• Also, are you able and willing to run LuaLaTeX?
– Mico
Dec 18, 2015 at 7:34
• One can do this by making everything active (so called 'ActiveTeX'), which has from time to time seemed attractive to various people. Life gets tricky as @ChristianHupfer notes when you get down to the fact that TeX is about typesetting, so we have text as well as code. Dec 18, 2015 at 9:48
• I don't recommend this, regardless whether possible or not,but it's my personal opinion, of course
– user31729
Dec 18, 2015 at 9:50
• You may wish to consider preprocessing your document with pandoc. You can write simple commands in markdown, and still fallback to latex for more sophisticated macros Apr 16, 2016 at 16:10

## Escape category code for other character

The escape character, which starts commands is not fixed and can be changed, e.g.:

\catcode\|=0 % escape category code as the backslash
|textit{some text here}; |textbf{some more text here};
|begin{quotation}...|end{quotation}


The tricky part is finding the right character, which does not clash with other uses of it. It depends on the keyboard layout and the characters already used in the text.

If _ is used, then the subscript feature in math mode is available via command \sb (or then _sb).

## Post-processing

Another way is to post-process the input file with a regular expression, which checks for known command words, ensure that no letter is preceding or following and adds the backslash in front. For example, a simple expression for Perl:

s/\b(textbf|textit|item)\b/\\\$1/g;

• The | character is on the same key as \ so this does not prevent the finger stretching (I know, that this is an example only)
– user31729
Dec 18, 2015 at 6:37
• Yes, this depends on your keyboard layout. Dec 18, 2015 at 7:45
• @ChristianHupfer On my keyboard, the | and \ are on opposite sides. It simply depends on the keyboard layout, which differs between languages. Dec 18, 2015 at 8:43
• @Sverre: As I stated (basically) in my comment below the question: Using a US keyboard layout it's the same key ;-) I use US layout for programming and TeXing and German for mails (in German).
– user31729
Dec 18, 2015 at 8:53
• @ChristianHupfer Your comment below the question does not say that | and \ are on the same key on a US keyboard. It says that \ is left of the Enter key :) Dec 18, 2015 at 8:57

Thinking outside the \box: instead of looking for a TeX solution, look for a general solution. You want to type X for Y. That's what editors excel at. Well, the good ones at least.

The best one is, of course, vi (or vim or gvim), a touch-typist's dream come true. You could, for example, remap the backslash to a key that's more easily reached.

imap # \


Or, if that interferes with other documents you write, selectively use insert-mode abbreviations such as

iabbr textit \textit


It's easy to restrict such mapping to files with a .tex extension only.

• +1. Don't change LaTeX, change your editor or keyboard layout. Altering the syntax of the language can bite you in many ways (collaborators, code reuse, copy-and-pasting code to and from other sources...). Especially with a language that is as quirky to parse as LaTeX. Dec 19, 2015 at 10:54
• This could be the start of a very interesting Vim plugin. Dec 19, 2015 at 15:53
• If I used vim this would be wonderful. But I use emacs, usually in org-mode, and I am beginner user. I have not explored using emacs as my LaTeX editor though. Will emacs do similar remapping and substitution? Jan 10, 2016 at 16:41
• @AFeldman somethin' in the .emacs file I think would do, like (defun (backslash () (interactive) (insert (kbd "\\"))) (global-set-key (kbd ";" ) 'backslash) or whatever
– doed
Jun 13, 2016 at 12:59
• @doed thanks. I love emacs. Unfortunately my current TeX workflow doesn't allow for its use regularly. Jun 14, 2016 at 12:06

(Edited answer significantly to provide further generality)

Here's a LuaLaTeX-based solution that lets you omit the \ (backslash) character from sectioning commands, \begin{<some environment>}, \end{<some environment>}, \item, and font shape-changing commands such as \textit, \bfseries, \scshape, and \ttfamily. Writing the backslash character is permitted, but not required. Note that no substitute for \ needs to be entered.

There are but a few syntax rules:

• section and subsection directives must be placed at the start of a line.

• item instructions must be the first items (pun intended) on a line other than (possibly) whitespace.

• Finally, if you have created macros ill-advisedly named \bend, \fend, \lend, \send or \tend, they must not take arguments -- so that they can be distinguished from \end! Please don't create macros named, say, \xxtextrm or \zzitshape unless you want to make the Lua code below unfit for use.

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{amsmath}

\usepackage{luacode}
\begin{luacode*}
function add_backslash ( x )
-- sectioning commands
x = string.gsub ( x , "^\\?(section)"          , "\\%1" )
x = string.gsub ( x , "^\\?(subsection)"       , "\\%1" )
x = string.gsub ( x , "\\?(subsubsection%s-{)" , "\\%1" )
x = string.gsub ( x , "\\?(paragraph%s-{)"     , "\\%1" )
-- \begin and \end of environments
x = string.gsub ( x , "\\?(begin%s-{)"      , "\\%1" )
x = string.gsub ( x , "\\?(end%s-{)"        , "\\%1" )
-- \item
x = string.gsub ( x , "^%s-\\?(item)"       , "\\%1" )
-- \text?? (rm, sf, up, bf, it, ...)
x = string.gsub ( x , "\\?(text[^e]%l)"     , "\\%1" )
-- \??shape (it, sc, ...)
x = string.gsub ( x , "\\?(%l[^e]shape)"    , "\\%1" )
-- \??series (bf, md, ...)
x = string.gsub ( x , "\\?(%l%lseries)"     , "\\%1" )
-- \??family (sf, tt, ...)
x = string.gsub ( x , "\\?(%l%lfamily)"     , "\\%1" )
return x
end
\end{luacode*}

begin {document}

section{Here}
subsection {today,}
subsubsection   {gone}
paragraph {tomorrow.}

begin{enumerate}
item A
item B
item C
end{enumerate}

begin{equation}  1+1=2  end{equation}

begin{itemize}
item X is not equal to the following item:
item Y
item Z
end{itemize}

begin{align}
a &= b\\
c &= d
end{align}

textit{abc}, textsc{def}, textbf{ghi}, textsf {jkl}

{itshape abc}, {scshape def}, {bfseries ghi}, {sffamily jkl}

end{document}


Note the complete absence of any and all backslash characters after the \end{luacode*} directive. I must confess that this code looks positively spooky to me.

• What happens if you reshape something after a reply from somebody you texted earlier?
– cfr
Dec 19, 2015 at 0:37
• @cfr - I don't know what to say. Is your comment aimed at something I wrote or did?
– Mico
Dec 19, 2015 at 1:50
• If you typeset my comment in the environment, won't it think that contains two commands? Or have I misunderstood the syntax of Lua's regex expressions?
– cfr
Dec 19, 2015 at 2:58
• @cfr - Ah, now I get it. Let me narrow down the scope of some of the pattern-matching expressions.
– Mico
Dec 19, 2015 at 3:40

In the end I found myself agreeing with Federico Poloni and Rmano, that it is better to reassign keys. The \ key on my keyboard is just to the left of the Shift key, so I swapped the / key with the \ key using my ~/.Xmodmap file, using xev to determine the keycode and keysym for each as per Swapping the left Alt and Ctrl keys in Ubuntu 11.10

In ubuntu 14.04, with this http://www.knizefamily.net/russ/blog/wp-content/uploads/2012/01/keyboard-model-m-1.jpg as my keyboard, I added the following to my .Xmodmap file:

keycode 61 = backslash bar

keycode 51 = slash question
`

Beware though if you use this key for passwords, in a X Window dependent terminal, like gnome terminal, it also remaps the key for that terminal. This might cause a bit of consternation if it happens to be part of your sudo password. This does not happen in a real terminal.

For the Mac user I understand that the same thing can be accomplished with Karabiner.

• Why don't you simply make use of automatic completion? You would obtain \begin{figure} by typing bfig and pressing esc (in TeXShop, but other editor allow auto completion) Dec 22, 2015 at 20:38
• esc on my keyboard is even further away than the \ key. Dec 23, 2015 at 0:04
• Sure, but you could hit 5 keys (namely "B F I G Esc") to get \begin{figure}. insted of 13+4 keys (B E G I N Alt+Shift+è F I G U R E Alt+Shift++). Maybe you could change the key to get autocompletion, but I don't know every editors.. Dec 23, 2015 at 8:59
• I have never used auto-complete. I think it is because in order to use it you have to look at what it has auto-completed on the screen, make sure that it is right, then push Enter. I realize that this becomes automatic after a while, when you become familiar with your auto-complete items. Dec 23, 2015 at 18:17
• As you do, I agree with Federico Poloni and Rmano: leave LaTeX unchanged - reassign keys. Anyway, as you pointed out, the use of auto-completion is just a matter of getting used to, so I suggest you to take advantage of this tool ;) Dec 24, 2015 at 9:11