防止“c 变成 ç (Babel 西班牙语)

防止“c 变成 ç (Babel 西班牙语)

我正在编写 R 函数的用户手册。对于该函数的参数,我需要一些引号,并且我希望它们是方括号,就像用户实际使用该函数时会看到的引号一样。

对于大多数论点来说,引言都很有效,但我坚持其中一条:

functionName(argument1 = "calories", argument2)

它的一部分"c呈现为C, 给我卡路里代替“卡路里”

我已尝试过:

  • functionName(argument1 = \"calories", argument2).这将渲染卡路里”
  • functionName(argument1 = ""calories", argument2).这将渲染卡路里”
  • functionName(argument1 = """calories", agument2).这将渲染卡路里再次。

我尝试过一些其他组合,但没有成功。

我怎样才能逃脱"c序列并拥有两个都方括号和 c?

编辑(添加 MWE)

\documentclass[oneside,letterpaper]{article}

\usepackage[spanish]{babel}

\title{title}
\author{author}

\newenvironment{alltypewritter}{\ttfamily}{\par}
         
\begin{document}

%\maketitle

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{alltypewritter}
  functionName(argument1 = "calories",\\
  \hphantom{functionName(} argument2)
  
\end{alltypewritter}

\end{document}

渲染结果如下

答案1

您可以简单地使用shorthands=off,如下所示:

\documentclass[oneside,letterpaper]{article}

\usepackage[shorthands=off,spanish]{babel}
\newenvironment{alltypewritter}{\ttfamily}{\par}

\begin{document}
    \begin{alltypewritter}
        functionName(argument1 = "calories",\\
    \end{alltypewritter}
\end{document}

我经常用它讲德语,以免发疯。

答案2

我主张使用逐字环境\begin{verbatim}...\end{verbatim}或类似的东西列表包来排版代码。

但是如果你对自己的解决方案感到满意,你可以在本地关闭 babel 简写:

\newenvironment{alltypewritter}{\shorthandoff{"}\ttfamily}{\par}

将关闭你的环境中 babel 使用的双引号简写。

答案3

您想在本地禁用简写。

\documentclass{article}

\usepackage[spanish]{babel}

\newenvironment{alltypewritter}{%
  \par\addvspace{\topsep}%
  \raggedright
  \ttfamily
}{\par\addvspace{\topsep}}

% " is a babel shorthand for Spanish, maybe others are needed
\AtBeginEnvironment{alltypewritter}{\shorthandoff{"}}

\begin{document}

\begin{alltypewritter}
  functionName(argument1 = "calories",\\
  \hphantom{functionName(}argument2)
\end{alltypewritter}

\end{document}

我保留了问题中的环境名称,但“打字机”没有双“t”。

在此处输入图片描述

正如评论中所建议的,使用 可能会有更好的输出verbatim

\documentclass[oneside,letterpaper]{article}

\usepackage[spanish]{babel}

\begin{document}

\begin{verbatim}
functionName(argument1 = "calories",
             argument2)
\end{verbatim}

\end{document}

查看fancyvrb包中的逐字文本以了解更多功能。

答案4

正如其他人所说,您可以禁用简写。一个简单的简写可以禁用特定的意外"c简写,值得重复,避免将两个字符真正粘在一起"{}c。要自动禁用简写以避免此类意外,您可以使用 babel 选项,但如果您使用的是其他语言,最好仅禁用西班牙语简写,选项如下es-noshorthands

\documentclass[oneside,letterpaper]{article}
\usepackage[spanish,es-noshorthands]{babel}
\newenvironment{alltypewritter}{\ttfamily}{\par}
\begin{document}
\begin{alltypewritter}
  functionName(argument1 = "calories",\\
  \hphantom{functionName(} argument2)
\end{alltypewritter}
\end{document}

但是如果你是一个 R 用户,不利用 R 来knitr显示 R 代码几乎是一种犯罪,这不仅是因为这可以在不停用简写的情况下解决这个问题:

% mwe.Rnw (in Rstudio)
% mwe.Rtex (in Overleaf)
\documentclass{article}
\usepackage[spanish]{babel}
\begin{document}
<<test,eval=F>>=
functionName(argument1 = "calories",
             argument2)
@
\end{document}

在此处输入图片描述

相关内容