Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macros LaTeX newcommand与逐字或列表:与`#`(散列键)有关的问题_Macros_Latex_Special Characters_Listings_Verbatim - Fatal编程技术网

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}