private String printSection(Section section, int lvl) {
		Line selectedLine = this.getSelectedLine();
		StringBuilder printed = new StringBuilder();
		for (int i = 0; i < lvl; i++) {
			printed.append("*");
		}
		if (section.getTitle().getLine().equals(selectedLine)) {
			printed.append(new StringBuilder(section.getTitle().getLine()
					.toString()).insert(this.getSelectedCharacterNb(), "[")
					.insert(selectedLine.length() == this
							.getSelectedCharacterNb() ? this
							.getSelectedCharacterNb() + 1 : this
							.getSelectedCharacterNb() + 2, "]"));
		} else
			printed.append(section.getTitle().getLine().toString());

		if (section.isVisible()) {
			printed.append("\n");
			TextIntro intro = section.getTextIntro();
			for (int i = 0; i < intro.getLineNb(); i++) {
				if (intro.getLine(i).equals(selectedLine)) {
					printed.append(new StringBuilder(intro.getLine(i)
							.toString()).insert(this.getSelectedCharacterNb(), "[")
					.insert(selectedLine.length() == this
							.getSelectedCharacterNb() ? this
							.getSelectedCharacterNb() + 1 : this
							.getSelectedCharacterNb() + 2, "]")).append("\n");
				} else {
					printed.append(intro.getLine(i).toString() + "\n");
				}
			}

			for (int i = 0; i < section.getSubSectionNb(); i++) {
				printed.append(this.printSection(section.getSubSection(i),
						lvl + 1));
			}
		} else {
			printed.append("... \n");
		}

		return printed.toString();
	}