![转义方括号](https://linux22.com/image/233341/%E8%BD%AC%E4%B9%89%E6%96%B9%E6%8B%AC%E5%8F%B7.png)
我想使用一些文本作为某些命令的可选参数。文本包含方括号 ([
和]
),但由于可选参数位于方括号内,因此会发生意外情况。
更多信息:我想要一个项目符号为引文的逐项列表,例如 [GMR85]。我使用了这个命令:
\开始{逐项列举} \item[[GMR85]] ... \end{逐项列举}
但它将第一个]
作为可选参数的结束。
有办法逃脱吗]
?
编辑:我特别希望它能在 中发挥作用beamer
。我目前的结果是这样的:
请注意]
未包含标签。
编辑2
这漏洞在最新版本中已经得到解决beamer
。
答案1
将引用分组...
\documentclass{article}
\begin{document}
\begin{itemize}
\item[{[GMR85]}] ...
\end{itemize}
\end{document}
Beamer 包让事情变得稍微困难一些。
\documentclass{beamer}
\begin{document}
\def\braces#1{[#1]}
\begin{frame}{frame title}
\begin{itemize}
\item[\braces{GMR95}] ...
\end{itemize}
\end{frame}
\end{document}
这对我来说很好。
答案2
根据 Charles Stewart 的评论和 Matten 的回答,我进行了以下比较。我建议遵循 Stewart 的建议。如果我们坚持使用 itemize 环境而不是 description,项目符号项将扩展到左侧并越过左边距。
\documentclass[dvipsnames]{article}
\usepackage{xcolor}
\usepackage[showframe=true,margin=30mm]{geometry}
\usepackage{showexpl}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\SX@codeInput}{xleftmargin=0pt,xrightmargin=0pt}{}
{\typeout{***Successfully patched \protect\SX@codeInput***}}
{\typeout{***ERROR! Failed to patch \protect\SX@codeInput***}}
\makeatother
\lstset{%
literate={ï}{}0
{»}{}0
{¿}{}0,
breaklines=true,
breakindent=0pt,
basicstyle=\ttfamily\scriptsize,
keywordstyle=\color{blue}\sffamily\bfseries,
commentstyle=\color{Green}\itshape,
stringstyle=\rmfamily,
showstringspaces=false,
backgroundcolor=\color{Yellow!30},
frame=single,
framerule=0.4pt,
rulecolor=\color{red},
framesep=3pt,
xleftmargin=3.4pt,
xrightmargin=3.4pt,
tabsize=2,%
explpreset={pos=b}%
}
\begin{document}
\begin{LTXexample}
\begin{description}
\item{[GMR85]} I am happy.
\item{[GMR86]} Are you happy?
\end{description}
\end{LTXexample}
\begin{LTXexample}
\begin{itemize}
\item[{[GMR85]}] I am happy.
\item[{[GMR86]}] Are you happy?
\end{itemize}
\end{LTXexample}
\end{document}