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 24 Mär '14, 01:20

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

bearbeitet 24 Mär '14, 20:07

cgnieder's gravatar image

cgnieder
22.1k253463


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, 10:11

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 25 Mär '14, 08: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, 23: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

(25 Mär '14, 01:04) cgnieder

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 27 Mär '14, 01:11

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×52
×18

gestellte Frage: 24 Mär '14, 01:20

Frage wurde gesehen: 12,816 Mal

zuletzt geändert: 27 Mär '14, 01:11