fancyvrb 与 \newcommand 和 \CustomVerbatimCommand 逐字内联

fancyvrb 与 \newcommand 和 \CustomVerbatimCommand 逐字内联

我刚刚注册。这是我向这个网站提出的第一个问题。

我正在尝试为内联代码创建逐字命令。这个问题之前已经被问过很多次了,但我从未找到真正适合我的直接答案。我使用的是 MikTeX 2.9,已完全更新。

在我的文本(技术手册)中,我使用的是fancyvrb。我有纯文本和代码片段。这些由处理\DefineVerbatimEnvironment。它运行良好。

另一方面,内联代码一直存在将参数传递到\Verb。我的意思是拥有一个适合代码的内联环境,但允许文本格式化不受反斜杠影响,因此我可以格式化内联代码或 Windows 文件路径,而无需将每个反斜杠编码为\textbackslash

我可以使用\CustomVerbatimCommand,但这使用单个字符来括住目标文本,而不是花括号。我想出了这个定义:

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

有了这个,我可以使用\inCodeStub¡text¡- 我不想这样做 - 但尝试使用括号版本不起作用。有人能告诉我原因/提供解决方案吗?

以下是 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}

答案1

如果有,则不能使用¬和作为“命令字符” 。只有单字节字符可用于此目的(实际上,并不是所有字符都可以)。¦\usepackage[utf8]{inputenc}

如果您愿意切换到 XeLaTeX 或 LuaLaTeX,那么这是可能的。

相关内容