Compare View
Commits (121)
-
…articles into oss_2018
-
…articles into oss_2018
-
…articles into oss_2018
-
…articles into oss_2018
-
…articles into oss_2018
-
Conflicts: icse2018/content/01-introduction.tex
-
…articles into oss_2018
-
Conflicts: oss2018/content/03-methods.tex oss2018/spb-oss-2018.bib
-
…articles into oss_2018
-
…articles into oss_2018
Showing
38 changed files
Show diff stats
| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | +TARGET=spb-oss-2018 | |
| 2 | + | |
| 3 | +all: $(TARGET).tex | |
| 4 | + pdflatex $(TARGET).tex | |
| 5 | + bibtex $(TARGET) | |
| 6 | + pdflatex $(TARGET).tex | |
| 7 | + pdflatex $(TARGET).tex | |
| 8 | + evince $(TARGET).pdf & | |
| 9 | + | |
| 10 | +edit: | |
| 11 | + gedit Makefile *.bib *.tex & | |
| 12 | + | |
| 13 | +clean: | |
| 14 | + rm -f $(TARGET).pdf *.out *.aux *.log *.blg *.bbl *.dvi *.ps *.toc *.lot *.lof *.idx *~ | |
| 15 | + | ... | ... |
| ... | ... | @@ -0,0 +1,17 @@ |
| 1 | +\begin{abstract} | |
| 2 | + | |
| 3 | +Government and academia can collaborate on bringing innovation and filling | |
| 4 | +design-reality gaps in e-government projects. However, differences in project | |
| 5 | +management methods employed by the organizations is often a challenge for | |
| 6 | +collaborative works. Bearing that in mind, we investigated a 30-month | |
| 7 | +government-academia partnership to find appropriate ways to get around this | |
| 8 | +obstacle. From the analysis of \textit{post-mortem} data as well as the results | |
| 9 | +of questionnaires and interviews with project participants, we present a set of | |
| 10 | +best practices based on FLOSS and agile software development approaches that | |
| 11 | +favors team management in government-academia collaborations in e-government | |
| 12 | +development projects. | |
| 13 | + | |
| 14 | +\end{abstract} | |
| 15 | + | |
| 16 | +\keywords{Open Source Software, Free Software, Agile Methods, Best Practices, | |
| 17 | +Project Management, E-Government.} | ... | ... |
| ... | ... | @@ -0,0 +1,49 @@ |
| 1 | +\section{Introduction} | |
| 2 | + | |
| 3 | +E-government projects differ from others due to their complexity and extension | |
| 4 | +\cite{anthopoulos2016egovernment}. They are complex because they combine | |
| 5 | +development, innovation, information \& communications technologies, politics, | |
| 6 | +and social impact. They are extensive, on the other hand, regarding their | |
| 7 | +scope, target audience, organizational size, time, and the corresponding | |
| 8 | +resistance to change. Developing an innovative e-government project that meets | |
| 9 | +the needs of society is a issue that may be addressed alternatively through | |
| 10 | +collaborative projects between government and academia. However, this | |
| 11 | +collaborative work has challenges, such as organizing the collaboration | |
| 12 | +project, aligning goals, synchronizing the pace of between government and | |
| 13 | +academia, and overcoming the failure trend of e-government projects | |
| 14 | +\cite{goldfinch2007pessimism}. | |
| 15 | + | |
| 16 | +One of the leading causes of e-government project failure is poor project | |
| 17 | +management \cite{anthopoulos2016egovernment}. In this sense, the proper | |
| 18 | +management of the collaboration project should be a relevant concern when | |
| 19 | +government and academia combine efforts to develop an e-government solution. | |
| 20 | +Academia commonly works on cutting-edge development methodologies while the | |
| 21 | +government still relies on traditional techniques. Changing the development | |
| 22 | +process of one of this large-size institutions represents an organizational | |
| 23 | +disturbance with impacts on structure, culture, and management practices | |
| 24 | +\cite{nerur2015challenges}. As a result, government and academia have to | |
| 25 | +harmonize their view to increasing the chances of success in projects with | |
| 26 | +tight deadlines and short budgets. | |
| 27 | + | |
| 28 | +We have investigated the adoption of recommended community standards from | |
| 29 | +Free/Libre and Open Source Software (FLOSS) and agile values as a strategy to | |
| 30 | +harmonize different management approaches, due to the plurality of FLOSS | |
| 31 | +ecosystems and the diversity favored by agile methodologies. Open | |
| 32 | +communication, project modularity, the community of users, and fast response to | |
| 33 | +problems are just a few of the FLOSS ecosystem practices \cite{capiluppi, | |
| 34 | +warsta}. Individuals and interactions, working software, customer | |
| 35 | +collaboration, responding to change are the values agile | |
| 36 | +development~\cite{beck}. With this in mind, FLOSS and agile practices may | |
| 37 | +improve the cooperation of distinct teams. | |
| 38 | + | |
| 39 | +In this work, we examine the empirical method developed during 30 months | |
| 40 | +of a government-academia project that helped to harmonize the differences | |
| 41 | +between both organization management cultures. We discuss both quantitative | |
| 42 | +and qualitative analyses of the benefits of FLOSS and agile practices in an | |
| 43 | +e-government project. We identify and trace the best practices based on | |
| 44 | +FLOSS ecosystems and agile methodology. We collect and analyze data from the | |
| 45 | +project repository. Finally, we conduct a survey target at projects | |
| 46 | +participants to find their perception around the set of best practices, and | |
| 47 | +which of them are useful to government-academia collaboration. In doing so, we | |
| 48 | +aim to help academia better understand critical issues they will be confronted | |
| 49 | +with when engaging in a government-academia software project. | ... | ... |
| ... | ... | @@ -0,0 +1,60 @@ |
| 1 | +\section{Related work} | |
| 2 | +\label{sec:relatedwork} | |
| 3 | + | |
| 4 | +Discussions on how to introduce new management methods into an organization are | |
| 5 | +present in several works. Nerur et al. recognized critical issues concerning | |
| 6 | +the migration from traditional to agile software development by comparing | |
| 7 | +practices of both methodologies \cite{nerur2015challenges}. The authors point | |
| 8 | +out managerial, organizational, people, process, and technological issues to be | |
| 9 | +rethought and reconfigured in an organization for a successful migration. | |
| 10 | +Strode et al. investigated the relationship between the adoption of agile | |
| 11 | +methodologies and organizational culture \cite{impactOfOrganizationalCulture} | |
| 12 | +by evaluating nine projects. They identified a set of six factors directly | |
| 13 | +linked to agile methods and concluded that the presence of these aspects in an | |
| 14 | +organization is proportional to the value of agile methodologies usage for | |
| 15 | +their projects. As Nerur et al., Strode et al. also said that the adoption of | |
| 16 | +agile development techniques does indeed produce changes in an organization's | |
| 17 | +culture. | |
| 18 | + | |
| 19 | +Some works also discuss how academia can collaborate with the industry in the | |
| 20 | +management of software projects. Chookittikul et al. evaluated the increasing | |
| 21 | +use of the agile techniques in software development companies in Thailand. The | |
| 22 | +authors suggested that universities should create curricula that develop in | |
| 23 | +their undergraduate students practical skills required by industry (mainly | |
| 24 | +agile practices) to promote growth in local software businesses | |
| 25 | +\cite{cho2011gap}. Sandberg et al. report the use of Scrum in an | |
| 26 | +industry-academia research consortium (involving ten industry partners and five | |
| 27 | +universities in Sweden) \cite{sandberg2017iacollaboration}. Through a case | |
| 28 | +study, they demonstrate that being able to bring together the meaningful | |
| 29 | +activities of the stakeholders is essential to the success of collaborative | |
| 30 | +research between industry and academia. | |
| 31 | + | |
| 32 | +Complex and large-scale organizations, such as the public administration, have | |
| 33 | +to deal with multiple project variables. Alleman et al. describe a production | |
| 34 | +deployment for the US government, focusing on the methodology applied to | |
| 35 | +address long-term planning and value estimation \cite{alleman2003making}. In | |
| 36 | +the Brazilian context, Melo et al. \cite{melo2013agileBr} investigates the | |
| 37 | +growing adoption of agile methodologies in this country's IT industry. The | |
| 38 | +results of their survey highlight some mismatch that companies faces when | |
| 39 | +developing software for public administration. | |
| 40 | + | |
| 41 | +Several works tried to highlight the FLOSS practices, while others attempted to | |
| 42 | +determine the relationship between FLOSS practices and agile methods. Capiluppi | |
| 43 | +et al. examined about 400 projects to find FLOSS project properties | |
| 44 | +\cite{capiluppi}. In their work, they extracted generic characterization | |
| 45 | +(project size, age, license, and programming language), analyzed the average | |
| 46 | +number of people involved in the project, the community of users, and | |
| 47 | +documentation characteristics. Warsta et al. found differences and similarities | |
| 48 | +between agile development and FLOSS practices \cite{warsta}. The authors argued | |
| 49 | +that FLOSS development may differ from agile in their philosophical and | |
| 50 | +economic perspectives, on the other hand, both share the definition of work. | |
| 51 | +Finally, Eric Raymond describes many of his experiences and decisions in his | |
| 52 | +work with FLOSS communities \cite{raymond}, and his report in 1999 has many | |
| 53 | +intersections with the agile manifesto in 2001. | |
| 54 | + | |
| 55 | +This paper differs itself from others by studying the government-academia | |
| 56 | +collaboration for developing a production-level solution. From questionnaires, | |
| 57 | +interviews, and development activities data, we extracted best practices that | |
| 58 | +helped to harmonize the interactions between two different development process | |
| 59 | +and satisfied the management process of both sides. We analyzed the decisions | |
| 60 | +made from the FLOSS and agile perspectives. | ... | ... |
| ... | ... | @@ -0,0 +1,135 @@ |
| 1 | +\section{Research Design} | |
| 2 | +\label{sec:researchdesign} | |
| 3 | + | |
| 4 | +We studied practical alternatives to harmonize the software project lifecycle | |
| 5 | +when confronting different development processes from crucial stakeholders. We | |
| 6 | +are interested in the relationship between government and academia from the | |
| 7 | +project management perspective, without the enforcement of changing their | |
| 8 | +internal processes. We present two research questions that guided this work: | |
| 9 | + | |
| 10 | +\textbf{RQ1. }\textit{How to introduce FLOSS and agile best practices into | |
| 11 | +government-academia collaboration projects?} | |
| 12 | + | |
| 13 | +\textbf{RQ2. }\textit{What practices favor effective team management in | |
| 14 | +government-academia collaborative projects?} | |
| 15 | + | |
| 16 | +To answer these questions, we used the case study as research method. We | |
| 17 | +selected as a case the evolution of the Brazilian Public Software (SPB) portal | |
| 18 | +\cite{meirelles2017spb}, a government-academia collaborative project based on | |
| 19 | +FLOSS systems. To validate our answers, we covered three different points of | |
| 20 | +view: developers, government agent, and data collected from the project | |
| 21 | +repository. | |
| 22 | + | |
| 23 | +\subsection{The case study} | |
| 24 | + | |
| 25 | +The project to evolve the SPB portal was a partnership between government and | |
| 26 | +academia held between 2014 and 2016 \cite{meirelles2017spb}. The old version of | |
| 27 | +SPB suffered from maintenance problems and design-reality gaps. In this sense, | |
| 28 | +The Ministry of Planning (MPOG) decided to join the University of Brasília | |
| 29 | +(UnB) and the University of São Paulo (USP) to develop a new platform. This | |
| 30 | +platform had as its primary requirement to be based on existing FLOSS projects | |
| 31 | +and integrate multiple systems into one, providing the end user with a unified | |
| 32 | +experience. | |
| 33 | + | |
| 34 | +In short, the SPB portal evolved into a Collaborative Development Environment | |
| 35 | +(CDE) \cite{booch2003}. It was a novelty in the context of the Brazilian | |
| 36 | +government, due to the technologies employed and its diverse features. The | |
| 37 | +portal includes social networking, mailing lists, version control system, and | |
| 38 | +source code quality monitoring. All software is integrated using a | |
| 39 | +system-of-systems framework \cite{meirelles2017spb}. | |
| 40 | + | |
| 41 | +The platform development took place at the Advanced Laboratory of Production, | |
| 42 | +Research, and Innovation in Software Engineering (LAPPIS/UnB) and the FLOSS | |
| 43 | +Competence Center at USP (CCSL/USP). Undergraduate interns, IT professionals and | |
| 44 | +professors formed a partially distributed development team. While interns and | |
| 45 | +professors worked in-person, most IT professionals worked remotely. Their | |
| 46 | +activities followed the workflow of biweekly sprints and 4-month releases. | |
| 47 | + | |
| 48 | +On the managerial aspect, at the project | |
| 49 | +beginning, the collaboration management and strategic discussions happened only | |
| 50 | +once a month, when project leaders and MPOG directors met in person at the | |
| 51 | +ministry's headquarters. Table~\ref{tab:gov-academia-diff} summarizes the | |
| 52 | +organizational differences in both involved sides. | |
| 53 | + | |
| 54 | +\vspace*{-.5cm} | |
| 55 | + | |
| 56 | +\begin{table}[h] | |
| 57 | +\centering | |
| 58 | +\def\arraystretch{1.2} | |
| 59 | +\setlength\tabcolsep{0.2cm} | |
| 60 | +\resizebox{\textwidth}{!}{% | |
| 61 | +\begin{tabular}{m{4.3cm}!{\color{white}\vrule}m{7cm}!{\color{white}\vrule}m{8cm}} | |
| 62 | +\rowcolor[HTML]{c0d6e4} | |
| 63 | +\textbf{Collaboration peaces} & \textbf{Academia} & \textbf{Goverment} \\ | |
| 64 | +\rowcolor[HTML]{f2f2f2} | |
| 65 | +\textbf{Responsibilities} & Platform development activites & Contracts and collaboration management \\ | |
| 66 | +\rowcolor[HTML]{fafafa} | |
| 67 | +\textbf{Team size} & | |
| 68 | +\begin{tabular}[c]{@{}l@{}} 42 undergraduate interns \\ 2 professors \\ 6 senior developers with significant \\ experience in FLOSS projects\\ 2 Designers (UX specialists) \end{tabular} & | |
| 69 | +\begin{tabular}[c]{@{}l@{}} 1 director \\ 1 coordinator \\ 2 requirement analysts \end{tabular} \\ | |
| 70 | +\rowcolor[HTML]{f2f2f2} | |
| 71 | +\textbf{Workplace} & LAPPIS at UnB and CCSL at USP & MPOG headquarters \\ | |
| 72 | +\rowcolor[HTML]{fafafa} | |
| 73 | +\begin{tabular}[c]{@{}l@{}}\textbf{Management} \textbf{approaches}\end{tabular} & FLOSS practices and Agile values & Mindset from RUP, CMMI, and PMBOK \\ | |
| 74 | +\end{tabular}% | |
| 75 | +} | |
| 76 | +\caption{Differences between academia and government sides.} | |
| 77 | +\label{tab:gov-academia-diff} | |
| 78 | +\end{table} | |
| 79 | + | |
| 80 | +\vspace*{-1cm} | |
| 81 | + | |
| 82 | +During the project progress, this workflow proved to be inefficient. Conflicts | |
| 83 | +between the internal management processes and differences in pace and goals of | |
| 84 | +each institution were compromising the platform development. To improve the | |
| 85 | +project management process and reducing the mismatching between government and | |
| 86 | +academia, professors, with the senior developers' collaboration, incrementally | |
| 87 | +employed a set of best practices based on FLOSS and agile values. Throughout | |
| 88 | +the project, the development leaders made decisions in a non-systematic way to | |
| 89 | +promote the usage of these techniques. In this paper, we analyzed and codified | |
| 90 | +these decisions and how they favored the collaboration progress. | |
| 91 | + | |
| 92 | +\subsection{Survey, Interview and Data Collection} | |
| 93 | + | |
| 94 | +We separated the project team into three groups: undergraduate interns, IT | |
| 95 | +professionals (senior developers and designers), and MPOG analysts. For the | |
| 96 | +first two we sent online questionnaires, and for the last one, we conducted | |
| 97 | +2-hour interviews. Table \ref{survey-table} presents the details of these | |
| 98 | +processes. | |
| 99 | + | |
| 100 | +\vspace*{-.5cm} | |
| 101 | + | |
| 102 | +\begin{table}[h] | |
| 103 | +\centering | |
| 104 | +\def\arraystretch{1.2} | |
| 105 | +\setlength\tabcolsep{0.2cm} | |
| 106 | +\resizebox{\textwidth}{!}{% | |
| 107 | +\begin{tabular}{m{4cm}!{\color{white}\vrule}m{5cm}!{\color{white}\vrule}m{6cm}!{\color{white}\vrule}m{6cm}} | |
| 108 | +\rowcolor[HTML]{c6b3df} | |
| 109 | +\textbf{} & \textbf{\nohyphens{Undergraduate Interns}} & \textbf{Senior Developers} & \textbf{MPOG Analysts} \\ | |
| 110 | +\rowcolor[HTML]{fafafa} | |
| 111 | +\textbf{Research technique} & Online questionnaire & Online questionnaire & Interview \\ | |
| 112 | +\rowcolor[HTML]{f2f2f2} | |
| 113 | +\textbf{Discussed topics} & \multicolumn{2}{l!{\color{white}\vrule}}{\begin{tabular}[c]{@{}l@{}}(1) project organization\\ (2) the development process\\ (3) communication and relationship with members\\ (4) knowledge sharing\\ (5) experience with FLOSS projects\end{tabular}} & \begin{tabular}[c]{@{}l@{}}(1) professional profile\\ (2) organization, communication \\ and development methodologies\\ (3) satisfaction with \\ the developed platform\\ (4) lessons learned\end{tabular} \\ | |
| 114 | +\rowcolor[HTML]{fafafa} | |
| 115 | +\textbf{Number of interviewed} & 42 & 8 & 2 \\ | |
| 116 | +\rowcolor[HTML]{f2f2f2} | |
| 117 | +\textbf{Rate of responses} & 88\% (37) & 100\% & 100\% \\ | |
| 118 | +\rowcolor[HTML]{fafafa} | |
| 119 | +\textbf{Average age at the end of the project} & 22 years old & 30 years old & 30 years old \\ | |
| 120 | +\rowcolor[HTML]{f2f2f2} | |
| 121 | +\textbf{Gender} & \begin{tabular}[c]{@{}l@{}}8\% women \\ 92\% man\end{tabular} & \begin{tabular}[c]{@{}l@{}}13\% women \\ 87\% man\end{tabular} & 100\% women \\ | |
| 122 | +\rowcolor[HTML]{fafafa} | |
| 123 | +\begin{tabular}[c]{@{}l@{}}\textbf{Experience} \\ \textbf{background}\end{tabular} & 43\% of the interns had the SPB project as their first contact with FLOSS & 11 years of experience; worked in at least 5 companies; participated in 4 to 80 distinct projects; 86\%of them had some background with FLOSS before the SPB project & more than 7 years working in the government; SPB project represented their first experience of government-academia collaboration \\ | |
| 124 | +\end{tabular}% | |
| 125 | +} | |
| 126 | +\caption{Surveying the project participants} | |
| 127 | +\label{survey-table} | |
| 128 | +\end{table} | |
| 129 | + | |
| 130 | +\vspace*{-1cm} | |
| 131 | + | |
| 132 | +Finally, we analyzed the data from the central project repository considering | |
| 133 | +all the issues and commits. From April 2015 to June 2016, 59 distinct authors | |
| 134 | +opened 879 issues, 64 different users made the total of 4,658 comments. The | |
| 135 | +development team made 3,256 commits in this abovementioned repository. | ... | ... |
| ... | ... | @@ -0,0 +1,188 @@ |
| 1 | +\section{Results} | |
| 2 | +\label{sec:results} | |
| 3 | + | |
| 4 | +The SPB portal project had two phases according to the traceability of project | |
| 5 | +management activities. The first one, between January 2014 and March 2015, is | |
| 6 | +non-traceable since only the universities managed the development activities. | |
| 7 | +The communication between government and academia was, generally, in private | |
| 8 | +channels, such as professional e-mails, personal meetings, and telephone calls. | |
| 9 | +Therefore, the quantitative data found for this period are not conclusive or | |
| 10 | +have little expressiveness, and we do not examine them. | |
| 11 | + | |
| 12 | +The second phase, from April 2015 to the end of the project (June 2016), has | |
| 13 | +meaningful data. Much of the management and communication activities were | |
| 14 | +recorded and published on online channels and tools. During this period, the | |
| 15 | +development leaders consolidated several FLOSS practices and agile values | |
| 16 | +employed in the development process. At the end of the project, the academic | |
| 17 | +team had an empirical management approach for meeting the government | |
| 18 | +bureaucracies. | |
| 19 | + | |
| 20 | +\subsection{Use of the system under development to develop the system itself} | |
| 21 | + | |
| 22 | +Due to the platform features for software development and social network, the | |
| 23 | +development coordinators decided to use the platform under construction to | |
| 24 | +develop the system itself. Gradually, in addition to development activities, | |
| 25 | +government and academia migrated the project management and the communication | |
| 26 | +between teams to the portal environment. | |
| 27 | + | |
| 28 | +In short, the wiki feature was used for logging meetings, defining goals, | |
| 29 | +planning sprints, documenting deployment procedures and user guides. The issue | |
| 30 | +tracker was used for discussing requirements, monitoring features under | |
| 31 | +development, requesting and recording changes, and validating the delivered | |
| 32 | +functionalities. Finally, the mailing list was used for collaborative | |
| 33 | +construction of requirements, defining schedules, and scheduling meetings | |
| 34 | +between institutions. | |
| 35 | + | |
| 36 | +Our surveys report Mailing list (100\%) and Issue Tracker (62.5\%) as the main | |
| 37 | +means of interaction between senior developers and interns. The development | |
| 38 | +team and MPOG staff also interacted mostly via Mailing List (87.5\%) and Issue | |
| 39 | +tracker (50\%). According to one of the interviewees, this movement made the | |
| 40 | +\textbf{communication more transparent and efficient}. An MPOG analyst said | |
| 41 | +that \textit{``Communicating well goes far beyond the speed. It means enabling | |
| 42 | +someone to tell everyone about everything that is happening in the project. We | |
| 43 | +did not use emails, we use more mailing list and avoid emails. This usage | |
| 44 | +helped us considerably. Everything was public and did not pollute our email | |
| 45 | +box. So, when you wanted to know something, you could access the SPB list and | |
| 46 | +see everything''}. | |
| 47 | + | |
| 48 | +Migrating to the SPB platform also \textbf{easied monitoring of activities and | |
| 49 | +increased interactions between developers and public servants}. The data | |
| 50 | +collected from the repository highlight the frequent use of the platform by | |
| 51 | +both sides teams. In the last 15 months of the project, 59 different authors | |
| 52 | +opened the central repository issues, 8 of them were MPOG agents. These issues | |
| 53 | +received comments from 64 distinct users, 9 of them from MPOG. When we consider | |
| 54 | +the issues with more interactions, those which had ten comments or more, we | |
| 55 | +notice that the government team also felt comfortable in using the tool to | |
| 56 | +interact directly with the development team. In a set of 102 active issues, | |
| 57 | +MPOG staff created 43 of them (this represents 42\% of the most active issues). | |
| 58 | + | |
| 59 | +For the MPOG analysts, interaction via repository improved communication. | |
| 60 | +\textit{``There was a big evolution, we increased our communication via | |
| 61 | +Gitlab''}. Migrating to the platform also led MPOG staff to \textbf{trust the | |
| 62 | +developed code}: \textit{``Everything was validated. We tested the | |
| 63 | +functionalities and developed the project on the SPB platform itself. Hence, | |
| 64 | +the use of the system homologated most of its features. From the moment we | |
| 65 | +began to use it for developing, this validation was constant. We felt confident | |
| 66 | +in the code produced''}. | |
| 67 | + | |
| 68 | +The abovementioned decision also collaborated to meet the government's demand | |
| 69 | +for meticulous documentation of the software design and stages of development | |
| 70 | +without bureaucratizing or modifying the development process. The usage of the | |
| 71 | +platform for project team management conducted \textbf{the organic production | |
| 72 | +of documentation and records}, as mentioned in one of the MPOG responses: | |
| 73 | +\textit{``It was a great learning experience. There are many things documented | |
| 74 | +in emails as well as in the portal itself. We can access the tools at any time | |
| 75 | +and find out how we develop a solution. We can remember the positive project | |
| 76 | +points''}. | |
| 77 | + | |
| 78 | +\subsection{Brings together government staff and development team} | |
| 79 | + | |
| 80 | +In the first phase of the project, the interviewed MPOG analysts did not | |
| 81 | +participate in any direct interaction with any university representative, even | |
| 82 | +though they were the ones in charge of the government in ensuring the | |
| 83 | +collaboration agreement and the delivery of the products. Because of this, they | |
| 84 | +relied on feedback from their superiors on inter-institutional meetings. They | |
| 85 | +reported that there was significant communication noise in the internal | |
| 86 | +dialogues with their superiors, as well as between their superiors and the | |
| 87 | +development team. | |
| 88 | + | |
| 89 | +In the second phase of the project, these analysts became direct | |
| 90 | +representatives of the government and started to visit the university's | |
| 91 | +laboratory bi-weekly. One of the analysts believed that \textit{``at this | |
| 92 | +point, the communication started to change''}. The new dynamics \textbf{reduced | |
| 93 | +communication misunderstandings and unified both sides}, as reported by another | |
| 94 | +interviewee: \textit{``It was very positive. We liked to go there and to | |
| 95 | +interact with the team. I think it brought more unity, more integration into | |
| 96 | +the project''}. {73\%} of the interns considered positive the direct | |
| 97 | +participation of the MPOG staff, and {81\%} of them believed the presence of | |
| 98 | +government staff in sprint ceremonies was relevant for the project development. | |
| 99 | +For 76\% of the interns, writing the requirements together with the MPOG staff | |
| 100 | +was very important to \textbf{better meet expectations of both sides}. | |
| 101 | +According to one of them, \textit{``Joint planning and timely meetings were | |
| 102 | +very important for understanding the needs of MPOG''}. | |
| 103 | + | |
| 104 | +The closest dialogue between government and academia generated empathy, as | |
| 105 | +reported by one of the interviewees: \textit{``Knowing people in person makes a | |
| 106 | +big difference in the relationship because it causes empathy. You know who that | |
| 107 | +person is. He's not merly a name''}. Consequently, this empathy helped to | |
| 108 | +\textbf{synchronize the execution pace of activities}: \textit{``Visiting the | |
| 109 | +lab and meeting the developers encouraged us to validate resources faster and | |
| 110 | +give faster feedback to the team. In return, they also quickly answered us any | |
| 111 | +question''}. | |
| 112 | + | |
| 113 | +The implementation of a Continuous Delivery pipeline also reinforced the teams' | |
| 114 | +synchronization \cite{siqueira2018cd} . For 81\% of the interns and 75\% of | |
| 115 | +the IT professionals, deploying new versions of the SPB portal in production | |
| 116 | +was a motivator during the project. On the government side, this approach | |
| 117 | +helped to \textbf{overcome the government bias toward low productivity of | |
| 118 | +collaborative projects with academia}, as mentioned by themselves: | |
| 119 | +\textit{``Government staff has a bias that universities do not deliver | |
| 120 | +products. However, in this project, we made many deliveries with high quality. | |
| 121 | +Nowadays, I think if we had paid the same amount for a company, it would not | |
| 122 | +have done the amount of features we did with the technical quality we have''}. | |
| 123 | +Additionally, the deployment of each new version also \textbf{share a common | |
| 124 | +understanding of the process from one side to the other}, as mentioned by a | |
| 125 | +MPOG analyst: \textit{``We had only the strategic vision of the project. When | |
| 126 | +we needed to deal with technical issues, we had some difficulty planning the | |
| 127 | +four-month releases. However, in the last stages of the project I realized | |
| 128 | +that this was not a problem. The team was delivering and the results were | |
| 129 | +available in production. The team was qualified, the code had quality, and the | |
| 130 | +project was well executed. So in practice, our difficulty in interpreting the | |
| 131 | +technical details did not impact the release planning''}. | |
| 132 | + | |
| 133 | +\subsection{Organized development team into priority fronts, and for each one, hire at least one specialist from the IT market} | |
| 134 | + | |
| 135 | +The development team had four work areas divided by the main demands of the | |
| 136 | +project: User Experience, DevOps, Integration of Systems, and Social | |
| 137 | +Networking. For each segment, at least one professional in the IT market was | |
| 138 | +hired to raise the quality of the product. Senior developers have been selected | |
| 139 | +based on their vast experience in FLOSS systems and their knowledge on tools | |
| 140 | +used in the project. | |
| 141 | + | |
| 142 | +The presence of senior developers in the project contributed to | |
| 143 | +\textbf{conciliate the development processes of each institution and make | |
| 144 | +better technical decisions}, as quoted in one of the answers to the senior | |
| 145 | +developer's questionnaire: \textit{``I think my main contribution was to | |
| 146 | +balance the relations between the MPOG staff and the university team''}. {63\%} | |
| 147 | +of the IT professionals believed they have collaborated to conciliate the | |
| 148 | +management and development process between the two institutions and also {63\%} | |
| 149 | +of them helped MPOG staff express their requests more clearly. Government | |
| 150 | +analysts were also more open to suggestions from these developers: | |
| 151 | +\textit{``They are upstream developers of the systems that integrate the | |
| 152 | +platform. They conveyed trust, and then we trust in the developed code''}. | |
| 153 | +According to questionnaire responses, IT professionals largely agreed with the | |
| 154 | +project development process. For 63\%, this process has close similarity to | |
| 155 | +their previous experiences. In contrast, {62.5\%} of them did not understand | |
| 156 | +the MPOG's project management process and {50\%} believed this process could | |
| 157 | +affect their project productivity. | |
| 158 | + | |
| 159 | +The senior developers were also responsible for \textbf{improving the | |
| 160 | +management and technical knowledge} of the interns about practices from | |
| 161 | +industry and open source projects. {91\%} of the interns believed that working | |
| 162 | +with professionals was essential for learning, and, for all of them, working | |
| 163 | +with IT professionals was important during the project. {75\%} of the IT | |
| 164 | +professionals believed that ``Working in pairs with a senior'' and 63\% that | |
| 165 | +``Participate in joint review tasks'' were the tasks with the involvement of | |
| 166 | +them that most contributed to the evolution of the interns in the project. | |
| 167 | +{75\%} believed that the knowledge shared by them to one intern was widespread | |
| 168 | +among the others in the team. Government analysts also pointed this knowledge | |
| 169 | +sharing: \textit{``On the university side, we noticed a significant improvement | |
| 170 | +in the platform with the hiring of the systems original developers. They had a | |
| 171 | +guide on how to best develop each feature and were able to solve non-trivial | |
| 172 | +problems quickly''}. | |
| 173 | + | |
| 174 | +Organizing the development team and hiring of the IT professionals allowed each | |
| 175 | +team to \textbf{self-organize and gain more autonomy in the management of their | |
| 176 | +tasks}. There was a development coach to lead each team, and a ``meta-coach'' | |
| 177 | +supported all of them in their internal management activities. The coaches | |
| 178 | +(most advanced interns) were points of reference in the development process. | |
| 179 | +{89\%} of the interns said that the presence of the coach was essential to the | |
| 180 | +sprint's running, and for {88\%} of the of the IT professionals the coaches was | |
| 181 | +essential for their interaction with the development team. MPOG analysts saw | |
| 182 | +the coaches as facilitators their activities and communication with the | |
| 183 | +development team. They said \textit{``I interacted more with the project | |
| 184 | +coordinator (professor) and team coaches (interns)''}, \textit{``Usually, we | |
| 185 | +contact a coach to clarify some requirements or to understand some feature. The | |
| 186 | +coaches were more available than senior developers and, sometimes, they would | |
| 187 | +take our question to a senior developer''}. | |
| 188 | + | ... | ... |
| ... | ... | @@ -0,0 +1,110 @@ |
| 1 | +\section{Discussion} | |
| 2 | +\label{sec:discussion} | |
| 3 | + | |
| 4 | +Our results reveal a set of nine management practices successfully employed in | |
| 5 | +abovementioned case. We analyzed unsystematic decisions made during a 30-month | |
| 6 | +collaborative project and identified three macro-decisions that harmonized the | |
| 7 | +differences of the management processes of each organization. We evidenced from | |
| 8 | +data collection, and responses of the members of both sides to the | |
| 9 | +questionnaires and interviews, the benefits obtained through the adoption of | |
| 10 | +this empirical method. The Table \ref{practices-table} summarizes | |
| 11 | +macro-decisions, practices, and benefits. | |
| 12 | + | |
| 13 | +\vspace*{-.5cm} | |
| 14 | + | |
| 15 | +\begin{table}[h] | |
| 16 | +\centering | |
| 17 | +\def\arraystretch{1.5} | |
| 18 | +\setlength\tabcolsep{0.5cm} | |
| 19 | +\resizebox{\textwidth}{!}{% | |
| 20 | +\begin{tabular}{ m{4cm} m{9cm} m{9cm} } | |
| 21 | +\rowcolor[HTML]{b7d0b9} | |
| 22 | +\textbf{Decision} & \textbf{Practice Explanation} & \textbf{Benefits} \\ | |
| 23 | +\rowcolor[HTML]{fafafa} | |
| 24 | +\begin{flushleft} | |
| 25 | +\textbf{Use of the system under development to develop the system itself} | |
| 26 | +\end{flushleft} & | |
| 27 | +\begin{flushleft} | |
| 28 | +\begin{itemize} | |
| 29 | +\setlength{\itemsep}{2pt} | |
| 30 | +\item The features and tools of the platform under development supported the project management and communication activities. | |
| 31 | +\end{itemize} | |
| 32 | +\end{flushleft} & | |
| 33 | +\begin{flushleft} | |
| 34 | +\begin{itemize} | |
| 35 | +\setlength{\itemsep}{2pt} | |
| 36 | +\item Communicating with transparency and efficiency. | |
| 37 | +\item Easy monitoring of activities. | |
| 38 | +\item More interactions between developers and public servants. | |
| 39 | +\item Confidence in the developed code. | |
| 40 | +\item Organic documentation. | |
| 41 | +\end{itemize} | |
| 42 | +\end{flushleft} \\ | |
| 43 | +\rowcolor[HTML]{f2f2f2} | |
| 44 | +\begin{flushleft} | |
| 45 | +\textbf{Bring together government staff and development team} | |
| 46 | +\end{flushleft} & | |
| 47 | +\begin{flushleft} | |
| 48 | +\begin{itemize} | |
| 49 | +\setlength{\itemsep}{2pt} | |
| 50 | +\item Government staff, academic coordinators, senior developers and team coaches biweekly meet at the university lab, academia headquarters, for sprint planning and review. | |
| 51 | +\item Conduct on the platform technical discussions between government staff and the development team. | |
| 52 | +\item Involve government board directors only in strategic planning of the project. | |
| 53 | +\item Build a continuous delivery pipeline with stages involving both sides. | |
| 54 | +\end{itemize} \end{flushleft} & | |
| 55 | +\begin{flushleft} | |
| 56 | +\begin{itemize} | |
| 57 | +\setlength{\itemsep}{2pt} | |
| 58 | +\item Reducing communication misunderstanding. | |
| 59 | +\item Better meeting expectations of both sides. | |
| 60 | +\item Improvement of the decision-making process. | |
| 61 | +\item Overcoming the government bias regarding low productivity of collaborative projects with academia. | |
| 62 | +\item Synchronizing the execution pace of activities. | |
| 63 | +\item Sharing a common understanding of the process from one side to the other. | |
| 64 | +\end{itemize} \end{flushleft} \\ | |
| 65 | +\rowcolor[HTML]{fafafa} | |
| 66 | +\begin{flushleft} | |
| 67 | +\textbf{Organize the development team into priority fronts, and for each one, hire at least one specialist from the IT market} | |
| 68 | +\end{flushleft} & | |
| 69 | +\begin{itemize} | |
| 70 | +\setlength{\itemsep}{2pt} | |
| 71 | +\item The coordinators separated the development team into priority work areas considering the main demands of the project. | |
| 72 | +\item IT market professionals with recognized experience on each front were hired to work in person or remotely. | |
| 73 | +\item Define among the interns the leadership roles: a coach for each front, and a meta-coach of the entire development team. | |
| 74 | +\item Each team has certain self-organization, being guided by one intern-coach and at least one senior developer. | |
| 75 | +\end{itemize} & | |
| 76 | +\begin{itemize} | |
| 77 | +\setlength{\itemsep}{2pt} | |
| 78 | +\item Conciliating the development processes of each institution, taking better technical decisions. | |
| 79 | +\item Improving the management and technical knowledge. | |
| 80 | +\item Self-organizing and gaining autonomy in the management of their tasks. | |
| 81 | +\end{itemize}\\ | |
| 82 | +\end{tabular}% | |
| 83 | +} | |
| 84 | +\caption{Empirical SPB management decisions and its benefits.} | |
| 85 | +\label{practices-table} | |
| 86 | +\end{table} | |
| 87 | + | |
| 88 | +\vspace*{-1cm} | |
| 89 | + | |
| 90 | +The results of this current work corroborate the lessons learned in our | |
| 91 | +previous work on studying the SPB project case \cite{meirelles2017spb}. | |
| 92 | +Evidence from the data collected, responses to questionnaires, and interviews | |
| 93 | +reinforce what has been reported by the academic coordination of the project, | |
| 94 | +adding the point of views of government and other roles involved on the | |
| 95 | +academic side. In short, the government staff took time to understand how | |
| 96 | +collaboration works and to realize that the project was not a client-executor | |
| 97 | +relationship and both organizations were at the same hierarchical level in the | |
| 98 | +work plan. | |
| 99 | + | |
| 100 | +The decisions, practices, and benefits presented in the Table | |
| 101 | +\ref{practices-table} should be evaluated and used in contexts with more | |
| 102 | +substantial plurality and diversity of government stakeholders. This study has | |
| 103 | +a few obvious limitations. Firstly, we point out the lack of communication | |
| 104 | +records and low traceability of the management data referring to the first | |
| 105 | +phase of the project. Secondly, we consider a drawback the hiatus between the | |
| 106 | +completion of the project and the conduction of interviews and questionnaires, | |
| 107 | +since we rely on the memory of the interviewees to rescue the events. Lastly, | |
| 108 | +the current situation of the respondents, such as their current working midset, | |
| 109 | +may also alter their perception on the on the topics addressed in the | |
| 110 | +questionnaire and consequently their responses. | ... | ... |
| ... | ... | @@ -0,0 +1,41 @@ |
| 1 | +\section{Conclusion} | |
| 2 | +\label{sec:conclusion} | |
| 3 | + | |
| 4 | +Organizational culture is built and reinforced every life year of a large-size | |
| 5 | +organization. These cultural values reflect on the internal management | |
| 6 | +processes and the norms of communication among its members. In the context of | |
| 7 | +software development projects, each institution adopts development methods that | |
| 8 | +best meet its managerial procedures and organizational routines. When two | |
| 9 | +large-size organizations decide to develop a solution collaboratively, the | |
| 10 | +development methods and workflow of one may conflict with the interests of the | |
| 11 | +other. In a case of government-academia collaboration, conciliating their | |
| 12 | +different management processes is crucial, since the poor and unadaptable | |
| 13 | +management could lead the project to fail, resulting in the waste of | |
| 14 | +population-funded resources. | |
| 15 | + | |
| 16 | +In this study, we investigated the management method employed at the SPB portal | |
| 17 | +project, a partnership between the Brazilian government and universities. As a | |
| 18 | +result, we identified a set of FLOSS and agile best practices, empirically | |
| 19 | +employed by the development leaders, which improved the workflow and | |
| 20 | +relationship between the organizations involved. | |
| 21 | + | |
| 22 | +Regarding our first research question \textit{``How to introduce FLOSS and | |
| 23 | +agile best practices into government-academia collaboration projects?''}, we | |
| 24 | +examined the SPB project and identified three macro-decisions taken by the | |
| 25 | +academic coordinators that drove them to intuitively and unsystematically adopt | |
| 26 | +nine FLOSS and agile best practices in the development process. | |
| 27 | + | |
| 28 | +The interviewed responses allowed us to understand how FLOSS and agile | |
| 29 | +practices have benefited the people and project management. Based on that, we | |
| 30 | +answered our second research question \textit{``What practices favor effective | |
| 31 | +team management in government-academia collaborative projects?''}, making to | |
| 32 | +explicit 14 benefits obtained from the use of the nine best practices, all | |
| 33 | +presented in Table \ref{practices-table}. | |
| 34 | + | |
| 35 | +Finally, we collected a significant amount of data and testimonials related to | |
| 36 | +the teaching of software engineering. We consider the studied project an | |
| 37 | +educational case, an example of teaching FLOSS and agile techniques applied to | |
| 38 | +real-world software development. As future work, we intend to analyze this | |
| 39 | +collected information to propose improvements in education methodologies of | |
| 40 | +software engineering undergraduate students as well. | |
| 41 | + | ... | ... |
| ... | ... | @@ -0,0 +1,49 @@ |
| 1 | +\section{Layered Approach} | |
| 2 | +\label{sec:background} | |
| 3 | + | |
| 4 | +Combine many teams with different processes in the same project might be | |
| 5 | +challenging. To address this problem, we got inspiration from Operating Systems | |
| 6 | +(OS) concepts and extended the notion of layered approach design | |
| 7 | +\cite{layeredApproach}. This technique breaks the OS into distinct layers with | |
| 8 | +different proposes. The inner layer represents the hardware, while the external | |
| 9 | +layer represents the user interface. Layered approach demands a careful | |
| 10 | +definition of each layer responsibility and how they communicate. After the | |
| 11 | +layers and communication definition, it is simple to change a single layer | |
| 12 | +without affecting other layers. This approach presents two drawbacks: (1) it | |
| 13 | +creates an overhead of communication from the upper layer to the lower layer, | |
| 14 | +and (2) it is a hard to define the correct interface between layers. | |
| 15 | + | |
| 16 | +We extended the layered approach for handling the interaction with development | |
| 17 | +teams and the Brazilian government. We realized that multiple teams interacting | |
| 18 | +with the government have different expectations about the project. Furthermore, | |
| 19 | +we noticed that government can transfer political pressures to the development | |
| 20 | +team and sometimes they try to impose their processes to the project. For | |
| 21 | +handling all the different processes and keep the multiple expectations under | |
| 22 | +control, we implemented the layered approach for project management. | |
| 23 | + | |
| 24 | +\begin{figure}[!h] | |
| 25 | + \centering | |
| 26 | + \includegraphics[width=.30\textwidth]{project_layers} | |
| 27 | + \caption{Layered Approach for managing multiple processes} | |
| 28 | + \label{fig:layered_processes} | |
| 29 | +\end{figure} | |
| 30 | + | |
| 31 | +Figure \ref{fig:layered_processes} illustrates our set of layers. The inner | |
| 32 | +layer comprises the development team composed of agile teams. Next, is a layer | |
| 33 | +that includes the coordinators responsible for handling the bureaucratic issues | |
| 34 | +coming from the government to the development team. Subsequent, the analyst | |
| 35 | +layer covers the government employees with the understanding about the | |
| 36 | +requirements, but they working guided by the traditional methodology. Finally, | |
| 37 | +there is the directory layer responsible for the political issues. | |
| 38 | + | |
| 39 | +The communication between layers is an important problem in the Layered | |
| 40 | +approach, which still an important issue to be addressed in our propose. For | |
| 41 | +solving the problem, we designed a common channel of communication that passes | |
| 42 | +through all layers. For keeping the layer separation, some members of each | |
| 43 | +layer worked as a filter. This was possible because we created a proper | |
| 44 | +infrastructure based on transparency. We used the following tools to implement | |
| 45 | +the communication between layers: issue tracker (from Gitlab), mailing list, | |
| 46 | +IRC, and wiki. The coordination layer has to filter the interaction between the | |
| 47 | +government and the development team. | |
| 48 | + | |
| 49 | + | ... | ... |
| ... | ... | @@ -0,0 +1,1208 @@ |
| 1 | +% LLNCS DOCUMENT CLASS -- version 2.18 (27-Sep-2013) | |
| 2 | +% Springer Verlag LaTeX2e support for Lecture Notes in Computer Science | |
| 3 | +% | |
| 4 | +%% | |
| 5 | +%% \CharacterTable | |
| 6 | +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z | |
| 7 | +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z | |
| 8 | +%% Digits \0\1\2\3\4\5\6\7\8\9 | |
| 9 | +%% Exclamation \! Double quote \" Hash (number) \# | |
| 10 | +%% Dollar \$ Percent \% Ampersand \& | |
| 11 | +%% Acute accent \' Left paren \( Right paren \) | |
| 12 | +%% Asterisk \* Plus \+ Comma \, | |
| 13 | +%% Minus \- Point \. Solidus \/ | |
| 14 | +%% Colon \: Semicolon \; Less than \< | |
| 15 | +%% Equals \= Greater than \> Question mark \? | |
| 16 | +%% Commercial at \@ Left bracket \[ Backslash \\ | |
| 17 | +%% Right bracket \] Circumflex \^ Underscore \_ | |
| 18 | +%% Grave accent \` Left brace \{ Vertical bar \| | |
| 19 | +%% Right brace \} Tilde \~} | |
| 20 | +%% | |
| 21 | +\NeedsTeXFormat{LaTeX2e}[1995/12/01] | |
| 22 | +\ProvidesClass{llncs}[2013/09/27 v2.18 | |
| 23 | +^^J LaTeX document class for Lecture Notes in Computer Science] | |
| 24 | +% Options | |
| 25 | +\let\if@envcntreset\iffalse | |
| 26 | +\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue} | |
| 27 | +\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y} | |
| 28 | +\DeclareOption{oribibl}{\let\oribibl=Y} | |
| 29 | +\let\if@custvec\iftrue | |
| 30 | +\DeclareOption{orivec}{\let\if@custvec\iffalse} | |
| 31 | +\let\if@envcntsame\iffalse | |
| 32 | +\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue} | |
| 33 | +\let\if@envcntsect\iffalse | |
| 34 | +\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue} | |
| 35 | +\let\if@runhead\iffalse | |
| 36 | +\DeclareOption{runningheads}{\let\if@runhead\iftrue} | |
| 37 | + | |
| 38 | +\let\if@openright\iftrue | |
| 39 | +\let\if@openbib\iffalse | |
| 40 | +\DeclareOption{openbib}{\let\if@openbib\iftrue} | |
| 41 | + | |
| 42 | +% languages | |
| 43 | +\let\switcht@@therlang\relax | |
| 44 | +\def\ds@deutsch{\def\switcht@@therlang{\switcht@deutsch}} | |
| 45 | +\def\ds@francais{\def\switcht@@therlang{\switcht@francais}} | |
| 46 | + | |
| 47 | +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} | |
| 48 | + | |
| 49 | +\ProcessOptions | |
| 50 | + | |
| 51 | +\LoadClass[twoside]{article} | |
| 52 | +\RequirePackage{multicol} % needed for the list of participants, index | |
| 53 | +\RequirePackage{aliascnt} | |
| 54 | + | |
| 55 | +\setlength{\textwidth}{12.2cm} | |
| 56 | +\setlength{\textheight}{19.3cm} | |
| 57 | +\renewcommand\@pnumwidth{2em} | |
| 58 | +\renewcommand\@tocrmarg{3.5em} | |
| 59 | +% | |
| 60 | +\def\@dottedtocline#1#2#3#4#5{% | |
| 61 | + \ifnum #1>\c@tocdepth \else | |
| 62 | + \vskip \z@ \@plus.2\p@ | |
| 63 | + {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm | |
| 64 | + \parfillskip -\rightskip \pretolerance=10000 | |
| 65 | + \parindent #2\relax\@afterindenttrue | |
| 66 | + \interlinepenalty\@M | |
| 67 | + \leavevmode | |
| 68 | + \@tempdima #3\relax | |
| 69 | + \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip | |
| 70 | + {#4}\nobreak | |
| 71 | + \leaders\hbox{$\m@th | |
| 72 | + \mkern \@dotsep mu\hbox{.}\mkern \@dotsep | |
| 73 | + mu$}\hfill | |
| 74 | + \nobreak | |
| 75 | + \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% | |
| 76 | + \par}% | |
| 77 | + \fi} | |
| 78 | +% | |
| 79 | +\def\switcht@albion{% | |
| 80 | +\def\abstractname{Abstract.} | |
| 81 | +\def\ackname{Acknowledgement.} | |
| 82 | +\def\andname{and} | |
| 83 | +\def\lastandname{\unskip, and} | |
| 84 | +\def\appendixname{Appendix} | |
| 85 | +\def\chaptername{Chapter} | |
| 86 | +\def\claimname{Claim} | |
| 87 | +\def\conjecturename{Conjecture} | |
| 88 | +\def\contentsname{Table of Contents} | |
| 89 | +\def\corollaryname{Corollary} | |
| 90 | +\def\definitionname{Definition} | |
| 91 | +\def\examplename{Example} | |
| 92 | +\def\exercisename{Exercise} | |
| 93 | +\def\figurename{Fig.} | |
| 94 | +\def\keywordname{{\bf Keywords:}} | |
| 95 | +\def\indexname{Index} | |
| 96 | +\def\lemmaname{Lemma} | |
| 97 | +\def\contriblistname{List of Contributors} | |
| 98 | +\def\listfigurename{List of Figures} | |
| 99 | +\def\listtablename{List of Tables} | |
| 100 | +\def\mailname{{\it Correspondence to\/}:} | |
| 101 | +\def\noteaddname{Note added in proof} | |
| 102 | +\def\notename{Note} | |
| 103 | +\def\partname{Part} | |
| 104 | +\def\problemname{Problem} | |
| 105 | +\def\proofname{Proof} | |
| 106 | +\def\propertyname{Property} | |
| 107 | +\def\propositionname{Proposition} | |
| 108 | +\def\questionname{Question} | |
| 109 | +\def\remarkname{Remark} | |
| 110 | +\def\seename{see} | |
| 111 | +\def\solutionname{Solution} | |
| 112 | +\def\subclassname{{\it Subject Classifications\/}:} | |
| 113 | +\def\tablename{Table} | |
| 114 | +\def\theoremname{Theorem}} | |
| 115 | +\switcht@albion | |
| 116 | +% Names of theorem like environments are already defined | |
| 117 | +% but must be translated if another language is chosen | |
| 118 | +% | |
| 119 | +% French section | |
| 120 | +\def\switcht@francais{%\typeout{On parle francais.}% | |
| 121 | + \def\abstractname{R\'esum\'e.}% | |
| 122 | + \def\ackname{Remerciements.}% | |
| 123 | + \def\andname{et}% | |
| 124 | + \def\lastandname{ et}% | |
| 125 | + \def\appendixname{Appendice} | |
| 126 | + \def\chaptername{Chapitre}% | |
| 127 | + \def\claimname{Pr\'etention}% | |
| 128 | + \def\conjecturename{Hypoth\`ese}% | |
| 129 | + \def\contentsname{Table des mati\`eres}% | |
| 130 | + \def\corollaryname{Corollaire}% | |
| 131 | + \def\definitionname{D\'efinition}% | |
| 132 | + \def\examplename{Exemple}% | |
| 133 | + \def\exercisename{Exercice}% | |
| 134 | + \def\figurename{Fig.}% | |
| 135 | + \def\keywordname{{\bf Mots-cl\'e:}} | |
| 136 | + \def\indexname{Index} | |
| 137 | + \def\lemmaname{Lemme}% | |
| 138 | + \def\contriblistname{Liste des contributeurs} | |
| 139 | + \def\listfigurename{Liste des figures}% | |
| 140 | + \def\listtablename{Liste des tables}% | |
| 141 | + \def\mailname{{\it Correspondence to\/}:} | |
| 142 | + \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}% | |
| 143 | + \def\notename{Remarque}% | |
| 144 | + \def\partname{Partie}% | |
| 145 | + \def\problemname{Probl\`eme}% | |
| 146 | + \def\proofname{Preuve}% | |
| 147 | + \def\propertyname{Caract\'eristique}% | |
| 148 | +%\def\propositionname{Proposition}% | |
| 149 | + \def\questionname{Question}% | |
| 150 | + \def\remarkname{Remarque}% | |
| 151 | + \def\seename{voir} | |
| 152 | + \def\solutionname{Solution}% | |
| 153 | + \def\subclassname{{\it Subject Classifications\/}:} | |
| 154 | + \def\tablename{Tableau}% | |
| 155 | + \def\theoremname{Th\'eor\`eme}% | |
| 156 | +} | |
| 157 | +% | |
| 158 | +% German section | |
| 159 | +\def\switcht@deutsch{%\typeout{Man spricht deutsch.}% | |
| 160 | + \def\abstractname{Zusammenfassung.}% | |
| 161 | + \def\ackname{Danksagung.}% | |
| 162 | + \def\andname{und}% | |
| 163 | + \def\lastandname{ und}% | |
| 164 | + \def\appendixname{Anhang}% | |
| 165 | + \def\chaptername{Kapitel}% | |
| 166 | + \def\claimname{Behauptung}% | |
| 167 | + \def\conjecturename{Hypothese}% | |
| 168 | + \def\contentsname{Inhaltsverzeichnis}% | |
| 169 | + \def\corollaryname{Korollar}% | |
| 170 | +%\def\definitionname{Definition}% | |
| 171 | + \def\examplename{Beispiel}% | |
| 172 | + \def\exercisename{\"Ubung}% | |
| 173 | + \def\figurename{Abb.}% | |
| 174 | + \def\keywordname{{\bf Schl\"usselw\"orter:}} | |
| 175 | + \def\indexname{Index} | |
| 176 | +%\def\lemmaname{Lemma}% | |
| 177 | + \def\contriblistname{Mitarbeiter} | |
| 178 | + \def\listfigurename{Abbildungsverzeichnis}% | |
| 179 | + \def\listtablename{Tabellenverzeichnis}% | |
| 180 | + \def\mailname{{\it Correspondence to\/}:} | |
| 181 | + \def\noteaddname{Nachtrag}% | |
| 182 | + \def\notename{Anmerkung}% | |
| 183 | + \def\partname{Teil}% | |
| 184 | +%\def\problemname{Problem}% | |
| 185 | + \def\proofname{Beweis}% | |
| 186 | + \def\propertyname{Eigenschaft}% | |
| 187 | +%\def\propositionname{Proposition}% | |
| 188 | + \def\questionname{Frage}% | |
| 189 | + \def\remarkname{Anmerkung}% | |
| 190 | + \def\seename{siehe} | |
| 191 | + \def\solutionname{L\"osung}% | |
| 192 | + \def\subclassname{{\it Subject Classifications\/}:} | |
| 193 | + \def\tablename{Tabelle}% | |
| 194 | +%\def\theoremname{Theorem}% | |
| 195 | +} | |
| 196 | + | |
| 197 | +% Ragged bottom for the actual page | |
| 198 | +\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil | |
| 199 | +\global\let\@textbottom\relax}} | |
| 200 | + | |
| 201 | +\renewcommand\small{% | |
| 202 | + \@setfontsize\small\@ixpt{11}% | |
| 203 | + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ | |
| 204 | + \abovedisplayshortskip \z@ \@plus2\p@ | |
| 205 | + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ | |
| 206 | + \def\@listi{\leftmargin\leftmargini | |
| 207 | + \parsep 0\p@ \@plus1\p@ \@minus\p@ | |
| 208 | + \topsep 8\p@ \@plus2\p@ \@minus4\p@ | |
| 209 | + \itemsep0\p@}% | |
| 210 | + \belowdisplayskip \abovedisplayskip | |
| 211 | +} | |
| 212 | + | |
| 213 | +\frenchspacing | |
| 214 | +\widowpenalty=10000 | |
| 215 | +\clubpenalty=10000 | |
| 216 | + | |
| 217 | +\setlength\oddsidemargin {63\p@} | |
| 218 | +\setlength\evensidemargin {63\p@} | |
| 219 | +\setlength\marginparwidth {90\p@} | |
| 220 | + | |
| 221 | +\setlength\headsep {16\p@} | |
| 222 | + | |
| 223 | +\setlength\footnotesep{7.7\p@} | |
| 224 | +\setlength\textfloatsep{8mm\@plus 2\p@ \@minus 4\p@} | |
| 225 | +\setlength\intextsep {8mm\@plus 2\p@ \@minus 2\p@} | |
| 226 | + | |
| 227 | +\setcounter{secnumdepth}{2} | |
| 228 | + | |
| 229 | +\newcounter {chapter} | |
| 230 | +\renewcommand\thechapter {\@arabic\c@chapter} | |
| 231 | + | |
| 232 | +\newif\if@mainmatter \@mainmattertrue | |
| 233 | +\newcommand\frontmatter{\cleardoublepage | |
| 234 | + \@mainmatterfalse\pagenumbering{Roman}} | |
| 235 | +\newcommand\mainmatter{\cleardoublepage | |
| 236 | + \@mainmattertrue\pagenumbering{arabic}} | |
| 237 | +\newcommand\backmatter{\if@openright\cleardoublepage\else\clearpage\fi | |
| 238 | + \@mainmatterfalse} | |
| 239 | + | |
| 240 | +\renewcommand\part{\cleardoublepage | |
| 241 | + \thispagestyle{empty}% | |
| 242 | + \if@twocolumn | |
| 243 | + \onecolumn | |
| 244 | + \@tempswatrue | |
| 245 | + \else | |
| 246 | + \@tempswafalse | |
| 247 | + \fi | |
| 248 | + \null\vfil | |
| 249 | + \secdef\@part\@spart} | |
| 250 | + | |
| 251 | +\def\@part[#1]#2{% | |
| 252 | + \ifnum \c@secnumdepth >-2\relax | |
| 253 | + \refstepcounter{part}% | |
| 254 | + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% | |
| 255 | + \else | |
| 256 | + \addcontentsline{toc}{part}{#1}% | |
| 257 | + \fi | |
| 258 | + \markboth{}{}% | |
| 259 | + {\centering | |
| 260 | + \interlinepenalty \@M | |
| 261 | + \normalfont | |
| 262 | + \ifnum \c@secnumdepth >-2\relax | |
| 263 | + \huge\bfseries \partname~\thepart | |
| 264 | + \par | |
| 265 | + \vskip 20\p@ | |
| 266 | + \fi | |
| 267 | + \Huge \bfseries #2\par}% | |
| 268 | + \@endpart} | |
| 269 | +\def\@spart#1{% | |
| 270 | + {\centering | |
| 271 | + \interlinepenalty \@M | |
| 272 | + \normalfont | |
| 273 | + \Huge \bfseries #1\par}% | |
| 274 | + \@endpart} | |
| 275 | +\def\@endpart{\vfil\newpage | |
| 276 | + \if@twoside | |
| 277 | + \null | |
| 278 | + \thispagestyle{empty}% | |
| 279 | + \newpage | |
| 280 | + \fi | |
| 281 | + \if@tempswa | |
| 282 | + \twocolumn | |
| 283 | + \fi} | |
| 284 | + | |
| 285 | +\newcommand\chapter{\clearpage | |
| 286 | + \thispagestyle{empty}% | |
| 287 | + \global\@topnum\z@ | |
| 288 | + \@afterindentfalse | |
| 289 | + \secdef\@chapter\@schapter} | |
| 290 | +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne | |
| 291 | + \if@mainmatter | |
| 292 | + \refstepcounter{chapter}% | |
| 293 | + \typeout{\@chapapp\space\thechapter.}% | |
| 294 | + \addcontentsline{toc}{chapter}% | |
| 295 | + {\protect\numberline{\thechapter}#1}% | |
| 296 | + \else | |
| 297 | + \addcontentsline{toc}{chapter}{#1}% | |
| 298 | + \fi | |
| 299 | + \else | |
| 300 | + \addcontentsline{toc}{chapter}{#1}% | |
| 301 | + \fi | |
| 302 | + \chaptermark{#1}% | |
| 303 | + \addtocontents{lof}{\protect\addvspace{10\p@}}% | |
| 304 | + \addtocontents{lot}{\protect\addvspace{10\p@}}% | |
| 305 | + \if@twocolumn | |
| 306 | + \@topnewpage[\@makechapterhead{#2}]% | |
| 307 | + \else | |
| 308 | + \@makechapterhead{#2}% | |
| 309 | + \@afterheading | |
| 310 | + \fi} | |
| 311 | +\def\@makechapterhead#1{% | |
| 312 | +% \vspace*{50\p@}% | |
| 313 | + {\centering | |
| 314 | + \ifnum \c@secnumdepth >\m@ne | |
| 315 | + \if@mainmatter | |
| 316 | + \large\bfseries \@chapapp{} \thechapter | |
| 317 | + \par\nobreak | |
| 318 | + \vskip 20\p@ | |
| 319 | + \fi | |
| 320 | + \fi | |
| 321 | + \interlinepenalty\@M | |
| 322 | + \Large \bfseries #1\par\nobreak | |
| 323 | + \vskip 40\p@ | |
| 324 | + }} | |
| 325 | +\def\@schapter#1{\if@twocolumn | |
| 326 | + \@topnewpage[\@makeschapterhead{#1}]% | |
| 327 | + \else | |
| 328 | + \@makeschapterhead{#1}% | |
| 329 | + \@afterheading | |
| 330 | + \fi} | |
| 331 | +\def\@makeschapterhead#1{% | |
| 332 | +% \vspace*{50\p@}% | |
| 333 | + {\centering | |
| 334 | + \normalfont | |
| 335 | + \interlinepenalty\@M | |
| 336 | + \Large \bfseries #1\par\nobreak | |
| 337 | + \vskip 40\p@ | |
| 338 | + }} | |
| 339 | + | |
| 340 | +\renewcommand\section{\@startsection{section}{1}{\z@}% | |
| 341 | + {-18\p@ \@plus -4\p@ \@minus -4\p@}% | |
| 342 | + {12\p@ \@plus 4\p@ \@minus 4\p@}% | |
| 343 | + {\normalfont\large\bfseries\boldmath | |
| 344 | + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} | |
| 345 | +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% | |
| 346 | + {-18\p@ \@plus -4\p@ \@minus -4\p@}% | |
| 347 | + {8\p@ \@plus 4\p@ \@minus 4\p@}% | |
| 348 | + {\normalfont\normalsize\bfseries\boldmath | |
| 349 | + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} | |
| 350 | +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% | |
| 351 | + {-18\p@ \@plus -4\p@ \@minus -4\p@}% | |
| 352 | + {-0.5em \@plus -0.22em \@minus -0.1em}% | |
| 353 | + {\normalfont\normalsize\bfseries\boldmath}} | |
| 354 | +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% | |
| 355 | + {-12\p@ \@plus -4\p@ \@minus -4\p@}% | |
| 356 | + {-0.5em \@plus -0.22em \@minus -0.1em}% | |
| 357 | + {\normalfont\normalsize\itshape}} | |
| 358 | +\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use | |
| 359 | + \string\subparagraph\space with this class}\vskip0.5cm | |
| 360 | +You should not use \verb|\subparagraph| with this class.\vskip0.5cm} | |
| 361 | + | |
| 362 | +\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00} | |
| 363 | +\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01} | |
| 364 | +\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02} | |
| 365 | +\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03} | |
| 366 | +\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04} | |
| 367 | +\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05} | |
| 368 | +\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06} | |
| 369 | +\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} | |
| 370 | +\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08} | |
| 371 | +\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09} | |
| 372 | +\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A} | |
| 373 | + | |
| 374 | +\let\footnotesize\small | |
| 375 | + | |
| 376 | +\if@custvec | |
| 377 | +\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}} | |
| 378 | +{\mbox{\boldmath$\textstyle#1$}} | |
| 379 | +{\mbox{\boldmath$\scriptstyle#1$}} | |
| 380 | +{\mbox{\boldmath$\scriptscriptstyle#1$}}} | |
| 381 | +\fi | |
| 382 | + | |
| 383 | +\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} | |
| 384 | +\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil | |
| 385 | +\penalty50\hskip1em\null\nobreak\hfil\squareforqed | |
| 386 | +\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} | |
| 387 | + | |
| 388 | +\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip | |
| 389 | +\halign{\hfil | |
| 390 | +$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} | |
| 391 | +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets | |
| 392 | +\cr\to\cr}}} | |
| 393 | +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets | |
| 394 | +\cr\to\cr}}} | |
| 395 | +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr | |
| 396 | +\gets\cr\to\cr}}}}} | |
| 397 | +\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil | |
| 398 | +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} | |
| 399 | +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr | |
| 400 | +\noalign{\vskip1.2pt}=\cr}}} | |
| 401 | +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr | |
| 402 | +\noalign{\vskip1pt}=\cr}}} | |
| 403 | +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr | |
| 404 | +<\cr | |
| 405 | +\noalign{\vskip0.9pt}=\cr}}}}} | |
| 406 | +\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil | |
| 407 | +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} | |
| 408 | +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr | |
| 409 | +\noalign{\vskip1.2pt}=\cr}}} | |
| 410 | +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr | |
| 411 | +\noalign{\vskip1pt}=\cr}}} | |
| 412 | +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr | |
| 413 | +>\cr | |
| 414 | +\noalign{\vskip0.9pt}=\cr}}}}} | |
| 415 | +\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip | |
| 416 | +\halign{\hfil | |
| 417 | +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}} | |
| 418 | +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr | |
| 419 | +>\cr\noalign{\vskip-1pt}<\cr}}} | |
| 420 | +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr | |
| 421 | +>\cr\noalign{\vskip-0.8pt}<\cr}}} | |
| 422 | +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr | |
| 423 | +>\cr\noalign{\vskip-0.3pt}<\cr}}}}} | |
| 424 | +\def\bbbr{{\rm I\!R}} %reelle Zahlen | |
| 425 | +\def\bbbm{{\rm I\!M}} | |
| 426 | +\def\bbbn{{\rm I\!N}} %natuerliche Zahlen | |
| 427 | +\def\bbbf{{\rm I\!F}} | |
| 428 | +\def\bbbh{{\rm I\!H}} | |
| 429 | +\def\bbbk{{\rm I\!K}} | |
| 430 | +\def\bbbp{{\rm I\!P}} | |
| 431 | +\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} | |
| 432 | +{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} | |
| 433 | +\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox | |
| 434 | +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} | |
| 435 | +{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox | |
| 436 | +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} | |
| 437 | +{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox | |
| 438 | +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} | |
| 439 | +{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox | |
| 440 | +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} | |
| 441 | +\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm | |
| 442 | +Q$}\hbox{\raise | |
| 443 | +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} | |
| 444 | +{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise | |
| 445 | +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} | |
| 446 | +{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise | |
| 447 | +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} | |
| 448 | +{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise | |
| 449 | +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} | |
| 450 | +\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm | |
| 451 | +T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} | |
| 452 | +{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox | |
| 453 | +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} | |
| 454 | +{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox | |
| 455 | +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} | |
| 456 | +{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox | |
| 457 | +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} | |
| 458 | +\def\bbbs{{\mathchoice | |
| 459 | +{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox | |
| 460 | +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox | |
| 461 | +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} | |
| 462 | +{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox | |
| 463 | +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox | |
| 464 | +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} | |
| 465 | +{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox | |
| 466 | +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox | |
| 467 | +to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} | |
| 468 | +{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox | |
| 469 | +to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox | |
| 470 | +to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} | |
| 471 | +\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} | |
| 472 | +{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} | |
| 473 | +{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}} | |
| 474 | +{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}} | |
| 475 | + | |
| 476 | +\let\ts\, | |
| 477 | + | |
| 478 | +\setlength\leftmargini {17\p@} | |
| 479 | +\setlength\leftmargin {\leftmargini} | |
| 480 | +\setlength\leftmarginii {\leftmargini} | |
| 481 | +\setlength\leftmarginiii {\leftmargini} | |
| 482 | +\setlength\leftmarginiv {\leftmargini} | |
| 483 | +\setlength \labelsep {.5em} | |
| 484 | +\setlength \labelwidth{\leftmargini} | |
| 485 | +\addtolength\labelwidth{-\labelsep} | |
| 486 | + | |
| 487 | +\def\@listI{\leftmargin\leftmargini | |
| 488 | + \parsep 0\p@ \@plus1\p@ \@minus\p@ | |
| 489 | + \topsep 8\p@ \@plus2\p@ \@minus4\p@ | |
| 490 | + \itemsep0\p@} | |
| 491 | +\let\@listi\@listI | |
| 492 | +\@listi | |
| 493 | +\def\@listii {\leftmargin\leftmarginii | |
| 494 | + \labelwidth\leftmarginii | |
| 495 | + \advance\labelwidth-\labelsep | |
| 496 | + \topsep 0\p@ \@plus2\p@ \@minus\p@} | |
| 497 | +\def\@listiii{\leftmargin\leftmarginiii | |
| 498 | + \labelwidth\leftmarginiii | |
| 499 | + \advance\labelwidth-\labelsep | |
| 500 | + \topsep 0\p@ \@plus\p@\@minus\p@ | |
| 501 | + \parsep \z@ | |
| 502 | + \partopsep \p@ \@plus\z@ \@minus\p@} | |
| 503 | + | |
| 504 | +\renewcommand\labelitemi{\normalfont\bfseries --} | |
| 505 | +\renewcommand\labelitemii{$\m@th\bullet$} | |
| 506 | + | |
| 507 | +\setlength\arraycolsep{1.4\p@} | |
| 508 | +\setlength\tabcolsep{1.4\p@} | |
| 509 | + | |
| 510 | +\def\tableofcontents{\chapter*{\contentsname\@mkboth{{\contentsname}}% | |
| 511 | + {{\contentsname}}} | |
| 512 | + \def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}} | |
| 513 | + \def\lastand{\ifnum\value{auco}=2\relax | |
| 514 | + \unskip{} \andname\ | |
| 515 | + \else | |
| 516 | + \unskip \lastandname\ | |
| 517 | + \fi}% | |
| 518 | + \def\and{\stepcounter{@auth}\relax | |
| 519 | + \ifnum\value{@auth}=\value{auco}% | |
| 520 | + \lastand | |
| 521 | + \else | |
| 522 | + \unskip, | |
| 523 | + \fi}% | |
| 524 | + \@starttoc{toc}\if@restonecol\twocolumn\fi} | |
| 525 | + | |
| 526 | +\def\l@part#1#2{\addpenalty{\@secpenalty}% | |
| 527 | + \addvspace{2em plus\p@}% % space above part line | |
| 528 | + \begingroup | |
| 529 | + \parindent \z@ | |
| 530 | + \rightskip \z@ plus 5em | |
| 531 | + \hrule\vskip5pt | |
| 532 | + \large % same size as for a contribution heading | |
| 533 | + \bfseries\boldmath % set line in boldface | |
| 534 | + \leavevmode % TeX command to enter horizontal mode. | |
| 535 | + #1\par | |
| 536 | + \vskip5pt | |
| 537 | + \hrule | |
| 538 | + \vskip1pt | |
| 539 | + \nobreak % Never break after part entry | |
| 540 | + \endgroup} | |
| 541 | + | |
| 542 | +\def\@dotsep{2} | |
| 543 | + | |
| 544 | +\let\phantomsection=\relax | |
| 545 | + | |
| 546 | +\def\hyperhrefextend{\ifx\hyper@anchor\@undefined\else | |
| 547 | +{}\fi} | |
| 548 | + | |
| 549 | +\def\addnumcontentsmark#1#2#3{% | |
| 550 | +\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline | |
| 551 | + {\thechapter}#3}{\thepage}\hyperhrefextend}}% | |
| 552 | +\def\addcontentsmark#1#2#3{% | |
| 553 | +\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}}% | |
| 554 | +\def\addcontentsmarkwop#1#2#3{% | |
| 555 | +\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}}% | |
| 556 | + | |
| 557 | +\def\@adcmk[#1]{\ifcase #1 \or | |
| 558 | +\def\@gtempa{\addnumcontentsmark}% | |
| 559 | + \or \def\@gtempa{\addcontentsmark}% | |
| 560 | + \or \def\@gtempa{\addcontentsmarkwop}% | |
| 561 | + \fi\@gtempa{toc}{chapter}% | |
| 562 | +} | |
| 563 | +\def\addtocmark{% | |
| 564 | +\phantomsection | |
| 565 | +\@ifnextchar[{\@adcmk}{\@adcmk[3]}% | |
| 566 | +} | |
| 567 | + | |
| 568 | +\def\l@chapter#1#2{\addpenalty{-\@highpenalty} | |
| 569 | + \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup | |
| 570 | + \parindent \z@ \rightskip \@tocrmarg | |
| 571 | + \advance\rightskip by 0pt plus 2cm | |
| 572 | + \parfillskip -\rightskip \pretolerance=10000 | |
| 573 | + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip | |
| 574 | + {\large\bfseries\boldmath#1}\ifx0#2\hfil\null | |
| 575 | + \else | |
| 576 | + \nobreak | |
| 577 | + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern | |
| 578 | + \@dotsep mu$}\hfill | |
| 579 | + \nobreak\hbox to\@pnumwidth{\hss #2}% | |
| 580 | + \fi\par | |
| 581 | + \penalty\@highpenalty \endgroup} | |
| 582 | + | |
| 583 | +\def\l@title#1#2{\addpenalty{-\@highpenalty} | |
| 584 | + \addvspace{8pt plus 1pt} | |
| 585 | + \@tempdima \z@ | |
| 586 | + \begingroup | |
| 587 | + \parindent \z@ \rightskip \@tocrmarg | |
| 588 | + \advance\rightskip by 0pt plus 2cm | |
| 589 | + \parfillskip -\rightskip \pretolerance=10000 | |
| 590 | + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip | |
| 591 | + #1\nobreak | |
| 592 | + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern | |
| 593 | + \@dotsep mu$}\hfill | |
| 594 | + \nobreak\hbox to\@pnumwidth{\hss #2}\par | |
| 595 | + \penalty\@highpenalty \endgroup} | |
| 596 | + | |
| 597 | +\def\l@author#1#2{\addpenalty{\@highpenalty} | |
| 598 | + \@tempdima=15\p@ %\z@ | |
| 599 | + \begingroup | |
| 600 | + \parindent \z@ \rightskip \@tocrmarg | |
| 601 | + \advance\rightskip by 0pt plus 2cm | |
| 602 | + \pretolerance=10000 | |
| 603 | + \leavevmode \advance\leftskip\@tempdima %\hskip -\leftskip | |
| 604 | + \textit{#1}\par | |
| 605 | + \penalty\@highpenalty \endgroup} | |
| 606 | + | |
| 607 | +\setcounter{tocdepth}{0} | |
| 608 | +\newdimen\tocchpnum | |
| 609 | +\newdimen\tocsecnum | |
| 610 | +\newdimen\tocsectotal | |
| 611 | +\newdimen\tocsubsecnum | |
| 612 | +\newdimen\tocsubsectotal | |
| 613 | +\newdimen\tocsubsubsecnum | |
| 614 | +\newdimen\tocsubsubsectotal | |
| 615 | +\newdimen\tocparanum | |
| 616 | +\newdimen\tocparatotal | |
| 617 | +\newdimen\tocsubparanum | |
| 618 | +\tocchpnum=\z@ % no chapter numbers | |
| 619 | +\tocsecnum=15\p@ % section 88. plus 2.222pt | |
| 620 | +\tocsubsecnum=23\p@ % subsection 88.8 plus 2.222pt | |
| 621 | +\tocsubsubsecnum=27\p@ % subsubsection 88.8.8 plus 1.444pt | |
| 622 | +\tocparanum=35\p@ % paragraph 88.8.8.8 plus 1.666pt | |
| 623 | +\tocsubparanum=43\p@ % subparagraph 88.8.8.8.8 plus 1.888pt | |
| 624 | +\def\calctocindent{% | |
| 625 | +\tocsectotal=\tocchpnum | |
| 626 | +\advance\tocsectotal by\tocsecnum | |
| 627 | +\tocsubsectotal=\tocsectotal | |
| 628 | +\advance\tocsubsectotal by\tocsubsecnum | |
| 629 | +\tocsubsubsectotal=\tocsubsectotal | |
| 630 | +\advance\tocsubsubsectotal by\tocsubsubsecnum | |
| 631 | +\tocparatotal=\tocsubsubsectotal | |
| 632 | +\advance\tocparatotal by\tocparanum} | |
| 633 | +\calctocindent | |
| 634 | + | |
| 635 | +\def\l@section{\@dottedtocline{1}{\tocchpnum}{\tocsecnum}} | |
| 636 | +\def\l@subsection{\@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}} | |
| 637 | +\def\l@subsubsection{\@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}} | |
| 638 | +\def\l@paragraph{\@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}} | |
| 639 | +\def\l@subparagraph{\@dottedtocline{5}{\tocparatotal}{\tocsubparanum}} | |
| 640 | + | |
| 641 | +\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn | |
| 642 | + \fi\section*{\listfigurename\@mkboth{{\listfigurename}}{{\listfigurename}}} | |
| 643 | + \@starttoc{lof}\if@restonecol\twocolumn\fi} | |
| 644 | +\def\l@figure{\@dottedtocline{1}{0em}{1.5em}} | |
| 645 | + | |
| 646 | +\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn | |
| 647 | + \fi\section*{\listtablename\@mkboth{{\listtablename}}{{\listtablename}}} | |
| 648 | + \@starttoc{lot}\if@restonecol\twocolumn\fi} | |
| 649 | +\let\l@table\l@figure | |
| 650 | + | |
| 651 | +\renewcommand\listoffigures{% | |
| 652 | + \section*{\listfigurename | |
| 653 | + \@mkboth{\listfigurename}{\listfigurename}}% | |
| 654 | + \@starttoc{lof}% | |
| 655 | + } | |
| 656 | + | |
| 657 | +\renewcommand\listoftables{% | |
| 658 | + \section*{\listtablename | |
| 659 | + \@mkboth{\listtablename}{\listtablename}}% | |
| 660 | + \@starttoc{lot}% | |
| 661 | + } | |
| 662 | + | |
| 663 | +\ifx\oribibl\undefined | |
| 664 | +\ifx\citeauthoryear\undefined | |
| 665 | +\renewenvironment{thebibliography}[1] | |
| 666 | + {\section*{\refname} | |
| 667 | + \def\@biblabel##1{##1.} | |
| 668 | + \small | |
| 669 | + \list{\@biblabel{\@arabic\c@enumiv}}% | |
| 670 | + {\settowidth\labelwidth{\@biblabel{#1}}% | |
| 671 | + \leftmargin\labelwidth | |
| 672 | + \advance\leftmargin\labelsep | |
| 673 | + \if@openbib | |
| 674 | + \advance\leftmargin\bibindent | |
| 675 | + \itemindent -\bibindent | |
| 676 | + \listparindent \itemindent | |
| 677 | + \parsep \z@ | |
| 678 | + \fi | |
| 679 | + \usecounter{enumiv}% | |
| 680 | + \let\p@enumiv\@empty | |
| 681 | + \renewcommand\theenumiv{\@arabic\c@enumiv}}% | |
| 682 | + \if@openbib | |
| 683 | + \renewcommand\newblock{\par}% | |
| 684 | + \else | |
| 685 | + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% | |
| 686 | + \fi | |
| 687 | + \sloppy\clubpenalty4000\widowpenalty4000% | |
| 688 | + \sfcode`\.=\@m} | |
| 689 | + {\def\@noitemerr | |
| 690 | + {\@latex@warning{Empty `thebibliography' environment}}% | |
| 691 | + \endlist} | |
| 692 | +\def\@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw | |
| 693 | + {\let\protect\noexpand\immediate | |
| 694 | + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} | |
| 695 | +\newcount\@tempcntc | |
| 696 | +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi | |
| 697 | + \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do | |
| 698 | + {\@ifundefined | |
| 699 | + {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bfseries | |
| 700 | + ?}\@warning | |
| 701 | + {Citation `\@citeb' on page \thepage \space undefined}}% | |
| 702 | + {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}% | |
| 703 | + \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne | |
| 704 | + \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}% | |
| 705 | + \else | |
| 706 | + \advance\@tempcntb\@ne | |
| 707 | + \ifnum\@tempcntb=\@tempcntc | |
| 708 | + \else\advance\@tempcntb\m@ne\@citeo | |
| 709 | + \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}} | |
| 710 | +\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else | |
| 711 | + \@citea\def\@citea{,\,\hskip\z@skip}% | |
| 712 | + \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else | |
| 713 | + {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else | |
| 714 | + \def\@citea{--}\fi | |
| 715 | + \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi} | |
| 716 | +\else | |
| 717 | +\renewenvironment{thebibliography}[1] | |
| 718 | + {\section*{\refname} | |
| 719 | + \small | |
| 720 | + \list{}% | |
| 721 | + {\settowidth\labelwidth{}% | |
| 722 | + \leftmargin\parindent | |
| 723 | + \itemindent=-\parindent | |
| 724 | + \labelsep=\z@ | |
| 725 | + \if@openbib | |
| 726 | + \advance\leftmargin\bibindent | |
| 727 | + \itemindent -\bibindent | |
| 728 | + \listparindent \itemindent | |
| 729 | + \parsep \z@ | |
| 730 | + \fi | |
| 731 | + \usecounter{enumiv}% | |
| 732 | + \let\p@enumiv\@empty | |
| 733 | + \renewcommand\theenumiv{}}% | |
| 734 | + \if@openbib | |
| 735 | + \renewcommand\newblock{\par}% | |
| 736 | + \else | |
| 737 | + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% | |
| 738 | + \fi | |
| 739 | + \sloppy\clubpenalty4000\widowpenalty4000% | |
| 740 | + \sfcode`\.=\@m} | |
| 741 | + {\def\@noitemerr | |
| 742 | + {\@latex@warning{Empty `thebibliography' environment}}% | |
| 743 | + \endlist} | |
| 744 | + \def\@cite#1{#1}% | |
| 745 | + \def\@lbibitem[#1]#2{\item[]\if@filesw | |
| 746 | + {\def\protect##1{\string ##1\space}\immediate | |
| 747 | + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} | |
| 748 | + \fi | |
| 749 | +\else | |
| 750 | +\@cons\@openbib@code{\noexpand\small} | |
| 751 | +\fi | |
| 752 | + | |
| 753 | +\def\idxquad{\hskip 10\p@}% space that divides entry from number | |
| 754 | + | |
| 755 | +\def\@idxitem{\par\hangindent 10\p@} | |
| 756 | + | |
| 757 | +\def\subitem{\par\setbox0=\hbox{--\enspace}% second order | |
| 758 | + \noindent\hangindent\wd0\box0}% index entry | |
| 759 | + | |
| 760 | +\def\subsubitem{\par\setbox0=\hbox{--\,--\enspace}% third | |
| 761 | + \noindent\hangindent\wd0\box0}% order index entry | |
| 762 | + | |
| 763 | +\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax} | |
| 764 | + | |
| 765 | +\renewenvironment{theindex} | |
| 766 | + {\@mkboth{\indexname}{\indexname}% | |
| 767 | + \thispagestyle{empty}\parindent\z@ | |
| 768 | + \parskip\z@ \@plus .3\p@\relax | |
| 769 | + \let\item\par | |
| 770 | + \def\,{\relax\ifmmode\mskip\thinmuskip | |
| 771 | + \else\hskip0.2em\ignorespaces\fi}% | |
| 772 | + \normalfont\small | |
| 773 | + \begin{multicols}{2}[\@makeschapterhead{\indexname}]% | |
| 774 | + } | |
| 775 | + {\end{multicols}} | |
| 776 | + | |
| 777 | +\renewcommand\footnoterule{% | |
| 778 | + \kern-3\p@ | |
| 779 | + \hrule\@width 2truecm | |
| 780 | + \kern2.6\p@} | |
| 781 | + \newdimen\fnindent | |
| 782 | + \fnindent1em | |
| 783 | +\long\def\@makefntext#1{% | |
| 784 | + \parindent \fnindent% | |
| 785 | + \leftskip \fnindent% | |
| 786 | + \noindent | |
| 787 | + \llap{\hb@xt@1em{\hss\@makefnmark\ }}\ignorespaces#1} | |
| 788 | + | |
| 789 | +\long\def\@makecaption#1#2{% | |
| 790 | + \small | |
| 791 | + \vskip\abovecaptionskip | |
| 792 | + \sbox\@tempboxa{{\bfseries #1.} #2}% | |
| 793 | + \ifdim \wd\@tempboxa >\hsize | |
| 794 | + {\bfseries #1.} #2\par | |
| 795 | + \else | |
| 796 | + \global \@minipagefalse | |
| 797 | + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% | |
| 798 | + \fi | |
| 799 | + \vskip\belowcaptionskip} | |
| 800 | + | |
| 801 | +\def\fps@figure{htbp} | |
| 802 | +\def\fnum@figure{\figurename\thinspace\thefigure} | |
| 803 | +\def \@floatboxreset {% | |
| 804 | + \reset@font | |
| 805 | + \small | |
| 806 | + \@setnobreak | |
| 807 | + \@setminipage | |
| 808 | +} | |
| 809 | +\def\fps@table{htbp} | |
| 810 | +\def\fnum@table{\tablename~\thetable} | |
| 811 | +\renewenvironment{table} | |
| 812 | + {\setlength\abovecaptionskip{0\p@}% | |
| 813 | + \setlength\belowcaptionskip{10\p@}% | |
| 814 | + \@float{table}} | |
| 815 | + {\end@float} | |
| 816 | +\renewenvironment{table*} | |
| 817 | + {\setlength\abovecaptionskip{0\p@}% | |
| 818 | + \setlength\belowcaptionskip{10\p@}% | |
| 819 | + \@dblfloat{table}} | |
| 820 | + {\end@dblfloat} | |
| 821 | + | |
| 822 | +\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname | |
| 823 | + ext@#1\endcsname}{#1}{\protect\numberline{\csname | |
| 824 | + the#1\endcsname}{\ignorespaces #2}}\begingroup | |
| 825 | + \@parboxrestore | |
| 826 | + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par | |
| 827 | + \endgroup} | |
| 828 | + | |
| 829 | +% LaTeX does not provide a command to enter the authors institute | |
| 830 | +% addresses. The \institute command is defined here. | |
| 831 | + | |
| 832 | +\newcounter{@inst} | |
| 833 | +\newcounter{@auth} | |
| 834 | +\newcounter{auco} | |
| 835 | +\newdimen\instindent | |
| 836 | +\newbox\authrun | |
| 837 | +\newtoks\authorrunning | |
| 838 | +\newtoks\tocauthor | |
| 839 | +\newbox\titrun | |
| 840 | +\newtoks\titlerunning | |
| 841 | +\newtoks\toctitle | |
| 842 | + | |
| 843 | +\def\clearheadinfo{\gdef\@author{No Author Given}% | |
| 844 | + \gdef\@title{No Title Given}% | |
| 845 | + \gdef\@subtitle{}% | |
| 846 | + \gdef\@institute{No Institute Given}% | |
| 847 | + \gdef\@thanks{}% | |
| 848 | + \global\titlerunning={}\global\authorrunning={}% | |
| 849 | + \global\toctitle={}\global\tocauthor={}} | |
| 850 | + | |
| 851 | +\def\institute#1{\gdef\@institute{#1}} | |
| 852 | + | |
| 853 | +\def\institutename{\par | |
| 854 | + \begingroup | |
| 855 | + \parskip=\z@ | |
| 856 | + \parindent=\z@ | |
| 857 | + \setcounter{@inst}{1}% | |
| 858 | + \def\and{\par\stepcounter{@inst}% | |
| 859 | + \noindent$^{\the@inst}$\enspace\ignorespaces}% | |
| 860 | + \setbox0=\vbox{\def\thanks##1{}\@institute}% | |
| 861 | + \ifnum\c@@inst=1\relax | |
| 862 | + \gdef\fnnstart{0}% | |
| 863 | + \else | |
| 864 | + \xdef\fnnstart{\c@@inst}% | |
| 865 | + \setcounter{@inst}{1}% | |
| 866 | + \noindent$^{\the@inst}$\enspace | |
| 867 | + \fi | |
| 868 | + \ignorespaces | |
| 869 | + \@institute\par | |
| 870 | + \endgroup} | |
| 871 | + | |
| 872 | +\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or | |
| 873 | + {\star\star\star}\or \dagger\or \ddagger\or | |
| 874 | + \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger | |
| 875 | + \or \ddagger\ddagger \else\@ctrerr\fi}} | |
| 876 | + | |
| 877 | +\def\inst#1{\unskip$^{#1}$} | |
| 878 | +\def\fnmsep{\unskip$^,$} | |
| 879 | +\def\email#1{{\tt#1}} | |
| 880 | +\AtBeginDocument{\@ifundefined{url}{\def\url#1{#1}}{}% | |
| 881 | +\@ifpackageloaded{babel}{% | |
| 882 | +\@ifundefined{extrasenglish}{}{\addto\extrasenglish{\switcht@albion}}% | |
| 883 | +\@ifundefined{extrasfrenchb}{}{\addto\extrasfrenchb{\switcht@francais}}% | |
| 884 | +\@ifundefined{extrasgerman}{}{\addto\extrasgerman{\switcht@deutsch}}% | |
| 885 | +\@ifundefined{extrasngerman}{}{\addto\extrasngerman{\switcht@deutsch}}% | |
| 886 | +}{\switcht@@therlang}% | |
| 887 | +\providecommand{\keywords}[1]{\par\addvspace\baselineskip | |
| 888 | +\noindent\keywordname\enspace\ignorespaces#1}% | |
| 889 | +} | |
| 890 | +\def\homedir{\~{ }} | |
| 891 | + | |
| 892 | +\def\subtitle#1{\gdef\@subtitle{#1}} | |
| 893 | +\clearheadinfo | |
| 894 | +% | |
| 895 | +%%% to avoid hyperref warnings | |
| 896 | +\providecommand*{\toclevel@author}{999} | |
| 897 | +%%% to make title-entry parent of section-entries | |
| 898 | +\providecommand*{\toclevel@title}{0} | |
| 899 | +% | |
| 900 | +\renewcommand\maketitle{\newpage | |
| 901 | +\phantomsection | |
| 902 | + \refstepcounter{chapter}% | |
| 903 | + \stepcounter{section}% | |
| 904 | + \setcounter{section}{0}% | |
| 905 | + \setcounter{subsection}{0}% | |
| 906 | + \setcounter{figure}{0} | |
| 907 | + \setcounter{table}{0} | |
| 908 | + \setcounter{equation}{0} | |
| 909 | + \setcounter{footnote}{0}% | |
| 910 | + \begingroup | |
| 911 | + \parindent=\z@ | |
| 912 | + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% | |
| 913 | + \if@twocolumn | |
| 914 | + \ifnum \col@number=\@ne | |
| 915 | + \@maketitle | |
| 916 | + \else | |
| 917 | + \twocolumn[\@maketitle]% | |
| 918 | + \fi | |
| 919 | + \else | |
| 920 | + \newpage | |
| 921 | + \global\@topnum\z@ % Prevents figures from going at top of page. | |
| 922 | + \@maketitle | |
| 923 | + \fi | |
| 924 | + \thispagestyle{empty}\@thanks | |
| 925 | +% | |
| 926 | + \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}% | |
| 927 | + \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}% | |
| 928 | + \instindent=\hsize | |
| 929 | + \advance\instindent by-\headlineindent | |
| 930 | + \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else | |
| 931 | + \addcontentsline{toc}{title}{\the\toctitle}\fi | |
| 932 | + \if@runhead | |
| 933 | + \if!\the\titlerunning!\else | |
| 934 | + \edef\@title{\the\titlerunning}% | |
| 935 | + \fi | |
| 936 | + \global\setbox\titrun=\hbox{\small\rm\unboldmath\ignorespaces\@title}% | |
| 937 | + \ifdim\wd\titrun>\instindent | |
| 938 | + \typeout{Title too long for running head. Please supply}% | |
| 939 | + \typeout{a shorter form with \string\titlerunning\space prior to | |
| 940 | + \string\maketitle}% | |
| 941 | + \global\setbox\titrun=\hbox{\small\rm | |
| 942 | + Title Suppressed Due to Excessive Length}% | |
| 943 | + \fi | |
| 944 | + \xdef\@title{\copy\titrun}% | |
| 945 | + \fi | |
| 946 | +% | |
| 947 | + \if!\the\tocauthor!\relax | |
| 948 | + {\def\and{\noexpand\protect\noexpand\and}% | |
| 949 | + \protected@xdef\toc@uthor{\@author}}% | |
| 950 | + \else | |
| 951 | + \def\\{\noexpand\protect\noexpand\newline}% | |
| 952 | + \protected@xdef\scratch{\the\tocauthor}% | |
| 953 | + \protected@xdef\toc@uthor{\scratch}% | |
| 954 | + \fi | |
| 955 | + \addtocontents{toc}{\noexpand\protect\noexpand\authcount{\the\c@auco}}% | |
| 956 | + \addcontentsline{toc}{author}{\toc@uthor}% | |
| 957 | + \if@runhead | |
| 958 | + \if!\the\authorrunning! | |
| 959 | + \value{@inst}=\value{@auth}% | |
| 960 | + \setcounter{@auth}{1}% | |
| 961 | + \else | |
| 962 | + \edef\@author{\the\authorrunning}% | |
| 963 | + \fi | |
| 964 | + \global\setbox\authrun=\hbox{\small\unboldmath\@author\unskip}% | |
| 965 | + \ifdim\wd\authrun>\instindent | |
| 966 | + \typeout{Names of authors too long for running head. Please supply}% | |
| 967 | + \typeout{a shorter form with \string\authorrunning\space prior to | |
| 968 | + \string\maketitle}% | |
| 969 | + \global\setbox\authrun=\hbox{\small\rm | |
| 970 | + Authors Suppressed Due to Excessive Length}% | |
| 971 | + \fi | |
| 972 | + \xdef\@author{\copy\authrun}% | |
| 973 | + \markboth{\@author}{\@title}% | |
| 974 | + \fi | |
| 975 | + \endgroup | |
| 976 | + \setcounter{footnote}{\fnnstart}% | |
| 977 | + \clearheadinfo} | |
| 978 | +% | |
| 979 | +\def\@maketitle{\newpage | |
| 980 | + \markboth{}{}% | |
| 981 | + \def\lastand{\ifnum\value{@inst}=2\relax | |
| 982 | + \unskip{} \andname\ | |
| 983 | + \else | |
| 984 | + \unskip \lastandname\ | |
| 985 | + \fi}% | |
| 986 | + \def\and{\stepcounter{@auth}\relax | |
| 987 | + \ifnum\value{@auth}=\value{@inst}% | |
| 988 | + \lastand | |
| 989 | + \else | |
| 990 | + \unskip, | |
| 991 | + \fi}% | |
| 992 | + \begin{center}% | |
| 993 | + \let\newline\\ | |
| 994 | + {\Large \bfseries\boldmath | |
| 995 | + \pretolerance=10000 | |
| 996 | + \@title \par}\vskip .8cm | |
| 997 | +\if!\@subtitle!\else {\large \bfseries\boldmath | |
| 998 | + \vskip -.65cm | |
| 999 | + \pretolerance=10000 | |
| 1000 | + \@subtitle \par}\vskip .8cm\fi | |
| 1001 | + \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}% | |
| 1002 | + \def\thanks##1{}\@author}% | |
| 1003 | + \global\value{@inst}=\value{@auth}% | |
| 1004 | + \global\value{auco}=\value{@auth}% | |
| 1005 | + \setcounter{@auth}{1}% | |
| 1006 | +{\lineskip .5em | |
| 1007 | +\noindent\ignorespaces | |
| 1008 | +\@author\vskip.35cm} | |
| 1009 | + {\small\institutename} | |
| 1010 | + \end{center}% | |
| 1011 | + } | |
| 1012 | + | |
| 1013 | +% definition of the "\spnewtheorem" command. | |
| 1014 | +% | |
| 1015 | +% Usage: | |
| 1016 | +% | |
| 1017 | +% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font} | |
| 1018 | +% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font} | |
| 1019 | +% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font} | |
| 1020 | +% | |
| 1021 | +% New is "cap_font" and "body_font". It stands for | |
| 1022 | +% fontdefinition of the caption and the text itself. | |
| 1023 | +% | |
| 1024 | +% "\spnewtheorem*" gives a theorem without number. | |
| 1025 | +% | |
| 1026 | +% A defined spnewthoerem environment is used as described | |
| 1027 | +% by Lamport. | |
| 1028 | +% | |
| 1029 | +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
| 1030 | + | |
| 1031 | +\def\@thmcountersep{} | |
| 1032 | +\def\@thmcounterend{.} | |
| 1033 | + | |
| 1034 | +\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}} | |
| 1035 | + | |
| 1036 | +% definition of \spnewtheorem with number | |
| 1037 | + | |
| 1038 | +\def\@spnthm#1#2{% | |
| 1039 | + \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}} | |
| 1040 | +\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}} | |
| 1041 | + | |
| 1042 | +\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname | |
| 1043 | + {\@definecounter{#1}\@addtoreset{#1}{#3}% | |
| 1044 | + \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand | |
| 1045 | + \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}% | |
| 1046 | + \expandafter\xdef\csname #1name\endcsname{#2}% | |
| 1047 | + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% | |
| 1048 | + \global\@namedef{end#1}{\@endtheorem}}} | |
| 1049 | + | |
| 1050 | +\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname | |
| 1051 | + {\@definecounter{#1}% | |
| 1052 | + \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% | |
| 1053 | + \expandafter\xdef\csname #1name\endcsname{#2}% | |
| 1054 | + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}% | |
| 1055 | + \global\@namedef{end#1}{\@endtheorem}}} | |
| 1056 | + | |
| 1057 | +\def\@spothm#1[#2]#3#4#5{% | |
| 1058 | + \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}% | |
| 1059 | + {\expandafter\@ifdefinable\csname #1\endcsname | |
| 1060 | + {\newaliascnt{#1}{#2}% | |
| 1061 | + \expandafter\xdef\csname #1name\endcsname{#3}% | |
| 1062 | + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% | |
| 1063 | + \global\@namedef{end#1}{\@endtheorem}}}} | |
| 1064 | + | |
| 1065 | +\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@ | |
| 1066 | +\refstepcounter{#1}% | |
| 1067 | +\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}} | |
| 1068 | + | |
| 1069 | +\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}% | |
| 1070 | + \ignorespaces} | |
| 1071 | + | |
| 1072 | +\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname | |
| 1073 | + the#1\endcsname}{#5}{#3}{#4}\ignorespaces} | |
| 1074 | + | |
| 1075 | +\def\@spbegintheorem#1#2#3#4{\trivlist | |
| 1076 | + \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4} | |
| 1077 | + | |
| 1078 | +\def\@spopargbegintheorem#1#2#3#4#5{\trivlist | |
| 1079 | + \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5} | |
| 1080 | + | |
| 1081 | +% definition of \spnewtheorem* without number | |
| 1082 | + | |
| 1083 | +\def\@sthm#1#2{\@Ynthm{#1}{#2}} | |
| 1084 | + | |
| 1085 | +\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname | |
| 1086 | + {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}% | |
| 1087 | + \expandafter\xdef\csname #1name\endcsname{#2}% | |
| 1088 | + \global\@namedef{end#1}{\@endtheorem}}} | |
| 1089 | + | |
| 1090 | +\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@ | |
| 1091 | +\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}} | |
| 1092 | + | |
| 1093 | +\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces} | |
| 1094 | + | |
| 1095 | +\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1} | |
| 1096 | + {#4}{#2}{#3}\ignorespaces} | |
| 1097 | + | |
| 1098 | +\def\@Begintheorem#1#2#3{#3\trivlist | |
| 1099 | + \item[\hskip\labelsep{#2#1\@thmcounterend}]} | |
| 1100 | + | |
| 1101 | +\def\@Opargbegintheorem#1#2#3#4{#4\trivlist | |
| 1102 | + \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }} | |
| 1103 | + | |
| 1104 | +\if@envcntsect | |
| 1105 | + \def\@thmcountersep{.} | |
| 1106 | + \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape} | |
| 1107 | +\else | |
| 1108 | + \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape} | |
| 1109 | + \if@envcntreset | |
| 1110 | + \@addtoreset{theorem}{section} | |
| 1111 | + \else | |
| 1112 | + \@addtoreset{theorem}{chapter} | |
| 1113 | + \fi | |
| 1114 | +\fi | |
| 1115 | + | |
| 1116 | +%definition of divers theorem environments | |
| 1117 | +\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily} | |
| 1118 | +\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily} | |
| 1119 | +\if@envcntsame % alle Umgebungen wie Theorem. | |
| 1120 | + \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}} | |
| 1121 | +\else % alle Umgebungen mit eigenem Zaehler | |
| 1122 | + \if@envcntsect % mit section numeriert | |
| 1123 | + \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[section]{#3}{#4}} | |
| 1124 | + \else % nicht mit section numeriert | |
| 1125 | + \if@envcntreset | |
| 1126 | + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} | |
| 1127 | + \@addtoreset{#1}{section}} | |
| 1128 | + \else | |
| 1129 | + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} | |
| 1130 | + \@addtoreset{#1}{chapter}}% | |
| 1131 | + \fi | |
| 1132 | + \fi | |
| 1133 | +\fi | |
| 1134 | +\spn@wtheorem{case}{Case}{\itshape}{\rmfamily} | |
| 1135 | +\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily} | |
| 1136 | +\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape} | |
| 1137 | +\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape} | |
| 1138 | +\spn@wtheorem{example}{Example}{\itshape}{\rmfamily} | |
| 1139 | +\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily} | |
| 1140 | +\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape} | |
| 1141 | +\spn@wtheorem{note}{Note}{\itshape}{\rmfamily} | |
| 1142 | +\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily} | |
| 1143 | +\spn@wtheorem{property}{Property}{\itshape}{\rmfamily} | |
| 1144 | +\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape} | |
| 1145 | +\spn@wtheorem{question}{Question}{\itshape}{\rmfamily} | |
| 1146 | +\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily} | |
| 1147 | +\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily} | |
| 1148 | + | |
| 1149 | +\def\@takefromreset#1#2{% | |
| 1150 | + \def\@tempa{#1}% | |
| 1151 | + \let\@tempd\@elt | |
| 1152 | + \def\@elt##1{% | |
| 1153 | + \def\@tempb{##1}% | |
| 1154 | + \ifx\@tempa\@tempb\else | |
| 1155 | + \@addtoreset{##1}{#2}% | |
| 1156 | + \fi}% | |
| 1157 | + \expandafter\expandafter\let\expandafter\@tempc\csname cl@#2\endcsname | |
| 1158 | + \expandafter\def\csname cl@#2\endcsname{}% | |
| 1159 | + \@tempc | |
| 1160 | + \let\@elt\@tempd} | |
| 1161 | + | |
| 1162 | +\def\theopargself{\def\@spopargbegintheorem##1##2##3##4##5{\trivlist | |
| 1163 | + \item[\hskip\labelsep{##4##1\ ##2}]{##4##3\@thmcounterend\ }##5} | |
| 1164 | + \def\@Opargbegintheorem##1##2##3##4{##4\trivlist | |
| 1165 | + \item[\hskip\labelsep{##3##1}]{##3##2\@thmcounterend\ }} | |
| 1166 | + } | |
| 1167 | + | |
| 1168 | +\renewenvironment{abstract}{% | |
| 1169 | + \list{}{\advance\topsep by0.35cm\relax\small | |
| 1170 | + \leftmargin=1cm | |
| 1171 | + \labelwidth=\z@ | |
| 1172 | + \listparindent=\z@ | |
| 1173 | + \itemindent\listparindent | |
| 1174 | + \rightmargin\leftmargin}\item[\hskip\labelsep | |
| 1175 | + \bfseries\abstractname]} | |
| 1176 | + {\endlist} | |
| 1177 | + | |
| 1178 | +\newdimen\headlineindent % dimension for space between | |
| 1179 | +\headlineindent=1.166cm % number and text of headings. | |
| 1180 | + | |
| 1181 | +\def\ps@headings{\let\@mkboth\@gobbletwo | |
| 1182 | + \let\@oddfoot\@empty\let\@evenfoot\@empty | |
| 1183 | + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% | |
| 1184 | + \leftmark\hfil} | |
| 1185 | + \def\@oddhead{\normalfont\small\hfil\rightmark\hspace{\headlineindent}% | |
| 1186 | + \llap{\thepage}} | |
| 1187 | + \def\chaptermark##1{}% | |
| 1188 | + \def\sectionmark##1{}% | |
| 1189 | + \def\subsectionmark##1{}} | |
| 1190 | + | |
| 1191 | +\def\ps@titlepage{\let\@mkboth\@gobbletwo | |
| 1192 | + \let\@oddfoot\@empty\let\@evenfoot\@empty | |
| 1193 | + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% | |
| 1194 | + \hfil} | |
| 1195 | + \def\@oddhead{\normalfont\small\hfil\hspace{\headlineindent}% | |
| 1196 | + \llap{\thepage}} | |
| 1197 | + \def\chaptermark##1{}% | |
| 1198 | + \def\sectionmark##1{}% | |
| 1199 | + \def\subsectionmark##1{}} | |
| 1200 | + | |
| 1201 | +\if@runhead\ps@headings\else | |
| 1202 | +\ps@empty\fi | |
| 1203 | + | |
| 1204 | +\setlength\arraycolsep{1.4\p@} | |
| 1205 | +\setlength\tabcolsep{1.4\p@} | |
| 1206 | + | |
| 1207 | +\endinput | |
| 1208 | +%end of file llncs.cls | ... | ... |
| ... | ... | @@ -0,0 +1,42 @@ |
| 1 | +% This is LLNCSDOC.STY the modification of the | |
| 2 | +% LLNCS class file for the documentation of | |
| 3 | +% the class itself. | |
| 4 | +% | |
| 5 | +\def\AmS{{\protect\usefont{OMS}{cmsy}{m}{n}% | |
| 6 | + A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}} | |
| 7 | +\def\AmSTeX{{\protect\AmS-\protect\TeX}} | |
| 8 | +% | |
| 9 | +\def\ps@myheadings{\let\@mkboth\@gobbletwo | |
| 10 | +\def\@oddhead{\hbox{}\hfil\small\rm\rightmark | |
| 11 | +\qquad\thepage}% | |
| 12 | +\def\@oddfoot{}\def\@evenhead{\small\rm\thepage\qquad | |
| 13 | +\leftmark\hfil}% | |
| 14 | +\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}} | |
| 15 | +\ps@myheadings | |
| 16 | +% | |
| 17 | +\setcounter{tocdepth}{2} | |
| 18 | +% | |
| 19 | +\renewcommand{\labelitemi}{--} | |
| 20 | +\newenvironment{alpherate}% | |
| 21 | +{\renewcommand{\labelenumi}{\alph{enumi})}\begin{enumerate}}% | |
| 22 | +{\end{enumerate}\renewcommand{\labelenumi}{enumi}} | |
| 23 | +% | |
| 24 | +\def\bibauthoryear{\begingroup | |
| 25 | +\def\thebibliography##1{\section*{References}% | |
| 26 | + \small\list{}{\settowidth\labelwidth{}\leftmargin\parindent | |
| 27 | + \itemindent=-\parindent | |
| 28 | + \labelsep=\z@ | |
| 29 | + \usecounter{enumi}}% | |
| 30 | + \def\newblock{\hskip .11em plus .33em minus -.07em}% | |
| 31 | + \sloppy | |
| 32 | + \sfcode`\.=1000\relax}% | |
| 33 | + \def\@cite##1{##1}% | |
| 34 | + \def\@lbibitem[##1]##2{\item[]\if@filesw | |
| 35 | + {\def\protect####1{\string ####1\space}\immediate | |
| 36 | + \write\@auxout{\string\bibcite{##2}{##1}}}\fi\ignorespaces}% | |
| 37 | +\begin{thebibliography}{} | |
| 38 | +\bibitem[1982]{clar:eke3} Clarke, F., Ekeland, I.: Nonlinear | |
| 39 | +oscillations and boundary-value problems for Hamiltonian systems. | |
| 40 | +Arch. Rat. Mech. Anal. 78, 315--333 (1982) | |
| 41 | +\end{thebibliography} | |
| 42 | +\endgroup} | ... | ... |
| ... | ... | @@ -0,0 +1,235 @@ |
| 1 | +@article{anthopoulos2016egovernment, | |
| 2 | + title={Why e-government projects fail? An analysis of the Healthcare. gov website}, | |
| 3 | + author={Anthopoulos, Leonidas and Reddick, Christopher G and Giannakidou, Irene and Mavridis, Nikolaos}, | |
| 4 | + journal={Government Information Quarterly}, | |
| 5 | + volume={33}, | |
| 6 | + pages={161--173}, | |
| 7 | + year={2016}, | |
| 8 | + publisher={Elsevier} | |
| 9 | +} | |
| 10 | + | |
| 11 | +@inproceedings{sandberg2017iacollaboration, | |
| 12 | + author = {Sandberg, Anna B\"{o}rjesson and Crnkovic, Ivica}, | |
| 13 | + title = {Meeting Industry: Academia Research Collaboration Challenges with Agile Methodologies}, | |
| 14 | + booktitle = {Proceedings of the 39th International Conference on Software Engineering: Software Engineering in Practice Track}, | |
| 15 | + series = {ICSE-SEIP '17}, | |
| 16 | + year = {2017}, | |
| 17 | + location = {Buenos Aires, Argentina}, | |
| 18 | + pages = {73--82}, | |
| 19 | + publisher = {IEEE Press}, | |
| 20 | +} | |
| 21 | + | |
| 22 | + | |
| 23 | +@article{goldfinch2007pessimism, | |
| 24 | + author={Shaun Goldfinch}, | |
| 25 | + journal={Public Administration Review}, | |
| 26 | + pages={917-929}, | |
| 27 | + publisher={[American Society for Public Administration, Wiley]}, | |
| 28 | + title={Pessimism, Computer Failure, and Information Systems Development in the Public Sector}, | |
| 29 | + volume={67}, | |
| 30 | + year={2007} | |
| 31 | +} | |
| 32 | + | |
| 33 | +@article{highsmith2001agileSoftwareDevelopment, | |
| 34 | + title={Agile software development: The business of innovation}, | |
| 35 | + author={Highsmith, Jim and Cockburn, Alistair}, | |
| 36 | + journal={Computer}, | |
| 37 | + volume={34}, | |
| 38 | + pages={120--127}, | |
| 39 | + year={2001}, | |
| 40 | + publisher={IEEE} | |
| 41 | +} | |
| 42 | + | |
| 43 | +@inproceedings{maurer2002onTheProductivityOfAgile, | |
| 44 | + title={On the productivity of agile software practices: An industrial case study}, | |
| 45 | + author={Maurer, Frank and Martel, Sebastien}, | |
| 46 | + booktitle={Proceedings of the International Workshop on Global Software Development}, | |
| 47 | + year={2002} | |
| 48 | +} | |
| 49 | + | |
| 50 | +@article{mcilroy1968software, | |
| 51 | + title={Software Engineering: Report on a conference sponsored by the NATO Science Committee}, | |
| 52 | + author={McIlroy, MD}, | |
| 53 | + year={1968}, | |
| 54 | + publisher={NATO Scientific Affairs Division} | |
| 55 | +} | |
| 56 | + | |
| 57 | +@inproceedings{nguyen2011anAnalysisOfTrends, | |
| 58 | + title={An analysis of trends in productivity and cost drivers over years}, | |
| 59 | + author={Nguyen, Vu and Huang, LiGuo and Boehm, Barry}, | |
| 60 | + booktitle={Proceedings of the 7th International Conference on Predictive Models in Software Engineering}, | |
| 61 | + pages={3}, | |
| 62 | + year={2011}, | |
| 63 | + organization={ACM} | |
| 64 | +} | |
| 65 | + | |
| 66 | +@article{awad2005comparisonAgileTrad, | |
| 67 | + title={A comparison between agile and traditional software development methodologies}, | |
| 68 | + author={Awad, MA}, | |
| 69 | + journal={University of Western Australia}, | |
| 70 | + year={2005} | |
| 71 | +} | |
| 72 | + | |
| 73 | +@article{fowler2001newMethod, | |
| 74 | + title={The new methodology}, | |
| 75 | + author={Fowler, Martin}, | |
| 76 | + journal={Wuhan University Journal of Natural Sciences}, | |
| 77 | + volume={6}, | |
| 78 | + pages={12--24}, | |
| 79 | + year={2001}, | |
| 80 | + publisher={Springer} | |
| 81 | +} | |
| 82 | + | |
| 83 | +@article{cockburn2001peopleFactor, | |
| 84 | + title={Agile software development, the people factor}, | |
| 85 | + author={Cockburn, Alistair and Highsmith, Jim}, | |
| 86 | + journal={Computer}, | |
| 87 | + volume={34}, | |
| 88 | + pages={131--133}, | |
| 89 | + year={2001}, | |
| 90 | + publisher={IEEE} | |
| 91 | +} | |
| 92 | + | |
| 93 | +@book{highsmith2002agileEco, | |
| 94 | + title={Agile software development ecosystems}, | |
| 95 | + author={Highsmith, James A}, | |
| 96 | + volume={13}, | |
| 97 | + year={2002}, | |
| 98 | + publisher={Addison-Wesley Professional} | |
| 99 | +} | |
| 100 | + | |
| 101 | +@article{nerur2015challenges, | |
| 102 | + author = {Nerur, Sridhar and Mahapatra, RadhaKanta and Mangalaraj, George}, | |
| 103 | + title = {Challenges of Migrating to Agile Methodologies}, | |
| 104 | + journal = {Commun. ACM}, | |
| 105 | + volume = {48}, | |
| 106 | + number = {5}, | |
| 107 | + year = {2005}, | |
| 108 | + pages = {72--78}, | |
| 109 | + publisher = {ACM}, | |
| 110 | +} | |
| 111 | + | |
| 112 | +@inproceedings{meirelles2017spb, | |
| 113 | + author = {Meirelles, Paulo and Wen, Melissa and Terceiro, Antonio and Siqueira, Rodrigo and Kanashiro, Lucas and Neri, Hilmer}, | |
| 114 | + title = {Brazilian Public Software Portal: An Integrated Platform for Collaborative Development}, | |
| 115 | + booktitle = {Proceedings of the 13th International Symposium on Open Collaboration}, | |
| 116 | + series = {OpenSym '17}, | |
| 117 | + year = {2017}, | |
| 118 | + location = {Galway, Ireland}, | |
| 119 | + pages = {16:1--16:10}, | |
| 120 | + publisher = {ACM}, | |
| 121 | + keywords = {Free Software, Management Team, Software Integration} | |
| 122 | +} | |
| 123 | + | |
| 124 | +@inproceedings{impactOfOrganizationalCulture, | |
| 125 | + title={The impact of organizational culture on agile method use}, | |
| 126 | + author={Strode, Diane E and Huff, Sid L and Tretiakov, Alexei}, | |
| 127 | + booktitle={System Sciences, 2009. HICSS'09. 42nd Hawaii International Conference on}, | |
| 128 | + pages={1--9}, | |
| 129 | + year={2009}, | |
| 130 | + organization={IEEE} | |
| 131 | +} | |
| 132 | + | |
| 133 | +@article{dybaa2008empirical, | |
| 134 | + title={Empirical studies of agile software development: A systematic review}, | |
| 135 | + author={Dyb{\aa}, Tore and Dings{\o}yr, Torgeir}, | |
| 136 | + journal={Information and software technology}, | |
| 137 | + volume={50}, | |
| 138 | + pages={833--859}, | |
| 139 | + year={2008}, | |
| 140 | + publisher={Elsevier} | |
| 141 | +} | |
| 142 | + | |
| 143 | +@inproceedings{melo2013agileBr, | |
| 144 | + author = {Melo, Claudia and Santos, Viviane and Katayama, Eduardo and Corbucci, Hugo and Prikladnicki, Rafael and Goldman, Alfredo and Kon, Fabio}, | |
| 145 | + year = {2013}, | |
| 146 | + title = {The evolution of agile software development in Brazil}, | |
| 147 | + volume = {19}, | |
| 148 | + booktitle = {Journal of the Brazilian Computer Society} | |
| 149 | +} | |
| 150 | + | |
| 151 | +@inproceedings{alleman2003making, | |
| 152 | + title={Making agile development work in a government contracting environment-measuring velocity with earned value}, | |
| 153 | + author={Alleman, Glen B and Henderson, Michael and Seggelke, Ray}, | |
| 154 | + booktitle={Agile Development Conference, 2003. ADC 2003. Proceedings of the}, | |
| 155 | + pages={114--119}, | |
| 156 | + year={2003}, | |
| 157 | + organization={IEEE} | |
| 158 | +} | |
| 159 | + | |
| 160 | +@inproceedings{anderson2005stretching, | |
| 161 | + title={Stretching agile to fit CMMI level 3-the story of creating MSF for CMMI/spl reg/process improvement at Microsoft corporation}, | |
| 162 | + author={Anderson, David J}, | |
| 163 | + booktitle={Agile Conference, 2005. Proceedings}, | |
| 164 | + pages={193--201}, | |
| 165 | + year={2005}, | |
| 166 | + organization={IEEE} | |
| 167 | +} | |
| 168 | + | |
| 169 | +@article{cho2011gap, | |
| 170 | + author = {Chookittikul, Wajee and Kourik, Janet and E. Maher, Peter}, | |
| 171 | + year = {2011}, | |
| 172 | + pages = {239-244}, | |
| 173 | + title = {Reducing the Gap between Academia and Industry: The Case for Agile Methods in Thailand}, | |
| 174 | + booktitle = {Proceedings of the 2011 Eighth International Conference on Information Technology: New Generations} | |
| 175 | +} | |
| 176 | + | |
| 177 | +@ARTICLE{siqueira2018cd, | |
| 178 | +author={R. Siqueira and D. Camarinha and M. Wen and P. Meirelles and F. Kon}, | |
| 179 | +journal={IEEE Software}, | |
| 180 | +title={Continuous Delivery: Building Trust in a Large-scale, Complex Government Organization}, | |
| 181 | +year={2018}, | |
| 182 | +volume={PP}, | |
| 183 | +number={99}, | |
| 184 | +pages={1-1}, | |
| 185 | +keywords={Buildings;Computer science;Government;Object recognition;Pipelines;Portals;Software;applications;computing methodologies;government;pattern recognition;soft;software;software engineering;software engineering software;software release management and delivery configuration management}, | |
| 186 | +doi={10.1109/MS.2018.111095426}, | |
| 187 | +ISSN={0740-7459}, | |
| 188 | +month={},} | |
| 189 | + | |
| 190 | +@inproceedings{capiluppi, | |
| 191 | + title={Characteristics of open source projects}, | |
| 192 | + author={Capiluppi, Andrea and Lago, Patricia and Morisio, Maurizio}, | |
| 193 | + booktitle={Software Maintenance and Reengineering, 2003. Proceedings. Seventh European Conference on}, | |
| 194 | + pages={317--327}, | |
| 195 | + year={2003}, | |
| 196 | + organization={IEEE} | |
| 197 | +} | |
| 198 | + | |
| 199 | +@inproceedings{warsta, | |
| 200 | + title={Is open source software development essentially an agile method}, | |
| 201 | + author={Warsta, Juhani and Abrahamsson, Pekka}, | |
| 202 | + booktitle={Proceedings of the 3rd Workshop on Open Source Software Engineering}, | |
| 203 | + pages={143--147}, | |
| 204 | + year={2003} | |
| 205 | +} | |
| 206 | + | |
| 207 | +@article{beck, | |
| 208 | + title={Manifesto for Agile Software Development. Agile Alliance (2001)}, | |
| 209 | + author={Beck, Kent and Beedle, M and Bennekum, A and others}, | |
| 210 | + journal={Retrieved June}, | |
| 211 | + volume={14}, | |
| 212 | + year={2010} | |
| 213 | +} | |
| 214 | + | |
| 215 | +@article{raymond, | |
| 216 | + title={The cathedral and the bazaar}, | |
| 217 | + author={Raymond, Eric}, | |
| 218 | + journal={Philosophy \& Technology}, | |
| 219 | + volume={12}, | |
| 220 | + number={3}, | |
| 221 | + pages={23}, | |
| 222 | + year={1999}, | |
| 223 | + publisher={Springer} | |
| 224 | +} | |
| 225 | + | |
| 226 | +@incollection{booch2003, | |
| 227 | +title = "Collaborative Development Environments", | |
| 228 | +series = "Advances in Computers", | |
| 229 | +publisher = "Elsevier", | |
| 230 | +volume = "59", | |
| 231 | +pages = "1 - 27", | |
| 232 | +year = "2003", | |
| 233 | +issn = "0065-2458", | |
| 234 | +author = "Grady Booch and Alan W. Brown" | |
| 235 | +} | ... | ... |
| ... | ... | @@ -0,0 +1,50 @@ |
| 1 | + | |
| 2 | +\documentclass{llncs} | |
| 3 | +\usepackage[table,xcdraw]{xcolor} | |
| 4 | +\usepackage{llncsdoc} | |
| 5 | +\usepackage{graphicx,url} | |
| 6 | +\usepackage[utf8]{inputenc} | |
| 7 | +\usepackage{float} | |
| 8 | +\usepackage{setspace} | |
| 9 | +\usepackage{hyphenat} | |
| 10 | +\usepackage{tabularx} | |
| 11 | +\usepackage{cite} | |
| 12 | +\usepackage{hyperref} | |
| 13 | +\usepackage{comment} | |
| 14 | +\usepackage{todonotes} | |
| 15 | +\usepackage{colortbl} | |
| 16 | +%------------------------------------------------------------------------------ | |
| 17 | + | |
| 18 | +\begin{document} | |
| 19 | +\sloppy | |
| 20 | +\title{FLOSS Project Management in Government-Academia Collaboration} | |
| 21 | +%\subtitle{A three-year empirical study from the evolution of an open source government platform} | |
| 22 | + | |
| 23 | +\titlerunning{OSS in Gov-Academia Collab} | |
| 24 | + | |
| 25 | +\author{Melissa Wen\inst{1}, Paulo Meirelles\inst{1,2}, Rodrigo Siqueira\inst{1}, Fabio Kon\inst{1}} | |
| 26 | + | |
| 27 | +\authorrunning{Wen et al.} | |
| 28 | + | |
| 29 | +\institute{FLOSS Competence Center -- University of S\~ao Paulo \\ | |
| 30 | + \texttt{\{wen,siqueira,fabio.kon\}@ime.usp.br} | |
| 31 | +\and UnB Faculty in Gama -- University of Bras\'ilia\\ | |
| 32 | + \texttt{paulormm@unb.br} | |
| 33 | +} | |
| 34 | + | |
| 35 | +\maketitle | |
| 36 | + | |
| 37 | +%------------------------------------------------------------------------------ | |
| 38 | + | |
| 39 | +\input{content/00-abstract} | |
| 40 | +\input{content/01-introduction} | |
| 41 | +\input{content/02-relatedwork} | |
| 42 | +\input{content/03-methods} | |
| 43 | +\input{content/04-results} | |
| 44 | +\input{content/05-discussion} | |
| 45 | +\input{content/06-conclusion} | |
| 46 | + | |
| 47 | +\bibliographystyle{splncs03} | |
| 48 | +\bibliography{spb-oss-2018} | |
| 49 | + | |
| 50 | +\end{document} | ... | ... |
| ... | ... | @@ -0,0 +1,1519 @@ |
| 1 | +%% BibTeX bibliography style `splncs03' | |
| 2 | +%% | |
| 3 | +%% BibTeX bibliography style for use with numbered references in | |
| 4 | +%% Springer Verlag's "Lecture Notes in Computer Science" series. | |
| 5 | +%% (See Springer's documentation for llncs.cls for | |
| 6 | +%% more details of the suggested reference format.) Note that this | |
| 7 | +%% file will not work for author-year style citations. | |
| 8 | +%% | |
| 9 | +%% Use \documentclass{llncs} and \bibliographystyle{splncs03}, and cite | |
| 10 | +%% a reference with (e.g.) \cite{smith77} to get a "[1]" in the text. | |
| 11 | +%% | |
| 12 | +%% This file comes to you courtesy of Maurizio "Titto" Patrignani of | |
| 13 | +%% Dipartimento di Informatica e Automazione Universita' Roma Tre | |
| 14 | +%% | |
| 15 | +%% ================================================================================================ | |
| 16 | +%% This was file `titto-lncs-02.bst' produced on Wed Apr 1, 2009 | |
| 17 | +%% Edited by hand by titto based on `titto-lncs-01.bst' (see below) | |
| 18 | +%% | |
| 19 | +%% CHANGES (with respect to titto-lncs-01.bst): | |
| 20 | +%% - Removed the call to \urlprefix (thus no "URL" string is added to the output) | |
| 21 | +%% ================================================================================================ | |
| 22 | +%% This was file `titto-lncs-01.bst' produced on Fri Aug 22, 2008 | |
| 23 | +%% Edited by hand by titto based on `titto.bst' (see below) | |
| 24 | +%% | |
| 25 | +%% CHANGES (with respect to titto.bst): | |
| 26 | +%% - Removed the "capitalize" command for editors string "(eds.)" and "(ed.)" | |
| 27 | +%% - Introduced the functions titto.bbl.pages and titto.bbl.page for journal pages (without "pp.") | |
| 28 | +%% - Added a new.sentence command to separate with a dot booktitle and series in the inproceedings | |
| 29 | +%% - Commented all new.block commands before urls and notes (to separate them with a comma) | |
| 30 | +%% - Introduced the functions titto.bbl.volume for handling journal volumes (without "vol." label) | |
| 31 | +%% - Used for editors the same name conventions used for authors (see function format.in.ed.booktitle) | |
| 32 | +%% - Removed a \newblock to avoid long spaces between title and "In: ..." | |
| 33 | +%% - Added function titto.space.prefix to add a space instead of "~" after the (removed) "vol." label | |
| 34 | +%% ================================================================================================ | |
| 35 | +%% This was file `titto.bst', | |
| 36 | +%% generated with the docstrip utility. | |
| 37 | +%% | |
| 38 | +%% The original source files were: | |
| 39 | +%% | |
| 40 | +%% merlin.mbs (with options: `vonx,nm-rvvc,yr-par,jttl-rm,volp-com,jwdpg,jwdvol,numser,ser-vol,jnm-x,btit-rm,bt-rm,edparxc,bkedcap,au-col,in-col,fin-bare,pp,ed,abr,mth-bare,xedn,jabr,and-com,and-com-ed,xand,url,url-blk,em-x,nfss,') | |
| 41 | +%% ---------------------------------------- | |
| 42 | +%% *** Tentative .bst file for Springer LNCS *** | |
| 43 | +%% | |
| 44 | +%% Copyright 1994-2007 Patrick W Daly | |
| 45 | + % =============================================================== | |
| 46 | + % IMPORTANT NOTICE: | |
| 47 | + % This bibliographic style (bst) file has been generated from one or | |
| 48 | + % more master bibliographic style (mbs) files, listed above. | |
| 49 | + % | |
| 50 | + % This generated file can be redistributed and/or modified under the terms | |
| 51 | + % of the LaTeX Project Public License Distributed from CTAN | |
| 52 | + % archives in directory macros/latex/base/lppl.txt; either | |
| 53 | + % version 1 of the License, or any later version. | |
| 54 | + % =============================================================== | |
| 55 | + % Name and version information of the main mbs file: | |
| 56 | + % \ProvidesFile{merlin.mbs}[2007/04/24 4.20 (PWD, AO, DPC)] | |
| 57 | + % For use with BibTeX version 0.99a or later | |
| 58 | + %------------------------------------------------------------------- | |
| 59 | + % This bibliography style file is intended for texts in ENGLISH | |
| 60 | + % This is a numerical citation style, and as such is standard LaTeX. | |
| 61 | + % It requires no extra package to interface to the main text. | |
| 62 | + % The form of the \bibitem entries is | |
| 63 | + % \bibitem{key}... | |
| 64 | + % Usage of \cite is as follows: | |
| 65 | + % \cite{key} ==>> [#] | |
| 66 | + % \cite[chap. 2]{key} ==>> [#, chap. 2] | |
| 67 | + % where # is a number determined by the ordering in the reference list. | |
| 68 | + % The order in the reference list is alphabetical by authors. | |
| 69 | + %--------------------------------------------------------------------- | |
| 70 | + | |
| 71 | +ENTRY | |
| 72 | + { address | |
| 73 | + author | |
| 74 | + booktitle | |
| 75 | + chapter | |
| 76 | + edition | |
| 77 | + editor | |
| 78 | + eid | |
| 79 | + howpublished | |
| 80 | + institution | |
| 81 | + journal | |
| 82 | + key | |
| 83 | + month | |
| 84 | + note | |
| 85 | + number | |
| 86 | + organization | |
| 87 | + pages | |
| 88 | + publisher | |
| 89 | + school | |
| 90 | + series | |
| 91 | + title | |
| 92 | + type | |
| 93 | + url | |
| 94 | + volume | |
| 95 | + year | |
| 96 | + } | |
| 97 | + {} | |
| 98 | + { label } | |
| 99 | +INTEGERS { output.state before.all mid.sentence after.sentence after.block } | |
| 100 | +FUNCTION {init.state.consts} | |
| 101 | +{ #0 'before.all := | |
| 102 | + #1 'mid.sentence := | |
| 103 | + #2 'after.sentence := | |
| 104 | + #3 'after.block := | |
| 105 | +} | |
| 106 | +STRINGS { s t} | |
| 107 | +FUNCTION {output.nonnull} | |
| 108 | +{ 's := | |
| 109 | + output.state mid.sentence = | |
| 110 | + { ", " * write$ } | |
| 111 | + { output.state after.block = | |
| 112 | + { add.period$ write$ | |
| 113 | +% newline$ | |
| 114 | +% "\newblock " write$ % removed for titto-lncs-01 | |
| 115 | + " " write$ % to avoid long spaces between title and "In: ..." | |
| 116 | + } | |
| 117 | + { output.state before.all = | |
| 118 | + 'write$ | |
| 119 | + { add.period$ " " * write$ } | |
| 120 | + if$ | |
| 121 | + } | |
| 122 | + if$ | |
| 123 | + mid.sentence 'output.state := | |
| 124 | + } | |
| 125 | + if$ | |
| 126 | + s | |
| 127 | +} | |
| 128 | +FUNCTION {output} | |
| 129 | +{ duplicate$ empty$ | |
| 130 | + 'pop$ | |
| 131 | + 'output.nonnull | |
| 132 | + if$ | |
| 133 | +} | |
| 134 | +FUNCTION {output.check} | |
| 135 | +{ 't := | |
| 136 | + duplicate$ empty$ | |
| 137 | + { pop$ "empty " t * " in " * cite$ * warning$ } | |
| 138 | + 'output.nonnull | |
| 139 | + if$ | |
| 140 | +} | |
| 141 | +FUNCTION {fin.entry} | |
| 142 | +{ duplicate$ empty$ | |
| 143 | + 'pop$ | |
| 144 | + 'write$ | |
| 145 | + if$ | |
| 146 | + newline$ | |
| 147 | +} | |
| 148 | + | |
| 149 | +FUNCTION {new.block} | |
| 150 | +{ output.state before.all = | |
| 151 | + 'skip$ | |
| 152 | + { after.block 'output.state := } | |
| 153 | + if$ | |
| 154 | +} | |
| 155 | +FUNCTION {new.sentence} | |
| 156 | +{ output.state after.block = | |
| 157 | + 'skip$ | |
| 158 | + { output.state before.all = | |
| 159 | + 'skip$ | |
| 160 | + { after.sentence 'output.state := } | |
| 161 | + if$ | |
| 162 | + } | |
| 163 | + if$ | |
| 164 | +} | |
| 165 | +FUNCTION {add.blank} | |
| 166 | +{ " " * before.all 'output.state := | |
| 167 | +} | |
| 168 | + | |
| 169 | + | |
| 170 | +FUNCTION {add.colon} | |
| 171 | +{ duplicate$ empty$ | |
| 172 | + 'skip$ | |
| 173 | + { ":" * add.blank } | |
| 174 | + if$ | |
| 175 | +} | |
| 176 | + | |
| 177 | +FUNCTION {date.block} | |
| 178 | +{ | |
| 179 | + new.block | |
| 180 | +} | |
| 181 | + | |
| 182 | +FUNCTION {not} | |
| 183 | +{ { #0 } | |
| 184 | + { #1 } | |
| 185 | + if$ | |
| 186 | +} | |
| 187 | +FUNCTION {and} | |
| 188 | +{ 'skip$ | |
| 189 | + { pop$ #0 } | |
| 190 | + if$ | |
| 191 | +} | |
| 192 | +FUNCTION {or} | |
| 193 | +{ { pop$ #1 } | |
| 194 | + 'skip$ | |
| 195 | + if$ | |
| 196 | +} | |
| 197 | +STRINGS {z} | |
| 198 | +FUNCTION {remove.dots} | |
| 199 | +{ 'z := | |
| 200 | + "" | |
| 201 | + { z empty$ not } | |
| 202 | + { z #1 #1 substring$ | |
| 203 | + z #2 global.max$ substring$ 'z := | |
| 204 | + duplicate$ "." = 'pop$ | |
| 205 | + { * } | |
| 206 | + if$ | |
| 207 | + } | |
| 208 | + while$ | |
| 209 | +} | |
| 210 | +FUNCTION {new.block.checka} | |
| 211 | +{ empty$ | |
| 212 | + 'skip$ | |
| 213 | + 'new.block | |
| 214 | + if$ | |
| 215 | +} | |
| 216 | +FUNCTION {new.block.checkb} | |
| 217 | +{ empty$ | |
| 218 | + swap$ empty$ | |
| 219 | + and | |
| 220 | + 'skip$ | |
| 221 | + 'new.block | |
| 222 | + if$ | |
| 223 | +} | |
| 224 | +FUNCTION {new.sentence.checka} | |
| 225 | +{ empty$ | |
| 226 | + 'skip$ | |
| 227 | + 'new.sentence | |
| 228 | + if$ | |
| 229 | +} | |
| 230 | +FUNCTION {new.sentence.checkb} | |
| 231 | +{ empty$ | |
| 232 | + swap$ empty$ | |
| 233 | + and | |
| 234 | + 'skip$ | |
| 235 | + 'new.sentence | |
| 236 | + if$ | |
| 237 | +} | |
| 238 | +FUNCTION {field.or.null} | |
| 239 | +{ duplicate$ empty$ | |
| 240 | + { pop$ "" } | |
| 241 | + 'skip$ | |
| 242 | + if$ | |
| 243 | +} | |
| 244 | +FUNCTION {emphasize} | |
| 245 | +{ skip$ } | |
| 246 | +FUNCTION {tie.or.space.prefix} | |
| 247 | +{ duplicate$ text.length$ #3 < | |
| 248 | + { "~" } | |
| 249 | + { " " } | |
| 250 | + if$ | |
| 251 | + swap$ | |
| 252 | +} | |
| 253 | +FUNCTION {titto.space.prefix} % always introduce a space | |
| 254 | +{ duplicate$ text.length$ #3 < | |
| 255 | + { " " } | |
| 256 | + { " " } | |
| 257 | + if$ | |
| 258 | + swap$ | |
| 259 | +} | |
| 260 | + | |
| 261 | + | |
| 262 | +FUNCTION {capitalize} | |
| 263 | +{ "u" change.case$ "t" change.case$ } | |
| 264 | + | |
| 265 | +FUNCTION {space.word} | |
| 266 | +{ " " swap$ * " " * } | |
| 267 | + % Here are the language-specific definitions for explicit words. | |
| 268 | + % Each function has a name bbl.xxx where xxx is the English word. | |
| 269 | + % The language selected here is ENGLISH | |
| 270 | +FUNCTION {bbl.and} | |
| 271 | +{ "and"} | |
| 272 | + | |
| 273 | +FUNCTION {bbl.etal} | |
| 274 | +{ "et~al." } | |
| 275 | + | |
| 276 | +FUNCTION {bbl.editors} | |
| 277 | +{ "eds." } | |
| 278 | + | |
| 279 | +FUNCTION {bbl.editor} | |
| 280 | +{ "ed." } | |
| 281 | + | |
| 282 | +FUNCTION {bbl.edby} | |
| 283 | +{ "edited by" } | |
| 284 | + | |
| 285 | +FUNCTION {bbl.edition} | |
| 286 | +{ "edn." } | |
| 287 | + | |
| 288 | +FUNCTION {bbl.volume} | |
| 289 | +{ "vol." } | |
| 290 | + | |
| 291 | +FUNCTION {titto.bbl.volume} % for handling journals | |
| 292 | +{ "" } | |
| 293 | + | |
| 294 | +FUNCTION {bbl.of} | |
| 295 | +{ "of" } | |
| 296 | + | |
| 297 | +FUNCTION {bbl.number} | |
| 298 | +{ "no." } | |
| 299 | + | |
| 300 | +FUNCTION {bbl.nr} | |
| 301 | +{ "no." } | |
| 302 | + | |
| 303 | +FUNCTION {bbl.in} | |
| 304 | +{ "in" } | |
| 305 | + | |
| 306 | +FUNCTION {bbl.pages} | |
| 307 | +{ "pp." } | |
| 308 | + | |
| 309 | +FUNCTION {bbl.page} | |
| 310 | +{ "p." } | |
| 311 | + | |
| 312 | +FUNCTION {titto.bbl.pages} % for journals | |
| 313 | +{ "" } | |
| 314 | + | |
| 315 | +FUNCTION {titto.bbl.page} % for journals | |
| 316 | +{ "" } | |
| 317 | + | |
| 318 | +FUNCTION {bbl.chapter} | |
| 319 | +{ "chap." } | |
| 320 | + | |
| 321 | +FUNCTION {bbl.techrep} | |
| 322 | +{ "Tech. Rep." } | |
| 323 | + | |
| 324 | +FUNCTION {bbl.mthesis} | |
| 325 | +{ "Master's thesis" } | |
| 326 | + | |
| 327 | +FUNCTION {bbl.phdthesis} | |
| 328 | +{ "Ph.D. thesis" } | |
| 329 | + | |
| 330 | +MACRO {jan} {"Jan."} | |
| 331 | + | |
| 332 | +MACRO {feb} {"Feb."} | |
| 333 | + | |
| 334 | +MACRO {mar} {"Mar."} | |
| 335 | + | |
| 336 | +MACRO {apr} {"Apr."} | |
| 337 | + | |
| 338 | +MACRO {may} {"May"} | |
| 339 | + | |
| 340 | +MACRO {jun} {"Jun."} | |
| 341 | + | |
| 342 | +MACRO {jul} {"Jul."} | |
| 343 | + | |
| 344 | +MACRO {aug} {"Aug."} | |
| 345 | + | |
| 346 | +MACRO {sep} {"Sep."} | |
| 347 | + | |
| 348 | +MACRO {oct} {"Oct."} | |
| 349 | + | |
| 350 | +MACRO {nov} {"Nov."} | |
| 351 | + | |
| 352 | +MACRO {dec} {"Dec."} | |
| 353 | + | |
| 354 | +MACRO {acmcs} {"ACM Comput. Surv."} | |
| 355 | + | |
| 356 | +MACRO {acta} {"Acta Inf."} | |
| 357 | + | |
| 358 | +MACRO {cacm} {"Commun. ACM"} | |
| 359 | + | |
| 360 | +MACRO {ibmjrd} {"IBM J. Res. Dev."} | |
| 361 | + | |
| 362 | +MACRO {ibmsj} {"IBM Syst.~J."} | |
| 363 | + | |
| 364 | +MACRO {ieeese} {"IEEE Trans. Software Eng."} | |
| 365 | + | |
| 366 | +MACRO {ieeetc} {"IEEE Trans. Comput."} | |
| 367 | + | |
| 368 | +MACRO {ieeetcad} | |
| 369 | + {"IEEE Trans. Comput. Aid. Des."} | |
| 370 | + | |
| 371 | +MACRO {ipl} {"Inf. Process. Lett."} | |
| 372 | + | |
| 373 | +MACRO {jacm} {"J.~ACM"} | |
| 374 | + | |
| 375 | +MACRO {jcss} {"J.~Comput. Syst. Sci."} | |
| 376 | + | |
| 377 | +MACRO {scp} {"Sci. Comput. Program."} | |
| 378 | + | |
| 379 | +MACRO {sicomp} {"SIAM J. Comput."} | |
| 380 | + | |
| 381 | +MACRO {tocs} {"ACM Trans. Comput. Syst."} | |
| 382 | + | |
| 383 | +MACRO {tods} {"ACM Trans. Database Syst."} | |
| 384 | + | |
| 385 | +MACRO {tog} {"ACM Trans. Graphic."} | |
| 386 | + | |
| 387 | +MACRO {toms} {"ACM Trans. Math. Software"} | |
| 388 | + | |
| 389 | +MACRO {toois} {"ACM Trans. Office Inf. Syst."} | |
| 390 | + | |
| 391 | +MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} | |
| 392 | + | |
| 393 | +MACRO {tcs} {"Theor. Comput. Sci."} | |
| 394 | + | |
| 395 | +FUNCTION {bibinfo.check} | |
| 396 | +{ swap$ | |
| 397 | + duplicate$ missing$ | |
| 398 | + { | |
| 399 | + pop$ pop$ | |
| 400 | + "" | |
| 401 | + } | |
| 402 | + { duplicate$ empty$ | |
| 403 | + { | |
| 404 | + swap$ pop$ | |
| 405 | + } | |
| 406 | + { swap$ | |
| 407 | + pop$ | |
| 408 | + } | |
| 409 | + if$ | |
| 410 | + } | |
| 411 | + if$ | |
| 412 | +} | |
| 413 | +FUNCTION {bibinfo.warn} | |
| 414 | +{ swap$ | |
| 415 | + duplicate$ missing$ | |
| 416 | + { | |
| 417 | + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ | |
| 418 | + "" | |
| 419 | + } | |
| 420 | + { duplicate$ empty$ | |
| 421 | + { | |
| 422 | + swap$ "empty " swap$ * " in " * cite$ * warning$ | |
| 423 | + } | |
| 424 | + { swap$ | |
| 425 | + pop$ | |
| 426 | + } | |
| 427 | + if$ | |
| 428 | + } | |
| 429 | + if$ | |
| 430 | +} | |
| 431 | +FUNCTION {format.url} | |
| 432 | +{ url empty$ | |
| 433 | + { "" } | |
| 434 | +% { "\urlprefix\url{" url * "}" * } | |
| 435 | + { "\url{" url * "}" * } % changed in titto-lncs-02.bst | |
| 436 | + if$ | |
| 437 | +} | |
| 438 | + | |
| 439 | +INTEGERS { nameptr namesleft numnames } | |
| 440 | + | |
| 441 | + | |
| 442 | +STRINGS { bibinfo} | |
| 443 | + | |
| 444 | +FUNCTION {format.names} | |
| 445 | +{ 'bibinfo := | |
| 446 | + duplicate$ empty$ 'skip$ { | |
| 447 | + 's := | |
| 448 | + "" 't := | |
| 449 | + #1 'nameptr := | |
| 450 | + s num.names$ 'numnames := | |
| 451 | + numnames 'namesleft := | |
| 452 | + { namesleft #0 > } | |
| 453 | + { s nameptr | |
| 454 | + "{vv~}{ll}{, jj}{, f{.}.}" | |
| 455 | + format.name$ | |
| 456 | + bibinfo bibinfo.check | |
| 457 | + 't := | |
| 458 | + nameptr #1 > | |
| 459 | + { | |
| 460 | + namesleft #1 > | |
| 461 | + { ", " * t * } | |
| 462 | + { | |
| 463 | + s nameptr "{ll}" format.name$ duplicate$ "others" = | |
| 464 | + { 't := } | |
| 465 | + { pop$ } | |
| 466 | + if$ | |
| 467 | + "," * | |
| 468 | + t "others" = | |
| 469 | + { | |
| 470 | + " " * bbl.etal * | |
| 471 | + } | |
| 472 | + { " " * t * } | |
| 473 | + if$ | |
| 474 | + } | |
| 475 | + if$ | |
| 476 | + } | |
| 477 | + 't | |
| 478 | + if$ | |
| 479 | + nameptr #1 + 'nameptr := | |
| 480 | + namesleft #1 - 'namesleft := | |
| 481 | + } | |
| 482 | + while$ | |
| 483 | + } if$ | |
| 484 | +} | |
| 485 | +FUNCTION {format.names.ed} | |
| 486 | +{ | |
| 487 | + 'bibinfo := | |
| 488 | + duplicate$ empty$ 'skip$ { | |
| 489 | + 's := | |
| 490 | + "" 't := | |
| 491 | + #1 'nameptr := | |
| 492 | + s num.names$ 'numnames := | |
| 493 | + numnames 'namesleft := | |
| 494 | + { namesleft #0 > } | |
| 495 | + { s nameptr | |
| 496 | + "{f{.}.~}{vv~}{ll}{ jj}" | |
| 497 | + format.name$ | |
| 498 | + bibinfo bibinfo.check | |
| 499 | + 't := | |
| 500 | + nameptr #1 > | |
| 501 | + { | |
| 502 | + namesleft #1 > | |
| 503 | + { ", " * t * } | |
| 504 | + { | |
| 505 | + s nameptr "{ll}" format.name$ duplicate$ "others" = | |
| 506 | + { 't := } | |
| 507 | + { pop$ } | |
| 508 | + if$ | |
| 509 | + "," * | |
| 510 | + t "others" = | |
| 511 | + { | |
| 512 | + | |
| 513 | + " " * bbl.etal * | |
| 514 | + } | |
| 515 | + { " " * t * } | |
| 516 | + if$ | |
| 517 | + } | |
| 518 | + if$ | |
| 519 | + } | |
| 520 | + 't | |
| 521 | + if$ | |
| 522 | + nameptr #1 + 'nameptr := | |
| 523 | + namesleft #1 - 'namesleft := | |
| 524 | + } | |
| 525 | + while$ | |
| 526 | + } if$ | |
| 527 | +} | |
| 528 | +FUNCTION {format.authors} | |
| 529 | +{ author "author" format.names | |
| 530 | +} | |
| 531 | +FUNCTION {get.bbl.editor} | |
| 532 | +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } | |
| 533 | + | |
| 534 | +FUNCTION {format.editors} | |
| 535 | +{ editor "editor" format.names duplicate$ empty$ 'skip$ | |
| 536 | + { | |
| 537 | + " " * | |
| 538 | + get.bbl.editor | |
| 539 | +% capitalize | |
| 540 | + "(" swap$ * ")" * | |
| 541 | + * | |
| 542 | + } | |
| 543 | + if$ | |
| 544 | +} | |
| 545 | +FUNCTION {format.note} | |
| 546 | +{ | |
| 547 | + note empty$ | |
| 548 | + { "" } | |
| 549 | + { note #1 #1 substring$ | |
| 550 | + duplicate$ "{" = | |
| 551 | + 'skip$ | |
| 552 | + { output.state mid.sentence = | |
| 553 | + { "l" } | |
| 554 | + { "u" } | |
| 555 | + if$ | |
| 556 | + change.case$ | |
| 557 | + } | |
| 558 | + if$ | |
| 559 | + note #2 global.max$ substring$ * "note" bibinfo.check | |
| 560 | + } | |
| 561 | + if$ | |
| 562 | +} | |
| 563 | + | |
| 564 | +FUNCTION {format.title} | |
| 565 | +{ title | |
| 566 | + duplicate$ empty$ 'skip$ | |
| 567 | + { "t" change.case$ } | |
| 568 | + if$ | |
| 569 | + "title" bibinfo.check | |
| 570 | +} | |
| 571 | +FUNCTION {output.bibitem} | |
| 572 | +{ newline$ | |
| 573 | + "\bibitem{" write$ | |
| 574 | + cite$ write$ | |
| 575 | + "}" write$ | |
| 576 | + newline$ | |
| 577 | + "" | |
| 578 | + before.all 'output.state := | |
| 579 | +} | |
| 580 | + | |
| 581 | +FUNCTION {n.dashify} | |
| 582 | +{ | |
| 583 | + 't := | |
| 584 | + "" | |
| 585 | + { t empty$ not } | |
| 586 | + { t #1 #1 substring$ "-" = | |
| 587 | + { t #1 #2 substring$ "--" = not | |
| 588 | + { "--" * | |
| 589 | + t #2 global.max$ substring$ 't := | |
| 590 | + } | |
| 591 | + { { t #1 #1 substring$ "-" = } | |
| 592 | + { "-" * | |
| 593 | + t #2 global.max$ substring$ 't := | |
| 594 | + } | |
| 595 | + while$ | |
| 596 | + } | |
| 597 | + if$ | |
| 598 | + } | |
| 599 | + { t #1 #1 substring$ * | |
| 600 | + t #2 global.max$ substring$ 't := | |
| 601 | + } | |
| 602 | + if$ | |
| 603 | + } | |
| 604 | + while$ | |
| 605 | +} | |
| 606 | + | |
| 607 | +FUNCTION {word.in} | |
| 608 | +{ bbl.in capitalize | |
| 609 | + ":" * | |
| 610 | + " " * } | |
| 611 | + | |
| 612 | +FUNCTION {format.date} | |
| 613 | +{ | |
| 614 | + month "month" bibinfo.check | |
| 615 | + duplicate$ empty$ | |
| 616 | + year "year" bibinfo.check duplicate$ empty$ | |
| 617 | + { swap$ 'skip$ | |
| 618 | + { "there's a month but no year in " cite$ * warning$ } | |
| 619 | + if$ | |
| 620 | + * | |
| 621 | + } | |
| 622 | + { swap$ 'skip$ | |
| 623 | + { | |
| 624 | + swap$ | |
| 625 | + " " * swap$ | |
| 626 | + } | |
| 627 | + if$ | |
| 628 | + * | |
| 629 | + remove.dots | |
| 630 | + } | |
| 631 | + if$ | |
| 632 | + duplicate$ empty$ | |
| 633 | + 'skip$ | |
| 634 | + { | |
| 635 | + before.all 'output.state := | |
| 636 | + " (" swap$ * ")" * | |
| 637 | + } | |
| 638 | + if$ | |
| 639 | +} | |
| 640 | +FUNCTION {format.btitle} | |
| 641 | +{ title "title" bibinfo.check | |
| 642 | + duplicate$ empty$ 'skip$ | |
| 643 | + { | |
| 644 | + } | |
| 645 | + if$ | |
| 646 | +} | |
| 647 | +FUNCTION {either.or.check} | |
| 648 | +{ empty$ | |
| 649 | + 'pop$ | |
| 650 | + { "can't use both " swap$ * " fields in " * cite$ * warning$ } | |
| 651 | + if$ | |
| 652 | +} | |
| 653 | +FUNCTION {format.bvolume} | |
| 654 | +{ volume empty$ | |
| 655 | + { "" } | |
| 656 | + { bbl.volume volume tie.or.space.prefix | |
| 657 | + "volume" bibinfo.check * * | |
| 658 | + series "series" bibinfo.check | |
| 659 | + duplicate$ empty$ 'pop$ | |
| 660 | + { emphasize ", " * swap$ * } | |
| 661 | + if$ | |
| 662 | + "volume and number" number either.or.check | |
| 663 | + } | |
| 664 | + if$ | |
| 665 | +} | |
| 666 | +FUNCTION {format.number.series} | |
| 667 | +{ volume empty$ | |
| 668 | + { number empty$ | |
| 669 | + { series field.or.null } | |
| 670 | + { output.state mid.sentence = | |
| 671 | + { bbl.number } | |
| 672 | + { bbl.number capitalize } | |
| 673 | + if$ | |
| 674 | + number tie.or.space.prefix "number" bibinfo.check * * | |
| 675 | + series empty$ | |
| 676 | + { "there's a number but no series in " cite$ * warning$ } | |
| 677 | + { bbl.in space.word * | |
| 678 | + series "series" bibinfo.check * | |
| 679 | + } | |
| 680 | + if$ | |
| 681 | + } | |
| 682 | + if$ | |
| 683 | + } | |
| 684 | + { "" } | |
| 685 | + if$ | |
| 686 | +} | |
| 687 | + | |
| 688 | +FUNCTION {format.edition} | |
| 689 | +{ edition duplicate$ empty$ 'skip$ | |
| 690 | + { | |
| 691 | + output.state mid.sentence = | |
| 692 | + { "l" } | |
| 693 | + { "t" } | |
| 694 | + if$ change.case$ | |
| 695 | + "edition" bibinfo.check | |
| 696 | + " " * bbl.edition * | |
| 697 | + } | |
| 698 | + if$ | |
| 699 | +} | |
| 700 | +INTEGERS { multiresult } | |
| 701 | +FUNCTION {multi.page.check} | |
| 702 | +{ 't := | |
| 703 | + #0 'multiresult := | |
| 704 | + { multiresult not | |
| 705 | + t empty$ not | |
| 706 | + and | |
| 707 | + } | |
| 708 | + { t #1 #1 substring$ | |
| 709 | + duplicate$ "-" = | |
| 710 | + swap$ duplicate$ "," = | |
| 711 | + swap$ "+" = | |
| 712 | + or or | |
| 713 | + { #1 'multiresult := } | |
| 714 | + { t #2 global.max$ substring$ 't := } | |
| 715 | + if$ | |
| 716 | + } | |
| 717 | + while$ | |
| 718 | + multiresult | |
| 719 | +} | |
| 720 | +FUNCTION {format.pages} | |
| 721 | +{ pages duplicate$ empty$ 'skip$ | |
| 722 | + { duplicate$ multi.page.check | |
| 723 | + { | |
| 724 | + bbl.pages swap$ | |
| 725 | + n.dashify | |
| 726 | + } | |
| 727 | + { | |
| 728 | + bbl.page swap$ | |
| 729 | + } | |
| 730 | + if$ | |
| 731 | + tie.or.space.prefix | |
| 732 | + "pages" bibinfo.check | |
| 733 | + * * | |
| 734 | + } | |
| 735 | + if$ | |
| 736 | +} | |
| 737 | +FUNCTION {format.journal.pages} | |
| 738 | +{ pages duplicate$ empty$ 'pop$ | |
| 739 | + { swap$ duplicate$ empty$ | |
| 740 | + { pop$ pop$ format.pages } | |
| 741 | + { | |
| 742 | + ", " * | |
| 743 | + swap$ | |
| 744 | + n.dashify | |
| 745 | + pages multi.page.check | |
| 746 | + 'titto.bbl.pages | |
| 747 | + 'titto.bbl.page | |
| 748 | + if$ | |
| 749 | + swap$ tie.or.space.prefix | |
| 750 | + "pages" bibinfo.check | |
| 751 | + * * | |
| 752 | + * | |
| 753 | + } | |
| 754 | + if$ | |
| 755 | + } | |
| 756 | + if$ | |
| 757 | +} | |
| 758 | +FUNCTION {format.journal.eid} | |
| 759 | +{ eid "eid" bibinfo.check | |
| 760 | + duplicate$ empty$ 'pop$ | |
| 761 | + { swap$ duplicate$ empty$ 'skip$ | |
| 762 | + { | |
| 763 | + ", " * | |
| 764 | + } | |
| 765 | + if$ | |
| 766 | + swap$ * | |
| 767 | + } | |
| 768 | + if$ | |
| 769 | +} | |
| 770 | +FUNCTION {format.vol.num.pages} % this function is used only for journal entries | |
| 771 | +{ volume field.or.null | |
| 772 | + duplicate$ empty$ 'skip$ | |
| 773 | + { | |
| 774 | +% bbl.volume swap$ tie.or.space.prefix | |
| 775 | + titto.bbl.volume swap$ titto.space.prefix | |
| 776 | +% rationale for the change above: for journals you don't want "vol." label | |
| 777 | +% hence it does not make sense to attach the journal number to the label when | |
| 778 | +% it is short | |
| 779 | + "volume" bibinfo.check | |
| 780 | + * * | |
| 781 | + } | |
| 782 | + if$ | |
| 783 | + number "number" bibinfo.check duplicate$ empty$ 'skip$ | |
| 784 | + { | |
| 785 | + swap$ duplicate$ empty$ | |
| 786 | + { "there's a number but no volume in " cite$ * warning$ } | |
| 787 | + 'skip$ | |
| 788 | + if$ | |
| 789 | + swap$ | |
| 790 | + "(" swap$ * ")" * | |
| 791 | + } | |
| 792 | + if$ * | |
| 793 | + eid empty$ | |
| 794 | + { format.journal.pages } | |
| 795 | + { format.journal.eid } | |
| 796 | + if$ | |
| 797 | +} | |
| 798 | + | |
| 799 | +FUNCTION {format.chapter.pages} | |
| 800 | +{ chapter empty$ | |
| 801 | + 'format.pages | |
| 802 | + { type empty$ | |
| 803 | + { bbl.chapter } | |
| 804 | + { type "l" change.case$ | |
| 805 | + "type" bibinfo.check | |
| 806 | + } | |
| 807 | + if$ | |
| 808 | + chapter tie.or.space.prefix | |
| 809 | + "chapter" bibinfo.check | |
| 810 | + * * | |
| 811 | + pages empty$ | |
| 812 | + 'skip$ | |
| 813 | + { ", " * format.pages * } | |
| 814 | + if$ | |
| 815 | + } | |
| 816 | + if$ | |
| 817 | +} | |
| 818 | + | |
| 819 | +FUNCTION {format.booktitle} | |
| 820 | +{ | |
| 821 | + booktitle "booktitle" bibinfo.check | |
| 822 | +} | |
| 823 | +FUNCTION {format.in.ed.booktitle} | |
| 824 | +{ format.booktitle duplicate$ empty$ 'skip$ | |
| 825 | + { | |
| 826 | +% editor "editor" format.names.ed duplicate$ empty$ 'pop$ % changed by titto | |
| 827 | + editor "editor" format.names duplicate$ empty$ 'pop$ | |
| 828 | + { | |
| 829 | + " " * | |
| 830 | + get.bbl.editor | |
| 831 | +% capitalize | |
| 832 | + "(" swap$ * ") " * | |
| 833 | + * swap$ | |
| 834 | + * } | |
| 835 | + if$ | |
| 836 | + word.in swap$ * | |
| 837 | + } | |
| 838 | + if$ | |
| 839 | +} | |
| 840 | +FUNCTION {empty.misc.check} | |
| 841 | +{ author empty$ title empty$ howpublished empty$ | |
| 842 | + month empty$ year empty$ note empty$ | |
| 843 | + and and and and and | |
| 844 | + key empty$ not and | |
| 845 | + { "all relevant fields are empty in " cite$ * warning$ } | |
| 846 | + 'skip$ | |
| 847 | + if$ | |
| 848 | +} | |
| 849 | +FUNCTION {format.thesis.type} | |
| 850 | +{ type duplicate$ empty$ | |
| 851 | + 'pop$ | |
| 852 | + { swap$ pop$ | |
| 853 | + "t" change.case$ "type" bibinfo.check | |
| 854 | + } | |
| 855 | + if$ | |
| 856 | +} | |
| 857 | +FUNCTION {format.tr.number} | |
| 858 | +{ number "number" bibinfo.check | |
| 859 | + type duplicate$ empty$ | |
| 860 | + { pop$ bbl.techrep } | |
| 861 | + 'skip$ | |
| 862 | + if$ | |
| 863 | + "type" bibinfo.check | |
| 864 | + swap$ duplicate$ empty$ | |
| 865 | + { pop$ "t" change.case$ } | |
| 866 | + { tie.or.space.prefix * * } | |
| 867 | + if$ | |
| 868 | +} | |
| 869 | +FUNCTION {format.article.crossref} | |
| 870 | +{ | |
| 871 | + key duplicate$ empty$ | |
| 872 | + { pop$ | |
| 873 | + journal duplicate$ empty$ | |
| 874 | + { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } | |
| 875 | + { "journal" bibinfo.check emphasize word.in swap$ * } | |
| 876 | + if$ | |
| 877 | + } | |
| 878 | + { word.in swap$ * " " *} | |
| 879 | + if$ | |
| 880 | + " \cite{" * crossref * "}" * | |
| 881 | +} | |
| 882 | +FUNCTION {format.crossref.editor} | |
| 883 | +{ editor #1 "{vv~}{ll}" format.name$ | |
| 884 | + "editor" bibinfo.check | |
| 885 | + editor num.names$ duplicate$ | |
| 886 | + #2 > | |
| 887 | + { pop$ | |
| 888 | + "editor" bibinfo.check | |
| 889 | + " " * bbl.etal | |
| 890 | + * | |
| 891 | + } | |
| 892 | + { #2 < | |
| 893 | + 'skip$ | |
| 894 | + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = | |
| 895 | + { | |
| 896 | + "editor" bibinfo.check | |
| 897 | + " " * bbl.etal | |
| 898 | + * | |
| 899 | + } | |
| 900 | + { | |
| 901 | + bbl.and space.word | |
| 902 | + * editor #2 "{vv~}{ll}" format.name$ | |
| 903 | + "editor" bibinfo.check | |
| 904 | + * | |
| 905 | + } | |
| 906 | + if$ | |
| 907 | + } | |
| 908 | + if$ | |
| 909 | + } | |
| 910 | + if$ | |
| 911 | +} | |
| 912 | +FUNCTION {format.book.crossref} | |
| 913 | +{ volume duplicate$ empty$ | |
| 914 | + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ | |
| 915 | + pop$ word.in | |
| 916 | + } | |
| 917 | + { bbl.volume | |
| 918 | + capitalize | |
| 919 | + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * | |
| 920 | + } | |
| 921 | + if$ | |
| 922 | + editor empty$ | |
| 923 | + editor field.or.null author field.or.null = | |
| 924 | + or | |
| 925 | + { key empty$ | |
| 926 | + { series empty$ | |
| 927 | + { "need editor, key, or series for " cite$ * " to crossref " * | |
| 928 | + crossref * warning$ | |
| 929 | + "" * | |
| 930 | + } | |
| 931 | + { series emphasize * } | |
| 932 | + if$ | |
| 933 | + } | |
| 934 | + { key * } | |
| 935 | + if$ | |
| 936 | + } | |
| 937 | + { format.crossref.editor * } | |
| 938 | + if$ | |
| 939 | + " \cite{" * crossref * "}" * | |
| 940 | +} | |
| 941 | +FUNCTION {format.incoll.inproc.crossref} | |
| 942 | +{ | |
| 943 | + editor empty$ | |
| 944 | + editor field.or.null author field.or.null = | |
| 945 | + or | |
| 946 | + { key empty$ | |
| 947 | + { format.booktitle duplicate$ empty$ | |
| 948 | + { "need editor, key, or booktitle for " cite$ * " to crossref " * | |
| 949 | + crossref * warning$ | |
| 950 | + } | |
| 951 | + { word.in swap$ * } | |
| 952 | + if$ | |
| 953 | + } | |
| 954 | + { word.in key * " " *} | |
| 955 | + if$ | |
| 956 | + } | |
| 957 | + { word.in format.crossref.editor * " " *} | |
| 958 | + if$ | |
| 959 | + " \cite{" * crossref * "}" * | |
| 960 | +} | |
| 961 | +FUNCTION {format.org.or.pub} | |
| 962 | +{ 't := | |
| 963 | + "" | |
| 964 | + address empty$ t empty$ and | |
| 965 | + 'skip$ | |
| 966 | + { | |
| 967 | + t empty$ | |
| 968 | + { address "address" bibinfo.check * | |
| 969 | + } | |
| 970 | + { t * | |
| 971 | + address empty$ | |
| 972 | + 'skip$ | |
| 973 | + { ", " * address "address" bibinfo.check * } | |
| 974 | + if$ | |
| 975 | + } | |
| 976 | + if$ | |
| 977 | + } | |
| 978 | + if$ | |
| 979 | +} | |
| 980 | +FUNCTION {format.publisher.address} | |
| 981 | +{ publisher "publisher" bibinfo.warn format.org.or.pub | |
| 982 | +} | |
| 983 | + | |
| 984 | +FUNCTION {format.organization.address} | |
| 985 | +{ organization "organization" bibinfo.check format.org.or.pub | |
| 986 | +} | |
| 987 | + | |
| 988 | +FUNCTION {article} | |
| 989 | +{ output.bibitem | |
| 990 | + format.authors "author" output.check | |
| 991 | + add.colon | |
| 992 | + new.block | |
| 993 | + format.title "title" output.check | |
| 994 | + new.block | |
| 995 | + crossref missing$ | |
| 996 | + { | |
| 997 | + journal | |
| 998 | + "journal" bibinfo.check | |
| 999 | + "journal" output.check | |
| 1000 | + add.blank | |
| 1001 | + format.vol.num.pages output | |
| 1002 | + format.date "year" output.check | |
| 1003 | + } | |
| 1004 | + { format.article.crossref output.nonnull | |
| 1005 | + format.pages output | |
| 1006 | + } | |
| 1007 | + if$ | |
| 1008 | +% new.block | |
| 1009 | + format.url output | |
| 1010 | +% new.block | |
| 1011 | + format.note output | |
| 1012 | + fin.entry | |
| 1013 | +} | |
| 1014 | +FUNCTION {book} | |
| 1015 | +{ output.bibitem | |
| 1016 | + author empty$ | |
| 1017 | + { format.editors "author and editor" output.check | |
| 1018 | + add.colon | |
| 1019 | + } | |
| 1020 | + { format.authors output.nonnull | |
| 1021 | + add.colon | |
| 1022 | + crossref missing$ | |
| 1023 | + { "author and editor" editor either.or.check } | |
| 1024 | + 'skip$ | |
| 1025 | + if$ | |
| 1026 | + } | |
| 1027 | + if$ | |
| 1028 | + new.block | |
| 1029 | + format.btitle "title" output.check | |
| 1030 | + crossref missing$ | |
| 1031 | + { format.bvolume output | |
| 1032 | + new.block | |
| 1033 | + new.sentence | |
| 1034 | + format.number.series output | |
| 1035 | + format.publisher.address output | |
| 1036 | + } | |
| 1037 | + { | |
| 1038 | + new.block | |
| 1039 | + format.book.crossref output.nonnull | |
| 1040 | + } | |
| 1041 | + if$ | |
| 1042 | + format.edition output | |
| 1043 | + format.date "year" output.check | |
| 1044 | +% new.block | |
| 1045 | + format.url output | |
| 1046 | +% new.block | |
| 1047 | + format.note output | |
| 1048 | + fin.entry | |
| 1049 | +} | |
| 1050 | +FUNCTION {booklet} | |
| 1051 | +{ output.bibitem | |
| 1052 | + format.authors output | |
| 1053 | + add.colon | |
| 1054 | + new.block | |
| 1055 | + format.title "title" output.check | |
| 1056 | + new.block | |
| 1057 | + howpublished "howpublished" bibinfo.check output | |
| 1058 | + address "address" bibinfo.check output | |
| 1059 | + format.date output | |
| 1060 | +% new.block | |
| 1061 | + format.url output | |
| 1062 | +% new.block | |
| 1063 | + format.note output | |
| 1064 | + fin.entry | |
| 1065 | +} | |
| 1066 | + | |
| 1067 | +FUNCTION {inbook} | |
| 1068 | +{ output.bibitem | |
| 1069 | + author empty$ | |
| 1070 | + { format.editors "author and editor" output.check | |
| 1071 | + add.colon | |
| 1072 | + } | |
| 1073 | + { format.authors output.nonnull | |
| 1074 | + add.colon | |
| 1075 | + crossref missing$ | |
| 1076 | + { "author and editor" editor either.or.check } | |
| 1077 | + 'skip$ | |
| 1078 | + if$ | |
| 1079 | + } | |
| 1080 | + if$ | |
| 1081 | + new.block | |
| 1082 | + format.btitle "title" output.check | |
| 1083 | + crossref missing$ | |
| 1084 | + { | |
| 1085 | + format.bvolume output | |
| 1086 | + format.chapter.pages "chapter and pages" output.check | |
| 1087 | + new.block | |
| 1088 | + new.sentence | |
| 1089 | + format.number.series output | |
| 1090 | + format.publisher.address output | |
| 1091 | + } | |
| 1092 | + { | |
| 1093 | + format.chapter.pages "chapter and pages" output.check | |
| 1094 | + new.block | |
| 1095 | + format.book.crossref output.nonnull | |
| 1096 | + } | |
| 1097 | + if$ | |
| 1098 | + format.edition output | |
| 1099 | + format.date "year" output.check | |
| 1100 | +% new.block | |
| 1101 | + format.url output | |
| 1102 | +% new.block | |
| 1103 | + format.note output | |
| 1104 | + fin.entry | |
| 1105 | +} | |
| 1106 | + | |
| 1107 | +FUNCTION {incollection} | |
| 1108 | +{ output.bibitem | |
| 1109 | + format.authors "author" output.check | |
| 1110 | + add.colon | |
| 1111 | + new.block | |
| 1112 | + format.title "title" output.check | |
| 1113 | + new.block | |
| 1114 | + crossref missing$ | |
| 1115 | + { format.in.ed.booktitle "booktitle" output.check | |
| 1116 | + format.bvolume output | |
| 1117 | + format.chapter.pages output | |
| 1118 | + new.sentence | |
| 1119 | + format.number.series output | |
| 1120 | + format.publisher.address output | |
| 1121 | + format.edition output | |
| 1122 | + format.date "year" output.check | |
| 1123 | + } | |
| 1124 | + { format.incoll.inproc.crossref output.nonnull | |
| 1125 | + format.chapter.pages output | |
| 1126 | + } | |
| 1127 | + if$ | |
| 1128 | +% new.block | |
| 1129 | + format.url output | |
| 1130 | +% new.block | |
| 1131 | + format.note output | |
| 1132 | + fin.entry | |
| 1133 | +} | |
| 1134 | +FUNCTION {inproceedings} | |
| 1135 | +{ output.bibitem | |
| 1136 | + format.authors "author" output.check | |
| 1137 | + add.colon | |
| 1138 | + new.block | |
| 1139 | + format.title "title" output.check | |
| 1140 | + new.block | |
| 1141 | + crossref missing$ | |
| 1142 | + { format.in.ed.booktitle "booktitle" output.check | |
| 1143 | + new.sentence % added by titto | |
| 1144 | + format.bvolume output | |
| 1145 | + format.pages output | |
| 1146 | + new.sentence | |
| 1147 | + format.number.series output | |
| 1148 | + publisher empty$ | |
| 1149 | + { format.organization.address output } | |
| 1150 | + { organization "organization" bibinfo.check output | |
| 1151 | + format.publisher.address output | |
| 1152 | + } | |
| 1153 | + if$ | |
| 1154 | + format.date "year" output.check | |
| 1155 | + } | |
| 1156 | + { format.incoll.inproc.crossref output.nonnull | |
| 1157 | + format.pages output | |
| 1158 | + } | |
| 1159 | + if$ | |
| 1160 | +% new.block | |
| 1161 | + format.url output | |
| 1162 | +% new.block | |
| 1163 | + format.note output | |
| 1164 | + fin.entry | |
| 1165 | +} | |
| 1166 | +FUNCTION {conference} { inproceedings } | |
| 1167 | +FUNCTION {manual} | |
| 1168 | +{ output.bibitem | |
| 1169 | + author empty$ | |
| 1170 | + { organization "organization" bibinfo.check | |
| 1171 | + duplicate$ empty$ 'pop$ | |
| 1172 | + { output | |
| 1173 | + address "address" bibinfo.check output | |
| 1174 | + } | |
| 1175 | + if$ | |
| 1176 | + } | |
| 1177 | + { format.authors output.nonnull } | |
| 1178 | + if$ | |
| 1179 | + add.colon | |
| 1180 | + new.block | |
| 1181 | + format.btitle "title" output.check | |
| 1182 | + author empty$ | |
| 1183 | + { organization empty$ | |
| 1184 | + { | |
| 1185 | + address new.block.checka | |
| 1186 | + address "address" bibinfo.check output | |
| 1187 | + } | |
| 1188 | + 'skip$ | |
| 1189 | + if$ | |
| 1190 | + } | |
| 1191 | + { | |
| 1192 | + organization address new.block.checkb | |
| 1193 | + organization "organization" bibinfo.check output | |
| 1194 | + address "address" bibinfo.check output | |
| 1195 | + } | |
| 1196 | + if$ | |
| 1197 | + format.edition output | |
| 1198 | + format.date output | |
| 1199 | +% new.block | |
| 1200 | + format.url output | |
| 1201 | +% new.block | |
| 1202 | + format.note output | |
| 1203 | + fin.entry | |
| 1204 | +} | |
| 1205 | + | |
| 1206 | +FUNCTION {mastersthesis} | |
| 1207 | +{ output.bibitem | |
| 1208 | + format.authors "author" output.check | |
| 1209 | + add.colon | |
| 1210 | + new.block | |
| 1211 | + format.btitle | |
| 1212 | + "title" output.check | |
| 1213 | + new.block | |
| 1214 | + bbl.mthesis format.thesis.type output.nonnull | |
| 1215 | + school "school" bibinfo.warn output | |
| 1216 | + address "address" bibinfo.check output | |
| 1217 | + format.date "year" output.check | |
| 1218 | +% new.block | |
| 1219 | + format.url output | |
| 1220 | +% new.block | |
| 1221 | + format.note output | |
| 1222 | + fin.entry | |
| 1223 | +} | |
| 1224 | + | |
| 1225 | +FUNCTION {misc} | |
| 1226 | +{ output.bibitem | |
| 1227 | + format.authors output | |
| 1228 | + add.colon | |
| 1229 | + title howpublished new.block.checkb | |
| 1230 | + format.title output | |
| 1231 | + howpublished new.block.checka | |
| 1232 | + howpublished "howpublished" bibinfo.check output | |
| 1233 | + format.date output | |
| 1234 | +% new.block | |
| 1235 | + format.url output | |
| 1236 | +% new.block | |
| 1237 | + format.note output | |
| 1238 | + fin.entry | |
| 1239 | + empty.misc.check | |
| 1240 | +} | |
| 1241 | +FUNCTION {phdthesis} | |
| 1242 | +{ output.bibitem | |
| 1243 | + format.authors "author" output.check | |
| 1244 | + add.colon | |
| 1245 | + new.block | |
| 1246 | + format.btitle | |
| 1247 | + "title" output.check | |
| 1248 | + new.block | |
| 1249 | + bbl.phdthesis format.thesis.type output.nonnull | |
| 1250 | + school "school" bibinfo.warn output | |
| 1251 | + address "address" bibinfo.check output | |
| 1252 | + format.date "year" output.check | |
| 1253 | +% new.block | |
| 1254 | + format.url output | |
| 1255 | +% new.block | |
| 1256 | + format.note output | |
| 1257 | + fin.entry | |
| 1258 | +} | |
| 1259 | + | |
| 1260 | +FUNCTION {proceedings} | |
| 1261 | +{ output.bibitem | |
| 1262 | + editor empty$ | |
| 1263 | + { organization "organization" bibinfo.check output | |
| 1264 | + } | |
| 1265 | + { format.editors output.nonnull } | |
| 1266 | + if$ | |
| 1267 | + add.colon | |
| 1268 | + new.block | |
| 1269 | + format.btitle "title" output.check | |
| 1270 | + format.bvolume output | |
| 1271 | + editor empty$ | |
| 1272 | + { publisher empty$ | |
| 1273 | + { format.number.series output } | |
| 1274 | + { | |
| 1275 | + new.sentence | |
| 1276 | + format.number.series output | |
| 1277 | + format.publisher.address output | |
| 1278 | + } | |
| 1279 | + if$ | |
| 1280 | + } | |
| 1281 | + { publisher empty$ | |
| 1282 | + { | |
| 1283 | + new.sentence | |
| 1284 | + format.number.series output | |
| 1285 | + format.organization.address output } | |
| 1286 | + { | |
| 1287 | + new.sentence | |
| 1288 | + format.number.series output | |
| 1289 | + organization "organization" bibinfo.check output | |
| 1290 | + format.publisher.address output | |
| 1291 | + } | |
| 1292 | + if$ | |
| 1293 | + } | |
| 1294 | + if$ | |
| 1295 | + format.date "year" output.check | |
| 1296 | +% new.block | |
| 1297 | + format.url output | |
| 1298 | +% new.block | |
| 1299 | + format.note output | |
| 1300 | + fin.entry | |
| 1301 | +} | |
| 1302 | + | |
| 1303 | +FUNCTION {techreport} | |
| 1304 | +{ output.bibitem | |
| 1305 | + format.authors "author" output.check | |
| 1306 | + add.colon | |
| 1307 | + new.block | |
| 1308 | + format.title | |
| 1309 | + "title" output.check | |
| 1310 | + new.block | |
| 1311 | + format.tr.number output.nonnull | |
| 1312 | + institution "institution" bibinfo.warn output | |
| 1313 | + address "address" bibinfo.check output | |
| 1314 | + format.date "year" output.check | |
| 1315 | +% new.block | |
| 1316 | + format.url output | |
| 1317 | +% new.block | |
| 1318 | + format.note output | |
| 1319 | + fin.entry | |
| 1320 | +} | |
| 1321 | + | |
| 1322 | +FUNCTION {unpublished} | |
| 1323 | +{ output.bibitem | |
| 1324 | + format.authors "author" output.check | |
| 1325 | + add.colon | |
| 1326 | + new.block | |
| 1327 | + format.title "title" output.check | |
| 1328 | + format.date output | |
| 1329 | +% new.block | |
| 1330 | + format.url output | |
| 1331 | +% new.block | |
| 1332 | + format.note "note" output.check | |
| 1333 | + fin.entry | |
| 1334 | +} | |
| 1335 | + | |
| 1336 | +FUNCTION {default.type} { misc } | |
| 1337 | +READ | |
| 1338 | +FUNCTION {sortify} | |
| 1339 | +{ purify$ | |
| 1340 | + "l" change.case$ | |
| 1341 | +} | |
| 1342 | +INTEGERS { len } | |
| 1343 | +FUNCTION {chop.word} | |
| 1344 | +{ 's := | |
| 1345 | + 'len := | |
| 1346 | + s #1 len substring$ = | |
| 1347 | + { s len #1 + global.max$ substring$ } | |
| 1348 | + 's | |
| 1349 | + if$ | |
| 1350 | +} | |
| 1351 | +FUNCTION {sort.format.names} | |
| 1352 | +{ 's := | |
| 1353 | + #1 'nameptr := | |
| 1354 | + "" | |
| 1355 | + s num.names$ 'numnames := | |
| 1356 | + numnames 'namesleft := | |
| 1357 | + { namesleft #0 > } | |
| 1358 | + { s nameptr | |
| 1359 | + "{ll{ }}{ ff{ }}{ jj{ }}" | |
| 1360 | + format.name$ 't := | |
| 1361 | + nameptr #1 > | |
| 1362 | + { | |
| 1363 | + " " * | |
| 1364 | + namesleft #1 = t "others" = and | |
| 1365 | + { "zzzzz" * } | |
| 1366 | + { t sortify * } | |
| 1367 | + if$ | |
| 1368 | + } | |
| 1369 | + { t sortify * } | |
| 1370 | + if$ | |
| 1371 | + nameptr #1 + 'nameptr := | |
| 1372 | + namesleft #1 - 'namesleft := | |
| 1373 | + } | |
| 1374 | + while$ | |
| 1375 | +} | |
| 1376 | + | |
| 1377 | +FUNCTION {sort.format.title} | |
| 1378 | +{ 't := | |
| 1379 | + "A " #2 | |
| 1380 | + "An " #3 | |
| 1381 | + "The " #4 t chop.word | |
| 1382 | + chop.word | |
| 1383 | + chop.word | |
| 1384 | + sortify | |
| 1385 | + #1 global.max$ substring$ | |
| 1386 | +} | |
| 1387 | +FUNCTION {author.sort} | |
| 1388 | +{ author empty$ | |
| 1389 | + { key empty$ | |
| 1390 | + { "to sort, need author or key in " cite$ * warning$ | |
| 1391 | + "" | |
| 1392 | + } | |
| 1393 | + { key sortify } | |
| 1394 | + if$ | |
| 1395 | + } | |
| 1396 | + { author sort.format.names } | |
| 1397 | + if$ | |
| 1398 | +} | |
| 1399 | +FUNCTION {author.editor.sort} | |
| 1400 | +{ author empty$ | |
| 1401 | + { editor empty$ | |
| 1402 | + { key empty$ | |
| 1403 | + { "to sort, need author, editor, or key in " cite$ * warning$ | |
| 1404 | + "" | |
| 1405 | + } | |
| 1406 | + { key sortify } | |
| 1407 | + if$ | |
| 1408 | + } | |
| 1409 | + { editor sort.format.names } | |
| 1410 | + if$ | |
| 1411 | + } | |
| 1412 | + { author sort.format.names } | |
| 1413 | + if$ | |
| 1414 | +} | |
| 1415 | +FUNCTION {author.organization.sort} | |
| 1416 | +{ author empty$ | |
| 1417 | + { organization empty$ | |
| 1418 | + { key empty$ | |
| 1419 | + { "to sort, need author, organization, or key in " cite$ * warning$ | |
| 1420 | + "" | |
| 1421 | + } | |
| 1422 | + { key sortify } | |
| 1423 | + if$ | |
| 1424 | + } | |
| 1425 | + { "The " #4 organization chop.word sortify } | |
| 1426 | + if$ | |
| 1427 | + } | |
| 1428 | + { author sort.format.names } | |
| 1429 | + if$ | |
| 1430 | +} | |
| 1431 | +FUNCTION {editor.organization.sort} | |
| 1432 | +{ editor empty$ | |
| 1433 | + { organization empty$ | |
| 1434 | + { key empty$ | |
| 1435 | + { "to sort, need editor, organization, or key in " cite$ * warning$ | |
| 1436 | + "" | |
| 1437 | + } | |
| 1438 | + { key sortify } | |
| 1439 | + if$ | |
| 1440 | + } | |
| 1441 | + { "The " #4 organization chop.word sortify } | |
| 1442 | + if$ | |
| 1443 | + } | |
| 1444 | + { editor sort.format.names } | |
| 1445 | + if$ | |
| 1446 | +} | |
| 1447 | +FUNCTION {presort} | |
| 1448 | +{ type$ "book" = | |
| 1449 | + type$ "inbook" = | |
| 1450 | + or | |
| 1451 | + 'author.editor.sort | |
| 1452 | + { type$ "proceedings" = | |
| 1453 | + 'editor.organization.sort | |
| 1454 | + { type$ "manual" = | |
| 1455 | + 'author.organization.sort | |
| 1456 | + 'author.sort | |
| 1457 | + if$ | |
| 1458 | + } | |
| 1459 | + if$ | |
| 1460 | + } | |
| 1461 | + if$ | |
| 1462 | + " " | |
| 1463 | + * | |
| 1464 | + year field.or.null sortify | |
| 1465 | + * | |
| 1466 | + " " | |
| 1467 | + * | |
| 1468 | + title field.or.null | |
| 1469 | + sort.format.title | |
| 1470 | + * | |
| 1471 | + #1 entry.max$ substring$ | |
| 1472 | + 'sort.key$ := | |
| 1473 | +} | |
| 1474 | +ITERATE {presort} | |
| 1475 | +SORT | |
| 1476 | +STRINGS { longest.label } | |
| 1477 | +INTEGERS { number.label longest.label.width } | |
| 1478 | +FUNCTION {initialize.longest.label} | |
| 1479 | +{ "" 'longest.label := | |
| 1480 | + #1 'number.label := | |
| 1481 | + #0 'longest.label.width := | |
| 1482 | +} | |
| 1483 | +FUNCTION {longest.label.pass} | |
| 1484 | +{ number.label int.to.str$ 'label := | |
| 1485 | + number.label #1 + 'number.label := | |
| 1486 | + label width$ longest.label.width > | |
| 1487 | + { label 'longest.label := | |
| 1488 | + label width$ 'longest.label.width := | |
| 1489 | + } | |
| 1490 | + 'skip$ | |
| 1491 | + if$ | |
| 1492 | +} | |
| 1493 | +EXECUTE {initialize.longest.label} | |
| 1494 | +ITERATE {longest.label.pass} | |
| 1495 | +FUNCTION {begin.bib} | |
| 1496 | +{ preamble$ empty$ | |
| 1497 | + 'skip$ | |
| 1498 | + { preamble$ write$ newline$ } | |
| 1499 | + if$ | |
| 1500 | + "\begin{thebibliography}{" longest.label * "}" * | |
| 1501 | + write$ newline$ | |
| 1502 | + "\providecommand{\url}[1]{\texttt{#1}}" | |
| 1503 | + write$ newline$ | |
| 1504 | + "\providecommand{\urlprefix}{URL }" | |
| 1505 | + write$ newline$ | |
| 1506 | +} | |
| 1507 | +EXECUTE {begin.bib} | |
| 1508 | +EXECUTE {init.state.consts} | |
| 1509 | +ITERATE {call.type$} | |
| 1510 | +FUNCTION {end.bib} | |
| 1511 | +{ newline$ | |
| 1512 | + "\end{thebibliography}" write$ newline$ | |
| 1513 | +} | |
| 1514 | +EXECUTE {end.bib} | |
| 1515 | +%% End of customized bst file | |
| 1516 | +%% | |
| 1517 | +%% End of file `titto.bst'. | |
| 1518 | + | |
| 1519 | + | ... | ... |
| ... | ... | @@ -0,0 +1,93 @@ |
| 1 | +### Projeto de pequisa - Entrevista | |
| 2 | + | |
| 3 | +### Contexto | |
| 4 | +Entre 2014 e 2016 foi desenvolvida uma plataforma para o Portal do Software Público Brasileiro. O objetivo do projeto era evoluiu um portal já existente adicionando funcionalidades a partir de requisitos préviamente mapeados pelo Ministério do Planejamento. Neste projeto, a plataforma passou a ser formada por diversos sistemas de software livre que foram integrados com a finalidade de atender todos os requisitos e prover facilidades na manutenção e atualização do portal como um todo. O projeto contava com uma equipe de analistas do Ministério do Planejamento, professores-coordenadores da UnB e uma equipe de desenvolvedores formada por alunos-bolsistas da universidade e profissionais do mercado de TI. A equipe do governo tinha sua própria dinâmica de trabalho e processo de desenvolvimento de software guiado por leis e diretrizes da natureza governamental. A equipe de desenvolvedores seguia práticas de desenvolvimento diferentes das do governo. Com auxílio e supervisão de professores (coordenadores do projeto) aplicavam metodólogias mais recentes, estudadas no universo acadêmico, visando melhorar a qualidade e produtividade do produto a ser entregue assim como as relações pessoais entre as equipes. Esta parceria entre duas equipes com processo de desenvolvimento distintos passaram por conflitos e adaptações. Durante os 3 anos de projetos foram pensadas, aplicadas e avaliadas diversas maneiras para conciliar os processos, aprimorar a comunicação e tornar todo o desenvolvimento da plataforma mais claro e transparente para quem acompanhava, gerenciava e desenvolvia a nova plataforma. | |
| 5 | + | |
| 6 | +### Qual o Foco: | |
| 7 | +* Explorar as possíveis maneiras de conciliar equipes com diferentes processos de gerenciamento e desenvolvimento em um projeto. | |
| 8 | + | |
| 9 | +### Onde eu estou no (qual a minha posição no contexto do) estudo: | |
| 10 | +* Trabalhando em um projeto temporário de desenvolvimento de software para o governo | |
| 11 | + | |
| 12 | +### Quais experiências anteriores (backgrounds) e crenças podem causar parcialidade (bias): | |
| 13 | +* Acreditamos que o desenvolvimento ágil é melhor que o desenvolvimento em cascata | |
| 14 | +* A equipe de desenvolvedores é maior que a equipe de analistas | |
| 15 | +* Diferenças de experiências de trabalho: iniciativa privada x estado | |
| 16 | +* Não temos relação com as burocracias internas no governo em relação ao projeto | |
| 17 | +* Não temos estabilidade no trabalho e o projeto possui tempo limitado (podendo ser precipitadamente cancelado se ocorrem falhas) | |
| 18 | +* Apesar de todos trabalharem para o sucesso do projeto, não nos sentíamos realmente unidos/ algumas vezes nos sentíamos rivais? | |
| 19 | +* A equipe de desenvolvedores era majoritáriamente composta por estudantes, sem experiência no mercado de trabalho | |
| 20 | +* Não participávamos do lado governamental de decisões, estratégias e relatórios. | |
| 21 | + | |
| 22 | +### Influências políticas: | |
| 23 | +* As analistas podem não querer expor os problemas internos ou mostrar descrença ou questionamento sobre seu contexto de trabalho | |
| 24 | +* Interferência das crenças poíticas/partidárias dos investigadores na relaçào do contexto do projeto e decisões do cliente | |
| 25 | + | |
| 26 | +### Questões gerais da pesquisa que queremos responder | |
| 27 | +1. Como harmonizar equipes com processos distintos de desenvolvimento de software em um mesmo projeto? | |
| 28 | + * Nível de satisfação dos clientes e motivação dos desenvolvedores (equipe). É possível manter uma equipe motivada e clientes satisfeitos, ambos confortáveis em se comunicar mesmo falando "línguas" diferentes? | |
| 29 | +2. Como estabelecer uma fronteira entre as questões gerenciais das organizações envolvidas (MPOG e UnB/CDT) e o gestão das equipes de desenvolvimento? | |
| 30 | + * Estamos argumentando que o processo de gerenciamento do projeto não necessariamente tem que ser o mesmo e influenciar diretamente na metodologia de desenvolvimento de software. | |
| 31 | + * Filtrar overheads de comunicação entre equipes com mentalidade/metodologia diferente | |
| 32 | + * "Ceder para vencer" | |
| 33 | + | |
| 34 | +---- | |
| 35 | + | |
| 36 | +## Entrevista - Questões | |
| 37 | + | |
| 38 | +### Perfil pessoal e profissional | |
| 39 | + | |
| 40 | +1. Apresentação: Você poderia fazer uma pequena apresentação pessoal e profissional? Nome, idade, formação, tempo de experiência profissional, tempo no MPOG, setor/cargo atual, setor/cargo na época do projeto. | |
| 41 | +2. A exemplo do SPB, quais projetos de desenvolvimento de software em parceria entre MPOG e outras instituições você trabalhou? | |
| 42 | +3. Quais semelhanças e diferenças você consegue identificar entre estes projetos e o SPB? | |
| 43 | +4. O SPB foi sua primeira experiência de desenvolvimento de software em parceria com uma universidade? Quais vantagens e desvantagens você consegue identificar neste tipo de parceria? | |
| 44 | + | |
| 45 | +### Sobre o Projeto SPB | |
| 46 | + | |
| 47 | +#### Organização | |
| 48 | + | |
| 49 | +5. Inicialmente, como foi estruturado e organizado o projeto? Como era feita a comunicação, acompanhamento? Quem eram os atores/interlocutores? | |
| 50 | +6. Quais mudanças ocorreram ao longo do projeto em relação a sua formatação inicial? | |
| 51 | + 7. Para você essas mudanças foram positivas ou negativas? Porque? | |
| 52 | + 8. Você sentiu dificuldade em se adaptar a estas mudanças? Quais? | |
| 53 | +9. Ocorreram mudanças no decorrer do projeto em relação aos requisitos iniciais da plataforma? Se sim, você poderia citar algumas? Porque a mudança foi necessária? | |
| 54 | + 10. Como você descreveria a adaptação da equipe de desenvolvimento da UnB em relação a mudança dos requisitos? | |
| 55 | +11. Como eram realizadas as reuniões de planejamento de uma release? Onde, quem participava, quais objetivos, o que se discutia, quais dificuldades... | |
| 56 | +12. Como era feito o acompanhamento do desenvolvimento da release? | |
| 57 | +13. O planejamento e acompanhamento realizado no projeto era semelhante ao do MPOG? | |
| 58 | + 14. AS diferenças impactavam no desempenho do seu trabalho? Se sim, de que maneira? | |
| 59 | + | |
| 60 | +#### Comunicação | |
| 61 | + | |
| 62 | +15. De que maneira/por qual meio, você interagia com a equipe da UnB? Quem eram as pessoas/papéis na equipe da UnB que você mais interagia? | |
| 63 | +16. Você interagia com os seniors do projeto? Quando essas interações ocorriam, qual meio de comunicação era utilizado e qual era o motivo deste contato? | |
| 64 | +17. Você interagia com os alunos do projeto? Quando essas interações ocorriam, qual meio de comunicação era utilizado e qual era o motivo deste contato? | |
| 65 | +18. Como você pode descrever a comunicação entre o MPOG e a coordenação da equipe da UnB? | |
| 66 | +19. Como você pode descrever a comunicação entre o MPOG e a equipe de desenvolvimento? | |
| 67 | +20. Na organização da equipe de desenvolvimento, foram criados times específicos para cada software integrante da plataforma. Você se sentia atualizada com essas mudanças? Você sabia quem era quem durante a comunicação/interação? Você acredita que este conhecimento era importante / influênciava nas suas atividades de acompanhamento do projeto? | |
| 68 | +21. Ao longo do projeto, você sentiu que a comunicação melhorou ou piorou entre MPOG e equipe de desenvolvimento? A que fatores se deve isso? | |
| 69 | + 22. Você consegue se recordar de alguma interação entre as equipes que foi negativa ou difícil de lidar? | |
| 70 | + 24. Você consegue se recordar de algumas interação que foi positiva ou suave/esclarecedora? | |
| 71 | + | |
| 72 | +#### Metodologia de entrega/processo de desenvolvimento | |
| 73 | + | |
| 74 | +25. Em linhas gerais, como é o processo de desenvolvimento de software no MPOG? Como e quando são definidas os requisitos do software, como é feito o acompanhamento e como é feita a validação/homologação? | |
| 75 | +26. Como foi feita a concepção, o processo de desenvolvimento e manutenção da antiga plataforma do SPB? | |
| 76 | +27. Quais diferenças existiam entre este processo interno e o processo realizado pela equipe da UnB? | |
| 77 | + 28. Quais dificuldades/conflitos entre o processo de desenvolvimento do MPOG e do time da UnB eram mais impactantes para o trabalho/responsabilidade de vocês no MPOG? O que foi feito para amenizar este impacto? | |
| 78 | + 29. O processo incremental de desenvolvimento lhe trazia dificuldades ou incômodos? Por exemplo? | |
| 79 | +30. Na sua opinião, foi possível conciliar o processo de desenvolvimento mantido pelo MPOG e o processo de desenvolvimento mantido pela UnB? O que foi necessário adaptar para conciliar o que era exigido internamente pelo MPOG e as informações coletadas durante o desenvolvimento? | |
| 80 | +31. Ao longo do projeto, o MPOG passou a estar com mais frequência na universidade e participar presencialmente no laboratório das reuniões de planejamento e entrega. Quais vantagens e desvantagens você via nessa interação? Isso impactou de alguma maneira a qualidade o feedback e validação das funcionalidades? | |
| 81 | +32. Na homologação de uma entrega, como você descreveria a capacidade da equipe em corrigir/modificar uma funcionalidade a partir dos feedbacks do MPOG? | |
| 82 | +33. Em geral, qual era a satisfação do MPOG em relação ao que tinha sido planejado e o que foi entrega no final de cada release? Porque? | |
| 83 | + | |
| 84 | +#### A plataforma do SPB | |
| 85 | +34. Quão satisfeitos o MPOG e os usuários estavam em relação a plataforma anterior? Ela atendia os requisitos previamente planejado? Quais eram as principais queixas/novas solcitações? | |
| 86 | +35. Como você descreveria a plataforma desenvolvida para o SPB? | |
| 87 | +36. Você acha que a complexidade da plataforma está condizente com as suas funcionalidades? | |
| 88 | +37. Você teve dificuldade em compreender as ferramentas ou a plataforma como um todo? Exemplos? | |
| 89 | +38. Você sente confiança em relação ao código entregue? | |
| 90 | +39. Você sente confiança em relação as funcionalidades da plataforma? | |
| 91 | + | |
| 92 | +#### Considerações finais | |
| 93 | +40. Se você tivesse que avaliar uma futura parceria entre MPOG e universidade, quais pontos você estaria mais atenta e porque? Quais conselhos você daria a equipe do MPOG que faria o acompanhamento do projeto? | ... | ... |