由于我没有得到我完全满意的答案我最后一条帖子,尽管有很多很棒的建议。因此,我将尝试在这里重新表述我的问题。我也有一些新的意见、建议和想法,我不想让上一个帖子被无休止的编辑弄得乱七八糟。
这是我的文档的一个最小示例
\documentclass[10pt,a4paper]{article}
\usepackage{microtype}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage[utf8]{inputenc}
\usepackage[norsk]{babel}
\usepackage{enumitem}
\title{Fy 1001 - Mekanisk Fysikk \\ Øving 8}
\usepackage{changepage}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\newcounter{opg}[section]
\renewcommand{\theopg}{\arabic{opg}}
\newcommand{\opg}[1]{\stepcounter{opg} \subsubsection*{Oppgave \theopg #1} \vspace*{2.25mm}}
\setcounter{opg}{0}
\newcounter{navn}[opg]
\renewcommand{\thenavn}{\alph{navn}}
\newcommand{\navn}{\stepcounter{navn}\paragraph*{\thenavn)}}
\setcounter{navn}{0}
\author{Øistein Søvik}
\date{\today}
\begin{document}
\maketitle
\begin{enumerate}[leftmargin=*,labelsep=1.25em,label=\bfseries\alph*)]
\item Bestem treghetsmomentet $I_s$ for ei tynn stang med lengde $R$ og masse $m$, om en akse normalt på stanga
gjennom stangas ene ende.
\end{enumerate}
\opg{: Kjerrehjul}
\navn Bestem treghetsmomentet $I_s$ for ei tynn stang med lengde $R$ og masse $m$, om en akse normalt på stanga
gjennom stangas ene ende.
\lipsum[2-3]
\navn Bestem deretter treghetsmomentet $I_k$ for et kjerrehjul med $N$ eiker (spiler), hver med masse $m$ og lengde
$R$, og der selve hjulet (felgen) har masse $M$. Du kan betrakte felgen som en tynn ring med radius $R$.
\navn Hva blir kjerrehjulets totale kinetiske energi K dersom det sitter på ei kjerre som kjører med hastighet
$V$ ? Vi antar ren rulling for kjerrehjulet. opg{: Treghetsmoment for diverse stive legemer}
Bestem treghetsmomentet $I_0$ om en akse gjennom tyngdepunktet/massesenteret til
\navn ei tynn stang med lengde $L$ og masse $M$. (Akse normalt på stanga.)
\navn et tynt kuleskall med radius $R$ og masse $M$. (Tips: $\sin^3 x = \frac{3}{4} \sin x - \frac{1}{4} \sin 3x$.)
\navn ei kompakt kule med radius $R$ og masse $M$. (Tips: Kompakt kule = sum av tynne kuleskall.)\\
\\
\opg{: Atwoods maskin med tung skive som trinse}
\navn
\end{document}
在顶部,我提供了一个无法解决问题的解决方案。我尝试做的几乎就是此enumerate
环境所做的。
我试图让问题以字母开头,然后包含一些文本。之后直接内联。如文档所示,enumitem
这样做。然而
它把所有内容都对齐得有点太靠右了。它应该作为第一个项目对齐。
对于每个问题来说使用起来有点累人/复杂
每个较大的问题之后它不会重置。
现在最终,我想要定义一些命令或环境,将这个命令中的所有内容内联并跟踪编号。
举个例子
\mycommand{ Bestem treghetsmomentet $I_s$ for ei tynn stang med lengde $R$ og
masse $m$, om en akse normalt på stanga gjennom stangas ene ende. }
应该产生
a) Bestem treghetsmomentet $I_s$ for ei tynn stang med lengde $R$ og
masse $m$, om en akse normalt på stanga gjennom stangas ene ende.
或者
\mycommand{ \item Bestem treghetsmomentet $I_s$ for ei tynn stang med lengde $R$ og
masse $m$, om en akse normalt på stanga gjennom stangas ene ende. }
应该产生
a) Bestem treghetsmomentet $I_s$ for ei tynn stang med lengde $R$ og
masse $m$, om en akse normalt på stanga gjennom stangas ene ende.
或者为了这个目的而创造环境。
\begin{myenv}
Bestem treghetsmomentet $I_s$ for ei tynn stang med lengde $R$ og
masse $m$, om en akse normalt på stanga gjennom stangas ene ende.
\end{myenv}
a) Bestem treghetsmomentet $I_s$ for ei tynn stang med lengde $R$ og
masse $m$, om en akse normalt på stanga gjennom stangas ene ende.
所以是的... 寻找一种简单的方法来创建新命令。将所有内容内联到命令内部。并在开头放置一个计数字母。每次执行后都会重置\opg
。
所以一切都按原样工作。除了后面的文本\navn
没有水平对齐。
编辑:
现在一切都正常了,除了第一个\NR
没有对齐。有人知道为什么吗?有自动修复的方法吗?会经常使用此代码,因此自动修复会很好。目前。
这段代码中我还遇到了一些其他问题,那就是间距。目前,间距会根据文本\NR
跨行还是跨多行而变化。如果能快速修复,那就太好了。此外,\\
在后面添加\NR
不会产生任何间距。
\documentclass[10pt,a4paper]{article}
\usepackage{microtype}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage[utf8]{inputenc}
\usepackage[norsk]{babel}
\usepackage{enumitem}
\title{Fy 1001 - Mekanisk Fysikk \\ Øving 8}
\usepackage{changepage}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{calc}
\newcounter{opg}[section]
\renewcommand{\theopg}{\arabic{opg}}
\newcommand{\opg}[1]{\stepcounter{opg} \subsubsection*{Oppgave \theopg #1} \vspace*{2.25mm}}
\setcounter{opg}{0}
\newcounter{navn}[opg]
\renewcommand{\thenavn}{\alph{navn}}
\newcommand{\navn}{\stepcounter{navn}\paragraph*{\thenavn)}}
\setcounter{navn}{0}
\newcommand{\NR}[1]
{
\hspace*{-6.1mm} \noindent \begin{minipage}[t]{0.055 \textwidth}
\navn \hspace{0pt}
\end{minipage}
\begin{minipage}[t]{\textwidth}
#1
\end{minipage}
}
\author{Øistein Søvik}
\date{\today}
\begin{document}
\maketitle
\opg{: Kjerrehjul}
%
\NR{Bestem treghetsmomentet $I_s$ for ei tynn stang med lengde $R$ og masse $m$, om en akse normalt på stanga
gjennom stangas ene ende.}
\NR{Bestem deretter treghetsmomentet $I_k$ for et kjerrehjul med $N$ eiker (spiler), hver med masse $m$ og lengde
$R$, og der selve hjulet (felgen) har masse $M$. Du kan betrakte felgen som en tynn ring med radius $R$.}
\NR{Hva blir kjerrehjulets totale kinetiske energi K dersom det sitter på ei kjerre som kjører med hastighet
$V$ ? Vi antar ren rulling for kjerrehjulet} \opg{: Treghetsmoment for diverse stive legemer}
Bestem treghetsmomentet $I_0$ om en akse gjennom tyngdepunktet/massesenteret til \NR{ei tynn stang med lengde $L$ og masse $M$. (Akse normalt på stanga.)} \NR{et tynt kuleskall med radius $R$ og masse $M$. (Tips: $\sin^3 x = \frac{3}{4} \sin x - \frac{1}{4} \sin 3x$.)} \NR{ei kompakt kule med radius $R$ og masse $M$. (Tips: Kompakt kule = sum av tynne kuleskall.} \\
\end{document}
答案1
代码比较长,请将代码保存为goodlists.sty
。
\ProvidesPackage{goodlists}
\makeatletter
\newtoks\@enLab %\newtoks\@enfont
\def\@enQmark{?}
\def\@enLabel#1#2{%
\edef\@enThe{\noexpand#1{\@enumctr}}%
\@enLab\expandafter{\the\@enLab\csname the\@enumctr\endcsname}%
\@enloop}
%% Hack to define a space
\def\@enSpace{\afterassignment\@enSp@ce\let\@tempa= }
\def\@enSp@ce{\@enLab\expandafter{\the\@enLab\space}\@enloop}
\def\@enGroup#1{\@enLab\expandafter{\the\@enLab{#1}}\@enloop}
\def\@enOther#1{\@enLab\expandafter{\the\@enLab#1}\@enloop}
\def\@enloop{\futurelet\@entemp\@enloop@}
\def\@enloop@{%
\ifx A\@entemp \def\@tempa{\@enLabel\Alph }\else
\ifx a\@entemp \def\@tempa{\@enLabel\alph }\else
\ifx i\@entemp \def\@tempa{\@enLabel\roman }\else
\ifx I\@entemp \def\@tempa{\@enLabel\Roman }\else
\ifx 1\@entemp \def\@tempa{\@enLabel\arabic}\else
\ifx \@sptoken\@entemp \let\@tempa\@enSpace \else
\ifx \bgroup\@entemp \let\@tempa\@enGroup \else
\ifx \@enum@\@entemp \let\@tempa\@gobble \else
\let\@tempa\@enOther
\fi\fi\fi\fi\fi\fi\fi\fi
\@tempa}
\newlength{\@sep} \newlength{\@@sep}
\setlength{\@sep}{.5\baselineskip plus.2\baselineskip
minus.2\baselineskip}
\setlength{\@@sep}{.1\baselineskip plus.01\baselineskip
minus.05\baselineskip}
\providecommand{\sfbc}{\rmfamily\upshape}
\providecommand{\sfn}{\rmfamily\upshape}
\def\@enfont{\ifnum \@enumdepth >1\let\@nxt\sfn \else\let\@nxt\sfbc \fi\@nxt}
\def\enumerate{%
\ifnum \@enumdepth >3 \@toodeep\else
\advance\@enumdepth \@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}\fi
\@ifnextchar[{\@@enum@}{\@enum@}}
\def\@@enum@[#1]{%
\@enLab{}\let\@enThe\@enQmark
\@enloop#1\@enum@
\ifx\@enThe\@enQmark\@warning{The counter will not be printed.%
^^J\space\@spaces\@spaces\@spaces The label is: \the\@enLab}\fi
\expandafter\edef\csname label\@enumctr\endcsname{\the\@enLab}%
\expandafter\let\csname the\@enumctr\endcsname\@enThe
\csname c@\@enumctr\endcsname7
\expandafter\settowidth
\csname leftmargin\romannumeral\@enumdepth\endcsname
{\the\@enLab\hskip\labelsep}%
\@enum@}
\def\@enum@{\list{{\@enfont\csname label\@enumctr\endcsname}}%
{\usecounter{\@enumctr}\def\makelabel##1{\hss\llap{##1}}%
\ifnum \@enumdepth>1\setlength{\topsep}{\@@sep}\else
\setlength{\topsep}{\@sep}\fi
\ifnum \@enumdepth>1\setlength{\itemsep}{0pt plus1pt minus1pt}%
\else \setlength{\itemsep}{\@@sep}\fi
%\setlength\leftmargin{\leftMargin}%%%{1.8em}
\setlength{\parsep}{0pt plus1pt minus1pt}%
\setlength{\parskip}{0pt plus1pt minus1pt}
}}
\def\endenumerate{\par\ifnum \@enumdepth >1\addvspace{\@@sep}\else
\addvspace{\@sep}\fi \endlist}
\makeatother
然后用这个最小值尝试一下,通过改变枚举后的选项,你可以改变列表枚举,即改变\begin{enumerate}[1.)]
会给你数字,改变为[a)]
,字母编号等等,它会按照你想要的方式缩进:
\documentclass{article}
\usepackage{goodlists}
\begin{document}
\begin{enumerate}[a)]
\item The enumerate environment starts with an optional
argument `1.', so that the item counter will be suffixed
by a period.
\item You can use `a)' for alphabetical counter and '(i)' for
roman counter.
\begin{enumerate}[1)]
\item Another level of list with alphabetical counter.
\item One more item before we start another.
\begin{enumerate}[(i)]
\item This item has roman numeral counter.
\item Another one before we close the third level.
\end{enumerate}
\item Third item in second level.
\end{enumerate}
\item All list items conclude with this step.
\end{enumerate}
\end{document}