Macros LaTeX newcommand与逐字或列表:与`#`(散列键)有关的问题
我试图使用Macros LaTeX newcommand与逐字或列表:与`#`(散列键)有关的问题,macros,latex,special-characters,listings,verbatim,Macros,Latex,Special Characters,Listings,Verbatim,我试图使用逐字或清单环境定义带有\newcommand的宏。由于逐字和列表,似乎#1中的散列键(代表参数)被转义 我不熟悉宏,所以我尝试了一些简单的方法:它与\begin{center}一起工作\结束{center} \documentclass[a4paper,oneside,11pt]{report} \newcommand{\script}[1]{ \begin{center} #1 \end{center} } \begin{document} \script{bla
逐字
或清单
环境定义带有\newcommand
的宏。由于逐字和列表
,似乎#1
中的散列键(代表参数)被转义
我不熟悉宏,所以我尝试了一些简单的方法:它与\begin{center}一起工作\结束{center}
\documentclass[a4paper,oneside,11pt]{report}
\newcommand{\script}[1]{
\begin{center}
#1
\end{center}
}
\begin{document}
\script{blabla}
blibli
\end{document}
当我用逐字
替换中心
时,我得到以下错误:
文件在扫描@xverbatim时结束
或lstlisting
:
列表开始后删除的文本
我没有在stackoverflow上找到任何东西,也没有:您建议如何在宏中使用这些环境(\newcommand
或\newenvironment
)
提前感谢找到了使用\verb
命令并使用tilde作为分隔符的逐字解决方法(如果我想在脚本中使用tilde,我必须使用\textascitilde
):
\documentclass{article}
\纽科曼{\scr}[1]{
\开始{minipage}{0.9\textwidth}
\fbox{
\密码箱{\textwidth}{
\动词~#1~%逐字逐句的内容很棘手。你必须问问自己目的是什么。如果是打印代码,那么山之王就是。我建议你这样做,并为大量特定于代码的输出定义自己的环境
下面是一个例子:
\documentclass{article}
\usepackage{listings}
\lstnewenvironment{code}[1][]
{\lstset{{#1}}%在本地添加/更新设置
{}
\lstset{%全局选项
帧=单个,
基本样式=\ttfamily\small,
语言=PHP
}
\开始{document}
我的第一个PHP“Hello World”页面:
\开始{code}
PHP测试
\结束{code}
编写\lstinline!PHP Test!时,它会设置页面的\textit{title}。
\结束{document}
这不起作用。在逐字
设置中(在逐字
环境或\verb
中)像\textascitilde
这样的宏没有扩展到它们的意义,因为\
被更改为表示一个字符。因此,您的输出应该包含\textascitilde
,而不是~
。谢谢您的回复。实际上它在我的安装中起作用了…不知道如何也不知道为什么!这里的目的是什么?逐字内容不能作为参数传递给其他宏。我想1)粘贴脚本和代码而不必转义字符2)制作一个迷你页或sthg,或者一个框,以区分页面中的代码和普通文本。通过“代码脚本”你指的是实际的代码吗?我建议基于编写你自己的环境。我正在制作一个使用PHP、bash、Sparql的教程。但是我想用特殊字符粘贴任何文本。你说的>基于列表编写你自己的环境是什么意思?有没有一种简单的方法可以做到这一点(还没有找到)非常感谢你,沃纳,你说服我了解更多关于列表的内容。我不知道\lstinline
。你能解释一下{\lstset{1}的语法吗
:这是否意味着我可以添加一个选项作为参数?@vvffl:是的。我将code
定义为一个可以接受可选参数的环境。因此您可以调用(比如)\begin{code}[language=bash]
…\end{code}
切换语言
。根据语言定义样式(样式包括颜色和其他格式规范)可能是最理想的选择。谢谢,这正是我所想的(我在我的tex文件中有一篇旧论文,其中我使用了xml的自定义语法颜色,所以我将首先使用“grep”)。所以宏并没有那么难,但语法对我来说仍然很奇怪。@vvffl:这是一个常见的要求,但它没有得到很好的支持。请注意,输出(在生成的PDF中)不包含空格,它们不可选择用于复制和粘贴。因此,缩进没有保留。(La)的意图TeX将生成漂亮的文档,因此可能不完全支持将内容复制/粘贴到其他位置的“反向”。@vvffl:您可以尝试,它使用。
\documentclass{article}
\newcommand{\scr}[1]{
\begin{minipage}{0.9\textwidth}
\fbox{
\parbox{\textwidth}{
\verb~#1~ % <-- HERE
}
}
\end{minipage}
}
\begin{document}
\scr{Some script code here...
here a tilde : \textasciitilde
}
\end{document}
\documentclass{article}
\usepackage{listings}
\lstnewenvironment{code}[1][]
{\lstset{#1}}% Add/update settings locally
{}
\lstset{% Global options
frame = single,
basicstyle = \ttfamily\small,
language = PHP
}
\begin{document}
My first PHP ``Hello World'' page:
\begin{code}
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
\end{code}
When you write \lstinline!<title>PHP Test</test>!, it sets the \textit{title} of the page.
\end{document}