<?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="textswriterguideconditional_text2xml" indexer="include" status="PUBLISH">
         <title xml-lang="en-US" id="tit">Conditional Text for Page Counts</title>
         <filename>/text/swriter/guide/conditional_text2.xhp</filename>
      </topic>
   </meta>
   <body>
<bookmark xml-lang="en-US" branch="index" id="bm_id3153108"><bookmark_value>page counts</bookmark_value>
      <bookmark_value>conditional text;page counts</bookmark_value>
</bookmark>
<paragraph xml-lang="en-US" id="hd_id3153108" role="heading" level="1" l10n="U" oldref="1"><variable id="conditional_text2"><link href="text/swriter/guide/conditional_text2.xhp" name="Conditional Text for Page Counts">Conditional Text for Page Counts</link>
</variable></paragraph>
      <paragraph xml-lang="en-US" id="par_id3156228" role="paragraph" l10n="U" oldref="3">You can create a conditional text field that displays the word "pages" instead of "page" in conjunction with a page count field if your document contains more than one page.</paragraph>
      <list type="ordered">
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3156257" role="listitem" l10n="U" oldref="4">Place the cursor in your document where you want to insert the page count.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3150513" role="listitem" l10n="U" oldref="5">Choose <item type="menuitem">Insert - Fields - Page Count</item>, and then enter a space.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3150537" role="listitem" l10n="U" oldref="6">Choose <item type="menuitem">Insert - Fields - Other</item>, and then click the <item type="menuitem">Functions</item> tab.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3153166" role="listitem" l10n="U" oldref="9">Click "Conditional text" in the <item type="menuitem">Type</item> list.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3145256" role="listitem" l10n="U" oldref="7">Type <item type="literal">Page &gt; 1</item> in the <item type="menuitem">Condition</item> box.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3145280" role="listitem" l10n="U" oldref="10">Type <item type="literal">Pages</item> in the <item type="menuitem">Then</item> box.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3145305" role="listitem" l10n="U" oldref="11">Type <item type="literal">Page</item> in the <item type="menuitem">Else</item> box.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3155535" role="listitem" l10n="U" oldref="8">Click <emph>Insert</emph>, and then click <emph>Close</emph>.</paragraph>
         </listitem>
      </list>
      <embed href="text/shared/00/00000004.xhp#related"/>
      <embed href="text/swriter/guide/conditional_text.xhp#conditional_text"/>
      <embed href="text/swriter/01/04090200.xhp#defining_conditions"/>
      <embed href="text/swriter/guide/fields.xhp#fields"/>
   </body>
</helpdocument>