具有变量缩进和自动换行的自定义环境?

具有变量缩进和自动换行的自定义环境?

比如说,我希望第一行没有缩进,但后续行有一定数量的缩进。我不想在每行末尾输入“\”来中断它。我还想缩短 \begin{...} 代码。

所以我想要这样的东西:

\BE
这是
我的自定义
环境代码
\EE

输出为 pdf 如下:

this is
    my custom
    enviro code

我知道如何创建自定义环境和命令,至少可以通过遵循其他示例在新手级别上进行创建。

基本上,我正在寻找一种方法来重现多行 R 代码,就像它在 RStudio 的控制台中显示的那样,并且只需输入很少的内容。因此,任何有关如何做到这一点的建议都值得赞赏。

我也意识到 R Markdown 可能是最好的选择,但目前我正尝试使用传统的 latex。您也可以尝试说服我。我也无法在 RStudio 中使用“knit to pdf”,但这是另一个问题。

这是一个最小的工作示例:

\documentclass{article}
\usepackage{color}

\newcommand{\bR}{\ttfamily\color{blue}$>$ }
\newcommand{\eR}{\color{black}\rmfamily}

\begin{document}

Here is how I'd like to be able to type the latex code:

\bR
xbar=mean(x)
summary(x)
hist(x)
\eR

But here is what will give me the formatting that I want:

\bR
xbar=mean(x)\\
\hspace*{0.32in} summary(x) \\
\hspace*{0.32in} hist(x) \\
\eR

\end{document} 

一种解决方案是为后续行设置单独的命令(可能是最简单的解决方法)。另一种选择是创建自定义列表环境。我可能可以实现这些。我只是希望找出实现我想要的最佳和最有效方法。

===

编辑:使用下面的答案,我可以做出一些我满意的轻微编辑。

\newenvironment{realR}{\obeylines\parindent5mm\noindent\ttfamily\color{blue}}{}
\newcommand{\rcp}{\noindent $>$ }

\begin{realR} 
    \rcp x = c()
    mean(x)
    summary(x)
\end{realR}

答案1

\bR这里有一个快速破解方法,几乎​​可以满足您的要求。我个人建议不要使用和这样的缩写,\eR因为它们会使您的文档更难阅读,如果您有合著者,这会变得更加麻烦。也就是说,使用下面的代码,编写

\bR xbar=mean(x)
summary(x)
hist(x)
\eR

将产生:

在此处输入图片描述

请注意至关重要的与! 在xbar=mean(x)同一行上\bR(这是“...几乎完成了您想要的工作”中的“几乎”。)

完整代码如下:

\documentclass{article}
\newenvironment{realR}{\obeylines\parindent8mm\noindent}{}
\newcommand\bR{\begin{realR}} % shorthands for environment
\newcommand\eR{\end{realR}}

\begin{document}

\bR xbar=mean(x)
summary(x)
hist(x)
\eR

\end{document}

正如您所看到的,这个想法是使用 来更改段落缩进,\parindent8mm并使用 来关闭第一行的缩进\noindent(抱歉,我不能使用英寸...)。该\obeylines命令告诉 TeX 使用自然换行符。

编辑

虽然你说得很清楚,但我并没有真正意识到你正在排版 R 代码。为此,我建议使用不同的方法列表。例如,您可以生产:

在此处输入图片描述

使用代码:

\documentclass{article}
\usepackage{listings}
\begin{document}

\begin{lstlisting}[language=R]
xbar=mean(x)
    summary(x)
    hist(x)
\end{lstlisting}

\end{document}

只需稍微努力一下,本质上相同的代码就会产生:

在此处输入图片描述

以下是经过额外努力的代码:

\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{listings}
\lstdefinestyle{rcode}{
    language=R,
    backgroundcolor=\color{Gainsboro!50!White},
}
\lstnewenvironment{rcode}{\lstset{style=rcode}}{}

\begin{document}

\begin{rcode}
xbar=mean(x)
    summary(x)
    hist(x)
\end{rcode}

\end{document}

相关内容