<!DOCTYPE html>
<html><head>
<title>Configuration Guide: Options in OpenOffice.org (draft)</title>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>

<h2>Configuration Guide: Options in OpenOffice.org</h2>
<p><i>2002 April 18</i></p>
<p>Robert Black Eagle</p>
<br>
<h3>About this Guide</h3>
<blockquote> 
  <p>The following is a draft; it will be updated over the next couple of weeks. 
    If you want to suggest changes, or add material, please file an issue via 
    <a href="http://qa.openoffice.org/issue_handling/project_issues.html">Issue Tracker</a> and assign it to default owner 
    of the "www" module.</p>
</blockquote>
<br>
<h3>Select Tools --&gt; Options to set general options</h3>
<blockquote> 
  <p><b>OpenOffice.org:</b> is the first category.</p>
  <p><b>User Data</b>: Put in what information you want available for document 
    info and in documents. </p>
</blockquote>
<h4>General </h4>
<blockquote>
  <p>Year (Two Digits) -- unless you have special needs, accept the default. Help 
    Agent/Display duration: This is the OOo version of the dancing paperclip used 
    by MicroSoft Word, only you can set how long it stays up. The default is 30 
    seconds. I dropped it to 15, since it's irritating for me if it's up longer.</p>
</blockquote>
<h3><br>
  Memory </h3>
<blockquote> 
  <p><b>Number of steps undo</b>. How many &quot;undo's&quot; you can do in a 
    row (going back and back and ...). The default is 20 and is plenty for most 
    uses. </p>
</blockquote>
<blockquote> 
  <p><b>Graphics cache. </b>The amount of memory eaten up by the graphics in your 
    document. The default is 9MB. Adjust upward if it locks up when you add "too 
    many graphics" or they are too large. In some cases, you can use another program 
    to shrink the graphic to the approximate size you will use in the document 
    which will save memory in OpenOffice.org.</p>
<p> <b>Memory per object. </b>The amount of memory eaten up by a single object (graphic or other object). The default is 2.4MB which is more than enough for most uses. Again, if you have memory problems (lock up), you may want to shrink the object before loading it, or, if that isn't possible, iincrease the memory available for objects here</p>
  <p><b>Remove from memory after. </b>The time that memory is held before being 
    cleared so something else can fit in -- should not affect the document, itself, 
    but will affect objects, graphics and other non-text information not currently 
    displayed on the screen. The default is listed as 00:10, meaning 0 hours and 
    10 minutes. Adjust so it is comfortable for your usage. In my case, it is 
    not critical as the load into memory is fast enough that it scarcely affects 
    my usage. </p>
  <p><b>Cache for inserted objects. </b>The number of objects that can be cached 
    in memory. The default is 20. Adjust upward only if you have lots of inserted 
    objects and graphics.</p>
</blockquote>
<br>
<h3>View</h3>
<blockquote> 
  <p><b>Look and Feel. </b>(changes colors, mainly, but select something you're 
    comfortable with using -- I find standard just fine). Scale font anti-aliasing: 
    The minimum size before a font is anti-aliased (smoothed). The default is 
    8. My computer makes fonts fuzzy if it is less than 10, so I raised my default.</p>
  <p><b>Printer. </b>Select whether you will normally "print" to a file or to 
    your printer. Select the warnings you want to see on a regular basis. If in 
    doubt, select all of them and then come back here and delete those that just 
    irritate you.</p>
  <p><b>External Programs. </b>I strongly suggest you accept the defaults unless 
    you really know your system backwards and forwards, in which case, why are 
    you reading this?</p>
  <p><b>Paths. </b>The only one you're likely to need to change is the path to 
    your main document subdirectory. If you use "My Document", you may still need 
    to "Edit" this entry to point to the right directory.</p>
  <p><b>Colors. </b>This changes the custom pallette available to you. Unless 
    you really know what you're doing, don't mess with this one.</p>
  <p><b>Font Replacement. </b>Same as for Colors.</p>
  <p><b>Security. </b>If security is a concern, make certain "no applets" is turned 
    on.</p>
</blockquote>
<br>
<h3>Load/Save</h3>
<blockquote> 
  <p><b> General</b></p>
  <blockquote> 
    <p> <b>Load.</b> (allows settings to be the same from document to document 
      -- not the same as templates, so make sure it is set. </p>
    <p><b>Edit document properties when saving. </b>This (allows you to choose 
      what comments and information about you and what you have done to this document 
      is saved with the document -- important for some people and completely irrelevant 
      for others.</p>
    <p><b>Autosave every</b>. The default is once an hour (60 minutes), which 
      is close to useless. I don't have an hour to redo if there is a power outage. 
      I changed mine to 10 minutes for normal usage and drop it to five if the 
      document I am working on is critical. If your memory is better than mine, 
      you can leave it at 60 minutes and save manually every few minutes. </p>
    <p><b>Save optimization for XML format (no pretty printing). </b>XML is the 
      native saved format. If you are printing from another program, you will 
      want this turned off. </p>
	<p><b>Save URLs relative to. </b>Look in the "Help" section for information on relative and absolute referencing with a document - -- it could be important and depends very much on how you work. </p>
    <p><b>Standard file format.</b> Think about the kind of file you will normally 
      be working on. For me, it is standard text. For some, it might be Presentation 
      or spreadsheet. Best to start out with what you'd normally use. </p>
    <p><b>Always save as. </b>What do you do? If you work a lot on web pages, 
      choose that format. If you trade documents with a Word user, choose that 
      format. Do you use Rich Text Format (RTF)? Then choose that.</p>
    <p><b>VBA Properties.</b> Unless you absolutely never and never will interchange 
      documents with a MS user, leave all of these checked.</p>
    <p><b>Microsoft Office.</b> Yes, you will likely need these. Better have them 
      than discover after hours of frustration that this is where you look to 
      have this capability.</p>
    <p><b>HTML Compatibility.</b> I don't often deal with web documents, so I 
      just leave these alone. If you do, you might check them all, just to make 
      sure you can find out what is going on in such a document, especially if 
      you're writing one.</p>
    <p><b>Language Settings Language.</b> I assume your computer is set for your 
      native or most frequently used language. If it is, leave "default" as the 
      setting. If not, pick the language you use most often. Same for currency. 
      My version does not include a Euro, but, if you get on the users list, you 
      can ask and get a simple fix. Default languages for documents: Western is 
      automatically selected (idea being that they all use modifications of the 
      Latin alphabet). You have to specially select Asian support. Note that these 
      have to be enabled on your system to work properly.</p>
    <p><b>Writing Aids.</b> This is where you can choose the kinds of dictionaries 
      you want to use (hint: use them all), and edit them if you think you may 
      have added an incorrect spelling. Be sure to check the options you want 
      to have checked (base it on what mistakes you make).</p>
    <p><b>Internet: (Obvious) Proxy.</b> If you have a proxy server (firewall), 
      check the appropriate settings. They will be the same you use to communicate 
      with the Internet with other programs. </p>
    <p><b>DNS server:</b> Most Internet Service Providers (ISP's) will use an 
      automatic connection. If you connect to a network where you work, you may 
      likely want manual connection -- enter the DNS entry you use to connect.</p>
    <p><b>Search.</b> This is where you select your default Internet search engine. 
      You will notice that all the options are included for each engine. Pick 
      one from the list -- you can always choose another manually.</p>
  </blockquote>
</blockquote>
<br>
<h3>Text Document</h3>
<blockquote> 
  <p><b>GeneralUpdate</b>: Update Links when loading refers to Master Documents 
    or documents with links to other documents, graphics or similar items. When 
    you load a document, if you want to see the bare document (a waste of time 
    with Master Documents, most of the time), then check "never." Otherwise, decide 
    if you want to make a choice when you load (you can use Navigator to load 
    only selected links), or load everything every time. Normally, you will want 
    to Automatically load fields and charts, but choose based on how you work. 
  </p>
  <p><b>Caption</b>: Lots of choices, especially if you want an identifying caption 
    on each page. I don't so I don't use these. The "..." at the right is where 
    you choose what kind of captions you might want to see. </p>
  <p><b>Measurement Units:</b> I use inches, but you can choose millemeters, picas 
    or something else. Set tab stop measurements at the far right. You may have 
    to experiment with this one until you get it where you want it. In normal 
    typing, 5 spaces is 0.50", if that helps. </p>
  <p><b>Compatibility:</b> I set these per document, and leave these unchecked, 
    but you can choose them for fixed settings in every document. Look at how 
    you work to decide. If in doubt, check them and, if you don't like the look, 
    uncheck them.</p>
  <p><b>View.</b> I like to see what I am doing, so I check everything except 
    Large Handles, Vertical Ruler and Smooth Scroll. Get rid of anything you really 
    don't care to see (just because you can see them does NOT mean they will print 
    -- that is something you can choose in the document).</p>
</blockquote>
<br>
<h3><b>Formatting Aids</b></h3>
<blockquote> 
  <p><b>Display of.</b>This will show, on screen, such things as Paragraph marks, 
    raised dots for spaces and so on -- way more than you'll likely want to see 
    (and you can choose to see them within a document). If you always want to 
    see something, select it here. Otherwise, only select it from the toolbar 
    when you need to in a document. I choose custom hyphens and nothing else. 
  </p>
  <p><b>Direct cursor.</b> A direct cursor allows you to put your mouse cursor 
    somewhere and click and the cursor goes there. If it's after the end of the 
    last entry, spaces and paragraph markers are entered up to the cursor position. 
    This is a default selection that can be changed on the fly. I don't have it 
    and select it on those rare occasions when I need it. </p>
  <p><b>Insert.</b> Sometimes programs will replace tabs with spaces, so I don't 
    choose these automatic inserts except the first -- paragraph alignment. This 
    depends very much on how you work and gives the "fill in" for the direct cursor 
    when clicking beyond the end of the document. I leave color alone and enable 
    the cursor in protected areas. I won't tell you how frustrated I was about 
    one document where I could not edit within a text box because it was protected 
    and I couldn't figure out what was wrong.</p>
  <p><b>Grid.</b> I don't use this, but sometimes it is very helpful to see a 
    grid and to have characters and drawing objects fit flush with a grid position. 
    You can define the grid any way you want. If you're not familiar with them, 
    try them on a document or two (make them visible) and see how they might be 
    of help.</p>
  <p><b>Basic Fonts (Western).</b> Select the fonts you want as defaults. I have 
    no idea what Current document only means as it is not defined anywhere.</p>
  <p><b>Print.</b> What do you want to print when you print a document, which 
    pages and how do you want them printed (reversed means last page first). Select 
    "brochure" only if that is the main thing you are working on for a time -- 
    otherwise that is probably not what you want. Decide if you want notes printed 
    (you can add notes to your document at any time or any point -- but you may 
    or may not want them printed. I normally just want to see them on screen). 
    These are NOT footnotes, which print like regular text (only you can have 
    different formatting).</p>
  <p><b>Table.</b> If you are going to print tables, leave the default settings 
    alone, at least at first. See what settings you have to change to get them 
    right, then transfer them here as normal defaults. "Do not split" is very 
    useful for large tables, especially if you add columns or rows and mess up. 
    It is really a mess to go looking for part of a table that is mostly out of 
    reach because it is split up. "Behavior or rows/columns" is really self-explanatory. 
    Unless you want to have specialized treatment of numbers, leave all the Input 
    in tables selections alone.</p>
  <p><b>Changes.</b> If you are making changes (especially for others to review), 
    you want the original language to remain visible so everyone knows what was 
    done. You choose this in the document, but here you choose how you want the 
    changes to look. Pay close attention to "Lines changed" as this is the easiest 
    clue to the changes when reviewing someone else's changes. Be sure where you 
    want them marked -- where they are expected varies from company to company.</p>
</blockquote>
<br>
<h3>HTML Document (This is the same as for Text Document except where indicated 
  below) </h3>
<blockquote> 
  <p><b>Source.</b> These are color clues and should be easy for you to distinguish 
    on your monitor. Background: Most people want a uniform background on their 
    web pages, and this is where you can set the background color. Other effects 
    have to be set elsewhere.</p>
</blockquote>
<br>
<h3>Spreadsheet</h3>
<blockquote> 
  <h4><b>General</b></h4>
  <blockquote> 
    <p> <b>Metrics.</b> What measurements are you comfortable with? </p>
    <p><b>Updating.</b> Same as for text documents -- loading links can sometimes 
      take a lot of time. </p>
    <p><b>Input Settings</b>. This is so personal that I hardly know how to suggest. 
      Play with the default settings. If something irritates you (such as "How 
      the @#$!! do I edit the entry"), then come back here and change it.</p>
  </blockquote>
  <p><b>View</b> </p>
  <blockquote> 
    <p><b>Visual Aids. </b>You want grids and page breaks -- I promise you. Later, 
      you may want to eliminate them, but, if you're not sure, start with them. 
      You can hide them if you wish, but they're a handy default. "Guides while 
      moving" is amazingly handy, as well -- it lets you know where things will 
      actually go. Objects: You will want to see them -- especially at first. 
    </p>
    <p><b>Display.</b> Everything you see checked should stay checked until you've 
      worked with spreadsheets for a while -- then you can come back and change 
      some settings. (For example, "Outline symbols" were useful for a while, 
      but later just got irritating for me, so I unchecked them, again.)</p>
  </blockquote>
  <h4><b>Calculate</b> </h4>
  <blockquote> 
    <p><b>Iterative references. </b>Iterations is needed for certain recursive 
      calculations (if you don't know what that is, you don't need it). My practice 
      is to set a number at 50, run the iterations, note the output, run it again, 
      check it and run it a final time. This lets me know if the formula is unstable 
      or too slowly converging (this is for testing the formula). Then I can set 
      the iterations at a reasonable level for the work I am doing (heavy statistical). 
      I check all the items under Iterative references except "Precision as shown" 
      as I normally use two places (five for some functions), but want maximum 
      precision in each calculation. "Precision as shown" introduces some divergent 
      errors -- again, if you don't know what I am talking about, you can't have 
      any. On the right -- stick to the default date unless it produces errors, 
      then try each of the others until you get correct dates. On some systems, 
      you may need one of the other two. If most calculations will be monetary 
      amounts, select two decimal places -- you can easily change it for any range 
      of cells.</p>
  </blockquote>
  <p><b>Sort Lists</b>. Add any special lists you may have that don't reduce to 
    alphabetical order.</p>
  <p><b>Changes</b>. "By author" lets you choose -- you CAN choose an automatic 
    default color for each type of change, however.</p>
  <p><b>Grids.</b> If you do nothing else, synchronize axes. However, for some 
    applications, this is NOT a good thing. Unselect it if you do not want your 
    grids to be so rigid.</p>
  <p><b>Print</b>. Remember, some uses will often have blank sheets as part of 
    the output and sometimes you will want to print only the sheets you have selected 
    and not the entire document.</p>
  <p><b>Presentation</b>. The automatic defaults are pretty good. I have only 
    a few comments on these:</p>
  <p><b>General.</b> Pay attention to the Unit of Measurement and tab stops. Note 
    how you do your Presentations normally -- do you start with the current page 
    or always with page one?</p>
  <p><b>View.</b> Look at Alternative display. Do you use any of these features? 
    If not or if only rarely, leave them unselected. If you don't know what a 
    Bezier editor is, don't select it except to experiment.</p>
  <p><b>Grids.</b> You really, REALLY want snap lines instead of a grid for most 
    Presentations -- again, what do YOU do?</p>
  <p><b>Print</b>. The defaults are good, but think about your usual practice.</p>
  <p><b>Drawing.</b> (Same suggestions as for Presentation except that grid lines 
    may be more useful here than in a Presentation).</p>
  <p><b>Formula.</b> Defaults are generally good, but consider "fit to page" and 
    "scaling" if they come out looking poorly on a page.</p>
  <p><b>Chart.</b> All you can pick here are default colors.</p>
  <p><b>Data Source.</b> Don't mess with this unless you REALLY know what you 
    are doing.</p>
  <p>Play around with things awhile before using "Configure." This is unique for 
    each kind of document, spreadsheet and so on. This is where you would set 
    the defaults for a particular document or for general usage -- such as key 
    shortcuts and so on. Lots of choices and very much a matter of taste.</p>
<p><b>Note</b>. When you've finished customizing the Options, it is always helpful to shut down the program and restart it just in case your machine does something unpleasant. That way, you're sure to have the settings the way you want them.</p>

</blockquote>
<br>
<h3>One final suggestion</h3>
<blockquote> 
  <p> Learn to love the Help document. You can have it in a separate screen and 
    get to it with Alt-Tab any time. At the left is an index you can use to find 
    what you want. It is your friend. Keep it around a lot until you think you 
    don't need it any more -- but never forget that it is there. It answers lots 
    of questions to keep you from asking others for help that is at your fingertips.</p>
</blockquote>
</body>
</html>

