<?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="textswriter0105150200xml" indexer="include">
         <title xml-lang="en-US" id="tit">Apply</title>
         <filename>/text/swriter/01/05150200.xhp</filename>
      </topic>
   </meta>
   <body>
      <section id="dokument">
<bookmark xml-lang="en-US" branch="hid/.uno:AutoFormatApply" id="bm_id9349581" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/.uno:AutoFormatApply" id="bm_id3154656" localize="false"/>
<bookmark xml-lang="en-US" branch="index" id="bm_id5028839"><bookmark_value>automatic heading formatting</bookmark_value>
</bookmark>
<bookmark xml-lang="en-US" branch="index" id="bm_id"><bookmark_value>AutoCorrect function;headings</bookmark_value>
         <bookmark_value>headings;automatic</bookmark_value>
         <bookmark_value>separator lines;AutoCorrect function</bookmark_value>
</bookmark><comment>MW replaced AutoFormat by AutoCorrect (2 times)</comment>
<paragraph xml-lang="en-US" id="hd_id3155962" role="heading" level="1" l10n="U" oldref="1"><link href="text/swriter/01/05150200.xhp" name="Apply">Apply</link></paragraph>
         <paragraph xml-lang="en-US" id="par_id3149871" role="paragraph" l10n="CHG" oldref="2"><ahelp hid=".uno:AutoFormatApply">Automatically formats the file according to the options that you set under <emph>Tools - AutoCorrect</emph>
            <emph>Options</emph>.</ahelp></paragraph>
      </section>
      <section id="howtoget">
         <embed href="text/swriter/00/00000405.xhp#autoformat2"/>
      </section>
      <embed href="text/swriter/guide/auto_off.xhp#auto_off"/>
      <paragraph xml-lang="en-US" id="par_id3147404" role="paragraph" l10n="U" oldref="15">When you apply automatic formats, the following rules apply:</paragraph>
      <paragraph xml-lang="en-US" id="hd_id3155625" role="heading" level="2" l10n="U" oldref="3">AutoCorrect for Headings</paragraph>
      <paragraph xml-lang="en-US" id="par_id3154505" role="paragraph" l10n="U" oldref="4">A paragraph is formatted as a heading when the following conditions are met:</paragraph>
      <list type="ordered">
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3145241" role="listitem" l10n="U" oldref="19">paragraph begins with a capital letter</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3148386" role="listitem" l10n="U" oldref="20">paragraph does not end with a punctuation mark</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3150564" role="listitem" l10n="U" oldref="21">empty paragraph above and below the paragraph</paragraph>
         </listitem>
      </list>
      <paragraph xml-lang="en-US" id="hd_id3149030" role="heading" level="2" l10n="U" oldref="8">AutoCorrect for Bullets / Numbering</paragraph>
      <paragraph xml-lang="en-US" id="par_id3156316" role="paragraph" l10n="U" oldref="9">To create a bulleted list, type a hyphen (-), star (*), or plus sign (+), followed by a space or tab at the beginning of a paragraph.</paragraph>
      <paragraph xml-lang="en-US" id="par_id3150763" role="paragraph" l10n="U" oldref="18">To create a numbered list, type a number followed by a period (.), followed by a space or tab at the beginning of a paragraph. </paragraph>
      <paragraph xml-lang="en-US" id="par_id3147507" role="note" l10n="U" oldref="16">Automatic numbering is only applied to paragraphs formatted with the <emph>Standard</emph>, <emph>Text body</emph> or <emph>Text body indent</emph> paragraph styles.</paragraph>
      <paragraph xml-lang="en-US" id="hd_id3152941" role="heading" level="2" l10n="U"
                 oldref="10">AutoCorrect for Separator Lines</paragraph>
      <paragraph xml-lang="en-US" id="par_id3154105" role="paragraph" l10n="U" oldref="11">If you type three or more hyphens (---), underscores (___) or equal signs (===) on line and then press Enter, the paragraph is replaced by a horizontal line as wide as the page. The line is actually the <link href="text/shared/01/05030500.xhp" name="lower border">lower border</link> of the preceding paragraph. The following rules apply:</paragraph>
      <list type="ordered">
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3153530" role="listitem" l10n="U" oldref="12">Three hyphens (-) yield a single line (0.05 pt thick, gap 0.75 mm).</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3154477" role="listitem" l10n="U" oldref="13">Three underscore (_) yield a single line (1 pt thick, gap 0.75 mm).</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3150982" role="listitem" l10n="U" oldref="14">Three equal signs (=) yield a double line (1.10 pt thick, gap 0.75 mm).</paragraph>
         </listitem>
      </list>
   </body>
</helpdocument>