个人命令存在文本对齐问题,如果没有空间,则将右对齐的文本移动到下一行

个人命令存在文本对齐问题,如果没有空间,则将右对齐的文本移动到下一行

为了编写讲义,我使用了一个名为的命令,\exo该命令以粗体显示并自动增加练习编号。它有一个可选参数,即评估期间练习获得的成绩。我感谢@egreg 的改进在这里回答这样,在刻度旁边总会有一点空白来写等级,而且效果很好。

但现在下一行是充分合理代替左对齐(这就是我想要实现的)。例如,“完成下列表格并标记您的计算:”不是左对齐

我的错误是什么?

翻译www.DeepL.com/Translator(免费版)

我的练习

\documentclass[a5paper,12pt,french]{article}  % Présentation générale et mise en page

%  Marges de la page
\usepackage[left=0.3cm, right=0.3cm, top=1cm, bottom=0cm]{geometry}

% pas de retrait de paragraphe
\setlength{\parindent}{0mm}         
\usepackage{array}
\usepackage[output-decimal-marker={,}]{siunitx}
\sisetup{locale=FR}
                            
% --------------------------------------
% Nouvelle commande \exo pour numéroter les exercices
% --------------------------------------
\usepackage{ifthen}
\newcounter {EX} \setcounter{EX}{0}%compteur pour numéroter avant le \newcommand {\exo} ce sont des entiers (et non des décimaux)

\newcommand {\exo}[2][]{ %barème optionnel 
\stepcounter{EX} %
\par \vspace{1em} %\
\underline{\textbf{Exercice\,\theEX\,:}}\textbf{ #2}%
\ifthenelse{\equal{#1}{}} %
{\par} %
{\newdimen \p%
\p=#1cm % 
\ifdim \p<2cm
% egreg solution https://tex.stackexchange.com/a/91564/138900
\nobreak\hfill\penalty50\hskip1em\null\nobreak
     \hfill\makebox[5mm]{}/\num{#1}~point \parfillskip=0pt \finalhyphendemerits=0 \par
\else
\nobreak\hfill\penalty50\hskip1em\null\nobreak
     \hfill\makebox[5mm]{}/\num{#1}~points \parfillskip=0pt \finalhyphendemerits=0 \par
\fi} % 
}

\begin{document}
\thispagestyle{empty}



\pagestyle{empty}


\exo[3]{On agrandit une pièce triangulaire d'un puzzle tel que le côté qui mesure \SI{4}{cm} mesure \SI{4.8}{cm} sur le triangle agrandi}

Compléter le tableau suivant et indiquez vos calculs:


\exo[2,5]{Lors de sa construction en 1889, la tour Eiffel mesurait \SI{300}{m} de haut.}
Un modèle réduit en bois de la tour Eiffel mesure \SI{0,12}{m} de haut.

La largeur de ce modèle réduit est de \SI{0,05}{m}. Quelle est la largeur de la tour Eiffel?

\exo[2.5]{Lors de sa construction en 1889, la tour Eiffel  }


\end{document}

答案1

您需要将更改本地化为\parfillskip。括号在引用的答案中。

我还简化了添加复数的代码。

\documentclass[a5paper,12pt,french]{article}  % Présentation générale et mise en page

%  Marges de la page
\usepackage[left=0.3cm, right=0.3cm, top=1cm, bottom=0cm]{geometry}

% pas de retrait de paragraphe
\setlength{\parindent}{0mm}         
\usepackage{array}
\usepackage[output-decimal-marker={,}]{siunitx}
\sisetup{locale=FR}
                            
% --------------------------------------
% Nouvelle commande \exo pour numéroter les exercices
% --------------------------------------
%compteur pour numéroter avant le \newcommand {\exo} 
% ce sont des entiers (et non des décimaux)
\newcounter{EX}
%\setcounter{EX}{0}

\newcommand {\exo}[2][]{ %barème optionnel 
  \stepcounter{EX} %
  \par \vspace{1em} %\
  \underline{\textbf{Exercice\,\theEX\,:}}\textbf{ #2}%
  \if\relax\detokenize{#1}\relax
    \par
  \else
    % egreg solution https://tex.stackexchange.com/a/91564/138900
    \nobreak\hfill\penalty50\hskip1em\null\nobreak
    \hfill\makebox[5mm]{}/\num{#1}~point\ifdim#1cm<2cm \else s\fi
    {\parfillskip=0pt \finalhyphendemerits=0 \par}% <--- braces!
  \fi
}

\begin{document}
\thispagestyle{empty}

\pagestyle{empty}


\exo[3]{On agrandit une pièce triangulaire d'un puzzle tel que le 
côté qui mesure \SI{4}{cm} mesure \SI{4.8}{cm} sur le triangle agrandi}

Compléter le tableau suivant et indiquez vos calculs:


\exo[2,5]{Lors de sa construction en 1889, la tour Eiffel mesurait \SI{300}{m} de haut.}
Un modèle réduit en bois de la tour Eiffel mesure \SI{0,12}{m} de haut.

La largeur de ce modèle réduit est de \SI{0,05}{m}. Quelle est la largeur de la tour Eiffel?

\exo[2.5]{Lors de sa construction en 1889, la tour Eiffel  }

\end{document}

在此处输入图片描述

答案2

添加一个额外的组,以便设置是本地的。

还有一些更正以避免添加空格标记,并且可以使用,\refstepcounter以便您可以\label

在此处输入图片描述

\documentclass[a5paper,12pt,french]{article}  % Présentation générale et mise en page

%  Marges de la page
\usepackage[left=0.3cm, right=0.3cm, top=1cm, bottom=0cm]{geometry}

% pas de retrait de paragraphe
\setlength{\parindent}{0mm}         
\usepackage{array}
\usepackage[output-decimal-marker={,}]{siunitx}
\sisetup{locale=FR}
                            
% --------------------------------------
% Nouvelle commande \exo pour numéroter les exercices
% --------------------------------------
\usepackage{ifthen}
\newcounter {EX} \setcounter{EX}{0}%compteur pour numéroter avant le \newcommand {\exo} ce sont des entiers (et non des décimaux)

\newcommand {\exo}[2][]{{%barème optionnel 
\refstepcounter{EX}%
\par \vspace{1em}%\
\underline{\textbf{Exercice\,\theEX\,:}}\textbf{ #2}%
\ifthenelse{\equal{#1}{}}%
{\par}%
{%
\ifdim#1cm<2cm
% egreg solution https://tex.stackexchange.com/a/91564/138900
\nobreak\hfill\penalty50\hskip1em\null\nobreak
     \hfill\makebox[5mm]{}/\num{#1}~point \parfillskip=0pt \finalhyphendemerits=0 \par
\else
\nobreak\hfill\penalty50\hskip1em\null\nobreak
     \hfill\makebox[5mm]{}/\num{#1}~points \parfillskip=0pt \finalhyphendemerits=0 \par
\fi}% 
}}

\begin{document}
\thispagestyle{empty}



\pagestyle{empty}


\exo[3]{On agrandit une pièce triangulaire d'un puzzle tel que le côté qui mesure \SI{4}{cm} mesure \SI{4.8}{cm} sur le triangle agrandi}

Compléter le tableau suivant et indiquez vos calculs:


\exo[2,5]{Lors de sa construction en 1889, la tour Eiffel mesurait \SI{300}{m} de haut.}
Un modèle réduit en bois de la tour Eiffel mesure \SI{0,12}{m} de haut.

La largeur de ce modèle réduit est de \SI{0,05}{m}. Quelle est la largeur de la tour Eiffel?

\exo[2.5]{Lors de sa construction en 1889, la tour Eiffel  }


\end{document}

相关内容