<?xml version="1.0" encoding="UTF-8"?>
<helpdocument version="1.0">
	
<!--***********************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 ***********************************************************-->


 
	
<meta>
      <topic id="textsharedguidenumbering_stopxml" indexer="include" status="PUBLISH">
         <title xml-lang="en-US" id="tit">Turning off Bullets and Numbering for Individual Paragraphs</title>
         <filename>/text/shared/guide/numbering_stop.xhp</filename>
      </topic>
   </meta>
   <body>
<bookmark xml-lang="en-US" branch="index" id="bm_id3154186"><bookmark_value>numbering; turning off</bookmark_value>
      <bookmark_value>bullets; turning off</bookmark_value>
      <bookmark_value>removing, see also deleting</bookmark_value>
      <bookmark_value>removing;bullets and numbering</bookmark_value>
      <bookmark_value>keyboard;removing numbering</bookmark_value>
</bookmark><comment>MW added "removing, see also deleting"</comment>
<paragraph xml-lang="en-US" id="hd_id3154186" role="heading" level="1" l10n="U"
                 oldref="10"><variable id="numbering_stop"><link href="text/shared/guide/numbering_stop.xhp" name="Turning off Bullets and Numbering for Individual Paragraphs">Turning off Bullets and Numbering for Individual Paragraphs</link>
</variable></paragraph>
<switch select="appl">
<case select="CALC"><comment>no bullets for Calc</comment>
<paragraph xml-lang="en-US" id="par_id0202200910470118" role="note" l10n="NEW">Bullets and Numbering of paragraphs is supported only in Writer, Impress and Draw.</paragraph>
</case>
<case select="MATH"><comment>no bullets for Math</comment><comment>don't care for Math by now. Issue 98726</comment>
</case>
<case select="WRITER">
<table id="tbl_id3155338">
         <tablerow>
            <tablecell>
               <paragraph xml-lang="en-US" id="par_id3154288" role="paragraph" l10n="E">
<image id="img_id3153527" src="res/commandimagelist/sc_removebullets.png" width="0.222in" height="0.222in"><alt xml-lang="en-US" id="alt_id3153527">Icon</alt>
	</image></paragraph>
               <paragraph xml-lang="en-US" id="par_id3150443" role="paragraph" l10n="E">
<image id="img_id3163802" src="res/commandimagelist/sc_defaultbullet.png" width="0.222in" height="0.222in"><alt xml-lang="en-US" id="alt_id3163802">Icon</alt>
	</image></paragraph>
            </tablecell>
            <tablecell>
               <paragraph xml-lang="en-US" id="par_id3147618" role="paragraph" l10n="U" oldref="11">For the current paragraph or selected paragraphs you can switch off the automatic numbering or listing. Click the <emph>Numbering Off</emph> icon in the <emph>Bullets and Numbering</emph> bar.</paragraph>
            </tablecell>
         </tablerow>
      </table>

</case>
<default><comment>Impress, Draw</comment>
<table id="tbl_id3159157">
         <tablerow>
            <tablecell>
               <paragraph xml-lang="en-US" id="par_id3155449" role="paragraph" l10n="E">
<image id="img_id3158432" src="res/commandimagelist/sc_defaultbullet.png" width="0.222in" height="0.222in"><alt xml-lang="en-US" id="alt_id3158432">Icon</alt>
	</image></paragraph>
            </tablecell>
            <tablecell>
               <paragraph xml-lang="en-US" id="par_id3144511" role="paragraph" l10n="CHG" oldref="31">If the cursor is located within a numbered or bulleted list, you can turn off automatic numbers or bullets for the current paragraph or selected paragraphs by clicking the <emph>Bullets On/Off </emph>icon on the <emph>Text Formatting</emph> bar.</paragraph>
            </tablecell>
         </tablerow>
      </table>

</default>
</switch>
<paragraph xml-lang="en-US" id="par_id3148946" role="paragraph" l10n="U" oldref="12"><switchinline select="appl"><caseinline select="WRITER">To remove numbering from a paragraph using the keyboard: 
</caseinline></switchinline></paragraph>
      <list type="unordered">
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3148663" role="listitem" l10n="U" oldref="13"><switchinline select="appl"><caseinline select="WRITER">Place the cursor at the beginning of a numbered paragraph and press the Backspace key. 
</caseinline></switchinline></paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3150543" role="listitem" l10n="U" oldref="14"><switchinline select="appl"><caseinline select="WRITER">The numbering of the paragraph disappears and is removed from the numbering sequence. Numbering resumes in the following paragraph. 
</caseinline></switchinline></paragraph>
         </listitem>
      </list>
      <paragraph xml-lang="en-US" id="par_id3154123" role="paragraph" l10n="U" oldref="15"><switchinline select="appl"><caseinline select="WRITER">If you press the Enter key in an empty numbered paragraph, the numbering stops. 
</caseinline></switchinline></paragraph>
      <section id="relatedtopics">
         <paragraph xml-lang="en-US" id="par_id3151043" role="paragraph" l10n="CHG" oldref="32"><link href="text/shared/01/06050000.xhp" name="Format - Bullets/Numbering">Format - Bullets and Numbering</link></paragraph>
         <embed href="text/swriter/guide/using_numbering.xhp#using_numbering"/>
         <embed href="text/swriter/guide/using_numbered_lists.xhp#using_numbered_lists"/>
         <embed href="text/swriter/guide/using_numbered_lists2.xhp#using_numbered_lists2"/>
         <embed href="text/swriter/guide/join_numbered_lists.xhp#join_numbered_lists"/>
         <embed href="text/swriter/guide/captions.xhp#captions"/>
         <embed href="text/swriter/guide/number_sequence.xhp#number_sequence"/>
      </section>
   </body>
</helpdocument>