Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Textabschnitte zur Geheimhaltung schwärzen

849 views
Skip to first unread message

porno...@yahoo.de

unread,
Dec 10, 2007, 9:37:46 AM12/10/07
to
Hallo,

gibt es eine Möglichkeit bestimmte Absätze oder Abschnitte in LaTeX zu
schwärzen?

Beispiel: Ich schreibe an einem Dokument das für interne Zwecke
vollständig sein soll. Jedoch soll es recht einfach sein eine Variante
zu erstellen, die auch an externe Stellen ausgegeben werden kann, wo
jedoch interne Daten geschwärzt sind.

Am Anfang des Dokumentes sollte als ein Flag gesetzt werden können, ob
geschwärzt werden soll oder nicht.

Im Text würden dann Abschnitte, wie "Das ist sichtbar \geheim{das hier
wird ein schwarzer Balken} und hier gehts normal weiter" entsprechend
behandelt werden.

Dazu sollte der schwarze Balken auch die Länge des original Textes
haben, jedoch muss dieser komplett entfernt werden -- nicht dass man
durch einfaches Kopieren ihn wieder erhält.

Gibt es dafür ein fertiges Paket oder wie fertige ich einen
entsprechenden Befehl selber an?

Vielen Dank,
Rico

Ben E. Hard

unread,
Dec 10, 2007, 10:58:53 AM12/10/07
to
porno...@yahoo.de wrote:

Schau dir mal soul an. Damit kann man farbig hinterlegen, die Farbe lässt
sich einstellen.
Gruß
Ben

Maik Zumstrull

unread,
Dec 10, 2007, 11:10:10 AM12/10/07
to
"Ben E. Hard" <b...@gmx.de> wrote:

> > Dazu sollte der schwarze Balken auch die Länge des original Textes
> > haben, jedoch muss dieser komplett entfernt werden -- nicht dass man
> > durch einfaches Kopieren ihn wieder erhält.

> Schau dir mal soul an. Damit kann man farbig hinterlegen, die Farbe
> lässt sich einstellen.

Setz mal die beiden Statements in Beziehung...

Wenn man nur die Text- und Hintergrundfarbe auf "Schwarz auf Schwarz"
ändert, wird der Text trotzdem *als Text* ins DVI/PS/PDF kodiert und
kann trivial daraus extrahiert werden.

Allerdings ist auch das "richtige" Ersetzen durch eine schwarze Box der
passenden Größe nicht ausreichend: Es gibt eine Software, die die Länge
der geschwärzten Worte, die Metriken der verwendeten Schrift, ein
Wörterbuch der verwendeten Sprache und eine Plausibilitäts-Heuristik
verwendet, um mit erstaunlicher Trefferquote zu rekonstruieren, was da
mal stand.

OP: Ich empfehle, dass du dir das Makro \geheim so definierst, dass es
je nach Modus sein Argument unverändert ausgibt, oder das Argument
wegwirft und so etwas wie "<GESTRICHEN>" ausgibt. Dann kriegt der
gekürzte Text zwar ein anderes Layout, aber wenigstens sind die Daten
sicher weg.

Ulrike Fischer

unread,
Dec 10, 2007, 11:25:45 AM12/10/07
to
Am Mon, 10 Dec 2007 16:58:53 +0100 schrieb Ben E. Hard:

> porno...@yahoo.de wrote:
>
>> Hallo,
>>
>> gibt es eine Möglichkeit bestimmte Absätze oder Abschnitte in LaTeX zu
>> schwärzen?

>>

>> Dazu sollte der schwarze Balken auch die Länge des original Textes
>> haben, jedoch muss dieser komplett entfernt werden -- nicht dass man
>> durch einfaches Kopieren ihn wieder erhält.
>>
>> Gibt es dafür ein fertiges Paket oder wie fertige ich einen
>> entsprechenden Befehl selber an?

> Schau dir mal soul an. Damit kann man farbig hinterlegen, die Farbe lässt
> sich einstellen.

Nur farbig hinterlegen wird aber das Kopieren nicht verhindern. Da
muss man den Text schon wirklich verschwinden lassen:

\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{soul}
\makeatletter
\DeclareRobustCommand{\geheim}{%
\def\SOUL@everytoken{\phantom{\the\SOUL@token}}\SOUL@}
\makeatother

\begin{document}

ein Text mit einem geheimen Inhalt.

ein Text mit einem \geheim{geheimen Inhalt}.

\end{document}

--
Ulrike Fischer

Uwe Siart

unread,
Dec 11, 2007, 1:38:59 AM12/11/07
to
Ulrike Fischer <ne...@nililand.de> writes:

> \usepackage{soul}
> \makeatletter
> \DeclareRobustCommand{\geheim}{%
> \def\SOUL@everytoken{\phantom{\the\SOUL@token}}\SOUL@}
> \makeatother

Hey, das ist ja mal wieder ein Wurf! Den muss ich gleich in meinem
Werkzeugkasten bunkern. Was meinst du, wieviele Aufgabenblatt-
Lösungsblatt-Macher soetwas suchen :-))

--
Uwe

Ulrike Fischer

unread,
Dec 11, 2007, 3:16:58 AM12/11/07
to

Solange sie daran denken, dass Soul-Befehle gewisse Einschränkungen
beim Argument verlangen ...


--
Ulrike Fischer

porno...@yahoo.de

unread,
Dec 11, 2007, 4:25:47 AM12/11/07
to
Hallo Ulrike,

danke für dein Beispiel. Es funktioniert wirklich gut. Gibt es auch
eine Möglichkeit zusätzlich einen schwarzen Balken an die Stellen zu
bekommen, wo der Text war? Ein einfaches hinzufügen von \hl{...}
produziert nur einige Fehler sowie einen viel zu kurzen Balken. Die
Buchstaben müssen nicht unbedingt vollständig entfernet werden. Es
würde auch reichen, wenn sie z.B. jeweils nur durch "?" ersetzt
werden.

Immerhin: solange ich das Dokument nur ausdrucken möchte, reicht die
\hl{...}-Variante mit schwarzen Balken. Aber manchmal möchte man doch
ein PDF rausgeben :)

Danke, Rico

Ulrike Fischer

unread,
Dec 11, 2007, 4:58:07 AM12/11/07
to
Am Tue, 11 Dec 2007 01:25:47 -0800 (PST) schrieb
porno...@yahoo.de:

> Hallo Ulrike,
>
> danke für dein Beispiel. Es funktioniert wirklich gut. Gibt es auch
> eine Möglichkeit zusätzlich einen schwarzen Balken an die Stellen zu
> bekommen, wo der Text war? Ein einfaches hinzufügen von \hl{...}
> produziert nur einige Fehler sowie einen viel zu kurzen Balken. Die
> Buchstaben müssen nicht unbedingt vollständig entfernet werden. Es
> würde auch reichen, wenn sie z.B. jeweils nur durch "?" ersetzt
> werden.

die Buchstaben mit einem ? ersetzen ist leicht. Da musst du nur
statt
"\phantom{\the\SOUL@token}" "?" benutzen. Das ändert aber die Breite
des Textes.

Zum überschreiben: Also zuerst einmal fehlte bei \geheim ein
setup-Befehl (ohne den würde vorhergehende soul-Befehle wie \hl sich
einmischen).

\DeclareRobustCommand{\geheim}{%
\SOUL@setup
\def\SOUL@everytoken{%


\phantom{\the\SOUL@token}}\SOUL@}
\makeatother

Zweitens kann man im Prinzip überschreiben leicht erreichen, indem
man \SOUL@ulunderline abändert. Das ändert natürlich auch \ul und
\hl!!! Für eine sichere Lösung, muss man in soul.sty durch die
diversen Befehle gehen, und zu den ul und hl-Befehlen analoge
\Soul@geheim....-Befehle bauen.


\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}

\usepackage{soul,xcolor}
\makeatletter

\def\SOUL@geheimunderline#1{{%
\setbox\z@\hbox{#1}%
\dimen@=\wd\z@
\dimen@i=\SOUL@uloverlap
\advance\dimen@2\dimen@i
\rlap{%
\null
\kern-\dimen@i
\SOUL@ulcolor{\SOUL@ulleaders\hskip\dimen@}%
}%
\phantom{#1}%
}}

\DeclareRobustCommand{\geheim}{%
\let\SOUL@ulunderline\SOUL@geheimunderline
\SOUL@hlsetup\SOUL@}
\makeatother

\begin{document}
\sethlcolor{yellow}

ein Text mit einem \hl{geheimen Inhalt}.

ein Text mit einem \geheim{geheimen Inhalt}.

\hl{geheim}

porno...@yahoo.de

unread,
Dec 11, 2007, 5:14:34 AM12/11/07
to
Die Variante reicht mir vollkommen aus, da ich hl sonst nicht benutze.

Vielen Dank und schöne Weihnachtsfeiertage!

Georg Verweyen

unread,
Dec 11, 2007, 10:38:52 AM12/11/07
to
porno...@yahoo.de schrieb:
> Hallo,

Lieber Rico,
du hast ja zahlreiche Antworten bekommen, weil die Frage zwar nicht neu
aber interessant war. Wirklich neu war (im deutschsprachigen Bereich)
Ulrikes Antwort!
Im Allgemeinen antworten hier nur wenige Menschen auf »Pornomücken«,
»Lillisternchen« oder »12345...@online.de«. Auch Google-Groups kann
echte Namen anzeigen: http://kuerzer.de/EchterName

Gruß, Georg

Christian Winkel

unread,
Jun 29, 2009, 2:05:51 PM6/29/09
to
Hallo

in Bezug auf Artikel ( ja ich weiß, sehr alt -aber der einzige zu diesem
Thema)

http://newsgroups.derkeiler.com/Archive/De/de.comp.text.tex/2007-12/
msg00493.html

habe ich eine Frage.

Kann man den Befehl \geheim{ so erweitern, das er auch ganze Textblöcke,
die auch Kommandos wie z.B. \unit enthalten schwärzen kann?

In der jetztigen Version ist das nicht möglich und wir mit dem Fehler
"extra }" abgebrochen.

vielen Dank

Christian

Uwe Siart

unread,
Jun 30, 2009, 2:34:25 AM6/30/09
to
Christian Winkel <use...@christian-winkel.org> writes:

> Kann man den Befehl \geheim{ so erweitern, das er auch ganze Textbl�cke,
> die auch Kommandos wie z.B. \unit enthalten schw�rzen kann?
>
> In der jetztigen Version ist das nicht m�glich und wir mit dem Fehler
> "extra }" abgebrochen.

Das k�nnte etwas damit zu tun haben:

,----[ http://www.dante.de/faq/de-tex-faq/ ]
| 5.1.9 Wie kann ich innerhalb des optionalen Arguments einer Anweisung
| zus�tzliche eckige Klammern, beispielsweise die eines optionalen
| Arguments einer anderen Anweisung, verwenden?
`----

--
Uwe

Ulrike Fischer

unread,
Jun 30, 2009, 2:59:53 AM6/30/09
to
Am 29 Jun 2009 18:05:51 GMT schrieb Christian Winkel:

> Hallo
>
> in Bezug auf Artikel ( ja ich wei�, sehr alt -aber der einzige zu diesem
> Thema)

In der franz�sischen Gruppe gab es mal eine Diskussion zu einem
�hnlichen Befehl namens \secret

Suchworte in google.groups:
\usepackage secret soul group:fr.comp.text.tex

> Kann man den Befehl \geheim{ so erweitern, das er auch ganze Textbl�cke,
> die auch Kommandos wie z.B. \unit enthalten schw�rzen kann?
>
> In der jetztigen Version ist das nicht m�glich und wir mit dem Fehler
> "extra }" abgebrochen.

\geheim beruht auf den Befehlen von soul. Und bei denen kann man
nicht alles im Argument verwenden. Was geht, was nicht geht, und
Tipps wie man einige Probleme umgehen kann, stehen in der
Dokumentation von soul.

--
Ulrike Fischer

Christian Winkel

unread,
Jun 30, 2009, 3:58:40 AM6/30/09
to
Danke!


Ulrike Fischer schrieb:
[...]


>
> \geheim beruht auf den Befehlen von soul. Und bei denen kann man
> nicht alles im Argument verwenden. Was geht, was nicht geht, und
> Tipps wie man einige Probleme umgehen kann, stehen in der
> Dokumentation von soul.
>

In der Doku von SOUL hab ich es gefunden.
Da ich mich in Latex noch nicht so 100% auskenne habe ich nicht in der
original Befehlsdefinition rumgespielt, sondern den neuen Befehl
\cgeheim erstellt. Mit dem scheint es zu funktionieren.

\newcommand{\cgeheim}[1]{\geheim{\mbox{#1}}}

Sachen, die in einer mbox sind scheint SOUL zu fressen.

Sollte es noch "Nebenwirkungen" geben werde ich es posten.

Danke


Christian

Uwe Siart

unread,
Jun 30, 2009, 4:05:01 AM6/30/09
to
Christian Winkel <use...@christian-winkel.org> writes:

> \newcommand{\cgeheim}[1]{\geheim{\mbox{#1}}}
>
> Sachen, die in einer mbox sind scheint SOUL zu fressen.
>
> Sollte es noch "Nebenwirkungen" geben werde ich es posten.

Eine wird ganz sicher der fehlende Zeilenumbruch sein ...

--
Uwe

Christian Winkel

unread,
Jun 30, 2009, 4:08:45 AM6/30/09
to
Hallo


Uwe Siart schrieb:

ja... sehe ich jetzt auch. Es lief so sch�n ohne Fehler aber da wo ich
lange passagen habe fehlt der Umbruch.

Gibt es da eine Alternative?

0 new messages