Contamos con tu apoyo para extender nuestros posts con relación a las ciencias de la computación.
Solución:
Aquí hay una versión semiautomática, donde debe agregar el sufijo a mano.
documentclassarticle
makeatletter
newcommandnumpar[1][]%
paraddvspacemedskipamount%
ifrelaxdetokenize#1relax
refstepcounternumpar%
defthisnumparthenumpar%
else
edef@currentlabelthenumparnoexpand~#1%
defthisnumparthenumpar~#1%
fi
everyparthisnumpar.hspaceparindenteverypar%
makeatother
newcounternumpar
begindocument
numpar This is the first paragraph. Let's make it longer
so it wraps. Maybe this suffices, but just in case we
add some more words.
numpar[bis]label1bis This has been added. Let's make it longer
so it wraps. Maybe this suffices, but just in case we
add some more words.
numpar[ter] This also has been added and refers to the previous one~ref1bis.
Let's make it longer so it wraps. Maybe this suffices, but just in case we
add some more words.
numpar This is numbered normally and refers to the previous one~ref1bis.
Let's make it longer so it wraps. Maybe this suffices, but just in case we
add some more words.
enddocument
El truco con everypar
permite no preocuparse por los espacios después label
.
Solución original
Aquí hay una solución usando enumitem
y enumerate
Ambientes.
No estoy seguro de si es realmente lo que pidió, ya que mencionó una serie de secciones.
Sin embargo, con esta solución, todos sus elementos numerados regularmente deben estar en un (primer nivel) enumerate
entorno, y cuando necesite bis, ter, etc., puede utilizar un anidado enumerate
ambiente. Tenga en cuenta que el primeroitem
de este ambiente serán contados Bis, el segundo se numerará ter, etc.
documentclassarticle
usepackagexparse
usepackageenumitem
ExplSyntaxOn
seq_new:N bislist
seq_set_split:Nnn bislist ; bis;ter;quater;quinquies;sexies;septies;octies;novies;decies
NewDocumentCommand bisprint m
seq_item:Nn bislist #1
ExplSyntaxOff
setlist[enumerate,1]leftmargin=0pt,labelwidth=!,label=arabic*.,align=left
setlist[enumerate,2]leftmargin=0pt,labelwidth=!,label=arabicenumi bisprintarabicenumii.,align=left
begindocument
beginenumerate
item First item
item Second item
beginenumerate
item First bis item
item First ter item
endenumerate
endenumerate
enddocument
Lo que produce este tipo de resultados:
Quizás, otra opción para evitar conflictos con otros anidados. enumerate
entornos sería crear un bis
medio ambiente de esta manera:
documentclassarticle
usepackagexparse
usepackageenumitem
ExplSyntaxOn
seq_new:N bislist
seq_set_split:Nnn bislist ; bis;ter;quater;quinquies;sexies;septies;octies;novies;decies
NewDocumentCommand bisprint m
seq_item:Nn bislist #1
ExplSyntaxOff
setlist[enumerate,1]leftmargin=0pt,labelwidth=!,label=arabic*.,align=left
newlistbisenumerate1
setlist[bis]leftmargin=0pt,labelwidth=!,label=arabicenumi bisprintarabicbisi.,align=left
begindocument
beginenumerate
item First item
item Second item
beginbis
item First bis item
item First ter item
endbis
endenumerate
enddocument
Esto produce exactamente el mismo resultado que el código anterior.
Tenga en cuenta que si tiene 10 o más elementos en el bis
entorno, entonces la numeración fallará (esencialmente porque no tengo idea de lo que sigue a decies). Pero espero que su texto original no tenga que ir tan lejos 😉 (sin embargo, parece que ciertas leyes francesas usan decies, y tal vez las pocas siguientes …)
Editar: solución trabajando con section
Aquí hay una solución usando section
y section*
.
Precaución : al redefinir estos dos comandos, no podrá usarlos para nada más en el resto de su documento (creo que estaba al tanto de esto, pero por si acaso, ahora está claro).
La idea aquí es usar section
para comenzar una sección numerada regularmente, y section*
para Bis sección numerada.
documentclassarticle
usepackagexparse
usepackageenumitem
usepackage[explicit]titlesec
usepackagelipsum
ExplSyntaxOn
seq_new:N bislist
seq_set_split:Nnn bislist ; bis;ter;quater;quinquies;sexies;septies;octies;novies;decies
NewDocumentCommand bisprint m
seq_item:Nn bislist #1
ExplSyntaxOff
newcounterbis
stepcounterbis
titleformatsection[runin]normalfontarabicsection.0pt[setcounterbis1]
titleformatname=section,numberless[runin]normalfontarabicsection bisprintarabicbis.0pt[stepcounterbis]
titlespacingsectionparindentbaselineskipparindent
begindocument
section
lipsum[1]
section
lipsum[2]
section*
lipsum[3]
section*
lipsum[4]
section*
lipsum[5]
section
lipsum[6]
section
lipsum[7]
section*
lipsum[8]
enddocument
Si el formato no es exactamente el que deseaba, puede cambiar los parámetros de titleformat
y titlespacing
(por ejemplo, cambiando normalfont
a bfseries
producirá números en negrita).
Actualización: con la tabla de contenido
Aquí hay una última actualización con el section*
que aparece en la tabla de contenido (y esta vez usando book
clase de documento como deseaba y con el formato de título que estaba usando en su MWE).
documentclassbook
usepackagexparse
usepackageenumitem
usepackage[explicit]titlesec
usepackagelipsum
usepackagecalc
usepackagetotcount
ExplSyntaxOn
seq_new:N bislist
seq_set_split:Nnn bislist ; bis;ter;quater;quinquies;sexies;septies;octies;novies;decies
NewDocumentCommand bisprint m
seq_item:Nn bislist #1
ExplSyntaxOff
newtotcounterbismax
newcounterbis
stepcounterbis
setcounterbismax1
newcommandbisaddstepcounterbis setcounterbismaxminof4maxofthebismaxthebis-1
AtBeginDocumentnewlengthbislength
settowidthbislengthtextitbisprinttotvaluebismax
addtolengthbislength1.5em
titleformatsection[block]normalfontlargenormalfontfilcenterthesection. --- #10.5em[setcounterbis1]
renewcommandthesectionarabicsection
titleformatname=section,numberless[block]normalfontlargenormalfontfilcenterarabicsection textitbisprintarabicbis. --- #10.5em[ addcontentslinetocsectionprotectnumberlinearabicsection textitbisprintarabicbis#1 bisadd]
makeatletter
renewcommand*[email protected]@dottedtocline11.5embislength
makeatother
begindocument
tableofcontents
sectionFirst section header
lipsum[1]
sectionSecond section header
lipsum[2]
section*Third section header
lipsum[3]
section*Fourth section header
lipsum[4]
section*Fifth section header
lipsum[5]
section*Sixth section header
lipsum[6]
sectionSeventh section header
lipsum[7]
section*Eighth section header
lipsum[8]
enddocument
El espacio entre los números y los títulos de las secciones en la TdC ahora se calcula automáticamente para que sea suficiente para mostrar el “número bis” más largo (es decir, el espacio será más pequeño si solo tiene que imprimir bis o ter que si necesita imprimir quiquies). Puede ampliar o reducir este espacio cambiando el valor establecido actualmente en 1.5em
.
Si conservas alguna vacilación o disposición de ascender nuestro sección puedes añadir un paráfrasis y con deseo lo interpretaremos.