[Tex/LaTex] fancyvrb inline verbatim with \newcommand and \CustomVerbatimCommand

fancyvrbmacrosverbatim

I've just registered. This is my first question to this site.

I am trying to make a verbatim command for inline code. This has been asked and answered many times before, but I never found a direct answer that actually works for me.
I am using MikTeX 2.9, completely updated.

In my text – a technical manual – I am using fancyvrb. I have plain text and code snippets. These are handled by \DefineVerbatimEnvironment. It is working fine.

Inline code, on the other hand, has been posing the usual problem of passing a parameter into the \Verb. I mean to have an inline environment suitable for code, but allowing for text formatting AND immune to backslashes and so, so that I can format inline code or Windows file paths without the need to encode every single backslash as \textbackslash.

I can use \CustomVerbatimCommand, but this uses a single character for enclosing the target text, instead of curly brackets. I came up with this definition:

\CustomVerbatimCommand{\inCodeStub}{Verb}{commandchars=¬¦^}
\newcommand{\inCode}[1]{\inCodeStub¡#1¡}

With this I can use the \inCodeStub¡text¡ – which I did not wish to – but the attempt at the bracketed version is not working. Could anyone tell me why/offer a solution?

Here is a MWE:

\documentclass{book}
\usepackage{fancyvrb}
\usepackage{inconsolata}
% New command/environment for code snippets
% Inline code fragments
\newcommand\InCode[1]{\texttt{\frenchspacing#1}}
% Code blocks
\newenvironment{Code}{
    \begin{quote}\begin{tt}
}{\end{tt}\end{quote}}
% Code blocks, no left margin
\newenvironment{leftCode}{
    \begin{tt}
}{\end{tt}}

% Complex code blocks, where too many encodings would be necessary
% Inline code fragments
% The inverted exclamation mark -- ¡ -- never occurs in code, so it is a good candidate to use as bracket
\CustomVerbatimCommand{\inCodeStub}{Verb}{commandchars=¬¦^}
\newcommand{\inCode}[1]{\inCodeStub¡#1¡}

% This is a stub for the fancyvrb starred environments below
\DefineVerbatimEnvironment%
{leftCodeStub}{Verbatim}{commandchars=¬¦^}
% NOTE: Inside this environment, intead of
% \command{object}, write
% ¬command¦object^
% as these characters -- ¬, ¦ and ^ -- are very rare in code

\newenvironment{Code*}{
    \quote\leftCodeStub
}{\endleftCodeStub\endquote}

\begin{document}
Text outside. \inCode{Text inside. Works with plain text.} Text outside.

Now with backslashes it doesn't work: \inCode{\something and ¬textbf¦\something^}

But the same using the stub code works fine: \inCodeStub¡\something and ¬textbf¦\something^¡
\end{document}

Best Answer

You can't use ¬ and ¦ as “command chars” if you have \usepackage[utf8]{inputenc}. Only one byte characters can be used for the purpose (and not all of them, actually).

If you are willing to switch to XeLaTeX or LuaLaTeX, then it's possible.