\hrulefill tiefer stellen & horizontal zentr. (multicols

Tabellen und Grafiken erstellen und anordnen


wojoeraf
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 24. Dez 2012, 14:07

\hrulefill tiefer stellen & horizontal zentr. (multicols

Beitrag von wojoeraf »

Moin,

wie kann ich eine \hrulefill Linie wie im Minimalbeispiel gegeben, tiefer stellen und zusätzlich horizontal zentrieren?
Die Linie soll als Platzhalter für eine handschriftliche Lösung dienen. Und für diese Zwecke ist die Linie noch zu weit oben.
\documentclass[a4paper,12pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{enumitem}
\usepackage{multicol}

\begin{document}
\begin{multicols}{2}
\begin{enumerate}[label=\alph{*})]
\item $\int_{a}^{b}f(x) \ dx$ = \hrulefill
\item $\int_{b}^{a}f(x)g(x) \ dx$ = \hrulefill
\item $\int_{b}^{a}f(x) \ dx$ = \hrulefill
\item $\int_{b}^{a}f(x)g(x)+c \ dx$ = \hrulefill
\end{enumerate}
\end{multicols}
\end{document}
Danke schonmal für eure Hilfe.

Grüße
Rafi

rais
Forum-Guru
Forum-Guru
Beiträge: 413
Registriert: Di 21. Sep 2010, 00:37

Re: \hrulefill tiefer stellen & horizontal zentr. (multi

Beitrag von rais »

Moin moin,
wojoeraf hat geschrieben: wie kann ich eine \hrulefill Linie wie im Minimalbeispiel gegeben, tiefer stellen und zusätzlich horizontal zentrieren?
Die Linie soll als Platzhalter für eine handschriftliche Lösung dienen. Und für diese Zwecke ist die Linie noch zu weit oben.
vielleicht ist es übertrieben, dafür eine tabularx herzunehmen, aber...
\documentclass[a4paper,12pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{tabularx}
\newcommand*\myitem[1]{%
  \item
    \begin{tabularx}{\linewidth}{@{}>{\raggedleft$}p{0.5\columnwidth}<{=$}X@{}}
      #1 &~\tabularnewline
      \cline{2-2}
    \end{tabularx}%
}
\begin{document}
\begin{multicols}{2}
\begin{enumerate}[label=\alph{*})]
\myitem{\int_{a}^{b}f(x) \ dx}
\myitem{\int_{b}^{a}f(x)g(x) \ dx}
\myitem{\int_{b}^{a}f(x) \ dx}
\myitem{\int_{b}^{a}f(x)g(x)+c \ dx}
\end{enumerate}
\end{multicols}
\end{document}
Frohes Fest
Rainer
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

wojoeraf
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 24. Dez 2012, 14:07

Beitrag von wojoeraf »

Hey Rainer,

vielen Dank für deinen Vorschlag. Das sieht besser aus. Allerdings (das habe ich vorher nicht erwähnt ^^) wäre es für ein Arbeitsblatt schöner, wenn die Aufgaben nicht rechtsbündig wären sonder linksbündig, dafür aber die Gleichheitszeichen horizontal ausgerichtet wären. Hab da schon versucht drin rumzupfuschen, funktioniert aber nicht wirklich:
%Code tut nicht, was ich beabsichtigt habe:
\newcommand*\myitem[1]{%
  \item
    \begin{tabularx}{\linewidth}{@{}>{\raggedright\arraybackslash$}p{0.5\columnwidth}<{\raggedleft=$}X@{}}
      #1 &~\tabularnewline
      \cline{2-2}
    \end{tabularx}%
}
Und was leider nicht optimal ist, dass man 0.5\columnwidth verwendet. Besser und effizinter wäre es, wenn alle Gleichheitszeichen einer Spalte eben soweit nach rechts gehen, wie das Gleichheitszeichen der längsten Aufgabe. Und die Linie dann den restlichen Raum füllt.

rais
Forum-Guru
Forum-Guru
Beiträge: 413
Registriert: Di 21. Sep 2010, 00:37

Beitrag von rais »

meinst Du das so?
\documentclass[a4paper,12pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{tabularx}
\newlength\mylen
\settowidth\mylen{$\int_{b}^{a}f(x)g(x)+c$}
\newcommand*\myitem[1]{%
  \item
    \begin{tabularx}{\linewidth}{@{}>{$}p{\mylen}<{$}@{$\quad dx=\ $}X@{}}
      #1 &~\tabularnewline
      \cline{2-2}
    \end{tabularx}%
}
\begin{document}
\begin{multicols}{2}
\begin{enumerate}[label=\alph{*})]
\myitem{\int_{a}^{b}f(x)}
\myitem{\int_{b}^{a}f(x)g(x)}
\myitem{\int_{b}^{a}f(x)}
\myitem{\int_{b}^{a}f(x)g(x)+c}
\end{enumerate}
\end{multicols}
\end{document}
Frohes Fest
Rainer
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

wojoeraf
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 24. Dez 2012, 14:07

Beitrag von wojoeraf »

Ja, das kommt schon eher hin, ist allerdings zu kompliziert für 80 Seiten Aufgaben.

Meine Idee war nun also mir eine Länge zu definieren, die ich in jeder multicols-Umgebung mit einem neuen Wert belege und damit die Breite für jede multicols-Umgebung anpasse.
Allerdings bekomme ich einen Fehler bei folgendem Code:
\documentclass[a4paper,12pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{tabularx}
\newlength\mylen
\setlength{\mylen}{1pt}
\newcommand{\mylenset}[1]{\settowidth{\mylen}{#1\columnwidth}}
\newcommand*\myitem[1]{%
  \item
    \begin{tabularx}{\linewidth}{@{}>{$}p{\mylen}<{$}@{$\ =\ $}X@{}}
      #1 &~\tabularnewline
      \cline{2-2}
    \end{tabularx}%
}
\begin{document}
\begin{multicols}{2}
\mylenset{0.4}
\begin{enumerate}[label=\alph{*})]
\myitem{\int_{a}^{b}f(x)\ dx}
\myitem{\int_{b}^{a}f(x)g(x)\ dx}
\myitem{\int_{b}^{a}f(x)\ dx}
\myitem{\int_{b}^{a}f(x)g(x)+c\ dx}
\end{enumerate}
\end{multicols}
\end{document} 

rais
Forum-Guru
Forum-Guru
Beiträge: 413
Registriert: Di 21. Sep 2010, 00:37

Beitrag von rais »

wojoeraf hat geschrieben: Meine Idee war nun also mir eine Länge zu definieren, die ich in jeder multicols-Umgebung mit einem neuen Wert belege und damit die Breite für jede multicols-Umgebung anpasse.
[...]
\newlength\mylen
\setlength{\mylen}{1pt}
\newcommand[1]{\mylenset}{\settowidth{\mylen}{#1\columnwidth}}
 
einmal abgesehen davon, daß \newcommand erst den zu definierenden Befehl bekommt und erst danach eine etwaige Anzahl an Parametern, hängt die Definition mit davon ab, wie Du \mylenset aufrufen willst bzw. was genau Du erwartest. Für \mylenset{Faktor für \columnwidth} etwa, ginge
\newcommand{\mylenset}[1]{\setlength{\mylen}{#1\columnwidth}}
Wenn Dir stattdessen eine Definition a la `mach \mylen so breit wie ...' vorschwebt, dann ginge
\newcommand{\mylenset}[1]{\settowidth{\mylen}{\ensuremath{#1}}}
mit entsprechendem Aufruf von \mylenset
\mylenset{\int_{b}^{a}f(x)g(x)+c\ dx}
oder was dann auch immer gerade Dein breitester Term ist.

MfG
Rainer
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

wojoeraf
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 24. Dez 2012, 14:07

Beitrag von wojoeraf »

Da hatte ich Tomaten auf den Augen. Habe in meiner Version \setlength haben wollen, aber irgendwie \settowidth drin stehen gehabt. Und ich wundere mich die ganze Zeit, warum das nicht geht. (Abgesehen davon, dass ich die Anzahl an Parametern an der falschen Stelle hatte, was mir aber auch kurz vorher aufgefallen ist.)

Danke soweit für deine Hilfe.

Viele Grüße
Rafi

Antworten