Farbige Box nach Paragraph-Heading

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Farbige Box nach Paragraph-Heading

von mais88 » Mi 1. Mai 2013, 17:22

Oha, vielen Dank! Ich habe das übernommen!

Da merkt man doch eine dezente Erfahrungsdifferenz. :-)

von u_fischer » Mi 1. Mai 2013, 15:46

Die ganze Definition ist verkorkst. Die vielen ifthenelse sind unnötig, die minipage ist zweifelhaft (eine einfachere Box reicht völlig) und Seitenumbrüche zwischen der Überschrift und dem nachfolgenden Text werden nicht unterdrückt.

Du solltest sowas besser mit \@startsection machen (falls die Überschriften sind in die Hierarchie einordnen sollen), oder dich an der Definition von minisec orientieren:
\documentclass[paper=a4,11pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[usenames,svgnames]{xcolor}
\usepackage{ifthen}
\usepackage{lipsum}
\parskip10pt
\parindent0pt

\colorlet{used}{Green!75}
\colorlet{usable}{Orange!75}
\colorlet{unusable}{Red!75}

\newcounter{myparagraph}
\makeatletter
\newcommand\myparagraph[2][]{%
 \refstepcounter{myparagraph}%
  \@afterindentfalse \vskip 1.5ex
  {\parindent\z@
   \setlength{\parfillskip}{\z@ plus 1fil}%
    \raggedsection\normalfont\sectfont\nobreak
    \usekomafont{minisec}%
    \ifthenelse{\equal{#1}{}}
    {}
    {\raisebox{.25ex}{\fcolorbox{black}{#1}{\rule{0pt}{1.2ex}\hspace{1.2ex}}}\hspace{1.2ex}}%
    \themyparagraph~#2\par\nobreak}\nobreak%
  \@afterheading
}
\makeatother
\begin{document}
    \myparagraph[used]{Test}
    \lipsum[1]

    \myparagraph[usable]{Test}
    \lipsum[1]

    \myparagraph[unusable]{Test}
    \lipsum[1]
    
    \myparagraph{Test}
    blub
\end{document}

von mais88 » Mi 1. Mai 2013, 14:26

Okay, danke soweit!

Noch eine Frage an die LaTeX--Spezialisten:

Ich möchte teilweise zwischen diesen einzelnen myparagraphs verweisen.
Ist es sehr übertrieben/schlecht programmiert wenn ich das Command folgendermaßen erweitere?
% Mein Abschnitt
\newcommand{\myparagraph}[3][0]{%
{\normalfont\normalsize\bfseries
\ifthenelse{\equal{#1}{0}}{%
\phantomsection
#2%
\label{myp:#3}

}{}
\ifthenelse{\equal{#1}{used}}{%
\phantomsection
\raisebox{.4ex}{\fcolorbox{black}{Green!75}{\begin{minipage}{.5ex}\hfill\vspace{.5ex}\end{minipage}}}~#2%
\label{myp:#3}

}{}
\ifthenelse{\equal{#1}{usable}}{%
\phantomsection
\raisebox{.4ex}{\fcolorbox{black}{Orange!75}{\begin{minipage}{.5ex}\hfill\vspace{.5ex}\end{minipage}}}~#2%
\label{myp:#3}

}{}
\ifthenelse{\equal{#1}{unusable}}{%
\phantomsection
\raisebox{.4ex}{\fcolorbox{black}{Red!75}{\begin{minipage}{.5ex}\hfill\vspace{.5ex}\end{minipage}}}~#2%
\label{myp:#3}

}{}
}}
Vielleicht auch mit kurzer Begründung :-)
Danke!

von Epllus » So 28. Apr 2013, 16:35

Zur Numerierung:
\documentclass[paper=a4,11pt]{scrartcl} 
\usepackage[ngerman]{babel} 
\usepackage[ansinew]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[usenames,svgnames]{xcolor} 
\usepackage{ifthen} 
\usepackage{lipsum,hyperref} 
\parskip10pt 
\parindent0pt 

\setcounter{secnumdepth}{5}	
\setcounter{tocdepth}{5}		

\newcounter{pcount}

% Definition  
%%% Wenn du keinen Absatz nachher möchstest, kommentiere die Leerzeilen aus
\newcommand{\myparagraph}[2][0]{\refstepcounter{pcount}% 
{\normalfont\normalsize\bfseries 
\ifthenelse{\equal{#1}{0}}{% 
#2~\thepcount% 

}{}%
\ifthenelse{\equal{#1}{used}}{% 
\raisebox{.25ex}{\fcolorbox{black}{Green!75}{\begin{minipage}{1.2ex}\hfill\vspace{1.2ex}\end{minipage}}}~#2~\thepcount% 

}{}%
\ifthenelse{\equal{#1}{usable}}{% 
\raisebox{.25ex}{\fcolorbox{black}{Orange!75}{\begin{minipage}{1.2ex}\hfill\vspace{1.2ex}\end{minipage}}}~#2~\thepcount% 

}{}%
\ifthenelse{\equal{#1}{unusable}}{% 
\raisebox{.25ex}{\fcolorbox{black}{Red!75}{\begin{minipage}{1.2ex}\hfill\vspace{1.2ex}\end{minipage}}}~#2~\thepcount% 

}{}%
}} 


\begin{document} 
   \myparagraph[used]{Test} 
   \lipsum[1] \label{ref}

   \myparagraph[usable]{Test} 
   \lipsum[1] 

   \myparagraph[unusable]{Test} 
   \lipsum[1] 

   \autoref{ref}
\end{document} 
Hoffe es hilft
Epllus

Farbige Box nach Paragraph-Heading

von mais88 » So 28. Apr 2013, 12:58

Ich möchte gerne vor (/hinter) jeder Paragraph-Überschrift eine farbige Box haben.
Ich habe das ganze jetzt behelfsmäßig folgendermaßen realisiert:
\documentclass[paper=a4,11pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[usenames,svgnames]{xcolor}
\usepackage{ifthen}
\usepackage{lipsum}
\parskip10pt
\parindent0pt

% Definition
\newcommand{\myparagraph}[2][0]{%
{\normalfont\normalsize\bfseries
\ifthenelse{\equal{#1}{0}}{%
#2%

}{}
\ifthenelse{\equal{#1}{used}}{%
\raisebox{.25ex}{\fcolorbox{black}{Green!75}{\begin{minipage}{1.2ex}\hfill\vspace{1.2ex}\end{minipage}}}~#2%

}{}
\ifthenelse{\equal{#1}{usable}}{%
\raisebox{.25ex}{\fcolorbox{black}{Orange!75}{\begin{minipage}{1.2ex}\hfill\vspace{1.2ex}\end{minipage}}}~#2%

}{}
\ifthenelse{\equal{#1}{unusable}}{%
\raisebox{.25ex}{\fcolorbox{black}{Red!75}{\begin{minipage}{1.2ex}\hfill\vspace{1.2ex}\end{minipage}}}~#2%

}{}
}}

\begin{document}
	\myparagraph[used]{Test}
	\lipsum[1]

	\myparagraph[usable]{Test}
	\lipsum[1]

	\myparagraph[unusable]{Test}
	\lipsum[1]
\end{document}
Nachteile die mir hier auffallen ist der fehlende Bezug zum eigentlichen Paragraph, also die interne Nummerierung und die Verwendbarkeit von bspw. \autoref.

Die Zentrierung der Box ist auch irgendwie gebastelt.

Ich wäre sehr dankbar über einige Verbesserungsvorschläge oder auch einen komplett anderen Weg unter Verwendung des \paragraph's.
Hier habe ich leider keinen Einstiegspunkt gefunden wo ich hätte ansetzen können!

Gruß!
Marcel

Nach oben