diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index 4860fa2..2bffffd 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -10631,7 +10631,7 @@ of the symbol being parsed. The original list read:
 \defun{aplTran}{aplTran}
 \calls{aplTran}{aplTran1}
 \calls{aplTran}{containsBang}
-\usesdollar{aplTran}{genno}
+\defsdollar{aplTran}{genno}
 \usesdollar{aplTran}{boot}
 \begin{chunk}{defun aplTran}
 (defun |aplTran| (x)
@@ -14946,7 +14946,7 @@ implicit stacking to retain the information.
 \calls{compOrCroak1}{say}
 \calls{compOrCroak1}{displayComp}
 \calls{compOrCroak1}{userError}
-\usesdollar{compOrCroak1}{compStack}
+\defsdollar{compOrCroak1}{compStack}
 \usesdollar{compOrCroak1}{compErrorMessageStack}
 \usesdollar{compOrCroak1}{level}
 \usesdollar{compOrCroak1}{s}
@@ -14983,7 +14983,7 @@ implicit stacking to retain the information.
 
 \defun{comp}{comp}
 \calls{comp}{compNoStacking}
-\usesdollar{comp}{compStack}
+\refsdollar{comp}{compStack}
 \usesdollar{comp}{exitModeStack}
 \begin{chunk}{defun comp}
 (defun |comp| (form mode env)
@@ -15002,7 +15002,7 @@ This hack says that when something is undeclared, \$ is
 preferred to the underlying representation -- RDJ 9/12/83
 \calls{compNoStacking}{comp2}
 \calls{compNoStacking}{compNoStacking1}
-\usesdollar{compNoStacking}{compStack}
+\refsdollar{compNoStacking}{compStack}
 \usesdollar{compNoStacking}{Representation}
 \usesdollar{compNoStacking}{EmptyMode}
 \begin{chunk}{defun compNoStacking}
@@ -15020,7 +15020,7 @@ preferred to the underlying representation -- RDJ 9/12/83
 \defun{compNoStacking1}{compNoStacking1}
 \calls{compNoStacking1}{get}
 \calls{compNoStacking1}{comp2}
-\usesdollar{compNoStacking1}{compStack}
+\refsdollar{compNoStacking1}{compStack}
 \begin{chunk}{defun compNoStacking1}
 (defun |compNoStacking1| (form mode env |$compStack|)
  (declare (special |$compStack|))
@@ -16069,7 +16069,7 @@ preferred to the underlying representation -- RDJ 9/12/83
 
 \defun{hasFormalMapVariable}{hasFormalMapVariable}
 \seebook{hasFormalMapVariable}{ScanOrPairVec}{5}
-\usesdollar{hasFormalMapVariable}{formalMapVariables}
+\defsdollar{hasFormalMapVariable}{formalMapVariables}
 \begin{chunk}{defun hasFormalMapVariable}
 (defun |hasFormalMapVariable| (x vl)
  (let (|$formalMapVariables|)
diff --git a/changelog b/changelog
index 6f33e1d..f989837 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+20110706 tpd src/axiom-website/patches.html 20110706.01.tpd.patch
+20110706 tpd src/scripts/tex/axiom.sty define \defsdollar and \refsdollar
+20110706 tpd src/doc/axiom.sty define \defsdollar and \refsdollar
+20110706 tpd books/bookvol9 use \defsdollar and \refsdollar
 20110705 tpd src/axiom-website/patches.html 20110705.01.tpd.patch
 20110705 tpd books/bookvol5 remove dewriteify,s inner function
 20110605 tpd src/axiom-website/patches.html 20110605.01.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 6b34753..d27531f 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3526,5 +3526,7 @@ books/bookvol9 treeshake compiler<br/>
 Makefile.pamphlet add BUILD=full / BUILD=fast<br/>
 <a href="patches/20110705.01.tpd.patch">20110705.01.tpd.patch</a>
 books/bookvol5 remove dewriteify,s inner function<br/>
+<a href="patches/20110706.01.tpd.patch">20110706.01.tpd.patch</a>
+books/bookvol9 use \defsdollar and \refsdollar<br/>
  </body>
 </html>
diff --git a/src/doc/axiom.sty.pamphlet b/src/doc/axiom.sty.pamphlet
index a8e4181..c309b43 100644
--- a/src/doc/axiom.sty.pamphlet
+++ b/src/doc/axiom.sty.pamphlet
@@ -278,6 +278,32 @@
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%
+%% defines a special variable definition that only occurs within the
+%% scope of the lifetime of a function but not defined at the top level.
+%% if the special variable starts with dollar we need to fake it
+%%
+<<axiom.sty>>=
+\newcommand{\defsdollar}[2]{% e.g. \defsdollar{thisfunc}{specialvar}
+[\$#2 p\pageref{#2}]\\%
+\index{\${#2}!{local def #1}}%
+\index{#1!{local def \${#2}}}}
+@
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% uses a special variable definition that only occurs within the
+%% scope of the lifetime of a function but not defined at the top level.
+%% if the special variable starts with dollar we need to fake it
+%%
+<<axiom.sty>>=
+\newcommand{\refsdollar}[2]{% e.g. \refsdollar{thisfunc}{specialvar}
+[\$#2 p\pageref{#2}]\\%
+\index{\${#2}!{local ref #1}}%
+\index{#1!{local ref \${#2}}}}
+@
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
 %% uses marks a special variable use
 %% if the special variable starts with dollar we need to fake it
 %%
diff --git a/src/scripts/tex/axiom.sty b/src/scripts/tex/axiom.sty
index a90fae2..99c2c7c 100644
--- a/src/scripts/tex/axiom.sty
+++ b/src/scripts/tex/axiom.sty
@@ -103,6 +103,14 @@
 [\$#2 p\pageref{#2}]\\%
 \index{\${#2}!{usedby #1}}%
 \index{#1!{uses \${#2}}}}
+\newcommand{\defsdollar}[2]{% e.g. \defsdollar{thisfunc}{specialvar}
+[\$#2 p\pageref{#2}]\\%
+\index{\${#2}!{local def #1}}%
+\index{#1!{local def \${#2}}}}
+\newcommand{\refsdollar}[2]{% e.g. \refsdollar{thisfunc}{specialvar}
+[\$#2 p\pageref{#2}]\\%
+\index{\${#2}!{local ref #1}}%
+\index{#1!{local ref \${#2}}}}
 \newcommand{\usesstruct}[2]{% e.g. \usesstruct{thisfunc}{structname}
 [\$#2 p\pageref{#2}]\\%
 \index{\${#2}!{usedby #1}}%
