我正在尝试将一些代码右对齐作为 C 语言备忘录的文本换行,但遇到了一些问题......
在下面的例子中,我尝试右对齐“const struct tm *ptm);。”部分,如下所示。
size_t strftime(char *dest, size_t taillemax, const char *format,
const struct tm *ptm);
我尝试了 \raggedleft 和 flushright 环境。后者在两条线之间创建了太重要的分隔。我无法让 \raggedleft 执行任何操作。
\documentclass[10pt,a4paper,twoside]{article}
\setlength{\hoffset}{-18pt}
\setlength{\oddsidemargin}{0pt}
\setlength{\evensidemargin}{9pt}
\setlength{\marginparwidth}{54pt
\setlength{\textwidth}{481pt}
\setlength{\voffset}{-18pt}
\setlength{\marginparsep}{7pt}
\setlength{\topmargin}{0pt}
\setlength{\headheight}{13pt}
\setlength{\headsep}{10pt}
\setlength{\footskip}{27pt}
\setlength{\textheight}{680pt}
\setlength{\parskip}{2ex plus .4ex minus .4ex}
\setlength{\parindent}{0pt}
\usepackage{times}
\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{authblk}
\usepackage{listings}
\usepackage{lastpage}
\usepackage{makeidx}
\makeindex
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead[\leftmark]{}
\chead[]{}
\rhead[]{\leftmark}
\lfoot[\thepage\ sur \pageref{LastPage}]{}
\cfoot[]{}
\rfoot[]{\thepage\ sur \pageref{LastPage}}
\usepackage[titles]{tocloft}
\newcommand\fichier[1]{{\textit{#1}}}
\newcommand\code[1]{{\texttt{#1}}}
\newcommand\tab[1]{{\tt\hspace{#1em}}}
\newenvironment{codepar}{\begin{list}{}{\leftmargin20pt}\item[]\obeylines\obeyspaces\begingroup\parskip0pt\tt}{\endgroup\end{list}\par}
\newcommand\codedescr[2]{{ \noindent\code{#1} \begin{list}{}{\leftmargin20pt}\item[]\begingroup\parskip0pt #2 \endgroup\end{list}\par }}
\newcommand{\superscript}[1]{\ensuremath{^{\texttt{#1}}}}
\renewcommand{\arraystretch}{1.3}
\begin{document}
\codedescr{char *ctime( const time\_t *pSec );\newline
char *asctime( const struct tm *ptm );\newline
size\_t strftime(char *dest, size\_t taillemax, const char *format,\newline
\hfil const struct tm *ptm);\index{fonction2@fonction!ctime}\index{fonction2@fonction!asctime}\index{fonction2@fonction!strftime}}{bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla}
\end{document}
谢谢你的帮助,塞德里克
答案1
而不是\hfil
或\hfill
使用
\hspace*{\fill}
\hfill
相当于\hspace\fill
。但是,LaTeX 在某些情况下会删除水平空格,例如在行尾。如果您不想让 LaTeX 删除此空格,请使用带星号的版本\hspace*
。顺便说一句,它与\vspace
和类似\vspace*
。
顺便说一句。当我用你的代码测试它是否有效时,我注意到第 5 行缺少一个右括号。我会使用几何学包,而不是手动调整所有这些长度。
答案2
我会以不同的方式定义宏:
\newcommand\fichier[1]{\textit{#1}}
\newcommand\code[1]{\texttt{#1}}
\newcommand\tab[1]{{\ttfamily\hspace*{#1em}}}
\newenvironment{codepar}
{\renewcommand{\breakfill}[1]{\par\hspace*{\fill}}%
\begin{list}{}{\leftmargin20pt \parskip0pt}
\item[]\obeylines\obeyspaces\ttfamily\ignorespaces}
{\end{list}}
\newcommand\codedescr[2]{%
\par\noindent\code{#1}%
\begin{list}{}{\leftmargin20pt \parskip0pt}
\item[]#2\end{list}}
\newcommand{\superscript}[1]{\ensuremath{^{\texttt{#1}}}}
\newcommand{\breakfill}{\newline\hspace*{\fill}}
该命令\breakfill
就是您要寻找的将线推到右边距的命令:
\codedescr{char *ctime( const time\_t *pSec );\newline
char *asctime( const struct tm *ptm );\newline
size\_t strftime(char *dest, size\_t taillemax, const char *format,\breakfill
const struct tm *ptm);%
\index{fonction2@fonction!ctime}%
\index{fonction2@fonction!asctime}%
\index{fonction2@fonction!strftime}}
{bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla}
在codepar
环境中我重新定义,\breakfill
以便它不会打印空行(但命令必须在这种情况下,可以用在行尾。
还要注意不同的地方\parskip=0pt
;我还删去了许多无用的组:一个环境总是形成一个组。
不要使用\tt
,而应该使用\ttfamily
。前者是一个过时的命令。