Resume enumerate numbering in LaTeX

[english]It sounds simple: resume the numbering of items in an enumerate environment in LaTeX to have it continue numbering where the previous enumerate left off. This howto describes how to do it.

Assume we have the following code:
[/english]
[dutch]Het klinkt eenvoudig: de nummering van items in een enumerate omgeving hervatten in LaTeX, zodat deze verder gaat waar de vorige enumerate ophield. Deze howto beschrijft hoe dit te bereiken.

Veronderstel dat we de volgende code hebben:[/dutch]

\documentclass[a4paper]{article}
\begin{document}
  \section{My items}
    \begin{enumerate}
      \item First item
      \item Second item
    \end{enumerate}
  \section {Additional items}
    \begin{enumerate}
      \item Third item
      \item Fourth item
    \end{enumerate}
\end{document}

[english]This translates to the following:[/english]
[dutch]Dit vertaalt naar het volgende:[/dutch]

My items
1. First item
2. Second item

Additional items
1. Third item
2. Fourth item

[english]Which is obviously not what we mean. We could manually reset the numbering using a renewcommand, but this is cumbersome and not very robust when the number of items in the first list is subject to change.

A much more elegant solution is provided by the enumitem package. This modifies the enumerate, itemize and description environments and one of those modifications is the addition of a “resume” option.

The revised code looks like this:[/english]
[dutch]Dit is duidelijk niet wat we bedoelen. We zouden handmatig de nummering kunnen resetten met behulp van renewcommand, maar dit is omslachtig en niet erg robuust als het aantal items in de eerste lijst aan verandering onderhevig is.

Een veel elegantere oplossing komt uit het enumitem package. Dit past de enumerate, itemize en description environments aan en voegt daarbij een “resume” optie toe.

De gereviseerde code is als volgt:[/dutch]

\documentclass[a4paper]{article}
\usepackage{enumitem} % load the package
\begin{document}
  \section{My items}
    \begin{enumerate}
      \item First item
      \item Second item
    \end{enumerate}
  \section {Additional items}
    \begin{enumerate}[resume] % tell the enumerate to resume numbering
      \item Third item
      \item Fourth item
    \end{enumerate}
\end{document}

[english]This time, the result is as we expected:[/english]
[dutch]Dit keer is het resultaat zoals we verwachten:[/dutch]

My items
1. First item
2. Second item

Additional items
3. Third item
4. Fourth item

[english]More information can be found in the complete enumitem documentation.[/english]
[dutch]Meer informatie is te vinden in de volledige documentatie van enumitem.[/dutch]

Dagen 5, 6 en 7: De archipel

We zijn weer eens in de bewoonde wereld, tijd voor een update!

Vanaf de rustige camping in Eriksö (Vaxholm) waar we de vorige keer naar onderweg gingen, zijn we vervolgens naar Engarn gegaan om onze tweepersoons kayak op te halen. Dat was ongeveer het enige dat groot en stabiel genoeg was om ons tweeen plus twee grote tassen te dragen en dat was ook wel nodig, want we gingen de archipel in!

Hester en Michel in de kayakGewapend met een soms net iets te cryptische kaart kwamen we toch een heel eind. Na wat gepeddel tussen afwisselend dreigende zwarte wolken (met regen helaas) en een stralend zonnetje hadden we een mooi eilandje gevonden waar we na wat gestruin tussen de luxe vakantiehuisjes (vrijwel iedere zweed heeft er eentje) toch een mooi rustig plekje vonden om ons tentje uit te slapen.

Natuurlijk was zo’n eerste keertje wildkamperen voor ons heel spannend en waarschijnlijk roken de naaktslakken dat, want die kropen al snel over al onze spullen, inclusief de tent. Helaas voor de slakken bleven we maar een nachtje, want we moesten snel weer het water op om tegen de wind in te peddelen en de kayak terug te brengen. Op naar Stockholm, waar we besloten dat we die nacht zouden overnachten in nynäshamn, waar we uiteindelijk gelukkig een hostel vonden dat nog daadwerkelijk bedden over had.

Daarover later meer, we moeten nu snel onze bus richting Jönköping halen, waar ze vast wel weer internet hebben :)

Dagen 1-4: Stockholm

We zijn hier nu al een tijdje, maar we hebben eigenlijk nog geen zin gehad om een internet cafe in te duiken. Hier toch even een korte blik op onze eerste vier dagen.

Maandag werden we lekker, maar allesbehalve rustig wakker in Enschede. Er moesten natuurlijk nog wat laatste spullen ingepakt en eigenlijk ook nog gekocht worden. Omdat de treinreis wat ruim was ingeschat, waren we ruim anderhalf uur te vroeg op Schiphol, maar dat is nooit een probleem. Wel voelden we ons een beetje genaaid toen bleek dat we na de security check niet in het bekende shopwalhalla terecht kwamen, maar in een slap aftreksel dat zich “shopping lounge met restaurant” noemde. Dat restaurant hebben we nooit gevonden, hoewel er wel een soort afhaaltentje met voorgesmeerde boterhammen was.

Afijn, met een beetje een knorrig maagje en nog net niet doodverveeld zaten we dan toch in het vliegtuig, waar we wederom mochten wachten (dit keer stonden we met het hele vliegtuig in een keer in de rij). De vlucht zelf ging voorspoedig met het windje in de rug, om 20.15 kwamen we aan op vliegveld Arlanda waar we op jacht konden naar onze eerste hotdog van vele. Met de Flygbuss waren we met 40 minuutjes op Centraal Station Stockholm. Tijd om uit te zoeken hoe we bij ‘The red boat’, ons hostel konden komen. Volgens de vriendelijke man van het informatiepunt was het maar 300m! Makkelijk te lopen! Met flink ontstoken blaren (Michel) liepen we dus de regen in om vervolgens na wat zoeken en 1,5km verder te hebben gelopen aankwamen bij het Hostel waar we vriendelijk verwelkomd werden door gastheer Thomas. Na wat eten gehaald te hebben zijn we lekker onze hut ingedoken in de boot.

De volgende ochtend wakker geworden om Stockholm te ontdekken en een nieuwe slaapplaats te zoeken uiteraard. We kwamen uit bij Bredäng, wat maar 20 minuten met de T-banen van het centrum ligt. Daar hebben we twee nachtjes gestaan met het vertrouwde tentje.

Gisteren hebben we een beetje geshopt, ge’fika’d met Froukje en Don (NL) en zijn we naar het grote openluchtmuseum Skansen geweest, waar Hester natuurlijk naar de kinderboerderij (“ohh, geitjes!”) wilde en Michel zijn camera botvierde op Björn de Bruine Beer.

Vandaag hebben we dan onze vertrouwde camping Bredäng verlaten en zijn we al de hele tijd op zoek naar blaarbenodigdheden, cameratasjes en het internetcafe waar we nu dan eindelijk in zitten, zodat we kunnen opzoeken waar we nu eens heen gaan. Ze hebben hier trouwens helaas geen mogelijkheid tot het aansluiten van onze camera of cardreader, dus die foto’s moeten we nog even schuldig blijven.

In ieder geval hebben we net een kano gereserveerd in Vaxholm, waar we een paar dagen door de Stockholmse eilandengroep gaan rondtrekken. Zonder campings, internet of andere luxe, dus de volgende update zal wel weer even op zich laten wachten :)

Stofzuiger

Philips ExpressionNu Elger druk bezig is met het opheffen van het taboe van het hebben van knuffelbeesten voor twintigjarige mannen, voel ik me geroepen om ook een geluid af te geven. Ik ben namelijk heel erg blij met een nieuw gadget. Het is geen PDA, geen MP3-speler, geen smartphone, Aibo, Furbie of USB-stick.

Mijn nieuwste gadget is een stofzuiger, een knalgele Philips Expression. Deze vervanger voor het vorige apparaat, dat al zo lang als iedereen zich kon herinneren was belast met het schoonzuigen van onze studentenflat, maakt voor de verandering wèl schoon. Ik ben er superblij mee en ik schaam me er niet voor!

Sommige krantenkoppen…

Misschien ligt het aan mij, misschien zelfs wel omdat ik vooral ‘s ochtends de krant lees, maar soms glijden mijn ogen ineens over een krantenkop, die mij spontaan een wenkbrauw doen rijzen. Zo ook vanochtend, toen de Volkskrant groot kopte:

Overijsselse Marle in rep en roer

‘Varkensflats’ op stapel

Direct was mijn aandacht getrokken. Wat is dat, een varkensflats? Is dat net zo iets als een meeuwenflats, maar dan van een varken? Ik probeerde het me voor te stellen, een hele stapel varkensflats. Geen wonder dat dat Overijsselse Marle in rep en roer was. Of probeerden ze de varkensflats te roeren, zodat deze niet zou opdrogen? Dan wordt het in ieder geval niet meer gestapeld. Ik zag het al voor me, een heel dorpje uitgerukt om met man en macht de varkensflats te roeren.

Uiteraard blijkt het vervolgens om varkensflatgebouwen te gaan. Weet ik veel…

reCAPTCHA: [dutch] Geweldig idee, gammele basis[/dutch][english] Great idea, shaky base[/english]

Log reCAPTCHA[dutch]Spam sucks. Of het nu in onze e-mail inboxen of weblog comments is, we willen geen zinloze reclame voor troep die we niet nodig hebben. Wij eigenaren van weblogs en websites willen al helemaal niet dat onze thuisbasis op het internet verwordt tot een aanplakplaats voor deze producten, dus we doen er van alles aan om dat te voorkomen. De meeste van deze maatregelen zijn gebaseerd op het meest basale wat we van comment spam weten: het wordt nooit geplaatst door mensen.

De meest effectieve manier om comment spam tegen te gaan is tevens de meest simpele: vraag de commenter simpelweg te bewijzen dat hij/zij menselijk is, alvorens enig commentaar toe te staan. De CAPTCHA was geboren: een “Completely Automated Public Turing test to tell Computers and Humans Apart”, waarbij de menselijke gebruiker wordt gevraagd een plaatje te decoderen, waarop een woord of een combinatie van letters en cijfers is afgebeeld; vervormd om automatische tekstherkenning (OCR) te voorkomen.

reCAPTCHAWereldwijd lossen mensen dagelijks zo’n 60 miljoen van deze CAPTCHA’s op, terwijl organisaties als The Internet Archive hun nek breken over onleesbare woorden bij het digitaliseren van boeken. Het was dan ook een kwestie of tijd voor iemand de simpele optelsom maakte om tot de conclusie te komen dat één plus één twee is. Het resultaat: reCAPTCHA. Door lastig te herkennen woorden uit ingescande boeken van The Internet Archive te gebruiken, in plaats van willekeurig gegenereerde troep, wordt het werk van CAPTCHA-invullers wereldwijd gebundeld en aangewend om te helpen bij het digitaliseren van boeken.

Ik zie echter wel een probleem: het zou onmogelijk zijn om slechts niet-OCR-bare woorden te gebruiken voor verificatie: het systeem zou dan onmogelijk kunnen controleren of de gebruiker het juiste antwoord heeft ingevuld, dat weet het zelf tenslotte niet. reCAPTCHA lost dit op door twee woorden aan te bieden in iedere CAPTCHA, waarvan één reeds bekend is, de andere nog onbekend. De verificatie gebruikt slechts het deel dat reeds bekend is, terwijl het andere deel wordt doorgespeeld aan (in dit geval) The Internet Archive, om hen te helpen het te decoderen. In andere woorden: het systeem dat niet-menselijke commenters moet trakteren op een plaatje dat niet door computers is te herkennen, gebruikt een plaatje dat reeds door een computer is herkend! Als een spammer dus een OCR-systeem gebruikt dat net zo goed is als het syteem dat reCAPTCHA traint, wordt daarmee in één klap waardeloos. Daarnaast zal de spammer waarschijnlijk het onherkenbare deel van elke reCAPTCHA vervuilen met troep, het is tenslotte toch niet nodig voor de verificatie, waardoor het hele project onbruikbaar wordt.

Natuurlijk kan dit scenario worden voorkomen. Het “herkenbare” deel van de reCAPTCHA zou zo recentelijk mogelijk gedecodeerd moeten zijn door mensen en het zou idealiter willekeurig moeten zijn welke van de twee worden in de reCAPTCHA “herkenbaar” en welke “onbekend” is. Ik hoop dat de mensen van reCAPTCHA hier ook aan gedacht hebben.
[/dutch]

[english]Spam sucks. Whether it is in our email inboxes or weblog comments, we don’t want useless messages advertising stuff we don’t need. We owners of weblogs and websites especially don’t want our home sweet home to become the advertising spot for these products, so we take measures to prevent it, almost all of them based on the most basic fact we know about all comment spam: it is never posted by humans.

The most effective way to prevent comment spam is also the most simple: simply ask the commenter to prove he/she is human before allowing any comments to be posted. So the CAPTCHA was born: a “Completely Automated Public Turing test to tell Computers and Humans Apart”, where the human commenter is asked to decode an image representing a word or a combination of letters and digits, garbled to make automatic recognition (OCR) impossible.

reCAPTCHAHuman beings worldwide sort an estimated 60 million of these CAPTCHA’s every day, while organisations like the Internet Archive struggle to digitize badly recognizable books. It was only a matter of time before someone figured out 1+1 equals two. And someone finally did: reCAPTCHA. By using words scanned from books for the Internet Archive for verification, instead of randomly generated garbage, the global effort of solving CAPTCHA’s is channeled and put to good use in aiding the digitizing of books.

However, I do see one problem: it would be impossible to use just the non-OCRable words for verification: the system would not be usable as a verification, since the checking end would not know the correct answer. reCAPTCHA solves this by using two words for each captcha: one of which has been correctly identified, the other yet unknown. The verification only uses the word that has already been identified, while the other part is passed on to (in this case) the Internet Archive to help them in decoding it. In other words: the system that has to challenge non-human commenters with a string computers cannot decode uses a word that has already been decoded by a computer! Assuming a spammer’s OCR-system might ever reach the same level of expertise as the system reCAPTCHA is teaching, any reCAPTCHA instantly becomes worthless. Moreover, the spammer would probably flood the “unknown” part of the captcha with garbage, since it is not needed for the verification anyway, rendering the entire project useless.

Of course this scenario can be prevented. The “reconizable” part of the reCAPTCHA should be as recently decoded by humans as possible and it should ideally be random which of the two words in the reCAPTCHA is the “recognizable” and which is the “unknown”. I hope the guys at reCAPTCHA thought of this.
[/english]

Origami voor professionals

Papieren schedelIk kan er geen woord van lezen, maar de schrijver deze blogpost (in het Japans, engelse houtje-touwtje vertaling via babelfish) demonstreert een wel heel bijzonder speeltje: een menselijk skelet, volledig te vouwen van papier!

Papieren wervelsVoor ¥ 4,410 (een slordige 27 euro) ben je bij Amazon Japan in het bezit van je eigen bouwpakket, goed voor toch zeker zo’n 12 uur vouwplezier. Geduld is een schone zaak en het resultaat mag er wezen, maar of ik dit zou overleven betwijfel ik.

En dan te bedenken dat de ondertitel van de site “Featuring Lifehacks, Personal Productivity Tooooools, Somethyng stylish and beautiful” is. Laten we het maar op dat laatste houden ;)

Voltooid papieren skelet
(foto’s copyright schrijver oorspronkelijke artikel)

Great Pockets

Viral marketing lijkt zo ongeveer het enige te zijn wat nog werkt tegenwoordig. Misschien is dit toch wat voor mij, soms voel ik me alsof ik er nu al zo bij loop (en nee, ik zeg lekker niet waar het reclame voor is):

Great Pockets

Great Pockets