Index: pathauto.inc
===================================================================
--- pathauto.inc	(revision 3023)
+++ pathauto.inc	(working copy)
@@ -567,6 +567,13 @@
     if (!preg_match('/(path|alias|url|url-brief)(-raw)?$/', $token)) {
       $replacements[$token] = pathauto_cleanstring($value);
     }
+    elseif (preg_match('/(bookpath|menupath)(-raw)?$/', $token)) {
+      // A few tokens violate the path/path-raw naming convention and should
+      // still have their segments cleaned using pathauto_cleanstring().
+      $segments = explode('/', $value);
+      $segments = array_map('pathauto_cleanstring', $segments);
+      $replacements[$token] = implode('/', $segments);
+    }
     else {
       $replacements[$token] = $value;
     }
