Avatar billede loevgaard Novice
28. december 2011 - 01:19 Der er 21 kommentarer og
1 løsning

At få en counter til at starte forfra

Hej derude!

Jeg søger hjælp angående de der counter niveauer.

Det jeg har lavet er, at hver gang jeg skriver \begin{opgave}, skriver den som en subsection "Opgave {"et nummer her"}, altså den starter med nr. 1 og tæller så opad, afhængig af hvor mange opgaver man vil have.

Men når jeg så laver en ganske almindelig sektion med kommandoen \section{...}, og derefter \begin{opgave}, vil den ikke begynde forfra med tælleren, den fortsætter bare. Og jeg ved det er fordi jeg mangler at definere, at for hver sektion der begynder, skal efterfølgende opgaver begynde forfra... men hvordan gør jeg det.

Alt dette her er skrevet med koden:

\setcounter{secnumdepth}{0}
\newcommand{\opgaveNavn}{}%
\newcounter{opgaveTaeller}%
\newenvironment{opgave}[1][Opgave \arabic{opgaveTaeller}]%
  {\stepcounter{opgaveTaeller}%
  \renewcommand{\opgaveNavn}{#1}%
  \subsection{\opgaveNavn}%
  \enterOpgaveSidehoved{\opgaveNavn}}%
  {\exitOpgaveSidehoved{\opgaveNavn}}%

Det kan ses på følgende billede: http://dl.dropbox.com/u/5941292/LCG.pdf

Det markerede gule, hvor der står Opgave 5, skulle helst begynde med Opgave 1 efter CAD. CAD er skrevet med \section{CAD} og opgave 5 er skrevet med \begin{opgave}, hvilket er en subsection.

Så er der nogen der ved, hvordan jeg får den til at begynde på ny?
Avatar billede JensPeterSvensson Nybegynder
28. december 2011 - 09:36 #1
Kunne du ikke bare finde section commandoen i din latex og tilføje

\setcounter(opgavaTaeller}{0}

Eller i tilfælde af at du bruger en standard layout du ikke ønsker er at ændre permanent i. Kopier section kommandoen ind i din latex fil og erklære den som renewcommand.
Avatar billede Slettet bruger
28. december 2011 - 10:29 #2
(1) hvad er grunden til at du laver overskriften med \subsection? Jeg ville da nærmere anvende ntheorem og så lave en theorem-lignende konstruktion, så laver den overskriften for dig uden kode.

(2) Underlæg opgave tælleren section tælleren.

(1) og (2) står forklaret i min LaTeXbog
Avatar billede loevgaard Novice
28. december 2011 - 12:24 #3
Ok, både Jens og daleif, I må lige forklare hvad I mener, for jeg er ret ny til LaTeX.
Jens, hvilken section-kommando snakker du om, og hvordan erklære den som 'renewcommand'?

Og daleif, både 1 og 2 forstår jeg ingenting af. Det går allerede galt første sætning. Hvilken overskrift er \subsection, når du kigger på dokumentet? CAD eller Opgave # ? For jeg skal måske lige oplyse at CAD er section og Opgave # er subsection.
Og din løsning med ntheorem må du lige give et eksempel på.

Det var måske lidt dumt af mig, ikke at indbringe al kode fra min preamble:

\documentclass[11pt]{article}

\usepackage{amsmath,amsfonts,amsthm,amssymb}
\usepackage[ansinew]{inputenc}
\usepackage{setspace}
\usepackage{fancyhdr}
%\usepackage{lastpage}
\usepackage{extramarks}
\usepackage{chngpage}
\usepackage{soul}
\usepackage[usenames,dvipsnames]{color}
\usepackage{graphicx,float,wrapfig}
\usepackage{ifthen}
\usepackage{listings}
\usepackage{courier}

% Margin indstillinger
\topmargin=-0.45in      %
\evensidemargin=0in    %
\oddsidemargin=0in      %
\textwidth=6.5in        %
\textheight=9.0in      %
\headsep=0.25in        %

% Farven for perl kommentarer
\definecolor{MyDarkGreen}{rgb}{0.0,0.4,0.0}

% For faster processing, load Perl syntax for listings
\lstloadlanguages{Perl}%
\lstset{language=Perl,                        % Use Perl
        frame=single,                          % Single frame around code
        basicstyle=\small\ttfamily,            % Use small true type font
        keywordstyle=[1]\color{Blue}\bf,        % Perl functions bold and blue
        keywordstyle=[2]\color{Purple},        % Perl function arguments purple
        keywordstyle=[3]\color{Blue}\underbar,  % User functions underlined and blue
        identifierstyle=,                      % Nothing special about identifiers
                                                % Comments small dark green courier
        commentstyle=\usefont{T1}{pcr}{m}{sl}\color{MyDarkGreen}\small,
        stringstyle=\color{Purple},            % Strings are purple
        showstringspaces=false,                % Don't put marks in string spaces
        tabsize=5,                              % 5 spaces per tab
        %
        %%% Put standard Perl functions not included in the default
        %%% language here
        morekeywords={rand},
        %
        %%% Put Perl function parameters here
        morekeywords=[2]{on, off, interp},
        %
        %%% Put user defined functions here
        morekeywords=[3]{test},
        %
        morecomment=[l][\color{Blue}]{...},    % Line continuation (...) like blue comment
        numbers=left,                          % Line numbers on left
        firstnumber=1,                          % Line numbers start with line 1
        numberstyle=\tiny\color{Blue},          % Line numbers are blue
        stepnumber=5                            % Line numbers go in steps of 5
        }

% This is used to trace down (pin point) problems
% in latexing a document:
%\tracingall

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Some tools
\newcommand{\enterOpgaveSidehoved}[1]{\nobreak\extramarks{#1}{#1 fortsat på næste side\ldots}\nobreak%
                                    \nobreak\extramarks{#1 (fortsat)}{#1 fortsat på næste side\ldots}\nobreak}%
\newcommand{\exitOpgaveSidehoved}[1]{\nobreak\extramarks{#1 (fortsat)}{#1 fortsat på næste side\ldots}\nobreak%
                                  \nobreak\extramarks{#1}{}\nobreak}%

\newlength{\labelLength}
\newcommand{\labelAnswer}[2]
  {\settowidth{\labelLength}{#1}%
  \addtolength{\labelLength}{0.25in}%
  \changetext{}{-\labelLength}{}{}{}%
  \noindent\fbox{\begin{minipage}[c]{\columnwidth}#2\end{minipage}}%
  \marginpar{\fbox{#1}}%

  % We put the blank space above in order to make sure this
  % \marginpar gets correctly placed.
  \changetext{}{+\labelLength}{}{}{}}%

\setcounter{secnumdepth}{0}
\newcommand{\opgaveNavn}{}%
\newcounter{opgaveTaeller}%
\newenvironment{opgave}[1][Opgave \arabic{opgaveTaeller}]%
  {\stepcounter{opgaveTaeller}%
  \renewcommand{\opgaveNavn}{#1}%
  \subsection{\opgaveNavn}%
  \enterOpgaveSidehoved{\opgaveNavn}}%
  {\exitOpgaveSidehoved{\opgaveNavn}}%

\newcommand{\opgaveSvar}[1]
  {\noindent\fbox{\begin{minipage}[c]{\columnwidth}#1\end{minipage}}}%

\newcommand{\opgaveLSvar}[1]
  {\labelAnswer{\opgaveNavn}{#1}}

\newcommand{\opgaveSektionNavn}{}%
\newlength{\opgaveSektionLL}{}%
\newcounter{opgaveSektionTaeller}
\newenvironment{opgaveSektion}[1][Opgave \arabic{opgaveTaeller}.\arabic{opgaveSektionTaeller}]
  {% We put this space here to make sure we're not connected to the above.
  % Otherwise the changetext can do funny things to the other margin
    \stepcounter{opgaveSektionTaeller}
  \renewcommand{\opgaveSektionNavn}{#1}%
  %\settowidth{\opgaveSektionLL}{\opgaveSektionNavn}%
  %\addtolength{\opgaveSektionLL}{0.25in}%
  %\changetext{}{-\opgaveSektionLL}{}{}{}%
  \subsubsection{\opgaveSektionNavn}%
  \enterOpgaveSidehoved{\opgaveNavn\ [\opgaveSektionNavn]}}%
  {\enterOpgaveSidehoved{\opgaveNavn}%

  % We put the blank space above in order to make sure this margin
  % change doesn't happen too soon (otherwise \sectionAnswer's can
  % get ugly about their \marginpar placement.
  \changetext{}{+\opgaveSektionLL}{}{}{}}%

\newcommand{\sektionSvar}[1]
  {% We put this space here to make sure we're disconnected from the previous
  % passage

  \noindent\fbox{\begin{minipage}[c]{\columnwidth}#1\end{minipage}}%
  \enterOpgaveSidehoved{\opgaveNavn}\exitOpgaveSidehoved{\opgaveNavn}%
  \marginpar{\fbox{\opgaveSektionNavn}}%

  % We put the blank space above in order to make sure this
  % \marginpar gets correctly placed.
  }%

%%% I think \captionwidth (commented out below) can go away
%%%
%% Edits the caption width
%\newcommand{\captionwidth}[1]{%
%  \dimen0=\columnwidth  \advance\dimen0 by-#1\relax
%  \divide\dimen0 by2
%  \advance\leftskip by\dimen0
%  \advance\rightskip by\dimen0
%}

% Includes a figure
% The first parameter is the label, which is also the name of the figure
%  with or without the extension (e.g., .eps, .fig, .png, .gif, etc.)
%  IF NO EXTENSION IS GIVEN, LaTeX will look for the most appropriate one.
%  This means that if a DVI (or PS) is being produced, it will look for
%  an eps. If a PDF is being produced, it will look for nearly anything
%  else (gif, jpg, png, et cetera). Because of this, when I generate figures
%  I typically generate an eps and a png to allow me the most flexibility
%  when rendering my document.
% The second parameter is the width of the figure normalized to column width
%  (e.g. 0.5 for half a column, 0.75 for 75% of the column)
% The third parameter is the caption.
\newcommand{\figur}[3]{
  \begin{figure}[H]
    % Requires \usepackage{graphicx}
    \centering
    \includegraphics[width=#2\columnwidth]{#1}
    %%% I think \captionwidth (see above) can go away as long as
    %%% \centering is above
    %\captionwidth{#2\columnwidth}%
    \caption{#3}
    \label{#1}
  \end{figure}}

% Includes a Perl script.
% The first parameter is the label, which also is the name of the script
%  without the .pl.
% The second parameter is the optional caption.
\newcommand{\perlscript}[2]
  {\begin{itemize}\item[]\lstinputlisting[caption=#2,label=#1]{#1.pl}\end{itemize}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

(Der er selvfølgelig udeladt nogle ting, f.eks. opsætning af sidehoved, forside mv. Endvidere skal det siges, at det er en skabelon jeg har taget udgangspunkt i og så bare forsøgt at ændre lidt i den.)
Avatar billede Slettet bruger
28. december 2011 - 13:29 #4
Vær venlig at lave et minimalt og kompiler part eksempel. Der er sikkert masser af ting i dit eksempel som ikke er relevant for dette. Dit eksempel skal være således at vi andre bare kan smide det ind i vores editor og så oversætte. Det kan man ikke med dit eksempel.

Vedr. \subsection, så kig lige på din egen kode for opgave environmentet, hvad er det lide der står der?

Noget andet:

(1) lær at anvende geometry pakken, sæt ikke marginer pr. håndkraft på den måde

(2) lær at anvende floats ordentligt, ikke dette med [H]. Når foklk har problemer med floats er det mest fordi de ikke kan finde ud af at bruge dem. Et billede skal ikke være HER!, men her omkring således papiret kan udnyttes bedst muligt.

(3) Formoder du er i DK, så husk 'a4paper' option til din klasse
Avatar billede loevgaard Novice
28. december 2011 - 14:24 #5
Det der stod ved opgave environmentet er det jeg skrev til at starte med. Men du vil måske have, at jeg skal kigge nøje efter noget...? Så hvad er det, jeg skal kigge efter og evt. gjort galt? Du kan lige få smøren igen:

\setcounter{secnumdepth}{0}
\newcommand{\opgaveNavn}{}%
\newcounter{opgaveTaeller}%
\newenvironment{opgave}[1][Opgave \arabic{opgaveTaeller}]%
  {\stepcounter{opgaveTaeller}%
  \renewcommand{\opgaveNavn}{#1}%
  \subsection{\opgaveNavn}%
  \enterOpgaveSidehoved{\opgaveNavn}}%
  {\exitOpgaveSidehoved{\opgaveNavn}}%

Og tak for de mange andre tips, bortset fra jeg ikke lige aner hvad geometry-pakken gør fremfor de manuelle marginer. Og floats med [H], hvorfor er den ikke god nok? Det fastlåser jo bare positionen på billedet. I så fald, hvilken løsning ville være mere genial?
Avatar billede Slettet bruger
28. december 2011 - 16:44 #6
Citat fra dit eget indlæg: "Hvilken overskrift er \subsection, når du kigger på dokumentet?" Det kan du jo så nu selv svare på.

(1) Vedr. geometry, der er mange længder der skal justeres i forhold til hinanden. Det sørger geometry pakken for at gøre for dig i stedet for at du skal vide hvordan de hører sammen. F.eks. ønsker man 3cm marginer hele vejen rundt om sin tekst er det nok med \usepackage[margin=3cm]{geometry}, men top, bund, venstre og højre kan også sættes for sig selv.

(2) Figurer skal IKKE låses fast. Har du et stort billedet som ikke kan være på nuværende side, så bliver LaTeX jo nødt til at skifte side, efterladende et stort hul i din PDF. Det ser ikke professionelt ud.

(3) Tjek hvad

\newcounter{opgaveTaeller}[section]

gør
Avatar billede loevgaard Novice
28. december 2011 - 20:50 #7
Det virker faktisk... jeg skulle så lige ændre \setcounter{secnumdepth}{0} til \setcounter{secnumdepth}{1}. Så nu er der et tal ud for hver overskrift, som jeg ikke videre er tilfreds med. Altså hvis du kigger på billedet (http://dl.dropbox.com/u/5941292/LCG.pdf)
kan du se, at der IKKE står et tal ud for Landmåling og CAD, men det gør der nu, hvilket jeg ikke vil have den til.

Ikke at jeg ikke kan leve med det, men har du en løsning til dette problem. Det virker heller ikke at tilføje * efter section, således
\section*{Landmåling}

I hvert fald, jeg fik svar på mit spørgsmål, så bare lav et random svar, så giver jeg dig point, daleif :) Og tak for hjælpen!
Avatar billede Slettet bruger
29. december 2011 - 10:30 #8
Hvis du nu starter med i ord at forklare hvad det præcis var du ville til at begynde med, så kunne det jo være at vi kunne lave noget der var en del bedre end det du havde kogt sammen.
Avatar billede loevgaard Novice
29. december 2011 - 11:02 #9
Jamen fair nok!

Jeg vil sådan set bare lave en opgaveskabelon.

I den opgaveskabelon, skal der være 3 dele eller flere om man ønsker (som du så på pdf'en, var Landmåling og CAD hver for sig en del).
Disse dele skal være overskrifter uden nummer (altså sektion uden nummer).

I de dele skal der være opgaver under (dvs. 'subsection' til delene, og underopgaver ('subsubsection'), hvis man ønsker underopgaver.

Navngivning af opgaverne skal foregå sådan, at ved opgaverne skal der være et tal og underopgaver to tal, f.eks.
Opgave 3
  Opgave 3.1 ... 3.2 ... 3.3
Opgave 4
  Opgave 4.1 ....

Og som jeg var inde på før, så skal opgaverne starte forfra hver gang der kommer en overskrift. Det skal foregå ca. således hele skabelonen:

"Overskrift"

Opgave 1
  Opgave 1.1
  Opgave 1.2
  Opgave 1.3
  ...
Opgave 2

Opgave 3
  Opgave 3.1 ... 3.2 ... 3.3

"Overskrift"
Opgave 1

Opgave 2
  Opgave 2.1
  Opgave 2.2

...osv, afhængig af hvor mange man nu ønsker.


Hvad jeg også fik til at virke med min kogegryde var en overskrift i forlængelse med 'Opgave #'-overskriften. F.eks.

Opgave 3  Kogegryde
  Opgave 3.1
  Opgave 3.2
Opgave 4  Tandpasta...

Men ja, siden du spørger, er det så fordi det kan gøres meget enklere? :D
Avatar billede Slettet bruger
29. december 2011 - 11:15 #10
Hvordan skal notationen for underopgaver være? Jeg synes generelt ikke at en opgave skal skal indikeres med en overskrift, jeg vil gerne have et environment omkring hele opgaven. Så er det meget mere overskueligt i kildekoden. Derfor ville det også være rart at vide hvilken syntaks man gerne ville anvende til underopgaver, enumerate?
Avatar billede loevgaard Novice
29. december 2011 - 11:52 #11
I den jeg har nu skal jeg bare skrive

\begin{opgave}
  \begin{underopgave}
  \end{underopgave}
\end{opgave

eller for sig selv
\begin{underopgave}
\end{underopgave}

Hvor ulempen ved førstnævnte er, at hvis der er mange underopgaver i en opgave, strækker den ud over siden, hvilket ser dumt ud.

Anyway, så lyder enumerate fint, men jeg kan bare ikke lige se hvorfor det skulle være uoverskueligt eller ikke virke?
Avatar billede Slettet bruger
29. december 2011 - 12:05 #12
Det lyder lidt underligt mange underopgaver skulle hælde ud over siden. Det lyder som en dårlig definition.

Nu kender jeg ikke længden af underopgaverne, grunden til at jeg ville anvende enumerate er fordi jeg synes følgende er lidt rigeligt at skrive

\begin{underopgave}
Vis også $x=5$.
\end{underopgave}
Avatar billede loevgaard Novice
29. december 2011 - 12:22 #13
Javel! Du siger, at det er for meget, eller hvad mener du med "rigeligt"?

Men hvis du mener enumerate er bedre at bruge, fint nok... det er dig der er eksperten her :)

Altså, det jeg mener med, at det hælder ud over siden er, at en opgave bare fortsætter lodret i det uendelige og ikke går videre til næste side, hvis der er for mange underopgaver.
Avatar billede Slettet bruger
29. december 2011 - 12:25 #14
Dette er meget lig det du allerede anvender. Tricket er bare at gemme nogle ting væk. Jeg er ikke helt glad for dette med at have flere opgaver med nummer 1.

\documentclass[a4paper]{memoir}
\usepackage{enumitem}
\setlist{ 
  listparindent=\parindent,
  parsep=0pt,
}
\newcounter{dlf}% master
\newcounter{exercise}[dlf]
\renewcommand\theexercise{\arabic{exercise}}
\newcommand\ExerciseHeader[1]{
  \section*{#1}
  \refstepcounter{dlf}
}

\newenvironment{exercise}{%
  \refstepcounter{exercise}
  \subsection*{Opgave~\theexercise}}{}

\newlist{subexercises}{enumerate}{1}
\setlist[subexercises]{
  label=\textit{\theexercise.\alph*},
  ref=\theexercise.\alph*
}
\begin{document}

\ExerciseHeader{CAD}

\begin{exercise}
  \begin{subexercises}
  \item bla bla
  \item \label{subex:1} bla bla
  \end{subexercises}
  Noget tekst
  \begin{subexercises}[resume*]
  \item bla bla
  \item bla bla, hint: brug \ref{subex:1}
  \end{subexercises}
\end{exercise}

\begin{exercise}
  sdf
\end{exercise}

\begin{exercise}
  sdf
\end{exercise}

\ExerciseHeader{TEST}

\begin{exercise}
  sdf
\end{exercise}

\begin{exercise}
  sdf
\end{exercise}

\begin{exercise}
  sdf
\end{exercise}



\end{document}
Avatar billede Slettet bruger
29. december 2011 - 12:27 #15
@#13: så er det fordi der er anvendt en meget dårlig konstruktion. Er det ikke de Svar makroer som har skylden? De kan ikke deles over sider.
Avatar billede loevgaard Novice
29. december 2011 - 14:01 #16
Det er jo vildt så vild du er til LaTeX!

Et sidste spørgsmål, som jeg var inde på i indlæg #9

"Hvad jeg også fik til at virke med min kogegryde var en overskrift i forlængelse med 'Opgave #'-overskriften. F.eks.

Opgave 3  Kogegryde
  Opgave 3.1
  Opgave 3.2
Opgave 4  Tandpasta..."

Jeg prøvede at lege lidt med de indstillinger du gav mig

\newenvironment{exercise}[1]{%
  \refstepcounter{exercise}
  \subsection*{Opgave~\theexercise \hspace{1cm} #1}}{}

Det bold-markerede er det jeg tilføjede og det kom da også til at se ud som jeg havde tiltænkt, nemlig (f.eks.)

\begin{exercise}{Punkter} -->
Opgave 1    Punkter


men i de andre opgaver uden overskrift, således med dit eksempel

\begin{exercise}
  sdf
\end{exercise} -->

Opgave #    s
df

Altså et bogstav i forlængelse af overskrift og resten nedenunder... og kan ikke lige se i koden hvad der klokker.
Avatar billede Slettet bruger
29. december 2011 - 14:22 #17
Bestemt ikke forstået, vær venlig at forklare lidt bedre, forstår ikke helt hvad det er du vil
Avatar billede loevgaard Novice
29. december 2011 - 14:43 #18
Det jeg vil er, at det skal være muligt at lave en overskrift i forlængelse af "Opgave-titlen".

Når der er en opgave der omhandler noget, f.eks. en opgave der omhandler geometri i matematik, skal det være muligt at skrive i LaTeX:
\begin{exercise}[Geometri]...\end{exercise} hvorfra der vil komme til at stå noget i retningen af:
Opgave 1  Geometri      (hvor der er en delimiter mellem Opgave 1 og Geometri; kolon, mellemrum, whatever)

Kig på eksemplet jeg havde med den anden kode: http://dl.dropbox.com/u/5941292/Pages%20from%20LCG.pdf
Dette fås noget lignende ved det jeg skrev før: \begin{opgave}[Geometri]...\end{exercise}
Avatar billede Slettet bruger
29. december 2011 - 15:02 #19
Prøv med denne preamble i stedet (etoolbox pakken er rar at have)

\documentclass[a4paper]{memoir}
\usepackage{enumitem,etoolbox}
\setlist{ 
  listparindent=\parindent,
  parsep=0pt,
}
\newcounter{dlf}% master
\newcounter{exercise}[dlf]
\renewcommand\theexercise{\arabic{exercise}}
\newcommand\ExerciseHeader[1]{
  \section*{#1}
  \refstepcounter{dlf}
}

\newenvironment{exercise}[1][]{%
  \refstepcounter{exercise}
  \ifblank{#1}{%
    \subsection*{Opgave~\theexercise}%
  }{%
    \subsection*{Opgave~\theexercise\ -- #1\enspace}%
  }
}{}

\newlist{subexercises}{enumerate}{1}
\setlist[subexercises]{
  label=\textit{\theexercise.\alph*},
  ref=\theexercise.\alph*
}
\begin{document}
Avatar billede loevgaard Novice
29. december 2011 - 16:36 #20
Det virker! Men det vidste du vel godt :D

Så jeg tror jeg bukker og siger tak for de mange gode råd du har givet mig!

Og lav så det svar, så jeg kan give dig point :)
Avatar billede Slettet bruger
03. januar 2012 - 10:21 #21
svar
Avatar billede Slettet bruger
04. januar 2012 - 10:08 #22
tak for point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester