Index: tmp/org.txm.core/src/java/org/txm/core/preferences/TBXPreferences.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/core/preferences/TBXPreferences.java	(revision 3019)
+++ tmp/org.txm.core/src/java/org/txm/core/preferences/TBXPreferences.java	(revision 3020)
@@ -65,6 +65,8 @@
 	
 	public static final String EDITION_DEFINITION_BUILD = "edition_definition_build"; //$NON-NLS-1$
 	
+	public static final String EDITION_DEFINITION_PAGINATE = "edition_definition_paginate"; //$NON-NLS-1$
+	
 	public static final String EDITION_DEFINITION_WORDS_PER_PAGE = "edition_definition_words_per_page"; //$NON-NLS-1$
 	
 	public static final String EDITION_DEFINITION_PAGE_BREAK_ELEMENT = "edition_definition_page_break_element"; //$NON-NLS-1$
Index: tmp/org.txm.core/src/java/org/txm/objects/EditionDefinition.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/EditionDefinition.java	(revision 3019)
+++ tmp/org.txm.core/src/java/org/txm/objects/EditionDefinition.java	(revision 3020)
@@ -46,6 +46,10 @@
 		return node.getBoolean(TBXPreferences.EDITION_DEFINITION_BUILD, false);
 	}
 	
+	public boolean getPaginateEdition() {
+		return node.getBoolean(TBXPreferences.EDITION_DEFINITION_PAGINATE, true);
+	}
+	
 	public String getImagesDirectory() {
 		return node.get(TBXPreferences.EDITION_DEFINITION_IMAGES_DIRECTORY, null);
 	}
@@ -114,4 +118,8 @@
 		}
 		return buffer.toString();
 	}
+
+	public void setPaginateEdition(boolean paginate) {
+		node.putBoolean(TBXPreferences.EDITION_DEFINITION_PAGINATE, paginate);		
+	}
 }
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/FixTranscription.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/FixTranscription.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/FixTranscription.groovy	(revision 3020)
@@ -1,201 +0,0 @@
-package org.txm.macro.projects.nov13
-
-import javax.xml.stream.*
-
-import org.txm.importer.PersonalNamespaceContext
-import org.txm.utils.FileUtils
-import org.txm.xml.IdentityHook
-import org.txm.xml.*
-
-import java.io.BufferedOutputStream
-import java.io.FileOutputStream
-import java.io.IOException
-import java.net.URL
-import java.util.*
-import java.util.Map.Entry
-import java.util.regex.Pattern
-
-class FixTranscription extends XMLProcessor {
-	
-	LocalNamesHookActivator activator;
-	IdentityHook hook;
-	
-	def primarySpeakerIdRegex
-	String primarySpeakerId
-	
-	Boolean debug
-	
-	String otherNonPrimaryLocutor = "other"
-	
-	public FixTranscription(File xmlfile, String primarySpeakerIdPrefix, String otherNonPrimaryLocutor, Boolean debug) {
-		super(xmlfile)
-		this.debug = debug
-		
-		this.otherNonPrimaryLocutor = otherNonPrimaryLocutor
-		if (primarySpeakerIdPrefix != null && primarySpeakerIdPrefix.length() > 0) {
-			String id = FileUtils.stripExtension(xmlfile)
-			
-			this.primarySpeakerIdRegex = /$primarySpeakerIdPrefix.*/
-			
-			def rez = (id =~ primarySpeakerIdRegex).findAll()
-			def rez2 = (id =~ /$primarySpeakerIdPrefix/).findAll()
-			if (rez2.size() != 1) {
-				if (debug) println "WARNING: found the ${rez2.size()} matches of primary speaker prefix in the '$id' file name"
-				this.primarySpeakerIdRegex = null
-			} else {
-				primarySpeakerId = rez[0]
-				//if (debug) println "Detected primary speaker: $primarySpeakerId"
-			}
-		}
-		
-		activator = new LocalNamesHookActivator<>(hook, ["w", "Turn", "Sync"]);
-		
-		hook = new IdentityHook("word_hook", activator, this) {
-					
-					boolean inTurn = false;
-					
-					boolean inW = false;
-					StringBuilder wordBuffer = new StringBuilder();
-					
-					String currentTime;
-					LinkedHashMap turnInfos = new LinkedHashMap()
-					LinkedHashMap wInfos = new LinkedHashMap()
-					boolean other
-					
-					@Override
-					public boolean deactivate() {
-						return true;
-					}
-					
-					@Override
-					public boolean _activate() {
-						return true;
-					}
-					
-					@Override
-					protected void processStartElement() throws XMLStreamException, IOException {
-						if (localname.equals("Turn")) {
-							// store values
-							inTurn = true;
-							turnInfos.clear()
-							for (int i = 0 ; i < parser.getAttributeCount() ; i++) {
-								turnInfos[parser.getAttributeLocalName(i)] = parser.getAttributeValue(i)
-							}
-							currentTime = turnInfos["startTime"]
-							super.processStartElement();
-						} else if (localname.equals("Sync")) {
-							currentTime = parser.getAttributeValue(null, "time")
-							super.processStartElement();
-						} else if (localname.equals("w")) {
-							// store values
-							inW = true;
-							wInfos.clear()
-							for (int i = 0 ; i < parser.getAttributeCount() ; i++) {
-								wInfos[parser.getAttributeLocalName(i)] = parser.getAttributeValue(i)
-							}
-							String time = parser.getAttributeValue(null, "time")
-							if (time != null && time.length() > 0) {
-								currentTime = time
-							}
-							wordBuffer.setLength(0);
-							return; // write w later
-						}
-						else {
-							super.processStartElement();
-						}
-					}
-					
-					@Override
-					protected void processCharacters() throws XMLStreamException {
-						if (inW) {
-							wordBuffer.append(parser.getText())
-						}
-						else {
-							super.processCharacters();
-						}
-					}
-					
-					@Override
-					protected void processEndElement() throws XMLStreamException {
-						if (localname.equals("w")) {
-							
-							inW = false
-							String word = wordBuffer.toString().trim()
-							if (!other && word.startsWith("*")) {
-								//close current Turn and start a 'other' Turn
-								writer.writeEndElement() // current Turn
-								writer.writeCharacters("\n")
-								
-								def tmpInfos = new LinkedHashMap()
-								for (String attr : turnInfos.keySet()) tmpInfos[attr] = turnInfos[attr]
-								tmpInfos["orig-speaker"] = turnInfos["speaker"]
-								
-								if (primarySpeakerIdRegex == null || turnInfos["speaker"] ==~ primarySpeakerIdRegex) {
-									tmpInfos["speaker"] = "other"
-								} else {
-									tmpInfos["speaker"] = primarySpeakerId
-								}
-								tmpInfos["startTime"] = currentTime
-								writer.writeStartElement("Turn")
-								for (String attr : tmpInfos.keySet()) {
-									writer.writeAttribute(attr, tmpInfos[attr])
-								}
-								
-								other = true
-								word = word.substring(1)
-							}
-							
-							boolean shouldCloseOtherTurn = false;
-							if (other && word.endsWith("*")) {
-								shouldCloseOtherTurn = true;
-								
-								word = word.substring(0, word.length()-1)
-								other = false
-							}
-							
-							if ("XXX".equals(word)) { // <Event desc="XXX" type="unknown" extent="next"/>
-								writer.writeStartElement("event") // start the initial word
-								writer.writeAttribute("desc", "XXX from "+wInfos["start"] + " to "+wInfos["end"])
-								writer.writeAttribute("type", "unknown")
-								writer.writeAttribute("extent", "instantaneous")
-								writer.writeEndElement() // event
-								word = "" // don't write the word
-							}
-							
-							if (word.length() > 0) {
-								
-								writer.writeStartElement("w") // start the initial word
-								for (String attr : wInfos.keySet() ) {
-									writer.writeAttribute(attr, wInfos[attr])
-								}
-								writer.writeCharacters(word)
-								writer.writeEndElement() // w
-							}
-							
-							if (shouldCloseOtherTurn) {
-								shouldCloseOtherTurn = false;
-								//close the current 'other' Turn and restart the actual Turn
-								writer.writeEndElement() // current 'other' Turn
-								
-								writer.writeStartElement("Turn") // rebuild the orig Turn and fix its start-end infos
-								turnInfos["startTime"] = wInfos["end"] // fix the startTime using the current word end time
-								for (String attr : turnInfos.keySet()) {
-									writer.writeAttribute(attr, turnInfos[attr])
-								}
-								
-								other = false
-							}
-						} else {
-							super.processEndElement();
-						}
-					}
-				}
-	}
-	
-	public static void main(String[] args) {
-		File infile = new File("/home/mdecorde/xml/vocapia","test.trs")
-		File outfile = new File("/home/mdecorde/xml/vocapia","test-fixed.trs")
-		def processor = new FixTranscription(infile, true)
-		println processor.process(outfile)
-	}
-}
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/FixTranscriptionsMacro.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/FixTranscriptionsMacro.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/FixTranscriptionsMacro.groovy	(revision 3020)
@@ -1,69 +0,0 @@
-package org.txm.macro.projects.nov13
-
-import java.time.LocalTime
-import java.time.format.DateTimeFormatter
-import org.txm.utils.*
-import org.txm.utils.logger.*
-
-@Field @Option(name="trsFile", usage="A single vocapia XML file", widget="FileOpen", required=false, def="")
-		File trsFile
-
-@Field @Option(name="trsDirectory", usage="A Vocapia XML files directory to process", widget="Folder", required=false, def="")
-		File trsDirectory
-
-@Field @Option(name="resultDirectory", usage="The result directory", widget="Folder", required=false, def="")
-		File resultDirectory
-		
-@Field @Option(name="primarySpeakerIdPrefix", usage="speaker ID of the primary speaker", widget="String", required=false, def="")
-		String primarySpeakerIdPrefix
-
-		@Field @Option(name="otherNonPrimaryLocutor", usage="other non primary id of the other turns", widget="String", required=false, def="")
-		String otherNonPrimaryLocutor
-		
-@Field @Option(name="debug", usage="speaker ID of the primary speaker", widget="Boolean", required=false, def="false")
-		Boolean debug
-
-if (!ParametersDialog.open(this)) return;
-
-if (resultDirectory.equals(trsDirectory) || (trsFile != null && trsFile.getParentFile().equals(resultDirectory))) {
-	return false;
-}
-
-resultDirectory.mkdirs();
-
-def trsFiles = []
-if (trsDirectory != null && trsDirectory.exists()) {
-	
-	println "Processing TRS directory: $trsDirectory"
-	for (File file : trsDirectory.listFiles()) {
-		if (file.getName().toLowerCase().endsWith(".trs")) {
-			trsFiles << file
-		}
-	}
-} else if (trsFile != null && trsFile.exists()) {
-	println "Processing TRS file: $trsFile"
-	trsFiles << trsFile
-}
-
-if (trsFiles.size() == 0) {
-	println "No XML file found for parameters trsFile=$trsFile and trsDirectory=$trsDirectory"
-	return false
-}
-
-ConsoleProgressBar cpb = new ConsoleProgressBar(trsFiles.size())
-for (File file : trsFiles) {
-	cpb.tick()
-	
-	FixTranscription fixer = new FixTranscription(file, primarySpeakerIdPrefix, otherNonPrimaryLocutor, debug)
-	String name = FileUtils.stripExtension(file)
-	File outFile = new File(resultDirectory, name+".trs")
-	
-	if (!fixer.process(outFile)) {
-		println "WARNING: ERROR WHILE PROCESSING: "+file
-		return false
-	}
-}
-cpb.done()
-
-println "Done: "+trsFiles.size()+" files processed. Result files in $resultDirectory"
-
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/CreateTheOtherTurns.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/CreateTheOtherTurns.groovy	(revision 0)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/CreateTheOtherTurns.groovy	(revision 3020)
@@ -0,0 +1,201 @@
+package org.txm.macro.projects.nov13
+
+import javax.xml.stream.*
+
+import org.txm.importer.PersonalNamespaceContext
+import org.txm.utils.FileUtils
+import org.txm.xml.IdentityHook
+import org.txm.xml.*
+
+import java.io.BufferedOutputStream
+import java.io.FileOutputStream
+import java.io.IOException
+import java.net.URL
+import java.util.*
+import java.util.Map.Entry
+import java.util.regex.Pattern
+
+class FixTranscription extends XMLProcessor {
+	
+	LocalNamesHookActivator activator;
+	IdentityHook hook;
+	
+	def primarySpeakerIdRegex
+	String primarySpeakerId
+	
+	Boolean debug
+	
+	String otherNonPrimaryLocutor = "other"
+	
+	public FixTranscription(File xmlfile, String primarySpeakerIdPrefix, String otherNonPrimaryLocutor, Boolean debug) {
+		super(xmlfile)
+		this.debug = debug
+		
+		this.otherNonPrimaryLocutor = otherNonPrimaryLocutor
+		if (primarySpeakerIdPrefix != null && primarySpeakerIdPrefix.length() > 0) {
+			String id = FileUtils.stripExtension(xmlfile)
+			
+			this.primarySpeakerIdRegex = /$primarySpeakerIdPrefix.*/
+			
+			def rez = (id =~ primarySpeakerIdRegex).findAll()
+			def rez2 = (id =~ /$primarySpeakerIdPrefix/).findAll()
+			if (rez2.size() != 1) {
+				if (debug) println "WARNING: found the ${rez2.size()} matches of primary speaker prefix in the '$id' file name"
+				this.primarySpeakerIdRegex = null
+			} else {
+				primarySpeakerId = rez[0]
+				//if (debug) println "Detected primary speaker: $primarySpeakerId"
+			}
+		}
+		
+		activator = new LocalNamesHookActivator<>(hook, ["w", "Turn", "Sync"]);
+		
+		hook = new IdentityHook("word_hook", activator, this) {
+					
+					boolean inTurn = false;
+					
+					boolean inW = false;
+					StringBuilder wordBuffer = new StringBuilder();
+					
+					String currentTime;
+					LinkedHashMap turnInfos = new LinkedHashMap()
+					LinkedHashMap wInfos = new LinkedHashMap()
+					boolean other
+					
+					@Override
+					public boolean deactivate() {
+						return true;
+					}
+					
+					@Override
+					public boolean _activate() {
+						return true;
+					}
+					
+					@Override
+					protected void processStartElement() throws XMLStreamException, IOException {
+						if (localname.equals("Turn")) {
+							// store values
+							inTurn = true;
+							turnInfos.clear()
+							for (int i = 0 ; i < parser.getAttributeCount() ; i++) {
+								turnInfos[parser.getAttributeLocalName(i)] = parser.getAttributeValue(i)
+							}
+							currentTime = turnInfos["startTime"]
+							super.processStartElement();
+						} else if (localname.equals("Sync")) {
+							currentTime = parser.getAttributeValue(null, "time")
+							super.processStartElement();
+						} else if (localname.equals("w")) {
+							// store values
+							inW = true;
+							wInfos.clear()
+							for (int i = 0 ; i < parser.getAttributeCount() ; i++) {
+								wInfos[parser.getAttributeLocalName(i)] = parser.getAttributeValue(i)
+							}
+							String time = parser.getAttributeValue(null, "time")
+							if (time != null && time.length() > 0) {
+								currentTime = time
+							}
+							wordBuffer.setLength(0);
+							return; // write w later
+						}
+						else {
+							super.processStartElement();
+						}
+					}
+					
+					@Override
+					protected void processCharacters() throws XMLStreamException {
+						if (inW) {
+							wordBuffer.append(parser.getText())
+						}
+						else {
+							super.processCharacters();
+						}
+					}
+					
+					@Override
+					protected void processEndElement() throws XMLStreamException {
+						if (localname.equals("w")) {
+							
+							inW = false
+							String word = wordBuffer.toString().trim()
+							if (!other && word.startsWith("*")) {
+								//close current Turn and start a 'other' Turn
+								writer.writeEndElement() // current Turn
+								writer.writeCharacters("\n")
+								
+								def tmpInfos = new LinkedHashMap()
+								for (String attr : turnInfos.keySet()) tmpInfos[attr] = turnInfos[attr]
+								tmpInfos["orig-speaker"] = turnInfos["speaker"]
+								
+								if (primarySpeakerIdRegex == null || turnInfos["speaker"] ==~ primarySpeakerIdRegex) {
+									tmpInfos["speaker"] = "other"
+								} else {
+									tmpInfos["speaker"] = primarySpeakerId
+								}
+								tmpInfos["startTime"] = currentTime
+								writer.writeStartElement("Turn")
+								for (String attr : tmpInfos.keySet()) {
+									writer.writeAttribute(attr, tmpInfos[attr])
+								}
+								
+								other = true
+								word = word.substring(1)
+							}
+							
+							boolean shouldCloseOtherTurn = false;
+							if (other && word.endsWith("*")) {
+								shouldCloseOtherTurn = true;
+								
+								word = word.substring(0, word.length()-1)
+								other = false
+							}
+							
+							if ("XXX".equals(word)) { // <Event desc="XXX" type="unknown" extent="next"/>
+								writer.writeStartElement("event") // start the initial word
+								writer.writeAttribute("desc", "XXX from "+wInfos["start"] + " to "+wInfos["end"])
+								writer.writeAttribute("type", "unknown")
+								writer.writeAttribute("extent", "instantaneous")
+								writer.writeEndElement() // event
+								word = "" // don't write the word
+							}
+							
+							if (word.length() > 0) {
+								
+								writer.writeStartElement("w") // start the initial word
+								for (String attr : wInfos.keySet() ) {
+									writer.writeAttribute(attr, wInfos[attr])
+								}
+								writer.writeCharacters(word)
+								writer.writeEndElement() // w
+							}
+							
+							if (shouldCloseOtherTurn) {
+								shouldCloseOtherTurn = false;
+								//close the current 'other' Turn and restart the actual Turn
+								writer.writeEndElement() // current 'other' Turn
+								
+								writer.writeStartElement("Turn") // rebuild the orig Turn and fix its start-end infos
+								turnInfos["startTime"] = wInfos["end"] // fix the startTime using the current word end time
+								for (String attr : turnInfos.keySet()) {
+									writer.writeAttribute(attr, turnInfos[attr])
+								}
+								
+								other = false
+							}
+						} else {
+							super.processEndElement();
+						}
+					}
+				}
+	}
+	
+	public static void main(String[] args) {
+		File infile = new File("/home/mdecorde/xml/vocapia","test.trs")
+		File outfile = new File("/home/mdecorde/xml/vocapia","test-fixed.trs")
+		def processor = new FixTranscription(infile, true)
+		println processor.process(outfile)
+	}
+}
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/PrepareTranscriptionsMacro.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/PrepareTranscriptionsMacro.groovy	(revision 0)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/nov13/PrepareTranscriptionsMacro.groovy	(revision 3020)
@@ -0,0 +1,79 @@
+package org.txm.macro.projects.nov13
+
+import java.time.LocalTime
+import java.time.format.DateTimeFormatter
+import org.txm.utils.*
+import org.txm.utils.logger.*
+import org.txm.macro.transcriber.RenameSpeaker
+
+@Field @Option(name="trsDirectory", usage="A Vocapia XML files directory to process", widget="Folder", required=false, def="")
+		File trsDirectory
+
+@Field @Option(name="resultDirectory", usage="The result directory", widget="Folder", required=false, def="")
+		File resultDirectory
+		
+@Field @Option(name="primarySpeakerIdPrefix", usage="speaker ID of the primary speaker", widget="String", required=false, def="")
+		String primarySpeakerIdPrefix
+@Field @Option(name="otherNonPrimaryLocutor", usage="other non primary id of the other turns", widget="String", required=false, def="")
+		String otherNonPrimaryLocutor
+		
+@Field @Option(name="nonPrimaryLocutorReplaceRegex", usage="other non primary id of the other turns", widget="String", required=false, def="")
+		String nonPrimaryLocutorReplaceRegex
+
+@Field @Option(name="debug", usage="speaker ID of the primary speaker", widget="Boolean", required=false, def="false")
+		Boolean debug
+		
+if (!ParametersDialog.open(this)) return;
+
+if (resultDirectory.equals(trsDirectory)) {
+	println "Result directory must differs from trsDirectory: "+trsDirectory
+	return false;
+}
+
+resultDirectory.mkdirs();
+
+def trsFiles = []
+	
+println "Processing TRS directory: $trsDirectory"
+for (File file : trsDirectory.listFiles()) {
+	if (file.getName().toLowerCase().endsWith(".trs")) {
+		trsFiles << file
+	}
+}
+
+if (trsFiles.size() == 0) {
+	println "No XML file found for parameters trsDirectory=$trsDirectory"
+	return false
+}
+
+println "CREATE THE 'OTHER' TURNS..."
+
+ConsoleProgressBar cpb = new ConsoleProgressBar(trsFiles.size())
+for (File file : trsFiles) {
+	cpb.tick()
+	
+	CreateTheOtherTurns fixer = new CreateTheOtherTurns(file, primarySpeakerIdPrefix, otherNonPrimaryLocutor, debug)
+	String name = FileUtils.stripExtension(file)
+	File outFile = new File(resultDirectory, name+".trs")
+	
+	if (!fixer.process(outFile)) {
+		println "WARNING: ERROR WHILE PROCESSING: "+file
+	}
+}
+cpb.done()
+
+// FIX LOCUTORS
+println "NORMALIZING LOCUTORS..."
+cpb = new ConsoleProgressBar(trsFiles.size())
+for (File file : resultDirectory.listFiles()) {
+	cpb.tick()
+	
+	RenameSpeaker fixer = new RenameSpeaker(file, file, nonPrimaryLocutorReplaceRegex, null, otherNonPrimaryLocutor, otherNonPrimaryLocutor)
+	
+	if (!fixer.process()) {
+		println "WARNING: ERROR WHILE PROCESSING: "+file
+	}
+}
+cpb.done()
+
+println "Done: "+trsFiles.size()+" files processed. Result files in $resultDirectory"
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/factiva/factivaLoader.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/factiva/factivaLoader.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/factiva/factivaLoader.groovy	(revision 3020)
@@ -271,7 +271,7 @@
 		t.setSourceFile(txmFile)
 		t.setTXMFile(txmFile)
 
-		def ed = new pager(txmFile, outdir, txtname, NoSpaceBefore, NoSpaceAfter, wordsPerPage, basename, page_element);
+		def ed = new pager(txmFile, outdir, txtname, NoSpaceBefore, NoSpaceAfter, basename, project);
 		Edition edition = new Edition(t);
 		edition.setName("default");
 		edition.setIndex(outdir.getAbsolutePath());
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/transcriberLoader.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/transcriberLoader.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/transcriberLoader.groovy	(revision 3020)
@@ -324,7 +324,7 @@
 				edition.delete();
 				edition = null;
 			}
-			def ed = new pager(txmFile, htmlDir, txtname, NoSpaceBefore, NoSpaceAfter, wordsPerPage, basename, page_element, metadatas);
+			def ed = new pager(txmFile, htmlDir, txtname, NoSpaceBefore, NoSpaceAfter, basename, page_element, metadatas, project);
 			edition = t.getEdition("default")
 			edition = new Edition(t);
 			edition.setName("default");
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/pager.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/pager.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/pager.groovy	(revision 3020)
@@ -28,6 +28,7 @@
 package org.txm.scripts.importer.transcriber
 
 import java.io.File;
+
 import java.util.ArrayList;
 
 import javax.xml.stream.*
@@ -37,8 +38,8 @@
 import org.txm.metadatas.Metadatas
 import org.txm.utils.TimeFormatter
 import org.txm.utils.io.FileCopy;
+import org.txm.objects.Project
 
-
 // TODO: Auto-generated Javadoc
 /** Build Discours corpus simple edition from a xml-tei.
  * 
@@ -74,6 +75,9 @@
 	/** The first word. */
 	boolean firstWord = true
 	
+	boolean paginate = true
+	
+	
 	/** The wordvalue. */
 	String wordvalue;
 	
@@ -156,9 +160,9 @@
 	 * @param metadatas the metadatas
 	 */
 	pager(File txmfile, File htmlDir, String txtname, List<String> NoSpaceBefore,
-	List<String> NoSpaceAfter, int max, String corpusname, String cuttingTag, Metadatas metadatas) {
+	List<String> NoSpaceAfter, String corpusname, String cuttingTag, Metadatas metadatas, Project project) {
 		this.metadatas = metadatas
-		this.wordmax = max;
+		this.wordmax = project.getEditionDefinition("default").getWordsPerPage();
 		this.cuttingTag = cuttingTag;
 		this.corpusname = corpusname;
 		this.NoSpaceBefore = NoSpaceBefore;
@@ -167,6 +171,7 @@
 		this.txmfile = txmfile;
 		this.htmlDir = htmlDir;
 		this.txtname = txtname;
+		this.paginate = project.getEditionDefinition("default").getPaginateEdition()
 		
 		inputData = url.openStream();
 		factory = XMLInputFactory.newInstance();
@@ -386,8 +391,10 @@
 							writer.writeAttribute("id", ""+nbBreak);
 							writer.writeCharacters("\n");
 						
-							pages << new File(defaultDir, "${txtname}_${nbBreak}.html")
-							indexes << wordid
+							if (paginate) {
+								pages << new File(defaultDir, "${txtname}_${nbBreak}.html")
+								indexes << wordid
+							}
 						
 							wordcount = 0;
 							shouldBreak = false;
@@ -612,7 +619,7 @@
 								}
 						
 							wordcount++;
-							if (wordcount >= wordmax) {
+							if (paginate && wordcount >= wordmax) {
 								shouldBreak = true;
 							}
 						
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/txt/txtLoader.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/txt/txtLoader.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/txt/txtLoader.groovy	(revision 3020)
@@ -188,7 +188,7 @@
 		t.setSourceFile(srcfile)
 		t.setTXMFile(srcfile)
 		
-		def ed = new pager(srcfile, outdir, txtname, NoSpaceBefore, NoSpaceAfter, wordsPerPage, basename, null);
+		def ed = new pager(srcfile, outdir, txtname, NoSpaceBefore, NoSpaceAfter, basename, project);
 		Edition edition = new Edition(t);
 		edition.setName("default");
 		edition.setIndex(outdir.getAbsolutePath());
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/hyperbase/hyperbaseLoader.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/hyperbase/hyperbaseLoader.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/hyperbase/hyperbaseLoader.groovy	(revision 3020)
@@ -142,7 +142,7 @@
 		t.setSourceFile(txmFile)
 		t.setTXMFile(txmFile)
 
-		def ed = new pager(txmFile, outdir, txtname, NoSpaceBefore, NoSpaceAfter, wordsPerPage, basename, page_element);
+		def ed = new pager(txmFile, outdir, txtname, NoSpaceBefore, NoSpaceAfter, basename, project);
 		Edition edition = new Edition(t);
 		edition.setName("default");
 		edition.setIndex(outdir.getAbsolutePath());
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xtz/XTZPager.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xtz/XTZPager.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xtz/XTZPager.groovy	(revision 3020)
@@ -28,6 +28,7 @@
 	String page_element;
 	String wordTag;
 	int wordsPerPage;
+	boolean paginate;
 
 	File cssDirectory, jsDirectory, imagesDirectory;
 
@@ -39,6 +40,7 @@
 		lang = project.getLang();
 		wordsPerPage = project.getEditionDefinition("default").getWordsPerPage()
 		page_element = project.getEditionDefinition("default").getPageElement()
+		paginate = project.getEditionDefinition("default").getPaginateEdition()
 		wordTag = project.getTokenizerWordElement()
 
 		cssDirectory = new File(module.getSourceDirectory(), "css")
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xtz/XTZDefaultPagerStep.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xtz/XTZDefaultPagerStep.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xtz/XTZDefaultPagerStep.groovy	(revision 3020)
@@ -87,6 +87,7 @@
 	/** The idxstart. */
 	ArrayList<String> idxstart = new ArrayList<String>();
 	String paginationElement;
+	boolean paginate;
 	def cssList;
 	def wordTag = "w";
 	def noteElements = new HashSet<String>();
@@ -107,6 +108,7 @@
 	List<String> NoSpaceAfter, def cssList) {
 		this.pager = pager;
 		this.paginationElement = pager.page_element;
+		this.paginate = pager.paginate
 		this.cssList = cssList;
 		this.basename = pager.corpusname;
 		this.txtname = txtname;
@@ -317,7 +319,7 @@
 							currentOutOfTextElements << localname
 						}
 					
-						if (localname == paginationElement) {
+						if (paginate && localname == paginationElement) {
 							createNextOutput()
 							wordcount=0;
 							pagedWriter.write("\n")
@@ -453,7 +455,7 @@
 								wordid = getAttributeValue(parser, null,"id");
 								anaValues.clear()
 								wordcount++;
-								if (wordcount >= wordmax) {
+								if (paginate && wordcount >= wordmax) {
 									createNextOutput();
 								}
 							
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xmltxm/xmltxmLoader.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xmltxm/xmltxmLoader.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xmltxm/xmltxmLoader.groovy	(revision 3020)
@@ -216,7 +216,7 @@
 		if (second > 0 && (second++ % 5) == 0) println ""
 		cpb.tick()
 
-		def ed = new pager(txmFile, outdir, txtname, NoSpaceBefore, NoSpaceAfter, wordsPerPage, basename, page_element);
+		def ed = new pager(txmFile, outdir, txtname, NoSpaceBefore, NoSpaceAfter, basename, project);
 		Edition edition = new Edition(t);
 			edition.setName("default");
 			edition.setIndex(outdir.getAbsolutePath());
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/discours/discoursLoader.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/discours/discoursLoader.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/discours/discoursLoader.groovy	(revision 3020)
@@ -125,7 +125,7 @@
 		t.setName(txtname);
 		t.setSourceFile(txmFile)
 		t.setTXMFile(txmFile)
-		def ed = new pager(txmFile, outdir, txtname, NoSpaceBefore, NoSpaceAfter, wordsPerPage, basename, "pb");
+		def ed = new pager(txmFile, outdir, txtname, NoSpaceBefore, NoSpaceAfter, basename, project);
 		Edition edition = new Edition(t);
 		edition.setName("default");
 		edition.setIndex(outdir.getAbsolutePath());
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xml/pager.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xml/pager.groovy	(revision 3019)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xml/pager.groovy	(revision 3020)
@@ -39,6 +39,7 @@
 import org.xml.sax.InputSource;
 import org.xml.sax.helpers.DefaultHandler;
 import org.txm.utils.io.FileCopy
+import org.txm.objects.Project
 
 /** Build a simple edition from a xml-tei. 
  * @author mdecorde */
@@ -68,6 +69,8 @@
 
 	/** The first word. */
 	boolean firstWord = true;
+	
+	boolean paginate = true;
 
 	/** The wordvalue. */
 	String wordvalue = "";
@@ -126,12 +129,15 @@
 	 * @param basename the basename
 	 */
 	pager(File infile, File outdir, String txtname, List<String> NoSpaceBefore,
-	List<String> NoSpaceAfter, int max, String basename, String paginationElement) {
-		this.paginationElement = paginationElement;
+	List<String> NoSpaceAfter, String basename, Project project) {
+		this.paginationElement = project.getEditionDefinition("default").getPageElement()
+		this.paginate = project.getEditionDefinition("default").getPaginateEdition()
+		this.wordmax = project.getEditionDefinition("default").getWordsPerPage();
+		
 		this.basename = basename;
 		this.txtname = txtname;
 		this.outdir = outdir;
-		this.wordmax = max;
+		
 		this.NoSpaceBefore = NoSpaceBefore;
 		this.NoSpaceAfter = NoSpaceAfter;
 		this.url = infile.toURI().toURL();
@@ -288,7 +294,7 @@
 				case XMLStreamConstants.START_ELEMENT:
 					localname = parser.getLocalName();
 					
-					if (localname == paginationElement) {
+					if (paginate && localname == paginationElement) {
 						createNextOutput();
 						pagedWriter.write("\n");
 						if (parser.getAttributeValue(null,"n") != null) {
@@ -355,7 +361,7 @@
 							wordid = parser.getAttributeValue(null,"id");
 							anaValues.clear()
 							wordcount++;
-							if (wordcount >= wordmax) {
+							if (paginate && wordcount >= wordmax) {
 								createNextOutput();
 							}
 							
