- Paragraph & par = *it;
- Layout_ptr const & layout = par.layout();
- Counters & counters = textclass.counters();
-
- if (it.pit() == 0) {
- par.params().appendix(par.params().startOfAppendix());
- } else {
- par.params().appendix(it.plist()[it.pit() - 1].params().appendix());
- if (!par.params().appendix() &&
- par.params().startOfAppendix()) {
- par.params().appendix(true);
- textclass.counters().reset();
- }
- }
-
- // Compute the item depth of the paragraph
- par.itemdepth = getItemDepth(it);
-
- if (layout->margintype == MARGIN_MANUAL) {
- if (par.params().labelWidthString().empty())
- par.params().labelWidthString(par.translateIfPossible(layout->labelstring(), buf.params()));
- } else {
- par.params().labelWidthString(docstring());
- }
-
- // Optimisation: setLabel() can be called for each for each
- // paragraph of the document. So we make the string static to
- // avoid the repeated instanciation.
- static docstring itemlabel;
-
- // is it a layout that has an automatic label?
- if (layout->labeltype == LABEL_COUNTER) {
- if (layout->toclevel <= buf.params().secnumdepth
- && (layout->latextype != LATEX_ENVIRONMENT
- || isFirstInSequence(it.pit(), it.plist()))) {
- counters.step(layout->counter);
- par.params().labelString(
- par.expandLabel(layout, buf.params()));
- } else
- par.params().labelString(docstring());
-
- } else if (layout->labeltype == LABEL_ITEMIZE) {
- // At some point of time we should do something more
- // clever here, like:
- // par.params().labelString(
- // buf.params().user_defined_bullet(par.itemdepth).getText());
- // for now, use a simple hardcoded label
- switch (par.itemdepth) {
- case 0:
- itemlabel = char_type(0x2022);
- break;
- case 1:
- itemlabel = char_type(0x2013);
- break;
- case 2:
- itemlabel = char_type(0x2217);
- break;
- case 3:
- itemlabel = char_type(0x2219); // or 0x00b7
- break;