为什么以下“最小工作示例”有效
\documentclass[a4,german]{book}
\usepackage{framed}
\begin{document}
\newcommand{\myText}{Bliblibli!}
\begin{framed}
Blabla
\end{framed}
\myText
\end{document}
但是这里不是这样,在“框架”块内定义新命令时?
“最小非工作示例”:
\documentclass[a4,german]{book}
\usepackage{framed}
\begin{document}
\begin{framed}
Blabla \newcommand{\myText}{Bliblibli!}
\end{framed}
\myText
\end{document}
框架包是否根本不支持此功能,或者我做错了什么?
答案1
这里没有什么特别的,framed
你会看到同样的东西
\begin{empty}
Blabla \newcommand{\myText}{Bliblibli!}
\end{empty}
要不就
{
Blabla \newcommand{\myText}{Bliblibli!}
}
括号组或环境提供了限制所有非全局定义的范围。
答案2
TeX 旨在成为一种排版工具。这很好,除非你想在其中编写任何程序。这些所谓的范围,即单独的环境,如框架和基本上以某种方式包含的任何东西,都有自己的风格。
对于字体来说很好,因为你可以写some text {\itshape something in a different font} and with no extra command back to the old style
。
对于编程来说,这不太好
\def\mynumber{3} because
the number \mynumber
{\itshape might somehow be increased or changed \def\mynumer{6} to \mynumber}
and then changes back to \mynumber, even if you only wanted your font back.
给出输出
数字 3可能会以某种方式增加或更改为 6然后变回 3,即使您只想要恢复字体。
在手册中 TeX 编程笔记 由 Christian Feuersänger (附带 pgfplots) 撰写,他写了他如何摆弄关闭环境的命令来偷偷得出结果。