![使用 \par\xdef\tpd 时出错](https://linux22.com/image/387849/%E4%BD%BF%E7%94%A8%20%5Cpar%5Cxdef%5Ctpd%20%E6%97%B6%E5%87%BA%E9%94%99.png)
\par\xdef\tpd{\region\prevdepth}
为什么我会收到带有 的错误消息,但却没有收到带有 的错误消息\par\xdef\tpd{\the\prevdepth}
?
\documentclass{amsart}
\usepackage{mathtools}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\setlength{\oddsidemargin}{0.0in}
\setlength{\evensidemargin}{0.0in} \setlength{\textwidth}{6.1in}
\setlength{\topmargin}{0.0in} \setlength{\textheight}{9in}
\begin{document}
\noindent \begin{minipage}[t]{4.875in}
\noindent \textbf{1. }The following figure depicts three congruent semicircles bounded by another \\
semicircle; the diameters of the three smaller semicircles cover the diameter of \\
the bigger semicircle, and each of the three smaller semicircles is tangent to \\
two other semicircles at the endpoints of its diameter. \textit{A} is the area of the \\
region enclosed by the three smaller semicircles, and \textit{B} is the area of the \par\xdef\tpd{\region\prevdepth}
\end{minipage}
%
\hspace{-0.25cm}
%
\raisebox{0mm}[0mm][0mm]
{
\begin{tikzpicture}[baseline=(current bounding box.north west)]
\coordinate (O) at (0,0);
\draw[fill=blue!50] (-1.5,0) -- (1.5,0) arc (0:180:1.5) -- cycle;
%
\draw[fill=yellow] (-3/2,0) -- (-1/2,0) arc (0:180:1/2) -- cycle;
\draw[fill=yellow] (-1/2,0) -- (1/2,0) arc (0:180:1/2) -- cycle;
\draw[fill=yellow] (1/2,0) -- (3/2,0) arc (0:180:1/2) -- cycle;
\draw[fill] (O) circle (1.5pt);
\end{tikzpicture}
} \\
\prevdepth=\tpd
enclosed by the big semicircle but outside the three smaller semicircles. Compute the ratio of $A : B$.
\end{document}
答案1
\region
由于不是定义的命令,因此您会收到错误。minipage
带有该选项的At
具有非常大的深度,因此下一行将用\lineskip
胶水与其分开。如果我们测量最后一行的深度
minipage
,我们可以在开始下一个段落之前重新插入该深度,从而确保基线跳过的恒定。是什么
\tpd
?只是一个临时宏。您可以随意调用它\depthofthelastlineintheminipage
或任何您喜欢的名称,只要它不太可能成为常用命令即可。为什么
\xdef
?因为minipage
组成一个组,而简单的\def
宏不会使该组结束后仍存在。为什么?因为我们想使用定义时
\xdef\tpd{\the\prevdepth}
的实际值;与 相同,因此将被扩展。参见\prevdepth
\xdef
\global\edef
\the
\命令欲了解更多信息\the
。
答案2
您尚未\region
在文档中定义该宏,并且任何包含的软件包均未提供该宏。\xdef
定义
\xdef\tpd{\region\prevdepth}
\region
强制完全扩展其替换文本,其中需要的定义。如果\region
未定义,则会出现错误! Undefined control sequence.
。这与常规定义相反,\def
例如
\def\tpd{\region\prevdepth}
\tpd
只有在实际扩展时才需要知道替换文本中标记的定义。
阅读 TeXbook 中的第 20 章“定义(也称为宏)”以了解更多详细信息。