줄 번호 및 그림 나열

줄 번호 및 그림 나열

나는 다이어그램 옆의 환경 listings내에서 일부 C를 조판하는 데 사용하고 있으며 왼쪽에 숫자가 있습니다. figure내 문제는 two-column모드에서 행 번호가 텍스트 영역 외부의 여백에 표시된다는 것입니다(즉, 숫자는 열의 왼쪽에 맞춰지지 않고 대신 약간 왼쪽에 맞춰집니다). 내가 사용하는 코드는 다음과 같습니다

\begin{figure*}
  \begin{minipage}{.45\textwidth}
   \begin{lstlisting}[numbers=left]
    i = 0;
    j = 1;
   \end{lstlisting}
  \end{minipage}\hfill
  \begin{minipage}{.45\textwidth}
     \includegraphics{figure}
  \end{minipage}
 \caption{My caption}
 \label{fig:blah}
\end{figure*}

lstlisting텍스트 영역 내부 에서 줄 번호를 유지하는 방법이 있습니까 ?

답변1

그만큼listings줄 번호를 쓰는 코드는 \lst@PlaceNumber. 그 아래에는 numbers=left다음과 같이 정의됩니다.

\def\lst@PlaceNumber{\llap{\normalfont
  \lst@numberstyle{\thelstnumber}\kern\lst@numbersep}}%

이는 숫자를 left over 로 인쇄하여 lap발생하는 "문제"를 발생시킵니다. 당신은 전체 lstlisting를 밀어 넣을 수 있습니다적어도1em+\lst@numbersep왼쪽 겹침이 여전히 텍스트 블록 경계 내에 있도록 위의 양(예: )을 지정합니다.

여기에 이미지 설명을 입력하세요

\documentclass[twocolumn]{article}
\usepackage[demo]{graphicx}% http://ctan.org/pkg/graphicx
\usepackage{showframe}% http://ctan.org/pkg/showframe
\usepackage{listings}% http://ctan.org/pkg/listings
\begin{document}
\begin{figure*}
  \makeatletter%
  \hspace*{\dimexpr 1em+\lst@numbersep}%
  \makeatother%
\begin{minipage}{.4\textwidth}
\begin{lstlisting}[numbers=left]
i = 0;
j = 1;
\end{lstlisting}
  \end{minipage}\hfill
  \begin{minipage}{.4\textwidth}
     \includegraphics{figure}
  \end{minipage}
 \caption{My caption}
 \label{fig:blah}
\end{figure*}
\end{document}

나는 추가했다showframe텍스트 블록 경계를 강조 표시하고 [demo]옵션을graphicxMWE를 운영하기 위해. 최종 문서에는 필요하지 않습니다.

또는 숫자가 왼쪽에 표시되도록 설정할 수 있습니다.전 세계적으로( 사용 \lstset{numbers=left}) 그런 다음 그에 \lst@PlaceNumber따라 재정의하십시오.

\makeatletter%
\def\lst@PlaceNumber{\makebox[\dimexpr 1em+\lst@numbersep][l]{\normalfont
  \lst@numberstyle{\thelstnumber}}}%
\makeatother%

이후에도 재정의를 지속하려면 전역 설정이 필요합니다 \begin{lstlisting}.

답변2

간단한 해결책은 xleftmargin=...목록 환경에서 설정을 사용하는 것일 수 있다고 생각합니다. 목록 문서를 살펴보세요.

관련 정보