LaTeX newcommand with verbatim or listings:`#`(散列键)有问题
LaTeX newcommand with verbatim or listings : problem with `#` (hash key)
我正在尝试使用 verbatim
或 listings
环境使用 \newcommand
定义宏。由于 verbatim
和 listings
.
,似乎 #1
中的散列键(代表参数)被转义了
我是宏的新手,所以我尝试了一些简单的方法:它适用于 \begin{center} ... \end{center}
。
\documentclass[a4paper,oneside,11pt]{report}
\newcommand{\script}[1]{
\begin{center}
#1
\end{center}
}
\begin{document}
\script{blabla}
blibli
\end{document}
当我将 center
替换为 verbatim
时,出现此错误:
File ended while scanning use of @xverbatim.
或lstlisting
:
Text dropped after begin of listing
我在 Whosebug 和 https://tex.stackexchange.com 上都没有找到任何内容:您建议在宏中使用这些环境(\newcommand
或者可能 \newenvironment
)?
提前致谢
使用 \verb
命令找到 verbatim
的解决方法,并使用波浪号作为分隔符(如果我想在脚本中使用波浪号,我必须使用 \textasciitilde
):
\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}
但是 listings
...
什么都没有
编辑:
我刚刚注意到此变通方法不会使 "automatic" 字符转义,因此这不是我想要的。我希望能够在不转义特殊字符的情况下粘贴代码。
逐字内容很棘手。你必须问问自己的意图是什么。如果它是打印代码,那么山丘之王就是 listings
。我建议并为大量特定于代码的输出定义您自己的环境。
这是一个例子:
\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}
我正在尝试使用 verbatim
或 listings
环境使用 \newcommand
定义宏。由于 verbatim
和 listings
.
#1
中的散列键(代表参数)被转义了
我是宏的新手,所以我尝试了一些简单的方法:它适用于 \begin{center} ... \end{center}
。
\documentclass[a4paper,oneside,11pt]{report}
\newcommand{\script}[1]{
\begin{center}
#1
\end{center}
}
\begin{document}
\script{blabla}
blibli
\end{document}
当我将 center
替换为 verbatim
时,出现此错误:
File ended while scanning use of @xverbatim.
或lstlisting
:
Text dropped after begin of listing
我在 Whosebug 和 https://tex.stackexchange.com 上都没有找到任何内容:您建议在宏中使用这些环境(\newcommand
或者可能 \newenvironment
)?
提前致谢
使用 \verb
命令找到 verbatim
的解决方法,并使用波浪号作为分隔符(如果我想在脚本中使用波浪号,我必须使用 \textasciitilde
):
\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}
但是 listings
...
编辑: 我刚刚注意到此变通方法不会使 "automatic" 字符转义,因此这不是我想要的。我希望能够在不转义特殊字符的情况下粘贴代码。
逐字内容很棘手。你必须问问自己的意图是什么。如果它是打印代码,那么山丘之王就是 listings
。我建议并为大量特定于代码的输出定义您自己的环境。
这是一个例子:
\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}