Das Problem war hier schon mal Thema, aber mir gelingt es nicht, die Lösung umzusetzen. Wie kann ich an die Definition, die zwischen %Ausgangscode und %endAusgangscode gegeben ist, einen Parameter so übergeben, daß immer dort wo "any" erscheint, ein beliebiger Text erscheint, sodaß ich die einfache anynotes-Definition in beliebig viele Definitionen transformieren kann(anynotes, mynotes, newnotes.. etc)?

Open in writeLaTeX
 \documentclass[a4paper]{article} 
    \usepackage[utf8]{inputenc} 
    \usepackage[T1]{fontenc}                 
    \usepackage[ngerman]{babel} 
    %Ausgangscode
    \newcounter{anynote}
    \newwrite\theanynotes
    \immediate\openout\theanynotes=\jobname.any\relax
    \newcommand{\anynote}[1]{
    \stepcounter{anynote}{\tiny\textsuperscript{\raisebox{1ex}{\hbox{\kern-0.0em\theanynote\kern-0.0em}}}}
    \immediate\write\theanynotes{\theanynote\ #1 \par}}
    \newcommand{\displayanynotes}[1]{\vspace{1\baselineskip}\immediate\closeout\theanynotes\par\tiny\textbf{#1}\par\input\jobname.any\normalsize}%
    %endAusgangscode
    \begin{document}
    Hier ist der\anynote{anynote}Testtext.
    Hier ist der\anynote{anynote}Testtext.
    \displayanynotes{Anynotes}
    \end{document}

gefragt 23 Mär '14, 20:20

ctansearch's gravatar image

ctansearch
(inaktiv)
Akzeptiert: 84%

bearbeitet 24 Mär '14, 15:07

Clemens's gravatar image

Clemens
19.0k113060


Das kann man so machen: einen Befehl drum herum basteln:

Open in writeLaTeX
\newcommand\newnotetype[1]{%
  ...
}

in diesem Befehl jedes Vorkommnis von »any« durch #1 ersetzen. Wenn das Teile von Makronamen betrifft, diese mit \csname ...\endcsname aufrufen und wo nötig rechtzeitig expandieren, z.B. bei

Open in writeLaTeX
\expandafter\newwrite\csname the#1notes\endcsname

Außerdem muss man jedes vorherige auftauchen von #1 durch ##1 ersetzen (grundsätzlich gilt: jedes # muss verdoppelt werden -- bei weiterer Verschachtelung würde aus ##1 dann konsequenterweise ein ####1):

Open in writeLaTeX
\documentclass[a4paper]{article} 
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc}                 
\usepackage[ngerman]{babel}

\newcommand\newnotetype[1]{%
  \newcounter{#1note}%
  \expandafter\newwrite\csname the#1notes\endcsname
  \expandafter\immediate\expandafter\openout
    \csname the#1notes\endcsname=\jobname.#1\relax
  %
  \expandafter\newcommand\csname#1note\endcsname[1]{%
    \stepcounter{#1note}%
    {%
      \tiny\textsuperscript{%
        \raisebox{1ex}{\hbox{\kern-0.0em\csname the#1note\endcsname\kern-0.0em}}%
      }%
    }%
    \expandafter\immediate\expandafter\write\csname the#1notes\endcsname
      {\csname the#1note\endcsname\ \unexpanded{##1 \par}}%
  }%
  %
  \expandafter\newcommand\csname display#1notes\endcsname[1]{%
    \vspace{1\baselineskip}%
    \expandafter\immediate\expandafter\closeout
    \csname the#1notes\endcsname
    \par\tiny\textbf{##1}\par
    \input\jobname.#1\normalsize
  }%
}

\newnotetype{any}
\newnotetype{my}
\newnotetype{foo}

\begin{document}

Hier ist der\anynote{any note} Testtext.
Hier ist der\mynote{my note} Testtext.
Hier ist der\anynote{any note} Testtext.
Hier ist der\foonote{foo note} Testtext.
Hier ist der\foonote{foo note} Testtext.
Hier ist der\mynote{my note} Testtext.

\displayanynotes{Any notes}

\displaymynotes{My notes}

\displayfoonotes{Foo notes}

\end{document}

alt text

Permanenter link

beantwortet 24 Mär '14, 05:11

Clemens's gravatar image

Clemens
19.0k113060

bearbeitet 25 Mär '14, 03:23

@Clemens Sehr schöne Lösung. Mit \textcolor{red}{\anynote{any}} kann man zusätzlich jede Markierung farblich nach Belieben kennzeichnen.

(24 Mär '14, 18:17) ctansearch

@ctansearch man könnte auch die Definition von \newnotetype so abändern, dass man eine gewünschte Farbe für die Nummern angibt. Dann könnte man im Text weiterhin einfach \anynote verwenden. Man kann natürlich auch durch umdefinieren von \theanynote einfach die Zählerdarstellung ändern, zum Beispiel in alphabetische Zählung

(24 Mär '14, 20:04) Clemens

Zur Vervollständigung: Im folgenden Code kann man beliebig viele neue Notes-Typen anlegen, diese farblich absetzen und in einer Tabelle oder nach Belieben auflisten. Den Code integriere ich später in mbenotes.sty, er funktioniert aber auch eigenständig.

Open in writeLaTeX
\documentclass[a4paper]{article} 
  \usepackage[utf8]{inputenc} 
  \usepackage[T1]{fontenc}                 
  \usepackage[ngerman]{babel} 
    \usepackage{xcolor}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%newNOTES%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \newcommand\newnotestype[2]{%
     \newcounter{#1note}%
      \expandafter\newwrite\csname the#1notes\endcsname
      \expandafter\immediate\expandafter\openout\csname
      the#1notes\endcsname=\jobname.#1\relax %
     \expandafter\newcommand\csname  #1note\endcsname[1]{%
     \stepcounter{#1note}%
        {%
     \tiny\textsuperscript\expandafter\textcolor{#2}{{%
     \raisebox{1ex}{\hbox{\kern-0.0em\csname
     the#1note\endcsname\kern-0.0em}}}}%
    \expandafter\immediate\expandafter\write\csname the#1notes\endcsname%
     {\csname the#1note\endcsname\ \unexpanded{##1 \par}}%
      }}%
      %
      \expandafter\newcommand\csname display#1notes\endcsname[1]{%
     \vspace{1\baselineskip}%
     \expandafter\immediate\expandafter\closeout%
     \csname the#1notes\endcsname%
     \par\tiny\expandafter\textcolor{#2}{\textbf{##1}}\par%
     \input\jobname.#1%
     }}%
    \usepackage{longtable}
    \parindent=0pt
    \newnotestype{new}{red}
    \newnotestype{ade}{magenta}
    \newnotestype{any}{blue}
    \begin{document} 
    Ein Testtext\adenote{Anmerkung} mit vier\newnote{Anmerkung}
    verschiedenen\anynote{Anmerkung}\newnote{Anmerkung} farblich gekennzeichneten
    Anmerkungen.Ein Testtext ohne verschiedene farbliche Anmerkungen.
    \vspace{-2\baselineskip}
    \begin{longtable}[l]{p{2cm}p{2cm}p{2cm}}
    \displaynewnotes{new}&\displayadenotes{ade}&\displayanynotes{any}\\
    \end{longtable}
    \end{document}
Permanenter link

beantwortet 26 Mär '14, 20:11

ctansearch's gravatar image

ctansearch
(inaktiv)

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×45
×15

Frage gestellt: 23 Mär '14, 20:20

Frage wurde angeschaut: 3,003 Mal

Zuletzt aktualisiert: 26 Mär '14, 20:11