diff --git a/latex.el b/latex.el
index db9b459..58b9016 100644
--- a/latex.el
+++ b/latex.el
@@ -490,10 +490,18 @@ The behaviour of this hook is controlled by variable `LaTeX-section-label'."
   :group 'LaTeX-macro)
 
 (defcustom LaTeX-default-environment "itemize"
-  "*The default environment when creating new ones with `LaTeX-environment'."
+  "*The default environment when creating new ones with `LaTeX-environment'.
+It is overridden by `LaTeX-outermost-environment' when it is
+non-nil and the current environment is `document'."
   :group 'LaTeX-environment
   :type 'string)
- (make-variable-buffer-local 'LaTeX-default-environment)
+(make-variable-buffer-local 'LaTeX-default-environment)
+
+(defvar LaTeX-outermost-environment nil
+  "The default environment when creating new ones with
+`LaTeX-environment' and the current one is `document'.  This
+variable overrides `LaTeX-default-environment'.")
+(make-variable-buffer-local 'LaTeX-outermost-environment)
 
 (defvar LaTeX-environment-history nil)
 
@@ -520,20 +528,19 @@ It may be customized with the following variables:
 `LaTeX-default-position'          Position for array and tabular."
 
   (interactive "*P")
-  (let ((environment (completing-read (concat "Environment type: (default "
-					       (if (TeX-near-bobp)
-						   "document"
-						 LaTeX-default-environment)
-					       ") ")
-				      (LaTeX-environment-list)
-				      nil nil nil
-				      'LaTeX-environment-history)))
+  (let* ((default (cond
+		   ((TeX-near-bobp) "document")
+		   ((and LaTeX-outermost-environment
+			 (string-equal (LaTeX-current-environment) "document"))
+		    LaTeX-outermost-environment)
+		   (t LaTeX-default-environment)))
+    (environment (completing-read (concat "Environment type: (default "
+					  default ") ")
+				  (LaTeX-environment-list) nil nil nil
+				  'LaTeX-environment-history)))
     ;; Get default
-    (cond ((and (zerop (length environment))
-		(TeX-near-bobp))
-	   (setq environment "document"))
-	  ((zerop (length environment))
-	   (setq environment LaTeX-default-environment))
+    (cond ((zerop (length environment))
+	   (setq environment default))
 	  (t
 	   (setq LaTeX-default-environment environment)))
 
diff --git a/style/beamer.el b/style/beamer.el
index d41c553..cf5fcfc 100644
--- a/style/beamer.el
+++ b/style/beamer.el
@@ -74,7 +74,7 @@
 		   ("enumerate" . LaTeX-item-beamer))
 		 LaTeX-item-list))
 
-   (setq LaTeX-default-environment "frame")
+   (setq LaTeX-outermost-environment "frame")
 
    (LaTeX-paragraph-commands-add-locally "frametitle")
 
diff --git a/style/letter.el b/style/letter.el
index de7abba..5068b56 100644
--- a/style/letter.el
+++ b/style/letter.el
@@ -42,7 +42,7 @@
    (LaTeX-add-environments
     '("letter" LaTeX-env-recipient))
    (LaTeX-add-pagestyles "headings" "firstpage")
-   (setq LaTeX-default-environment "letter")
+   (setq LaTeX-outermost-environment "letter")
    (TeX-add-symbols
     '("name" "Sender: ")
     '("address" "Sender address: ")
diff --git a/style/slides.el b/style/slides.el
index e873a6a..8063544 100644
--- a/style/slides.el
+++ b/style/slides.el
@@ -45,6 +45,6 @@
 			   "note")
    (LaTeX-add-counters "minutes" "seconds")
    (LaTeX-add-pagestyles "headings" "slide" "overlay" "note")
-   (setq LaTeX-default-environment "slide")))
+   (setq LaTeX-outermost-environment "slide")))
 
 ;;; slides.el ends here
